@@ -1,8 +1,8 @@ | |||||
package com.hz.pm.api.open.controller; | package com.hz.pm.api.open.controller; | ||||
import com.hz.pm.api.open.manage.OpenApiProjectLibManage; | 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.Api; | ||||
import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
@@ -28,9 +28,9 @@ public class OpenApiProjectLibController { | |||||
private final OpenApiProjectLibManage openApiProjectLibManage; | private final OpenApiProjectLibManage openApiProjectLibManage; | ||||
@PostMapping("/listReviewPassProject") | @PostMapping("/listReviewPassProject") | ||||
@ApiOperation("获取已复核通过的项目列表") | |||||
public List<ReviewPassProjectInfoToMhVO> listReviewPassProject(@RequestBody @Valid ReviewPassProjectListPO po) { | |||||
return openApiProjectLibManage.listReviewPassProject(po); | |||||
@ApiOperation("获取所有已经申报的项目") | |||||
public List<DeclaredProjectInfoToMhVO> listDeclaredProjects(@RequestBody @Valid MhSyncProjectListPO po) { | |||||
return openApiProjectLibManage.listDeclaredProjects(po); | |||||
} | } | ||||
} | } |
@@ -4,15 +4,15 @@ import cn.hutool.core.util.StrUtil; | |||||
import com.baomidou.mybatisplus.core.conditions.Wrapper; | import com.baomidou.mybatisplus.core.conditions.Wrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.hz.pm.api.common.model.constant.ExistsSqlConst; | 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.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.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.open.util.OpenApiCheckSignUtil; | ||||
import com.hz.pm.api.projectlib.entity.MhSystemReplaceInfo; | import com.hz.pm.api.projectlib.entity.MhSystemReplaceInfo; | ||||
import com.hz.pm.api.projectlib.entity.ProjectGovSystemReplaceInfos; | import com.hz.pm.api.projectlib.entity.ProjectGovSystemReplaceInfos; | ||||
import com.hz.pm.api.projectlib.model.entity.Project; | 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.IMhSystemReplaceInfoService; | ||||
import com.hz.pm.api.projectlib.service.IProjectGovSystemReplaceInfosService; | import com.hz.pm.api.projectlib.service.IProjectGovSystemReplaceInfosService; | ||||
import com.hz.pm.api.projectlib.service.IProjectService; | import com.hz.pm.api.projectlib.service.IProjectService; | ||||
@@ -48,19 +48,20 @@ public class OpenApiProjectLibManage { | |||||
* @param po 参数 | * @param po 参数 | ||||
* @return 复核通过的项目 | * @return 复核通过的项目 | ||||
*/ | */ | ||||
public List<ReviewPassProjectInfoToMhVO> listReviewPassProject(ReviewPassProjectListPO po) { | |||||
public List<DeclaredProjectInfoToMhVO> listDeclaredProjects(MhSyncProjectListPO po) { | |||||
openApiCheckSignUtil.checkSign(po.getKey()); | openApiCheckSignUtil.checkSign(po.getKey()); | ||||
StringBuilder sql = new StringBuilder(ExistsSqlConst.PROJECT_EXISTS_STATUS_CHANGE) | 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<Project> query = Wrappers.lambdaQuery(Project.class) | Wrapper<Project> 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) | .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); | .orderByDesc(Project::getCreateOn); | ||||
List<Project> projects = projectService.list(query); | List<Project> projects = projectService.list(query); | ||||
if (projects.isEmpty()) { | if (projects.isEmpty()) { | ||||
@@ -83,7 +84,9 @@ public class OpenApiProjectLibManage { | |||||
} | } | ||||
return projects.stream().map(w -> { | 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.setCreateOn(w.getCreateOn()); | ||||
item.setProjectYear(w.getProjectYear()); | item.setProjectYear(w.getProjectYear()); | ||||
item.setProjectCode(w.getProjectCode()); | item.setProjectCode(w.getProjectCode()); | ||||
@@ -91,8 +94,7 @@ public class OpenApiProjectLibManage { | |||||
item.setBuildOrgCode(w.getBuildOrgCode()); | item.setBuildOrgCode(w.getBuildOrgCode()); | ||||
item.setBuildOrgName(w.getBuildOrgName()); | item.setBuildOrgName(w.getBuildOrgName()); | ||||
item.setDeclareAmount(w.getDeclareAmount()); | item.setDeclareAmount(w.getDeclareAmount()); | ||||
item.setStatus(w.getStatus()); | |||||
item.setId(w.getId()); | |||||
item.setReviewAmount(w.getReviewAmount()); | |||||
List<MhSystemReplaceInfo> replaceInfoList = replaceInfoMap.get(w.getProjectCode()); | List<MhSystemReplaceInfo> replaceInfoList = replaceInfoMap.get(w.getProjectCode()); | ||||
if (replaceInfoList != null) { | if (replaceInfoList != null) { | ||||
List<ReferSystemReplaceInfoToMhVO> referSystemList = CollUtils.convert(replaceInfoList, | List<ReferSystemReplaceInfoToMhVO> referSystemList = CollUtils.convert(replaceInfoList, | ||||
@@ -112,5 +114,4 @@ public class OpenApiProjectLibManage { | |||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
} | } | ||||
} | } |
@@ -15,13 +15,16 @@ import java.time.LocalDateTime; | |||||
* @since 10:59 2024/11/7 | * @since 10:59 2024/11/7 | ||||
*/ | */ | ||||
@Data | @Data | ||||
public class ReviewPassProjectListPO { | |||||
public class MhSyncProjectListPO { | |||||
@ApiModelProperty("校验公钥") | @ApiModelProperty("校验公钥") | ||||
@NotBlank(message = "秘钥不能为空") | @NotBlank(message = "秘钥不能为空") | ||||
private String key; | private String key; | ||||
@ApiModelProperty("复核通过时间") | |||||
private LocalDateTime reviewPassTime; | |||||
@ApiModelProperty("申报时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("项目年度") | |||||
private Integer projectYear; | |||||
} | } |
@@ -2,7 +2,9 @@ package com.hz.pm.api.open.model.vo; | |||||
import com.fasterxml.jackson.annotation.JsonFormat; | import com.fasterxml.jackson.annotation.JsonFormat; | ||||
import io.swagger.annotations.ApiModelProperty; | import io.swagger.annotations.ApiModelProperty; | ||||
import lombok.Builder; | |||||
import lombok.Data; | import lombok.Data; | ||||
import lombok.experimental.Tolerate; | |||||
import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||
@@ -17,7 +19,13 @@ import java.util.List; | |||||
* @since 10:14 2024/11/7 | * @since 10:14 2024/11/7 | ||||
*/ | */ | ||||
@Data | @Data | ||||
public class ReviewPassProjectInfoToMhVO { | |||||
@Builder | |||||
public class DeclaredProjectInfoToMhVO { | |||||
@Tolerate | |||||
public DeclaredProjectInfoToMhVO() { | |||||
// 无参构造 | |||||
} | |||||
@ApiModelProperty("创建时间") | @ApiModelProperty("创建时间") | ||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") | ||||
@@ -41,6 +49,9 @@ public class ReviewPassProjectInfoToMhVO { | |||||
@ApiModelProperty("申报金额") | @ApiModelProperty("申报金额") | ||||
private BigDecimal declareAmount; | private BigDecimal declareAmount; | ||||
@ApiModelProperty("评审金额") | |||||
private BigDecimal reviewAmount; | |||||
@ApiModelProperty("项目状态") | @ApiModelProperty("项目状态") | ||||
private Integer status; | private Integer status; | ||||
@@ -769,23 +769,28 @@ public class WorkbenchManage { | |||||
.ge(req.getApproveAmountMin() != null, Project::getApprovalAmount, req.getApproveAmountMin()) | .ge(req.getApproveAmountMin() != null, Project::getApprovalAmount, req.getApproveAmountMin()) | ||||
.le(req.getApproveAmountMax() != null, Project::getApprovalAmount, req.getApproveAmountMax()) | .le(req.getApproveAmountMax() != null, Project::getApprovalAmount, req.getApproveAmountMax()) | ||||
.eq(req.getUnitStrip() != null, Project::getUnitStrip, req.getUnitStrip()) | .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 | .exists(req.getBidStatus() != null, ExistsSqlConst.PROJECT_EXISTS_PURCHASE | ||||
+ " and status = {0}", req.getBidStatus()) | + " and status = {0}", req.getBidStatus()) | ||||
.eq(Project::getNewest, Boolean.TRUE) | .eq(Project::getNewest, Boolean.TRUE) | ||||
.orderByDesc(Project::getUpdateOn); | .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<Long> unitIds = unitQueryState.getUnitIds(); | List<Long> unitIds = unitQueryState.getUnitIds(); | ||||
if (CollUtil.isNotEmpty(unitIds)) { | if (CollUtil.isNotEmpty(unitIds)) { | ||||
query.in(Project::getBuildOrgCode, CollUtils.convert(unitIds, String::valueOf)); | 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; | return query; | ||||
} | } | ||||
@@ -61,4 +61,7 @@ public class WorkbenchProjectLibReq extends PagePo { | |||||
@ApiModelProperty("是否计划内系统") | @ApiModelProperty("是否计划内系统") | ||||
private Boolean isInMhSystemReplaceInfos; | private Boolean isInMhSystemReplaceInfos; | ||||
@ApiModelProperty("替代类型") | |||||
private Integer replaceType; | |||||
} | } |