From 65088015a5670f4973ce303f6e39b3a2330cca41 Mon Sep 17 00:00:00 2001 From: xiejun <xj@2023> Date: 星期五, 08 九月 2023 14:58:23 +0800 Subject: [PATCH] 人员组织结构申请接口开发 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java | 163 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 145 insertions(+), 18 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 be2da01..b54c7ba 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 @@ -17,6 +17,7 @@ import com.vci.ubcs.code.util.ClientBusinessObject; import com.vci.ubcs.code.util.gennerAttrMapUtil; import com.vci.ubcs.code.vo.pagemodel.*; +import com.vci.ubcs.code.vo.webserviceModel.person.*; import com.vci.ubcs.code.vo.webserviceModel.apply.*; import com.vci.ubcs.code.vo.webserviceModel.attrmap.*; import com.vci.ubcs.code.vo.webserviceModel.attrmap.DataObjectVO; @@ -27,12 +28,14 @@ import com.vci.ubcs.code.vo.webserviceModel.classify.ResultClassifyVO; import com.vci.ubcs.code.vo.webserviceModel.coderule.*; import com.vci.ubcs.code.vo.webserviceModel.data.*; +import com.vci.ubcs.code.vo.webserviceModel.data.ResultDataVO; import com.vci.ubcs.code.vo.webserviceModel.result.json.*; import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultClassfyVO; import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultDataObjectDetailDO; import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultSystemVO; import com.vci.ubcs.code.webService.annotation.VciWebservice; import com.vci.ubcs.code.webService.config.AttributeMapConfig; +import com.vci.ubcs.code.webService.config.PersonAndDeptConfig; import com.vci.ubcs.code.wrapper.CodeClassifyWrapper; import com.vci.ubcs.omd.feign.IBtmTypeClient; import com.vci.ubcs.omd.vo.BtmTypeVO; @@ -58,8 +61,6 @@ import javax.annotation.Resource; import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; -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; @@ -76,6 +77,11 @@ public boolean CODE_CHECKCONFIG; @Autowired(required = false) private AttributeMapConfig attributeMapConfig; + /*** + * 浜哄憳鐩稿叧閰嶇疆鏈嶅姟 + */ + @Autowired(required = false) + private PersonAndDeptConfig personAndDeptConfig; /** * 缂撳瓨鏈嶅姟 */ @@ -212,7 +218,8 @@ String operation=""; if(CODE_CHECKCONFIG) { //鏍¢獙鏄惁閰嶇疆 - DockingSystemConfig dockingSystemConfig= checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue(),codeClassifyVO.getOid()); + DockingSystemConfig dockingSystemConfig=null; + 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()+"鎺ュ彛閰嶇疆宸插仠鐢ㄦ垨鑰呮湭閰嶇疆锛岃鑱旂郴缂栫爜绠$悊鍛橈紒"); @@ -335,6 +342,113 @@ } + + /**** + * 浜哄憳鏁版嵁鍚屾 + * @param personData + * @return + * @throws Throwable + */ + @Override + public ResultOrgData syncDataForPerson(PersonData personData) { + boolean isUsedFlag= personAndDeptConfig.isUsedFlag(); + ResultOrgData resultOrgData=new ResultOrgData(); + boolean success=true; + String message=""; + if(isUsedFlag){ + List<PersonMasterData> masterDataList = personData.getMasterData(); + try { + String personLibrary = personAndDeptConfig.getPersonLibrary(); + if (StringUtils.isBlank(personLibrary)) { + success=false; + log.info("闆嗘垚閰嶇疆缂哄皯浜哄憳搴撹妭鐐逛俊鎭�,personLibrary->" + personLibrary); + throw new Throwable("闆嗘垚閰嶇疆缂哄皯浜哄憳搴撹妭鐐逛俊鎭�,personLibrary->" + personLibrary); + } + String personClassCode = personAndDeptConfig.getPersonClassCode(); + ClassfyVO classfyVO = new ClassfyVO(); + classfyVO.setLibrary(personLibrary); + classfyVO.setClassCode(personClassCode); + CodeClassifyVO codeClassifyVO=this.getClassfy(classfyVO,personLibrary); + log.info("end锛氬垎绫绘煡璇㈠畬姣�"); + //鑾峰彇鍒嗙被妯℃澘淇℃伅 + if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){ + success=false; + throw new Throwable ("鏍规嵁閰嶇疆鍒嗙被鐨勫垎绫荤紪鍙凤紝鏈幏鍙栧埌鍒嗙被淇℃伅"); + } + CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid()); + if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){ + success=false; + throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙朚DM绯荤粺涓搴旀ā鏉�"); + } + List<PersonMasterData> personMasterDataList= personData.getMasterData(); + List<Map> dataList=new ArrayList<>(); + ApplyDatasVO applyDatasVO=new ApplyDatasVO(); + + + List<ApplyDataVO> applyDataVOList=new ArrayList<>(); + personMasterDataList.stream().forEach(personMasterData -> { + ApplyDataVO object=new ApplyDataVO(); + object.setCode(personMasterData.getLm_code());//缂栫爜 + object.setCreator(personMasterData.getCreator());//鍒涘缓鑰� + object.setEditor(personMasterData.getModifier());//淇敼鑰� + object.setId(personMasterData.getId());//涓婚敭 + object.setStatus(CodeDefaultLC.RELEASED.getValue());//鐘舵�佸垯闇�瑕佸垽鏂� + Map<String,String> dataMap= VciBaseUtil.objectToMapString(personMasterData); + List<ProppertyVO> proppertyVOList=new ArrayList<>(); + dataMap.forEach((key,vaule)->{ + ProppertyVO proppertyVO=new ProppertyVO(); + proppertyVO.setKey(key); + proppertyVO.setValue(vaule); + proppertyVOList.add(proppertyVO); + }); + object.setProp(proppertyVOList); + applyDataVOList.add(object); + }); + applyDatasVO.setObject(applyDataVOList); + DataObjectVO dataObjectVO = new DataObjectVO(); + List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) + ).collect(Collectors.toList()); + this.getConfigDatas("ERP", personLibrary, applyDatasVO, attrVOS, dataObjectVO); + log.info("end锛氭暟鎹粍缁囧畬姣�"); + //瑙勫垯鐨勪富閿渶瑕佸幓鑾峰彇 + CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid()); + if(classifyFullInfo==null ||classifyFullInfo.getCurrentClassifyVO()==null || StringUtils.isBlank(classifyFullInfo.getCurrentClassifyVO().getOid())){ + success=false; + log.info("classifyFullInfo:"+"鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧垎绫荤浉鍏充俊鎭�"); + throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧垎绫荤浉鍏充俊鎭�"); + } + CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo); + if(ruleVO==null||StringUtils.isBlank(ruleVO.getOid())){ + success=false; + throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙朚DM绯荤粺涓搴旇鍒�"); + } + log.info("end锛氳鍒欒幏鍙栧畬姣�"); + + }catch (Throwable e){ + success=false; + message="浜哄憳鏁版嵁鎺ュ彈澶辫触:"+e.getMessage(); + }finally { + //缁勭粐杩斿洖缁撴灉 + masterDataList.stream().forEach(masterData -> { + ResultMdMapping resultMdMapping=new ResultMdMapping(); + resultMdMapping.setBusiDataId(masterData.getId()); + }); + } + + } + + return resultOrgData; + } + /**** + * 閮ㄩ棬鏁版嵁鍚屾 + * @param orgData + * @return + * @throws Throwable + */ + @Override + public ResultOrgData syncDataForOrg(OrgData orgData) { + return null; + } /*** * 缁熶竴鏇存柊鎺ュ彛锛堟洿鏀圭姸鎬侊紝鏇存敼灞炴�т俊鎭級鎺ュ彛 * @param data @@ -402,7 +516,6 @@ throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧埌鍒嗙被淇℃伅"); } log.info("end锛氬垎绫绘煡璇㈠畬姣�"); - String operation=""; if(CODE_CHECKCONFIG) { //鏍¢獙鏄惁閰嶇疆 @@ -432,12 +545,26 @@ mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs,isCodeOrGroupCode); 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(); + objerrorCode="1"; + 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(); @@ -511,7 +638,7 @@ log.info("鏌ヨ鍒嗙被鐨勬暟鎹被鍨�:->"+dataType); ResultClassifyVO resultClassifyVO =new ResultClassifyVO(); List<ClassifyVO> classifyVOList=new ArrayList<>(); - ResultData resultData=new ResultData(); + com.vci.ubcs.code.vo.webserviceModel.classify.ResultData resultData=new com.vci.ubcs.code.vo.webserviceModel.classify.ResultData(); try { if (StringUtils.isBlank(data)) { errorid = "101"; @@ -863,7 +990,7 @@ resultStr = object.toString(); } try { //璁板綍鏃ュ織 - this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassify"); + this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryData"); }catch (Throwable e){ e.printStackTrace(); } @@ -1315,7 +1442,7 @@ } try { //璁板綍鏃ュ織 - this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassify"); + this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassifyRule"); }catch (Throwable e){ e.printStackTrace(); } @@ -1574,6 +1701,7 @@ dockingLoge.setParamString(parmaData);//鍙傛暟淇℃伅 dockingLoge.setReturnString(result);//杩斿洖淇℃伅 dockingLoge.setType(operation);//鏃ュ織鎿嶄綔绫诲瀷 + dockingLoge.setCreateTime(new Date()); if(isSucess) { dockingLoge.setInterfaceStatus("true");//鎺ュ彛闆嗘垚鐘舵�� }else{ @@ -1662,7 +1790,6 @@ */ private DockingSystemConfig checkIspass(String systemId,String type,String operationType,String classOid){ log.info("systemId锛�"+systemId+",type:"+SysIntegrationDataFlowTypeEnum.getTextByValue(type)+",operationType:"+sysIntegrationPushTypeEnum.getTextByValue(operationType)+",classOid:"+classOid); - DockingSystemConfig dockingSystemConfig=null; CodeClassifyVO codeClassifyVO= classifyService.getObjectByOid(classOid); classOid=codeClassifyVO.getOid(); //鏍规嵁绫诲瀷鍘绘煡璇㈤渶瑕侀泦鎴愮殑鍒嗙被鎴栬�呮暟鎹� @@ -1672,16 +1799,16 @@ queryWrapper.eq(DockingSystemConfig::getDataFlowType,type); queryWrapper.eq(DockingSystemConfig::getPushType,operationType); if(StringUtils.isNotBlank(classOid)){ - queryWrapper.in(DockingSystemConfig::getClassifyId,classOid); + queryWrapper.in(DockingSystemConfig::getClassifyOid,classOid); } List<DockingSystemConfig> dockingSystemConfigList= dockingSystemConfigList=dockingSystemConfigService.list(queryWrapper); if(!CollectionUtils.isEmpty(dockingSystemConfigList)){ - dockingSystemConfig=dockingSystemConfigList.get(0); + return dockingSystemConfigList.get(0); }else{ if(StringUtils.isNotBlank(codeClassifyVO.getParentCodeClassifyOid())) { - checkIspass(systemId, type, operationType, codeClassifyVO.getParentCodeClassifyOid()); + return checkIspass(systemId, type, operationType, codeClassifyVO.getParentCodeClassifyOid()); } } - return dockingSystemConfig; + return dockingSystemConfigList.get(0); } } -- Gitblit v1.9.3