From edf6f5f6aedf7797861b088ad1058f75d2074ce1 Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期一, 17 七月 2023 23:37:24 +0800
Subject: [PATCH] 批量申请bug修复

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java    |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/AttributeMapConfig.java   |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java          |   49 +++++++++++++++++-------
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java |   12 ++++-
 4 files changed, 46 insertions(+), 19 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
index 5cfa714..e1611d5 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -8,7 +8,6 @@
 import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
 import com.vci.ubcs.code.dto.CodeOrderDTO;
 import com.vci.ubcs.code.entity.CodeAllCode;
-import com.vci.ubcs.code.entity.CodeClassify;
 import com.vci.ubcs.code.enumpack.CodeDefaultLC;
 import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
 import com.vci.ubcs.code.lifecycle.CodeAllCodeLC;
@@ -33,7 +32,6 @@
 import com.vci.ubcs.starter.revision.model.BaseModel;
 import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
 import com.vci.ubcs.starter.util.LocalFileUtil;
-import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
 import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
 import com.vci.ubcs.starter.web.enumpck.BooleanEnum;
 import com.vci.ubcs.starter.web.enumpck.UserSecretEnum;
@@ -41,7 +39,6 @@
 import com.vci.ubcs.starter.web.pagemodel.*;
 import com.vci.ubcs.starter.web.toolmodel.DateConverter;
 import com.vci.ubcs.starter.web.util.*;
-import lombok.AllArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.map.HashedMap;
@@ -51,7 +48,6 @@
 import org.apache.poi.ss.usermodel.Font;
 import org.apache.poi.ss.usermodel.RichTextString;
 import org.apache.poi.ss.usermodel.Workbook;
-import org.springblade.core.cache.utils.CacheUtil;
 import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.BeanUtils;
@@ -68,6 +64,7 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 
 import static com.alibaba.druid.util.FnvHash.Constants.LIMIT;
@@ -1455,8 +1452,8 @@
 
 	@Override
 	public R batchImportData(List<CodeImprotSaveDatVO> codeImprotSaveDatVOList, String classifyAttr, boolean isImprot) {
-
-		boolean success=true;
+		WriteExcelOption eo = new WriteExcelOption();
+		AtomicBoolean success= new AtomicBoolean(true);
 		codeImprotSaveDatVOList.stream().forEach(codeImprotSaveDatVO -> {
 			List<SheetRowData> rowDataList = new ArrayList<>();
 			List<ClientBusinessObject>cboList=new ArrayList<>();
@@ -1573,7 +1570,7 @@
 							log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
 							thisCbos.stream().forEach(cbo -> {
 								String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
-								errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡");
+								errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡:"+e.getMessage());
 							});
 						}
 					}
@@ -1595,14 +1592,34 @@
 					try {
 						productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList);
 					} catch (Exception e) {
-						e.printStackTrace();
+						log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
+						needSaveCboList.stream().forEach(cbo -> {
+							String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+							errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡:"+e.getMessage());
+						});
 					}
 					//濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
 					engineService.batchSaveSelectChar(codeClassifyTemplateVO, dataCBOList);
 				}
 			}
+			if(errorMap.size()>0) {
+				success.set(false);
+				LinkedList<WriteExcelData> excelDataList = new LinkedList<>();
+				excelDataList.add(new WriteExcelData(0, 0, "閿欒淇℃伅"));
+				final int[] index = {1};
+				errorMap.forEach((key,v)->{
+					excelDataList.add(new WriteExcelData(index[0]++, 0, "绗�"+(Integer.parseInt(key)+1)+"琛屾暟鎹細"+v));
+				});
+				eo.addSheetDataList(codeClassifyTemplateVO.getName() + "瀵煎叆妯℃澘", excelDataList);
+			}
 		});
-		return  R.success(isImprot?"鎵归噺鍘嗗彶瀵煎叆鎴愬姛":"鎵归噺鐢宠鎴愬姛");
+		if(!success.get()){
+			String excelName = LocalFileUtil.getDefaultTempFolder() + File.separator + (isImprot?"鎵归噺鍘嗗彶閿欒淇℃伅.xls":"鎵归噺鐢宠閿欒淇℃伅.xls");
+			ExcelUtil.writeDataToFile(excelName,eo);
+			return  R.fail(excelName);
+		}else {
+			return R.success(isImprot ? "鎵归噺鍘嗗彶瀵煎叆鎴愬姛" : "鎵归噺鐢宠鎴愬姛");
+		}
 	}
 
 	/***
@@ -2723,6 +2740,7 @@
 						Integer userSecret = VciBaseUtil.getCurrentUserSecret();
 						cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
 					}
+					cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
 				}else{
 					//姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰�
 					//cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
@@ -2779,6 +2797,7 @@
 						Integer userSecret = VciBaseUtil.getCurrentUserSecret();
 						cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
 					}
+					cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
 				}else{
 					//姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰�
 					//cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
@@ -3624,13 +3643,15 @@
 		}
 	}
 	private List<ClientBusinessObject> ChangeMapTOClientBusinessObjects(List<Map<String,String>> oldDataMap){
-		List<ClientBusinessObject> clientBusinessObjectList=new CopyOnWriteArrayList<>();
-		oldDataMap.parallelStream().forEach(dataMap->{
+		List<ClientBusinessObject> clientBusinessObjectList=new ArrayList<>();
+		oldDataMap.stream().forEach(dataMap->{
 			ClientBusinessObject clientBusinessObject=new ClientBusinessObject();
 			DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject);
-			dataMap.forEach((key,value)->{
-				clientBusinessObject.setAttributeValue(key,value);
-			});
+			for (String key:dataMap.keySet()){
+				Object value= dataMap.getOrDefault(key,"");
+				clientBusinessObject.setAttributeValue(key,value.toString());
+			}
+			clientBusinessObjectList.add(clientBusinessObject);
 		});
 		return clientBusinessObjectList;
 	}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
index 95e3f5a..5b86905 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -104,6 +104,7 @@
 				String[] secLengths = cbo.getData().get(CODE_SEC_LENGTH_FIELD).split("#");
 				cbo.getData().remove(CODE_SEC_LENGTH_FIELD);//灏嗘key闄ゅ幓
 				cbo.getData().remove(IMPORT_ROW_INDEX);//灏嗘key闄ゅ幓
+				cbo.getData().remove("codeclassifyid");//灏嗘key闄ゅ幓
 				List<CodeBasicSecVO> secVOList = ruleVO.getSecVOList().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList());
 				Map<String/**鐮佹鐨勪富閿�**/,String/**鐮佹鐨勫��**/> serialValueMap = new HashMap<>();
 				Map<String, CodeBasicSecVO> secVOMap = secVOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
@@ -290,6 +291,9 @@
 
 			for (int i = 0; i < dataCBOList.size(); i++) {
 				BaseModel cbo = dataCBOList.get(i);
+				cbo.getData().remove(CODE_SEC_LENGTH_FIELD);//灏嗘key闄ゅ幓
+				cbo.getData().remove(IMPORT_ROW_INDEX);//灏嗘key闄ゅ幓
+				cbo.getData().remove("codeclassifyid");//灏嗘key闄ゅ幓
 				List<String> thisSecValueList = new LinkedList<>();
 				for (int j = 0; j < secValueList.size(); j++) {
 					thisSecValueList.add(secValueList.get(j));
@@ -323,15 +327,17 @@
 			}
 			saveSerialValue( ruleVO, lastMaxSerialValueMap, maxSerialValueMap);
 
+			allCodeDOList.stream().forEach(
+				allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode");allCode.setLctid("codeAllCodeLC");}
+			);
+
+
 			Map<String, String> statusMap = allCodeDOList.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus()));
 			allCodeDOList.stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmname())).forEach(s -> {
 				s.setLcStatus(statusMap.get(s.getOid()));
 			});
 
 
-			allCodeDOList.stream().forEach(
-				allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode");allCode.setLctid("codeAllCodeLC");}
-			);
 
 			codeAllCodeService.saveBatch(allCodeDOList);
 //			iCodeWupinService.saveBatch(dataCBOList);
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
index e941cac..1abb780 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -65,7 +65,7 @@
 @Slf4j
 @VciWebservice(path = "/universalInterface")
 public class UniversalInterfaceImpl<IDockingLogeServiceing> implements UniversalInterfaceI {
-	@Value("${code.checkConfig:true}")
+	@Value("${code.universalinterface.checkSystemConfig:true}")
 	public boolean CODE_CHECKCONFIG;
 	@Autowired(required = false)
 	private AttributeMapConfig attributeMapConfig;
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/AttributeMapConfig.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/AttributeMapConfig.java
index 126250c..f3e376d 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/AttributeMapConfig.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/webService/config/AttributeMapConfig.java
@@ -6,7 +6,7 @@
 import java.util.List;
 import java.util.Map;
 
-@ConfigurationProperties(prefix="attrconfig")
+@ConfigurationProperties(prefix="code.universalinterface.attrconfig")
 @Component
 public class AttributeMapConfig {
     private Map<String,String> system_attrmap;

--
Gitblit v1.9.3