ludc
2023-05-09 1b8120cacac0037fcb1f8ae747c2f54eb735368b
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempbuttonServiceImpl.java
@@ -21,18 +21,25 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.CodeClassifyTemplateButtonDTO;
import com.vci.ubcs.code.dto.CodeClassifyValueDTO;
import com.vci.ubcs.code.entity.CodeClassifyTemplateButton;
import com.vci.ubcs.code.entity.CodeClassifyValue;
import com.vci.ubcs.code.entity.*;
import com.vci.ubcs.code.enumpack.CodeButtonUseEnum;
import com.vci.ubcs.code.mapper.CodeClassifyTemplateButtonMapper;
import com.vci.ubcs.code.service.ICodeButtonService;
import com.vci.ubcs.code.service.ICodeTempbuttonService;
import com.vci.ubcs.code.vo.pagemodel.CodeButtonVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateButtonVO;
import com.vci.ubcs.code.wrapper.CodeTempbuttonWrapper;
import com.vci.ubcs.common.utils.PageDO2PageVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.util.Map2MPLLambdaUtil;
import com.vci.ubcs.starter.web.pagemodel.DataGrid;
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import com.vci.ubcs.starter.web.util.BeanUtil;
@@ -85,25 +92,32 @@
   /**
    * 查询所有的主题库里模板包含的按钮
    * @param codeClassifyTemplateButtonVO 查询条件
    * @param query 分页和排序
    * @param conditionMap 查询条件
    * @param pageHelper 分页和排序
    * @return 执行结果
    * @throws VciBaseException 查询条件和分页出错的时候会抛出异常
    */
   @Override
   public DataGrid<CodeClassifyTemplateButtonVO> gridCodeClassifyTemplateButton(CodeClassifyTemplateButtonVO codeClassifyTemplateButtonVO, Query query) throws VciBaseException {
   public IPage<CodeClassifyTemplateButtonVO> gridCodeClassifyTemplateButton(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException {
      Query query = new Query();
      if (pageHelper == null) {
         query.setSize(-1);
      }else {
         query.setSize(pageHelper.getLimit());
         query.setCurrent(pageHelper.getPage());
      }
      query.setDescs("createTime");
      if(StringUtils.isBlank(conditionMap.getOrDefault("classifyTemplateOid",null))){
         return new Page<>();
      }
      if(StringUtils.isBlank(codeClassifyTemplateButtonVO.getClassifytemplateoid())){
         return null;
      }
      IPage<CodeClassifyTemplateButton> doList = codeClassifyTemplateButtonMapper.selectPage(Condition.getPage(query),Condition.getQueryWrapper(codeClassifyTemplateButtonVO));
      DataGrid<CodeClassifyTemplateButtonVO> dataGrid=new DataGrid<CodeClassifyTemplateButtonVO>();
      IPage<CodeClassifyTemplateButton> doList = codeClassifyTemplateButtonMapper.selectPage(Condition.getPage(query),getMPJLambdaWrapper(conditionMap));
      IPage<CodeClassifyTemplateButtonVO> voList = new Page<>();
      if (!CollectionUtils.isEmpty(doList.getRecords())) {
         dataGrid.setData(codeClassifyTemplateButtonDO2VOs(doList.getRecords()));
         dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(codeClassifyTemplateButtonMapper.selectCount(Condition.getQueryWrapper(codeClassifyTemplateButtonVO)))));
         voList.setRecords(codeClassifyTemplateButtonDO2VOs(doList.getRecords()));
         voList = PageDO2PageVO.pageDO2PageVO(doList,voList);
      }
      return dataGrid;
      return voList;
   }
   /**
@@ -138,12 +152,12 @@
      if(hasButtonVO && !CollectionUtils.isEmpty(voList)){
         //获取按钮的显示对象
         List<CodeButtonVO> buttonVOList = new ArrayList<>();
         VciBaseUtil.switchCollectionForOracleIn(voList.stream().map(CodeClassifyTemplateButtonVO::getClassifybuttonoid).collect(Collectors.toList())).stream().forEach(buttonOids->{
         VciBaseUtil.switchCollectionForOracleIn(voList.stream().map(CodeClassifyTemplateButtonVO::getClassifyButtonOid).collect(Collectors.toList())).stream().forEach(buttonOids->{
            buttonVOList.addAll(buttonService.listCodeButtonByOids(buttonOids));
         });
         Map<String, CodeButtonVO> buttonVOMap = Optional.ofNullable(buttonVOList).orElseGet(() -> new ArrayList<>()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
         voList.stream().forEach(vo->{
            vo.setButtonVO(buttonVOMap.getOrDefault(vo.getClassifybuttonoid(),null));
            vo.setButtonVO(buttonVOMap.getOrDefault(vo.getClassifyButtonOid(),null));
         });
      }
      return voList;
@@ -161,7 +175,7 @@
      if(codeClassifyTemplateButtonDO != null){
         BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateButtonDO,vo);
         //如果有lcstatus的类的话
         vo.setButtonUseText(CodeButtonUseEnum.getTextByValue(codeClassifyTemplateButtonDO.getButtonUse()));
      }
      return vo;
   }
@@ -179,22 +193,24 @@
    */
   @Override
   @Transactional(rollbackFor = Exception.class)
   public boolean addSave(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) throws VciBaseException{
      VciBaseUtil.alertNotNull(codeClassifyTemplateButtonDTO,"需要添加的数据对象",codeClassifyTemplateButtonDTO.getClassifytemplateoid(),"模板的主键");
   public CodeClassifyTemplateButtonVO addSave(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) throws VciBaseException{
      VciBaseUtil.alertNotNull(codeClassifyTemplateButtonDTO,"需要添加的数据对象",codeClassifyTemplateButtonDTO.getClassifyTemplateOid(),"模板的主键");
      //将DTO转换为DO
      CodeClassifyTemplateButton codeClassifyTemplateButtonDO = new CodeClassifyTemplateButton();
      BeanUtilForVCI.copyPropertiesIgnoreCase(codeClassifyTemplateButtonDTO,codeClassifyTemplateButtonDO);
      DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeClassifyTemplateButtonDO, MdmBtmTypeConstant.CODE_TEMPLATE_BUTTON);
      if(codeClassifyTemplateButtonDO.getOrderNum()== null){
         //查询全部
         Long count = codeClassifyTemplateButtonMapper.selectCount(Wrappers.<CodeClassifyTemplateButton>query()
            .lambda().eq(CodeClassifyTemplateButton::getClassifytemplateoid,codeClassifyTemplateButtonDTO.getClassifytemplateoid())
            .lambda().eq(CodeClassifyTemplateButton::getClassifyTemplateOid,codeClassifyTemplateButtonDTO.getClassifyTemplateOid())
         );
         if(count == null){
            count = 0L;
         }
         codeClassifyTemplateButtonDO.setOrderNum(Long.valueOf(count + 1L).intValue());
      }
      return codeClassifyTemplateButtonMapper.insert(codeClassifyTemplateButtonDO)>0;
      boolean resInsertClsTempButton = codeClassifyTemplateButtonMapper.insert(codeClassifyTemplateButtonDO) > 0;
      return resInsertClsTempButton ? codeClassifyTemplateButtonDO2VO(codeClassifyTemplateButtonDO):null;
   }
   /**
@@ -205,12 +221,14 @@
    */
   @Override
   @Transactional(rollbackFor = Exception.class)
   public boolean editSave(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) throws VciBaseException{
   public CodeClassifyTemplateButtonVO editSave(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO) throws VciBaseException{
      VciBaseUtil.alertNotNull(codeClassifyTemplateButtonDTO,"数据对象",codeClassifyTemplateButtonDTO.getOid(),"主题库里模板包含的按钮主键");
      //将DTO转换为DO
      CodeClassifyTemplateButton codeClassifyTemplateButtonDO = selectByOid(codeClassifyTemplateButtonDTO.getOid());
      revisionModelUtil.copyFromDTOIgnore(codeClassifyTemplateButtonDTO,codeClassifyTemplateButtonDO);
      return codeClassifyTemplateButtonMapper.updateById(codeClassifyTemplateButtonDO)>0;
      DefaultAttrAssimtUtil.updateDefaultAttrAssimt(codeClassifyTemplateButtonDO);
      boolean resUpdateClsTempButton = codeClassifyTemplateButtonMapper.updateById(codeClassifyTemplateButtonDO) > 0;
      return resUpdateClsTempButton ? codeClassifyTemplateButtonDO2VO(codeClassifyTemplateButtonDO):null;
   }
   /**
@@ -225,7 +243,7 @@
      VciBaseUtil.alertNotNull(codeClassifyTemplateButtonDTO,"主题库里模板包含的按钮数据对象",codeClassifyTemplateButtonDTO.getOid(),"主题库里模板包含的按钮的主键");
      CodeClassifyTemplateButton codeClassifyTemplateButtonDO = selectByOid(codeClassifyTemplateButtonDTO.getOid());
      R baseResult = checkIsCanDeleteForDO(codeClassifyTemplateButtonDTO,codeClassifyTemplateButtonDO);
      if(!baseResult.isSuccess()) {
      if(baseResult.isSuccess()) {
      }else{
         return baseResult;
      }
@@ -243,7 +261,7 @@
   private R checkIsCanDeleteForDO(CodeClassifyTemplateButtonDTO codeClassifyTemplateButtonDTO, CodeClassifyTemplateButton codeClassifyTemplateButtonDO) {
      CodeClassifyTemplateButton tsDO = new CodeClassifyTemplateButton();
      BeanUtil.convert(codeClassifyTemplateButtonDTO,tsDO);
      if (checkTs(tsDO)) {
      if (!checkTs(tsDO,codeClassifyTemplateButtonDO)) {
         return R.fail(TS_NOT_PROCESS);
      }
      if(!checkIsLinked(codeClassifyTemplateButtonDO.getOid())) {
@@ -256,17 +274,33 @@
   /**
    * 检查ts
    * @param tempDO
    * @param codeClassifyTemplateButtonDO
    * @return
    */
   private boolean checkTs(CodeClassifyTemplateButton tempDO){
      LambdaQueryWrapper<CodeClassifyTemplateButton> wrapper = Wrappers.<CodeClassifyTemplateButton>query()
         .lambda().eq(CodeClassifyTemplateButton::getOid,tempDO.getOid()).select(CodeClassifyTemplateButton::getTs);
      long dbTs = codeClassifyTemplateButtonMapper.selectById(wrapper).getTs().getTime();
      long currentTs = tempDO.getTs().getTime();
      if(dbTs == currentTs){
   private boolean checkTs(CodeClassifyTemplateButton tempDO,CodeClassifyTemplateButton codeClassifyTemplateButtonDO){
      Date dbTs = codeClassifyTemplateButtonDO.getTs();
      Date currentTs = tempDO.getTs();
      if(currentTs == null ?  dbTs == null:currentTs.compareTo(dbTs)==0){
         return true;
      }
      return false;
   }
   /**
    * 获取连表查询条件对象
    * @param conditionMap
    * @return
    */
   private MPJLambdaWrapper<CodeClassifyTemplateButton> getMPJLambdaWrapper(Map<String,String> conditionMap){
      CodeClassifyTemplateButton codeClassifyTemplateButton = new CodeClassifyTemplateButton();
      BeanMap beanMap = BeanMap.create(codeClassifyTemplateButton);
      beanMap.putAll(conditionMap);
      MPJLambdaWrapper<CodeClassifyTemplateButton> mpjLambdaWrapper = Map2MPLLambdaUtil.getMPJLambdaWrapper(codeClassifyTemplateButton)
         .selectAll(CodeClassifyTemplateButton.class)
         .selectAs(CodeButton::getName, CodeClassifyTemplateButton::getClassifyButtonOidName)
         .selectAs(CodeButton::getId, CodeClassifyTemplateButton::getClassifyButtonId)
         .leftJoin(CodeButton.class, CodeButton::getOid, CodeClassifyTemplateButton::getClassifyButtonOid);
      return mpjLambdaWrapper;
   }
   /**
@@ -301,18 +335,11 @@
    * @throws VciBaseException 查询条件和分页出错的时候会抛出异常
    */
   @Override
   public DataGrid<CodeClassifyTemplateButtonVO> refDataGridCodeClassifyTemplateButton(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
   public IPage<CodeClassifyTemplateButtonVO> refDataGridCodeClassifyTemplateButton(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
      if(conditionMap == null){
         conditionMap = new HashMap<String, String>();
      }
      CodeClassifyTemplateButtonVO codeClassifyTemplateButtonVO = new CodeClassifyTemplateButtonVO();
      BeanMap beanMap = BeanMap.create(codeClassifyTemplateButtonVO);
      beanMap.putAll(conditionMap);
      Query query = new Query();
      query.setSize(pageHelper.getLimit());
      query.setCurrent(pageHelper.getPage());
      return gridCodeClassifyTemplateButton(codeClassifyTemplateButtonVO,query);
      return gridCodeClassifyTemplateButton(conditionMap, pageHelper);
   }
   /**
@@ -325,7 +352,7 @@
      if(!CollectionUtils.isEmpty(oidCollections)){
         Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections);
         for(Collection<String> oids: oidCollectionsList){
            List<CodeClassifyTemplateButton> tempDOList =  codeClassifyTemplateButtonMapper.selectBatchIds(oids);
            List<CodeClassifyTemplateButton> tempDOList = codeClassifyTemplateButtonMapper.selectBatchIds(oids);
            if(!CollectionUtils.isEmpty(tempDOList)){
               codeClassifyTemplateButtonDOList.addAll(tempDOList);
            }
@@ -333,7 +360,6 @@
      }
      return  codeClassifyTemplateButtonDOList;
   }
   /**
    * 校验是否被引用
@@ -353,7 +379,10 @@
    */
   private CodeClassifyTemplateButton selectByOid(String oid) throws VciBaseException{
      VciBaseUtil.alertNotNull(oid,"主键");
      CodeClassifyTemplateButton codeClassifyTemplateButtonDO = codeClassifyTemplateButtonMapper.selectById(oid.trim());
      HashMap<String, String> conditionMap = new HashMap<>();
      conditionMap.put("oid",oid);
      MPJLambdaWrapper<CodeClassifyTemplateButton> mpjLambdaWrapper = getMPJLambdaWrapper(conditionMap);
      CodeClassifyTemplateButton codeClassifyTemplateButtonDO = codeClassifyTemplateButtonMapper.selectOne(mpjLambdaWrapper);
      if(codeClassifyTemplateButtonDO == null || StringUtils.isBlank(codeClassifyTemplateButtonDO.getOid())){
         throw new VciBaseException(DATA_OID_NOT_EXIST);
      }