From d74e5663908f6530ee32d074b1a747c49cb05589 Mon Sep 17 00:00:00 2001 From: wangting <675591594@qq.com> Date: 星期五, 25 八月 2023 16:55:09 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java | 154 +++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 119 insertions(+), 35 deletions(-) diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java index 943eeda..30ddb67 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; +import com.vci.ubcs.code.applyjtcodeservice.feign.IMdmInterJtClient; import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO; import com.vci.ubcs.code.constant.MdmDuckingConstant; import com.vci.ubcs.code.dto.CodeOrderDTO; @@ -58,7 +59,8 @@ import javax.annotation.Resource; import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; import static com.vci.ubcs.code.constant.MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST; @@ -128,6 +130,9 @@ @Autowired private ICodeClassifyValueService codeClassifyValueService; + + @Resource + private IMdmInterJtClient mdmInterJtClient; /*** * 闆嗘垚鎺ュ彛鏃ュ織鏈嶅姟鐨勯厤缃� */ @@ -149,7 +154,7 @@ @Override public String applyCode(String data, String dataType) throws Throwable { String resultStr = ""; - String errorid="0"; + final String[] errorid = {"0"}; msg="鎴愬姛"; objerrorCode="0"; objerrorMsg="鎴愬姛"; @@ -159,7 +164,7 @@ List<XMLResultClassfyVO> resultClassfyVOList = new ArrayList<>(); try { if(StringUtils.isBlank(data)) { - errorid="101"; + errorid[0] ="101"; throw new Throwable("鎺ュ彛鍙傛暟锛氫紶閫掍负绌�"); } InterParameterVO interParameterVO =new InterParameterVO(); @@ -175,17 +180,11 @@ interParameterVO = JSONObject.toJavaObject(JSONObject.parseObject(data), InterParameterVO.class); } }catch (Throwable e){ - errorid="101"; + errorid[0] ="101"; throw new Throwable("鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�"); } ClassfysVO classfysVO = interParameterVO.getData().getClassifys(); systemId = interParameterVO.getData().getSystemId(); - //鏍¢獙鏄惁閰嶇疆 - boolean checkPass= checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue()); - if(!checkPass){ - errorid="101"; - throw new Throwable("绯荤粺鏍囪瘑涓恒��"+systemId+"銆�,"+sysIntegrationPushTypeEnum.ACCPET_APPCODE.getText()+"鎺ュ彛閰嶇疆宸插仠鐢ㄦ垨鑰呮湭閰嶇疆锛岃鑱旂郴缂栫爜绠$悊鍛橈紒"); - } UserVO userVo = interParameterVO.getData().getUser(); List<ClassfyVO> classVOList = classfysVO.getClassify(); InterParameterVO finalInterParameterVO = interParameterVO; @@ -196,20 +195,32 @@ sessionInfo.setUserName(userVo.getTrueName()); sessionInfo.setIp(userVo.getIp()); VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); - +// List<XMLResultDataObjectDetailDO> allResultDataObjectDetailDOS=new ArrayList<>(); String finalSystemId = systemId; classVOList.stream().forEach(classVO -> { log.info("鍙傛暟锛氬垎绫籆Ode:" + classVO.getClassCode()); + boolean isCodeOrGroupCode=false; LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>(); + String libray =""; //鑾峰彇鍒嗙被淇℃伅 try { - String libray = classVO.getLibrary(); - CodeClassifyVO codeClassifyVO = getClassfy(classVO); + libray = classVO.getLibrary(); + CodeClassifyVO codeClassifyVO = getClassfy(classVO,libray); log.info("end锛氬垎绫绘煡璇㈠畬姣�"); //鑾峰彇鍒嗙被妯℃澘淇℃伅 if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){ objerrorCode="100"; throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧埌鍒嗙被淇℃伅"); + } + String operation=""; + if(CODE_CHECKCONFIG) { + //鏍¢獙鏄惁閰嶇疆 + DockingSystemConfig dockingSystemConfig= checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue(),codeClassifyVO.getOid()); + if(dockingSystemConfig==null){ + errorid[0] ="101"; + throw new Throwable("绯荤粺鏍囪瘑涓恒��"+ finalSystemId +"銆戯紝闆嗘垚鍒嗙被涓恒��"+codeClassifyVO.getName()+"銆戜互涓婂垎绫伙紝"+sysIntegrationPushTypeEnum.ACCPET_APPCODE.getText()+"鎺ュ彛閰嶇疆宸插仠鐢ㄦ垨鑰呮湭閰嶇疆锛岃鑱旂郴缂栫爜绠$悊鍛橈紒"); + } + isCodeOrGroupCode="true".equals(dockingSystemConfig.getIsGroupCodeFlag())?true:false; } CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid()); if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){ @@ -241,15 +252,29 @@ CodeOrderDTO orderDTO = new CodeOrderDTO(); orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//鍒嗙被涓婚敭 orderDTO.setSecDTOList(codeOrderSecDTOList);//鍒嗙被鐮佹 - mdmIOService.batchSyncApplyCode(orderDTO, dataObjectVO, resultDataObjectDetailDOs); + mdmIOService.batchSyncApplyCode(orderDTO, dataObjectVO, resultDataObjectDetailDOs,isCodeOrGroupCode); + //allResultDataObjectDetailDOS.add(resultDataObjectDetailDOs); log.info("end锛氱敵璇疯幏鍙栧畬姣�"); } catch (Throwable e) { - XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO=new XMLResultDataObjectDetailDO(); - xmlResultDataObjectDetailDO.setCode(""); - xmlResultDataObjectDetailDO.setId(""); - xmlResultDataObjectDetailDO.setErrorid(objerrorCode); - xmlResultDataObjectDetailDO.setMsg("缂栫爜鐢宠澶辫触:"+e.getMessage()); - resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO); + List<ApplyDataVO> applyDataVOList= classVO.getObjects().getObject(); + if(!CollectionUtils.isEmpty(applyDataVOList)) { + applyDataVOList.stream().forEach(applyDataVO -> { + XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO(); + xmlResultDataObjectDetailDO.setCode(""); + xmlResultDataObjectDetailDO.setId(applyDataVO.getId()); + xmlResultDataObjectDetailDO.setErrorid(objerrorCode); + xmlResultDataObjectDetailDO.setMsg("缂栫爜鐢宠澶辫触:" + e.getMessage()); + resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO); + }); + }else{ + + XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO(); + xmlResultDataObjectDetailDO.setCode(""); + xmlResultDataObjectDetailDO.setId(""); + xmlResultDataObjectDetailDO.setErrorid(objerrorCode); + xmlResultDataObjectDetailDO.setMsg("缂栫爜鐢宠澶辫触:" + e.getMessage()); + resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO); + } e.printStackTrace(); }finally { XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO(); @@ -259,14 +284,22 @@ resultClassfyVO.setObjects(resultDataObjectDetailDOs); resultClassfyVOList.add(resultClassfyVO); } + //鏄惁璋冪敤闆嗗洟鎺ュ彛鐢宠鎺ュ彛 + if(isCodeOrGroupCode){ + List<String> IdList=resultDataObjectDetailDOs.stream().filter(xMLResultDataObjectDetailDO->StringUtils.isNotBlank(xMLResultDataObjectDetailDO.getId())).map(XMLResultDataObjectDetailDO::getId).distinct().collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(IdList)) { + this.sendApplyGroupcode(IdList, libray,sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue()); + } + } }); + XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO(); xmlResultSystemVO.setClassifys(resultClassfyVOList); xmlResultSystemVO.setMsg(msg); - xmlResultSystemVO.setErrorid(errorid); + xmlResultSystemVO.setErrorid(errorid[0]); resultStr= transferResultXMl(xmlResultSystemVO,dataType); }catch (Throwable e){ - e.printStackTrace();; + e.printStackTrace(); msg="鐢宠缂栫爜澶辫触:"+e.getMessage(); /* XMLResultSystemVO XMLResultSystemVO=new XMLResultSystemVO(); XMLResultSystemVO.setErrorid(errorid); @@ -280,10 +313,10 @@ XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO(); xmlResultSystemVO.setClassifys(resultClassfyVOList); xmlResultSystemVO.setMsg(msg); - xmlResultSystemVO.setErrorid(errorid); + xmlResultSystemVO.setErrorid(errorid[0]); resultStr= transferResultXMl(xmlResultSystemVO,dataType); final boolean[] issucess = {true}; - if(!errorid.equals("0")) { + if(!errorid[0].equals("0")) { issucess[0] = false; }else { if(!CollectionUtils.isEmpty(resultClassfyVOList)) { @@ -306,10 +339,23 @@ } } log.info("杩斿洖鍙傛暟:"+resultStr); - + //璋冪敤闆嗗洟鐢宠鎺ュ彛鐢宠闆嗗洟鐮� return resultStr; } + /*** + * 鐢宠闆嗗洟缂栫爜 + * @param idList + * @param btmName + */ + private void sendApplyGroupcode(List<String> idList,String btmName,String operationType){ + String oids=VciBaseUtil.array2String(idList.toArray(new String[]{})); + if(operationType.equals(sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue())) { + mdmInterJtClient.applyGroupCode(oids,btmName); + }else if(operationType.equals(sysIntegrationPushTypeEnum.ACCPET_EDITCODE)){ + mdmInterJtClient.receiveEditApply(oids,btmName); + } + } /*** * 缁熶竴鏇存柊鎺ュ彛锛堟洿鏀圭姸鎬侊紝鏇存敼灞炴�т俊鎭級鎺ュ彛 * @param data @@ -376,7 +422,7 @@ //鑾峰彇鍒嗙被淇℃伅 try { String libray = classVO.getLibrary(); - CodeClassifyVO codeClassifyVO = getClassfy(classVO); + CodeClassifyVO codeClassifyVO = getClassfy(classVO,libray); if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){ objerrorCode="100"; throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧埌鍒嗙被淇℃伅"); @@ -1015,7 +1061,6 @@ } } else if (coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.TREE.getValue())) {//鏍戝舰 Map<String, Object> condtionMap = new HashMap<>(); - String parentFieldName=coderefersecSearchVO.getParentFieldName(); //浣跨敤浼犲叆鐨勪笟鍔$被鍨嬫煡璇㈣〃 R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referBtmId)); @@ -1026,6 +1071,7 @@ String oidFieldName = StringUtils.isNotBlank(coderefersecSearchVO.getParentUsedField())?coderefersecSearchVO.getParentUsedField():coderefersecSearchVO.getValueField(); String parentValue =coderefersecSearchVO.getParentValue(); + String parentFieldName =StringUtils.isBlank(coderefersecSearchVO.getParentFieldName())?"":coderefersecSearchVO.getParentFieldName(); List<CodeSrchCondConfigVO> codeSrchCondConfigVOList = coderefersecSearchVO.getCodeSrchCondConfigVOS(); List<CodeShowFieldConfigVO> codeShowFieldConfigVOS=coderefersecSearchVO.getCodeShowFieldConfigVOS(); if (!CollectionUtils.isEmpty(codeSrchCondConfigVOList)) { @@ -1072,7 +1118,7 @@ //鏌ヨ鍏ㄩ儴鐨勪俊鎭� buildSqlwhere+= " and oid in (select oid from " +referTable + " START WITH " + coderefersecSearchVO.getParentFieldName() + " "+ parentOidSql + - " CONNECT BY PRIOR " + oidFieldName + " = " + coderefersecSearchVO.getParentFieldName() + ")"; + " CONNECT BY PRIOR " + oidFieldName + " = " + parentFieldName + ")"; /*}else{ if(StringUtils.isNotBlank(coderefersecSearchVO.getParentFieldName()) && StringUtils.isNotBlank(parentValue)){ @@ -1098,7 +1144,8 @@ String value = map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString(); String text = map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString(); String description = map.getOrDefault("description".toUpperCase(Locale.ROOT), "").toString(); - CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num[0] + "", value, text, "", description); + String pid = map.getOrDefault(parentFieldName.toUpperCase(Locale.ROOT), "").toString(); + CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num[0] + "", value, text, pid, description); codeSectionValueVOList.add(sectionValueVO); }); } @@ -1281,7 +1328,7 @@ * 鏌ヨ鏍¢獙鍒嗙被淇℃伅 * @param classfyVO */ - private CodeClassifyVO getClassfy(ClassfyVO classfyVO) throws Throwable{ + private CodeClassifyVO getClassfy(ClassfyVO classfyVO,String libray) throws Throwable{ CodeClassifyVO classifyVO = new CodeClassifyVO(); try { String classCode = classfyVO.getClassCode(); @@ -1290,13 +1337,19 @@ if (StringUtils.isNotBlank(classfyVO.getClassCode())) { Map<String, String> conditionMap = new HashMap<>(); List<CodeClassify> codeClassifyList = classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().eq(CodeClassify::getId, classCode)); + final CodeClassify[] newCodeClassify = {new CodeClassify()}; if (!CollectionUtils.isEmpty(codeClassifyList)) { - CodeClassify classifyDO = codeClassifyList.get(0); - //灏咲TO杞崲涓篋O + codeClassifyList.stream().forEach(codeClassify -> { + CodeClassifyVO codeClassifyVO= classifyService.getTopClassifyVO(codeClassify.getOid()); + if(codeClassifyVO.getId().equals(libray)){ + newCodeClassify[0] =codeClassify; + } + }); classifyVO = new CodeClassifyVO(); - BeanUtilForVCI.copyPropertiesIgnoreCase(classifyDO, classifyVO); + BeanUtilForVCI.copyPropertiesIgnoreCase(newCodeClassify[0], classifyVO); + //灏咲TO杞崲涓篋O if(StringUtils.isBlank(classifyVO.getOid())){ - throw new Throwable("鏍规嵁鍒嗙被浠e彿鏈煡璇㈠埌鐩稿簲鐨勫垎绫讳俊鎭�"); + throw new Throwable("鐢宠缂栫爜鐨勫垎绫伙細銆�"+classCode+"銆戜笉灞炰簬搴撹妭鐐广��"+libray+"銆戯紝璇锋鏌ュ弬鏁板垎绫昏妭鐐�/搴撹妭鐐逛俊鎭槸鍚﹀尮閰�"); } }else{ throw new Throwable("鏍规嵁鍒嗙被浠e彿鏈煡璇㈠埌鐩稿簲鐨勫垎绫讳俊鎭�"); @@ -1309,7 +1362,7 @@ } }catch (Throwable e){ objerrorCode="100"; - new Throwable("鑾峰彇鍒嗙被淇℃伅澶辫触:"+e.getMessage()); + throw new Throwable("鑾峰彇鍒嗙被淇℃伅澶辫触:"+e.getMessage()); } return classifyVO; } @@ -1597,4 +1650,35 @@ queryWrapper.eq(DockingSystemConfig::getPushType,operationType); return dockingSystemConfigService.count(queryWrapper)>0?true:false; } + + /*** + * 鏍¢獙鏄惁鍋氫簡閰嶇疆 + * @param systemId,绯荤粺鏍囪瘑 + * @param type:鎺ュ彛绫诲瀷 + * @param operationType:鎺ュ彛鎿嶄綔绫诲瀷 + * @return + */ + private DockingSystemConfig checkIspass(String systemId,String type,String operationType,String classOid){ + DockingSystemConfig dockingSystemConfig=new DockingSystemConfig(); + CodeClassifyVO codeClassifyVO= classifyService.getObjectByOid(classOid); + classOid=codeClassifyVO.getOid(); + //鏍规嵁绫诲瀷鍘绘煡璇㈤渶瑕侀泦鎴愮殑鍒嗙被鎴栬�呮暟鎹� + LambdaQueryWrapper<DockingSystemConfig> queryWrapper = Wrappers.<DockingSystemConfig>lambdaQuery(); + queryWrapper.eq(DockingSystemConfig::getUsedFlag, MdmDuckingConstant.SEND_FLAG_TRUE); + queryWrapper.eq(DockingSystemConfig::getSysBaseId,systemId); + queryWrapper.eq(DockingSystemConfig::getDataFlowType,type); + queryWrapper.eq(DockingSystemConfig::getPushType,operationType); + if(StringUtils.isNotBlank(classOid)){ + queryWrapper.in(DockingSystemConfig::getClassifyId,classOid); + } + List<DockingSystemConfig> dockingSystemConfigList= dockingSystemConfigList=dockingSystemConfigService.list(queryWrapper); + if(!CollectionUtils.isEmpty(dockingSystemConfigList)){ + dockingSystemConfig=dockingSystemConfigList.get(0); + }else{ + if(StringUtils.isNotBlank(codeClassifyVO.getParentCodeClassifyOid())) { + checkIspass(systemId, type, operationType, codeClassifyVO.getOid()); + } + } + return dockingSystemConfig; + } } -- Gitblit v1.9.3