| | |
| | | //都转换完了。需要批量检查 |
| | | //如果出错了,我们依然执行有效的数据,无效的数据写回到excel中 |
| | | |
| | | Map<String, String> errorKeyMap = new HashMap<>(); |
| | | Map<String, String> errorKeyMap = new ConcurrentHashMap<>(); |
| | | //1.分类注入 |
| | | batchSwitchClassifyAttrOnOrder(attrVOS, cboList, classifyFullInfo, false); |
| | | //boolean |
| | |
| | | batchSwitchComponentAttrOnOrder(attrVOS, cboList); |
| | | //3.判断关键属性 |
| | | CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList, false, errorKeyMap); |
| | | log.info("================查重后的errorKeyMap错误信息================="+JSON.toJSONString(errorKeyMap)); |
| | | Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); |
| | | Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); |
| | | |
| | |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | /*** |
| | |
| | | * @param classifyFullInfo 分类的全部信息 |
| | | * @param templateVO 模板的内容,必须包含模板属性 |
| | | * @param cboList 批量的数据 |
| | | */ |
| | | * @param isEdit 是否是修改 |
| | | * @param errorMap 必须必须必须是线程安全的集合 |
| | | * */ |
| | | private CodeImportResultVO batchCheckKeyAttrOnOrder(CodeClassifyFullInfoBO classifyFullInfo, CodeClassifyTemplateVO templateVO, |
| | | List<ClientBusinessObject> cboList, boolean isEdit, Map<String, String> errorMap) { |
| | | List<ClientBusinessObject> cboList, boolean isEdit, Map<String, String> errorMap/*必须要是线程安全的集合*/) { |
| | | //与MdmEngineServiceImpl里的checkKeyAttrOnOrder相似 |
| | | //先获取关键属性的规则,也利用继承的方式 |
| | | CodeKeyAttrRepeatVO keyRuleVO = keyRuleService.getRuleByClassifyFullInfo(classifyFullInfo); |
| | |
| | | // TODO:Thread limit exceeded replacing blocked 异常是这部分代码抛出的 |
| | | // ,所以暂时将parallelStream改成了stream,改成了stream之后发现巨慢 |
| | | // customForkJoinPool控制并发度 |
| | | List<ClientBusinessObject> finalCboList = cboList; |
| | | final List<ClientBusinessObject> finalCboList = cboList; |
| | | Map<String, List<CodeSynonym>> finalCodeSynonymMaps = codeSynonymMaps; |
| | | List<ClientBusinessObject> repeatDataMap = (List<ClientBusinessObject>) customForkJoinPool.submit(() -> { |
| | | finalCboList.parallelStream().filter(cbo -> { |
| | |
| | | }); |
| | | // 添加错误值 |
| | | String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); |
| | | log.info("=============关键属性查询重复的============="+JSON.toJSONString(repeatData)); |
| | | errorMap.put(rowIndex, "重复的记录编号为:" + repeatData.stream().collect(Collectors.joining(","))); |
| | | if (!CollectionUtils.isEmpty(newCboList)) { |
| | | indexTODataMap.put(cbo.getAttributeValue(IMPORT_ROW_INDEX), newCboList); |
| | |
| | | |
| | | List<String> codeList = cboList.stream().map(ClientBusinessObject::getId).collect(Collectors.toList()); |
| | | List<Map<String, String>> dataList = new ArrayList<>(); |
| | | Map<String, String> errorMap = new HashMap<>(); |
| | | Map<String, String> errorMap = new ConcurrentHashMap<>(); |
| | | batchSwitchCheckExist(errorMap, cboList, classifyFullInfo, templateVO, execGroupCodePortDataDTO, fieldIndexMap); |
| | | //判断必输项 |
| | | batchCheckRequiredAttrOnOrder(templateVO, cboList, errorMap); |