ludc
2023-10-11 bab515e6ecfb16c042d455fdd2f042b2fd277dda
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java
@@ -4,26 +4,18 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.omd.constant.BtmTypeConstant;
import com.baomidou.mybatisplus.extension.toolkit.SqlRunner;
import com.vci.ubcs.omd.dto.LifeCycleDTO;
import com.vci.ubcs.omd.dto.LifeCycleEdgeDTO;
import com.vci.ubcs.omd.dto.LifeCycleLineEventDTO;
import com.vci.ubcs.omd.dto.LifeCycleNodeDTO;
import com.vci.ubcs.omd.entity.LifeCycleEdge;
import com.vci.ubcs.omd.entity.LifeCycleLineEvent;
import com.vci.ubcs.omd.entity.LifeCycleNode;
import com.vci.ubcs.omd.entity.LifeCycleRule;
import com.vci.ubcs.omd.mapper.LifeCycleEdgeMapper;
import com.vci.ubcs.omd.mapper.LifeCycleLineEventMapper;
import com.vci.ubcs.omd.mapper.LifeCycleMapper;
import com.vci.ubcs.omd.mapper.LifeCycleNodeMapper;
import com.vci.ubcs.omd.repeater.DomainRepeater;
import com.vci.ubcs.omd.entity.*;
import com.vci.ubcs.omd.mapper.*;
import com.vci.ubcs.omd.service.IBtmTypeService;
import com.vci.ubcs.omd.service.ILifeCycleService;
import com.vci.ubcs.omd.service.IStatusService;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.vo.LifeCycleVO;
import com.vci.ubcs.omd.vo.StatusVO;
import com.vci.ubcs.omd.vo.*;
import com.vci.ubcs.omd.wrapper.LifeCycleEventWrapper;
import com.vci.ubcs.omd.wrapper.LifeCycleRuleWrapper;
import com.vci.ubcs.starter.enumpack.NewAppConstantEnum;
import com.vci.ubcs.starter.exception.VciBaseException;
@@ -85,7 +77,11 @@
   @Lazy
   private IBtmTypeService btmTypeService;
   @Resource
   private LifeCycleEventMapper eventMapper;
   @Resource
   private LifeCycleMapper lifeCycleMapper;
   /**
    * 获取生命周期列表
    *
@@ -99,6 +95,30 @@
   }
   /**
    * 获取全部的事件
    *
    * @param conditionMap 查询条件
    * @param query        分页
    * @return 事件的显示对象
    */
   @Override
   public IPage<LifeCycleEventVO> listEvent(Map<String, Object> conditionMap, Query query) {
      return LifeCycleEventWrapper.build().pageVO(eventMapper.selectPage(Condition.getPage(query),Condition.getQueryWrapper(conditionMap, LifeCycleEvent.class).lambda().orderByAsc(LifeCycleEvent::getEventFullName)));
   }
   public List<LifeCycleEventVO> listEventNoPage(){
      QueryWrapper<LifeCycleEvent> queryWrapper = new QueryWrapper();
      List<LifeCycleEvent> lifeCycleEvents =  eventMapper.selectList(queryWrapper);
      List<LifeCycleEventVO> vos = new ArrayList<>();
      lifeCycleEvents.stream().forEach(lifeCycleEvent -> {
         LifeCycleEventVO vo = new LifeCycleEventVO();
         BeanUtil.convert(lifeCycleEvent,vo);
         vos.add(vo);
      });
      return vos;
   }
   /**
    * 添加保存
    *
    * @param lifeCycleDTO 数据传输对象
@@ -109,8 +129,8 @@
   public LifeCycleVO addSave(LifeCycleDTO lifeCycleDTO) {
      VciBaseUtil.alertNotNull(lifeCycleDTO,"生命周期信息",lifeCycleDTO.getId(),"生命周期的编号",lifeCycleDTO.getName(),"生命周期名称",lifeCycleDTO.getNodes(),"生命周期的节点",lifeCycleDTO.getStartStatus(),"起始状态");
      //先查询是否存在
      QueryWrapper wrapper = new QueryWrapper(LifeCycleRule.class);
      wrapper.eq("lower(id)",lifeCycleDTO.getId().toLowerCase(Locale.ROOT));
      QueryWrapper<LifeCycleRule> wrapper = new QueryWrapper<>();
      wrapper.eq("id",lifeCycleDTO.getId().toLowerCase(Locale.ROOT));
      if(baseMapper.selectCount(wrapper)>0){
         throw new VciBaseException("生命周期的编号不能重复");
      }
@@ -132,8 +152,6 @@
      life.setOid(VciBaseUtil.getPk());
      String creator = AuthUtil.getUserAccount();
      Date now = new Date();
      life.setBtmname(BtmTypeConstant.LIFE_CYCLE);
      life.setOwner(creator);
      life.setCreator(creator);
      life.setCreateTime(now);
      life.setLastModifier(creator);
@@ -197,8 +215,6 @@
      LifeCycleLineEvent event = org.springblade.core.tool.utils.BeanUtil.copy(eventDTO, LifeCycleLineEvent.class);
      event.setOid(VciBaseUtil.getPk());
      event.setPkLifeCycleEdge(edgeOid);
      event.setBtmname(BtmTypeConstant.LIFE_CYCLE_LINE_EVENT);
      event.setOwner(creator);
      event.setCreator(creator);
      event.setCreateTime(now);
      event.setLastModifier(creator);
@@ -219,8 +235,6 @@
      LifeCycleNode node = org.springblade.core.tool.utils.BeanUtil.copy(nodeDTO, LifeCycleNode.class);
      node.setOid(VciBaseUtil.getPk());
      node.setLifeCycleOid(lifeOid);
      node.setBtmname(BtmTypeConstant.LIFE_CYCLE_NODE);
      node.setOwner(creator);
      node.setCreator(creator);
      node.setCreateTime(now);
      node.setLastModifier(creator);
@@ -239,7 +253,7 @@
    * @return 连接线的主键
    */
   private String addLifeCycleEdge(LifeCycleEdgeDTO edgeDTO,List<String> statusList,String lifeOid,String creator,Date now){
      VciBaseUtil.alertNotNull(edgeDTO.getSource(),"来源状态",edgeDTO.getTarget(),"目标状态",edgeDTO.getName(),"连接线名称");
      VciBaseUtil.alertNotNull(edgeDTO.getSource(),"来源状态",edgeDTO.getTarget(),"目标状态");
      if(!statusList.contains(edgeDTO.getSource())
         ||!statusList.contains(edgeDTO.getTarget())){
         throw new VciBaseException("数据错误,[" + edgeDTO.getName() + "]连接线上中使用的状态没有找到");
@@ -247,8 +261,6 @@
      LifeCycleEdge edge = org.springblade.core.tool.utils.BeanUtil.copy(edgeDTO, LifeCycleEdge.class);
      edge.setOid(VciBaseUtil.getPk());
      edge.setLifeCycleOid(lifeOid);
      edge.setBtmname(BtmTypeConstant.LIFE_CYCLE_EDGE);
      edge.setOwner(creator);
      edge.setCreator(creator);
      edge.setCreateTime(now);
      edge.setLastModifier(creator);
@@ -316,19 +328,51 @@
         lifeCycleDTO.getOid(),"主键");
      LifeCycleRule rule = selectByOid(lifeCycleDTO.getOid());
      //查询重复
      QueryWrapper wrapper = new QueryWrapper(LifeCycleRule.class);
      if(rule.getId().equals(lifeCycleDTO.getId())){
         throw new VciBaseException("生命周期编号不能修改");
      }
      String sql="select * from  pl_omd_life_cycle_rule where lower(id)=? and oid != ?";
      /*QueryWrapper wrapper = new QueryWrapper(LifeCycleRule.class);
      wrapper.eq("lower(id)",lifeCycleDTO.getId().toLowerCase(Locale.ROOT));
      wrapper.ne("oid",lifeCycleDTO.getOid());
      if(baseMapper.selectCount(wrapper)>0){
         throw new VciBaseException("生命周期的编号不能重复");
      }*/
      if(lifeCycleMapper.checkIdExist(lifeCycleDTO.getId().toLowerCase(Locale.ROOT),lifeCycleDTO.getOid())>0){
         throw new VciBaseException("生命周期的编号不能重复");
      }
      editLifeCycle(lifeCycleDTO,rule);
      return LifeCycleRuleWrapper.build().entityVO(getById(rule.getOid()));
   }
   public LifeCycleVO detail(LifeCycleDTO lifeCycleDTO){
      QueryWrapper wrapper = Condition.getQueryWrapper(org.springblade.core.tool.utils.BeanUtil.copy(lifeCycleDTO, LifeCycleRule.class));
      LifeCycleRule lifeCycleRule = baseMapper.selectOne(wrapper);
      LifeCycleVO vo = LifeCycleRuleWrapper.build().entityVO(lifeCycleRule);
      String lifeOid = lifeCycleRule.getOid();
      QueryWrapper<LifeCycleNode> nodeWrapper = new QueryWrapper<>();
      nodeWrapper.eq("life_cycle_oid",lifeOid.toLowerCase(Locale.ROOT));
      List<LifeCycleNode> nodes = nodeMapper.selectList(nodeWrapper);
      List<LifeCycleNodeVO> nodeVos = new ArrayList<>();
      nodes.stream().forEach(doo->{
         LifeCycleNodeVO vo1 = new LifeCycleNodeVO();
         BeanUtil.convert(doo,vo1);
         nodeVos.add(vo1);
      });
      vo.setNodes(nodeVos);
      QueryWrapper<LifeCycleEdge> edgeWrapper = new QueryWrapper<>();
      edgeWrapper.eq("life_cycle_oid",lifeOid.toLowerCase(Locale.ROOT));
      List<LifeCycleEdge> edges = edgeMapper.selectList(edgeWrapper);
      List<LifeCycleEdgeVO> edgeVos = new ArrayList<>();
      edges.stream().forEach(doo->{
         LifeCycleEdgeVO vo2 = new LifeCycleEdgeVO();
         BeanUtil.convert(doo,vo2);
         edgeVos.add(vo2);
      });
      vo.setEdges(edgeVos);
      return vo;
   }
   /**
    * 修改生命周期
    * @param lifeCycleDTO