田源
2024-04-24 d50dec2d9b92c103134ae4e313c7bbbe5c2f4432
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeDuckingSyncServiceImpl.java
@@ -2,7 +2,6 @@
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.shaded.com.google.protobuf.ServiceException;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -28,7 +27,6 @@
import com.vci.ubcs.code.enumpack.CodeDefaultLC;
import com.vci.ubcs.code.enumpack.CodeSecTypeEnum;
import com.vci.ubcs.code.enumpack.SysIntegrationDataFlowTypeEnum;
import com.vci.ubcs.code.feign.MdmSearchItemCodeProvider;
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.service.*;
import com.vci.ubcs.code.util.gennerAttrMapUtil;
@@ -54,7 +52,6 @@
import com.vci.ubcs.starter.web.util.WebUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.map.CaseInsensitiveMap;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
@@ -80,7 +77,6 @@
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_TAKEBACK;
import static com.vci.ubcs.code.constant.MdmDuckingConstant.*;
import static com.vci.ubcs.code.constant.MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST;
import static com.vci.ubcs.code.enumpack.CodeSecTypeEnum.CODE_CLASSIFY_SEC;
@@ -172,8 +168,8 @@
   /***
    * resdis缓存服务
    */
   @Resource
   private BladeRedis bladeRedis;
   //@Resource
   //private BladeRedis bladeRedis;
   @Resource
   private IDockingSysIntParamService dockingSysIntParamService;
@@ -181,8 +177,8 @@
   @Resource
   private IDockingSysIntHeaderService dockingSysIntHeaderService;
   @Autowired(required = false)
   private MdmSearchItemCodeProvider mdmSearchItemCodeProvider;
   //@Autowired(required = false)
   //private MdmSearchItemCodeProvider mdmSearchItemCodeProvider;
   @Resource
   private ICodeAllCodeService codeAllCodeService;
@@ -738,12 +734,17 @@
    initProperty("projectitem","",projectItem,propList);
    String materialCode=searchItemDataVO.getMATERIALCODE();//产品编码
    initProperty("materialcode","",materialCode,propList);
      Date cretaeDon = searchItemDataVO.getCREATEDON();//创建日期 日期型,如:2023-09-08 19:24:11
      initProperty("cretaedon", "", Func.formatDateTime(cretaeDon), propList);
      Date lastchangeDon = searchItemDataVO.getLASTCHANGEDON();//更改时间 日期型,如:2023-09-08 19:24:11
      initProperty("lastchangedon", "", Func.formatDateTime(lastchangeDon), propList);
    //组合属性的处理
    initProperty(attrKey,"",StringUtils.isNotBlank(projectItem)?projectItem:mmodelCode,propList);
    String creatBy=searchItemDataVO.getCREATBY();//创建者
    Date cretaeDon= searchItemDataVO.getCREATEDON();//创建日期 日期型,如:2023-09-08 19:24:11
      //Date cretaeDon = searchItemDataVO.getCREATEDON();//创建日期 日期型,如:2023-09-08 19:24:11
    String lastchangeBy=searchItemDataVO.getLASTCHANGEDBY();//更改者
    Date lastchangeDon=searchItemDataVO.getLASTCHANGEDON();//更改时间 日期型,如:2023-09-08 19:24:11
      //Date lastchangeDon = searchItemDataVO.getLASTCHANGEDON();//更改时间 日期型,如:2023-09-08 19:24:11
    String isenabled=  searchItemDataVO.getISENABLED();//字符型,枚举值;停用:0;启用:1;
    applyDataVO.setOperate(operation);
    applyDataVO.setCode(code);
@@ -961,11 +962,12 @@
            String classifyoid = dockingTask.getClassifyOid();
            //查询要推送的数据
            String btmoid = dockingTask.getBtmOid();//数据btmid
            String code=dockingTask.getId();;
            String code = dockingTask.getId();
            ;
            //表示是主数据
            CodeClassifyTemplateVO codeClassifyTemplateVO = mdmEngineServiceI.getUsedTemplateByClassifyOid(classifyoid);
            R<List<Map<String, String>>> r = mdmEngineServiceI.getDataByOid(btmoid, codeClassifyTemplateVO.getOid());
            log.info("推送人员数据,执行到查询主数据和模板属性阶段!!");
            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<>();
@@ -995,12 +997,12 @@
               data = r.getData().get(0);
            }
            List<NodeProDTO> nodeProDTOS = new ArrayList<>();
            Map<String, String> finalData = data;
            AtomicReference<String> newItemId= new AtomicReference<>("");
            final Map<String, String> finalData = data;
            List<String> newItemId = new ArrayList<>();
            finalData.keySet().forEach(field -> {
               if(field.toLowerCase(Locale.ROOT).equals(itemId.toLowerCase(Locale.ROOT))){
                  String Value = finalData.get(field);
                  newItemId.set(Value);
                  newItemId.add(Value);
               }
               String outName = attrIdNameMap.get(field);
               if (finalData.containsKey(field)) {
@@ -1037,7 +1039,7 @@
            nodeObjectDTO.setCode(code);//设置编码
            nodeObjectDTO.setClassCode(classCodeLeves[0]);
            nodeObjectDTO.setStatus(data.get("lcstatus"));
            nodeObjectDTO.setItemid(newItemId.get());
            nodeObjectDTO.setItemid(newItemId.get(0));
            nodeObjectDTO.setLibrary(classCodeLeves[classCodeLeves.length - 1]);
            nodeObjectDTO.setPro(nodeProDTOS);
            List<NodeObjectDTO> nodeObjectDTOS = new ArrayList<>();
@@ -1057,6 +1059,7 @@
               xStream.autodetectAnnotations(true);
               sendString = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" + xStream.toXML(nodeDataDTO);
            }
            log.info("推送人员数据,执行到调用HR接口了!!");
            //调用接口
            callInterface(sendString,dockingSystemConfig, dockingTask,"pushData");
         }catch (Throwable e){
@@ -1118,6 +1121,7 @@
               for (DockingSysIntHeader dockingSysIntHeader : dockingSysIntHeaderList) {
                  headers.add(dockingSysIntHeader.getHeaderKey(), dockingSysIntHeader.getHeaderValue());
               }
               log.info("推送人员数据,执行到调用接口了,地址:" + url);
               backString = HttpUtils.postByMediaType(
                  url,
                  params,
@@ -1183,6 +1187,7 @@
         resultNodeObjectDTOS.add(resultNodeObjectDTO);
      }finally {
         boolean isSend = false;
         log.info("推送人员数据,执行到final阶段了");
         for (ResultNodeObjectDTO resultNodeObjectDTO:resultNodeObjectDTOS){
            String erroid = resultNodeObjectDTO.getErroid();
            msg = resultNodeObjectDTO.getMsg();
@@ -1271,6 +1276,7 @@
   /**
    * dockingdata根据oid修改sendflag
    *
    * @param oid
    * @param sendflag
    * @return