gong
2024-06-18 af317b0050bb4eba28741326220129d49a9822f1
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
@@ -18,10 +18,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
@@ -72,10 +69,15 @@
      Long gxStepId = sgProgressReportDO.getGxStepId();
      List<SgGxStepDO> list = sgGxStepMapper.selectByGxInfoId(gxDeviceId);
      SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(gxStepId);
      LambdaQueryChainWrapper<SgProgressReportDO> wrapper = new LambdaQueryChainWrapper<>(sgProgressReportMapper)
         .eq(SgProgressReportDO::getGxStepId, gxStepId).eq(SgProgressReportDO::getGxDeviceId,gxDeviceId);
      if ( sgProgressReportMapper.selectOne(wrapper)!=null){
         throw new ServiceException("此工序已存在审批!");
      }
      for (SgGxStepDO gxStepDO : list) {
         if (Integer.parseInt(sgGxStepDO.getGxStepNum()) - Integer.parseInt(gxStepDO.getGxStepNum()) == 1) {
            LambdaQueryChainWrapper<SgProgressReportDO> wrapper = new LambdaQueryChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getGxStepId, gxStepDO.getId());
            SgProgressReportDO one = sgProgressReportMapper.selectOne(wrapper);
            LambdaQueryChainWrapper<SgProgressReportDO> wrapper1 = new LambdaQueryChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getGxStepId, gxStepDO.getId());
            SgProgressReportDO one = sgProgressReportMapper.selectOne(wrapper1);
            if (one != null && one.getStatus() != 3) {
               throw new ServiceException("请先完成" + gxStepDO.getGxStepName() + "的审批!");
            }
@@ -160,7 +162,7 @@
            updateChainWrapper.set(SgProgressReportDO::getStatus,1).set(SgProgressReportDO::getAuditPerson,nextUser.getUserId()).update();
         }
      }else {
         updateChainWrapper.set(SgProgressReportDO::getStatus,0);
         updateChainWrapper.set(SgProgressReportDO::getStatus,3);
         List<SgReportUserDO> sgReportUserDOS = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId, id).eq(SgReportUserDO::getIsHis,0)
            .orderByAsc(SgReportUserDO::getApprovalOrder).list()
//            .stream().distinct()
@@ -194,45 +196,72 @@
   public void  setProgramAndDeviceStatus(){
      //查询所有的项目
      List<SgProjectInfoDO> sgProjectInfoDOS = sgProjectInfoMapper.selectList(null);
      if(sgProjectInfoDOS!=null&& !sgProjectInfoDOS.isEmpty()) {
         for (SgProjectInfoDO project : sgProjectInfoDOS) {
            QueryWrapper<SgDeviceDO> queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("program_id", project.getId());
            //所有设备
            List<SgDeviceDO> sgDeviceDOS = sgDeviceMapper.selectList(queryWrapper);
            //项目下完成的设备数
            int deviceFinishCount = 0;
            if(!sgProjectInfoDOS.isEmpty()) {
               for (SgDeviceDO sgDeviceDO : sgDeviceDOS) {
      for (SgProjectInfoDO project: sgProjectInfoDOS){
         QueryWrapper<SgDeviceDO> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("program_id",project.getId());
         //所有设备
         List<SgDeviceDO> sgDeviceDOS = sgDeviceMapper.selectList(queryWrapper);
         //项目下完成的设备数
         int deviceFinishCount=0;
         for (SgDeviceDO sgDeviceDO: sgDeviceDOS){
                  //设备的工序
                  List<SgDeviceGxStepDO> sgDeviceGxStepDOs = sgGxStepMapper.getDeviceGXList(sgDeviceDO.getId());
            //设备的工序
            List<SgDeviceGxStepDO> sgDeviceGxStepDOs = sgGxStepMapper.getDeviceGXList(sgDeviceDO.getId());
                  if (sgDeviceGxStepDOs != null) {
                     int countStatus = 0;
                     for (SgDeviceGxStepDO sgDeviceGxStepDO : sgDeviceGxStepDOs) {
                        countStatus = +sgDeviceGxStepDO.getStatus();
            if(sgDeviceGxStepDOs!=null){
               int countStatus=0;
               for (SgDeviceGxStepDO sgDeviceGxStepDO: sgDeviceGxStepDOs){
                  countStatus=+sgDeviceGxStepDO.getStatus();
                     }
                     int size = sgDeviceGxStepDOs.size();
                     if (countStatus != 0 && (size * 2) / countStatus == 1) {
                        //如果设备下全部工序审核完成
                        sgDeviceDO.setStatus(2);
                        sgDeviceMapper.updateById(sgDeviceDO);
                        deviceFinishCount++;
                     }
                  }
               }
               int size = sgDeviceGxStepDOs.size();
               if(countStatus!=0&&(size*2)/countStatus==1){
                  //如果设备下全部工序审核完成
                  sgDeviceDO.setStatus(2);
                  sgDeviceMapper.updateById(sgDeviceDO);
                  deviceFinishCount++;
               if (deviceFinishCount == sgDeviceDOS.size()) {
                  //如果项目下的设备下全部完成
                  project.setStatus(2);
                  sgProjectInfoMapper.updateById(project);
               }
            }
         }
         if(deviceFinishCount==sgDeviceDOS.size()){
            //如果项目下的设备下全部完成
            project.setStatus(2);
            sgProjectInfoMapper.updateById(project);
         }
      }
   }
   @Override
   public void updateReport(SgProgressReportDO sgProgressReportDO) {
      sgProgressReportMapper.updateById(sgProgressReportDO);
   }
   @Override
   public List<SgProgressReportVO> queryList(ProjectSearchDTO searchDTO) {
      Long userId = AuthUtil.getUserId();
      searchDTO.setUserId(userId);
      List<SgProgressReportVO> list = sgProgressReportMapper.queryList(searchDTO);
      return list;
   }
   @Override
   public Map<String, Long> countList(ProjectSearchDTO searchDTO) {
      Long userId = AuthUtil.getUserId();
      searchDTO.setUserId(userId);
      Long pending = sgProgressReportMapper.countList(searchDTO);
      Long over = sgProgressReportMapper.countList(searchDTO);
      Map<String, Long> map = new HashMap<>();
      map.put("pending",pending);
      map.put("over",over);
      return map;
   }
}