田源
2025-03-05 be30e17e3c7685a54f761bf3a03487308c939270
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -38,7 +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.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;
@@ -559,7 +562,7 @@
                  object.setOperate("create");
                  applyDataVOList.add(object);
               }
               codeList.add(personMasterData.getLm_code());
               codeList.add(object.getCode());
            });
            R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId());
@@ -614,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) {
@@ -680,7 +683,7 @@
                     log.error("数据保存失败:",e);
                     mesg=e.getMessage();
                     e.printStackTrace();
                     throw new ServiceException(e.getMessage());
                  //   throw new ServiceException(e.getMessage());
                  }finally {
                     XMLResultDataObjectDetailDO x=new XMLResultDataObjectDetailDO();
                     x.setId(rowData.getOid());
@@ -806,10 +809,10 @@
            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.getDepartment_code());//主键
               object.setId(orgMasterData.getId());//主键
               object.setStatus(CodeDefaultLC.RELEASED.getValue());//状态则需要判断
               Map<String,String> dataMap= VciBaseUtil.objectToMapString(orgMasterData);
               List<ProppertyVO> proppertyVOList = new ArrayList<>();
@@ -844,7 +847,7 @@
                  object.setOperate("create");
                  applyDataVOList.add(object);
               }
               codeList.add(orgMasterData.getMdm_code());
               codeList.add(object.getCode());
            });
            R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId());
@@ -899,7 +902,7 @@
               DataObjectVO dataObjectVO = new 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:修改数据执行完毕");
            }
@@ -914,8 +917,9 @@
               }
               List<XMLResultDataObjectDetailDO> xDOs=new CopyOnWriteArrayList<>();
               //限制线程并行数量
               customForkJoinPool.submit(()->{
                  dataObjectVO.getRowData().parallelStream().forEach(rowData->{
               //customForkJoinPool.submit(()->{
               //   dataObjectVO.getRowData().parallelStream().forEach(rowData->{
               dataObjectVO.getRowData().forEach(rowData->{
                     String mesg="";
                     try {
                        CodeOrderDTO orderDTO = new CodeOrderDTO();
@@ -931,7 +935,7 @@
                                 //规则之定义为可变码段存储主数据传递过来的数据
                                 CodeOrderSecDTO CodeOrderSecDTO = new CodeOrderSecDTO();
                                 CodeOrderSecDTO.setSecOid(codeBasicSecVO.getOid());
                                 CodeOrderSecDTO.setSecValue(rowData.getOid());
                                 CodeOrderSecDTO.setSecValue(rowData.getCode());
                                 codeOrderSecDTOList.add(CodeOrderSecDTO);
                              }
                           });
@@ -940,33 +944,34 @@
                        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 = "数据保存成功,等待申请集团码";
                        /*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());
                     //   throw new ServiceException(e.getMessage());
                     }finally {
                        XMLResultDataObjectDetailDO x=new XMLResultDataObjectDetailDO();
                        x.setId(rowData.getOid());
@@ -976,7 +981,7 @@
                        xDOs.add(x);
                     }
                  });
               }).join();
               //}).join();
               resultDataObjectDetailDOs.addAll(xDOs);
               boolean finalSuccess1 = success.get();
               String finalMessage1 = message;
@@ -2421,8 +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();
@@ -2438,6 +2448,9 @@
      //   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();
@@ -2454,8 +2467,8 @@
                  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 + "】,不符合当前分类层级代号");
@@ -2474,17 +2487,21 @@
                  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())) {//默认样式/列表
                        Map<String, Object> condtionMap = new HashMap<>();
                        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) {
@@ -2499,7 +2516,7 @@
                           sb.append(buildSqlwhere);
                        }
                        List<Map> ListMap = commonsMapper.selectBySql(sb.toString());
                        String valueField = coderefersecSearchVO.getValueField();
                        //String valueField = coderefersecSearchVO.getValueField();
                        String textField = coderefersecSearchVO.getTextField();
                        final int[] num = {0};
                        if (!CollectionUtils.isEmpty(ListMap)) {
@@ -2514,8 +2531,6 @@
                           });
                        }
                     }else if (coderefersecSearchVO.getType().equals(CodeReferConfigTypeEnum.TREE.getValue())) {//树形
                        Map<String, Object> condtionMap = new HashMap<>();
                        //使用传入的业务类型查询表
                        R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(referBtmId));
                        if (!listR.isSuccess() || listR.getData().size() == 0) {
@@ -2532,9 +2547,10 @@
                           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)){
@@ -2581,7 +2597,6 @@
                           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)) {
@@ -2601,11 +2616,11 @@
                  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()+",其对应的值,在编码系统不存在";
                        message="传入的编码规则码段:【"+name+"】为"+CODE_REFER_SEC.getText()+",其对应的值【"+sectypeValue+"】,在编码系统不存在";
                        errorMap.put("error",errorMap.getOrDefault("error","")+";"+message);
                     }
                  }else{
                     message="传入的编码规则码段:【"+name+"】为"+CODE_REFER_SEC.getText()+",其对应的值,在编码系统不存在";
                     message="传入的编码规则码段:【"+name+"】为"+CODE_REFER_SEC.getText()+",其对应的值【"+sectypeValue+"】,在编码系统不存在";
                     errorMap.put("error",errorMap.getOrDefault("error","")+";"+message);
                  }
               }
@@ -2728,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);
                     }
                  });
@@ -2861,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);
                     }
                  });