diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/entity/DummyInventoryInfoEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/entity/DummyInventoryInfoEO.java index 06dc1cc0c..f37c8a175 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/entity/DummyInventoryInfoEO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/entity/DummyInventoryInfoEO.java @@ -106,6 +106,8 @@ public class DummyInventoryInfoEO implements Serializable { @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") @DateTimeFormat(pattern="yyyy-MM-dd") private java.util.Date xin1Che1Xing2Shi2Shi1Ri4Qi1; + @TableField(exist = false) + private String xin1Che1Xing2Shi2Shi1Ri4Qi1String; /**在产车实施日期*/ @Excel(name = "在产车实施日期", width = 15,format = "yyyy-MM-dd") @@ -113,6 +115,8 @@ public class DummyInventoryInfoEO implements Serializable { @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") @DateTimeFormat(pattern="yyyy-MM-dd") private java.util.Date implementTime; + @TableField(exist = false) + private String implementTimeString; /**对应标准*/ @Excel(name = "对应标准", width = 15) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/impl/DummyInventoryBaseEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/impl/DummyInventoryBaseEOServiceImpl.java index ba81c316d..0439e3de1 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/impl/DummyInventoryBaseEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/impl/DummyInventoryBaseEOServiceImpl.java @@ -13,13 +13,19 @@ import com.jero.common.exception.JeroBootException; import com.jero.common.system.vo.LoginUser; import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl; import com.jero.modules.domain.service.DomainUserRelService; -import com.jero.modules.dummy.entity.*; +import com.jero.modules.dummy.entity.DummyContentChangeEO; +import com.jero.modules.dummy.entity.DummyInventoryBaseEO; +import com.jero.modules.dummy.entity.DummyInventoryInfoEO; +import com.jero.modules.dummy.entity.DummyReadEO; import com.jero.modules.dummy.enums.DummyInventoryBaseFieldEnum; import com.jero.modules.dummy.enums.InventoryStateEnum; import com.jero.modules.dummy.enums.ReadFlagEnum; import com.jero.modules.dummy.mapper.DummyContentChangeEOMapper; import com.jero.modules.dummy.mapper.DummyInventoryBaseEOMapper; -import com.jero.modules.dummy.service.*; +import com.jero.modules.dummy.service.IDummyContentChangeEOService; +import com.jero.modules.dummy.service.IDummyInventoryBaseEOService; +import com.jero.modules.dummy.service.IDummyInventoryInfoEOService; +import com.jero.modules.dummy.service.IDummyReadEOService; import com.jero.modules.dummy.util.ListDiff; import com.jero.modules.feishu.service.IFeishuService; import com.jero.modules.system.entity.SysAnnouncement; @@ -40,6 +46,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.IOException; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -78,8 +85,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl sameSerialNumberList = infoCJBaseSerialNumberList.stream().filter(t -> dummyInventoryInfoEOSerialNumberList.contains(t)).collect(Collectors.toList()); if(CollectionUtils.isNotEmpty(sameSerialNumberList)) { + for (String sameSerialNumber : sameSerialNumberList) { //查询传入里包含共有编号的数据 - for(DummyInventoryInfoEO dummyInventoryInfoEO :dummyInventoryInfoEOList){ - if (dummyInventoryInfoEO.getSerialNumber().equals(sameSerialNumber)) { - sameDummyInventoryInfoEOList.add(dummyInventoryInfoEO); - } - } - + DummyInventoryInfoEO sameInfoEO = dummyInventoryInfoEOList.stream().filter(e->e.getSerialNumber().equals(sameSerialNumber)).collect(Collectors.toList()).get(0); + sameDummyInventoryInfoEOList.add(sameInfoEO); //查询数据库里包含共有编号的数据 - for (DummyInventoryInfoEO midInfoCJ : infoCJList) { - if (midInfoCJ.getSerialNumber().equals(sameSerialNumber)) { - sameinfoCJList.add(midInfoCJ); - } - } + DummyInventoryInfoEO sameInfoCJ = infoCJList.stream().filter(e -> e.getSerialNumber().equals(sameSerialNumber)).collect(Collectors.toList()).get(0); + sameinfoCJList.add(sameInfoCJ); } + /* for (String sameSerialNumber : sameSerialNumberList) { + //查询数据库里包含共有编号的数据 + DummyInventoryInfoEO sameInfoCJ = infoCJList.stream().filter(e -> e.getSerialNumber().equals(sameSerialNumber)).collect(Collectors.toList()).get(0); + sameinfoCJList.add(sameInfoCJ); + }*/ } } @@ -345,11 +350,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl> infoDiffList=new ArrayList<>(); for (int i = 0; i < sameinfoCJList.size(); i++) { - try {//!!! infoDiff = ListDiff.compareObject(sameinfoCJList.get(i), sameDummyInventoryInfoEOList.get(i)); - }catch (Exception e){ - e.printStackTrace(); - } if (MapUtils.isNotEmpty(infoDiff)) { if(infoDiff.size() > 1) { infoDiffList.add(infoDiff); @@ -429,21 +430,6 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl records) { Set technologyTerritorySet = new HashSet<>(); for (DummyInventoryInfoEO dummyInventoryInfoEO : records) { @@ -466,11 +452,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl collect = categoryList.stream().filter(e -> technologyTerritory.equals(e.getId())).collect(Collectors.toList()); if (collect.size() != 0) { -// if (CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())) { sb.append(collect.get(0).getName() + ","); -// } else { -// sb.append(collect.get(0).getEnName()+ ","); -// } } } String technologyTerritoryName = null; @@ -478,6 +460,8 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl implementType = sysDictItemMapper.selectItemsByDictCode(DummyInventoryBaseFieldEnum.IMPLEMENT_TYPE.getValue()); String implementTypeName = implementType.stream().filter(e -> e.getItemValue().equals(dummyInventoryInfoEO.getImplementType())).map(f -> f.getItemText()).collect(Collectors.joining(",")); dummyInventoryInfoEO.setImplementType(implementTypeName); + }else { + dummyInventoryInfoEO.setImplementType("空"); } - //认证级别 + //认证类型 if(StringUtils.isNotBlank(dummyInventoryInfoEO.getAttestationType())) { List attestationType = sysDictItemMapper.selectItemsByDictCode(DummyInventoryBaseFieldEnum.ATTESTATION_TYPE.getValue()); String attestationTypeName = attestationType.stream().filter(e -> e.getItemValue().equals(dummyInventoryInfoEO.getAttestationType())).map(f -> f.getItemText()).collect(Collectors.joining(",")); dummyInventoryInfoEO.setAttestationType(attestationTypeName); + }else { + dummyInventoryInfoEO.setAttestationType("空"); } //认证级别 if (StringUtils.isNotBlank(dummyInventoryInfoEO.getAttestationRank())) { List attestationRank = sysDictItemMapper.selectItemsByDictCode(DummyInventoryBaseFieldEnum.ATTESTATION_RANK.getValue()); String attestationRankName = attestationRank.stream().filter(e -> e.getItemValue().equals(dummyInventoryInfoEO.getAttestationRank())).map(f -> f.getItemText()).collect(Collectors.joining(",")); dummyInventoryInfoEO.setAttestationRank(attestationRankName); + }else { + dummyInventoryInfoEO.setAttestationRank("空"); } + //新车型实施日期 + if (dummyInventoryInfoEO.getXin1Che1Xing2Shi2Shi1Ri4Qi1() != null) { + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); + String dateString = sdf.format(dummyInventoryInfoEO.getXin1Che1Xing2Shi2Shi1Ri4Qi1()); + dummyInventoryInfoEO.setXin1Che1Xing2Shi2Shi1Ri4Qi1String(dateString); + }else { + dummyInventoryInfoEO.setXin1Che1Xing2Shi2Shi1Ri4Qi1String("空"); + } + //在产车实施日期 + if (dummyInventoryInfoEO.getImplementTime() != null) { + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); + String dateString = sdf.format(dummyInventoryInfoEO.getImplementTime()); + dummyInventoryInfoEO.setImplementTimeString(dateString); + }else { + dummyInventoryInfoEO.setImplementTimeString("空"); + } + + //交付物类型 List deliverableTemplate = sysDictItemMapper.selectItemsByDictCode(DummyInventoryBaseFieldEnum.DELIVERABLE_TEMPLATE.getValue()); //设计符合性确认-交付物类型 if (StringUtils.isNotBlank(dummyInventoryInfoEO.getDesignDeliverableType())) { String designDeliverableTypeName = deliverableTemplate.stream().filter(e -> e.getItemValue().equals(dummyInventoryInfoEO.getDesignDeliverableType())).map(f -> f.getItemText()).collect(Collectors.joining(",")); dummyInventoryInfoEO.setDesignDeliverableType(designDeliverableTypeName); + }else { + dummyInventoryInfoEO.setDesignDeliverableType("空"); } //prehomo确认-交付物类型 if (StringUtils.isNotBlank(dummyInventoryInfoEO.getPrehomoDeliverableType())) { String prehomoDeliverableTypeName = deliverableTemplate.stream().filter(e -> e.getItemValue().equals(dummyInventoryInfoEO.getPrehomoDeliverableType())).map(f -> f.getItemText()).collect(Collectors.joining(",")); dummyInventoryInfoEO.setPrehomoDeliverableType(prehomoDeliverableTypeName); + }else { + dummyInventoryInfoEO.setPrehomoDeliverableType("空"); } //验证符合性确认-交付物类型 if (StringUtils.isNotBlank(dummyInventoryInfoEO.getVerifyDeliverableType())) { String verifyDeliverableTypeName = deliverableTemplate.stream().filter(e -> e.getItemValue().equals(dummyInventoryInfoEO.getVerifyDeliverableType())).map(f -> f.getItemText()).collect(Collectors.joining(",")); dummyInventoryInfoEO.setVerifyDeliverableType(verifyDeliverableTypeName); + }else { + dummyInventoryInfoEO.setVerifyDeliverableType("空"); } //发起人 @@ -555,16 +576,22 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl e.getItemValue().equals(dummyInventoryInfoEO.getDesignInitiator())).map(f -> f.getItemText()).collect(Collectors.joining(",")); dummyInventoryInfoEO.setDesignInitiator(designInitiatorName); + }else { + dummyInventoryInfoEO.setDesignInitiator("空"); } //prehomo确认-发起人 if (StringUtils.isNotBlank(dummyInventoryInfoEO.getPrehomoInitiator())) { String prehomoInitiatorName = fa1_qi3_ren2.stream().filter(e -> e.getItemValue().equals(dummyInventoryInfoEO.getPrehomoInitiator())).map(f -> f.getItemText()).collect(Collectors.joining(",")); dummyInventoryInfoEO.setPrehomoInitiator(prehomoInitiatorName); + }else { + dummyInventoryInfoEO.setPrehomoInitiator("空"); } //验证符合性确认-发起人 if (StringUtils.isNotBlank(dummyInventoryInfoEO.getVerifyInitiator())) { String verifyInitiatorName = fa1_qi3_ren2.stream().filter(e -> e.getItemValue().equals(dummyInventoryInfoEO.getVerifyInitiator())).map(f -> f.getItemText()).collect(Collectors.joining(",")); dummyInventoryInfoEO.setVerifyInitiator(verifyInitiatorName); + }else { + dummyInventoryInfoEO.setVerifyInitiator("空"); } //责任人 @@ -573,16 +600,22 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl e.getItemValue().equals(dummyInventoryInfoEO.getDesignDuty())).map(f -> f.getItemText()).collect(Collectors.joining(",")); dummyInventoryInfoEO.setDesignDuty(designDutyName); + }else { + dummyInventoryInfoEO.setDesignDuty("空"); } //prehomo确认-责任人 if (StringUtils.isNotBlank(dummyInventoryInfoEO.getPrehomoDuty())) { String prehomoDutyName = ze2_ren4_ren2.stream().filter(e -> e.getItemValue().equals(dummyInventoryInfoEO.getPrehomoDuty())).map(f -> f.getItemText()).collect(Collectors.joining(",")); dummyInventoryInfoEO.setPrehomoDuty(prehomoDutyName); + }else { + dummyInventoryInfoEO.setPrehomoDuty("空"); } //验证符合性确认-责任人 if (StringUtils.isNotBlank(dummyInventoryInfoEO.getVerifyDuty())) { String verifyDutyName = ze2_ren4_ren2.stream().filter(e -> e.getItemValue().equals(dummyInventoryInfoEO.getVerifyDuty())).map(f -> f.getItemText()).collect(Collectors.joining(",")); dummyInventoryInfoEO.setVerifyDuty(verifyDutyName); + }else { + dummyInventoryInfoEO.setVerifyDuty("空"); } } @@ -681,31 +714,25 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl list = Arrays.asList(infoDiff.get("xin1Che1Xing2Shi2Shi1Ri4Qi1").split(",")); + if (StringUtils.isNotBlank(infoDiff.get("xin1Che1Xing2Shi2Shi1Ri4Qi1String"))) { + List list = Arrays.asList(infoDiff.get("xin1Che1Xing2Shi2Shi1Ri4Qi1String").split(",")); String infoDiffOld = list.get(0); String infoDiffNew = list.get(1);//需要翻译 contentInfo += "(" + infoDiffRow + "). The implementation date of new model has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n"; infoDiffRow++; - //更新log - contentLog = DummyInventoryBaseFieldEnum.XIN1_CHE1_XING2_SHI2_SHI1_RI4_QI1.getName() + "由" + infoDiffOld + "改为" + infoDiffNew; - updateLog(contentLog,idTemp); + } //在产车实施日期 - if (StringUtils.isNotBlank(infoDiff.get("implementTime"))) { - List list = Arrays.asList(infoDiff.get("implementTime").split(",")); + if (StringUtils.isNotBlank(infoDiff.get("implementTimeString"))) { + List list = Arrays.asList(infoDiff.get("implementTimeString").split(",")); String infoDiffOld = list.get(0); String infoDiffNew = list.get(1);//需要翻译 contentInfo += "(" + infoDiffRow + "). Implement time has been changed from " + infoDiffOld + " to " + infoDiffNew + ".\r\n"; infoDiffRow++; - //更新log - contentLog = DummyInventoryBaseFieldEnum.IMPLEMENT_TIME.getName() + "由" + infoDiffOld + "改为" + infoDiffNew; - updateLog(contentLog,idTemp); + } //WVTA ID if (StringUtils.isNotBlank(infoDiff.get("wvtaId"))) { @@ -714,9 +741,6 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl getPageInfo(DummyInventoryInfoEO dummyInventoryInfoEO,HttpServletRequest req) { @@ -109,7 +93,20 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImple.getSerialNumber()).collect(Collectors.joining(",")); + String contentLog = username+"向清单中添加了标准\""+serialNumber+"\""; + updateLog(contentLog, dummyInventoryInfoEO.getDummyInventoryBaseId()); } } @@ -186,6 +189,7 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImple.getSerialNumber()).collect(Collectors.joining(",")); + String contentLog = username+"删除了清单中的\""+serialNumber+"\"标准"; + updateLog(contentLog, projectId); } /** @@ -259,6 +271,14 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImple.getSerialNumber()).collect(Collectors.joining(",")); + String contentLog = username+"复制了\""+serialNumber+"\""; + updateLog(contentLog, projectId); } } @@ -270,52 +290,135 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl idList = Arrays.asList(dummyInventoryInfoEO.getIds().split(",")); + QueryWrapper queryWrapper = new QueryWrapper<>(); + List infoList = list(queryWrapper.in("id", idList)); + String projectId = infoList.get(0).getDummyInventoryBaseId(); + dummyInventoryBaseEOService.disposeData(infoList); + + //翻译传入的数据 + List inputList = new ArrayList<>(); + inputList.add(dummyInventoryInfoEO); + dummyInventoryBaseEOService.disposeData(inputList); + DummyInventoryInfoEO inputInfoEO = inputList.get(0); + List dummyInventoryInfoEOList = new ArrayList<>(); for (String id : dummyInventoryInfoEO.getIds().split(",")) { + DummyInventoryInfoEO info = infoList.stream().filter(e -> id.equals(e.getId())).collect(Collectors.toList()).get(0); + contentLogBuilder.append(info.getSerialNumber() + ":"); DummyInventoryInfoEO dummyInventoryInfoEOTemp = new DummyInventoryInfoEO(); dummyInventoryInfoEOTemp.setId(id); //实施类别 implementType - if(StringUtils.isNotBlank(dummyInventoryInfoEO.getImplementType())){ + if(StringUtils.isNotBlank(dummyInventoryInfoEO.getImplementType())) { dummyInventoryInfoEOTemp.setImplementType(dummyInventoryInfoEO.getImplementType()); + if (StringUtils.isBlank(info.getImplementType())){ + info.setImplementType("空"); + } + if (!info.getImplementType().equals(inputInfoEO.getImplementType())) { + setUpdateContentLog(contentLogBuilder, DummyInventoryBaseFieldEnum.IMPLEMENT_TYPE.getName(), info.getImplementType(), inputInfoEO.getImplementType()); + } + } //认证类型 attestationType - if(StringUtils.isNotBlank(dummyInventoryInfoEO.getAttestationType())){ + if(StringUtils.isNotBlank(dummyInventoryInfoEO.getAttestationType())) { dummyInventoryInfoEOTemp.setAttestationType(dummyInventoryInfoEO.getAttestationType()); + if (StringUtils.isBlank(info.getAttestationType())){ + info.setAttestationType("空"); + } + if (!info.getAttestationType().equals(inputInfoEO.getAttestationType())) { + setUpdateContentLog(contentLogBuilder, DummyInventoryBaseFieldEnum.ATTESTATION_TYPE.getName(), info.getAttestationType(), inputInfoEO.getAttestationType()); + } } //认证级别 attestationRank - if(StringUtils.isNotBlank(dummyInventoryInfoEO.getAttestationRank())){ + if(StringUtils.isNotBlank(dummyInventoryInfoEO.getAttestationRank())) { dummyInventoryInfoEOTemp.setAttestationRank(dummyInventoryInfoEO.getAttestationRank()); + if (StringUtils.isBlank(info.getAttestationRank())){ + info.setAttestationRank("空"); + } + if (!info.getAttestationRank().equals(inputInfoEO.getAttestationRank())){ + setUpdateContentLog(contentLogBuilder, DummyInventoryBaseFieldEnum.ATTESTATION_RANK.getName(), info.getAttestationRank(), inputInfoEO.getAttestationRank()); + } } //责任领域 dutyTerritory - if(StringUtils.isNotBlank(dummyInventoryInfoEO.getDutyTerritory())){ + if(StringUtils.isNotBlank(dummyInventoryInfoEO.getDutyTerritory())) { dummyInventoryInfoEOTemp.setDutyTerritory(dummyInventoryInfoEO.getDutyTerritory()); + if (StringUtils.isBlank(info.getDutyTerritory())){ + info.setDutyTerritory("空"); + } + if (!info.getDutyTerritory().equals(inputInfoEO.getDutyTerritory())){ + setUpdateContentLog(contentLogBuilder, DummyInventoryBaseFieldEnum.DUTY_TERRITORY.getName(), info.getDutyTerritory(), inputInfoEO.getDutyTerritory()); + } } //适用范围 shi4Yong4Fan4Wei2 if(StringUtils.isNotBlank(dummyInventoryInfoEO.getShi4Yong4Fan4Wei2())){ dummyInventoryInfoEOTemp.setShi4Yong4Fan4Wei2(dummyInventoryInfoEO.getShi4Yong4Fan4Wei2()); + if (StringUtils.isBlank(info.getShi4Yong4Fan4Wei2())){ + info.setShi4Yong4Fan4Wei2("空"); + } + if (!info.getShi4Yong4Fan4Wei2().equals(inputInfoEO.getShi4Yong4Fan4Wei2())) { + setUpdateContentLog(contentLogBuilder, DummyInventoryBaseFieldEnum.SHI4_YONG4_FAN4_WEI2.getName(),info.getShi4Yong4Fan4Wei2(),inputInfoEO.getShi4Yong4Fan4Wei2()); + } } //技术领域 technologyTerritory if(StringUtils.isNotBlank(dummyInventoryInfoEO.getTechnologyTerritory())){ dummyInventoryInfoEOTemp.setTechnologyTerritory(dummyInventoryInfoEO.getTechnologyTerritory()); + if (StringUtils.isBlank(info.getTechnologyTerritoryName())){ + info.setTechnologyTerritoryName("空"); + } + if (!info.getTechnologyTerritoryName().equals(inputInfoEO.getTechnologyTerritoryName())) { + setUpdateContentLog(contentLogBuilder, DummyInventoryBaseFieldEnum.TECHNOLOGY_TERRITORY.getName(),info.getTechnologyTerritoryName(),inputInfoEO.getTechnologyTerritoryName()); + } } //适用地区 region if(StringUtils.isNotBlank(dummyInventoryInfoEO.getRegion())){ dummyInventoryInfoEOTemp.setRegion(dummyInventoryInfoEO.getRegion()); + if (StringUtils.isBlank(info.getRegion())){ + info.setRegion("空"); + } + if (!info.getRegion().equals(inputInfoEO.getRegion())) { + setUpdateContentLog(contentLogBuilder, DummyInventoryBaseFieldEnum.REGION.getName(),info.getRegion(),inputInfoEO.getRegion()); + } } //新车实施日期 if(ObjectUtils.isNotEmpty(dummyInventoryInfoEO.getXin1Che1Xing2Shi2Shi1Ri4Qi1())){ dummyInventoryInfoEOTemp.setXin1Che1Xing2Shi2Shi1Ri4Qi1(dummyInventoryInfoEO.getXin1Che1Xing2Shi2Shi1Ri4Qi1()); + if (info.getXin1Che1Xing2Shi2Shi1Ri4Qi1() == null){ + setUpdateContentLog(contentLogBuilder, DummyInventoryBaseFieldEnum.XIN1_CHE1_XING2_SHI2_SHI1_RI4_QI1.getName(),"空",inputInfoEO.getXin1Che1Xing2Shi2Shi1Ri4Qi1String()); + }else { + if (!info.getXin1Che1Xing2Shi2Shi1Ri4Qi1String().equals(inputInfoEO.getXin1Che1Xing2Shi2Shi1Ri4Qi1String())) { + setUpdateContentLog(contentLogBuilder, DummyInventoryBaseFieldEnum.XIN1_CHE1_XING2_SHI2_SHI1_RI4_QI1.getName(), info.getXin1Che1Xing2Shi2Shi1Ri4Qi1String(), inputInfoEO.getXin1Che1Xing2Shi2Shi1Ri4Qi1String()); + } + } } //在产车实施日期 if(ObjectUtils.isNotEmpty(dummyInventoryInfoEO.getImplementTime())){ dummyInventoryInfoEOTemp.setImplementTime(dummyInventoryInfoEO.getImplementTime()); + if (info.getImplementTime() == null){ + setUpdateContentLog(contentLogBuilder, DummyInventoryBaseFieldEnum.XIN1_CHE1_XING2_SHI2_SHI1_RI4_QI1.getName(),"空",inputInfoEO.getXin1Che1Xing2Shi2Shi1Ri4Qi1String()); + }else { + if (!info.getImplementTimeString().equals(inputInfoEO.getImplementTimeString())) { + setUpdateContentLog(contentLogBuilder, DummyInventoryBaseFieldEnum.IMPLEMENT_TIME.getName(), info.getImplementTimeString(), inputInfoEO.getImplementTimeString()); + } + } } dummyInventoryInfoEOList.add(dummyInventoryInfoEOTemp); } this.updateBatchById(dummyInventoryInfoEOList); + + contentLog = contentLogBuilder.substring(0, contentLogBuilder.length() - 1); + updateLog(contentLog, projectId); } } - + public StringBuilder setUpdateContentLog(StringBuilder contentLogBuilder,String fieldName,String oldValue,String newValue){ + return contentLogBuilder.append("\'"+ fieldName + "\'由" + oldValue + "改为了" + newValue).append(","); + } /** * 模板下载 * @param dummyInventoryInfoEO @@ -1053,6 +1156,8 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl { if(f.getName().equals("serialNumber")){ result.put(f.getName(),v1.toString()); } - if( ! equals(v1, v2) && !f.getName().contains("create") - && !f.getName().contains("update") && !f.getName().equals("id")){ + //设置排除字段 + if( !equals(v1, v2) && !f.getName().contains("create") + && !f.getName().contains("update") && !f.getName().equals("id") + && !f.getName().equals("technologyTerritory") &&!f.getName().equals("xin1Che1Xing2Shi2Shi1Ri4Qi1") + && !f.getName().equals("implementTime") && !f.getName().equals("xin1Che1Xing2Shi2Shi1Ri4Qi1") + && !f.getName().equals("implementTime") + ){ StringBuilder v1String= new StringBuilder(String.valueOf(v1)); StringBuilder v2String= new StringBuilder(String.valueOf(v2)); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLibraryBaseController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLibraryBaseController.java index dec40b212..789f55ff8 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLibraryBaseController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLibraryBaseController.java @@ -159,4 +159,19 @@ public class ProjectLibraryBaseController extends JeroController getProjectDetailsStatistics(@RequestParam(name="id",required=true) String id, + @RequestParam(name="cut",required=true) String cut) { + Map data = projectLibraryBaseService.getProjectDetailsStatistics(id); + return Result.OK(cut,data); + } + + } 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..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,7 +14,9 @@ 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; /** * @description @@ -47,6 +49,34 @@ 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); + } + + /** + * 项目状态进度 + * + * @param projectLibraryBase + * @return + */ + @AutoLog(value = "项目状态进度") + @ApiOperation(value="项目状态进度", notes="项目状态进度") + @GetMapping(value = "/scheduleInfoList") + public Result scheduleInfoList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req) { + List> mapList = iProjectStatusBoardService.scheduleInfoList(projectLibraryBase, req); + return Result.OK(mapList); + } + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/CertificationProgressEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/CertificationProgressEnum.java new file mode 100644 index 000000000..8ce5f5997 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/CertificationProgressEnum.java @@ -0,0 +1,47 @@ +package com.jero.modules.project.enums; + +/** + * 认证进度枚举类 + */ +public enum CertificationProgressEnum { + TEST_PASSED("实验通过","Test passed"), + TEST_FAILED("实验失败","Test failed"), + NOT_START("待开始","Not start"), + IN_PROGRESS("进行中","In progress"), + NA("不涉及","NA"), + ; + + String name; + String value; + + private CertificationProgressEnum(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; + } + + public static String getTextByValue(String value) { + CertificationProgressEnum[] values = values(); + for (CertificationProgressEnum certificationProgressEnum : values) { + if (certificationProgressEnum.value.equals(value)) { + return certificationProgressEnum.name; + } + } + return null; + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/CurrentProjectStatusEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/CurrentProjectStatusEnum.java new file mode 100644 index 000000000..72e36b199 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/CurrentProjectStatusEnum.java @@ -0,0 +1,47 @@ +package com.jero.modules.project.enums; + +/** + * 当前项目状态枚举类 + */ +public enum CurrentProjectStatusEnum { + + BLUE("蓝色","0"), + RED("红色","1"), + YELLOW("黄色","2"), + GREEN("绿色","3"), + ; + + String name; + String value; + + private CurrentProjectStatusEnum(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; + } + + public static String getTextByValue(String value) { + CurrentProjectStatusEnum[] values = values(); + for (CurrentProjectStatusEnum currentProjectStatusEnum : values) { + if (currentProjectStatusEnum.value.equals(value)) { + return currentProjectStatusEnum.name; + } + } + return null; + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ProjectTaskPlanningNameEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ProjectTaskPlanningNameEnum.java index 290039710..02839a265 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ProjectTaskPlanningNameEnum.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ProjectTaskPlanningNameEnum.java @@ -4,9 +4,9 @@ public enum ProjectTaskPlanningNameEnum { LIST_CONFIRMATION("法规清单确认"," Confirmation of regulations list"), LEGAL_TASK_CONFIRMATION("法规任务确认","Regulatory task confirmation"), DESIGN_DEADLINE("设计符合性确认","Design Compliance Check"), - PREHOMO_DEADLINE("PreHomo确认","Pre-homo Check"), + PREHOMO_DEADLINE("Pre-Homo确认","Pre-homo Check"), ATTESTATION_START_TIME("认证开始","Certification start"), - ATTESTATION_END_TIME("认证结束"," Certification end\n"), + ATTESTATION_END_TIME("认证结束"," Certification end"), VERIFY_DEADLINE("验证符合性确认截止时间","Verification compliance confirmation deadline"), ; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ConditionAssessmentEOMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ConditionAssessmentEOMapper.java index ec58479e2..609d1c5ba 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ConditionAssessmentEOMapper.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ConditionAssessmentEOMapper.java @@ -1,6 +1,7 @@ package com.jero.modules.project.mapper; import java.util.List; +import java.util.Map; import com.jero.modules.project.entity.ConditionAssessmentEO; import org.apache.ibatis.annotations.Param; @@ -13,5 +14,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @Version: V1.0 */ public interface ConditionAssessmentEOMapper extends BaseMapper { - + /** + * 获取当前项目状态统计数据 + * @param projectLawsInventoryIdList + * @return + */ + List> getCurrentProjectStatusStatistics(@Param("projectLawsInventoryIdList") List projectLawsInventoryIdList); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectLawsInventoryEOMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectLawsInventoryEOMapper.java index fc0f2ce0d..aa7af9818 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectLawsInventoryEOMapper.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectLawsInventoryEOMapper.java @@ -1,6 +1,7 @@ package com.jero.modules.project.mapper; import java.util.List; +import java.util.Map; import org.apache.ibatis.annotations.Param; import com.jero.modules.project.entity.ProjectLawsInventoryEO; @@ -14,4 +15,17 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface ProjectLawsInventoryEOMapper extends BaseMapper { + /** + * 获取清单确认统计 + * @param projectLibraryId 项目库id + * @return + */ + List> getlistingToConfirmStatistics(@Param("projectLibraryId") String projectLibraryId); + + /** + * 获取清单确认统计 + * @param projectLibraryId 项目库id + * @return + */ + List> getTaskToConfirmStatistics(@Param("projectLibraryId")String projectLibraryId); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectTaskInventoryEOMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectTaskInventoryEOMapper.java index bb5c79abc..f5ee847d9 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectTaskInventoryEOMapper.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectTaskInventoryEOMapper.java @@ -1,6 +1,7 @@ package com.jero.modules.project.mapper; import java.util.List; +import java.util.Map; import org.apache.ibatis.annotations.Param; import com.jero.modules.project.entity.ProjectTaskInventoryEO; @@ -14,4 +15,29 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface ProjectTaskInventoryEOMapper extends BaseMapper { + /** + * 获取认证进度统计数据 + * @param projectLawsInventoryIdList + * @return + */ + List> getCertificationProgressStatistics(@Param("projectLawsInventoryIdList") List projectLawsInventoryIdList); + + /** + * 获取设计符合性统计数据 + * @param projectLawsInventoryIdList + * @return + */ + List> getDesignComplianceStatistice(@Param("projectLawsInventoryIdList") List projectLawsInventoryIdList); + /** + * 获取prehomo确认统计数据 + * @param projectLawsInventoryIdList + * @return + */ + List> getPrehomoStatistice(@Param("projectLawsInventoryIdList") List projectLawsInventoryIdList); + /** + * 获取验证符合性统计数据 + * @param projectLawsInventoryIdList + * @return + */ + List> getVerifyComplianceStatistice(@Param("projectLawsInventoryIdList") List projectLawsInventoryIdList); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ConditionAssessmentEOMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ConditionAssessmentEOMapper.xml index dfe111a08..fda409366 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ConditionAssessmentEOMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ConditionAssessmentEOMapper.xml @@ -13,4 +13,19 @@ + + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectLawsInventoryEOMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectLawsInventoryEOMapper.xml index 3c0b1a42e..58ae4f5ac 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectLawsInventoryEOMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectLawsInventoryEOMapper.xml @@ -41,4 +41,28 @@ + + + + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectTaskInventoryEOMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectTaskInventoryEOMapper.xml index 822f453be..460876633 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectTaskInventoryEOMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectTaskInventoryEOMapper.xml @@ -18,4 +18,64 @@ - \ No newline at end of file + + + + + + + + + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectLibraryBaseService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectLibraryBaseService.java index dedae398b..abdee6784 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectLibraryBaseService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectLibraryBaseService.java @@ -69,4 +69,11 @@ public interface IProjectLibraryBaseService extends IService * @return */ IPage queryPageList(Map params); + + /** + * 项目详情-统计接口 + * @param id + * @return + */ + Map getProjectDetailsStatistics(String id); } 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..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,7 +4,9 @@ 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; /** * @description @@ -13,5 +15,20 @@ import java.util.List; */ public interface IProjectStatusBoardService { + /** + * 时间轴 + * @param projectLibraryBase + * @param req + * @return + */ List> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req); + + List timeline(Date startTime, Date endTime); + + /** + * 项目状态进度 + * @param projectLibraryBase + * @param req + */ + List> scheduleInfoList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java index 6c1553114..8cb90354d 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java @@ -5,8 +5,17 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.system.vo.LoginUser; +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.enums.CertificationProgressEnum; +import com.jero.modules.project.enums.CurrentProjectStatusEnum; +import com.jero.modules.project.enums.InventoryAffirmStatusEnum; +import com.jero.modules.project.enums.TaskAffirmStatusEnum; +import com.jero.modules.project.mapper.ProjectLawsInventoryEOMapper; import com.jero.modules.project.mapper.ProjectLibraryBaseMapper; +import com.jero.modules.project.mapper.ProjectTaskInventoryEOMapper; +import com.jero.modules.project.service.IConditionAssessmentEOService; import com.jero.modules.project.service.IProjectLibraryBaseService; import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.mapper.SysDictItemMapper; @@ -43,6 +52,15 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl getProjectDetailsStatistics(String id) { + Map result = new HashMap<>(); + + //当前项目状态 + Map currentProjectStatusMap = new HashMap<>(); + //清单确认 + Map listingToConfirmMap = new HashMap<>(); + //任务确认 + Map taskToConfirmMap = new HashMap<>(); + //设计符合性 + Map designComplianceMap = new HashMap<>(); + //prehomo确认 + Map prehomoMap = new HashMap<>(); + //验证符合性 + Map verifyComplianceMap = new HashMap<>(); + //认证进度 + Map certificationProgressMap = new HashMap<>(); + + QueryWrapper lawsInventoryEOQueryWrapper = new QueryWrapper<>(); + lawsInventoryEOQueryWrapper.lambda().eq(ProjectLawsInventoryEO::getProjectLibraryId,id); + lawsInventoryEOQueryWrapper.lambda().eq(ProjectLawsInventoryEO::getInventoryAffirmStatus, InventoryAffirmStatusEnum.ACCEPTED.getValue()); + lawsInventoryEOQueryWrapper.lambda().eq(ProjectLawsInventoryEO::getTaskAffirmStatus, TaskAffirmStatusEnum.ACCEPTED.getValue()); + List projectLawsInventoryEOList = projectLawsInventoryEOMapper.selectList(lawsInventoryEOQueryWrapper); + if(CollectionUtils.isNotEmpty(projectLawsInventoryEOList)){ + List projectLawsInventoryIdList = projectLawsInventoryEOList.stream().distinct().map(ProjectLawsInventoryEO::getId).collect(Collectors.toList()); + + //当前项目状态统计 获取一个 最差的结果 统计的数据 就是studio看到的数据。 + List> currentProjectStatusMapList = new ArrayList<>(); + CurrentProjectStatusEnum[] values = CurrentProjectStatusEnum.values(); + for (CurrentProjectStatusEnum value : values) { + Map map = new HashMap<>(); + map.put("color",value.getValue()); + currentProjectStatusMapList.add(map); + } + int currentProjectStatusTotal; + List projectStatusAssessList = this.conditionAssessmentEOService.getProjectStatusAssessList(projectLawsInventoryIdList); + + for (Map map : currentProjectStatusMapList) { + List collect = projectStatusAssessList.stream().filter( + projectStatusAssess -> StringUtils.equals(projectStatusAssess.getConditionAssessment(),map.get("color").toString()) + ).collect(Collectors.toList()); + map.put("conditionAssessmentCount",collect.size()); + } + + currentProjectStatusTotal = currentProjectStatusMapList.stream().filter( + currentProjectStatus -> Integer.parseInt(currentProjectStatus.get("conditionAssessmentCount").toString()) != 0 + ).mapToInt(currentProjectStatus -> Integer.parseInt(currentProjectStatus.get("conditionAssessmentCount").toString())).sum(); + + currentProjectStatusMap.put("currentProjectStatusMapList",currentProjectStatusMapList); + currentProjectStatusMap.put("currentProjectStatusTotal",currentProjectStatusTotal); + result.put("currentProjectStatusMap",currentProjectStatusMap); + + //清单确认统计 + List> listingToConfirmMapList = this.projectLawsInventoryEOMapper.getlistingToConfirmStatistics(id); + listingToConfirmMap.put("listingToConfirmMapList",listingToConfirmMapList); + result.put("listingToConfirmMap",listingToConfirmMap); + + //任务确认统计 + List> taskToConfirmMapList = this.projectLawsInventoryEOMapper.getTaskToConfirmStatistics(id); + taskToConfirmMap.put("taskToConfirmMapList",taskToConfirmMapList); + result.put("taskToConfirmMap",taskToConfirmMap); + + //设计符合性 + List> designComplianceMapList = this.projectTaskInventoryEOMapper.getDesignComplianceStatistice(projectLawsInventoryIdList); + designComplianceMap.put("designComplianceMapList",designComplianceMapList); + result.put("designComplianceMap",designComplianceMap); + + //prehomo确认 + List> prehomoMapList = this.projectTaskInventoryEOMapper.getPrehomoStatistice(projectLawsInventoryIdList); + prehomoMap.put("prehomoMapList",prehomoMapList); + result.put("prehomoMap",prehomoMap); + + //验证符合性 + List> verifyComplianceMapList = this.projectTaskInventoryEOMapper.getVerifyComplianceStatistice(projectLawsInventoryIdList); + verifyComplianceMap.put("verifyComplianceMapList",verifyComplianceMapList); + result.put("verifyComplianceMap",verifyComplianceMap); + + //认证进度统计 + int certificationProgressTotal; + List> certificationProgressMapList = this.projectTaskInventoryEOMapper.getCertificationProgressStatistics(projectLawsInventoryIdList); + certificationProgressTotal = certificationProgressMapList.stream().filter( + certificationProgress -> Integer.parseInt(certificationProgress.get("certificationProgressCount").toString()) != 0 + ).mapToInt(certificationProgress -> Integer.parseInt(certificationProgress.get("certificationProgressCount").toString())).sum(); + + CertificationProgressEnum[] CertificationProgressEnumValues = CertificationProgressEnum.values(); + for (CertificationProgressEnum certificationProgressEnumValue : CertificationProgressEnumValues) { + boolean flag = true; + for (Map map : certificationProgressMapList) { + if(StringUtils.equals(certificationProgressEnumValue.getValue(),map.get("certificationProgress").toString())){ + flag = false; + break; + } + } + if(flag){ + Map map = new HashMap<>(); + map.put("certificationProgress",certificationProgressEnumValue.getValue()); + map.put("certificationProgressCount",0); + certificationProgressMapList.add(map); + } + } + + certificationProgressMap.put("certificationProgressTotal",certificationProgressTotal); + certificationProgressMap.put("certificationProgressMapList",certificationProgressMapList); + result.put("certificationProgressMap",certificationProgressMap); + } + + return result; + } } 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..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,18 +2,35 @@ 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.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.CertificationProgressEnum; +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 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; import java.util.stream.Collectors; /** @@ -27,8 +44,22 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService private ProjectTaskPlanningServiceImpl projectTaskPlanningService; @Autowired private ProjectLibraryBaseServiceImpl projectLibraryBaseService; + @Autowired + private IConditionAssessmentEOService conditionAssessmentEOService; + @Autowired + private ProjectLawsInventoryEOServiceImpl projectLawsInventoryEOService; + @Autowired + private ProjectTaskInventoryEOServiceImpl projectTaskInventoryEOService; + @Autowired + private SysDictItemServiceImpl sysDictItemServiceImpl; + /** + * 时间轴 + * @param projectLibraryBase + * @param req + * @return + */ @Override public List> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req) { @@ -46,4 +77,321 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService } return result; } + + /** + * 项目状态进度 + * @param projectLibraryBase + * @param req + */ + @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); + + List> result = new ArrayList<>(); + 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); + } + + + 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()); + //(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视角下的数据 + 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){ + 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("projectStatus",projectState);//项目当前状态 + + 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 = ""; + String certificationProgress = ""; + if(projectTaskInventoryEOS.size() != 0){ + for (ProjectTaskInventoryEO projectTaskInventoryEO : projectTaskInventoryEOS) { + //设计符合性流程-任务状态 + String designFlowTaskStatus = projectTaskInventoryEO.getDesignFlowTaskStatus(); + //prehomo确认流程-任务状态 + String prehomoFlowTaskStatus = projectTaskInventoryEO.getPrehomoFlowTaskStatus(); + //verify_flow_task_status + String verifyFlowTaskStatus = projectTaskInventoryEO.getVerifyFlowTaskStatus(); + //认证进度 + String certificationProgressTemp = projectTaskInventoryEO.getCertificationProgress(); + + //2. 认证进度(不涉及/待开始/进行中/实验失败/实验通过) + if(StringUtils.isNotBlank(certificationProgressTemp)){ + if(CertificationProgressEnum.NA.getValue().equals(certificationProgressTemp)){ + na++; + }else if(CertificationProgressEnum.NOT_START.getValue().equals(certificationProgressTemp)){ + notStart++; + }else if(CertificationProgressEnum.IN_PROGRESS.getValue().equals(certificationProgressTemp)){ + inProgress++; + }else if(CertificationProgressEnum.TEST_FAILED.getValue().equals(certificationProgressTemp)){ + testFailed++; + }else if(CertificationProgressEnum.TEST_PASSED.getValue().equals(certificationProgressTemp)){ + testPassed++; + } + } + + //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++; + } + } + } + } + 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确认 + map.put("verify",verify);//验证符合性确认 + result.add(map); + } + } + 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; + } + + } diff --git a/jero-web/src/common/lang/en-us.js b/jero-web/src/common/lang/en-us.js index 68c0346af..98b8dcebb 100644 --- a/jero-web/src/common/lang/en-us.js +++ b/jero-web/src/common/lang/en-us.js @@ -707,6 +707,7 @@ module.exports = { uploadTime: 'Upload time', enclosure: 'enclosure', // 认证 + operatethisbutton: 'You do not have permission to operate this button', ParameterLibrary: 'Parameter Library', referenceparameter: 'reference Parameter', Assignedby: 'Assignedby', @@ -825,4 +826,10 @@ module.exports = { refuse:'Refuse', taskTermination:'Task termination', projectStatusAndProgress:'Project status and progress', + listConfirmationProgress:'List confirmation progress', + taskConfirmationProgress:'Task confirmation progress', + designComplianceConfirmationProgress:'Design Compliance Confirmation Progress', + preHomeConfirmProgress:'Pre-Home confirm progress', + verificationComplianceConfirmationProgress:'Verification compliance confirmation progress', + totalTable:'Total', } \ No newline at end of file diff --git a/jero-web/src/common/lang/zh-cn.js b/jero-web/src/common/lang/zh-cn.js index 495bd82b0..b85da3a08 100644 --- a/jero-web/src/common/lang/zh-cn.js +++ b/jero-web/src/common/lang/zh-cn.js @@ -716,6 +716,7 @@ module.exports = { uploadTime: '上传时间', enclosure: '附件', // 认证 + operatethisbutton: '没有权限操作此按钮', ParameterLibrary: '参数库', referenceparameter: '引用参数', Assignedby: '分配填写人', @@ -830,4 +831,10 @@ module.exports = { refuse:'拒绝', taskTermination:'任务终止', projectStatusAndProgress:'项目状态进度', + listConfirmationProgress:'清单确认进度', + taskConfirmationProgress:'任务确认进度', + designComplianceConfirmationProgress:'设计符合性确认进度', + preHomeConfirmProgress:'Pre-Home确认进度', + verificationComplianceConfirmationProgress:'验证符合性确认进度', + totalTable:'总数', } \ No newline at end of file diff --git a/jero-web/src/components/tableCollection/index.vue b/jero-web/src/components/tableCollection/index.vue index 38ee9ab3a..8843e70f5 100644 --- a/jero-web/src/components/tableCollection/index.vue +++ b/jero-web/src/components/tableCollection/index.vue @@ -73,6 +73,7 @@ export default { indeterminate: false, columns: [], selectedRowKeys: [], + selectedRowrowValue: [], dataSource: [], pageNo: 1, pageSize: 10, @@ -81,6 +82,7 @@ export default { loading: false, orderBy: '1', orderByField: '', + LoginUserType: '', // 登陆人角色状态 homo: 0, // 认证工程师 sdt: 0, // 工程接口人 dre: 0, // 填写人 @@ -98,6 +100,8 @@ export default { } getAction(this.url.getLoginUserType, params).then((res) => { if (res.success) { + this.LoginUserType = res.result + this.$emit('LoginUserType', this.LoginUserType) res.result.split(',').forEach((item,index) => { if(item === 'homo') { this.homo = 1 @@ -190,8 +194,8 @@ export default { // this.getTableList() }, onSelectChange(value,rowValue) { - console.log(value,rowValue) this.selectedRowKeys = value + this.selectedRowrowValue = rowValue this.$emit('value',value) this.$emit('rowValue', rowValue) }, diff --git a/jero-web/src/views/projectManagement/components/ParameterItemCollectionList.vue b/jero-web/src/views/projectManagement/components/ParameterItemCollectionList.vue index 63a8b687a..cbf1f4267 100644 --- a/jero-web/src/views/projectManagement/components/ParameterItemCollectionList.vue +++ b/jero-web/src/views/projectManagement/components/ParameterItemCollectionList.vue @@ -64,12 +64,12 @@