ludc
2023-06-19 89a21c0eecacd040e8189faeda6f73f69167cdc9
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
@@ -1,37 +1,35 @@
/*
package com.vci.ubcs.code.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.vci.ubcs.code.constant.MdmDuckingConstant;
import com.vci.ubcs.code.mapper.CodeClassifyMapper;
import com.vci.ubcs.code.mapper.DockingDataMapper;
import com.vci.ubcs.code.mapper.DockingLogeMapper;
import com.vci.ubcs.code.mapper.DockingTaskMapper;
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.service.CodeDuckingSyncServiceI;
import com.vci.ubcs.code.service.MdmEngineServiceI;
import com.vci.ubcs.code.service.SysIntInfoServiceI;
import com.vci.ubcs.code.utils.HttpUtils;
import com.vci.ubcs.code.utils.WsErpClientUtil;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.vci.mdm.constant.MdmDuckingConstant;
import com.vci.mdm.dao.*;
import com.vci.mdm.dto.datapush.classify.JsonRootDataDTO;
import com.vci.mdm.dto.datapush.classify.NodeClassifyDTO;
import com.vci.mdm.dto.datapush.classify.NodeDataDTO;
import com.vci.mdm.dto.datapush.classify.NodeLibraryDTO;
import com.vci.mdm.dto.datapush.data.NodeJosnDTO;
import com.vci.mdm.dto.datapush.data.NodeObjectDTO;
import com.vci.mdm.dto.datapush.data.NodeProDTO;
import com.vci.mdm.dto.datapush.data.NodedataDTO;
import com.vci.mdm.dto.datapush.result.ResultJsonDTO;
import com.vci.mdm.dto.datapush.result.ResultNodeDataDTO;
import com.vci.mdm.dto.datapush.result.ResultNodeObjectDTO;
import com.vci.mdm.model.*;
import com.vci.mdm.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.mdm.pagemodel.CodeClassifyTemplateVO;
import com.vci.mdm.pagemodel.SysIntInfoVO;
import com.vci.mdm.service.*;
import com.vci.mdm.utils.*;
import com.vci.starter.web.constant.QueryOptionConstant;
import com.vci.starter.web.enumpck.UserSecretEnum;
import com.vci.starter.web.pagemodel.BaseResult;
import com.vci.starter.web.pagemodel.SessionInfo;
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
import com.vci.ubcs.code.entity.*;
import com.vci.web.pageModel.BatchCBO;
import com.vci.web.redis.RedisService;
import com.vci.web.service.WebBoServiceI;
@@ -40,9 +38,6 @@
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
import com.vci.ubcs.code.vo.pagemodel.SysIntInfoVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
@@ -55,76 +50,100 @@
import java.util.*;
import java.util.stream.Collectors;
import static com.vci.mdm.constant.MdmDuckingConstant.*;
*/
/**
 * 主题库集成服务
 * @author wangyi
 * @date 2022-03-20
 */
 *//*
@Service
public class CodeDuckingSyncServiceImpl implements CodeDuckingSyncServiceI {
    /**
    */
/**
     * 日志
     */
     *//*
    private Logger logger = LoggerFactory.getLogger(getClass());
    /**
    */
/**
     * 集成推送任务数据操作层
     */
    @Resource
    private DockingTaskMapper dockingTaskDaoI;
     *//*
    /**
    @Resource
    private DockingTaskDaoI dockingTaskDaoI;
    */
/**
     * 集成推送任务数据操作层
     */
    @Resource
    private DockingDataMapper dockingDataDaoI;
     *//*
    /**
    @Resource
    private DockingDataDaoI dockingDataDaoI;
    */
/**
     * 集成日志数据操作层
     */
    @Resource
    private DockingLogeMapper dockingLogeDaoI;
     *//*
    /**
    @Resource
    private DockingLogeDaoI dockingLogeDaoI;
    */
/**
     * 模板属性数据操作层
     */
     *//*
    @Resource
    private CodeClassifyMapper codeClassifyDaoI;
    private CodeClassifyDaoI codeClassifyDaoI;
    /**
    */
/**
     * 业务类型操作的服务
     */
    @Autowired
   private WebBoServiceI boService;
     *//*
    /**
    @Autowired
    private WebBoServiceI boService;
    */
/**
     * 缓存服务
     */
     *//*
    @Autowired
    private RedisService redisService;
    /**
    */
/**
     * 数据服务
     */
     *//*
    @Autowired(required = false)
    @Lazy
    private MdmEngineServiceI mdmEngineServiceI;
    /**
    */
/**
     * 要推送系统的服务
     */
     *//*
    @Autowired
    private SysIntInfoServiceI sysIntInfoServiceI;
    @Value("${dataSyncPush.dataParamName:xmlData}")
    public String DATA_PARAM_NAME;
    /**
    */
/**
     * 定时任务推送
     */
     *//*
    @Override
    public void DockingDataSyncScheduing(){
       // insertCache2();
@@ -132,20 +151,24 @@
        sendpushDataForService();
    }
    /**
    */
/**
     * 分类定时任务推送
     */
     *//*
    @Override
    public void DockingClassSyncScheduing(){
        initPushDataTaks(2);//分类推送
        sendpushClsfForService();
    }
    /**
    */
/**
     * 手动推送为完成的数据
     * @param oids
     * @return
     */
     *//*
    @Override
    public BaseResult sendData(String oids) {
        VciBaseUtil.alertNotNull(oids,"系统集成基础信息数据对象",oids,"系统集成基础信息的主键");
@@ -155,13 +178,13 @@
        Map<String,List<DockingTaskDO>> typeDockingTaskDOMap=new HashMap<>();
        newDockingTaskDOs.stream().forEach(newDockingTaskDO->{
           String btmId=newDockingTaskDO.getBtmid();
           if(btmId.equalsIgnoreCase(MdmDuckingConstant.DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT))){
               List<DockingTaskDO> dockingTaskDOList= typeDockingTaskDOMap.get(MdmDuckingConstant.DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
           if(btmId.equalsIgnoreCase(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT))){
               List<DockingTaskDO> dockingTaskDOList= typeDockingTaskDOMap.get(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
               if(CollectionUtils.isEmpty(dockingTaskDOList)){
                   dockingTaskDOList=new ArrayList<>();
               }
               dockingTaskDOList.add(newDockingTaskDO);
               typeDockingTaskDOMap.put(MdmDuckingConstant.DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT),dockingTaskDOList);
               typeDockingTaskDOMap.put(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT),dockingTaskDOList);
           }else{
               List<DockingTaskDO> dockingTaskDOList= typeDockingTaskDOMap.get("data");
               if(CollectionUtils.isEmpty(dockingTaskDOList)){
@@ -174,7 +197,7 @@
        typeDockingTaskDOMap.keySet().forEach(type->{
           List<DockingTaskDO> DockingTaskDO=typeDockingTaskDOMap.get(type);
           if(!CollectionUtils.isEmpty(DockingTaskDO)){
               if(type.equalsIgnoreCase(MdmDuckingConstant.DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT))){
               if(type.equalsIgnoreCase(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT))){
                   this.sendpushClsfForService(DockingTaskDO);
               }else{
                   this.sendpushDataForService(DockingTaskDO);
@@ -183,10 +206,12 @@
        });
       return  BaseResult.successMsg("手动推送完成,请核对是否推送成功");
    }
    /***
    */
/***
     * 查询redis中数据,对比后插入dockingtask
     * @param type
     */
     *//*
    private void initPushDataTaks(int type){
        initSysadmin();
        //sysintinfo查询要推送的主题库和相关系统信息
@@ -213,9 +238,9 @@
        VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(DockingDataDO.class);
        queryWrapperForDO.addQueryMap("sendflag","false");
        if(type==2){
            queryWrapperForDO.addQueryMap("btmTypeId", MdmDuckingConstant.DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
            queryWrapperForDO.addQueryMap("btmTypeId",DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT));
        }else {
            queryWrapperForDO.addQueryMap("btmTypeId", QueryOptionConstant.NOTIN + "(" + VciBaseUtil.toInSql(MdmDuckingConstant.DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT)) + ")");
            queryWrapperForDO.addQueryMap("btmTypeId", QueryOptionConstant.NOTIN + "(" + VciBaseUtil.toInSql(DOCKING_DEFAULT_CLASSIFY.toLowerCase(Locale.ROOT)) + ")");
        }
        List<DockingDataDO> dataList = dockingDataDaoI.selectByWrapper(queryWrapperForDO);
@@ -259,7 +284,7 @@
            for (SysIntInfoDO sysIntInfoVOi:effectiveSysIntInfoVOs){
                DockingTaskDO dockingTaskDO = new DockingTaskDO();
                dockingTaskDO.setOid(redisService.getUUIDEveryDay());
                dockingTaskDO.setSendflag(MdmDuckingConstant.SEND_FLAG_FALSE);
                dockingTaskDO.setSendflag(SEND_FLAG_FALSE);
                dockingTaskDO.setId(id);//编码
                dockingTaskDO.setUniquecode(uniquecode);
                dockingTaskDO.setBtmoid(btmoid);//数据oid
@@ -286,7 +311,7 @@
            WebUtil.setPersistence(true);
            boService.persistenceBatch(batchCBO);
            //dockingTaskDaoI.updateByPrimaryKey方法报错了,所以手写了这个
            boolean u = updateDockingDatasSendFlag(dataoid, MdmDuckingConstant.SEND_FLAG_TRUE);
            boolean u = updateDockingDatasSendFlag(dataoid,SEND_FLAG_TRUE);
            if(!u){
                logger.error("集成data分解任务失败!dataoid:"+dataoid);
                continue;
@@ -298,14 +323,16 @@
        initSysadmin();
        //查询哪些任务还没有执行完成
        VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingTaskDO.class);
        queryWrapper.addQueryMap("sendFlag", MdmDuckingConstant.SEND_FLAG_FALSE);
        queryWrapper.addQueryMap("btmId", QueryOptionConstant.NOTIN + "(" + VciBaseUtil.toInSql(MdmDuckingConstant.DOCKING_DEFAULT_CLASSIFY.toUpperCase(Locale.ROOT)) + ")");
        queryWrapper.addQueryMap("sendFlag",MdmDuckingConstant.SEND_FLAG_FALSE);
        queryWrapper.addQueryMap("btmId", QueryOptionConstant.NOTIN + "(" + VciBaseUtil.toInSql(DOCKING_DEFAULT_CLASSIFY.toUpperCase(Locale.ROOT)) + ")");
        List<DockingTaskDO> dockingTaskDOS = dockingTaskDaoI.selectByWrapper(queryWrapper);
        sendpushDataForService(dockingTaskDOS);
    }
    /***
    */
/***
     * 发送编码主数据
     */
     *//*
    private void sendpushDataForService (List<DockingTaskDO> dockingTaskDOS){
        //每个task依次执行推送
@@ -326,10 +353,14 @@
                CodeClassifyTemplateVO codeClassifyTemplateVO = mdmEngineServiceI.getUsedTemplateByClassifyOid(classifyoid);
                BaseResult<Map<String, String>> baseResult = 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*/
/**中文名称**//*
> 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 (baseResult == null) {
                    JSONObject josni = redisService.getCacheObject(MdmDuckingConstant.DOCKING_CACHE2_DELETE + btmoid);
                    JSONObject josni = redisService.getCacheObject(DOCKING_CACHE2_DELETE + btmoid);
                    data = (Map) josni;
                } else {
                    data = baseResult.getObj();
@@ -364,7 +395,7 @@
                //查询推送接口参数
                SysIntInfoVO sysIntInfoVO = sysIntInfoServiceI.getObjectByOid(systeminfooid);
                String paramType = sysIntInfoVO.getParamtype();//xml/json
                if (paramType.equals(MdmDuckingConstant.DATATYPE_JSON)) {
                if (paramType.equals(DATATYPE_JSON)) {
                    Object object = JSONObject.toJSON(nodeJosnDTO);
                    sendString = object.toString();
                } else {
@@ -390,13 +421,15 @@
        //查询哪些任务还没有执行完成
        VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(DockingTaskDO.class);
        queryWrapper.addQueryMap("sendFlag",MdmDuckingConstant.SEND_FLAG_FALSE);
        queryWrapper.addQueryMap("btmId", MdmDuckingConstant.DOCKING_DEFAULT_CLASSIFY.toUpperCase(Locale.ROOT));
        queryWrapper.addQueryMap("btmId",DOCKING_DEFAULT_CLASSIFY.toUpperCase(Locale.ROOT));
        List<DockingTaskDO> dockingTaskDOS = dockingTaskDaoI.selectByWrapper(queryWrapper);
        sendpushClsfForService(dockingTaskDOS);
    }
    /***
    */
/***
     * 发送分类数据
     */
     *//*
    private void sendpushClsfForService(List<DockingTaskDO> dockingTaskDOS){
        //每个task依次执行推送
        for (DockingTaskDO dockingTaskDO:dockingTaskDOS){
@@ -420,15 +453,16 @@
                nodeClassifyDTO.setFullPathName(codeClassifyDO.getPath());//全路径
                nodeClassifyDTO.setLcStatus(codeClassifyDO.getLcStatus());//状态
              //  CodeClassifyDO parentClassDo=codeClassifyDaoI.selectByPrimaryKey(codeClassifyDO.getParentCodeClassifyOid());
                nodeClassifyDTO.setPid(codeClassifyDO.getId());//父id节点
                nodeClassifyDTO.setPid(codeClassifyDO.getParentCodeClassifyOid());//父id节点
                nodeClassifyDTO.setId(codeClassifyDO.getOid());//分类oid
                nodeClassifyDTO.setName(codeClassifyDO.getName());//分类名称
                nodeClassifyDTOList.add(nodeClassifyDTO);
                NodeLibraryDTO nodeLibraryDTO=new NodeLibraryDTO();
                nodeLibraryDTO.setClassify(nodeClassifyDTOList);
                CodeClassifyDO rootClassify=codeClassifyDaoI.getRootClassify(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);
@@ -436,7 +470,7 @@
                //查询推送接口参数
                SysIntInfoVO sysIntInfoVO = sysIntInfoServiceI.getObjectByOid(systeminfooid);
                String paramType = sysIntInfoVO.getParamtype();//xml/json
                if(paramType.equals(MdmDuckingConstant.DATATYPE_JSON)){
                if(paramType.equals(DATATYPE_JSON)){
                    Object object = JSONObject.toJSON(jsonRootDataDTO);
                    sendString = object.toString();
                }else{
@@ -458,11 +492,13 @@
        }
    }
    /***
    */
/***
     * 调用接口
     * @param sysIntInfoVO
     * @throws Throwable
     */
     *//*
    private void callInterface(String  sendString , SysIntInfoVO sysIntInfoVO,DockingTaskDO dockingTaskDO,BatchCBO batchCBO) throws  Throwable{
        String paramString = "";
@@ -485,8 +521,8 @@
            List<SysIntParamDO> sysIntParamDOList = sysIntInfoServiceI.getParamsBySystemInfoOid(sysIntInfoVO.getOid());
            //查询header
            List<SysIntHeaderDO> sysIntHeaderDOList = sysIntInfoServiceI.getHeadersBySystemInfoOid(sysIntInfoVO.getOid());
            if(type.equals(MdmDuckingConstant.URLTYPE_HTTP)) {
                if (requestmethod.equals(MdmDuckingConstant.URLTYPE_GET)) {//GET请求
            if(type.equals(URLTYPE_HTTP)) {
                if (requestmethod.equals(URLTYPE_GET)) {//GET请求
                    String sendurl = url + "?" + DATA_PARAM_NAME + "=" + sendString;
                    //拼接param
                    for (SysIntParamDO sysIntParamDO : sysIntParamDOList) {
@@ -494,7 +530,7 @@
                    }
                    paramString = sendurl;
                    backString = HttpUtils.get(sendurl);
                } else if (requestmethod.equals(MdmDuckingConstant.URLTYPE_POST)) {//POST请求
                } else if (requestmethod.equals(URLTYPE_POST)) {//POST请求
                    MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
                    for (SysIntParamDO sysIntParamDO : sysIntParamDOList) {
                        params.add(sysIntParamDO.getParamkey(), sysIntParamDO.getParamvalue());
@@ -521,7 +557,7 @@
                    String res="\\\\\"";
                    backString=  backString.replaceAll(res,"\"").trim();
                }
            }else if (type.equals(MdmDuckingConstant.URLTYPE_WEBSERVICE)) {//webserver请求
            }else if (type.equals(URLTYPE_WEBSERVICE)) {//webserver请求
                MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
                for (SysIntParamDO sysIntParamDO : sysIntParamDOList) {
                    params.add(sysIntParamDO.getParamkey(), sysIntParamDO.getParamvalue());
@@ -539,7 +575,7 @@
            }
            ResultJsonDTO resultJsonDTO = new ResultJsonDTO();
            if(returnType.equals(MdmDuckingConstant.DATATYPE_JSON)){
            if(returnType.equals(DATATYPE_JSON)){
                resultJsonDTO =JSONObject.toJavaObject(JSONObject.parseObject(backString), ResultJsonDTO.class);
            }else {
                //组织返回接口信息
@@ -588,7 +624,7 @@
                dockingLogeDO.setParamstring(paramString);
                dockingLogeDO.setReturnstring(backString);
                dockingLogeDO.setInterfacestatus(isSend?"true":"false");
                dockingLogeDO.setType(MdmDuckingConstant.DATA_LOGE_OUT);
                dockingLogeDO.setType(DATA_LOGE_OUT);
                dockingLogeDO.setMsg(msg);
                logger.error("集成推送数据,systemcode:"+dockingTaskDO.getSystemcode()+",systemname:"+dockingTaskDO.getSystemname()+",url:"+url+",param:"+paramString+",e:"+msg);
                BatchCBO dockingLogeDOBo = dockingLogeDaoI.insert(dockingLogeDO);
@@ -614,12 +650,14 @@
    @Autowired
    private PlatformClientUtil platformClientUtil;
    /**
    */
/**
     * dockingdata根据oid修改sendflag
     * @param oid
     * @param sendflag
     * @return
     */
     *//*
    public boolean updateDockingDatasSendFlag(String oid,String sendflag){
        boolean u=false;
        String sql = "update PLATFORMBTM_codedockingdata set sendFlag = '"+sendflag+"' where oid='"+oid+"'";
@@ -632,3 +670,4 @@
    }
}
*/