Merge remote-tracking branch 'origin/dev_2nd_LCYH' into dev_2nd_LCYH

This commit is contained in:
高嵩
2023-03-29 23:52:49 +08:00
3 changed files with 376 additions and 24 deletions
@@ -28,6 +28,7 @@ import com.jero.modules.dummy.enums.DummyInventoryBaseFieldEnum;
import com.jero.modules.dummy.service.impl.DummyLogEOServiceImpl;
import com.jero.modules.dummy.util.DeepCopyListUtil;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.project.entity.ProjectCertificationInventoryEO;
import com.jero.modules.project.enums.ProjectInventoryFieldEnum;
import com.jero.modules.split.common.FileUnZip;
import com.jero.modules.system.entity.SysCategory;
@@ -513,9 +514,9 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
if(CollectionUtils.isNotEmpty(baseList)){
String title = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
title = "类别,检验项目,配置项,WVTA ID,*编号,*责任领域,交付物类型";
title = "*类别,*检验项目,*配置项,*WVTA ID,*编号,*责任领域,*交付物类型";
}else{
title = "Category,Inspection Items,Configuration Item,WVTA ID,*Number,*Responsible Field,Deliverable Type";
title = "*Category,*Inspection Items,*Configuration Item,*WVTA ID,*Number,*Responsible Field,*Deliverable Type";
}
int pos = file.getOriginalFilename().lastIndexOf(".");
@@ -703,12 +704,12 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
// //树形数据字典
// List<SysCategory> categoryList = sysCategoryService.list();
// //普通数据字典
// List<SysDictItem> dictItemList = sysDictItemServiceImpl.selectItemsAll();
// importDatas(datas, categoryList, dictItemList, zipEntryName,saveDirectory,authDummyInventoryInfoEO);
String cut = authDummyInventoryInfoEO.getCut();
importDisposeData(datas,cut);
List<SysCategory> categoryList = sysCategoryService.list();
//普通数据字典
List<SysDictItem> dictItemList = sysDictItemServiceImpl.selectItemsAll();
importDatas(datas, categoryList, dictItemList, zipEntryName,saveDirectory,authDummyInventoryInfoEO);
// String cut = authDummyInventoryInfoEO.getCut();
// importDisposeData(datas,cut);
//删除原上传文件
FileUnZip.deleteDir(saveDirectory);
}else{
@@ -720,6 +721,357 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
}
}
private void importDatas(List<AuthDummyInventoryInfoEO> datas,
List<SysCategory> categoryList, List<SysDictItem> dictItemList,
String zipEntryName, File saveDirectory,
AuthDummyInventoryInfoEO authDummyInventoryInfoEOTemp) {
List<String> msgList = new ArrayList<>();
//模板数据验证
msgList = dataTemplateVerify(datas, dictItemList, zipEntryName, authDummyInventoryInfoEOTemp, categoryList);
if (msgList.size() > 0) {
//返回报错信息
String html = "";
for (String s : msgList) {
html += s + "</br>";
}
FileUnZip.deleteDir(saveDirectory);
throw new JeroBootException(html);
}else {
if (datas.size() != 0) {
this.saveBatch(datas);
}
}
}
private List<String> dataTemplateVerify(List<AuthDummyInventoryInfoEO> datas,
List<SysDictItem> dictItemList, String zipEntryName,
AuthDummyInventoryInfoEO authDummyInventoryInfoEOTemp,
List<SysCategory> categoryList) {
String dictId = sysCategoryMapper.getDictId("ren4_zheng4_-_jiao1_fu4_wu4_lei4_xing2");
List<SysCategory> collect = categoryList.stream().filter(e -> e.getSysDictId().equals(dictId)).collect(Collectors.toList());
List<String> treeNameList = new ArrayList<>();
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){
treeNameList = collect.stream().map(SysCategory::getName).collect(Collectors.toList());
}else{
treeNameList = collect.stream().map(SysCategory::getEnName).collect(Collectors.toList());
}
int i = 2;
List<String> msgList = new ArrayList<>();
String value = "";
boolean flag = true;
//编号验证
verifySerialNumber(datas,authDummyInventoryInfoEOTemp);
for(AuthDummyInventoryInfoEO authDummyInventoryInfoEO :datas){
i++;
String errorMsg = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){
errorMsg = "" + i + "行:";
}else{
errorMsg = i + " line";
}
//类别
String category = authDummyInventoryInfoEO.getCategory();
//检验项目
String inspectionItem = authDummyInventoryInfoEO.getInspectionItem();
//配置项
String configItem = authDummyInventoryInfoEO.getConfigItem();
//WVTA ID
String wvtaId = authDummyInventoryInfoEO.getWvtaId();
//标准编号
String serialNumber = authDummyInventoryInfoEO.getSerialNumber();
//责任领域
String dutyTerritory = authDummyInventoryInfoEO.getDutyTerritoryName();
//交付物类型
String deliverableType = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
deliverableType = authDummyInventoryInfoEO.getDeliverableTypeName();
}else {
deliverableType = authDummyInventoryInfoEO.getDeliverableTypeNameEn();
}
//编号必填
flag = must(authDummyInventoryInfoEO, errorMsg, msgList, serialNumber, "编号", "Number");
//WVTA ID
if(StringUtils.isNotBlank(wvtaId)){
if(wvtaId.length() > 100){
String message = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){
message = errorMsg + "WVTA ID不能超过100个字符, ";
}else{
message = errorMsg + " The WVTA ID cannot contain more than 100 characters, ";
}
msgList.add(message);
}
} else {
String message = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){
message = errorMsg + "WVTA ID不能为空, ";
}else{
message = errorMsg + " The WVTA ID cannot null, ";
}
msgList.add(message);
}
//类别
if(StringUtils.isNotBlank(category)){
if(category.length() > 100){
String message = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){
message = errorMsg + "类别不能超过100个字符, ";
}else{
message = errorMsg + " The Category cannot contain more than 100 characters, ";
}
msgList.add(message);
}
}else {
String message = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){
message = errorMsg + "类别不能为空, ";
}else{
message = errorMsg + " The Category cannot null, ";
}
msgList.add(message);
}
//检验项目
if(StringUtils.isNotBlank(inspectionItem)){
if(inspectionItem.length() > 100){
String message = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){
message = errorMsg + "检验项目不能超过100个字符, ";
}else{
message = errorMsg + " The InspectionItem cannot contain more than 100 characters, ";
}
msgList.add(message);
}
}else {
String message = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){
message = errorMsg + "检验项目不能为空, ";
}else{
message = errorMsg + " The InspectionItem cannot null, ";
}
msgList.add(message);
}
//配置项
if(StringUtils.isNotBlank(configItem)){
if(configItem.length() > 100){
String message = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){
message = errorMsg + "配置项不能超过100个字符, ";
}else{
message = errorMsg + " The ConfigItem cannot contain more than 100 characters, ";
}
msgList.add(message);
}
}else {
String message = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){
message = errorMsg + "配置项不能为空, ";
}else{
message = errorMsg + " The ConfigItem cannot null, ";
}
msgList.add(message);
}
//责任领域
if(StringUtils.isNotBlank(dutyTerritory)){
value = pullMore(dictItemList, authDummyInventoryInfoEO, errorMsg, dutyTerritory,msgList,"责任领域","Responsible Field","duty_territory");
if(StringUtils.isNotBlank(value)){
authDummyInventoryInfoEO.setDutyTerritory(value);
}
}else {
String message = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){
message = errorMsg + "责任领域不能为空, ";
}else{
message = errorMsg + " The Responsible Field cannot null, ";
}
msgList.add(message);
}
//交付物类型
if(StringUtils.isNotEmpty(deliverableType)){
value = tree(categoryList,treeNameList, authDummyInventoryInfoEO, errorMsg, deliverableType,msgList,"交付物类型","Deliverable Type","deliverable_template");
if(StringUtils.isNotBlank(value)){
String treeId = getTreeId(categoryList, authDummyInventoryInfoEOTemp, treeNameList, value);
authDummyInventoryInfoEO.setDeliverableType(treeId);
}
}else{
String message = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){
message = errorMsg + "交付物类型不能为空, ";
}else{
message = errorMsg + " The Deliverable Type cannot null, ";
}
msgList.add(message);
}
}
return msgList;
}
private String getTreeId(List<SysCategory> categoryList, AuthDummyInventoryInfoEO authDummyInventoryInfoEOTemp,
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(authDummyInventoryInfoEOTemp.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 String tree(List<SysCategory> categoryList, List<String> nameList,
AuthDummyInventoryInfoEO authDummyInventoryInfoEO,
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(authDummyInventoryInfoEO.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(authDummyInventoryInfoEO.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 pullMore(List<SysDictItem> dictItemList, AuthDummyInventoryInfoEO authDummyInventoryInfoEO,
String errorMsg, String value, List<String> msgList, String nameCn,
String nameEn, String dictCode) {
List<String> valueList = new ArrayList<>();
if (StringUtils.isNotBlank(value)) {
List<String> list = Arrays.asList(value.split(","));
List<SysDictItem> sysDictItemList = new ArrayList<>();
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
sysDictItemList = dictItemList.stream().filter(e ->dictCode.equals(e.getDictCode()) && list.contains(e.getItemText())).collect(Collectors.toList());
}else{
sysDictItemList = dictItemList.stream().filter(e ->dictCode.equals(e.getDictCode()) && list.contains(e.getEnName())).collect(Collectors.toList());
}
if(list.size() == sysDictItemList.size()){
valueList = sysDictItemList.stream().map(SysDictItem::getItemValue).collect(Collectors.toList());
}else{
//数据中有与数据字典不匹配的值
List<String> finalValueList = valueList;
List<String> diffList = list.stream().filter(e -> !finalValueList.contains(e)).collect(Collectors.toList());
if (CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())) {
errorMsg += nameCn + "中的" + StringUtils.join(diffList,",") + "与数据字典不匹配, ";
} else {
errorMsg += nameEn + " " + StringUtils.join(diffList,",") + " does not match the data dictionary, ";
}
msgList.add(errorMsg);
}
}
return StringUtils.join(valueList,",");
}
private boolean must(AuthDummyInventoryInfoEO authDummyInventoryInfoEO,
String errorMsg, List<String> msgList, String serialNumber,
String nameCn, String nameEn) {
int errorCount = 0;
if(StringUtils.isBlank(serialNumber)){
errorCount ++;
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
errorMsg += nameCn + "为必填项,不能为空, ";
}else{
errorMsg += nameEn + "This parameter is mandatory and cannot be empty, ";
}
msgList.add(errorMsg);
}
if(errorCount == 0){
return true;
}else{
return false;
}
}
private void verifySerialNumber(List<AuthDummyInventoryInfoEO> datas,
AuthDummyInventoryInfoEO authDummyInventoryInfoEOTemp) {
//1. 验证标准号在文档库中是否存在
List<String> serialNumberList = datas.stream().map(AuthDummyInventoryInfoEO::getSerialNumber).collect(Collectors.toList());
LambdaQueryWrapper<BussDocumentLibraryEO> wrapper = new LambdaQueryWrapper<>();
wrapper.in(BussDocumentLibraryEO::getSerialNumber,serialNumberList);
List<BussDocumentLibraryEO> bussDocumentLibraryEOList = iBussDocumentLibraryEOService.list(wrapper);
//文档库中可能存在重复的标准号
List<String> serialNumberListTemp = bussDocumentLibraryEOList.stream().map(BussDocumentLibraryEO::getSerialNumber).distinct().collect(Collectors.toList());
if(serialNumberList.size() != serialNumberListTemp.size()){
//存在文档库没有的数据
List<String> collect = bussDocumentLibraryEOList.stream().map(BussDocumentLibraryEO::getSerialNumber).collect(Collectors.toList());
List<String> serialNumbers = serialNumberList.stream().filter(e -> !collect.contains(e)).collect(Collectors.toList());
if(serialNumbers.size() > 0){
if(CutEnum.CN.getValue().equals(datas.get(0).getCut())){
throw new JeroBootException(StringUtils.join(serialNumbers,",")+"文档库中不存在,不能添加");
}else{
throw new JeroBootException(StringUtils.join(serialNumbers,",")+" does not exist in the document library and cannot be added");
}
}
}else{
for (AuthDummyInventoryInfoEO authDummyInventoryInfoEO : datas) {
List<BussDocumentLibraryEO> collect = bussDocumentLibraryEOList.stream()
.filter(e -> e.getSerialNumber().equals(authDummyInventoryInfoEO.getSerialNumber())).collect(Collectors.toList());
authDummyInventoryInfoEO.setBussDocumentLibraryId(collect.get(0).getId());
}
}
// //2. 验证标准号在法规清单中是否添加过
// LambdaQueryWrapper<ProjectCertificationInventoryEO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
// lambdaQueryWrapper.in(ProjectCertificationInventoryEO::getSerialNumber,serialNumberList).in(ProjectCertificationInventoryEO::getProjectLibraryId,projectCertificationInventoryEOTemp.getProjectLibraryId());
// List<ProjectCertificationInventoryEO> projectCertificationInventoryEOList = this.list(lambdaQueryWrapper);
// List<String> serialNumberTempList = projectCertificationInventoryEOList.stream().map(ProjectCertificationInventoryEO::getSerialNumber).collect(Collectors.toList());
// if(projectCertificationInventoryEOList.size() > 0){
// if(CutEnum.CN.getValue().equals(datas.get(0).getCut())){
// throw new JeroBootException(StringUtils.join(serialNumberTempList,",")+"已存在,不能重复添加");
// }else{
// throw new JeroBootException(StringUtils.join(serialNumberTempList,",")+" already exists and cannot be added again");
// }
// }
}
@Override
public Result<?> batchAdd(JSONObject json) {
try {
@@ -763,21 +1115,21 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
if (field == null) return null;
switch (field) {
case "类别": return "category";
case "检验项目": return "inspectionItem";
case "配置项": return "configItem";
case "WVTA ID": return "wvtaId";
case "*类别": return "category";
case "*检验项目": return "inspectionItem";
case "*配置项": return "configItem";
case "*WVTA ID": return "wvtaId";
case "*编号" : return "serialNumber";
case "*责任领域": return "dutyTerritoryName";
case "交付物类型" : return "deliverableTypeName";
case "*交付物类型" : return "deliverableTypeName";
case "Category" : return "Category";
case "Inspection Items" : return"inspectionItem";
case "Configuration Item" : return"configItem";
case "*Category" : return "Category";
case "*Inspection Items" : return"inspectionItem";
case "*Configuration Item" : return"configItem";
// case "WVTA ID" : return "wvtaId";
case "*Number" : return "serialNumber";
case "*Responsible Field" : return "dutyTerritoryName";
case "Deliverable Type" : return "deliverableTypeNameEn";
case "*Deliverable Type" : return "deliverableTypeNameEn";
default: return null;
@@ -142,7 +142,7 @@ public class ProjectCertificationInventoryEOEn implements Serializable {
private java.lang.String deliverableTemplate;
/**交付物模板名称**/
@TableField(exist = false)
@Excel(name = "交付物模板", width = 20)
@Excel(name = "Deliverable Template", width = 40)
private String deliverableTemplateName;
/**交付结果*/
@@ -3175,7 +3175,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
if(StringUtils.isNotBlank(endTime)){
flag = dateVerify(projectCertificationInventoryEO, errorMsg, endTime,msgList,"截止时间","Due Date");
if(flag){
SimpleDateFormat sd = new SimpleDateFormat();
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sd.parse(endTime);
@@ -3837,19 +3837,19 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){
title = "*类别,*检验项目,*配置项,*WVTA ID," +
"*标准编号,*责任领域,*工程接口人,*责任人," +
"*交付物类型,交付物模板,*截止日期";
"*交付物类型,交付物模板,*截止日期,报告编号,产品型号,生产企业名称";
}else {
title = "*Category,*Inspection Items,*Configuration Item,*WVTA ID," +
"*Standard No,*Responsible Field,*Eng. Interface,*Assignee," +
"*Deliverable Type,Deliverable Template,*Due Date";
"*Deliverable Type,Deliverable Template,*Due Date,Report No,Product Model,Name Of Manufacturer";
}
List<String> list = Arrays.asList(title.split(","));
int index = 0;
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){
index = list.indexOf("*截止日期") + 1;
index = list.indexOf("生产企业名称") + 1;
}else{
index = list.indexOf("*Due Date") + 1;
index = list.indexOf("Name Of Manufacturer") + 1;
}
//创建临时文件夹
@@ -3869,7 +3869,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
cellStyleTemp.setWrapText(true);//自动换行
CellRangeAddress region =
new CellRangeAddress(1, 1, 0, 10); //参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列
new CellRangeAddress(1, 1, 0, 13); //参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列
sheet.addMergedRegion(region);
String explain= "";
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){