From 52ffefd06e59cbd56c1a919972866592379cfed2 Mon Sep 17 00:00:00 2001 From: xiejun <xj@2023> Date: 星期四, 21 九月 2023 11:27:11 +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 | 936 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 843 insertions(+), 93 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 1e7ecf0..a5016f5 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,7 +6,6 @@ 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; @@ -18,6 +17,9 @@ 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.applybz.ApplyBZParamVO; +import com.vci.ubcs.code.vo.webserviceModel.applybz.ApplyBZVO; +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; @@ -28,12 +30,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; @@ -51,16 +55,26 @@ import com.vci.ubcs.system.vo.DeptVO; import com.vci.ubcs.system.vo.RoleVO; import lombok.extern.slf4j.Slf4j; +import org.apache.tools.ant.taskdefs.condition.Http; +import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; + import javax.annotation.Resource; +import javax.jws.WebMethod; +import javax.servlet.ServletRequest; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.core.Context; +import javax.xml.ws.WebServiceContext; +import javax.xml.ws.handler.MessageContext; 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; @@ -73,15 +87,25 @@ @Slf4j @VciWebservice(path = "/universalInterface") public class UniversalInterfaceImpl<IDockingLogeServiceing> implements UniversalInterfaceI { + @Value("${code.universalinterface.checkSystemConfig:true}") public boolean CODE_CHECKCONFIG; + @Autowired(required = false) private AttributeMapConfig attributeMapConfig; + + /*** + * 浜哄憳鐩稿叧閰嶇疆鏈嶅姟 + */ + @Autowired(required = false) + private PersonAndDeptConfig personAndDeptConfig; + /** * 缂撳瓨鏈嶅姟 */ //@Autowired //private RedisService redisService; + /** * 涓婚搴撳垎绫荤殑鏈嶅姟 */ @@ -121,7 +145,6 @@ /** * 瀵嗙骇鐨勬湇鍔� */ - @Resource private MdmIOService mdmIOService; @@ -131,19 +154,48 @@ @Autowired private ICodeClassifyValueService codeClassifyValueService; - @Resource - private IMdmInterJtClient mdmInterJtClient; /*** * 闆嗘垚鎺ュ彛鏃ュ織鏈嶅姟鐨勯厤缃� */ @Resource private IDockingLogeService dockingLogeService; + @Resource + private IPasswordFreeLoginService passwordFreeLoginService; private static String separator="##VCI##"; private String errorid="0"; private String msg="鎴愬姛"; private String objerrorCode="0"; private String objerrorMsg="鎴愬姛"; + + private final ThreadLocal<HttpServletRequest> threadLocal = new ThreadLocal<>(); + + @Resource + private WebServiceContext webServiceContext; + + @Override + public void setThreadLocal(ThreadLocal<HttpServletRequest> requestThreadLocal){ + this.threadLocal.set(requestThreadLocal.get()); + requestThreadLocal.remove(); + } + + @WebMethod + private HttpServletRequest getRequest() { + //rest璇锋眰鏂瑰紡鑾峰彇request + HttpServletRequest request = this.threadLocal.get(); + if(Func.isEmpty(request)){ + try { + // webservice璇锋眰鏂瑰紡鑾峰彇HttpServletRequest瀵硅薄 + request = (HttpServletRequest)webServiceContext.getMessageContext().get(MessageContext.SERVLET_REQUEST); + }catch (Exception e){ + throw new ServiceException("鑾峰彇httpServletRequest澶辫触锛屽師鍥�:"+e.getMessage()); + } + }else { + this.threadLocal.remove(); + } + return request; + } + /*** * 鐢宠缂栫爜鎺ュ彛 * @param data 浼犻�掔殑鏁版嵁鍙傛暟 @@ -186,9 +238,11 @@ ClassfysVO classfysVO = interParameterVO.getData().getClassifys(); systemId = interParameterVO.getData().getSystemId(); UserVO userVo = interParameterVO.getData().getUser(); + //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� + passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); + AuthUtil.getUser(); List<ClassfyVO> classVOList = classfysVO.getClassify(); InterParameterVO finalInterParameterVO = interParameterVO; - //杩欐槸璐﹀彿淇℃伅 SessionInfo sessionInfo = new SessionInfo(); sessionInfo.setUserId(userVo.getUserName()); @@ -215,7 +269,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()+"鎺ュ彛閰嶇疆宸插仠鐢ㄦ垨鑰呮湭閰嶇疆锛岃鑱旂郴缂栫爜绠$悊鍛橈紒"); @@ -285,13 +340,6 @@ 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(); @@ -344,19 +392,546 @@ return resultStr; } - /*** - * 鐢宠闆嗗洟缂栫爜 - * @param idList - * @param btmName + /**** + * 浜哄憳鏁版嵁鍚屾 + * @param personData + * @return + * @throws Throwable */ - 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); + @Override + public ResultOrgData syncDataForPerson(PersonData personData) { + + boolean isUsedFlag= personAndDeptConfig.isUsedFlag(); + ResultOrgData resultOrgData=new ResultOrgData(); + + boolean isPersonApplyGroupCode= personAndDeptConfig.isPersonApplyGroupCode(); + String systemCode=personData.getSystemCode(); + List<ResultMdMapping> resultMdMappingList=new ArrayList<>(); + String message=""; + if(isUsedFlag){ + AtomicBoolean success= new AtomicBoolean(true); + List<PersonMasterData> masterDataList=new ArrayList<>(); + List<String> fields= VciBaseUtil.str2List(personAndDeptConfig.getPersonFields()); + try { + if(personData==null){ + throw new Throwable("浼犲叆鍙傛暟涓簄ull"); + } + masterDataList = personData.getMasterData(); + String personLibrary = personAndDeptConfig.getPersonLibrary(); + if (StringUtils.isBlank(personLibrary)) { + success.set(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.set(false); + throw new Throwable ("鏍规嵁閰嶇疆鍒嗙被鐨勫垎绫荤紪鍙凤紝鏈幏鍙栧埌鍒嗙被淇℃伅"); + } + CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid()); + if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){ + success.set(false); + throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙朚DM绯荤粺涓搴旀ā鏉�"); + } + + List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) + ).collect(Collectors.toList()); + + List<PersonMasterData> personMasterDataList= personData.getMasterData(); + List<Map> dataList=new ArrayList<>(); + + List<String> codeList=new ArrayList<>(); + + List<ApplyDataVO> applyDataVOList=new ArrayList<>(); + List<ApplyDataVO> deleteDataVOList=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<>(); + /*** + * 鏍规嵁閰嶇疆鏂囦欢鑾峰彇鏋氫妇鍊� + */ + fields.stream().forEach(field->{ + if(dataMap.containsKey(field)){ + String enumFiled= dataMap.get(field); + EnumerableData enumerableData=JSONObject.toJavaObject(JSONObject.parseObject(enumFiled),EnumerableData.class); + String enumCode=enumerableData.getCode(); + //String enumCodeValue=enumerableData.getName(); + ProppertyVO proppertyVO=new ProppertyVO(); + proppertyVO.setKey(field); + proppertyVO.setValue(enumCode); + proppertyVOList.add(proppertyVO); + dataMap.remove(field); + } + }); + dataMap.forEach((key,vaule)->{ + ProppertyVO proppertyVO=new ProppertyVO(); + proppertyVO.setKey(key); + proppertyVO.setValue(vaule); + proppertyVOList.add(proppertyVO); + }); + + object.setProp(proppertyVOList); + if(personMasterData.getDr()==1){ + object.setOperate("delete");//鎿嶄綔绫诲瀷 + deleteDataVOList.add(object); + }else{ + String worker_category=personMasterData.getWorker_category(); + + object.setOperate("create"); + applyDataVOList.add(object); + } + codeList.add(personMasterData.getLm_code()); + }); + + R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId()); + if(!r.isSuccess()) { + throw new Throwable(r.getMsg()); + } + BtmTypeVO btmTypeVO = r.getData(); + if (btmTypeVO == null) { + throw new Throwable("鏍规嵁涓氬姟绫诲瀷鏈煡璇㈠埌涓氬姟绫诲瀷瀵硅薄锛�"); + } + String tableName = btmTypeVO.getTableName(); + if (com.alibaba.nacos.common.utils.StringUtils.isBlank(tableName)) { + throw new Throwable("鏍规嵁涓氬姟绫诲瀷鏈煡璇㈠埌涓氬姟绫诲瀷鐩稿叧鑱旂殑琛�"); + } + StringBuffer sb=new StringBuffer(); + sb.append(" select * from "); + sb.append(tableName); + sb.append(" where 1=1 "); + sb.append(" and lastr=1 and lastv=1" ); + sb.append(" and id in ("); + sb.append(VciBaseUtil.toInSql(codeList.toArray(new String[0]))); + sb.append(")"); + List<Map<String,String>> dataMapList=commonsMapper.queryByOnlySqlForMap(sb.toString()); + List<ClientBusinessObject> cboList= ChangeMapTOClientBusinessObjects(dataMapList); + ApplyDatasVO applyDatasVO=new ApplyDatasVO(); + ApplyDatasVO editDatasVO=new ApplyDatasVO(); + if(!CollectionUtils.isEmpty(cboList)){ + Map<String,ClientBusinessObject> oldpplyDataVOMap= cboList.stream().filter(data -> data != null && StringUtils.isNotBlank(data.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); + //鏁版嵁搴撲笉瀛樺湪鐨� + List<ApplyDataVO> applyApplyDataVOList = applyDataVOList.stream().filter(cbo -> { + String code =cbo.getCode(); + return !oldpplyDataVOMap.containsKey(code); + }).collect(Collectors.toList()); + applyDatasVO.setObject(applyApplyDataVOList); + //鏁版嵁搴撳瓨鍦ㄧ殑 + List<ApplyDataVO> editApplyDataVOList = applyDataVOList.stream().filter(cbo -> { + String code =cbo.getCode(); + if(oldpplyDataVOMap.containsKey(code)){ + cbo.setOperate("update"); + } + return oldpplyDataVOMap.containsKey(code); + }).collect(Collectors.toList()); + editApplyDataVOList.addAll(deleteDataVOList); + editDatasVO.setObject(editApplyDataVOList); + }else{ + applyDatasVO.setObject(applyDataVOList); + } + + LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs=new LinkedList<>(); + if(editDatasVO.getObject()!=null&&editDatasVO.getObject().size()>0){ + DataObjectVO dataObjectVO = new DataObjectVO(); + this.getConfigDatas(systemCode, personLibrary, editDatasVO, attrVOS, dataObjectVO); + log.info("start锛氫慨鏀规暟鎹墽琛屽畬姣�"); + boolean personApplyGroupCode =personAndDeptConfig.isPersonApplyGroupCode(); + mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs,personApplyGroupCode); + log.info("end锛氫慨鏀规暟鎹墽琛屽畬姣�"); + } + if(applyDatasVO.getObject()!=null&&applyDatasVO.getObject().size()>0) { + DataObjectVO dataObjectVO = new DataObjectVO(); + this.getConfigDatas(systemCode, personLibrary, applyDatasVO, attrVOS, dataObjectVO); + + CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid()); + CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo); + if(ruleVO==null||"".equals(ruleVO.getOid())){ + throw new Throwable("缂栫爜瑙勫垯"); + } + List<XMLResultDataObjectDetailDO> xDOs=new CopyOnWriteArrayList<>(); + dataObjectVO.getRowData().parallelStream().forEach(rowData->{ + String mesg=""; + try { + CodeOrderDTO orderDTO = new CodeOrderDTO(); + List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>(); + orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//鍒嗙被涓婚敭 + orderDTO.setTemplateOid(templateVO.getOid()); + if(!CollectionUtils.isEmpty(ruleVO.getSecVOList())) { + ruleVO.getSecVOList().stream().forEach(codeBasicSecVO -> { + if (codeBasicSecVO.getSecType().equals("codevariablesec")) {//瑙勫垯涔嬪畾涔変负鍙彉鐮佹瀛樺偍涓绘暟鎹紶閫掕繃鏉ョ殑鏁版嵁 + CodeOrderSecDTO CodeOrderSecDTO = new CodeOrderSecDTO(); + CodeOrderSecDTO.setSecOid(codeBasicSecVO.getOid()); + CodeOrderSecDTO.setSecValue(rowData.getCode()); + codeOrderSecDTOList.add(CodeOrderSecDTO); + + } + }); + } + orderDTO.setCodeRuleOid(ruleVO.getOid()); + orderDTO.setSecDTOList(codeOrderSecDTOList);//瀛樺偍缂栫爜 + orderDTO.setData(rowData.getFiledValue()); + String code=engineService.addSaveCode(orderDTO); + if(StringUtils.isNotBlank(code)) { + StringBuffer sqlsb = new StringBuffer(); + sqlsb.append(" select * from "); + sqlsb.append(tableName); + sqlsb.append(" where 1=1 "); + sqlsb.append(" and lastr=1 and lastv=1"); + sqlsb.append(" and id in ("); + sqlsb.append(VciBaseUtil.toInSql(code)); + sqlsb.append(")"); + List<Map<String, String>> newDataMapList = commonsMapper.queryByOnlySqlForMap(sqlsb.toString()); + if (!CollectionUtils.isEmpty(newDataMapList)) { + String oid = StringUtils.isBlank(newDataMapList.get(0).get("OID")) ? "" : newDataMapList.get(0).get("OID"); + List<String> oidList = new ArrayList<>(); + oidList.add(oid); + //濡傛灉鏈夌敵璇峰氨鍘昏皟鐢ㄧ敵璇烽泦鍥㈢爜 + if (isPersonApplyGroupCode) { + mdmIOService.sendApplyGroupcode(oidList, templateVO.getBtmTypeId(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue()); + success.set(true); + mesg = "鏁版嵁淇濆瓨鎴愬姛锛岀瓑寰呯敵璇烽泦鍥㈢爜"; + } + } + } + } catch (Exception e) { + mesg=e.getMessage(); + e.printStackTrace(); + }finally { + XMLResultDataObjectDetailDO x=new XMLResultDataObjectDetailDO(); + x.setId(rowData.getOid()); + x.setCode(rowData.getCode()); + x.setMsg(mesg); + x.setErrorid("1"); + xDOs.add(x); + } + }); + resultDataObjectDetailDOs.addAll(xDOs); + boolean finalSuccess1 = success.get(); + String finalMessage1 = message; + resultDataObjectDetailDOs.stream().forEach(resultDataObjectDetailDO->{ + ResultMdMapping resultMdMapping=new ResultMdMapping(); + resultMdMapping.setBusiDataId(resultDataObjectDetailDO.getId()); + resultMdMapping.setSuccess(finalSuccess1); + resultMdMapping.setEntityCode(" "); + resultMdMapping.setMdmCode(resultDataObjectDetailDO.getCode()); + resultMdMapping.setMessage(finalMessage1); + resultMdMapping.setSubMdMappings(null); + resultMdMappingList.add(resultMdMapping); + }); + log.info("end锛氱敵璇疯幏鍙栧畬姣�"); + } + }catch (Throwable e){ + success.set(false); + message="浜哄憳鏁版嵁鎺ュ彈澶辫触:"+e.getMessage(); + //缁勭粐杩斿洖缁撴灉 + boolean finalSuccess = success.get(); + String finalMessage = message; + masterDataList.stream().forEach(masterData -> { + ResultMdMapping resultMdMapping=new ResultMdMapping(); + resultMdMapping.setBusiDataId(masterData.getId()); + resultMdMapping.setSuccess(finalSuccess); + resultMdMapping.setEntityCode(" "); + resultMdMapping.setMdmCode(masterData.getLm_code()); + resultMdMapping.setMessage(finalMessage); + resultMdMapping.setSubMdMappings(null); + }); + }finally { + resultOrgData.setMessage(message); + resultOrgData.setSuccess(success.get()); + resultOrgData.setMdMappings(resultMdMappingList); + Object object = JSONObject.toJSON(resultOrgData); + } + String resultStr = JSONObject.toJSONString(resultOrgData); + String data = JSONObject.toJSONString(personData); + try { + //璁板綍鏃ュ織 + this.saveLogs(systemCode, systemCode, data, resultStr, success.get(), msg, "syncDataForPerson"); + }catch (Throwable e){ + e.printStackTrace(); + } } + + return resultOrgData; } + + /**** + * 閮ㄩ棬鏁版嵁鍚屾 + * @param orgData + * @return + * @throws Throwable + */ + @Override + public ResultOrgData syncDataForOrg(OrgData orgData) { + boolean isUsedFlag= personAndDeptConfig.isUsedFlag(); + ResultOrgData resultOrgData=new ResultOrgData(); + boolean isPersonApplyGroupCode= personAndDeptConfig.isPersonApplyGroupCode(); + List<ResultMdMapping> resultMdMappingList=new ArrayList<>(); + AtomicBoolean success= new AtomicBoolean(true); + String message=""; + String systemCode=""; + if(isUsedFlag){ + List<OrgMasterData> orgMasterDataList=new ArrayList<>(); + List<String> fields= VciBaseUtil.str2List(personAndDeptConfig.getPersonFields()); + try { + if(orgData==null){ + throw new Throwable("浼犲叆鍙傛暟涓簄ull"); + } + systemCode=orgData.getSystemCode(); + orgMasterDataList = orgData.getMasterData(); + String personLibrary = personAndDeptConfig.getPersonLibrary(); + if (StringUtils.isBlank(personLibrary)) { + success.set(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.set(false); + throw new Throwable ("鏍规嵁閰嶇疆鍒嗙被鐨勫垎绫荤紪鍙凤紝鏈幏鍙栧埌鍒嗙被淇℃伅"); + } + CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid()); + if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){ + success.set(false); + throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙朚DM绯荤粺涓搴旀ā鏉�"); + } + + List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag()) + ).collect(Collectors.toList()); + List<Map> dataList=new ArrayList<>(); + List<String> codeList=new ArrayList<>(); + List<ApplyDataVO> applyDataVOList=new ArrayList<>(); + List<ApplyDataVO> deleteDataVOList=new ArrayList<>(); + orgMasterDataList.stream().forEach(orgMasterData -> { + ApplyDataVO object=new ApplyDataVO(); + object.setCode(orgMasterData.getMdm_code());//缂栫爜 + object.setCreator(orgMasterData.getCreator());//鍒涘缓鑰� + object.setEditor(orgMasterData.getModifier());//淇敼鑰� + object.setId(orgMasterData.getPk_mdm());//涓婚敭 + object.setStatus(CodeDefaultLC.RELEASED.getValue());//鐘舵�佸垯闇�瑕佸垽鏂� + Map<String,String> dataMap= VciBaseUtil.objectToMapString(orgMasterData); + List<ProppertyVO> proppertyVOList=new ArrayList<>(); + /*** + * 鏍规嵁閰嶇疆鏂囦欢鑾峰彇鏋氫妇鍊� + */ + fields.stream().forEach(field->{ + if(dataMap.containsKey(field)){ + String enumFiled= dataMap.get(field); + EnumerableData enumerableData=JSONObject.toJavaObject(JSONObject.parseObject(enumFiled),EnumerableData.class); + String enumCode=enumerableData.getCode(); + //String enumCodeValue=enumerableData.getName(); + ProppertyVO proppertyVO=new ProppertyVO(); + proppertyVO.setKey(field); + proppertyVO.setValue(enumCode); + proppertyVOList.add(proppertyVO); + dataMap.remove(field); + } + }); + dataMap.forEach((key,vaule)->{ + ProppertyVO proppertyVO=new ProppertyVO(); + proppertyVO.setKey(key); + proppertyVO.setValue(vaule); + proppertyVOList.add(proppertyVO); + }); + + object.setProp(proppertyVOList); + if(orgMasterData.getDr()==1){ + object.setOperate("delete");//鎿嶄綔绫诲瀷 + deleteDataVOList.add(object); + }else{ + + object.setOperate("create"); + applyDataVOList.add(object); + } + codeList.add(orgMasterData.getMdm_code()); + }); + + R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId()); + if(!r.isSuccess()) { + throw new Throwable(r.getMsg()); + } + BtmTypeVO btmTypeVO = r.getData(); + if (btmTypeVO == null) { + throw new Throwable("鏍规嵁涓氬姟绫诲瀷鏈煡璇㈠埌涓氬姟绫诲瀷瀵硅薄锛�"); + } + String tableName = btmTypeVO.getTableName(); + if (com.alibaba.nacos.common.utils.StringUtils.isBlank(tableName)) { + throw new Throwable("鏍规嵁涓氬姟绫诲瀷鏈煡璇㈠埌涓氬姟绫诲瀷鐩稿叧鑱旂殑琛�"); + } + StringBuffer sb=new StringBuffer(); + sb.append(" select * from "); + sb.append(tableName); + sb.append(" where 1=1 "); + sb.append(" and lastr=1 and lastv=1" ); + sb.append(" and id in ("); + sb.append(VciBaseUtil.toInSql(codeList.toArray(new String[0]))); + sb.append(")"); + List<Map<String,String>> dataMapList=commonsMapper.queryByOnlySqlForMap(sb.toString()); + List<ClientBusinessObject> cboList= ChangeMapTOClientBusinessObjects(dataMapList); + ApplyDatasVO applyDatasVO=new ApplyDatasVO(); + ApplyDatasVO editDatasVO=new ApplyDatasVO(); + if(!CollectionUtils.isEmpty(cboList)){ + Map<String,ClientBusinessObject> oldpplyDataVOMap= cboList.stream().filter(data -> data != null && StringUtils.isNotBlank(data.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); + //鏁版嵁搴撲笉瀛樺湪鐨� + List<ApplyDataVO> applyApplyDataVOList = applyDataVOList.stream().filter(cbo -> { + String code =cbo.getCode(); + return !oldpplyDataVOMap.containsKey(code); + }).collect(Collectors.toList()); + applyDatasVO.setObject(applyApplyDataVOList); + //鏁版嵁搴撳瓨鍦ㄧ殑 + List<ApplyDataVO> editApplyDataVOList = applyDataVOList.stream().filter(cbo -> { + String code =cbo.getCode(); + if(oldpplyDataVOMap.containsKey(code)){ + cbo.setOperate("update"); + } + return oldpplyDataVOMap.containsKey(code); + }).collect(Collectors.toList()); + editApplyDataVOList.addAll(deleteDataVOList); + editDatasVO.setObject(editApplyDataVOList); + }else{ + applyDatasVO.setObject(applyDataVOList); + } + + LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs=new LinkedList<>(); + if(editDatasVO.getObject()!=null&&editDatasVO.getObject().size()>0){ + DataObjectVO dataObjectVO = new DataObjectVO(); + this.getConfigDatas(systemCode, personLibrary, editDatasVO, attrVOS, dataObjectVO); + log.info("start锛氫慨鏀规暟鎹墽琛屽畬姣�"); + boolean personApplyGroupCode =personAndDeptConfig.isPersonApplyGroupCode(); + mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs,personApplyGroupCode); + log.info("end锛氫慨鏀规暟鎹墽琛屽畬姣�"); + } + if(applyDatasVO.getObject()!=null&&applyDatasVO.getObject().size()>0) { + DataObjectVO dataObjectVO = new DataObjectVO(); + this.getConfigDatas(systemCode, personLibrary, applyDatasVO, attrVOS, dataObjectVO); + + CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid()); + CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo); + if(ruleVO==null||"".equals(ruleVO.getOid())){ + throw new Throwable("缂栫爜瑙勫垯"); + } + List<XMLResultDataObjectDetailDO> xDOs=new CopyOnWriteArrayList<>(); + dataObjectVO.getRowData().parallelStream().forEach(rowData->{ + String mesg=""; + try { + CodeOrderDTO orderDTO = new CodeOrderDTO(); + List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>(); + orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//鍒嗙被涓婚敭 + orderDTO.setTemplateOid(templateVO.getOid()); + if(!CollectionUtils.isEmpty(ruleVO.getSecVOList())) { + ruleVO.getSecVOList().stream().forEach(codeBasicSecVO -> { + if (codeBasicSecVO.getSecType().equals("codevariablesec")) {//瑙勫垯涔嬪畾涔変负鍙彉鐮佹瀛樺偍涓绘暟鎹紶閫掕繃鏉ョ殑鏁版嵁 + CodeOrderSecDTO CodeOrderSecDTO = new CodeOrderSecDTO(); + CodeOrderSecDTO.setSecOid(codeBasicSecVO.getOid()); + CodeOrderSecDTO.setSecValue(rowData.getCode()); + codeOrderSecDTOList.add(CodeOrderSecDTO); + + } + }); + } + orderDTO.setCodeRuleOid(ruleVO.getOid()); + orderDTO.setSecDTOList(codeOrderSecDTOList);//瀛樺偍缂栫爜 + orderDTO.setData(rowData.getFiledValue()); + String code=engineService.addSaveCode(orderDTO); + if(StringUtils.isNotBlank(code)) { + StringBuffer sqlsb = new StringBuffer(); + sqlsb.append(" select * from "); + sqlsb.append(tableName); + sqlsb.append(" where 1=1 "); + sqlsb.append(" and lastr=1 and lastv=1"); + sqlsb.append(" and id in ("); + sqlsb.append(VciBaseUtil.toInSql(code)); + sqlsb.append(")"); + List<Map<String, String>> newDataMapList = commonsMapper.queryByOnlySqlForMap(sqlsb.toString()); + if (!CollectionUtils.isEmpty(newDataMapList)) { + String oid = StringUtils.isBlank(newDataMapList.get(0).get("OID")) ? "" : newDataMapList.get(0).get("OID"); + List<String> oidList = new ArrayList<>(); + oidList.add(oid); + //濡傛灉鏈夌敵璇峰氨鍘昏皟鐢ㄧ敵璇烽泦鍥㈢爜 + if (isPersonApplyGroupCode) { + mdmIOService.sendApplyGroupcode(oidList, templateVO.getBtmTypeId(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue()); + success.set(true); + mesg = "鏁版嵁淇濆瓨鎴愬姛锛岀瓑寰呯敵璇烽泦鍥㈢爜"; + } + } + } + } catch (Exception e) { + mesg=e.getMessage(); + e.getMessage(); + e.printStackTrace(); + }finally { + XMLResultDataObjectDetailDO x=new XMLResultDataObjectDetailDO(); + x.setId(rowData.getOid()); + x.setCode(rowData.getCode()); + x.setMsg(mesg); + x.setErrorid("1"); + xDOs.add(x); + } + }); + resultDataObjectDetailDOs.addAll(xDOs); + boolean finalSuccess1 = success.get(); + String finalMessage1 = message; + resultDataObjectDetailDOs.stream().forEach(resultDataObjectDetailDO->{ + ResultMdMapping resultMdMapping=new ResultMdMapping(); + resultMdMapping.setBusiDataId(resultDataObjectDetailDO.getId()); + resultMdMapping.setSuccess(finalSuccess1); + resultMdMapping.setEntityCode(" "); + resultMdMapping.setMdmCode(resultDataObjectDetailDO.getCode()); + resultMdMapping.setMessage(finalMessage1); + resultMdMapping.setSubMdMappings(null); + resultMdMappingList.add(resultMdMapping); + }); + log.info("end锛氱敵璇疯幏鍙栧畬姣�"); + } + }catch (Throwable e){ + success.set(false); + message="浜哄憳鏁版嵁鎺ュ彈澶辫触:"+e.getMessage(); + //缁勭粐杩斿洖缁撴灉 + boolean finalSuccess = success.get(); + String finalMessage = message; + orgMasterDataList.stream().forEach(masterData -> { + ResultMdMapping resultMdMapping=new ResultMdMapping(); + resultMdMapping.setBusiDataId(masterData.getPk_mdm()); + resultMdMapping.setSuccess(finalSuccess); + resultMdMapping.setEntityCode(" "); + resultMdMapping.setMdmCode(masterData.getMdm_code()); + resultMdMapping.setMessage(finalMessage); + resultMdMapping.setSubMdMappings(null); + }); + }finally { + resultOrgData.setMessage(message); + resultOrgData.setSuccess(success.get()); + resultOrgData.setMdMappings(resultMdMappingList); + Object object = JSONObject.toJSON(resultOrgData); + } + String resultStr = JSONObject.toJSONString(resultOrgData); + String data = JSONObject.toJSONString(orgData); + try { + //璁板綍鏃ュ織 + this.saveLogs(systemCode, systemCode, data, resultStr, success.get(), msg, "syncDataForOrg"); + }catch (Throwable e){ + e.printStackTrace(); + } + } + return resultOrgData; + } + /*** * 缁熶竴鏇存柊鎺ュ彛锛堟洿鏀圭姸鎬侊紝鏇存敼灞炴�т俊鎭級鎺ュ彛 * @param data @@ -400,14 +975,9 @@ } ClassfysVO classfysVO = interParameterVO.getData().getClassifys(); systemId = interParameterVO.getData().getSystemId(); - - //鏍¢獙鏄惁閰嶇疆 - boolean checkPass = checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getValue()); - if (!checkPass) { - errorid = "101"; - throw new Throwable("绯荤粺鏍囪瘑涓恒��" + systemId + "銆�," + sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getText() + "鎺ュ彛閰嶇疆宸插仠鐢ㄦ垨鑰呮湭閰嶇疆锛岃鑱旂郴缂栫爜绠$悊鍛橈紒"); - } UserVO userVo = interParameterVO.getData().getUser(); + //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� + passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); List<ClassfyVO> classVOList = classfysVO.getClassify(); InterParameterVO finalInterParameterVO = interParameterVO; //杩欐槸璐﹀彿淇℃伅 @@ -419,16 +989,29 @@ 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(); + libray = classVO.getLibrary(); CodeClassifyVO codeClassifyVO = getClassfy(classVO,libray); if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){ objerrorCode="100"; throw new Throwable ("鏍规嵁浼犺緭鐨勫垎绫伙紝鏈幏鍙栧埌鍒嗙被淇℃伅"); } log.info("end锛氬垎绫绘煡璇㈠畬姣�"); + String operation=""; + if(CODE_CHECKCONFIG) { + //鏍¢獙鏄惁閰嶇疆 + DockingSystemConfig dockingSystemConfig= checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getValue(),codeClassifyVO.getOid()); + if(dockingSystemConfig==null){ + objerrorCode ="101"; + throw new Throwable("绯荤粺鏍囪瘑涓恒��"+ finalSystemId +"銆戯紝闆嗘垚鍒嗙被涓恒��"+codeClassifyVO.getName()+"銆戜互涓婂垎绫伙紝"+sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getText()+"鎺ュ彛閰嶇疆宸插仠鐢ㄦ垨鑰呮湭閰嶇疆锛岃鑱旂郴缂栫爜绠$悊鍛橈紒"); + } + isCodeOrGroupCode="true".equals(dockingSystemConfig.getIsGroupCodeFlag())?true:false; + } + //鑾峰彇鍒嗙被妯℃澘淇℃伅 CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid()); if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){ @@ -444,15 +1027,29 @@ this.getConfigDatas(finalSystemId, libray, applyDatasVO, attrVOS, dataObjectVO); log.info("end锛氭暟鎹瀯寤哄畬姣�"); log.info("start锛氫慨鏀规暟鎹墽琛屽畬姣�"); - mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs); + 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(); @@ -462,7 +1059,6 @@ resultClassfyVO.setObjects(resultDataObjectDetailDOs); resultClassfyVOList.add(resultClassfyVO); } - }); }catch (Throwable e){ e.printStackTrace();; @@ -527,7 +1123,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"; @@ -553,6 +1149,8 @@ } QueryData queryData=queryClassifyVO.getData(); UserVO userVo=queryData.getUser(); + //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� + passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); systemId=queryData.getSystemId(); QueryLibraryVO libraryVO= queryData.getLibrary(); String libId= libraryVO.getId(); @@ -711,6 +1309,8 @@ CondtionsVO condtionsVO=dataCondtionsVO.getCondtions(); systemId=condtionsVO.getSystemId(); UserVO userVo=condtionsVO.getUser(); + //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� + passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); CondtionVO condtionVO= condtionsVO.getCondtion(); SessionInfo sessionInfo = new SessionInfo(); sessionInfo.setUserId(userVo.getUserName()); @@ -727,15 +1327,15 @@ throw new Throwable(msg); } - //鏍¢獙鏄惁閰嶇疆 + /* //鏍¢獙鏄惁閰嶇疆 boolean checkPass = checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getValue()); if (!checkPass) { errorid = "101"; throw new Throwable("绯荤粺鏍囪瘑涓恒��" + systemId + "銆�," + sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getText() + "鎺ュ彛閰嶇疆宸插仠鐢ㄦ垨鑰呮湭閰嶇疆锛岃鑱旂郴缂栫爜绠$悊鍛橈紒"); } - + */ //鍏堢畝绉版槸鍚︽湁鍏宠仈妯℃澘锛屾湁妯℃澘瑕佸厛鍒犻櫎 - + boolean isCodeOrGroupCode=false; List<CodeClassify> libIdDos =classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().eq(CodeClassify::getId,library)); if(!CollectionUtils.isEmpty(libIdDos)){ CodeClassify libCodeClassify=libIdDos.get(0); @@ -753,6 +1353,17 @@ msg = "鎺ュ彛鍙傛暟锛歝lassCode 鏈煡璇㈠埌瀵瑰簲鐨勫垎绫讳俊鎭�"; throw new Throwable(msg); } + + String operation=""; + if(CODE_CHECKCONFIG) { + //鏍¢獙鏄惁閰嶇疆 + DockingSystemConfig dockingSystemConfig= checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getValue(),currentCodeClassify[0].getOid()); + if(dockingSystemConfig==null){ + errorid ="101"; + throw new Throwable("绯荤粺鏍囪瘑涓恒��"+ systemId +"銆戯紝闆嗘垚鍒嗙被涓恒��"+currentCodeClassify[0].getName()+"銆戜互涓婂垎绫伙紝"+sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getText()+"鎺ュ彛閰嶇疆宸插仠鐢ㄦ垨鑰呮湭閰嶇疆锛岃鑱旂郴缂栫爜绠$悊鍛橈紒"); + } + isCodeOrGroupCode="true".equals(dockingSystemConfig.getIsGroupCodeFlag())?true:false; + } List<CodeClassifyVO> dataCodeClassifyVOList =new ArrayList<>(); String oid= currentCodeClassify[0].getOid(); TreeQueryObject treeQueryObject=new TreeQueryObject(); @@ -763,52 +1374,55 @@ Map<String, CodeClassifyVO> oidCodeclassifyDOMap = dataCodeClassifyVOList.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); List<PropertyVO> propertyVOS=condtionVO.getPro(); - /*Map<String,String> condtionMap=new HashMap<>(); - propertyVOS.stream().forEach(propertyVO -> { - condtionMap.put(propertyVO.getFiledName(),propertyVO.getFiledValue()); - }); - condtionMap.put("codeclsfid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oidCodeclassifyDOMap.keySet().toArray(new String[0])) + ")"); List<String>statusList=new ArrayList<>(); statusList.add(CodeDefaultLC.RELEASED.getValue()); statusList.add(CodeDefaultLC.DISABLE.getValue()); statusList.add(CodeDefaultLC.TASK_BACK.getValue()); - condtionMap.put("Lcstatus", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(statusList.toArray(new String[]{})) + ")" ); - condtionMap.put("islastr", "1"); - condtionMap.put("islastv", "1");*/ - List<String>statusList=new ArrayList<>(); - statusList.add(CodeDefaultLC.RELEASED.getValue()); - statusList.add(CodeDefaultLC.DISABLE.getValue()); - statusList.add(CodeDefaultLC.TASK_BACK.getValue()); - R<BtmTypeVO> r= btmTypeClient.getDetail(libCodeClassify.getBtmTypeId()); - BtmTypeVO btmTypeVO =r.getData(); - String tableName=btmTypeVO.getTableName(); - + String tableName=""; + R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(libCodeClassify.getBtmTypeId()); + if(!r.isSuccess()) { + throw new Throwable(r.getMsg()); + } + BtmTypeVO btmTypeVO = r.getData(); + if (btmTypeVO == null) { + throw new Throwable("鏍规嵁涓氬姟绫诲瀷鏈煡璇㈠埌涓氬姟绫诲瀷瀵硅薄锛�"); + } + tableName = btmTypeVO.getTableName(); + if (com.alibaba.nacos.common.utils.StringUtils.isBlank(tableName)) { + throw new Throwable("鏍规嵁涓氬姟绫诲瀷鏈煡璇㈠埌涓氬姟绫诲瀷鐩稿叧鑱旂殑琛�"); + } StringBuffer sb=new StringBuffer(); sb.append(" select * from "); sb.append(tableName); sb.append(" where 1=1"); - propertyVOS.stream().forEach(propertyVO -> { - sb.append( " and "+propertyVO.getFiledName()+"='"+propertyVO.getFiledValue()+"'"); - }); + if(isCodeOrGroupCode){ + sb.append(" and groupcode is not null "); + } + + if(!CollectionUtils.isEmpty(propertyVOS)) { + propertyVOS.stream().forEach(propertyVO -> { + sb.append(" and " + propertyVO.getFiledName() + "='" + propertyVO.getFiledValue() + "'"); + }); + } sb.append(" and lastr=1 and lastv=1" ); sb.append(" and codeclsfid in (" + VciBaseUtil.toInSql(oidCodeclassifyDOMap.keySet().toArray(new String[0])) +")"); sb.append(" and Lcstatus in (" + VciBaseUtil.toInSql(statusList.toArray(new String[]{})) +")"); List<Map<String,String>> newDataList= commonsMapper.queryByOnlySqlForMap(sb.toString()); - List<ClientBusinessObject>clientBusinessObjects=new ArrayList<>(); - newDataList.stream().forEach(stringStringMap -> { - ClientBusinessObject clientBusinessObject=new ClientBusinessObject(); - DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,clientBusinessObject); - clientBusinessObjects.add(clientBusinessObject); - }); - + List<ClientBusinessObject> clientBusinessObjects= ChangeMapTOClientBusinessObjects(newDataList); List<com.vci.ubcs.code.vo.webserviceModel.data.DataObjectVO> dataObjectVOS=new ArrayList<>(); if(!CollectionUtils.isEmpty(clientBusinessObjects)){ CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(currentCodeClassify[0].getOid()); - Map<String, CodeClassifyTemplateAttrVO> filedAttributeMap = templateVO.getAttributes().stream().filter(attribute -> attribute != null && StringUtils.isNotBlank(attribute.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t)); - + Map<String, CodeClassifyTemplateAttrVO> filedAttributeMap = templateVO.getAttributes().stream().filter(attribute -> attribute != null && StringUtils.isNotBlank(attribute.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t)); + boolean finalIsCodeOrGroupCode = isCodeOrGroupCode; clientBusinessObjects.stream().forEach(cbo -> { com.vci.ubcs.code.vo.webserviceModel.data.DataObjectVO dataObjectVO=new com.vci.ubcs.code.vo.webserviceModel.data.DataObjectVO(); - dataObjectVO.setCode(cbo.getId()); + String code=""; + if(finalIsCodeOrGroupCode){ + code= cbo.getAttributeValue("groupcode"); + }else { + code=cbo.getId(); + } + dataObjectVO.setCode(code); dataObjectVO.setStatus(cbo.getLcStatus()); String codeclsfid=cbo.getAttributeValue("codeclsfid"); if(oidCodeclassifyDOMap.containsKey(codeclsfid)){ @@ -819,9 +1433,9 @@ String [] newQueryFileds=queryFileds.split(","); List<PropertyVO> propertyVOList=new ArrayList<>(); for(String filed:newQueryFileds){ - String value=cbo.getAttributeValue(filed); - if(filedAttributeMap.containsKey(filed)){ - CodeClassifyTemplateAttrVO attrVO= filedAttributeMap.get(filed); + if(filedAttributeMap.containsKey(filed.toLowerCase(Locale.ROOT))){ + String value=cbo.getAttributeValue(filed); + CodeClassifyTemplateAttrVO attrVO= filedAttributeMap.get(filed.toLowerCase(Locale.ROOT)); PropertyVO propertyVO=new PropertyVO(); propertyVO.setFiledName(filed); propertyVO.setFiledValue(value); @@ -865,7 +1479,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(); } @@ -873,11 +1487,8 @@ return resultStr; } - - @Override public String queryClassifyRule(String data, String dataType) throws Throwable { - boolean issucess=false; String resultStr = ""; String errorid="0"; @@ -913,6 +1524,8 @@ } QueryData queryData=queryClassifyVO.getData(); UserVO userVo=queryData.getUser(); + //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� + passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest()); systemId=queryData.getSystemId(); QueryLibraryVO libraryVO= queryData.getLibrary(); String libId= libraryVO.getId(); @@ -1223,10 +1836,10 @@ } log.info(libId); }else if(secType.equals("codelevelsec")) {//灞傜骇鐮佹 - int level = codeBasicSecVO.getCodeLevelValue(); CodeClassifyVO levelCodeClassifyVO = new CodeClassifyVO(); CodeClassifyFullInfoBO classifyFullInfoBO = this.classifyService.getClassifyFullInfo(codeClassifyDO.getOid()); if(codeBasicSecVO.getCodeLevelType().equals("code_level_special")){//鎸囧畾灞傜骇 + int level = codeBasicSecVO.getCodeLevelValue(); List<CodeClassifyVO> classifyVOS = classifyFullInfoBO.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel()))).collect(Collectors.toList()); if (classifyVOS.size() >= level && level > 0) { levelCodeClassifyVO = classifyVOS.get(level - 1); @@ -1317,7 +1930,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(); } @@ -1325,6 +1938,134 @@ return resultStr; } + public String applyCodeForBZ(String data,String dataType){ + String resultStr = ""; +// log.info("鏂规硶->applyCodeForBZ start"); +// +// final String[] errorid = {"0"}; +// msg="鎴愬姛"; +// objerrorCode="0"; +// objerrorMsg="鎴愬姛"; +// log.info("鐢宠缂栫爜鐨勬暟鎹弬鏁�:->"+data); +// log.info("鐢宠缂栫爜鐨勬暟鎹被鍨�:->"+dataType); +// String systemId=""; +// List<XMLResultClassfyVO> resultClassfyVOList = new ArrayList<>(); +// LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>(); +// try{ +// try { +// if(StringUtils.isBlank(data)) { +// errorid[0] ="101"; +// throw new Throwable("鎺ュ彛鍙傛暟锛氫紶閫掍负绌�"); +// } +// ApplyBZParamVO applyBZParamVO =new ApplyBZParamVO(); +// //濡傛灉dataType鏄痻ml鍒欙紝閫氳繃xml搴忓垪鍖栨垚瀵硅薄褰㈠紡锛屽鏋滄槸json鍒欓�氳繃json杞崲鎴愬璞℃牸寮� +// try { +// if ("xml".equals(dataType)) { +// XStream xStream = new XStream(new DomDriver()); +// xStream.processAnnotations(RootDataVO.class); +// xStream.autodetectAnnotations(true); +// ApplyBZVO rootDataVO = (ApplyBZVO) xStream.fromXML(data); +// applyBZParamVO.setData(rootDataVO); +// } else { +// applyBZParamVO = JSONObject.toJavaObject(JSONObject.parseObject(data), ApplyBZParamVO.class); +// } +// }catch (Throwable e){ +// errorid[0] ="101"; +// throw new Throwable("鎺ュ彛鍙傛暟锛氫紶鍏ユ暟鎹弬鏁拌В鏋愬け璐�"); +// } +// ClassfysVO classfysVO = interParameterVO.getData().getClassifys(); +// systemId = interParameterVO.getData().getSystemId(); +// UserVO userVo = interParameterVO.getData().getUser(); +// //鍏嶅瘑鐧诲綍鐢宠token锛宺equest涓坊鍔犵敤鎴蜂俊鎭� +// passwordFreeLoginService.passwordFreeLogin(userVo.getUserName(),this.getRequest()); +// AuthUtil.getUser(); +// List<ClassfyVO> classVOList = classfysVO.getClassify(); +// InterParameterVO finalInterParameterVO = interParameterVO; +// //杩欐槸璐﹀彿淇℃伅 +// SessionInfo sessionInfo = new SessionInfo(); +// sessionInfo.setUserId(userVo.getUserName()); +// sessionInfo.setUserName(userVo.getTrueName()); +// sessionInfo.setIp(userVo.getIp()); +// VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); +//// List<XMLResultDataObjectDetailDO> allResultDataObjectDetailDOS=new ArrayList<>(); +// String finalSystemId = systemId; +// } catch (Throwable e) { +// 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(); +// resultClassfyVO.setClassCode(classVO.getClassCode()); +// resultClassfyVO.setLibrary(classVO.getLibrary()); +// resultClassfyVO.setFullclsfNamePath(classVO.getFullclsfNamePath()); +// resultClassfyVO.setObjects(resultDataObjectDetailDOs); +// resultClassfyVOList.add(resultClassfyVO); +// } +// XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO(); +// xmlResultSystemVO.setClassifys(resultClassfyVOList); +// xmlResultSystemVO.setMsg(msg); +// xmlResultSystemVO.setErrorid(errorid[0]); +// resultStr= transferResultXMl(xmlResultSystemVO,dataType); +// }catch (Throwable e){ +// e.printStackTrace(); +// msg="鐢宠缂栫爜澶辫触:"+e.getMessage(); +// /* XMLResultSystemVO XMLResultSystemVO=new XMLResultSystemVO(); +// XMLResultSystemVO.setErrorid(errorid); +// XMLResultSystemVO.setMsg("鐢宠缂栫爜澶辫触锛�->"+e.getMessage()); +// XMLResultSystemVO.setClassifys(resultClassfyVOList); +// resultStr=transferResultXMl(XMLResultSystemVO,dataType); +// +// log.error("鐢宠缂栫爜澶辫触锛�->"+e); +// return resultStr;*/ +// }finally { +// XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO(); +// xmlResultSystemVO.setClassifys(resultClassfyVOList); +// xmlResultSystemVO.setMsg(msg); +// xmlResultSystemVO.setErrorid(errorid[0]); +// resultStr= transferResultXMl(xmlResultSystemVO,dataType); +// final boolean[] issucess = {true}; +// if(!errorid[0].equals("0")) { +// issucess[0] = false; +// }else { +// if(!CollectionUtils.isEmpty(resultClassfyVOList)) { +// resultClassfyVOList.stream().forEach(xMLResultClassfyVO -> { +// xMLResultClassfyVO.getObjects().stream().forEach(objec -> { +// if (!(objec.getErrorid().equals("0") || objec.getErrorid().equals("204"))) { +// issucess[0] = false; +// msg=objec.getMsg(); +// } +// }); +// }); +// } +// } +// try { +// //璁板綍鏃ュ織 +// this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "applyCodeForBZ"); +// }catch (Throwable e){ +// e.printStackTrace(); +// } +// } +// log.info("杩斿洖鍙傛暟:"+resultStr); + //璋冪敤闆嗗洟鐢宠鎺ュ彛鐢宠闆嗗洟鐮� + return resultStr; + } /*** * 鏌ヨ鏍¢獙鍒嗙被淇℃伅 * @param classfyVO @@ -1369,13 +2110,15 @@ } private List<ClientBusinessObject> ChangeMapTOClientBusinessObjects(List<Map<String,String>> oldDataMap){ - List<ClientBusinessObject> clientBusinessObjectList=new CopyOnWriteArrayList<>(); - oldDataMap.parallelStream().forEach(dataMap->{ + List<ClientBusinessObject> clientBusinessObjectList=new ArrayList<>(); + oldDataMap.stream().forEach(dataMap->{ ClientBusinessObject clientBusinessObject=new ClientBusinessObject(); DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject); - dataMap.forEach((key,value)->{ - clientBusinessObject.setAttributeValue(key,value); - }); + for (String key:dataMap.keySet()){ + Object value= dataMap.getOrDefault(key,""); + clientBusinessObject.setAttributeValue(key.toLowerCase(Locale.ROOT),value==null?"":value.toString()); + } + clientBusinessObjectList.add(clientBusinessObject); }); return clientBusinessObjectList; } @@ -1574,6 +2317,7 @@ dockingLoge.setParamString(parmaData);//鍙傛暟淇℃伅 dockingLoge.setReturnString(result);//杩斿洖淇℃伅 dockingLoge.setType(operation);//鏃ュ織鎿嶄綔绫诲瀷 + dockingLoge.setCreateTime(new Date()); if(isSucess) { dockingLoge.setInterfaceStatus("true");//鎺ュ彛闆嗘垚鐘舵�� }else{ @@ -1640,6 +2384,7 @@ * @return */ private boolean checkIspass(String systemId,String type,String operationType){ + log.info("systemId锛�"+systemId+",type:"+SysIntegrationDataFlowTypeEnum.getTextByValue(type)+",operationType:"+sysIntegrationPushTypeEnum.getTextByValue(operationType)); if(!CODE_CHECKCONFIG) { return true; } @@ -1660,7 +2405,7 @@ * @return */ private DockingSystemConfig checkIspass(String systemId,String type,String operationType,String classOid){ - DockingSystemConfig dockingSystemConfig=new DockingSystemConfig(); + log.info("systemId锛�"+systemId+",type:"+SysIntegrationDataFlowTypeEnum.getTextByValue(type)+",operationType:"+sysIntegrationPushTypeEnum.getTextByValue(operationType)+",classOid:"+classOid); CodeClassifyVO codeClassifyVO= classifyService.getObjectByOid(classOid); classOid=codeClassifyVO.getOid(); //鏍规嵁绫诲瀷鍘绘煡璇㈤渶瑕侀泦鎴愮殑鍒嗙被鎴栬�呮暟鎹� @@ -1670,16 +2415,21 @@ 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); + List<DockingSystemConfig> dockingSystemConfigList=new ArrayList<>(); + 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.getOid()); + return checkIspass(systemId, type, operationType, codeClassifyVO.getParentCodeClassifyOid()); } } - return dockingSystemConfig; + if(dockingSystemConfigList.size()>0){ + return dockingSystemConfigList.get(0); + }else{ + return new DockingSystemConfig(); + } } } -- Gitblit v1.9.3