From 7c38fd66da444dd8083a5fa5d5b31faaea908bc1 Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Mon, 16 May 2022 16:00:02 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=8A=B6=E6=80=81=E8=BF=9B?= =?UTF-8?q?=E5=BA=A6--=E6=8E=A5=E5=8F=A3=E5=AF=B9=E6=8E=A5=E7=89=88(?= =?UTF-8?q?=E6=9C=AA=E9=AA=8C=E8=AF=81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectStatusBoardController.java | 17 ++ .../service/IProjectStatusBoardService.java | 13 + .../impl/ProjectStatusBoardServiceImpl.java | 244 +++++++++++++++++- 3 files changed, 273 insertions(+), 1 deletion(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectStatusBoardController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectStatusBoardController.java index 4ae4878e1..8a823179b 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectStatusBoardController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectStatusBoardController.java @@ -47,6 +47,23 @@ public class ProjectStatusBoardController { return Result.OK(result); } + /** + * 项目状态进度 + * + * @param projectLibraryBase + * @return + */ + @AutoLog(value = "项目状态进度") + @ApiOperation(value="项目状态进度", notes="项目状态进度") + @GetMapping(value = "/scheduleInfoList") + public Result scheduleInfoList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req) { + iProjectStatusBoardService.scheduleInfoList(projectLibraryBase, req); + if("result"==null) { + return Result.error("未找到对应数据"); + } + return Result.OK("result"); + } + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectStatusBoardService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectStatusBoardService.java index 660c0e001..0cd115688 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectStatusBoardService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectStatusBoardService.java @@ -13,5 +13,18 @@ import java.util.List; */ public interface IProjectStatusBoardService { + /** + * 时间轴 + * @param projectLibraryBase + * @param req + * @return + */ List> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req); + + /** + * 项目状态进度 + * @param projectLibraryBase + * @param req + */ + void scheduleInfoList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectStatusBoardServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectStatusBoardServiceImpl.java index 1f8aafef7..824d5645f 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectStatusBoardServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectStatusBoardServiceImpl.java @@ -3,8 +3,15 @@ package com.jero.modules.project.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.jero.common.system.query.QueryGenerator; -import com.jero.modules.dummy.entity.DummyInventoryBaseEO; +import com.jero.modules.project.entity.ConditionAssessmentEO; +import com.jero.modules.project.entity.ProjectLawsInventoryEO; import com.jero.modules.project.entity.ProjectLibraryBase; +import com.jero.modules.project.entity.ProjectTaskInventoryEO; +import com.jero.modules.project.enums.CurrentProjectStatusEnum; +import com.jero.modules.project.enums.InventoryAffirmStatusEnum; +import com.jero.modules.project.enums.ReviewResultEnum; +import com.jero.modules.project.enums.TaskAffirmStatusEnum; +import com.jero.modules.project.service.IConditionAssessmentEOService; import com.jero.modules.project.service.IProjectStatusBoardService; import com.jero.modules.project.vo.TimeNodeVO; import org.apache.commons.lang3.StringUtils; @@ -13,7 +20,9 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -27,8 +36,20 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService private ProjectTaskPlanningServiceImpl projectTaskPlanningService; @Autowired private ProjectLibraryBaseServiceImpl projectLibraryBaseService; + @Autowired + private IConditionAssessmentEOService conditionAssessmentEOService; + @Autowired + private ProjectLawsInventoryEOServiceImpl projectLawsInventoryEOService; + @Autowired + private ProjectTaskInventoryEOServiceImpl projectTaskInventoryEOService; + /** + * 时间轴 + * @param projectLibraryBase + * @param req + * @return + */ @Override public List> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req) { @@ -46,4 +67,225 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService } return result; } + + /** + * 项目状态进度 + * @param projectLibraryBase + * @param req + */ + @Override + public void scheduleInfoList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(projectLibraryBase, req.getParameterMap()); + + //项目库信息 + List projectLibraryBaseList = projectLibraryBaseService.list(queryWrapper); + + if(projectLibraryBaseList.size() != 0){ + List LibraryBaseIdList = projectLibraryBaseList.stream().map(ProjectLibraryBase::getId).collect(Collectors.toList()); + + //所有项目的法规清单 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(ProjectLawsInventoryEO::getProjectLibraryId,LibraryBaseIdList); + List projectLawsInventoryEOAll = projectLawsInventoryEOService.list(wrapper); + + //所有项目的任务清单 + List projectTaskInventoryEOList = new ArrayList<>(); + if(projectLawsInventoryEOAll.size() != 0){ + //法规清单id + List projectLawsInventoryEOIdAll = projectLawsInventoryEOAll.stream().map(ProjectLawsInventoryEO::getId).collect(Collectors.toList()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(ProjectTaskInventoryEO::getProjectLawsInventoryId,projectLawsInventoryEOIdAll); + projectTaskInventoryEOList = projectTaskInventoryEOService.list(lambdaQueryWrapper); + } + + List> result = new ArrayList<>(); + for (ProjectLibraryBase libraryBase : projectLibraryBaseList) { + + //(1)每个项目下的法规清单 + List ProjectLawsInventoryEOS = projectLawsInventoryEOAll.stream().filter(e -> libraryBase.getId().equals(e.getProjectLibraryId())).collect(Collectors.toList()); + List ProjectLawsInventoryIdList = ProjectLawsInventoryEOS.stream().map(ProjectLawsInventoryEO::getId).collect(Collectors.toList()); + //(2)每个项目下的任务清单 + List projectTaskInventoryEOS = new ArrayList<>(); + if(projectTaskInventoryEOList.size() != 0){ + projectTaskInventoryEOS = projectTaskInventoryEOList.stream().filter(e -> ProjectLawsInventoryIdList.contains(e.getProjectLawsInventoryId())).collect(Collectors.toList()); + } + Map map = new HashMap<>(); + map.put("projectName",libraryBase.getProjectName());//项目名称 + map.put("targetMarket",libraryBase.getTargetMarket());//目标市场 + + //1. 项目当前状态--projectState(蓝/红/黄/绿)-->studio视角下的数据 + if(ProjectLawsInventoryIdList.size() != 0){ + //studio视角下获取项目状态评估数据 + List projectStatusAssessList = conditionAssessmentEOService.getProjectStatusAssessList(ProjectLawsInventoryIdList); + if(projectStatusAssessList.size() != 0){ + int blue = 0; + int red = 0; + int yellow = 0; + int green = 0; + for (ConditionAssessmentEO conditionAssessmentEO : projectStatusAssessList) { + //蓝/红/黄/绿 + String conditionAssessment = conditionAssessmentEO.getConditionAssessment(); + if(StringUtils.isNotBlank(conditionAssessment)){ + if(CurrentProjectStatusEnum.BLUE.getValue().equals(conditionAssessment)){ + blue++; + }else if(CurrentProjectStatusEnum.RED.getValue().equals(conditionAssessment)){ + red++; + }else if(CurrentProjectStatusEnum.YELLOW.getValue().equals(conditionAssessment)){ + yellow++; + }else if(CurrentProjectStatusEnum.GREEN.getValue().equals(conditionAssessment)){ + green++; + } + } + } + String projectState = blue+"/"+red+"/"+yellow+"/"+green; + map.put("projectState",projectState); + } + } + + //2. 认证进度(不涉及/待开始/进行中/实验失败/实验通过) + + + //3. 清单确认状态(未发起,待确认,接收,拒绝) + int inventoryNotStarted=0; + int inventoryListToConfirm=0; + int inventoryAccepted=0; + int inventoryRejected=0; + //4. 任务确认状态(未发起,待确认,接收,拒绝) + int taskNotStarted=0; + int taskListToConfirm=0; + int taskAccepted=0; + int taskRejected=0; + String inventory = ""; + String task = ""; + if(ProjectLawsInventoryEOS.size() != 0){ + for (ProjectLawsInventoryEO projectLawsInventoryEO : ProjectLawsInventoryEOS) { + String inventoryAffirmStatus = projectLawsInventoryEO.getInventoryAffirmStatus();//清单确认状态 + String taskAffirmStatus = projectLawsInventoryEO.getTaskAffirmStatus();//任务确认状态 + if(StringUtils.isNotBlank(inventoryAffirmStatus)){ + if(InventoryAffirmStatusEnum.NOT_STARTED.getValue().equals(inventoryAffirmStatus)){ + inventoryNotStarted++; + }else if(InventoryAffirmStatusEnum.LIST_TO_CONFIRM.getValue().equals(inventoryAffirmStatus)){ + inventoryListToConfirm++; + }else if(InventoryAffirmStatusEnum.ACCEPTED.getValue().equals(inventoryAffirmStatus)){ + inventoryAccepted++; + }else if(InventoryAffirmStatusEnum.REJECTED.getValue().equals(inventoryAffirmStatus)){ + inventoryRejected++; + } + } + if(StringUtils.isNotBlank(taskAffirmStatus)){ + if(TaskAffirmStatusEnum.NOT_STARTED.getValue().equals(taskAffirmStatus)){ + taskNotStarted++; + }else if(TaskAffirmStatusEnum.LIST_TO_CONFIRM.getValue().equals(taskAffirmStatus)){ + taskListToConfirm++; + }else if(TaskAffirmStatusEnum.ACCEPTED.getValue().equals(taskAffirmStatus)){ + taskAccepted++; + }else if(TaskAffirmStatusEnum.REJECTED.getValue().equals(taskAffirmStatus)){ + taskRejected++; + } + } + } + inventory = inventoryNotStarted+"/"+inventoryListToConfirm+"/"+inventoryAccepted+"/"+inventoryRejected+"/"; + task = taskNotStarted+"/"+taskListToConfirm+"/"+taskAccepted+"/"+taskRejected+"/"; + } + map.put("inventory",inventory);//清单确认状态 + map.put("task",task);//清单确认状态 + + //5. 设计符合性确认,PreHomo确认,验证符合性确认 + String design = ""; + String pre = ""; + String verify = ""; + if(projectTaskInventoryEOS.size() != 0){ + int designToBeConfirmed = 0;//设计待确认 + int designConformity = 0;//设计符合 + int designInconformity = 0;//设计不符合 + int designToTrack = 0;//设计待追踪 + int designUninvolved = 0;//设计不涉及 + int designTerminationOfTask = 0;//设计任务终止 + + int preToBeConfirmed = 0;//pre待确认 + int preConformity = 0;//pre符合 + int preInconformity = 0;//pre不符合 + int preToTrack = 0;//pre待追踪 + int preUninvolved = 0;//pre不涉及 + int preTerminationOfTask = 0;//pre任务终止 + + int verifyToBeConfirmed = 0;//验证待确认 + int verifyConformity = 0;//验证符合 + int verifyInconformity = 0;//验证不符合 + int verifyToTrack = 0;//验证待追踪 + int verifyUninvolved = 0;//验证不涉及 + int verifyTerminationOfTask = 0;//验证任务终止 + + for (ProjectTaskInventoryEO projectTaskInventoryEO : projectTaskInventoryEOS) { + //设计符合性流程-任务状态 + String designFlowTaskStatus = projectTaskInventoryEO.getDesignFlowTaskStatus(); + //prehomo确认流程-任务状态 + String prehomoFlowTaskStatus = projectTaskInventoryEO.getPrehomoFlowTaskStatus(); + //verify_flow_task_status + String verifyFlowTaskStatus = projectTaskInventoryEO.getVerifyFlowTaskStatus(); + + //5. 设计符合性确认(待确认/符合/不符合/待追踪/不涉及/任务终止) + if(StringUtils.isNotBlank(designFlowTaskStatus)){ + if(ReviewResultEnum.TO_BE_CONFIRMED.getValue().equals(designFlowTaskStatus)){ + designToBeConfirmed++; + }else if(ReviewResultEnum.CONFORMITY.getValue().equals(designFlowTaskStatus)){ + designConformity++; + }else if(ReviewResultEnum.INCONFORMITY.getValue().equals(designFlowTaskStatus)){ + designInconformity++; + }else if(ReviewResultEnum.TO_TRACK.getValue().equals(designFlowTaskStatus)){ + designToTrack++; + }else if(ReviewResultEnum.UNINVOLVED.getValue().equals(designFlowTaskStatus)){ + designUninvolved++; + }else if(ReviewResultEnum.TERMINATION_OF_TASK.getValue().equals(designFlowTaskStatus)){ + designTerminationOfTask++; + } + } + //6. PreHomo确认(待确认/符合/不符合/待追踪/不涉及/任务终止) + if(StringUtils.isNotBlank(prehomoFlowTaskStatus)){ + if(ReviewResultEnum.TO_BE_CONFIRMED.getValue().equals(prehomoFlowTaskStatus)){ + preToBeConfirmed++; + }else if(ReviewResultEnum.CONFORMITY.getValue().equals(prehomoFlowTaskStatus)){ + preConformity++; + }else if(ReviewResultEnum.INCONFORMITY.getValue().equals(prehomoFlowTaskStatus)){ + preInconformity++; + }else if(ReviewResultEnum.TO_TRACK.getValue().equals(prehomoFlowTaskStatus)){ + preToTrack++; + }else if(ReviewResultEnum.UNINVOLVED.getValue().equals(prehomoFlowTaskStatus)){ + preUninvolved++; + }else if(ReviewResultEnum.TERMINATION_OF_TASK.getValue().equals(prehomoFlowTaskStatus)){ + preTerminationOfTask++; + } + } + //7. 验证符合性确认(待完成/符合/不符合/未验证/不涉及) + if(StringUtils.isNotBlank(verifyFlowTaskStatus)){ + if(ReviewResultEnum.TO_BE_CONFIRMED.getValue().equals(verifyFlowTaskStatus)){ + verifyToBeConfirmed++; + }else if(ReviewResultEnum.CONFORMITY.getValue().equals(verifyFlowTaskStatus)){ + verifyConformity++; + }else if(ReviewResultEnum.INCONFORMITY.getValue().equals(verifyFlowTaskStatus)){ + verifyInconformity++; + }else if(ReviewResultEnum.TO_TRACK.getValue().equals(verifyFlowTaskStatus)){ + verifyToTrack++; + }else if(ReviewResultEnum.UNINVOLVED.getValue().equals(verifyFlowTaskStatus)){ + verifyUninvolved++; + }else if(ReviewResultEnum.TERMINATION_OF_TASK.getValue().equals(verifyFlowTaskStatus)){ + verifyTerminationOfTask++; + } + } + } + + design = designToBeConfirmed+"/"+designConformity+"/"+designInconformity+"/"+designToTrack+"/"+designUninvolved+"/"+designTerminationOfTask; + pre = preToBeConfirmed+"/"+preConformity+"/"+preInconformity+"/"+preToTrack+"/"+preUninvolved+"/"+preTerminationOfTask; + verify = verifyToBeConfirmed+"/"+verifyConformity+"/"+verifyInconformity+"/"+verifyToTrack+"/"+verifyUninvolved+"/"+verifyTerminationOfTask; + } + map.put("design",design);//设计符合性确认 + map.put("design",pre);//PreHomo确认 + map.put("design",verify);//验证符合性确认 + result.add(map); + } + } + } + + + }