ludc
2024-03-13 30f93a0f5615515df2bfe1fdbbadab0308ca0471
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
@@ -3,6 +3,7 @@
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.shaded.com.google.protobuf.ServiceException;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.thoughtworks.xstream.XStream;
@@ -50,6 +51,7 @@
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.WebUtil;
import com.xkcoding.http.support.Http;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.map.CaseInsensitiveMap;
import org.springblade.core.redis.cache.BladeRedis;
@@ -59,6 +61,8 @@
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -71,11 +75,7 @@
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource;
import javax.jws.WebMethod;
import javax.servlet.http.HttpServletRequest;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
@@ -95,6 +95,7 @@
@Service
@Slf4j
public class CodeDuckingSyncServiceImpl implements ICodeDuckingSyncService {
   @Value("${dataSyncPush.dataParamName:xmlData}")
   public String DATA_PARAM_NAME;
   @Value("${dataSyncPush.dataId:itemid}")
@@ -113,54 +114,80 @@
   @Value("${erp.item.btmName:XHDH}")
   public String btmName;
   @Value("${erp.item.bearer:bearer: Bearer 7fc32939-0a59-da71-a6e6-6b0d37b53e8a}")
   private String ERPXHDHAUTH;
   @Value("${erp.item.url:http://127.0.0.1/api/pp/pp/ext/extend/v1.0}")
   private String ERPXHDHURL;
   @Value("${erp.item.tenant:10000}")
   private String ERPXHDHTENANT;
   /**
    * 业务类型的服务
    */
   @Autowired
   private IBtmTypeClient btmTypeClient;
   /**
    * 通用查询
    */
   @Resource
   private CommonsMapper commonsMapper;
   @Resource
   private  MdmEngineService  mdmEngineServiceI;
   /**
    * 批量处理的服务
    */
   @Resource
   private MdmIOService mdmIOService;
   @Resource
   private IPasswordFreeLoginService passwordFreeLoginService;
   @Resource
   private IDockingLogeService dockingLogeService;
   @Resource
   private IDockingDataService dockingDataService;
   @Resource
   private IDockingTaskService dockingTaskService;
   @Resource
   private IDockingSystemConfigService dockingSystemConfigService;
   @Resource
   private ICodeClassifyService codeClassifyService;
   @Autowired
   private ICodeClassifyValueService codeClassifyValueService;
   @Autowired(required = false)
   private AttributeMapConfig attributeMapConfig;
   /***
    * resdis缓存服务
    */
   @Resource
   private BladeRedis bladeRedis;
   @Resource
   private IDockingSysIntParamService dockingSysIntParamService;
   @Resource
   private IDockingSysIntHeaderService dockingSysIntHeaderService;
   @Autowired(required = false)
   private MdmSearchItemCodeProvider mdmSearchItemCodeProvider;
   @Autowired
   HttpServletRequest request;
   @Override
   public void DockingDataSyncScheduing() {
@@ -222,6 +249,7 @@
      });
      return  R.success("手动推送完成,请核对是否推送成功");
   }
   private SearchItemDataVO initData(String status,String itemCode,String mmCode){
      SearchItemDataVO searchItemDataVO=new SearchItemDataVO();
      searchItemDataVO.setLastchangedon(new Date());
@@ -258,11 +286,12 @@
      return request;
   }
   /***
    * 同步型号代号
    */
   @Override
   public void saveItemDataSyncScheduing(String endDate) {
   public void saveItemDataSyncScheduing(String endDate) throws ServiceException {
      String paramString="";
      String backString="成功";
      String msg="成功";
@@ -286,17 +315,15 @@
      Map<String,String>searchDataMap=  VciBaseUtil.objectToMapString(searchItemParam);
      try {
         paramString=JSONObject.toJSON(searchItemParam).toString();
         String res= mdmSearchItemCodeProvider.getppModelByElem(searchItemParam);
         SearchItemVO searchItemVO  = JSONObject.toJavaObject(JSONObject.parseObject(res), SearchItemVO.class);
         /**SearchItemVO searchItemVO=new SearchItemVO();
         List<SearchItemDataVO> data=new ArrayList<>();
         SearchItemDataVO searchItemDataVO1=initData("1","","pro-00001");
         SearchItemDataVO searchItemDataVO2=initData("0","item-00001","");
         data.add(searchItemDataVO1);
         data.add(searchItemDataVO2);
         //searchItemVO.setData(data);
         searchItemVO.setCode("200");**/
         //searchItemVO.setMsg("");
         // TODO: 改为使用HttpUtils方式进行申请,因为现在申请用之前的方式会报错
         LinkedMultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
         headers.add("Authorization",ERPXHDHAUTH);
         headers.add("X-ECC-Current-Tenant",ERPXHDHTENANT);
         headers.add("Accept-Language","zh-CHS");
         headers.add("Content-Type",MediaType.APPLICATION_JSON.toString());
         String res = HttpUtils.request(ERPXHDHURL+"/getppModelByElemNew",paramString,headers, HttpMethod.POST,MediaType.APPLICATION_JSON);
         // String res= mdmSearchItemCodeProvider.getppModelByElem(searchItemParam);
         SearchItemVO searchItemVO = JSONObject.toJavaObject(JSONObject.parseObject(res), SearchItemVO.class);
         if (searchItemVO != null) {
            BladeUser finalUser;
            paramString = JSONObject.toJSON(searchItemVO).toString();
@@ -442,7 +469,6 @@
               }
            } catch (Throwable e) {
               e.printStackTrace();
               ;
               log.error("查询失败--->" + e);
               success = false;
               backString = "查询失败--->" + e;
@@ -459,7 +485,7 @@
               }
            }
         }else{
            throw  new Throwable("接口未返回信息");
            throw new Throwable("接口未返回信息");
         }
      }catch (Throwable e1){
         e1.printStackTrace();
@@ -474,8 +500,9 @@
         } catch (Throwable e) {
            e.printStackTrace();
            log.error(e.getMessage());
            throw new VciBaseException(e.getMessage());
            throw new ServiceException(e.getMessage());
         }
         throw new ServiceException(e1.getMessage());
      }
   }
@@ -574,6 +601,7 @@
      }
      return codeOrderSecDTOList;
   }
   /***
    * 读取属性映射配置信息
    * @param systemId
@@ -698,7 +726,8 @@
         throw new   Throwable("组织数据映射值失败");
      }
   }
 private void changeObjectToMap(SearchItemUpperCaseDataVO searchItemDataVO, String code, BladeUser user,String operation,List<ApplyDataVO> object){
   private void changeObjectToMap(SearchItemUpperCaseDataVO searchItemDataVO, String code, BladeUser user,String operation,List<ApplyDataVO> object){
    ApplyDataVO applyDataVO=new ApplyDataVO();
    List<ProppertyVO> propList=new ArrayList<>();
    //String status= searchItemDataVO.getStatus();//数据状态 字符型,枚举值;制单:0;审批中:1;通过:2;驳回:3;
@@ -731,13 +760,15 @@
    applyDataVO.setProp(propList);
    object.add(applyDataVO);
 }
  private void initProperty(String key,String text,String value,List<ProppertyVO> propList){
    private void initProperty(String key,String text,String value,List<ProppertyVO> propList){
   ProppertyVO vo=new ProppertyVO();
     vo.setKey(key);
     vo.setText(StringUtils.isBlank(text)?"":text);
     vo.setValue(StringUtils.isBlank(value)?"":value);
     propList.add(vo);
  }
   /***
    * 查询redis中数据,对比后插入dockingtask
    * @param type
@@ -863,7 +894,7 @@
      for (DockingTask dockingTask:dockingTaskList){
         //每个task一个事务,开启
         String paramString="";
         String sendString="";
         Object sendString="";
         String backString="";
         //查询系统接口信息,ip method,dataType
         String systeminfooid = dockingTask.getSysInfoOid();//sysininfo 的oid
@@ -897,8 +928,8 @@
            DockingSystemConfig dockingSystemConfig = dockingSystemConfigService.getById(systeminfooid);
            String paramType = dockingSystemConfig.getParamType();//xml/json
            if(paramType.equals(DATATYPE_JSON)){
               Object object = JSONObject.toJSON(jsonRootDataDTO);
               sendString = object.toString();
                Object object = JSONObject.toJSON(jsonRootDataDTO);
                sendString = object;
            }else{
               //组织返回接口信息
               XStream xStream = new XStream(new DomDriver());
@@ -915,6 +946,7 @@
         }
      }
   }
   /***
    * 发送编码主数据
    */
@@ -923,7 +955,7 @@
      for (DockingTask dockingTask:dockingTaskS){
         //每个task一个事务,开启
         String paramString="";
         String sendString="";
         Object sendString="";
         String backString="";
         try {
            //查询系统接口信息,ip method,dataType
@@ -997,7 +1029,8 @@
            String paramType = dockingSystemConfig.getParamType();//xml/json
            if (paramType.equals(DATATYPE_JSON)) {
               Object object = JSONObject.toJSON(nodeJosnDTO);
               sendString = object.toString();
               //sendString = object.toString();
               sendString = object;
            } else {
               //组织返回接口信息
               XStream xStream = new XStream(new DomDriver());
@@ -1013,18 +1046,19 @@
         }
      }
   }
   /***
    * 调用接口
    * @param sendString
    * 调用接口,传参为JSON时传object类型,Content-Type改为界面配置的
    * @param sendObject
    * @param dockingSystemConfig
    * @param dockingTask
    * @throws Throwable
    */
   private void callInterface(String  sendString , DockingSystemConfig dockingSystemConfig,DockingTask dockingTask,String operation) throws  Throwable{
   private void callInterface(Object sendObject, DockingSystemConfig dockingSystemConfig,DockingTask dockingTask,String operation) throws  Throwable{
      String paramString = "";
      String backString = "";
      String msg="";
      String sendString = sendObject.toString();
      String msg= "" ;
      String url = dockingSystemConfig.getRequestUrl();//url
      List<ResultNodeObjectDTO> resultNodeObjectDTOS =new ArrayList<>();
      try {
@@ -1055,17 +1089,22 @@
               paramString = sendurl;
               backString = HttpUtils.get(sendurl);
            } else if (requestmethod.equals(URLTYPE_POST)) {//POST请求
               MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
               MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
               for (DockingSysIntParam dockingSysIntParam : dockingSysIntParamList) {
                  params.add(dockingSysIntParam.getParamKey(), dockingSysIntParam.getParamValue());
               }
               params.add(DATA_PARAM_NAME,sendString);
               params.add(DATA_PARAM_NAME,sendObject);
               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);
               backString = HttpUtils.postByMediaType(
                  url,
                  params,
                  headers,
                  Func.isNotBlank(dockingSystemConfig.getContentType()) ? MediaType.valueOf(dockingSystemConfig.getContentType()):MediaType.APPLICATION_FORM_URLENCODED
               );
            }
            if(backString.startsWith("\"")){
               backString=backString.substring(backString.indexOf("\"")+1);
@@ -1163,6 +1202,7 @@
         }
      }
   }
   /***
    * 查询需要集成的业务数据任务
    */
@@ -1199,6 +1239,7 @@
      List<DockingTask> dockingTaskDOS = dockingTaskService.list(queryWrapper);
      sendpushClsfForService(dockingTaskDOS);
   }
   public void initSysadmin(){
      SessionInfo sessionInfo = new SessionInfo();
      sessionInfo.setUserId("sysAdmin");
@@ -1208,6 +1249,7 @@
      sessionInfo.setUserSecret(UserSecretEnum.PRIVACY.getValue()+"");
      WebUtil.setSessionInfo(sessionInfo);
   }
   /**
    * dockingdata根据oid修改sendflag
    * @param oid
@@ -1223,5 +1265,6 @@
      }
      return u;
   }
}