yxm
2024-07-17 a1e7b27114eaf0bfd4d9768b76ba0db10e4d87bf
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
@@ -4,6 +4,7 @@
import cn.gistack.sm.sg.DTO.ApprovalDTO;
import cn.gistack.sm.sg.DTO.ProjectSearchDTO;
import cn.gistack.sm.sg.VO.SgProgressReportVO;
import cn.gistack.sm.sg.VO.SgProjectInfoVO;
import cn.gistack.sm.sg.VO.SgReportVO;
import cn.gistack.sm.sg.VO.SgStepReportVO;
import cn.gistack.sm.sg.mapper.*;
@@ -23,7 +24,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.lang.Long;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -82,12 +83,36 @@
      sgProgressReportDO.setCreateTime(now);
      //如果为草稿状态,单纯插入
      if(sgProgressReportDO.getStatus()==4){
         sgProgressReportMapper.insert(sgProgressReportDO);
         return;
         QueryWrapper<SgProgressReportDO> wrappers = new QueryWrapper<>();
         wrappers.eq("profram_id", sgProgressReportDO.getProframId()).eq("status", 4).eq("gx_step_id", sgProgressReportDO.getGxStepId())
            .eq("gx_device_id",sgProgressReportDO.getGxDeviceId());
         if(sgProgressReportMapper.selectOne(wrappers) == null){
            sgProgressReportMapper.insert(sgProgressReportDO);
            return;
         }else {
            throw  new ServiceException("已有草稿数据,无法保存");
         }
      }
      QueryWrapper<SgProgressReportDO> wrappers = new QueryWrapper<>();
      wrappers.eq("profram_id", sgProgressReportDO.getProframId()).ne("status", 4).eq("gx_step_name", "施工准备");
      List<SgProgressReportDO> sgProgressReportDOS1 = sgProgressReportMapper.selectList(wrappers);
      if(sgProgressReportDO.getGxDeviceId()==998){
         ProjectSearchDTO search = new ProjectSearchDTO();
         search.setProjectId(sgProgressReportDO.getProframId().toString());
         List<SgProjectInfoVO> sgProjectInfoVOS = sgProjectInfoMapper.queryStepByProject(search);
         if(sgProjectInfoVOS != null){
            sgProjectInfoVOS.forEach(s ->{
               if(!s.getProjectStatus().equals(2)){
                  throw new ServiceException("请完成所有设备工序审批!");
               }
            });
         }else{
            throw new ServiceException("无设备审批数据!");
         }
      }
      if (sgProgressReportDOS1!= null && sgProgressReportDOS1.size() > 0) {
         for (SgProgressReportDO sgProgressReportDO1 : sgProgressReportDOS1) {
@@ -103,7 +128,11 @@
      SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(gxStepId);
      List<SgGxStepDO> list = sgGxStepMapper.selectByGxInfoId(sgGxStepDO.getGxInfoId());
      QueryWrapper<SgProgressReportDO> wrapper = new QueryWrapper<>();
      wrapper.eq("gx_step_id", gxStepId).eq("gx_device_id",gxDeviceId).ne("status",4);
      if(sgProgressReportDO.getGxDeviceId()==998 || sgProgressReportDO.getGxDeviceId()==999){
         wrapper.eq("gx_step_id", gxStepId).eq("gx_device_id",gxDeviceId).ne("status",4).eq("profram_id",sgProgressReportDO.getProframId());
      }else {
         wrapper.eq("gx_step_id", gxStepId).eq("gx_device_id",gxDeviceId).ne("status",4);
      }
      List<SgProgressReportDO> sgProgressReportDOS = sgProgressReportMapper.selectList(wrapper);
      if ( sgProgressReportDOS!=null && sgProgressReportDOS.size()>0){
         throw new ServiceException("此工序已存在审批!");
@@ -122,8 +151,16 @@
      }
      sgProgressReportDO.setStatus(0);
      sgProgressReportMapper.insert(sgProgressReportDO);
      SgDeviceDO sgDeviceDO = sgDeviceMapper.selectById(gxDeviceId);
      String deviceType = sgDeviceDO.getDeviceType();
      String deviceType ="";
      SgDeviceDO sgDeviceDO = new SgDeviceDO();
      if (gxDeviceId == 999){
          deviceType = "sgzb";
      }else if(gxDeviceId == 998){
         deviceType = "sgys";
      }else {
          sgDeviceDO = sgDeviceMapper.selectById(gxDeviceId);
         deviceType = sgDeviceDO.getDeviceType();
      }
      List<SgGxConfigDO> sgGxConfigDOS = new LambdaQueryChainWrapper<>(sgGxConfigMapper)
         .eq(SgGxConfigDO::getGxDeviceType, deviceType).eq(SgGxConfigDO::getGxStepId, gxStepId).orderByAsc(SgGxConfigDO::getSgOrder).list();
      List<String> roIds = sgGxConfigDOS.stream().map(SgGxConfigDO::getRoleId).collect(Collectors.toList());
@@ -151,9 +188,11 @@
      }
      //加个项目及设备的状态判断 方便统计计算
      if (sgDeviceDO != null && sgDeviceDO.getStatus() == 0) {
         sgDeviceDO.setStatus(1);
         sgDeviceMapper.updateById(sgDeviceDO);
      if(gxStepId != 25 && gxStepId != 26 ) {
         if (sgDeviceDO != null && sgDeviceDO.getStatus() == 0) {
            sgDeviceDO.setStatus(1);
            sgDeviceMapper.updateById(sgDeviceDO);
         }
      }
      SgProjectInfoDO sgProjectInfoDO = sgProjectInfoMapper.selectById(sgProgressReportDO.getProframId());
      if (sgProjectInfoDO != null && sgProjectInfoDO.getStatus() == 0) {
@@ -168,8 +207,11 @@
      SgDeviceDO sgDeviceDO = sgDeviceMapper.selectById(sgProgressReportVO.getGxDeviceId());
      SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(sgProgressReportVO.getGxStepId());
      sgProgressReportVO.setStepRemark(sgGxStepDO.getRemark());
      sgProgressReportVO.setDeviceName(sgDeviceDO.getDeviceName());
      List<SgReportUserDO> list = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId, id).orderByAsc(SgReportUserDO::getId).list();
      if(sgProgressReportVO.getGxDeviceId() !=999 && sgProgressReportVO.getGxDeviceId() !=998){
         sgProgressReportVO.setDeviceName(sgDeviceDO.getDeviceName());
      }else {
      sgProgressReportVO.setDeviceName("");}
      List<SgReportUserDO> list = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId,id).orderByAsc(SgReportUserDO::getId).list();
      List<Long> ids = list.stream().map(s -> s.getUserId()).collect(Collectors.toList());
      List<Map<String,Object>> users = sgProgressReportMapper.getUserByIds(ids);
      for (Map<String, Object> user : users) {
@@ -443,45 +485,54 @@
      if (CollectionUtils.isNotEmpty(sgProgressReportDOS)) {
         sgProgressReportDOS.sort((u1, u2) -> u2.getCreateTime().compareTo(u1.getCreateTime()));
         SgProgressReportDO firstReport = sgProgressReportDOS.get(0);
         if (firstReport.getReportUser().equals(AuthUtil.getUserId()) && firstReport.getStatus().equals(3)) {
            sgReportVO.setGxDeviceId(deviceId);
            sgReportVO.setGxStepId(stepId);
            sgReportVO.setGxStepId(firstReport.getGxStepId());
            sgReportVO.setId(firstReport.getId());
            sgReportVO.setProframId(firstReport.getProframId());
            return sgReportVO;
         } else {
            sgReportVO.setGxDeviceId(deviceId);
            sgReportVO.setGxStepId(stepId);
            sgReportVO.setId(firstReport.getId());
            sgReportVO.setProframId(firstReport.getProframId());
            return sgReportVO;
         }
      } else {
         QueryWrapper<SgProgressReportDO> wrappers = new QueryWrapper<>();
         wrappers.eq("gx_device_id", deviceId).ne("status", 4).orderByDesc("create_time");
         sgProgressReportDOS = sgProgressReportMapper.selectList(wrappers);
         QueryWrapper<SgGxStepDO> wrapperss = new QueryWrapper<>();
         if (CollectionUtils.isNotEmpty(sgProgressReportDOS)) {
            sgProgressReportDOS.sort((u1, u2) -> u2.getCreateTime().compareTo(u1.getCreateTime()));
            SgProgressReportDO firstReport = sgProgressReportDOS.get(0);
            if (firstReport.getReportUser().equals(AuthUtil.getUserId()) && firstReport.getStatus().equals(2)) {
               sgReportVO.setGxDeviceId(deviceId);
               sgReportVO.setGxStepId(stepId);
               sgReportVO.setProframId(firstReport.getProframId());
            } else {
               throw new ServiceException("请完成上一步工序!");
            SgGxStepDO sgGxStepDO = sgGxStepMapper.selectOne(wrapperss.eq("id", stepId));
            List<SgGxStepDO> sgGxStepDOS = sgGxStepMapper.selectList(
               new QueryWrapper<SgGxStepDO>()
                  .lt("id", stepId)
                  .eq("gx_info_id", sgGxStepDO.getGxInfoId())
                  .orderByDesc("gx_step_num"));
            if (!sgGxStepDOS.isEmpty()) {
               if (sgGxStepDOS.get(0).getGxStepName().equals(firstReport.getGxStepName())&&firstReport.getStatus().equals(2)) {
                  sgReportVO.setGxDeviceId(deviceId);
                  sgReportVO.setGxStepId(sgGxStepDO.getId());
                  sgReportVO.setProframId(firstReport.getProframId());
               }else {
                  throw new ServiceException("请完成上一步工序!");
               }
            }
         }else {
            if (stepId!=null) {
               SgGxStepDO sg = sgGxStepMapper.selectOne(wrapperss.eq("id", stepId));
               if (sg.getGxStepNum().equals("01")) {
                  sgReportVO.setGxDeviceId(deviceId);
                  sgReportVO.setGxStepId(sg.getId());
                  sgReportVO.setProframId(sgProgressReportMapper.selectProframId(deviceId));
               }else {
                  throw new ServiceException("第一工序未进行审批!");
               }
            }
            sgReportVO.setProframId(sgProgressReportMapper.selectProframId(deviceId));
            sgReportVO.setGxStepId(sgGxStepMapper.queryStepList(deviceId.toString()).get(0).getId());
            sgReportVO.setGxDeviceId(deviceId);
         }
      }
      sgReportVO.setGxDeviceId(deviceId);
      sgReportVO.setGxStepId(stepId);
      sgReportVO.setProframId(sgProgressReportMapper.selectProframId(deviceId));
      return sgReportVO;
   }