From 91560799c8088421983a6168c95b84a5d617df05 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期五, 17 十一月 2023 02:00:44 +0800 Subject: [PATCH] 历史数据导入、批量申请、申请编码接口代码逻辑中关键属性校验增加过滤条件 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java | 85 ++++++++++++++++++--------- Source/UBCS-WEB/dist/index.html | 2 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java | 20 ++++-- Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/bo/CodeTemplateAttrSqlBO.java | 15 ++++ Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java | 4 + Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml | 4 + Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java | 22 ++----- 7 files changed, 98 insertions(+), 54 deletions(-) diff --git a/Source/UBCS-WEB/dist/index.html b/Source/UBCS-WEB/dist/index.html index d340caf..e547342 100644 --- a/Source/UBCS-WEB/dist/index.html +++ b/Source/UBCS-WEB/dist/index.html @@ -51,4 +51,4 @@ .avue-home__sub-title { color: #ABABAB; font-size: 12px; - }</style><link href=/css/chunk-74613652.418a3170.css rel=prefetch><link href=/css/page.e84a6fd9.css rel=prefetch><link href=/css/views.d93aedb9.css rel=prefetch><link href=/js/chunk-2d0e4caf.afe0104d.js rel=prefetch><link href=/js/chunk-74613652.bf501607.js rel=prefetch><link href=/js/page.7c6fcba2.js rel=prefetch><link href=/js/views.2093fe98.js rel=prefetch><link href=/css/app.d0623413.css rel=preload as=style><link href=/css/chunk-vendors.e41156d0.css rel=preload as=style><link href=/js/app.e531c9b4.js rel=preload as=script><link href=/js/chunk-vendors.7e1c637d.js rel=preload as=script><link href=/css/chunk-vendors.e41156d0.css rel=stylesheet><link href=/css/app.d0623413.css rel=stylesheet></head><body><noscript><strong>寰堟姳姝夛紝濡傛灉娌℃湁 JavaScript 鏀寔锛孲aber 灏嗕笉鑳芥甯稿伐浣溿�傝鍚敤娴忚鍣ㄧ殑 JavaScript 鐒跺悗缁х画銆�</strong></noscript><div id=app><div class=avue-home><div class=avue-home__main><img class=avue-home__loading src=/svg/loading-spin.svg alt=loading><div class=avue-home__title>姝e湪鍔犺浇璧勬簮</div><div class="avue-home__sub-title d">鍒濇鍔犺浇璧勬簮鍙兘闇�瑕佽緝澶氭椂闂� 璇疯�愬績绛夊緟</div></div></div></div><script src=/util/aes.js charset=utf-8></script><script src=/cdn/vue/2.6.10/vue.min.js charset=utf-8></script><script src=/cdn/vuex/3.1.1/vuex.min.js charset=utf-8></script><script src=/cdn/vue-router/3.0.1/vue-router.min.js charset=utf-8></script><script src=/cdn/axios/1.0.0/axios.min.js charset=utf-8></script><script src=/cdn/element-ui/2.15.6/index.js charset=utf-8></script><script src=/cdn/avue/2.9.12/avue.min.js charset=utf-8></script><script src=/cdn/nutflow/wf-design-base/index.umd.min.js charset=utf-8></script><script src=/js/chunk-vendors.7e1c637d.js></script><script src=/js/app.e531c9b4.js></script></body></html> \ No newline at end of file + }</style><link href=/css/chunk-4662373c.418a3170.css rel=prefetch><link href=/css/page.e84a6fd9.css rel=prefetch><link href=/css/views.d93aedb9.css rel=prefetch><link href=/js/chunk-2d0e4caf.afe0104d.js rel=prefetch><link href=/js/chunk-4662373c.a7c0fbe4.js rel=prefetch><link href=/js/page.7c6fcba2.js rel=prefetch><link href=/js/views.2093fe98.js rel=prefetch><link href=/css/app.32d691ec.css rel=preload as=style><link href=/css/chunk-vendors.e41156d0.css rel=preload as=style><link href=/js/app.393bf56f.js rel=preload as=script><link href=/js/chunk-vendors.7e1c637d.js rel=preload as=script><link href=/css/chunk-vendors.e41156d0.css rel=stylesheet><link href=/css/app.32d691ec.css rel=stylesheet></head><body><noscript><strong>寰堟姳姝夛紝濡傛灉娌℃湁 JavaScript 鏀寔锛孲aber 灏嗕笉鑳芥甯稿伐浣溿�傝鍚敤娴忚鍣ㄧ殑 JavaScript 鐒跺悗缁х画銆�</strong></noscript><div id=app><div class=avue-home><div class=avue-home__main><img class=avue-home__loading src=/svg/loading-spin.svg alt=loading><div class=avue-home__title>姝e湪鍔犺浇璧勬簮</div><div class="avue-home__sub-title d">鍒濇鍔犺浇璧勬簮鍙兘闇�瑕佽緝澶氭椂闂� 璇疯�愬績绛夊緟</div></div></div></div><script src=/util/aes.js charset=utf-8></script><script src=/cdn/vue/2.6.10/vue.min.js charset=utf-8></script><script src=/cdn/vuex/3.1.1/vuex.min.js charset=utf-8></script><script src=/cdn/vue-router/3.0.1/vue-router.min.js charset=utf-8></script><script src=/cdn/axios/1.0.0/axios.min.js charset=utf-8></script><script src=/cdn/element-ui/2.15.6/index.js charset=utf-8></script><script src=/cdn/avue/2.9.12/avue.min.js charset=utf-8></script><script src=/cdn/nutflow/wf-design-base/index.umd.min.js charset=utf-8></script><script src=/js/chunk-vendors.7e1c637d.js></script><script src=/js/app.393bf56f.js></script></body></html> \ No newline at end of file diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/bo/CodeTemplateAttrSqlBO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/bo/CodeTemplateAttrSqlBO.java index 86e167b..1cc595b 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/bo/CodeTemplateAttrSqlBO.java +++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/bo/CodeTemplateAttrSqlBO.java @@ -45,12 +45,25 @@ */ private String sqlCount; + /** + * 鏌ヨ閲嶅鏁版嵁鏃舵煡鍑虹紪鐮� + */ + private String sqlId; + /** * 鏈鏌ヨ鐨勫瓧娈� */ private List<String> selectFieldList; - public String getTableName() { + public String getSqlId() { + return sqlId; + } + + public void setSqlId(String sqlId) { + this.sqlId = sqlId; + } + + public String getTableName() { return tableName; } diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java index 3c18978..2f22a7a 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/mapper/CommonsMapper.java @@ -20,7 +20,9 @@ List<String> selectById(@Param("inSql") String inSql); - int queryCountBySql(@Param("inSql") String inSql); + List<String> selectList(@Param("inSql") String inSql); + + int queryCountBySql(@Param("inSql") String inSql); String queryCountStringBySql(@Param("inSql") String inSql); 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 3d56800..3abf204 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 @@ -701,14 +701,16 @@ //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙� if (!CollectionUtils.isEmpty(conditionMap)) { - conditionMap.put("CODETEMPLATEOID","'" + orderDTO.getTemplateOid() + "'"); + // TODO: 鍚屼竴涓簱鍒ら噸涓嶉渶瑕佸尯鍒嗗垎绫籵id + // conditionMap.put("CODETEMPLATEOID","'" + orderDTO.getTemplateOid() + "'"); // final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "}; R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(classifyFullInfo.getTopClassifyVO().getBtmTypeId())); // String referTable = VciBaseUtil.getTableName(referVO.getReferType()); if (!listR.isSuccess() || listR.getData().size() == 0) { throw new VciBaseException("浼犲叆涓氬姟绫诲瀷鏈煡璇㈠埌鐩稿簲琛ㄥ崟锛岃妫�鏌ワ紒"); } - final String[] sql = {"select count(*) from " + listR.getData().get(0).getTableName() + " t where 1 = 1 "}; + //final String[] sql = {"select count(*) from " + listR.getData().get(0).getTableName() + " t where 1 = 1 "}; + final String[] sql = {"select id from " + listR.getData().get(0).getTableName() + " t where 1 = 1 "}; conditionMap.forEach((key, value) -> { if(StringUtils.isBlank(value)||value.equals(QueryOptionConstant.ISNULL)) { sql[0] += " and " + key + " is null"; @@ -723,11 +725,16 @@ sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'"; } sql[0] += " and lastR = '1' and lastV = '1' "; + String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid()); + if(Func.isNotEmpty(isParticipateCheckOids)){ + sql[0] += " and codeclsfid not in(" + isParticipateCheckOids + ")"; + } // if (boService.queryCountBySql(sql[0], new HashMap<>()) > 0) { - if (Integer.parseInt(commonsMapper.selectById(sql[0]).get(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 ? "鏄�" : "鍚�"}; - throw new VciBaseException("鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇杩欎釜鏁版嵁宸茬粡鍦ㄧ郴缁熶腑瀛樺湪浜嗐�傝淇!銆�" + ruleInfoMsg, objs); + throw new VciBaseException("鏍规嵁鎮ㄥ~鍐欑殑鍏抽敭灞炴�х殑鍐呭锛岀粨鍚堝叧閿睘鎬ф煡璇㈣鍒欙紝鍙戠幇璇ユ暟鎹凡缁忎笌绯荤粺涓紪鍙蜂负"+repeatData.stream().collect(Collectors.joining(","))+"鐨勬暟鎹噸澶嶃�傝淇!銆�" + ruleInfoMsg, objs); } } } @@ -1793,7 +1800,6 @@ } } - /** * 鏍规嵁妯℃澘灞炴�х敓鎴愮浉搴旂殑sql淇℃伅 * @@ -1959,6 +1965,8 @@ String sqlHasPage = pageHelper.getLimit() > 0 ? ("select * from (select A.*,rownum RN from (" + sql + whereSubfixForPage) : sql; String sqlCount = "select count(1) from " + tableName + SPACE + "t" + SPACE + joinTableList.values().stream().collect(Collectors.joining(SPACE)) + (StringUtils.isBlank(whereSql) ? "" : " where ") + whereSql; + String sqlId = "select ID from " + tableName + SPACE + "t" + SPACE + joinTableList.values().stream().collect(Collectors.joining(SPACE)) + + (StringUtils.isBlank(whereSql) ? "" : " where ") + whereSql; CodeTemplateAttrSqlBO sqlBO = new CodeTemplateAttrSqlBO(); sqlBO.setTableName(tableName); sqlBO.setJoinTable(joinTableList); @@ -1967,9 +1975,9 @@ sqlBO.setSqlHasPage(sqlHasPage); sqlBO.setSqlCount(sqlCount); sqlBO.setSqlUnPage(sql); + sqlBO.setSqlId(sqlId); return sqlBO; } - /** * 缁勫悎鏌ヨ鏉′欢鐨剆ql 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 4935984..ecc0089 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 @@ -529,7 +529,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<>(); @@ -654,7 +654,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)){ @@ -664,7 +664,7 @@ } if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){ keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{ - errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" ); + errorMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex,"") ); }); } //鍒嗙被娉ㄥ叆 @@ -903,7 +903,7 @@ //鍒ゆ柇蹇呰緭椤� batchCheckRequiredAttrOnOrder(templateVO, cboList, errorMap); - //鏈夐檺鏍¢獙缂栫爜鏄惁瀛樺湪 + //浼樺厛鏍¢獙缂栫爜鏄惁瀛樺湪 batchCheckIdExistOnOrder(templateVO, cboList, errorMap); //boolean @@ -913,15 +913,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)) { @@ -931,7 +934,7 @@ } if (!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)) { keyAttrRepeatRowIndexList.stream().forEach(rowIndex -> { - errorMap.put(rowIndex, errorMap.getOrDefault(rowIndex, "") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅"); + errorMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex, "")); }); } //4.鏍¢獙瑙勫垯 @@ -1301,7 +1304,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)){ @@ -1311,7 +1314,7 @@ } if(!CollectionUtils.isEmpty(keyAttrRepeatRowIndexList)){ keyAttrRepeatRowIndexList.stream().forEach(rowIndex->{ - errorMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" ); + errorMap.put(rowIndex,"鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex,"")); }); } //鍒嗙被娉ㄥ叆 @@ -1737,7 +1740,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<>(); @@ -1782,12 +1785,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.鏍¢獙瑙勫垯 @@ -1916,7 +1919,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()); //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇 @@ -1988,7 +1991,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(); @@ -2020,7 +2023,7 @@ resultDataObjectDetailDO.setMsg(errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" ); resultDataObjectDetailDOs.add(resultDataObjectDetailDO); */ - errorKeyMap.put(rowIndex,errorMap.getOrDefault(rowIndex,"") + ";鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅" ); + errorKeyMap.put(rowIndex, "鍏抽敭灞炴�т笌绯荤粺涓殑閲嶅;" + errorMap.getOrDefault(rowIndex,"")); }); } //鏍¢獙灞炴�ф槸鍚︽纭敊璇俊鎭� @@ -2268,6 +2271,7 @@ } return resultDataObjectDetailDOs; } + /*** * 闆嗘垚鎵归噺鍚屾鏇存柊鎺ュ彛 * @param codeClassifyVO; @@ -2563,6 +2567,7 @@ }); } } + /** * 杞崲缁勫悎瑙勫垯鐨勫�� * @@ -2609,6 +2614,7 @@ }); } } + /** * 鏍¢獙鍏抽敭灞炴�� * @@ -2637,7 +2643,6 @@ }); //娌℃湁闄愬埗鍒嗙被锛屼絾鏄竴涓ā鏉垮彧鍙兘鍦ㄤ竴涓笟鍔$被鍨嬮噷闈紝鎵�浠ョ洿鎺ユ煡璇㈣繖涓笟鍔$被鍨嬪嵆鍙� - if (!CollectionUtils.isEmpty(conditionMap)) { String tableName=""; R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId()); @@ -2649,11 +2654,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 "; @@ -2668,17 +2674,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); } } } + /** * 鏍¢獙鏋氫妇鐨勫唴瀹� * @@ -2702,6 +2715,7 @@ }); } } + /** * 杞崲鏃堕棿鐨勬牸寮� * @@ -2794,6 +2808,7 @@ orderDTO.getData().put(attrId, value); } } + /** * 浠庣紪鐮佺敵璇蜂俊鎭璞′笂鑾峰彇鏌愪釜灞炴�х殑鍊� * @@ -2813,6 +2828,7 @@ } return value; } + /** * 澶勭悊鍒嗙被娉ㄥ叆鐨勪俊鎭� * @@ -2858,6 +2874,7 @@ }); } } + /*** * * @param codeClassifyVO @@ -3098,6 +3115,7 @@ }); } + /** * excel杞崲涓篶bo鐨勫璞� * @param classifyFullInfo 鍒嗙被鐨勫叏閮ㄤ俊鎭� @@ -3236,6 +3254,7 @@ } } } + /** * 鎵归噺杞崲鏃堕棿閮戒负鎸囧畾鐨勬牸寮� * @param attrVOS 妯℃澘灞炴�� @@ -3461,6 +3480,7 @@ } } + /** * 鎵归噺妫�鏌ヤ紒涓氱紪鐮佹槸鍚﹀瓨鍦� * @param templateVO 妯℃澘鐨勬樉绀哄璞� @@ -3668,6 +3688,7 @@ } return showText; } + /** * 澶勭悊鏋氫妇鐨勬樉绀哄璞� * @param attrVOS 妯℃澘灞炴�� @@ -3792,7 +3813,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); @@ -3821,7 +3842,7 @@ //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); Map<String,List<BaseModel>> indexTODataMap=new ConcurrentHashMap<>(); // 鏌ヨ涓嶉渶瑕佸弬涓庡叧閿睘鎬ф牎楠岀殑闄よ嚜宸变互澶栫殑鎵�鏈夊垎绫籵id - String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid()); + final String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid()); List<ClientBusinessObject> repeatDataMap = cboList.parallelStream().filter(cbo -> { //姣忚閮藉緱鏌ヨ.濡傛灉鍏朵腑鍑虹幇浜嗛敊璇紝鎴戜滑灏辩洿鎺ユ姏鍑哄紓甯革紝鍏朵綑鐨勬樉绀� //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); @@ -3840,21 +3861,24 @@ 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; } @@ -3968,7 +3992,6 @@ return childOidPathMap; } - /** * 鑾峰彇瀵煎叆鐨勫唴瀹逛腑鍏抽敭灞炴�ч噸澶嶇殑琛屽彿 * @param ketAttrMap 鍏抽敭灞炴�х殑鏄犲皠 @@ -4037,6 +4060,7 @@ resultVO.setKeyAttrRepeatRowIndexList(selfRepeatRowIndexList); resultVO.setKeyAttrOkOidTORepeatOidMap(keyAttrOkOidTORepeatOidMap); } + /** * excel鐨勬爣棰樹笂鑾峰彇瀛楁鎵�鍦ㄧ殑浣嶇疆 * @param titleRowData 鏍囬鐨勫唴瀹� @@ -4152,6 +4176,7 @@ codeClassifyDatas.addAll(newCodeImprotDataVO); log.info("222"); } + /*** * @param titleRowData * @param newTemplateVO @@ -4197,7 +4222,8 @@ codeImprotDataVO.setColNames(colNames); codeImprotDataVO.getDatas().add(filedValueMap); } - /*** + + /** * 姝g‘閿欒鏁版嵁redis缂撳瓨 * @param uuid * @param templateVO @@ -4511,4 +4537,5 @@ mdmInterJtClient.receiveEditApply(oids,btmName); } } + } 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 0924dbb..ea0a767 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 @@ -111,7 +111,7 @@ log.info("code:----->"+cbo.getId()); //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); String code = cbo.getId(); - List<String> serialUnitList = new ArrayList<>(); + List<String> serialUnitList = new CopyOnWriteArrayList<>(); String seclenghStr=cbo.getData().get(CODE_SEC_LENGTH_FIELD); String[] secLengths = cbo.getData().get(CODE_SEC_LENGTH_FIELD).split("#"); cbo.getData().remove(CODE_SEC_LENGTH_FIELD);//灏嗘key闄ゅ幓 @@ -236,8 +236,8 @@ // TODO 鍘嗗彶鏁版嵁瀵煎叆鐨勬椂鍊欒繖鍎垮伓灏斾細瑙﹀彂绌烘寚閽堝紓甯� Map<String,List<CodeAllCode>> ruleGroup = allCodeDOList.stream().collect(Collectors.groupingBy(s -> s.getCodeRuleOid())); Map<String, CodeAllCode> codeDOMap = allCodeDOList.stream().collect(Collectors.toMap(s -> s.getCodeRuleOid() + "${SEP}" + s.getId(), t -> t)); - List<CodeAllCode> addCodeDOs = new ArrayList<>(); - List<CodeAllCode> editCodeDOs = new ArrayList<>(); + List<CodeAllCode> addCodeDOs = new CopyOnWriteArrayList<>(); + List<CodeAllCode> editCodeDOs = new CopyOnWriteArrayList<>(); ruleGroup.forEach((ruleOid,allCodeDOS)->{ VciBaseUtil.switchCollectionForOracleIn(allCodeDOS).stream().forEach(codeDOs->{ QueryWrapper<CodeAllCode> allCodeWrapper = new QueryWrapper<>(); @@ -286,7 +286,7 @@ .collectingAndThen( Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(CodeAllCode::getId))), ArrayList::new)); - if( distinctCodeAllCOdes.size() != addCodeDOs.size() ){ + if(distinctCodeAllCOdes.size() != addCodeDOs.size() ){ throw new VciBaseException("缂栫爜鏁版嵁閲嶅锛屾棤娉曚繚瀛橈紝璇锋敞鎰忥紒"); } QueryWrapper<CodeAllCode> wrapper = new QueryWrapper<>(); @@ -307,7 +307,8 @@ if(codeAllCode.getId().equals(next.getId())){ codeAllCode.setCreateCodeOid(next.getCreateCodeOid()); codeAllCode.setLcStatus(next.getLcStatus()); - iterator.remove(); + // TODO: 杩欏効鍏堟殏鏃舵敞閲婃帀锛屾病鐪嬫噦杩欏効涓轰粈涔堣杩欐牱鍋氾紝瀵艰嚧鎶ラ敊 + //iterator.remove(); } } } @@ -317,16 +318,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 { @@ -390,12 +382,10 @@ allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode");allCode.setLctid("codeAllCodeLC");} ); - Map<String, String> statusMap = allCodeDOList.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus())); allCodeDOList.stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmname())).forEach(s -> { s.setLcStatus(statusMap.get(s.getOid())); }); - //閫氳繃ID鏉ヨ繘琛屽幓閲� List<CodeAllCode> distinctCodeAllCOdes = allCodeDOList.stream().collect(Collectors diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml index af5be61..6d2babb 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml @@ -17,6 +17,10 @@ ${inSql} </select> + <select id="selectList" resultType="java.lang.String"> + ${inSql} + </select> + <select id="selectCountByTableName" resultType="java.lang.String"> select COUNT(*) FROM ${tableName} </select> -- Gitblit v1.9.3