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 支持,Saber 将不能正常工作。请启用浏览器的 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>正在加载资源</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> }</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 支持,Saber 将不能正常工作。请启用浏览器的 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>正在加载资源</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> 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; } 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); 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: 同一个库判重不需要区分分类oid // 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; } /** * 组合查询条件的sql 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转换为cbo的对象 * @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) { //与MdmEngineServiceImpl里的checkKeyAttrOnOrder相似 //先获取关键属性的规则,也利用继承的方式 CodeKeyAttrRepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo); @@ -3821,7 +3842,7 @@ //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo(); Map<String,List<BaseModel>> indexTODataMap=new ConcurrentHashMap<>(); // 查询不需要参与关键属性校验的除自己以外的所有分类oid 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); } /*** /** * 正确错误数据redis缓存 * @param uuid * @param templateVO @@ -4511,4 +4537,5 @@ mdmInterJtClient.receiveEditApply(oids,btmName); } } } 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 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>