ludc
2023-08-29 5634e5dcd02d64cde09b944677bdcb8d13614462
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -3,7 +3,6 @@
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.file.util.VciZipUtil;
import com.vci.ubcs.code.bo.AttributeValue;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
@@ -21,6 +20,7 @@
import com.vci.ubcs.code.vo.webserviceModel.attrmap.DataObjectVO;
import com.vci.ubcs.code.vo.webserviceModel.attrmap.RowDatas;
import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultDataObjectDetailDO;
import com.vci.ubcs.file.util.VciZipUtil;
import com.vci.ubcs.omd.feign.IBtmTypeClient;
import com.vci.ubcs.omd.feign.IWebSecretClient;
import com.vci.ubcs.omd.vo.BtmTypeVO;
@@ -52,6 +52,7 @@
import org.apache.poi.ss.usermodel.Workbook;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -187,38 +188,40 @@
         //参照的自行输入名称
         //分类注入的不用,都是导入后自动处理的
         //编码,状态等字段不导入
         List<CodeClassifyTemplateAttrVO> templateAttrVOS = templateVO.getAttributes().stream().filter(s ->
            !DEFAULT_ATTR_LIST.contains(s.getId())
               && StringUtils.isBlank(s.getComponentRule())
               && StringUtils.isBlank(s.getClassifyInvokeAttr())
               && (VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
         ).collect(Collectors.toList());
         if(CollectionUtils.isEmpty(templateAttrVOS)){
            throw new VciBaseException("模板没有配置任何【表单显示】为【是】的属性");
         }
         templateAttrVOS.stream().forEach(codetemplateAttr ->{
            String field=codetemplateAttr.getId();
            String name=codetemplateAttr.getName();
            CodeClassifyTemplateAttrVO codeBaseAttributeDTO=new CodeClassifyTemplateAttrVO();
            boolean res=(StringUtils.isNotBlank(codetemplateAttr.getAttributeGroup())&& codetemplateAttr.getAttributeGroup().equals(BATCHADD_EXCEPORT_ATTR_TYPE))//基本属性字段显示
               ||(StringUtils.isNotBlank(codetemplateAttr.getKeyAttrFlag())&&Boolean.parseBoolean(codetemplateAttr.getKeyAttrFlag()))//关键属性的存入
               ||(StringUtils.isNotBlank(codetemplateAttr.getSameRepeatAttrFlag())&&Boolean.parseBoolean(codetemplateAttr.getSameRepeatAttrFlag())) //相似属性的存入
               ||(StringUtils.isNotBlank(codetemplateAttr.getRequireFlag())&&Boolean.parseBoolean(codetemplateAttr.getRequireFlag()));
            if(allFieldToOutNameMap.containsKey(name)){//如果存在的话则需要根据具体的去赋值
               codeBaseAttributeDTO=  allFieldToOutNameMap.get(name);
               if(StringUtils.isNotBlank(codetemplateAttr.getKeyAttrFlag())&&Boolean.parseBoolean(codetemplateAttr.getKeyAttrFlag())){
                  codeBaseAttributeDTO.setKeyAttrFlag(codetemplateAttr.getKeyAttrFlag());//属性关键属性
               }
               if(StringUtils.isNotBlank(codetemplateAttr.getRequireFlag())&&Boolean.parseBoolean(codetemplateAttr.getRequireFlag())){
                  codeBaseAttributeDTO.setRequireFlag(codetemplateAttr.getRequireFlag());//属性必填项
               }
               if(StringUtils.isNotBlank(codetemplateAttr.getSameRepeatAttrFlag())&&Boolean.parseBoolean(codetemplateAttr.getSameRepeatAttrFlag())){
                  codeBaseAttributeDTO.setSameRepeatAttrFlag(codetemplateAttr.getSameRepeatAttrFlag());//属性相似属性
               }
            }else if(res){
               allFieldToOutNameMap.put(name,codetemplateAttr);
         if(!CollectionUtils.isEmpty(templateVO.getAttributes())) {
            List<CodeClassifyTemplateAttrVO> templateAttrVOS = templateVO.getAttributes().stream().filter(s ->
               !DEFAULT_ATTR_LIST.contains(s.getId())
                  && StringUtils.isBlank(s.getComponentRule())
                  && StringUtils.isBlank(s.getClassifyInvokeAttr())
                  && (VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
            ).collect(Collectors.toList());
            if(CollectionUtils.isEmpty(templateAttrVOS)){
               throw new VciBaseException("模板没有配置任何【表单显示】为【是】的属性");
            }
         });
            templateAttrVOS.stream().forEach(codetemplateAttr -> {
               String field = codetemplateAttr.getId();
               String name = codetemplateAttr.getName();
               CodeClassifyTemplateAttrVO codeBaseAttributeDTO = new CodeClassifyTemplateAttrVO();
               boolean res = (StringUtils.isNotBlank(codetemplateAttr.getAttributeGroup()) && codetemplateAttr.getAttributeGroup().equals(BATCHADD_EXCEPORT_ATTR_TYPE))//基本属性字段显示
                  || (StringUtils.isNotBlank(codetemplateAttr.getKeyAttrFlag()) && Boolean.parseBoolean(codetemplateAttr.getKeyAttrFlag()))//关键属性的存入
                  || (StringUtils.isNotBlank(codetemplateAttr.getSameRepeatAttrFlag()) && Boolean.parseBoolean(codetemplateAttr.getSameRepeatAttrFlag())) //相似属性的存入
                  || (StringUtils.isNotBlank(codetemplateAttr.getRequireFlag()) && Boolean.parseBoolean(codetemplateAttr.getRequireFlag()));
               if (allFieldToOutNameMap.containsKey(name)) {//如果存在的话则需要根据具体的去赋值
                  codeBaseAttributeDTO = allFieldToOutNameMap.get(name);
                  if (StringUtils.isNotBlank(codetemplateAttr.getKeyAttrFlag()) && Boolean.parseBoolean(codetemplateAttr.getKeyAttrFlag())) {
                     codeBaseAttributeDTO.setKeyAttrFlag(codetemplateAttr.getKeyAttrFlag());//属性关键属性
                  }
                  if (StringUtils.isNotBlank(codetemplateAttr.getRequireFlag()) && Boolean.parseBoolean(codetemplateAttr.getRequireFlag())) {
                     codeBaseAttributeDTO.setRequireFlag(codetemplateAttr.getRequireFlag());//属性必填项
                  }
                  if (StringUtils.isNotBlank(codetemplateAttr.getSameRepeatAttrFlag()) && Boolean.parseBoolean(codetemplateAttr.getSameRepeatAttrFlag())) {
                     codeBaseAttributeDTO.setSameRepeatAttrFlag(codetemplateAttr.getSameRepeatAttrFlag());//属性相似属性
                  }
               } else if (res) {
                  allFieldToOutNameMap.put(name, codetemplateAttr);
               }
            });
         }
      });
      //整理好所有模板需要写入execl的属性信息
      Workbook workbook = new HSSFWorkbook();
@@ -1489,6 +1492,20 @@
      conditionMap.put("codeclsfpath","*" + exportAttrDTO.getCodeClassifyOid() + "*");
      conditionMap.put("lastr", "1");
      conditionMap.put("lastv", "1");
      R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Arrays.asList(btmTypeId));
      String tableName = "";
      if(listR.isSuccess() && !listR.getData().isEmpty()){
         tableName = Func.isNotBlank(listR.getData().get(0).getTableName()) ? listR.getData().get(0).getTableName():VciBaseUtil.getTableName(btmTypeId);
      }else{
         tableName = VciBaseUtil.getTableName(btmTypeId);
      }
      String countSql = "select count(*) from " + tableName +" where 1=1" +
         " and lastr = '1'" +
         " and lastv='1'" +
         " and codeclsfpath like '%" + exportAttrDTO.getCodeClassifyOid() + "%'";
      //先查询总数
      int total = 0;
      if(exportAttrDTO.getEndPage()!=null && exportAttrDTO.getEndPage()>0
@@ -1502,10 +1519,11 @@
            thisPage.setOrder(exportAttrDTO.getOrder());
            thisPage.addDefaultDesc("createTime");
            total += boService.queryCount(btmTypeId, conditionMap);
            total += commonsMapper.queryCountBySql(countSql);
         }
      }else{
         total=boService.queryCount(btmTypeId, conditionMap);
         total = commonsMapper.queryCountBySql(countSql);
      }
      List<String> selectFieldList = new ArrayList<>();
      if(!CollectionUtils.isEmpty(exportAttrDTO.getAttrIdIndexMap())){
@@ -1881,7 +1899,7 @@
    * @return 有错误信息的excel
    */
   @Override
   public void batchSyncApplyCode(CodeOrderDTO orderDTO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs) {
   public void batchSyncApplyCode(CodeOrderDTO orderDTO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs,boolean isCodeOrGroupCode) {
      Map<String,String> errorMap=new HashMap<>();
      VciBaseUtil.alertNotNull(orderDTO,"编码申请相关的数据",orderDTO.getCodeClassifyOid(),"主题库分类主键");
      CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid());
@@ -2001,10 +2019,15 @@
                  sourceOid=codeOidToSystemOidMap.get(oid);
               }
               String code="";
               String groupCode="";
               String errorid="103";
               String mes=errorMap.get(rowIndex);
               XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
               resultDataObjectDetailDO.setCode(code);
               if(isCodeOrGroupCode){
                  resultDataObjectDetailDO.setCode(groupCode);
               }else{
                  resultDataObjectDetailDO.setCode(code);
               }
               resultDataObjectDetailDO.setId(sourceOid);
               resultDataObjectDetailDO.setErrorid(errorid);
               resultDataObjectDetailDO.setMsg(mes);
@@ -2030,6 +2053,7 @@
                  String oid = cbo.getOid();
                  String sourceOid = oid;
                  String code = "";
                  String groupCode="";
                  String errorid = "201";
                  if(codeOidToSystemOidMap.containsKey(oid)){
                     sourceOid=codeOidToSystemOidMap.get(oid);
@@ -2040,22 +2064,35 @@
                     String lcstatus =newCbo.getLcStatus();
                     String newOid =newCbo.getOid();
                     Date ts =newCbo.getTs();
                     groupCode=newCbo.getData().get("GROUPCODE");
                     code=newCbo.getId();
                     String lastmodifier=newCbo.getLastModifier();
                     if (!lcstatus.equals(CodeDefaultLC.RELEASED.getValue())) {
                     if (lcstatus!=null&&!lcstatus.equals(CodeDefaultLC.RELEASED.getValue())) {
                        newCbo.setOid(newOid);
                        newCbo.setLastModifier(lastmodifier);
                        newCbo.setId(code);
                        /*if(isCodeOrGroupCode) {
                           newCbo.setId(code);
                        }else{
                           newCbo.getData().put("groupcode",groupCode);
                        }*/
                        newCbo.setTs(ts);
                        cbo.setLastModifier(cbo.getLastModifier());
                        editBoList.add(newCbo);
                     }
                     String mes = errorKeyMap.get(rowIndex);
                     XMLResultDataObjectDetailDO resultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
                     resultDataObjectDetailDO.setCode(code);
                     if(isCodeOrGroupCode) {
                        if(StringUtils.isBlank(groupCode)){
                           mes+=";等待集团编码赋值";
                        }
                        resultDataObjectDetailDO.setCode(groupCode);
                     }else{
                        resultDataObjectDetailDO.setCode(code);
                     }
                     resultDataObjectDetailDO.setId(sourceOid);
                     resultDataObjectDetailDO.setErrorid(errorid);
                     resultDataObjectDetailDO.setMsg(mes);
                     resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
                  }
               }
@@ -2146,6 +2183,7 @@
      }
   }
   /***
    * 集成批量同步更新接口
    * @param codeClassifyVO;
@@ -2184,7 +2222,7 @@
      String tableName ="";
      try {
         R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId());
         if(r.getCode()!=200) {
         if(!r.isSuccess()) {
            throw new Throwable(r.getMsg());
         }
         BtmTypeVO btmTypeVO = r.getData();
@@ -2388,6 +2426,7 @@
         }
      }
   }
   /**
    * 校验属性是否为必输
    *
@@ -3292,7 +3331,7 @@
      String tableName ="";
      try {
         R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId());
         if(r.getCode()!=200) {
         if(!r.isSuccess()) {
            throw new Throwable(r.getMsg());
         }
         BtmTypeVO btmTypeVO = r.getData();
@@ -4289,4 +4328,5 @@
         }
      }
   }
}