From 90a2d2e351e116895ac5a28e73948a07706a672d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E5=BA=86=E5=90=89?= <51312040@qq.com> Date: Mon, 12 Apr 2021 10:54:30 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E9=87=8D=E6=9E=84=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extend/export/bean/BidEvalDetailDTO.java | 4 +- .../ebtp/extend/export/bean/BidEvalInfo.java | 2 - .../extend/export/bean/BizExportDict.java | 14 + .../export/bean/BizSupplierRegister.java | 72 ----- .../{ExportParame.java => ExportParam.java} | 4 +- .../mall/ebtp/extend/export/bean/Tdoc.java | 28 -- .../export/controller/ExportController.java | 6 +- .../export/dao/mapper/BizExportDictMapper.xml | 2 +- .../entity/BidOpenRecordExportData.java | 35 +++ .../extend/export/entity/ExportTableData.java | 34 +++ .../export/entity/RvwFirstExportData.java | 35 +++ .../export/feign/RespsFeignService.java | 24 -- .../extend/export/service/ExportService.java | 56 +++- .../export/service/ExportServiceFactory.java | 6 +- .../common/ExportCommonFeignService.java | 92 ++++++ .../impl/ExportCommonFeignServiceImpl.java | 195 ++++++++++++ .../{ => dict}/IBizExportDictService.java | 2 +- .../impl/BizExportDictServiceImpl.java | 101 +++--- .../service/impl/BidOpenRecordImpl.java | 147 +++++++++ .../service/impl/CbpsExportServiceImpl.java | 9 +- .../service/impl/DfhzExportServiceImpl.java | 7 +- .../export/service/impl/FirstRvwImpl.java | 113 +++++++ .../service/impl/JgdfExportServiceImpl.java | 10 +- .../service/impl/JudgesExportServiceImpl.java | 96 ------ ...erviceImpl.java => JudgesPromiseImpl.java} | 19 +- .../export/service/impl/JudgesSignImpl.java | 78 +++++ .../export/service/impl/JudgesSignInImpl.java | 76 +++++ .../service/impl/KbjlExportServiceImpl.java | 120 -------- .../service/impl/PbbgExportServiceImpl.java | 264 ---------------- .../service/impl/PszjExportServiceImpl.java | 84 ----- .../export/service/impl/ReviewReportImpl.java | 194 ++++++++++++ .../service/impl/ZjgrExportServiceImpl.java | 9 +- .../service/policy/DetailTablePolicy.java | 78 +++++ .../TemplateFileService.java | 2 +- .../impl/TemplateFileServiceImpl.java | 4 +- .../export/vo/BidEvalDetailSummaryVO.java | 2 +- .../feign/client/DocumentCenterService.java | 4 +- .../client}/OpenFeignService.java | 4 +- .../client/ProcessFeignService.java} | 13 +- .../client}/ProjectFeignService.java | 8 +- .../feign/client/RespsFeignService.java | 28 ++ .../client}/RsmsFeignService.java | 7 +- .../client}/TenderFeignService.java | 6 +- .../feign/client/UsercenterFeignService.java | 23 ++ .../DocumentCenterServiceFallbackFactory.java | 4 +- .../factory/ExportServiceFallback.java | 7 +- .../ExportServiceOpenFallbakFactory.java | 4 +- .../ExportServiceRespsFallbakFactory.java | 21 +- .../factory/ProcessFeignFallbackFactory.java | 14 +- .../factory/ProjectFeignFallbackFactory.java | 8 +- .../factory/TenderFeignFallbackFactory.java | 6 +- .../UsercenterFeignFallbackFactory.java | 19 ++ .../DocumentCenterServiceFallbackImpl.java | 4 +- .../FeignConfiguration.java | 2 +- .../bean => feign/entity}/BizAssessRoom.java | 2 +- .../feign/entity/BizSupplierRegister.java | 288 ++++++++++++++++++ .../vo => feign/entity}/JuryPrintVO.java | 5 +- .../feign/entity/LoginUserDetailVO.java | 118 +++++++ .../entity}/ProjectRecordVO.java | 2 +- .../bean => feign/entity}/ProjectSection.java | 2 +- .../entity}/ProjectSectionVO.java | 2 +- .../vo => feign/entity}/ResultDetailVO.java | 2 +- .../entity}/ReviewConfigCategoryDTO.java | 3 +- .../entity}/ReviewConfigDetailDTO.java | 4 +- .../mall/ebtp/extend/feign/entity/Tdoc.java | 139 +++++++++ .../ebtp/extend/feign/entity/TdocCatalog.java | 63 ++++ .../entity/BizBidClientVersion.java | 68 ++--- .../sevice/BizBidClientVersionService.java | 5 +- src/main/resources/application-local.yml | 1 + src/main/resources/application-pro.yml | 2 +- src/main/resources/application-test.yml | 2 +- src/main/resources/application-uat.yml | 2 +- src/main/resources/application.yml | 2 +- src/main/resources/model/初步评审.docx | Bin 0 -> 23687 bytes src/main/resources/model/开标记录表.docx | Bin 18014 -> 24142 bytes src/main/resources/model/评标报告.docx | Bin 26248 -> 22706 bytes 76 files changed, 2019 insertions(+), 899 deletions(-) delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizSupplierRegister.java rename src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/{ExportParame.java => ExportParam.java} (89%) delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/Tdoc.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/BidOpenRecordExportData.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/ExportTableData.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/RvwFirstExportData.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/RespsFeignService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/ExportCommonFeignService.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/impl/ExportCommonFeignServiceImpl.java rename src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/{ => dict}/IBizExportDictService.java (87%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/{ => dict}/impl/BizExportDictServiceImpl.java (52%) create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/BidOpenRecordImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/FirstRvwImpl.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesExportServiceImpl.java rename src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/{ZjcnExportServiceImpl.java => JudgesPromiseImpl.java} (68%) create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesSignImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesSignInImpl.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/KbjlExportServiceImpl.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PbbgExportServiceImpl.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PszjExportServiceImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ReviewReportImpl.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/policy/DetailTablePolicy.java rename src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/{ => templateFile}/TemplateFileService.java (75%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/{ => templateFile}/impl/TemplateFileServiceImpl.java (88%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/feign => feign/client}/OpenFeignService.java (87%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/feign/ProcessFeignClient.java => feign/client/ProcessFeignService.java} (70%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/feign => feign/client}/ProjectFeignService.java (79%) create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RespsFeignService.java rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/feign => feign/client}/RsmsFeignService.java (94%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/feign => feign/client}/TenderFeignService.java (80%) create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/UsercenterFeignService.java rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/{ => client}/factory/DocumentCenterServiceFallbackFactory.java (80%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/feign => feign/client}/factory/ExportServiceFallback.java (92%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/feign => feign/client}/factory/ExportServiceOpenFallbakFactory.java (86%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/feign => feign/client}/factory/ExportServiceRespsFallbakFactory.java (50%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/feign => feign/client}/factory/ProcessFeignFallbackFactory.java (59%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/feign => feign/client}/factory/ProjectFeignFallbackFactory.java (79%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/feign => feign/client}/factory/TenderFeignFallbackFactory.java (81%) create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/UsercenterFeignFallbackFactory.java rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/{ => client}/fallback/DocumentCenterServiceFallbackImpl.java (87%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/{factory => config}/FeignConfiguration.java (98%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/bean => feign/entity}/BizAssessRoom.java (98%) create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BizSupplierRegister.java rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/vo => feign/entity}/JuryPrintVO.java (93%) create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/LoginUserDetailVO.java rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/bean => feign/entity}/ProjectRecordVO.java (99%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/bean => feign/entity}/ProjectSection.java (99%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/bean => feign/entity}/ProjectSectionVO.java (97%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/vo => feign/entity}/ResultDetailVO.java (98%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/bean => feign/entity}/ReviewConfigCategoryDTO.java (85%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/bean => feign/entity}/ReviewConfigDetailDTO.java (89%) create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/Tdoc.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/TdocCatalog.java create mode 100644 src/main/resources/model/初步评审.docx diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalDetailDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalDetailDTO.java index 86f911a..1711528 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalDetailDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalDetailDTO.java @@ -51,9 +51,7 @@ public class BidEvalDetailDTO extends BidEvalDetail implements Serializable { private List supplierRegisterIds; - public static long getSerialversionuid() { - return serialVersionUID; - } + public String getReviewTurnId() { return reviewTurnId; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalInfo.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalInfo.java index dfe774d..e6c3b42 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalInfo.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalInfo.java @@ -1,11 +1,9 @@ package com.chinaunicom.mall.ebtp.extend.export.bean; import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizExportDict.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizExportDict.java index a632673..f3bd1ae 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizExportDict.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizExportDict.java @@ -1,5 +1,6 @@ package com.chinaunicom.mall.ebtp.extend.export.bean; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; import io.swagger.annotations.ApiModel; @@ -52,6 +53,12 @@ public class BizExportDict implements Serializable { @ApiModelProperty(value = "") private Integer level; + /** + * + */ + @ApiModelProperty(value = "") + private Integer queryType; + /** * 使能:0、不可用,1、可用 */ @@ -64,5 +71,12 @@ public class BizExportDict implements Serializable { @ApiModelProperty(value = "") private String methodDict; + /** + * + */ + @TableField(exist = false) + @ApiModelProperty(value = "是否可点击") + private boolean onClick; + } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizSupplierRegister.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizSupplierRegister.java deleted file mode 100644 index d24d545..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizSupplierRegister.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; -import com.chinaunicom.mall.ebtp.common.config.CustomLocalDateTimeTypeHandler; -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.time.LocalDateTime; -import java.util.Map; - -/** - * 实体类 BizSupplierRegister - * - * @auto.generated - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value = "BizSupplierRegister对象", description = "供应商报名登记表") -public class BizSupplierRegister extends BaseEntity implements Serializable { - - private static final long serialVersionUID = 1L; - - - - /** - * 机构名称 - */ - @ApiModelProperty(value = "机构名称") - private String companyName; - - - /** - * 投标人姓名 - */ - @ApiModelProperty(value = "投标人姓名") - private String bidUserName; - - /** - * 联系人名称 - */ - @ApiModelProperty(value = "联系人名称") - private String contactName; - - - /** - * 签字确认时间 - */ - - @ApiModelProperty(value = "签字确认时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime signTime; - - - private String newPrice; - - /** - * 下载状态:[0:未下载标书][1:已下载标书][2:已上传投标文件] - */ - @ApiModelProperty(value = "下载状态:[0:未下载标书][1:已下载标书][2:已上传投标文件]") - private String downloadStatus; -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ExportParame.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ExportParam.java similarity index 89% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ExportParame.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ExportParam.java index 5695a62..244b4f5 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ExportParame.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ExportParam.java @@ -11,13 +11,13 @@ import lombok.experimental.Accessors; @Data @Accessors(chain = true) @ApiModel("参数") -public class ExportParame { +public class ExportParam { private String assessRoomId; private String reviewTurnId; - private String reviewTurnSort; + private Integer reviewTurnSort; private String projectId; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/Tdoc.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/Tdoc.java deleted file mode 100644 index 264cd16..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/Tdoc.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; - -import io.swagger.annotations.ApiModelProperty; - -public class Tdoc { - - @ApiModelProperty(value = "") - private String assessRoomId; - - @ApiModelProperty(value = "轮次") - private Integer turnSort; - - public String getAssessRoomId() { - return assessRoomId; - } - - public void setAssessRoomId(String assessRoomId) { - this.assessRoomId = assessRoomId; - } - - public Integer getTurnSort() { - return turnSort; - } - - public void setTurnSort(Integer turnSort) { - this.turnSort = turnSort; - } -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/controller/ExportController.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/controller/ExportController.java index 0ed055a..7d3b597 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/controller/ExportController.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/controller/ExportController.java @@ -2,9 +2,9 @@ package com.chinaunicom.mall.ebtp.extend.export.controller; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.export.bean.BizExportDict; -import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParame; +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; import com.chinaunicom.mall.ebtp.extend.export.service.ExportServiceFactory; -import com.chinaunicom.mall.ebtp.extend.export.service.IBizExportDictService; +import com.chinaunicom.mall.ebtp.extend.export.service.dict.IBizExportDictService; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -41,7 +41,7 @@ public class ExportController { */ @PreAuthorize("hasAnyAuthority('ebtp-purchase','ebtp-agency-project-manager')") @GetMapping(value = "/{type}") - public void export(@PathVariable String type, ExportParame param, HttpServletRequest request, HttpServletResponse response) { + public void export(@PathVariable String type, ExportParam param, HttpServletRequest request, HttpServletResponse response) { exportServiceFactory.getService(type).doExport(param, request, response); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/dao/mapper/BizExportDictMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/dao/mapper/BizExportDictMapper.xml index a246bfc..29394d0 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/dao/mapper/BizExportDictMapper.xml +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/dao/mapper/BizExportDictMapper.xml @@ -25,6 +25,6 @@ SELECT `id`, `dic_name`, `path`, `level`, `url` FROM `biz_export_dict` where active = 1 AND (method_dict = #{type} OR method_dict = '0') - ORDER BY id + ORDER BY sort \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/BidOpenRecordExportData.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/BidOpenRecordExportData.java new file mode 100644 index 0000000..c9eca99 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/BidOpenRecordExportData.java @@ -0,0 +1,35 @@ +package com.chinaunicom.mall.ebtp.extend.export.entity; + + +import com.deepoove.poi.expression.Name; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * 开标记录表导出数据实体 + */ +@Data +@Accessors(chain = true) +public class BidOpenRecordExportData implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer index; + + private String projName; + + private String projNum; + + private String bidNum; + + private String openTime; + + @Name("detail_table") + private ExportTableData tableData; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/ExportTableData.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/ExportTableData.java new file mode 100644 index 0000000..9044453 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/ExportTableData.java @@ -0,0 +1,34 @@ +package com.chinaunicom.mall.ebtp.extend.export.entity; + + +import com.deepoove.poi.data.CellRenderData; +import com.deepoove.poi.data.MergeCellRule; +import com.deepoove.poi.data.RowRenderData; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + + +@Data +@Accessors(chain = true) +public class ExportTableData implements Serializable { + + private static final long serialVersionUID = 1L; + //表头的循环数据 + private List cells; + + //行单元格合并 + private MergeCellRule cellMerge; + + + //行的循环 + private List rows; + + //列单元格合并 + private MergeCellRule rowMerge; + + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/RvwFirstExportData.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/RvwFirstExportData.java new file mode 100644 index 0000000..baf7c35 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/RvwFirstExportData.java @@ -0,0 +1,35 @@ +package com.chinaunicom.mall.ebtp.extend.export.entity; + + +import com.deepoove.poi.expression.Name; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** + * 初步评审导出数据实体 + */ +@Data +@Accessors(chain = true) +public class RvwFirstExportData implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer index; + + private String title; + + private String projName; + + private String projNum; + + private String date; + + @Name("detail_table") + private ExportTableData tableData; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/RespsFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/RespsFeignService.java deleted file mode 100644 index a7da9a2..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/RespsFeignService.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.feign; - -import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.BizSupplierRegister; -import com.chinaunicom.mall.ebtp.extend.export.bean.Tdoc; -import com.chinaunicom.mall.ebtp.extend.export.feign.factory.ExportServiceRespsFallbakFactory; -import io.swagger.annotations.ApiParam; -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; - -import java.util.List; - -/** - * 调用 RESPS_SERVICE - */ -@FeignClient(value = "${mconfig.feign.name.resps}" , fallbackFactory = ExportServiceRespsFallbakFactory.class) -public interface RespsFeignService { - - @PostMapping("/v1/tfile/getTenderQuoteList") - BaseResponse> getTenderQuoteList(@ApiParam(value = "assessRoomId,turnSort", required = true) @RequestBody Tdoc tdocPara); - - -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/ExportService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/ExportService.java index d66a868..30d723e 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/ExportService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/ExportService.java @@ -1,28 +1,54 @@ package com.chinaunicom.mall.ebtp.extend.export.service; -import java.io.File; +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.util.PoitlIOUtils; +import lombok.SneakyThrows; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - -import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParame; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.OutputStream; public interface ExportService { + /** + * 导出 + * + * @param param + * @param request + * @param response + */ + public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response); - /** - * 导出 - * - * @param param - * @param request - * @param response - */ - public void doExport(ExportParame param, HttpServletRequest request, HttpServletResponse response); - default File getExportTemplet(String path) { - File f = new File("C:\\Users\\Administrator\\Desktop\\新建文件夹\\doc\\" + path); + /** + * 执行导出操作 + * + * @param template + * @param fileName + * @param response + */ + @SneakyThrows + default void write(XWPFTemplate template, String fileName, HttpServletResponse response) { - return f; - } + response.setContentType("application/octet-stream"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName); + + // HttpServletResponse response + OutputStream out = response.getOutputStream(); + BufferedOutputStream bos = new BufferedOutputStream(out); + template.write(bos); + bos.flush(); + out.flush(); + PoitlIOUtils.closeQuietlyMulti(template, bos, out); + } + + default File getExportTemplet(String path) { + File f = new File("D:\\EasyPoiTemplet\\" + path); + + return f; + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/ExportServiceFactory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/ExportServiceFactory.java index 94b4c9f..a885a5e 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/ExportServiceFactory.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/ExportServiceFactory.java @@ -11,13 +11,13 @@ import java.util.Map; public class ExportServiceFactory { @Autowired - private Map map = new LinkedHashMap<>(); + private final Map EXPORT_MAP = new LinkedHashMap<>(); public ExportService getService(String key) { - if (!map.containsKey(key)) { + if (!EXPORT_MAP.containsKey(key)) { ExportExceptionEnum.FRAME_EXCEPTION_METHOD_IS_NOT_EXIXT.throwException(); } - return map.get(key); + return EXPORT_MAP.get(key); } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/ExportCommonFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/ExportCommonFeignService.java new file mode 100644 index 0000000..7430bf0 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/ExportCommonFeignService.java @@ -0,0 +1,92 @@ +package com.chinaunicom.mall.ebtp.extend.export.service.common; + + +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; +import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ResultDetailVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.*; + +import java.util.List; +import java.util.Map; + +/** + * 报表导出通用feign接口调用类 + */ +public interface ExportCommonFeignService { + + /** + * 查询用户信息 + */ + LoginUserDetailVO userCenterGetLoninUserDetail(String userId); + + + /** + * 根据包id 查询信息 + * + * @param sectionId + * @return + */ + ProjectSectionVO projectGetSectionById(String sectionId); + + /** + * 根据包id 查询项目信息 + * + * @param projId + * @return + */ + ProjectRecordVO projectGetProjById(String projId); + + + /** + * 根据评审室id 查询供应商信息 + * + * @param roomId + * @return + */ + List tenderGetSupplierRegisterByRoomId(String roomId); + + + /** + * 查询初审汇总数据 + * + * @param param + * @return + */ + List rsmsFindScoreEarlySummary(ExportParam param); + + + /** + * 通过评审室Id查询评委会成员数据及签到数据 + * + * @param roomId + * @return + */ + List rsmsQueryReportPrintByRoomId(String roomId); + + /** + * 通过评审室查询detail表数据 + * + * @param roomId + * @return + */ + List rsmsQueryReviewDetailByRoomId(String roomId); + + + /** + * 开标唱标页列表 + * + * @param tdocPara assessRoomId 评审室id turnSort 轮次序号 + * @return title-表格标题,dataDecrypt-解密状态id、status dataQuote-报价信息 + */ + Map respsGetOpenTenderList(ExportParam param); + + + /** + * 通过room_id查询评审室信息 + * + * @param roomId + * @return + */ + BizAssessRoom processGetRoomInfoById(String roomId); +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/impl/ExportCommonFeignServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/impl/ExportCommonFeignServiceImpl.java new file mode 100644 index 0000000..5a590f4 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/impl/ExportCommonFeignServiceImpl.java @@ -0,0 +1,195 @@ +package com.chinaunicom.mall.ebtp.extend.export.service.common.impl; + + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalDetailDTO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; +import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ResultDetailVO; +import com.chinaunicom.mall.ebtp.extend.feign.client.*; +import com.chinaunicom.mall.ebtp.extend.feign.entity.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 报表导出通用feign接口调用类 + */ +@Service +@Slf4j +public class ExportCommonFeignServiceImpl implements ExportCommonFeignService { + + + @Autowired + private UsercenterFeignService usercenterFeignService; + + /** + * 查询用户信息 + * + * @param userId + */ + @Override + public LoginUserDetailVO userCenterGetLoninUserDetail(String userId) { + BaseResponse response = usercenterFeignService.getLoninUserDetail(userId); + if (response == null || response.getData() == null) { + return new LoginUserDetailVO(); + } + return response.getData(); + } + + + @Autowired + private ProjectFeignService projectFeignService; + + /** + * 根据包id 查询信息 + * + * @param sectionId + * @return + */ + @Override + public ProjectSectionVO projectGetSectionById(String sectionId) { + //查询项目名称 + ProjectSectionVO projectSectionVO = new ProjectSectionVO(); + projectSectionVO.setId(sectionId); + BaseResponse response = projectFeignService.selectById(projectSectionVO); + if (response == null || response.getData() == null) { + return new ProjectSectionVO(); + } + return response.getData(); + } + + /** + * 根据包id 查询项目信息 + * + * @param projId + * @return + */ + @Override + public ProjectRecordVO projectGetProjById(String projId) { + BaseResponse response = projectFeignService.getProjById(projId); + if (response == null || response.getData() == null) { + return new ProjectRecordVO(); + } + return response.getData(); + } + + + @Autowired + private TenderFeignService tenderFeignService; + + /** + * 根据评审室id 查询供应商信息 + * + * @param roomId + * @return + */ + @Override + public List tenderGetSupplierRegisterByRoomId(String roomId) { + BaseResponse> response = tenderFeignService.queryRoomTenderCount(roomId); + if (response == null || response.getData() == null) { + return new ArrayList<>(); + } + return response.getData(); + } + + + @Autowired + private RsmsFeignService rsmsFeignService; + + /** + * 查询初审汇总数据 + * + * @param param + * @return + */ + @Override + public List rsmsFindScoreEarlySummary(ExportParam param) { + BidEvalDetailDTO bidEvalDetailDTO = new BidEvalDetailDTO(); + bidEvalDetailDTO.setReviewTurnId(param.getReviewTurnId()); + bidEvalDetailDTO.setReviewType(param.getReviewType()); + BaseResponse> response = rsmsFeignService.findScoreEarlySummary(bidEvalDetailDTO); + if (response == null || response.getData() == null) { + return new ArrayList<>(); + } + return response.getData(); + } + + /** + * 通过评审室Id查询评委会成员数据及签到数据 + * + * @param roomId + * @return + */ + @Override + public List rsmsQueryReportPrintByRoomId(String roomId) { + BaseResponse> response = rsmsFeignService.queryReportPrintByRoomId(roomId); + if (response == null || response.getData() == null) { + return new ArrayList<>(); + } + return response.getData(); + } + + /** + * 通过评审室查询detail表数据 + * + * @param roomId + * @return + */ + @Override + public List rsmsQueryReviewDetailByRoomId(String roomId) { + BaseResponse> response = rsmsFeignService.get(roomId); + if (response == null || response.getData() == null) { + return new ArrayList<>(); + } + return response.getData(); + } + + @Autowired + private RespsFeignService respsFeignService; + + /** + * 开标唱标页列表 + * + * @param tdocPara assessRoomId 评审室id turnSort 轮次序号 + * @return title-表格标题,dataDecrypt-解密状态id、status dataQuote-报价信息 + */ + @Override + public Map respsGetOpenTenderList(ExportParam param) { + Tdoc tdoc = new Tdoc(); + tdoc.setAssessRoomId(param.getAssessRoomId()) + .setTurnSort(param.getReviewTurnSort()); + BaseResponse response = respsFeignService.getOpenTenderList(tdoc); + + if (response == null || response.getData() == null) { + return new HashMap(); + } + return response.getData(); + } + + + @Autowired + private ProcessFeignService processFeignService; + + /** + * 通过room_id查询评审室信息 + * + * @param roomId + * @return + */ + @Override + public BizAssessRoom processGetRoomInfoById(String roomId) { + BaseResponse response = processFeignService.getById(roomId); + if (response == null || response.getData() == null) { + return new BizAssessRoom(); + } + return response.getData(); + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/IBizExportDictService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/dict/IBizExportDictService.java similarity index 87% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/IBizExportDictService.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/dict/IBizExportDictService.java index 98f6103..91264e3 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/IBizExportDictService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/dict/IBizExportDictService.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.service; +package com.chinaunicom.mall.ebtp.extend.export.service.dict; import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/BizExportDictServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/dict/impl/BizExportDictServiceImpl.java similarity index 52% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/BizExportDictServiceImpl.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/dict/impl/BizExportDictServiceImpl.java index 0b7ede0..9a1b629 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/BizExportDictServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/dict/impl/BizExportDictServiceImpl.java @@ -1,15 +1,15 @@ -package com.chinaunicom.mall.ebtp.extend.export.service.impl; +package com.chinaunicom.mall.ebtp.extend.export.service.dict.impl; import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; -import com.chinaunicom.mall.ebtp.common.constant.CommonConstants; -import com.chinaunicom.mall.ebtp.common.util.JsonUtils; import com.chinaunicom.mall.ebtp.extend.export.bean.*; import com.chinaunicom.mall.ebtp.extend.export.dao.BizExportDictMapper; -import com.chinaunicom.mall.ebtp.extend.export.feign.ProcessFeignClient; -import com.chinaunicom.mall.ebtp.extend.export.feign.ProjectFeignService; -import com.chinaunicom.mall.ebtp.extend.export.feign.RsmsFeignService; -import com.chinaunicom.mall.ebtp.extend.export.service.IBizExportDictService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectRecordVO; +import com.chinaunicom.mall.ebtp.extend.feign.client.ProcessFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; +import com.chinaunicom.mall.ebtp.extend.export.service.dict.IBizExportDictService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -27,7 +27,7 @@ import java.util.stream.Collectors; public class BizExportDictServiceImpl extends BaseServiceImpl implements IBizExportDictService { @Autowired - private ProcessFeignClient processFeignClient; + private ProcessFeignService processFeignService; @Autowired private ProjectFeignService projectFeignService; @Autowired @@ -40,13 +40,13 @@ public class BizExportDictServiceImpl extends BaseServiceImpl> getList(String roomId) { - BizAssessRoom room = processFeignClient.getById(roomId).getData(); + BizAssessRoom room = processFeignService.getById(roomId).getData(); //查询项目名称 ProjectRecordVO proj = projectFeignService.getProjById(room.getTpId()).getData(); //包 - ProjectSectionVO projectSectionVO = new ProjectSectionVO(); - projectSectionVO.setId(room.getSectionId()); - ProjectSectionVO section = projectFeignService.selectById(projectSectionVO).getData(); +// ProjectSectionVO projectSectionVO = new ProjectSectionVO(); +// projectSectionVO.setId(room.getSectionId()); +// ProjectSectionVO section = projectFeignService.selectById(projectSectionVO).getData(); List list = baseMapper.selectDictList(proj.getBidMethodDict()); @@ -56,7 +56,7 @@ public class BizExportDictServiceImpl extends BaseServiceImpl> resultsMap = new HashMap<>(); - //是否包含开标阶段 + //是否包含开标阶段 boolean toInitialOpenRoom = "procurement_mode_1".equals(proj.getBidMethodDict()) || "procurement_mode_2".equals(proj.getBidMethodDict()); if ("procurement_mode_3".equals(proj.getBidMethodDict())) { @@ -71,50 +71,53 @@ public class BizExportDictServiceImpl extends BaseServiceImpl f.getPath().equals(String.valueOf(bizExportDict.getId()))) + .map(m -> m.setUrl(m.getUrl() + "?projectId=" + proj.getId() + "§ionId=" + room.getSectionId() + "&assessRoomId=" + roomId) + .setOnClick(true)) .collect(Collectors.toList()) ); } + //初审数据url - String isReviewMethod = room.getRoomType().equals(CommonConstants.ROOM_TYPE_1) ? "1" : "0"; - List archiveLinks = getFirstArchiveLinks(); - Map> firstRvwMap = rsmsFeignService.findEarlyArchiveList(room.getSectionId(), isReviewMethod, archiveLinks).getData(); - //详审数据url - archiveLinks = getDetailArchiveLinks(); - Map> detailRvwMap = rsmsFeignService.findDetailArchiveList(room.getSectionId(), isReviewMethod, archiveLinks).getData(); - - - resultsMap.forEach((key, value) -> { - value.forEach(bizExportDict -> { - if ("1".equals(bizExportDict.getUrl())) { - //查询初审报表 - Optional opt = firstRvwMap.get(bizExportDict.getUrl()).stream().filter(f -> f.getAssessRoomId().equals(roomId)).findFirst(); - opt.ifPresent(o -> bizExportDict.setUrl(o.getArchiveFileUrl())); - } else if (bizExportDict.getUrl().length() < 5) { - //查询详审报表 - Optional opt = detailRvwMap.get(bizExportDict.getUrl()).stream().filter(f -> f.getAssessRoomId().equals(roomId)).findFirst(); - opt.ifPresent(o -> bizExportDict.setUrl(o.getArchiveFileUrl())); - } else { - String sbl = bizExportDict.getUrl() + - "?assessRoomId=" + roomId + -// "&reviewTurnId=" + v.getReviewTurnId() + - "&projectId=" + proj.getId() + - "§ionId=" + section.getId() + - "&reviewTurnSort=1"; - bizExportDict.setUrl(sbl); - } - }); - //如果没进行初审或详审 则删除相关报表 length < 5 为虚数 - value.removeIf(bizExportDict -> bizExportDict.getUrl().length() < 5); - }); - //删除value为空的key - resultsMap.values().removeIf(List::isEmpty); +// String isReviewMethod = room.getRoomType().equals(CommonConstants.ROOM_TYPE_1) ? "1" : "0"; +// List archiveLinks = getFirstArchiveLinks(); +// Map> firstRvwMap = rsmsFeignService.findEarlyArchiveList(room.getSectionId(), isReviewMethod, archiveLinks).getData(); +// //详审数据url +// archiveLinks = getDetailArchiveLinks(); +// Map> detailRvwMap = rsmsFeignService.findDetailArchiveList(room.getSectionId(), isReviewMethod, archiveLinks).getData(); +// +// +// resultsMap.forEach((key, value) -> { +// value.forEach(bizExportDict -> { +// if ("1".equals(bizExportDict.getUrl())) { +// //查询初审报表 +// Optional opt = firstRvwMap.get(bizExportDict.getUrl()).stream().filter(f -> f.getAssessRoomId().equals(roomId)).findFirst(); +// opt.ifPresent(o -> bizExportDict.setUrl(o.getArchiveFileUrl()).setOnClick(true)); +// } else if (bizExportDict.getUrl().length() < 5) { +// //查询详审报表 +// Optional opt = detailRvwMap.get(bizExportDict.getUrl()).stream().filter(f -> f.getAssessRoomId().equals(roomId)).findFirst(); +// opt.ifPresent(o -> bizExportDict.setUrl(o.getArchiveFileUrl()).setOnClick(true)); +// } else { +// String sbl = bizExportDict.getUrl() + +// "?assessRoomId=" + roomId + +//// "&reviewTurnId=" + v.getReviewTurnId() + +// "&projectId=" + proj.getId() + +// "§ionId=" + section.getId() + +// "&reviewTurnSort=1"; +// bizExportDict.setUrl(sbl).setOnClick(true); +// } +// }); +// //如果没进行初审或详审 则删除相关报表 length < 5 为虚数 +// value.removeIf(bizExportDict -> bizExportDict.getUrl().length() < 5); +// }); +// //删除value为空的key +// resultsMap.values().removeIf(List::isEmpty); return resultsMap; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/BidOpenRecordImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/BidOpenRecordImpl.java new file mode 100644 index 0000000..e542213 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/BidOpenRecordImpl.java @@ -0,0 +1,147 @@ +package com.chinaunicom.mall.ebtp.extend.export.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.chinaunicom.mall.ebtp.common.util.JsonUtils; +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; +import com.chinaunicom.mall.ebtp.extend.export.entity.BidOpenRecordExportData; +import com.chinaunicom.mall.ebtp.extend.export.entity.ExportTableData; +import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; +import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; +import com.chinaunicom.mall.ebtp.extend.export.service.policy.DetailTablePolicy; +import com.chinaunicom.mall.ebtp.extend.export.service.templateFile.TemplateFileService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizSupplierRegister; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectRecordVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.TdocCatalog; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.data.*; +import lombok.SneakyThrows; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + + +/** + * 开标记录表导出 + */ +@Service("bidOpenRecord") +public class BidOpenRecordImpl implements ExportService { + + private static final String DATE_FORMATTER = "yyyy年MM月dd日HH时mm分"; + + + @Autowired + private ExportCommonFeignService commonFeignService; + + @Autowired + private TemplateFileService templateFileService; + + /** + * 导出 + * + * @param param + * @param request + * @param response + */ + @SneakyThrows + @Override + public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { + //查询包 + ProjectSectionVO section = commonFeignService.projectGetSectionById(param.getSectionId()); + //查询项目 + ProjectRecordVO proj = commonFeignService.projectGetProjById(section.getProjectId()); + + //供应商信息 + List suppliers = commonFeignService.tenderGetSupplierRegisterByRoomId(param.getAssessRoomId()); + + + Map openTenderList = commonFeignService.respsGetOpenTenderList(param); + + BidOpenRecordExportData data = new BidOpenRecordExportData(); + data.setProjName(proj.getProjectName()) + .setProjNum(proj.getProjectBizNum()) + .setBidNum(section.getBidSectBizNum()); + + ExportTableData tableData = new ExportTableData(); + + //应答项 + List cells = new ArrayList<>(); + //应答数据 + List rows = new ArrayList<>(); + + if (openTenderList.containsKey("title")) { + //标题 + List title = JsonUtils.jsonToList((List) openTenderList.get("title"), TdocCatalog.class); + //去除解密状态列 + title.removeIf(t -> t.getCatalogType() != null); + + List titleIds = new ArrayList<>(); + for (TdocCatalog tdocCatalog : title) { + cells.add(Cells.of(tdocCatalog.getName()).create()); + titleIds.add(tdocCatalog.getId()); + } + + cells.add(Cells.of("是否异议").create()); + cells.add(Cells.of("投标人授权代表签字确认时间").create()); + + if (openTenderList.containsKey("suppliers")) { + //供应商 + List regs = JsonUtils.jsonToList((List) openTenderList.get("suppliers"), BizSupplierRegister.class); + Map regMap = regs.stream().collect(Collectors.toMap(BizSupplierRegister::getCompanyId, Function.identity())); + + for (int i = 0; i < suppliers.size(); i++) { + BizSupplierRegister supplier = suppliers.get(i); + RowRenderData e = Rows.of(String.valueOf(i + 1), supplier.getCompanyName()).create(); + if (regMap.containsKey(supplier.getCompanyId())) { + //应答数据 + Map dataMap = regMap.get(supplier.getCompanyId()).getDataMap(); + for (String titleId : titleIds) { + e.addCell(Cells.of(dataMap.get(titleId)).create()); + } + e.addCell(Cells.of("").create()); + String s = StringUtils.isBlank(supplier.getSignUserId()) ? "" : commonFeignService.userCenterGetLoninUserDetail(supplier.getSignUserId()).getOuName() + ":" + DateUtil.format(supplier.getSignTime(), DATE_FORMATTER); + e.addCell(Cells.of(s).create()); + + } else { + cells.forEach(c -> e.addCell(Cells.of("").create())); + } + rows.add(e); + } + + } + + rows.add(Rows.of("备注信息").center().create()); + rows.add(Rows.of("").create()); + } + + + //横向合并 + MergeCellRule hangBuild = MergeCellRule.builder().map(MergeCellRule.Grid.of(rows.size(), 0), MergeCellRule.Grid.of(rows.size(), cells.size() + 1)) + .map(MergeCellRule.Grid.of(rows.size() - 1, 0), MergeCellRule.Grid.of(rows.size() - 1, cells.size() + 1)) + .build(); + + data.setTableData(tableData.setCells(cells).setRows(rows).setCellMerge(hangBuild)) + .setOpenTime(DateUtil.format(LocalDateTime.now(), DATE_FORMATTER)); + +// InputStream file = templateFileService.getExportTemplet("bidOpenRecord"); + File file = getExportTemplet("开标记录表.docx"); + Configure config = Configure.builder().bind("detail_table", new DetailTablePolicy()).build(); + XWPFTemplate template = XWPFTemplate.compile(file, config).render(data); + + String fileName = new String("开标记录表.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); + + this.write(template, fileName, response); + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/CbpsExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/CbpsExportServiceImpl.java index 372ea38..5e7c2f1 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/CbpsExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/CbpsExportServiceImpl.java @@ -2,11 +2,14 @@ package com.chinaunicom.mall.ebtp.extend.export.service.impl; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.export.bean.*; -import com.chinaunicom.mall.ebtp.extend.export.feign.ProjectFeignService; -import com.chinaunicom.mall.ebtp.extend.export.feign.RsmsFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalEarlyJudgesSummaryVO; import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigDetailDTO; import lombok.SneakyThrows; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; @@ -46,7 +49,7 @@ public class CbpsExportServiceImpl implements ExportService { */ @SneakyThrows @Override - public void doExport(ExportParame param, HttpServletRequest request, HttpServletResponse response) { + public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { //查询项目名称 ProjectSectionVO projectSectionVO = new ProjectSectionVO(); projectSectionVO.setId(param.getSectionId()); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/DfhzExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/DfhzExportServiceImpl.java index 7588604..2e03fee 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/DfhzExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/DfhzExportServiceImpl.java @@ -2,13 +2,14 @@ package com.chinaunicom.mall.ebtp.extend.export.service.impl; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.export.bean.*; -import com.chinaunicom.mall.ebtp.extend.export.feign.ProjectFeignService; -import com.chinaunicom.mall.ebtp.extend.export.feign.RsmsFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalDetailJudgesSummaryVO; import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalDetailSummaryVO; import com.chinaunicom.mall.ebtp.extend.export.vo.MemberVO; import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; import lombok.SneakyThrows; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; @@ -52,7 +53,7 @@ public class DfhzExportServiceImpl implements ExportService { */ @SneakyThrows @Override - public void doExport(ExportParame param, HttpServletRequest request, HttpServletResponse response) { + public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { BidEvalInfoDTO bidEvalInfoDTO = new BidEvalInfoDTO(); bidEvalInfoDTO.setAssessRoomId(param.getAssessRoomId()); bidEvalInfoDTO.setReviewTurnId(param.getReviewTurnId()); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/FirstRvwImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/FirstRvwImpl.java new file mode 100644 index 0000000..d654cf7 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/FirstRvwImpl.java @@ -0,0 +1,113 @@ +package com.chinaunicom.mall.ebtp.extend.export.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectRecordVO; +import com.chinaunicom.mall.ebtp.extend.export.entity.ExportTableData; +import com.chinaunicom.mall.ebtp.extend.export.entity.RvwFirstExportData; +import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; +import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; +import com.chinaunicom.mall.ebtp.extend.export.service.policy.DetailTablePolicy; +import com.chinaunicom.mall.ebtp.extend.export.service.templateFile.TemplateFileService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizSupplierRegister; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.data.*; +import lombok.SneakyThrows; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + + +/** + * 初步评审表 + * + * @author fqj + */ +@Service("firstRvw") +public class FirstRvwImpl implements ExportService { + + private static final String DATE_FORMATTER = "yyyy年MM月dd日"; + + @Autowired + private ExportCommonFeignService commonFeignService; + + @Autowired + private TemplateFileService templateFileService; + + + /** + * 导出 + * + * @param param + * @param request + * @param response + */ + @SneakyThrows + @Override + public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { + //查询包 + ProjectSectionVO section = commonFeignService.projectGetSectionById(param.getSectionId()); + //查询项目 + ProjectRecordVO proj = commonFeignService.projectGetProjById(section.getProjectId()); + + //供应商信息 + List suppliers = commonFeignService.tenderGetSupplierRegisterByRoomId(param.getAssessRoomId()); + + //初审评分信息 + List earlySummary = commonFeignService.rsmsFindScoreEarlySummary(param); + + RvwFirstExportData data = new RvwFirstExportData(); + data.setProjName(proj.getProjectName()) + .setProjNum(proj.getProjectBizNum()); + + + ExportTableData tableData = new ExportTableData(); + //供应商 + List cells = new ArrayList<>(); + for (BizSupplierRegister supplier : suppliers) { + cells.add(Cells.of(supplier.getCompanyName()).center().create()); + } + + //评分项 + List rows = new ArrayList<>(); + int i = 1; + for (ReviewConfigCategoryDTO dto : earlySummary) { + RowRenderData e = Rows.of(String.valueOf(i++), dto.getCategory(), dto.getConfigId()).center().create(); + e.addCell(Cells.of("1").create()); + e.addCell(Cells.of("2").create()); + e.addCell(Cells.of("3").create()); + rows.add(e); + } + RowRenderData e = Rows.of("结论", "是否通过初步评审", "").center().create(); + for (BizSupplierRegister supplier : suppliers) { + e.addCell(Cells.of("").center().create()); + } + + +//.setCellMerge(MergeCellRule.builder().map(MergeCellRule.Grid.of(1, 3), MergeCellRule.Grid.of(1, 5)).build()) + data.setTableData(tableData.setCells(cells).setRows(rows)) + .setDate(DateUtil.format(LocalDateTime.now(),DATE_FORMATTER)); + + + //获取模板 +// InputStream file = templateFileService.getExportTemplet("firstRvw"); + File file = getExportTemplet("初步评审.docx"); + Configure config = Configure.builder().bind("detail_table", new DetailTablePolicy()).build(); + XWPFTemplate template = XWPFTemplate.compile(file, config).render(data); + + String fileName = new String("初步评审表.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); + + this.write(template, fileName, response); + + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JgdfExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JgdfExportServiceImpl.java index c1a40f5..5acc7d5 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JgdfExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JgdfExportServiceImpl.java @@ -2,10 +2,10 @@ package com.chinaunicom.mall.ebtp.extend.export.service.impl; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalDetailDTO; -import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParame; -import com.chinaunicom.mall.ebtp.extend.export.bean.ProjectSectionVO; -import com.chinaunicom.mall.ebtp.extend.export.feign.ProjectFeignService; -import com.chinaunicom.mall.ebtp.extend.export.feign.RsmsFeignService; +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; +import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterPriceScoreVO; import lombok.SneakyThrows; @@ -44,7 +44,7 @@ public class JgdfExportServiceImpl implements ExportService { */ @SneakyThrows @Override - public void doExport(ExportParame param, HttpServletRequest request, HttpServletResponse response) { + public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { List titles = new LinkedList<>(); titles.add("序号"); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesExportServiceImpl.java deleted file mode 100644 index 2de2db7..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesExportServiceImpl.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.service.impl; - -import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParame; -import com.chinaunicom.mall.ebtp.extend.export.bean.ProjectSectionVO; -import com.chinaunicom.mall.ebtp.extend.export.feign.ProjectFeignService; -import com.chinaunicom.mall.ebtp.extend.export.feign.RsmsFeignService; -import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; -import com.chinaunicom.mall.ebtp.extend.export.service.TemplateFileService; -import com.chinaunicom.mall.ebtp.extend.export.vo.JuryPrintVO; -import com.deepoove.poi.XWPFTemplate; -import com.deepoove.poi.config.Configure; -import com.deepoove.poi.policy.HackLoopTableRenderPolicy; -import lombok.SneakyThrows; -import org.springframework.stereotype.Service; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.InputStream; -import java.io.OutputStream; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - - -/** - * 评标委员会签字表 - */ -@Service("judges") -public class JudgesExportServiceImpl implements ExportService { - private final RsmsFeignService rsmsFeignService; - private final ProjectFeignService projectFeignService; - private final TemplateFileService templateFileService; - - public JudgesExportServiceImpl(RsmsFeignService rsmsFeignService, ProjectFeignService projectFeignService, TemplateFileService templateFileService) { - this.rsmsFeignService = rsmsFeignService; - this.projectFeignService = projectFeignService; - this.templateFileService = templateFileService; - } - - - /** - * 导出 - * - * @param param - * @param request - * @param response - */ - @SneakyThrows - @Override - public void doExport(ExportParame param, HttpServletRequest request, HttpServletResponse response) { - - //项目和招标名称数据 - ProjectSectionVO projectSectionVO = new ProjectSectionVO(); - projectSectionVO.setId(param.getSectionId()); - BaseResponse list = projectFeignService.selectById(projectSectionVO); - //专家人员数据 - BaseResponse> listBaseResponse = rsmsFeignService.queryReportPrintByRoomId(param.getAssessRoomId()); - ArrayList> maps = new ArrayList<>(); - if (listBaseResponse != null && list != null) { - for (int i = 0; i < listBaseResponse.getData().size(); i++) { - Map data = new HashMap<>(); - data.put("name", (listBaseResponse.getData().get(i).getName())); - data.put("phone", listBaseResponse.getData().get(i).getMobile()); - maps.add(data); - } - } - //获取模板 - InputStream file = templateFileService.getExportTemplet("judges"); - Map all = new HashMap() {{ - put("Judges", maps); - put("time", ""); - - if (list != null) { - put("bh", list.getData().getBidSectBizNum()); - put("mc", list.getData().getProjectName()); - } else { - put("bh", ""); - put("mc", ""); - } - }}; - - HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy(); - Configure config = Configure.builder().bind("Judges", policy).build(); - XWPFTemplate template = XWPFTemplate.compile(file, config).render(all); - - String fileName = new String("评标委员会签字表.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); - - OutputStream os = response.getOutputStream(); - response.setHeader("Content-disposition", "attachment; filename=" + fileName); - template.write(os); - - } -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjcnExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesPromiseImpl.java similarity index 68% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjcnExportServiceImpl.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesPromiseImpl.java index a371716..9815fca 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjcnExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesPromiseImpl.java @@ -1,11 +1,12 @@ package com.chinaunicom.mall.ebtp.extend.export.service.impl; -import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParame; +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; -import com.chinaunicom.mall.ebtp.extend.export.service.TemplateFileService; +import com.chinaunicom.mall.ebtp.extend.export.service.templateFile.TemplateFileService; import com.deepoove.poi.XWPFTemplate; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; @@ -18,15 +19,13 @@ import java.nio.charset.StandardCharsets; /** * 评标专家承诺书 */ -@Service("zjcn") +@Service("promise") @Slf4j -public class ZjcnExportServiceImpl implements ExportService { +public class JudgesPromiseImpl implements ExportService { - private final TemplateFileService templateFileService; + @Autowired + private TemplateFileService templateFileService; - public ZjcnExportServiceImpl(TemplateFileService templateFileService) { - this.templateFileService = templateFileService; - } /** * 导出 @@ -37,9 +36,9 @@ public class ZjcnExportServiceImpl implements ExportService { */ @SneakyThrows @Override - public void doExport(ExportParame param, HttpServletRequest request, HttpServletResponse response) { + public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { //文件模板从数据库或者项目位置取得 - InputStream file = templateFileService.getExportTemplet("zjcn"); + InputStream file = templateFileService.getExportTemplet("promise"); XWPFTemplate template = XWPFTemplate.compile(file); String fileName = new String("评标专家承诺书.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesSignImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesSignImpl.java new file mode 100644 index 0000000..152d6e1 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesSignImpl.java @@ -0,0 +1,78 @@ +package com.chinaunicom.mall.ebtp.extend.export.service.impl; + +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; +import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; +import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.policy.HackLoopTableRenderPolicy; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +/** + * 评标委员会签字表 + */ +@Service("judgesSign") +public class JudgesSignImpl implements ExportService { + + @Autowired + private ExportCommonFeignService commonFeignService; + + + /** + * 导出 + * + * @param param + * @param request + * @param response + */ + @Override + public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { + + //项目和招标名称数据 + ProjectSectionVO section = commonFeignService.projectGetSectionById(param.getSectionId()); + //专家人员数据 + List list = commonFeignService.rsmsQueryReportPrintByRoomId(param.getAssessRoomId()); + ArrayList> maps = new ArrayList<>(); + + for (int i = 0; i < list.size(); i++) { + Map data = new HashMap<>(); + data.put("name", list.get(i).getName()); + data.put("phone", list.get(i).getMobile()); + maps.add(data); + } + + //获取模板 + Map all = new HashMap() {{ + put("Judges", maps); + put("time", ""); + + + put("bh", section.getBidSectBizNum()); + put("mc", section.getProjectName()); + + }}; +// InputStream file = templateFileService.getExportTemplet("judgesSign"); + File file = getExportTemplet("评标委员会签字表.docx"); + HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy(); + Configure config = Configure.builder().bind("Judges", policy).build(); + XWPFTemplate template = XWPFTemplate.compile(file, config).render(all); + + String fileName = new String("评标委员会签字表.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); + + this.write(template, fileName, response); + + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesSignInImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesSignInImpl.java new file mode 100644 index 0000000..64fc605 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesSignInImpl.java @@ -0,0 +1,76 @@ +package com.chinaunicom.mall.ebtp.extend.export.service.impl; + +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; +import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; +import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; +import com.chinaunicom.mall.ebtp.extend.export.service.templateFile.TemplateFileService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.policy.HackLoopTableRenderPolicy; +import lombok.SneakyThrows; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; +import java.time.format.DateTimeFormatter; +import java.util.*; + + +/** + * 评审专家签到表 + */ +@Service("judgesSignIn") +public class JudgesSignInImpl implements ExportService { + @Autowired + private TemplateFileService templateFileService; + @Autowired + private ExportCommonFeignService commonFeignService; + + /** + * 导出 + * + * @param param + * @param request + * @param response + */ + @SneakyThrows + @Override + public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { + + //专家人员数据 + List list = commonFeignService.rsmsQueryReportPrintByRoomId(param.getAssessRoomId()); + ArrayList> maps = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + Map data = new HashMap<>(); + JuryPrintVO juryPrintVO = list.get(i); + data.put("name", juryPrintVO.getName()); + data.put("phone", juryPrintVO.getMobile()); + data.put("idCard", juryPrintVO.getCertificate()); + data.put("isTrue", Objects.equals(juryPrintVO.getAttitude(), 1) ? "是" : "否"); + data.put("time", juryPrintVO.getLoginTime() != null ? DateTimeFormatter.ofPattern("yyyy年MM月dd日").format(juryPrintVO.getLoginTime()) : ""); + maps.add(data); + } + + + InputStream file = templateFileService.getExportTemplet("judgesSignIn"); + Map all = new HashMap() {{ + put("table", maps); + }}; + + HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy(); + Configure config = Configure.builder().bind("table", policy).build(); + XWPFTemplate template = XWPFTemplate.compile(file, config).render(all); + + String fileName = new String("评审专家签到表.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); + + OutputStream os = response.getOutputStream(); + response.setHeader("Content-disposition", "attachment; filename=" + fileName); + template.write(os); + + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/KbjlExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/KbjlExportServiceImpl.java deleted file mode 100644 index 774748f..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/KbjlExportServiceImpl.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.service.impl; - -import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.*; -import com.chinaunicom.mall.ebtp.extend.export.feign.OpenFeignService; -import com.chinaunicom.mall.ebtp.extend.export.feign.ProjectFeignService; -import com.chinaunicom.mall.ebtp.extend.export.feign.RespsFeignService; -import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; -import com.chinaunicom.mall.ebtp.extend.export.service.TemplateFileService; -import com.deepoove.poi.XWPFTemplate; -import com.deepoove.poi.config.Configure; -import com.deepoove.poi.policy.HackLoopTableRenderPolicy; -import lombok.SneakyThrows; -import org.springframework.stereotype.Service; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.InputStream; -import java.io.OutputStream; -import java.nio.charset.StandardCharsets; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - - -/** - * 开标记录表导出 - */ -@Service("kbjl") -public class KbjlExportServiceImpl implements ExportService { - - private final ProjectFeignService projectFeignService; - private final RespsFeignService respsFeignService; - private final OpenFeignService openFeignService; - private final TemplateFileService templateFileService; - public KbjlExportServiceImpl(ProjectFeignService projectFeignService, RespsFeignService respsFeignService, OpenFeignService openFeignService, TemplateFileService templateFileService) { - this.projectFeignService = projectFeignService; - this.respsFeignService = respsFeignService; - this.openFeignService = openFeignService; - this.templateFileService = templateFileService; - } - - /** - * 导出 - * - * @param param - * @param request - * @param response - */ - @SneakyThrows - @Override - public void doExport(ExportParame param, HttpServletRequest request, HttpServletResponse response) { - - Tdoc tdocPara = new Tdoc(); - tdocPara.setAssessRoomId(param.getAssessRoomId()); - tdocPara.setTurnSort(Integer.parseInt(param.getReviewTurnSort())); - //开标记录数据 - BaseResponse> listBaseResponse = respsFeignService.getTenderQuoteList(tdocPara); - ArrayList> maps = new ArrayList<>(); - - if (listBaseResponse != null) { - for (int i = 0; i < listBaseResponse.getData().size(); i++) { - Map data = new HashMap<>(); - data.put("num", (i + 1)); - data.put("tbr", (listBaseResponse.getData().get(i).getBidUserName())); - data.put("bj", (listBaseResponse.getData().get(i).getNewPrice())); - data.put("yy", ""); - LocalDateTime signTime = listBaseResponse.getData().get(i).getSignTime(); - data.put("sign", signTime == null ? "" : (listBaseResponse.getData().get(i).getContactName()) + ":" + DateTimeFormatter.ofPattern("yyyy年MM月dd日").format(signTime)); - maps.add(data); - } - - } - - //查询项目名称 - ProjectSectionVO projectSectionVO = new ProjectSectionVO(); - projectSectionVO.setId(param.getSectionId()); - BaseResponse project = projectFeignService.selectById(projectSectionVO); - - //查询开标时间 - BizBidOpenroom bizBidOpenroom = new BizBidOpenroom(); - bizBidOpenroom.setAssessRoomId(param.getAssessRoomId()); - BaseResponse> timeList = openFeignService.list(bizBidOpenroom); - - InputStream file = templateFileService.getExportTemplet("kbjl"); - Map all = new HashMap() {{ - put("Record", maps); - - if (timeList.getData() != null) { - put("time", timeList.getData().get(0).getOpingTime()); - } else { - put("time", ""); - } - - if (project.getData() != null) { - put("mc", project.getData().getProjectName()); - put("bh", project.getData().getBidSectBizNum()); - put("bao", project.getData().getBidSectName()); - } else { - put("mc", ""); - put("bh", ""); - put("bao", ""); - } - - put("yuan", ""); - }}; - - HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy(); - Configure config = Configure.builder().bind("Record", policy).build(); - XWPFTemplate template = XWPFTemplate.compile(file, config).render(all); - - String fileName = new String("开标记录表.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); - OutputStream os = response.getOutputStream(); - response.setHeader("Content-disposition", "attachment; filename=" + fileName); - template.write(os); - } -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PbbgExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PbbgExportServiceImpl.java deleted file mode 100644 index 0031208..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PbbgExportServiceImpl.java +++ /dev/null @@ -1,264 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.service.impl; - -import cn.hutool.core.util.StrUtil; -import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.*; -import com.chinaunicom.mall.ebtp.extend.export.enums.ExportExceptionEnum; -import com.chinaunicom.mall.ebtp.extend.export.feign.ProcessFeignClient; -import com.chinaunicom.mall.ebtp.extend.export.feign.ProjectFeignService; -import com.chinaunicom.mall.ebtp.extend.export.feign.RsmsFeignService; -import com.chinaunicom.mall.ebtp.extend.export.feign.TenderFeignService; -import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; -import com.chinaunicom.mall.ebtp.extend.export.service.TemplateFileService; -import com.chinaunicom.mall.ebtp.extend.export.vo.JuryPrintVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.ResultDetailVO; -import com.deepoove.poi.XWPFTemplate; -import com.deepoove.poi.config.Configure; -import com.deepoove.poi.policy.HackLoopTableRenderPolicy; -import lombok.SneakyThrows; -import org.springframework.stereotype.Service; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.InputStream; -import java.io.OutputStream; -import java.math.BigDecimal; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - - -/** - * 评标报告 - */ -@Service("pbbg") -public class PbbgExportServiceImpl implements ExportService { - private final RsmsFeignService rsmsFeignService; - private final TemplateFileService templateFileService; - private final ProcessFeignClient processFeignClient; - private final TenderFeignService tenderFeignService; - private final ProjectFeignService projectFeignClient; - - public PbbgExportServiceImpl(RsmsFeignService rsmsFeignService, TemplateFileService templateFileService, ProcessFeignClient processFeignClient, TenderFeignService tenderFeignService, ProjectFeignService projectFeignClient) { - this.rsmsFeignService = rsmsFeignService; - this.templateFileService = templateFileService; - this.processFeignClient = processFeignClient; - this.tenderFeignService = tenderFeignService; - this.projectFeignClient = projectFeignClient; - } - - /** - * 导出 - * - * @param param - * @param request - * @param response - */ - @SneakyThrows - @Override - public void doExport(ExportParame param, HttpServletRequest request, HttpServletResponse response) { - BaseResponse processResponse = processFeignClient.getById(param.getAssessRoomId()); - ExportExceptionEnum.FRAME_EXCEPTION_GET_ROOM_DETAIL_FAIL.customValid(!processResponse.isSuccess()); - ExportExceptionEnum.FRAME_EXCEPTION_GET_ROOM_DETAIL_FAIL.assertNotNull(processResponse.getData()); - - BaseResponse proj = projectFeignClient.getProjById(processResponse.getData().getTpId()); - ExportExceptionEnum.FRAME_EXCEPTION_GET_PROJECT_INFO.customValid(!proj.isSuccess()); - ExportExceptionEnum.FRAME_EXCEPTION_GET_PROJECT_INFO.assertNotNull(proj.getData()); - ProjectRecordVO project = proj.getData(); - - - String zbfs = ""; - switch (project.getBidMethodDict()) { - case "procurement_mode_1": - case "procurement_mode_2": - zbfs = "公开招标"; - break; - case "procurement_mode_3": - zbfs = "公开比选"; - break; - case "procurement_mode_4": - zbfs = "招募"; - break; - case "procurement_mode_5": - case "procurement_mode_6": - zbfs = "谈判"; - break; - case "procurement_mode_7": - zbfs = "询价"; - break; - case "procurement_mode_8": - zbfs = "竞拍"; - break; - default: - zbfs = ""; - } - - - BaseResponse> roomTenderResponse = tenderFeignService.queryRoomTenderCount(param.getAssessRoomId()); - ExportExceptionEnum.FRAME_EXCEPTION_GET_TENDERL_FAIL.customValid(!roomTenderResponse.isSuccess()); - ExportExceptionEnum.FRAME_EXCEPTION_GET_TENDERL_FAIL.assertNotNull(roomTenderResponse.getData()); - List registerList = roomTenderResponse.getData(); - //表一 - List> list1 = new ArrayList<>(); - for (int i = 0; i < registerList.size(); i++) { - Map map = new HashMap<>(16); - int num = i + 1; - BizSupplierRegister register = registerList.get(i); - map.put("num", num); - map.put("name", register.getCompanyName()); - map.put("type", StrUtil.isBlank(register.getDownloadStatus()) ? "" : "2".equals(register.getDownloadStatus()) ? "已投递" : "1".equals(register.getDownloadStatus()) ? "已下载" : "未下载"); - list1.add(map); - } - - //表二假数据 - List> list2 = new ArrayList<>(); - for (int i = 0; i < 3; i++) { - Map map = new HashMap<>(); - map.put("time", "2021.3.4"); - map.put("nr", "好多内容"); - list2.add(map); - } - - - //表三数据 - //专家人员数据 - BaseResponse> listBaseResponse = rsmsFeignService.queryReportPrintByRoomId(param.getAssessRoomId()); - ArrayList> list3 = new ArrayList<>(); - String pbwyhzz = ""; - if (listBaseResponse != null && listBaseResponse.getData() != null) { - List juryPrintVOList = listBaseResponse.getData(); - for (int i = 0; i < juryPrintVOList.size(); i++) { - int num = i + 1; - JuryPrintVO juryPrintVO = juryPrintVOList.get(i); - Map data = new HashMap<>(); - data.put("num", num); - data.put("work", juryPrintVO.getWorkunit()); - data.put("name", juryPrintVO.getName()); - data.put("job", juryPrintVO.getJobTitle()); - data.put("unit", juryPrintVO.getWorkunit()); - list3.add(data); - if ("2".equals(juryPrintVO.getDuty())) { - pbwyhzz = juryPrintVO.getName(); - } - } - - } - - - BaseResponse> baseResponse = rsmsFeignService.get(param.getAssessRoomId()); - ExportExceptionEnum.FRAME_EXCEPTION_GET_ROOM_DETAIL_FAIL.customValid(!baseResponse.isSuccess()); - ExportExceptionEnum.FRAME_EXCEPTION_GET_ROOM_DETAIL_FAIL.assertNotNull(baseResponse.getData()); - List resultDetails = baseResponse.getData(); - - if (resultDetails.isEmpty()) { - return; - } - int size = resultDetails.size(); - - List> list4 = new ArrayList<>(); - List> list5 = new ArrayList<>(); - List> list6 = new ArrayList<>(); - List> list7 = new ArrayList<>(); - List> list8 = new ArrayList<>(); - for (int i = 0; i < size; i++) { - int num = i + 1; - ResultDetailVO detail = resultDetails.get(i); - String tbr = detail.getCompanyName(); - Map map = new HashMap<>(16); - //表4,初步评审结果 投标人,投标结果 - map.put("num", num); - map.put("tbr", tbr); - map.put("jg", detail.getFirstRvwResult() == null ? "" : detail.getFirstRvwResult() == 0 ? "未通过" : "通过"); - list4.add(map); - - //表六 详细评审数据 投标人,技术分,商务分 - - map.put("js", StrUtil.isNotBlank(detail.getTechnicalScore()) ? detail.getTechnicalScore() : ""); - map.put("sw", StrUtil.isNotBlank(detail.getBusinessScore()) ? detail.getBusinessScore() : ""); - list6.add(map); - - - //表七 价格评审数据 投标人,投标价,评审价格,价格得分 - - map.put("bj", detail.getPrice() == null ? BigDecimal.ZERO : detail.getPrice()); - map.put("psjg", detail.getPriceReview() == null ? BigDecimal.ZERO : detail.getPriceReview()); - map.put("jgdf", StrUtil.isNotBlank(detail.getPriceScore()) ? detail.getPriceScore() : ""); - list7.add(map); - - - //表八 评审总结数据 - map.put("jgdf2", StrUtil.isNotBlank(detail.getPriceScore()) ? detail.getPriceScore() : ""); - map.put("zhdf", StrUtil.isNotBlank(detail.getTotalScore()) ? detail.getTotalScore() : ""); - list8.add(map); - - } - - - String finalZbfs = zbfs; - String finalPbwyhzz = pbwyhzz; - Map all = new HashMap() {{ - put("table1", list1); - put("table2", list2); - put("table3", list3); - put("table4", list4); - put("table5", list5); - put("table6", list6); - put("table7", list7); - put("table8", list8); - put("zbdljg", project.getTenderAgencyName()); - put("zbbh", project.getEbpProjectNumber()); - put("zbfs", finalZbfs); - put("pbwyhzz", finalPbwyhzz); - }}; - - - HackLoopTableRenderPolicy policy1 = new HackLoopTableRenderPolicy(); - HackLoopTableRenderPolicy policy2 = new HackLoopTableRenderPolicy(); - HackLoopTableRenderPolicy policy3 = new HackLoopTableRenderPolicy(); - HackLoopTableRenderPolicy policy4 = new HackLoopTableRenderPolicy(); - HackLoopTableRenderPolicy policy5 = new HackLoopTableRenderPolicy(); - HackLoopTableRenderPolicy policy6 = new HackLoopTableRenderPolicy(); - HackLoopTableRenderPolicy policy7 = new HackLoopTableRenderPolicy(); - HackLoopTableRenderPolicy policy8 = new HackLoopTableRenderPolicy(); - - Configure config = Configure.builder().bind("table1", policy1).bind("table2", policy2).bind("table3", policy3) - .bind("table4", policy4).bind("table5", policy5).bind("table6", policy6) - .bind("table7", policy7).bind("table8", policy8).build(); - - - InputStream file = templateFileService.getExportTemplet("pbbg"); -// File file = getExportTemplet("评标报告.docx"); - XWPFTemplate template = XWPFTemplate.compile(file, config).render(all); - - String fileName = new String("评标报告.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); - OutputStream os = response.getOutputStream(); - response.setHeader("Content-disposition", "attachment; filename=" + fileName); - template.write(os); - - } - - private List getFirstArchiveLinks() { - List archiveLinks = new ArrayList<>(); - //初步评审表URL - archiveLinks.add(new ArchiveLink().setId("1").setArchiveDirectory("1")); - return archiveLinks; - } - - private List getDetailArchiveLinks() { - List archiveLinks = new ArrayList<>(); - //详细评审表URL -// archiveLinks.add(new ArchiveLink().setId("2").setArchiveDirectory("2")); - //专家打分表URL - archiveLinks.add(new ArchiveLink().setId("3").setArchiveDirectory("3")); - //价格打分表URL - archiveLinks.add(new ArchiveLink().setId("4").setArchiveDirectory("4")); - //打分汇总表URL - archiveLinks.add(new ArchiveLink().setId("5").setArchiveDirectory("5")); - //评审报告URL -// archiveLinks.add(new ArchiveLink().setId("6").setArchiveDirectory("6")); - return archiveLinks; - } -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PszjExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PszjExportServiceImpl.java deleted file mode 100644 index 5e7e2ed..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PszjExportServiceImpl.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.service.impl; - -import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParame; -import com.chinaunicom.mall.ebtp.extend.export.feign.RsmsFeignService; -import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; -import com.chinaunicom.mall.ebtp.extend.export.service.TemplateFileService; -import com.chinaunicom.mall.ebtp.extend.export.vo.JuryPrintVO; -import com.deepoove.poi.XWPFTemplate; -import com.deepoove.poi.config.Configure; -import com.deepoove.poi.policy.HackLoopTableRenderPolicy; -import lombok.SneakyThrows; -import org.springframework.stereotype.Service; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.InputStream; -import java.io.OutputStream; -import java.nio.charset.StandardCharsets; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - - -/** - * 评审专家签到表 - */ -@Service("pszj") -public class PszjExportServiceImpl implements ExportService { - private final RsmsFeignService rsmsFeignService; - private final TemplateFileService templateFileService; - - public PszjExportServiceImpl(RsmsFeignService rsmsFeignService, TemplateFileService templateFileService) { - this.rsmsFeignService = rsmsFeignService; - this.templateFileService = templateFileService; - } - - /** - * 导出 - * - * @param param - * @param request - * @param response - */ - @SneakyThrows - @Override - public void doExport(ExportParame param, HttpServletRequest request, HttpServletResponse response) { - - //专家人员数据 - BaseResponse> listBaseResponse = rsmsFeignService.queryReportPrintByRoomId(param.getAssessRoomId()); - - ArrayList> maps = new ArrayList<>(); - if (listBaseResponse != null && listBaseResponse.getData() != null) { - for (int i = 0; i < listBaseResponse.getData().size(); i++) { - Map data = new HashMap<>(); - data.put("name", listBaseResponse.getData().get(i).getName()); - data.put("phone", listBaseResponse.getData().get(i).getMobile()); - data.put("idCard", listBaseResponse.getData().get(i).getCertificate()); - data.put("isTrue", listBaseResponse.getData().get(i).getAttitude() == 1 ? "是" : "否"); - data.put("time", DateTimeFormatter.ofPattern("yyyy年MM月dd日").format(listBaseResponse.getData().get(i).getLoginTime())); - maps.add(data); - } - } - - - InputStream file = templateFileService.getExportTemplet("pszj"); - Map all = new HashMap() {{ - put("table", maps); - }}; - - HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy(); - Configure config = Configure.builder().bind("table", policy).build(); - XWPFTemplate template = XWPFTemplate.compile(file, config).render(all); - - String fileName = new String("评审专家签到表.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); - - OutputStream os = response.getOutputStream(); - response.setHeader("Content-disposition", "attachment; filename=" + fileName); - template.write(os); - - } -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ReviewReportImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ReviewReportImpl.java new file mode 100644 index 0000000..9976f10 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ReviewReportImpl.java @@ -0,0 +1,194 @@ +package com.chinaunicom.mall.ebtp.extend.export.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; +import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; +import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; +import com.chinaunicom.mall.ebtp.extend.export.service.templateFile.TemplateFileService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ResultDetailVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizSupplierRegister; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectRecordVO; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.policy.HackLoopTableRenderPolicy; +import lombok.SneakyThrows; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + + +/** + * 评审报告 + */ +@Service("reviewReport") +public class ReviewReportImpl implements ExportService { + + @Autowired + private ExportCommonFeignService commonFeignService; + + @Autowired + private TemplateFileService templateFileService; + + + /** + * 导出 + * + * @param param + * @param request + * @param response + */ + @SneakyThrows + @Override + public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { + + // 项目信息 + ProjectRecordVO project = commonFeignService.projectGetProjById(param.getProjectId()); + + + String zbfs = ""; + switch (project.getBidMethodDict()) { + case "procurement_mode_1": + case "procurement_mode_2": + zbfs = "公开招标"; + break; + case "procurement_mode_3": + zbfs = "公开比选"; + break; + case "procurement_mode_4": + zbfs = "招募"; + break; + case "procurement_mode_5": + case "procurement_mode_6": + zbfs = "谈判"; + break; + case "procurement_mode_7": + zbfs = "询价"; + break; + case "procurement_mode_8": + zbfs = "竞拍"; + break; + default: + zbfs = ""; + } + + + //供应商信息 + List registerList = commonFeignService.tenderGetSupplierRegisterByRoomId(param.getAssessRoomId()); + + //表一 + List> list1 = new ArrayList<>(); + for (int i = 0; i < registerList.size(); i++) { + Map map = new HashMap<>(16); + int num = i + 1; + BizSupplierRegister register = registerList.get(i); + map.put("num", num); + map.put("name", register.getCompanyName()); + map.put("type", StrUtil.isBlank(register.getDownloadStatus()) ? "" : "2".equals(register.getDownloadStatus()) ? "已投递" : "1".equals(register.getDownloadStatus()) ? "已下载" : "未下载"); + list1.add(map); + } + + //表二 专家人员数据 + List memberList = commonFeignService.rsmsQueryReportPrintByRoomId(param.getAssessRoomId()); + ArrayList> list2 = new ArrayList<>(); + String pbwyhzz = null; + for (int i = 0; i < memberList.size(); i++) { + JuryPrintVO juryPrintVO = memberList.get(i); + Map data = new HashMap<>(); + data.put("num", i + 1); + data.put("work", juryPrintVO.getWorkunit()); + data.put("name", juryPrintVO.getName()); + data.put("job", juryPrintVO.getJobTitle()); + data.put("unit", juryPrintVO.getWorkunit()); + list2.add(data); + if ("2".equals(juryPrintVO.getDuty())) { + pbwyhzz = juryPrintVO.getName(); + } + } + + ArrayList> list3 = new ArrayList<>(); + + for (int i = 0; i < registerList.size(); i++) { + Map map = new HashMap<>(16); + int num = i + 1; + BizSupplierRegister register = registerList.get(i); + map.put("num", num); + map.put("id", register.getCompanyId()); + map.put("tbr", register.getCompanyName()); + list3.add(map); + + } + + //评审结果表数据 + List resultDetails = commonFeignService.rsmsQueryReviewDetailByRoomId(param.getAssessRoomId()); + Map detailVOMap = resultDetails.stream().collect(Collectors.toMap(ResultDetailVO::getCompanyId, Function.identity(), (o1, o2) -> o1)); + for (int i = 0; i < registerList.size(); i++) { + BizSupplierRegister register = registerList.get(i); + if (detailVOMap.containsKey(register.getCompanyId())) { + ResultDetailVO detail = detailVOMap.get(register.getCompanyId()); + + Map map = list3.stream().filter(f -> f.get("id").equals(register.getCompanyId())).findAny().orElse(new HashMap<>()); + //表三,初步评审结果 投标人,投标结果 + map.put("jg", detail.getFirstRvwResult() == null ? "" : detail.getFirstRvwResult() == 0 ? "未通过" : "通过"); + + + //表四 详细评审数据 投标人,技术分,商务分 + map.put("js", StrUtil.isNotBlank(detail.getTechnicalScore()) ? detail.getTechnicalScore() : ""); + map.put("sw", StrUtil.isNotBlank(detail.getBusinessScore()) ? detail.getBusinessScore() : ""); + + + //表五 价格评审数据 投标人,投标价,评审价格,价格得分 + map.put("bj", detail.getPrice() == null ? BigDecimal.ZERO : detail.getPrice()); + map.put("psjg", detail.getPriceReview() == null ? BigDecimal.ZERO : detail.getPriceReview()); + map.put("jgdf", StrUtil.isNotBlank(detail.getPriceScore()) ? detail.getPriceScore() : ""); + + + //表六 评审总结数据 + map.put("jgdf2", StrUtil.isNotBlank(detail.getPriceScore()) ? detail.getPriceScore() : ""); + map.put("zhdf", StrUtil.isNotBlank(detail.getTotalScore()) ? detail.getTotalScore() : ""); + } + } + + String finalZbfs = zbfs; + String finalPbwyhzz = pbwyhzz; + Map all = new HashMap() {{ + put("table1", list1); + put("table2", list2); + put("table3", list3); + put("zbdljg", project.getTenderAgencyName()); + put("zbbh", project.getEbpProjectNumber()); + put("zbfs", finalZbfs); + put("pbwyhzz", finalPbwyhzz == null ? "______" : finalPbwyhzz); + }}; + + + HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy(); + + Configure config = Configure.builder() + .bind("table1", policy) + .bind("table2", policy) + .bind("table3", policy) + .build(); + + +// InputStream file = templateFileService.getExportTemplet("reviewReport"); + File file = getExportTemplet("评标报告.docx"); + XWPFTemplate template = XWPFTemplate.compile(file, config).render(all); + + String fileName = new String("评标报告.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); + + this.write(template, fileName, response); + } + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java index 8099fc0..f1bebb6 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java @@ -2,12 +2,15 @@ package com.chinaunicom.mall.ebtp.extend.export.service.impl; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.export.bean.*; -import com.chinaunicom.mall.ebtp.extend.export.feign.ProjectFeignService; -import com.chinaunicom.mall.ebtp.extend.export.feign.RsmsFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalDetailVO; import com.chinaunicom.mall.ebtp.extend.export.vo.MemberVO; import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigDetailDTO; import lombok.SneakyThrows; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; @@ -48,7 +51,7 @@ public class ZjgrExportServiceImpl implements ExportService { */ @SneakyThrows @Override - public void doExport(ExportParame param, HttpServletRequest request, HttpServletResponse response) { + public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { //查询项目名称 ProjectSectionVO projectSectionVO = new ProjectSectionVO(); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/policy/DetailTablePolicy.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/policy/DetailTablePolicy.java new file mode 100644 index 0000000..e69b99c --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/policy/DetailTablePolicy.java @@ -0,0 +1,78 @@ +package com.chinaunicom.mall.ebtp.extend.export.service.policy; + +import com.chinaunicom.mall.ebtp.extend.export.entity.ExportTableData; +import com.deepoove.poi.data.CellRenderData; +import com.deepoove.poi.data.RowRenderData; +import com.deepoove.poi.policy.DynamicTableRenderPolicy; +import com.deepoove.poi.policy.TableRenderPolicy; +import com.deepoove.poi.util.TableTools; +import org.apache.poi.xwpf.usermodel.XWPFTable; +import org.apache.poi.xwpf.usermodel.XWPFTableCell; +import org.apache.poi.xwpf.usermodel.XWPFTableRow; + +import java.util.List; + +public class DetailTablePolicy extends DynamicTableRenderPolicy { + + // 横向填充名称所在行 + private int horizonalNameIndex = 0; + // 竖向填充数据所在行 + private int verticallyStartIndex = 1; + public DetailTablePolicy() { + } + + public DetailTablePolicy(int horizonalNameIndex, int verticallyStartIndex) { + this.horizonalNameIndex = horizonalNameIndex; + this.verticallyStartIndex = verticallyStartIndex; + } + @Override + public void render(XWPFTable xwpfTable, Object o) throws Exception { + if (o == null) { + return; + } + ExportTableData data = (ExportTableData) o; + + + //供应商名称 + List cols = data.getCells(); + if (cols != null) { + XWPFTableRow row = xwpfTable.getRow(horizonalNameIndex); + row.removeCell(row.getTableCells().size() - 1); + //循环添加供应商名称 + for (CellRenderData col : cols) { + XWPFTableCell cell = row.createCell(); + // 单元格渲染 + TableRenderPolicy.Helper.renderCell(cell, col, null); + } + } + + //供应商 + List rows = data.getRows(); + if (rows != null && !rows.isEmpty()) { + xwpfTable.removeRow(verticallyStartIndex); + for (int i = 0; i < rows.size(); i++) { + XWPFTableRow insertNewTableRow = xwpfTable.insertNewTableRow(verticallyStartIndex + i); + for (int j = 0; j < rows.get(i).getCells().size(); j++) { + insertNewTableRow.createCell(); + } + TableRenderPolicy.Helper.renderRow(xwpfTable.getRow(verticallyStartIndex + i), rows.get(i)); + } + } + + if (data.getCellMerge() != null) { + // 水平合并 + data.getCellMerge().getMapping().forEach((key, value) -> { + TableTools.mergeCellsHorizonal(xwpfTable, key.getI(), key.getJ(), value.getJ()); + }); + } + + if (data.getRowMerge() != null) { + // 垂直合并 + data.getCellMerge().getMapping().forEach((key, value) -> { + TableTools.mergeCellsVertically(xwpfTable, key.getI(), key.getJ(), value.getJ()); + }); + } + + + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/TemplateFileService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/templateFile/TemplateFileService.java similarity index 75% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/TemplateFileService.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/templateFile/TemplateFileService.java index a326845..ed82fe6 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/TemplateFileService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/templateFile/TemplateFileService.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.service; +package com.chinaunicom.mall.ebtp.extend.export.service.templateFile; import java.io.InputStream; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/TemplateFileServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/templateFile/impl/TemplateFileServiceImpl.java similarity index 88% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/TemplateFileServiceImpl.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/templateFile/impl/TemplateFileServiceImpl.java index 1b8344c..642c0dd 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/TemplateFileServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/templateFile/impl/TemplateFileServiceImpl.java @@ -1,7 +1,7 @@ -package com.chinaunicom.mall.ebtp.extend.export.service.impl; +package com.chinaunicom.mall.ebtp.extend.export.service.templateFile.impl; import com.chinaunicom.ebtp.mall.cloud.attachment.sdk.api.AttachmentClient; -import com.chinaunicom.mall.ebtp.extend.export.service.TemplateFileService; +import com.chinaunicom.mall.ebtp.extend.export.service.templateFile.TemplateFileService; import com.chinaunicom.mall.ebtp.extend.templatewarehouse.entity.BizBidTemplateWarehouse; import com.chinaunicom.mall.ebtp.extend.templatewarehouse.sevice.BizBidTemplateWarehouseService; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailSummaryVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailSummaryVO.java index 49575e4..b208986 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailSummaryVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailSummaryVO.java @@ -43,7 +43,7 @@ public class BidEvalDetailSummaryVO implements Serializable { @ApiModelProperty(value = "专家评分") @JsonInclude(JsonInclude.Include.NON_EMPTY) - List scoreList; + private List scoreList; @ApiModelProperty(value = "详审专家汇总") @JsonInclude(JsonInclude.Include.NON_EMPTY) diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/DocumentCenterService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/DocumentCenterService.java index 5f32239..99a2aae 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/DocumentCenterService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/DocumentCenterService.java @@ -1,7 +1,7 @@ package com.chinaunicom.mall.ebtp.extend.feign.client; -import com.chinaunicom.mall.ebtp.extend.feign.factory.FeignConfiguration; -import com.chinaunicom.mall.ebtp.extend.feign.factory.DocumentCenterServiceFallbackFactory; +import com.chinaunicom.mall.ebtp.extend.feign.config.FeignConfiguration; +import com.chinaunicom.mall.ebtp.extend.feign.client.factory.DocumentCenterServiceFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/OpenFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/OpenFeignService.java similarity index 87% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/OpenFeignService.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/OpenFeignService.java index dac2862..16cbca6 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/OpenFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/OpenFeignService.java @@ -1,8 +1,8 @@ -package com.chinaunicom.mall.ebtp.extend.export.feign; +package com.chinaunicom.mall.ebtp.extend.feign.client; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.export.bean.BizBidOpenroom; -import com.chinaunicom.mall.ebtp.extend.export.feign.factory.ExportServiceOpenFallbakFactory; +import com.chinaunicom.mall.ebtp.extend.feign.client.factory.ExportServiceOpenFallbakFactory; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/ProcessFeignClient.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProcessFeignService.java similarity index 70% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/ProcessFeignClient.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProcessFeignService.java index 75340b4..77247ae 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/ProcessFeignClient.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProcessFeignService.java @@ -1,28 +1,25 @@ -package com.chinaunicom.mall.ebtp.extend.export.feign; +package com.chinaunicom.mall.ebtp.extend.feign.client; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.BizAssessRoom; -import com.chinaunicom.mall.ebtp.extend.export.feign.factory.ProcessFeignFallbackFactory; -import com.chinaunicom.mall.ebtp.extend.export.vo.ResultDetailVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; +import com.chinaunicom.mall.ebtp.extend.feign.client.factory.ProcessFeignFallbackFactory; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; -import java.util.List; - /** * 评审流程 */ @FeignClient(value = "${mconfig.feign.name.process}", fallbackFactory = ProcessFeignFallbackFactory.class) -public interface ProcessFeignClient { +public interface ProcessFeignService { /** - * 查询数据 + * 通过room_id查询评审室信息 * * @param id * diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/ProjectFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProjectFeignService.java similarity index 79% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/ProjectFeignService.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProjectFeignService.java index ddb8d5f..b0d02ff 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/ProjectFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProjectFeignService.java @@ -1,9 +1,9 @@ -package com.chinaunicom.mall.ebtp.extend.export.feign; +package com.chinaunicom.mall.ebtp.extend.feign.client; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.ProjectRecordVO; -import com.chinaunicom.mall.ebtp.extend.export.bean.ProjectSectionVO; -import com.chinaunicom.mall.ebtp.extend.export.feign.factory.ProjectFeignFallbackFactory; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectRecordVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; +import com.chinaunicom.mall.ebtp.extend.feign.client.factory.ProjectFeignFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RespsFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RespsFeignService.java new file mode 100644 index 0000000..626618a --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RespsFeignService.java @@ -0,0 +1,28 @@ +package com.chinaunicom.mall.ebtp.extend.feign.client; + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.extend.feign.client.factory.ExportServiceRespsFallbakFactory; +import com.chinaunicom.mall.ebtp.extend.feign.entity.Tdoc; +import io.swagger.annotations.ApiParam; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Map; + +/** + * 调用 RESPS_SERVICE + */ +@FeignClient(value = "${mconfig.feign.name.resps}", fallbackFactory = ExportServiceRespsFallbakFactory.class) +public interface RespsFeignService { + + /** + * 开标唱标页列表 + * + * @param tdocPara assessRoomId 评审室id turnSort 轮次序号 + * @return title-表格标题,dataDecrypt-解密状态id、status dataQuote-报价信息 + */ + @PostMapping("/v1/tfile/getOpenTenderList") + public BaseResponse getOpenTenderList(@ApiParam(value = "assessRoomId 评审室id turnSort 轮次序号", required = false) @RequestBody Tdoc tdocPara); + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/RsmsFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java similarity index 94% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/RsmsFeignService.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java index 585d3db..0f78fe6 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/RsmsFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java @@ -1,9 +1,12 @@ -package com.chinaunicom.mall.ebtp.extend.export.feign; +package com.chinaunicom.mall.ebtp.extend.feign.client; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.export.bean.*; -import com.chinaunicom.mall.ebtp.extend.export.feign.factory.ExportServiceFallback; +import com.chinaunicom.mall.ebtp.extend.feign.client.factory.ExportServiceFallback; import com.chinaunicom.mall.ebtp.extend.export.vo.*; +import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ResultDetailVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/TenderFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java similarity index 80% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/TenderFeignService.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java index fef0b15..27872fd 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/TenderFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java @@ -1,8 +1,8 @@ -package com.chinaunicom.mall.ebtp.extend.export.feign; +package com.chinaunicom.mall.ebtp.extend.feign.client; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.BizSupplierRegister; -import com.chinaunicom.mall.ebtp.extend.export.feign.factory.TenderFeignFallbackFactory; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizSupplierRegister; +import com.chinaunicom.mall.ebtp.extend.feign.client.factory.TenderFeignFallbackFactory; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/UsercenterFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/UsercenterFeignService.java new file mode 100644 index 0000000..32bba29 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/UsercenterFeignService.java @@ -0,0 +1,23 @@ +package com.chinaunicom.mall.ebtp.extend.feign.client; + + +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.extend.feign.client.factory.UsercenterFeignFallbackFactory; +import com.chinaunicom.mall.ebtp.extend.feign.entity.LoginUserDetailVO; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + + +/** + * 用户中心 + */ +@FeignClient(value = "${mconfig.feign.name.usercenter}", fallbackFactory = UsercenterFeignFallbackFactory.class) +public interface UsercenterFeignService { + /* + * 查询用户信息 + */ + @GetMapping("/v1.0/user/info") + BaseResponse getLoninUserDetail(@RequestParam("uid") String uid); + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/factory/DocumentCenterServiceFallbackFactory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/DocumentCenterServiceFallbackFactory.java similarity index 80% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/factory/DocumentCenterServiceFallbackFactory.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/DocumentCenterServiceFallbackFactory.java index d23317b..8ecc694 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/factory/DocumentCenterServiceFallbackFactory.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/DocumentCenterServiceFallbackFactory.java @@ -1,7 +1,7 @@ -package com.chinaunicom.mall.ebtp.extend.feign.factory; +package com.chinaunicom.mall.ebtp.extend.feign.client.factory; import com.chinaunicom.mall.ebtp.extend.feign.client.DocumentCenterService; -import com.chinaunicom.mall.ebtp.extend.feign.fallback.DocumentCenterServiceFallbackImpl; +import com.chinaunicom.mall.ebtp.extend.feign.client.fallback.DocumentCenterServiceFallbackImpl; import feign.hystrix.FallbackFactory; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ExportServiceFallback.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java similarity index 92% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ExportServiceFallback.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java index 14b84a0..5c8648a 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ExportServiceFallback.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java @@ -1,10 +1,13 @@ -package com.chinaunicom.mall.ebtp.extend.export.feign.factory; +package com.chinaunicom.mall.ebtp.extend.feign.client.factory; import cn.hutool.core.exceptions.ExceptionUtil; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.export.bean.*; -import com.chinaunicom.mall.ebtp.extend.export.feign.RsmsFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; import com.chinaunicom.mall.ebtp.extend.export.vo.*; +import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ResultDetailVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ExportServiceOpenFallbakFactory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceOpenFallbakFactory.java similarity index 86% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ExportServiceOpenFallbakFactory.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceOpenFallbakFactory.java index da0e857..e895085 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ExportServiceOpenFallbakFactory.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceOpenFallbakFactory.java @@ -1,9 +1,9 @@ -package com.chinaunicom.mall.ebtp.extend.export.feign.factory; +package com.chinaunicom.mall.ebtp.extend.feign.client.factory; import cn.hutool.core.exceptions.ExceptionUtil; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.export.bean.BizBidOpenroom; -import com.chinaunicom.mall.ebtp.extend.export.feign.OpenFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.client.OpenFeignService; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ExportServiceRespsFallbakFactory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceRespsFallbakFactory.java similarity index 50% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ExportServiceRespsFallbakFactory.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceRespsFallbakFactory.java index 05aee0b..8954f3e 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ExportServiceRespsFallbakFactory.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceRespsFallbakFactory.java @@ -1,24 +1,31 @@ -package com.chinaunicom.mall.ebtp.extend.export.feign.factory; +package com.chinaunicom.mall.ebtp.extend.feign.client.factory; import cn.hutool.core.exceptions.ExceptionUtil; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.BizSupplierRegister; -import com.chinaunicom.mall.ebtp.extend.export.bean.Tdoc; -import com.chinaunicom.mall.ebtp.extend.export.feign.RespsFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.client.RespsFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.Tdoc; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import java.util.List; +import java.util.HashMap; +import java.util.Map; + @Component @Slf4j public class ExportServiceRespsFallbakFactory implements FallbackFactory { @Override public RespsFeignService create(Throwable throwable) { RespsFeignService resps = new RespsFeignService() { + /** + * 开标唱标页列表 + * + * @param tdocPara assessRoomId 评审室id turnSort 轮次序号 + * @return title-表格标题,dataDecrypt-解密状态id、status dataQuote-报价信息 + */ @Override - public BaseResponse> getTenderQuoteList(Tdoc tdocPara) { - return null; + public BaseResponse getOpenTenderList(Tdoc tdocPara) { + return BaseResponse.fail(new HashMap()); } }; log.error(ExceptionUtil.stacktraceToString(throwable)); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ProcessFeignFallbackFactory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ProcessFeignFallbackFactory.java similarity index 59% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ProcessFeignFallbackFactory.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ProcessFeignFallbackFactory.java index 2f64c6e..3fa242e 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ProcessFeignFallbackFactory.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ProcessFeignFallbackFactory.java @@ -1,23 +1,21 @@ -package com.chinaunicom.mall.ebtp.extend.export.feign.factory; +package com.chinaunicom.mall.ebtp.extend.feign.client.factory; import cn.hutool.core.exceptions.ExceptionUtil; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.common.util.JsonUtils; -import com.chinaunicom.mall.ebtp.extend.export.bean.BizAssessRoom; -import com.chinaunicom.mall.ebtp.extend.export.feign.ProcessFeignClient; -import com.chinaunicom.mall.ebtp.extend.export.vo.ReviewFlowVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; +import com.chinaunicom.mall.ebtp.extend.feign.client.ProcessFeignService; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @Component @Slf4j -public class ProcessFeignFallbackFactory implements FallbackFactory { +public class ProcessFeignFallbackFactory implements FallbackFactory { @Override - public ProcessFeignClient create(Throwable throwable) { - ProcessFeignClient back = new ProcessFeignClient() { + public ProcessFeignService create(Throwable throwable) { + ProcessFeignService back = new ProcessFeignService() { /** diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ProjectFeignFallbackFactory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ProjectFeignFallbackFactory.java similarity index 79% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ProjectFeignFallbackFactory.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ProjectFeignFallbackFactory.java index ffce41a..bab1e2d 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/ProjectFeignFallbackFactory.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ProjectFeignFallbackFactory.java @@ -1,10 +1,10 @@ -package com.chinaunicom.mall.ebtp.extend.export.feign.factory; +package com.chinaunicom.mall.ebtp.extend.feign.client.factory; import cn.hutool.core.exceptions.ExceptionUtil; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.ProjectRecordVO; -import com.chinaunicom.mall.ebtp.extend.export.bean.ProjectSectionVO; -import com.chinaunicom.mall.ebtp.extend.export.feign.ProjectFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectRecordVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; +import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/TenderFeignFallbackFactory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/TenderFeignFallbackFactory.java similarity index 81% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/TenderFeignFallbackFactory.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/TenderFeignFallbackFactory.java index 38e302a..e9ae54b 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/feign/factory/TenderFeignFallbackFactory.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/TenderFeignFallbackFactory.java @@ -1,9 +1,9 @@ -package com.chinaunicom.mall.ebtp.extend.export.feign.factory; +package com.chinaunicom.mall.ebtp.extend.feign.client.factory; import cn.hutool.core.exceptions.ExceptionUtil; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.BizSupplierRegister; -import com.chinaunicom.mall.ebtp.extend.export.feign.TenderFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizSupplierRegister; +import com.chinaunicom.mall.ebtp.extend.feign.client.TenderFeignService; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/UsercenterFeignFallbackFactory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/UsercenterFeignFallbackFactory.java new file mode 100644 index 0000000..613db52 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/UsercenterFeignFallbackFactory.java @@ -0,0 +1,19 @@ +package com.chinaunicom.mall.ebtp.extend.feign.client.factory; + +import cn.hutool.core.exceptions.ExceptionUtil; +import com.chinaunicom.mall.ebtp.extend.feign.client.UsercenterFeignService; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +public class UsercenterFeignFallbackFactory implements FallbackFactory { + + @Override + public UsercenterFeignService create(Throwable throwable) { + UsercenterFeignService back = uid -> null; + log.error(ExceptionUtil.stacktraceToString(throwable)); + return back; + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/fallback/DocumentCenterServiceFallbackImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/fallback/DocumentCenterServiceFallbackImpl.java similarity index 87% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/fallback/DocumentCenterServiceFallbackImpl.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/fallback/DocumentCenterServiceFallbackImpl.java index 79a9a62..4a3ffd2 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/fallback/DocumentCenterServiceFallbackImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/fallback/DocumentCenterServiceFallbackImpl.java @@ -1,12 +1,10 @@ -package com.chinaunicom.mall.ebtp.extend.feign.fallback; +package com.chinaunicom.mall.ebtp.extend.feign.client.fallback; import com.chinaunicom.mall.ebtp.extend.feign.client.DocumentCenterService; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import java.util.List; - /** * 熔断 * diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/factory/FeignConfiguration.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/config/FeignConfiguration.java similarity index 98% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/factory/FeignConfiguration.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/config/FeignConfiguration.java index 712e402..98a75cc 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/factory/FeignConfiguration.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/config/FeignConfiguration.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.feign.factory; +package com.chinaunicom.mall.ebtp.extend.feign.config; import com.alibaba.fastjson.JSONObject; import com.chinaunicom.mall.ebtp.extend.feign.utils.UrlConstants; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizAssessRoom.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BizAssessRoom.java similarity index 98% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizAssessRoom.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BizAssessRoom.java index dcaa94a..43ac113 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizAssessRoom.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BizAssessRoom.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BizSupplierRegister.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BizSupplierRegister.java new file mode 100644 index 0000000..ea9b8f8 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BizSupplierRegister.java @@ -0,0 +1,288 @@ +package com.chinaunicom.mall.ebtp.extend.feign.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.chinaunicom.mall.ebtp.common.config.CustomLocalDateTimeTypeHandler; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Map; + +/** + * 实体类 BizSupplierRegister + * + * @auto.generated + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName(value = "biz_supplier_register", autoResultMap = true) +@ApiModel(value = "BizSupplierRegister对象", description = "供应商报名登记表") +public class BizSupplierRegister extends BaseEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 供应商报名登记表id + */ + @TableId + @ApiModelProperty(value = "供应商报名登记表id") + private String id; + + /** + * 项目表id + */ + @ApiModelProperty(value = "项目表id") + private String projectId; + + /** + * 标包id + */ + @ApiModelProperty(value = "标包id") + private String packageId; + + /** + * 评审室表id + */ + @ApiModelProperty(value = "评审室表id") + private String assessRoomId; + + /** + * 评审室轮次 + */ + @ApiModelProperty(value = "评审室轮次") + private Integer assessRoomSort; + /** + * 机构id + */ + @ApiModelProperty(value = "机构id") + private String companyId; + + /** + * 机构名称 + */ + @ApiModelProperty(value = "机构名称") + private String companyName; + + /** + * 投标人id + */ + @ApiModelProperty(value = "投标人id") + private String bidUserId; + + /** + * 投标人姓名 + */ + @ApiModelProperty(value = "投标人姓名") + private String bidUserName; + + /** + * 联系人id + */ + @ApiModelProperty(value = "联系人id") + private String contactId; + + /** + * 报名状态[1:已报名提交][2:已报名审核][3:已报名被拒绝][4:已退出][5:已中标][6:未中标][9:重评前的数据] + */ + @ApiModelProperty(value = "报名状态[1:已报名提交][2:已报名审核][3:已报名被拒绝][4:已退出][5:已中标][6:未中标][9:重评前的数据]") + private String registerStatus; + + /** + * 报名时间 + */ + @ApiModelProperty(value = "报名时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(typeHandler = CustomLocalDateTimeTypeHandler.class) + private LocalDateTime registerTime; + + + /** + * 下载状态:[0:未下载标书][1:已下载标书][2:已上传投标文件] + */ + @ApiModelProperty(value = "下载状态:[0:未下载标书][1:已下载标书][2:已上传投标文件]") + private String downloadStatus; + + /** + * 下载时间 + */ + @ApiModelProperty(value = "下载时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(typeHandler = CustomLocalDateTimeTypeHandler.class) + private LocalDateTime downloadTime; + + /** + * 下载版本 + */ + @ApiModelProperty(value = "下载版本") + private String downloadVersion; + + /** + * 上传时间 + */ + @ApiModelProperty(value = "上传时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(typeHandler = CustomLocalDateTimeTypeHandler.class) + private LocalDateTime uploadTime; + + /** + * 解密状态:[1:未解密][2:解密成功][3:解密失败] + */ + @ApiModelProperty(value = "解密状态:[1:未解密][2:解密成功][3:解密失败]") + private String decryptStatus; + + /** + * 解密时间 + */ + @ApiModelProperty(value = "解密时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(typeHandler = CustomLocalDateTimeTypeHandler.class) + private LocalDateTime decryptTime; + + /** + * 营业执照id,附件表 + */ + @ApiModelProperty(value = "营业执照id,附件表") + private String businessLicenseId; + + /** + * 法人代表授权书id,附件表 + */ + @ApiModelProperty(value = "法人代表授权书id,附件表") + private String legalPersionAuthorizationId; + + /** + * 退出原因 + */ + @ApiModelProperty(value = "退出原因") + private String quitReason; + + /** + * 购标时间 + */ + @ApiModelProperty(value = "购标时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(typeHandler = CustomLocalDateTimeTypeHandler.class) + private LocalDateTime payTime; + + /** + * 购标状态:[1:未支付][2:已支付][3:支付失败] + */ + @ApiModelProperty(value = "购标状态:[1:未支付][2:已支付][3:支付失败]") + private String payStatus; + + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + private String remark; + + @TableField(fill = FieldFill.INSERT) + @ApiModelProperty(value = "1:预审;2:资审") + private Integer roomType; + + /** + * 报价总金额净价 offer_total_price + */ + @ApiModelProperty(value = "报价总金额净价") + private BigDecimal offerTotalPrice; + + /** + * 报价总金额含税价 offer_total_tax_price + */ + @ApiModelProperty(value = "报价总金额含税价") + private BigDecimal offerTotalTaxPrice; + + /** + * 报价单号 + */ + @ApiModelProperty(value = "报价单号") + private String offerOrderNo; + + @ApiModelProperty(value = "招募状态:0非招募、1招募单轮、2招募多轮") + private String recruitType; + + /** + * 联系人名称 + */ + @TableField(exist = false) + @ApiModelProperty(value = "联系人名称") + private String contactName; + + /** + * 联系电话 + */ + @TableField(exist = false) + @ApiModelProperty(value = "联系电话") + private String contactTelephone; + + /** + * 联系传真 + */ + @TableField(exist = false) + @ApiModelProperty(value = "联系传真") + private String contactFax; + + /** + * 签字确认账号id + */ + @TableField(exist = false) + @ApiModelProperty(value = "签字确认账号id") + private String signUserId; + + /** + * 轮次id + */ + @TableField(exist = false) + @ApiModelProperty(value = "轮次id") + private String reviewTurnId; + + /** + * 轮次序号 + */ + @TableField(exist = false) + @ApiModelProperty(value = "轮次序号") + private String reviewTurnSort; + + /** + * 签字确认账号名称 + */ + @TableField(exist = false) + @ApiModelProperty(value = "签字确认账号名称") + private String signUserName; + + /** + * 签字确认时间 + */ + + @ApiModelProperty(value = "签字确认时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(exist = false, typeHandler = CustomLocalDateTimeTypeHandler.class) + private LocalDateTime signTime; + + /** + * 其他下载状态:[0:未下载标书][1:已下载标书][2:已上传投标文件] + */ + @TableField(exist = false) + @ApiModelProperty(value = "下载状态:[0:未下载标书][1:已下载标书][2:已上传投标文件]") + private String downloadOtherStatus; + + private Map dataMap; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/JuryPrintVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/JuryPrintVO.java similarity index 93% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/JuryPrintVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/JuryPrintVO.java index f25fb0e..a017f92 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/JuryPrintVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/JuryPrintVO.java @@ -1,11 +1,10 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.chinaunicom.mall.ebtp.common.config.CustomLocalDateTimeTypeHandler; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.EqualsAndHashCode; import org.springframework.format.annotation.DateTimeFormat; /** @@ -75,7 +74,7 @@ public class JuryPrintVO { */ @ApiModelProperty(value = "登录时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @TableField(typeHandler = CustomLocalDateTimeTypeHandler.class) private java.time.LocalDateTime loginTime; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/LoginUserDetailVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/LoginUserDetailVO.java new file mode 100644 index 0000000..05306a8 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/LoginUserDetailVO.java @@ -0,0 +1,118 @@ +package com.chinaunicom.mall.ebtp.extend.feign.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * @author 邵智敬 + * @date 2019-04-25 + * @version: V1.0 + * @update [序号][日期YYYY-MM-DD] [更改人姓名][变更描述] + */ + +@Data +@Accessors(chain = true) +@ApiModel(value = "用户名获取用户信息、权限字信息、角色信息") +public class LoginUserDetailVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "租户ID") + private String tenantId; + @ApiModelProperty(value = "部门编码,根据门户现状,位数不规则,部分沿用HR原编码") + private String ou; + @ApiModelProperty(value = "部门名称") + private String ouName; + + @ApiModelProperty(value = "所属省份ou") + private String province; + + @ApiModelProperty(value = "所属城市名称ou") + private String city; + + @ApiModelProperty(value = "所属省份名称") + private String provinceName; + + @ApiModelProperty(value = "所属城市名称") + private String cityName; + + @ApiModelProperty(value = "门户全国目录中的唯一编码 uid") + private String staffId; + + @ApiModelProperty(value = "空即可") + private String staffOrgId; + + @ApiModelProperty(value = "eshop_portaluser的cn") + private String username; + + @ApiModelProperty(value = "用户密码") + private String password; + @ApiModelProperty(value = "公司ID") + private String orgId; + @ApiModelProperty(value = "eshop_portaluser的cn") + private String staffName; + + @ApiModelProperty(value = "租户ID") + private String staffType; + + @ApiModelProperty(value = "租户ID") + private Boolean enabled; + + @ApiModelProperty(value = "权限字列表") + private List authoritiesList; + + @ApiModelProperty(value = "用户") + private Long userid; + + @ApiModelProperty(value = "机构id") + private String partnerId; + + @ApiModelProperty(value = "机构名称") + private String partnerName; + + @ApiModelProperty("是否前台综合员:Y-是, N-否") + private String isSyntheser; + + @ApiModelProperty("是否是资产管理员:Y-是, N-否") + private String isAsseter; + + @ApiModelProperty("是否采购员:Y-是, N-否") + private String isCurement; + + @ApiModelProperty("身份证号吗") + private String identityCard; + + @ApiModelProperty("联系电话") + private String tel; + + @ApiModelProperty("公司名称") + private String orgName; + + @ApiModelProperty("当前及所有上级组织ou集合") + private List ouList; + + @ApiModelProperty("邮箱") + private String cumail; + + @ApiModelProperty("当前用户ou") + private String currentOu; + + @ApiModelProperty("当前用户岗位名称") + private String currentOuDisplay; + + @ApiModelProperty("省份简称") + private String site; + + @ApiModelProperty(value = "HR员工编码(非正式用户无该信息)") + private String employeenumber; + + @ApiModelProperty("手机号") + private String mobile; + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ProjectRecordVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ProjectRecordVO.java similarity index 99% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ProjectRecordVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ProjectRecordVO.java index f4f0496..617613d 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ProjectRecordVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ProjectRecordVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.annotation.JsonSerialize; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ProjectSection.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ProjectSection.java similarity index 99% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ProjectSection.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ProjectSection.java index 6e1e392..b9dae80 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ProjectSection.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ProjectSection.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ProjectSectionVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ProjectSectionVO.java similarity index 97% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ProjectSectionVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ProjectSectionVO.java index 2d41d06..493de6c 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ProjectSectionVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ProjectSectionVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.chinaunicom.mall.ebtp.common.base.entity.BasePageRequest; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/ResultDetailVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ResultDetailVO.java similarity index 98% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/ResultDetailVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ResultDetailVO.java index d7262d7..e61db32 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/ResultDetailVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ResultDetailVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigCategoryDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategoryDTO.java similarity index 85% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigCategoryDTO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategoryDTO.java index de308e9..fe05581 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigCategoryDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategoryDTO.java @@ -1,5 +1,6 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; +package com.chinaunicom.mall.ebtp.extend.feign.entity; +import com.chinaunicom.mall.ebtp.extend.export.bean.ReviewConfigCategory; import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigDetailDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetailDTO.java similarity index 89% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigDetailDTO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetailDTO.java index 733bd8c..e10a6db 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigDetailDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetailDTO.java @@ -1,5 +1,7 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; +package com.chinaunicom.mall.ebtp.extend.feign.entity; +import com.chinaunicom.mall.ebtp.extend.export.bean.ReviewConfigDetail; +import com.chinaunicom.mall.ebtp.extend.export.bean.ReviewConfigStandard; import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalDetailVO; import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalEarlyJudgesSummaryVO; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/Tdoc.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/Tdoc.java new file mode 100644 index 0000000..94bc6ec --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/Tdoc.java @@ -0,0 +1,139 @@ +package com.chinaunicom.mall.ebtp.extend.feign.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.config.CustomLocalDateTimeTypeHandler; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** +* 实体类 Tdoc-目录主表 +* +* @author yss +*/ +@Data +@Accessors(chain = true) +@TableName(value = "biz_resps_tdoc", autoResultMap = true) +@ApiModel(value = "Tdoc对象", description = "目录主表") +public class Tdoc implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId + @ApiModelProperty(value = "") + private String id; + + @ApiModelProperty(value = "临时表id") + private String tempId; + + @ApiModelProperty(value = "项目id") + private String tpId; + + @ApiModelProperty(value = "标段id") + private String sectionId; + + @ApiModelProperty(value = "评审室id") + private String assessRoomId; + + @ApiModelProperty(value = "评审室轮次") + private Integer assessRoomSort; + + @ApiModelProperty(value = "轮次id") + private String turnId; + + @ApiModelProperty(value = "轮次") + private Integer turnSort; + + @ApiModelProperty(value = "报价或其他:0-报价 1-其他 空是全部") + private Integer quoteOrOther; + + @TableField(fill = FieldFill.INSERT) + @ApiModelProperty(value = "评审类型 1-预审 2-后审 ") + private Integer roomType; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "应答开始时间") + private LocalDateTime startDate; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "应答截止时间") + private LocalDateTime endDate; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "解密截止时间") + private LocalDateTime decryptEndDate; + + @ApiModelProperty(value = "结束状态 0-否 1-是 只有谈判室内的有") + private Integer endStatus; + @ApiModelProperty(value = "版本号") + private Integer version; + + @TableField(fill = FieldFill.INSERT) + @ApiModelProperty(value = "创建者") + private String createBy; + + @TableField(fill = FieldFill.INSERT,typeHandler = CustomLocalDateTimeTypeHandler.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建时间") + private LocalDateTime createDate; + + @TableField(fill = FieldFill.UPDATE,typeHandler = CustomLocalDateTimeTypeHandler.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新时间") + private LocalDateTime updateDate; + + /** + * 标段id + */ + @TableField(exist = false) + private List sectionIdList; + /** + * 目录表 + */ + @TableField(exist = false) + private List catalogList; + /** + * 是否重评 false-否,true-是 + */ + @TableField(exist = false) + private Boolean reAssess; + + @ApiModelProperty(value = "文档存储路径") + private String filepath; + + @ApiModelProperty(value = "文档名称") + private String filename; + + @TableField(exist = false) + @ApiModelProperty(value = "投标人id") + private String tendererId; + + @TableField(exist = false) + @ApiModelProperty(value = "投标人id") + private String commpanyId; + @TableField(exist = false) + private List catalogIdList; + + @TableField(exist = false) + private Map key_key; + + @TableField(exist = false) + @ApiModelProperty(value = "解密状态:true-全部已解密,false-仍有未解密,供应商开标页:true-可以解密 false-未设置解密截止时间或已过解密时间") + private boolean decryptStatus; +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/TdocCatalog.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/TdocCatalog.java new file mode 100644 index 0000000..31b7130 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/TdocCatalog.java @@ -0,0 +1,63 @@ +package com.chinaunicom.mall.ebtp.extend.feign.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** +* 实体类 TdocCatalog-目录表 +* +* @author yss +*/ +@Data +@Accessors(chain = true) +@TableName(value = "biz_resps_tdoc_catalog", autoResultMap = true) +public class TdocCatalog implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId + @ApiModelProperty(value = "") + private String id; + + @ApiModelProperty(value = "目录主表id") + private String tdocId; + + @ApiModelProperty(value = "父id") + private String parentId; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "目录类型:0-商务、1-技术、2-服务、3-报价、4-其他、5-引用供应商信息库") + private Integer catalogType; + + @ApiModelProperty(value = "文件类型:0-普通、1-结构化、2-报价一览表") + private Integer structureType; + + @ApiModelProperty(value = "引用的编码") + private String quoteCode; + + @ApiModelProperty(value = "排序") + private Integer sort; + + /** + *树结构使用 + */ + @TableField(exist = false) + private List children; + + @TableField(exist = false) + private String path; + + @ApiModelProperty(value = "评审室id") + @TableField(exist = false) + private String assessRoomId; + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/entity/BizBidClientVersion.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/entity/BizBidClientVersion.java index dd5bcf1..c0187ba 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/entity/BizBidClientVersion.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/entity/BizBidClientVersion.java @@ -3,7 +3,6 @@ package com.chinaunicom.mall.ebtp.extend.templatewarehouse.entity; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; -import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; import com.chinaunicom.mall.ebtp.common.config.CustomLocalDateTimeTypeHandler; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; @@ -26,45 +25,44 @@ import java.time.LocalDateTime; @TableName(value = "biz_bid_client_version", autoResultMap = true) public class BizBidClientVersion implements Serializable { - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @ApiModelProperty(value = "主键") - private String id; + private static final long serialVersionUID = 1L; - /** - * 文档中心-文档ID - */ - @ApiModelProperty(value = "文档中心-文档ID") - private String documentCenterId; + /** + * 主键 + */ + @ApiModelProperty(value = "主键") + private String id; - /** - * ipass客户端版本号 - */ - @ApiModelProperty(value = "ipass客户端版本号") - private String ipassVersion; + /** + * 文档中心-文档ID + */ + @ApiModelProperty(value = "文档中心-文档ID") + private String documentCenterId; - @TableField( - fill = FieldFill.INSERT, - typeHandler = CustomLocalDateTimeTypeHandler.class - ) - @JsonFormat( - pattern = "yyyy-MM-dd HH:mm:ss" - ) - @DateTimeFormat( - pattern = "yyyy-MM-dd HH:mm:ss" - ) - @ApiModelProperty("客户端发布时间") - private LocalDateTime publishDate; + /** + * ipass客户端版本号 + */ + @ApiModelProperty(value = "ipass客户端版本号") + private String ipassVersion; - /** - * ipass客户端版本号 - */ - @ApiModelProperty(value = "备注") - private String remark; + @TableField( + fill = FieldFill.INSERT, + typeHandler = CustomLocalDateTimeTypeHandler.class + ) + @JsonFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @DateTimeFormat( + pattern = "yyyy-MM-dd HH:mm:ss" + ) + @ApiModelProperty("客户端发布时间") + private LocalDateTime publishDate; + /** + * ipass客户端版本号 + */ + @ApiModelProperty(value = "备注") + private String remark; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/sevice/BizBidClientVersionService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/sevice/BizBidClientVersionService.java index 8c09013..ddf7912 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/sevice/BizBidClientVersionService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/sevice/BizBidClientVersionService.java @@ -10,13 +10,14 @@ import java.io.IOException; /** * 对数据表 biz_bid_client_version 操作的 service - * @author Auto create * + * @author Auto create */ -public interface BizBidClientVersionService extends IBaseService{ +public interface BizBidClientVersionService extends IBaseService { /** * 通过版本号获得对应客户端文件id + * * @param version * @return */ diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index 63a3334..4e95ae0 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -163,6 +163,7 @@ mconfig: rsms: biz-service-ebtp-rsms #评审结构化服务 tender: biz-service-ebtp-tender #投标服务 documentcenter: core-service-document-center #文档中心 + usercenter: core-service-usercenter-public #用户中心 document: diff --git a/src/main/resources/application-pro.yml b/src/main/resources/application-pro.yml index 885f90f..9ea52e4 100644 --- a/src/main/resources/application-pro.yml +++ b/src/main/resources/application-pro.yml @@ -166,7 +166,7 @@ mconfig: rsms: biz-service-ebtp-rsms #评审结构化服务 tender: biz-service-ebtp-tender #投标服务 documentcenter: core-service-document-center #文档中心 - + usercenter: core-service-usercenter-public #用户中心 document: clientHttpUrl: http://10.238.25.112:8100/auth/oauth/token?grant_type=client_credentials&client_id=bVS46ElU&client_secret=58ea04ba02475c8da2321cc99849d2a10f15b749 diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index ca20abb..6d6acc0 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -171,7 +171,7 @@ mconfig: rsms: biz-service-ebtp-rsms #评审结构化服务 tender: biz-service-ebtp-tender #投标服务 documentcenter: core-service-document-center #文档中心 - + usercenter: core-service-usercenter-public #用户中心 document: clientHttpUrl: http://10.242.31.158:8100/auth/oauth/token?grant_type=client_credentials&client_id=bVS46ElU&client_secret=58ea04ba02475c8da2321cc99849d2a10f15b749 diff --git a/src/main/resources/application-uat.yml b/src/main/resources/application-uat.yml index ed339c2..ab1948b 100644 --- a/src/main/resources/application-uat.yml +++ b/src/main/resources/application-uat.yml @@ -169,7 +169,7 @@ mconfig: rsms: biz-service-ebtp-rsms #评审结构化服务 tender: biz-service-ebtp-tender #投标服务 documentcenter: core-service-document-center #文档中心 - + usercenter: core-service-usercenter-public #用户中心 document: clientHttpUrl: http://10.242.31.158:8100/auth/oauth/token?grant_type=client_credentials&client_id=bVS46ElU&client_secret=58ea04ba02475c8da2321cc99849d2a10f15b749 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 027b4e3..f2b90d5 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: test \ No newline at end of file + active: uat \ No newline at end of file diff --git a/src/main/resources/model/初步评审.docx b/src/main/resources/model/初步评审.docx new file mode 100644 index 0000000000000000000000000000000000000000..a9dc4466344a4de78cd56539877e08eaa7549f33 GIT binary patch literal 23687 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 PsLwL0x$61JjaUB$X72oK literal 0 HcmV?d00001 diff --git a/src/main/resources/model/开标记录表.docx b/src/main/resources/model/开标记录表.docx index 809e86d92988d740fded1bc5722b6dc6033acacf..28cfcd708d88d12517bafd282dbda8be4c4775c9 100644 GIT binary patch literal 24142 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 literal 18014 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 diff --git a/src/main/resources/model/评标报告.docx b/src/main/resources/model/评标报告.docx index 944df38736bda3ef3fa2190db25fd3457330037a..4013c2bd21ee00061c8cc004c8657b8ba202ffef 100644 GIT binary patch literal 22706 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 EFGbov4FCWD literal 26248 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 From ddd2f1fa803ef0c0690772a0aa5e338f80774523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E5=BA=86=E5=90=89?= <51312040@qq.com> Date: Wed, 28 Apr 2021 09:50:54 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E9=87=8D=E6=9E=84=20=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extend/export/entity/CbpsExportData.java | 31 ++ .../export/entity/RvwFirstExportData.java | 35 -- .../common/ExportCommonFeignService.java | 20 +- .../impl/ExportCommonFeignServiceImpl.java | 47 +- .../service/impl/CbpsExportServiceImpl.java | 308 ++++--------- .../service/impl/DfhzExportServiceImpl.java | 410 +++++++++--------- .../export/service/impl/FirstRvwImpl.java | 113 ----- .../service/impl/ZjgrExportServiceImpl.java | 6 +- .../feign/client/ProjectFeignService.java | 2 +- .../extend/feign/client/RsmsFeignService.java | 81 ++-- .../feign/client/TenderFeignService.java | 2 +- .../client/factory/ExportServiceFallback.java | 75 +++- .../entity}/BidEvalDetailJudgesSummaryVO.java | 2 +- .../entity}/BidEvalDetailSummaryVO.java | 2 +- .../vo => feign/entity}/BidEvalDetailVO.java | 2 +- .../entity}/BidEvalEarlyJudgesSummaryVO.java | 2 +- .../entity}/ReviewConfigCategory.java | 7 +- .../feign/entity/ReviewConfigCategoryDTO.java | 1 - .../entity}/ReviewConfigDetail.java | 2 +- .../feign/entity/ReviewConfigDetailDTO.java | 11 +- .../entity}/ReviewConfigStandard.java | 2 +- .../entity}/SupplierRegisterVO.java | 3 +- src/main/resources/model/初步评审.docx | Bin 23687 -> 0 bytes 23 files changed, 522 insertions(+), 642 deletions(-) create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/CbpsExportData.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/RvwFirstExportData.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/FirstRvwImpl.java rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/vo => feign/entity}/BidEvalDetailJudgesSummaryVO.java (95%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/vo => feign/entity}/BidEvalDetailSummaryVO.java (96%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/vo => feign/entity}/BidEvalDetailVO.java (98%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/vo => feign/entity}/BidEvalEarlyJudgesSummaryVO.java (96%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/bean => feign/entity}/ReviewConfigCategory.java (92%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/bean => feign/entity}/ReviewConfigDetail.java (98%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/bean => feign/entity}/ReviewConfigStandard.java (96%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/vo => feign/entity}/SupplierRegisterVO.java (90%) delete mode 100644 src/main/resources/model/初步评审.docx diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/CbpsExportData.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/CbpsExportData.java new file mode 100644 index 0000000..011eb90 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/CbpsExportData.java @@ -0,0 +1,31 @@ +package com.chinaunicom.mall.ebtp.extend.export.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.ArrayList; +import java.util.List; + +@Data +@Accessors(chain = true) +public class CbpsExportData { + + private String index; + + /** + * 评审项名称 + */ + private String scoreItem; + + /** + * 审查标准 + */ + private String rvwStandard; + + /** + * 得分 + */ + private List scores = new ArrayList<>(); + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/RvwFirstExportData.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/RvwFirstExportData.java deleted file mode 100644 index baf7c35..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/RvwFirstExportData.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.entity; - - -import com.deepoove.poi.expression.Name; -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; -import lombok.experimental.Accessors; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.time.LocalDateTime; - - -/** - * 初步评审导出数据实体 - */ -@Data -@Accessors(chain = true) -public class RvwFirstExportData implements Serializable { - - private static final long serialVersionUID = 1L; - - private Integer index; - - private String title; - - private String projName; - - private String projNum; - - private String date; - - @Name("detail_table") - private ExportTableData tableData; -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/ExportCommonFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/ExportCommonFeignService.java index 7430bf0..479b706 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/ExportCommonFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/ExportCommonFeignService.java @@ -1,6 +1,8 @@ package com.chinaunicom.mall.ebtp.extend.export.service.common; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BidEvalDetailSummaryVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.SupplierRegisterVO; import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; @@ -46,7 +48,7 @@ public interface ExportCommonFeignService { */ List tenderGetSupplierRegisterByRoomId(String roomId); - +// ------------------------------------------------ rsms -------------------------------- /** * 查询初审汇总数据 * @@ -54,7 +56,21 @@ public interface ExportCommonFeignService { * @return */ List rsmsFindScoreEarlySummary(ExportParam param); - + /** + * 评委供应商 + * + * @param param + * @return + */ + List findRegisterAndUser(ExportParam param); + /** + * 打分汇总表 + * + * @param param + * @return + */ + Map> exportScoreSummary(ExportParam param); +// ------------------------------------------------ rsms end -------------------------------- /** * 通过评审室Id查询评委会成员数据及签到数据 diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/impl/ExportCommonFeignServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/impl/ExportCommonFeignServiceImpl.java index 5a590f4..686e160 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/impl/ExportCommonFeignServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/impl/ExportCommonFeignServiceImpl.java @@ -2,7 +2,9 @@ package com.chinaunicom.mall.ebtp.extend.export.service.common.impl; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalDetailDTO; +import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalInfoDTO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BidEvalDetailSummaryVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.SupplierRegisterVO; import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; @@ -100,7 +102,7 @@ public class ExportCommonFeignServiceImpl implements ExportCommonFeignService { return response.getData(); } - +// ------------------------------------------------ rsms -------------------------------- @Autowired private RsmsFeignService rsmsFeignService; @@ -112,16 +114,49 @@ public class ExportCommonFeignServiceImpl implements ExportCommonFeignService { */ @Override public List rsmsFindScoreEarlySummary(ExportParam param) { - BidEvalDetailDTO bidEvalDetailDTO = new BidEvalDetailDTO(); - bidEvalDetailDTO.setReviewTurnId(param.getReviewTurnId()); - bidEvalDetailDTO.setReviewType(param.getReviewType()); - BaseResponse> response = rsmsFeignService.findScoreEarlySummary(bidEvalDetailDTO); + BaseResponse> response = rsmsFeignService.exportEarly(param.getAssessRoomId()); if (response == null || response.getData() == null) { return new ArrayList<>(); } return response.getData(); } + /** + * 评委供应商 + * + * @param param + * @return + */ + @Override + public List findRegisterAndUser(ExportParam param) { + BidEvalInfoDTO bidEvalInfoDTO = new BidEvalInfoDTO(); + bidEvalInfoDTO.setAssessRoomId(param.getAssessRoomId()); + bidEvalInfoDTO.setReviewTurnId(param.getReviewTurnId()); + bidEvalInfoDTO.setReviewType(param.getReviewType()); + //所有评委数据源 + BaseResponse> response = rsmsFeignService.findRegisterAndUser(bidEvalInfoDTO); + if (response == null || response.getData() == null) { + return new ArrayList<>(); + } + return response.getData(); + } + + /** + * 打分汇总表 + * + * @param param + * @return + */ + @Override + public Map> exportScoreSummary(ExportParam param) { + BaseResponse>> response = rsmsFeignService.exportScoreSummary(param.getAssessRoomId()); + if (response == null || response.getData() == null) { + return new HashMap<>(); + } + return response.getData(); + } + + // ------------------------------------------------ rsms end -------------------------------- /** * 通过评审室Id查询评委会成员数据及签到数据 * diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/CbpsExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/CbpsExportServiceImpl.java index 5e7c2f1..a8a8838 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/CbpsExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/CbpsExportServiceImpl.java @@ -1,44 +1,37 @@ package com.chinaunicom.mall.ebtp.extend.export.service.impl; -import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.*; -import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; -import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; +import com.chinaunicom.mall.ebtp.common.poiExport.constant.ExportConstant; +import com.chinaunicom.mall.ebtp.common.poiExport.entity.ExcelTable; +import com.chinaunicom.mall.ebtp.common.poiExport.entity.ExcelTd; +import com.chinaunicom.mall.ebtp.common.poiExport.entity.ExcelTr; +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; +import com.chinaunicom.mall.ebtp.extend.export.entity.CbpsExportData; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; -import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalEarlyJudgesSummaryVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigDetailDTO; +import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; +import com.chinaunicom.mall.ebtp.extend.export.service.templateFile.TemplateFileService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.*; import lombok.SneakyThrows; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.nio.charset.StandardCharsets; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; import java.util.List; import java.util.Map; /** - * 初步评审 + * 初步评审表 + * + * @author fqj */ @Service("cbps") public class CbpsExportServiceImpl implements ExportService { - private final RsmsFeignService rsmsFeignService; - private final ProjectFeignService projectFeignService; - public CbpsExportServiceImpl(ProjectFeignService projectFeignService, RsmsFeignService rsmsFeignService) { - this.projectFeignService = projectFeignService; - this.rsmsFeignService = rsmsFeignService; - } + @Autowired + private ExportCommonFeignService commonFeignService; + /** * 导出 @@ -50,216 +43,105 @@ public class CbpsExportServiceImpl implements ExportService { @SneakyThrows @Override public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { - //查询项目名称 - ProjectSectionVO projectSectionVO = new ProjectSectionVO(); - projectSectionVO.setId(param.getSectionId()); - BaseResponse list = projectFeignService.selectById(projectSectionVO); + //查询包 + ProjectSectionVO section = commonFeignService.projectGetSectionById(param.getSectionId()); + //查询项目 + ProjectRecordVO proj = commonFeignService.projectGetProjById(section.getProjectId()); + + //供应商信息 + List suppliers = commonFeignService.tenderGetSupplierRegisterByRoomId(param.getAssessRoomId()); + + //初审评分信息 + List earlySummary = commonFeignService.rsmsFindScoreEarlySummary(param); - BidEvalInfoDTO bidEvalInfoDTO = new BidEvalInfoDTO(); - bidEvalInfoDTO.setAssessRoomId(param.getAssessRoomId()); - bidEvalInfoDTO.setReviewTurnId(param.getReviewTurnId()); - bidEvalInfoDTO.setReviewType(param.getReviewType()); - //供应商 - List listBaseResponse = rsmsFeignService.findRegisterAndUser(bidEvalInfoDTO).getData(); + ExcelTable table = new ExcelTable("初步评审表"); + table.setFileName("初步评审表"); - //列头 - StringBuffer titles0 = new StringBuffer("序号,评审因素,评审标准"); - //供应商 顺序 - ArrayList strings = new ArrayList<>(); - for (int i = 0; i < listBaseResponse.size(); i++) { - strings.add(listBaseResponse.get(i).getSupplierRegisterId()); - titles0.append("," + listBaseResponse.get(i).getSupplierRegisterName()); + List list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue("初步评审表").setCellStyleKey("export_title_1").setIsRowMerge(true).setRowMergeNum(suppliers.size() + 3)); + table.add(new ExcelTr().setExcelTdList(list)); + + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue("项目名称:" + proj.getProjectName()).setCellStyleKey("export_title_2").setIsRowMerge(true).setRowMergeNum(suppliers.size() + 3)); + table.add(new ExcelTr().setExcelTdList(list)); + + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue("招标编号:" + proj.getProjectBizNum()).setCellStyleKey("export_title_2").setIsRowMerge(true).setRowMergeNum(suppliers.size() + 3)); + table.add(new ExcelTr().setExcelTdList(list)); + + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue("序号")); + list.add(new ExcelTd().setTdValue("评审因素")); + list.add(new ExcelTd().setTdValue("评审标准")); + for (BizSupplierRegister supplier : suppliers) { + list.add(new ExcelTd().setTdValue(supplier.getCompanyName())); } - String titles = titles0.toString(); - //最右侧列值 - Integer index = (titles.split(",").length) - 1; - //自定义序号 - Integer num = 1; + table.add(new ExcelTr().setExcelTdList(list)); - // 创建工作簿 - SXSSFWorkbook wb = new SXSSFWorkbook(); - //表格样式 - CellStyle cellStyle = wb.createCellStyle(); - //水平居中 - cellStyle.setAlignment(HorizontalAlignment.CENTER); - //垂直居中 - cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); - //边框 - cellStyle.setBorderBottom(BorderStyle.THIN); //下边框 - cellStyle.setBorderLeft(BorderStyle.THIN);//左边框 - cellStyle.setBorderTop(BorderStyle.THIN);//上边框 - cellStyle.setBorderRight(BorderStyle.THIN);//右边框 + List datas = new ArrayList<>(); + //所有评审项 + List detailList = new ArrayList<>(); + earlySummary.stream().map(ReviewConfigCategoryDTO::getDetailList).forEach(detailList::addAll); - BidEvalDetailDTO bidEvalDetailDTO = new BidEvalDetailDTO(); - bidEvalDetailDTO.setReviewTurnId(param.getReviewTurnId()); - bidEvalDetailDTO.setReviewType(param.getReviewType()); - BaseResponse> scoreRecord = rsmsFeignService.findScoreEarlySummary(bidEvalDetailDTO); - List dataList = scoreRecord.getData(); - - // 创建表格 - Sheet sheet = wb.createSheet("评审汇总"); - sheet.createFreezePane(1, 1); - int rowIndex = 0; - int colIndex = 0; - // 1行 - CellRangeAddress region1 = new CellRangeAddress(0, 0, 0, index); - sheet.addMergedRegion(region1); - Row title1 = sheet.createRow(rowIndex++); - Cell titleCell1 = title1.createCell(0); - title1.setHeightInPoints(35); - titleCell1.setCellValue("初步评审表"); - titleCell1.setCellStyle(cellStyle); - // 2行 - CellRangeAddress region2 = new CellRangeAddress(1, 1, 0, index); - sheet.addMergedRegion(region2); - Row title2 = sheet.createRow(rowIndex++); - Cell titleCell2 = title2.createCell(0); - titleCell2.setCellValue("项目名称 : " + list.getData().getProjectName()); - //3行 - CellRangeAddress region3 = new CellRangeAddress(2, 2, 0, index); - sheet.addMergedRegion(region3); - Row title3 = sheet.createRow(rowIndex++); - Cell titleCell3 = title3.createCell(0); - titleCell3.setCellValue("招标编号 : " + list.getData().getBidSectBizNum()); - //4行 列头 - Row titleRow5 = sheet.createRow(rowIndex++); - // 设置高度为30 - titleRow5.setHeightInPoints(30); - for (String title : titles.split(",")) { - sheet.setColumnWidth(colIndex, 17 * 256); - Cell titleCell = titleRow5.createCell(colIndex++); - titleCell.setCellValue(title); - //设置样式 - titleCell.setCellStyle(cellStyle); - } - // 5行开始渲染 - for (ReviewConfigCategoryDTO object : dataList) { - List detailList = object.getDetailList(); - String name = object.getName(); - for (ReviewConfigDetailDTO reviewConfigDetailDTO : detailList) { - colIndex = 0; - Row titleRowN = sheet.createRow(rowIndex++); - Cell cell = titleRowN.createCell(colIndex++); - cell.setCellStyle(cellStyle); - //供应商结论是否合格 - Map scoreMap = reviewConfigDetailDTO.getEarlyMap(); - if (StringUtils.isEmpty(name)) { - cell.setCellValue("结论"); - - Cell cell1 = titleRowN.createCell(colIndex++); - cell1.setCellValue("是否通过初审检查"); - cell1.setCellStyle(cellStyle); - //占位列 - Cell cell2 = titleRowN.createCell(colIndex++); - cell2.setCellValue(""); - cell2.setCellStyle(cellStyle); - - if (scoreMap != null) { - for (String string : strings) { - Boolean actualValue; - String all = null; - if (scoreMap.get(string) != null) { - actualValue = scoreMap.get(string).getJudgesResult(); - if (actualValue != null) { - if (actualValue) { - all = "合格"; - } else { - all = "不合格"; - } - } else { - all = "空"; - } - } - Cell cell4 = titleRowN.createCell(colIndex++); - cell4.setCellStyle(cellStyle); - cell4.setCellValue(all); - } - } else { - for (int j = 0; j < strings.size(); j++) { - Cell cell4 = titleRowN.createCell(colIndex++); - cell4.setCellStyle(cellStyle); + for (int i = 0; i < detailList.size(); i++) { + ReviewConfigDetailDTO dto = detailList.get(i); + CbpsExportData data = new CbpsExportData(); + data.setIndex(String.valueOf(i)) + .setScoreItem(dto.getScoreItem()) + .setRvwStandard(dto.getRvwStandard()); + //打分数据 + Map earlyMap = dto.getEarlyMap(); + if (earlyMap != null && earlyMap.size() > 0) { + if (i != detailList.size() - 1) { + for (BizSupplierRegister supplier : suppliers) { + if (earlyMap.containsKey(supplier.getId())) { + BidEvalEarlyJudgesSummaryVO summaryVO = earlyMap.get(supplier.getId()); + String sbl = (summaryVO.getJudgesResult() ? "✔" : "✖") + + "(" + summaryVO.getQualified() + "✔" + + summaryVO.getUnqualified() + "✖" + ")"; + data.getScores().add(sbl); + } else { + data.getScores().add("-"); } } } else { - cell.setCellValue(num++); - //评审因素 - Cell cell1 = titleRowN.createCell(colIndex++); - cell1.setCellValue(reviewConfigDetailDTO.getScoreItem()); - cell1.setCellStyle(cellStyle); - //评审标准 - Cell cell2 = titleRowN.createCell(colIndex++); - cell2.setCellValue(reviewConfigDetailDTO.getRvwStandard()); - cell2.setCellStyle(cellStyle); - - if (scoreMap != null) { - for (String string : strings) { - Boolean actualValue; - String all = null; - String qua = null; - String unqua = null; - if (scoreMap.get(string) != null) { - actualValue = scoreMap.get(string).getJudgesResult(); - if (actualValue != null) { - qua = scoreMap.get(string).getQualified(); - unqua = scoreMap.get(string).getUnqualified(); - if (actualValue) { - all = "√(√" + qua + ",×" + unqua + ")"; - } else { - all = "×(√" + qua + ",×" + unqua + ")"; - } - } else { - all = "空"; - } - } - Cell cell4 = titleRowN.createCell(colIndex++); - cell4.setCellStyle(cellStyle); - cell4.setCellValue(all); - } - } else { - for (int j = 0; j < strings.size(); j++) { - Cell cell4 = titleRowN.createCell(colIndex++); - cell4.setCellStyle(cellStyle); + //汇总数据 + for (BizSupplierRegister supplier : suppliers) { + if (earlyMap.containsKey(supplier.getId())) { + BidEvalEarlyJudgesSummaryVO summaryVO = earlyMap.get(supplier.getId()); + data.setIndex("结论") + .setScoreItem("是否通过初步评审") + .setRvwStandard("") + .getScores().add(summaryVO.getJudgesResult()? "合格":"不合格"); + } else { + data.getScores().add("-"); } } } } - - //合并结论 - if (StringUtils.isEmpty(name)) { - sheet.addMergedRegion(new CellRangeAddress(rowIndex - 1, rowIndex - 1, 1, 2)); - } + datas.add(data); } - //倒第2行 - Row title5 = sheet.createRow(rowIndex++); - Cell titleCell5 = title5.createCell(0); - titleCell5.setCellValue("全体评委签字:"); - CellRangeAddress region5 = new CellRangeAddress(rowIndex - 1, rowIndex - 1, 0, index); - sheet.addMergedRegion(region5); - //最后一行 - CellStyle cellStyle1 = wb.createCellStyle(); - cellStyle1.setVerticalAlignment(VerticalAlignment.CENTER); - cellStyle1.setAlignment(HorizontalAlignment.RIGHT); - Row title6 = sheet.createRow(rowIndex++); - Cell titleCell6 = title6.createCell(0); - Date date = new Date(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy 年 MM 月 dd 日 "); - titleCell6.setCellValue("日期: " + sdf.format(date)); - titleCell6.setCellStyle(cellStyle1); - CellRangeAddress region6 = new CellRangeAddress(rowIndex - 1, rowIndex - 1, 0, index); - sheet.addMergedRegion(region6); + for (CbpsExportData data : datas) { + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue(data.getIndex())); + list.add(new ExcelTd().setTdValue(data.getScoreItem())); + list.add(new ExcelTd().setTdValue(data.getRvwStandard())); + for (String score : data.getScores()) { + list.add(new ExcelTd().setTdValue(score)); + } + table.add(new ExcelTr().setExcelTdList(list)); + } - String filename = "初步评审表.xlsx"; - filename = filename.substring(0, filename.lastIndexOf('.')) + filename.substring(filename.lastIndexOf('.')); - response.reset(); - response.setContentType("application/octet-stream;charset=utf-8"); - response.setHeader("Content-Disposition", "attachment;filename=".concat(new String(filename.getBytes(StandardCharsets.UTF_8), "ISO8859-1"))); - wb.write(response.getOutputStream()); + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue("全体评委签字:").setCellStyleKey("export_title_2").setIsRowMerge(true).setRowMergeNum(suppliers.size() + 3)); + table.add(new ExcelTr().setExcelTdList(list)); + ExportConstant.exportFile(response, ExportConstant.generateExcelByTable(table)); } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/DfhzExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/DfhzExportServiceImpl.java index 2e03fee..2898ebd 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/DfhzExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/DfhzExportServiceImpl.java @@ -1,15 +1,13 @@ package com.chinaunicom.mall.ebtp.extend.export.service.impl; -import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.*; +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; +import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; +import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; +import com.chinaunicom.mall.ebtp.extend.export.vo.MemberVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.SupplierRegisterVO; import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; -import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; -import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalDetailJudgesSummaryVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalDetailSummaryVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.MemberVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.*; import lombok.SneakyThrows; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; @@ -17,6 +15,7 @@ import org.apache.poi.xssf.streaming.SXSSFCell; import org.apache.poi.xssf.streaming.SXSSFRow; import org.apache.poi.xssf.streaming.SXSSFSheet; import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; @@ -44,6 +43,9 @@ public class DfhzExportServiceImpl implements ExportService { } + @Autowired + private ExportCommonFeignService commonFeignService; + /** * 导出 * @@ -54,233 +56,225 @@ public class DfhzExportServiceImpl implements ExportService { @SneakyThrows @Override public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { - BidEvalInfoDTO bidEvalInfoDTO = new BidEvalInfoDTO(); - bidEvalInfoDTO.setAssessRoomId(param.getAssessRoomId()); - bidEvalInfoDTO.setReviewTurnId(param.getReviewTurnId()); - bidEvalInfoDTO.setReviewType(param.getReviewType()); - //所有评委数据源 - BaseResponse> judges = rsmsFeignService.findRegisterAndUser(bidEvalInfoDTO); - BidEvalDetailDTO bidEvalDetailDTO = new BidEvalDetailDTO(); - bidEvalDetailDTO.setAssessRoomId(param.getAssessRoomId()); - bidEvalDetailDTO.setReviewTurnId(param.getReviewTurnId()); - bidEvalDetailDTO.setReviewType(param.getReviewType()); + //查询包 + ProjectSectionVO section = commonFeignService.projectGetSectionById(param.getSectionId()); + //查询项目 + ProjectRecordVO proj = commonFeignService.projectGetProjById(section.getProjectId()); + + //供应商信息 + List suppliers = commonFeignService.tenderGetSupplierRegisterByRoomId(param.getAssessRoomId()); + + //评委 + List registerVOList = commonFeignService.findRegisterAndUser(param); + //所有类型打分数据源 - BaseResponse>> list = rsmsFeignService.findCategoryResultSummary(bidEvalDetailDTO); - if (list != null && judges != null) { - //所有供应商 - List registerVOList = judges.getData(); + Map> detailList = commonFeignService.exportScoreSummary(param); - //打分数据 - Map> detailList = list.getData(); + //所有评委 + List memberAll = registerVOList.stream().findFirst().get().getMembers(); - //所有评委 - List memberAll = registerVOList.stream().findFirst().get().getMembers(); - // 创建工作簿 - SXSSFWorkbook wb = new SXSSFWorkbook(); - //表格样式 - CellStyle cellStyle = wb.createCellStyle(); - //水平居中 - cellStyle.setAlignment(HorizontalAlignment.CENTER); - //垂直居中 - cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); - //边框 - cellStyle.setBorderBottom(BorderStyle.THIN); //下边框 - cellStyle.setBorderLeft(BorderStyle.THIN);//左边框 - cellStyle.setBorderTop(BorderStyle.THIN);//上边框 - cellStyle.setBorderRight(BorderStyle.THIN);//右边框 + // 创建工作簿 + SXSSFWorkbook wb = new SXSSFWorkbook(); + //表格样式 + CellStyle cellStyle = wb.createCellStyle(); + //水平居中 + cellStyle.setAlignment(HorizontalAlignment.CENTER); + //垂直居中 + cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + //边框 + cellStyle.setBorderBottom(BorderStyle.THIN); //下边框 + cellStyle.setBorderLeft(BorderStyle.THIN);//左边框 + cellStyle.setBorderTop(BorderStyle.THIN);//上边框 + cellStyle.setBorderRight(BorderStyle.THIN);//右边框 - SXSSFSheet sheet = wb.createSheet(); - int rowIndex = 0; - //头 - SXSSFRow titleRow = createRow(sheet, rowIndex++); - Cell titleCell1 = titleRow.createCell(0); - titleRow.setHeightInPoints(35); - titleCell1.setCellValue("打分汇总表"); - //项目和招标名称数据 - ProjectSectionVO projectSectionVO = new ProjectSectionVO(); - projectSectionVO.setId(param.getSectionId()); - ProjectSectionVO proj = projectFeignService.selectById(projectSectionVO).getData(); - //项目名称 - SXSSFRow projectNameRow = sheet.createRow(rowIndex++); - SXSSFCell projectNameCell0 = projectNameRow.createCell(0); - projectNameCell0.setCellValue("项目名称:"); - SXSSFCell projectNameCell1 = projectNameRow.createCell(1); - projectNameCell1.setCellValue(proj.getProjectName()); - //招标编号 - SXSSFRow projectNumRow = sheet.createRow(rowIndex++); - SXSSFCell projectNumCell0 = projectNumRow.createCell(0); - projectNumCell0.setCellValue("项目编号:"); - SXSSFCell projectNumCell1 = projectNumRow.createCell(1); - projectNumCell1.setCellValue(proj.getBidSectBizNum()); - //列头 - List titles0 = new ArrayList<>(); - titles0.add("投标人名称"); - titles0.add("投标序号"); - //评委专家信息添加到列头 根据参加打分专家的id到所有专家列表中查询名字 - memberAll.forEach(x -> titles0.add(x.getName())); - //添加最后一列 - titles0.add("平均分"); - //商务 技术 服务 - for (int i = 0; i < 3; i++) { - List detailScore = new ArrayList<>(); - if (i == 0) { - if (detailList.containsKey("1")) { - detailScore = detailList.get("1"); - } - } else if (i == 1) { - if (detailList.containsKey("2")) { - detailScore = detailList.get("2"); - } - } else { - if (detailList.containsKey("5")) { - detailScore = detailList.get("5"); - } - } + SXSSFSheet sheet = wb.createSheet(); + int rowIndex = 0; + //头 + SXSSFRow titleRow = createRow(sheet, rowIndex++); + Cell titleCell1 = titleRow.createCell(0); + titleRow.setHeightInPoints(35); + titleCell1.setCellValue("打分汇总表"); - this.createRow(sheet, rowIndex++); - SXSSFRow row = this.createRow(sheet, rowIndex++); - if (i == 0) { - SXSSFCell cell = row.createCell(0); - cell.setCellValue("商务分数"); - } else if (i == 1) { - SXSSFCell cell = row.createCell(0); - cell.setCellValue("技术分数"); - } else { - SXSSFCell cell = row.createCell(0); - cell.setCellValue("服务分数"); - } - - - row = sheet.createRow(rowIndex++); - int cellIndex = 0; - for (String tit : titles0) { - this.createCell(row, cellIndex++, cellStyle, tit); - } - int index = 1; - - for (SupplierRegisterVO vo : registerVOList) { - cellIndex = 0; - row = sheet.createRow(rowIndex++); - this.createCell(row, cellIndex++, cellStyle, vo.getSupplierRegisterName()); - this.createCell(row, cellIndex++, cellStyle, String.valueOf(index++)); - - if (detailScore.isEmpty()) { - for (MemberVO memberVO : memberAll) { - this.createCell(row, cellIndex++, cellStyle, "-"); - - } - this.createCell(row, cellIndex, cellStyle, "-"); - - } else { - BidEvalDetailSummaryVO detailSummary = detailScore.stream().filter(f -> f.getSupplierRegisterId().equals(vo.getSupplierRegisterId())).findFirst().get(); - Map memberScoreMap = detailSummary.getScoreMap(); - for (MemberVO memberVO : memberAll) { - BigDecimal score = memberScoreMap.get(memberVO.getUserId()).getScore(); - this.createCell(row, cellIndex++, cellStyle, score == null ? "" : String.valueOf(score)); - } - this.createCell(row, cellIndex, cellStyle, detailSummary.getFinalScore() == null ? "" : String.valueOf(detailSummary.getFinalScore())); - } - } - } - - //报价 + //项目名称 + SXSSFRow projectNameRow = sheet.createRow(rowIndex++); + SXSSFCell projectNameCell0 = projectNameRow.createCell(0); + projectNameCell0.setCellValue("项目名称:"); + SXSSFCell projectNameCell1 = projectNameRow.createCell(1); + projectNameCell1.setCellValue(proj.getProjectName()); + //招标编号 + SXSSFRow projectNumRow = sheet.createRow(rowIndex++); + SXSSFCell projectNumCell0 = projectNumRow.createCell(0); + projectNumCell0.setCellValue("项目编号:"); + SXSSFCell projectNumCell1 = projectNumRow.createCell(1); + projectNumCell1.setCellValue(proj.getProjectBizNum()); + //列头 + List titles0 = new ArrayList<>(); + titles0.add("投标人名称"); + titles0.add("投标序号"); + //评委专家信息添加到列头 根据参加打分专家的id到所有专家列表中查询名字 + memberAll.forEach(x -> titles0.add(x.getName())); + //添加最后一列 + titles0.add("平均分"); + //商务 技术 服务 + for (int i = 0; i < 3; i++) { List detailScore = new ArrayList<>(); - - if (detailList.containsKey("0")) { - detailScore = detailList.get("0"); + if (i == 0) { + if (detailList.containsKey("1")) { + detailScore = detailList.get("1"); + } + } else if (i == 1) { + if (detailList.containsKey("2")) { + detailScore = detailList.get("2"); + } + } else { + if (detailList.containsKey("5")) { + detailScore = detailList.get("5"); + } } - sheet.createRow(rowIndex++); - SXSSFRow row = sheet.createRow(rowIndex++); - SXSSFCell c = row.createCell(0); - c.setCellValue("价格分数"); - row = this.createRow(sheet, rowIndex++); + this.createRow(sheet, rowIndex++); + SXSSFRow row = this.createRow(sheet, rowIndex++); + if (i == 0) { + SXSSFCell cell = row.createCell(0); + cell.setCellValue("商务分数"); + } else if (i == 1) { + SXSSFCell cell = row.createCell(0); + cell.setCellValue("技术分数"); + } else { + SXSSFCell cell = row.createCell(0); + cell.setCellValue("服务分数"); + } - this.createCell(row, 0, cellStyle, "投标人名称"); - this.createCell(row, 1, cellStyle, "投标序号"); - this.createCell(row, 2, cellStyle, "价格得分"); + row = sheet.createRow(rowIndex++); + int cellIndex = 0; + for (String tit : titles0) { + this.createCell(row, cellIndex++, cellStyle, tit); + } int index = 1; + for (SupplierRegisterVO vo : registerVOList) { - int cellIndex = 0; + cellIndex = 0; row = sheet.createRow(rowIndex++); this.createCell(row, cellIndex++, cellStyle, vo.getSupplierRegisterName()); this.createCell(row, cellIndex++, cellStyle, String.valueOf(index++)); if (detailScore.isEmpty()) { - this.createCell(row, cellIndex++, cellStyle, "-"); + for (MemberVO memberVO : memberAll) { + this.createCell(row, cellIndex++, cellStyle, "-"); + + } + this.createCell(row, cellIndex, cellStyle, "-"); } else { BidEvalDetailSummaryVO detailSummary = detailScore.stream().filter(f -> f.getSupplierRegisterId().equals(vo.getSupplierRegisterId())).findFirst().get(); Map memberScoreMap = detailSummary.getScoreMap(); for (MemberVO memberVO : memberAll) { - if (memberScoreMap.containsKey(memberVO.getUserId())) { - BigDecimal score = memberScoreMap.get(memberVO.getUserId()).getScore(); - this.createCell(row, cellIndex++, cellStyle, score == null ? "" : String.valueOf(score)); - } + BigDecimal score = memberScoreMap.get(memberVO.getUserId()).getScore(); + this.createCell(row, cellIndex++, cellStyle, score == null ? "" : String.valueOf(score)); + } + this.createCell(row, cellIndex, cellStyle, detailSummary.getFinalScore() == null ? "" : String.valueOf(detailSummary.getFinalScore())); + } + } + } + + //报价 + List detailScore = new ArrayList<>(); + + if (detailList.containsKey("0")) { + detailScore = detailList.get("0"); + } + sheet.createRow(rowIndex++); + SXSSFRow row = sheet.createRow(rowIndex++); + SXSSFCell c = row.createCell(0); + c.setCellValue("价格分数"); + + row = this.createRow(sheet, rowIndex++); + + this.createCell(row, 0, cellStyle, "投标人名称"); + this.createCell(row, 1, cellStyle, "投标序号"); + this.createCell(row, 2, cellStyle, "价格得分"); + + int index = 1; + for (SupplierRegisterVO vo : registerVOList) { + int cellIndex = 0; + row = sheet.createRow(rowIndex++); + this.createCell(row, cellIndex++, cellStyle, vo.getSupplierRegisterName()); + this.createCell(row, cellIndex++, cellStyle, String.valueOf(index++)); + + if (detailScore.isEmpty()) { + this.createCell(row, cellIndex++, cellStyle, "-"); + + } else { + BidEvalDetailSummaryVO detailSummary = detailScore.stream().filter(f -> f.getSupplierRegisterId().equals(vo.getSupplierRegisterId())).findFirst().get(); + Map memberScoreMap = detailSummary.getScoreMap(); + for (MemberVO memberVO : memberAll) { + if (memberScoreMap.containsKey(memberVO.getUserId())) { + BigDecimal score = memberScoreMap.get(memberVO.getUserId()).getScore(); + this.createCell(row, cellIndex++, cellStyle, score == null ? "" : String.valueOf(score)); } } } - - //汇总 - sheet.createRow(rowIndex++); - row = sheet.createRow(rowIndex++); - c = row.createCell(0); - c.setCellValue("评分汇总表"); - - row = sheet.createRow(rowIndex++); - this.createCell(row, 0, cellStyle, "投标人名称"); - this.createCell(row, 1, cellStyle, "投标序号"); - this.createCell(row, 2, cellStyle, "商务得分"); - this.createCell(row, 3, cellStyle, "技术得分"); - this.createCell(row, 4, cellStyle, "服务得分"); - this.createCell(row, 5, cellStyle, "价格得分"); - this.createCell(row, 6, cellStyle, "综合得分"); - - index = 1; - for (SupplierRegisterVO vo : registerVOList) { - int cellIndex = 0; - row = sheet.createRow(rowIndex++); - this.createCell(row, cellIndex++, cellStyle, vo.getSupplierRegisterName()); - this.createCell(row, cellIndex++, cellStyle, String.valueOf(index++)); - - BigDecimal avgBd = - //商务 - scoreSummaryCell(row, cellIndex++, cellStyle, "1", detailList, vo.getSupplierRegisterId()) - //技术 - .add(scoreSummaryCell(row, cellIndex++, cellStyle, "2", detailList, vo.getSupplierRegisterId())) - //服务 - .add(scoreSummaryCell(row, cellIndex++, cellStyle, "5", detailList, vo.getSupplierRegisterId())) - //报价 - .add(scoreSummaryCell(row, cellIndex++, cellStyle, "0", detailList, vo.getSupplierRegisterId())); - this.createCell(row, cellIndex, cellStyle, String.valueOf(avgBd)); - } - - this.createRow(sheet, rowIndex++); - row = this.createRow(sheet, rowIndex++); - c = row.createCell(0); - c.setCellValue("全体评委签名:"); - - - this.createRow(sheet, rowIndex++); - row = this.createRow(sheet, rowIndex); - c = row.createCell(titles0.size() - 3); - c.setCellValue("日期:"); - c = row.createCell(titles0.size() - 2); - c.setCellValue(new SimpleDateFormat("yyyy年MM月dd日").format(new Date())); - - //合并表头 - CellRangeAddress region = new CellRangeAddress(0, 0, 0, titles0.size() - 1); - sheet.addMergedRegion(region); - - String filename = "打分汇总表.xlsx"; - filename = filename.substring(0, filename.lastIndexOf('.')) + filename.substring(filename.lastIndexOf('.')); - response.reset(); - response.setContentType("application/octet-stream;charset=utf-8"); - response.setHeader("Content-Disposition", "attachment;filename=".concat(new String(filename.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1))); - wb.write(response.getOutputStream()); } + + //汇总 + sheet.createRow(rowIndex++); + row = sheet.createRow(rowIndex++); + c = row.createCell(0); + c.setCellValue("评分汇总表"); + + row = sheet.createRow(rowIndex++); + this.createCell(row, 0, cellStyle, "投标人名称"); + this.createCell(row, 1, cellStyle, "投标序号"); + this.createCell(row, 2, cellStyle, "商务得分"); + this.createCell(row, 3, cellStyle, "技术得分"); + this.createCell(row, 4, cellStyle, "服务得分"); + this.createCell(row, 5, cellStyle, "价格得分"); + this.createCell(row, 6, cellStyle, "综合得分"); + + index = 1; + for (SupplierRegisterVO vo : registerVOList) { + int cellIndex = 0; + row = sheet.createRow(rowIndex++); + this.createCell(row, cellIndex++, cellStyle, vo.getSupplierRegisterName()); + this.createCell(row, cellIndex++, cellStyle, String.valueOf(index++)); + + BigDecimal avgBd = + //商务 + scoreSummaryCell(row, cellIndex++, cellStyle, "1", detailList, vo.getSupplierRegisterId()) + //技术 + .add(scoreSummaryCell(row, cellIndex++, cellStyle, "2", detailList, vo.getSupplierRegisterId())) + //服务 + .add(scoreSummaryCell(row, cellIndex++, cellStyle, "5", detailList, vo.getSupplierRegisterId())) + //报价 + .add(scoreSummaryCell(row, cellIndex++, cellStyle, "0", detailList, vo.getSupplierRegisterId())); + this.createCell(row, cellIndex, cellStyle, String.valueOf(avgBd)); + } + + this.createRow(sheet, rowIndex++); + row = this.createRow(sheet, rowIndex++); + c = row.createCell(0); + c.setCellValue("全体评委签名:"); + + + this.createRow(sheet, rowIndex++); + row = this.createRow(sheet, rowIndex); + c = row.createCell(titles0.size() - 3); + c.setCellValue("日期:"); + c = row.createCell(titles0.size() - 2); + c.setCellValue(new SimpleDateFormat("yyyy年MM月dd日").format(new Date())); + + //合并表头 + CellRangeAddress region = new CellRangeAddress(0, 0, 0, titles0.size() - 1); + sheet.addMergedRegion(region); + + String filename = "打分汇总表.xlsx"; + filename = filename.substring(0, filename.lastIndexOf('.')) + filename.substring(filename.lastIndexOf('.')); + response.reset(); + response.setContentType("application/octet-stream;charset=utf-8"); + response.setHeader("Content-Disposition", "attachment;filename=".concat(new String(filename.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1))); + wb.write(response.getOutputStream()); } private SXSSFRow createRow(SXSSFSheet sheet, int rowIndex) { diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/FirstRvwImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/FirstRvwImpl.java deleted file mode 100644 index d654cf7..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/FirstRvwImpl.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.service.impl; - -import cn.hutool.core.date.DateUtil; -import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectRecordVO; -import com.chinaunicom.mall.ebtp.extend.export.entity.ExportTableData; -import com.chinaunicom.mall.ebtp.extend.export.entity.RvwFirstExportData; -import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; -import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; -import com.chinaunicom.mall.ebtp.extend.export.service.policy.DetailTablePolicy; -import com.chinaunicom.mall.ebtp.extend.export.service.templateFile.TemplateFileService; -import com.chinaunicom.mall.ebtp.extend.feign.entity.BizSupplierRegister; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; -import com.deepoove.poi.XWPFTemplate; -import com.deepoove.poi.config.Configure; -import com.deepoove.poi.data.*; -import lombok.SneakyThrows; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.nio.charset.StandardCharsets; -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; - - -/** - * 初步评审表 - * - * @author fqj - */ -@Service("firstRvw") -public class FirstRvwImpl implements ExportService { - - private static final String DATE_FORMATTER = "yyyy年MM月dd日"; - - @Autowired - private ExportCommonFeignService commonFeignService; - - @Autowired - private TemplateFileService templateFileService; - - - /** - * 导出 - * - * @param param - * @param request - * @param response - */ - @SneakyThrows - @Override - public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { - //查询包 - ProjectSectionVO section = commonFeignService.projectGetSectionById(param.getSectionId()); - //查询项目 - ProjectRecordVO proj = commonFeignService.projectGetProjById(section.getProjectId()); - - //供应商信息 - List suppliers = commonFeignService.tenderGetSupplierRegisterByRoomId(param.getAssessRoomId()); - - //初审评分信息 - List earlySummary = commonFeignService.rsmsFindScoreEarlySummary(param); - - RvwFirstExportData data = new RvwFirstExportData(); - data.setProjName(proj.getProjectName()) - .setProjNum(proj.getProjectBizNum()); - - - ExportTableData tableData = new ExportTableData(); - //供应商 - List cells = new ArrayList<>(); - for (BizSupplierRegister supplier : suppliers) { - cells.add(Cells.of(supplier.getCompanyName()).center().create()); - } - - //评分项 - List rows = new ArrayList<>(); - int i = 1; - for (ReviewConfigCategoryDTO dto : earlySummary) { - RowRenderData e = Rows.of(String.valueOf(i++), dto.getCategory(), dto.getConfigId()).center().create(); - e.addCell(Cells.of("1").create()); - e.addCell(Cells.of("2").create()); - e.addCell(Cells.of("3").create()); - rows.add(e); - } - RowRenderData e = Rows.of("结论", "是否通过初步评审", "").center().create(); - for (BizSupplierRegister supplier : suppliers) { - e.addCell(Cells.of("").center().create()); - } - - -//.setCellMerge(MergeCellRule.builder().map(MergeCellRule.Grid.of(1, 3), MergeCellRule.Grid.of(1, 5)).build()) - data.setTableData(tableData.setCells(cells).setRows(rows)) - .setDate(DateUtil.format(LocalDateTime.now(),DATE_FORMATTER)); - - - //获取模板 -// InputStream file = templateFileService.getExportTemplet("firstRvw"); - File file = getExportTemplet("初步评审.docx"); - Configure config = Configure.builder().bind("detail_table", new DetailTablePolicy()).build(); - XWPFTemplate template = XWPFTemplate.compile(file, config).render(data); - - String fileName = new String("初步评审表.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); - - this.write(template, fileName, response); - - } -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java index f1bebb6..45972ad 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java @@ -5,9 +5,9 @@ import com.chinaunicom.mall.ebtp.extend.export.bean.*; import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; -import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalDetailVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BidEvalDetailVO; import com.chinaunicom.mall.ebtp.extend.export.vo.MemberVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.SupplierRegisterVO; import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigDetailDTO; @@ -79,7 +79,7 @@ public class ZjgrExportServiceImpl implements ExportService { } String titles = titles0.toString(); //最右侧列值 - Integer index = (titles.split(",").length) - 1; + int index = (titles.split(",").length) - 1; // 创建工作簿 diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProjectFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProjectFeignService.java index b0d02ff..bc27036 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProjectFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProjectFeignService.java @@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestBody; /** * 调用 PROJECT_SERVICE */ -@FeignClient(value = "${mconfig.feign.name.project}",fallbackFactory = ProjectFeignFallbackFactory.class) +@FeignClient(value = "${mconfig.feign.name.project}",fallbackFactory = ProjectFeignFallbackFactory.class,url = "http://10.242.31.158:8806/biz-service-ebtp-project/") public interface ProjectFeignService { /** diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java index 0f78fe6..6eac2a1 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java @@ -1,9 +1,14 @@ package com.chinaunicom.mall.ebtp.extend.feign.client; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.*; +import com.chinaunicom.mall.ebtp.extend.export.bean.ArchiveFileReturnVO; +import com.chinaunicom.mall.ebtp.extend.export.bean.ArchiveLink; +import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalDetailDTO; +import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalInfoDTO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BidEvalDetailSummaryVO; +import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterPriceScoreVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.SupplierRegisterVO; import com.chinaunicom.mall.ebtp.extend.feign.client.factory.ExportServiceFallback; -import com.chinaunicom.mall.ebtp.extend.export.vo.*; import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; import com.chinaunicom.mall.ebtp.extend.feign.entity.ResultDetailVO; import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; @@ -19,7 +24,7 @@ import java.util.Map; /** * 调用 RSMS_SERVICE */ -@FeignClient(value = "${mconfig.feign.name.rsms}", fallbackFactory = ExportServiceFallback.class) +@FeignClient(value = "${mconfig.feign.name.rsms}", fallbackFactory = ExportServiceFallback.class, url = "http://127.0.0.1:10087/") public interface RsmsFeignService { /** * 不同供应商的打分 @@ -30,26 +35,6 @@ public interface RsmsFeignService { @PostMapping("/v1/bid/eval/record/findScoreRecord") BaseResponse> findScoreRecord(@RequestBody BidEvalDetailDTO bidEvalDetailDTO); - - /** - * 评委供应商 - * - * @param bidEvalInfoDTO - * @return - */ -// @PostMapping("/v1/bid/archive/findRegister") - @GetMapping("/v1/bid/eval/detail/findRegister") - BaseResponse> findRegisterAndUser(@SpringQueryMap BidEvalInfoDTO bidEvalInfoDTO); - - /** - * 初审汇总 - * - * @param bidEvalDetailDTO - * @return - */ - @PostMapping("/v1/bid/eval/summary/findScoreEarlySummary") - BaseResponse> findScoreEarlySummary(@RequestBody BidEvalDetailDTO bidEvalDetailDTO); - /** * 价格打分 * @@ -92,18 +77,20 @@ public interface RsmsFeignService { /** * 详细评审表|专家打分表|价格打分表|打分汇总表 - * @param sectionId 标段ID + * + * @param sectionId 标段ID * @param isReviewMethod 是否为资审方式 0 否 1 是 - * @param list 节点集合 - * @return com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse> + * @param list 节点集合 + * @return com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse> * @author dino * @date 2021/1/19 15:08 */ @ApiOperation("详细评审表|专家打分表|价格打分表|打分汇总表") @PostMapping("/v1/bid/archive/findDetailArchiveList") - BaseResponse>> findDetailArchiveList(@RequestParam("sectionId") String sectionId, - @RequestParam("isReviewMethod") String isReviewMethod, - @RequestBody List list) ; + BaseResponse>> findDetailArchiveList(@RequestParam("sectionId") String sectionId, + @RequestParam("isReviewMethod") String isReviewMethod, + @RequestBody List list); + /** * 评审报告 * @@ -124,12 +111,46 @@ public interface RsmsFeignService { * 通过评审室查询detail表数据 * * @param assessRoomId - * * @return */ @ApiOperation("通过评审室查询detail表数据") @GetMapping("/v1/reviewresult/queryDetailByRoomId/{assessRoomId}") BaseResponse> get(@ApiParam(value = "评审室id", required = true) @PathVariable String assessRoomId); + + + + + + + /** + * 评委供应商11111 + * + * @param bidEvalInfoDTO + * @return + */ +// @PostMapping("/v1/bid/archive/findRegister") + @GetMapping("/v1/bid/eval/detail/findRegister") + BaseResponse> findRegisterAndUser(@SpringQueryMap BidEvalInfoDTO bidEvalInfoDTO); + + /** + * 初审汇总111111 + * + * @param roomId 评审室ID + * @return + * @date 2021年4月27日 + */ + @GetMapping("/v1/bid/report/exportEarly/{roomId}") + BaseResponse> exportEarly(@ApiParam(value = "评审室ID", required = true) @PathVariable("roomId") String roomId); + + /** + * 打分汇总表 + * @param roomId 评审室ID + * @date 2021年4月27日 + */ + @GetMapping("/exportScoreSummary/{roomId}") + BaseResponse>> exportScoreSummary(@PathVariable("roomId") String roomId); + + } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java index 27872fd..b9c5ee4 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java @@ -14,7 +14,7 @@ import java.util.List; /** * 调用 TENDER_SERVICE */ -@FeignClient(value = "${mconfig.feign.name.tender}", fallbackFactory = TenderFeignFallbackFactory.class) +@FeignClient(value = "${mconfig.feign.name.tender}", fallbackFactory = TenderFeignFallbackFactory.class,url = "http://10.242.31.158:8806/biz-service-ebtp-tender/") public interface TenderFeignService { @ApiOperation("查询评审室下初审投标状态") diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java index 5c8648a..2093056 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java @@ -5,14 +5,11 @@ import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.export.bean.*; import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; import com.chinaunicom.mall.ebtp.extend.export.vo.*; -import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ResultDetailVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.*; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -23,21 +20,23 @@ public class ExportServiceFallback implements FallbackFactory @Override public RsmsFeignService create(Throwable throwable) { RsmsFeignService back = new RsmsFeignService() { + /** + * 不同供应商的打分 + * + * @param bidEvalDetailDTO + * @return + */ @Override public BaseResponse> findScoreRecord(BidEvalDetailDTO bidEvalDetailDTO) { return null; } - @Override - public BaseResponse> findRegisterAndUser(BidEvalInfoDTO bidEvalInfoDTO) { - return null; - } - - @Override - public BaseResponse> findScoreEarlySummary(BidEvalDetailDTO bidEvalDetailDTO) { - return null; - } - + /** + * 价格打分 + * + * @param bidEvalDetailDTO + * @return + */ @Override public BaseResponse> findPriceScoreRecord(BidEvalDetailDTO bidEvalDetailDTO) { return null; @@ -48,6 +47,12 @@ public class ExportServiceFallback implements FallbackFactory return null; } + /** + * 打分汇总 + * + * @param bidEvalDetailDTO + * @return + */ @Override public BaseResponse>> findCategoryResultSummary(BidEvalDetailDTO bidEvalDetailDTO) { return null; @@ -98,12 +103,50 @@ public class ExportServiceFallback implements FallbackFactory return null; } + /** + * 通过评审室查询detail表数据 + * + * @param assessRoomId + * @return + */ @Override public BaseResponse> get(String assessRoomId) { - log.error("评审室id:{}", assessRoomId); - return BaseResponse.fail(new ArrayList<>()); + return null; } + /** + * 评委供应商11111 + * + * @param bidEvalInfoDTO + * @return + */ + @Override + public BaseResponse> findRegisterAndUser(BidEvalInfoDTO bidEvalInfoDTO) { + return null; + } + + /** + * 初审汇总111111 + * + * @param roomId 评审室ID + * @return + * @date 2021年4月27日 + */ + @Override + public BaseResponse> exportEarly(String roomId) { + return null; + } + + /** + * 打分汇总表 + * + * @param roomId 评审室ID + * @date 2021年4月27日 + */ + @Override + public BaseResponse>> exportScoreSummary(String roomId) { + return null; + } }; log.error(ExceptionUtil.stacktraceToString(throwable)); return null; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailJudgesSummaryVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailJudgesSummaryVO.java similarity index 95% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailJudgesSummaryVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailJudgesSummaryVO.java index b8d3c2f..24df0f0 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailJudgesSummaryVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailJudgesSummaryVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailSummaryVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailSummaryVO.java similarity index 96% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailSummaryVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailSummaryVO.java index b208986..3ac2c20 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailSummaryVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailSummaryVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailVO.java similarity index 98% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailVO.java index 2b7f54e..99c05d9 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalEarlyJudgesSummaryVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalEarlyJudgesSummaryVO.java similarity index 96% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalEarlyJudgesSummaryVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalEarlyJudgesSummaryVO.java index 67f9487..7c0c76d 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalEarlyJudgesSummaryVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalEarlyJudgesSummaryVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigCategory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategory.java similarity index 92% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigCategory.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategory.java index 2089c61..1e89c75 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigCategory.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategory.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -41,12 +41,15 @@ public class ReviewConfigCategory extends BaseEntity implements Serializable { @JsonSerialize(using = ToStringSerializer.class) private String configId; - @ApiModelProperty(value = "类别名称") + @ApiModelProperty(value = "自定义类别名称") private String name; @ApiModelProperty(value = "类别:0:报价;1:商务;2:技术;5:服务。初审项类别:0:形式评审;1:资格审查项;2:响应性评审;7:符合性审查") private String category; + @ApiModelProperty(value = "类别名称") + private String categoryName; + @JsonInclude(value = JsonInclude.Include.NON_NULL) @ApiModelProperty(value = "权重") private BigDecimal weights; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategoryDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategoryDTO.java index fe05581..060af33 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategoryDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategoryDTO.java @@ -1,6 +1,5 @@ package com.chinaunicom.mall.ebtp.extend.feign.entity; -import com.chinaunicom.mall.ebtp.extend.export.bean.ReviewConfigCategory; import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigDetail.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetail.java similarity index 98% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigDetail.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetail.java index 632c577..cd092a5 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigDetail.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetail.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetailDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetailDTO.java index e10a6db..a85d997 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetailDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetailDTO.java @@ -1,9 +1,5 @@ package com.chinaunicom.mall.ebtp.extend.feign.entity; -import com.chinaunicom.mall.ebtp.extend.export.bean.ReviewConfigDetail; -import com.chinaunicom.mall.ebtp.extend.export.bean.ReviewConfigStandard; -import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalDetailVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalEarlyJudgesSummaryVO; import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,6 +33,13 @@ public class ReviewConfigDetailDTO extends ReviewConfigDetail implements Seriali @ApiModelProperty(value = "类别") private String category; + /** + * excel导入时用来分组使用 + */ + @JsonInclude(value = JsonInclude.Include.NON_NULL) + @ApiModelProperty(value = "类别名称") + private String categoryName; + @JsonInclude(value = JsonInclude.Include.NON_EMPTY) @ApiModelProperty(value = "评分标准集合") private List standardList; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigStandard.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigStandard.java similarity index 96% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigStandard.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigStandard.java index cd3e1ec..7cbe761 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigStandard.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigStandard.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/SupplierRegisterVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/SupplierRegisterVO.java similarity index 90% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/SupplierRegisterVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/SupplierRegisterVO.java index 0a561b8..de0f31e 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/SupplierRegisterVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/SupplierRegisterVO.java @@ -1,5 +1,6 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; +package com.chinaunicom.mall.ebtp.extend.feign.entity; +import com.chinaunicom.mall.ebtp.extend.export.vo.MemberVO; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; diff --git a/src/main/resources/model/初步评审.docx b/src/main/resources/model/初步评审.docx deleted file mode 100644 index a9dc4466344a4de78cd56539877e08eaa7549f33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23687 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 PsLwL0x$61JjaUB$X72oK From ab3ac0312023c8028a1cba666be16d7c2df256be Mon Sep 17 00:00:00 2001 From: zhangyx <1254353766@qq.com> Date: Thu, 29 Apr 2021 09:40:52 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E6=89=93=E5=8D=B0-=E8=AF=84=E5=A7=94=E6=89=93=E5=88=86?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ZjgrExportServiceImpl.java | 33 +++++++---- .../extend/feign/client/RsmsFeignService.java | 17 ++++-- .../client/factory/ExportServiceFallback.java | 5 ++ .../extend/feign/entity/BidEvalCategory.java | 56 +++++++++++++++++++ .../feign/entity/BidEvalCategoryDTO.java | 55 ++++++++++++++++++ 5 files changed, 148 insertions(+), 18 deletions(-) create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalCategory.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalCategoryDTO.java diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java index 45972ad..acf8e34 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java @@ -5,12 +5,8 @@ import com.chinaunicom.mall.ebtp.extend.export.bean.*; import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; -import com.chinaunicom.mall.ebtp.extend.feign.entity.BidEvalDetailVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.*; import com.chinaunicom.mall.ebtp.extend.export.vo.MemberVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.SupplierRegisterVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigDetailDTO; import lombok.SneakyThrows; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; @@ -68,6 +64,18 @@ public class ZjgrExportServiceImpl implements ExportService { List listBaseResponse = rsmsFeignService.findRegisterAndUser(bidEvalInfoDTO).getData(); //评委 List members = listBaseResponse.stream().findFirst().get().getMembers(); + + + List userList = new ArrayList<>(); + for (int i = 0; i < members.size(); i++) { + String userid = members.get(i).getUserId(); + userList.add(userid); + } + BidEvalCategoryDTO bidEvalCategoryDTO = new BidEvalCategoryDTO(); + bidEvalCategoryDTO.setAssessRoomId(param.getAssessRoomId()).setUserIds(userList); + BaseResponse>> scoreRecord = rsmsFeignService.exportDetail(bidEvalCategoryDTO); + Map> map = scoreRecord.getData(); + //列头 StringBuffer titles0 = new StringBuffer("分类,项目名称,标准说明,分值"); @@ -97,13 +105,14 @@ public class ZjgrExportServiceImpl implements ExportService { cellStyle.setBorderRight(BorderStyle.THIN);//右边框 //Sheet for (int i = 0; i < members.size(); i++) { - BidEvalDetailDTO bidEvalDetailDTO = new BidEvalDetailDTO(); - - bidEvalDetailDTO.setReviewTurnId(param.getReviewTurnId()); - bidEvalDetailDTO.setReviewType(param.getReviewType()); - bidEvalDetailDTO.setCreateBy(members.get(i).getUserId()); - BaseResponse> scoreRecord = rsmsFeignService.findScoreRecord(bidEvalDetailDTO); - List dataList = scoreRecord.getData(); + String userid = members.get(i).getUserId(); + List dataList = new ArrayList<>(); + for(String method : map.keySet()) { + if (method.equals(userid)) { + dataList = map.get(method); + break; + } + } // 创建表格 Sheet sheet = wb.createSheet(members.get(i).getName()); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java index 6eac2a1..324f79e 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java @@ -5,13 +5,9 @@ import com.chinaunicom.mall.ebtp.extend.export.bean.ArchiveFileReturnVO; import com.chinaunicom.mall.ebtp.extend.export.bean.ArchiveLink; import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalDetailDTO; import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalInfoDTO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.BidEvalDetailSummaryVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.*; import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterPriceScoreVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.SupplierRegisterVO; import com.chinaunicom.mall.ebtp.extend.feign.client.factory.ExportServiceFallback; -import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ResultDetailVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; @@ -29,9 +25,18 @@ public interface RsmsFeignService { /** * 不同供应商的打分 * - * @param bidEvalDetailDTO + * @param bidEvalCategoryDTO * @return */ + @PostMapping("/v1/bid/report/exportDetail") + BaseResponse>> exportDetail(@RequestBody BidEvalCategoryDTO bidEvalCategoryDTO); + + /** + * 不同供应商的打分 + * + * @param bidEvalDetailDTO + * @return + */ @PostMapping("/v1/bid/eval/record/findScoreRecord") BaseResponse> findScoreRecord(@RequestBody BidEvalDetailDTO bidEvalDetailDTO); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java index 2093056..b826f33 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java @@ -20,6 +20,11 @@ public class ExportServiceFallback implements FallbackFactory @Override public RsmsFeignService create(Throwable throwable) { RsmsFeignService back = new RsmsFeignService() { + @Override + public BaseResponse>> exportDetail(BidEvalCategoryDTO bidEvalCategoryDTO) { + return null; + } + /** * 不同供应商的打分 * diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalCategory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalCategory.java new file mode 100644 index 0000000..feb5eae --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalCategory.java @@ -0,0 +1,56 @@ +package com.chinaunicom.mall.ebtp.extend.feign.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + *

+ * 评标类别表 + *

+ * + * @author dino + * @since 2020-11-18 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="BidEvalCategory对象", description="评标类别表DTO") +@TableName(value = "biz_rsms_bid_eval_category",autoResultMap = true) +public class BidEvalCategory extends BaseEntity implements Serializable { + + private static final Long serialVersionUID = 1L; + + @TableId + @ApiModelProperty(value = "编号") + @JsonSerialize(using = ToStringSerializer.class) + private String id; + + @ApiModelProperty(value = "评标主表id(biz_rsms_bid_eval_info)") + @JsonSerialize(using = ToStringSerializer.class) + private String bidEvalId; + + @ApiModelProperty(value = "详审项类别:0:报价;1:商务;2:技术;4:工程报价 ;5:服务。初审项类别:0:形式评审;1:资格审查项;2:响应性评审;3:商务审查项;4: 技术审查项;5: 服务审查项;6: 其他审查项") + private String category; + + @ApiModelProperty(value = "评审配置类别表ID(biz_rsms_review_config_category)") + @JsonSerialize(using = ToStringSerializer.class) + private String categoryId; + + @ApiModelProperty(value = "评委类别状态 1,未提交;2,已提交") + private String judgesStatus; + + @ApiModelProperty(value = "评委姓名") + private String judgesName; + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalCategoryDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalCategoryDTO.java new file mode 100644 index 0000000..498e245 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalCategoryDTO.java @@ -0,0 +1,55 @@ +package com.chinaunicom.mall.ebtp.extend.feign.entity; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + *

+ * 评标类别表 + *

+ * + * @author dino + * @since 2020-11-18 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="BidEvalCategoryDTO对象", description="评标类别表") +public class BidEvalCategoryDTO extends BidEvalCategory implements Serializable { + + private static final Long serialVersionUID = 1L; + + + @ApiModelProperty(value = "评分配置集合") + @JsonInclude(value = JsonInclude.Include.NON_EMPTY) + private List detailList; + + @ApiModelProperty(value = "报价得分") + @JsonInclude(value = JsonInclude.Include.NON_EMPTY) + private Map priceScoreMap; + + /** + * 解锁的评委ID + */ + @JsonInclude(value = JsonInclude.Include.NON_EMPTY) + private List userIds; + + @ApiModelProperty(value = "评审室Id") + @JsonSerialize(using = ToStringSerializer.class) + @JsonInclude(value = JsonInclude.Include.NON_NULL) + private String assessRoomId; + + + + +} From c8568ea6b7ea92d12886a8a46b2ebfb90e78f698 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E5=BA=86=E5=90=89?= <51312040@qq.com> Date: Fri, 30 Apr 2021 10:06:21 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E9=87=8D=E6=9E=84=20=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BizServiceEbtpExtendApplication.java | 52 ++- .../controller/AuthorizeController.java | 30 +- .../BizMessageCategoryController.java | 133 ++++---- .../BizMessageConsumerController.java | 84 +++-- .../BizMessageProducerController.java | 45 ++- .../BizMessageTemplateController.java | 133 ++++---- .../bizmessage/dao/BizMessageMapper.java | 5 +- .../dao/mapper/BizMessageMapper.xml | 26 +- .../dto/BizMessageCategoryAddDTO.java | 20 +- .../dto/BizMessageCategoryUpdateDTO.java | 26 +- .../bizmessage/dto/BizMessageRawDTO.java | 47 ++- .../dto/BizMessageTemplateAddDTO.java | 24 +- .../dto/BizMessageTemplateUpdateDTO.java | 30 +- .../ebtp/extend/bizmessage/dto/PageDTO.java | 24 +- .../extend/bizmessage/entity/BizMessage.java | 25 +- .../entity/BizMessageAuthorize.java | 4 +- .../bizmessage/entity/BizMessageCategory.java | 17 +- .../bizmessage/entity/BizMessageTemplate.java | 21 +- .../bizmessage/mybatis/BizMessagePage.java | 6 +- .../bizmessage/mybatis/IBizMessagePage.java | 12 +- .../service/BizMessageCategoryService.java | 14 +- .../service/BizMessageConsumerService.java | 4 +- .../service/BizMessageProducerService.java | 6 +- .../service/BizMessageTemplateService.java | 14 +- .../impl/BizMessageCategoryServiceImpl.java | 54 +-- .../impl/BizMessageConsumerServiceImpl.java | 111 +++--- .../impl/BizMessageProducerServiceImpl.java | 231 ++++++------- .../impl/BizMessageTemplateServiceImpl.java | 54 +-- .../bizmessage/vo/BizMessageCategoryVO.java | 17 +- .../bizmessage/vo/BizMessageTemplateVO.java | 23 +- .../vo/DescribeSiteMsgDetailVO.java | 23 +- .../bizmessage/vo/DescribeSiteMsgVO.java | 19 +- .../export/bean/ArchiveFileReturnVO.java | 36 -- .../ebtp/extend/export/bean/ArchiveLink.java | 88 ----- .../extend/export/bean/BidEvalDetail.java | 179 ---------- .../extend/export/bean/BidEvalDetailDTO.java | 103 ------ .../extend/export/bean/BizBidOpenroom.java | 110 ------ .../extend/export/bean/BizExportDict.java | 1 - .../{entity => bean}/CbpsExportData.java | 2 +- .../ebtp/extend/export/bean/ExportParam.java | 6 +- .../{entity => bean}/ExportTableData.java | 3 +- .../extend/export/bean/JgdfExportData.java | 39 +++ .../OpenRecordExportData.java} | 7 +- .../export/dao/BizExportDictMapper.java | 2 +- .../export/dao/mapper/BizExportDictMapper.xml | 16 +- .../export/enums/ExportExceptionEnum.java | 1 - .../common/ExportCommonFeignService.java | 50 ++- .../impl/ExportCommonFeignServiceImpl.java | 100 ++++-- .../service/dict/IBizExportDictService.java | 2 +- .../dict/impl/BizExportDictServiceImpl.java | 93 +---- .../service/impl/BidOpenRecordImpl.java | 17 +- .../service/impl/CbpsExportServiceImpl.java | 42 ++- .../service/impl/DfhzExportServiceImpl.java | 81 ++--- .../service/impl/JgdfExportServiceImpl.java | 317 +++++++----------- .../service/impl/JudgesPromiseImpl.java | 13 +- .../export/service/impl/JudgesSignImpl.java | 16 +- .../export/service/impl/JudgesSignInImpl.java | 11 +- .../export/service/impl/ReviewReportImpl.java | 15 +- .../service/impl/ZjgrExportServiceImpl.java | 95 ++---- .../service/policy/DetailTablePolicy.java | 4 +- .../export/vo/BidEvalDetailConsistentVO.java | 32 -- .../ebtp/extend/export/vo/ReviewFlowVO.java | 90 ----- .../vo/ReviewResultDetailSummaryVO.java | 55 --- .../feign/client/DocumentCenterService.java | 40 +-- .../extend/feign/client/OpenFeignService.java | 31 -- .../feign/client/ProcessFeignService.java | 8 +- .../feign/client/ProjectFeignService.java | 6 +- .../feign/client/RespsFeignService.java | 13 +- .../extend/feign/client/RsmsFeignService.java | 133 ++------ .../feign/client/TenderFeignService.java | 4 +- .../client/factory/ExportServiceFallback.java | 123 ++----- .../ExportServiceOpenFallbakFactory.java | 27 -- .../ExportServiceRespsFallbakFactory.java | 14 + .../factory/ProcessFeignFallbackFactory.java | 2 +- .../factory/ProjectFeignFallbackFactory.java | 2 +- .../factory/TenderFeignFallbackFactory.java | 2 +- .../feign/config/FeignConfiguration.java | 32 +- .../feign/entity/BizSupplierRegister.java | 2 +- .../extend/feign/entity/ProjectSection.java | 10 +- .../mall/ebtp/extend/feign/entity/Tdoc.java | 24 +- .../ebtp/extend/feign/entity/TdocCatalog.java | 10 +- .../extend/feign/entity/TfileContentData.java | 75 +++++ .../entity/rsms}/BidEarlyWarn.java | 6 +- .../entity/{ => rsms}/BidEvalCategory.java | 6 +- .../entity/{ => rsms}/BidEvalCategoryDTO.java | 8 +- .../BidEvalDetailJudgesSummaryVO.java | 4 +- .../{ => rsms}/BidEvalDetailSummaryVO.java | 4 +- .../entity/{ => rsms}/BidEvalDetailVO.java | 4 +- .../BidEvalEarlyJudgesSummaryVO.java | 4 +- .../entity/rsms}/BidEvalInfo.java | 2 +- .../entity/rsms}/BidEvalInfoDTO.java | 4 +- .../feign/entity/{ => rsms}/JuryPrintVO.java | 2 +- .../vo => feign/entity/rsms}/MemberVO.java | 4 +- .../entity/{ => rsms}/ResultDetailVO.java | 2 +- .../{ => rsms}/ReviewConfigCategory.java | 6 +- .../{ => rsms}/ReviewConfigCategoryDTO.java | 2 +- .../entity/{ => rsms}/ReviewConfigDetail.java | 7 +- .../{ => rsms}/ReviewConfigDetailDTO.java | 2 +- .../{ => rsms}/ReviewConfigStandard.java | 6 +- .../rsms}/SupplierRegisterPriceScoreVO.java | 4 +- .../entity/{ => rsms}/SupplierRegisterVO.java | 5 +- .../TemplateWarehouseController.java | 10 +- .../dao/BizBidClientVersionMapper.java | 2 +- .../dao/BizBidTemplateWarehouseMapper.java | 2 +- .../dao/mapper/BizBidClientVersionMapper.xml | 10 +- .../mapper/BizBidTemplateWarehouseMapper.xml | 22 +- .../entity/BizBidTemplateWarehouse.java | 40 +-- .../sevice/BizBidClientVersionService.java | 2 - .../BizBidTemplateWarehouseService.java | 2 +- .../impl/BizBidClientVersionServiceImpl.java | 55 ++- .../BizBidTemplateWarehouseServiceImpl.java | 9 +- .../timeService/TimeServiceConstant.java | 88 ++--- .../controller/TimeServiceController.java | 29 +- .../extend/timeService/tsa/SystemTime.java | 57 ++-- .../ebtp/extend/timeService/tsa/TtsAgent.java | 147 ++++---- 115 files changed, 1581 insertions(+), 2494 deletions(-) delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ArchiveFileReturnVO.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ArchiveLink.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalDetail.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalDetailDTO.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizBidOpenroom.java rename src/main/java/com/chinaunicom/mall/ebtp/extend/export/{entity => bean}/CbpsExportData.java (88%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/export/{entity => bean}/ExportTableData.java (91%) create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/JgdfExportData.java rename src/main/java/com/chinaunicom/mall/ebtp/extend/export/{entity/BidOpenRecordExportData.java => bean/OpenRecordExportData.java} (64%) delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailConsistentVO.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/ReviewFlowVO.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/ReviewResultDetailSummaryVO.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/OpenFeignService.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceOpenFallbakFactory.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/TfileContentData.java rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/bean => feign/entity/rsms}/BidEarlyWarn.java (89%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/{ => rsms}/BidEvalCategory.java (89%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/{ => rsms}/BidEvalCategoryDTO.java (87%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/{ => rsms}/BidEvalDetailJudgesSummaryVO.java (87%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/{ => rsms}/BidEvalDetailSummaryVO.java (90%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/{ => rsms}/BidEvalDetailVO.java (94%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/{ => rsms}/BidEvalEarlyJudgesSummaryVO.java (88%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/bean => feign/entity/rsms}/BidEvalInfo.java (96%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/bean => feign/entity/rsms}/BidEvalInfoDTO.java (83%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/{ => rsms}/JuryPrintVO.java (97%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/vo => feign/entity/rsms}/MemberVO.java (86%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/{ => rsms}/ResultDetailVO.java (98%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/{ => rsms}/ReviewConfigCategory.java (89%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/{ => rsms}/ReviewConfigCategoryDTO.java (92%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/{ => rsms}/ReviewConfigDetail.java (94%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/{ => rsms}/ReviewConfigDetailDTO.java (96%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/{ => rsms}/ReviewConfigStandard.java (85%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/vo => feign/entity/rsms}/SupplierRegisterPriceScoreVO.java (92%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/{ => rsms}/SupplierRegisterVO.java (85%) diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/BizServiceEbtpExtendApplication.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/BizServiceEbtpExtendApplication.java index 58523c6..1187fe0 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/BizServiceEbtpExtendApplication.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/BizServiceEbtpExtendApplication.java @@ -1,5 +1,9 @@ package com.chinaunicom.mall.ebtp.extend; +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; +import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; +import io.micrometer.core.instrument.MeterRegistry; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; @@ -12,39 +16,33 @@ import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; -import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; - -import cn.hutool.core.lang.Snowflake; -import cn.hutool.core.util.IdUtil; -import io.micrometer.core.instrument.MeterRegistry; - -@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, DruidDataSourceAutoConfigure.class }) +@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, DruidDataSourceAutoConfigure.class}) @EnableFeignClients @EnableEurekaClient -@MapperScan({ "com.chinaunicom.mall.ebtp.extend.**.dao" }) +@MapperScan({"com.chinaunicom.mall.ebtp.extend.**.dao"}) @ComponentScan("com.chinaunicom.mall.ebtp.*") public class BizServiceEbtpExtendApplication { - public static void main(String[] args) { - SpringApplication.run(BizServiceEbtpExtendApplication.class, args); - } + public static void main(String[] args) { + SpringApplication.run(BizServiceEbtpExtendApplication.class, args); + } - @Bean - @ConditionalOnMissingBean(Snowflake.class) - public Snowflake snowflake() { - return IdUtil.getSnowflake(23, 16); - } + @Bean + @ConditionalOnMissingBean(Snowflake.class) + public Snowflake snowflake() { + return IdUtil.getSnowflake(23, 16); + } - /** - * Grafana 注册项 - * - * @param applicationName 应用名称, 用于grafana应用列表 - * @return - */ - @Bean - public MeterRegistryCustomizer configurer( - @Value("${spring.application.name}") String applicationName) { - return (registry) -> registry.config().commonTags("application", applicationName); - } + /** + * Grafana 注册项 + * + * @param applicationName 应用名称, 用于grafana应用列表 + * @return + */ + @Bean + public MeterRegistryCustomizer configurer( + @Value("${spring.application.name}") String applicationName) { + return (registry) -> registry.config().commonTags("application", applicationName); + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/AuthorizeController.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/AuthorizeController.java index eaac104..e0e5958 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/AuthorizeController.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/AuthorizeController.java @@ -1,7 +1,7 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.controller; -import java.security.Principal; - +import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser; +import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.core.Authentication; @@ -11,26 +11,26 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser; -import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService; +import java.security.Principal; @RestController @RequestMapping("v1") public class AuthorizeController { - private @Autowired IBaseCacheUserService service; + private @Autowired + IBaseCacheUserService service; - @GetMapping("user") - @ResponseStatus(code = HttpStatus.OK) - public Object user(Principal principal) { - BaseCacheUser cacheUser = service.getCacheUser(); - Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + @GetMapping("user") + @ResponseStatus(code = HttpStatus.OK) + public Object user(Principal principal) { + BaseCacheUser cacheUser = service.getCacheUser(); + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); - System.out.println(auth.getName()); - System.out.println(auth.getAuthorities()); - System.out.println(principal); + System.out.println(auth.getName()); + System.out.println(auth.getAuthorities()); + System.out.println(principal); - return cacheUser; - } + return cacheUser; + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/BizMessageCategoryController.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/BizMessageCategoryController.java index 5632a7f..65f0ef1 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/BizMessageCategoryController.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/BizMessageCategoryController.java @@ -1,96 +1,87 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.controller; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.bind.annotation.RestController; - import com.chinaunicom.mall.ebtp.extend.bizmessage.dto.BizMessageCategoryAddDTO; import com.chinaunicom.mall.ebtp.extend.bizmessage.dto.BizMessageCategoryUpdateDTO; import com.chinaunicom.mall.ebtp.extend.bizmessage.entity.BizMessageCategory; import com.chinaunicom.mall.ebtp.extend.bizmessage.service.BizMessageCategoryService; import com.chinaunicom.mall.ebtp.extend.bizmessage.vo.BizMessageCategoryVO; - import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; @Api(value = "消息类别维护", description = "消息类别维护") @RestController @RequestMapping("/v1/category/") public class BizMessageCategoryController { - private @Autowired BizMessageCategoryService service; + private @Autowired + BizMessageCategoryService service; - @ApiOperation("消息类别列表.") - @GetMapping("/list") - @ResponseStatus(code = HttpStatus.OK) - public List list() { - return service.listAll().stream().map(source -> { - BizMessageCategoryVO vo = new BizMessageCategoryVO(); - BeanUtils.copyProperties(source, vo); - return vo; - }).collect(Collectors.toList()); - } + @ApiOperation("消息类别列表.") + @GetMapping("/list") + @ResponseStatus(code = HttpStatus.OK) + public List list() { + return service.listAll().stream().map(source -> { + BizMessageCategoryVO vo = new BizMessageCategoryVO(); + BeanUtils.copyProperties(source, vo); + return vo; + }).collect(Collectors.toList()); + } - @ApiOperation("查询指定id的消息.") - @GetMapping("{id}") - @ResponseStatus(code = HttpStatus.OK) - public BizMessageCategoryVO findById(@ApiParam(value = "类别id", required = true) @PathVariable String id) { - return Optional.ofNullable(service.findById(id)).map(source -> { - BizMessageCategoryVO vo = new BizMessageCategoryVO(); - BeanUtils.copyProperties(source, vo); - return vo; - }).orElseGet(BizMessageCategoryVO::new); - } + @ApiOperation("查询指定id的消息.") + @GetMapping("{id}") + @ResponseStatus(code = HttpStatus.OK) + public BizMessageCategoryVO findById(@ApiParam(value = "类别id", required = true) @PathVariable String id) { + return Optional.ofNullable(service.findById(id)).map(source -> { + BizMessageCategoryVO vo = new BizMessageCategoryVO(); + BeanUtils.copyProperties(source, vo); + return vo; + }).orElseGet(BizMessageCategoryVO::new); + } - @ApiOperation("新郑消息类别.") - @PostMapping - @ResponseStatus(code = HttpStatus.OK) - public ResponseEntity add( - @ApiParam(value = "消息类别实体", required = true) @Validated @RequestBody BizMessageCategoryAddDTO cate) { - boolean success = Optional.ofNullable(cate).map(source -> { - BizMessageCategory entity = new BizMessageCategory(); - BeanUtils.copyProperties(source, entity); - return service.add(entity); - }).orElseGet(() -> false); + @ApiOperation("新郑消息类别.") + @PostMapping + @ResponseStatus(code = HttpStatus.OK) + public ResponseEntity add( + @ApiParam(value = "消息类别实体", required = true) @Validated @RequestBody BizMessageCategoryAddDTO cate) { + boolean success = Optional.ofNullable(cate).map(source -> { + BizMessageCategory entity = new BizMessageCategory(); + BeanUtils.copyProperties(source, entity); + return service.add(entity); + }).orElseGet(() -> false); - return success ? ResponseEntity.ok().build() : ResponseEntity.badRequest().build(); - } + return success ? ResponseEntity.ok().build() : ResponseEntity.badRequest().build(); + } - @ApiOperation("修改消息类别.") - @PutMapping - @ResponseStatus(code = HttpStatus.OK) - public ResponseEntity update( - @ApiParam(value = "消息类别实体", required = true) @Validated @RequestBody BizMessageCategoryUpdateDTO cate) { - boolean success = Optional.ofNullable(cate).map(source -> { - BizMessageCategory entity = new BizMessageCategory(); - BeanUtils.copyProperties(source, entity); - return service.update(entity); - }).orElseGet(() -> false); + @ApiOperation("修改消息类别.") + @PutMapping + @ResponseStatus(code = HttpStatus.OK) + public ResponseEntity update( + @ApiParam(value = "消息类别实体", required = true) @Validated @RequestBody BizMessageCategoryUpdateDTO cate) { + boolean success = Optional.ofNullable(cate).map(source -> { + BizMessageCategory entity = new BizMessageCategory(); + BeanUtils.copyProperties(source, entity); + return service.update(entity); + }).orElseGet(() -> false); - return success ? ResponseEntity.ok().build() : ResponseEntity.badRequest().build(); - } + return success ? ResponseEntity.ok().build() : ResponseEntity.badRequest().build(); + } - @ApiOperation("删除消息类别.") - @DeleteMapping("{id}") - @ResponseStatus(code = HttpStatus.OK) - public ResponseEntity del(@ApiParam(value = "类别id", required = true) @PathVariable String id) { - return service.del(id) ? ResponseEntity.ok().build() : ResponseEntity.badRequest().build(); - } + @ApiOperation("删除消息类别.") + @DeleteMapping("{id}") + @ResponseStatus(code = HttpStatus.OK) + public ResponseEntity del(@ApiParam(value = "类别id", required = true) @PathVariable String id) { + return service.del(id) ? ResponseEntity.ok().build() : ResponseEntity.badRequest().build(); + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/BizMessageConsumerController.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/BizMessageConsumerController.java index 55b6124..62c4f66 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/BizMessageConsumerController.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/BizMessageConsumerController.java @@ -1,30 +1,23 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.controller; -import java.util.Optional; - -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.bind.annotation.RestController; - import com.chinaunicom.mall.ebtp.extend.bizmessage.dto.PageDTO; import com.chinaunicom.mall.ebtp.extend.bizmessage.mybatis.IBizMessagePage; import com.chinaunicom.mall.ebtp.extend.bizmessage.service.BizMessageConsumerService; import com.chinaunicom.mall.ebtp.extend.bizmessage.vo.DescribeSiteMsgDetailVO; import com.chinaunicom.mall.ebtp.extend.bizmessage.vo.DescribeSiteMsgVO; - import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import java.util.Optional; /** * 消息查询服务 - * + * * @author ajaxfan */ @RestController @@ -32,39 +25,40 @@ import io.swagger.annotations.ApiParam; @RequestMapping("/v1/message/") public class BizMessageConsumerController { - private @Autowired BizMessageConsumerService service; + private @Autowired + BizMessageConsumerService service; - /** - * 消息概要清单 - * - * @return - */ - @ApiOperation("消息概要清单.") - @GetMapping("describeSiteMsg") - @ResponseStatus(code = HttpStatus.OK) - public IBizMessagePage describeSiteMsg( - @ApiParam(value = "分页参数", required = false) @RequestBody(required = false) PageDTO page) { - return service.listOutline(page); - } + /** + * 消息概要清单 + * + * @return + */ + @ApiOperation("消息概要清单.") + @GetMapping("describeSiteMsg") + @ResponseStatus(code = HttpStatus.OK) + public IBizMessagePage describeSiteMsg( + @ApiParam(value = "分页参数", required = false) @RequestBody(required = false) PageDTO page) { + return service.listOutline(page); + } - /** - * 消息明细 - * - * @param id - * @return - */ - @ApiOperation("消息明细查询.") - @GetMapping("describeSiteMsgDetail/{id}") - @ResponseStatus(code = HttpStatus.OK) - public DescribeSiteMsgDetailVO describeSiteMsgDetail( - @ApiParam(value = "待查询的消息id", required = true) @PathVariable("id") String id) { - return Optional.ofNullable(service.getDetailById(id)).map(source -> { - DescribeSiteMsgDetailVO vo = new DescribeSiteMsgDetailVO(); - vo.setMsgId(source.getId()); - BeanUtils.copyProperties(source, vo); + /** + * 消息明细 + * + * @param id + * @return + */ + @ApiOperation("消息明细查询.") + @GetMapping("describeSiteMsgDetail/{id}") + @ResponseStatus(code = HttpStatus.OK) + public DescribeSiteMsgDetailVO describeSiteMsgDetail( + @ApiParam(value = "待查询的消息id", required = true) @PathVariable("id") String id) { + return Optional.ofNullable(service.getDetailById(id)).map(source -> { + DescribeSiteMsgDetailVO vo = new DescribeSiteMsgDetailVO(); + vo.setMsgId(source.getId()); + BeanUtils.copyProperties(source, vo); - return vo; - }).orElseGet(DescribeSiteMsgDetailVO::new); - } + return vo; + }).orElseGet(DescribeSiteMsgDetailVO::new); + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/BizMessageProducerController.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/BizMessageProducerController.java index 6c60c1b..964013a 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/BizMessageProducerController.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/BizMessageProducerController.java @@ -1,23 +1,17 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.controller; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.bind.annotation.RestController; - import com.chinaunicom.mall.ebtp.extend.bizmessage.dto.BizMessageRawDTO; import com.chinaunicom.mall.ebtp.extend.bizmessage.service.BizMessageProducerService; import com.chinaunicom.mall.ebtp.extend.bizmessage.vo.DescribeSiteMsgDetailVO; - import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; @Slf4j @Api(value = "创建消息", description = "创建消息") @@ -25,21 +19,22 @@ import lombok.extern.slf4j.Slf4j; @RequestMapping("/v1/producer/") public class BizMessageProducerController { - private @Autowired BizMessageProducerService service; + private @Autowired + BizMessageProducerService service; - @ApiOperation("生成新消息.") - @PostMapping - @ResponseStatus(code = HttpStatus.OK) - public DescribeSiteMsgDetailVO produce( - @ApiParam(value = "消息内容", required = true) @Validated @RequestBody BizMessageRawDTO raw) { - log.debug("user send raw message: {}", raw); + @ApiOperation("生成新消息.") + @PostMapping + @ResponseStatus(code = HttpStatus.OK) + public DescribeSiteMsgDetailVO produce( + @ApiParam(value = "消息内容", required = true) @Validated @RequestBody BizMessageRawDTO raw) { + log.debug("user send raw message: {}", raw); - return service.produce(raw).map(source -> { - DescribeSiteMsgDetailVO vo = new DescribeSiteMsgDetailVO(); - vo.setMsgId(source.getId()); - BeanUtils.copyProperties(source, vo); - return vo; - }).orElseGet(DescribeSiteMsgDetailVO::new); - } + return service.produce(raw).map(source -> { + DescribeSiteMsgDetailVO vo = new DescribeSiteMsgDetailVO(); + vo.setMsgId(source.getId()); + BeanUtils.copyProperties(source, vo); + return vo; + }).orElseGet(DescribeSiteMsgDetailVO::new); + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/BizMessageTemplateController.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/BizMessageTemplateController.java index 58fa851..2eea2fb 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/BizMessageTemplateController.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/controller/BizMessageTemplateController.java @@ -1,98 +1,85 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.controller; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.bind.annotation.RestController; - import com.chinaunicom.mall.ebtp.extend.bizmessage.dto.BizMessageTemplateAddDTO; import com.chinaunicom.mall.ebtp.extend.bizmessage.dto.BizMessageTemplateUpdateDTO; import com.chinaunicom.mall.ebtp.extend.bizmessage.entity.BizMessageTemplate; import com.chinaunicom.mall.ebtp.extend.bizmessage.service.BizMessageTemplateService; import com.chinaunicom.mall.ebtp.extend.bizmessage.vo.BizMessageTemplateVO; +import io.swagger.annotations.*; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import io.swagger.annotations.ApiResponse; -import io.swagger.annotations.ApiResponses; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; @RestController @Api(value = "消息模板管理", description = "消息模板管理") @RequestMapping("/v1/template/") public class BizMessageTemplateController { - private @Autowired BizMessageTemplateService service; + private @Autowired + BizMessageTemplateService service; - @ApiOperation("消息模板清单") - @GetMapping("list") - @ResponseStatus(code = HttpStatus.OK) - public List list() { - return service.listAll().stream().map(source -> { - BizMessageTemplateVO vo = new BizMessageTemplateVO(); - BeanUtils.copyProperties(source, vo); - return vo; - }).collect(Collectors.toList()); - } + @ApiOperation("消息模板清单") + @GetMapping("list") + @ResponseStatus(code = HttpStatus.OK) + public List list() { + return service.listAll().stream().map(source -> { + BizMessageTemplateVO vo = new BizMessageTemplateVO(); + BeanUtils.copyProperties(source, vo); + return vo; + }).collect(Collectors.toList()); + } - @ApiOperation("查询指定id的消息模板") - @GetMapping("{id}") - @ResponseStatus(code = HttpStatus.OK) - public BizMessageTemplateVO findById(@ApiParam(value = "消息模板id", required = true) @PathVariable("id") String id) { - return Optional.ofNullable(service.findById(id)).map(source -> { - BizMessageTemplateVO vo = new BizMessageTemplateVO(); - BeanUtils.copyProperties(source, vo); - return vo; - }).orElseGet(BizMessageTemplateVO::new); - } + @ApiOperation("查询指定id的消息模板") + @GetMapping("{id}") + @ResponseStatus(code = HttpStatus.OK) + public BizMessageTemplateVO findById(@ApiParam(value = "消息模板id", required = true) @PathVariable("id") String id) { + return Optional.ofNullable(service.findById(id)).map(source -> { + BizMessageTemplateVO vo = new BizMessageTemplateVO(); + BeanUtils.copyProperties(source, vo); + return vo; + }).orElseGet(BizMessageTemplateVO::new); + } - @ApiOperation("添加新的消息模板") - @ApiResponses(value = { @ApiResponse(code = 200, message = "执行成功"), @ApiResponse(code = 400, message = "执行失败") }) - @PostMapping - public ResponseEntity add(@Validated @RequestBody BizMessageTemplateAddDTO vo) { - boolean success = Optional.ofNullable(vo).map(source -> { - BizMessageTemplate dao = new BizMessageTemplate(); - BeanUtils.copyProperties(source, dao); + @ApiOperation("添加新的消息模板") + @ApiResponses(value = {@ApiResponse(code = 200, message = "执行成功"), @ApiResponse(code = 400, message = "执行失败")}) + @PostMapping + public ResponseEntity add(@Validated @RequestBody BizMessageTemplateAddDTO vo) { + boolean success = Optional.ofNullable(vo).map(source -> { + BizMessageTemplate dao = new BizMessageTemplate(); + BeanUtils.copyProperties(source, dao); - return service.add(dao); - }).orElseGet(() -> false); + return service.add(dao); + }).orElseGet(() -> false); - return success ? ResponseEntity.ok().build() : ResponseEntity.badRequest().build(); - } + return success ? ResponseEntity.ok().build() : ResponseEntity.badRequest().build(); + } - @ApiOperation("修改消息模板") - @ApiResponses(value = { @ApiResponse(code = 200, message = "执行成功"), @ApiResponse(code = 400, message = "执行失败") }) - @PutMapping - public ResponseEntity update(@Validated @RequestBody BizMessageTemplateUpdateDTO vo) { - boolean success = Optional.ofNullable(vo).map(source -> { - BizMessageTemplate dao = new BizMessageTemplate(); - BeanUtils.copyProperties(source, dao); + @ApiOperation("修改消息模板") + @ApiResponses(value = {@ApiResponse(code = 200, message = "执行成功"), @ApiResponse(code = 400, message = "执行失败")}) + @PutMapping + public ResponseEntity update(@Validated @RequestBody BizMessageTemplateUpdateDTO vo) { + boolean success = Optional.ofNullable(vo).map(source -> { + BizMessageTemplate dao = new BizMessageTemplate(); + BeanUtils.copyProperties(source, dao); - return service.update(dao); - }).orElseGet(() -> false); + return service.update(dao); + }).orElseGet(() -> false); - return success ? ResponseEntity.ok().build() : ResponseEntity.badRequest().build(); - } + return success ? ResponseEntity.ok().build() : ResponseEntity.badRequest().build(); + } - @ApiOperation("删除消息模板") - @ApiResponses(value = { @ApiResponse(code = 200, message = "执行成功"), @ApiResponse(code = 400, message = "执行失败") }) - @DeleteMapping("{id}") - public ResponseEntity deleteById(@ApiParam(value = "消息模板id", required = true) @PathVariable String id) { - return service.del(id) ? ResponseEntity.ok().build() : ResponseEntity.badRequest().build(); - } + @ApiOperation("删除消息模板") + @ApiResponses(value = {@ApiResponse(code = 200, message = "执行成功"), @ApiResponse(code = 400, message = "执行失败")}) + @DeleteMapping("{id}") + public ResponseEntity deleteById(@ApiParam(value = "消息模板id", required = true) @PathVariable String id) { + return service.del(id) ? ResponseEntity.ok().build() : ResponseEntity.badRequest().build(); + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dao/BizMessageMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dao/BizMessageMapper.java index b504edb..bb6325d 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dao/BizMessageMapper.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dao/BizMessageMapper.java @@ -1,13 +1,12 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.dao; -import org.apache.ibatis.annotations.Param; - import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.chinaunicom.mall.ebtp.extend.bizmessage.entity.BizMessage; +import org.apache.ibatis.annotations.Param; public interface BizMessageMapper extends BaseMapper { - IPage findMessage(@Param("param") IPage page, @Param("userId") String userId); + IPage findMessage(@Param("param") IPage page, @Param("userId") String userId); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dao/mapper/BizMessageMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dao/mapper/BizMessageMapper.xml index 1d6cdc6..40fec46 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dao/mapper/BizMessageMapper.xml +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dao/mapper/BizMessageMapper.xml @@ -3,19 +3,19 @@ \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageCategoryAddDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageCategoryAddDTO.java index fe7e54a..3bc8db6 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageCategoryAddDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageCategoryAddDTO.java @@ -1,24 +1,24 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.dto; -import javax.validation.constraints.NotEmpty; - import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotEmpty; + @Data @ApiModel("新增类别实体") public class BizMessageCategoryAddDTO { - @ApiModelProperty(required = true, value = "类别编码") - @NotEmpty(message = "类别编码不能为空") - private String code; + @ApiModelProperty(required = true, value = "类别编码") + @NotEmpty(message = "类别编码不能为空") + private String code; - @ApiModelProperty(required = true, value = "类别名称") - @NotEmpty(message = "类别名称不能为空") - private String name; + @ApiModelProperty(required = true, value = "类别名称") + @NotEmpty(message = "类别名称不能为空") + private String name; - @ApiModelProperty("描述") - private String remark; + @ApiModelProperty("描述") + private String remark; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageCategoryUpdateDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageCategoryUpdateDTO.java index 4097ff4..026f606 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageCategoryUpdateDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageCategoryUpdateDTO.java @@ -1,28 +1,28 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.dto; -import javax.validation.constraints.NotEmpty; - import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotEmpty; + @Data @ApiModel("编辑类别实体") public class BizMessageCategoryUpdateDTO { - @ApiModelProperty(required = true, value = "类别id") - @NotEmpty(message = "类别id不能为空") - private String id; + @ApiModelProperty(required = true, value = "类别id") + @NotEmpty(message = "类别id不能为空") + private String id; - @ApiModelProperty(required = true, value = "类别编码") - @NotEmpty(message = "类别编码不能为空") - private String code; + @ApiModelProperty(required = true, value = "类别编码") + @NotEmpty(message = "类别编码不能为空") + private String code; - @ApiModelProperty(required = true, value = "类别名称") - @NotEmpty(message = "类别名称不能为空") - private String name; + @ApiModelProperty(required = true, value = "类别名称") + @NotEmpty(message = "类别名称不能为空") + private String name; - @ApiModelProperty("描述") - private String remark; + @ApiModelProperty("描述") + private String remark; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageRawDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageRawDTO.java index f7e7d91..f5867bc 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageRawDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageRawDTO.java @@ -1,45 +1,44 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.dto; -import java.util.List; -import java.util.Map; - -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; - import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; +import java.util.Map; + /** * 消息原型 - * + * * @author ajaxfan */ @Data @ApiModel("消息实体") public class BizMessageRawDTO { - @ApiModelProperty(required = true, value = "消息标题") - @NotEmpty(message = "消息标题不能为空") - private String title; + @ApiModelProperty(required = true, value = "消息标题") + @NotEmpty(message = "消息标题不能为空") + private String title; - @ApiModelProperty(required = true, value = "消息类别") - @NotEmpty(message = "消息类别不能为空") - private String category; + @ApiModelProperty(required = true, value = "消息类别") + @NotEmpty(message = "消息类别不能为空") + private String category; - @ApiModelProperty(required = true, value = "消息模板编码") - @NotEmpty(message = "消息模板编码不能为空") - private String templateCode; + @ApiModelProperty(required = true, value = "消息模板编码") + @NotEmpty(message = "消息模板编码不能为空") + private String templateCode; - @ApiModelProperty(required = true, value = "消息内容对象") - @NotNull(message = "消息内容对象不能为空") - private Map body; + @ApiModelProperty(required = true, value = "消息内容对象") + @NotNull(message = "消息内容对象不能为空") + private Map body; - @ApiModelProperty(required = true, value = "消息附加参数") - @NotNull(message = "消息附加参数不能为空") - private Map extra; + @ApiModelProperty(required = true, value = "消息附加参数") + @NotNull(message = "消息附加参数不能为空") + private Map extra; - @ApiModelProperty(required = true, value = "授权用户列表") - private List users; + @ApiModelProperty(required = true, value = "授权用户列表") + private List users; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageTemplateAddDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageTemplateAddDTO.java index 2f930a8..cd35136 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageTemplateAddDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageTemplateAddDTO.java @@ -1,27 +1,27 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.dto; -import javax.validation.constraints.NotEmpty; - import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotEmpty; + @Data @ApiModel("消息模板新增实体") public class BizMessageTemplateAddDTO { - @ApiModelProperty(required = true, value = "模板编码") - @NotEmpty(message = "模板编码不能为空") - private String code; + @ApiModelProperty(required = true, value = "模板编码") + @NotEmpty(message = "模板编码不能为空") + private String code; - @ApiModelProperty(required = true, value = "模板内容") - @NotEmpty(message = "模板内容不能为空") - private String body; + @ApiModelProperty(required = true, value = "模板内容") + @NotEmpty(message = "模板内容不能为空") + private String body; - @ApiModelProperty("路由") - private String router; + @ApiModelProperty("路由") + private String router; - @ApiModelProperty("描述") - private String remark; + @ApiModelProperty("描述") + private String remark; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageTemplateUpdateDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageTemplateUpdateDTO.java index 1e5aebb..2f7fb1e 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageTemplateUpdateDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/BizMessageTemplateUpdateDTO.java @@ -1,31 +1,31 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.dto; -import javax.validation.constraints.NotEmpty; - import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotEmpty; + @Data @ApiModel("消息模板变更实体") public class BizMessageTemplateUpdateDTO { - @ApiModelProperty(required = true, value = "模板id") - @NotEmpty(message = "模板id不能为空") - private String id; + @ApiModelProperty(required = true, value = "模板id") + @NotEmpty(message = "模板id不能为空") + private String id; - @ApiModelProperty(required = true, value = "模板编码") - @NotEmpty(message = "模板编码不能为空") - private String code; + @ApiModelProperty(required = true, value = "模板编码") + @NotEmpty(message = "模板编码不能为空") + private String code; - @ApiModelProperty(required = true, value = "模板内容") - @NotEmpty(message = "模板内容不能为空") - private String body; + @ApiModelProperty(required = true, value = "模板内容") + @NotEmpty(message = "模板内容不能为空") + private String body; - @ApiModelProperty("路由") - private String router; + @ApiModelProperty("路由") + private String router; - @ApiModelProperty("描述") - private String remark; + @ApiModelProperty("描述") + private String remark; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/PageDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/PageDTO.java index 023f147..91af3da 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/PageDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/dto/PageDTO.java @@ -5,25 +5,25 @@ import lombok.Data; /** * 分页明细 - * + * * @author Ajaxfan */ @Data public class PageDTO { - @ApiModelProperty(required = false, value = "当前页(默认1)") - private int current; + @ApiModelProperty(required = false, value = "当前页(默认1)") + private int current; - @ApiModelProperty(required = false, value = "页码(默认1)") - private int pageNo; + @ApiModelProperty(required = false, value = "页码(默认1)") + private int pageNo; - @ApiModelProperty(required = false, value = "单页数量(默认15)") - private int pageSize; + @ApiModelProperty(required = false, value = "单页数量(默认15)") + private int pageSize; - public PageDTO() { - this.current = 1; - this.pageNo = 1; - this.pageSize = 15; - } + public PageDTO() { + this.current = 1; + this.pageNo = 1; + this.pageSize = 15; + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/entity/BizMessage.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/entity/BizMessage.java index 238b8e0..d539b07 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/entity/BizMessage.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/entity/BizMessage.java @@ -1,24 +1,23 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.entity; -import java.sql.Timestamp; - import com.baomidou.mybatisplus.annotation.TableId; - import lombok.Data; +import java.sql.Timestamp; + @Data public class BizMessage { - @TableId - private String id; - private String title; - private String category; - private String content; - private String url; - private String params; - private Timestamp createtime; + @TableId + private String id; + private String title; + private String category; + private String content; + private String url; + private String params; + private Timestamp createtime; - /* 该值为1则标识开启授权控制,只有授权列表( biz_message_authorize )内的用户可见 */ - private Integer authorize; + /* 该值为1则标识开启授权控制,只有授权列表( biz_message_authorize )内的用户可见 */ + private Integer authorize; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/entity/BizMessageAuthorize.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/entity/BizMessageAuthorize.java index 22187a0..56f543b 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/entity/BizMessageAuthorize.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/entity/BizMessageAuthorize.java @@ -9,7 +9,7 @@ import lombok.NoArgsConstructor; @AllArgsConstructor public class BizMessageAuthorize { - private String userId; - private String messageId; + private String userId; + private String messageId; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/entity/BizMessageCategory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/entity/BizMessageCategory.java index e72608a..5642c15 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/entity/BizMessageCategory.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/entity/BizMessageCategory.java @@ -1,19 +1,18 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.entity; -import java.sql.Timestamp; - import com.baomidou.mybatisplus.annotation.TableId; - import lombok.Data; +import java.sql.Timestamp; + @Data public class BizMessageCategory { - @TableId - private String id; - private String code; - private String name; - private String remark; - private Timestamp createtime; + @TableId + private String id; + private String code; + private String name; + private String remark; + private Timestamp createtime; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/entity/BizMessageTemplate.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/entity/BizMessageTemplate.java index 1508876..0469787 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/entity/BizMessageTemplate.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/entity/BizMessageTemplate.java @@ -1,23 +1,22 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.entity; -import java.sql.Timestamp; - import com.baomidou.mybatisplus.annotation.TableId; - import lombok.Data; import lombok.experimental.Accessors; +import java.sql.Timestamp; + @Data @Accessors(chain = true) public class BizMessageTemplate { - @TableId - private String id; - private String code; - private String body; - private String remark; - private String router; - private Timestamp createtime; - private Timestamp updatetime; + @TableId + private String id; + private String code; + private String body; + private String remark; + private String router; + private Timestamp createtime; + private Timestamp updatetime; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/mybatis/BizMessagePage.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/mybatis/BizMessagePage.java index 0366eda..931309f 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/mybatis/BizMessagePage.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/mybatis/BizMessagePage.java @@ -1,13 +1,9 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.mybatis; -import org.apache.poi.ss.formula.functions.T; - import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import lombok.NoArgsConstructor; - public class BizMessagePage extends Page implements IBizMessagePage { - private static final long serialVersionUID = -3820693837182317407L; + private static final long serialVersionUID = -3820693837182317407L; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/mybatis/IBizMessagePage.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/mybatis/IBizMessagePage.java index dc1374d..c0611b9 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/mybatis/IBizMessagePage.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/mybatis/IBizMessagePage.java @@ -4,11 +4,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage; public interface IBizMessagePage extends IPage { - /** - * @return 为了兼容前端的组件 - */ - default int getCode() { - return 200; - } + /** + * @return 为了兼容前端的组件 + */ + default int getCode() { + return 200; + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/BizMessageCategoryService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/BizMessageCategoryService.java index 9aa1931..ee2e00f 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/BizMessageCategoryService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/BizMessageCategoryService.java @@ -1,19 +1,19 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.service; -import java.util.List; - import com.chinaunicom.mall.ebtp.extend.bizmessage.entity.BizMessageCategory; +import java.util.List; + public interface BizMessageCategoryService { - List listAll(); + List listAll(); - BizMessageCategory findById(String id); + BizMessageCategory findById(String id); - boolean add(BizMessageCategory cate); + boolean add(BizMessageCategory cate); - boolean update(BizMessageCategory cate); + boolean update(BizMessageCategory cate); - boolean del(String id); + boolean del(String id); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/BizMessageConsumerService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/BizMessageConsumerService.java index b0c3dc2..087bc0e 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/BizMessageConsumerService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/BizMessageConsumerService.java @@ -7,8 +7,8 @@ import com.chinaunicom.mall.ebtp.extend.bizmessage.vo.DescribeSiteMsgVO; public interface BizMessageConsumerService { - IBizMessagePage listOutline(PageDTO page); + IBizMessagePage listOutline(PageDTO page); - BizMessage getDetailById(String id); + BizMessage getDetailById(String id); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/BizMessageProducerService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/BizMessageProducerService.java index 175a008..0efd5de 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/BizMessageProducerService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/BizMessageProducerService.java @@ -1,12 +1,12 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.service; -import java.util.Optional; - import com.chinaunicom.mall.ebtp.extend.bizmessage.dto.BizMessageRawDTO; import com.chinaunicom.mall.ebtp.extend.bizmessage.entity.BizMessage; +import java.util.Optional; + public interface BizMessageProducerService { - Optional produce(BizMessageRawDTO messageRaw); + Optional produce(BizMessageRawDTO messageRaw); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/BizMessageTemplateService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/BizMessageTemplateService.java index 85299c8..d372c69 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/BizMessageTemplateService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/BizMessageTemplateService.java @@ -1,19 +1,19 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.service; -import java.util.List; - import com.chinaunicom.mall.ebtp.extend.bizmessage.entity.BizMessageTemplate; +import java.util.List; + public interface BizMessageTemplateService { - BizMessageTemplate findById(String id); + BizMessageTemplate findById(String id); - List listAll(); + List listAll(); - boolean add(BizMessageTemplate template); + boolean add(BizMessageTemplate template); - boolean update(BizMessageTemplate tempalte); + boolean update(BizMessageTemplate tempalte); - boolean del(String id); + boolean del(String id); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/impl/BizMessageCategoryServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/impl/BizMessageCategoryServiceImpl.java index 3b41bac..a48a827 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/impl/BizMessageCategoryServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/impl/BizMessageCategoryServiceImpl.java @@ -1,48 +1,48 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.service.impl; -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.chinaunicom.mall.ebtp.extend.bizmessage.dao.BizMessageCategoryMapper; import com.chinaunicom.mall.ebtp.extend.bizmessage.entity.BizMessageCategory; import com.chinaunicom.mall.ebtp.extend.bizmessage.service.BizMessageCategoryService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; /** * 消息类别信息维护 - * + * * @author Ajaxfan */ @Service public class BizMessageCategoryServiceImpl implements BizMessageCategoryService { - private @Autowired BizMessageCategoryMapper mapper; + private @Autowired + BizMessageCategoryMapper mapper; - @Override - public List listAll() { - return mapper.selectList(new QueryWrapper()); - } + @Override + public List listAll() { + return mapper.selectList(new QueryWrapper()); + } - @Override - public BizMessageCategory findById(String id) { - return mapper.selectById(id); - } + @Override + public BizMessageCategory findById(String id) { + return mapper.selectById(id); + } - @Override - public boolean add(BizMessageCategory cate) { - return mapper.insert(cate) > 0; - } + @Override + public boolean add(BizMessageCategory cate) { + return mapper.insert(cate) > 0; + } - @Override - public boolean update(BizMessageCategory cate) { - return mapper.updateById(cate) > 0; - } + @Override + public boolean update(BizMessageCategory cate) { + return mapper.updateById(cate) > 0; + } - @Override - public boolean del(String id) { - return mapper.deleteById(id) > 0; - } + @Override + public boolean del(String id) { + return mapper.deleteById(id) > 0; + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/impl/BizMessageConsumerServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/impl/BizMessageConsumerServiceImpl.java index 40b3de5..46bf4b8 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/impl/BizMessageConsumerServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/impl/BizMessageConsumerServiceImpl.java @@ -1,12 +1,5 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.service.impl; -import java.util.Optional; -import java.util.stream.Collectors; - -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService; @@ -17,67 +10,75 @@ import com.chinaunicom.mall.ebtp.extend.bizmessage.mybatis.BizMessagePage; import com.chinaunicom.mall.ebtp.extend.bizmessage.mybatis.IBizMessagePage; import com.chinaunicom.mall.ebtp.extend.bizmessage.service.BizMessageConsumerService; import com.chinaunicom.mall.ebtp.extend.bizmessage.vo.DescribeSiteMsgVO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Optional; +import java.util.stream.Collectors; /** * 消息查询服务 - * + * * @author ajaxfan */ @Service public class BizMessageConsumerServiceImpl implements BizMessageConsumerService { - private @Autowired BizMessageMapper mapper; - private @Autowired IBaseCacheUserService service; + private @Autowired + BizMessageMapper mapper; + private @Autowired + IBaseCacheUserService service; - /** - * 消息概要列表 - * - * @return - */ - @Override - public IBizMessagePage listOutline(PageDTO page) { - page = createPageCondition(page); - - IPage pageEntity = mapper.findMessage(new Page(page.getPageNo(), page.getPageSize()), - service.getCacheUser().getUserId()); - - // DAT -> VO 转换 - IBizMessagePage result = new BizMessagePage<>(); - BeanUtils.copyProperties(pageEntity, result, "records"); - result.setRecords(pageEntity.getRecords().stream().map(source -> { - DescribeSiteMsgVO vo = new DescribeSiteMsgVO(); - vo.setMsgId(source.getId()); - BeanUtils.copyProperties(source, vo); + /** + * 消息概要列表 + * + * @return + */ + @Override + public IBizMessagePage listOutline(PageDTO page) { + page = createPageCondition(page); - return vo; - }).collect(Collectors.toList())); + IPage pageEntity = mapper.findMessage(new Page(page.getPageNo(), page.getPageSize()), + service.getCacheUser().getUserId()); - return result; - } + // DAT -> VO 转换 + IBizMessagePage result = new BizMessagePage<>(); + BeanUtils.copyProperties(pageEntity, result, "records"); + result.setRecords(pageEntity.getRecords().stream().map(source -> { + DescribeSiteMsgVO vo = new DescribeSiteMsgVO(); + vo.setMsgId(source.getId()); + BeanUtils.copyProperties(source, vo); - /** - * 消息详情 - * - * @param id - * @return - */ - @Override - public BizMessage getDetailById(String id) { - return mapper.selectById(id); - } + return vo; + }).collect(Collectors.toList())); - /** - * @param page - * @return - */ - private PageDTO createPageCondition(PageDTO page) { - return Optional.ofNullable(page).map(p -> { - p.setCurrent(Math.max(1, p.getCurrent())); - p.setPageNo(Math.max(1, p.getPageNo())); - p.setPageSize(p.getPageSize() == 0 ? 15 : p.getPageSize()); + return result; + } - return p; - }).orElseGet(PageDTO::new); - } + /** + * 消息详情 + * + * @param id + * @return + */ + @Override + public BizMessage getDetailById(String id) { + return mapper.selectById(id); + } + + /** + * @param page + * @return + */ + private PageDTO createPageCondition(PageDTO page) { + return Optional.ofNullable(page).map(p -> { + p.setCurrent(Math.max(1, p.getCurrent())); + p.setPageNo(Math.max(1, p.getPageNo())); + p.setPageSize(p.getPageSize() == 0 ? 15 : p.getPageSize()); + + return p; + }).orElseGet(PageDTO::new); + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/impl/BizMessageProducerServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/impl/BizMessageProducerServiceImpl.java index 4095a11..f797bf5 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/impl/BizMessageProducerServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/impl/BizMessageProducerServiceImpl.java @@ -1,18 +1,6 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.service.impl; -import java.io.IOException; -import java.io.StringWriter; -import java.util.Map; -import java.util.Optional; - -import org.apache.commons.lang.StringUtils; -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.Velocity; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.util.Assert; - +import cn.hutool.core.lang.Snowflake; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.chinaunicom.mall.ebtp.extend.bizmessage.dao.BizMessageAuthorizeMapper; import com.chinaunicom.mall.ebtp.extend.bizmessage.dao.BizMessageCategoryMapper; @@ -26,132 +14,147 @@ import com.chinaunicom.mall.ebtp.extend.bizmessage.entity.BizMessageTemplate; import com.chinaunicom.mall.ebtp.extend.bizmessage.service.BizMessageProducerService; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; - -import cn.hutool.core.lang.Snowflake; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.Velocity; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import java.io.IOException; +import java.io.StringWriter; +import java.util.Map; +import java.util.Optional; /** * 消息生产服务 - * + * * @author ajaxfan */ @Slf4j @Service public class BizMessageProducerServiceImpl implements BizMessageProducerService { - private @Autowired BizMessageMapper messageMapper; - private @Autowired BizMessageTemplateMapper templateMapper; - private @Autowired BizMessageAuthorizeMapper authorizeMapper; - private @Autowired BizMessageCategoryMapper categoryMapper; + private @Autowired + BizMessageMapper messageMapper; + private @Autowired + BizMessageTemplateMapper templateMapper; + private @Autowired + BizMessageAuthorizeMapper authorizeMapper; + private @Autowired + BizMessageCategoryMapper categoryMapper; - private @Autowired Snowflake snowflakeGenerator; + private @Autowired + Snowflake snowflakeGenerator; - private ObjectMapper objectMapper = new ObjectMapper(); + private ObjectMapper objectMapper = new ObjectMapper(); - /** - * @param messageRaw - * @return - */ - @Override - public Optional produce(BizMessageRawDTO messageRaw) { - return Optional.ofNullable(messageRaw).map(this::evaluate).map(message -> { - log.debug("ready to save: {}", message); - return messageMapper.insert(message) > 0 ? message : null; - }); - } + /** + * @param messageRaw + * @return + */ + @Override + public Optional produce(BizMessageRawDTO messageRaw) { + return Optional.ofNullable(messageRaw).map(this::evaluate).map(message -> { + log.debug("ready to save: {}", message); + return messageMapper.insert(message) > 0 ? message : null; + }); + } - /** - * 生成消息 - * - * @param messageRaw - * @return - */ - private BizMessage evaluate(BizMessageRawDTO messageRaw) { - BizMessageTemplate dao = getTemplate(messageRaw.getTemplateCode()); - Assert.notNull(dao, "无效的消息模板编码"); + /** + * 生成消息 + * + * @param messageRaw + * @return + */ + private BizMessage evaluate(BizMessageRawDTO messageRaw) { + BizMessageTemplate dao = getTemplate(messageRaw.getTemplateCode()); + Assert.notNull(dao, "无效的消息模板编码"); - log.debug("load template: {} by code: {}", dao, messageRaw.getTemplateCode()); + log.debug("load template: {} by code: {}", dao, messageRaw.getTemplateCode()); - final String messageId = snowflakeGenerator.nextIdStr(); - log.debug("generate message id: {}", messageId); + final String messageId = snowflakeGenerator.nextIdStr(); + log.debug("generate message id: {}", messageId); - BizMessage bizmessage = new BizMessage(); - BeanUtils.copyProperties(messageRaw, bizmessage); - bizmessage.setId(messageId); - bizmessage.setCategory(convertCodeToName(messageRaw.getCategory())); - bizmessage.setContent(fill(dao.getBody(), messageRaw.getBody())); - bizmessage.setUrl(fill(dao.getRouter(), messageRaw.getExtra())); - bizmessage.setParams(toJson(messageRaw.getExtra())); + BizMessage bizmessage = new BizMessage(); + BeanUtils.copyProperties(messageRaw, bizmessage); + bizmessage.setId(messageId); + bizmessage.setCategory(convertCodeToName(messageRaw.getCategory())); + bizmessage.setContent(fill(dao.getBody(), messageRaw.getBody())); + bizmessage.setUrl(fill(dao.getRouter(), messageRaw.getExtra())); + bizmessage.setParams(toJson(messageRaw.getExtra())); - Optional.ofNullable(messageRaw.getUsers()).ifPresent(users -> { - log.debug("if user list {} is not emtpy, then grant current message to them.", users); - bizmessage.setAuthorize(Math.min(1, users.size())); + Optional.ofNullable(messageRaw.getUsers()).ifPresent(users -> { + log.debug("if user list {} is not emtpy, then grant current message to them.", users); + bizmessage.setAuthorize(Math.min(1, users.size())); - log.debug("grant message [{}] to users", messageId); - users.forEach(userid -> authorizeMapper.insert(new BizMessageAuthorize(userid, messageId))); - }); + log.debug("grant message [{}] to users", messageId); + users.forEach(userid -> authorizeMapper.insert(new BizMessageAuthorize(userid, messageId))); + }); - return bizmessage; - } + return bizmessage; + } - /** - * 消息类别的的code转换为对应的名字 - * - * @param category - * @return - */ - private String convertCodeToName(final String code) { - BizMessageCategory entity = categoryMapper - .selectOne(Wrappers.lambdaQuery().eq(BizMessageCategory::getCode, code)); - log.debug("query category record {} by code {}", entity, code); + /** + * 消息类别的的code转换为对应的名字 + * + * @param category + * @return + */ + private String convertCodeToName(final String code) { + BizMessageCategory entity = categoryMapper + .selectOne(Wrappers.lambdaQuery().eq(BizMessageCategory::getCode, code)); + log.debug("query category record {} by code {}", entity, code); - return Optional.ofNullable(entity).map(source -> source.getName()).orElseGet(() -> code); - } + return Optional.ofNullable(entity).map(source -> source.getName()).orElseGet(() -> code); + } - /** - * 获取模板对象 - * - * @param messageRaw - * @return - */ - private BizMessageTemplate getTemplate(final String code) { - return templateMapper - .selectOne(Wrappers.lambdaQuery().eq(BizMessageTemplate::getCode, code)); - } + /** + * 获取模板对象 + * + * @param messageRaw + * @return + */ + private BizMessageTemplate getTemplate(final String code) { + return templateMapper + .selectOne(Wrappers.lambdaQuery().eq(BizMessageTemplate::getCode, code)); + } - /** - * 填充模板 - * - * @param messageObj - * @param body - * @return - */ - private String fill(String tempalte, Map map) { - return Optional.ofNullable(tempalte).map(source -> { - log.debug("message body tempalte: {}", tempalte); - try (StringWriter out = new StringWriter()) { - log.debug("template engine receive: {}, generate message: {}", map, out); - Velocity.evaluate(new VelocityContext(map), out, "log.chinaunicom", tempalte); + /** + * 填充模板 + * + * @param messageObj + * @param body + * @return + */ + private String fill(String tempalte, Map map) { + return Optional.ofNullable(tempalte).map(source -> { + log.debug("message body tempalte: {}", tempalte); + try (StringWriter out = new StringWriter()) { + log.debug("template engine receive: {}, generate message: {}", map, out); + Velocity.evaluate(new VelocityContext(map), out, "log.chinaunicom", tempalte); - return out.toString(); - } catch (IOException e) { - log.error(e.getMessage()); - } - return StringUtils.EMPTY; - }).orElseGet(() -> StringUtils.EMPTY); - } + return out.toString(); + } catch (IOException e) { + log.error(e.getMessage()); + } + return StringUtils.EMPTY; + }).orElseGet(() -> StringUtils.EMPTY); + } - /** - * @param obj - * @return - */ - private String toJson(Map obj) { - try { - return objectMapper.writeValueAsString(obj); - } catch (JsonProcessingException e) { - log.error(e.getMessage()); - } - return StringUtils.EMPTY; - } + /** + * @param obj + * @return + */ + private String toJson(Map obj) { + try { + return objectMapper.writeValueAsString(obj); + } catch (JsonProcessingException e) { + log.error(e.getMessage()); + } + return StringUtils.EMPTY; + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/impl/BizMessageTemplateServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/impl/BizMessageTemplateServiceImpl.java index 48fb398..609d921 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/impl/BizMessageTemplateServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/service/impl/BizMessageTemplateServiceImpl.java @@ -1,44 +1,44 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.service.impl; -import java.sql.Timestamp; -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.chinaunicom.mall.ebtp.extend.bizmessage.dao.BizMessageTemplateMapper; import com.chinaunicom.mall.ebtp.extend.bizmessage.entity.BizMessageTemplate; import com.chinaunicom.mall.ebtp.extend.bizmessage.service.BizMessageTemplateService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.sql.Timestamp; +import java.util.List; @Service public class BizMessageTemplateServiceImpl implements BizMessageTemplateService { - private @Autowired BizMessageTemplateMapper mapper; + private @Autowired + BizMessageTemplateMapper mapper; - @Override - public BizMessageTemplate findById(String id) { - return mapper.selectById(id); - } + @Override + public BizMessageTemplate findById(String id) { + return mapper.selectById(id); + } - @Override - public List listAll() { - return mapper.selectList(new QueryWrapper()); - } + @Override + public List listAll() { + return mapper.selectList(new QueryWrapper()); + } - @Override - public boolean add(BizMessageTemplate template) { - return mapper.insert(template) > 0; - } + @Override + public boolean add(BizMessageTemplate template) { + return mapper.insert(template) > 0; + } - @Override - public boolean update(BizMessageTemplate tempalte) { - return mapper.updateById(tempalte.setUpdatetime(new Timestamp(System.currentTimeMillis()))) > 0; - } + @Override + public boolean update(BizMessageTemplate tempalte) { + return mapper.updateById(tempalte.setUpdatetime(new Timestamp(System.currentTimeMillis()))) > 0; + } - @Override - public boolean del(String id) { - return mapper.deleteById(id) > 0; - } + @Override + public boolean del(String id) { + return mapper.deleteById(id) > 0; + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/vo/BizMessageCategoryVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/vo/BizMessageCategoryVO.java index 6788bfa..b9eeb19 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/vo/BizMessageCategoryVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/vo/BizMessageCategoryVO.java @@ -1,22 +1,21 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.vo; -import java.sql.Timestamp; - import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; - import lombok.Data; +import java.sql.Timestamp; + @Data @JsonInclude(value = Include.NON_NULL) public class BizMessageCategoryVO { - private String id; - private String code; - private String name; - private String remark; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Timestamp createtime; + private String id; + private String code; + private String name; + private String remark; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp createtime; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/vo/BizMessageTemplateVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/vo/BizMessageTemplateVO.java index 0b5b859..28d9044 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/vo/BizMessageTemplateVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/vo/BizMessageTemplateVO.java @@ -1,25 +1,24 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.vo; -import java.sql.Timestamp; - import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; - import lombok.Data; +import java.sql.Timestamp; + @Data @JsonInclude(value = Include.NON_NULL) public class BizMessageTemplateVO { - private String id; - private String code; - private String body; - private String router; - private String remark; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Timestamp createtime; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Timestamp updatetime; + private String id; + private String code; + private String body; + private String router; + private String remark; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp createtime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp updatetime; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/vo/DescribeSiteMsgDetailVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/vo/DescribeSiteMsgDetailVO.java index 5f99489..5b9d27e 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/vo/DescribeSiteMsgDetailVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/vo/DescribeSiteMsgDetailVO.java @@ -1,30 +1,29 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.vo; -import java.sql.Timestamp; - import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; - import lombok.Data; +import java.sql.Timestamp; + /** * 消息详情 - * + * * @author ajaxfan */ @Data @JsonInclude(value = Include.NON_NULL) public class DescribeSiteMsgDetailVO { - private String msgId; - private String title; - private String category; - private String content; - private String url; - private String params; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Timestamp createtime; + private String msgId; + private String title; + private String category; + private String content; + private String url; + private String params; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp createtime; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/vo/DescribeSiteMsgVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/vo/DescribeSiteMsgVO.java index d89938f..913c68b 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/vo/DescribeSiteMsgVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/bizmessage/vo/DescribeSiteMsgVO.java @@ -1,23 +1,22 @@ package com.chinaunicom.mall.ebtp.extend.bizmessage.vo; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + import java.sql.Timestamp; -import com.fasterxml.jackson.annotation.JsonFormat; - -import lombok.Data; - /** * 消息概要 - * + * * @author ajaxfan */ @Data public class DescribeSiteMsgVO { - private String msgId; - private String title; - private String category; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Timestamp createtime; + private String msgId; + private String title; + private String category; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Timestamp createtime; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ArchiveFileReturnVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ArchiveFileReturnVO.java deleted file mode 100644 index cd7c6d7..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ArchiveFileReturnVO.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.experimental.Accessors; - -/** - * 项目标段归档接口返回调用 - * @author daixc - * @date 2020/12/14 - */ -@Data -@Accessors(chain = true) -@ApiModel("项目标段归档接口返回实体") -public class ArchiveFileReturnVO { - - @ApiModelProperty(value = "附件组ID") - @JsonSerialize(using = ToStringSerializer.class) - private String businessFileId; - - @ApiModelProperty(value = "评审室ID") - private String assessRoomId; - - @ApiModelProperty(value = "附件名称") - private String archiveFileName; - - @ApiModelProperty(value = "供应商名称") - private String supplierName; - - @ApiModelProperty(value = "附件路径") - private String archiveFileUrl; - -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ArchiveLink.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ArchiveLink.java deleted file mode 100644 index fe97fd0..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ArchiveLink.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; - -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.experimental.Accessors; - -import java.io.Serializable; - -/** - * 实体类 ArchiveLink - * - * @author daixc - */ -@Data -@Accessors(chain = true) -@ApiModel -@TableName(value = "biz_archive_link", autoResultMap = true) -public class ArchiveLink implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 编号 - */ - @ApiModelProperty(value = "编号") - private String id; - - /** - * 归档流程编号 - */ - @ApiModelProperty(value = "归档环节编号") - private String archiveFlowId; - - /** - * 归档环节编号 - */ - @ApiModelProperty(value = "归档环节编号") - private String archiveLinkId; - - /** - * 归档环节名称(文档目录) - */ - @ApiModelProperty(value = "归档环节名称") - private String archiveLinkName; - - /** - * 文档目录ID - */ - @ApiModelProperty(value = "文档目录ID") - private String archiveDirectory; - - /** - * 文档目录名称 - */ - @ApiModelProperty(value = "文档目录名称") - private String fileTypeName; - - /** - * 调用方法路径 - */ - @ApiModelProperty(value = "调用方法路径") - private String methodUrl; - - @ApiModelProperty(value = "调用方法名称") - private String methodName; - - /** - * 是否可以编辑 - */ - @ApiModelProperty(value = "是否可以编辑 0 不需要增加供应商名称 1 需要") - private String isUpload; - - @ApiModelProperty(value = "是否是附件 0 附件文件(文档中心) 1 调用接口下载文件") - private String isFile; - - @ApiModelProperty(value = "下载附件地址") - private String downloadUrl; - - @ApiModelProperty(value = "是否包含轮次") - private String isContainsRound; - - - public String getMethodUrlMethod() { - return getMethodUrl()+getMethodName(); - } -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalDetail.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalDetail.java deleted file mode 100644 index 0505d1b..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalDetail.java +++ /dev/null @@ -1,179 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; - -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; - -/** - *

- * 评标详细评审表 - *

- * - * @author dino - * @since 2020-11-19 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="BidEvalDetail对象", description="评标详细评审表") -@TableName(value = "biz_rsms_bid_eval_detail",autoResultMap = true) -public class BidEvalDetail extends BaseEntity implements Serializable { - - private static final long serialVersionUID = 1L; - - @TableId - @ApiModelProperty(value = "编号") - @JsonSerialize(using = ToStringSerializer.class) - private String id; - - @ApiModelProperty(value = "报名表id(biz_bid_register)") - @JsonSerialize(using = ToStringSerializer.class) - private String supplierRegisterId; - - @ApiModelProperty(value = "评标主表ID(biz_eval_rvw)") - @JsonSerialize(using = ToStringSerializer.class) - private String bidEvalId; - - @ApiModelProperty(value = "评标类别表ID(biz_rsms_bid_eval_category)") - @JsonSerialize(using = ToStringSerializer.class) - private String bidEvalCategoryId; - - @ApiModelProperty(value = "评审配置类别表ID(biz_rsms_review_config_category)") - @JsonSerialize(using = ToStringSerializer.class) - private String categoryId; - - @ApiModelProperty(value = "详审项类别:0:报价;1:商务;2:技术;4:工程报价 ;5:服务。初审项类别:0:形式评审;1:资格审查项;2:响应性评审;3:商务审查项;4: 技术审查项;5: 服务审查项;6: 其他审查项") - private String category; - - @ApiModelProperty(value = "评分细则表ID(biz_rsms_review_config_detail)") - @JsonSerialize(using = ToStringSerializer.class) - private String detailId; - - @ApiModelProperty(value = "详细评分标准ID(biz_rsms_bid_eval_standard)") - @JsonSerialize(using = ToStringSerializer.class) - private String standardId; - - @ApiModelProperty(value = "结果值:初审1:合格;2不合格。详审:合计") - private String resultValue; - - @ApiModelProperty(value = "评分详情") - private String detailValue; - - @ApiModelProperty(value = "权重") - private Float weights; - - @ApiModelProperty(value = "备注") - private String remarks; - - - - - public static long getSerialVersionUID() { - return serialVersionUID; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getSupplierRegisterId() { - return supplierRegisterId; - } - - public void setSupplierRegisterId(String supplierRegisterId) { - this.supplierRegisterId = supplierRegisterId; - } - - public String getBidEvalId() { - return bidEvalId; - } - - public void setBidEvalId(String bidEvalId) { - this.bidEvalId = bidEvalId; - } - - public String getBidEvalCategoryId() { - return bidEvalCategoryId; - } - - public void setBidEvalCategoryId(String bidEvalCategoryId) { - this.bidEvalCategoryId = bidEvalCategoryId; - } - - public String getCategoryId() { - return categoryId; - } - - public void setCategoryId(String categoryId) { - this.categoryId = categoryId; - } - - public String getCategory() { - return category; - } - - public void setCategory(String category) { - this.category = category; - } - - public String getDetailId() { - return detailId; - } - - public void setDetailId(String detailId) { - this.detailId = detailId; - } - - public String getStandardId() { - return standardId; - } - - public void setStandardId(String standardId) { - this.standardId = standardId; - } - - public String getResultValue() { - return resultValue; - } - - public void setResultValue(String resultValue) { - this.resultValue = resultValue; - } - - public String getDetailValue() { - return detailValue; - } - - public void setDetailValue(String detailValue) { - this.detailValue = detailValue; - } - - public Float getWeights() { - return weights; - } - - public void setWeights(Float weights) { - this.weights = weights; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalDetailDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalDetailDTO.java deleted file mode 100644 index 1711528..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalDetailDTO.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.util.List; - -/** - *

- * 评标详细评审表 - *

- * - * @author dino - * @since 2020-11-19 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="BidEvalDetailDTO对象", description="评标详细评审表DTO") -public class BidEvalDetailDTO extends BidEvalDetail implements Serializable { - - private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "评审轮次ID") - @JsonSerialize(using = ToStringSerializer.class) - private String reviewTurnId; - - @ApiModelProperty(value = "轮次数") - private Integer reviewTurnSort; - - @ApiModelProperty(value = "评审室Id") - @JsonSerialize(using = ToStringSerializer.class) - private String assessRoomId; - - @ApiModelProperty(value = "评审室序号") - @JsonSerialize(using = ToStringSerializer.class) - private Integer assessRoomSort; - - @ApiModelProperty(value = "评审类型(1:初审,2:详细评审)") - private String reviewType; - - @JsonInclude(value = JsonInclude.Include.NON_EMPTY) - @ApiModelProperty(value = "供应商ID") - private List supplierRegisterIds; - - - - - public String getReviewTurnId() { - return reviewTurnId; - } - - public void setReviewTurnId(String reviewTurnId) { - this.reviewTurnId = reviewTurnId; - } - - public Integer getReviewTurnSort() { - return reviewTurnSort; - } - - public void setReviewTurnSort(Integer reviewTurnSort) { - this.reviewTurnSort = reviewTurnSort; - } - - public String getAssessRoomId() { - return assessRoomId; - } - - public void setAssessRoomId(String assessRoomId) { - this.assessRoomId = assessRoomId; - } - - public Integer getAssessRoomSort() { - return assessRoomSort; - } - - public void setAssessRoomSort(Integer assessRoomSort) { - this.assessRoomSort = assessRoomSort; - } - - public String getReviewType() { - return reviewType; - } - - public void setReviewType(String reviewType) { - this.reviewType = reviewType; - } - - public List getSupplierRegisterIds() { - return supplierRegisterIds; - } - - public void setSupplierRegisterIds(List supplierRegisterIds) { - this.supplierRegisterIds = supplierRegisterIds; - } -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizBidOpenroom.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizBidOpenroom.java deleted file mode 100644 index 4e66274..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizBidOpenroom.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; - -import com.baomidou.mybatisplus.annotation.TableName; -import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; -import lombok.experimental.Accessors; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * 实体类 BizBidOpenroom - * - * @auto.generated - */ -@Data -@Accessors(chain = true) -@TableName(value = "biz_bid_openroom", autoResultMap = true) -public class BizBidOpenroom extends BaseEntity implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 开标室id - */ - private String id; - /** - * 评审室id - */ - private String assessRoomId; - /** - * 评审室类型 1、资审 2、评审 - */ - private Integer roomType; - - /** - * 评审轮次id - */ - private String turnId; - - /** - * 轮次 - */ - private String turnSort; - - /** - * 项目id - */ - private String projectId; - - /** - * 项目名称 - */ - private String projectName; - - /** - * 项目编号 - */ - private String projectNo; - - /** - * 标段id - */ - private String sectionId; - - /** - * 标段名称 - */ - private String sectionName; - - /** - * 标段编号 - */ - private String sectionNo; - /** - * 开标室状态 0未开标 1、开标 - */ - private String roomState; - /** - * 解封状态(0、为解封 1、解封) - */ - private String unsealState; - - /** - * 开标室备注 - */ - private String remarks; - - /** - * 开标时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime opingTime; - /** - * 开标时限 0 未设置 - */ - private String opingTimeLimit; - /** - * 开标结束时间 通过时限计算 - */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime opingEndTime; - - - -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizExportDict.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizExportDict.java index f3bd1ae..deea169 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizExportDict.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BizExportDict.java @@ -2,7 +2,6 @@ package com.chinaunicom.mall.ebtp.extend.export.bean; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; -import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/CbpsExportData.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/CbpsExportData.java similarity index 88% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/CbpsExportData.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/CbpsExportData.java index 011eb90..c07cecf 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/CbpsExportData.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/CbpsExportData.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.entity; +package com.chinaunicom.mall.ebtp.extend.export.bean; import lombok.Data; import lombok.experimental.Accessors; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ExportParam.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ExportParam.java index 244b4f5..d75c803 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ExportParam.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ExportParam.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; +import java.util.List; + /** * 参数 */ @@ -13,6 +15,8 @@ import lombok.experimental.Accessors; @ApiModel("参数") public class ExportParam { + private String id; + private String assessRoomId; private String reviewTurnId; @@ -27,6 +31,6 @@ public class ExportParam { @ApiModelProperty(value = "类型id") private String reviewType; - + private List userList; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/ExportTableData.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ExportTableData.java similarity index 91% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/ExportTableData.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ExportTableData.java index 9044453..6ec7272 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/ExportTableData.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ExportTableData.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.entity; +package com.chinaunicom.mall.ebtp.extend.export.bean; import com.deepoove.poi.data.CellRenderData; @@ -30,5 +30,4 @@ public class ExportTableData implements Serializable { private MergeCellRule rowMerge; - } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/JgdfExportData.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/JgdfExportData.java new file mode 100644 index 0000000..5bd4d0a --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/JgdfExportData.java @@ -0,0 +1,39 @@ +package com.chinaunicom.mall.ebtp.extend.export.bean; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class JgdfExportData { + + private String index; + + /** + * 应答人名称 + */ + private String companyName; + + /** + * 报价 + */ + private String bj; + /** + * 评审价 + */ + private String psj; + /** + * 最低价 + */ + private String zdj; + /** + * 平均价 + */ + private String pjj; + /** + * 报价得分 + */ + private String bjdf; + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/BidOpenRecordExportData.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/OpenRecordExportData.java similarity index 64% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/BidOpenRecordExportData.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/OpenRecordExportData.java index c9eca99..f4a0cf5 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/BidOpenRecordExportData.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/OpenRecordExportData.java @@ -1,14 +1,11 @@ -package com.chinaunicom.mall.ebtp.extend.export.entity; +package com.chinaunicom.mall.ebtp.extend.export.bean; import com.deepoove.poi.expression.Name; -import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.experimental.Accessors; -import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; -import java.time.LocalDateTime; /** @@ -16,7 +13,7 @@ import java.time.LocalDateTime; */ @Data @Accessors(chain = true) -public class BidOpenRecordExportData implements Serializable { +public class OpenRecordExportData implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/dao/BizExportDictMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/dao/BizExportDictMapper.java index 946adf2..4edf3ae 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/dao/BizExportDictMapper.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/dao/BizExportDictMapper.java @@ -11,5 +11,5 @@ public interface BizExportDictMapper extends IBaseMapper { public List selectDictList(@Param("type") String type); - + } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/dao/mapper/BizExportDictMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/dao/mapper/BizExportDictMapper.xml index 29394d0..24717c5 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/dao/mapper/BizExportDictMapper.xml +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/dao/mapper/BizExportDictMapper.xml @@ -4,13 +4,13 @@ - - - - - - - + + + + + + + @@ -25,6 +25,6 @@ SELECT `id`, `dic_name`, `path`, `level`, `url` FROM `biz_export_dict` where active = 1 AND (method_dict = #{type} OR method_dict = '0') - ORDER BY sort + ORDER BY id \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/enums/ExportExceptionEnum.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/enums/ExportExceptionEnum.java index 99cba84..1061ca6 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/enums/ExportExceptionEnum.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/enums/ExportExceptionEnum.java @@ -9,7 +9,6 @@ import lombok.Getter; public enum ExportExceptionEnum implements BusinessExceptionAssert { - /** * 方法不存在 */ diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/ExportCommonFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/ExportCommonFeignService.java index 479b706..278f122 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/ExportCommonFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/ExportCommonFeignService.java @@ -1,13 +1,9 @@ package com.chinaunicom.mall.ebtp.extend.export.service.common; -import com.chinaunicom.mall.ebtp.extend.feign.entity.BidEvalDetailSummaryVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.SupplierRegisterVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; -import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ResultDetailVO; import com.chinaunicom.mall.ebtp.extend.feign.entity.*; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.*; import java.util.List; import java.util.Map; @@ -17,6 +13,14 @@ import java.util.Map; */ public interface ExportCommonFeignService { + /** + * 根据id 查询报表打印字典项名称 + * + * @param id + * @return + */ + String exportDictName(String id, String defaultName); + /** * 查询用户信息 */ @@ -49,6 +53,7 @@ public interface ExportCommonFeignService { List tenderGetSupplierRegisterByRoomId(String roomId); // ------------------------------------------------ rsms -------------------------------- + /** * 查询初审汇总数据 * @@ -56,13 +61,7 @@ public interface ExportCommonFeignService { * @return */ List rsmsFindScoreEarlySummary(ExportParam param); - /** - * 评委供应商 - * - * @param param - * @return - */ - List findRegisterAndUser(ExportParam param); + /** * 打分汇总表 * @@ -70,6 +69,23 @@ public interface ExportCommonFeignService { * @return */ Map> exportScoreSummary(ExportParam param); + + /** + * 价格打分表 + * + * @param param + * @return + */ + List exportPrice(ExportParam param); + + /** + * 专家个人打分表 + * + * @param param + * @return + */ + + Map> exportDetail(ExportParam param); // ------------------------------------------------ rsms end -------------------------------- /** @@ -98,6 +114,15 @@ public interface ExportCommonFeignService { Map respsGetOpenTenderList(ExportParam param); + /** + * 查询供应商报价 + * + * @param tdocPara assessRoomId 评审室id turnSort 轮次序号 + * @return title-表格标题,dataDecrypt-解密状态id、status dataQuote-报价信息 + */ + List respsGetQuoteByRoomIdAndTurnSort(ExportParam param); + + /** * 通过room_id查询评审室信息 * @@ -105,4 +130,5 @@ public interface ExportCommonFeignService { * @return */ BizAssessRoom processGetRoomInfoById(String roomId); + } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/impl/ExportCommonFeignServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/impl/ExportCommonFeignServiceImpl.java index 686e160..d3cf265 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/impl/ExportCommonFeignServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/impl/ExportCommonFeignServiceImpl.java @@ -2,24 +2,18 @@ package com.chinaunicom.mall.ebtp.extend.export.service.common.impl; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalInfoDTO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.BidEvalDetailSummaryVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.SupplierRegisterVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; +import com.chinaunicom.mall.ebtp.extend.export.bean.BizExportDict; import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; -import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ResultDetailVO; +import com.chinaunicom.mall.ebtp.extend.export.service.dict.IBizExportDictService; import com.chinaunicom.mall.ebtp.extend.feign.client.*; import com.chinaunicom.mall.ebtp.extend.feign.entity.*; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 报表导出通用feign接口调用类 @@ -29,6 +23,22 @@ import java.util.Map; public class ExportCommonFeignServiceImpl implements ExportCommonFeignService { + @Autowired + private IBizExportDictService exportDictService; + + /** + * 根据id 查询报表打印字典项名称 + * + * @param id + * @param defaultName + * @return + */ + @Override + public String exportDictName(String id, String defaultName) { + BizExportDict dict = exportDictService.getById(id); + return Optional.ofNullable(Optional.ofNullable(dict).orElseGet(BizExportDict::new).getDicName()).orElse(defaultName); + } + @Autowired private UsercenterFeignService usercenterFeignService; @@ -102,7 +112,7 @@ public class ExportCommonFeignServiceImpl implements ExportCommonFeignService { return response.getData(); } -// ------------------------------------------------ rsms -------------------------------- + // ------------------------------------------------ rsms -------------------------------- @Autowired private RsmsFeignService rsmsFeignService; @@ -121,25 +131,6 @@ public class ExportCommonFeignServiceImpl implements ExportCommonFeignService { return response.getData(); } - /** - * 评委供应商 - * - * @param param - * @return - */ - @Override - public List findRegisterAndUser(ExportParam param) { - BidEvalInfoDTO bidEvalInfoDTO = new BidEvalInfoDTO(); - bidEvalInfoDTO.setAssessRoomId(param.getAssessRoomId()); - bidEvalInfoDTO.setReviewTurnId(param.getReviewTurnId()); - bidEvalInfoDTO.setReviewType(param.getReviewType()); - //所有评委数据源 - BaseResponse> response = rsmsFeignService.findRegisterAndUser(bidEvalInfoDTO); - if (response == null || response.getData() == null) { - return new ArrayList<>(); - } - return response.getData(); - } /** * 打分汇总表 @@ -156,7 +147,38 @@ public class ExportCommonFeignServiceImpl implements ExportCommonFeignService { return response.getData(); } - // ------------------------------------------------ rsms end -------------------------------- + /** + * 价格打分表 + * + * @param param + * @return + */ + @Override + public List exportPrice(ExportParam param) { + BaseResponse> response = rsmsFeignService.exportPrice(param.getAssessRoomId()); + if (response == null || response.getData() == null) { + return new ArrayList<>(); + } + return response.getData(); + } + + /** + * 专家个人打分表 + * + * @param param + * @return + */ + @Override + public Map> exportDetail(ExportParam param) { + BidEvalCategoryDTO bidEvalCategoryDTO = new BidEvalCategoryDTO(); + bidEvalCategoryDTO.setAssessRoomId(param.getAssessRoomId()).setUserIds(param.getUserList()); + BaseResponse>> response = rsmsFeignService.exportDetail(bidEvalCategoryDTO); + if (response == null || response.getData() == null) { + return new HashMap<>(); + } + return response.getData(); + } + /** * 通过评审室Id查询评委会成员数据及签到数据 * @@ -187,6 +209,7 @@ public class ExportCommonFeignServiceImpl implements ExportCommonFeignService { return response.getData(); } + // ------------------------------------------------ rsms end -------------------------------- @Autowired private RespsFeignService respsFeignService; @@ -209,6 +232,21 @@ public class ExportCommonFeignServiceImpl implements ExportCommonFeignService { return response.getData(); } + /** + * 查询供应商报价 + * + * @param param@return title-表格标题,dataDecrypt-解密状态id、status dataQuote-报价信息 + */ + @Override + public List respsGetQuoteByRoomIdAndTurnSort(ExportParam param) { + Tdoc tdoc = new Tdoc(); + tdoc.setAssessRoomId(param.getAssessRoomId()); + BaseResponse> response = respsFeignService.getQuoteByRoomIdAndTurnSort(tdoc); + if (response == null || response.getData() == null) { + return new ArrayList<>(); + } + return response.getData(); + } @Autowired private ProcessFeignService processFeignService; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/dict/IBizExportDictService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/dict/IBizExportDictService.java index 91264e3..14a098a 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/dict/IBizExportDictService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/dict/IBizExportDictService.java @@ -18,5 +18,5 @@ public interface IBizExportDictService extends IBaseService { /** * 查询list */ - public Map> getList(String roomId); + public Map> getList(String roomId); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/dict/impl/BizExportDictServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/dict/impl/BizExportDictServiceImpl.java index 9a1b629..984e872 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/dict/impl/BizExportDictServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/dict/impl/BizExportDictServiceImpl.java @@ -2,19 +2,21 @@ package com.chinaunicom.mall.ebtp.extend.export.service.dict.impl; import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl; -import com.chinaunicom.mall.ebtp.extend.export.bean.*; +import com.chinaunicom.mall.ebtp.extend.export.bean.BizExportDict; import com.chinaunicom.mall.ebtp.extend.export.dao.BizExportDictMapper; -import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectRecordVO; +import com.chinaunicom.mall.ebtp.extend.export.service.dict.IBizExportDictService; import com.chinaunicom.mall.ebtp.extend.feign.client.ProcessFeignService; import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; -import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; -import com.chinaunicom.mall.ebtp.extend.export.service.dict.IBizExportDictService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectRecordVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.*; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -30,8 +32,6 @@ public class BizExportDictServiceImpl extends BaseServiceImpl list = baseMapper.selectDictList(proj.getBidMethodDict()); @@ -57,19 +53,7 @@ public class BizExportDictServiceImpl extends BaseServiceImpl> resultsMap = new HashMap<>(); - //是否包含开标阶段 - boolean toInitialOpenRoom = "procurement_mode_1".equals(proj.getBidMethodDict()) || "procurement_mode_2".equals(proj.getBidMethodDict()); - if ("procurement_mode_3".equals(proj.getBidMethodDict())) { - if ("selection_method_1".equals(proj.getBiddingSignDict())) { - toInitialOpenRoom = true; - } - } - for (BizExportDict bizExportDict : level1) { - //不含开标阶段 100 = 开标阶段 - if (!toInitialOpenRoom && bizExportDict.getId().equals(100)) { - continue; - } // 评审室未结束 不拼接评审打分等数据表 // if (room.getStatus() < 3 && !bizExportDict.getId().equals(100)) { // continue; @@ -78,70 +62,15 @@ public class BizExportDictServiceImpl extends BaseServiceImpl f.getPath().equals(String.valueOf(bizExportDict.getId()))) - .map(m -> m.setUrl(m.getUrl() + "?projectId=" + proj.getId() + "§ionId=" + room.getSectionId() + "&assessRoomId=" + roomId) + .map(m -> m.setUrl(m.getUrl() + "?id=" + m.getId() + "&projectId=" + proj.getId() + "§ionId=" + room.getSectionId() + "&assessRoomId=" + roomId) .setOnClick(true)) .collect(Collectors.toList()) ); } - - //初审数据url -// String isReviewMethod = room.getRoomType().equals(CommonConstants.ROOM_TYPE_1) ? "1" : "0"; -// List archiveLinks = getFirstArchiveLinks(); -// Map> firstRvwMap = rsmsFeignService.findEarlyArchiveList(room.getSectionId(), isReviewMethod, archiveLinks).getData(); -// //详审数据url -// archiveLinks = getDetailArchiveLinks(); -// Map> detailRvwMap = rsmsFeignService.findDetailArchiveList(room.getSectionId(), isReviewMethod, archiveLinks).getData(); -// -// -// resultsMap.forEach((key, value) -> { -// value.forEach(bizExportDict -> { -// if ("1".equals(bizExportDict.getUrl())) { -// //查询初审报表 -// Optional opt = firstRvwMap.get(bizExportDict.getUrl()).stream().filter(f -> f.getAssessRoomId().equals(roomId)).findFirst(); -// opt.ifPresent(o -> bizExportDict.setUrl(o.getArchiveFileUrl()).setOnClick(true)); -// } else if (bizExportDict.getUrl().length() < 5) { -// //查询详审报表 -// Optional opt = detailRvwMap.get(bizExportDict.getUrl()).stream().filter(f -> f.getAssessRoomId().equals(roomId)).findFirst(); -// opt.ifPresent(o -> bizExportDict.setUrl(o.getArchiveFileUrl()).setOnClick(true)); -// } else { -// String sbl = bizExportDict.getUrl() + -// "?assessRoomId=" + roomId + -//// "&reviewTurnId=" + v.getReviewTurnId() + -// "&projectId=" + proj.getId() + -// "§ionId=" + section.getId() + -// "&reviewTurnSort=1"; -// bizExportDict.setUrl(sbl).setOnClick(true); -// } -// }); -// //如果没进行初审或详审 则删除相关报表 length < 5 为虚数 -// value.removeIf(bizExportDict -> bizExportDict.getUrl().length() < 5); -// }); -// //删除value为空的key -// resultsMap.values().removeIf(List::isEmpty); + //删除value为空的key + resultsMap.values().removeIf(List::isEmpty); return resultsMap; } - private List getFirstArchiveLinks() { - List archiveLinks = new ArrayList<>(); - //初步评审表URL - archiveLinks.add(new ArchiveLink().setId("1").setArchiveDirectory("1")); - return archiveLinks; - } - - private List getDetailArchiveLinks() { - List archiveLinks = new ArrayList<>(); - //详细评审表URL -// archiveLinks.add(new ArchiveLink().setId("2").setArchiveDirectory("2")); - //专家打分表URL - archiveLinks.add(new ArchiveLink().setId("3").setArchiveDirectory("3")); - //价格打分表URL - archiveLinks.add(new ArchiveLink().setId("4").setArchiveDirectory("4")); - //打分汇总表URL - archiveLinks.add(new ArchiveLink().setId("5").setArchiveDirectory("5")); - //评审报告URL -// archiveLinks.add(new ArchiveLink().setId("6").setArchiveDirectory("6")); - return archiveLinks; - } - } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/BidOpenRecordImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/BidOpenRecordImpl.java index e542213..e340337 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/BidOpenRecordImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/BidOpenRecordImpl.java @@ -3,8 +3,8 @@ package com.chinaunicom.mall.ebtp.extend.export.service.impl; import cn.hutool.core.date.DateUtil; import com.chinaunicom.mall.ebtp.common.util.JsonUtils; import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; -import com.chinaunicom.mall.ebtp.extend.export.entity.BidOpenRecordExportData; -import com.chinaunicom.mall.ebtp.extend.export.entity.ExportTableData; +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportTableData; +import com.chinaunicom.mall.ebtp.extend.export.bean.OpenRecordExportData; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; import com.chinaunicom.mall.ebtp.extend.export.service.policy.DetailTablePolicy; @@ -23,7 +23,7 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.File; +import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.time.LocalDateTime; import java.util.ArrayList; @@ -60,16 +60,16 @@ public class BidOpenRecordImpl implements ExportService { public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { //查询包 ProjectSectionVO section = commonFeignService.projectGetSectionById(param.getSectionId()); + //查询项目 ProjectRecordVO proj = commonFeignService.projectGetProjById(section.getProjectId()); //供应商信息 List suppliers = commonFeignService.tenderGetSupplierRegisterByRoomId(param.getAssessRoomId()); - Map openTenderList = commonFeignService.respsGetOpenTenderList(param); - BidOpenRecordExportData data = new BidOpenRecordExportData(); + OpenRecordExportData data = new OpenRecordExportData(); data.setProjName(proj.getProjectName()) .setProjNum(proj.getProjectBizNum()) .setBidNum(section.getBidSectBizNum()); @@ -135,12 +135,13 @@ public class BidOpenRecordImpl implements ExportService { data.setTableData(tableData.setCells(cells).setRows(rows).setCellMerge(hangBuild)) .setOpenTime(DateUtil.format(LocalDateTime.now(), DATE_FORMATTER)); -// InputStream file = templateFileService.getExportTemplet("bidOpenRecord"); - File file = getExportTemplet("开标记录表.docx"); + InputStream file = templateFileService.getExportTemplet("bidOpenRecord"); +// File file = getExportTemplet("开标记录表.docx"); Configure config = Configure.builder().bind("detail_table", new DetailTablePolicy()).build(); XWPFTemplate template = XWPFTemplate.compile(file, config).render(data); - String fileName = new String("开标记录表.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); + String dictName = commonFeignService.exportDictName(param.getId(), "开标记录表") + ".docx"; + String fileName = new String(dictName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); this.write(template, fileName, response); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/CbpsExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/CbpsExportServiceImpl.java index a8a8838..1d64dc2 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/CbpsExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/CbpsExportServiceImpl.java @@ -4,12 +4,16 @@ import com.chinaunicom.mall.ebtp.common.poiExport.constant.ExportConstant; import com.chinaunicom.mall.ebtp.common.poiExport.entity.ExcelTable; import com.chinaunicom.mall.ebtp.common.poiExport.entity.ExcelTd; import com.chinaunicom.mall.ebtp.common.poiExport.entity.ExcelTr; +import com.chinaunicom.mall.ebtp.extend.export.bean.CbpsExportData; import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; -import com.chinaunicom.mall.ebtp.extend.export.entity.CbpsExportData; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; -import com.chinaunicom.mall.ebtp.extend.export.service.templateFile.TemplateFileService; -import com.chinaunicom.mall.ebtp.extend.feign.entity.*; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizSupplierRegister; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectRecordVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.BidEvalEarlyJudgesSummaryVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.ReviewConfigCategoryDTO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.ReviewConfigDetailDTO; import lombok.SneakyThrows; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -43,8 +47,12 @@ public class CbpsExportServiceImpl implements ExportService { @SneakyThrows @Override public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { + //导出的表格名称 + String dictName = commonFeignService.exportDictName(param.getId(), "初步评审表"); + //查询包 ProjectSectionVO section = commonFeignService.projectGetSectionById(param.getSectionId()); + //查询项目 ProjectRecordVO proj = commonFeignService.projectGetProjById(section.getProjectId()); @@ -54,20 +62,19 @@ public class CbpsExportServiceImpl implements ExportService { //初审评分信息 List earlySummary = commonFeignService.rsmsFindScoreEarlySummary(param); - - ExcelTable table = new ExcelTable("初步评审表"); - table.setFileName("初步评审表"); + ExcelTable table = new ExcelTable(dictName); + table.setFileName(dictName); List list = new ArrayList<>(); - list.add(new ExcelTd().setTdValue("初步评审表").setCellStyleKey("export_title_1").setIsRowMerge(true).setRowMergeNum(suppliers.size() + 3)); + list.add(new ExcelTd().setTdValue(dictName).setCellStyleKey("noBorderCenter16").setIsRowMerge(true).setRowMergeNum(suppliers.size() + 3)); table.add(new ExcelTr().setExcelTdList(list)); list = new ArrayList<>(); - list.add(new ExcelTd().setTdValue("项目名称:" + proj.getProjectName()).setCellStyleKey("export_title_2").setIsRowMerge(true).setRowMergeNum(suppliers.size() + 3)); + list.add(new ExcelTd().setTdValue("项目名称:" + proj.getProjectName()).setCellStyleKey("noBorderLeft12").setIsRowMerge(true).setRowMergeNum(suppliers.size() + 3)); table.add(new ExcelTr().setExcelTdList(list)); list = new ArrayList<>(); - list.add(new ExcelTd().setTdValue("招标编号:" + proj.getProjectBizNum()).setCellStyleKey("export_title_2").setIsRowMerge(true).setRowMergeNum(suppliers.size() + 3)); + list.add(new ExcelTd().setTdValue("招标编号:" + proj.getProjectBizNum()).setCellStyleKey("noBorderLeft12").setIsRowMerge(true).setRowMergeNum(suppliers.size() + 3)); table.add(new ExcelTr().setExcelTdList(list)); list = new ArrayList<>(); @@ -88,7 +95,7 @@ public class CbpsExportServiceImpl implements ExportService { for (int i = 0; i < detailList.size(); i++) { ReviewConfigDetailDTO dto = detailList.get(i); CbpsExportData data = new CbpsExportData(); - data.setIndex(String.valueOf(i)) + data.setIndex(String.valueOf(i + 1)) .setScoreItem(dto.getScoreItem()) .setRvwStandard(dto.getRvwStandard()); //打分数据 @@ -114,13 +121,24 @@ public class CbpsExportServiceImpl implements ExportService { data.setIndex("结论") .setScoreItem("是否通过初步评审") .setRvwStandard("") - .getScores().add(summaryVO.getJudgesResult()? "合格":"不合格"); + .getScores().add(summaryVO.getJudgesResult() ? "合格" : "不合格"); } else { data.getScores().add("-"); } } } + } else { + if (i != detailList.size() - 1) { + suppliers.forEach(supplier -> data.getScores().add("")); + } else { + //汇总数据 + suppliers.forEach(supplier -> + data.setIndex("结论") + .setScoreItem("是否通过初步评审") + .setRvwStandard("") + .getScores().add("")); + } } datas.add(data); } @@ -139,7 +157,7 @@ public class CbpsExportServiceImpl implements ExportService { list = new ArrayList<>(); - list.add(new ExcelTd().setTdValue("全体评委签字:").setCellStyleKey("export_title_2").setIsRowMerge(true).setRowMergeNum(suppliers.size() + 3)); + list.add(new ExcelTd().setTdValue("全体评委签字:").setCellStyleKey("noBorderLeft12").setIsRowMerge(true).setRowMergeNum(suppliers.size() + 3)); table.add(new ExcelTr().setExcelTdList(list)); ExportConstant.exportFile(response, ExportConstant.generateExcelByTable(table)); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/DfhzExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/DfhzExportServiceImpl.java index 2898ebd..662886c 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/DfhzExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/DfhzExportServiceImpl.java @@ -3,11 +3,12 @@ package com.chinaunicom.mall.ebtp.extend.export.service.impl; import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; -import com.chinaunicom.mall.ebtp.extend.export.vo.MemberVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.SupplierRegisterVO; -import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; -import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; -import com.chinaunicom.mall.ebtp.extend.feign.entity.*; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizSupplierRegister; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectRecordVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.BidEvalDetailJudgesSummaryVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.BidEvalDetailSummaryVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.JuryPrintVO; import lombok.SneakyThrows; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; @@ -34,13 +35,6 @@ import java.util.Map; */ @Service("dfhz") public class DfhzExportServiceImpl implements ExportService { - private final RsmsFeignService rsmsFeignService; - private final ProjectFeignService projectFeignService; - - public DfhzExportServiceImpl(RsmsFeignService rsmsFeignService, ProjectFeignService projectFeignService) { - this.rsmsFeignService = rsmsFeignService; - this.projectFeignService = projectFeignService; - } @Autowired @@ -56,9 +50,12 @@ public class DfhzExportServiceImpl implements ExportService { @SneakyThrows @Override public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { + //导出的表格名称 + String dictName = commonFeignService.exportDictName(param.getId(), "打分汇总表"); //查询包 ProjectSectionVO section = commonFeignService.projectGetSectionById(param.getSectionId()); + //查询项目 ProjectRecordVO proj = commonFeignService.projectGetProjById(section.getProjectId()); @@ -66,14 +63,11 @@ public class DfhzExportServiceImpl implements ExportService { List suppliers = commonFeignService.tenderGetSupplierRegisterByRoomId(param.getAssessRoomId()); //评委 - List registerVOList = commonFeignService.findRegisterAndUser(param); + List memberAll = commonFeignService.rsmsQueryReportPrintByRoomId(param.getAssessRoomId()); //所有类型打分数据源 Map> detailList = commonFeignService.exportScoreSummary(param); - //所有评委 - List memberAll = registerVOList.stream().findFirst().get().getMembers(); - // 创建工作簿 SXSSFWorkbook wb = new SXSSFWorkbook(); //表格样式 @@ -87,14 +81,23 @@ public class DfhzExportServiceImpl implements ExportService { cellStyle.setBorderLeft(BorderStyle.THIN);//左边框 cellStyle.setBorderTop(BorderStyle.THIN);//上边框 cellStyle.setBorderRight(BorderStyle.THIN);//右边框 + cellStyle.setWrapText(true);//自动换行 SXSSFSheet sheet = wb.createSheet(); int rowIndex = 0; //头 + CellStyle titleCell = wb.createCellStyle(); + //水平居中 + titleCell.setAlignment(HorizontalAlignment.CENTER); + //垂直居中 + titleCell.setVerticalAlignment(VerticalAlignment.CENTER); SXSSFRow titleRow = createRow(sheet, rowIndex++); Cell titleCell1 = titleRow.createCell(0); titleRow.setHeightInPoints(35); - titleCell1.setCellValue("打分汇总表"); + titleCell1.setCellValue(dictName); + titleCell1.setCellStyle(titleCell); + sheet.setColumnWidth(0, 16 * 256); + //项目名称 SXSSFRow projectNameRow = sheet.createRow(rowIndex++); @@ -154,23 +157,22 @@ public class DfhzExportServiceImpl implements ExportService { } int index = 1; - for (SupplierRegisterVO vo : registerVOList) { + for (BizSupplierRegister vo : suppliers) { cellIndex = 0; row = sheet.createRow(rowIndex++); - this.createCell(row, cellIndex++, cellStyle, vo.getSupplierRegisterName()); + this.createCell(row, cellIndex++, cellStyle, vo.getCompanyName()); this.createCell(row, cellIndex++, cellStyle, String.valueOf(index++)); if (detailScore.isEmpty()) { - for (MemberVO memberVO : memberAll) { + for (JuryPrintVO memberVO : memberAll) { this.createCell(row, cellIndex++, cellStyle, "-"); - } this.createCell(row, cellIndex, cellStyle, "-"); } else { - BidEvalDetailSummaryVO detailSummary = detailScore.stream().filter(f -> f.getSupplierRegisterId().equals(vo.getSupplierRegisterId())).findFirst().get(); + BidEvalDetailSummaryVO detailSummary = detailScore.stream().filter(f -> f.getSupplierRegisterId().equals(vo.getCompanyName())).findFirst().orElseGet(BidEvalDetailSummaryVO::new); Map memberScoreMap = detailSummary.getScoreMap(); - for (MemberVO memberVO : memberAll) { + for (JuryPrintVO memberVO : memberAll) { BigDecimal score = memberScoreMap.get(memberVO.getUserId()).getScore(); this.createCell(row, cellIndex++, cellStyle, score == null ? "" : String.valueOf(score)); } @@ -197,19 +199,19 @@ public class DfhzExportServiceImpl implements ExportService { this.createCell(row, 2, cellStyle, "价格得分"); int index = 1; - for (SupplierRegisterVO vo : registerVOList) { + for (BizSupplierRegister vo : suppliers) { int cellIndex = 0; row = sheet.createRow(rowIndex++); - this.createCell(row, cellIndex++, cellStyle, vo.getSupplierRegisterName()); + this.createCell(row, cellIndex++, cellStyle, vo.getCompanyName()); this.createCell(row, cellIndex++, cellStyle, String.valueOf(index++)); if (detailScore.isEmpty()) { this.createCell(row, cellIndex++, cellStyle, "-"); } else { - BidEvalDetailSummaryVO detailSummary = detailScore.stream().filter(f -> f.getSupplierRegisterId().equals(vo.getSupplierRegisterId())).findFirst().get(); + BidEvalDetailSummaryVO detailSummary = detailScore.stream().filter(f -> f.getSupplierRegisterId().equals(vo.getId())).findFirst().orElseGet(BidEvalDetailSummaryVO::new); Map memberScoreMap = detailSummary.getScoreMap(); - for (MemberVO memberVO : memberAll) { + for (JuryPrintVO memberVO : memberAll) { if (memberScoreMap.containsKey(memberVO.getUserId())) { BigDecimal score = memberScoreMap.get(memberVO.getUserId()).getScore(); this.createCell(row, cellIndex++, cellStyle, score == null ? "" : String.valueOf(score)); @@ -234,21 +236,21 @@ public class DfhzExportServiceImpl implements ExportService { this.createCell(row, 6, cellStyle, "综合得分"); index = 1; - for (SupplierRegisterVO vo : registerVOList) { + for (BizSupplierRegister vo : suppliers) { int cellIndex = 0; row = sheet.createRow(rowIndex++); - this.createCell(row, cellIndex++, cellStyle, vo.getSupplierRegisterName()); + this.createCell(row, cellIndex++, cellStyle, vo.getCompanyName()); this.createCell(row, cellIndex++, cellStyle, String.valueOf(index++)); BigDecimal avgBd = //商务 - scoreSummaryCell(row, cellIndex++, cellStyle, "1", detailList, vo.getSupplierRegisterId()) + scoreSummaryCell(row, cellIndex++, cellStyle, "1", detailList, vo.getId()) //技术 - .add(scoreSummaryCell(row, cellIndex++, cellStyle, "2", detailList, vo.getSupplierRegisterId())) + .add(scoreSummaryCell(row, cellIndex++, cellStyle, "2", detailList, vo.getId())) //服务 - .add(scoreSummaryCell(row, cellIndex++, cellStyle, "5", detailList, vo.getSupplierRegisterId())) + .add(scoreSummaryCell(row, cellIndex++, cellStyle, "5", detailList, vo.getId())) //报价 - .add(scoreSummaryCell(row, cellIndex++, cellStyle, "0", detailList, vo.getSupplierRegisterId())); + .add(scoreSummaryCell(row, cellIndex++, cellStyle, "0", detailList, vo.getId())); this.createCell(row, cellIndex, cellStyle, String.valueOf(avgBd)); } @@ -269,23 +271,24 @@ public class DfhzExportServiceImpl implements ExportService { CellRangeAddress region = new CellRangeAddress(0, 0, 0, titles0.size() - 1); sheet.addMergedRegion(region); - String filename = "打分汇总表.xlsx"; - filename = filename.substring(0, filename.lastIndexOf('.')) + filename.substring(filename.lastIndexOf('.')); + + String filename = new String((dictName + ".xlsx").getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); response.reset(); response.setContentType("application/octet-stream;charset=utf-8"); - response.setHeader("Content-Disposition", "attachment;filename=".concat(new String(filename.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1))); + response.setHeader("Content-Disposition", "attachment;filename=" + filename); wb.write(response.getOutputStream()); + + } private SXSSFRow createRow(SXSSFSheet sheet, int rowIndex) { return sheet.createRow(rowIndex); } - private Cell createCell(Row row, int cellIndex, CellStyle style, String val) { + private void createCell(Row row, int cellIndex, CellStyle style, String val) { Cell cell = row.createCell(cellIndex); cell.setCellStyle(style); cell.setCellValue(val); - return cell; } @@ -295,7 +298,7 @@ public class DfhzExportServiceImpl implements ExportService { Cell c = row.createCell(cellIndex); c.setCellStyle(style); if (detailList.containsKey(cage)) { - BidEvalDetailSummaryVO summaryVO = detailList.get(cage).stream().filter(f -> f.getSupplierRegisterId().equals(supplierRegisterId)).findFirst().get(); + BidEvalDetailSummaryVO summaryVO = detailList.get(cage).stream().filter(f -> f.getSupplierRegisterId().equals(supplierRegisterId)).findFirst().orElseGet(BidEvalDetailSummaryVO::new); String score = "-"; if (summaryVO.getFinalScore() != null) { score = String.valueOf(summaryVO.getFinalScore()); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JgdfExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JgdfExportServiceImpl.java index 5acc7d5..85a008c 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JgdfExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JgdfExportServiceImpl.java @@ -1,25 +1,31 @@ package com.chinaunicom.mall.ebtp.extend.export.service.impl; -import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalDetailDTO; +import com.chinaunicom.mall.ebtp.common.poiExport.constant.ExportConstant; +import com.chinaunicom.mall.ebtp.common.poiExport.entity.ExcelTable; +import com.chinaunicom.mall.ebtp.common.poiExport.entity.ExcelTd; +import com.chinaunicom.mall.ebtp.common.poiExport.entity.ExcelTr; import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; -import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; -import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; +import com.chinaunicom.mall.ebtp.extend.export.bean.JgdfExportData; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; -import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterPriceScoreVO; +import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizSupplierRegister; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectRecordVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.TfileContentData; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.SupplierRegisterPriceScoreVO; import lombok.SneakyThrows; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; -import java.nio.charset.StandardCharsets; -import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; /** @@ -27,13 +33,11 @@ import java.util.*; */ @Service("jgdf") public class JgdfExportServiceImpl implements ExportService { - private final RsmsFeignService rsmsFeignService; - private final ProjectFeignService projectFeignService; - public JgdfExportServiceImpl(RsmsFeignService rsmsFeignService, ProjectFeignService projectFeignService) { - this.rsmsFeignService = rsmsFeignService; - this.projectFeignService = projectFeignService; - } + + @Autowired + private ExportCommonFeignService commonFeignService; + /** * 导出 @@ -45,200 +49,115 @@ public class JgdfExportServiceImpl implements ExportService { @SneakyThrows @Override public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { + //导出的表格名称 + String dictName = commonFeignService.exportDictName(param.getId(), "价格打分表"); - List titles = new LinkedList<>(); - titles.add("序号"); - titles.add("应答人名称"); - titles.add("投标报价(元)"); - titles.add("评审价格(元)"); - titles.add("最低报价(元)"); - titles.add("投标平均价(元)"); - titles.add("价格得分"); + //查询包 + ProjectSectionVO section = commonFeignService.projectGetSectionById(param.getSectionId()); - List keys = new LinkedList<>(); - keys.add("num"); - keys.add("ydName"); - keys.add("tbPrice"); - keys.add("psPrice"); - keys.add("lowPrice"); - keys.add("avgPrice"); - keys.add("jgScore"); + //查询项目 + ProjectRecordVO proj = commonFeignService.projectGetProjById(section.getProjectId()); - //项目和招标名称处理 - ProjectSectionVO projectSectionVO = new ProjectSectionVO(); - projectSectionVO.setId(param.getSectionId()); - BaseResponse list = projectFeignService.selectById(projectSectionVO); + //供应商信息 + List suppliers = commonFeignService.tenderGetSupplierRegisterByRoomId(param.getAssessRoomId()); + + //查询报价信息 + List prices = commonFeignService.respsGetQuoteByRoomIdAndTurnSort(param); + Map priceMap = prices.stream().collect(Collectors.toMap(TfileContentData::getTendererId, Function.identity(), (o1, o2) -> o1)); + + //报价评分 + List priceScores = commonFeignService.exportPrice(param); + Map priceScoreMap = priceScores.stream().collect(Collectors.toMap(SupplierRegisterPriceScoreVO::getSupplierRegisterId, Function.identity(), (o1, o2) -> o1)); + + ExcelTable table = new ExcelTable(dictName); + table.setFileName(dictName); + + List list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue(dictName).setCellStyleKey("noBorderCenter16").setIsRowMerge(true).setRowMergeNum(7)); + table.add(new ExcelTr().setExcelTdList(list)); + + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue("项目名称:" + proj.getProjectName()).setCellStyleKey("noBorderLeft12").setIsRowMerge(true).setRowMergeNum(7)); + table.add(new ExcelTr().setExcelTdList(list)); + + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue("招标编号:" + proj.getProjectBizNum()).setCellStyleKey("noBorderLeft12").setIsRowMerge(true).setRowMergeNum(7)); + table.add(new ExcelTr().setExcelTdList(list)); + + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue("序号")); + list.add(new ExcelTd().setTdValue("应答人名称").setWidth(16 * 256)); + list.add(new ExcelTd().setTdValue("投标报价(元)")); + list.add(new ExcelTd().setTdValue("评审价格(元)")); + list.add(new ExcelTd().setTdValue("最低报价(元)")); + list.add(new ExcelTd().setTdValue("投标平均价(元)")); + list.add(new ExcelTd().setTdValue("价格得分")); + table.add(new ExcelTr().setExcelTdList(list)); - BidEvalDetailDTO bidEvalDetailDTO = new BidEvalDetailDTO(); - bidEvalDetailDTO.setReviewTurnId(param.getReviewTurnId()); - bidEvalDetailDTO.setReviewType(param.getReviewType()); - bidEvalDetailDTO.setAssessRoomId(param.getAssessRoomId()); - //价格数据 - BaseResponse> listBaseResponse = rsmsFeignService.findPriceScoreRecord(bidEvalDetailDTO); + //最小价格 + BigDecimal minPrice = prices.stream().map(o -> new BigDecimal(o.getBidContent())).min(Comparator.naturalOrder()).orElseGet(() -> new BigDecimal(0)); + //平均价格 + BigDecimal avgPrice = prices.stream().map(o -> new BigDecimal(o.getBidContent())).reduce(BigDecimal.ZERO, BigDecimal::add). + divide(BigDecimal.valueOf(prices.isEmpty() ? 1 : prices.size()), 2, BigDecimal.ROUND_HALF_UP); + List datas = new ArrayList<>(); + for (int i = 0; i < suppliers.size(); i++) { + BizSupplierRegister supplier = suppliers.get(i); - //组装价格数据 + JgdfExportData data = new JgdfExportData(); + data.setIndex(String.valueOf(i + 1)) + .setCompanyName(supplier.getCompanyName()); - if (listBaseResponse != null && listBaseResponse.getData() != null) { - - //最小价格 - BigDecimal minPrice = listBaseResponse.getData().stream().map(SupplierRegisterPriceScoreVO::getBidContent).min(Comparator.naturalOrder()).get(); - //平均价格 - BigDecimal avgPrice = listBaseResponse.getData().stream().map(SupplierRegisterPriceScoreVO::getBidContent).reduce(BigDecimal.ZERO, BigDecimal::add). - divide(BigDecimal.valueOf(listBaseResponse.getData().size()), 2, BigDecimal.ROUND_HALF_UP); - - ArrayList> maps = new ArrayList<>(); - - for (int i = 0; i < listBaseResponse.getData().size(); i++) { - Map data = new HashMap<>(); - data.put("num", i + 1); - data.put("ydName", listBaseResponse.getData().get(i).getSupplierRegisterName()); - data.put("tbPrice", listBaseResponse.getData().get(i).getBidContent()); - data.put("psPrice", listBaseResponse.getData().get(i).getEvaluatingContent()); - if (i == 0) { - data.put("lowPrice", minPrice); - data.put("avgPrice", avgPrice); + if (priceMap.containsKey(supplier.getId())) { + TfileContentData tfileContentData = priceMap.get(supplier.getId()); + data.setBj(tfileContentData.getBidContent()) + .setPsj(tfileContentData.getEvaluatingContent()) + .setZdj(String.valueOf(minPrice)) + .setPjj(String.valueOf(avgPrice)); + if (priceScoreMap.containsKey(supplier.getId())) { + data.setBjdf(priceScoreMap.get(supplier.getId()).getPriceScore()); } else { - data.put("lowPrice", ""); - data.put("avgPrice", ""); + data.setBjdf(""); } - data.put("jgScore", listBaseResponse.getData().get(i).getPriceScore()); - maps.add(data); + } else { + data.setBj("") + .setPsj("") + .setZdj("") + .setPjj("") + .setBjdf(""); } - - // 创建工作簿 - SXSSFWorkbook wb = new SXSSFWorkbook(); - //表格样式 - CellStyle cellStyle = wb.createCellStyle(); - //水平居中 - cellStyle.setAlignment(HorizontalAlignment.CENTER); - //垂直居中 - cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); - //边框 - cellStyle.setBorderBottom(BorderStyle.THIN); //下边框 - cellStyle.setBorderLeft(BorderStyle.THIN);//左边框 - cellStyle.setBorderTop(BorderStyle.THIN);//上边框 - cellStyle.setBorderRight(BorderStyle.THIN);//右边框 - - // 创建表格, - Sheet sheet = wb.createSheet("价格打分"); - sheet.createFreezePane(1, 1); - - int rowIndex = 0; - int colIndex = 0; - - // 价格打分 - CellRangeAddress region = new CellRangeAddress(0, 0, 0, 6); - sheet.addMergedRegion(region); - Row title0 = sheet.createRow(rowIndex++); - Cell titleCell0 = title0.createCell(0); - title0.setHeightInPoints(35); - titleCell0.setCellValue("价格打分表"); - titleCell0.setCellStyle(cellStyle); - //项目名称 - CellRangeAddress region1 = new CellRangeAddress(1, 1, 0, 6); - sheet.addMergedRegion(region1); - Row title1 = sheet.createRow(rowIndex++); - Cell titleCell1 = title1.createCell(0); - titleCell1.setCellValue("项目名称 : " + list.getData().getProjectName()); - //招标编号 - CellRangeAddress region2 = new CellRangeAddress(2, 2, 0, 6); - sheet.addMergedRegion(region2); - Row title2 = sheet.createRow(rowIndex++); - Cell titleCell2 = title2.createCell(0); - titleCell2.setCellValue("招标编号 : " + list.getData().getBidSectBizNum()); - - //标题行 - Row titleRow = sheet.createRow(rowIndex++); - // 设置高度为30 - titleRow.setHeightInPoints(30); - - for (String title : titles) { - sheet.setColumnWidth(colIndex, 17 * 256); - Cell titleCell = titleRow.createCell(colIndex++); - titleCell.setCellValue(title); - //设置样式 - titleCell.setCellStyle(cellStyle); - } - - - // 遍历结果数据 - for (Map item : maps) { - // 创建数据行 - Row activityRow = sheet.createRow(rowIndex++); - // 重置列索引 - colIndex = 0; - for (String key : keys) { - String value = item.get(key).toString(); - Cell valueCell = activityRow.createCell(colIndex++); - valueCell.setCellValue(value); - valueCell.setCellStyle(cellStyle);//设置样式 - } - - } - - - CellRangeAddress region3 = new CellRangeAddress(4, (4 + maps.size() - 1), 4, 4); - sheet.addMergedRegion(region3); - - CellRangeAddress region4 = new CellRangeAddress(4, (4 + maps.size() - 1), 5, 5); - sheet.addMergedRegion(region4); - - - //价格打分说明 - CellStyle cellStyle0 = wb.createCellStyle(); - //边框 - cellStyle0.setBorderBottom(BorderStyle.THIN); //下边框 - cellStyle0.setBorderLeft(BorderStyle.THIN);//左边框 - cellStyle0.setBorderTop(BorderStyle.THIN);//上边框 - cellStyle0.setBorderRight(BorderStyle.THIN);//右边框 - cellStyle0.setVerticalAlignment(VerticalAlignment.CENTER); - String description = "价格打分说明 :"; - CellRangeAddress region5 = new CellRangeAddress((4 + maps.size()), (4 + maps.size()), 0, 6); - sheet.addMergedRegion(region5); - Row titleLast2 = sheet.createRow(rowIndex++); - titleLast2.setHeightInPoints(40); - for (int i = 0; i < 7; i++) { - Cell valueCell = titleLast2.createCell(i); - if (i == 0) { - valueCell.setCellValue(description); - } else { - valueCell.setCellValue(""); - } - valueCell.setCellStyle(cellStyle0); - } - - - //签名行 - Row titleLast1 = sheet.createRow(rowIndex++); - Cell titleCellLast1 = titleLast1.createCell(0); - titleCellLast1.setCellValue("全体委员签字 :"); - CellRangeAddress region6 = new CellRangeAddress((4 + maps.size() + 1), (4 + maps.size() + 1), 0, 6); - sheet.addMergedRegion(region6); - //时间行 - CellStyle cellStyle1 = wb.createCellStyle(); - cellStyle1.setVerticalAlignment(VerticalAlignment.CENTER); - cellStyle1.setAlignment(HorizontalAlignment.RIGHT); - Row title6 = sheet.createRow(rowIndex++); - Cell titleCell6 = title6.createCell(0); - Date date = new Date(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy 年 MM 月 dd 日 "); - titleCell6.setCellValue("日期: " + sdf.format(date)); - titleCell6.setCellStyle(cellStyle1); - CellRangeAddress region7 = new CellRangeAddress(rowIndex - 1, rowIndex - 1, 0, 6); - sheet.addMergedRegion(region7); - - String filename = "价格打分.xlsx"; - filename = filename.substring(0, filename.lastIndexOf('.')) + filename.substring(filename.lastIndexOf('.')); - response.reset(); - response.setContentType("application/octet-stream;charset=utf-8"); - response.setHeader("Content-Disposition", "attachment;filename=".concat(new String(filename.getBytes(StandardCharsets.UTF_8), "ISO8859-1"))); - wb.write(response.getOutputStream()); - + datas.add(data); } -// return BaseResponse.fail(ERROR_MESSAGE); + + for (JgdfExportData data : datas) { + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue(data.getIndex())); + list.add(new ExcelTd().setTdValue(data.getCompanyName())); + list.add(new ExcelTd().setTdValue(data.getBj())); + list.add(new ExcelTd().setTdValue(data.getPsj())); + list.add(new ExcelTd().setTdValue(data.getZdj()).setColEqMerge(true)); + list.add(new ExcelTd().setTdValue(data.getPjj()).setColEqMerge(true)); + list.add(new ExcelTd().setTdValue(data.getBjdf())); + table.add(new ExcelTr().setExcelTdList(list)); + } + + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue("注:根据具体项目情况自行调整。").setCellStyleKey("noBorderLeft12").setIsRowMerge(true).setRowMergeNum(7)); + table.add(new ExcelTr().setExcelTdList(list)); + + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue("全体评委签字:").setCellStyleKey("noBorderLeft12").setIsRowMerge(true).setRowMergeNum(7)); + table.add(new ExcelTr().setExcelTdList(list)); + + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue("日期:").setCellStyleKey("noBorderRight12").setIsRowMerge(true).setRowMergeNum(6)); + table.add(new ExcelTr().setExcelTdList(list)); + + + ExportConstant.exportFile(response, ExportConstant.generateExcelByTable(table)); + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesPromiseImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesPromiseImpl.java index 9815fca..464dce0 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesPromiseImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesPromiseImpl.java @@ -2,6 +2,7 @@ package com.chinaunicom.mall.ebtp.extend.export.service.impl; import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; +import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; import com.chinaunicom.mall.ebtp.extend.export.service.templateFile.TemplateFileService; import com.deepoove.poi.XWPFTemplate; import lombok.SneakyThrows; @@ -12,7 +13,6 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; -import java.io.OutputStream; import java.nio.charset.StandardCharsets; @@ -26,6 +26,9 @@ public class JudgesPromiseImpl implements ExportService { @Autowired private TemplateFileService templateFileService; + @Autowired + private ExportCommonFeignService commonFeignService; + /** * 导出 @@ -37,14 +40,14 @@ public class JudgesPromiseImpl implements ExportService { @SneakyThrows @Override public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { + //导出的表格名称 + String dictName = commonFeignService.exportDictName(param.getId(), "评标专家承诺书") + ".docx"; //文件模板从数据库或者项目位置取得 InputStream file = templateFileService.getExportTemplet("promise"); XWPFTemplate template = XWPFTemplate.compile(file); - String fileName = new String("评标专家承诺书.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); - OutputStream os = response.getOutputStream(); - response.setHeader("Content-disposition", "attachment; filename=" + fileName); - template.write(os); + String fileName = new String(dictName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); + this.write(template, fileName, response); } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesSignImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesSignImpl.java index 152d6e1..c4423d3 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesSignImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesSignImpl.java @@ -3,8 +3,9 @@ package com.chinaunicom.mall.ebtp.extend.export.service.impl; import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; -import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; +import com.chinaunicom.mall.ebtp.extend.export.service.templateFile.TemplateFileService; import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.JuryPrintVO; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.deepoove.poi.policy.HackLoopTableRenderPolicy; @@ -13,7 +14,7 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.File; +import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; @@ -30,6 +31,9 @@ public class JudgesSignImpl implements ExportService { @Autowired private ExportCommonFeignService commonFeignService; + @Autowired + private TemplateFileService templateFileService; + /** * 导出 @@ -64,13 +68,15 @@ public class JudgesSignImpl implements ExportService { put("mc", section.getProjectName()); }}; -// InputStream file = templateFileService.getExportTemplet("judgesSign"); - File file = getExportTemplet("评标委员会签字表.docx"); + InputStream file = templateFileService.getExportTemplet("judgesSign"); +// File file = getExportTemplet("评标委员会签字表.docx"); HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy(); Configure config = Configure.builder().bind("Judges", policy).build(); XWPFTemplate template = XWPFTemplate.compile(file, config).render(all); - String fileName = new String("评标委员会签字表.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); + //导出的表格名称 + String dictName = commonFeignService.exportDictName(param.getId(), "评标委员会签字表") + ".docx"; + String fileName = new String(dictName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); this.write(template, fileName, response); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesSignInImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesSignInImpl.java index 64fc605..b2d58aa 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesSignInImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesSignInImpl.java @@ -4,7 +4,7 @@ import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; import com.chinaunicom.mall.ebtp.extend.export.service.templateFile.TemplateFileService; -import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.JuryPrintVO; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.deepoove.poi.policy.HackLoopTableRenderPolicy; @@ -15,7 +15,6 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; -import java.io.OutputStream; import java.nio.charset.StandardCharsets; import java.time.format.DateTimeFormatter; import java.util.*; @@ -65,12 +64,12 @@ public class JudgesSignInImpl implements ExportService { HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy(); Configure config = Configure.builder().bind("table", policy).build(); XWPFTemplate template = XWPFTemplate.compile(file, config).render(all); + //导出的表格名称 + String dictName = commonFeignService.exportDictName(param.getId(), "评审专家签到表") + ".docx"; + String fileName = new String(dictName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); - String fileName = new String("评审专家签到表.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); + this.write(template, fileName, response); - OutputStream os = response.getOutputStream(); - response.setHeader("Content-disposition", "attachment; filename=" + fileName); - template.write(os); } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ReviewReportImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ReviewReportImpl.java index 9976f10..42648f6 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ReviewReportImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ReviewReportImpl.java @@ -5,10 +5,10 @@ import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; import com.chinaunicom.mall.ebtp.extend.export.service.templateFile.TemplateFileService; -import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ResultDetailVO; import com.chinaunicom.mall.ebtp.extend.feign.entity.BizSupplierRegister; import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectRecordVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.JuryPrintVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.ResultDetailVO; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.deepoove.poi.policy.HackLoopTableRenderPolicy; @@ -18,7 +18,7 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.File; +import java.io.InputStream; import java.math.BigDecimal; import java.nio.charset.StandardCharsets; import java.util.ArrayList; @@ -182,11 +182,12 @@ public class ReviewReportImpl implements ExportService { .build(); -// InputStream file = templateFileService.getExportTemplet("reviewReport"); - File file = getExportTemplet("评标报告.docx"); + InputStream file = templateFileService.getExportTemplet("reviewReport"); +// File file = getExportTemplet("评标报告.docx"); XWPFTemplate template = XWPFTemplate.compile(file, config).render(all); - - String fileName = new String("评标报告.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); + //导出的表格名称 + String dictName = commonFeignService.exportDictName(param.getId(), "评标报告") + ".docx"; + String fileName = new String(dictName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); this.write(template, fileName, response); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java index acf8e34..b099751 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java @@ -1,16 +1,19 @@ package com.chinaunicom.mall.ebtp.extend.export.service.impl; -import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.*; -import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; -import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; -import com.chinaunicom.mall.ebtp.extend.feign.entity.*; -import com.chinaunicom.mall.ebtp.extend.export.vo.MemberVO; +import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizSupplierRegister; +import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.BidEvalDetailVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.JuryPrintVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.ReviewConfigCategoryDTO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.ReviewConfigDetailDTO; import lombok.SneakyThrows; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -23,6 +26,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** @@ -30,13 +34,9 @@ import java.util.Map; */ @Service("zjgr") public class ZjgrExportServiceImpl implements ExportService { - private final RsmsFeignService rsmsFeignService; - private final ProjectFeignService projectFeignService; - public ZjgrExportServiceImpl(RsmsFeignService rsmsFeignService, ProjectFeignService projectFeignService) { - this.rsmsFeignService = rsmsFeignService; - this.projectFeignService = projectFeignService; - } + @Autowired + private ExportCommonFeignService commonFeignService; /** * 导出 @@ -48,42 +48,28 @@ public class ZjgrExportServiceImpl implements ExportService { @SneakyThrows @Override public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { - //查询项目名称 - ProjectSectionVO projectSectionVO = new ProjectSectionVO(); - projectSectionVO.setId(param.getSectionId()); - BaseResponse list = projectFeignService.selectById(projectSectionVO); + ProjectSectionVO section = commonFeignService.projectGetSectionById(param.getSectionId()); + //供应商信息 + List suppliers = commonFeignService.tenderGetSupplierRegisterByRoomId(param.getAssessRoomId()); - BidEvalInfoDTO bidEvalInfoDTO = new BidEvalInfoDTO(); - bidEvalInfoDTO.setAssessRoomId(param.getAssessRoomId()); - bidEvalInfoDTO.setReviewTurnId(param.getReviewTurnId()); - bidEvalInfoDTO.setReviewType(param.getReviewType()); - - //供应商 - List listBaseResponse = rsmsFeignService.findRegisterAndUser(bidEvalInfoDTO).getData(); //评委 - List members = listBaseResponse.stream().findFirst().get().getMembers(); + List members = commonFeignService.rsmsQueryReportPrintByRoomId(param.getAssessRoomId()); + param.setUserList(members.stream().map(JuryPrintVO::getUserId).collect(Collectors.toList())); - List userList = new ArrayList<>(); - for (int i = 0; i < members.size(); i++) { - String userid = members.get(i).getUserId(); - userList.add(userid); - } - BidEvalCategoryDTO bidEvalCategoryDTO = new BidEvalCategoryDTO(); - bidEvalCategoryDTO.setAssessRoomId(param.getAssessRoomId()).setUserIds(userList); - BaseResponse>> scoreRecord = rsmsFeignService.exportDetail(bidEvalCategoryDTO); - Map> map = scoreRecord.getData(); + //打分数据 + Map> map = commonFeignService.exportDetail(param); //列头 - StringBuffer titles0 = new StringBuffer("分类,项目名称,标准说明,分值"); + StringBuilder titles0 = new StringBuilder("分类,项目名称,标准说明,分值"); //供应商 顺序 ArrayList strings = new ArrayList<>(); - for (int i = 0; i < listBaseResponse.size(); i++) { - strings.add(listBaseResponse.get(i).getSupplierRegisterId()); - titles0.append(",").append(listBaseResponse.get(i).getSupplierRegisterName()); + for (BizSupplierRegister supplier : suppliers) { + strings.add(supplier.getId()); + titles0.append(",").append(supplier.getCompanyName()); } String titles = titles0.toString(); //最右侧列值 @@ -103,20 +89,14 @@ public class ZjgrExportServiceImpl implements ExportService { cellStyle.setBorderLeft(BorderStyle.THIN);//左边框 cellStyle.setBorderTop(BorderStyle.THIN);//上边框 cellStyle.setBorderRight(BorderStyle.THIN);//右边框 + cellStyle.setWrapText(true); //Sheet - for (int i = 0; i < members.size(); i++) { - String userid = members.get(i).getUserId(); - List dataList = new ArrayList<>(); - for(String method : map.keySet()) { - if (method.equals(userid)) { - dataList = map.get(method); - break; - } - } + for (JuryPrintVO member : members) { + String userid = member.getUserId(); + List dataList = map.containsKey(userid) ? map.get(userid) : new ArrayList<>(); // 创建表格 - Sheet sheet = wb.createSheet(members.get(i).getName()); - sheet.createFreezePane(1, 1); + Sheet sheet = wb.createSheet(member.getName()); int rowIndex = 0; int colIndex = 0; // 1行 @@ -125,33 +105,31 @@ public class ZjgrExportServiceImpl implements ExportService { Row title1 = sheet.createRow(rowIndex++); Cell titleCell1 = title1.createCell(0); title1.setHeightInPoints(35); - titleCell1.setCellValue(list.getData().getProjectName()); - titleCell1.setCellStyle(cellStyle); + titleCell1.setCellValue(section.getProjectName()); // 2行 CellRangeAddress region2 = new CellRangeAddress(1, 1, 0, index); sheet.addMergedRegion(region2); Row title2 = sheet.createRow(rowIndex++); Cell titleCell2 = title2.createCell(0); titleCell2.setCellValue("评委打分表"); - titleCell2.setCellStyle(cellStyle); //3行 CellRangeAddress region3 = new CellRangeAddress(2, 2, 0, index); sheet.addMergedRegion(region3); Row title3 = sheet.createRow(rowIndex++); Cell titleCell3 = title3.createCell(0); - titleCell3.setCellValue("包名 :" + list.getData().getBidSectName()); + titleCell3.setCellValue("包名 :" + section.getBidSectName()); //4行 CellRangeAddress region4 = new CellRangeAddress(3, 3, 0, index); sheet.addMergedRegion(region4); Row title4 = sheet.createRow(rowIndex++); Cell titleCell4 = title4.createCell(0); - titleCell4.setCellValue("评标委员会成员:" + members.get(i).getName()); + titleCell4.setCellValue("评标委员会成员:" + member.getName()); //5行 列头 Row titleRow5 = sheet.createRow(rowIndex++); // 设置高度为30 titleRow5.setHeightInPoints(30); for (String title : titles.split(",")) { - sheet.setColumnWidth(colIndex, 17 * 256); + sheet.setColumnWidth(colIndex, 16 * 256); Cell titleCell = titleRow5.createCell(colIndex++); titleCell.setCellValue(title); //设置样式 @@ -228,7 +206,7 @@ public class ZjgrExportServiceImpl implements ExportService { //倒第2行 Row title5 = sheet.createRow(rowIndex++); Cell titleCell5 = title5.createCell(0); - titleCell5.setCellValue("评标委员会成员(" + members.get(i).getName() + ")签字:"); + titleCell5.setCellValue("评标委员会成员(" + member.getName() + ")签字:"); CellRangeAddress region5 = new CellRangeAddress(rowIndex - 1, rowIndex - 1, 0, index); sheet.addMergedRegion(region5); //最后一行 @@ -246,11 +224,12 @@ public class ZjgrExportServiceImpl implements ExportService { } - String filename = "评标打分表.xlsx"; - filename = filename.substring(0, filename.lastIndexOf('.')) + filename.substring(filename.lastIndexOf('.')); + //导出的表格名称 + String dictName = commonFeignService.exportDictName(param.getId(), "评标打分表") + ".xlsx"; + String fileName = new String(dictName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); response.reset(); response.setContentType("application/octet-stream;charset=utf-8"); - response.setHeader("Content-Disposition", "attachment;filename=".concat(new String(filename.getBytes(StandardCharsets.UTF_8), "ISO8859-1"))); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName); wb.write(response.getOutputStream()); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/policy/DetailTablePolicy.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/policy/DetailTablePolicy.java index e69b99c..5923943 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/policy/DetailTablePolicy.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/policy/DetailTablePolicy.java @@ -1,6 +1,6 @@ package com.chinaunicom.mall.ebtp.extend.export.service.policy; -import com.chinaunicom.mall.ebtp.extend.export.entity.ExportTableData; +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportTableData; import com.deepoove.poi.data.CellRenderData; import com.deepoove.poi.data.RowRenderData; import com.deepoove.poi.policy.DynamicTableRenderPolicy; @@ -18,6 +18,7 @@ public class DetailTablePolicy extends DynamicTableRenderPolicy { private int horizonalNameIndex = 0; // 竖向填充数据所在行 private int verticallyStartIndex = 1; + public DetailTablePolicy() { } @@ -25,6 +26,7 @@ public class DetailTablePolicy extends DynamicTableRenderPolicy { this.horizonalNameIndex = horizonalNameIndex; this.verticallyStartIndex = verticallyStartIndex; } + @Override public void render(XWPFTable xwpfTable, Object o) throws Exception { if (o == null) { diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailConsistentVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailConsistentVO.java deleted file mode 100644 index 50e6288..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailConsistentVO.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.util.Map; - -/** - * 一致性检查 - * - * @author dino - * @date 2020/12/23 10:11 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="BidEvalDetailConsistentVO对象", description="一致性检查VO对象") -public class BidEvalDetailConsistentVO implements Serializable { - - @ApiModelProperty(value = "校验项") - private String scoreItem; - - @ApiModelProperty(value = "供应商名称") - private String supplierRegisterName; - - @ApiModelProperty(value = "专家评分") - private Map scoreMap; -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/ReviewFlowVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/ReviewFlowVO.java deleted file mode 100644 index da2ab93..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/ReviewFlowVO.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; - -@Data -public class ReviewFlowVO implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 项目id - */ - @ApiModelProperty(value = "项目id") - private String tpId; - - /** - * 标包id - */ - @ApiModelProperty(value = "标包id") - private String sectionId; - - /** - * 评审室ID - */ - @ApiModelProperty(value = "评审室ID") - private String assessRoomId; - - /** - * 评审室ID - */ - @ApiModelProperty(value = "评审室轮次") - private Integer assessRoomSort; - - /** - * 流程ID - */ - @ApiModelProperty(value = "流程ID") - private String flowId; - - /** - * 流程状态1:进行中;2:已结束; - */ - @ApiModelProperty(value = "流程状态-1:进行中;2:已结束;") - private Integer flowStatus; - - /** - * 轮次ID - */ - @ApiModelProperty(value = "轮次ID") - private String turnId; - - /** - * 评审轮次实例名称 - */ - @ApiModelProperty(value = "评审轮次实例名称") - private String turnName; - - /** - * 评审轮次实例顺序 - */ - @ApiModelProperty(value = "评审轮次实例顺序") - private Integer turnSort; - - /** - * 轮次状态-1:进行中;2:已结束;3:未开启; - */ - @ApiModelProperty(value = "轮次状态-1:进行中;2:已结束;3:未开启;") - private Integer turnStatus; - - /** - * 节点ID - */ - @ApiModelProperty(value = "节点ID") - private String nodeId; - - /** - * 评审节点实例顺序 - */ - @ApiModelProperty(value = "评审节点实例顺序") - private Integer nodeSort; - - /** - * 节点状态-1:进行中;2:已结束;3:未开启; - */ - @ApiModelProperty(value = "节点状态-1:进行中;2:已结束;3:未开启;") - private Integer nodeStatus; -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/ReviewResultDetailSummaryVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/ReviewResultDetailSummaryVO.java deleted file mode 100644 index 9d0c93d..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/ReviewResultDetailSummaryVO.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * 评审结果汇总 - * - * @author dino - * @date 2020/12/19 13:27 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@ApiModel(value="ReviewResultDetailSummaryVO对象", description="详审汇总提交初始化VO对象") -public class ReviewResultDetailSummaryVO implements Serializable { - - private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "报名表id(biz_bid_register)") - @JsonSerialize(using = ToStringSerializer.class) - private String supplierRegisterId; - - @ApiModelProperty(value = "供应商名称") - private String supplierRegisterName; - - @ApiModelProperty(value = "报价(元)") - private BigDecimal price; - - @ApiModelProperty(value = "评审价(元)") - private BigDecimal reviewPrice; - - @ApiModelProperty(value = "商务得分") - private BigDecimal businessScore; - - @ApiModelProperty(value = "技术得分") - private BigDecimal technologyScore; - - @ApiModelProperty(value = "服务得分") - private BigDecimal serviceScore; - - @ApiModelProperty(value = "报价分") - private BigDecimal priceScore; - - @ApiModelProperty(value = "最终得分") - private BigDecimal finalScore; -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/DocumentCenterService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/DocumentCenterService.java index 99a2aae..87fbd34 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/DocumentCenterService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/DocumentCenterService.java @@ -1,7 +1,7 @@ package com.chinaunicom.mall.ebtp.extend.feign.client; -import com.chinaunicom.mall.ebtp.extend.feign.config.FeignConfiguration; import com.chinaunicom.mall.ebtp.extend.feign.client.factory.DocumentCenterServiceFallbackFactory; +import com.chinaunicom.mall.ebtp.extend.feign.config.FeignConfiguration; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -9,31 +9,31 @@ import org.springframework.web.bind.annotation.RequestParam; /** * 连接山分的文档中心服务 - * + * * @author Ajaxfan */ @FeignClient(value = "${mconfig.feign.name.documentcenter}", - fallbackFactory = DocumentCenterServiceFallbackFactory.class, - configuration = FeignConfiguration.class) + fallbackFactory = DocumentCenterServiceFallbackFactory.class, + configuration = FeignConfiguration.class) public interface DocumentCenterService { - /** - * 通过附件id查询明细 - * - * @param fileId - * @return - */ - @RequestMapping(method = RequestMethod.POST, value = "v1.0/files/downloadFileAllStream") - String getObjectDetail(@RequestParam("fileId") String fileId); + /** + * 通过附件id查询明细 + * + * @param fileId + * @return + */ + @RequestMapping(method = RequestMethod.POST, value = "v1.0/files/downloadFileAllStream") + String getObjectDetail(@RequestParam("fileId") String fileId); - /** - * 通过附件id查询明细 - * - * @param fileId - * @return - */ - @RequestMapping(method = RequestMethod.POST, value = "v1.0/files/downloadStream") - String getFileObjectDetail(@RequestParam("fileId") String fileId); + /** + * 通过附件id查询明细 + * + * @param fileId + * @return + */ + @RequestMapping(method = RequestMethod.POST, value = "v1.0/files/downloadStream") + String getFileObjectDetail(@RequestParam("fileId") String fileId); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/OpenFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/OpenFeignService.java deleted file mode 100644 index 16cbca6..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/OpenFeignService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.feign.client; - -import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.BizBidOpenroom; -import com.chinaunicom.mall.ebtp.extend.feign.client.factory.ExportServiceOpenFallbakFactory; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.PostMapping; - -import java.util.List; - -/** - * 调用 OPEN_SERVICE - */ -@FeignClient(value = "${mconfig.feign.name.open}",fallbackFactory = ExportServiceOpenFallbakFactory.class) -public interface OpenFeignService { - - - /** - * 查询数据 - * - * @param - * @return - */ - @ApiOperation("查询数据") - @PostMapping ("/v1/bizbidopenroom/getPostlist") - BaseResponse> list(@ApiParam(value = "查询对象数据", required = false) BizBidOpenroom bizBidOpenroom); - -} - diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProcessFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProcessFeignService.java index 77247ae..23f2b48 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProcessFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProcessFeignService.java @@ -2,8 +2,8 @@ package com.chinaunicom.mall.ebtp.extend.feign.client; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; import com.chinaunicom.mall.ebtp.extend.feign.client.factory.ProcessFeignFallbackFactory; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; @@ -13,19 +13,17 @@ import org.springframework.web.bind.annotation.PathVariable; /** * 评审流程 */ -@FeignClient(value = "${mconfig.feign.name.process}", fallbackFactory = ProcessFeignFallbackFactory.class) +@FeignClient(value = "${mconfig.feign.name.process}", fallbackFactory = ProcessFeignFallbackFactory.class, url = "http://10.242.31.158:8806/biz-service-ebtp-process/") public interface ProcessFeignService { - /** * 通过room_id查询评审室信息 * * @param id - * * @return */ - @ApiOperation(value = "getById",notes = "通过ID查询评审室信息") + @ApiOperation(value = "getById", notes = "通过ID查询评审室信息") @GetMapping("/v1/bizassessroom/{id}") public BaseResponse getById(@ApiParam(value = "主键id", required = true) @PathVariable String id); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProjectFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProjectFeignService.java index bc27036..8f24ac0 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProjectFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProjectFeignService.java @@ -1,9 +1,9 @@ package com.chinaunicom.mall.ebtp.extend.feign.client; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.extend.feign.client.factory.ProjectFeignFallbackFactory; import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectRecordVO; import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; -import com.chinaunicom.mall.ebtp.extend.feign.client.factory.ProjectFeignFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -13,17 +13,17 @@ import org.springframework.web.bind.annotation.RequestBody; /** * 调用 PROJECT_SERVICE */ -@FeignClient(value = "${mconfig.feign.name.project}",fallbackFactory = ProjectFeignFallbackFactory.class,url = "http://10.242.31.158:8806/biz-service-ebtp-project/") +@FeignClient(value = "${mconfig.feign.name.project}", fallbackFactory = ProjectFeignFallbackFactory.class, url = "http://10.242.31.158:8806/biz-service-ebtp-project/") public interface ProjectFeignService { /** - * * @param projectSection 项目标段查询 * @return 返回结果 */ @PostMapping("/v1/projectSection/selectById") BaseResponse selectById(@RequestBody ProjectSectionVO projectSection); + /** * 根据id查询项目信息 * diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RespsFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RespsFeignService.java index 626618a..0f623d9 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RespsFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RespsFeignService.java @@ -3,17 +3,19 @@ package com.chinaunicom.mall.ebtp.extend.feign.client; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.feign.client.factory.ExportServiceRespsFallbakFactory; import com.chinaunicom.mall.ebtp.extend.feign.entity.Tdoc; +import com.chinaunicom.mall.ebtp.extend.feign.entity.TfileContentData; import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import java.util.List; import java.util.Map; /** * 调用 RESPS_SERVICE */ -@FeignClient(value = "${mconfig.feign.name.resps}", fallbackFactory = ExportServiceRespsFallbakFactory.class) +@FeignClient(value = "${mconfig.feign.name.resps}", fallbackFactory = ExportServiceRespsFallbakFactory.class, url = "http://10.242.31.158:8806/biz-service-ebtp-resps/") public interface RespsFeignService { /** @@ -25,4 +27,13 @@ public interface RespsFeignService { @PostMapping("/v1/tfile/getOpenTenderList") public BaseResponse getOpenTenderList(@ApiParam(value = "assessRoomId 评审室id turnSort 轮次序号", required = false) @RequestBody Tdoc tdocPara); + + /** + * 评审查看报价 + * + * @param param + * @return + */ + @PostMapping("/v1/tfile/getQuoteByRoomIdAndTurnSort") + public BaseResponse> getQuoteByRoomIdAndTurnSort(@RequestBody Tdoc param); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java index 324f79e..7ab5ae5 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java @@ -1,18 +1,15 @@ package com.chinaunicom.mall.ebtp.extend.feign.client; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.ArchiveFileReturnVO; -import com.chinaunicom.mall.ebtp.extend.export.bean.ArchiveLink; -import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalDetailDTO; -import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalInfoDTO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.*; -import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterPriceScoreVO; import com.chinaunicom.mall.ebtp.extend.feign.client.factory.ExportServiceFallback; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.*; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.cloud.openfeign.SpringQueryMap; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.Map; @@ -22,95 +19,12 @@ import java.util.Map; */ @FeignClient(value = "${mconfig.feign.name.rsms}", fallbackFactory = ExportServiceFallback.class, url = "http://127.0.0.1:10087/") public interface RsmsFeignService { - /** - * 不同供应商的打分 - * - * @param bidEvalCategoryDTO - * @return - */ - @PostMapping("/v1/bid/report/exportDetail") - BaseResponse>> exportDetail(@RequestBody BidEvalCategoryDTO bidEvalCategoryDTO); - - /** - * 不同供应商的打分 - * - * @param bidEvalDetailDTO - * @return - */ - @PostMapping("/v1/bid/eval/record/findScoreRecord") - BaseResponse> findScoreRecord(@RequestBody BidEvalDetailDTO bidEvalDetailDTO); - - /** - * 价格打分 - * - * @param bidEvalDetailDTO - * @return - */ - @PostMapping("/v1/bid/eval/record/findPriceScoreRecord") - BaseResponse> findPriceScoreRecord(@SpringQueryMap BidEvalDetailDTO bidEvalDetailDTO); @ApiOperation("报表打印-通过评审室Id查询评委会成员数据及签到数据") @GetMapping("v1/jury/report/print/{roomId}") BaseResponse> queryReportPrintByRoomId(@ApiParam(value = "roomId", required = true) @PathVariable String roomId); - /** - * 打分汇总 - * - * @param bidEvalDetailDTO - * @return - */ - @PostMapping("v1/bid/archive/findCategoryResultSummary") - BaseResponse>> findCategoryResultSummary(@RequestBody BidEvalDetailDTO bidEvalDetailDTO); - - - /** - * 初步评审表 - * - * @param sectionId 标段ID - * @param isReviewMethod 是否为资审方式 0 否 1 是 - * @param list 节点集合 - * @return com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse> - * @author dino - * @date 2021/1/19 15:08 - */ - @ApiOperation("初步评审表") - @PostMapping("/v1/bid/archive/findEarlyArchiveList") - BaseResponse>> findEarlyArchiveList(@RequestParam("sectionId") String sectionId, - @RequestParam("isReviewMethod") String isReviewMethod, - @RequestBody List list); - - /** - * 详细评审表|专家打分表|价格打分表|打分汇总表 - * - * @param sectionId 标段ID - * @param isReviewMethod 是否为资审方式 0 否 1 是 - * @param list 节点集合 - * @return com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse> - * @author dino - * @date 2021/1/19 15:08 - */ - @ApiOperation("详细评审表|专家打分表|价格打分表|打分汇总表") - @PostMapping("/v1/bid/archive/findDetailArchiveList") - BaseResponse>> findDetailArchiveList(@RequestParam("sectionId") String sectionId, - @RequestParam("isReviewMethod") String isReviewMethod, - @RequestBody List list); - - /** - * 评审报告 - * - * @param sectionId 标段ID - * @param isReviewMethod 是否为资审方式 0 否 1 是 - * @param list 节点集合 - * @return com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse> - * @author dino - * @date 2021/1/19 15:08 - */ - @ApiOperation("评审报告") - @PostMapping("/v1/bid/archive/findReviewReportArchiveList") - BaseResponse>> findReviewReportArchiveList(@RequestParam("sectionId") String sectionId, - @RequestParam("isReviewMethod") String isReviewMethod, - @RequestBody List list); /** * 通过评审室查询detail表数据 @@ -123,22 +37,8 @@ public interface RsmsFeignService { BaseResponse> get(@ApiParam(value = "评审室id", required = true) @PathVariable String assessRoomId); - - - - /** - * 评委供应商11111 - * - * @param bidEvalInfoDTO - * @return - */ -// @PostMapping("/v1/bid/archive/findRegister") - @GetMapping("/v1/bid/eval/detail/findRegister") - BaseResponse> findRegisterAndUser(@SpringQueryMap BidEvalInfoDTO bidEvalInfoDTO); - - /** - * 初审汇总111111 + * 初审汇总 * * @param roomId 评审室ID * @return @@ -149,12 +49,31 @@ public interface RsmsFeignService { /** * 打分汇总表 + * * @param roomId 评审室ID * @date 2021年4月27日 */ - @GetMapping("/exportScoreSummary/{roomId}") + @GetMapping("/v1/bid/report/exportScoreSummary/{roomId}") BaseResponse>> exportScoreSummary(@PathVariable("roomId") String roomId); + /** + * 价格打分表 + * + * @param roomId 评审室ID + * @date 2021年4月27日 + */ + @GetMapping("/v1/bid/report/exportPrice/{roomId}") + public BaseResponse> exportPrice(@PathVariable("roomId") String roomId); + + /** + * 不同供应商的打分 + * + * @param bidEvalCategoryDTO + * @return + * @date 2021年4月28日 + */ + @PostMapping("/v1/bid/report/exportDetail") + BaseResponse>> exportDetail(@RequestBody BidEvalCategoryDTO bidEvalCategoryDTO); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java index b9c5ee4..4f51e2e 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java @@ -1,8 +1,8 @@ package com.chinaunicom.mall.ebtp.extend.feign.client; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.feign.entity.BizSupplierRegister; import com.chinaunicom.mall.ebtp.extend.feign.client.factory.TenderFeignFallbackFactory; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizSupplierRegister; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; @@ -14,7 +14,7 @@ import java.util.List; /** * 调用 TENDER_SERVICE */ -@FeignClient(value = "${mconfig.feign.name.tender}", fallbackFactory = TenderFeignFallbackFactory.class,url = "http://10.242.31.158:8806/biz-service-ebtp-tender/") +@FeignClient(value = "${mconfig.feign.name.tender}", fallbackFactory = TenderFeignFallbackFactory.class, url = "http://10.242.31.158:8806/biz-service-ebtp-tender/") public interface TenderFeignService { @ApiOperation("查询评审室下初审投标状态") diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java index b826f33..e3e412e 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java @@ -2,10 +2,8 @@ package com.chinaunicom.mall.ebtp.extend.feign.client.factory; import cn.hutool.core.exceptions.ExceptionUtil; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.*; import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; -import com.chinaunicom.mall.ebtp.extend.export.vo.*; -import com.chinaunicom.mall.ebtp.extend.feign.entity.*; +import com.chinaunicom.mall.ebtp.extend.feign.entity.rsms.*; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -20,94 +18,11 @@ public class ExportServiceFallback implements FallbackFactory @Override public RsmsFeignService create(Throwable throwable) { RsmsFeignService back = new RsmsFeignService() { - @Override - public BaseResponse>> exportDetail(BidEvalCategoryDTO bidEvalCategoryDTO) { - return null; - } - - /** - * 不同供应商的打分 - * - * @param bidEvalDetailDTO - * @return - */ - @Override - public BaseResponse> findScoreRecord(BidEvalDetailDTO bidEvalDetailDTO) { - return null; - } - - /** - * 价格打分 - * - * @param bidEvalDetailDTO - * @return - */ - @Override - public BaseResponse> findPriceScoreRecord(BidEvalDetailDTO bidEvalDetailDTO) { - return null; - } - @Override public BaseResponse> queryReportPrintByRoomId(String roomId) { return null; } - /** - * 打分汇总 - * - * @param bidEvalDetailDTO - * @return - */ - @Override - public BaseResponse>> findCategoryResultSummary(BidEvalDetailDTO bidEvalDetailDTO) { - return null; - } - - /** - * 初步评审表 - * - * @param sectionId 标段ID - * @param isReviewMethod 是否为资审方式 0 否 1 是 - * @param list 节点集合 - * @return com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse> - * @author dino - * @date 2021/1/19 15:08 - */ - @Override - public BaseResponse>> findEarlyArchiveList(String sectionId, String isReviewMethod, List list) { - return null; - } - - /** - * 详细评审表|专家打分表|价格打分表|打分汇总表 - * - * @param sectionId 标段ID - * @param isReviewMethod 是否为资审方式 0 否 1 是 - * @param list 节点集合 - * @return com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse> - * @author dino - * @date 2021/1/19 15:08 - */ - @Override - public BaseResponse>> findDetailArchiveList(String sectionId, String isReviewMethod, List list) { - return null; - } - - /** - * 评审报告 - * - * @param sectionId 标段ID - * @param isReviewMethod 是否为资审方式 0 否 1 是 - * @param list 节点集合 - * @return com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse> - * @author dino - * @date 2021/1/19 15:08 - */ - @Override - public BaseResponse>> findReviewReportArchiveList(String sectionId, String isReviewMethod, List list) { - return null; - } - /** * 通过评审室查询detail表数据 * @@ -120,18 +35,7 @@ public class ExportServiceFallback implements FallbackFactory } /** - * 评委供应商11111 - * - * @param bidEvalInfoDTO - * @return - */ - @Override - public BaseResponse> findRegisterAndUser(BidEvalInfoDTO bidEvalInfoDTO) { - return null; - } - - /** - * 初审汇总111111 + * 初审汇总 * * @param roomId 评审室ID * @return @@ -152,6 +56,29 @@ public class ExportServiceFallback implements FallbackFactory public BaseResponse>> exportScoreSummary(String roomId) { return null; } + + /** + * 价格打分表 + * + * @param roomId 评审室ID + * @date 2021年4月27日 + */ + @Override + public BaseResponse> exportPrice(String roomId) { + return null; + } + + /** + * 不同供应商的打分 + * + * @param bidEvalCategoryDTO + * @return + * @date 2021年4月28日 + */ + @Override + public BaseResponse>> exportDetail(BidEvalCategoryDTO bidEvalCategoryDTO) { + return null; + } }; log.error(ExceptionUtil.stacktraceToString(throwable)); return null; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceOpenFallbakFactory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceOpenFallbakFactory.java deleted file mode 100644 index e895085..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceOpenFallbakFactory.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.feign.client.factory; - -import cn.hutool.core.exceptions.ExceptionUtil; -import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.BizBidOpenroom; -import com.chinaunicom.mall.ebtp.extend.feign.client.OpenFeignService; -import feign.hystrix.FallbackFactory; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.List; - -@Component -@Slf4j -public class ExportServiceOpenFallbakFactory implements FallbackFactory { - @Override - public OpenFeignService create(Throwable throwable) { - OpenFeignService resps = new OpenFeignService() { - @Override - public BaseResponse> list(BizBidOpenroom bizBidOpenroom) { - return null; - } - }; - log.error(ExceptionUtil.stacktraceToString(throwable)); - return null; - } -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceRespsFallbakFactory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceRespsFallbakFactory.java index 8954f3e..9e6f8c7 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceRespsFallbakFactory.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceRespsFallbakFactory.java @@ -4,11 +4,14 @@ import cn.hutool.core.exceptions.ExceptionUtil; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.feign.client.RespsFeignService; import com.chinaunicom.mall.ebtp.extend.feign.entity.Tdoc; +import com.chinaunicom.mall.ebtp.extend.feign.entity.TfileContentData; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Component @@ -27,6 +30,17 @@ public class ExportServiceRespsFallbakFactory implements FallbackFactory getOpenTenderList(Tdoc tdocPara) { return BaseResponse.fail(new HashMap()); } + + /** + * 评审查看报价 + * + * @param param + * @return + */ + @Override + public BaseResponse> getQuoteByRoomIdAndTurnSort(Tdoc param) { + return BaseResponse.fail(new ArrayList<>()); + } }; log.error(ExceptionUtil.stacktraceToString(throwable)); return null; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ProcessFeignFallbackFactory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ProcessFeignFallbackFactory.java index 3fa242e..42f5588 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ProcessFeignFallbackFactory.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ProcessFeignFallbackFactory.java @@ -3,8 +3,8 @@ package com.chinaunicom.mall.ebtp.extend.feign.client.factory; import cn.hutool.core.exceptions.ExceptionUtil; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; import com.chinaunicom.mall.ebtp.extend.feign.client.ProcessFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ProjectFeignFallbackFactory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ProjectFeignFallbackFactory.java index bab1e2d..de83209 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ProjectFeignFallbackFactory.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ProjectFeignFallbackFactory.java @@ -2,9 +2,9 @@ package com.chinaunicom.mall.ebtp.extend.feign.client.factory; import cn.hutool.core.exceptions.ExceptionUtil; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectRecordVO; import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; -import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/TenderFeignFallbackFactory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/TenderFeignFallbackFactory.java index e9ae54b..f02050a 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/TenderFeignFallbackFactory.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/TenderFeignFallbackFactory.java @@ -2,8 +2,8 @@ package com.chinaunicom.mall.ebtp.extend.feign.client.factory; import cn.hutool.core.exceptions.ExceptionUtil; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.feign.entity.BizSupplierRegister; import com.chinaunicom.mall.ebtp.extend.feign.client.TenderFeignService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BizSupplierRegister; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/config/FeignConfiguration.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/config/FeignConfiguration.java index 98a75cc..58f0ad7 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/config/FeignConfiguration.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/config/FeignConfiguration.java @@ -20,29 +20,29 @@ import java.net.URL; @Slf4j @Configuration -public class FeignConfiguration implements RequestInterceptor { +public class FeignConfiguration implements RequestInterceptor { @Override public void apply(RequestTemplate requestTemplate) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - if(attributes!=null){ + if (attributes != null) { HttpServletRequest request = attributes.getRequest(); - log.info("token=======requestTemplate.headers"+requestTemplate.headers()); + log.info("token=======requestTemplate.headers" + requestTemplate.headers()); String access_token = request.getHeader("Authorization"); - log.info("token======="+access_token); - if(access_token==null || StringUtils.isBlank(access_token)){ + log.info("token=======" + access_token); + if (access_token == null || StringUtils.isBlank(access_token)) { access_token = getAccessToken(); - log.info("token=======access_token==="+access_token); - requestTemplate.header(HttpHeaders.AUTHORIZATION, "Bearer "+access_token); + log.info("token=======access_token===" + access_token); + requestTemplate.header(HttpHeaders.AUTHORIZATION, "Bearer " + access_token); } - }else{ + } else { String access_token = getAccessToken(); - log.info("token=======attributes==null==="+access_token); - requestTemplate.header(HttpHeaders.AUTHORIZATION, "Bearer "+access_token); + log.info("token=======attributes==null===" + access_token); + requestTemplate.header(HttpHeaders.AUTHORIZATION, "Bearer " + access_token); } } - public static String getAccessToken () { + public static String getAccessToken() { StringBuffer strBf = new StringBuffer(); try { URL realUrl = new URL(UrlConstants.clientHttpUrl); @@ -78,13 +78,13 @@ public class FeignConfiguration implements RequestInterceptor { } reader.close(); connection.disconnect(); - log.info("toke返回数据:---------------------- "+strBf.toString()); + log.info("toke返回数据:---------------------- " + strBf.toString()); } catch (Exception e) { - log.info("toke返回数据:---------------------- "+e.getMessage()); + log.info("toke返回数据:---------------------- " + e.getMessage()); } - JSONObject json=JSONObject.parseObject(strBf.toString()); - if((boolean)json.get("success")){ - return ((JSONObject)json.get("data")).get("value").toString(); + JSONObject json = JSONObject.parseObject(strBf.toString()); + if ((boolean) json.get("success")) { + return ((JSONObject) json.get("data")).get("value").toString(); } return null; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BizSupplierRegister.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BizSupplierRegister.java index ea9b8f8..3378ede 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BizSupplierRegister.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BizSupplierRegister.java @@ -284,5 +284,5 @@ public class BizSupplierRegister extends BaseEntity implements Serializable { @ApiModelProperty(value = "下载状态:[0:未下载标书][1:已下载标书][2:已上传投标文件]") private String downloadOtherStatus; - private Map dataMap; + private Map dataMap; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ProjectSection.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ProjectSection.java index b9dae80..f3f536c 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ProjectSection.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ProjectSection.java @@ -50,7 +50,7 @@ public class ProjectSection extends BaseEntity implements Serializable { * 标段包业务编号:招标项目业务编号/1 */ @ApiModelProperty(value = "标段包业务编号:招标项目业务编号/1") - @Length(max = 50,message = "业务编号最长为50字符") + @Length(max = 50, message = "业务编号最长为50字符") private String bidSectBizNum; /** @@ -63,14 +63,14 @@ public class ProjectSection extends BaseEntity implements Serializable { * 标段(包)名称 */ @ApiModelProperty(value = "标段(包)名称") - @Length(max = 200,message = "标段(包)名称最长为200字符") + @Length(max = 200, message = "标段(包)名称最长为200字符") private String bidSectName; /** * 标段(包)内容 */ @ApiModelProperty(value = "标段(包)内容") - @Length(max = 2000,message = "内容描述最长为2000字符") + @Length(max = 2000, message = "内容描述最长为2000字符") private String bidSectContent; /** @@ -83,7 +83,7 @@ public class ProjectSection extends BaseEntity implements Serializable { * 标包预算 */ @ApiModelProperty(value = "标包预算") - @Length(max = 20,message = "标包预算最长为20位") + @Length(max = 20, message = "标包预算最长为20位") private BigDecimal bidSectContractPrice; /** @@ -114,7 +114,7 @@ public class ProjectSection extends BaseEntity implements Serializable { * 投标人资格条件 */ @ApiModelProperty(value = "投标人资格条件") - @Length(max = 1000,message = "投标人资格条件最长为1000字符") + @Length(max = 1000, message = "投标人资格条件最长为1000字符") private String bidderQual; /** diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/Tdoc.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/Tdoc.java index 94bc6ec..fc20b6c 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/Tdoc.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/Tdoc.java @@ -18,10 +18,10 @@ import java.util.List; import java.util.Map; /** -* 实体类 Tdoc-目录主表 -* -* @author yss -*/ + * 实体类 Tdoc-目录主表 + * + * @author yss + */ @Data @Accessors(chain = true) @TableName(value = "biz_resps_tdoc", autoResultMap = true) @@ -63,17 +63,17 @@ public class Tdoc implements Serializable { private Integer roomType; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "应答开始时间") private LocalDateTime startDate; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "应答截止时间") private LocalDateTime endDate; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "解密截止时间") private LocalDateTime decryptEndDate; @@ -86,15 +86,15 @@ public class Tdoc implements Serializable { @ApiModelProperty(value = "创建者") private String createBy; - @TableField(fill = FieldFill.INSERT,typeHandler = CustomLocalDateTimeTypeHandler.class) + @TableField(fill = FieldFill.INSERT, typeHandler = CustomLocalDateTimeTypeHandler.class) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "创建时间") private LocalDateTime createDate; - @TableField(fill = FieldFill.UPDATE,typeHandler = CustomLocalDateTimeTypeHandler.class) + @TableField(fill = FieldFill.UPDATE, typeHandler = CustomLocalDateTimeTypeHandler.class) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "更新时间") private LocalDateTime updateDate; @@ -131,7 +131,7 @@ public class Tdoc implements Serializable { private List catalogIdList; @TableField(exist = false) - private Map key_key; + private Map key_key; @TableField(exist = false) @ApiModelProperty(value = "解密状态:true-全部已解密,false-仍有未解密,供应商开标页:true-可以解密 false-未设置解密截止时间或已过解密时间") diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/TdocCatalog.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/TdocCatalog.java index 31b7130..2cbdbf7 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/TdocCatalog.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/TdocCatalog.java @@ -11,10 +11,10 @@ import java.io.Serializable; import java.util.List; /** -* 实体类 TdocCatalog-目录表 -* -* @author yss -*/ + * 实体类 TdocCatalog-目录表 + * + * @author yss + */ @Data @Accessors(chain = true) @TableName(value = "biz_resps_tdoc_catalog", autoResultMap = true) @@ -48,7 +48,7 @@ public class TdocCatalog implements Serializable { private Integer sort; /** - *树结构使用 + * 树结构使用 */ @TableField(exist = false) private List children; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/TfileContentData.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/TfileContentData.java new file mode 100644 index 0000000..ea65a91 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/TfileContentData.java @@ -0,0 +1,75 @@ +package com.chinaunicom.mall.ebtp.extend.feign.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 实体类 TfileContentData-投标人投标数据,报价表数据 + * + * @author yss + */ +@Data +@Accessors(chain = true) +@TableName(value = "biz_resps_tfile_content_data", autoResultMap = true) +public class TfileContentData implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId + @ApiModelProperty(value = "") + private String id; + + @ApiModelProperty(value = "主目录id") + private String tdocId; + + @ApiModelProperty(value = "投标人投标内容id") + private String tendererConttentId; + + @ApiModelProperty(value = "行id,说明是一项报价") + private String rowId; + + @ApiModelProperty(value = "结构化表格id") + private String contTid; + + @ApiModelProperty(value = "投标数据或报价总金额净价") + private String bidContent; + + @ApiModelProperty(value = "评标数据:可能报价微调整,默认投标数据 或报价总金额含税") + private String evaluatingContent; + + @ApiModelProperty(value = "投标人id") + private String tendererId; + + @ApiModelProperty(value = "供应商名称") + private String tendererName; + + @ApiModelProperty(value = "内容性质:1-报价表、0-分项报价表") + private Integer properties; + + @ApiModelProperty(value = "数据类型:0-评审价 1-数值型 2-文本型") + private Integer dataType; + + @ApiModelProperty(value = "投标人投标文件表id") + private String tendererFileId; + @ApiModelProperty(value = "录入报价的备注") + private String remark; + + @ApiModelProperty(value = "评审室id") + @TableField(exist = false) + private String assessRoomId; + + @ApiModelProperty(value = "轮次") + @TableField(exist = false) + private Integer turnSort; + + public BigDecimal getEvaluating() { + return this.dataType == 0 ? new BigDecimal(this.evaluatingContent) : BigDecimal.ZERO; + } +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEarlyWarn.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEarlyWarn.java similarity index 89% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEarlyWarn.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEarlyWarn.java index 4f84e02..c9bf479 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEarlyWarn.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEarlyWarn.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -25,8 +25,8 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="BidEarlyWarn对象", description="有效供应商少于3家提醒说明") -@TableName(value = "biz_rsms_bid_early_warn",autoResultMap = true) +@ApiModel(value = "BidEarlyWarn对象", description = "有效供应商少于3家提醒说明") +@TableName(value = "biz_rsms_bid_early_warn", autoResultMap = true) public class BidEarlyWarn extends BaseEntity implements Serializable { private static final Long serialVersionUID = 1L; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalCategory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalCategory.java similarity index 89% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalCategory.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalCategory.java index feb5eae..8bff3df 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalCategory.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalCategory.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.feign.entity; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -24,8 +24,8 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="BidEvalCategory对象", description="评标类别表DTO") -@TableName(value = "biz_rsms_bid_eval_category",autoResultMap = true) +@ApiModel(value = "BidEvalCategory对象", description = "评标类别表DTO") +@TableName(value = "biz_rsms_bid_eval_category", autoResultMap = true) public class BidEvalCategory extends BaseEntity implements Serializable { private static final Long serialVersionUID = 1L; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalCategoryDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalCategoryDTO.java similarity index 87% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalCategoryDTO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalCategoryDTO.java index 498e245..fd03f28 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalCategoryDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalCategoryDTO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.feign.entity; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @@ -24,7 +24,7 @@ import java.util.Map; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="BidEvalCategoryDTO对象", description="评标类别表") +@ApiModel(value = "BidEvalCategoryDTO对象", description = "评标类别表") public class BidEvalCategoryDTO extends BidEvalCategory implements Serializable { private static final Long serialVersionUID = 1L; @@ -36,7 +36,7 @@ public class BidEvalCategoryDTO extends BidEvalCategory implements Serializable @ApiModelProperty(value = "报价得分") @JsonInclude(value = JsonInclude.Include.NON_EMPTY) - private Map priceScoreMap; + private Map priceScoreMap; /** * 解锁的评委ID @@ -50,6 +50,4 @@ public class BidEvalCategoryDTO extends BidEvalCategory implements Serializable private String assessRoomId; - - } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailJudgesSummaryVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalDetailJudgesSummaryVO.java similarity index 87% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailJudgesSummaryVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalDetailJudgesSummaryVO.java index 24df0f0..021a7fd 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailJudgesSummaryVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalDetailJudgesSummaryVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.feign.entity; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @@ -21,7 +21,7 @@ import java.math.BigDecimal; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="BidEvalDetailJudgesSummaryVO对象", description="详审专家汇总VO对象") +@ApiModel(value = "BidEvalDetailJudgesSummaryVO对象", description = "详审专家汇总VO对象") public class BidEvalDetailJudgesSummaryVO implements Serializable { private static final Long serialVersionUID = 1L; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailSummaryVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalDetailSummaryVO.java similarity index 90% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailSummaryVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalDetailSummaryVO.java index 3ac2c20..109575f 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailSummaryVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalDetailSummaryVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.feign.entity; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @@ -23,7 +23,7 @@ import java.util.Map; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="BidEvalDetailSummaryVO对象", description="详审汇总VO对象") +@ApiModel(value = "BidEvalDetailSummaryVO对象", description = "详审汇总VO对象") public class BidEvalDetailSummaryVO implements Serializable { private static final Long serialVersionUID = 1L; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalDetailVO.java similarity index 94% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalDetailVO.java index 99c05d9..a289a65 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalDetailVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.feign.entity; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @@ -21,7 +21,7 @@ import java.math.BigDecimal; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="BidEvalDetailVO对象", description="评标详细评审表VO对象") +@ApiModel(value = "BidEvalDetailVO对象", description = "评标详细评审表VO对象") public class BidEvalDetailVO implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalEarlyJudgesSummaryVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalEarlyJudgesSummaryVO.java similarity index 88% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalEarlyJudgesSummaryVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalEarlyJudgesSummaryVO.java index 7c0c76d..dcb4dd6 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalEarlyJudgesSummaryVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalEarlyJudgesSummaryVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.feign.entity; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @@ -20,7 +20,7 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="BidEvalEarlyJudgesSummaryVO对象", description="初审专家汇总VO对象") +@ApiModel(value = "BidEvalEarlyJudgesSummaryVO对象", description = "初审专家汇总VO对象") public class BidEvalEarlyJudgesSummaryVO implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalInfo.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalInfo.java similarity index 96% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalInfo.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalInfo.java index e6c3b42..fdbb567 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalInfo.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalInfo.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.baomidou.mybatisplus.annotation.TableId; import com.chinaunicom.mall.ebtp.common.base.entity.BaseEntity; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalInfoDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalInfoDTO.java similarity index 83% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalInfoDTO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalInfoDTO.java index 50496ca..cf02e26 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/BidEvalInfoDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/BidEvalInfoDTO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.fasterxml.jackson.annotation.JsonInclude; @@ -21,7 +21,7 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="BidEvalInfoDTO对象", description="评标主表DTO") +@ApiModel(value = "BidEvalInfoDTO对象", description = "评标主表DTO") public class BidEvalInfoDTO extends BidEvalInfo implements Serializable { private static final Long serialVersionUID = 1L; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/JuryPrintVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/JuryPrintVO.java similarity index 97% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/JuryPrintVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/JuryPrintVO.java index a017f92..5d3583f 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/JuryPrintVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/JuryPrintVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.feign.entity; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.baomidou.mybatisplus.annotation.TableField; import com.chinaunicom.mall.ebtp.common.config.CustomLocalDateTimeTypeHandler; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/MemberVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/MemberVO.java similarity index 86% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/MemberVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/MemberVO.java index 5738b49..16894bf 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/MemberVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/MemberVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; @@ -19,7 +19,7 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="MemberVO", description="专家成员VO") +@ApiModel(value = "MemberVO", description = "专家成员VO") public class MemberVO implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ResultDetailVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ResultDetailVO.java similarity index 98% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ResultDetailVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ResultDetailVO.java index e61db32..d92e4fa 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ResultDetailVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ResultDetailVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.feign.entity; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ReviewConfigCategory.java similarity index 89% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategory.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ReviewConfigCategory.java index 1e89c75..4cb0ef7 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategory.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ReviewConfigCategory.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.feign.entity; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -26,8 +26,8 @@ import java.math.BigDecimal; @Data @EqualsAndHashCode(callSuper = true) @Accessors(chain = true) -@TableName(value = "biz_rsms_review_config_category",autoResultMap = true) -@ApiModel(value="ReviewConfigCategory对象", description="评审类别表") +@TableName(value = "biz_rsms_review_config_category", autoResultMap = true) +@ApiModel(value = "ReviewConfigCategory对象", description = "评审类别表") public class ReviewConfigCategory extends BaseEntity implements Serializable { private static final Long serialVersionUID = 1L; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategoryDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ReviewConfigCategoryDTO.java similarity index 92% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategoryDTO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ReviewConfigCategoryDTO.java index 060af33..947b60a 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategoryDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ReviewConfigCategoryDTO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.feign.entity; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetail.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ReviewConfigDetail.java similarity index 94% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetail.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ReviewConfigDetail.java index cd092a5..ee0d074 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetail.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ReviewConfigDetail.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.feign.entity; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -27,8 +27,8 @@ import java.math.BigDecimal; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName(value = "biz_rsms_review_config_detail",autoResultMap = true) -@ApiModel(value="ReviewConfigDetail对象", description="评分细则(初审和详审)") +@TableName(value = "biz_rsms_review_config_detail", autoResultMap = true) +@ApiModel(value = "ReviewConfigDetail对象", description = "评分细则(初审和详审)") public class ReviewConfigDetail extends BaseEntity implements Serializable { private static final Long serialVersionUID = 1L; @@ -123,5 +123,4 @@ public class ReviewConfigDetail extends BaseEntity implements Serializable { private BigDecimal lowScoreSecond; - } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetailDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ReviewConfigDetailDTO.java similarity index 96% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetailDTO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ReviewConfigDetailDTO.java index a85d997..ad134ec 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetailDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ReviewConfigDetailDTO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.feign.entity; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigStandard.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ReviewConfigStandard.java similarity index 85% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigStandard.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ReviewConfigStandard.java index 7cbe761..ddcb932 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigStandard.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/ReviewConfigStandard.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.feign.entity; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -25,8 +25,8 @@ import java.math.BigDecimal; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@TableName(value = "biz_rsms_review_config_standard",autoResultMap = true) -@ApiModel(value="ReviewConfigStandard对象", description="评分标准") +@TableName(value = "biz_rsms_review_config_standard", autoResultMap = true) +@ApiModel(value = "ReviewConfigStandard对象", description = "评分标准") public class ReviewConfigStandard extends BaseEntity implements Serializable { private static final Long serialVersionUID = 1L; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/SupplierRegisterPriceScoreVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/SupplierRegisterPriceScoreVO.java similarity index 92% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/SupplierRegisterPriceScoreVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/SupplierRegisterPriceScoreVO.java index 4dfab43..22bfc11 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/SupplierRegisterPriceScoreVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/SupplierRegisterPriceScoreVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; @@ -20,7 +20,7 @@ import java.math.BigDecimal; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="SupplierRegisterPriceScoreVO", description="供应商报价分VO") +@ApiModel(value = "SupplierRegisterPriceScoreVO", description = "供应商报价分VO") public class SupplierRegisterPriceScoreVO implements Serializable { private static final Long serialVersionUID = 1L; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/SupplierRegisterVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/SupplierRegisterVO.java similarity index 85% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/SupplierRegisterVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/SupplierRegisterVO.java index de0f31e..a9b4adc 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/SupplierRegisterVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/rsms/SupplierRegisterVO.java @@ -1,6 +1,5 @@ -package com.chinaunicom.mall.ebtp.extend.feign.entity; +package com.chinaunicom.mall.ebtp.extend.feign.entity.rsms; -import com.chinaunicom.mall.ebtp.extend.export.vo.MemberVO; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; @@ -22,7 +21,7 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="SupplierRegisterVO", description="供应商VO") +@ApiModel(value = "SupplierRegisterVO", description = "供应商VO") public class SupplierRegisterVO implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/controller/TemplateWarehouseController.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/controller/TemplateWarehouseController.java index e1a3ac4..81a0c76 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/controller/TemplateWarehouseController.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/controller/TemplateWarehouseController.java @@ -1,19 +1,15 @@ package com.chinaunicom.mall.ebtp.extend.templatewarehouse.controller; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.templatewarehouse.entity.BizBidClientVersion; import com.chinaunicom.mall.ebtp.extend.templatewarehouse.entity.BizBidTemplateWarehouse; import com.chinaunicom.mall.ebtp.extend.templatewarehouse.sevice.BizBidClientVersionService; import com.chinaunicom.mall.ebtp.extend.templatewarehouse.sevice.BizBidTemplateWarehouseService; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.io.ByteArrayOutputStream; -import java.io.FileOutputStream; import java.io.IOException; @RestController @@ -29,12 +25,11 @@ public class TemplateWarehouseController { * 通过模板类型查询模板数据 * * @param type - * * @return */ @ApiOperation("通过模板类型查询模板数据") @GetMapping("/{type}") - public BaseResponse getTemplateByType(@ApiParam(value = "模板类型", required = true) @PathVariable String type){ + public BaseResponse getTemplateByType(@ApiParam(value = "模板类型", required = true) @PathVariable String type) { BizBidTemplateWarehouse templateWarehouse = templateWarehouseService.getTemplateByType(type); return BaseResponse.success(templateWarehouse); } @@ -43,12 +38,11 @@ public class TemplateWarehouseController { * 新增模板仓库数据 * * @param templateWarehouse - * * @return */ @ApiOperation("新增模板仓库数据") @PostMapping("/insert") - public BaseResponse insertTemplate(@ApiParam(value = "模板仓库对象", required = true) @RequestBody BizBidTemplateWarehouse templateWarehouse){ + public BaseResponse insertTemplate(@ApiParam(value = "模板仓库对象", required = true) @RequestBody BizBidTemplateWarehouse templateWarehouse) { Boolean result = templateWarehouseService.insertTemplate(templateWarehouse); return BaseResponse.success(result); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/dao/BizBidClientVersionMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/dao/BizBidClientVersionMapper.java index eb1bcc8..b1390eb 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/dao/BizBidClientVersionMapper.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/dao/BizBidClientVersionMapper.java @@ -6,5 +6,5 @@ import com.chinaunicom.mall.ebtp.extend.templatewarehouse.entity.BizBidClientVer public interface BizBidClientVersionMapper extends IBaseMapper { - + } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/dao/BizBidTemplateWarehouseMapper.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/dao/BizBidTemplateWarehouseMapper.java index 24443ab..8418019 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/dao/BizBidTemplateWarehouseMapper.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/dao/BizBidTemplateWarehouseMapper.java @@ -6,5 +6,5 @@ import com.chinaunicom.mall.ebtp.extend.templatewarehouse.entity.BizBidTemplateW public interface BizBidTemplateWarehouseMapper extends IBaseMapper { - + } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/dao/mapper/BizBidClientVersionMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/dao/mapper/BizBidClientVersionMapper.xml index 3195b5a..0bca60c 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/dao/mapper/BizBidClientVersionMapper.xml +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/dao/mapper/BizBidClientVersionMapper.xml @@ -4,11 +4,11 @@ - - - - - + + + + + \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/dao/mapper/BizBidTemplateWarehouseMapper.xml b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/dao/mapper/BizBidTemplateWarehouseMapper.xml index 3ebd3e1..c08aaff 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/dao/mapper/BizBidTemplateWarehouseMapper.xml +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/dao/mapper/BizBidTemplateWarehouseMapper.xml @@ -4,17 +4,17 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/entity/BizBidTemplateWarehouse.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/entity/BizBidTemplateWarehouse.java index 564dbf4..592cbc3 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/entity/BizBidTemplateWarehouse.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/entity/BizBidTemplateWarehouse.java @@ -20,33 +20,25 @@ import java.io.Serializable; @TableName(value = "biz_bid_template_warehouse", autoResultMap = true) public class BizBidTemplateWarehouse extends BaseEntity implements Serializable { - private static final long serialVersionUID = 1L; - - /** - * 模版仓库主键ID - */ - @ApiModelProperty(value = "模版仓库主键ID") - private String id; - - /** - * 文档中心-文档ID - */ - @ApiModelProperty(value = "文档中心-文档ID") - private String documentCenterId; - - /** - * 模板类型 - */ - @ApiModelProperty(value = "模板类型") - private String templateType; - - - - - + private static final long serialVersionUID = 1L; + /** + * 模版仓库主键ID + */ + @ApiModelProperty(value = "模版仓库主键ID") + private String id; + /** + * 文档中心-文档ID + */ + @ApiModelProperty(value = "文档中心-文档ID") + private String documentCenterId; + /** + * 模板类型 + */ + @ApiModelProperty(value = "模板类型") + private String templateType; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/sevice/BizBidClientVersionService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/sevice/BizBidClientVersionService.java index ddf7912..9ba8cc8 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/sevice/BizBidClientVersionService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/sevice/BizBidClientVersionService.java @@ -4,8 +4,6 @@ package com.chinaunicom.mall.ebtp.extend.templatewarehouse.sevice; import com.chinaunicom.mall.ebtp.common.base.service.IBaseService; import com.chinaunicom.mall.ebtp.extend.templatewarehouse.entity.BizBidClientVersion; -import java.io.ByteArrayOutputStream; -import java.io.FileOutputStream; import java.io.IOException; /** diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/sevice/BizBidTemplateWarehouseService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/sevice/BizBidTemplateWarehouseService.java index 46db463..30ef6f2 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/sevice/BizBidTemplateWarehouseService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/sevice/BizBidTemplateWarehouseService.java @@ -6,8 +6,8 @@ import com.chinaunicom.mall.ebtp.extend.templatewarehouse.entity.BizBidTemplateW /** * 对数据表 biz_bid_template_warehouse 操作的 service - * @author Auto create * + * @author Auto create */ public interface BizBidTemplateWarehouseService extends IBaseService { diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/sevice/impl/BizBidClientVersionServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/sevice/impl/BizBidClientVersionServiceImpl.java index 74bc426..b453a34 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/sevice/impl/BizBidClientVersionServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/templatewarehouse/sevice/impl/BizBidClientVersionServiceImpl.java @@ -1,17 +1,6 @@ package com.chinaunicom.mall.ebtp.extend.templatewarehouse.sevice.impl; -import java.io.IOException; -import java.net.URLEncoder; -import java.util.Map; -import java.util.Optional; - -import javax.annotation.Resource; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletResponse; - -import org.springframework.stereotype.Service; - import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.chinaunicom.ebtp.mall.cloud.attachment.sdk.convertor.ModelConvertor; @@ -22,23 +11,31 @@ import com.chinaunicom.mall.ebtp.extend.feign.client.DocumentCenterService; import com.chinaunicom.mall.ebtp.extend.templatewarehouse.dao.BizBidClientVersionMapper; import com.chinaunicom.mall.ebtp.extend.templatewarehouse.entity.BizBidClientVersion; import com.chinaunicom.mall.ebtp.extend.templatewarehouse.sevice.BizBidClientVersionService; - import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.Map; +import java.util.Optional; /** * 对数据表 biz_bid_client_version 操作的 serviceImpl - * @author Auto create * + * @author Auto create */ @Service @RequiredArgsConstructor @Slf4j -public class BizBidClientVersionServiceImpl extends BaseServiceImpl implements BizBidClientVersionService { +public class BizBidClientVersionServiceImpl extends BaseServiceImpl implements BizBidClientVersionService { private final DocumentCenterService documentCenterService; - private final ModelConvertor modelConvertor; + private final ModelConvertor modelConvertor; @Resource private HttpServletResponse response; @@ -53,9 +50,9 @@ public class BizBidClientVersionServiceImpl extends BaseServiceImpl implements BizBidTemplateWarehouseService { +public class BizBidTemplateWarehouseServiceImpl extends BaseServiceImpl implements BizBidTemplateWarehouseService { @Override @@ -26,7 +27,7 @@ public class BizBidTemplateWarehouseServiceImpl extends BaseServiceImpl"+tsaData); + log.info("tsaData -->" + tsaData); String timestamp = Base64.encodeBase64String(tsaData); - log.info("timestamp -->"+timestamp); + log.info("timestamp -->" + timestamp); return timestamp; - }catch (Exception e){ + } catch (Exception e) { log.error("申请时间戳异常", e); } return null; } + /** * 解析时间戳 + * * @param timestamp 时间戳加密原文 * @return 时间戳对象 */ - public TtsAgent.TtsParseResult verifyTimeStamp2(String timestamp){ - try{ - log.info("timestamp -->"+timestamp); + public TtsAgent.TtsParseResult verifyTimeStamp2(String timestamp) { + try { + log.info("timestamp -->" + timestamp); TSAVerifyResult verifyResult = this.verifyTimeStamp(timestamp); String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(verifyResult.getSignedTime()); TtsAgent.TtsParseResult ttsParseResult = new TtsAgent.TtsParseResult(time, HelperUtil.bytesToHexString(verifyResult.getData()), verifyResult.getSignerSubject()); return ttsParseResult; - }catch (Exception e){ + } catch (Exception e) { log.error("解析时间戳", e); } return null; } - private TSAVerifyResult verifyTimeStamp(String timestamp){ - try{ - log.info("timestamp -->"+timestamp); + private TSAVerifyResult verifyTimeStamp(String timestamp) { + try { + log.info("timestamp -->" + timestamp); TSAVerifyResult verifyResult = client.verifyTimeStamp(Base64.decodeBase64(timestamp)); return verifyResult; - }catch (Exception e){ + } catch (Exception e) { log.error("解析时间戳", e); } return null; @@ -91,15 +94,16 @@ public class TimeServiceConstant { /** * 获取时间戳 + * * @param data 待申请时间戳的原文 * @return 时间戳对象 */ - public TtsAgent.TtsParseResult getServiceTimeObj(String data){ - try{ + public TtsAgent.TtsParseResult getServiceTimeObj(String data) { + try { String timestamp = this.signTimeStamp(data); TtsAgent.TtsParseResult ttsParseResult = this.verifyTimeStamp2(timestamp); return ttsParseResult; - }catch (Exception e){ + } catch (Exception e) { log.error("获取时间戳异常", e); } return null; @@ -107,17 +111,18 @@ public class TimeServiceConstant { /** * 直接获取获取时间戳 时间1 + * * @param data 待申请时间戳的原文 * @return 时间 */ - public String getServiceTime(String data){ - try{ + public String getServiceTime(String data) { + try { String timestamp = this.signTimeStamp(data); TSAVerifyResult verifyResult = this.verifyTimeStamp(timestamp); String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(verifyResult.getSignedTime()); return time; - }catch (Exception e){ + } catch (Exception e) { log.error("获取时间戳异常", e); } return null; @@ -126,52 +131,55 @@ public class TimeServiceConstant { /** * 直接获取获取时间戳 时间1 + * * @param data 待申请时间戳的原文 * @return date时间 */ - public Date getServiceDate(String data){ - try{ + public Date getServiceDate(String data) { + try { String timestamp = this.signTimeStamp(data); TSAVerifyResult verifyResult = this.verifyTimeStamp(timestamp); Date date = verifyResult.getSignedTime(); return date; - }catch (Exception e){ + } catch (Exception e) { log.error("获取时间戳异常", e); } return null; } + /** * 获取年月日时分秒分割存储对象 + * * @param data 待申请时间戳的原文 * @return SystemTime */ - public SystemTime getServiceSystemTime(String data){ - try{ + public SystemTime getServiceSystemTime(String data) { + try { String timestamp = this.signTimeStamp(data); TSAVerifyResult verifyResult = this.verifyTimeStamp(timestamp); Date date = verifyResult.getSignedTime(); SystemTime systemTime = new SystemTime() - .setYear(date.getYear()+1900) - .setMonth(date.getMonth()+1) + .setYear(date.getYear() + 1900) + .setMonth(date.getMonth() + 1) .setDate(date.getDate()) .setHour(date.getHours()) .setMinute(date.getMinutes()) .setSecond(date.getSeconds()) .setTimestamp(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date)); return systemTime; - }catch (Exception e){ + } catch (Exception e) { log.error("获取时间戳异常", e); } return null; } - public static void main(String arge[]){ + public static void main(String arge[]) { Date date = new Date(); - System.out.println("-----------"+(date.getYear()+1900)); - System.out.println("-----------"+(date.getMonth()+1)); - System.out.println("-----------"+date.getDate()); - System.out.println("-----------"+date.getHours()); - System.out.println("-----------"+date.getMinutes()); - System.out.println("-----------"+date.getSeconds()); + System.out.println("-----------" + (date.getYear() + 1900)); + System.out.println("-----------" + (date.getMonth() + 1)); + System.out.println("-----------" + date.getDate()); + System.out.println("-----------" + date.getHours()); + System.out.println("-----------" + date.getMinutes()); + System.out.println("-----------" + date.getSeconds()); } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/timeService/controller/TimeServiceController.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/timeService/controller/TimeServiceController.java index 98dace0..51a366f 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/timeService/controller/TimeServiceController.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/timeService/controller/TimeServiceController.java @@ -1,6 +1,5 @@ package com.chinaunicom.mall.ebtp.extend.timeService.controller; -import cn.com.jit.tsa.client.TSAVerifyResult; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.timeService.TimeServiceConstant; import com.chinaunicom.mall.ebtp.extend.timeService.tsa.SystemTime; @@ -23,18 +22,20 @@ public class TimeServiceController { /** * 申请时间戳 + * * @param data 待申请时间戳的原文 * @return 时间戳加密原文 */ @ApiOperation("申请时间戳") @GetMapping(value = "/signTimeStamp") - public BaseResponse signTimeStamp(@ApiParam(value = "待申请时间戳的原文", required = false) @RequestParam(name = "data",required = false) String data) { + public BaseResponse signTimeStamp(@ApiParam(value = "待申请时间戳的原文", required = false) @RequestParam(name = "data", required = false) String data) { TimeServiceConstant constant = new TimeServiceConstant(); return BaseResponse.success(constant.signTimeStamp(data)); } /** * 解析时间戳 + * * @param timestamp 时间戳加密原文 * @return 时间戳对象 */ @@ -47,52 +48,60 @@ public class TimeServiceController { /** * 获取时间戳 + * * @param data 待申请时间戳的原文 * @return 时间戳对象 */ @ApiOperation("直接获取时间戳对象(内涵日期)") @PostMapping(value = "/getServiceTimeObj") - public BaseResponse getServiceTimeObj(@ApiParam(value = "待申请时间戳的原文", required = false) @RequestParam(name = "data",required = false) String data) { + public BaseResponse getServiceTimeObj(@ApiParam(value = "待申请时间戳的原文", required = false) @RequestParam(name = "data", required = false) String data) { TimeServiceConstant constant = new TimeServiceConstant(); return BaseResponse.success(constant.getServiceTimeObj(data)); } + /** * 直接获取获取时间戳 + * * @param data 待申请时间戳的原文 * @return 时间戳对象 */ @ApiOperation("直接获取日期字符串") @GetMapping(value = "/getServiceTime") - public BaseResponse getServiceTime(@ApiParam(value = "待申请时间戳的原文", required = false) @RequestParam(name = "data",required = false) String data) { + public BaseResponse getServiceTime(@ApiParam(value = "待申请时间戳的原文", required = false) @RequestParam(name = "data", required = false) String data) { TimeServiceConstant constant = new TimeServiceConstant(); return BaseResponse.success(constant.getServiceTime(data)); } + /** * 获取年月日时分秒分割存储对象 + * * @param data 待申请时间戳的原文 * @return SystemTime */ @ApiOperation("获取日期对象SystemTime") @GetMapping(value = "/getServiceSystemTime") - public BaseResponse getServiceSystemTime(@ApiParam(value = "待申请时间戳的原文", required = false) @RequestParam(name = "data",required = false) String data) { + public BaseResponse getServiceSystemTime(@ApiParam(value = "待申请时间戳的原文", required = false) @RequestParam(name = "data", required = false) String data) { TimeServiceConstant constant = new TimeServiceConstant(); return BaseResponse.success(constant.getServiceSystemTime(data)); } + /** * 获取开标剩余时间倒数 + * * @return */ @ApiOperation("获取开标剩余时间倒数") @GetMapping("/getDescOpenRoomTime") @PreAuthorize("hasAnyAuthority('ebtp-agency-project-manager','ebtp-purchase','ebtp-supplier')") - public BaseResponse getDescOpenRoomTime(@RequestParam(name = "openTime",required = true) String openTime){ + public BaseResponse getDescOpenRoomTime(@RequestParam(name = "openTime", required = true) String openTime) { try { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); TimeServiceConstant constant = new TimeServiceConstant(); - Date now = constant.getServiceDate("getDescOpenRoomTime");;//当前时间 + Date now = constant.getServiceDate("getDescOpenRoomTime"); + ;//当前时间 Date date = df.parse(openTime);//过去 - long l = date.getTime()-now.getTime(); + long l = date.getTime() - now.getTime(); long day = l / (24 * 60 * 60 * 1000); long hour = (l / (60 * 60 * 1000) - day * 24); long min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60); @@ -101,8 +110,8 @@ public class TimeServiceController { SystemTime systemTime = new SystemTime() .setDate((int) day) .setHour((int) hour) - .setMinute((int)min) - .setSecond((int)s); + .setMinute((int) min) + .setSecond((int) s); return BaseResponse.success(systemTime); } catch (ParseException e) { e.printStackTrace(); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/timeService/tsa/SystemTime.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/timeService/tsa/SystemTime.java index 1683127..cefeb24 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/timeService/tsa/SystemTime.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/timeService/tsa/SystemTime.java @@ -11,40 +11,39 @@ import lombok.experimental.Accessors; @Data @Accessors(chain = true) public class SystemTime { - /** - * 时间 - */ - private String timestamp; - /** - * 年 - */ - private Integer year; + /** + * 时间 + */ + private String timestamp; + /** + * 年 + */ + private Integer year; - /** - * 月 - */ - private Integer month; + /** + * 月 + */ + private Integer month; - /** - * 日 - */ - private Integer date; + /** + * 日 + */ + private Integer date; - /** - * 时 - */ - private Integer hour; + /** + * 时 + */ + private Integer hour; - /** - * 分 - */ - private Integer minute; - - /** - * 秒 - */ - private Integer second; + /** + * 分 + */ + private Integer minute; + /** + * 秒 + */ + private Integer second; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/timeService/tsa/TtsAgent.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/timeService/tsa/TtsAgent.java index b4b6e1c..7c3f74a 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/timeService/tsa/TtsAgent.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/timeService/tsa/TtsAgent.java @@ -1,107 +1,90 @@ package com.chinaunicom.mall.ebtp.extend.timeService.tsa; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.Date; - /** * CA 时间戳服务接口 - * + * * @工程: EPS(4.0) - * * @模块: - * * @作者: 李志慧 - * * @创建日期: 2016年3月17日 - * * @修改记录(修改时间、作者、原因): */ public interface TtsAgent { - /** - * 创建hash 的时间戳 - * - * @作者: 李志慧 @创建日期: 2016年3月17日 - * - * @参数: hash 数据hash值 - * @返回值: String - * - * @修改记录(修改时间、作者、原因): - */ - String createTimestamp(String hash); + /** + * 创建hash 的时间戳 + * + * @作者: 李志慧 @创建日期: 2016年3月17日 + * @参数: hash 数据hash值 + * @返回值: String + * @修改记录(修改时间、作者、原因): + */ + String createTimestamp(String hash); - /** - * 时间戳验证 - * - * @作者: 李志慧 @创建日期: 2016年3月17日 - * - * @参数: timestamp 时间戳 - * @返回值: boolean - * - * @修改记录(修改时间、作者、原因): - */ - boolean verifyTimestamp(String timestamp); + /** + * 时间戳验证 + * + * @作者: 李志慧 @创建日期: 2016年3月17日 + * @参数: timestamp 时间戳 + * @返回值: boolean + * @修改记录(修改时间、作者、原因): + */ + boolean verifyTimestamp(String timestamp); - /** - * 解析时间戳 - * - * @作者: 李志慧 @创建日期: 2016年3月17日 - * - * @参数: timestamp 时间戳 - * @返回值: TtsParseResult - * - * @修改记录(修改时间、作者、原因): - */ - TtsParseResult parseTimestamp(String timestamp); + /** + * 解析时间戳 + * + * @作者: 李志慧 @创建日期: 2016年3月17日 + * @参数: timestamp 时间戳 + * @返回值: TtsParseResult + * @修改记录(修改时间、作者、原因): + */ + TtsParseResult parseTimestamp(String timestamp); - /** - * 时间戳解析结果 - * - * @作者: 李志慧 - * - */ - public class TtsParseResult { - // 时间 - private String timestamp; + /** + * 时间戳解析结果 + * + * @作者: 李志慧 + */ + public class TtsParseResult { + // 时间 + private String timestamp; - // hash 值 - private String hash; + // hash 值 + private String hash; - // 签名证书 - private String cert; + // 签名证书 + private String cert; - public TtsParseResult(String timestamp, String hash, String cert){ - super(); - this.timestamp = timestamp; - this.hash = hash; - this.cert = cert; - } + public TtsParseResult(String timestamp, String hash, String cert) { + super(); + this.timestamp = timestamp; + this.hash = hash; + this.cert = cert; + } - public String getTimestamp() { - return timestamp; - } + public String getTimestamp() { + return timestamp; + } - public void setTimestamp(String timestamp) { - this.timestamp = timestamp; - } + public void setTimestamp(String timestamp) { + this.timestamp = timestamp; + } - public String getHash() { - return hash; - } + public String getHash() { + return hash; + } - public void setHash(String hash) { - this.hash = hash; - } + public void setHash(String hash) { + this.hash = hash; + } - public String getCert() { - return cert; - } + public String getCert() { + return cert; + } - public void setCert(String cert) { - this.cert = cert; - } - } + public void setCert(String cert) { + this.cert = cert; + } + } } \ No newline at end of file