From 27cddefb0cb28da699954ba1a1756d6bcabafbbe Mon Sep 17 00:00:00 2001 From: ludc <ludc@vci-tech.com> Date: 星期三, 05 三月 2025 17:41:29 +0800 Subject: [PATCH] 集成申码接口调整:当码值按照约定传表名为空的业务场景下传null校验问题和码值组装问题。 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java | 697 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 688 insertions(+), 9 deletions(-) diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java index 2341b7d..53fa337 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java @@ -1,23 +1,702 @@ package com.vci.ubcs.code.service.impl; -import com.baomidou.mybatisplus.core.conditions.Wrapper; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.alibaba.cloud.commons.lang.StringUtils; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.vci.ubcs.code.entity.DockingSystemConfig; -import com.vci.ubcs.code.mapper.DockingSystemConfigMapper; -import com.vci.ubcs.code.service.IDockingSystemConfigService; -import org.springframework.stereotype.Service; +import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.io.xml.DomDriver; +import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO; +import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant; -import java.util.Collection; -import java.util.Map; -import java.util.function.Function; +import com.vci.ubcs.code.dto.DockingSysIntHeaderDTO; +import com.vci.ubcs.code.dto.DockingSystemConfigDTO; +import com.vci.ubcs.code.dto.DockingSysIntParamDTO; +import com.vci.ubcs.code.dto.UpdateSysInfoStatusDTO; +import com.vci.ubcs.code.dto.datapush.classify.JsonRootDataDTO; +import com.vci.ubcs.code.dto.datapush.classify.NodeClassifyDTO; +import com.vci.ubcs.code.dto.datapush.classify.NodeDataDTO; +import com.vci.ubcs.code.dto.datapush.classify.NodeLibraryDTO; +import com.vci.ubcs.code.dto.datapush.result.ResultJsonDTO; +import com.vci.ubcs.code.dto.datapush.result.ResultNodeDataDTO; +import com.vci.ubcs.code.dto.datapush.result.ResultNodeObjectDTO; +import com.vci.ubcs.code.entity.*; +import com.vci.ubcs.code.enumpack.*; +import com.vci.ubcs.code.mapper.*; +import com.vci.ubcs.code.service.*; +import com.vci.ubcs.starter.util.HttpUtils; +import com.vci.ubcs.code.util.WsErpClientUtil; +import com.vci.ubcs.code.vo.pagemodel.*; +import com.vci.ubcs.code.wrapper.DockingSysIntHeaderWrapper; +import com.vci.ubcs.code.wrapper.DockingSysIntParamWrapper; +import com.vci.ubcs.code.wrapper.DockingSystemConfigWrapper; +import com.vci.ubcs.starter.exception.VciBaseException; +import com.vci.ubcs.starter.revision.service.RevisionModelUtil; +import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil; +import com.vci.ubcs.starter.util.MdmBtmTypeConstant; +import com.vci.ubcs.starter.util.UBCSSqlKeyword; +import com.vci.ubcs.starter.web.constant.QueryOptionConstant; +import com.vci.ubcs.starter.web.pagemodel.PageHelper; +import com.vci.ubcs.starter.web.util.BeanUtilForVCI; +import com.vci.ubcs.starter.web.util.VciBaseUtil; +import com.vci.ubcs.starter.web.util.VciDateUtil; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.vci.ubcs.code.constant.MdmDuckingConstant.*; +import static com.vci.ubcs.starter.util.MdmBtmTypeConstant.CODE_CLASSIFY_OID_FIELD; /*** * 绯荤粺鎺ュ彛绠$悊-鎺ュ彛閰嶇疆鏈嶅姟 * @author xiejun * @date 2023-06-01 */ +@Slf4j @Service public class DockingSystemConfigServiceImpl extends ServiceImpl<DockingSystemConfigMapper, DockingSystemConfig> implements IDockingSystemConfigService{ + @Value("${dataSyncPush.dataParamName:xmlData}") + public String DATA_PARAM_NAME; + /*** + * 闆嗘垚绯荤粺绠$悊鏈嶅姟 + */ + @Autowired(required = false) + private DockingSystemConfigMapper dockingSystemConfigMapper; + + /*** + * 闆嗘垚鎺ュ彛-闆嗘垚鎺ュ彛绠$悊鍙傛暟鏈嶅姟 + */ + @Autowired(required = false) + private IDockingSysIntParamService dockingSysIntParamService; + + /*** + * 闆嗘垚鎺ュ彛-闆嗘垚鎺ュ彛绠$悊鍙傛暟鏈嶅姟 + */ + @Autowired(required = false) + private IDockingSysIntHeaderService dockingSysIntHeaderService; + + + + + /*** + * 闆嗘垚鎺ュ彛-闆嗘垚绯荤粺鏈嶅姟 + */ + @Autowired(required = false) + private DockingSystemMapper dockingSystemMapper; +// /*** +// * 浠诲姟鐢熸垚鏈嶅姟 +// */ +// @Resource +// private IDockingTaskService dockingTaskService; + + + /** + * 涓绘暟鎹紩鎿庣殑鏈嶅姟 + */ + @Resource + private MdmEngineService engineService; + + + /** + * 涓婚搴撳垎绫荤殑鏈嶅姟 + */ + @Resource + private ICodeClassifyService classifyService; + /** + * 瀵硅薄鐨勬搷浣� + */ + @Autowired + private RevisionModelUtil revisionModelUtil; + + /** + * 閫氱敤鏌ヨ + */ + @Resource + private CommonsMapper commonsMapper; + + + /** + * 鏃ュ織鏂囦欢鏈嶅姟 + */ + @Resource + private IDockingLogeService dockingLogeService; + + @Override + public IPage<DockingSystemConfigVO> page(Map<String,String>codtionMap, Query query) { + IPage<DockingSystemConfig> pages = page(Condition.getPage(query), UBCSSqlKeyword.buildConditionByMapString(codtionMap)); + List<DockingSystemConfig> dockingSystemConfigList= pages.getRecords(); + dockingSystemConfigList.stream().forEach(dockingSystemConfig -> { + dockingSystemConfig.setDataFlowTypeText(SysIntegrationDataFlowTypeEnum.getTextByValue(dockingSystemConfig.getDataFlowType())); + dockingSystemConfig.setAuthorityTypeText(SysIntegrationAuthorityTypeEnum.getTextByValue(dockingSystemConfig.getAuthorityType())); + dockingSystemConfig.setParamTypeText(SysIntegrationParamAndReturnTypeEnum.getTextByValue(dockingSystemConfig.getParamType())); + dockingSystemConfig.setReturnTypeText(SysIntegrationParamAndReturnTypeEnum.getTextByValue(dockingSystemConfig.getReturnType())); + dockingSystemConfig.setInterfaceTypeText(SysIntegrationRequestTypeEnum.getValueByText(dockingSystemConfig.getInterfaceType())); + dockingSystemConfig.setPushTypeText(sysIntegrationPushTypeEnum.getTextByValue(dockingSystemConfig.getPushType())); + dockingSystemConfig.setRequestMethodText(SysIntegrationRequestMethodEnum.getTextByValue(dockingSystemConfig.getRequestMethod())); + //dockingSystemConfig.setSysBaseName(""); + // dockingSystemConfig.setSourceSysName(""); + //dockingSystemConfig.setTargetSysName(""); + }); + return DockingSystemConfigWrapper.build().pageVO(pages); + } + + /** + * 澧炲姞绯荤粺闆嗘垚鐨勬帴鍙g鐞嗕俊鎭� + * @param dockingSystemConfigDTO 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹紶杈撳璞� + * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞� + */ + @Transactional(rollbackFor = Exception.class) + @Override + public boolean addSave(DockingSystemConfigDTO dockingSystemConfigDTO) throws Throwable { + log.info(" 澧炲姞绯荤粺闆嗘垚鐨勬帴鍙g鐞嗕俊鎭�:"+dockingSystemConfigDTO.toString()); + VciBaseUtil.alertNotNull(dockingSystemConfigDTO, "闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄"); + checkColumnNotNull(dockingSystemConfigDTO); + String systemOid =""; + if(dockingSystemConfigDTO.getDataFlowType().equals(SysIntegrationDataFlowTypeEnum.PUSH.getValue())) { + systemOid = dockingSystemConfigDTO.getTargetSystemOid(); + }else{ + systemOid = dockingSystemConfigDTO.getSourceSystemOid(); + } + DockingSystem dockingSystem = dockingSystemMapper.selectById(systemOid); + if(dockingSystem!=null) { + dockingSystemConfigDTO.setSysBaseOid(systemOid); + dockingSystemConfigDTO.setSysBaseId(dockingSystem.getId()); + dockingSystemConfigDTO.setSysBaseName(dockingSystem.getName()); + dockingSystemConfigDTO.setUsedFlag("true");//璁剧疆榛樿鍚敤鐘舵�� + + //灏咲TO杞崲涓篋O + DockingSystemConfig dockingSystemConfig = new DockingSystemConfig(); + revisionModelUtil.copyFromDTOIgnore(dockingSystemConfigDTO,dockingSystemConfig); + + + List<DockingSysIntParamDTO> sysIntParamDTOList= dockingSystemConfigDTO.getSysIntParamDTOS(); + List<DockingSysIntParam> sysIntParamList=new ArrayList<>(); + if(!CollectionUtils.isEmpty(sysIntParamDTOList)) { + sysIntParamDTOList.stream().forEach(sysIntParamDTO -> { + DockingSysIntParam sysIntParamDO = new DockingSysIntParam(); + sysIntParamDTO.setInfoOid(dockingSystemConfigDTO.getOid()); + BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntParamDTO, sysIntParamDO); + DefaultAttrAssimtUtil.addDefaultAttrAssimt(sysIntParamDO, MdmBtmTypeConstant.SYS_INT_PARAMTERY); + sysIntParamList.add(sysIntParamDO); + }); + } + List<DockingSysIntHeaderDTO> sysIntHeaderDTOs= dockingSystemConfigDTO.getSysIntHeaderDTOS(); + List<DockingSysIntHeader> sysIntHeaderList = new ArrayList<>(); + if(!CollectionUtils.isEmpty(sysIntHeaderDTOs)) { + sysIntHeaderDTOs.stream().forEach(sysIntHeaderDTO -> { + DockingSysIntHeader dockingSysIntHeader = new DockingSysIntHeader(); + sysIntHeaderDTO.setInfoOid(dockingSystemConfigDTO.getOid()); + BeanUtilForVCI.copyPropertiesIgnoreCase(sysIntHeaderDTO, dockingSysIntHeader); + DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingSysIntHeader,MdmBtmTypeConstant.SYS_INT_HEADER); + sysIntHeaderList.add(dockingSysIntHeader); + }); + } + dockingSysIntParamService.saveBatch(sysIntParamList); + dockingSysIntHeaderService.saveBatch(sysIntHeaderList); + DefaultAttrAssimtUtil.addDefaultAttrAssimt(dockingSystemConfig,MdmBtmTypeConstant.SYS_INT_INFO); + dockingSystemConfigMapper.insert(dockingSystemConfig); + }else{ + throw new Throwable("鏍规嵁閫夋嫨鐨勯泦鎴愮郴缁熸湭鏍¢獙鍒扮郴缁熶腑瀛樺湪姝ら泦鎴愮郴缁燂紝璇锋牳瀵癸紒"); + } + return true; + } + + /** + * 淇敼 绯荤粺闆嗘垚鐨勬帴鍙g鐞嗕俊鎭� + * @param dockingSystemConfigDTO 绯荤粺闆嗘垚鐨勭郴缁熶俊鎭暟鎹紶杈撳璞� + * @return 鎵ц缁撴灉锛宻uccess涓簍rue琛ㄧず鎴愬姛锛宮sg鏄け璐ョ殑鎻愮ず淇℃伅锛宱bj鏄坊鍔犲畬鎴愬悗鐨勬樉绀哄璞� + */ + @Transactional(rollbackFor = Exception.class) + @Override + public boolean editSave(DockingSystemConfigDTO dockingSystemConfigDTO) throws Throwable { + VciBaseUtil.alertNotNull(dockingSystemConfigDTO,"鏁版嵁瀵硅薄",dockingSystemConfigDTO.getOid(),"绯荤粺闆嗘垚鍩虹淇℃伅涓婚敭"); + String systemOid =""; + if(dockingSystemConfigDTO.getDataFlowType().equals(SysIntegrationDataFlowTypeEnum.PUSH.getValue())) { + systemOid = dockingSystemConfigDTO.getTargetSystemOid(); + }else{ + systemOid = dockingSystemConfigDTO.getSourceSystemOid(); + } + DockingSystem dockingSystem = dockingSystemMapper.selectById(systemOid); + if(dockingSystem!=null) { + dockingSystemConfigDTO.setSysBaseOid(dockingSystem.getOid()); + dockingSystemConfigDTO.setSysBaseId(dockingSystem.getId()); + dockingSystemConfigDTO.setSysBaseName(dockingSystem.getName()); + //灏咲TO杞崲涓篋O + DockingSystemConfig dockingSystemConfig = dockingSystemConfigMapper.selectById(dockingSystemConfigDTO.getOid()); + revisionModelUtil.copyFromDTOIgnore(dockingSystemConfigDTO, dockingSystemConfig); + String sysInfoOid = dockingSystemConfigDTO.getOid(); + List<DockingSysIntParamDTO> dockingSysIntParamDTOS = dockingSystemConfigDTO.getSysIntParamDTOS(); + List<DockingSysIntParam> dockingSysIntParamList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(dockingSysIntParamDTOS)) { + dockingSysIntParamDTOS.stream().forEach(dockingSysIntParamDTO -> { + DockingSysIntParam dockingSysIntParam = new DockingSysIntParam(); + BeanUtilForVCI.copyPropertiesIgnoreCase(dockingSysIntParamDTO, dockingSysIntParam); + dockingSysIntParamList.add(dockingSysIntParam); + }); + } + List<DockingSysIntHeaderDTO> dockingSysIntHeaderDTOS = dockingSystemConfigDTO.getSysIntHeaderDTOS(); + List<DockingSysIntHeader> dockingSysIntHeaderList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(dockingSysIntHeaderDTOS)) { + dockingSysIntHeaderDTOS.stream().forEach(dockingSysIntHeaderDTO -> { + DockingSysIntHeader dockingSysIntHeader = new DockingSysIntHeader(); + BeanUtilForVCI.copyPropertiesIgnoreCase(dockingSysIntHeaderDTO, dockingSysIntHeader); + dockingSysIntHeaderList.add(dockingSysIntHeader); + }); + } + + //鎵归噺澶勭悊淇濆瓨header瀵硅薄 + if (!CollectionUtils.isEmpty(dockingSysIntHeaderList)) { + List<String> idList = new ArrayList<>(); + List<DockingSysIntHeader> headers_old = this.dockingSysIntHeaderService.list(Wrappers.<DockingSysIntHeader>query().lambda().eq(DockingSysIntHeader::getInfoOid, sysInfoOid)); + ; + for (DockingSysIntHeader sysIntHeader : headers_old) { + sysIntHeader.setUsedFlag(FLAG_FAIL); + idList.add(sysIntHeader.getOid()); + } + if (idList.size() != 0) { + boolean res = dockingSysIntHeaderService.removeBatchByIds(idList); + } + //鍐嶆柊澧瀐eaders + for (DockingSysIntHeader sysIntHeader : dockingSysIntHeaderList) { + sysIntHeader.setUsedFlag(FLAG_TRUE); + sysIntHeader.setInfoOid(dockingSystemConfig.getOid()); + + } + boolean res = dockingSysIntHeaderService.saveBatch(dockingSysIntHeaderList); + } + //鎵归噺澶勭悊淇濆瓨Param瀵硅薄 + if (!CollectionUtils.isEmpty(dockingSysIntParamList)) { + //鍏堝垹闄arams_old + List<String> idList = new ArrayList<>(); + List<DockingSysIntParam> params_old = this.dockingSysIntParamService.list(Wrappers.<DockingSysIntParam>query().lambda().eq(DockingSysIntParam::getInfoOid, sysInfoOid)); + for (DockingSysIntParam sysIntParamDO : params_old) { + sysIntParamDO.setUsedFlag(FLAG_FAIL); + idList.add(sysIntParamDO.getOid()); + } + if (idList.size() != 0) { + boolean res = dockingSysIntParamService.removeBatchByIds(idList); + } + //鍐嶆柊澧瀙arams + for (DockingSysIntParam sysIntParamDOi : dockingSysIntParamList) { + sysIntParamDOi.setUsedFlag(FLAG_TRUE); + sysIntParamDOi.setInfoOid(dockingSystemConfig.getOid()); + } + dockingSysIntParamService.saveBatch(dockingSysIntParamList); + } + this.dockingSystemConfigMapper.updateById(dockingSystemConfig); + }else{ + throw new Throwable("鏍规嵁閫夋嫨鐨勯泦鎴愮郴缁熸湭鏍¢獙鍒扮郴缁熶腑瀛樺湪姝ら泦鎴愮郴缁燂紝璇锋牳瀵癸紒"); + } + return true; + } + /*** + * 鏇存柊鎺ュ彛閰嶇疆淇℃伅鐘舵�� + * @param sysInfoStatusDTO + * @return + */ + @Override + public R updateStatus(UpdateSysInfoStatusDTO sysInfoStatusDTO) { + VciBaseUtil.alertNotNull(sysInfoStatusDTO.getOid(),"鏁版嵁瀵硅薄",sysInfoStatusDTO.getOid(),"绯荤粺闆嗘垚鍩虹淇℃伅涓婚敭"); + DockingSystemConfig dockingSystemConfig = this.dockingSystemConfigMapper.selectById(sysInfoStatusDTO.getOid()); + try { + dockingSystemConfig.setTs(VciDateUtil.str2Date(sysInfoStatusDTO.getTs(), VciDateUtil.DateTimeFormat)); + } catch (Exception e) { + e.printStackTrace(); + } + if(sysInfoStatusDTO.getUpdate().equals("disable")) { + dockingSystemConfig.setUsedFlag("false"); + }else{ + dockingSystemConfig.setUsedFlag("true"); + } + dockingSystemConfigMapper.updateById(dockingSystemConfig); + return R.status(true); + } + + /*** + * 鎵嬪姩鍚屾鎺ュ彛锛屽彧鏈夋帹閫佺殑鎵嶄細 + * @param dockingSystemConfigDTO + * @return + * @throws VciBaseException + */ + @Transactional(rollbackFor = Exception.class) + @Override + public R pushData(DockingSystemConfigDTO dockingSystemConfigDTO) throws VciBaseException { + VciBaseUtil.alertNotNull(dockingSystemConfigDTO.getOid(),"鏁版嵁瀵硅薄",dockingSystemConfigDTO.getOid(),"绯荤粺闆嗘垚閰嶇疆淇℃伅涓婚敭"); + if(dockingSystemConfigDTO.getDataFlowType().equals(SysIntegrationDataFlowTypeEnum.ACCEPT.getValue())){ + throw new VciBaseException("浣犳墍閫夋嫨闆嗘垚閰嶇疆淇℃伅涓嶅睘浜庢帹閫佺被鍨嬬殑鎺ュ彛閰嶇疆锛�"); + } + boolean issuccess=false; + String type="鏁版嵁鎺ㄩ��"; + if(dockingSystemConfigDTO.getPushType().equalsIgnoreCase("1")){//鎺ㄩ�佹暟鎹� + pushDockingTasks(dockingSystemConfigDTO); + }else if(dockingSystemConfigDTO.getPushType().equalsIgnoreCase("2")){//鎺ㄩ�佸垎绫� + issuccess= pushClsfDatas(dockingSystemConfigDTO); + type="鍒嗙被鎺ㄩ��"; + } + return issuccess?R.success(type+"鎴愬姛锛�"):R.fail(type+"澶辫触锛�"); + } + + /** + * + * @param dockingSystemConfig + * @param dockingSysIntHeaderList + * @param dockingSysIntParamList + * @return + */ + private DockingSystemConfigVO changeoDckingSystemEntityVOs(DockingSystemConfig dockingSystemConfig , List<DockingSysIntHeader> dockingSysIntHeaderList , List<DockingSysIntParam> dockingSysIntParamList) { + DockingSystemConfigVO vo = new DockingSystemConfigVO(); + if(dockingSystemConfig != null){ + BeanUtilForVCI.copyPropertiesIgnoreCase(dockingSystemConfig,vo); + //濡傛灉鏈塴cstatus鐨勭被鐨勮瘽 + if(!CollectionUtils.isEmpty(dockingSysIntParamList)) { + List<DockingSysIntParamVO> dockingSysIntParamVOList = DockingSysIntParamWrapper.build().entityVOs(dockingSysIntParamList); + vo.setSysIntParamVOs(dockingSysIntParamVOList); + } + if(!CollectionUtils.isEmpty(dockingSysIntHeaderList)){ + List<DockingSysIntHeaderVO> dockingSysIntHeaderVOList= DockingSysIntHeaderWrapper.build().entityVOs(dockingSysIntHeaderList); + vo.setSysIntHeaderVOs(dockingSysIntHeaderVOList); + } + } + return vo; + } + + @Override + public boolean deleteDataById(String oids) { + VciBaseUtil.alertNotNull(oids, "鏁版嵁涓婚敭涓虹┖"); + List<String> oidList=VciBaseUtil.str2List(oids); + int i=dockingSystemConfigMapper.deleteBatchIds(oidList); + return i>0?true:false; + } + + /** + * 绯荤粺闆嗘垚鎺ュ彛鍩虹淇℃伅Null瀛楁妫�楠� + * @param dockingSystemConfigDTO 绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁浼犺緭瀵硅薄 + * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父 + */ + private void checkColumnNotNull(DockingSystemConfigDTO dockingSystemConfigDTO) throws VciBaseException { + if (SysIntegrationRequestTypeEnum.HTTP.getValue().equals(dockingSystemConfigDTO.getInterfaceType())){ + VciBaseUtil.alertNotNull(dockingSystemConfigDTO.getRequestUrl(),"HTTP鎺ュ彛鐨勮姹傚湴鍧�",dockingSystemConfigDTO.getRequestMethod(),"HTTP鎺ュ彛鐨勮姹傛柟寮�"); + } + if (SysIntegrationRequestTypeEnum.WEB_SERVICE.getValue().equals(dockingSystemConfigDTO.getInterfaceType())){ + VciBaseUtil.alertNotNull(dockingSystemConfigDTO.getInterfaceFunction(),"WebService鐨勬帴鍙e嚱鏁�"); + } + if (SysIntegrationRequestTypeEnum.CLASSPATH.getValue().equals(dockingSystemConfigDTO.getInterfaceType())){ + VciBaseUtil.alertNotNull(dockingSystemConfigDTO.getClassPath(),"绫昏矾寰�"); + } + } + + private R pushDockingTasks(DockingSystemConfigDTO dockingSystemConfigDTO) { + String msg="鏁版嵁鎺ㄩ�佸埌瀹氭椂浠诲姟鎴愬姛锛�"; + try { + DockingSystemConfig dockingSystemConfig =dockingSystemConfigMapper.selectById(dockingSystemConfigDTO.getOid()); + String codeClassifyOid = dockingSystemConfig.getClassifyOid(); + CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyOid); + CodeClassifyVO topClassifyVO = classifyService.getTopClassifyVO(codeClassifyOid); + String btmTypeId = topClassifyVO.getBtmTypeId(); + if (StringUtils.isBlank(btmTypeId)) { + return R.fail("杩欎釜鍒嗙被鎵�灞為《灞傚垎绫绘病鏈夋坊鍔犱笟鍔$被鍨�"); + } + List<CodeClassifyVO> codeClassifyIdPathVOS = classifyService.listChildrenClassify(topClassifyVO.getOid(), true, "id", false); + List<CodeClassifyVO> codeClassifynamePathVOS = classifyService.listChildrenClassify(topClassifyVO.getOid(), true, "name", false); + Map<String/**鍒嗙被oid**/, String/**鍒嗙被浠e彿閾炬帴绗�**/> clsfOidIdMap = codeClassifyIdPathVOS.stream().collect(Collectors.toMap(s -> s.getOid(), t -> reverseOrderByList(t.getPath(), topClassifyVO, 1).toLowerCase(Locale.ROOT), (o1, o2) -> o2)); + Map<String/**鍒嗙被oid**/, String/**鍒嗙被鍚嶇О閾炬帴绗�**/> clsfOidNameMap = codeClassifynamePathVOS.stream().collect(Collectors.toMap(s -> s.getOid(), t -> reverseOrderByList(t.getPath(), topClassifyVO, 2).toLowerCase(Locale.ROOT), (o1, o2) -> o2)); + PageHelper pageHelper = new PageHelper(); + pageHelper.setPage(1); + pageHelper.setLimit(1000000); + pageHelper.setStart(0); + + HashMap<String, String> conditionMap = new HashMap<>(); + if (!classifyService.checkHasChild(codeClassifyOid)) { + conditionMap.put(CODE_CLASSIFY_OID_FIELD, codeClassifyOid); + } else { + conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY) + + " where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED + + "' start with parentCodeClassifyOid = '" + codeClassifyOid + "' CONNECT BY PRIOR OID = parentCodeClassifyOid )"); + } + conditionMap.put("islastr", "1"); + conditionMap.put("islastv", "1"); + List<String> lcstatusList = new ArrayList<>(Arrays.asList(new String[]{"TakeBack", "Released", "Disabled"})); + conditionMap.put("lcstatus", QueryOptionConstant.IN + VciBaseUtil.toInSql(lcstatusList.toArray(new String[0]))); + + CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(btmTypeId, templateVO, conditionMap, pageHelper); + List<Map<String,String>> maps = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlHasPage()); + List<DockingTask> dockingTaskDO_insert = new ArrayList<>(); + if (!CollectionUtils.isEmpty(maps)) { + maps.stream().forEach(map -> { + String btmoid = map.get("oid".toUpperCase(Locale.ROOT)) == null ? "" : map.get("oid".toUpperCase(Locale.ROOT)).toString();//鏁版嵁oid + String sendtype = map.get("lcstatus".toUpperCase(Locale.ROOT)) == null ? "" : map.get("lcstatus".toUpperCase(Locale.ROOT)).toString();//鏁版嵁鎺ㄩ�佺被鍨� + String id = map.get("id".toUpperCase(Locale.ROOT)) == null ? "" : map.get("id".toUpperCase(Locale.ROOT)).toString();//缂栫爜 + String btmid = topClassifyVO.getBtmTypeId();//鏁版嵁涓氬姟绫诲瀷 + String classifyoid = map.get("codeclsfid".toUpperCase(Locale.ROOT)) == null ? "" : map.get("codeclsfid".toUpperCase(Locale.ROOT)).toString();//鏁版嵁鎵�鍦ㄧ殑鍒嗙被id + String date2Str = VciDateUtil.date2Str(new Date(), VciDateUtil.DateTimeFormatStr); + DockingTask dockingTaskDO = new DockingTask(); + dockingTaskDO.setOid(date2Str +"_"+id); + dockingTaskDO.setSendFlag(SEND_FLAG_FALSE); + dockingTaskDO.setId(id);//缂栫爜 + dockingTaskDO.setUniqueCode(""); + dockingTaskDO.setBtmOid(btmoid);//鏁版嵁oid + dockingTaskDO.setBtmId(btmid);//鏁版嵁涓氬姟绫诲瀷id + if (clsfOidIdMap.containsKey(classifyoid)) { + String classifyid = clsfOidIdMap.get(classifyoid); + dockingTaskDO.setClassifyId(classifyid);//鏁版嵁鍦ㄥ垎绫籭d + } + dockingTaskDO.setClassifyOid(classifyoid);//鏁版嵁鎵�鍦ㄥ垎绫籵id + if (clsfOidNameMap.containsKey(classifyoid)) { + String classifyname = clsfOidNameMap.get(classifyoid); + dockingTaskDO.setClassifyName(classifyname);//鏁版嵁鎵�鍦ㄥ垎绫诲悕绉� + } + dockingTaskDO.setSendType(sendtype);//鏁版嵁鎺ㄩ�佺被鍨� + //String dataoid=redisService.getUUIDEveryDay(); + dockingTaskDO.setDataOid(date2Str +"_"+ btmoid); + //intinfo + dockingTaskDO.setSysInfoOid(dockingSystemConfigDTO.getOid());//intinfo鐨刼id + dockingTaskDO.setSystemOid(dockingSystemConfigDTO.getSysBaseOid());//绯荤粺oid + dockingTaskDO.setSystemCode(dockingSystemConfigDTO.getSysBaseId());//绯荤粺缂栫爜 + dockingTaskDO.setSystemName(dockingSystemConfigDTO.getSysBaseName());//绯荤粺name + dockingTaskDO_insert.add(dockingTaskDO); + }); + } +// dockingTaskService.saveBatch(dockingTaskDO_insert); + }catch (Throwable e){ + msg="鏁版嵁鎺ㄩ�佸埌瀹氭椂浠诲姟澶辫触!"; + log.error("鏁版嵁鎺ㄩ�佸埌瀹氭椂浠诲姟澶辫触!"+e); + e.printStackTrace(); + }finally { + log.info(msg); + return R.success("鏁版嵁鎺ㄩ�佸埌瀹氭椂浠诲姟鎴愬姛锛�"); + } + } + + /*** + * 鍒嗙被鎺ㄩ�侀泦鎴� + * @param dockingSystemConfigDTO + * @return + */ + private boolean pushClsfDatas(DockingSystemConfigDTO dockingSystemConfigDTO){ + DockingSystemConfig dockingSystemConfig= dockingSystemConfigMapper.selectById(dockingSystemConfigDTO.getOid()); + String classOid= dockingSystemConfig.getClassifyOid(); + List<CodeClassifyVO> listChildrenClassify= classifyService.listChildrenClassify(classOid,true,"id",false); + List<NodeClassifyDTO>nodeClassifyDTOList=new ArrayList<>(); + JsonRootDataDTO jsonRootDataDTO=new JsonRootDataDTO(); + NodeDataDTO nodeDataDTO=new NodeDataDTO(); + //姣忎釜task涓�涓簨鍔★紝寮�鍚� + boolean isSuccess=false; + try { + String sendString = ""; + if (!CollectionUtils.isEmpty(listChildrenClassify)) { + listChildrenClassify.stream().forEach(codeClassifyVO -> { + NodeClassifyDTO nodeClassifyDTO = new NodeClassifyDTO(); + nodeClassifyDTO.setClassCode(codeClassifyVO.getId());//鍒嗙被浠e彿 + nodeClassifyDTO.setDescription(codeClassifyVO.getDescription());//鍒嗙被鎻忚堪 + nodeClassifyDTO.setFullPathName(codeClassifyVO.getPath());//鍏ㄨ矾寰� + nodeClassifyDTO.setLcStatus(codeClassifyVO.getLcStatus());//鐘舵�� + nodeClassifyDTO.setPid(codeClassifyVO.getId());//鐖秈d鑺傜偣 + nodeClassifyDTO.setId(codeClassifyVO.getOid());//鍒嗙被oid + nodeClassifyDTO.setName(codeClassifyVO.getName());//鍒嗙被鍚嶇О + nodeClassifyDTOList.add(nodeClassifyDTO); + }); + NodeLibraryDTO nodeLibraryDTO = new NodeLibraryDTO(); + nodeLibraryDTO.setClassify(nodeClassifyDTOList); + CodeClassifyVO rootClassify = classifyService.getTopClassifyVO(classOid); + nodeLibraryDTO.setId(rootClassify.getOid()); + nodeLibraryDTO.setName(rootClassify.getName()); + nodeDataDTO.setLibrary(nodeLibraryDTO); + jsonRootDataDTO.setData(nodeDataDTO); + String paramType = dockingSystemConfigDTO.getParamType();//xml/json + if (paramType.equals(DATATYPE_JSON)) { + Object object = JSONObject.toJSON(jsonRootDataDTO); + sendString = object.toString(); + } else { + //缁勭粐杩斿洖鎺ュ彛淇℃伅 + XStream xStream = new XStream(new DomDriver()); + xStream.processAnnotations(NodeDataDTO.class); + xStream.autodetectAnnotations(true); + sendString = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(nodeDataDTO); + } + //璋冪敤鎺ュ彛 + callInterface(sendString, dockingSystemConfigDTO); + isSuccess=true; + } + }catch (Throwable e){ + e.printStackTrace(); + isSuccess=false; + }finally { + return true; + } + } + + /*** + * 璋冪敤鎺ュ彛 + * @param dockingSystemConfigDTO + * @throws Throwable + */ + private void callInterface(String sendString , DockingSystemConfigDTO dockingSystemConfigDTO) throws Throwable{ + String paramString = ""; + + String backString = ""; + String msg=""; + String url = dockingSystemConfigDTO.getRequestUrl();//url + List<ResultNodeObjectDTO> resultNodeObjectDTOS =new ArrayList<>(); + try { + String type = dockingSystemConfigDTO.getInterfaceType().toLowerCase(Locale.ROOT);//get/post/webserver/corba + String paramType = dockingSystemConfigDTO.getParamType();//xml/json + String returnType = dockingSystemConfigDTO.getReturnType();//xml/json + String requestmethod= dockingSystemConfigDTO.getRequestMethod(); + String interfaceFunction = dockingSystemConfigDTO.getInterfaceFunction();//涓昏鏄痺ebservice鐨勬柟娉曞悕 + String namespace = dockingSystemConfigDTO.getNamespace();//namespace + String soapaction = dockingSystemConfigDTO.getSoapAction();//soapaction + String targName = dockingSystemConfigDTO.getTargetName();//targName + String cxfaxis = dockingSystemConfigDTO.getCxfAxis();//webservice鏄痗xf/axis + //鏌ヨparam + List<DockingSysIntParamDTO> sysIntParamVOList = dockingSystemConfigDTO.getSysIntParamDTOS(); + //鏌ヨheader + List<DockingSysIntHeaderDTO> sysIntHeaderVOList =dockingSystemConfigDTO.getSysIntHeaderDTOS(); + if(type.equals(URLTYPE_HTTP)) { + if (requestmethod.equals(URLTYPE_GET)) {//GET璇锋眰 + String sendurl = url + "?" + DATA_PARAM_NAME + "=" + sendString; + //鎷兼帴param + for (DockingSysIntParamDTO sysIntParamVO : sysIntParamVOList) { + sendurl = sendurl + "&" + sysIntParamVO.getParamKey() + "=" + sysIntParamVO.getParamValue(); + } + paramString = sendurl; + backString = HttpUtils.get(sendurl); + } else if (requestmethod.equals(URLTYPE_POST)) {//POST璇锋眰 + MultiValueMap<String, String> params = new LinkedMultiValueMap<>(); + if(!CollectionUtils.isEmpty(sysIntParamVOList)) { + for (DockingSysIntParamDTO sysIntParamVO : sysIntParamVOList) { + params.add(sysIntParamVO.getParamKey(), sysIntParamVO.getParamValue()); + } + } + params.add(DATA_PARAM_NAME,sendString); + paramString = params.toString(); + MultiValueMap<String, String> headers = new LinkedMultiValueMap<>(); + if(!CollectionUtils.isEmpty(sysIntHeaderVOList)) { + for (DockingSysIntHeaderDTO sysIntHeaderVO : sysIntHeaderVOList) { + headers.add(sysIntHeaderVO.getHeaderKey(), sysIntHeaderVO.getHeaderValue()); + } + } + backString = HttpUtils.post(url, params, headers); + } + if(backString.startsWith("\"")){ + backString=backString.substring(backString.indexOf("\"")+1); + } + if(backString.endsWith("\"")){ + backString=backString.substring(0,backString.lastIndexOf("\"")); + } + if(backString.contains("\n")){ + String res="\n"; + backString= backString.replaceAll(res,""); + } + if(backString.contains("\\")){ + String res="\\\\\""; + backString= backString.replaceAll(res,"\"").trim(); + } + }else if (type.equals(URLTYPE_WEBSERVICE)) {//webserver璇锋眰 + MultiValueMap<String, String> params = new LinkedMultiValueMap<>(); + for (DockingSysIntParamDTO sysIntParamVO : sysIntParamVOList) { + params.add(sysIntParamVO.getParamKey(), sysIntParamVO.getParamValue()); + } + paramString = sendString; + MultiValueMap<String, String> headers = new LinkedMultiValueMap<>(); + for (DockingSysIntHeaderDTO sysIntHeaderVO : sysIntHeaderVOList) { + headers.add(sysIntHeaderVO.getHeaderKey(), sysIntHeaderVO.getHeaderValue()); + } + backString = WsErpClientUtil.sendMsg(url, namespace, soapaction, interfaceFunction, targName, sendString, 10000); + + } else {//corba鎺ュ彛 + //paramString=sendString; + // backString = jacorbClient.getBOFactoryService().sendCode(sendString); + } + + ResultJsonDTO resultJsonDTO = new ResultJsonDTO(); + if(returnType.equals(DATATYPE_JSON)){ + resultJsonDTO =JSONObject.toJavaObject(JSONObject.parseObject(backString), ResultJsonDTO.class); + }else { + //缁勭粐杩斿洖鎺ュ彛淇℃伅 + XStream xStream = new XStream(new DomDriver()); + xStream.processAnnotations(ResultNodeDataDTO.class); + xStream.autodetectAnnotations(true); + ResultNodeDataDTO resultNodeDataDTO = (ResultNodeDataDTO) xStream.fromXML(backString); + resultJsonDTO.setData(resultNodeDataDTO); + } + ResultNodeDataDTO resultNodeDataDTO=resultJsonDTO.getData(); + resultNodeObjectDTOS=resultNodeDataDTO.getObject(); + + }catch (Throwable e){ + msg="璋冪敤鎺ュ彛澶辫触:"+e; + e.printStackTrace(); + // throw new Throwable("璋冪敤鎺ュ彛澶辫触:"+e); + ResultNodeObjectDTO resultNodeObjectDTO=new ResultNodeObjectDTO(); + resultNodeObjectDTO.setErroid("1"); + resultNodeObjectDTO.setMsg(msg); + resultNodeObjectDTO.setCode(dockingSystemConfigDTO.getClassifyId()); + resultNodeObjectDTO.setItemid(dockingSystemConfigDTO.getClassifyOid()); + resultNodeObjectDTOS.add(resultNodeObjectDTO); + }finally { + boolean isSend = false; + List<DockingLog> dockingLogList=new ArrayList<>(); + for (ResultNodeObjectDTO resultNodeObjectDTO:resultNodeObjectDTOS){ + String erroid = resultNodeObjectDTO.getErroid(); + msg = resultNodeObjectDTO.getMsg(); + if("0".equals(erroid)){ + isSend = true; + }else if("1".equals(erroid)){ + isSend=false; + }else{ + isSend=false; + } + DockingLog dockingLog = new DockingLog(); + String oid=VciBaseUtil.getPk(); + dockingLog.setOid(oid); + dockingLog.setSystemCode(dockingSystemConfigDTO.getSysBaseId()); + dockingLog.setSystemName(dockingSystemConfigDTO.getSysBaseName()); + dockingLog.setSystemOid(dockingSystemConfigDTO.getSysBaseOid()); + dockingLog.setClassifyOid(dockingSystemConfigDTO.getClassifyOid()); + dockingLog.setClassifyId(dockingSystemConfigDTO.getClassifyId()); + dockingLog.setClassifyName(dockingSystemConfigDTO.getClassifyName()); + dockingLog.setId(dockingSystemConfigDTO.getId()); + dockingLog.setUniqueCode(""); + dockingLog.setCreateTime(new Date()); + dockingLog.setInterfaceStatus(isSend?"true":"false"); + dockingLog.setParamString(paramString); + dockingLog.setType(DATA_LOGE_OUT); + dockingLog.setReturnString(backString); + dockingLog.setMsg(msg); + dockingLogList.add(dockingLog); + log.info("闆嗘垚鎺ㄩ�佹暟鎹�,systemcode:"+dockingSystemConfigDTO.getSysBaseId()+",systemname:"+dockingSystemConfigDTO.getSysBaseName()+",url:"+url+",param:"+paramString+",e:"+msg); + } + dockingLogeService.saveBatch(dockingLogList); + } + } + + private String reverseOrderByList(String StringValue, CodeClassifyVO topClassifyVO,int type){ + String[] s=StringValue.split("#"); + StringBuffer sb=new StringBuffer(); + List<String> list=new ArrayList<>(Arrays.asList(s)); + Collections.reverse(list); + System.out.println(list.toString()); + for (String o:list){ + if(StringUtils.isNotBlank(o)){ + sb.append(o).append(","); + } + } + sb.append(type==1?topClassifyVO.getId():topClassifyVO.getName()); + System.out.println(sb.toString()); + + return sb.toString(); + } } -- Gitblit v1.9.3