yuxc
2023-05-25 27f7b8f0459ed7c91cd532ae04c9aa3d15d11d84
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant;
@@ -12,7 +13,6 @@
import com.vci.ubcs.code.dto.datapush.BaseModelDTO;
import com.vci.ubcs.code.entity.*;
import com.vci.ubcs.code.enumpack.*;
import com.vci.ubcs.code.mapper.CodeAllCodeMapper;
import com.vci.ubcs.code.mapper.CodeOsbtmtypeMapper;
import com.vci.ubcs.code.mapper.CodeWupinMapper;
import com.vci.ubcs.code.mapper.CommonsMapper;
@@ -21,6 +21,9 @@
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO;
import com.vci.ubcs.code.vo.pagemodel.UITablePageVO;
import com.vci.ubcs.omd.feign.IEnumClient;
import com.vci.ubcs.omd.feign.IEnumItemClient;
import com.vci.ubcs.omd.vo.EnumVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.TreeWrapperOptions;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
@@ -31,12 +34,10 @@
import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
import com.vci.ubcs.starter.web.pagemodel.*;
import com.vci.ubcs.starter.web.toolmodel.DateConverter;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.starter.web.util.VciDateUtil;
import com.vci.ubcs.starter.web.util.VciQueryWrapperForDO;
import com.vci.ubcs.starter.web.util.WebUtil;
import com.vci.ubcs.starter.web.util.*;
import com.vci.ubcs.system.entity.DictBiz;
import com.vci.ubcs.system.feign.IDictBizClient;
import net.logstash.logback.encoder.org.apache.commons.lang3.ObjectUtils;
import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,11 +45,13 @@
import org.springblade.core.tool.api.R;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.io.Serializable;
import java.beans.IntrospectionException;
import java.lang.reflect.InvocationTargetException;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
@@ -64,7 +67,7 @@
 * @date 2022-2-22
 */
@Service
public class MdmEngineServiceImpl extends ServiceImpl<CodeWupinMapper, CodeWupinEntity> implements MdmEngineService {
public class MdmEngineServiceImpl extends ServiceImpl<CodeWupinMapper, CodeWupin> implements MdmEngineService {
   /**
@@ -85,10 +88,15 @@
   @Resource
   private MdmProductCodeService productCodeService;
   /**
    * 字典的服务
    * 可输可选的服务
    */
   @Resource
   IDictBizClient iDictBizClient;
   /**
    * 字典的服务
    */
   @Resource
   IEnumClient enumClient;
   /**
    * 公式的服务
    */
@@ -149,6 +157,9 @@
    */
   @Autowired
   private ICodeClassifyTemplateButtonService templateButtonService;
   @Autowired
   private ICodeClassifyTemplateAttrService codeClassifyTemplateAttrService;
//   /**
//    * 用户查询的服务,需要问一下是否需要重写,使用查询此平台的用户表
//    */
@@ -242,19 +253,19 @@
    */
   @Override
   public List<KeyValue> listComboboxItems(CodeClassifyTemplateAttrVO attrVO) {
      List<KeyValue> comboboxKVs = null;
      List<KeyValue> comboboxKVs = new ArrayList<>();
      if (StringUtils.isNotBlank(attrVO.getEnumString())) {
         comboboxKVs = JSONObject.parseArray(attrVO.getEnumString(), KeyValue.class);
      } else {
//         comboboxKVs = enumService.getEnum(attrVO.getEnumid());
//          Dict dict = new Dict();
//         dict.setParentId(Long.valueOf(attrVO.getEnumid()));
         R<List<DictBiz>> list = iDictBizClient.getList(attrVO.getEnumId());
         R<List<EnumVO>> list = enumClient.getList(attrVO.getEnumId());
         if(list.isSuccess()){
            for (DictBiz datum : list.getData()) {
            for (EnumVO datum : list.getData()) {
               KeyValue keyValue = new KeyValue();
               keyValue.setKey(datum.getDictKey());
               keyValue.setValue(datum.getDictValue());
               keyValue.setKey(datum.getItemValue());
               keyValue.setValue(datum.getItemName());
               comboboxKVs.add(keyValue);
            }
         }
@@ -329,14 +340,14 @@
      switchDateAttrOnOrder(templateVO, orderDTO);
      //9.生成编码的信息
//      ClientBusinessObject cbo = boService.createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
      CodeWupinEntity cbo = createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
      CodeWupin cbo = createCBOByBtmName(classifyFullInfo.getTopClassifyVO().getBtmtypeid());
//      //默认的属性都不用从前端拷贝
//      //设置编码需要的默认属性的内容
      copyValueToCBO(classifyFullInfo, cbo, orderDTO, templateVO, false);
//      //TODO:因为默认的属性都不拷贝,目前集团码叫name,并没有从DTO拷贝到cbo里。增加一个单独处理,以后再看要不要调整
      cbo.setName(orderDTO.getName() == null ? "" : orderDTO.getName());
//      //end -- modify by lihang @20220407
      List<CodeWupinEntity> cboList = new ArrayList<>();
      List<CodeWupin> cboList = new ArrayList<>();
      //备注
      cbo.setDescription(orderDTO.getDescription());
@@ -347,7 +358,7 @@
      List<String> charList = new ArrayList<>();
      for (CodeWupinEntity wupinEntity : cboList) {
      for (CodeWupin wupinEntity : cboList) {
         charList.add(wupinEntity.getId());
      }
      batchSaveSelectChar(templateVO, charList);
@@ -561,7 +572,9 @@
      //没有限制分类,但是一个模板只可能在一个业务类型里面,所以直接查询这个业务类型即可
      if (!CollectionUtils.isEmpty(conditionMap)) {
         final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "};
         //表需要改
//         final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmtypeid()) + " t where 1 = 1 "};
         final String[] sql = {"select count(*) from pl_code_wupin t where 1 = 1 "};
         conditionMap.forEach((key, value) -> {
            sql[0] += " and " + key + " = " + value;
         });
@@ -696,9 +709,9 @@
    * @param templateVO       模板的显示对象
    * @param edit             是否为修改
    */
   private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, CodeWupinEntity cbo,
   private void copyValueToCBO(CodeClassifyFullInfoBO classifyFullInfo, CodeWupin cbo,
                        CodeOrderDTO orderDTO, CodeClassifyTemplateVO templateVO,
                        boolean edit) {
                        boolean edit)  {
      String fullPath = "";
      if (!CollectionUtils.isEmpty(classifyFullInfo.getParentClassifyVOs())) {
         fullPath = classifyFullInfo.getParentClassifyVOs().stream().sorted(((o1, o2) -> o2.getDataLevel().compareTo(o1.getDataLevel())))
@@ -708,8 +721,8 @@
      }
//      BeanUtils.
      BeanUtils.copyProperties(orderDTO.getData(),cbo);
      cbo.setMaterialtype(Short.valueOf("1001"));
//      BeanUtils.copyProperties(orderDTO.getData(),cbo);
//      cbo.setMaterialtype(Short.valueOf("1001"));
//      orderDTO.getData().forEach((key, value) -> {
//         if (!edit || (!checkUnAttrUnEdit(key) &&
//            !VciQueryWrapperForDO.LC_STATUS_FIELD.equalsIgnoreCase(key))) {
@@ -720,18 +733,19 @@
//            }
//         }
//      });
//      BeanMap beanMap = BeanMap.create(cbo);
//      beanMap.putAll(orderDTO.getData());
      try {
         BeanUtilForVCI.copyPropertiesIgnoreNull(BeanUtilForVCI.convertMap(CodeWupin.class,orderDTO.getData()),cbo);
         cbo.setCodeclsfid(classifyFullInfo.getCurrentClassifyVO().getOid());
         cbo.setCodetemplateoid(templateVO.getOid());
         cbo.setCodeclsfpath(fullPath);
//         cbo.setMaterialclassify("model_type");
//         cbo.setMaterialname(orderDTO.getData().get("materialname"));
//         cbo.setShifoupihaoguanli("true");
//         cbo.setKucunwl("true");
//         cbo.setXiaoshouwl("false");
         cbo.setTs(new Date());
         if (!edit && StringUtils.isBlank(orderDTO.getLcStatus())) {
            //找生命周期的起始状态,插个点,看生命周期是否需要创建
            //找生命周期的起始状态,插个点,生命周期是否需要创建
            if (StringUtils.isNotBlank(cbo.getLctid())) {
//               OsLifeCycleVO lifeCycleVO = lifeCycleService.getLifeCycleById(cbo.getLctid());
//               if (lifeCycleVO != null) {
@@ -746,7 +760,7 @@
         }
         int secret = VciBaseUtil.getInt(cbo.getSecretGrade().toString());
         int secret = VciBaseUtil.getInt(String.valueOf(cbo.getSecretGrade()));
         //插个点,后续看密级服务是否可用
//         if (secret == 0 || !secretService.checkDataSecret(secret)) {
         if (secret == 0 ) {
@@ -768,7 +782,7 @@
    * @throws VciBaseException 初始化出错的是会抛出异常
    */
   @Override
   public CodeWupinEntity createCBOByBtmName(String btmName)
   public CodeWupin createCBOByBtmName(String btmName)
      throws VciBaseException {
      if(btmName!=null){
         btmName = btmName.trim().toLowerCase();
@@ -787,13 +801,13 @@
//      }
//      ClientBusinessObject cbo = cloneClientBusinessObject(hasCreatedCbos.get(btmName));
      QueryWrapper<CodeOsbtmtypeEntity> btmWrapper = new QueryWrapper<>();
      btmWrapper.eq("ID",btmName);
      CodeOsbtmtypeEntity btmTypeVO = codeOsbtmtypeMapper.selectOne(btmWrapper);
//      QueryWrapper<CodeOsbtmtypeEntity> btmWrapper = new QueryWrapper<>();
//      btmWrapper.eq("ID",btmName);
//      CodeOsbtmtypeEntity btmTypeVO = codeOsbtmtypeMapper.selectOne(btmWrapper);
//      OsBtmTypeVO btmTypeVO = btmService.getBtmById(boName);
      String userName = AuthUtil.getUser().getUserName();
      CodeWupinEntity wupinEntity = new CodeWupinEntity();
      wupinEntity.setOid(null);
      CodeWupin wupinEntity = new CodeWupin();
      wupinEntity.setOid(VciBaseUtil.getPk());
//      bo.setRevisionid((new ObjectUtility()).getNewObjectID36());
//      bo.setNameoid((new ObjectUtility()).getNewObjectID36());
      wupinEntity.setBtmname(btmName);
@@ -805,13 +819,13 @@
      wupinEntity.setCreateTime(new Date());
      wupinEntity.setLastModifier(userName);
      wupinEntity.setLastModifyTime(new Date());
      wupinEntity.setRevisionRule(btmTypeVO.getRevisionruleid());
      wupinEntity.setVersionRule(String.valueOf(btmTypeVO.getVersionRule()));
      if(StringUtils.isNotBlank(btmTypeVO.getRevisionruleid())){
         //插个点,需要问勇哥版本问题,展示默认为1
      wupinEntity.setRevisionRule("numberversionrule");
      wupinEntity.setVersionRule("0");
//      if(StringUtils.isNotBlank(btmTypeVO.getRevisionruleid())){
         //
//         OsRevisionRuleVO revisionRuleVO = revisionRuleService.getRevisionRuleById(btmTypeVO.getRevisionruleid());
         wupinEntity.setRevisionValue("1");
      }
      wupinEntity.setRevisionValue("1");
//      }
      wupinEntity.setRevisionSeq(1);
      wupinEntity.setVersionSeq(1);
@@ -825,7 +839,7 @@
      wupinEntity.setOwner(userName);
      wupinEntity.setCheckinby(userName);
      wupinEntity.setCopyFromVersion("");
      wupinEntity.setMaterialtype((short) 1001);
      wupinEntity.setMaterialtype(1001);
      wupinEntity.setCaigouwl("true");
      wupinEntity.setShifoupihaoguanli("true");
      wupinEntity.setKucunwl("true");
@@ -1339,7 +1353,7 @@
         maps.stream().forEach(map -> {
            Map<String, String> data = new HashMap<>();
            map.forEach((key, value) -> {
               data.put(((String) key).toLowerCase(Locale.ROOT), (String) value);
               data.put(((String) key).toLowerCase(Locale.ROOT), String.valueOf(value));
            });
            dataList.add(data);
         });
@@ -1512,8 +1526,9 @@
               referVO.setValueField(VciQueryWrapperForDO.OID_FIELD);
               referVO.setTextField("name");
            }
            String referTable = VciBaseUtil.getTableName(referVO.getReferType());
            //表需要改
//            String referTable = VciBaseUtil.getTableName(referVO.getReferType());
            String referTable = "pl_code_wupin";
            String referTableNick = attrVO.getId() + "0";
            String left = " left join " + referTable + " " + referTableNick + " on " + referTableNick + "." + referVO.getValueField() + " =  t." + attrVO.getId();
            joinTableList.put(attrVO.getId(), left);
@@ -1601,7 +1616,9 @@
         }
         whereSql += " and ( t.secretGrade <= " + userSecret + ") ";
      }
      String tableName = VciBaseUtil.getTableName(btmType);
      //要改,表明获取有问题
//      String tableName = VciBaseUtil.getTableName(btmType);
      String tableName = "pl_code_wupin";
      String sql = "select " + selectFieldList.stream().map(s -> (s.contains(".") ? s : ("t." + s))).collect(Collectors.joining(","))
         + " from " + tableName + SPACE + "t" + SPACE
         + joinTableList.values().stream().collect(Collectors.joining(SPACE))
@@ -1842,9 +1859,9 @@
      //找业务类型,然后使用主键去获取数据库里的数据
//      List<ClientBusinessObject> cbos = boService.queryCBO(classifyFullInfo.getTopClassifyVO().getBtmtypeid(), WebUtil.getOidQuery(orderDTO.getOid()));
      QueryWrapper<CodeWupinEntity> btmWrapper = new QueryWrapper<>();
      QueryWrapper<CodeWupin> btmWrapper = new QueryWrapper<>();
      btmWrapper.eq("OID",orderDTO.getOid());
      CodeWupinEntity cbo = codeWupinMapper.selectOne(btmWrapper);
      CodeWupin cbo = codeWupinMapper.selectOne(btmWrapper);
//      CodeClstemplateVO templateVO = templateService.getObjectHasAttrByOid(orderDTO.getTemplateOid());
//      CodeRuleVO ruleVO = ruleService.getObjectHasSecByOid(orderDTO.getCodeRuleOid());
@@ -1939,7 +1956,7 @@
         oidCollection.addAll(strings);
      }
      List<CodeWupinEntity> cboList = codeWupinMapper.selectBatchIds(oidCollection);
      List<CodeWupin> cboList = codeWupinMapper.selectBatchIds(oidCollection);
      //      List<ClientBusinessObject> cboList = new ArrayList<>();
//      oidCollection.stream().forEach(oids -> {
//         Map<String, String> conditionMap = new HashMap<>();
@@ -1950,15 +1967,15 @@
      if (CollectionUtils.isEmpty(cboList)) {
         throw new VciBaseException("数据全部在系统中不存在");
      }
      List<CodeWupinEntity> editCBOs = cboList.stream().filter(s -> !CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList());
      List<CodeWupin> editCBOs = cboList.stream().filter(s -> !CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList());
      if (!CollectionUtils.isEmpty(editCBOs)) {
         CodeWupinEntity cbo = editCBOs.get(0);
         CodeWupin cbo = editCBOs.get(0);
         throw new VciBaseException("编码为{0}等共{1}条数据的状态不是[{2}],不允许删除", new String[]{cbo.getId(), String.valueOf(editCBOs.size()), CodeDefaultLC.EDITING.getText()});
      }
      //只能删除自己创建的数据
      String userId = AuthUtil.getUser().getUserName();
      for (CodeWupinEntity clientBusinessObject:cboList){
      for (CodeWupin clientBusinessObject:cboList){
         String creator = clientBusinessObject.getCreator();
         if(!userId.equalsIgnoreCase(creator)){
            throw new VciBaseException("编码为"+clientBusinessObject.getId()+"的数据不是当前用户创建,不能删除!");
@@ -2047,12 +2064,13 @@
      if (!classifyService.checkHasChild(codeClassifyOid)) {
         conditionMap.put(CODE_CLASSIFY_OID_FIELD, codeClassifyOid);
      } else {
         conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY)
            + " where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
         //表需要改
//         conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY)
         conditionMap.put(CODE_CLASSIFY_OID_FIELD, QueryOptionConstant.IN + "(select oid from pl_code_wupin where lcstatus='" + FrameWorkDefaultValueConstant.FRAMEWORK_DATA_ENABLED +
            "' start with parentCodeClassifyOid = '" + codeClassifyOid + "' CONNECT BY PRIOR OID = parentCodeClassifyOid )");
      }
      conditionMap.put("islastr", "1");
      conditionMap.put("islastv", "1");
      conditionMap.put("lastr", "1");
      conditionMap.put("lastv", "1");
      return queryGrid(btmTypeId, templateVO, conditionMap, pageHelper);
//        List<String> selectFieldList = templateVO.getAttributes().stream().map(CodeClassifyTemplateAttrVO::getId).collect(Collectors.toList());
//        //参照让平台直接查询就行
@@ -2160,17 +2178,21 @@
   public R markDataPassing(String oid, String btmName, Boolean pass) {
      VciBaseUtil.alertNotNull(oid, "业务数据主键", btmName, "业务类型", pass, "标记类型");
      boolean flag = false;
//      try {
//         ClientBusinessObjectOperation operation = new ClientBusinessObjectOperation();
      try {
//         QueryWrapper<CodeWupinEntity> wrapper = new QueryWrapper<>();
//         wrapper.eq("oid",oid);
         CodeWupin data = baseMapper.selectById(oid);
         //         ClientBusinessObjectOperation operation = new ClientBusinessObjectOperation();
//         ClientBusinessObject data = operation.readBusinessObjectById(oid, btmName);
//         if (data == null || StringUtils.isBlank(data.getOid())) {
//            return BaseResult.fail(DATA_OID_NOT_EXIST);
//         }
//         data.setAttributeValue("passing", String.valueOf(pass));
         if (data == null || StringUtils.isBlank(data.getOid())) {
            return R.fail(DATA_OID_NOT_EXIST);
         }
         data.setPassing(String.valueOf(pass));
         flag = SqlHelper.retBool(baseMapper.updateById(data));
//         flag = operation.updateBuinessObject(data);
//      } catch (VCIError e) {
//         e.printStackTrace();
//      }
      } catch (Exception e) {
         e.printStackTrace();
      }
      if (flag) {
         return R.success("标记成功!");
      } else {
@@ -2431,7 +2453,7 @@
         executionId = executionId.substring(0, executionId.lastIndexOf("."));
      }
      String sql = "select wm_concat(distinct (t.codetempattrOidArr)) codetempattroidarr\n" +
         "from " + VciBaseUtil.getTableName(MdmBtmTypeConstant.CODE_CLASSIFY_PROCESS_TEMPLATE) + " t\n" +
         "from pl_code_wupin t\n" +
         "join PLFLOWINSTANCE plfi on t.ID = plfi.PLTEMPLATEPUID\n" +
         "where plfi.PLEXECUTIONID = '" + executionId + "' and t.CLASSIFYTEMPLATEOID = '" + templateOid + "' and t.CODEPROCESSUSE = '" + processUse + "'";
//      List<ClientBusinessObject> tempAttrOidArr = boService.queryByOnlySql(sql);
@@ -2464,51 +2486,63 @@
      }
      List<String> oidList = VciBaseUtil.str2List(conditionMap.get("oid"));
      Map<String, String> oidMap = new HashMap<>();
      QueryWrapper<CodeWupin> wrapper = new QueryWrapper();
      if (conditionMap.get("oid").contains(",")) {
         oidMap.put("oid", QueryOptionConstant.IN +"("+ VciBaseUtil.toInSql(oidList.toArray(new String[0])) + ")");
//         oidMap.put("oid", QueryOptionConstant.IN +"("+ VciBaseUtil.toInSql(oidList.toArray(new String[0])) + ")");
         wrapper.in("oid",oidList);
      } else {
         oidMap.put("oid", conditionMap.get("oid"));
//         oidMap.put("oid", conditionMap.get("oid"));
         wrapper.in("oid",conditionMap.get("oid"));
      }
      if (CollectionUtils.isEmpty(oidMap)) {
         throw new VciBaseException("业务数据主键不能为空");
      }
//      List<ClientBusinessObject> cbos = boService.queryCBO(btmType, oidMap);
//      if (CollectionUtils.isEmpty(cbos)) {
//         throw new VciBaseException("未找到业务数据");
//      }
//      ClientBusinessObject cbo = cbos.get(0);
//      String templateOid = cbo.getAttributeValue("CODETEMPLATEOID");
      List<CodeWupin> cbos = baseMapper.selectList(wrapper);
      if (CollectionUtils.isEmpty(cbos)) {
         throw new VciBaseException("未找到业务数据");
      }
      CodeWupin cbo = cbos.get(0);
      String templateOid = cbo.getCodetemplateoid();
//      Map<String, String> templateOidMap = new HashMap<>();
//      templateOidMap.put("oid", templateOid);
      QueryWrapper<CodeClassifyTemplate> codeClassifyTemplateWrapper = new QueryWrapper<>();
      codeClassifyTemplateWrapper.eq("oid", templateOid);
      List<CodeClassifyTemplate> templateDOList = templateService.list(codeClassifyTemplateWrapper);
//      List<CodeClassifyTemplate> templateDOList = boService.queryObject(CodeClassifyTemplate.class, templateOidMap);
      QueryWrapper<CodeClassifyTemplateAttr> codeClassifyTemplateAttrWrapper = new QueryWrapper<>();
      codeClassifyTemplateAttrWrapper.eq("CLASSIFYTEMPLATEOID", templateOid);
//      templateOidMap.clear();
//      templateOidMap.put("CLASSIFYTEMPLATEOID",templateOid);
//      List<CodeClassifyTemplateAttr> attrDOList = boService.queryObject(CodeClassifyTemplateAttr.class, templateOidMap);
//      if (CollectionUtils.isEmpty(templateDOList)) {
//         logger.error("找不到业务数据关联的模板,模板主键:" + templateOid);
//         throw new VciBaseException("找不到业务数据关联的模板");
//      }
//      CodeClassifyTemplateVO templateVO = templateService.codeClassifyTemplateDO2VO(templateDOList.get(0));
//      templateVO.setAttributes(templateAttrService.codeClassifyTemplateAttrDO2VOs(attrDOList));
//      try {
//         if (oidList.size() > 1){
//            DataGrid<Map<String,String>> allDataGrid = new DataGrid<>();
//            List<Map<String,String>> allData = new ArrayList<>();
//            oidList.forEach(oid -> {
//               Map<String,String> condition = new HashMap<>();
//               condition.put("oid",oid);
//               DataGrid<Map<String, String>> dataGrid = queryGrid(btmType, templateVO, condition, pageHelper);
//               allData.addAll(dataGrid.getData());
//            });
//            allDataGrid.setData(allData);
//            return allDataGrid;
//         }else {
//            return queryGrid(btmType, templateVO, conditionMap, pageHelper);
//         }
//      } catch (Exception e) {
//         System.out.println(e.getMessage());
      List<CodeClassifyTemplateAttr> attrDOList = codeClassifyTemplateAttrService.list(codeClassifyTemplateAttrWrapper);
//         boService.queryObject(CodeClassifyTemplateAttr.class, templateOidMap);
      if (CollectionUtils.isEmpty(templateDOList)) {
         logger.error("找不到业务数据关联的模板,模板主键:" + templateOid);
         throw new VciBaseException("找不到业务数据关联的模板");
      }
      CodeClassifyTemplateVO templateVO = templateService.codeClassifyTemplateDO2VO(templateDOList.get(0));
      templateVO.setAttributes(codeClassifyTemplateAttrService.codeClassifyTemplateAttrDO2VOs(attrDOList));
      try {
         if (oidList.size() > 1){
            DataGrid<Map<String,String>> allDataGrid = new DataGrid<>();
            List<Map<String,String>> allData = new ArrayList<>();
            oidList.forEach(oid -> {
               Map<String,String> condition = new HashMap<>();
               condition.put("oid",oid);
               DataGrid<Map<String, String>> dataGrid = queryGrid(btmType, templateVO, condition, pageHelper);
               allData.addAll(dataGrid.getData());
            });
            allDataGrid.setData(allData);
            return allDataGrid;
         }else {
            return queryGrid(btmType, templateVO, conditionMap, pageHelper);
         }
      } catch (Exception e) {
         System.out.println(e.getMessage());
         return null;
//      }
      }
   }
   /**
    * 使用分类的主键获取表格的定义
@@ -2752,7 +2786,7 @@
               kv.setValue(buttonVO.getClassifyButtonOidName());
               kv.setAttributes(VciBaseUtil.objectToMap(buttonVO));
               buttons.add(kv);
               optionJsMap.put(buttonVO.getId(), buttonVO.getButtonVO().getExecutejs());
               optionJsMap.put(buttonVO.getId(), buttonVO.getButtonVO().getExecuteJs());
            });
            optionFieldVO.setOptionJsMap(optionJsMap);
            uiInfoVO.getTableDefineVO().getCols().get(0).add(optionFieldVO);