From 4790119bedab62ce14d25e89b7ec28668383d027 Mon Sep 17 00:00:00 2001
From: gong <328255720@qq.com>
Date: Mon, 17 Jun 2024 16:22:31 +0800
Subject: [PATCH] 加个异步处理项目和设备的状态
---
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java | 101 ++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 92 insertions(+), 9 deletions(-)
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
index 6349b65..6daf72e 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
@@ -6,6 +6,7 @@
import cn.gistack.sm.sg.VO.SgProgressReportVO;
import cn.gistack.sm.sg.mapper.*;
import cn.gistack.sm.sg.service.SgProgressReportService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
@@ -21,6 +22,8 @@
import java.util.Date;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
import java.util.stream.Collectors;
/**
@@ -51,6 +54,11 @@
@Autowired
private SgGxStepMapper sgGxStepMapper;
+
+ @Autowired
+ private SgProjectInfoMapper sgProjectInfoMapper;
+
+ ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
@Override
public IPage<SgProgressReportVO> queryPageList(IPage<SgProgressReportVO> page, ProjectSearchDTO searchDTO) {
List<SgProgressReportVO> list = sgProgressReportMapper.queryPageList(page,searchDTO);
@@ -62,14 +70,14 @@
public void add(SgProgressReportDO sgProgressReportDO) {
Long gxDeviceId = sgProgressReportDO.getGxDeviceId();
Long gxStepId = sgProgressReportDO.getGxStepId();
- List<SgGxStepDO> list= sgGxStepMapper.selectByGxInfoId(gxDeviceId);
+ List<SgGxStepDO> list = sgGxStepMapper.selectByGxInfoId(gxDeviceId);
SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(gxDeviceId);
for (SgGxStepDO gxStepDO : list) {
- if (Integer.parseInt(sgGxStepDO.getGxStepNum()) - Integer.parseInt(gxStepDO.getGxStepNum())==1 ){
+ 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);
- if (one!=null && one.getStatus()!=3){
- throw new ServiceException("请先完成"+gxStepDO.getGxStepName()+"的审批!");
+ if (one != null && one.getStatus() != 3) {
+ throw new ServiceException("请先完成" + gxStepDO.getGxStepName() + "的审批!");
}
}
}
@@ -77,21 +85,33 @@
sgProgressReportDO.setStatus(0);
sgProgressReportDO.setReportUser(userId);
sgProgressReportMapper.insert(sgProgressReportDO);
- String deviceType = sgDeviceMapper.selectById(gxDeviceId).getDeviceType();
+ SgDeviceDO sgDeviceDO = sgDeviceMapper.selectById(gxDeviceId);
+ String deviceType = sgDeviceDO.getDeviceType();
List<SgGxConfigDO> sgGxConfigDOS = new LambdaQueryChainWrapper<>(sgGxConfigMapper)
- .eq(SgGxConfigDO::getGxDeviceType,deviceType).eq(SgGxConfigDO::getGxStepId,gxStepId).list();
+ .eq(SgGxConfigDO::getGxDeviceType, deviceType).eq(SgGxConfigDO::getGxStepId, gxStepId).list();
List<String> roIds = sgGxConfigDOS.stream().map(SgGxConfigDO::getRoleId).collect(Collectors.toList());
List<SgProjectPersonConfigDO> personConfigDOS = new LambdaQueryChainWrapper<>(sgProjectPersonConfigMapper).in(SgProjectPersonConfigDO::getRoldId, roIds).list();
Map<Long, Long> userMap = personConfigDOS.stream().collect(Collectors.toMap(SgProjectPersonConfigDO::getRoldId, SgProjectPersonConfigDO::getUserId));
Date now = DateUtil.now();
- sgReportUserMapper.insert(SgReportUserDO.builder().reportId(sgProgressReportDO.getId()).userId(sgProgressReportDO.getReportUser()).approvalContent("提交审批").approvalStatus(0).approvalOrder(0).approvalTime(now).build()) ;
+ sgReportUserMapper.insert(SgReportUserDO.builder().reportId(sgProgressReportDO.getId()).userId(sgProgressReportDO.getReportUser()).approvalContent("提交审批").approvalStatus(0).approvalOrder(0).approvalTime(now).build());
for (SgGxConfigDO sgGxConfigDO : sgGxConfigDOS) {
sgGxConfigDO.setUser(userMap.get(Long.parseLong(sgGxConfigDO.getRoleId())));
sgReportUserMapper.insert(SgReportUserDO.builder().reportId(sgProgressReportDO.getId()).userId(sgGxConfigDO.getUser()).approvalStatus(0).approvalOrder(sgGxConfigDO.getSgOrder()).build());
- if (sgGxConfigDO.getSgOrder()==1){
+ if (sgGxConfigDO.getSgOrder() == 1) {
sgProgressReportDO.setAuditPerson(String.valueOf(sgGxConfigDO.getUser()));
sgProgressReportMapper.updateById(sgProgressReportDO);
}
+ }
+
+ //加个项目及设备的状态判断 方便统计计算
+ if (sgDeviceDO != null && sgDeviceDO.getStatus() == 0) {
+ sgDeviceDO.setStatus(1);
+ sgDeviceMapper.updateById(sgDeviceDO);
+ }
+ SgProjectInfoDO sgProjectInfoDO = sgProjectInfoMapper.selectById(sgProgressReportDO.getProframId());
+ if (sgProjectInfoDO != null && sgProjectInfoDO.getStatus() == 0) {
+ sgDeviceDO.setStatus(1);
+ sgProjectInfoMapper.updateById(sgProjectInfoDO);
}
}
@@ -121,7 +141,20 @@
if (approvalDTO.getStatus()==1){
userUpdate.set(SgReportUserDO::getApprovalStatus,1).update();
if (sgReportUserDO.getId()==list.get(0).getId()){
- updateChainWrapper.set(SgProgressReportDO::getStatus,3).set(SgProgressReportDO::getAuditPerson,null).update();
+ updateChainWrapper.set(SgProgressReportDO::getStatus,2).set(SgProgressReportDO::getAuditPerson,null).update();
+
+
+ //工序审核完成后 进行项目和设备状态的判断
+
+ cachedThreadPool.execute(new Runnable(){
+ @Override
+ public void run(){
+ setProgramAndDeviceStatus();
+ }
+ });
+
+
+
}else {
SgReportUserDO nextUser = list.stream().filter(s -> s.getApprovalOrder()==sgReportUserDO.getApprovalOrder()+1).findFirst().get();
updateChainWrapper.set(SgProgressReportDO::getStatus,1).set(SgProgressReportDO::getAuditPerson,nextUser.getUserId()).update();
@@ -153,5 +186,55 @@
}
updateChainWrapper.update();
}
+
+
+ }
+
+
+ public void setProgramAndDeviceStatus(){
+ //查询所有的项目
+ List<SgProjectInfoDO> sgProjectInfoDOS = sgProjectInfoMapper.selectList(null);
+
+ 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());
+
+ if(sgDeviceGxStepDOs!=null){
+ int countStatus=0;
+ for (SgDeviceGxStepDO sgDeviceGxStepDO: sgDeviceGxStepDOs){
+ countStatus=+sgDeviceGxStepDO.getStatus();
+
+ }
+ int size = sgDeviceGxStepDOs.size();
+ if((size*2)/countStatus==1){
+ //如果设备下全部工序审核完成
+ sgDeviceDO.setStatus(2);
+ sgDeviceMapper.updateById(sgDeviceDO);
+ deviceFinishCount++;
+ }
+
+
+ }
+ }
+
+ if(deviceFinishCount==sgDeviceDOS.size()){
+ //如果项目下的设备下全部完成
+ project.setStatus(2);
+ sgProjectInfoMapper.updateById(project);
+ }
+ }
+
+
}
}
+
+
+
--
Gitblit v1.9.3