From d44c1e2579e664009c75809ddc1e0231b7a68cb9 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期五, 25 八月 2023 11:04:32 +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 | 94 ++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 85 insertions(+), 9 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 77530fa..b0e21bf 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 @@ -1962,6 +1962,7 @@ CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList); Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList(); Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList(); + Map<String,List<String>>keyAttrOkOidTORepeatOidMap= keyResultVO.getKeyAttrOkOidTORepeatOidMap(); if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){ selfRepeatRowIndexList.stream().forEach(rowIndex->{ /* //浼犲叆鏁版嵁涔嬮棿鍏抽敭灞炴�х殑鏍¢獙 @@ -2064,8 +2065,8 @@ String lcstatus =newCbo.getLcStatus(); String newOid =newCbo.getOid(); Date ts =newCbo.getTs(); - groupCode=newCbo.getData().get("GROUPCODE"); - code=newCbo.getId(); + code = StringUtils.isBlank(newCbo.getId())?"":newCbo.getId(); + groupCode=newCbo.getData().getOrDefault("GROUPCODE",""); String lastmodifier=newCbo.getLastModifier(); if (lcstatus!=null&&!lcstatus.equals(CodeDefaultLC.RELEASED.getValue())) { newCbo.setOid(newOid); @@ -2083,7 +2084,7 @@ XMLResultDataObjectDetailDO resultDataObjectDetailDO = new XMLResultDataObjectDetailDO(); if(isCodeOrGroupCode) { if(StringUtils.isBlank(groupCode)){ - mes+="锛涚瓑寰呴泦鍥㈢紪鐮佽祴鍊�"; + mes+="锛涚敵璇风殑缂栫爜绫诲瀷涓洪泦鍥㈢爜锛岀瓑寰呴泦鍥㈢紪鐮佽祴鍊�"; } resultDataObjectDetailDO.setCode(groupCode); }else{ @@ -2136,16 +2137,30 @@ // if(!isProcess){ dataCBOList.stream().forEach(needSaveCbo->{ XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO(); - resultDataObjectDetailDO.setCode(needSaveCbo.getId()); + String code=StringUtils.isBlank(needSaveCbo.getId())?" ":needSaveCbo.getId(); + String groupCode=needSaveCbo.getData().getOrDefault("GROUPCODE"," "); + //resultDataObjectDetailDO.setCode(needSaveCbo.getId()); + String msg="鐢宠缂栫爜鎴愬姛"; String oid=needSaveCbo.getOid(); String sourceOid=oid; if(codeOidToSystemOidMap.containsKey(oid)){ sourceOid=codeOidToSystemOidMap.get(oid); } + if(isCodeOrGroupCode) { + if(StringUtils.isBlank(groupCode)){ + msg="鐢宠鐨勭紪鐮佺被鍨嬩负闆嗗洟鐮侊紝绛夊緟闆嗗洟缂栫爜璧嬪��"; + } + resultDataObjectDetailDO.setCode(groupCode); + }else{ + resultDataObjectDetailDO.setCode(code); + } resultDataObjectDetailDO.setId(sourceOid); resultDataObjectDetailDO.setErrorid("0"); - resultDataObjectDetailDO.setMsg("鐢宠缂栫爜鎴愬姛"); + resultDataObjectDetailDO.setMsg(msg); resultDataObjectDetailDOs.add(resultDataObjectDetailDO); + //澶勭悊浼犻�佺殑鏁版嵁涓叧閿睘鎬ч噸澶嶇殑锛岀洿鎺ユ嬁鍒板凡缁忕敵璇峰埌缂栫爜鐨勬暟鎹紪鐮佺洿鎺ュ皢璧嬬粰鍏抽敭灞炴�ч噸澶嶇殑鏁版嵁 + LinkedList<XMLResultDataObjectDetailDO> repeatDataObjectDetailDOS=handleApplyDataKeyAttrRepeat(keyAttrOkOidTORepeatOidMap,codeOidToSystemOidMap,needSaveCbo,isCodeOrGroupCode); + resultDataObjectDetailDOs.addAll(repeatDataObjectDetailDOS); }); /* }else{ needSaveCboList.stream().forEach(needSaveCbo->{ @@ -2184,6 +2199,50 @@ } + /*** + *缁欏悓涓�鎵圭敵璇风紪鐮佸瓨鍦ㄥ叧閿睘鎬х殑鏁版嵁璧嬩笂涓�鑷寸紪鐮� + * @param keyAttrOkOidTORepeatOidMap 涓�鎵圭敵璇锋暟鎹叧閿睘鎬т竴鑷寸殑閲嶅鏁版嵁鏄犲皠鍏崇郴 + * @param codeOidToSystemOidMap + * @param needSaveCbo + * @param isCodeOrGroupCode + */ + private LinkedList<XMLResultDataObjectDetailDO> handleApplyDataKeyAttrRepeat(Map<String,List<String>>keyAttrOkOidTORepeatOidMap,Map<String,String> codeOidToSystemOidMap,BaseModel needSaveCbo,boolean isCodeOrGroupCode){ + LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs=new LinkedList<>(); + String oid=needSaveCbo.getOid(); + if(keyAttrOkOidTORepeatOidMap.containsKey(oid)){ + List<String> repeatOidList= keyAttrOkOidTORepeatOidMap.get(oid); + if(!CollectionUtils.isEmpty(repeatOidList)){ + String sourceNewOid=needSaveCbo.getOid(); + String sourceOid=sourceNewOid; + if(codeOidToSystemOidMap.containsKey(oid)){ + sourceOid=codeOidToSystemOidMap.get(oid); + } + String code=StringUtils.isBlank(needSaveCbo.getId())?" ":needSaveCbo.getId(); + String groupCode=needSaveCbo.getData().getOrDefault("GROUPCODE"," "); + String finalSourceOid = sourceOid; + repeatOidList.stream().forEach(repeatOid->{ + if(codeOidToSystemOidMap.containsKey(repeatOid)){ + XMLResultDataObjectDetailDO repeatresultDataObjectDetailDO=new XMLResultDataObjectDetailDO(); + String repeatSourceOid=codeOidToSystemOidMap.get(repeatOid); + String repeatMsg="姝ゆ暟鎹笌鐢宠鐨勭紪鐮佹暟鎹甶d涓恒��"+ finalSourceOid +"銆戠殑鍏抽敭灞炴�т竴鑷达紝鍒欏彇鐩稿悓缂栫爜"; + if(isCodeOrGroupCode) { + if(StringUtils.isBlank(groupCode)){ + repeatMsg="鐢宠鐨勭紪鐮佺被鍨嬩负闆嗗洟鐮侊紝绛夊緟闆嗗洟缂栫爜璧嬪��"; + } + repeatresultDataObjectDetailDO.setCode(groupCode); + }else{ + repeatresultDataObjectDetailDO.setCode(code); + } + repeatresultDataObjectDetailDO.setId(repeatSourceOid); + repeatresultDataObjectDetailDO.setErrorid("0"); + repeatresultDataObjectDetailDO.setMsg(repeatMsg); + resultDataObjectDetailDOs.add(repeatresultDataObjectDetailDO); + } + }); + } + } + return resultDataObjectDetailDOs; + } /*** * 闆嗘垚鎵归噺鍚屾鏇存柊鎺ュ彛 * @param codeClassifyVO; @@ -3665,7 +3724,8 @@ CodeImportResultVO resultVO = new CodeImportResultVO(); resultVO.setKeyAttrRuleInfo(String.format(keyRuleVO ==null?"":"鏌ヨ瑙勫垯锛氬幓闄ょ┖鏍�--{0},蹇界暐澶у皬鍐�--{1},蹇界暐鍏ㄥ崐瑙�--{2},蹇界暐鍏ㄩ儴绌烘牸--{3}", new String[]{trim?"鏄�":"鍚�",ignoreCase?"鏄�":"鍚�",ignoreWidth?"鏄�":"鍚�",trimAll?"鏄�":"鍚�"})); - resultVO.setSelfRepeatRowIndexList(getSelfRepeatRowIndex(ketAttrMap,cboList,keyRuleVO)); + //resultVO.setSelfRepeatRowIndexList(getSelfRepeatRowIndex(ketAttrMap,cboList,keyRuleVO)); + getSelfRepeatRowIndex(ketAttrMap,cboList,keyRuleVO,resultVO); if(!CollectionUtils.isEmpty(resultVO.getSelfRepeatRowIndexList())){ //鎴戜滑绉婚櫎鏈韩閲嶅鐨勬暟鎹� cboList = cboList.stream().filter(s->!resultVO.getSelfRepeatRowIndexList().contains(s.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList()); @@ -3824,9 +3884,10 @@ * @param keyRuleVO 鍏抽敭灞炴�ф帶鍒惰鍒� * @return 閲嶅鐨勮鍙� */ - private Set<String> getSelfRepeatRowIndex(Map<String/**灞炴�х殑缂栧彿**/, CodeClassifyTemplateAttrVO> ketAttrMap, - List<ClientBusinessObject> dataList,CodeKeyAttrRepeatVO keyRuleVO){ + private void getSelfRepeatRowIndex(Map<String/**灞炴�х殑缂栧彿**/, CodeClassifyTemplateAttrVO> ketAttrMap, + List<ClientBusinessObject> dataList,CodeKeyAttrRepeatVO keyRuleVO,CodeImportResultVO resultVO){ Set<String> selfRepeatRowIndexList = new CopyOnWriteArraySet<>(); + Map<String,List<String>> keyAttrOkOidTORepeatOidMap=new HashMap<>(); boolean trimAll =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag()); //鍏ㄩ儴鍘荤┖鐨勪紭鍏堢骇澶т簬鍘荤┖ boolean trim =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag()); @@ -3835,8 +3896,10 @@ //蹇呴』灏嗗睘鎬ф寜鐓ч『搴忔帓搴忓ソ List<CodeClassifyTemplateAttrVO> attrVOList = ketAttrMap.values().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList()); Map<String/**琛屽彿**/,String/**鍏抽敭灞炴�х殑缁勫悎鍐呭**/> rowIndexKeyStringMap = new HashMap<>(); + Map<String/**鍏抽敭灞炴�х殑缁勫悎鍐呭**/,String/**绗竴涓叧閿睘鎬х殑鏁版嵁oid**/> okOidKeyStringMap = new HashMap<>(); dataList.parallelStream().forEach(cbo-> { String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); + String oid=cbo.getOid(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < attrVOList.size(); i++) { CodeClassifyTemplateAttrVO attrVO = attrVOList.get(i); @@ -3862,12 +3925,25 @@ String keyString = sb.toString(); if(rowIndexKeyStringMap.containsValue(keyString) && StringUtils.isNotBlank(keyString)){ selfRepeatRowIndexList.add(rowIndex); + String okOid=okOidKeyStringMap.getOrDefault(keyString,""); + if(StringUtils.isNotBlank(okOid)){ + List<String>newOidList=new ArrayList<>(); + newOidList.add(oid); + if(keyAttrOkOidTORepeatOidMap.containsKey(okOid)){ + List<String> oldOidList= keyAttrOkOidTORepeatOidMap.get(okOid); + newOidList.addAll(oldOidList); + + } + keyAttrOkOidTORepeatOidMap.put(okOid,newOidList); + } }else { + okOidKeyStringMap.put(sb.toString(),oid); rowIndexKeyStringMap.put(rowIndex, sb.toString()); } }); //鍥犱负鍙槸鍏抽敭灞炴�ч噸澶嶏紝鎵�浠ユ垜浠笉鑳介噸澶嶇殑澶氭潯閫変竴鏉℃潵鎶ラ敊 - return selfRepeatRowIndexList; + resultVO.setKeyAttrRepeatRowIndexList(selfRepeatRowIndexList); + resultVO.setKeyAttrOkOidTORepeatOidMap(keyAttrOkOidTORepeatOidMap); } /** * excel鐨勬爣棰樹笂鑾峰彇瀛楁鎵�鍦ㄧ殑浣嶇疆 -- Gitblit v1.9.3