From d8759321a42bab1c647a5383849aae1cb6cf8d26 Mon Sep 17 00:00:00 2001 From: WendyYang Date: Thu, 14 Nov 2024 16:08:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=201.=20=E5=90=8C=E6=AD=A5=E7=BB=99?= =?UTF-8?q?=E4=BF=A1=E4=BA=A7=E9=A1=B9=E7=9B=AE=E5=A2=9E=E5=8A=A0=E5=87=BA?= =?UTF-8?q?=E5=85=A5=E5=8F=82=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/OpenApiProjectLibController.java | 10 ++-- .../api/open/manage/OpenApiProjectLibManage.java | 31 ++++++----- .../pm/api/open/model/po/MhSyncProjectListPO.java | 30 ++++++++++ .../api/open/model/po/ReviewPassProjectListPO.java | 27 --------- .../open/model/vo/DeclaredProjectInfoToMhVO.java | 64 ++++++++++++++++++++++ .../open/model/vo/ReviewPassProjectInfoToMhVO.java | 53 ------------------ .../pm/api/workbench/manage/WorkbenchManage.java | 23 +++++--- .../workbench/model/WorkbenchProjectLibReq.java | 3 + 8 files changed, 132 insertions(+), 109 deletions(-) create mode 100644 hz-pm-api/src/main/java/com/hz/pm/api/open/model/po/MhSyncProjectListPO.java delete mode 100644 hz-pm-api/src/main/java/com/hz/pm/api/open/model/po/ReviewPassProjectListPO.java create mode 100644 hz-pm-api/src/main/java/com/hz/pm/api/open/model/vo/DeclaredProjectInfoToMhVO.java delete mode 100644 hz-pm-api/src/main/java/com/hz/pm/api/open/model/vo/ReviewPassProjectInfoToMhVO.java diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/open/controller/OpenApiProjectLibController.java b/hz-pm-api/src/main/java/com/hz/pm/api/open/controller/OpenApiProjectLibController.java index 1c2741d..7adb8e5 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/open/controller/OpenApiProjectLibController.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/open/controller/OpenApiProjectLibController.java @@ -1,8 +1,8 @@ package com.hz.pm.api.open.controller; import com.hz.pm.api.open.manage.OpenApiProjectLibManage; -import com.hz.pm.api.open.model.po.ReviewPassProjectListPO; -import com.hz.pm.api.open.model.vo.ReviewPassProjectInfoToMhVO; +import com.hz.pm.api.open.model.po.MhSyncProjectListPO; +import com.hz.pm.api.open.model.vo.DeclaredProjectInfoToMhVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -28,9 +28,9 @@ public class OpenApiProjectLibController { private final OpenApiProjectLibManage openApiProjectLibManage; @PostMapping("/listReviewPassProject") - @ApiOperation("获取已复核通过的项目列表") - public List listReviewPassProject(@RequestBody @Valid ReviewPassProjectListPO po) { - return openApiProjectLibManage.listReviewPassProject(po); + @ApiOperation("获取所有已经申报的项目") + public List listDeclaredProjects(@RequestBody @Valid MhSyncProjectListPO po) { + return openApiProjectLibManage.listDeclaredProjects(po); } } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/open/manage/OpenApiProjectLibManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/open/manage/OpenApiProjectLibManage.java index f4db542..dbb9b74 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/open/manage/OpenApiProjectLibManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/open/manage/OpenApiProjectLibManage.java @@ -4,15 +4,15 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.hz.pm.api.common.model.constant.ExistsSqlConst; +import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent; import com.hz.pm.api.common.util.BizDateUtil; -import com.hz.pm.api.open.model.po.ReviewPassProjectListPO; +import com.hz.pm.api.open.model.po.MhSyncProjectListPO; import com.hz.pm.api.open.model.vo.ReferSystemReplaceInfoToMhVO; -import com.hz.pm.api.open.model.vo.ReviewPassProjectInfoToMhVO; +import com.hz.pm.api.open.model.vo.DeclaredProjectInfoToMhVO; import com.hz.pm.api.open.util.OpenApiCheckSignUtil; import com.hz.pm.api.projectlib.entity.MhSystemReplaceInfo; import com.hz.pm.api.projectlib.entity.ProjectGovSystemReplaceInfos; import com.hz.pm.api.projectlib.model.entity.Project; -import com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus; import com.hz.pm.api.projectlib.service.IMhSystemReplaceInfoService; import com.hz.pm.api.projectlib.service.IProjectGovSystemReplaceInfosService; import com.hz.pm.api.projectlib.service.IProjectService; @@ -48,19 +48,20 @@ public class OpenApiProjectLibManage { * @param po 参数 * @return 复核通过的项目 */ - public List listReviewPassProject(ReviewPassProjectListPO po) { + public List listDeclaredProjects(MhSyncProjectListPO po) { openApiCheckSignUtil.checkSign(po.getKey()); StringBuilder sql = new StringBuilder(ExistsSqlConst.PROJECT_EXISTS_STATUS_CHANGE) - .append(" and npsc.event = 'PROJECT_REVIEW_PASS'"); - if (po.getReviewPassTime() != null) { - sql.append(String.format(" and npsc.create_on >= '%s'", BizDateUtil.toDateStr(po.getReviewPassTime()))); + .append(StrUtil.format(" and npsc.event = '{}'", ProjectStateChangeEvent.PROJECT_APPLICATION_SUBMIT)); + if (po.getCreateOn() != null) { + sql.append(String.format(" and npsc.create_on >= '%s'", BizDateUtil.toDateStr(po.getCreateOn()))); } Wrapper query = Wrappers.lambdaQuery(Project.class) - .select(Project::getId, Project::getProjectCode, Project::getProjectName, Project::getBuildOrgCode, Project::getStatus, - Project::getDeclareAmount, Project::getProjectYear, Project::getCreateOn, Project::getBuildOrgName) - .exists(sql.toString()) + .select(Project::getId, Project::getProjectCode, Project::getProjectName, Project::getBuildOrgCode, + Project::getStatus, Project::getReviewAmount, Project::getDeclareAmount, Project::getProjectYear, + Project::getCreateOn, Project::getBuildOrgName) .eq(Project::getNewest, Boolean.TRUE) - .notIn(Project::getStage, ProjectStatus.CHANGE.getCode(), ProjectStatus.STOPPED.getCode()) + .exists(sql.toString()) + .eq(po.getProjectYear() != null, Project::getProjectYear, po.getProjectYear()) .orderByDesc(Project::getCreateOn); List projects = projectService.list(query); if (projects.isEmpty()) { @@ -83,7 +84,9 @@ public class OpenApiProjectLibManage { } return projects.stream().map(w -> { - ReviewPassProjectInfoToMhVO item = new ReviewPassProjectInfoToMhVO(); + DeclaredProjectInfoToMhVO item = new DeclaredProjectInfoToMhVO(); + item.setId(w.getId()); + item.setStatus(w.getStatus()); item.setCreateOn(w.getCreateOn()); item.setProjectYear(w.getProjectYear()); item.setProjectCode(w.getProjectCode()); @@ -91,8 +94,7 @@ public class OpenApiProjectLibManage { item.setBuildOrgCode(w.getBuildOrgCode()); item.setBuildOrgName(w.getBuildOrgName()); item.setDeclareAmount(w.getDeclareAmount()); - item.setStatus(w.getStatus()); - item.setId(w.getId()); + item.setReviewAmount(w.getReviewAmount()); List replaceInfoList = replaceInfoMap.get(w.getProjectCode()); if (replaceInfoList != null) { List referSystemList = CollUtils.convert(replaceInfoList, @@ -112,5 +114,4 @@ public class OpenApiProjectLibManage { }).collect(Collectors.toList()); } - } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/open/model/po/MhSyncProjectListPO.java b/hz-pm-api/src/main/java/com/hz/pm/api/open/model/po/MhSyncProjectListPO.java new file mode 100644 index 0000000..61c97dc --- /dev/null +++ b/hz-pm-api/src/main/java/com/hz/pm/api/open/model/po/MhSyncProjectListPO.java @@ -0,0 +1,30 @@ +package com.hz.pm.api.open.model.po; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.time.LocalDateTime; + +/** + *

+ * ReviewPassProjectListPO + *

+ * + * @author WendyYang + * @since 10:59 2024/11/7 + */ +@Data +public class MhSyncProjectListPO { + + @ApiModelProperty("校验公钥") + @NotBlank(message = "秘钥不能为空") + private String key; + + @ApiModelProperty("申报时间") + private LocalDateTime createOn; + + @ApiModelProperty("项目年度") + private Integer projectYear; + +} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/open/model/po/ReviewPassProjectListPO.java b/hz-pm-api/src/main/java/com/hz/pm/api/open/model/po/ReviewPassProjectListPO.java deleted file mode 100644 index aba4d58..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/open/model/po/ReviewPassProjectListPO.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.hz.pm.api.open.model.po; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import java.time.LocalDateTime; - -/** - *

- * ReviewPassProjectListPO - *

- * - * @author WendyYang - * @since 10:59 2024/11/7 - */ -@Data -public class ReviewPassProjectListPO { - - @ApiModelProperty("校验公钥") - @NotBlank(message = "秘钥不能为空") - private String key; - - @ApiModelProperty("复核通过时间") - private LocalDateTime reviewPassTime; - -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/open/model/vo/DeclaredProjectInfoToMhVO.java b/hz-pm-api/src/main/java/com/hz/pm/api/open/model/vo/DeclaredProjectInfoToMhVO.java new file mode 100644 index 0000000..844930b --- /dev/null +++ b/hz-pm-api/src/main/java/com/hz/pm/api/open/model/vo/DeclaredProjectInfoToMhVO.java @@ -0,0 +1,64 @@ +package com.hz.pm.api.open.model.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; +import lombok.experimental.Tolerate; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * ReviewPassProjectInfoToMhVO + *

+ * + * @author WendyYang + * @since 10:14 2024/11/7 + */ +@Data +@Builder +public class DeclaredProjectInfoToMhVO { + + @Tolerate + public DeclaredProjectInfoToMhVO() { + // 无参构造 + } + + @ApiModelProperty("创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createOn; + + @ApiModelProperty("项目年份") + private Integer projectYear; + + @ApiModelProperty("项目编码") + private String projectCode; + + @ApiModelProperty("项目名称") + private String projectName; + + @ApiModelProperty("建设单位编码") + private String buildOrgCode; + + @ApiModelProperty("建设单位名称") + private String buildOrgName; + + @ApiModelProperty("申报金额") + private BigDecimal declareAmount; + + @ApiModelProperty("评审金额") + private BigDecimal reviewAmount; + + @ApiModelProperty("项目状态") + private Integer status; + + @ApiModelProperty("项目ID") + private Long id; + + @ApiModelProperty("项目系统列表") + private List referSystemList; + +} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/open/model/vo/ReviewPassProjectInfoToMhVO.java b/hz-pm-api/src/main/java/com/hz/pm/api/open/model/vo/ReviewPassProjectInfoToMhVO.java deleted file mode 100644 index 34a91bd..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/open/model/vo/ReviewPassProjectInfoToMhVO.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.hz.pm.api.open.model.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -/** - *

- * ReviewPassProjectInfoToMhVO - *

- * - * @author WendyYang - * @since 10:14 2024/11/7 - */ -@Data -public class ReviewPassProjectInfoToMhVO { - - @ApiModelProperty("创建时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime createOn; - - @ApiModelProperty("项目年份") - private Integer projectYear; - - @ApiModelProperty("项目编码") - private String projectCode; - - @ApiModelProperty("项目名称") - private String projectName; - - @ApiModelProperty("建设单位编码") - private String buildOrgCode; - - @ApiModelProperty("建设单位名称") - private String buildOrgName; - - @ApiModelProperty("申报金额") - private BigDecimal declareAmount; - - @ApiModelProperty("项目状态") - private Integer status; - - @ApiModelProperty("项目ID") - private Long id; - - @ApiModelProperty("项目系统列表") - private List referSystemList; - -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/workbench/manage/WorkbenchManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/workbench/manage/WorkbenchManage.java index ed7e7c7..596e497 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/workbench/manage/WorkbenchManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/workbench/manage/WorkbenchManage.java @@ -769,23 +769,28 @@ public class WorkbenchManage { .ge(req.getApproveAmountMin() != null, Project::getApprovalAmount, req.getApproveAmountMin()) .le(req.getApproveAmountMax() != null, Project::getApprovalAmount, req.getApproveAmountMax()) .eq(req.getUnitStrip() != null, Project::getUnitStrip, req.getUnitStrip()) - .exists(StrUtil.isNotBlank(req.getSourceSystem()), ExistsSqlConst.PROJECT_EXISTS_SYSTEM_REPLACE_INFOS - + " and source_system like {0}", StrUtil.format("%{}%", req.getSourceSystem())) .exists(req.getBidStatus() != null, ExistsSqlConst.PROJECT_EXISTS_PURCHASE + " and status = {0}", req.getBidStatus()) .eq(Project::getNewest, Boolean.TRUE) .orderByDesc(Project::getUpdateOn); - if (req.getIsInMhSystemReplaceInfos() != null) { - if (Boolean.TRUE.equals(req.getIsInMhSystemReplaceInfos())) { - query.exists(ExistsSqlConst.PROJECT_EXISTS_SYSTEM_REPLACE_INFOS + " and LENGTH(NVL(source_system_id,'')) > 0"); - } else { - query.notExists(ExistsSqlConst.PROJECT_EXISTS_SYSTEM_REPLACE_INFOS + " and LENGTH(NVL(source_system_id,'')) > 0"); - } - } List unitIds = unitQueryState.getUnitIds(); if (CollUtil.isNotEmpty(unitIds)) { query.in(Project::getBuildOrgCode, CollUtils.convert(unitIds, String::valueOf)); } + if (req.getReplaceType() != null || StrUtil.isNotBlank(req.getSourceSystem()) || req.getIsInMhSystemReplaceInfos() != null) { + StringBuilder sql = new StringBuilder(); + if (req.getReplaceType() != null) { + sql.append(StrUtil.format(" and npgsri.replace_type = '{}'", req.getReplaceType())); + } + if (StrUtil.isNotBlank(req.getSourceSystem())) { + sql.append(StrUtil.format(" and npgsri.source_system like '%{}%'", req.getSourceSystem())); + } + if (req.getIsInMhSystemReplaceInfos() != null) { + char symbol = (Boolean.TRUE.equals(req.getIsInMhSystemReplaceInfos()) ? '>' : '='); + sql.append(" and LENGTH(NVL(source_system_id,'')) ").append(symbol).append(" 0"); + } + query.exists(ExistsSqlConst.PROJECT_EXISTS_SYSTEM_REPLACE_INFOS + sql); + } return query; } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/workbench/model/WorkbenchProjectLibReq.java b/hz-pm-api/src/main/java/com/hz/pm/api/workbench/model/WorkbenchProjectLibReq.java index 351f4ab..a2c05e4 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/workbench/model/WorkbenchProjectLibReq.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/workbench/model/WorkbenchProjectLibReq.java @@ -61,4 +61,7 @@ public class WorkbenchProjectLibReq extends PagePo { @ApiModelProperty("是否计划内系统") private Boolean isInMhSystemReplaceInfos; + @ApiModelProperty("替代类型") + private Integer replaceType; + }