From cb41c6645777148f78788b369a6f66ecbdc7111a Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期三, 03 一月 2024 16:14:10 +0800
Subject: [PATCH] 整合代码
---
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java | 629 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 629 insertions(+), 0 deletions(-)
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
new file mode 100644
index 0000000..56b35b8
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
@@ -0,0 +1,629 @@
+package com.vci.ubcs.code.service.impl;
+
+
+import com.alibaba.cloud.commons.lang.StringUtils;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+import com.vci.ubcs.code.constant.MdmDuckingConstant;
+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.data.NodeJosnDTO;
+import com.vci.ubcs.code.dto.datapush.data.NodeObjectDTO;
+import com.vci.ubcs.code.dto.datapush.data.NodeProDTO;
+import com.vci.ubcs.code.dto.datapush.data.NodedataDTO;
+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.SysIntegrationDataFlowTypeEnum;
+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.CodeClassifyTemplateAttrVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
+import com.vci.ubcs.starter.web.enumpck.UserSecretEnum;
+import com.vci.ubcs.starter.web.pagemodel.SessionInfo;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import com.vci.ubcs.starter.web.util.WebUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.tool.api.R;
+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.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
+
+import static com.vci.ubcs.code.constant.MdmDuckingConstant.*;
+
+
+/*
+ * 涓婚搴撻泦鎴愭湇鍔�
+ * @author xiejun
+ * @date 2023-06-19
+**/
+
+@Service
+@Slf4j
+public class CodeDuckingSyncServiceImpl implements ICodeDuckingSyncService {
+ @Value("${dataSyncPush.dataParamName:xmlData}")
+ public String DATA_PARAM_NAME;
+ @Value("${dataSyncPush.dataId:itemid}")
+ private String itemId;
+ @Resource
+ private MdmEngineService mdmEngineServiceI;
+
+ @Resource
+ private IDockingLogeService dockingLogeService;
+ @Resource
+ private IDockingDataService dockingDataService;
+ @Resource
+ private IDockingTaskService dockingTaskService;
+ @Resource
+ private IDockingSystemConfigService dockingSystemConfigService;
+ @Resource
+ private ICodeClassifyService codeClassifyService;
+ /***
+ * resdis缂撳瓨鏈嶅姟
+ */
+ @Resource
+ private BladeRedis bladeRedis;
+ @Resource
+ private IDockingSysIntParamService dockingSysIntParamService;
+ @Resource
+ private IDockingSysIntHeaderService dockingSysIntHeaderService;
+
+
+
+ @Override
+ public void DockingDataSyncScheduing() {
+
+ // insertCache2();
+ initPushDataTaks(1);
+ sendpushDataForService();
+
+ }
+
+ /***
+ *
+ */
+ @Override
+ public void DockingClassSyncScheduing() {
+ initPushDataTaks(2);//鍒嗙被鎺ㄩ��
+ sendpushClsfForService();
+ }
+
+ /***
+ * 鎵嬪姩鍚屾
+ * @param oids
+ * @return
+ */
+ @Transactional(rollbackFor = Throwable.class)
+ @Override
+ public R sendData(String oids) {
+ VciBaseUtil.alertNotNull(oids,"绯荤粺闆嗘垚鍩虹淇℃伅鏁版嵁瀵硅薄",oids,"绯荤粺闆嗘垚鍩虹淇℃伅鐨勪富閿�");
+ List<String> dockingTaskOidList=new ArrayList<>();
+ dockingTaskOidList= VciBaseUtil.str2List(oids);
+ List<DockingTask> newDockingTasks= this.dockingTaskService.listByIds(dockingTaskOidList);
+ Map<String,List<DockingTask>> typeDockingTaskMap=new HashMap<>();
+ newDockingTasks.stream().forEach(newDockingTaskDO->{
+ String btmId=newDockingTaskDO.getBtmId();
+ if(btmId.equalsIgnoreCase(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT))){
+ List<DockingTask> dockingTaskList= typeDockingTaskMap.get(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
+ if(CollectionUtils.isEmpty(dockingTaskList)){
+ dockingTaskList=new ArrayList<>();
+ }
+ dockingTaskList.add(newDockingTaskDO);
+ typeDockingTaskMap.put(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT),dockingTaskList);
+ }else{
+ List<DockingTask> dockingTaskDOList= typeDockingTaskMap.get("data");
+ if(CollectionUtils.isEmpty(dockingTaskDOList)){
+ dockingTaskDOList=new ArrayList<>();
+ }
+ dockingTaskDOList.add(newDockingTaskDO);
+ typeDockingTaskMap.put("data",dockingTaskDOList);
+ }
+ });
+ typeDockingTaskMap.keySet().forEach(type->{
+ List<DockingTask> DockingTaskList=typeDockingTaskMap.get(type);
+ if(!CollectionUtils.isEmpty(DockingTaskList)){
+ if(type.equalsIgnoreCase(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT))){
+ this.sendpushClsfForService(DockingTaskList);
+ }else{
+ this.sendpushDataForService(DockingTaskList);
+ }
+ }
+ });
+ return R.success("鎵嬪姩鎺ㄩ�佸畬鎴�,璇锋牳瀵规槸鍚︽帹閫佹垚鍔�");
+ }
+
+
+ /***
+ * 鏌ヨredis涓暟鎹紝瀵规瘮鍚庢彃鍏ockingtask
+ * @param type
+ */
+ private void initPushDataTaks(int type){
+ initSysadmin();
+ List<DockingSystemConfig> dockingSystemConfigList = dockingSystemConfigService.list(
+ Wrappers.<DockingSystemConfig>query().lambda().eq(DockingSystemConfig::getUsedFlag,"true")
+ .eq(DockingSystemConfig::getPushType,type==2?"2":"1").eq(DockingSystemConfig::getDataFlowType, SysIntegrationDataFlowTypeEnum.PUSH.getValue()));//2鏄唬琛ㄥ垎绫绘帹閫侊紝1鏄唬琛ㄦ暟鎹帹閫�
+
+ if(CollectionUtils.isEmpty(dockingSystemConfigList)){
+ String title=type==2?"鍒嗙被鎺ㄩ��":"鏁版嵁鎺ㄩ��";
+ log.info("info->鎵�鏈夐泦鎴愮郴缁燂紝鏈煡璇㈠埌鐩稿叧鐨勩��"+title+"銆戠殑鎺ュ彛閰嶇疆淇℃伅锛岄厤缃�");
+ return;
+ }
+ Map<String ,List<DockingSystemConfig>> sysIntInfoDOMap = new HashMap<>();//key=classifyoid,value=list<map>
+ for (DockingSystemConfig dockingSystemConfig:dockingSystemConfigList){
+ List<DockingSystemConfig> dockingSystemList = sysIntInfoDOMap.get(dockingSystemConfig.getClassifyOid());
+ if(dockingSystemList==null){
+ dockingSystemList = new ArrayList<>();
+ }
+ dockingSystemList.add(dockingSystemConfig);
+ sysIntInfoDOMap.put(dockingSystemConfig.getClassifyOid(),dockingSystemList);
+ }
+ //鏍规嵁绫诲瀷鍘绘煡璇㈤渶瑕侀泦鎴愮殑鍒嗙被鎴栬�呮暟鎹�
+ LambdaQueryWrapper<DockingData> queryWrapper = Wrappers.<DockingData>lambdaQuery();
+ queryWrapper.eq(DockingData::getSendFlag,"false");
+ if(type==2){
+ queryWrapper.eq(DockingData::getBtmId,DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
+ }else {
+ queryWrapper.notIn(DockingData::getBtmId,DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
+ }
+ List<DockingData> dataList = dockingDataService.list(queryWrapper);
+
+ for (DockingData mapi:dataList){
+ WebUtil.setPersistence(false);
+ String dataoid = mapi.getOid();//data瀵硅薄鐨刼id
+ String classifyoid = mapi.getClassifyOid();
+ String id = mapi.getId();
+ String uniquecode = mapi.getUniqueCode();
+ String btmid = mapi.getBtmId();
+ String btmoid = mapi.getBtmOid();
+ String sendtype = mapi.getSendType();
+ String classifyid = mapi.getClassifyId();
+ String classifyname = mapi.getClassifyName();
+ String curentClassOid=null;
+ if(type==2){
+ curentClassOid=btmoid;
+ }else{
+ curentClassOid=classifyoid;
+ }
+ List<DockingSystemConfig> effectiveSysIntInfoVOs=new ArrayList<>();
+ //鏍规嵁褰撳墠鏁版嵁鐨刬d锛屾煡璇㈣幏鍙栧摢浜涚郴缁熼渶瑕佸仛闆嗘垚
+ List<CodeClassify> parentLeveDO= codeClassifyService.selectAllLevelParentByOid(curentClassOid);
+ if(CollectionUtils.isEmpty(parentLeveDO)){
+ continue;//璇存槑杩欎釜鍒嗙被琚垹鎺変簡锛屼笉鍋氬鐞�
+ }
+ Map<String, CodeClassify> oidCodeclassifyDOMap = parentLeveDO.stream().filter(codeClassifyDO -> codeClassifyDO != null && StringUtils.isNotBlank(codeClassifyDO.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+
+ oidCodeclassifyDOMap.keySet().forEach(oid->{
+ if(sysIntInfoDOMap.containsKey(oid)){
+ List<DockingSystemConfig> sysIntInfoDOS= sysIntInfoDOMap.get(oid);
+ effectiveSysIntInfoVOs.addAll(sysIntInfoDOS);
+ }
+ });
+ //濡傛灉鏍¢獙鐨勭郴缁熸帴鍙d俊鎭笉瀛樺湪锛屽垯鏁版嵁涓嶄笉寰�淇℃伅閲屾帹閫�
+ if(CollectionUtils.isEmpty(effectiveSysIntInfoVOs)){
+ continue;
+ }
+ List<DockingTask> dockingTask_insert = new ArrayList<>();
+ for (DockingSystemConfig sysIntInfoVOi:effectiveSysIntInfoVOs){
+ DockingTask dockingTask = new DockingTask();
+ dockingTask.setOid(VciBaseUtil.getPk());
+ dockingTask.setSendFlag(SEND_FLAG_FALSE);
+ dockingTask.setId(id);//缂栫爜
+ dockingTask.setUniqueCode(uniquecode);
+ dockingTask.setBtmOid(btmoid);//鏁版嵁oid
+ dockingTask.setBtmId(btmid);//鏁版嵁涓氬姟绫诲瀷id
+ dockingTask.setClassifyId(classifyid);//鏁版嵁鍦ㄥ垎绫籭d
+ dockingTask.setClassifyOid(classifyoid);//鏁版嵁鎵�鍦ㄥ垎绫籵id
+ dockingTask.setClassifyName(classifyname);//鏁版嵁鎵�鍦ㄥ垎绫诲悕绉�
+ dockingTask.setSendType(sendtype);//鏁版嵁鎺ㄩ�佺被鍨�
+ dockingTask.setDataOid(dataoid);
+ dockingTask.setCreateTime(new Date());
+ dockingTask.setLastModifyTime(new Date());
+ dockingTask.setCreator("sysAdmin");
+ dockingTask.setLastModifier("sysAdmin");
+ //intinfo
+ dockingTask.setSysInfoOid(sysIntInfoVOi.getOid());//intinfo鐨刼id
+ dockingTask.setSystemOid(sysIntInfoVOi.getSysBaseOid());//绯荤粺oid
+ dockingTask.setSystemCode(sysIntInfoVOi.getSysBaseId());//绯荤粺缂栫爜
+ dockingTask.setSystemName(sysIntInfoVOi.getSysBaseName());//绯荤粺name
+ dockingTask_insert.add(dockingTask);
+ }
+
+ if(dockingTask_insert.size()!=0) {
+ dockingTaskService.saveBatch(dockingTask_insert);
+ }
+ //dockingTaskDaoI.updateByPrimaryKey鏂规硶鎶ラ敊浜嗭紝鎵�浠ユ墜鍐欎簡杩欎釜
+ boolean u = updateDockingDatasSendFlag(dataoid,SEND_FLAG_TRUE);
+ if(!u){
+ log.error("闆嗘垚data鍒嗚В浠诲姟澶辫触锛乨ataoid:"+dataoid);
+ continue;
+ }
+ }
+ }
+
+ /***
+ * 鍙戦�佸垎绫绘暟鎹�
+ */
+ private void sendpushClsfForService(List<DockingTask> dockingTaskList){
+ //姣忎釜task渚濇鎵ц鎺ㄩ��
+ for (DockingTask dockingTask:dockingTaskList){
+ //姣忎釜task涓�涓簨鍔★紝寮�鍚�
+ String paramString="";
+ String sendString="";
+ String backString="";
+ //鏌ヨ绯荤粺鎺ュ彛淇℃伅,ip method,dataType
+ String systeminfooid = dockingTask.getSysInfoOid();//sysininfo 鐨刼id
+ try {
+ //鏌ヨ瑕佹帹閫佺殑鏁版嵁
+ String btmoid = dockingTask.getBtmOid();//鏁版嵁btmid
+ JsonRootDataDTO jsonRootDataDTO=new JsonRootDataDTO();
+ CodeClassify codeClassify=codeClassifyService.getById(btmoid);
+ List<NodeClassifyDTO>nodeClassifyDTOList=new ArrayList<>();
+ NodeClassifyDTO nodeClassifyDTO=new NodeClassifyDTO();
+ nodeClassifyDTO.setClassCode(codeClassify.getId());//鍒嗙被浠e彿
+ nodeClassifyDTO.setDescription(codeClassify.getDescription());//鍒嗙被鎻忚堪
+ nodeClassifyDTO.setFullPathName(codeClassify.getPath());//鍏ㄨ矾寰�
+ nodeClassifyDTO.setLcStatus(codeClassify.getLcStatus());//鐘舵��
+ // CodeClassifyDO parentClassDo=codeClassifyDaoI.selectByPrimaryKey(codeClassifyDO.getParentCodeClassifyOid());
+ nodeClassifyDTO.setPid(codeClassify.getParentCodeClassifyOid());//鐖秈d鑺傜偣
+ nodeClassifyDTO.setId(codeClassify.getOid());//鍒嗙被oid
+ nodeClassifyDTO.setName(codeClassify.getName());//鍒嗙被鍚嶇О
+ nodeClassifyDTOList.add(nodeClassifyDTO);
+ NodeLibraryDTO nodeLibraryDTO=new NodeLibraryDTO();
+ CodeClassifyVO rootClassify=codeClassifyService.getTopClassifyVO(btmoid);
+ nodeLibraryDTO.setClassify(nodeClassifyDTOList);
+ nodeLibraryDTO.setId(rootClassify.getOid());
+ nodeLibraryDTO.setName(rootClassify.getName());
+ nodeLibraryDTO.setClassCode(rootClassify.getId());
+ NodeDataDTO nodeDataDTO=new NodeDataDTO();
+ nodeDataDTO.setLibrary(nodeLibraryDTO);
+ jsonRootDataDTO.setData(nodeDataDTO);
+
+ //鏌ヨ鎺ㄩ�佹帴鍙e弬鏁�
+ DockingSystemConfig dockingSystemConfig = dockingSystemConfigService.getById(systeminfooid);
+ String paramType = dockingSystemConfig.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,dockingSystemConfig,dockingTask,"pushClassifyData");
+ }catch (Throwable e){
+ e.printStackTrace();
+ }finally {
+ //姣忎竴涓猼ask涓�涓簨鐗�
+ }
+ }
+ }
+ /***
+ * 鍙戦�佺紪鐮佷富鏁版嵁
+ */
+ private void sendpushDataForService (List<DockingTask> dockingTaskS){
+ //姣忎釜task渚濇鎵ц鎺ㄩ��
+ for (DockingTask dockingTask:dockingTaskS){
+ //姣忎釜task涓�涓簨鍔★紝寮�鍚�
+ String paramString="";
+ String sendString="";
+ String backString="";
+ try {
+ //鏌ヨ绯荤粺鎺ュ彛淇℃伅,ip method,dataType
+ String systeminfooid = dockingTask.getSysInfoOid();//sysininfo 鐨刼id
+ String classifyoid = dockingTask.getClassifyOid();
+ //鏌ヨ瑕佹帹閫佺殑鏁版嵁
+ String btmoid = dockingTask.getBtmOid();//鏁版嵁btmid
+ String code=dockingTask.getId();;
+ //琛ㄧず鏄富鏁版嵁
+ CodeClassifyTemplateVO codeClassifyTemplateVO = mdmEngineServiceI.getUsedTemplateByClassifyOid(classifyoid);
+ R<List<Map<String, String>>> r = mdmEngineServiceI.getDataByOid(btmoid, codeClassifyTemplateVO.getOid());
+
+ List<CodeClassifyTemplateAttrVO> attrVOS = codeClassifyTemplateVO.getAttributes();
+ Map<String/**鑻辨枃鍚嶇О**/, String/**涓枃鍚嶇О**/> attrIdNameMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t.getName(), (o1, o2) -> o2));
+ Map<String, String> data = new HashMap<>();
+ if (r == null) {
+ JSONObject josni = bladeRedis.get(DOCKING_CACHE2_DELETE + btmoid);
+ data = (Map) josni;
+ } else {
+ data = r.getData().get(0);
+ }
+ List<NodeProDTO> nodeProDTOS = new ArrayList<>();
+ Map<String, String> finalData = data;
+ AtomicReference<String> newItemId= new AtomicReference<>("");
+ attrIdNameMap.keySet().forEach(field -> {
+ if(field.toLowerCase(Locale.ROOT).equals(itemId.toLowerCase(Locale.ROOT))){
+ String Value = finalData.get(field);
+ newItemId.set(Value);
+ }
+ String outName = attrIdNameMap.get(field);
+ if (finalData.containsKey(field)) {
+ String Value = finalData.get(field);
+ NodeProDTO nodeProDTO = new NodeProDTO();
+ nodeProDTO.setFiledName(field);
+ nodeProDTO.setOutname(outName);
+ nodeProDTO.setFiledValue(Value);
+ nodeProDTOS.add(nodeProDTO);
+ }
+ });
+ //鏌ヨ鎺ㄩ�佹帴鍙e弬鏁�
+ DockingSystemConfig dockingSystemConfig = dockingSystemConfigService.getById(systeminfooid);
+ boolean isGroupCodeFlage=false;
+ if(dockingSystemConfig!=null) {
+ isGroupCodeFlage = StringUtils.isBlank(dockingSystemConfig.getIsGroupCodeFlag())?false: Boolean.getBoolean(dockingSystemConfig.getIsGroupCodeFlag());
+ }
+ if(isGroupCodeFlage){
+ code=data.getOrDefault("groupcode","");
+ if(StringUtils.isBlank(code)) {//濡傛灉鏄泦鍥㈢爜锛屾病鏈夐鍙栧埌闆嗗洟鐮佸垯浠诲姟涓嶇粨鏉熺瓑寰呴泦鍥㈢爜鐢宠鍚庡啀閫氳繃瀹氭椂鍣ㄨ皟鐢ㄩ泦鍥㈢爜娈�
+ dockingTask.setDescription("绛夊緟闆嗗洟鐢宠闆嗗洟鐮�");
+ dockingTask.setSendFlag(MdmDuckingConstant.SEND_FLAG_FALSE);
+ dockingTask.setLastModifyTime(new Date());
+ dockingTaskService.updateById(dockingTask);
+ continue;
+ }
+ }
+ String[] classCodeLeves = dockingTask.getClassifyId().split(",");
+ NodeJosnDTO nodeJosnDTO = new NodeJosnDTO();
+ NodedataDTO nodeDataDTO = new NodedataDTO();
+ NodeObjectDTO nodeObjectDTO = new NodeObjectDTO();
+ nodeObjectDTO.setCode(code);//璁剧疆缂栫爜
+ nodeObjectDTO.setClassCode(classCodeLeves[0]);
+ nodeObjectDTO.setStatus(data.get("lcstatus"));
+ nodeObjectDTO.setItemid(newItemId.get());
+ nodeObjectDTO.setLibrary(classCodeLeves[classCodeLeves.length - 1]);
+ nodeObjectDTO.setPro(nodeProDTOS);
+ List<NodeObjectDTO> nodeObjectDTOS = new ArrayList<>();
+ nodeObjectDTOS.add(nodeObjectDTO);
+ nodeDataDTO.setObject(nodeObjectDTOS);
+ nodeJosnDTO.setData(nodeDataDTO);
+
+ String paramType = dockingSystemConfig.getParamType();//xml/json
+ if (paramType.equals(DATATYPE_JSON)) {
+ Object object = JSONObject.toJSON(nodeJosnDTO);
+ 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,dockingSystemConfig, dockingTask,"pushData");
+ }catch (Throwable e){
+ e.printStackTrace();
+ }finally {
+ }
+ }
+ }
+ /***
+ * 璋冪敤鎺ュ彛
+ * @param sendString
+ * @param dockingSystemConfig
+ * @param dockingTask
+ * @throws Throwable
+ */
+ private void callInterface(String sendString , DockingSystemConfig dockingSystemConfig,DockingTask dockingTask,String operation) throws Throwable{
+ String paramString = "";
+
+ String backString = "";
+ String msg="";
+ String url = dockingSystemConfig.getRequestUrl();//url
+ List<ResultNodeObjectDTO> resultNodeObjectDTOS =new ArrayList<>();
+ try {
+ boolean usedFlag= dockingSystemConfig.getUsedFlag().equals("true")?true:false;
+ if(!usedFlag){
+ throw new Throwable("鎺ュ彛宸茬粡鍋滅敤锛�");
+ }
+ String type = dockingSystemConfig.getInterfaceType().toLowerCase(Locale.ROOT);//get/post/webserver/corba
+ String paramType = dockingSystemConfig.getParamType();//xml/json
+ String returnType = dockingSystemConfig.getReturnType();//xml/json
+ String requestmethod= dockingSystemConfig.getRequestMethod();
+ String interfaceFunction = dockingSystemConfig.getInterfaceFunction();//涓昏鏄痺ebservice鐨勬柟娉曞悕
+ String namespace = dockingSystemConfig.getNamespace();//namespace
+ String soapaction = dockingSystemConfig.getSoapAction();//soapaction
+ String targName = dockingSystemConfig.getTargetName();//targName
+ String cxfaxis = dockingSystemConfig.getCxfAxis();//webservice鏄痗xf/axis
+ //鏌ヨparam
+ List<DockingSysIntParam> dockingSysIntParamList = dockingSysIntParamService.list(Wrappers.<DockingSysIntParam>query().lambda().eq(DockingSysIntParam::getInfoOid,dockingSystemConfig.getOid()));
+ //鏌ヨheader
+ List<DockingSysIntHeader> dockingSysIntHeaderList = dockingSysIntHeaderService.list(Wrappers.<DockingSysIntHeader>query().lambda().eq(DockingSysIntHeader::getInfoOid,dockingSystemConfig.getOid()));
+ if(type.equals(URLTYPE_HTTP)) {
+ if (requestmethod.equals(URLTYPE_GET)) {//GET璇锋眰
+ String sendurl = url + "?" + DATA_PARAM_NAME + "=" + sendString;
+ //鎷兼帴param
+ for (DockingSysIntParam dockingSysIntParam : dockingSysIntParamList) {
+ sendurl = sendurl + "&" + dockingSysIntParam.getParamKey() + "=" + dockingSysIntParam.getParamValue();
+ }
+ paramString = sendurl;
+ backString = HttpUtils.get(sendurl);
+ } else if (requestmethod.equals(URLTYPE_POST)) {//POST璇锋眰
+ MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
+ for (DockingSysIntParam dockingSysIntParam : dockingSysIntParamList) {
+ params.add(dockingSysIntParam.getParamKey(), dockingSysIntParam.getParamValue());
+ }
+ params.add(DATA_PARAM_NAME,sendString);
+ paramString = params.toString();
+ MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
+ for (DockingSysIntHeader dockingSysIntHeader : dockingSysIntHeaderList) {
+ headers.add(dockingSysIntHeader.getHeaderKey(), dockingSysIntHeader.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 (DockingSysIntParam dockingSysIntParam : dockingSysIntParamList) {
+ params.add(dockingSysIntParam.getParamKey(), dockingSysIntParam.getParamValue());
+ }
+
+ paramString = sendString;
+ MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
+ for (DockingSysIntHeader dockingSysIntHeader : dockingSysIntHeaderList) {
+ headers.add(dockingSysIntHeader.getHeaderKey(), dockingSysIntHeader.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.getMessage();
+ e.printStackTrace();
+ log.error("璋冪敤鎺ュ彛澶辫触:"+e);
+ // throw new Throwable("璋冪敤鎺ュ彛澶辫触:"+e);
+ ResultNodeObjectDTO resultNodeObjectDTO=new ResultNodeObjectDTO();
+ resultNodeObjectDTO.setErroid("1");
+ resultNodeObjectDTO.setMsg(msg);
+ resultNodeObjectDTO.setCode(dockingSystemConfig.getPushType().equalsIgnoreCase("2")?dockingTask.getClassifyId():dockingTask.getId());
+ resultNodeObjectDTO.setItemid(dockingTask.getBtmOid());
+ resultNodeObjectDTOS.add(resultNodeObjectDTO);
+ }finally {
+ boolean isSend = false;
+ 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 dockingLogeDO = new DockingLog();
+ String oid=VciBaseUtil.getPk();
+ dockingLogeDO.setOid(oid);
+ dockingLogeDO.setSystemCode(dockingTask.getSystemCode());
+ dockingLogeDO.setSystemName(dockingTask.getSystemName());
+ dockingLogeDO.setSystemOid(dockingTask.getSystemOid());
+ dockingLogeDO.setClassifyOid(dockingTask.getClassifyOid());
+ dockingLogeDO.setClassifyId(dockingTask.getClassifyId());
+ dockingLogeDO.setClassifyName(dockingTask.getClassifyName());
+ dockingLogeDO.setCreateTime(new Date());
+ dockingLogeDO.setId(dockingTask.getId());
+ dockingLogeDO.setUniqueCode(dockingTask.getUniqueCode());
+ dockingLogeDO.setParamString(paramString);
+ dockingLogeDO.setReturnString(backString);
+ dockingLogeDO.setInterfaceStatus(isSend?"true":"false");
+ dockingLogeDO.setType(operation);
+ dockingLogeDO.setMsg(msg);
+ log.error("闆嗘垚鎺ㄩ�佹暟鎹�,systemcode:"+dockingTask.getSystemCode()+",systemname:"+dockingTask.getSystemName()+",url:"+url+",param:"+paramString+",e:"+msg);
+ dockingLogeService.save(dockingLogeDO);
+ }
+ //鍏ㄩ兘鎺ユ敹鎴愬姛鐨勬儏鍐典笅,淇敼dockingtask sendflag涓哄凡鍙戦��
+ if(isSend) {
+ dockingTask.setSendFlag(MdmDuckingConstant.SEND_FLAG_TRUE);
+ dockingTask.setLastModifyTime(new Date());
+ dockingTaskService.updateById(dockingTask);
+ }
+ }
+ }
+ /***
+ * 鏌ヨ闇�瑕侀泦鎴愮殑涓氬姟鏁版嵁浠诲姟
+ */
+ private void sendpushDataForService (){
+ initSysadmin();
+ //鏌ヨ鍝簺浠诲姟杩樻病鏈夋墽琛屽畬鎴�
+ //VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingTaskDO.class);
+ //queryWrapper.addQueryMap("sendFlag",MdmDuckingConstant.SEND_FLAG_FALSE);
+ // queryWrapper.addQueryMap("btmId", QueryOptionConstant.NOTIN + "(" + VciBaseUtil.toInSql(DOCKING_DEFAULT_CLASSIFY.toUpperCase(Locale.ROOT)) + ")");
+
+ //鏍规嵁绫诲瀷鍘绘煡璇㈤渶瑕侀泦鎴愮殑鍒嗙被鎴栬�呮暟鎹�
+ LambdaQueryWrapper<DockingTask> queryWrapper = Wrappers.<DockingTask>lambdaQuery();
+ queryWrapper.eq(DockingTask::getSendFlag,MdmDuckingConstant.SEND_FLAG_FALSE);
+ queryWrapper.notIn(DockingTask::getBtmId,DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
+ List<DockingTask> dockingTaskDOS = dockingTaskService.list(queryWrapper);
+ sendpushDataForService(dockingTaskDOS);
+ }
+
+ /***
+ * 鏌ヨ闇�瑕侀泦鎴愮殑鐖跺垎绫讳换鍔�
+ */
+ private void sendpushClsfForService(){
+ initSysadmin();
+ /* //鏌ヨ鍝簺浠诲姟杩樻病鏈夋墽琛屽畬鎴�
+ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingTaskDO.class);
+ queryWrapper.addQueryMap("sendFlag",MdmDuckingConstant.SEND_FLAG_FALSE);
+ queryWrapper.addQueryMap("btmId",DOCKING_DEFAULT_CLASSIFY.toUpperCase(Locale.ROOT));
+ List<DockingTaskDO> dockingTaskDOS = dockingTaskDaoI.selectByWrapper(queryWrapper);*/
+
+ //鏍规嵁绫诲瀷鍘绘煡璇㈤渶瑕侀泦鎴愮殑鍒嗙被鎴栬�呮暟鎹�
+ LambdaQueryWrapper<DockingTask> queryWrapper = Wrappers.<DockingTask>lambdaQuery();
+ queryWrapper.eq(DockingTask::getSendFlag,MdmDuckingConstant.SEND_FLAG_FALSE);
+ queryWrapper.eq(DockingTask::getBtmId,DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
+ List<DockingTask> dockingTaskDOS = dockingTaskService.list(queryWrapper);
+ sendpushClsfForService(dockingTaskDOS);
+ }
+ public void initSysadmin(){
+ SessionInfo sessionInfo = new SessionInfo();
+ sessionInfo.setUserId("sysAdmin");
+ sessionInfo.setUserName("绯荤粺绠$悊鍛�");
+ sessionInfo.setIp(WebUtil.getLocalIp());
+ sessionInfo.setUserOid("193C026F-7DB8-27B4-F383-4E8BE083FB07");
+ sessionInfo.setUserSecret(UserSecretEnum.PRIVACY.getValue()+"");
+ WebUtil.setSessionInfo(sessionInfo);
+ }
+ /**
+ * dockingdata鏍规嵁oid淇敼sendflag
+ * @param oid
+ * @param sendflag
+ * @return
+ */
+ public boolean updateDockingDatasSendFlag(String oid,String sendflag){
+ boolean u=false;
+ DockingData dockingData=dockingDataService.getById(oid);
+ if(dockingData!=null){
+ dockingData.setSendFlag(sendflag);
+ u= dockingDataService.updateById(dockingData);
+ }
+ return u;
+ }
+}
+
--
Gitblit v1.9.3