From 1542490e1a040bb02b68fba8f0310750939d1844 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期四, 16 十一月 2023 17:35:42 +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 | 51 ++++++++++++++++++++++++++++++++++----------------- 1 files changed, 34 insertions(+), 17 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 b274e0b..4935984 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; @@ -96,8 +97,12 @@ @Value("${batchadd.exportattr.type:鍩烘湰淇℃伅}") public String BATCHADD_EXCEPORT_ATTR_TYPE; - @Value("${batchadd.redis.time:6000000}") + public int BATCHADD_REDIS_TIME; + + @Value("${batchadd.import_data_limit:5001}") + private Integer IMPORT_DATA_LIMIT; + /** * 涓婚搴撳垎绫荤殑鏈嶅姟 */ @@ -398,9 +403,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); @@ -408,7 +413,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()) @@ -794,6 +799,10 @@ || sheetDataSetList.get(i).getRowData().size() < 1) { continue; } + // 鍗曟瀵煎叆鏁伴噺闄愬埗 + if(sheetDataSetList.get(i).getRowData().size() > IMPORT_DATA_LIMIT){ + throw new ServiceException("涓轰簡淇濊瘉绯荤粺鐨勭ǔ瀹氭�э紝璇蜂竴娆′笉瑕佸鍏ヨ秴杩�"+IMPORT_DATA_LIMIT+"鏉$殑鏁版嵁"); + } //鍘嗗彶瀵煎叆鐨勬椂鍊欎笉澶勭悊缂栫爜 //----閫昏緫鍐呭---- //1. 鍒嗙被鐨勮矾寰勫彲浠ュ湪椤甸潰涓婇�夋嫨鏄垎绫荤紪鍙疯繕鏄垎绫荤殑鍚嶇О @@ -847,7 +856,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); @@ -933,7 +942,7 @@ if (CollectionUtils.isEmpty(ruleOidMap.values())) { throw new VciBaseException("瀵煎叆鐨勬暟鎹墍閫夋嫨鐨勫垎绫婚兘娌℃湁璁剧疆缂栫爜瑙勫垯"); } - // TODO: 鏀圭敤oid鏌ヨ瑙勫垯鐨勶紝鍒敤id + // 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<>(); @@ -1029,7 +1038,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); @@ -1046,7 +1055,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()); }); } @@ -1140,7 +1149,6 @@ * @param currentTemplateVO * @param templateColumnVOMap */ - private void createTemplate(CodeClassifyTemplateVO currentTemplateVO,Map<String,List<ColumnVO>>templateColumnVOMap){ List<CodeClassifyTemplateAttrVO> templateAttrVOS = currentTemplateVO.getAttributes().stream().filter(s -> @@ -1530,7 +1538,6 @@ total += commonsMapper.queryCountBySql(countSql); } }else{ - total = commonsMapper.queryCountBySql(countSql); } List<String> selectFieldList = new ArrayList<>(); @@ -1958,7 +1965,6 @@ //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌� //濡傛灉鍑洪敊浜嗭紝鎴戜滑渚濈劧鎵ц鏈夋晥鐨勬暟鎹紝鏃犳晥鐨勬暟鎹啓鍥炲埌excel涓� - Map<String,String> errorKeyMap=new HashMap<>(); //1.鍒嗙被娉ㄥ叆 @@ -2948,7 +2954,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; @@ -3141,6 +3147,7 @@ }); } + /** * excel杞崲涓篶bo鐨勫璞� * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭� @@ -3158,7 +3165,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) + "鍒楃殑鏍囬鍦ㄧ郴缁熶腑涓嶅瓨鍦�"); } @@ -3515,6 +3522,7 @@ }); } } + /*** * 鏍¢獙鍒嗙被瀵瑰簲鐨勬ā鏉夸俊鎭� * @param titleRowData @@ -3598,6 +3606,7 @@ } return codeClassifyTemplateVOList ; } + /** * 浠庡睘鎬т笂鑾峰彇鍙傜収鐨勫唴瀹� * @param attrVO 灞炴�х殑淇℃伅 @@ -3720,6 +3729,7 @@ } } } + /** * 澶勭悊鍒嗙被娉ㄥ叆 * @param attrVOS 妯℃澘灞炴�� @@ -3809,7 +3819,9 @@ //2.鍒ゆ柇鍏抽敭灞炴�у湪绯荤粺閲屾槸鍚﹂噸澶� //鍥犱负鏁版嵁閲忓緢澶э紝鎵�浠ュ緱鎯冲姙娉曞苟琛� //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); - Map<String,List<BaseModel>> indexTODataMap=new HashMap<>(); + Map<String,List<BaseModel>> indexTODataMap=new ConcurrentHashMap<>(); + // 鏌ヨ涓嶉渶瑕佸弬涓庡叧閿睘鎬ф牎楠岀殑闄よ嚜宸变互澶栫殑鎵�鏈夊垎绫籵id + String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid()); List<ClientBusinessObject> repeatDataMap = cboList.parallelStream().filter(cbo -> { //姣忚閮藉緱鏌ヨ.濡傛灉鍏朵腑鍑虹幇浜嗛敊璇紝鎴戜滑灏辩洿鎺ユ姏鍑哄紓甯革紝鍏朵綑鐨勬樉绀� //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); @@ -3823,6 +3835,10 @@ 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){ @@ -3866,7 +3882,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 { @@ -4006,7 +4022,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); } @@ -4046,6 +4062,7 @@ } } } + private List<ClientBusinessObject> ChangeMapTOClientBusinessObjects(List<Map<String,String>> oldDataMap){ List<ClientBusinessObject> clientBusinessObjectList=new ArrayList<>(); oldDataMap.stream().forEach(dataMap->{ -- Gitblit v1.9.3