Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -8,6 +8,7 @@
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.constant.MdmDuckingConstant;
import com.vci.ubcs.code.dto.CodeBZApplyDTO;
import com.vci.ubcs.code.dto.CodeOrderDTO;
import com.vci.ubcs.code.dto.CodeOrderSecDTO;
import com.vci.ubcs.code.entity.*;
@@ -37,8 +38,10 @@
import com.vci.ubcs.code.webService.annotation.VciWebservice;
import com.vci.ubcs.code.webService.config.AttributeMapConfig;
import com.vci.ubcs.code.webService.config.PersonAndDeptConfig;
import com.vci.ubcs.code.wrapper.CodeClassifyWrapper;
import com.vci.ubcs.omd.cache.EnumCache;
import com.vci.ubcs.omd.feign.IBtmTypeClient;
import com.vci.ubcs.omd.feign.IDictClient;
import com.vci.ubcs.omd.feign.IEnumClient;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
@@ -55,6 +58,7 @@
import com.vci.ubcs.system.vo.RoleVO;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
@@ -70,11 +74,14 @@
import javax.xml.ws.handler.MessageContext;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST;
import static com.vci.ubcs.code.enumpack.CodeSecTypeEnum.CODE_CLASSIFY_SEC;
import static com.vci.ubcs.code.enumpack.CodeSecTypeEnum.CODE_REFER_SEC;
/***
 * 统一接口
@@ -82,7 +89,52 @@
@Service
@Slf4j
@VciWebservice(path = "/universalInterface")
public class UniversalInterfaceImpl<IDockingLogeServiceing> implements UniversalInterfaceI {
public class UniversalInterfaceImpl implements UniversalInterfaceI {
   /***
    * 操作类型
    */
   @Value("${bzApply.operationType:operationType}")
   private String operationType;
   /***
    * 是否系列
    */
   @Value("${bzApply.isSeries:isSeries}")
   private String isSeries;
   /***
    *发布时间
    */
   @Value("${bzApply.releaseTime:releaseTime}")
   private String releaseTime;
   /***
    * 源标准号
    */
   @Value("${bzApply.oldCode:oldCode}")
   private String oldCode;
   /***
    * 系列流水
    */
   @Value("${bzApply.seriesFlow:seriesFlow}")
   private String seriesFlow;
   /***
    * 是否变更系列
    */
   @Value("${bzApply.isEditSeries:isEditSeries}")
   private String isEditSeries;
   /***
    * 控制是否写入值的码段名称
    */
   @Value("${bzApply.secName:系列号}")
   private String secName;
   /***
    * 控制是否写入值的码段名称
    */
   @Value("${bzApply.yearSecName:年代号}")
   private String yearSecName;
   @Value("${code.universalinterface.checkSystemConfig:true}")
   public boolean CODE_CHECKCONFIG;
@@ -155,8 +207,14 @@
    */
   @Resource
   private IDockingLogeService dockingLogeService;
   @Resource
   private IPasswordFreeLoginService passwordFreeLoginService;
   /**
    * 自定义并发ForkJoinPool
    */
   private static final ForkJoinPool customForkJoinPool = new ForkJoinPool(Runtime.getRuntime().availableProcessors() - 1);
   private  static String separator="##VCI##";
   private  String errorid="0";
@@ -229,26 +287,31 @@
            }
         }catch (Throwable e){
            errorid[0] ="101";
            log.error("接口参数:传入数据参数解析失败",e);
            throw new Throwable("接口参数:传入数据参数解析失败");
         }
         ClassfysVO classfysVO = interParameterVO.getData().getClassifys();
         systemId = interParameterVO.getData().getSystemId();
         UserVO userVo = interParameterVO.getData().getUser();
         //免密登录申请token,request中添加用户信息
         passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
         AuthUtil.getUser();
         try {
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT), this.getRequest());
         }catch (Throwable e){
            errorid[0] ="1";
            throw new Throwable("用户鉴权失败,原因:"+e.getMessage());
         }
         List<ClassfyVO> classVOList = classfysVO.getClassify();
         InterParameterVO finalInterParameterVO = interParameterVO;
         //InterParameterVO finalInterParameterVO = interParameterVO;
         //这是账号信息
         SessionInfo sessionInfo = new SessionInfo();
         sessionInfo.setUserId(userVo.getUserName());
         sessionInfo.setUserName(userVo.getTrueName());
         sessionInfo.setIp(userVo.getIp());
         VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
//         List<XMLResultDataObjectDetailDO> allResultDataObjectDetailDOS=new ArrayList<>();
         //List<XMLResultDataObjectDetailDO> allResultDataObjectDetailDOS=new ArrayList<>();
         String finalSystemId = systemId;
         classVOList.stream().forEach(classVO -> {
            log.info("参数:分类COde:" + classVO.getClassCode());
            log.info("参数:分类Code:" + classVO.getClassCode());
            boolean isCodeOrGroupCode=false;
            LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>();
            String libray ="";
@@ -267,7 +330,7 @@
                  //校验是否配置
                  DockingSystemConfig dockingSystemConfig=null;
                  dockingSystemConfig=checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue(),codeClassifyVO.getOid());
                  if(dockingSystemConfig==null){
                  if(dockingSystemConfig==null||StringUtils.isBlank(dockingSystemConfig.getOid())){
                     errorid[0] ="101";
                     throw new Throwable("系统标识为【"+ finalSystemId +"】,集成分类为【"+codeClassifyVO.getName()+"】以上分类,"+sysIntegrationPushTypeEnum.ACCPET_APPCODE.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
                  }
@@ -281,7 +344,8 @@
               log.info("end:模板查询完毕");
               ApplyDatasVO applyDatasVO = classVO.getObjects();
               DataObjectVO dataObjectVO = new DataObjectVO();
               List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
               List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
                  ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
               ).collect(Collectors.toList());
               this.getConfigDatas(finalSystemId, libray, applyDatasVO, attrVOS, dataObjectVO);
               log.info("end:数据组织完毕");
@@ -309,6 +373,7 @@
            } catch (Throwable e) {
               List<ApplyDataVO> applyDataVOList= classVO.getObjects().getObject();
               objerrorCode="1";
               log.error("编码申请失败:",e);
               if(!CollectionUtils.isEmpty(applyDataVOList)) {
                  applyDataVOList.stream().forEach(applyDataVO -> {
                     XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
@@ -319,7 +384,6 @@
                     resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
                  });
               }else{
                  XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
                  xmlResultDataObjectDetailDO.setCode("");
                  xmlResultDataObjectDetailDO.setId("");
@@ -328,6 +392,7 @@
                  resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
               }
               e.printStackTrace();
               //log.error(e.getMessage());
            }finally {
               XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO();
               resultClassfyVO.setClassCode(classVO.getClassCode());
@@ -346,6 +411,8 @@
      }catch (Throwable e){
         e.printStackTrace();
         msg="申请编码失败:"+e.getMessage();
         //log.error(msg);
         log.error("编码申请失败:",e);
          /*  XMLResultSystemVO XMLResultSystemVO=new XMLResultSystemVO();
            XMLResultSystemVO.setErrorid(errorid);
            XMLResultSystemVO.setMsg("申请编码失败:->"+e.getMessage());
@@ -367,10 +434,10 @@
            if(!CollectionUtils.isEmpty(resultClassfyVOList)) {
               resultClassfyVOList.stream().forEach(xMLResultClassfyVO -> {
                  xMLResultClassfyVO.getObjects().stream().forEach(objec -> {
                     if (!(objec.getErrorid().equals("0") || objec.getErrorid().equals("204"))) {
                     if (!(objec.getErrorid().equals("0")||objec.getErrorid().equals("201") ||objec.getErrorid().equals("205")|| objec.getErrorid().equals("204"))) {
                        issucess[0] = false;
                        msg=objec.getMsg();
                     }
                     msg=objec.getMsg();
                  });
               });
            }
@@ -381,6 +448,8 @@
            this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "applyCode");
         }catch (Throwable e){
            e.printStackTrace();
            //log.error(e.getMessage());
            log.error("保存日志出错,原因:",e);
         }
      }
      log.info("返回参数:"+resultStr);
@@ -396,7 +465,6 @@
    */
   @Override
   public ResultOrgData syncDataForPerson(PersonData personData) {
      boolean isUsedFlag= personAndDeptConfig.isUsedFlag();
      ResultOrgData resultOrgData=new ResultOrgData();
@@ -407,10 +475,16 @@
      if(isUsedFlag){
         AtomicBoolean success= new AtomicBoolean(true);
         List<PersonMasterData> masterDataList=new ArrayList<>();
         List<String> fields= VciBaseUtil.str2List(personAndDeptConfig.getPersonFields());
         List<String> fields = Func.toStrList(personAndDeptConfig.getPersonFields());
         try {
            if(personData==null){
               throw new Throwable("传入参数为null");
            }
            try {
               passwordFreeLoginService.pwdFreeLoginByBoolean(systemCode.toLowerCase(),this.getRequest());
            }catch (Throwable e){
               log.error("用户鉴权失败:",e);
               throw new Throwable("用户鉴权失败");
            }
            masterDataList = personData.getMasterData();
            String personLibrary = personAndDeptConfig.getPersonLibrary();
@@ -423,7 +497,7 @@
            ClassfyVO classfyVO = new ClassfyVO();
            classfyVO.setLibrary(personLibrary);
            classfyVO.setClassCode(personClassCode);
            CodeClassifyVO  codeClassifyVO=this.getClassfy(classfyVO,personLibrary);
            CodeClassifyVO codeClassifyVO=this.getClassfy(classfyVO,personLibrary);
            log.info("end:分类查询完毕");
            //获取分类模板信息
            if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){
@@ -436,12 +510,12 @@
               throw  new  Throwable ("根据传输的分类,未获取MDM系统中对应模板");
            }
            List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
            List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
               ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
            ).collect(Collectors.toList());
            List<PersonMasterData> personMasterDataList= personData.getMasterData();
            List<Map> dataList=new ArrayList<>();
            //List<Map> dataList=new ArrayList<>();
            List<String> codeList=new ArrayList<>();
            List<ApplyDataVO> applyDataVOList=new ArrayList<>();
@@ -460,7 +534,7 @@
                */
               fields.stream().forEach(field->{
                  if(dataMap.containsKey(field)){
                     String enumFiled= dataMap.get(field);
                     String enumFiled = dataMap.get(field);
                     EnumerableData enumerableData=JSONObject.toJavaObject(JSONObject.parseObject(enumFiled),EnumerableData.class);
                     String enumCode=enumerableData.getCode();
                     //String enumCodeValue=enumerableData.getName();
@@ -480,15 +554,15 @@
               object.setProp(proppertyVOList);
               if(personMasterData.getDr()==1){
                  object.setOperate("delete");//操作类型
                  //操作类型
                  object.setOperate("delete");
                  deleteDataVOList.add(object);
               }else{
                  String worker_category=personMasterData.getWorker_category();
                  //String worker_category=personMasterData.getWorker_category();
                  object.setOperate("create");
                  applyDataVOList.add(object);
               }
               codeList.add(personMasterData.getLm_code());
               codeList.add(object.getCode());
            });
            R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId());
@@ -512,11 +586,12 @@
            sb.append(VciBaseUtil.toInSql(codeList.toArray(new String[0])));
            sb.append(")");
            List<Map<String,String>> dataMapList=commonsMapper.queryByOnlySqlForMap(sb.toString());
            DefaultAttrAssimtUtil.mapToLowerCase(dataMapList,true);
            List<ClientBusinessObject> cboList=   ChangeMapTOClientBusinessObjects(dataMapList);
            ApplyDatasVO applyDatasVO=new ApplyDatasVO();
            ApplyDatasVO editDatasVO=new ApplyDatasVO();
            if(!CollectionUtils.isEmpty(cboList)){
            Map<String,ClientBusinessObject> oldpplyDataVOMap=   cboList.stream().filter(data -> data != null && StringUtils.isNotBlank(data.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
            Map<String,ClientBusinessObject> oldpplyDataVOMap =   cboList.stream().filter(data -> data != null && StringUtils.isNotBlank(data.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
               //数据库不存在的
               List<ApplyDataVO> applyApplyDataVOList = applyDataVOList.stream().filter(cbo -> {
                  String code =cbo.getCode();
@@ -542,8 +617,8 @@
               DataObjectVO dataObjectVO = new DataObjectVO();
               this.getConfigDatas(systemCode, personLibrary, editDatasVO, attrVOS, dataObjectVO);
               log.info("start:修改数据执行完毕");
               boolean  personApplyGroupCode =personAndDeptConfig.isPersonApplyGroupCode();
               mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs,personApplyGroupCode);
            //   boolean  personApplyGroupCode =personAndDeptConfig.isPersonApplyGroupCode();
               mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs,isPersonApplyGroupCode);
               log.info("end:修改数据执行完毕");
            }
            if(applyDatasVO.getObject()!=null&&applyDatasVO.getObject().size()>0) {
@@ -556,13 +631,17 @@
                  throw  new Throwable("编码规则");
               }
               List<XMLResultDataObjectDetailDO> xDOs=new CopyOnWriteArrayList<>();
               dataObjectVO.getRowData().parallelStream().forEach(rowData->{
               final List<RowDatas> rowDatas = dataObjectVO.getRowData();
               rowDatas.parallelStream().forEach(rowData->{
                  String mesg="";
                  try {
                     CodeOrderDTO orderDTO = new CodeOrderDTO();
                     List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>();
                     orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//分类主键
                     orderDTO.setTemplateOid(templateVO.getOid());
                     orderDTO.setCreator(rowData.getCreator());
                     orderDTO.setLastModifier(rowData.getEditor());
                     orderDTO.setLcStatus(rowData.getStatus());
                     if(!CollectionUtils.isEmpty(ruleVO.getSecVOList())) {
                        ruleVO.getSecVOList().stream().forEach(codeBasicSecVO -> {
                           if (codeBasicSecVO.getSecType().equals("codevariablesec")) {//规则之定义为可变码段存储主数据传递过来的数据
@@ -577,7 +656,7 @@
                     orderDTO.setCodeRuleOid(ruleVO.getOid());
                     orderDTO.setSecDTOList(codeOrderSecDTOList);//存储编码
                     orderDTO.setData(rowData.getFiledValue());
                     String code=engineService.addSaveCode(orderDTO);
                     String code=engineService.addSaveCodeNotauthUser(orderDTO,false);
                     if(StringUtils.isNotBlank(code)) {
                        StringBuffer sqlsb = new StringBuffer();
                        sqlsb.append(" select * from ");
@@ -601,8 +680,10 @@
                        }
                     }
                  } catch (Exception e) {
                     log.error("数据保存失败:",e);
                     mesg=e.getMessage();
                     e.printStackTrace();
                  //   throw new ServiceException(e.getMessage());
                  }finally {
                     XMLResultDataObjectDetailDO x=new XMLResultDataObjectDetailDO();
                     x.setId(rowData.getOid());
@@ -615,21 +696,26 @@
               resultDataObjectDetailDOs.addAll(xDOs);
               boolean finalSuccess1 = success.get();
               String finalMessage1 = message;
               resultDataObjectDetailDOs.stream().forEach(resultDataObjectDetailDO->{
                  ResultMdMapping resultMdMapping=new ResultMdMapping();
                  resultMdMapping.setBusiDataId(resultDataObjectDetailDO.getId());
                  resultMdMapping.setSuccess(finalSuccess1);
                  resultMdMapping.setEntityCode(" ");
                  resultMdMapping.setMdmCode(resultDataObjectDetailDO.getCode());
                  resultMdMapping.setMessage(finalMessage1);
                  resultMdMapping.setSubMdMappings(null);
                  resultMdMappingList.add(resultMdMapping);
               });
               // 限制线程并行数量
               customForkJoinPool.submit(()->{
                  resultDataObjectDetailDOs.stream().forEach(resultDataObjectDetailDO->{
                     ResultMdMapping resultMdMapping=new ResultMdMapping();
                     resultMdMapping.setBusiDataId(resultDataObjectDetailDO.getId());
                     resultMdMapping.setSuccess(finalSuccess1);
                     resultMdMapping.setEntityCode(" ");
                     resultMdMapping.setMdmCode(resultDataObjectDetailDO.getCode());
                     resultMdMapping.setMessage(finalMessage1);
                     resultMdMapping.setSubMdMappings(null);
                     resultMdMappingList.add(resultMdMapping);
                  });
               }).join();
               log.info("end:申请获取完毕");
            }
         }catch (Throwable e){
            success.set(false);
            message="人员数据接受失败:"+e.getMessage();
            message = "人员数据接收失败:"+e.getMessage();
            msg = "人员数据接收失败:"+e.getMessage();
            log.error( "人员数据接收失败:",e);
            //组织返回结果
            boolean finalSuccess = success.get();
            String finalMessage = message;
@@ -646,7 +732,7 @@
            resultOrgData.setMessage(message);
            resultOrgData.setSuccess(success.get());
            resultOrgData.setMdMappings(resultMdMappingList);
            Object object = JSONObject.toJSON(resultOrgData);
            //Object object = JSONObject.toJSON(resultOrgData);
         }
         String resultStr = JSONObject.toJSONString(resultOrgData);
         String data = JSONObject.toJSONString(personData);
@@ -654,6 +740,7 @@
            //记录日志
            this.saveLogs(systemCode, systemCode, data, resultStr, success.get(), msg, "syncDataForPerson");
         }catch (Throwable e){
            log.error( "日志保存失败:",e);
            e.printStackTrace();
         }
      }
@@ -671,31 +758,37 @@
   public ResultOrgData syncDataForOrg(OrgData orgData) {
      boolean isUsedFlag= personAndDeptConfig.isUsedFlag();
      ResultOrgData resultOrgData=new ResultOrgData();
      boolean isPersonApplyGroupCode= personAndDeptConfig.isPersonApplyGroupCode();
      // boolean isPersonApplyGroupCode= personAndDeptConfig.isDeptApplyGroupCode();
      List<ResultMdMapping> resultMdMappingList=new ArrayList<>();
      AtomicBoolean success= new AtomicBoolean(true);
      String message="";
      String systemCode="";
      if(isUsedFlag){
         List<OrgMasterData> orgMasterDataList=new ArrayList<>();
         List<String> fields= VciBaseUtil.str2List(personAndDeptConfig.getPersonFields());
         List<OrgMasterData> orgMasterDataList = new ArrayList<>();
         List<String> fields = Func.toStrList(personAndDeptConfig.getDeptFields());
         try {
            if(orgData==null){
               throw new Throwable("传入参数为null");
            }
            systemCode=orgData.getSystemCode();
            orgMasterDataList = orgData.getMasterData();
            String personLibrary = personAndDeptConfig.getPersonLibrary();
            if (StringUtils.isBlank(personLibrary)) {
               success.set(false);
               log.info("集成配置缺少人员库节点信息,personLibrary->" + personLibrary);
               throw  new Throwable("集成配置缺少人员库节点信息,personLibrary->" + personLibrary);
            try {
               passwordFreeLoginService.pwdFreeLoginByBoolean(systemCode.toLowerCase(),this.getRequest());
            }catch (Throwable e){
               log.error( "用户鉴权失败:",e);
               throw new Throwable("用户鉴权失败");
            }
            String personClassCode = personAndDeptConfig.getPersonClassCode();
            orgMasterDataList = orgData.getMasterData();
            String deptLibrary = personAndDeptConfig.getDeptLibrary();
            if (StringUtils.isBlank(deptLibrary)) {
               success.set(false);
               log.info("集成配置缺少部门库节点信息,deptLibrary->" + deptLibrary);
               throw  new Throwable("集成配置缺少部门库节点信息,deptLibrary->" + deptLibrary);
            }
            String deptClassCode = personAndDeptConfig.getDeptClassCode();
            ClassfyVO classfyVO = new ClassfyVO();
            classfyVO.setLibrary(personLibrary);
            classfyVO.setClassCode(personClassCode);
            CodeClassifyVO  codeClassifyVO=this.getClassfy(classfyVO,personLibrary);
            classfyVO.setLibrary(deptLibrary);
            classfyVO.setClassCode(deptClassCode);
            CodeClassifyVO codeClassifyVO = this.getClassfy(classfyVO,deptLibrary);
            log.info("end:分类查询完毕");
            //获取分类模板信息
            if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){
@@ -705,24 +798,24 @@
            CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
            if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){
               success.set(false);
               throw  new  Throwable ("根据传输的分类,未获取MDM系统中对应模板");
               throw new Throwable ("根据传输的分类,未获取MDM系统中对应模板");
            }
            List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
            List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
               ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
            ).collect(Collectors.toList());
            List<Map> dataList=new ArrayList<>();
            List<String> codeList=new ArrayList<>();
            List<ApplyDataVO> applyDataVOList=new ArrayList<>();
            List<ApplyDataVO> deleteDataVOList=new ArrayList<>();
            orgMasterDataList.stream().forEach(orgMasterData -> {
               ApplyDataVO object=new ApplyDataVO();
               object.setCode(orgMasterData.getMdm_code());//编码
               object.setCode(orgMasterData.getDepartment_code());//编码
               object.setCreator(orgMasterData.getCreator());//创建者
               object.setEditor(orgMasterData.getModifier());//修改者
               object.setId(orgMasterData.getPk_mdm());//主键
               object.setId(orgMasterData.getId());//主键
               object.setStatus(CodeDefaultLC.RELEASED.getValue());//状态则需要判断
               Map<String,String> dataMap= VciBaseUtil.objectToMapString(orgMasterData);
               List<ProppertyVO> proppertyVOList=new ArrayList<>();
               List<ProppertyVO> proppertyVOList = new ArrayList<>();
               /***
                * 根据配置文件获取枚举值
                */
@@ -751,11 +844,10 @@
                  object.setOperate("delete");//操作类型
                  deleteDataVOList.add(object);
               }else{
                  object.setOperate("create");
                  applyDataVOList.add(object);
               }
               codeList.add(orgMasterData.getMdm_code());
               codeList.add(object.getCode());
            });
            R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId());
@@ -767,10 +859,10 @@
               throw new Throwable("根据业务类型未查询到业务类型对象!");
            }
            String tableName = btmTypeVO.getTableName();
            if (com.alibaba.nacos.common.utils.StringUtils.isBlank(tableName)) {
            if (StringUtils.isBlank(tableName)) {
               throw new Throwable("根据业务类型未查询到业务类型相关联的表");
            }
            StringBuffer sb=new StringBuffer();
            StringBuffer sb = new StringBuffer();
            sb.append(" select * from ");
            sb.append(tableName);
            sb.append(" where 1=1 ");
@@ -778,15 +870,16 @@
            sb.append(" and id in (");
            sb.append(VciBaseUtil.toInSql(codeList.toArray(new String[0])));
            sb.append(")");
            List<Map<String,String>> dataMapList=commonsMapper.queryByOnlySqlForMap(sb.toString());
            List<ClientBusinessObject> cboList=   ChangeMapTOClientBusinessObjects(dataMapList);
            List<Map<String,String>> dataMapList = commonsMapper.queryByOnlySqlForMap(sb.toString());
            DefaultAttrAssimtUtil.mapToLowerCase(dataMapList,true);
            List<ClientBusinessObject> cboList = ChangeMapTOClientBusinessObjects(dataMapList);
            ApplyDatasVO applyDatasVO=new ApplyDatasVO();
            ApplyDatasVO editDatasVO=new ApplyDatasVO();
            if(!CollectionUtils.isEmpty(cboList)){
               Map<String,ClientBusinessObject> oldpplyDataVOMap=   cboList.stream().filter(data -> data != null && StringUtils.isNotBlank(data.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
               Map<String,ClientBusinessObject> oldpplyDataVOMap =   cboList.stream().filter(data -> data != null && StringUtils.isNotBlank(data.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
               //数据库不存在的
               List<ApplyDataVO> applyApplyDataVOList = applyDataVOList.stream().filter(cbo -> {
                  String code =cbo.getCode();
                  String code = cbo.getCode();
                  return !oldpplyDataVOMap.containsKey(code);
               }).collect(Collectors.toList());
               applyDatasVO.setObject(applyApplyDataVOList);
@@ -807,15 +900,15 @@
            LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs=new LinkedList<>();
            if(editDatasVO.getObject()!=null&&editDatasVO.getObject().size()>0){
               DataObjectVO dataObjectVO = new DataObjectVO();
               this.getConfigDatas(systemCode, personLibrary, editDatasVO, attrVOS, dataObjectVO);
               this.getConfigDatas(systemCode, deptLibrary, editDatasVO, attrVOS, dataObjectVO);
               log.info("start:修改数据执行完毕");
               boolean  personApplyGroupCode =personAndDeptConfig.isPersonApplyGroupCode();
               boolean personApplyGroupCode = false;//personAndDeptConfig.isPersonApplyGroupCode();
               mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs,personApplyGroupCode);
               log.info("end:修改数据执行完毕");
            }
            if(applyDatasVO.getObject()!=null&&applyDatasVO.getObject().size()>0) {
               DataObjectVO dataObjectVO = new DataObjectVO();
               this.getConfigDatas(systemCode, personLibrary, applyDatasVO, attrVOS, dataObjectVO);
               this.getConfigDatas(systemCode, deptLibrary, applyDatasVO, attrVOS, dataObjectVO);
               CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid());
               CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
@@ -823,63 +916,72 @@
                  throw  new Throwable("编码规则");
               }
               List<XMLResultDataObjectDetailDO> xDOs=new CopyOnWriteArrayList<>();
               dataObjectVO.getRowData().parallelStream().forEach(rowData->{
                  String mesg="";
                  try {
                     CodeOrderDTO orderDTO = new CodeOrderDTO();
                     List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>();
                     orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//分类主键
                     orderDTO.setTemplateOid(templateVO.getOid());
                     if(!CollectionUtils.isEmpty(ruleVO.getSecVOList())) {
                        ruleVO.getSecVOList().stream().forEach(codeBasicSecVO -> {
                           if (codeBasicSecVO.getSecType().equals("codevariablesec")) {//规则之定义为可变码段存储主数据传递过来的数据
                              CodeOrderSecDTO CodeOrderSecDTO = new CodeOrderSecDTO();
                              CodeOrderSecDTO.setSecOid(codeBasicSecVO.getOid());
                              CodeOrderSecDTO.setSecValue(rowData.getCode());
                              codeOrderSecDTOList.add(CodeOrderSecDTO);
                           }
                        });
                     }
                     orderDTO.setCodeRuleOid(ruleVO.getOid());
                     orderDTO.setSecDTOList(codeOrderSecDTOList);//存储编码
                     orderDTO.setData(rowData.getFiledValue());
                     String code=engineService.addSaveCode(orderDTO);
                     if(StringUtils.isNotBlank(code)) {
                        StringBuffer sqlsb = new StringBuffer();
                        sqlsb.append(" select * from ");
                        sqlsb.append(tableName);
                        sqlsb.append(" where 1=1 ");
                        sqlsb.append(" and lastr=1 and lastv=1");
                        sqlsb.append(" and id in (");
                        sqlsb.append(VciBaseUtil.toInSql(code));
                        sqlsb.append(")");
                        List<Map<String, String>> newDataMapList = commonsMapper.queryByOnlySqlForMap(sqlsb.toString());
                        if (!CollectionUtils.isEmpty(newDataMapList)) {
                           String oid = StringUtils.isBlank(newDataMapList.get(0).get("OID")) ? "" : newDataMapList.get(0).get("OID");
                           List<String> oidList = new ArrayList<>();
                           oidList.add(oid);
                           //如果有申请就去调用申请集团码
                           if (isPersonApplyGroupCode) {
                              mdmIOService.sendApplyGroupcode(oidList, templateVO.getBtmTypeId(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue());
                              success.set(true);
                              mesg = "数据保存成功,等待申请集团码";
                           }
               //限制线程并行数量
               //customForkJoinPool.submit(()->{
               //   dataObjectVO.getRowData().parallelStream().forEach(rowData->{
               dataObjectVO.getRowData().forEach(rowData->{
                     String mesg="";
                     try {
                        CodeOrderDTO orderDTO = new CodeOrderDTO();
                        List<CodeOrderSecDTO> codeOrderSecDTOList=new ArrayList<>();
                        orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//分类主键
                        orderDTO.setTemplateOid(templateVO.getOid());
                        orderDTO.setCreator(rowData.getCreator());
                        orderDTO.setLastModifier(rowData.getEditor());
                        orderDTO.setLcStatus(rowData.getStatus());
                        if(!CollectionUtils.isEmpty(ruleVO.getSecVOList())) {
                           ruleVO.getSecVOList().stream().forEach(codeBasicSecVO -> {
                              if (codeBasicSecVO.getSecType().equals("codevariablesec")) {
                                 //规则之定义为可变码段存储主数据传递过来的数据
                                 CodeOrderSecDTO CodeOrderSecDTO = new CodeOrderSecDTO();
                                 CodeOrderSecDTO.setSecOid(codeBasicSecVO.getOid());
                                 CodeOrderSecDTO.setSecValue(rowData.getCode());
                                 codeOrderSecDTOList.add(CodeOrderSecDTO);
                              }
                           });
                        }
                        orderDTO.setCodeRuleOid(ruleVO.getOid());
                        orderDTO.setSecDTOList(codeOrderSecDTOList);//存储编码
                        orderDTO.setData(rowData.getFiledValue());
                        String code = engineService.addSaveCodeNotauthUser(orderDTO,false);
                        /*if(StringUtils.isNotBlank(code)) {
                           //rowData.setCode(code);
                           StringBuffer sqlsb = new StringBuffer();
                           sqlsb.append(" select * from ");
                           sqlsb.append(tableName);
                           sqlsb.append(" where 1=1 ");
                           sqlsb.append(" and lastr=1 and lastv=1");
                           sqlsb.append(" and id in (");
                           sqlsb.append(VciBaseUtil.toInSql(code));
                           sqlsb.append(")");
                           List<Map<String, String>> newDataMapList = commonsMapper.queryByOnlySqlForMap(sqlsb.toString());
                           if (!CollectionUtils.isEmpty(newDataMapList)) {
                              String oid = StringUtils.isBlank(newDataMapList.get(0).get("OID")) ? "" : newDataMapList.get(0).get("OID");
                              List<String> oidList = new ArrayList<>();
                              oidList.add(oid);
                              //如果有申请就去调用申请集团码
                              if (isPersonApplyGroupCode) {
                                 mdmIOService.sendApplyGroupcode(oidList, templateVO.getBtmTypeId(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue());
                                 success.set(true);
                                 mesg = "数据保存成功,等待申请集团码";
                              }
                           }
                        }*/
                     } catch (Exception e) {
                        log.error( "部门数据接收失败:",e);
                        mesg=e.getMessage();
                        e.printStackTrace();
                     //   throw new ServiceException(e.getMessage());
                     }finally {
                        XMLResultDataObjectDetailDO x=new XMLResultDataObjectDetailDO();
                        x.setId(rowData.getOid());
                        x.setCode(rowData.getCode());
                        x.setMsg(mesg);
                        x.setErrorid("1");
                        xDOs.add(x);
                     }
                  } catch (Exception e) {
                     mesg=e.getMessage();
                     e.getMessage();
                     e.printStackTrace();
                  }finally {
                     XMLResultDataObjectDetailDO x=new XMLResultDataObjectDetailDO();
                     x.setId(rowData.getOid());
                     x.setCode(rowData.getCode());
                     x.setMsg(mesg);
                     x.setErrorid("1");
                     xDOs.add(x);
                  }
               });
                  });
               //}).join();
               resultDataObjectDetailDOs.addAll(xDOs);
               boolean finalSuccess1 = success.get();
               String finalMessage1 = message;
@@ -897,7 +999,9 @@
            }
         }catch (Throwable e){
            success.set(false);
            message="人员数据接受失败:"+e.getMessage();
            message = "部门数据接收失败:"+e.getMessage();
            msg = "部门数据接收失败:"+e.getMessage();
            log.error( "部门数据接收失败:",e);
            //组织返回结果
            boolean finalSuccess = success.get();
            String finalMessage = message;
@@ -922,6 +1026,7 @@
            //记录日志
            this.saveLogs(systemCode, systemCode, data, resultStr, success.get(), msg, "syncDataForOrg");
         }catch (Throwable e){
            log.error( "保存日志失败:",e);
            e.printStackTrace();
         }
      }
@@ -973,9 +1078,16 @@
         systemId = interParameterVO.getData().getSystemId();
         UserVO userVo = interParameterVO.getData().getUser();
         //免密登录申请token,request中添加用户信息
         passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
         //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
         try {
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
         }catch (Throwable e){
            errorid = "1";
            log.error("用户鉴权失败",e);
            throw new Throwable("用户鉴权失败");
         }
         List<ClassfyVO> classVOList = classfysVO.getClassify();
         InterParameterVO finalInterParameterVO = interParameterVO;
         //InterParameterVO finalInterParameterVO = interParameterVO;
         //这是账号信息
         SessionInfo sessionInfo = new SessionInfo();
         sessionInfo.setUserId(userVo.getUserName());
@@ -1001,7 +1113,7 @@
               if(CODE_CHECKCONFIG) {
                  //校验是否配置
                  DockingSystemConfig dockingSystemConfig= checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getValue(),codeClassifyVO.getOid());
                  if(dockingSystemConfig==null){
                  if(dockingSystemConfig==null||StringUtils.isBlank(dockingSystemConfig.getOid())){
                     objerrorCode ="101";
                     throw new Throwable("系统标识为【"+ finalSystemId +"】,集成分类为【"+codeClassifyVO.getName()+"】以上分类,"+sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
                  }
@@ -1018,7 +1130,8 @@
               ApplyDatasVO applyDatasVO = classVO.getObjects();
               DataObjectVO dataObjectVO = new DataObjectVO();
               //将默认的属性全部替换掉
               List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
               List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
                  ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
               ).collect(Collectors.toList());
               this.getConfigDatas(finalSystemId, libray, applyDatasVO, attrVOS, dataObjectVO);
               log.info("end:数据构建完毕");
@@ -1026,6 +1139,8 @@
               mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs,isCodeOrGroupCode);
               log.info("end:修改数据执行完毕");
            } catch (Throwable e) {
               msg="编码更改/状态更改/删除:";
               log.error(msg,e);
               List<ApplyDataVO> applyDataVOList= classVO.getObjects().getObject();
               objerrorCode="1";
               if(!CollectionUtils.isEmpty(applyDataVOList)) {
@@ -1057,8 +1172,9 @@
            }
         });
      }catch (Throwable e){
         e.printStackTrace();;
         e.printStackTrace();
         msg="编码更改/状态更改/删除:"+e.getMessage();
         log.error(msg,e);
          /*  XMLResultSystemVO XMLResultSystemVO=new XMLResultSystemVO();
            XMLResultSystemVO.setErrorid(errorid);
            XMLResultSystemVO.setMsg("申请编码失败:->"+e.getMessage());
@@ -1080,10 +1196,10 @@
            if(!CollectionUtils.isEmpty(resultClassfyVOList)) {
               resultClassfyVOList.stream().forEach(xMLResultClassfyVO -> {
                  xMLResultClassfyVO.getObjects().stream().forEach(objec -> {
                     if (!(objec.getErrorid().equals("0") || objec.getErrorid().equals("204"))) {
                     if (!(objec.getErrorid().equals("0")||objec.getErrorid().equals("201") ||objec.getErrorid().equals("205")|| objec.getErrorid().equals("204"))) {
                        issucess[0] = false;
                        msg=objec.getMsg();
                     }
                     msg=objec.getMsg();
                  });
               });
            }
@@ -1093,6 +1209,7 @@
            //记录日志
            this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "syncEditData");
         }catch (Throwable e){
            log.error("保存日志失败",e);
            e.printStackTrace();
         }
      }
@@ -1119,7 +1236,7 @@
      log.info("查询分类的数据类型:->"+dataType);
      ResultClassifyVO resultClassifyVO =new ResultClassifyVO();
      List<ClassifyVO> classifyVOList=new ArrayList<>();
      com.vci.ubcs.code.vo.webserviceModel.classify.ResultData resultData=new com.vci.ubcs.code.vo.webserviceModel.classify.ResultData();
      ResultData resultData=new ResultData();
      try {
         if (StringUtils.isBlank(data)) {
            errorid = "101";
@@ -1141,13 +1258,21 @@
            errorid = "101";
            msg="接口参数:传入数据参数解析失败";
            e.printStackTrace();
            log.error("接口参数:传入数据参数解析失败",e);
            throw new Throwable("接口参数:传入数据参数解析失败");
         }
         QueryData queryData=queryClassifyVO.getData();
         UserVO userVo=queryData.getUser();
         //免密登录申请token,request中添加用户信息
         passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
         systemId=queryData.getSystemId();
         //免密登录申请token,request中添加用户信息
         //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
         try {
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
         }catch (Throwable e){
            errorid = "1";
            throw new Throwable("用户鉴权失败");
         }
         QueryLibraryVO libraryVO= queryData.getLibrary();
         String libId= libraryVO.getId();
         List<String> classifyIdList=  libraryVO.getClassifyid();
@@ -1172,7 +1297,7 @@
            throw new Throwable("接口参数:账号信息获取失败");
         }
         List<CodeClassify> libIdDos =classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().in(CodeClassify::getId, libId));
         if(CollectionUtils.isEmpty(libIdDos)) {
         if(!CollectionUtils.isEmpty(libIdDos)) {
            CodeClassify libCodeClassify =libIdDos.get(0);
            String oid=libCodeClassify.getOid();
            if (!CollectionUtils.isEmpty(classifyIdList)) {
@@ -1205,10 +1330,10 @@
                  throw new Throwable(msg);
               }
            } else {
               TreeQueryObject treeQueryObject = new TreeQueryObject();
               /*TreeQueryObject treeQueryObject = new TreeQueryObject();
               treeQueryObject.setParentOid(oid);
               treeQueryObject.setQueryAllLevel(true);
               codeClassifyVOS = classifyService.selectCodeClassifyDOByTree(treeQueryObject);
               treeQueryObject.setQueryAllLevel(true);*/
               codeClassifyVOS = classifyService.getIdPathToNamePathByParentId(oid,false);
            }
         }else{
            errorid = "101";
@@ -1228,7 +1353,7 @@
               classifyVO.setDescription(codeClassifyDO.getDescription());
               classifyVO.setName(codeClassifyDO.getName());
               classifyVO.setPid(codeClassifyDO.getParentCodeClassifyOid());
               classifyVO.setFullPathName(codeClassifyDO.getPath());
               classifyVO.setFullPathName(codeClassifyDO.getNamePath());
               classifyVOList.add(classifyVO);
            });
            libraryVo.setClassify(classifyVOList);
@@ -1239,8 +1364,10 @@
         issucess=true;
         resultData.setLibrary(libraryVo);
      }catch (Throwable e){
         e.printStackTrace();;
         e.printStackTrace();
         msg="查询分类失败:"+e.getMessage();
         log.error(msg,e);
      }finally {
         resultData.setErrorid(errorid);
         resultData.setMsg(msg);
@@ -1261,6 +1388,7 @@
         //记录日志
         this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassify");
      }catch (Throwable e){
         log.error("保存日志信息失败:",e);
         e.printStackTrace();
      }
      log.info("返回参数:"+resultStr);
@@ -1279,7 +1407,7 @@
      boolean issucess=false;
      String resultStr = "";
      String errorid="0";
      msg="成功";
      msg = "数据查询成功";
      String systemId="";
      log.info("查询分类的数据参数:->"+data);
      log.info("查询分类的数据类型:->"+dataType);
@@ -1300,13 +1428,21 @@
            errorid = "101";
            msg = "接口参数:传入数据参数解析失败";
            e.printStackTrace();
            log.error( "接口参数:传入数据参数解析失败",e);
            throw new Throwable("接口参数:传入数据参数解析失败");
         }
         CondtionsVO condtionsVO=dataCondtionsVO.getCondtions();
         systemId=condtionsVO.getSystemId();
         UserVO userVo=condtionsVO.getUser();
         //免密登录申请token,request中添加用户信息
         passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
         //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
         try {
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
         }catch (Throwable e){
            errorid = "1";
            log.error("用户鉴权失败",e);
            throw new Throwable("用户鉴权失败");
         }
         CondtionVO condtionVO= condtionsVO.getCondtion();
         SessionInfo sessionInfo = new SessionInfo();
         sessionInfo.setUserId(userVo.getUserName());
@@ -1354,7 +1490,7 @@
               if(CODE_CHECKCONFIG) {
                  //校验是否配置
                  DockingSystemConfig dockingSystemConfig= checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getValue(),currentCodeClassify[0].getOid());
                  if(dockingSystemConfig==null){
                  if(dockingSystemConfig==null||StringUtils.isBlank(dockingSystemConfig.getOid())){
                     errorid ="101";
                     throw new Throwable("系统标识为【"+ systemId +"】,集成分类为【"+currentCodeClassify[0].getName()+"】以上分类,"+sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
                  }
@@ -1365,8 +1501,8 @@
               TreeQueryObject treeQueryObject=new TreeQueryObject();
               treeQueryObject.setParentOid(oid);
               treeQueryObject.setQueryAllLevel(true);
               dataCodeClassifyVOList=classifyService.selectCodeClassifyDOByTree(treeQueryObject);
               dataCodeClassifyVOList.add(CodeClassifyWrapper.build().entityVO(currentCodeClassify[0]));
               dataCodeClassifyVOList=classifyService.selectAllClassifyByOid(oid,"oid");//.selectCodeClassifyDOByTree(treeQueryObject);
               //dataCodeClassifyVOList.add(CodeClassifyWrapper.build().entityVO(currentCodeClassify[0]));
               Map<String, CodeClassifyVO> oidCodeclassifyDOMap = dataCodeClassifyVOList.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
               List<PropertyVO>  propertyVOS=condtionVO.getPro();
@@ -1403,7 +1539,8 @@
               sb.append(" and lastr=1 and lastv=1" );
               sb.append(" and codeclsfid in (" + VciBaseUtil.toInSql(oidCodeclassifyDOMap.keySet().toArray(new String[0])) +")");
               sb.append(" and Lcstatus in (" + VciBaseUtil.toInSql(statusList.toArray(new String[]{})) +")");
               List<Map<String,String>>  newDataList= commonsMapper.queryByOnlySqlForMap(sb.toString());
               List<Map<String,String>> newDataList = commonsMapper.queryByOnlySqlForMap(sb.toString());
               DefaultAttrAssimtUtil.mapToLowerCase(newDataList,true);
               List<ClientBusinessObject> clientBusinessObjects=   ChangeMapTOClientBusinessObjects(newDataList);
               List<com.vci.ubcs.code.vo.webserviceModel.data.DataObjectVO> dataObjectVOS=new ArrayList<>();
               if(!CollectionUtils.isEmpty(clientBusinessObjects)){
@@ -1443,6 +1580,9 @@
                     dataObjectVOS.add(dataObjectVO);
                  });
                  resultDataVO.setObject(dataObjectVOS);
               }else{
                  errorid = "0";
                  msg = "接口参数:classCode 未查询到对应的数据";
               }
            }else{
               errorid = "101";
@@ -1453,11 +1593,11 @@
            errorid = "101";
            msg = "接口参数:library 未查询到对应的库节点信息";
         }
         errorid = "0";
         msg = "数据查询成功";
      }catch (Throwable e){
         e.printStackTrace();;
         e.printStackTrace();
         msg="查询数据失败:"+e.getMessage();
         log.error(msg,e);
      }finally {
         resultDataVO.setErrorid(errorid);
         resultDataVO.setMsg(msg);
@@ -1477,6 +1617,7 @@
      try {    //记录日志
         this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryData");
      }catch (Throwable e){
         log.error("保存日志信息失败:",e);
         e.printStackTrace();
      }
      log.info("返回参数:"+resultStr);
@@ -1515,14 +1656,23 @@
         } catch (Throwable e) {
            errorid = "101";
            msg = "接口参数:传入数据参数解析失败";
            log.error(msg,e);
            e.printStackTrace();
            throw new Throwable("接口参数:传入数据参数解析失败");
         }
         QueryData queryData=queryClassifyVO.getData();
         UserVO userVo=queryData.getUser();
         //免密登录申请token,request中添加用户信息
         passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
         systemId=queryData.getSystemId();
         //免密登录申请token,request中添加用户信息
         //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
         try {
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
         }catch (Throwable e){
            errorid = "1";
            log.error("用户鉴权失败",e);
            throw new Throwable("用户鉴权失败");
         }
         QueryLibraryVO libraryVO= queryData.getLibrary();
         String libId= libraryVO.getId();
         List<String> classifyIdList=  libraryVO.getClassifyid();
@@ -1588,7 +1738,7 @@
                              String num=StringUtils.isBlank(codeFixedValueVO.getOrderNum()+"")?"":codeFixedValueVO.getOrderNum()+"";
                              String name=StringUtils.isBlank(codeFixedValueVO.getName())?"":codeFixedValueVO.getName();
                              String description=StringUtils.isBlank(codeFixedValueVO.getDescription())?"":codeFixedValueVO.getDescription();
                           CodeSectionValueVO sectionValueVO=new CodeSectionValueVO(id,num,value,name,"",description);
                           CodeSectionValueVO sectionValueVO=new CodeSectionValueVO(id,num,value,id,"",description);
                           codeSectionValueVOList.add(sectionValueVO);
                           });
                        }else if(secType.equals("codeclassifysec")){//分类码段
@@ -1661,11 +1811,11 @@
                                 if (!CollectionUtils.isEmpty(ListMap)) {
                                    ListMap.stream().forEach(map -> {
                                       num[0]++;
                                       String id = map.getOrDefault("OID".toUpperCase(Locale.ROOT), "").toString();
                                       String value = map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString();
                                       String text = map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString();
                                       String description = map.getOrDefault("description".toUpperCase(Locale.ROOT), "").toString();
                                       CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num[0] + "", value, text, "", description);
                                       String id =Func.isNull(map.getOrDefault("OID".toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault("OID".toUpperCase(Locale.ROOT), "").toString();
                                       String value = Func.isNull(map.getOrDefault(valueField.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString();
                                       String text =Func.isNull(map.getOrDefault(textField.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString();
                                       String description =Func.isNull(map.getOrDefault("description".toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault("description".toUpperCase(Locale.ROOT), "").toString();
                                       CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num[0] + "", value, id, "", description);
                                       codeSectionValueVOList.add(sectionValueVO);
                                    });
                                 }
@@ -1750,11 +1900,11 @@
                                 if (!CollectionUtils.isEmpty(ListMap)) {
                                    ListMap.stream().forEach(map -> {
                                       num[0]++;
                                       String id = map.getOrDefault("OID".toUpperCase(Locale.ROOT), "").toString();
                                       String value = map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString();
                                       String text = map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString();
                                       String description = map.getOrDefault("description".toUpperCase(Locale.ROOT), "").toString();
                                       String pid = map.getOrDefault(parentFieldName.toUpperCase(Locale.ROOT), "").toString();
                                       String id =Func.isNull(map.getOrDefault("OID".toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault("OID".toUpperCase(Locale.ROOT), "").toString();
                                       String value =Func.isNull(map.getOrDefault(valueField.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString();
                                       String text =Func.isNull(map.getOrDefault(textField.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString();
                                       String description =Func.isNull(map.getOrDefault("description".toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault("description".toUpperCase(Locale.ROOT), "").toString();
                                       String pid =Func.isNull(map.getOrDefault(parentFieldName.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(parentFieldName.toUpperCase(Locale.ROOT), "").toString();
                                       CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num[0] + "", value, text, pid, description);
                                       codeSectionValueVOList.add(sectionValueVO);
                                    });
@@ -1906,8 +2056,9 @@
         issucess=true;
         resultClassifyRuleData.setLibrary(resultLibraryVO);
      }catch (Throwable e){
         e.printStackTrace();;
         e.printStackTrace();
         msg="查询分类失败:"+e.getMessage();
         log.error("查询分类失败:",e);
      }finally {
         resultClassifyRuleData.setErrorid(errorid);
         resultClassifyRuleData.setMsg(msg);
@@ -1928,6 +2079,7 @@
         //记录日志
         this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassifyRule");
      }catch (Throwable e){
         log.error("保存日志信息失败:",e);
         e.printStackTrace();
      }
      log.info("返回参数:"+resultStr);
@@ -1963,7 +2115,7 @@
         try {
            if ("xml".equals(dataType)) {
               XStream xStream = new XStream(new DomDriver());
               xStream.processAnnotations(RootDataVO.class);
               xStream.processAnnotations(ApplyBZVO.class);
               xStream.autodetectAnnotations(true);
               ApplyBZVO rootDataVO = (ApplyBZVO) xStream.fromXML(data);
               applyBZParamVO.setData(rootDataVO);
@@ -1972,25 +2124,30 @@
            }
         } catch (Throwable e) {
            errorid[0] = "101";
            log.error("接口参数:传入数据参数解析失败:",e);
            throw new Throwable("接口参数:传入数据参数解析失败");
         }
         classfyBZVO = applyBZParamVO.getData().getClassify();
         systemId = applyBZParamVO.getData().getSystemId();
         UserVO userVo = applyBZParamVO.getData().getUser();
         //免密登录申请token,request中添加用户信息
         passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(), this.getRequest());
         AuthUtil.getUser();
         //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(), this.getRequest());
         try {
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
         }catch (Throwable e){
            errorid[0] = "1";
            log.error("用户鉴权失败:",e);
            throw new Throwable("用户鉴权失败");
         }
         //这是账号信息
         SessionInfo sessionInfo = new SessionInfo();
         sessionInfo.setUserId(userVo.getUserName());
         sessionInfo.setUserName(userVo.getTrueName());
         sessionInfo.setIp(userVo.getIp());
         VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
//         List<XMLResultDataObjectDetailDO> allResultDataObjectDetailDOS=new ArrayList<>();
         String finalSystemId = systemId;
         String libray="";
         boolean isCodeOrGroupCode=false;
         libray = classfyBZVO.getLibrary();
         CodeClassifyVO codeClassifyVO = getClassfy(classfyBZVO,libray);
         log.info("end:分类查询完毕");
@@ -2004,7 +2161,7 @@
            //校验是否配置
            DockingSystemConfig dockingSystemConfig=null;
            dockingSystemConfig=checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue(),codeClassifyVO.getOid());
            if(dockingSystemConfig==null){
            if(dockingSystemConfig==null||StringUtils.isBlank(dockingSystemConfig.getOid())){
               errorid[0] ="101";
               throw new Throwable("系统标识为【"+ finalSystemId +"】,集成分类为【"+codeClassifyVO.getName()+"】以上分类,"+sysIntegrationPushTypeEnum.ACCPET_APPCODE.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
            }
@@ -2012,63 +2169,88 @@
         }
         CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
         if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){
            objerrorCode="1";
            throw  new  Throwable ("根据传输的分类,未获取MDM系统中对应模板");
            objerrorCode="100";
            throw  new  Throwable ("根据传输的分类,未获取系统中对应模板");
         }
         log.info("end:模板查询完毕");
         ApplyBZDatasVO applyBZDatasVO = classfyBZVO.getObjects();
            DataObjectVO dataObjectVO = new DataObjectVO();
         List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
         List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
            ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
         ).collect(Collectors.toList());
         List<ApplyBZDataVO> applyBZDataVOList=   applyBZDatasVO.getObject();
         if(applyBZDataVOList.size()>1){
            objerrorCode="1";
            throw  new  Throwable ("标准申请只支持一条数据申请");
         }
         String finalLibray = libray;
         ClassfyBZVO finalClassfyBZVO = classfyBZVO;
         //规则的主键需要去获取
         CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid());
         if(classifyFullInfo==null ||classifyFullInfo.getCurrentClassifyVO()==null || StringUtils.isBlank(classifyFullInfo.getCurrentClassifyVO().getOid())){
            objerrorCode="1";
            log.info("classifyFullInfo:"+"根据传输的分类,未获取分类相关信息");
            throw  new  Throwable ("根据传输的分类,未获取分类相关信息");
         }
         CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
         if(ruleVO==null||StringUtils.isBlank(ruleVO.getOid())){
            objerrorCode="102";
            throw  new  Throwable ("根据传输的分类,未获取MDM系统中对应规则");
         }
         log.info("end:规则获取完毕");
         List<CodeOrderSecDTO> codeOrderSecDTOList = getRuleCodeOrderSecDTOs(classfyBZVO.getSections().getSection(), ruleVO,classifyFullInfo);
         log.info("end:码段获取完毕");
         CodeBZApplyDTO codeBZApplyDTO=new CodeBZApplyDTO();
         codeBZApplyDTO.setSecDTOList(codeOrderSecDTOList);//分类码段
         applyBZDataVOList.stream().forEach(applyBZDataVO -> {
            String code="";
            String id=applyBZDataVO.getId();
            try {
               this.getConfigDatas(finalSystemId, finalLibray, applyBZDatasVO, attrVOS, dataObjectVO);
               List<ProppertyVO> proppertyVOList=applyBZDataVO.getProp();
               String oldCodeValue=applyBZDataVO.getOldCode();
               setPropertyValue(oldCode,oldCodeValue,proppertyVOList);//源标准号
               boolean editSeriesFlag= applyBZDataVO.isEditSeriesFlag();
               setPropertyValue(isEditSeries,String.valueOf(editSeriesFlag),proppertyVOList);//是否更为系列
               boolean seriesFlag=applyBZDataVO.isSeriesFlag();
               setPropertyValue(isSeries,String.valueOf(seriesFlag),proppertyVOList);//源标准类型
               String operationTypeValue=applyBZDataVO.getOperationType();
               setPropertyValue(operationType,operationTypeValue,proppertyVOList);//操作类型1:制定,2:修订
               String releaseTimeValue= applyBZDataVO.getReleaseTime();
               setPropertyValue(releaseTime,releaseTimeValue,proppertyVOList);//发布时间
               String seriesFlow=applyBZDataVO.getSeriesFlow();//系列流水
               codeBZApplyDTO.setOldCode(oldCodeValue);
               codeBZApplyDTO.setReleaseTime(releaseTimeValue);
               codeBZApplyDTO.setEditSeries(editSeriesFlag);
               codeBZApplyDTO.setSeries(seriesFlag);
               codeBZApplyDTO.setOperationType(operationTypeValue);
               codeBZApplyDTO.setSeriesFlow(seriesFlow);
               codeBZApplyDTO.setCodeClassifyOid(codeClassifyVO.getOid());
               codeBZApplyDTO.setCodeRuleOid(ruleVO.getOid());
               codeBZApplyDTO.setTemplateOid(templateVO.getOid());
               codeBZApplyDTO.setCreator(applyBZDataVO.getCreator());
               codeBZApplyDTO.setLastModifier(applyBZDataVO.getEditor());
               codeBZApplyDTO.setLcStatus(applyBZDataVO.getStatus());
               ApplyBZDatasVO newApplyBZDatasVO=new ApplyBZDatasVO();
               applyBZDataVO.setProp(proppertyVOList);
               newApplyBZDatasVO.setObject(Arrays.asList(applyBZDataVO));
               log.info("end:数据组织完毕");
               //规则的主键需要去获取
               CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyVO.getOid());
               if(classifyFullInfo==null ||classifyFullInfo.getCurrentClassifyVO()==null || StringUtils.isBlank(classifyFullInfo.getCurrentClassifyVO().getOid())){
                  objerrorCode="1";
                  log.info("classifyFullInfo:"+"根据传输的分类,未获取分类相关信息");
                  throw  new  Throwable ("根据传输的分类,未获取分类相关信息");
               }
               CodeRuleVO ruleVO = engineService.getCodeRuleByClassifyFullInfo(classifyFullInfo);
               if(ruleVO==null||StringUtils.isBlank(ruleVO.getOid())){
                  objerrorCode="102";
                  throw  new  Throwable ("根据传输的分类,未获取MDM系统中对应规则");
               }
               log.info("end:规则获取完毕");
               //List<CodeOrderSecDTO> codeOrderSecDTOList = getRuleCodeOrderSecDTOs(ruleVO,classifyFullInfo);
               log.info("end:码段获取完毕");
               CodeOrderDTO orderDTO = new CodeOrderDTO();
               orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//分类主键
               //orderDTO.setSecDTOList(codeOrderSecDTOList);//分类码段
               //mdmIOService.batchSyncApplyCode(orderDTO, dataObjectVO, resultDataObjectDetailDOs,isCodeOrGroupCode);
               //allResultDataObjectDetailDOS.add(resultDataObjectDetailDOs);
               log.info("end:申请获取完毕");
               this.getConfigDatas(finalSystemId, finalLibray, newApplyBZDatasVO, attrVOS, dataObjectVO);
               log.info("end:数据组织完毕");
               codeBZApplyDTO.setData(dataObjectVO.getRowData().get(0).getFiledValue());
               code=engineService.addSaveBZCodeNotauthUser(codeBZApplyDTO,false);
               msg="编码申请成功:编码为:"+code;
            } catch (Throwable e) {
               List<ApplyBZDataVO> applyDataVOList = finalClassfyBZVO.getObjects().getObject();
               objerrorCode = "1";
               if (!CollectionUtils.isEmpty(applyDataVOList)) {
                  applyDataVOList.stream().forEach(applyDataVO -> {
                     XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
                     xmlResultDataObjectDetailDO.setCode("");
                     xmlResultDataObjectDetailDO.setId(applyDataVO.getId());
                     xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
                     xmlResultDataObjectDetailDO.setMsg("编码申请失败:" + e.getMessage());
                     resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
                  });
               } else {
                  XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
                  xmlResultDataObjectDetailDO.setCode("");
                  xmlResultDataObjectDetailDO.setId("");
                  xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
                  xmlResultDataObjectDetailDO.setMsg("编码申请失败:" + e.getMessage());
                  resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
               }
               msg="编码申请失败:" +e.getMessage();
               log.error(msg,e);
               e.printStackTrace();
            }finally {
               XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
               xmlResultDataObjectDetailDO.setCode(code);
               xmlResultDataObjectDetailDO.setId(id);
               xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
               xmlResultDataObjectDetailDO.setMsg(msg);
               resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
            }
         });
         XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO();
@@ -2085,8 +2267,8 @@
      }catch (Throwable e){
         e.printStackTrace();
         msg="申请编码失败:"+e.getMessage();
         log.error(msg,e);
      }finally {
         XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO();
         xmlResultSystemVO.setClassifys(resultClassfyVOList);
         xmlResultSystemVO.setMsg(msg);
@@ -2099,10 +2281,10 @@
            if(!CollectionUtils.isEmpty(resultClassfyVOList)) {
               resultClassfyVOList.stream().forEach(xMLResultClassfyVO -> {
                  xMLResultClassfyVO.getObjects().stream().forEach(objec -> {
                     if (!(objec.getErrorid().equals("0") || objec.getErrorid().equals("204"))) {
                     if (!(objec.getErrorid().equals("0")||objec.getErrorid().equals("201")||objec.getErrorid().equals("205") || objec.getErrorid().equals("204"))) {
                        issucess[0] = false;
                        msg=objec.getMsg();
                     }
                     msg=objec.getMsg();
                  });
               });
            }
@@ -2111,6 +2293,7 @@
            //记录日志
            this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "applyCodeForBZ");
         }catch (Throwable e){
            log.error("保存日志信息失败:",e);
            e.printStackTrace();
         }
      }
@@ -2118,6 +2301,15 @@
      //调用集团申请接口申请集团码
      return resultStr;
   }
   private void setPropertyValue(String key,String value,List<ProppertyVO> proppertyVOList){
      ProppertyVO proppertyVO=new ProppertyVO();
      proppertyVO.setKey(key);
      proppertyVO.setValue(StringUtils.isBlank(value)?"":value);
      proppertyVOList.add(proppertyVO);
   }
   /***
    * 查询校验分类信息
    * @param classfyVO
@@ -2135,7 +2327,7 @@
            if (!CollectionUtils.isEmpty(codeClassifyList)) {
               codeClassifyList.stream().forEach(codeClassify -> {
                  CodeClassifyVO codeClassifyVO=  classifyService.getTopClassifyVO(codeClassify.getOid());
                  if(codeClassifyVO.getId().toLowerCase(Locale.ROOT).equals(libray.toLowerCase(Locale.ROOT))){
                  if(codeClassifyVO.getId().toUpperCase(Locale.ROOT).equals(libray.toUpperCase(Locale.ROOT))){
                     newCodeClassify[0] =codeClassify;
                  }
               });
@@ -2156,10 +2348,12 @@
         }
      }catch (Throwable e){
         objerrorCode="100";
         log.error("获取分类信息失败:",e);
         throw    new  Throwable("获取分类信息失败:"+e.getMessage());
      }
      return classifyVO;
   }
   /***
    * 查询校验分类信息
    * @param classfyVO
@@ -2177,7 +2371,7 @@
            if (!CollectionUtils.isEmpty(codeClassifyList)) {
               codeClassifyList.stream().forEach(codeClassify -> {
                  CodeClassifyVO codeClassifyVO=  classifyService.getTopClassifyVO(codeClassify.getOid());
                  if(codeClassifyVO.getId().toLowerCase(Locale.ROOT).equals(libray.toLowerCase(Locale.ROOT))){
                  if(codeClassifyVO.getId().toUpperCase(Locale.ROOT).equals(libray.toUpperCase(Locale.ROOT))){
                     newCodeClassify[0] =codeClassify;
                  }
               });
@@ -2198,6 +2392,7 @@
         }
      }catch (Throwable e){
         objerrorCode="100";
         log.error("获取分类信息失败:",e);
         throw    new  Throwable("获取分类信息失败:"+e.getMessage());
      }
      return classifyVO;
@@ -2205,9 +2400,11 @@
   private List<ClientBusinessObject> ChangeMapTOClientBusinessObjects(List<Map<String,String>> oldDataMap){
      List<ClientBusinessObject> clientBusinessObjectList=new ArrayList<>();
      DefaultAttrAssimtUtil.mapToLowerCase(oldDataMap,true);
      final BladeUser user = AuthUtil.getUser();
      oldDataMap.stream().forEach(dataMap->{
         ClientBusinessObject clientBusinessObject=new ClientBusinessObject();
         DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject);
         DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject,false,user);
         for (String key:dataMap.keySet()){
            Object value= dataMap.getOrDefault(key,"");
            clientBusinessObject.setAttributeValue(key.toLowerCase(Locale.ROOT),value==null?"":value.toString());
@@ -2216,7 +2413,6 @@
      });
      return clientBusinessObjectList;
   }
   private List<CodeOrderSecDTO> getRuleCodeOrderSecDTOsBZ(CodeRuleVO ruleVO,CodeClassifyFullInfoBO classifyFullInfo){
      List<CodeBasicSecVO>  codeBasicSecVOS= ruleVO.getSecVOList();
@@ -2230,9 +2426,13 @@
      return codeOrderSecDTOList;
   }
   /***
    * 根据穿入的参数信息校验码段规则
   /**
    * 根据传入的参数信息校验码段规则
    * @param SectionVOList
    * @param ruleVO
    * @param classifyFullInfo
    * @return
    * @throws Throwable
    */
   private List<CodeOrderSecDTO> getRuleCodeOrderSecDTOs(List<SectionVO> SectionVOList,CodeRuleVO ruleVO,CodeClassifyFullInfoBO classifyFullInfo) throws Throwable{
      List<CodeBasicSecVO>  codeBasicSecVOS= ruleVO.getSecVOList();
@@ -2245,8 +2445,12 @@
      Map<String,String> errorMap=new HashMap<>();
      for(CodeBasicSecVO codeBasicSecVO: codeBasicSecVOS) {
         String sectype = codeBasicSecVO.getSecType();
      //   String newSecName=codeBasicSecVO.getName();
         String classifySecOid= codeBasicSecVO.getOid();
         String message="";
         //#NaN?表示码值为空的场景
         String nullSymbol = EnumCache.getValue("nullSymbol", "NULL");
         nullSymbol = Func.isBlank(nullSymbol) ? "#NaN?":nullSymbol;
         if (!sectype.equals(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue())) {
            String name = codeBasicSecVO.getName();
            String sectypeText = codeBasicSecVO.getSecTypeText();
@@ -2257,15 +2461,14 @@
               CodeOrderSecDTO.setSecOid(codeBasicSecVO.getOid());
               String sectypeValue = sectionVOMap.get(name);
               log.info("码段值:"+sectypeValue);
               CodeSecTypeEnum secType = CodeSecTypeEnum.forValue(sectype);
               if(CODE_CLASSIFY_SEC.equals(secType)) {//如果是分类的话,则需要匹配传过来的分类代号与
            //   CodeSecTypeEnum secType = CodeSecTypeEnum.forValue(sectype);
               if(CODE_CLASSIFY_SEC.getValue().equals(sectype)) {//如果是分类的话,则需要匹配传过来的分类代号与
                  //先简称是否有关联模板,有模板要先删除
                  List<CodeClassifyValue> codeClassifyValueDOList = codeClassifyValueService.list(Wrappers.<CodeClassifyValue>query().lambda().eq(CodeClassifyValue::getCodeClassifySecOid,classifySecOid));
                  if (!CollectionUtils.isEmpty(codeClassifyValueDOList)) {
                     Map<String, CodeClassifyValue> codeClassifyValueDOMap = codeClassifyValueDOList.stream().collect(Collectors.toMap(s -> s.getId(), t -> t, (o1, o2) -> o2));
                     if(codeClassifyValueDOMap.containsKey(sectypeValue)){
                        CodeClassifyValue codeClassifyValue=   codeClassifyValueDOMap.get(sectypeValue);
                     if(codeClassifyValueDOMap.containsKey(sectypeValue) || nullSymbol.equals(sectypeValue)){
                        CodeClassifyValue codeClassifyValue = codeClassifyValueDOMap.get(sectypeValue);
                        sectypeValue=codeClassifyValue.getOid();
                     }else {
                        //throw new Throwable("传入的分类码段:【" + name + " 值:" + sectypeValue + "】,不符合当前分类层级代号");
@@ -2273,15 +2476,163 @@
                        errorMap.put("error",errorMap.getOrDefault("error","")+";"+message);
                     }
                  }
               }else if(CODE_REFER_SEC.getValue().equals(sectype)){
                  String referBtmId=codeBasicSecVO.getReferBtmId();
                  String btmName=codeBasicSecVO.getReferBtmName();
                  String referConfig= codeBasicSecVO.getReferConfig();
                  CoderefersecSearchVO coderefersecSearchVO=new CoderefersecSearchVO();
                  if(StringUtils.isNotBlank(referConfig)){
                     coderefersecSearchVO = JSONObject.toJavaObject(JSONObject.parseObject(referConfig), CoderefersecSearchVO.class);
                  }
                  String buildSqlwhere="";
                  List<CodeSectionValueVO> codeSectionValueVOList=new ArrayList<>();
                  if(coderefersecSearchVO!=null) {
                     Map<String, Object> condtionMap = new HashMap<>();
                     String valueField= coderefersecSearchVO.getValueField();
                     if(StringUtils.isNotBlank(valueField)){
                        condtionMap.put(valueField,sectypeValue);
                     }
                     if (coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.DEFAULT.getValue()) || coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.GRID.getValue())) {//默认样式/列表
                        List<CodeSrchCondConfigVO> codeSrchCondConfigVOList = coderefersecSearchVO.getCodeSrchCondConfigVOS();
                        if (!CollectionUtils.isEmpty(codeSrchCondConfigVOList)) {
                           codeSrchCondConfigVOList.stream().forEach(codeSrchCondConfigVO -> {
                              condtionMap.put(codeSrchCondConfigVO.getFilterField() + codeSrchCondConfigVO.getFilterType(), codeSrchCondConfigVO.getFilterValue());
                           });
                        }
                        if(!CollectionUtils.isEmpty(condtionMap)) {
                           buildSqlwhere = UBCSSqlKeyword.buildSqlwhere(condtionMap);
                        }
                        //使用传入的业务类型查询表
                        R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referBtmId));
                        if (!listR.isSuccess() || listR.getData().size() == 0) {
                           throw new VciBaseException("传入业务类型未查询到相应表单,请检查!");
                        }
                        String referTable = listR.getData().get(0).getTableName();
                        StringBuffer sb = new StringBuffer();
                        sb.append(" select * from  ");
                        sb.append(referTable);
                        sb.append(" where 1=1  ");
                        if (StringUtils.isNotBlank(buildSqlwhere)) {
                           sb.append(buildSqlwhere);
                        }
                        List<Map> ListMap = commonsMapper.selectBySql(sb.toString());
                        //String valueField = coderefersecSearchVO.getValueField();
                        String textField = coderefersecSearchVO.getTextField();
                        final int[] num = {0};
                        if (!CollectionUtils.isEmpty(ListMap)) {
                           ListMap.stream().forEach(map -> {
                              num[0]++;
                              String id = Func.isNull(map.getOrDefault("OID".toUpperCase(Locale.ROOT), "")) ? "" : map.getOrDefault("OID".toUpperCase(Locale.ROOT), "").toString();
                              String value = Func.isNull(map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "")) ? "" : map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString();
                              String text = Func.isNull(map.getOrDefault(textField.toUpperCase(Locale.ROOT), "")) ? "" : map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString();
                              String description = Func.isNull(map.getOrDefault("description".toUpperCase(Locale.ROOT), "")) ? "" : map.getOrDefault("description".toUpperCase(Locale.ROOT), "").toString();
                              CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num[0] + "", value, id, "", description);
                              codeSectionValueVOList.add(sectionValueVO);
                           });
                        }
                     }else if (coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.TREE.getValue())) {//树形
                        //使用传入的业务类型查询表
                        R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referBtmId));
                        if (!listR.isSuccess() || listR.getData().size() == 0) {
                           throw new VciBaseException("传入业务类型未查询到相应表单,请检查!");
                        }
                        String referTable = listR.getData().get(0).getTableName();
                        String oidFieldName = StringUtils.isNotBlank(coderefersecSearchVO.getParentUsedField())?coderefersecSearchVO.getParentUsedField():coderefersecSearchVO.getValueField();
                        String parentValue =coderefersecSearchVO.getParentValue();
                        String parentFieldName =StringUtils.isBlank(coderefersecSearchVO.getParentFieldName())?"":coderefersecSearchVO.getParentFieldName();
                        List<CodeSrchCondConfigVO> codeSrchCondConfigVOList = coderefersecSearchVO.getCodeSrchCondConfigVOS();
                        List<CodeShowFieldConfigVO> codeShowFieldConfigVOS=coderefersecSearchVO.getCodeShowFieldConfigVOS();
                        if (!CollectionUtils.isEmpty(codeSrchCondConfigVOList)) {
                           codeSrchCondConfigVOList.stream().forEach(codeSrchCondConfigVO -> {
                              condtionMap.put(codeSrchCondConfigVO.getFilterField() + codeSrchCondConfigVO.getFilterType(), codeSrchCondConfigVO.getFilterValue());
                           });
                        }
                        if(!CollectionUtils.isEmpty(condtionMap)) {
                           buildSqlwhere = UBCSSqlKeyword.buildSqlwhere(condtionMap);
                        }
                        //if("all".equals(coderefersecSearchVO.getLoadType())) {
                        String parentOidSql = "";
                        if(StringUtils.isNotBlank(parentValue)){
                           String temp=parentValue;
                           if(temp.startsWith(QueryOptionConstant.IN)){
                              temp = temp.substring((QueryOptionConstant.IN).length()).trim();
                              parentOidSql = " in " + ((temp.startsWith("(")  && temp.endsWith(")"))?temp:"(" + temp + ")");
                           }else if(temp.startsWith(QueryOptionConstant.NOTIN)){
                              parentOidSql = " not in " + ((temp.startsWith("(")  && temp.endsWith(")"))?temp:"(" + temp + ")");
                           }else if(temp.startsWith(QueryOptionConstant.NOTEQUAL)){
                              temp = temp.substring((QueryOptionConstant.NOTEQUAL).length()).trim();
                              parentOidSql = QueryOptionConstant.NOTEQUAL +  " " + ((temp.startsWith("'")  && temp.endsWith("'"))?temp:"'" + temp + "'");
                           }else if(temp.startsWith(QueryOptionConstant.MORETHAN)){
                              temp = temp.substring((QueryOptionConstant.MORETHAN).length()).trim();
                              parentOidSql = QueryOptionConstant.MORETHAN + " " +  ((temp.startsWith("'")  && temp.endsWith("'"))?temp:"'" + temp + "'");
                           }else if(temp.startsWith(QueryOptionConstant.MORE)){
                              temp = temp.substring((QueryOptionConstant.MORE).length()).trim();
                              parentOidSql = QueryOptionConstant.MORE + " " +  ((temp.startsWith("'")  && temp.endsWith("'"))?temp:"'" + temp + "'");
                           }else if(temp.startsWith(QueryOptionConstant.LESSTHAN)){
                              temp = temp.substring((QueryOptionConstant.LESSTHAN).length()).trim();
                              parentOidSql = QueryOptionConstant.LESSTHAN + " " +  ((temp.startsWith("'")  && temp.endsWith("'"))?temp:"'" + temp + "'");
                           }else if(temp.startsWith(QueryOptionConstant.LESS)){
                              temp = temp.substring((QueryOptionConstant.LESS).length()).trim();
                              parentOidSql = QueryOptionConstant.LESS +  " " + ((temp.startsWith("'")  && temp.endsWith("'"))?temp:"'" + temp + "'");
                           }else if (temp.startsWith(QueryOptionConstant.ISNOTNULL)) {
                              parentOidSql = " is not null";
                           } else if (temp.startsWith(QueryOptionConstant.ISNULL)) {
                              parentOidSql = " is  null";
                           } else if(temp.contains("*")){
                              parentOidSql = " like " + ((temp.startsWith("'")  && temp.endsWith("'"))?temp:"'" + temp + "'").replace("*","%");
                           }else {
                              parentOidSql = " = " + ((temp.startsWith("'")  && temp.endsWith("'"))?temp:"'" + temp + "'");
                           }
                        }
                        //查询全部的信息
                        buildSqlwhere+= " and oid  in (select oid from " +referTable + " START WITH " + coderefersecSearchVO.getParentFieldName() + " "+
                           parentOidSql +
                           " CONNECT BY PRIOR " + oidFieldName + " = " + parentFieldName + ")";
                        StringBuffer sb = new StringBuffer();
                        sb.append(" select * from  ");
                        sb.append(referTable);
                        sb.append(" where 1=1  ");
                        if (StringUtils.isNotBlank(buildSqlwhere)) {
                           sb.append(buildSqlwhere);
                        }
                        List<Map> ListMap = commonsMapper.selectBySql(sb.toString());
                        String textField = coderefersecSearchVO.getTextField();
                        final int[] num = {0};
                        if (!CollectionUtils.isEmpty(ListMap)) {
                           ListMap.stream().forEach(map -> {
                              num[0]++;
                              String id =Func.isNull(map.getOrDefault("OID".toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault("OID".toUpperCase(Locale.ROOT), "").toString();
                              String value =Func.isNull(map.getOrDefault(valueField.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(valueField.toUpperCase(Locale.ROOT), "").toString();
                              String text =Func.isNull(map.getOrDefault(textField.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(textField.toUpperCase(Locale.ROOT), "").toString();
                              String description =Func.isNull(map.getOrDefault("description".toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault("description".toUpperCase(Locale.ROOT), "").toString();
                              String pid =Func.isNull(map.getOrDefault(parentFieldName.toUpperCase(Locale.ROOT), ""))?"":map.getOrDefault(parentFieldName.toUpperCase(Locale.ROOT), "").toString();
                              CodeSectionValueVO sectionValueVO = new CodeSectionValueVO(id, num[0] + "", value, text, pid, description);
                              codeSectionValueVOList.add(sectionValueVO);
                           });
                        }
                     }
                  }
                  if(!CollectionUtils.isEmpty(codeSectionValueVOList)){
                     Map<String, CodeSectionValueVO> codeSectionValueVOMap = codeSectionValueVOList.stream().collect(Collectors.toMap(s -> s.getValue(), t -> t, (o1, o2) -> o2));
                     if(!codeSectionValueVOMap.containsKey(sectypeValue)){
                        message="传入的编码规则码段:【"+name+"】为"+CODE_REFER_SEC.getText()+",其对应的值【"+sectypeValue+"】,在编码系统不存在";
                        errorMap.put("error",errorMap.getOrDefault("error","")+";"+message);
                     }
                  }else{
                     message="传入的编码规则码段:【"+name+"】为"+CODE_REFER_SEC.getText()+",其对应的值【"+sectypeValue+"】,在编码系统不存在";
                     errorMap.put("error",errorMap.getOrDefault("error","")+";"+message);
                  }
               }
               if(StringUtils.isBlank(sectypeValue)){
                  message="传入的分类码段:【" + name + " 】的值不允许为空";
               if(StringUtils.isBlank(sectypeValue)&&!name.equals(secName)){
                  message="传入的码段:【" + name + " 】的值不允许为空";
                  errorMap.put("error",errorMap.getOrDefault("error","")+";"+message);
               }
               CodeOrderSecDTO.setSecValue(sectypeValue);
               codeOrderSecDTOList.add(CodeOrderSecDTO);
            } else {
               message="传入的码段规则缺少" + name + "码段";
               message="传入的码段规则缺少" + name;
               errorMap.put("error",errorMap.getOrDefault("error","")+";"+message);
            }
         }
@@ -2293,41 +2644,61 @@
      return codeOrderSecDTOList;
   }
   /***
    * 读取属性映射配置信息
    * @param systemId
    * @param libray
    * @param applyDatasVO
    * @param codeClassifyTemplateAttrVOList
    * @param dataObjectVO
    * @throws Throwable
    */
   public void getConfigDatas(String systemId,String libray, ApplyBZDatasVO applyDatasVO,List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOList,DataObjectVO dataObjectVO) throws Throwable {
      LinkedHashMap<String,LinkedHashMap<String,String>> dataKeyValueMap=new LinkedHashMap<>();
      // LinkedHashMap<String,LinkedHashMap<String,String>> dataKeyValueMap=new LinkedHashMap<>();
      //如果将数据转换成所需要的数据对象
      Map<String, String> attrMapConfigMap=new HashMap<>();
      Map<String, String> propMaps=new HashMap<>();
      try {
         log.info("开始读取系统配置文件 start");
         Map<String, String> stringStringMap=attributeMapConfig.getSystem_attrmap();
         log.info("集成系统属性映射配置文件条目数-》"+stringStringMap.size());
         //stringStringMap.put("RLM","D:\\RLM.xml");
         if(!CollectionUtils.isEmpty(stringStringMap)) {
      log.info("开始读取系统配置文件 start");
      Map<String, String> stringStringMap=attributeMapConfig.getSystem_attrmap();
      log.info("集成系统属性映射配置文件条目数-》"+stringStringMap.size());
      //stringStringMap.put("RLM","D:\\RLM.xml");
      if(!CollectionUtils.isEmpty(stringStringMap)) {
         List<LibraryClsfDO> libraryClsfDOList=new ArrayList<>();
         try {
            log.info("info:需要读取配置文件");
            LibraryDO libraryDO = gennerAttrMapUtil.getNewInstance().gennerAttrMapBySystem(systemId, stringStringMap);
            List<LibraryClsfDO> libraryClsfDOList = libraryDO.getClsf();
            if(!CollectionUtils.isEmpty(libraryClsfDOList)) {
               Map<String, List<ClsfAttrMappingDO>> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2));
               log.info("根据参数:libray:-》" + libray + "从配置文件中找对应属性映射配置");
               String path=stringStringMap.get(systemId);
               if (libPropMaps.containsKey(libray)) {
                  log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息");
                  List<ClsfAttrMappingDO> clsfAttrMappingDOList = libPropMaps.get(libray);
                  propMaps = clsfAttrMappingDOList.stream().collect(Collectors.toMap(ClsfAttrMappingDO::getSourceKey, ClsfAttrMappingDO::getTargetKey, (key1, key2) -> key2));
                  log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息,属性映射条目数+" + clsfAttrMappingDOList.size());
               }else{
                  throw new Throwable("根据系统标识【"+systemId+"】找到对应的配置文件:【"+path+"】,但未获取到对应的库【"+libray+"】属性映射信息配置");
               }
            }
            libraryClsfDOList = libraryDO.getClsf();
         } catch (Throwable e) {
            objerrorCode = "1";
            e.printStackTrace();
            log.error("集成系统属性配置文件读取失败:",e);
            throw new Throwable("集成系统标识为:【" + systemId + "】,分类库为:【" + libray + "】的集成属性配置文件读取失败");
         }
         log.info("根据参数:libray:-》"+libray+"从配置文件中找对应属性映射配置 end ");
      }catch (Throwable e){
         objerrorCode="1";
         e.printStackTrace();
         throw new Throwable("MDM集成属性配置文件读取失败");
         // String path = stringStringMap.get(systemId);
         // 忽略key大小写,获取配置的映射文件路径
         String path = VciBaseUtil.getMapStrValueIgnoreCase(stringStringMap,systemId);
         if (!CollectionUtils.isEmpty(libraryClsfDOList)) {
            Map<String, List<ClsfAttrMappingDO>> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2));
            log.info("根据参数:libray:-》" + libray + "从配置文件中找对应属性映射配置");
            if (libPropMaps.containsKey(libray.toUpperCase(Locale.ROOT))) {
               log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息");
               List<ClsfAttrMappingDO> clsfAttrMappingDOList = libPropMaps.get(libray.toUpperCase(Locale.ROOT));
               propMaps = clsfAttrMappingDOList.stream().collect(Collectors.toMap(ClsfAttrMappingDO::getSourceKey, ClsfAttrMappingDO::getTargetKey, (key1, key2) -> key2));
               log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息,属性映射条目数+" + clsfAttrMappingDOList.size());
            } else {
               objerrorCode = "1";
               throw new Throwable("根据系统标识【" + systemId + "】找到对应的配置文件:【" + path + "】,但未获取到对应的库【" + libray + "】属性映射信息配置");
            }
         }else{
            objerrorCode = "1";
            throw new Throwable("根据系统标识【" + systemId + "】找到对应的配置文件:【" + path + "】,但未获取到对应的库【" + libray + "】属性映射信息配置");
         }
      }else{
         objerrorCode = "1";
         throw new Throwable("未获取到集成属性映射系统配置信息");
      }
      log.info("根据参数:libray:-》"+libray+"从配置文件中找对应属性映射配置 end ");
      LinkedList<String> rowNameList=new LinkedList<>();
      LinkedHashMap<String,Integer> filedIndexMap=new LinkedHashMap<>();
      //根据分类模板组织数据
@@ -2364,7 +2735,7 @@
            LinkedHashMap<Integer, String> integerValueMap = new LinkedHashMap<>();
            Map<String, String> filedValueMap = new HashMap<>();
            if (!CollectionUtils.isEmpty(proppertyVOList)) {
               Map<String, String> sourceKeyValueMap = proppertyVOList.stream().collect(Collectors.toMap(ProppertyVO::getKey, ProppertyVO::getValue, (key1, key2) -> key2));
               Map<String, String> sourceKeyValueMap = proppertyVOList.stream().collect(Collectors.toMap(ProppertyVO::getKey,  ProppertyVO::getValue, (key1, key2) -> key2));
               Map<String, String> keyValueMap = new HashMap<>();
               //判断attrMapConfigMap是否有值,如果没有则说明基础默认的是编码系统字段
               if (!CollectionUtils.isEmpty(attrMapConfigMap)) {
@@ -2372,6 +2743,7 @@
                     String dataValue = sourceKeyValueMap.get(sourceKey);
                     if (attrMapConfigMap.containsKey(sourceKey)) {
                        String targetKey = attrMapConfigMap.get(sourceKey);
                        log.info("xxxxx属性映射值:sourceKey【"+sourceKey+"】——》+targetKey---》"+targetKey+":"+dataValue);
                        keyValueMap.put(targetKey, StringUtils.isBlank(dataValue)?"":dataValue);
                     }
                  });
@@ -2397,12 +2769,19 @@
         dataObjectVO.setRowData(rowDataList);
      }catch (Throwable e){
         objerrorCode="1";
         throw new   Throwable("组织数据映射值失败");
         log.error("组织属性映射值失败:",e);
         throw new   Throwable("组织属性映射值失败");
      }
   }
   /***
    * 根据属性映射转换编码所需字段
    * 读取属性映射配置信息
    * @param systemId
    * @param libray
    * @param applyDatasVO
    * @param codeClassifyTemplateAttrVOList
    * @param dataObjectVO
    * @throws Throwable
    */
   public void getConfigDatas(String systemId,String libray, ApplyDatasVO applyDatasVO,List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOList,DataObjectVO dataObjectVO) throws Throwable {
@@ -2410,40 +2789,55 @@
      //如果将数据转换成所需要的数据对象
      Map<String, String> attrMapConfigMap=new HashMap<>();
      Map<String, String> propMaps=new HashMap<>();
      try {
         log.info("开始读取系统配置文件 start");
         Map<String, String> stringStringMap=attributeMapConfig.getSystem_attrmap();
         log.info("集成系统属性映射配置文件条目数-》"+stringStringMap.size());
         //stringStringMap.put("RLM","D:\\RLM.xml");
         if(!CollectionUtils.isEmpty(stringStringMap)) {
      log.info("开始读取系统配置文件 start");
      Map<String, String> stringStringMap=attributeMapConfig.getSystem_attrmap();
      log.info("集成系统属性映射配置文件条目数-》"+stringStringMap.size());
      if(!CollectionUtils.isEmpty(stringStringMap)) {
         List<LibraryClsfDO> libraryClsfDOList=new ArrayList<>();
         try {
            log.info("info:需要读取配置文件");
            LibraryDO libraryDO = gennerAttrMapUtil.getNewInstance().gennerAttrMapBySystem(systemId, stringStringMap);
            List<LibraryClsfDO> libraryClsfDOList = libraryDO.getClsf();
            if(!CollectionUtils.isEmpty(libraryClsfDOList)) {
               Map<String, List<ClsfAttrMappingDO>> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2));
               log.info("根据参数:libray:-》" + libray + "从配置文件中找对应属性映射配置");
               String path=stringStringMap.get(systemId);
               if (libPropMaps.containsKey(libray)) {
                  log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息");
                  List<ClsfAttrMappingDO> clsfAttrMappingDOList = libPropMaps.get(libray);
                  propMaps = clsfAttrMappingDOList.stream().collect(Collectors.toMap(ClsfAttrMappingDO::getSourceKey, ClsfAttrMappingDO::getTargetKey, (key1, key2) -> key2));
                  log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息,属性映射条目数+" + clsfAttrMappingDOList.size());
               }else{
                  throw new Throwable("根据系统标识【"+systemId+"】找到对应的配置文件:【"+path+"】,但未获取到对应的库【"+libray+"】属性映射信息配置");
               }
            }
            libraryClsfDOList = libraryDO.getClsf();
         } catch (Throwable e) {
            objerrorCode = "1";
            e.printStackTrace();
            log.error("集成属性配置文件读取失败:",e);
            throw new Throwable("集成系统标识为:【" + systemId + "】,分类库为:【" + libray + "】的集成属性配置文件读取失败");
         }
         log.info("根据参数:libray:-》"+libray+"从配置文件中找对应属性映射配置 end ");
      }catch (Throwable e){
         objerrorCode="1";
         e.printStackTrace();
         throw new Throwable("MDM集成属性配置文件读取失败");
         // String path = stringStringMap.get(systemId);
         // 忽略key大小写,获取配置的映射文件路径
         String path = VciBaseUtil.getMapStrValueIgnoreCase(stringStringMap,systemId);
         if (!CollectionUtils.isEmpty(libraryClsfDOList)) {
            Map<String, List<ClsfAttrMappingDO>> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2));
            log.info("根据参数:libray:-》" + libray + "从配置文件中找对应属性映射配置");
            if (libPropMaps.containsKey(libray.toUpperCase(Locale.ROOT))) {
               log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息");
               List<ClsfAttrMappingDO> clsfAttrMappingDOList = libPropMaps.get(libray.toUpperCase(Locale.ROOT));
               propMaps = clsfAttrMappingDOList.stream().collect(Collectors.toMap(ClsfAttrMappingDO::getSourceKey, ClsfAttrMappingDO::getTargetKey, (key1, key2) -> key2));
               log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息,属性映射条目数+" + clsfAttrMappingDOList.size());
            } else {
               objerrorCode = "1";
               throw new Throwable("根据系统标识【" + systemId + "】找到对应的配置文件:【" + path + "】,但未获取到对应的库【" + libray + "】属性映射信息配置");
            }
         }else{
            objerrorCode = "1";
            throw new Throwable("根据系统标识【" + systemId + "】找到对应的配置文件:【" + path + "】,但未获取到对应的库【" + libray + "】属性映射信息配置");
         }
      }else{
         objerrorCode = "1";
         throw new Throwable("未获取到集成属性映射系统配置信息");
      }
      log.info("根据参数:libray:-》"+libray+"从配置文件中找对应属性映射配置 end ");
      LinkedList<String> rowNameList=new LinkedList<>();
      LinkedHashMap<String,Integer> filedIndexMap=new LinkedHashMap<>();
      //根据分类模板组织数据
      final int[] index = {0};
      try {
         //除去默认的属性.还有只有具有分类注入的才过滤出来
         codeClassifyTemplateAttrVOList = codeClassifyTemplateAttrVOList.stream().filter(
            s ->!DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
               ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
         ).collect(Collectors.toList());
         codeClassifyTemplateAttrVOList.stream().forEach(codeClassifyTemplateAttrVO -> {
            String attrName = codeClassifyTemplateAttrVO.getName();
            String field = codeClassifyTemplateAttrVO.getId();
@@ -2483,6 +2877,7 @@
                     String dataValue = sourceKeyValueMap.get(sourceKey);
                     if (attrMapConfigMap.containsKey(sourceKey)) {
                        String targetKey = attrMapConfigMap.get(sourceKey);
                        log.info("xxxxx属性映射值:sourceKey【"+sourceKey+"】——》+targetKey---》"+targetKey+":"+dataValue);
                        keyValueMap.put(targetKey, StringUtils.isBlank(dataValue)?"":dataValue);
                     }
                  });
@@ -2508,9 +2903,11 @@
         dataObjectVO.setRowData(rowDataList);
      }catch (Throwable e){
         objerrorCode="1";
         throw new   Throwable("组织数据映射值失败");
         log.error("组织属性映射值失败:",e);
         throw new   Throwable("组织属性映射值失败");
      }
   }
   /***
    * 记录日志信息
    * @param systemId
@@ -2542,7 +2939,7 @@
         dockingLoge.setInterfaceStatus("false");//接口集成状态
      }
      dockingLogeService.save(dockingLoge);
      log.info("集成推送数据成功,systemId:"+systemId+",systemname:"+systemName+",operation:"+operation+",param:"+parmaData);
      log.info("集成推送数据,systemId:"+systemId+",systemname:"+systemName+",operation:"+operation+",param:"+parmaData);
   }
   /***
@@ -2624,8 +3021,15 @@
    */
   private DockingSystemConfig  checkIspass(String systemId,String type,String operationType,String classOid){
      log.info("systemId:"+systemId+",type:"+SysIntegrationDataFlowTypeEnum.getTextByValue(type)+",operationType:"+sysIntegrationPushTypeEnum.getTextByValue(operationType)+",classOid:"+classOid);
      CodeClassifyVO codeClassifyVO= classifyService.getObjectByOid(classOid);
      classOid=codeClassifyVO.getOid();
      //CodeClassifyVO codeClassifyVO= classifyService.getObjectByOid(classOid);
      List<CodeClassify> codeClassifyList=  classifyService.selectAllLevelParentByOid(classOid);
      List<String> classifyOids=new ArrayList<>();
      if(!CollectionUtils.isEmpty(codeClassifyList)) {
         classifyOids = codeClassifyList.stream().map(CodeClassify::getOid).collect(Collectors.toList());
      }else{
         return null;
      }
      //classOid=codeClassifyVO.getOid();
      //根据类型去查询需要集成的分类或者数据
      LambdaQueryWrapper<DockingSystemConfig> queryWrapper = Wrappers.<DockingSystemConfig>lambdaQuery();
      queryWrapper.eq(DockingSystemConfig::getUsedFlag, MdmDuckingConstant.SEND_FLAG_TRUE);
@@ -2633,11 +3037,16 @@
      queryWrapper.eq(DockingSystemConfig::getDataFlowType,type);
      queryWrapper.eq(DockingSystemConfig::getPushType,operationType);
      if(StringUtils.isNotBlank(classOid)){
         queryWrapper.in(DockingSystemConfig::getClassifyOid,classOid);
         queryWrapper.in(DockingSystemConfig::getClassifyOid,classifyOids);
      }
      List<DockingSystemConfig> dockingSystemConfigList=new ArrayList<>();
      dockingSystemConfigList=   dockingSystemConfigList=dockingSystemConfigService.list(queryWrapper);
      if(!CollectionUtils.isEmpty(dockingSystemConfigList)){
         return   dockingSystemConfigList.get(0);
      }else{
         return null;
      }
      /*if(!CollectionUtils.isEmpty(dockingSystemConfigList)){
       return   dockingSystemConfigList.get(0);
      }else{
         if(StringUtils.isNotBlank(codeClassifyVO.getParentCodeClassifyOid())) {
@@ -2648,6 +3057,6 @@
         return dockingSystemConfigList.get(0);
      }else{
         return   new DockingSystemConfig();
      }
      }*/
   }
}