项目状态进度
时间轴
This commit is contained in:
+15
@@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -48,6 +49,20 @@ public class ProjectStatusBoardController {
|
|||||||
return Result.OK(result);
|
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<String> timeline = iProjectStatusBoardService.timeline(startTime, endTime);
|
||||||
|
return Result.OK(timeline);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目状态进度
|
* 项目状态进度
|
||||||
*
|
*
|
||||||
|
|||||||
+3
@@ -4,6 +4,7 @@ import com.jero.modules.project.entity.ProjectLibraryBase;
|
|||||||
import com.jero.modules.project.vo.TimeNodeVO;
|
import com.jero.modules.project.vo.TimeNodeVO;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -22,6 +23,8 @@ public interface IProjectStatusBoardService {
|
|||||||
*/
|
*/
|
||||||
List<List<TimeNodeVO>> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req);
|
List<List<TimeNodeVO>> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req);
|
||||||
|
|
||||||
|
List<String> timeline(Date startTime, Date endTime);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目状态进度
|
* 项目状态进度
|
||||||
* @param projectLibraryBase
|
* @param projectLibraryBase
|
||||||
|
|||||||
+131
-56
@@ -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.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
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.common.system.query.QueryGenerator;
|
||||||
import com.jero.modules.project.entity.ConditionAssessmentEO;
|
import com.jero.modules.project.entity.ConditionAssessmentEO;
|
||||||
import com.jero.modules.project.entity.ProjectLawsInventoryEO;
|
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.IConditionAssessmentEOService;
|
||||||
import com.jero.modules.project.service.IProjectStatusBoardService;
|
import com.jero.modules.project.service.IProjectStatusBoardService;
|
||||||
import com.jero.modules.project.vo.TimeNodeVO;
|
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.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -43,6 +50,8 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
|||||||
private ProjectLawsInventoryEOServiceImpl projectLawsInventoryEOService;
|
private ProjectLawsInventoryEOServiceImpl projectLawsInventoryEOService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ProjectTaskInventoryEOServiceImpl projectTaskInventoryEOService;
|
private ProjectTaskInventoryEOServiceImpl projectTaskInventoryEOService;
|
||||||
|
@Autowired
|
||||||
|
private SysDictItemServiceImpl sysDictItemServiceImpl;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -76,7 +85,10 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<Map<String,Object>> scheduleInfoList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req) {
|
public List<Map<String,Object>> scheduleInfoList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req) {
|
||||||
|
//目标市场数据字典
|
||||||
|
List<SysDictItem> dictItemList = sysDictItemServiceImpl.selectItemsByDictCode("region");
|
||||||
QueryWrapper<ProjectLibraryBase> queryWrapper = QueryGenerator.initQueryWrapper(projectLibraryBase, req.getParameterMap());
|
QueryWrapper<ProjectLibraryBase> queryWrapper = QueryGenerator.initQueryWrapper(projectLibraryBase, req.getParameterMap());
|
||||||
|
queryWrapper.orderByDesc("create_time");
|
||||||
//项目库信息
|
//项目库信息
|
||||||
List<ProjectLibraryBase> projectLibraryBaseList = projectLibraryBaseService.list(queryWrapper);
|
List<ProjectLibraryBase> projectLibraryBaseList = projectLibraryBaseService.list(queryWrapper);
|
||||||
|
|
||||||
@@ -101,7 +113,8 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
|||||||
|
|
||||||
|
|
||||||
for (ProjectLibraryBase libraryBase : projectLibraryBaseList) {
|
for (ProjectLibraryBase libraryBase : projectLibraryBaseList) {
|
||||||
|
//处理目标市场
|
||||||
|
targetMarket(projectLibraryBase, dictItemList, libraryBase);
|
||||||
//(1)每个项目下的法规清单
|
//(1)每个项目下的法规清单
|
||||||
List<ProjectLawsInventoryEO> ProjectLawsInventoryEOS = projectLawsInventoryEOAll.stream().filter(e -> libraryBase.getId().equals(e.getProjectLibraryId())).collect(Collectors.toList());
|
List<ProjectLawsInventoryEO> ProjectLawsInventoryEOS = projectLawsInventoryEOAll.stream().filter(e -> libraryBase.getId().equals(e.getProjectLibraryId())).collect(Collectors.toList());
|
||||||
List<String> ProjectLawsInventoryIdList = ProjectLawsInventoryEOS.stream().map(ProjectLawsInventoryEO::getId).collect(Collectors.toList());
|
List<String> ProjectLawsInventoryIdList = ProjectLawsInventoryEOS.stream().map(ProjectLawsInventoryEO::getId).collect(Collectors.toList());
|
||||||
@@ -115,14 +128,54 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
|||||||
map.put("targetMarket",libraryBase.getTargetMarket());//目标市场
|
map.put("targetMarket",libraryBase.getTargetMarket());//目标市场
|
||||||
|
|
||||||
//1. 项目当前状态--projectState(蓝/红/黄/绿)-->studio视角下的数据
|
//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){
|
if(ProjectLawsInventoryIdList.size() != 0){
|
||||||
//studio视角下获取项目状态评估数据
|
//studio视角下获取项目状态评估数据
|
||||||
List<ConditionAssessmentEO> projectStatusAssessList = conditionAssessmentEOService.getProjectStatusAssessList(ProjectLawsInventoryIdList);
|
List<ConditionAssessmentEO> projectStatusAssessList = conditionAssessmentEOService.getProjectStatusAssessList(ProjectLawsInventoryIdList);
|
||||||
if(projectStatusAssessList.size() != 0){
|
if(projectStatusAssessList.size() != 0){
|
||||||
int blue = 0;
|
|
||||||
int red = 0;
|
|
||||||
int yellow = 0;
|
|
||||||
int green = 0;
|
|
||||||
for (ConditionAssessmentEO conditionAssessmentEO : projectStatusAssessList) {
|
for (ConditionAssessmentEO conditionAssessmentEO : projectStatusAssessList) {
|
||||||
//蓝/红/黄/绿
|
//蓝/红/黄/绿
|
||||||
String conditionAssessment = conditionAssessmentEO.getConditionAssessment();
|
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 inventory = "";
|
||||||
String task = "";
|
String task = "";
|
||||||
if(ProjectLawsInventoryEOS.size() != 0){
|
if(ProjectLawsInventoryEOS.size() != 0){
|
||||||
@@ -197,37 +237,6 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
|||||||
String verify = "";
|
String verify = "";
|
||||||
String certificationProgress = "";
|
String certificationProgress = "";
|
||||||
if(projectTaskInventoryEOS.size() != 0){
|
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) {
|
for (ProjectTaskInventoryEO projectTaskInventoryEO : projectTaskInventoryEOS) {
|
||||||
//设计符合性流程-任务状态
|
//设计符合性流程-任务状态
|
||||||
String designFlowTaskStatus = projectTaskInventoryEO.getDesignFlowTaskStatus();
|
String designFlowTaskStatus = projectTaskInventoryEO.getDesignFlowTaskStatus();
|
||||||
@@ -253,7 +262,6 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//5. 设计符合性确认(待确认/符合/不符合/待追踪/不涉及/任务终止)
|
//5. 设计符合性确认(待确认/符合/不符合/待追踪/不涉及/任务终止)
|
||||||
if(StringUtils.isNotBlank(designFlowTaskStatus)){
|
if(StringUtils.isNotBlank(designFlowTaskStatus)){
|
||||||
if(ReviewResultEnum.TO_BE_CONFIRMED.getValue().equals(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("certificationProgress",certificationProgress);//认证进度
|
||||||
map.put("design",design);//设计符合性确认
|
map.put("design",design);//设计符合性确认
|
||||||
map.put("pre",pre);//PreHomo确认
|
map.put("pre",pre);//PreHomo确认
|
||||||
@@ -318,5 +327,71 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void targetMarket(ProjectLibraryBase projectLibraryBase, List<SysDictItem> dictItemList, ProjectLibraryBase libraryBase) {
|
||||||
|
String targetMarket = libraryBase.getTargetMarket();
|
||||||
|
if(StringUtils.isNotBlank(targetMarket)){
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (String s : targetMarket.split(",")) {
|
||||||
|
List<SysDictItem> 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<String> timeline(Date startTime, Date endTime) {
|
||||||
|
List<String> result = new ArrayList<String>();
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user