@@ -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<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.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<ReviewPassProjectInfoToMhVO> listReviewPassProject(ReviewPassProjectListPO po) { | |||
public List<DeclaredProjectInfoToMhVO> 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<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) | |||
.notIn(Project::getStage, ProjectStatus.CHANGE.getCode(), ProjectStatus.STOPPED.getCode()) | |||
.exists(sql.toString()) | |||
.eq(po.getProjectYear() != null, Project::getProjectYear, po.getProjectYear()) | |||
.orderByDesc(Project::getCreateOn); | |||
List<Project> 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<MhSystemReplaceInfo> replaceInfoList = replaceInfoMap.get(w.getProjectCode()); | |||
if (replaceInfoList != null) { | |||
List<ReferSystemReplaceInfoToMhVO> referSystemList = CollUtils.convert(replaceInfoList, | |||
@@ -112,5 +114,4 @@ public class OpenApiProjectLibManage { | |||
}).collect(Collectors.toList()); | |||
} | |||
} |
@@ -15,13 +15,16 @@ import java.time.LocalDateTime; | |||
* @since 10:59 2024/11/7 | |||
*/ | |||
@Data | |||
public class ReviewPassProjectListPO { | |||
public class MhSyncProjectListPO { | |||
@ApiModelProperty("校验公钥") | |||
@NotBlank(message = "秘钥不能为空") | |||
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 io.swagger.annotations.ApiModelProperty; | |||
import lombok.Builder; | |||
import lombok.Data; | |||
import lombok.experimental.Tolerate; | |||
import java.math.BigDecimal; | |||
import java.time.LocalDateTime; | |||
@@ -17,7 +19,13 @@ import java.util.List; | |||
* @since 10:14 2024/11/7 | |||
*/ | |||
@Data | |||
public class ReviewPassProjectInfoToMhVO { | |||
@Builder | |||
public class DeclaredProjectInfoToMhVO { | |||
@Tolerate | |||
public DeclaredProjectInfoToMhVO() { | |||
// 无参构造 | |||
} | |||
@ApiModelProperty("创建时间") | |||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |||
@@ -41,6 +49,9 @@ public class ReviewPassProjectInfoToMhVO { | |||
@ApiModelProperty("申报金额") | |||
private BigDecimal declareAmount; | |||
@ApiModelProperty("评审金额") | |||
private BigDecimal reviewAmount; | |||
@ApiModelProperty("项目状态") | |||
private Integer status; | |||
@@ -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<Long> 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; | |||
} | |||
@@ -61,4 +61,7 @@ public class WorkbenchProjectLibReq extends PagePo { | |||
@ApiModelProperty("是否计划内系统") | |||
private Boolean isInMhSystemReplaceInfos; | |||
@ApiModelProperty("替代类型") | |||
private Integer replaceType; | |||
} |