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