From 1157e8e97e24ec7938deea2e3345a502644fc256 Mon Sep 17 00:00:00 2001 From: wang1 <844966816@qq.com> Date: 星期三, 05 七月 2023 16:44:23 +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 | 139 +++++++++++++++++++++++++++++++--------------- 1 files changed, 94 insertions(+), 45 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 4d865ed..eae24b4 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 @@ -38,10 +38,7 @@ import com.vci.ubcs.starter.web.enumpck.BooleanEnum; import com.vci.ubcs.starter.web.enumpck.UserSecretEnum; import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum; -import com.vci.ubcs.starter.web.pagemodel.DataGrid; -import com.vci.ubcs.starter.web.pagemodel.KeyValue; -import com.vci.ubcs.starter.web.pagemodel.PageHelper; -import com.vci.ubcs.starter.web.pagemodel.UIFormReferVO; +import com.vci.ubcs.starter.web.pagemodel.*; import com.vci.ubcs.starter.web.toolmodel.DateConverter; import com.vci.ubcs.starter.web.util.*; import lombok.AllArgsConstructor; @@ -54,6 +51,7 @@ import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.ss.usermodel.Workbook; +import org.springblade.core.cache.utils.CacheUtil; import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.tool.api.R; import org.springframework.beans.BeanUtils; @@ -1016,7 +1014,7 @@ 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); }); @@ -1030,9 +1028,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); } } @@ -1061,7 +1064,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 @@ -1338,7 +1353,7 @@ 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()); }); @@ -1362,8 +1377,7 @@ public List<CodeImportTemplateVO> gridclassifys(String redisOid) { List<CodeImportTemplateVO> codeImportTemplateVOs=new ArrayList<>(); VciBaseUtil.alertNotNull(redisOid,"鍒嗙被",redisOid,"鍒嗙被缂撳瓨涓婚敭"); - - List<CodeImportTemplateVO> redisServiceCacheObjects=bladeRedis.lRange(redisOid,0,-1); + List<CodeImportTemplateVO> redisServiceCacheObjects=bladeRedis.get(redisOid); if(redisServiceCacheObjects!=null){ codeImportTemplateVOs= redisServiceCacheObjects; } @@ -1379,7 +1393,7 @@ @Override public DataGrid<Map<String, String>> gridDatas(String codeClssifyOid, String redisOid) { VciBaseUtil.alertNotNull(redisOid,"瀵煎叆鐩镐技鏁版嵁",redisOid,"鏁版嵁缂撳瓨涓婚敭"); - List<CodeImprotDataVO> codeImprotDataVOs = bladeRedis.lRange(redisOid+"-"+codeClssifyOid,0,-1); + List<CodeImprotDataVO> codeImprotDataVOs = bladeRedis.get(redisOid+"-"+codeClssifyOid); // redisService.getCacheList(redisOid+"-"+codeClssifyOid); CodeImprotDataVO codeImprotDataVO=new CodeImprotDataVO(); if(!CollectionUtils.isEmpty(codeImprotDataVOs)){ @@ -1413,7 +1427,7 @@ @Override public DataGrid<Map<String,String>> gridRowResemble(String oid,String redisOid){ VciBaseUtil.alertNotNull(redisOid,"瀵煎叆鐩镐技鏁版嵁",redisOid,"鏁版嵁缂撳瓨涓婚敭"); - List<DataResembleVO> codeImprotDataVOs = bladeRedis.lRange(redisOid,0,-1);; + List<DataResembleVO> codeImprotDataVOs = bladeRedis.get(redisOid);; DataGrid<Map<String, String>> dataGrid = new DataGrid<>(); List<Map<String, String>> dataList = new ArrayList<>(); @@ -1434,7 +1448,8 @@ @Override public R batchImportData(List<CodeImprotSaveDatVO> codeImprotSaveDatVOList, String classifyAttr, boolean isImprot) { - List<BaseModel> dataCBOList=new ArrayList<>(); + + boolean success=true; codeImprotSaveDatVOList.stream().forEach(codeImprotSaveDatVO -> { List<SheetRowData> rowDataList = new ArrayList<>(); List<ClientBusinessObject>cboList=new ArrayList<>(); @@ -1473,19 +1488,31 @@ String fullPath = getFullPath(classifyFullInfo); excelToCbo(classifyFullInfo,fieldIndexMap,rowDataList, codeClassifyTemplateVO,cboList,fullPath,!isImprot); Map<String,String> errorMap=new HashMap<>(); + Map<String/**璺緞**/, CodeClassifyVO> pathMap=new HashMap<>() ; + //鏍¢獙缂栫爜瑙勫垯鍜岀爜娈垫槸鍚︽纭� + Map<String, List<String>> ruleRowIndexMap = new ConcurrentHashMap<>(); + Map<String, CodeRuleVO> ruleVOMap =new ConcurrentHashMap<>(); if(isImprot) { Map<String/**涓婚敭**/, String/**璺緞**/> childOidPathMap = getChildClassifyPathMap(classifyFullInfo, fullPath); //閮借浆鎹㈠畬浜嗐�傞渶瑕佹壒閲忔鏌� //鎵炬墍鏈夌殑鍒嗙被璺緞,闇�瑕佹牎楠岃矾寰勬槸鍚︽纭紝鏄惁閮藉湪褰撳墠鐨勫垎绫荤殑涓嬬骇 List<CodeClassifyVO> childClassifyVOs = classifyService.listChildrenClassify(orderDTO.getCodeClassifyOid(), true, classifyAttr, true); - Map<String/**璺緞**/, CodeClassifyVO> pathMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getPath().startsWith("#") ? s.getPath().substring(1) : s.getPath(), t -> t)); + pathMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getPath().startsWith("#") ? s.getPath().substring(1) : s.getPath(), t -> t)); Map<String/**涓婚敭**/, CodeClassifyVO> classifyVOMap = Optional.ofNullable(childClassifyVOs).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); classifyVOMap.put(classifyFullInfo.getCurrentClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO()); pathMap.put("#current#", classifyFullInfo.getCurrentClassifyVO()); //鎴戜滑闇�瑕佸垽鏂繖浜涘垎绫荤殑妯℃澘鏄笉鏄竴鏍风殑锛屽彧闇�瑕佹牎楠岋紝涓嶇敤鑾峰彇 //妫�鏌ュ垎绫荤殑璺緞 checkClassifyPathInHistory(cboList, errorMap, pathMap, childOidPathMap); + //妫�鏌ヨ鍒� + 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)); + + checkSecLengthInHistory(cboList, classifyVOMap, ruleVOMap, ruleOidMap, errorMap, ruleRowIndexMap); } + //鍒嗙被娉ㄥ叆 batchSwitchClassifyAttrOnOrder(attrVOS,cboList,classifyFullInfo,isImprot); //boolean @@ -1515,36 +1542,58 @@ //4.鏍¢獙瑙勫垯 batchCheckVerifyOnOrder(attrVOS, cboList,errorMap); - - //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); - List<ClientBusinessObject>needSaveCboList = cboList.stream().filter(cbo -> { - String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); - return !errorMap.containsKey(rowIndex); - }).collect(Collectors.toList()); - - log.info("鍒嗙被锛�"+classifyFullInfo.getCurrentClassifyVO().getName()+"鏁版嵁:"+needSaveCboList.size()); - if (!CollectionUtils.isEmpty(needSaveCboList)) { -// List<BaseModel> dataCBOList=new ArrayList<>(); - needSaveCboList.stream().forEach(clientBusinessObject -> { - BaseModel baseModel=new BaseModel(); - BeanUtil.convert(clientBusinessObject,baseModel); - baseModel.setData(VciBaseUtil.objectToMapString(clientBusinessObject)); - dataCBOList.add(baseModel); -// allNeedSaveCboList.add(baseModel); - }); - try { - //9.鎴戜滑澶勭悊涓氬姟鏁版嵁 - if (isImprot) { - productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, null, dataCBOList); - }else { - productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList); + if(isImprot){ + List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> { + String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); + return !errorMap.containsKey(rowIndex); + }).collect(Collectors.toList()); + List<ClientBusinessObject> finalNeedSaveCboList = needSaveCboList; + Map<String, CodeRuleVO> finalRuleVOMap = ruleVOMap; + ruleRowIndexMap.keySet().parallelStream().forEach(ruleOid -> { + List <BaseModel>dataCBOList=new CopyOnWriteArrayList<>(); + List<String> rowIndexList = ruleRowIndexMap.get(ruleOid); + List<ClientBusinessObject> thisCbos = needSaveCboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(thisCbos)) { + thisCbos.stream().forEach(clientBusinessObject -> { + BaseModel baseModel = new BaseModel(); + BeanUtil.convert(clientBusinessObject, baseModel); + dataCBOList.add(baseModel); + }); + try { + productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, finalRuleVOMap.get(ruleOid), null, dataCBOList); + } catch (Throwable e) { + //success=false; + log.error("鎵归噺浜х敓缂栫爜鐨勬椂鍊欏嚭閿欎簡", e); + thisCbos.stream().forEach(cbo -> { + String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); + errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";绯荤粺閿欒锛屽瓨鍌ㄦ暟鎹殑鏃跺�欏嚭閿欎簡"); + }); + } } - } catch (Exception e) { - e.printStackTrace(); + engineService.batchSaveSelectChar(codeClassifyTemplateVO, dataCBOList); + }); + }else { + List<BaseModel> dataCBOList=new ArrayList<>(); + List<ClientBusinessObject> needSaveCboList = cboList.stream().filter(cbo -> { + String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); + return !errorMap.containsKey(rowIndex); + }).collect(Collectors.toList()); + log.info("鍒嗙被锛�" + classifyFullInfo.getCurrentClassifyVO().getName() + "鏁版嵁:" + needSaveCboList.size()); + if (!CollectionUtils.isEmpty(needSaveCboList)) { + needSaveCboList.stream().forEach(clientBusinessObject -> { + BaseModel baseModel = new BaseModel(); + BeanUtil.convert(clientBusinessObject, baseModel); + dataCBOList.add(baseModel); + }); + try { + productCodeService.productCodeAndSaveData(classifyFullInfo, codeClassifyTemplateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList); + } catch (Exception e) { + e.printStackTrace(); + } + //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰 + engineService.batchSaveSelectChar(codeClassifyTemplateVO, dataCBOList); } } - //濡傛灉鏄紪鐮佺敓鎴愬け璐ワ紝鍒欑洿鎺ュ氨澶辫触浜嗭紝鍏朵粬鐨勫垽鏂嚭鏉ユ湁閿欒鐨勬垜浠兘缁熶竴杩斿洖鍒癳xcel閲岄潰 - engineService.batchSaveSelectChar(codeClassifyTemplateVO, dataCBOList); }); return R.success(isImprot?"鎵归噺鍘嗗彶瀵煎叆鎴愬姛":"鎵归噺鐢宠鎴愬姛"); } @@ -1802,7 +1851,7 @@ 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()); }); @@ -2004,7 +2053,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){ @@ -2045,7 +2094,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(); @@ -2209,7 +2258,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 ? "鏄�" : "鍚�"}; @@ -3850,8 +3899,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