虚拟清单--交付物类型(树状结构)

This commit is contained in:
zhn
2022-05-27 16:31:40 +08:00
parent 5a74bad2de
commit e303020ce6
3 changed files with 209 additions and 77 deletions
@@ -177,6 +177,9 @@ public class DummyInventoryInfoEO implements Serializable {
@Dict(dicCode ="deliverable_template")
private java.lang.String designDeliverableType;
@TableField(exist = false)
private java.lang.String designDeliverableTypeName;
/**设计符合性确认-交付物模板*/
@ApiModelProperty(value = "设计符合性确认-交付物模板")
@@ -203,6 +206,8 @@ public class DummyInventoryInfoEO implements Serializable {
@ApiModelProperty(value = "prehomo确认-交付物类型")
@Dict(dicCode ="deliverable_template")
private java.lang.String prehomoDeliverableType;
@TableField(exist = false)
private java.lang.String prehomoDeliverableTypeName;
/**prehomo确认-交付物模板*/
@@ -230,6 +235,8 @@ public class DummyInventoryInfoEO implements Serializable {
@ApiModelProperty(value = "验证符合性确认-交付物类型")
@Dict(dicCode ="deliverable_template")
private java.lang.String verifyDeliverableType;
@TableField(exist = false)
private java.lang.String verifyDeliverableTypeName;
/**验证符合性确认-交付物模板*/
@@ -1146,7 +1146,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
if (StringUtils.isNotBlank(infoDiff.get("designDeliverableType"))) {
List<String> list = Arrays.asList(infoDiff.get("designDeliverableType").split(","));
String infoDiffOld = list.get(0);
String infoDiffNew = list.get(1);
String infoDiffNew = "list.get(1)";
if (StringUtils.isBlank(contentLog)) {
contentInfo += DummyInventoryBaseFieldEnum.DESIGN_DELIVERABLE_TYPE.getEnName() +" has been changed from " + infoDiffOld + " to " + infoDiffNew + ",";
@@ -27,6 +27,7 @@ import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.split.common.FileUnZip;
import com.jero.modules.system.entity.SysCategory;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.mapper.SysCategoryMapper;
import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
import lombok.SneakyThrows;
@@ -43,6 +44,7 @@ import org.aspectj.util.FileUtil;
import org.jeecgframework.poi.excel.ExcelExportUtil;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -84,6 +86,8 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
private DummyLogEOServiceImpl dummyLogEOService;
@Autowired
private DummyInventoryBaseEOServiceImpl dummyInventoryBaseEOService;
@Autowired
SysCategoryMapper sysCategoryMapper;
@Override
public IPage<DummyInventoryInfoEO> getPageInfo(DummyInventoryInfoEO dummyInventoryInfoEO,HttpServletRequest req) {
@@ -672,16 +676,35 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
* @param dummyInventoryInfoEOList
*/
private void treeDict(DummyInventoryInfoEO dummyInventoryInfoEO, List<DummyInventoryInfoEO> dummyInventoryInfoEOList) {
Set<String> technologyTerritorySet = new HashSet<>();
Set<String> correspondingStandardSet = new HashSet<>();
// Set<String> technologyTerritorySet = new HashSet<>();
// Set<String> designDeliverableTypeSet = new HashSet<>();
// Set<String> PrehomoDeliverableTypeSet = new HashSet<>();
// Set<String> verifyDeliverableTypeSet = new HashSet<>();
List<String> deliverableList = new ArrayList<>();
if(dummyInventoryInfoEOList.size() != 0){
for (DummyInventoryInfoEO record : dummyInventoryInfoEOList) {
//技术领域
if(StringUtils.isNotBlank(record.getTechnologyTerritory())){
List<String> list = Arrays.asList(record.getTechnologyTerritory().split(","));
technologyTerritorySet.addAll(list);
}
// //技术领域
// if(StringUtils.isNotBlank(record.getTechnologyTerritory())){
// List<String> list = Arrays.asList(record.getTechnologyTerritory().split(","));
// technologyTerritorySet.addAll(list);
// }
// //设计交付物类型
// if(StringUtils.isNotBlank(record.getDesignDeliverableType())){
// List<String> list = Arrays.asList(record.getDesignDeliverableType().split(","));
// designDeliverableTypeSet.addAll(list);
// }
// //pre交付物类型
// if(StringUtils.isNotBlank(record.getPrehomoDeliverableType())){
// List<String> list = Arrays.asList(record.getPrehomoDeliverableType().split(","));
// PrehomoDeliverableTypeSet.addAll(list);
// }
//
// //验证交付物类型
// if(StringUtils.isNotBlank(record.getVerifyDeliverableType())){
// List<String> list = Arrays.asList(record.getVerifyDeliverableType().split(","));
// verifyDeliverableTypeSet.addAll(list);
// }
//对应标准
// if(StringUtils.isNotBlank(record.getCorrespondingStandard())){
// List<String> list = Arrays.asList(record.getCorrespondingStandard().split(","));
@@ -701,17 +724,6 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
}
}
// List<BussDocumentLibraryEO> bussDocumentLibraryEOList = new ArrayList<>();
// if(correspondingStandardSet.size() != 0){
// //对应标准 iBussDocumentLibraryEOService
// LambdaQueryWrapper<BussDocumentLibraryEO> wrapperTemp = new LambdaQueryWrapper<>();
// wrapperTemp.in(BussDocumentLibraryEO::getId,correspondingStandardSet);
// bussDocumentLibraryEOList = iBussDocumentLibraryEOService.list(wrapperTemp);
// }
//文件
List<OSSFile> fileInfos = new ArrayList<>();
if(deliverableList.size() != 0){
@@ -719,52 +731,40 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
}
//树形结构数据字典(技术领域)
List<SysCategory> categoryList = new ArrayList<>();
if(technologyTerritorySet.size() != 0){
LambdaQueryWrapper<SysCategory> wrapper = new LambdaQueryWrapper<>();
wrapper.in(SysCategory::getId, technologyTerritorySet);
categoryList = sysCategoryService.list(wrapper);
}
List<SysCategory> categoryList = categoryList = sysCategoryService.list();
// if(technologyTerritorySet.size() != 0){
// LambdaQueryWrapper<SysCategory> wrapper = new LambdaQueryWrapper<>();
// wrapper.in(SysCategory::getId, technologyTerritorySet);
// categoryList = sysCategoryService.list(wrapper);
// }
for (DummyInventoryInfoEO record : dummyInventoryInfoEOList) {
//对应标准
// if(bussDocumentLibraryEOList.size() != 0 && StringUtils.isNotBlank(record.getCorrespondingStandard())){
// StringBuilder stringBuilder = new StringBuilder();
// for (String bussDocumentLibraryId : record.getCorrespondingStandard().split(",")) {
// List<BussDocumentLibraryEO> bussDocumentLibraryEOS = bussDocumentLibraryEOList.stream()
// .filter(e -> e.getId().equals(bussDocumentLibraryId)).collect(Collectors.toList());
// if(bussDocumentLibraryEOS.size() != 0){
// stringBuilder.append(bussDocumentLibraryEOS.get(0).getSerialNumber()+",");
// }else{
// //手动输入的情况
// stringBuilder.append(bussDocumentLibraryId + ",");
// }
// }
// if(StringUtils.isNotBlank(stringBuilder)){
// String substring = stringBuilder.substring(0, stringBuilder.length() - 1);
// record.setCorrespondingStandardName(substring);
// }
// }
//技术领域
if (categoryList.size() != 0 && StringUtils.isNotBlank(record.getTechnologyTerritory())) {
List<String> technologyTerritoryList = Arrays.asList(record.getTechnologyTerritory().split(","));
StringBuilder sb = new StringBuilder();
for (String technologyTerritory : technologyTerritoryList) {
List<SysCategory> 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 = "";
if (StringUtils.isNotBlank(sb)) {
technologyTerritoryName = sb.substring(0, sb.length() - 1);
}
String technologyTerritoryName = getTreeName(dummyInventoryInfoEO, categoryList, technologyTerritoryList);
record.setTechnologyTerritoryName(technologyTerritoryName);
}
//设计交付物模板
if(StringUtils.isNotBlank(record.getDesignDeliverableType())){
List<String> designDeliverableTypeList = Arrays.asList(record.getDesignDeliverableType().split(","));
String name = getTreeName(dummyInventoryInfoEO, categoryList, designDeliverableTypeList);
record.setDesignDeliverableTypeName(name);
}
//pre交付物模板
if(StringUtils.isNotBlank(record.getPrehomoDeliverableType())){
List<String> prehomoDeliverableTypeList = Arrays.asList(record.getPrehomoDeliverableType().split(","));
String name = getTreeName(dummyInventoryInfoEO, categoryList, prehomoDeliverableTypeList);
record.setPrehomoDeliverableTypeName(name);
}
//验证交付物模板
if(StringUtils.isNotBlank(record.getVerifyDeliverableType())){
List<String> verifyDeliverableTypeList = Arrays.asList(record.getVerifyDeliverableType().split(","));
String name = getTreeName(dummyInventoryInfoEO, categoryList, verifyDeliverableTypeList);
record.setVerifyDeliverableTypeName(name);
}
//交付物类型模板
if(fileInfos.size() != 0){
@@ -792,6 +792,25 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
}
}
private String getTreeName(DummyInventoryInfoEO dummyInventoryInfoEO, List<SysCategory> categoryList, List<String> technologyTerritoryList) {
StringBuilder sb = new StringBuilder();
for (String technologyTerritory : technologyTerritoryList) {
List<SysCategory> 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 = "";
if (StringUtils.isNotBlank(sb)) {
technologyTerritoryName = sb.substring(0, sb.length() - 1);
}
return technologyTerritoryName;
}
private String getFileName(DummyInventoryInfoEO dummyInventoryInfoEO,List<OSSFile> fileInfos,String deliverableTemplate){
StringBuilder sb = new StringBuilder();
for (String s : deliverableTemplate.split(",")) {
@@ -1055,6 +1074,14 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
String zipEntryName,
File saveDirectory,
DummyInventoryInfoEO dummyInventoryInfoEOTemp) {
String dictId = sysCategoryMapper.getDictId("deliverable_template");
List<SysCategory> collect = categoryList.stream().filter(e -> e.getSysDictId().equals(dictId)).collect(Collectors.toList());
List<String> treeNameList = new ArrayList<>();
if(CutEnum.CN.getValue().equals(dummyInventoryInfoEOTemp.getCut())){
treeNameList = collect.stream().map(SysCategory::getName).collect(Collectors.toList());
}else{
treeNameList = collect.stream().map(SysCategory::getEnName).collect(Collectors.toList());
}
int i = 3;
List<String> msgList = new ArrayList<>();
String value = "";
@@ -1182,9 +1209,10 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
//设计
//交付物类型
value = pullSingle(dictItemList, dummyInventoryInfoEO, errorMsg, designDeliverableType,msgList,"交付物类型","type of deliverables","deliverable_template");
if(StringUtils.isNotBlank(value)){
dummyInventoryInfoEO.setDesignDeliverableType(value);
value = tree(categoryList, treeNameList,dummyInventoryInfoEO, errorMsg, designDeliverableType,msgList,"交付物类型","type of deliverables","deliverable_template");
if (StringUtils.isNotBlank(value)) {
String treeId = getTreeId(categoryList, dummyInventoryInfoEOTemp, treeNameList, value);
dummyInventoryInfoEO.setDesignDeliverableType(treeId);
}
//交付物模板
@@ -1207,9 +1235,10 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
//pre
//交付物类型
value = pullSingle(dictItemList, dummyInventoryInfoEO, errorMsg, prehomoDeliverableType,msgList,"交付物类型","type of deliverables","deliverable_template");
value = tree(categoryList, treeNameList,dummyInventoryInfoEO, errorMsg, prehomoDeliverableType,msgList,"交付物类型","type of deliverables","deliverable_template");
if(StringUtils.isNotBlank(value)){
dummyInventoryInfoEO.setPrehomoDeliverableType(value);
String treeId = getTreeId(categoryList, dummyInventoryInfoEOTemp, treeNameList, value);
dummyInventoryInfoEO.setPrehomoDeliverableType(treeId);
}
//交付物模板
@@ -1232,9 +1261,10 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
//确认
//交付物类型
value = pullSingle(dictItemList, dummyInventoryInfoEO, errorMsg, verifyDeliverableType,msgList,"交付物类型","type of deliverables","deliverable_template");
value = tree(categoryList, treeNameList,dummyInventoryInfoEO, errorMsg, verifyDeliverableType,msgList,"交付物类型","type of deliverables","deliverable_template");
if(StringUtils.isNotBlank(value)){
dummyInventoryInfoEO.setVerifyDeliverableType(value);
String treeId = getTreeId(categoryList, dummyInventoryInfoEOTemp, treeNameList, value);
dummyInventoryInfoEO.setVerifyDeliverableType(treeId);
}
//交付物模板
@@ -1285,6 +1315,28 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
}
}
private String getTreeId(List<SysCategory> categoryList, DummyInventoryInfoEO dummyInventoryInfoEOTemp, List<String> treeNameList, String value) {
StringBuilder sb = new StringBuilder();
for (String valueTemp : value.split(",")) {
if (treeNameList.contains(valueTemp)) {
List<SysCategory> sysCategoryList = new ArrayList<>();
if (CutEnum.CN.getValue().equals(dummyInventoryInfoEOTemp.getCut())) {
sysCategoryList = categoryList.stream().filter(e -> e.getName().equals(valueTemp)).collect(Collectors.toList());
} else {
sysCategoryList = categoryList.stream().filter(e -> e.getEnName().equals(valueTemp)).collect(Collectors.toList());
}
if (sysCategoryList.size() != 0) {
sb.append(sysCategoryList.get(0).getId() + ",");
}
}
}
if (StringUtils.isNotBlank(sb)) {
String substring = sb.substring(0, sb.length() - 1);
return substring;
}
return null;
}
private void verifySerialNumber(List<DummyInventoryInfoEO> dataList,DummyInventoryInfoEO dummyInventoryInfoEOTemp) {
//文档库数据
List<String> serialNumberList = dataList.stream().map(DummyInventoryInfoEO::getSerialNumber).collect(Collectors.toList());
@@ -1424,6 +1476,49 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
}
}
private String tree(List<SysCategory> categoryList, List<String> nameList,DummyInventoryInfoEO dummyInventoryInfoEO,
String errorMsg, String value,List<String> msgList,
String nameCn,String nameEn,String dictCode) {
if (StringUtils.isNotBlank(value)) {
StringBuilder sb = new StringBuilder();
for (String s : value.split(",")) {
if(!nameList.contains(s)){
sb.append(s+",");
}
}
if(StringUtils.isNotBlank(sb)){
String substring = sb.substring(0, sb.length() - 1);
if (CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())) {
errorMsg += nameCn + "中的" + substring + "与数据字典不匹配, ";
} else {
errorMsg += nameEn + " " + substring + " does not match the data dictionary, ";
}
msgList.add(errorMsg);
}else{
StringBuilder sbTemp = new StringBuilder();
for (String s : value.split(",")) {
List<SysCategory> collect = new ArrayList<>();
if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){
collect = categoryList.stream().filter(e -> s.equals(e.getName())).collect(Collectors.toList());
if(collect.size() != 0){
sbTemp.append(collect.get(0).getName()+",");
}
}else{
collect = categoryList.stream().filter(e -> s.equals(e.getEnName())).collect(Collectors.toList());
if(collect.size() != 0){
sbTemp.append(collect.get(0).getEnName()+",");
}
}
}
if(StringUtils.isNotBlank(sbTemp)){
String substring = sbTemp.substring(0, sbTemp.length() - 1);
return substring;
}
}
}
return null;
}
private String pullSingle(List<SysDictItem> dictItemList, DummyInventoryInfoEO dummyInventoryInfoEO,
String errorMsg, String value,List<String> msgList,
String nameCn,String nameEn,String dictCode) {
@@ -1857,23 +1952,36 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
//技术领域
if(StringUtils.isNotBlank(technologyTerritory)){
StringBuilder sb = new StringBuilder();
for (String s : technologyTerritory.split(",")) {
List<SysCategory> collect = sysCategoryList.stream()
.filter(e -> s.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()+",");
}
}
}
StringBuilder sb = getStringBuilder(dummyInventoryInfoEO, sysCategoryList, technologyTerritory);
if(StringUtils.isNotBlank(sb)){
String substring = sb.substring(0, sb.length() - 1);
inventoryInfoEO.setTechnologyTerritory(substring);
}
}
//设计交付物类型 inventoryInfoEO
if(StringUtils.isNotBlank(inventoryInfoEO.getDesignDeliverableType())){
StringBuilder sb = getStringBuilder(dummyInventoryInfoEO, sysCategoryList, inventoryInfoEO.getDesignDeliverableType());
if(StringUtils.isNotBlank(sb)){
String substring = sb.substring(0, sb.length() - 1);
inventoryInfoEO.setDesignDeliverableType(substring);
}
}
//pre交付物类型
if(StringUtils.isNotBlank(inventoryInfoEO.getPrehomoDeliverableType())){
StringBuilder sb = getStringBuilder(dummyInventoryInfoEO, sysCategoryList, inventoryInfoEO.getPrehomoDeliverableType());
if(StringUtils.isNotBlank(sb)){
String substring = sb.substring(0, sb.length() - 1);
inventoryInfoEO.setPrehomoDeliverableType(substring);
}
}
//验证交付物类型
if(StringUtils.isNotBlank(inventoryInfoEO.getVerifyDeliverableType())){
StringBuilder sb = getStringBuilder(dummyInventoryInfoEO, sysCategoryList, inventoryInfoEO.getVerifyDeliverableType());
if(StringUtils.isNotBlank(sb)){
String substring = sb.substring(0, sb.length() - 1);
inventoryInfoEO.setVerifyDeliverableType(substring);
}
}
//设计交付物模板
if(StringUtils.isNotBlank(designDeliverableTemplate)){
String designDeliverableTemplateName = template(fileInfos, designDeliverableTemplate);
@@ -1893,6 +2001,23 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
}
}
@NotNull
private StringBuilder getStringBuilder(DummyInventoryInfoEO dummyInventoryInfoEO, List<SysCategory> sysCategoryList, String technologyTerritory) {
StringBuilder sb = new StringBuilder();
for (String s : technologyTerritory.split(",")) {
List<SysCategory> collect = sysCategoryList.stream()
.filter(e -> s.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()+",");
}
}
}
return sb;
}
private String getPerson(DummyInventoryInfoEO dummyInventoryInfoEO, List<SysDictItem> sysDictItemList, String designInitiator) {
if(StringUtils.isNotBlank(designInitiator)){
StringBuilder sb = new StringBuilder();