diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ReviewChecklistManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ReviewChecklistManage.java index 52fc2c7..0006816 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ReviewChecklistManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ReviewChecklistManage.java @@ -2,10 +2,12 @@ package com.ningdatech.pmapi.projectdeclared.manage; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import com.ningdatech.basic.exception.BizException; import com.ningdatech.basic.function.VUtils; import com.ningdatech.basic.model.PageVo; @@ -30,6 +32,7 @@ import com.ningdatech.pmapi.projectlib.service.IProjectService; import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; import com.ningdatech.pmapi.user.security.auth.model.UserInfoDetails; import com.ningdatech.pmapi.user.util.LoginUserUtil; +import com.wflow.enums.ReviewChecklistResultEnum; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -235,11 +238,100 @@ public class ReviewChecklistManage { * @return */ public List summaryList(String projectCode) { + List approves = reviewChecklistApproveService.list(Wrappers.lambdaQuery(ReviewChecklistApprove.class) + .eq(ReviewChecklistApprove::getProjectCode, projectCode) + .orderByAsc(ReviewChecklistApprove::getCreateOn)); + if(CollUtil.isEmpty(approves)){ + return Collections.emptyList(); + } + + //做成map + Map> groupSubMap = approves.stream() + .collect(Collectors.groupingBy(ReviewChecklistApprove::getSubTitle)); + //去重子标题 + Set subTitleSet = Sets.newHashSet(); + List dupSubTitle = approves.stream().filter(r -> subTitleSet.add(r.getSubTitle())).collect(Collectors.toList()); - return Collections.emptyList(); + List res = dupSubTitle.stream() + .map(r -> { + ReviewChecklistApproveVO vo = BeanUtil.copyProperties(r, ReviewChecklistApproveVO.class); + if(groupSubMap.containsKey(vo.getSubTitle())){ + List reviewChecklistApproves = groupSubMap.get(vo.getSubTitle()); + StringBuffer reviewCommentsSb = new StringBuffer(); + for(ReviewChecklistApprove approve : reviewChecklistApproves){ + reviewCommentsSb.append(approve.getCreateBy() + StrPool.COLON + approve.getReviewComments() + "\n"); + } + vo.setReviewComments(reviewCommentsSb.toString()); + } + return vo; + }) + .collect(Collectors.toList()); + + return res; } public String summary(String projectCode) { + //修改到 项目里去 + Project project = projectService.getProjectByCode(projectCode); + VUtils.isTrue(Objects.isNull(project)).throwMessage("项目不存在"); + VUtils.isTrue(Objects.nonNull(project.getReviewCheckFinish()) && project.getReviewCheckFinish()) + .throwMessage("项目的审查清单已经合并过了!"); + + List approves = reviewChecklistApproveService.list(Wrappers.lambdaQuery(ReviewChecklistApprove.class) + .eq(ReviewChecklistApprove::getProjectCode, projectCode) + .orderByAsc(ReviewChecklistApprove::getCreateOn)); + if(CollUtil.isEmpty(approves)){ + throw new BizException("该项目 未被七大审查人 审批!"); + } + + List reviewHumans = Lists.newArrayList();; + if(BizConst.DEV.equals(active)){ + reviewHumans = DeclaredProjectContant.ReviewChecklist.REVIEW_HUMANS_ZYD; + }else{ + reviewHumans = DeclaredProjectContant.ReviewChecklist.REVIEW_HUMANS_ZZD; + } + Set computeHumanSet = reviewHumans.stream().collect(Collectors.toSet()); + for(ReviewChecklistApprove approve : approves){ + if(computeHumanSet.contains(approve.getCreateByCode())){ + computeHumanSet.remove(approve.getCreateByCode()); + } + } + if(CollUtil.isNotEmpty(computeHumanSet)){ + throw new BizException("此项目的审查清单 未被七大审核人 审批完!"); + } + + //做成map 并且还要 未通过的 + Map> groupSubMap = approves.stream() + .filter(r -> Objects.nonNull(r.getReviewResult()) && Lists.newArrayList( + ReviewChecklistResultEnum.NOT_PASS.getCode(),ReviewChecklistResultEnum.ONE_VOTE_VETO.getCode()) + .contains(r.getReviewResult())) + .collect(Collectors.groupingBy(ReviewChecklistApprove::getSubTitle)); + //去重子标题 + Set subTitleSet = Sets.newHashSet(); + List dupSubTitle = approves.stream().filter(r -> subTitleSet.add(r.getSubTitle())).collect(Collectors.toList()); + + List res = dupSubTitle.stream() + .map(r -> { + ReviewChecklistApproveVO vo = BeanUtil.copyProperties(r, ReviewChecklistApproveVO.class); + if(groupSubMap.containsKey(vo.getSubTitle())){ + List reviewChecklistApproves = groupSubMap.get(vo.getSubTitle()); + StringBuffer reviewCommentsSb = new StringBuffer(); + if(CollUtil.isEmpty(reviewChecklistApproves)){ + vo.setReviewComments(reviewCommentsSb.toString()); + }else{ + for(ReviewChecklistApprove approve : reviewChecklistApproves){ + reviewCommentsSb.append(approve.getCreateBy() + StrPool.COLON + approve.getReviewComments() + "\n"); + } + vo.setReviewComments(reviewCommentsSb.toString()); + } + } + return vo; + }) + .collect(Collectors.toList()); + //修改 并且 已经合并 + project.setReviewChecklist(JSON.toJSONString(res)); + project.setReviewCheckFinish(Boolean.TRUE); + projectService.updateById(project); return BizConst.OP_SUCCESS; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/entity/Project.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/entity/Project.java index 31cbafc..d446342 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/entity/Project.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/entity/Project.java @@ -561,4 +561,7 @@ public class Project implements Serializable { @ApiModelProperty("评审清单") private String reviewChecklist; + + @ApiModelProperty("是否开启评审清单") + private Boolean reviewCheckFinish; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/vo/ProjectDetailVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/vo/ProjectDetailVO.java index e03a709..4244268 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/vo/ProjectDetailVO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/vo/ProjectDetailVO.java @@ -543,4 +543,7 @@ public class ProjectDetailVO { @ApiModelProperty("评审清单") private String reviewChecklist; + + @ApiModelProperty("是否开启评审清单") + private Boolean reviewCheckFinish; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/vo/ProjectReviewCheckListItemVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/vo/ProjectReviewCheckListItemVO.java index 8070a32..f61f23b 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/vo/ProjectReviewCheckListItemVO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/vo/ProjectReviewCheckListItemVO.java @@ -116,6 +116,9 @@ public class ProjectReviewCheckListItemVO { @JSONField(format = "yyyy-MM-dd") private LocalDateTime planAcceptanceTime; + @ApiModelProperty("是否开启评审清单") + private Boolean reviewCheckFinish; + public String getProjectTypeName() { if (Objects.nonNull(this.projectType)) { Optional.ofNullable(ProjectTypeNewEnum.getDesc(this.projectType))