From 273540d3768f390d76beb48479d487cffe89fceb Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Mon, 16 May 2022 18:06:15 +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=20=E6=97=B6=E9=97=B4=E8=BD=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectStatusBoardController.java | 15 ++ .../service/IProjectStatusBoardService.java | 3 + .../impl/ProjectStatusBoardServiceImpl.java | 187 ++++++++++++------ 3 files changed, 149 insertions(+), 56 deletions(-) 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 05ad207cd..fc8301c2e 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 @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; +import java.util.Date; import java.util.List; import java.util.Map; @@ -48,6 +49,20 @@ public class ProjectStatusBoardController { return Result.OK(result); } + /** + * 时间轴列 + * @param startTime + * @param endTime + * @return + */ + @AutoLog(value = "时间轴列") + @ApiOperation(value="时间轴列", notes="时间轴列") + @GetMapping(value = "/timeline") + public Result timeline(Date startTime,Date endTime) { + List timeline = iProjectStatusBoardService.timeline(startTime, endTime); + return Result.OK(timeline); + } + /** * 项目状态进度 * 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 3f0725187..dab8c8e35 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 @@ -4,6 +4,7 @@ import com.jero.modules.project.entity.ProjectLibraryBase; import com.jero.modules.project.vo.TimeNodeVO; import javax.servlet.http.HttpServletRequest; +import java.util.Date; import java.util.List; import java.util.Map; @@ -22,6 +23,8 @@ public interface IProjectStatusBoardService { */ List> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req); + List timeline(Date startTime, Date endTime); + /** * 项目状态进度 * @param projectLibraryBase 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 f2870c329..19efebc90 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 @@ -2,6 +2,7 @@ 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.constant.enums.CutEnum; import com.jero.common.system.query.QueryGenerator; import com.jero.modules.project.entity.ConditionAssessmentEO; import com.jero.modules.project.entity.ProjectLawsInventoryEO; @@ -15,12 +16,18 @@ 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 com.jero.modules.system.entity.SysDictItem; +import com.jero.modules.system.service.impl.SysDictItemServiceImpl; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -43,6 +50,8 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService private ProjectLawsInventoryEOServiceImpl projectLawsInventoryEOService; @Autowired private ProjectTaskInventoryEOServiceImpl projectTaskInventoryEOService; + @Autowired + private SysDictItemServiceImpl sysDictItemServiceImpl; /** @@ -76,7 +85,10 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService */ @Override public List> scheduleInfoList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req) { + //目标市场数据字典 + List dictItemList = sysDictItemServiceImpl.selectItemsByDictCode("region"); QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(projectLibraryBase, req.getParameterMap()); + queryWrapper.orderByDesc("create_time"); //项目库信息 List projectLibraryBaseList = projectLibraryBaseService.list(queryWrapper); @@ -101,7 +113,8 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService for (ProjectLibraryBase libraryBase : projectLibraryBaseList) { - + //处理目标市场 + targetMarket(projectLibraryBase, dictItemList, libraryBase); //(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()); @@ -115,14 +128,54 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService map.put("targetMarket",libraryBase.getTargetMarket());//目标市场 //1. 项目当前状态--projectState(蓝/红/黄/绿)-->studio视角下的数据 + int blue = 0; + int red = 0; + int yellow = 0; + int green = 0; + //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; + //设计 + int designToBeConfirmed = 0;//设计待确认 + int designConformity = 0;//设计符合 + int designInconformity = 0;//设计不符合 + int designToTrack = 0;//设计待追踪 + int designUninvolved = 0;//设计不涉及 + int designTerminationOfTask = 0;//设计任务终止 + + //pre + 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;//验证任务终止 + + //认证进度 + int na = 0; + int notStart = 0; + int inProgress = 0; + int testFailed = 0; + int testPassed = 0; 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(); @@ -138,24 +191,11 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService } } } - String projectState = blue+"/"+red+"/"+yellow+"/"+green; - map.put("projectState",projectState);//项目当前状态 } } + String projectState = blue+"/"+red+"/"+yellow+"/"+green; + map.put("projectStatus",projectState);//项目当前状态 - - - - //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){ @@ -197,37 +237,6 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService String verify = ""; String certificationProgress = ""; if(projectTaskInventoryEOS.size() != 0){ - //设计 - int designToBeConfirmed = 0;//设计待确认 - int designConformity = 0;//设计符合 - int designInconformity = 0;//设计不符合 - int designToTrack = 0;//设计待追踪 - int designUninvolved = 0;//设计不涉及 - int designTerminationOfTask = 0;//设计任务终止 - - //pre - 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;//验证任务终止 - - //认证进度 - int na = 0; - int notStart = 0; - int inProgress = 0; - int testFailed = 0; - int testPassed = 0; - for (ProjectTaskInventoryEO projectTaskInventoryEO : projectTaskInventoryEOS) { //设计符合性流程-任务状态 String designFlowTaskStatus = projectTaskInventoryEO.getDesignFlowTaskStatus(); @@ -253,7 +262,6 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService } } - //5. 设计符合性确认(待确认/符合/不符合/待追踪/不涉及/任务终止) if(StringUtils.isNotBlank(designFlowTaskStatus)){ if(ReviewResultEnum.TO_BE_CONFIRMED.getValue().equals(designFlowTaskStatus)){ @@ -303,11 +311,12 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService } } } - certificationProgress = na+"/"+notStart+"/"+inProgress+"/"+testFailed+"/"+testPassed; - design = designToBeConfirmed+"/"+designConformity+"/"+designInconformity+"/"+designToTrack+"/"+designUninvolved+"/"+designTerminationOfTask; - pre = preToBeConfirmed+"/"+preConformity+"/"+preInconformity+"/"+preToTrack+"/"+preUninvolved+"/"+preTerminationOfTask; - verify = verifyToBeConfirmed+"/"+verifyConformity+"/"+verifyInconformity+"/"+verifyToTrack+"/"+verifyUninvolved+"/"+verifyTerminationOfTask; } + certificationProgress = na+"/"+notStart+"/"+inProgress+"/"+testFailed+"/"+testPassed; + design = designToBeConfirmed+"/"+designConformity+"/"+designInconformity+"/"+designToTrack+"/"+designUninvolved+"/"+designTerminationOfTask; + pre = preToBeConfirmed+"/"+preConformity+"/"+preInconformity+"/"+preToTrack+"/"+preUninvolved+"/"+preTerminationOfTask; + verify = verifyToBeConfirmed+"/"+verifyConformity+"/"+verifyInconformity+"/"+verifyToTrack+"/"+verifyUninvolved+"/"+verifyTerminationOfTask; + map.put("certificationProgress",certificationProgress);//认证进度 map.put("design",design);//设计符合性确认 map.put("pre",pre);//PreHomo确认 @@ -318,5 +327,71 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService return result; } + private void targetMarket(ProjectLibraryBase projectLibraryBase, List dictItemList, ProjectLibraryBase libraryBase) { + String targetMarket = libraryBase.getTargetMarket(); + if(StringUtils.isNotBlank(targetMarket)){ + StringBuilder sb = new StringBuilder(); + for (String s : targetMarket.split(",")) { + List collect = dictItemList.stream().filter(e -> s.equals(e.getItemValue())).collect(Collectors.toList()); + String itemText = ""; + if(CutEnum.CN.getValue().equals(projectLibraryBase.getCut())){ + if(collect.size() != 0){ + itemText = collect.get(0).getItemText(); + } + }else{ + if(collect.size() != 0){ + itemText = collect.get(0).getEnName(); + } + } + sb.append(itemText+","); + } + if(StringUtils.isNotBlank(sb)){ + String substring = sb.substring(0, sb.length() - 1); + libraryBase.setTargetMarket(substring); + } + } + } + + + @Override + public List timeline(Date startTime, Date endTime) { + List result = new ArrayList(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + Calendar calendarBefore = Calendar.getInstance(); + if(ObjectUtils.isNotEmpty(startTime)){ + calendarBefore.setTime(startTime); + }else{ + calendarBefore.setTime(new Date()); + } + calendarBefore.add(Calendar.MONTH, -6); + Date dateBefore = calendarBefore.getTime(); + + Calendar calendarAfter = Calendar.getInstance(); + if(ObjectUtils.isNotEmpty(endTime)){ + calendarAfter.setTime(endTime); + }else{ + calendarAfter.setTime(new Date()); + } + calendarAfter.add(Calendar.YEAR, +6); + Date dateAfter = calendarAfter.getTime(); + + Calendar min = Calendar.getInstance(); + Calendar max = Calendar.getInstance(); + + min.setTime(dateBefore); + min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 10); + + max.setTime(dateAfter); + max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 13); + + Calendar curr = min; + while (curr.before(max)) { + result.add(sdf.format(curr.getTime())); + curr.add(Calendar.MONTH, 1); + } + return result; + } + }