ludc
2023-10-16 df18b23b4569828d6be32fb64c80492241e1fc46
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/StatusServiceImpl.java
@@ -1,18 +1,23 @@
package com.vci.ubcs.omd.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.omd.constant.BtmTypeConstant;
import com.vci.ubcs.omd.entity.Status;
import com.vci.ubcs.omd.mapper.StatusMapper;
import com.vci.ubcs.omd.entity.*;
import com.vci.ubcs.omd.mapper.*;
import com.vci.ubcs.omd.service.IStatusService;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.vo.StatusVO;
import com.vci.ubcs.omd.wrapper.BtmTypeWrapper;
import com.vci.ubcs.omd.wrapper.LifeCycleRuleWrapper;
import com.vci.ubcs.omd.wrapper.StatusWrapper;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.util.BeanUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import io.undertow.servlet.core.Lifecycle;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
@@ -21,6 +26,7 @@
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -35,7 +41,12 @@
public class StatusServiceImpl extends ServiceImpl<StatusMapper, Status> implements IStatusService {
   private final String REGEXP = "^[A-Za-z]+$";
   @Resource
   private BtmTypeMapper btmTypeMapper;
   @Resource
   private LifeCycleNodeMapper lifeCycleNodeMapper;
   @Resource
   private LifeCycleMapper lifeCycleMapper;
   /**
    * 获取状态列表
    *
@@ -196,7 +207,10 @@
      Collection<Collection<String>> idCollections = VciBaseUtil.switchCollectionForOracleIn(idCollection);
      if(!CollectionUtils.isEmpty(idCollections)) {
         idCollections.forEach(s -> {
            List<Status> queryResult = baseMapper.selectByIdIgnoreCase(s);
            QueryWrapper<Status> wrapper = new QueryWrapper<>();
            wrapper.in("id",s);
            List<Status> queryResult = baseMapper.selectList(wrapper);
            if(!CollectionUtils.isEmpty(queryResult)){
               statusDOList.addAll(queryResult);
            }
@@ -402,9 +416,10 @@
         throw new VciBaseException("要删除的状态对象不能为空");
      }
      Set<String> oidSet= new HashSet<>();
      Set<String> idSet= new HashSet<>();
      statusVOList.stream().forEach( s -> {
         VciBaseUtil.alertNotNull(s.getOid(),"要删除的状态对象的主键");
         oidSet.add(s.getOid());
         idSet.add(s.getId());
      });
      //查询
      List<Status> statusDOList = listStatusByOidCollectionDO(oidSet);
@@ -418,7 +433,7 @@
         }
      });
      //检查属性是否被引用
      if(checkStatusUseds(oidSet)){
      if(checkStatusUseds(idSet)){
         throw new VciBaseException("要删除的状态在生命周期对象中被使用,无法删除");
      }
      Collection<Collection<String>> oidCollections = VciBaseUtil.switchCollectionForOracleIn(oidInDbSet);
@@ -435,6 +450,10 @@
    */
   @Override
   public boolean checkStatusUseds(Collection<String> oidCollection) {
      Long count = lifeCycleNodeMapper.selectCount(Wrappers.<LifeCycleNode>query().lambda().in(LifeCycleNode::getId,oidCollection));
      if(count>0){
         return true;
      }
      return false;
   }
@@ -447,6 +466,32 @@
    */
   @Override
   public boolean checkStatusUsed(String pkStatus) throws VciBaseException {
      return false;
   }
   /**
    * 查看应用范围
    *
    * @param id id
    * @return 执行结果
    */
   @Override
   public List<BtmTypeVO> getApplyRange(String id) {
      List<BtmTypeVO> btmTypeVOS=new ArrayList<>();
      VciBaseUtil.alertNotNull(id,"状态英文名称");
      List<LifeCycleNode> selectList = lifeCycleNodeMapper.selectList(Wrappers.<LifeCycleNode>query().lambda().eq(LifeCycleNode::getId,id));
      List<String>lifeCycleOidList =   new ArrayList<>();
      if(!CollectionUtils.isEmpty(selectList)){
         lifeCycleOidList = selectList.stream().map(LifeCycleNode::getLifeCycleOid).collect(Collectors.toList());
         List<LifeCycleRule>LifeCycleRuleList = lifeCycleMapper.selectList(Wrappers.<LifeCycleRule>query().lambda().in(LifeCycleRule::getOid,lifeCycleOidList));
         List<String>lifeCycleRuleIdList =   new ArrayList<>();
         if(!CollectionUtils.isEmpty(LifeCycleRuleList)) {
            lifeCycleRuleIdList = LifeCycleRuleList.stream().map(LifeCycleRule::getId).collect(Collectors.toList());
            btmTypeVOS=   BtmTypeWrapper.build().listEntityVO(btmTypeMapper.selectList(Wrappers.<BtmType>query().lambda().in(BtmType::getLifeCycleId, lifeCycleRuleIdList)));
         }
      }
      return btmTypeVOS;
   }
}