From c3c9baf912f572a78b2b82613d31889be187ab92 Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期一, 03 七月 2023 23:53:56 +0800
Subject: [PATCH] 历史导入修改

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java |  136 ++++++++++++++++++++++++++++++++------------
 1 files changed, 98 insertions(+), 38 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 aa4955c..90a9ab3 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
@@ -21,6 +21,7 @@
 import com.vci.ubcs.code.vo.webserviceModel.attrmap.RowDatas;
 import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultDataObjectDetailDO;
 import com.vci.ubcs.omd.feign.IBtmTypeClient;
+import com.vci.ubcs.omd.feign.IWebSecretClient;
 import com.vci.ubcs.omd.vo.BtmTypeVO;
 import com.vci.ubcs.starter.bo.WriteExcelData;
 import com.vci.ubcs.starter.exception.VciBaseException;
@@ -59,6 +60,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import javax.annotation.Resource;
 import java.io.File;
@@ -154,6 +156,11 @@
 	 */
 	@Autowired
 	private IBtmTypeClient btmTypeClient;
+	/***
+	 * 瀵嗙骇鏈嶅姟
+	 */
+	@Resource
+	private IWebSecretClient secretService;
 	/**
 	 * 鎵归噺鐢宠锛氶�夊彇閫変腑鍒嗙被涓嬬殑鎵�鏈夋ā鏉垮叧閿睘鎬э紝鐩镐技灞炴�э紝蹇呭~灞炴�э紝鍐欏叆execl涓�
 	 *
@@ -189,7 +196,7 @@
 				String field=codetemplateAttr.getId();
 				String name=codetemplateAttr.getName();
 				CodeClassifyTemplateAttrVO codeBaseAttributeDTO=new CodeClassifyTemplateAttrVO();
-				boolean res=codetemplateAttr.getAttributeGroup().equals(BATCHADD_EXCEPORT_ATTR_TYPE)//鍩烘湰灞炴�у瓧娈垫樉绀�
+				boolean res=(StringUtils.isNotBlank(codetemplateAttr.getAttributeGroup())&& codetemplateAttr.getAttributeGroup().equals(BATCHADD_EXCEPORT_ATTR_TYPE))//鍩烘湰灞炴�у瓧娈垫樉绀�
 					||(StringUtils.isNotBlank(codetemplateAttr.getKeyAttrFlag())&&Boolean.parseBoolean(codetemplateAttr.getKeyAttrFlag()))//鍏抽敭灞炴�х殑瀛樺叆
 					||(StringUtils.isNotBlank(codetemplateAttr.getSameRepeatAttrFlag())&&Boolean.parseBoolean(codetemplateAttr.getSameRepeatAttrFlag())) //鐩镐技灞炴�х殑瀛樺叆
 					||(StringUtils.isNotBlank(codetemplateAttr.getRequireFlag())&&Boolean.parseBoolean(codetemplateAttr.getRequireFlag()));
@@ -752,7 +759,7 @@
 	 * @return 鏈夐敊璇俊鎭殑excel
 	 */
 	@Override
-	public CodeImProtRusultVO batchImportHistoryData(String codeClassifyOid, String classifyAttr,File file) {
+	public CodeImProtRusultVO batchImportHistoryData(String codeClassifyOid, String classifyAttr,File file) throws  Throwable{
 		VciBaseUtil.alertNotNull(codeClassifyOid,"鍒嗙被鐨勪富閿�");
 		ReadExcelOption reo = new ReadExcelOption();
 		reo.setReadAllSheet(true);
@@ -997,7 +1004,7 @@
 			if (isExport||newErrorMap.size() > 0) {
 				createRedisDatas(uuid + "-ok", templateVO, rowIndexCboMap, dataSet, fieldIndexMap, newErrorMap, true);
 			} else {
-				List<String> dataCBOIdList=new ArrayList<>();
+				List<BaseModel> dataCBOIdList=new ArrayList<>();
 				//SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
 				List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList;
 				CodeClassifyTemplateVO finalTemplateVO = templateVO;
@@ -1009,9 +1016,9 @@
 					thisCbos.stream().forEach(clientBusinessObject -> {
 						BaseModel baseModel=new BaseModel();
 						BeanUtil.convert(clientBusinessObject,baseModel);
-						baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject));
+						//baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject));
 						dataCBOList.add(baseModel);
-						dataCBOIdList.add(baseModel.getOid());
+						dataCBOIdList.add(baseModel);
 					});
 
 					if (!CollectionUtils.isEmpty(thisCbos)) {
@@ -1023,9 +1030,14 @@
 								String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
 								errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡");
 							});
+
 						}
 					}
 				});
+				if (errorMap.size() > 0) {
+					isExport = true;
+				}
+				createWriteExcelData(rowDataList, errorMap, new ArrayList<>(), titleRowData, shetNameMap, finalTemplateVO);
 				engineService.batchSaveSelectChar(templateVO, dataCBOIdList);
 			}
 		}
@@ -1054,7 +1066,19 @@
 
 		return codeImProtRusultVO;
 	}
+	/*private void converBaseModels(List<ClientBusinessObject> clientBusinessObjects,List<BaseModel>dataCBOList){
+		clientBusinessObjects.stream().forEach(clientBusinessObject -> {
+			BaseModel baseModel=new BaseModel();
+			BeanUtil.convert(clientBusinessObject,baseModel);
+			Map<String,String> dataMap=new HashMap<>();
+			clientBusinessObject.getHisAttrValList()
+			baseModel.setData(VciBaseUtil.objectToMapString(baseModel));
 
+			AttributeValue[] newAttributeValue= 	clientBusinessObject.getNewAttrValList();
+			dataCBOList.add(baseModel);
+		});
+
+	}*/
 	/***
 	 * 浠巈xecl閲屾瀯寤哄璞�
 	 * @param rowDataList
@@ -1331,14 +1355,14 @@
 				cboList.stream().forEach(clientBusinessObject -> {
 					BaseModel baseModel=new BaseModel();
 					BeanUtil.convert(clientBusinessObject,baseModel);
-					baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject));
+					//baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject));
 					dataCBOList.add(baseModel);
 					dataCBOIdList.add(baseModel.getOid());
 				});
 				try {
 					codeList = productCodeService.productCodeAndSaveData(classifyFullInfo,templateVO,ruleVO, orderDTO.getSecDTOList(),dataCBOList);
 					//濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
-					engineService.batchSaveSelectChar(templateVO, dataCBOIdList);
+					engineService.batchSaveSelectChar(templateVO, dataCBOList);
 				} catch (Exception e) {
 					e.printStackTrace();
 					log.error("鎵逛簡鐢宠鏃跺け璐�");
@@ -1427,7 +1451,7 @@
 
 	@Override
 	public R batchImportData(List<CodeImprotSaveDatVO> codeImprotSaveDatVOList, String classifyAttr, boolean isImprot) {
-		List<String> allNeedSaveCboList=new ArrayList<>();
+		List<BaseModel> dataCBOList=new ArrayList<>();
 		codeImprotSaveDatVOList.stream().forEach(codeImprotSaveDatVO -> {
 			List<SheetRowData> rowDataList = new ArrayList<>();
 			List<ClientBusinessObject>cboList=new ArrayList<>();
@@ -1517,13 +1541,13 @@
 
 			log.info("鍒嗙被锛�"+classifyFullInfo.getCurrentClassifyVO().getName()+"鏁版嵁:"+needSaveCboList.size());
 			if (!CollectionUtils.isEmpty(needSaveCboList)) {
-				List<BaseModel> dataCBOList=new ArrayList<>();
+//				List<BaseModel> dataCBOList=new ArrayList<>();
 				needSaveCboList.stream().forEach(clientBusinessObject -> {
 					BaseModel baseModel=new BaseModel();
 					BeanUtil.convert(clientBusinessObject,baseModel);
-					baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject));
+					//baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject));
 					dataCBOList.add(baseModel);
-					allNeedSaveCboList.add(baseModel.getOid());
+//					allNeedSaveCboList.add(baseModel);
 				});
 				try {
 				//9.鎴戜滑澶勭悊涓氬姟鏁版嵁
@@ -1537,7 +1561,7 @@
 				}
 			}
 			//濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
-			engineService.batchSaveSelectChar(codeClassifyTemplateVO, allNeedSaveCboList);
+			engineService.batchSaveSelectChar(codeClassifyTemplateVO, dataCBOList);
 		});
 		return  R.success(isImprot?"鎵归噺鍘嗗彶瀵煎叆鎴愬姛":"鎵归噺鐢宠鎴愬姛");
 	}
@@ -1795,14 +1819,14 @@
 			needSaveCboList.stream().forEach(clientBusinessObject -> {
 				BaseModel baseModel=new BaseModel();
 				BeanUtil.convert(clientBusinessObject,baseModel);
-				baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject));
+			//(VciBaseUtil.objectToMapString(clientBusinessObject));
 				dataCBOList.add(baseModel);
 				allNeedSaveCboList.add(baseModel.getOid());
 			});
 			try {
 				productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList);
 				//濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
-				engineService.batchSaveSelectChar(templateVO, allNeedSaveCboList);
+				engineService.batchSaveSelectChar(templateVO, dataCBOList);
 				// if(!isProcess){
 				needSaveCboList.stream().forEach(needSaveCbo->{
 					XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
@@ -1859,6 +1883,7 @@
 	 * @param dataObjectVO 鏁版嵁淇℃伅
 	 * @param resultDataObjectDetailDOs 閿欒淇℃伅
 	 */
+	@Transactional(rollbackFor = VciBaseException.class)
 	@Override
 	public void batchSyncEditDatas(CodeClassifyVO codeClassifyVO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs) {
 		String errorid="";
@@ -1887,9 +1912,30 @@
 		getFieldIndexMap(titleRowData, attrNameIdMap, fieldIndexMap);
 		Map<String, String> cboOidMap = new HashMap<>();
 		cboOidMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])) + ")");
-		R<BtmTypeVO>  r= btmTypeClient.getDetail(templateVO.getBtmTypeId());
-		BtmTypeVO btmTypeVO =r.getData();
-		String tableName=btmTypeVO.getTableName();
+		String tableName ="";
+		try {
+			R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId());
+			if(r.getCode()!=200) {
+				throw new Throwable(r.getMsg());
+			}
+			BtmTypeVO btmTypeVO = r.getData();
+			if (btmTypeVO == null) {
+				throw new Throwable("鏍规嵁涓氬姟绫诲瀷鏈煡璇㈠埌涓氬姟绫诲瀷瀵硅薄锛�");
+			}
+			tableName = btmTypeVO.getTableName();
+			if (StringUtils.isBlank(tableName)) {
+				throw new Throwable("鏍规嵁涓氬姟绫诲瀷鏈煡璇㈠埌涓氬姟绫诲瀷鐩稿叧鑱旂殑琛�");
+			}
+		}catch (Throwable e){
+			log.error("鏌ヨ涓氬姟瀵硅薄琛�"+e);
+			XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
+			xmlResultDataObjectDetailDO.setErrorid("103");
+			xmlResultDataObjectDetailDO.setMsg("鏌ヨ涓氬姟瀵硅薄琛�"+e);
+			xmlResultDataObjectDetailDO.setId("");
+			xmlResultDataObjectDetailDO.setCode("");
+			resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
+			return;
+		}
 
 		StringBuffer sb=new StringBuffer();
 		sb.append(" select * from ");
@@ -1975,7 +2021,7 @@
 
 				BaseModel baseModel=new BaseModel();
 				BeanUtil.convert(cbo,baseModel);
-				baseModel.setData(VciBaseUtil.objectToMapString(cbo));
+				//baseModel.setData(VciBaseUtil.objectToMapString(cbo));
 				updateList.add(baseModel);
 			}else if(operation.equals("delete")){//濡傛灉鍦ㄦ祦绋嬩腑涓嶅厑璁稿垹闄わ紝涓嶅湪娴佺▼涓姸鎬佷负鍙戝竷鎴栬�呭仠鐢ㄧ殑鏁版嵁涓嶅厑璁稿垹闄わ紝灏嗗叾鏇存敼涓哄仠鐢紝鍏朵粬鐨勬儏鍐电洿鎺ュ垹闄�
 				//  if(finalIsProcess){
@@ -2016,7 +2062,7 @@
 
 					BaseModel baseModel=new BaseModel();
 					BeanUtil.convert(cbo,baseModel);
-					baseModel.setData(VciBaseUtil.objectToMapString(cbo));
+					//baseModel.setData(VciBaseUtil.objectToMapString(cbo));
 					updateList.add(baseModel);
 				}catch (VciBaseException e) {
 					e.printStackTrace();
@@ -2180,7 +2226,7 @@
 			} else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) {
 				sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'";
 			}
-			sql[0] += " and islastR = '1' and islastV = '1' ";
+			sql[0] += " and lastR = '1' and lastV = '1' ";
 			if (commonsMapper.queryCountBySql(sql[0]) > 0) {
 				String ruleInfoMsg = keyRuleVO == null ? "" : "鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}";
 				String[] objs = new String[]{trim ? "鏄�" : "鍚�", ignoreCase ? "鏄�" : "鍚�", ignoreWidth ? "鏄�" : "鍚�", trimAll ? "鏄�" : "鍚�"};
@@ -2283,10 +2329,10 @@
 
 			}
 			int secret = VciBaseUtil.getInt(cbo.getAttributeValue(SECRET_FIELD));
-			/*if (secret == 0 || !secretService.checkDataSecret(secret)) {
+			if (secret == 0 || !secretService.checkDataSecret(secret).getData()) {
 				Integer userSecret = VciBaseUtil.getCurrentUserSecret();
 				cbo.setAttributeValue(SECRET_FIELD, String.valueOf((userSecret == null || userSecret == 0) ? UserSecretEnum.NONE.getValue() : userSecret));
-			}*/
+			}
 		} catch (Throwable e) {
 			log.error("璁剧疆榛樿鐨勫睘鎬х殑鍊奸敊璇�", e);
 		}
@@ -2535,11 +2581,11 @@
 					cbo.setAttributeValue(CODE_CLASSIFY_OID_FIELD,classifyFullInfo.getCurrentClassifyVO().getOid());
 					cbo.setAttributeValue(CODE_FULL_PATH_FILED,fullPath);
 					int secret = VciBaseUtil.getInt(cbo.getAttributeValue(SECRET_FIELD));
-					/*if(secret == 0 || !secretService.checkDataSecret(secret) ){
+					if(secret == 0 || !secretService.checkDataSecret(secret).getData() ){
 						Integer userSecret = VciBaseUtil.getCurrentUserSecret();
 						String secretValue= String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret);
 						cbo.setAttributeValue(SECRET_FIELD,secretValue);
-					}*/
+					}
 					if(rowData.getStatus().equals(CodeDefaultLC.DISABLE.getValue())){//鍋滅敤
 						cbo.setLcStatus(CodeDefaultLC.DISABLE.getValue());
 					}else if(rowData.getStatus().equals(CodeDefaultLC.EDITING.getValue())){//缂栬緫
@@ -2633,11 +2679,11 @@
 					cbo.setAttributeValue(CODE_CLASSIFY_OID_FIELD,classifyFullInfo.getCurrentClassifyVO().getOid());
 					cbo.setAttributeValue(CODE_FULL_PATH_FILED,fullPath);
 					//cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
-					/*int secret = VciBaseUtil.getInt(cbo.getAttributeValue(SECRET_FIELD));
-					if(secret == 0 || !secretService.checkDataSecret(secret) ){
+					int secret = VciBaseUtil.getInt(cbo.getAttributeValue(SECRET_FIELD));
+					if(secret == 0 || !secretService.checkDataSecret(secret).getData() ){
 						Integer userSecret = VciBaseUtil.getCurrentUserSecret();
 						cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
-					}*/
+					}
 				}else{
 					//姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰�
 					//cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
@@ -2690,10 +2736,10 @@
 					cbo.setAttributeValue(CODE_FULL_PATH_FILED,fullPath);
 					//cbo.setLcStatus(CodeDefaultLC.EDITING.getValue());
 					int secret = VciBaseUtil.getInt(cbo.getAttributeValue(SECRET_FIELD));
-					/*if(secret == 0 || !secretService.checkDataSecret(secret) ){
+					if(secret == 0 || !secretService.checkDataSecret(secret).getData() ){
 						Integer userSecret = VciBaseUtil.getCurrentUserSecret();
 						cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret));
-					}*/
+					}
 				}else{
 					//姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰�
 					//cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath));
@@ -2970,21 +3016,35 @@
 	 * @param cboList 鏁版嵁鐨勫垪琛�
 	 * @param errorMap 閿欒鐨勪俊鎭�
 	 */
-	private void batchCheckIdExistOnOrder(CodeClassifyTemplateVO templateVO,List<ClientBusinessObject> cboList,Map<String ,String> errorMap){
+	private void batchCheckIdExistOnOrder(CodeClassifyTemplateVO templateVO,List<ClientBusinessObject> cboList,Map<String ,String> errorMap) throws Throwable{
 		List<String> existIds = new ArrayList<>();
+		String tableName ="";
+		try {
+			R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId());
+			if(r.getCode()!=200) {
+				throw new Throwable(r.getMsg());
+			}
+			BtmTypeVO btmTypeVO = r.getData();
+			if (btmTypeVO == null) {
+				throw new Throwable("鏍规嵁涓氬姟绫诲瀷鏈煡璇㈠埌涓氬姟绫诲瀷瀵硅薄锛�");
+			}
+			tableName = btmTypeVO.getTableName();
+			if (StringUtils.isBlank(tableName)) {
+				throw new Throwable("鏍规嵁涓氬姟绫诲瀷鏈煡璇㈠埌涓氬姟绫诲瀷鐩稿叧鑱旂殑琛�");
+			}
+		}catch (Throwable e){
+			throw e;
+		}
+		String finalTableName = tableName;
 		VciBaseUtil.switchCollectionForOracleIn(cboList).stream().forEach(cbos -> {
 			Map<String, String> conditionMap = new HashMap<>();
 			conditionMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(cbos.stream().map(s -> s.getId()).collect(Collectors.toSet()).toArray(new String[0])) + ")");
 
-			R<BtmTypeVO>  r= btmTypeClient.getDetail(templateVO.getBtmTypeId());
-			BtmTypeVO btmTypeVO =r.getData();
-			String tableName=btmTypeVO.getTableName();
-
 			StringBuffer sb=new StringBuffer();
 			sb.append(" select id from ");
-			sb.append(tableName);
+			sb.append(finalTableName);
 			sb.append(" where 1=1 ");
-			sb.append(" id in (");
+			sb.append(" and id in (");
 			sb.append(VciBaseUtil.toInSql(cbos.stream().map(s -> s.getId()).collect(Collectors.toSet()).toArray(new String[0])));
 			sb.append(")");
 			List<String> idList= commonsMapper.selectById(sb.toString());
@@ -3807,8 +3867,8 @@
 			}else{
 				if (!CollectionUtils.isEmpty(conditionMap)) {
 					Map<String, String> andConditionMap = new HashMap<>();
-					andConditionMap.put("islastr", "1");
-					andConditionMap.put("islastv", "1");
+					andConditionMap.put("lastr", "1");
+					andConditionMap.put("lastv", "1");
 					conditionMap.putAll(andConditionMap);
 					PageHelper pageHelper = new PageHelper(-1);
 					pageHelper.addDefaultDesc("id");

--
Gitblit v1.9.3