From 1bcc66b7b44825fbc68ab7aa158f28e4fff74569 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期二, 21 十一月 2023 09:49:30 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 196 +++++++++++++++++++++++++++++++++++------------- 1 files changed, 141 insertions(+), 55 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 4696e02..f8d4959 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,6 +3,7 @@ import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.google.protobuf.ServiceException; import com.vci.ubcs.code.applyjtcodeservice.feign.IMdmInterJtClient; import com.vci.ubcs.code.bo.AttributeValue; import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO; @@ -65,6 +66,7 @@ import java.io.File; import java.io.IOException; import java.text.MessageFormat; +import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; @@ -97,18 +99,25 @@ @Value("${batchadd.redis.time:6000000}") public int BATCHADD_REDIS_TIME; + + @Value("${batchadd.import_data_limit:5001}") + private Integer IMPORT_DATA_LIMIT; + /** * 涓婚搴撳垎绫荤殑鏈嶅姟 */ @Resource private ICodeClassifyService classifyService; + @Resource + private MdmEngineService mdmEngineService; /** * 閫氱敤鏌ヨ */ @Resource private CommonsMapper commonsMapper; + /**** * 鐮佸�兼湇鍔� */ @@ -346,10 +355,12 @@ @Override public String createImportExcel(String codeClassifyOid, boolean isHistory) { List<CodeClassifyTemplateVO> templateVOList=new ArrayList<>(); - VciBaseUtil.alertNotNull("瀵煎嚭妯℃澘","瀵煎嚭鐨勯厤缃�",codeClassifyOid,"涓婚搴撳垎绫荤殑涓婚敭"); CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid); + + //鑾峰彇鐮佹瀹藉害 + //String secWidth = getCodeSegmentWidth(codeClassifyVO.getOid()); if(isHistory){ templateVOList= templateService.childTemplates(codeClassifyOid); @@ -397,9 +408,9 @@ LinkedList<WriteExcelData> excelDataList = new LinkedList<>(); Workbook workbook = new HSSFWorkbook(); if(isHistory){ - excelDataList.add(new WriteExcelData(0,0,"鍒嗙被璺緞")); - excelDataList.add(new WriteExcelData(0,1,"鐮佹瀹藉害")); - excelDataList.add(new WriteExcelData(0,2,!CollectionUtils.isEmpty(idAttrVOList)?idAttrVOList.get(0).getName():"浼佷笟缂栫爜")); + excelDataList.add(new WriteExcelData(0,0,"鍒嗙被璺緞","")); + excelDataList.add(new WriteExcelData(0,1,"鐮佹瀹藉害","")); + excelDataList.add(new WriteExcelData(0,2,!CollectionUtils.isEmpty(idAttrVOList)?idAttrVOList.get(0).getName():"浼佷笟缂栫爜",idAttrVOList.get(0).getId())); } for (int i = 0; i < templateAttrVOS.size(); i++) { CodeClassifyTemplateAttrVO attrVO = templateAttrVOS.get(i); @@ -407,7 +418,7 @@ Object text = attrVO.getName(); text = exportKeyAndRequired(workbook,attrVO,text); int colIndex = (isHistory?3:0) + i; - WriteExcelData excelData = new WriteExcelData(0, colIndex, text); + WriteExcelData excelData = new WriteExcelData(0, colIndex, text,attrVO.getId()); if(StringUtils.isNotBlank(attrVO.getCodeDateFormat()) || VciFieldTypeEnum.VTDateTime.name().equalsIgnoreCase(attrVO.getAttributeDataType()) || VciFieldTypeEnum.VTDate.name().equalsIgnoreCase(attrVO.getAttributeDataType()) @@ -461,6 +472,30 @@ eo.addSheetDataList(templateVOList.size()+"妯℃澘淇℃伅銆愯鍕垮垹闄ゆ垨绉诲姩銆�",tempEDList); ExcelUtil.writeDataToFile(excelName,eo); return excelName; + } + + /** + * 鑾峰彇鐮佹瀹藉害 + * @param codeClassifyOid + * @return + */ + private String getCodeSegmentWidth(String codeClassifyOid){ + CodeClassifyVO codeClassifyVO = classifyService.getObjectByOid(codeClassifyOid); + // 瑕佽幏鍙栫爜娈靛搴︼紝鍏堣鑾峰彇瑙勫垯锛屽綋鍓嶆病鏈夊線涓婃壘 + CodeRuleVO codeRuleByClassifyFullInfo = mdmEngineService.getCodeRuleByClassifyFullInfo(classifyService.getClassifyFullInfo(codeClassifyOid)); + List<CodeBasicSecVO> secVOList = codeRuleByClassifyFullInfo.getSecVOList(); + if(secVOList.isEmpty()){ + return ""; + } + + StringBuffer secWidth = new StringBuffer(""); + + for (int j = 0; j < secVOList.size(); j++) { + CodeBasicSecVO secVO = secVOList.get(j); + int width = VciBaseUtil.getInt(secVO.getCodeSecLength()) + ((secVO.getPrefixCode() + secVO.getSuffixCode()).length()); + secWidth.append(width).append("#"); + } + return secWidth.toString().substring(0, secWidth.length() - 1); } /** @@ -523,7 +558,7 @@ //鏍¢獙妯℃澘鏄笉鏄渶鏂扮殑 checkTemplateSync(sheetDataSetList,templateVO,0); //鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹� - Map<String,String> errorMap = new HashMap<>(); + Map<String,String> errorMap = new ConcurrentHashMap<>(); String redisUUid=batchImportCodes(orderDTO,templateVO,dataSet,errorMap,true); CodeImProtRusultVO codeImProtRusultVO = new CodeImProtRusultVO(); List<String> needRowIndexList = new ArrayList<>(); @@ -648,7 +683,7 @@ //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒� batchCheckRequiredAttrOnOrder(templateVO,allCboList,errorMap); //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, allCboList); + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, allCboList,errorMap); Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){ @@ -658,7 +693,7 @@ } if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){ keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{ - errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" ); + errorMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex,"") ); }); } //鍒嗙被娉ㄥ叆 @@ -787,11 +822,15 @@ String uuid=VciBaseUtil.getPk(); boolean isCreateUUid=false; boolean isExport=false; - long start = System.currentTimeMillis(); + //long start = System.currentTimeMillis(); for(int i=0;i<sheetDataSetList.size()-1;i++) { if (CollectionUtils.isEmpty(sheetDataSetList) || CollectionUtils.isEmpty(sheetDataSetList.get(i).getRowData()) || sheetDataSetList.get(i).getRowData().size() < 1) { continue; + } + // 鍗曟瀵煎叆鏁伴噺闄愬埗 + if(sheetDataSetList.get(i).getRowData().size() > IMPORT_DATA_LIMIT){ + throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�"+IMPORT_DATA_LIMIT+"鏉$殑鏁版嵁"); } //鍘嗗彶瀵煎叆鐨勬椂鍊欎笉澶勭悊缂栫爜 //----閫昏緫鍐呭---- @@ -815,7 +854,7 @@ //鎵剧涓�琛岋紝涓轰簡鎵炬爣棰� CodeClassifyTemplateVO templateVO = new CodeClassifyTemplateVO(); /** if (!templateService.checkChildHasSameTemplate(classifyFullInfo.getCurrentClassifyVO().getOid())) { - throw new VciBaseException("褰撳墠鐨勫垎绫讳互鍙婁笅绾у垎绫荤殑妯℃澘涓嶇浉鍚�"); + throw new VciBaseException("褰撳墠鐨勫垎绫讳互鍙婁笅绾у垎绫荤殑妯℃澘涓嶇浉鍚�"); }***/ //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌� //鎵炬墍鏈夌殑鍒嗙被璺緞,闇�瑕佹牎楠岃矾寰勬槸鍚︽纭紝鏄惁閮藉湪褰撳墠鐨勫垎绫荤殑涓嬬骇 @@ -846,7 +885,7 @@ String idFieldName = attrVOS.stream().filter(s -> VciQueryWrapperForDO.ID_FIELD.equalsIgnoreCase(s.getId())).findFirst().orElseGet(() -> new CodeClassifyTemplateAttrVO()).getName(); getFieldIndexMap(titleRowData, attrNameIdMap, fieldIndexMap); //鍏堜笉鐢ㄧ灞炴�ф槸鍚﹂兘瀛樺湪锛屽厛杞崲涓�涓嬫暟鎹� - List<ClientBusinessObject> cboList = new ArrayList<>(); + List<ClientBusinessObject> cboList = new CopyOnWriteArrayList<>(); String fullPath = getFullPath(classifyFullInfo); //鎴戜滑闇�瑕佽幏鍙栧埌鎵�鏈夌殑涓嬬骇鍒嗙被鐨刼id鐨勮矾寰勶紝鍥犱负鍚庨潰闇�瑕� Map<String/**涓婚敭**/, String/**璺緞**/> childOidPathMap = getChildClassifyPathMap(classifyFullInfo, fullPath); @@ -893,7 +932,7 @@ //鍒ゆ柇蹇呰緭椤� batchCheckRequiredAttrOnOrder(templateVO, cboList, errorMap); - //鏈夐檺鏍¢獙缂栫爜鏄惁瀛樺湪 + //浼樺厛鏍¢獙缂栫爜鏄惁瀛樺湪 batchCheckIdExistOnOrder(templateVO, cboList, errorMap); //boolean @@ -903,15 +942,18 @@ batchSwitchEnumAttrOnOrder(attrVOS, cboList, errorMap); batchSwitchReferAttrOnOrder(attrVOS, cboList, errorMap); + //6.澶勭悊鍒嗙被娉ㄥ叆 batchSwitchClassifyAttrOnOrder(attrVOS, cboList, classifyFullInfo,true); //璁剧疆榛樿鍊� batchSwitchAttrDefault(attrVOS, cboList); + //7.澶勭悊缁勫悎瑙勫垯 batchSwitchComponentAttrOnOrder(attrVOS, cboList); + //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList); + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,errorMap); Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); if (!CollectionUtils.isEmpty(selfRepeatRowIndexList)) { @@ -921,7 +963,7 @@ } if (!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)) { keyAttrRepeatRowIndexList.stream().forEach(rowIndex -> { - errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅"); + errorMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex, "")); }); } //4.鏍¢獙瑙勫垯 @@ -932,7 +974,8 @@ if (CollectionUtils.isEmpty(ruleOidMap.values())) { throw new VciBaseException("瀵煎叆鐨勬暟鎹墍閫夋嫨鐨勫垎绫婚兘娌℃湁璁剧疆缂栫爜瑙勫垯"); } - Map<String, CodeRuleVO> ruleVOMap = ruleService.listCodeRuleByIds(ruleOidMap.values(), true).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); + // TODO: 璇ョ敤oid鏌ヨ瑙勫垯鐨勶紝鍒敤id + Map<String, CodeRuleVO> ruleVOMap = ruleService.listCodeRuleByOids(ruleOidMap.values()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); //鏍¢獙缂栫爜瑙勫垯鍜岀爜娈垫槸鍚︽纭� Map<String, List<String>> ruleRowIndexMap = new ConcurrentHashMap<>(); checkSecLengthInHistory(cboList, classifyVOMap, ruleVOMap, ruleOidMap, errorMap, ruleRowIndexMap); @@ -1027,7 +1070,7 @@ //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); List<String> rowIndexList = ruleRowIndexMap.get(ruleOid); List<ClientBusinessObject> thisCbos = finalNeedSaveCboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList()); - List<BaseModel> dataCBOList=new ArrayList<>(); + List<BaseModel> dataCBOList=new CopyOnWriteArrayList<>(); thisCbos.stream().forEach(clientBusinessObject -> { BaseModel baseModel=new BaseModel(); BeanUtil.convert(clientBusinessObject,baseModel); @@ -1044,7 +1087,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()); }); } @@ -1057,7 +1100,7 @@ engineService.batchSaveSelectChar(templateVO, dataCBOIdList); } } - long end = System.currentTimeMillis(); + //long end = System.currentTimeMillis(); //log.info("=============for鎵ц鏃堕棿================="+String.valueOf((end-start)/1000)); String excelFileName=""; if(isExport&&!CollectionUtils.isEmpty(shetNameMap)) { @@ -1138,7 +1181,6 @@ * @param currentTemplateVO * @param templateColumnVOMap */ - private void createTemplate(CodeClassifyTemplateVO currentTemplateVO,Map<String,List<ColumnVO>>templateColumnVOMap){ List<CodeClassifyTemplateAttrVO> templateAttrVOS = currentTemplateVO.getAttributes().stream().filter(s -> @@ -1291,7 +1333,7 @@ //2.鍒ゆ柇蹇呰緭椤广�傘�傞渶瑕佸叏閮ㄧ殑灞炴�э紝濡傛灉鏄繀杈擄紝浣嗘槸琛ㄥ崟閲岄潰涓嶆樉绀虹殑锛屽彧鑳芥槸鍒嗙被娉ㄥ叆鎴栬�呯粍鍚堣鍒� batchCheckRequiredAttrOnOrder(templateVO,cboList,errorMap); //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList); + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,errorMap); Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){ @@ -1301,7 +1343,7 @@ } if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){ keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{ - errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" ); + errorMap.put(rowIndex,"鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex,"")); }); } //鍒嗙被娉ㄥ叆 @@ -1528,7 +1570,6 @@ total += commonsMapper.queryCountBySql(countSql); } }else{ - total = commonsMapper.queryCountBySql(countSql); } List<String> selectFieldList = new ArrayList<>(); @@ -1728,7 +1769,7 @@ ).collect(Collectors.toList()); String fullPath = getFullPath(classifyFullInfo); excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList, codeClassifyTemplateVO,cboList,fullPath,!isImprot); - Map<String,String> errorMap=new HashMap<>(); + Map<String,String> errorMap=new ConcurrentHashMap<>(); Map<String/**璺緞**/, CodeClassifyVO> pathMap=new HashMap<>() ; //鏍¢獙缂栫爜瑙勫垯鍜岀爜娈垫槸鍚︽纭� Map<String, List<String>> ruleRowIndexMap = new ConcurrentHashMap<>(); @@ -1749,7 +1790,8 @@ Map<String/**鍒嗙被涓婚敭**/, String/**瑙勫垯涓婚敭**/> ruleOidMap = new ConcurrentHashMap<String, String>(); List<String> unExistRuleClassifyOidList = new CopyOnWriteArrayList<>(); checkRuleOidInHistory(classifyVOMap, ruleOidMap, unExistRuleClassifyOidList); - ruleVOMap = ruleService.listCodeRuleByIds(ruleOidMap.values(), true).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); + // TODO 鏀圭敤oid鏌ヨ鐨勶紝杩欏効涓嶈鐢╥d + ruleVOMap = ruleService.listCodeRuleByOids(ruleOidMap.values()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); checkSecLengthInHistory(cboList, classifyVOMap, ruleVOMap, ruleOidMap, errorMap, ruleRowIndexMap); } @@ -1772,12 +1814,12 @@ //鏈�鍚庡紕缁勫悎瑙勫垯 batchSwitchComponentAttrOnOrder(attrVOS,cboList); //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, codeClassifyTemplateVO, cboList); + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, codeClassifyTemplateVO, cboList,errorMap); Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){ keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{ - errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" ); + errorMap.put(rowIndex,"鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex,"")); }); } //4.鏍¢獙瑙勫垯 @@ -1906,7 +1948,7 @@ */ @Override public void batchSyncApplyCode(CodeOrderDTO orderDTO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs,boolean isCodeOrGroupCode) { - Map<String,String> errorMap=new HashMap<>(); + Map<String,String> errorMap=new ConcurrentHashMap<>(); VciBaseUtil.alertNotNull(orderDTO,"缂栫爜鐢宠鐩稿叧鐨勬暟鎹�",orderDTO.getCodeClassifyOid(),"涓婚搴撳垎绫讳富閿�"); CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇 @@ -1956,7 +1998,6 @@ //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌� //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓� - Map<String,String> errorKeyMap=new HashMap<>(); //1.鍒嗙被娉ㄥ叆 batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,false); @@ -1979,7 +2020,7 @@ //鏈�鍚庡紕缁勫悎瑙勫垯 batchSwitchComponentAttrOnOrder(attrVOS,cboList); //3.鍒ゆ柇鍏抽敭灞炴�� - CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList); + CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList,errorMap); Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); Map<String,List<String>>keyAttrOkOidTORepeatOidMap= keyResultVO.getKeyAttrOkOidTORepeatOidMap(); @@ -2011,7 +2052,7 @@ resultDataObjectDetailDO.setMsg(errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" ); resultDataObjectDetailDOs.add(resultDataObjectDetailDO); */ - errorKeyMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" ); + errorKeyMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex,"")); }); } //鏍¢獙灞炴�ф槸鍚︽纭敊璇俊鎭� @@ -2259,6 +2300,7 @@ } return resultDataObjectDetailDOs; } + /*** * 闆嗘垚鎵归噺鍚屾鏇存柊鎺ュ彛 * @param codeClassifyVO; @@ -2364,6 +2406,7 @@ String dataStatus=cbo.getLcStatus(); RowDatas rowData=codeDataMap.get(code); String status=rowData.getStatus(); + String lastModifier= rowData.getEditor(); String operation=rowData.getOperation(); if (cbo.getTs().compareTo(orderDTO.getTs())==0?false:true) { // throw new VciBaseException("鏁版嵁涓嶆槸鏈�鏂扮殑锛屽彲鑳戒粬浜哄凡缁忎慨鏀癸紝璇峰埛鏂板悗鍐嶈瘯"); @@ -2394,12 +2437,20 @@ cbo.setName(orderDTO.getName()); try { cbo.setAttributeValueWithNoCheck("description", orderDTO.getDescription()); - cbo.setAttributeValue("name", orderDTO.getName()); + // cbo.setAttributeValue("name", orderDTO.getName()); // if(finalIsProcess){//鍦ㄦ祦绋嬩腑涓嶅厑璁告洿鏀� // errorMap.put(code,errorMap.getOrDefault(code, errorMap.getOrDefault(code,"")+";鏁版嵁"+code+"鍦ㄦ祦绋嬩腑锛屼笉鍏佽鏇存敼!")); // }else{ + Date date=new Date(); cbo.setLcStatus(status); cbo.setAttributeValue("lcstatus",status); + cbo.setLastModifyTime(date); + cbo.setLastModifier(lastModifier); + cbo.setLastModifyTime(date); + cbo.setAttributeValue("lastmodifier",lastModifier); + cbo.setAttributeValue("lastmodifytime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(date)); + cbo.setTs(date); + cbo.setAttributeValue("ts",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(date)); // } } catch (VciBaseException e) { e.printStackTrace(); @@ -2545,6 +2596,7 @@ }); } } + /** * 杞崲缁勫悎瑙勫垯鐨勫�� * @@ -2591,6 +2643,7 @@ }); } } + /** * 鏍¢獙鍏抽敭灞炴�� * @@ -2619,7 +2672,6 @@ }); //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙� - if (!CollectionUtils.isEmpty(conditionMap)) { String tableName=""; R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId()); @@ -2631,11 +2683,12 @@ } } if (StringUtils.isBlank(tableName)) { - String errormsg="鏍规嵁涓氬姟绫诲瀷涓烘煡璇㈠埌鐩稿叧涓氬姟琛�"; + String errormsg="鏍规嵁涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿叧涓氬姟琛�"; errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+errormsg); return; } - final String[] sql = {"select count(*) from " + tableName + " t where 1 = 1 "}; + //final String[] sql = {"select count(*) from " + tableName + " t where 1 = 1 "}; + final String[] sql = {"select id from " + tableName + " t where 1 = 1 "}; conditionMap.forEach((key, value) -> { if(StringUtils.isBlank(value)||value.equals(QueryOptionConstant.ISNULL)){ sql[0] += " and " + key + " is null "; @@ -2650,17 +2703,24 @@ } else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) { sql[0] += " and t.oid != '" + orderDTO.getCopyFromVersion() + "'"; } + // 涓嶉渶瑕佸弬涓庢牎楠岀殑瑙勫垯oid + String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid()); + if(Func.isNotBlank(isParticipateCheckOids)){ + sql[0] += " and codeclsfid not in("+isParticipateCheckOids+")"; + } sql[0] += " and t.lastR = '1' and t.lastV = '1' "; - if (commonsMapper.queryCountBySql(sql[0]) > 0) { + List<String> repeatData = commonsMapper.selectList(sql[0]); + if (!repeatData.isEmpty()) { String ruleInfoMsg = keyRuleVO == null ? "" : "鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}"; String[] objs = new String[]{trim ? "鏄�" : "鍚�", ignoreCase ? "鏄�" : "鍚�", ignoreWidth ? "鏄�" : "鍚�", trimAll ? "鏄�" : "鍚�"}; - String defaultValue=";鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜嗐�傝淇!銆�"; + String defaultValue=";鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜�,鏁版嵁鐨勭紪鍙峰涓嬶細"+repeatData.stream().collect(Collectors.joining(","))+"銆傝淇!銆�"; String errormsg=defaultValue+ MessageFormat.format(ruleInfoMsg, objs); errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+errormsg); // throw new VciBaseException("鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜嗐�傝淇!銆�" + ruleInfoMsg, objs); } } } + /** * 鏍¢獙鏋氫妇鐨勫唴瀹� * @@ -2684,6 +2744,7 @@ }); } } + /** * 杞崲鏃堕棿鐨勬牸寮� * @@ -2745,10 +2806,10 @@ // if (lifeCycleVO != null) { // cbo.setLcStatus(lifeCycleVO.getStartStatus()); // } else { - cbo.setLcStatus(CodeDefaultLC.EDITING.getValue()); + cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); // } } else { - cbo.setLcStatus(CodeDefaultLC.EDITING.getValue()); + cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); } } @@ -2776,6 +2837,7 @@ orderDTO.getData().put(attrId, value); } } + /** * 浠庣紪鐮佺敵璇蜂俊鎭璞′笂鑾峰彇鏌愪釜灞炴�х殑鍊� * @@ -2795,6 +2857,7 @@ } return value; } + /** * 澶勭悊鍒嗙被娉ㄥ叆鐨勪俊鎭� * @@ -2840,6 +2903,7 @@ }); } } + /*** * * @param codeClassifyVO @@ -2936,7 +3000,7 @@ for (int j = 0; j < ruleVO.getSecVOList().size(); j++) { CodeBasicSecVO secVO = ruleVO.getSecVOList().get(j); String length= secValues[j]; - if(StringUtils.isNotBlank(secVO.getCodeSecLength())&&VciBaseUtil.getInt(length)>VciBaseUtil.getInt(secVO.getCodeSecLength())){ + if(StringUtils.isNotBlank(secVO.getCodeSecLength())&&VciBaseUtil.getInt(length)>(VciBaseUtil.getInt(secVO.getCodeSecLength())+((secVO.getPrefixCode()+secVO.getSuffixCode()).length()))){ errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鐮佹瀹藉害涓庣郴缁熶腑鐨勭紪鐮佽鍒欎笉鍚�" ); fined = true; break; @@ -2968,6 +3032,7 @@ } }); } + /** * excel杞崲涓篶bo鐨勫璞� * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭� @@ -3080,6 +3145,7 @@ }); } + /** * excel杞崲涓篶bo鐨勫璞� * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭� @@ -3114,7 +3180,7 @@ Integer userSecret = VciBaseUtil.getCurrentUserSecret(); cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret)); } - cbo.setLcStatus(CodeDefaultLC.EDITING.getValue()); + cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); }else{ //姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰� //cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath)); @@ -3129,6 +3195,7 @@ }); } + /** * excel杞崲涓篶bo鐨勫璞� * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭� @@ -3146,7 +3213,7 @@ ClientBusinessObject cbo=new ClientBusinessObject(); DefaultAttrAssimtUtil.addDefaultAttrAssimt(cbo, classifyFullInfo.getTopClassifyVO().getBtmTypeId()); rowData.getData().forEach((index,value)->{ - String field = fieldIndexMap.get(index); + String field = fieldIndexMap.get(index); if (StringUtils.isBlank(field)) { throw new VciBaseException("绗�" + (index + 1) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�"); } @@ -3171,7 +3238,7 @@ Integer userSecret = VciBaseUtil.getCurrentUserSecret(); cbo.setAttributeValue(SECRET_FIELD,String.valueOf((userSecret==null || userSecret ==0)? UserSecretEnum.NONE.getValue():userSecret)); } - cbo.setLcStatus(CodeDefaultLC.EDITING.getValue()); + cbo.setLcStatus(CodeDefaultLC.RELEASED.getValue()); }else{ //姝ゆ椂杩樻病鏈夎浆鎹㈣矾寰� //cbo.setAttributeValue(CODE_FULL_PATH_FILED, childOidPathMap.getOrDefault(rowData.getData().getOrDefault(CODE_CLASSIFY_OID_FIELD,""),fullPath)); @@ -3217,6 +3284,7 @@ } } } + /** * 鎵归噺杞崲鏃堕棿閮戒负鎸囧畾鐨勬牸寮� * @param attrVOS 妯℃澘灞炴�� @@ -3442,6 +3510,7 @@ } } + /** * 鎵归噺妫�鏌ヤ紒涓氱紪鐮佹槸鍚﹀瓨鍦� * @param templateVO 妯℃澘鐨勬樉绀哄璞� @@ -3503,6 +3572,7 @@ }); } } + /*** * 鏍¢獙鍒嗙被瀵瑰簲鐨勬ā鏉夸俊鎭� * @param titleRowData @@ -3586,6 +3656,7 @@ } return codeClassifyTemplateVOList ; } + /** * 浠庡睘鎬т笂鑾峰彇鍙傜収鐨勫唴瀹� * @param attrVO 灞炴�х殑淇℃伅 @@ -3647,6 +3718,7 @@ } return showText; } + /** * 澶勭悊鏋氫妇鐨勬樉绀哄璞� * @param attrVOS 妯℃澘灞炴�� @@ -3708,6 +3780,7 @@ } } } + /** * 澶勭悊鍒嗙被娉ㄥ叆 * @param attrVOS 妯℃澘灞炴�� @@ -3737,7 +3810,8 @@ } } CodeClassifyFullInfoBO newClassifyFullInfo= classifyFullInfoMap.get(cbo.getAttributeValue(CODE_CLASSIFY_OID_FIELD)); - List<CodeClassifyVO> classifyVOS = newClassifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList()); + List<CodeClassifyVO> classifyVOS = newClassifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> -o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList()); + int level = VciBaseUtil.getInt(attrVO.getClassifyInvokeLevel()); if (classifyVOS.size()>=level && level > 0 ) { classifyVO = classifyVOS.get(level-1); @@ -3769,7 +3843,7 @@ * @param cboList 鎵归噺鐨勬暟鎹� */ private CodeImportResultVO batchCheckKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO, - List<ClientBusinessObject> cboList) { + List<ClientBusinessObject> cboList,Map<String,String> errorMap) { //涓嶮dmEngineServiceImpl閲岀殑checkKeyAttrOnOrder鐩镐技 //鍏堣幏鍙栧叧閿睘鎬х殑瑙勫垯锛屼篃鍒╃敤缁ф壙鐨勬柟寮� CodeKeyAttrRepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo); @@ -3796,7 +3870,9 @@ //2.鍒ゆ柇鍏抽敭灞炴�у湪绯荤粺閲屾槸鍚﹂噸澶� //鍥犱负鏁版嵁閲忓緢澶э紝鎵�浠ュ緱鎯冲姙娉曞苟琛� //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); - Map<String,List<BaseModel>> indexTODataMap=new HashMap<>(); + Map<String,List<BaseModel>> indexTODataMap=new ConcurrentHashMap<>(); + // 鏌ヨ涓嶉渶瑕佸弬涓庡叧閿睘鎬ф牎楠岀殑闄よ嚜宸变互澶栫殑鎵�鏈夊垎绫籵id + final String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid()); List<ClientBusinessObject> repeatDataMap = cboList.parallelStream().filter(cbo -> { //姣忚閮藉緱鏌ヨ.濡傛灉鍏朵腑鍑虹幇浜嗛敊璇紝鎴戜滑灏辩洿鎺ユ姏鍑哄紓甯革紝鍏朵綑鐨勬樉绀� //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); @@ -3810,22 +3886,29 @@ engineService.wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap); }); if (!CollectionUtils.isEmpty(ketAttrMap)) { + // 娣诲姞涓嶅弬涓庡叧閿睘鎬ф牎楠岀殑鍒嗙被oid鍒ゆ柇 + if(Func.isNotBlank(isParticipateCheckOids)){ + conditionMap.put("t.codeclsfid",QueryOptionConstant.NOTIN+isParticipateCheckOids); + } CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), templateVO, conditionMap, null); - boolean isKeyCheck= commonsMapper.queryCountBySql(sqlBO.getSqlCount()) > 0; - if(isKeyCheck){ - List<Map<String,String>> newDataList= commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlUnPage()); - //List<ClientBusinessObject> newCboList= ChangeMapTOClientBusinessObjects(newDataList); - List<BaseModel> newCboList=new ArrayList<>(); + List<String> repeatData = commonsMapper.selectList(sqlBO.getSqlId()); + if(!repeatData.isEmpty()){ + final List<Map<String,String>> newDataList = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlUnPage()); + //List<ClientBusinessObject> newCboList=ChangeMapTOClientBusinessObjects(newDataList); + List<BaseModel> newCboList = new ArrayList<>(); newDataList.stream().forEach(stringStringMap -> { BaseModel baseModel=new BaseModel(); DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel); newCboList.add(baseModel); }); + // 娣诲姞閿欒鍊� + String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); + errorMap.put(rowIndex, "閲嶅鐨勮褰曠紪鍙蜂负:"+repeatData.stream().collect(Collectors.joining(","))); if(!CollectionUtils.isEmpty(newCboList)) { indexTODataMap.put(cbo.getAttributeValue(IMPORT_ROW_INDEX), newCboList); } } - return isKeyCheck; + return !repeatData.isEmpty(); }else{ return false; } @@ -3853,7 +3936,7 @@ if(StringUtils.isBlank(classifyPath)){ classifyPath = "#current#"; } - if ( !pathMap.containsKey(classifyPath)) { + if (!pathMap.containsKey(classifyPath)) { String row_index = cbo.getAttributeValue(IMPORT_ROW_INDEX); errorMap.put(row_index,errorMap.getOrDefault(row_index,"") + ";鍒嗙被璺緞涓嶅瓨鍦�"); } else { @@ -3939,7 +4022,6 @@ return childOidPathMap; } - /** * 鑾峰彇瀵煎叆鐨勫唴瀹逛腑鍏抽敭灞炴�ч噸澶嶇殑琛屽彿 * @param ketAttrMap 鍏抽敭灞炴�х殑鏄犲皠 @@ -3993,7 +4075,7 @@ List<String>newOidList=new ArrayList<>(); newOidList.add(oid); if(keyAttrOkOidTORepeatOidMap.containsKey(okOid)){ - List<String> oldOidList= keyAttrOkOidTORepeatOidMap.get(okOid); + List<String> oldOidList = keyAttrOkOidTORepeatOidMap.get(okOid); newOidList.addAll(oldOidList); } @@ -4008,6 +4090,7 @@ resultVO.setKeyAttrRepeatRowIndexList(selfRepeatRowIndexList); resultVO.setKeyAttrOkOidTORepeatOidMap(keyAttrOkOidTORepeatOidMap); } + /** * excel鐨勬爣棰樹笂鑾峰彇瀛楁鎵�鍦ㄧ殑浣嶇疆 * @param titleRowData 鏍囬鐨勫唴瀹� @@ -4122,6 +4205,7 @@ codeClassifyDatas.addAll(newCodeImprotDataVO); log.info("222"); } + /*** * @param titleRowData * @param newTemplateVO @@ -4167,7 +4251,8 @@ codeImprotDataVO.setColNames(colNames); codeImprotDataVO.getDatas().add(filedValueMap); } - /*** + + /** * 姝g‘閿欒鏁版嵁redis缂撳瓨 * @param uuid * @param templateVO @@ -4481,4 +4566,5 @@ mdmInterJtClient.receiveEditApply(oids,btmName); } } + } -- Gitblit v1.9.3