虚拟清单发布-数据处理+项目库任务计划时间轴增加状态值

This commit is contained in:
xiejunyu
2022-04-29 00:00:47 +08:00
parent d82b8b7cb0
commit b05919c05e
5 changed files with 144 additions and 47 deletions
@@ -188,7 +188,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
* @param dummyInventoryBaseEO
*/
@Override
public void issue(DummyInventoryBaseEO dummyInventoryBaseEO) throws Exception {
public void issue(DummyInventoryBaseEO dummyInventoryBaseEO){
this.updateById(dummyInventoryBaseEO);
//发布与撤回均需要发消息(向订阅的人员发消息)
//首次发布不发消息
@@ -249,40 +249,48 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
//3.2基础表数据对比
String baseCJ=dummyContentChangeEOBaseList.get(0).getContentJson();
List<DummyInventoryBaseEO> baseCJlist = JSONArray.parseArray(baseCJ, DummyInventoryBaseEO.class);//json转list
List<DummyInventoryBaseEO> baseCJList = JSONArray.parseArray(baseCJ, DummyInventoryBaseEO.class);//json转list
//对比,获取值不同的字段
Map<String, List<Object>> diff = null;
for(int i=0;i<= baseCJlist.size();i++) {
baseCJlist.get(i);
Map<String, String> baseDiff = null;
for(int i=0;i< baseCJList.size();i++) {
baseCJList.get(i);
dummyInventoryBaseEOList.get(i);
diff = ListDiff.compareObject(baseCJlist.get(i), dummyInventoryBaseEOList.get(i));
System.out.println(diff);//不同的字段原,现,{name=[虚拟清单33331122211, 虚拟清单3333444]}
baseDiff = ListDiff.compareObject(baseCJList.get(i), dummyInventoryBaseEOList.get(i));
System.out.println(baseDiff);//不同的字段原,现,{name=[虚拟清单33331122211, 虚拟清单3333444]}
}
//4.对比详情表数据
//4.1截止到现在发布,期间修改的数据(详情)
//现在的数据为-->dummyInventoryInfoEOList
//dummyInventoryInfoEOList
//4.2详情表数据(一条基础数据可能对应多个详情数据---一对多)
/* String baseCJ=dummyContentChangeEOBaseList.get(0).getContentJson();
List<DummyInventoryBaseEO> baseCJlist = JSONArray.parseArray(baseCJ, DummyInventoryBaseEO.class);//json转list
//对比,获取值不同的字段
Map<String, List<Object>> diff = null;
for(int i=0;i<= baseCJlist.size();i++) {
baseCJlist.get(i);
dummyInventoryBaseEOList.get(i);
diff = ListDiff.compareObject(baseCJlist.get(i), dummyInventoryBaseEOList.get(i));
System.out.println(diff);//不同的字段原,现,{name=[虚拟清单33331122211, 虚拟清单3333444]}
}*/
//数据库里原来的详情数据
for(DummyContentChangeEO dummyContentChangeEO : dummyContentChangeEOInfoList){
String infoCJ = dummyContentChangeEO.getContentJson();
List<DummyContentChangeEO> infoCJlist = JSONArray.parseArray(infoCJ, DummyContentChangeEO.class);//json转list
System.out.println(infoCJlist);
System.out.println(infoCJlist);
List<DummyInventoryInfoEO> infoCJList = JSONArray.parseArray(infoCJ,DummyInventoryInfoEO.class);//json转list
//对比,获取值不同的字段
Map<String, String> infoDiff = null;
if(infoCJList.size()==dummyInventoryInfoEOList.size()) {//现在的详情数据数量和数据库里的一样
for (int i = 0; i < infoCJList.size(); i++) {
DummyInventoryInfoEO h = infoCJList.get(i);
DummyInventoryInfoEO g = dummyInventoryInfoEOList.get(i);
infoDiff = ListDiff.compareObject(infoCJList.get(i), dummyInventoryInfoEOList.get(i));
System.out.println(infoDiff);//不同的字段原,现
}
}else{//现在的详情数据数量和数据库里的不一样<--详情的id不一样
String diffId=null;
StringBuilder diffIdBuilder=new StringBuilder();
for(DummyInventoryInfoEO dummyInventoryInfoEO : infoCJList) {
diffId = dummyInventoryInfoEOList.stream().filter(e -> !dummyInventoryInfoEO.equals(e.getId()))
.map(f->f.getId()).collect(Collectors.joining(","));
diffIdBuilder.append(diffId).append(",");
}
diffIdBuilder.substring(0,diffIdBuilder.toString().length()-1);
}
System.out.println(infoCJList);
// JsonDiff.compareJson(infoCJjson,info,null);
@@ -4,22 +4,31 @@ import java.lang.reflect.Field;
import java.util.*;
public class ListDiff <T> {
public static <T> Map<String, List<Object>> compareObject(T obj1, T Obj2)
throws Exception {
Map<String, List<Object>> result = new HashMap<String, List<Object>>();
public static <T> Map<String, String> compareObject(T obj1, T Obj2) {
Map<String, String> result = new HashMap<String,String>();
Field[] fs = obj1.getClass().getDeclaredFields();
for (Field f : fs) {
f.setAccessible(true);
Object v1 = f.get(obj1);
Object v2 = f.get(Obj2);
if( ! equals(v1, v2) /*&& !f.getName().contains("update")*/
&& !f.getName().equals("updateTime") ){
List<Object> resultList=new ArrayList<>();
resultList.add(v1);
resultList.add(v2);
result.put(f.getName(), resultList);
Object v1 = null;Object v2 = null;
try {
v1 = f.get(obj1);
v2 = f.get(Obj2);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
if( ! equals(v1, v2)
&& !f.getName().equals("updateTime") ){
StringBuilder v1String= new StringBuilder(String.valueOf(v1));
StringBuilder v2String= new StringBuilder(String.valueOf(v2));
result.put(f.getName(), v1String.append(",").append(v2String).toString());
System.out.println("zlzl");
}
}
return result;
@@ -0,0 +1,31 @@
package com.jero.modules.project.enums;
public enum PlanStatusEnum {
OUT_OF_DATE("已到时间","1"),
ON_GOING("在当前时间段","2"),
LESS_THAN_TIME("未到时间","3"),
;
String name;
String value;
PlanStatusEnum(String name, String value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
@@ -1,8 +1,10 @@
package com.jero.modules.project.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.project.entity.ProjectTaskPlanning;
import com.jero.modules.project.enums.PlanStatusEnum;
import com.jero.modules.project.enums.ProjectTaskPlanningNameEnum;
import com.jero.modules.project.mapper.ProjectTaskPlanningMapper;
import com.jero.modules.project.service.IProjectTaskPlanningService;
@@ -13,10 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.*;
/**
* @Description: 法规/认证任务计划 (各阶段确认进度) 表
@@ -94,10 +93,26 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl<ProjectTaskPlann
ProjectTaskPlanning projectTaskPlanning = projectTaskPlanningMapper.getByProjectId(projectId);
List<TimeNodeVO> timeNodeVOS = new ArrayList<>();
TimeNodeVO listConfirmationVO = new TimeNodeVO();
Date now=new Date();
Calendar cal1 = Calendar.getInstance();
cal1.setTime(now);
// 将时分秒,毫秒域清零
cal1.set(Calendar.HOUR_OF_DAY, 0);
cal1.set(Calendar.MINUTE, 0);
cal1.set(Calendar.SECOND, 0);
cal1.set(Calendar.MILLISECOND, 0);
Date trueNow = cal1.getTime();
if(StringUtils.isNotBlank(projectTaskPlanning.getListConfirmation().toString())) {
listConfirmationVO.setName(ProjectTaskPlanningNameEnum.LIST_CONFIRMATION.getName());
listConfirmationVO.setTime(projectTaskPlanning.getListConfirmation());
if(projectTaskPlanning.getListConfirmation().after(trueNow)){
listConfirmationVO.setStatus(PlanStatusEnum.OUT_OF_DATE.getValue());
}else if(projectTaskPlanning.getListConfirmation().before(trueNow)){
listConfirmationVO.setStatus(PlanStatusEnum.LESS_THAN_TIME.getValue());
}else{
listConfirmationVO.setStatus(PlanStatusEnum.ON_GOING.getValue());
}
timeNodeVOS.add(listConfirmationVO);
}
@@ -105,41 +120,82 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl<ProjectTaskPlann
TimeNodeVO legalTaskConfirmationVO = new TimeNodeVO();
legalTaskConfirmationVO.setName(ProjectTaskPlanningNameEnum.LEGAL_TASK_CONFIRMATION.getName());
legalTaskConfirmationVO.setTime(projectTaskPlanning.getLegalTaskConfirmation());
if(projectTaskPlanning.getLegalTaskConfirmation().after(trueNow)){
legalTaskConfirmationVO.setStatus(PlanStatusEnum.LESS_THAN_TIME.getValue());
}else if(projectTaskPlanning.getLegalTaskConfirmation().before(trueNow)){
legalTaskConfirmationVO.setStatus(PlanStatusEnum.OUT_OF_DATE.getValue());
}else {
legalTaskConfirmationVO.setStatus(PlanStatusEnum.ON_GOING.getValue());
}
timeNodeVOS.add(legalTaskConfirmationVO);
}
if(StringUtils.isNotBlank(projectTaskPlanning.getDesignDeadline().toString())) {
TimeNodeVO designDeadlineVO = new TimeNodeVO();
designDeadlineVO.setName(ProjectTaskPlanningNameEnum.DESIGN_DEADLINE.getName());
designDeadlineVO.setTime(projectTaskPlanning.getDesignDeadline());
if(projectTaskPlanning.getDesignDeadline().after(trueNow)){
designDeadlineVO.setStatus(PlanStatusEnum.LESS_THAN_TIME.getValue());
}else if(projectTaskPlanning.getDesignDeadline().before(trueNow)){
designDeadlineVO.setStatus(PlanStatusEnum.OUT_OF_DATE.getValue());
}else{
designDeadlineVO.setStatus(PlanStatusEnum.ON_GOING.getValue());
}
timeNodeVOS.add(designDeadlineVO);
}
if(StringUtils.isNotBlank(projectTaskPlanning.getPrehomoDeadline().toString())) {
TimeNodeVO prehomoDeadlineVO = new TimeNodeVO();
prehomoDeadlineVO.setName(ProjectTaskPlanningNameEnum.PREHOMO_DEADLINE.getName());
prehomoDeadlineVO.setTime(projectTaskPlanning.getPrehomoDeadline());
if(projectTaskPlanning.getPrehomoDeadline().after(trueNow)){
prehomoDeadlineVO.setStatus(PlanStatusEnum.LESS_THAN_TIME.getValue());
}else if(projectTaskPlanning.getPrehomoDeadline().before(trueNow)){
prehomoDeadlineVO.setStatus(PlanStatusEnum.OUT_OF_DATE.getValue());
}else{
prehomoDeadlineVO.setStatus(PlanStatusEnum.ON_GOING.getValue());
}
timeNodeVOS.add(prehomoDeadlineVO);
}
if(StringUtils.isNotBlank(projectTaskPlanning.getAttestationStartTime().toString())) {
TimeNodeVO attestationStartTimeVO = new TimeNodeVO();
attestationStartTimeVO.setName(ProjectTaskPlanningNameEnum.ATTESTATION_START_TIME.getName());
attestationStartTimeVO.setTime(projectTaskPlanning.getAttestationStartTime());
if(projectTaskPlanning.getAttestationStartTime().after(trueNow)){
attestationStartTimeVO.setStatus(PlanStatusEnum.LESS_THAN_TIME.getValue());
}else if(projectTaskPlanning.getAttestationStartTime().before(trueNow)){
attestationStartTimeVO.setStatus(PlanStatusEnum.OUT_OF_DATE.getValue());
}else{
attestationStartTimeVO.setStatus(PlanStatusEnum.ON_GOING.getValue());
}
timeNodeVOS.add(attestationStartTimeVO);
}
if(StringUtils.isNotBlank(projectTaskPlanning.getAttestationEndTime().toString())) {
TimeNodeVO attestationEndTimeVO = new TimeNodeVO();
attestationEndTimeVO.setName(ProjectTaskPlanningNameEnum.ATTESTATION_END_TIME.getName());
attestationEndTimeVO.setTime(projectTaskPlanning.getAttestationEndTime());
if(projectTaskPlanning.getAttestationEndTime().after(trueNow)){
attestationEndTimeVO.setStatus(PlanStatusEnum.LESS_THAN_TIME.getValue());
}else if(projectTaskPlanning.getAttestationEndTime().before(trueNow)){
attestationEndTimeVO.setStatus(PlanStatusEnum.OUT_OF_DATE.getValue());
}else{
attestationEndTimeVO.setStatus(PlanStatusEnum.ON_GOING.getValue());
}
timeNodeVOS.add(attestationEndTimeVO);
}
if(StringUtils.isNotBlank(projectTaskPlanning.getVerifyDeadline().toString())) {
TimeNodeVO verifyDeadlineVO = new TimeNodeVO();
verifyDeadlineVO.setName(ProjectTaskPlanningNameEnum.VERIFY_DEADLINE.getName());
verifyDeadlineVO.setTime(projectTaskPlanning.getVerifyDeadline());
if(projectTaskPlanning.getVerifyDeadline().after(trueNow)){
verifyDeadlineVO.setStatus(PlanStatusEnum.LESS_THAN_TIME.getValue());
}else if(projectTaskPlanning.getVerifyDeadline().before(trueNow)){
verifyDeadlineVO.setStatus(PlanStatusEnum.OUT_OF_DATE.getValue());
}else{
verifyDeadlineVO.setStatus(PlanStatusEnum.ON_GOING.getValue());
}
timeNodeVOS.add(verifyDeadlineVO);
}
// 排序
Collections.sort(timeNodeVOS, listConfirmationVO);
return timeNodeVOS;
}
@@ -157,14 +213,6 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl<ProjectTaskPlann
public void setProjectTaskPlanning(String projectId) throws ParseException {
ProjectTaskPlanning projectTaskPlanning=new ProjectTaskPlanning();
projectTaskPlanning.setProjectId(projectId);
Date now = new Date();
projectTaskPlanning.setListConfirmation(now);
projectTaskPlanning.setLegalTaskConfirmation(now);
projectTaskPlanning.setDesignDeadline(now);
projectTaskPlanning.setPrehomoDeadline(now);
projectTaskPlanning.setAttestationStartTime(now);
projectTaskPlanning.setAttestationEndTime(now);
projectTaskPlanning.setVerifyDeadline(now);
add(projectTaskPlanning);
}
}
@@ -9,6 +9,7 @@ import java.util.Date;
public class TimeNodeVO implements Comparator<TimeNodeVO> {
private String name;
private Date time;
private String status;
@Override
public int compare(TimeNodeVO o1, TimeNodeVO o2) {