xiejun
2023-10-13 815c6be8d063ca1ec89079722d265585f7d3602c
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/MdmEngineService.java
@@ -1,31 +1,34 @@
package com.vci.ubcs.code.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vci.ubcs.code.applyjtcodeservice.vo.BaseModelVO;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
import com.vci.ubcs.code.dto.CodeDeleteBatchDTO;
import com.vci.ubcs.code.dto.CodeOrderDTO;
import com.vci.ubcs.code.dto.datapush.BaseModelDTO;
import com.vci.ubcs.code.entity.CodeAllCode;
import com.vci.ubcs.code.entity.CodeKeyAttrRepeat;
import com.vci.ubcs.code.entity.CodeWupinEntity;
import com.vci.ubcs.code.vo.CodeKeyAttrRepeatVO;
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.code.vo.pagemodel.UITableFieldVO;
import com.vci.ubcs.code.vo.pagemodel.*;
import com.vci.ubcs.flow.core.dto.FlowStatusDTO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.BaseModel;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.web.pagemodel.*;
import com.vci.ubcs.starter.web.util.VciQueryWrapperForDO;
import org.springblade.core.tool.api.R;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * 主数据引擎服务
 * @author weidy
 * @date 2022-2-21
 */
public interface MdmEngineService extends IService<CodeWupinEntity> {
public interface MdmEngineService {
   /**
    * 使用分类的主键获取可以使用的模板对象
    * @param codeClassifyOid 分类的主键
@@ -59,7 +62,7 @@
    * @param orderDTO 申请的信息,需要包含属性的内容和码段相关的内容
    * @return 返回编码的内容
    */
   String addSaveCode(CodeOrderDTO orderDTO);
   String addSaveCode(CodeOrderDTO orderDTO) throws Exception;
   /**
    * 判断编码的码段是否输入或者选择了码值
@@ -88,9 +91,9 @@
    * 初始化业务类型
    * --创建人默认为当前用户,如果需要修改,可以在获取后自行处理
    * @param btmName 业务类型的名称,会自动变成小写
    * @return CodeWupinEntity
    * @return BaseModel
    */
   CodeWupinEntity createCBOByBtmName(String btmName);
   BaseModel createCBOByBtmName(String btmName);
   /**
    * 保存可输可选的信息
@@ -99,7 +102,14 @@
    * @param cboList    数据的内容
    */
   void batchSaveSelectChar(CodeClassifyTemplateVO templateVO, /*List<ClientBusinessObject> cboList*/
                      List<String> cboList);
                      List<BaseModel> cboList);
   /**
    * 封装开关的内容,常用于导出
    * @param dataMap 数据的内容
    * @param templateVO 模板的显示
    */
   void wrapperBoolean(List<Map<String, String>> dataMap, CodeClassifyTemplateVO templateVO);
   /**
    * 使用模板的主键获取表单的信息
@@ -367,4 +377,115 @@
    * @return UI相关的内容
    */
   MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid, String functionId);
   /**
    * 使用分类主键,模板主键,阶段标识,流程模板kek获取流程审批中页面的内容,包含按钮
    *
    * @param codeClassifyOid 主题库分类主键
    * @param functionId      功能的编号,默认5
    * @return UI相关的内容
    */
   MdmUIInfoVO getFlowUIInfoByClassifyOid(String codeClassifyOid, String functionId,String templateId,String taskId,String modelKey);
   /**
    * 传入业务类型以及相关数据进行批量插入操作
    *
    * @param btmType 业务类型
    * @param baseModels      处理数据
    * @return 处理成功数据条数
    */
   Integer insertBatchByType(String btmType, List<BaseModel> baseModels);
   /**
    * 传入业务类型以及ID查询业务表数据是否重复
    *
    * @param btmType 业务类型
    * @param ids      处理数据
    * @return 查询到数据的总数
    */
   Integer selectIdsCounts(String btmType, List<String> ids);
   /**
    * 传入业务类型以及ID、OID查询业务表数据是否重复
    *
    * @param btmType 业务类型
    * @param id      处理数据id
    * @param oid      处理数据oid
    * @return 查询到数据的总数
    */
   Integer selectIdAndOidCounts(String btmType, String id, String oid);
   /**
    * 传入业务类型以及相oid集合查询数据进行返回
    *
    * @param btmType 业务类型
    * @param oids      需要查询的oid集合 逗号分开
    * @return 查询出的数据
    */
   List<BaseModel> selectByTypeAndOid(String btmType, String oids) ;
   /**
    * 传入业务类型以及相关数据进行批量更新操作
    *
    * @param btmType 业务类型
    * @param baseModels      处理数据
    * @return 处理状态
    */
   R updateBatchByBaseModel(String btmType, List<BaseModel> baseModels);
   /**
    * 更新业务数据同时对码值表数据操作接口
    *
    * @param btmType 业务类型
    * @param baseModels      处理数据
    * @return 处理状态
    */
   public R<Integer>updateBatchBtypeDatas(String btmType, List<BaseModel> baseModels);
   /**
    * 默认列表
    * @param referConfigVO
    * @return
    */
   IPage<BaseModelVO> referDataGrid(UIFormReferVO referConfigVO, BaseQueryObject baseQueryObject) throws VciBaseException;
   /**
    * 获取树形的参照
    * @param referConfigVO 参照的配置
    * @return 树形的数据
    */
   List<Tree> referTree(UIFormReferVO referConfigVO, TreeQueryObject queryObject);
   /**
    * 是否为修改忽略的属性
    * @param attrName 属性的名字
    * @return true 表示应该忽略
    */
   default boolean checkUnAttrUnEdit(String attrName){
      return  (VciQueryWrapperForDO.OID_FIELD.equalsIgnoreCase(attrName)
         ||"ts".equalsIgnoreCase(attrName)
         || "lastmodifier".equalsIgnoreCase(attrName)
         || "lastmodifytime".equalsIgnoreCase(attrName)
         || "createtime".equalsIgnoreCase(attrName)
         || "checkintime".equalsIgnoreCase(attrName)
         ||"checkouttime".equalsIgnoreCase(attrName));
   }
   /**
    * 流程中变更状态值
    * @param flowDTO
    * @return
    */
    R processChangeStatus(FlowStatusDTO flowDTO);
   /**
    * 校验关键属性
    * @param orderDTO         编码申请的相关的信息
    */
   public List<Map>  checkKeyAttrOnOrderFordatas(CodeOrderDTO orderDTO) ;
   /**
    * 根据当前申请编码的分类,逐层往上校验是否符合属于配置的中的分类子节点的分
    * 类,如果符合,则该分类申请的编码为集团码返回true,反之则为企业编码返回false
    * @param parameter 传入数据,classifyGroupCode:配置的中的分类顶节点,oid:选择节点的oid
    */
   R checkGroupCode(Map<String, String> parameter);
}