Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeMdmInfaceImpl.java
@@ -56,6 +56,9 @@
import javax.servlet.http.HttpServletRequest;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ForkJoinPool;
@@ -158,6 +161,7 @@
            // webservice请求方式获取HttpServletRequest对象
            request = (HttpServletRequest)webServiceContext.getMessageContext().get(MessageContext.SERVLET_REQUEST);
         }catch (Exception e){
            e.printStackTrace();
            log.error("获取httpServletRequest失败,原因:***********:",e);
            throw new ServiceException("获取httpServletRequest失败,原因:"+e.getMessage());
         }
@@ -174,7 +178,7 @@
      List<ResultMdMapping> resultMdMappingList=new ArrayList<>();
      String message="";
      AtomicBoolean success = new AtomicBoolean(true);
      List<Map<String,String>> masterDataList = new ArrayList<>();
      List<Map<String,Object>> masterDataList = new ArrayList<>();
      AtomicReference<ClassifyConfig> currentClassifyConfig = new AtomicReference<>(new ClassifyConfig());
      try {
         if (mdmParamData == null) {
@@ -214,12 +218,14 @@
            });
            masterDataList.stream().forEach(masterData -> {
                  masterData.forEach((field, vaule) -> {
                     String newValue="";
                     if (fieldClassifyConfigMap.containsKey(field)) {
                        vaule=StringUtils.isBlank(vaule) ? "" : vaule;
                        //vaule=StringUtils.isBlank(vaule) ? "" : vaule;
                        newValue=objectToStr(vaule);
                        List<ClassifyConfig> classifyConfigs = fieldClassifyConfigMap.get(field);
                        Map<String, ClassifyConfig> classifyConfigMap = classifyConfigs.stream().filter(classify -> classify != null && StringUtils.isNotBlank(classify.getSourceClassifyCode())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getSourceClassifyCode(), t -> t));
                        if (classifyConfigMap.containsKey(vaule)) {
                           currentClassifyConfig.set(classifyConfigMap.get(vaule));
                        if (classifyConfigMap.containsKey(newValue)) {
                           currentClassifyConfig.set(classifyConfigMap.get(newValue));
                        }
                     }
                  });
@@ -283,8 +289,9 @@
               /***
                * 根据配置文件获取枚举值
                */
               String newValue=objectToStr(vaule);
               if(fields.contains(field)){//如果是枚举,则需要转换枚举值
                  String enumFiled = masterData.get(field);
                  String enumFiled = newValue;
                  EnumerableData enumerableData = JSONObject.toJavaObject(JSONObject.parseObject(enumFiled), EnumerableData.class);
                  String enumCode = enumerableData.getCode();
                  //String enumCodeValue=enumerableData.getName();
@@ -295,7 +302,7 @@
               }else {
                  ProppertyVO proppertyVO = new ProppertyVO();
                  proppertyVO.setKey(field);
                  proppertyVO.setValue(vaule);
                  proppertyVO.setValue(newValue);
                  proppertyVOList.add(proppertyVO);
               }
@@ -320,7 +327,15 @@
               String fixedField=fixedFieldMap.getOrDefault("dr","");
               dr = masterData.getOrDefault(fixedField, "").toString();
            }
            object.setCode(masterData.getOrDefault(currentClassifyConfig.get().getSourceCodeKey(),"").toString());//编码
            List<String> sourceCodeKeyList=VciBaseUtil.str2List(currentClassifyConfig.get().getSourceCodeKey());
            //object.setCode(masterData.getOrDefault(currentClassifyConfig.get().getSourceCodeKey(),"").toString());//编码
            if(!CollectionUtils.isEmpty(sourceCodeKeyList)) {
               sourceCodeKeyList.stream().forEach(codekey -> {
                  if (StringUtils.isNotBlank(masterData.getOrDefault(currentClassifyConfig.get().getSourceCodeKey(), "").toString())) {
                     object.setCode(masterData.getOrDefault(currentClassifyConfig.get().getSourceCodeKey(), "").toString());//编码
                  }
               });
            }
            object.setProp(proppertyVOList);
            if (dr.equals(1)) {
@@ -335,6 +350,9 @@
            codeList.add(object.getCode());
         });
         if(CollectionUtils.isEmpty(codeList)){
            throw  new Throwable("检查配置文件:【sourceCodeKey】,唯一标识字段是否正确");
         }
         String targetCodeKey=currentClassifyConfig.get().getTargetCodeKey();
         StringBuffer sb = new StringBuffer();
         sb.append(" select * from ");
@@ -435,6 +453,7 @@
                           });
                        }catch (Throwable e){
                           mesg="计算码段码值出现异常:"+e.getMessage();
                           e.printStackTrace();
                           log.error("计算码段码值出现异常,原因:***********:",e);
                           new Throwable("计算码段码值出现异常:"+e.getMessage());
                        }
@@ -593,6 +612,7 @@
      }catch (Throwable e){
         objerrorCode="100";
         log.error("获取分类信息失败:",e);
         e.printStackTrace();
         throw    new  Throwable("获取分类信息失败:"+e.getMessage());
      }
      return classifyVO;
@@ -821,4 +841,66 @@
      dockingLogeService.save(dockingLoge);
      log.info("集成推送数据,systemId:"+systemId+",systemname:"+systemName+",operation:"+operation+",param:"+parmaData);
   }
   /***
    * 属性类型转换
    * @param vaule
    * @return
    */
   private  String objectToStr(Object vaule) {
      String newValue="";
      if(vaule ==null||"".equals(vaule)||vaule==""){
         return "";
      }
      try {
         if (vaule instanceof Integer) {
            Integer intValue = (Integer) vaule;
            newValue = String.valueOf(intValue);
         } else if (vaule instanceof Boolean) {
            boolean boolValue = (Boolean) vaule;
            newValue = Boolean.toString(boolValue);
         } else if (vaule instanceof Timestamp) {
            Timestamp timestampValue = (Timestamp) vaule;
            newValue = timestamp2Str(timestampValue);
         } else if (vaule instanceof Date) {
            Date dataValue = (Date) vaule;
            newValue = date2Str(dataValue, "yyyy-MM-dd HH:mm:ss");
         }else if (vaule instanceof BigDecimal){
            BigDecimal bigDecimal=(BigDecimal)vaule;
            newValue =  bigDecimal.toString();
         } else {
            return vaule.toString();
         }
      }catch (Throwable e){
         //   log.error("属性类型转换错误",e);
         e.printStackTrace();
      }
      return newValue;
   }
   private String date2Str(Date date, String format) {
      if (null == date) {
         return null;
      } else {
         if (format == null || format.trim().length() == 0) {
            format = "yyyy-MM-dd HH:mm:ss.SSS";
         }
         SimpleDateFormat sdf = new SimpleDateFormat(format);
         return sdf.format(date);
      }
   }
   private  String timestamp2Str(Timestamp time) {
      Date date = null;
      if (null == time) {
         return null;
      } else {
         if (null != time) {
            date = new Date(time.getTime());
         }
         return date2Str(date, "yyyy-MM-dd HH:mm:ss.SSS");
      }
   }
}