From 5ca05f604876cacca45e3bdfa9f54a997653da90 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 24 一月 2024 16:25:45 +0800
Subject: [PATCH] bug修改:290相似项查询sql拼接报错修改,291码值回收报错下标越界

---
 Source/UBCS-WEB/src/views/code/code.vue                                                                        |    8 ++-
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java          |   46 +++++++++++++---------
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java      |    7 +--
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java |   43 +++++----------------
 4 files changed, 46 insertions(+), 58 deletions(-)

diff --git a/Source/UBCS-WEB/src/views/code/code.vue b/Source/UBCS-WEB/src/views/code/code.vue
index 8847b03..3043cc7 100644
--- a/Source/UBCS-WEB/src/views/code/code.vue
+++ b/Source/UBCS-WEB/src/views/code/code.vue
@@ -644,7 +644,7 @@
                 v-model="form.prefixCode"
                 :readonly="basicSecOnlyRead"
               ></el-input> -->
-              <el-select v-model="form.prefixCode" :disabled="basicSecOnlyRead">
+              <el-select v-model="form.prefixCode" :disabled="basicSecOnlyRead" clearable>
                 <el-option
                   v-for="(option, index) in preFixOrSuffixChars"
                   :key="index"
@@ -661,7 +661,7 @@
                 v-model="form.suffixCode"
                 :readonly="basicSecOnlyRead">
               </el-input> -->
-              <el-select v-model="form.suffixCode" :disabled="basicSecOnlyRead">
+              <el-select v-model="form.suffixCode" :disabled="basicSecOnlyRead" clearable>
                 <el-option
                   v-for="(option, index) in preFixOrSuffixChars"
                   :key="index"
@@ -852,6 +852,7 @@
                   :disabled="basicSecOnlyRead"
                   filterable
                   placeholder="璇烽�夋嫨"
+                  clearable
                 >
                   <el-option
                     v-for="item in enumParam.codeFillSeparator"
@@ -1157,6 +1158,7 @@
                   :disabled="basicSecOnlyRead"
                   filterable
                   placeholder="璇烽�夋嫨"
+                  clearable
                 >
                   <el-option
                     v-for="item in enumParam.codeFillSeparator"
@@ -2108,7 +2110,7 @@
         if (!this.tipsCodeSecValueMessage(this.codeClassifyForm.id)) {
           return;
         }
-        if(!await this.regexCharacter(this.codeFixdForm.id)){
+        if(!await this.regexCharacter(this.codeClassifyForm.id)){
           return;
         }
         this.codeClassifyForm.oid =
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
index 8c7b56b..019b856 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -423,8 +423,7 @@
 		try {
 			VciBaseUtil.alertNotNull(baseModelDTO, "鏁版嵁淇℃伅", baseModelDTO.getOid(), "涓婚敭", baseModelDTO.getBtmname(), "涓氬姟绫诲瀷", baseModelDTO.getLcStatus(), "鐩爣鐘舵��");
 			List<String> oids = VciBaseUtil.str2List(baseModelDTO.getOid());
-			List<BaseModel> baseModels = new ArrayList<>();
-			baseModels = selectByTypeAndOid(baseModelDTO.getBtmname(), baseModelDTO.getOid());
+			List<BaseModel> baseModels = selectByTypeAndOid(baseModelDTO.getBtmname(), baseModelDTO.getOid());
 			if (baseModels.size() == 0) {
 				throw new VciBaseException("鏈煡璇㈠埌鐩稿叧鏁版嵁銆�");
 			}
@@ -1948,7 +1947,7 @@
 			boolean ignoreCase = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorecaseflag());
 			boolean ignoreWidth = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorewidthflag());
 			boolean trimAll = VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag());
-			boolean trim = VciBaseUtil.getBoolean(resembleRuleVO.getIgnoreallspaceflag());
+			boolean trim = VciBaseUtil.getBoolean(resembleRuleVO.getIgnorecaseflag());
 			String temp = "";
 			if (ignoreCase && ignoreSpace && ignoreWidth) {
 				//蹇界暐澶у皬鍐欙紝涓斿幓绌猴紝蹇界暐鍏ㄥ崐瑙�
@@ -1982,7 +1981,7 @@
 					temp = "replace(" + temp + ",'" + s + "','')";
 				}
 			}
-			queryValue = String.format(temp, (trim ? value.trim() : value));
+			queryValue = String.format(temp, (trim ? "'"+value.trim()+"'" : "'"+value+"'"));
 			temp = temp.replace("to_single_byte('%s')", "to_single_byte(%s)");
 			queryKey = String.format(temp, "t." + attrId);
 			conditionMap.put(queryKey, QueryOptionConstant.OR + queryValue);
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 67fe60b..72feb94 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
@@ -3,7 +3,6 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.nacos.common.utils.StringUtils;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.google.protobuf.ServiceException;
 import com.vci.ubcs.code.applyjtcodeservice.feign.IMdmInterJtClient;
@@ -27,7 +26,6 @@
 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.omd.vo.RevisionRuleVO;
 import com.vci.ubcs.starter.bo.WriteExcelData;
 import com.vci.ubcs.starter.exception.VciBaseException;
 import com.vci.ubcs.starter.poi.bo.ReadExcelOption;
@@ -56,7 +54,6 @@
 import org.apache.poi.ss.usermodel.Font;
 import org.apache.poi.ss.usermodel.RichTextString;
 import org.apache.poi.ss.usermodel.Workbook;
-import org.aspectj.apache.bcel.classfile.Code;
 import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -70,7 +67,6 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
 import java.beans.BeanInfo;
 import java.beans.Introspector;
 import java.beans.PropertyDescriptor;
@@ -89,6 +85,7 @@
 import java.util.concurrent.CopyOnWriteArraySet;
 import java.util.concurrent.ForkJoinPool;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
 import static com.alibaba.druid.util.FnvHash.Constants.LIMIT;
@@ -1350,8 +1347,6 @@
 					engineService.batchSaveSelectChar(templateVO, dataCBOIdList);
 				}
 			}
-			//long end = System.currentTimeMillis();
-			//log.info("=============for鎵ц鏃堕棿================="+String.valueOf((end-start)/1000));
 			String excelFileName="";
 			if(isExport&&!CollectionUtils.isEmpty(shetNameMap)) {
 				excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒淇℃伅.xls";
@@ -1365,14 +1360,17 @@
 					throw new VciBaseException(LangBaseUtil.getErrorMsg(e));
 				}
 				ExcelUtil.writeDataToFile(excelFileName, eo);
+				saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",true, StringUtil.format("閿欒淇℃伅锛歿}",JSON.toJSONString(shetNameMap)));
+			}else{
+				// 鍘嗗彶鏁版嵁瀵煎叆鏃跺嚭鐜颁簡鐩镐技椤硅繑鍥炵粨鏋滄椂涓嶇畻瀵煎叆鎴愬姛
+				if(shetNameMap.isEmpty() || !isCreateUUid){
+					saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",false, StringUtil.format("瀵煎叆鍒板垎绫粄}涓紝瀵煎叆鎴愬姛鎬绘暟涓猴細{}", JSON.toJSONString(classifyFullInfo), Func.isEmpty(importCount) ? 0:importCount.get(0)));
+				}
 			}
 			CodeImProtRusultVO codeImProtRusultVO=new CodeImProtRusultVO();
 			if(StringUtils.isNotBlank(excelFileName)) {
 				codeImProtRusultVO.setFilePath(excelFileName);
 				codeImProtRusultVO.setFileOid("");
-				saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",true, StringUtil.format("閿欒淇℃伅锛歿}",JSON.toJSONString(shetNameMap)));
-			}else{
-				saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",false, StringUtil.format("瀵煎叆鍒板垎绫粄}涓紝瀵煎叆鎴愬姛鎬绘暟涓猴細{}", JSON.toJSONString(classifyFullInfo),importCount.get(0)));
 			}
 			if(isCreateUUid){
 				codeImProtRusultVO.setRedisUuid(uuid);
@@ -2119,10 +2117,18 @@
 		ExcelUtil.writeDataToFile(excelName, excelOption);
 	}
 
+	/**
+	 * 鐩镐技椤规煡璇㈠嚭鏉ヤ箣鍚庡啀鐐瑰嚮纭鏃惰皟鐢ㄧ殑
+	 * @param codeImprotSaveDatVOList
+	 * @param classifyAttr
+	 * @param isImprot
+	 * @return
+	 */
 	@Override
 	public R batchImportData(List<CodeImprotSaveDatVO> codeImprotSaveDatVOList, String classifyAttr, boolean isImprot) {
 		WriteExcelOption eo = new WriteExcelOption();
 		AtomicBoolean success= new AtomicBoolean(true);
+		AtomicReference<CodeClassifyTemplateVO> codeClassifyTemplateVO = new AtomicReference<>();
 		codeImprotSaveDatVOList.stream().forEach(codeImprotSaveDatVO -> {
 			List<SheetRowData> rowDataList = new ArrayList<>();
 			List<ClientBusinessObject>cboList=new ArrayList<>();
@@ -2151,16 +2157,16 @@
 			log.info("鍒嗙被锛�"+classifyFullInfo.getCurrentClassifyVO().getName()+"鏁版嵁:"+codeImprotSaveDatVO.getDataList().size());
 
 			// CodeClassifyTemplateVO codeClassifyTemplateVO=   engineService.getUsedTemplateByClassifyOid(orderDTO.getCodeClassifyOid());
-			CodeClassifyTemplateVO codeClassifyTemplateVO=  templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
+			codeClassifyTemplateVO.set(templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid()));
 			//瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇
 			CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
 			//闄ゅ幓榛樿鐨勫睘鎬�.杩樻湁鍙湁琛ㄥ崟鏄剧ず鐨勫瓧娈垫墠瀵煎叆
-			List<CodeClassifyTemplateAttrVO> attrVOS = codeClassifyTemplateVO.getAttributes().stream().filter(s ->
+			List<CodeClassifyTemplateAttrVO> attrVOS = codeClassifyTemplateVO.get().getAttributes().stream().filter(s ->
 				!DEFAULT_ATTR_LIST.contains(s.getId()) &&
 					((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
 			).collect(Collectors.toList());
 			String fullPath = getFullPath(classifyFullInfo);
-			excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList, codeClassifyTemplateVO,cboList,fullPath,!isImprot);
+			excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList, codeClassifyTemplateVO.get(),cboList,fullPath,!isImprot);
 			Map<String,String> errorMap=new ConcurrentHashMap<>();
 			Map<String/**璺緞**/, CodeClassifyVO> pathMap=new HashMap<>() ;
 			//鏍¢獙缂栫爜瑙勫垯鍜岀爜娈垫槸鍚︽纭�
@@ -2206,7 +2212,7 @@
 			//鏈�鍚庡紕缁勫悎瑙勫垯
 			batchSwitchComponentAttrOnOrder(attrVOS,cboList);
 			//3.鍒ゆ柇鍏抽敭灞炴��
-			CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, codeClassifyTemplateVO, cboList,false,errorMap);
+			CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, codeClassifyTemplateVO.get(), cboList,false,errorMap);
 			Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
 			Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
 			if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){
@@ -2237,7 +2243,7 @@
 							dataCBOList.add(baseModel);
 						});
 						try {
-							productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, finalRuleVOMap.get(ruleOid), null, dataCBOList, user);
+							productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO.get(), finalRuleVOMap.get(ruleOid), null, dataCBOList, user);
 						} catch (Throwable e) {
 							//success=false;
 							log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
@@ -2247,7 +2253,7 @@
 							});
 						}
 					}
-					engineService.batchSaveSelectChar(codeClassifyTemplateVO, dataCBOList);
+					engineService.batchSaveSelectChar(codeClassifyTemplateVO.get(), dataCBOList);
 				});
 			}else {
 				final BladeUser user = AuthUtil.getUser();
@@ -2264,7 +2270,7 @@
 						dataCBOList.add(baseModel);
 					});
 					try {
-						productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList,user);
+						productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO.get(), ruleVO, orderDTO.getSecDTOList(), dataCBOList,user);
 					} catch (Exception e) {
 						log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e);
 						needSaveCboList.stream().forEach(cbo -> {
@@ -2273,7 +2279,7 @@
 						});
 					}
 					//濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰
-					engineService.batchSaveSelectChar(codeClassifyTemplateVO, dataCBOList);
+					engineService.batchSaveSelectChar(codeClassifyTemplateVO.get(), dataCBOList);
 				}
 			}
 			if(errorMap.size()>0) {
@@ -2284,14 +2290,16 @@
 				errorMap.forEach((key,v)->{
 					excelDataList.add(new WriteExcelData(index[0]++, 0, "绗�"+(Integer.parseInt(key)+1)+"琛屾暟鎹細"+v));
 				});
-				eo.addSheetDataList(codeClassifyTemplateVO.getName() + "瀵煎叆妯℃澘", excelDataList);
+				eo.addSheetDataList(codeClassifyTemplateVO.get().getName() + "瀵煎叆妯℃澘", excelDataList);
 			}
 		});
 		if(!success.get()){
 			String excelName = LocalFileUtil.getDefaultTempFolder() + File.separator + (isImprot?"鎵归噺鍘嗗彶閿欒淇℃伅.xls":"鎵归噺鐢宠閿欒淇℃伅.xls");
 			ExcelUtil.writeDataToFile(excelName,eo);
-			return  R.fail(excelName);
+			saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",true, StringUtil.format("閿欒淇℃伅锛歿}",JSON.toJSONString(eo.getWriteDataMap())));
+			return R.fail(excelName);
 		}else {
+			saveLogUtil.operateLog("鍘嗗彶鏁版嵁瀵煎叆",false, StringUtil.format("瀵煎叆鍒板垎绫粄}涓紝瀵煎叆鎴愬姛鎬绘暟涓猴細{}", JSON.toJSONString(codeClassifyTemplateVO), Func.isEmpty(codeImprotSaveDatVOList.get(0).getDataList().size())));
 			return R.success(isImprot ? "鎵归噺鍘嗗彶瀵煎叆鎴愬姛" : "鎵归噺鐢宠鎴愬姛");
 		}
 	}
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 7768fed..30c8413 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
@@ -93,10 +93,6 @@
 	@Autowired
 	private FormulaServiceImpl formulaService;
 
-	// 娉ㄥ叆浜嬪姟绠$悊鍣�
-//	@Autowired
-//	private TransactionTemplate transactionTemplate;
-
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public List<String> productCodeAndSaveData(CodeClassifyFullInfoBO classifyFullInfoBO, CodeClassifyTemplateVO templateVO, CodeRuleVO ruleVO, List<CodeOrderSecDTO> secDTOList, List<BaseModel> dataCBOList,BladeUser user) throws Exception {
@@ -303,10 +299,6 @@
 				if(!CollectionUtils.isEmpty(editCodeDOs)){
 					codeAllCodeService.updateBatchById(editCodeDOs);
 				}
-				// 鑾峰彇浜嬪姟瀹氫箟
-				//DefaultTransactionDefinition def = new DefaultTransactionDefinition();
-				// 寮�濮嬩簨鍔�
-				//TransactionStatus status = transactionTemplate.getTransactionManager().getTransaction(def);
 				if(!CollectionUtils.isEmpty(addCodeDOs)){
 					Map<String, String> statusMap = addCodeDOs.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus()));
 					addCodeDOs.stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmname())).forEach(s -> {
@@ -331,17 +323,24 @@
 					for (CodeAllCode codeAllCode : takeBack) {
 						codeAllCode.setTs(new Date());
 						codeAllCode.setLastModifyTime(new Date());
-						codeAllCode.setLastModifier(AuthUtil.getUserId().toString());
-						Iterator<CodeAllCode> iterator = addCodeDOs.iterator();
+						codeAllCode.setLastModifier(Func.isNotEmpty(user) ? user.getAccount():AuthUtil.getUserAccount());
+						for (int i = 0; i < addCodeDOs.size(); i++) {
+							if(codeAllCode.getId().equals(addCodeDOs.get(i).getId())){
+								codeAllCode.setCreateCodeOid(addCodeDOs.get(i).getCreateCodeOid());
+								codeAllCode.setLcStatus(addCodeDOs.get(i).getLcStatus());
+								addCodeDOs.remove(i);
+							}
+						}
+						/*Iterator<CodeAllCode> iterator = addCodeDOs.iterator();
 						while (iterator.hasNext()){
 							CodeAllCode next = iterator.next();
 							if(codeAllCode.getId().equals(next.getId())){
 								codeAllCode.setCreateCodeOid(next.getCreateCodeOid());
 								codeAllCode.setLcStatus(next.getLcStatus());
 								// TODO: 杩欏効鍏堟殏鏃舵敞閲婃帀锛屾病鐪嬫噦杩欏効涓轰粈涔堣杩欐牱鍋氾紝瀵艰嚧鎶ラ敊
-								//iterator.remove();
+								iterator.remove();
 							}
-						}
+						}*/
 					}
 					if(takeBack.size()>0){
 						codeAllCodeService.updateBatchById(takeBack);
@@ -349,16 +348,7 @@
 
 					codeAllCodeService.saveBatch(addCodeDOs);
 				}
-
-//				try {
 				mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList);
-					// 鎻愪氦浜嬪姟
-					//transactionTemplate.getTransactionManager().commit(status);
-//				}catch (Exception e){
-//					// 鍑虹幇寮傚父鏃跺洖婊氫簨鍔�
-//					transactionTemplate.getTransactionManager().rollback(status);
-//				}
-
 			}
 			return codeList;
 		}else {
@@ -463,19 +453,8 @@
 				codeAllCodeService.updateBatchById(takeBack);
 			}
 			codeAllCodeService.saveBatch(allCodeDOList);
-//			iCodeWupinService.saveBatch(dataCBOList);
 			mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList);
-//			batchCBO.getCreateCbos().stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmName())).forEach(s -> {
-//				s.setLcStatus(statusMap.get(s.getOid()));
-//				try {
-//					s.setAttributeValue("lcstatus",statusMap.get(s.getOid()));
-//				} catch (VCIError e) {
-//					e.printStackTrace();
-//				}
-//			});
 		}
-		// WebUtil.setPersistence(true);
-		// boService.persistenceBatch(batchCBO);
 		return codeList;
 	}
 

--
Gitblit v1.9.3