소스 검색

aps-每天定时任务检查所有订单评审状态=已发布计划的订单,如果订单生产状态=已完工,则更新订单评审状态=已完工关闭(个人工作台的评审消息自动清除)

sucheng 10 달 전
부모
커밋
12c8b89cc4

+ 3 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsProductionOrderService.java

@@ -35,4 +35,7 @@ public interface ApsProductionOrderService extends IService<ApsProductionOrderDo
     R saveHistoryInfo(String id);
 
     R haveBeChanged(OrderHaveBeChangedReq req);
+
+    R closeOrder();
+
 }

+ 51 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProductionOrderServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bscommon.sys.dao.*;
 import com.rongwei.bscommon.sys.service.*;
@@ -22,6 +23,8 @@ import com.rongwei.rwcommonentity.commonservers.domain.SysMindMappingDo;
 import com.rongwei.safecommon.fegin.CXCommonFeginClient;
 import com.rongwei.safecommon.utils.CXCommonUtils;
 import com.rongwei.safecommon.utils.SaveConstans;
+import com.rongwei.wfentity.sys.RunTaskDo;
+import com.rongwei.wfserver.wfcommon.sys.service.RunTaskService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -106,6 +109,8 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
     private NewSysMindMappingDao newSysMindMappingDao;
     @Autowired
     private ApsProcessOperationProcessEquService apsProcessOperationProcessEquService;
+    @Autowired
+    private RunTaskService runTaskService;
 
 
     public static final String ERROR_MSG = "%s上诉订单的排程交货期大于承诺交货期";
@@ -800,6 +805,52 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
         return R.ok();
     }
 
+    @Override
+    @Transactional
+    public R closeOrder() {
+        //查询所有 订单评审状态=已发布计划,生产状态=已完工 的订单
+        List<ApsProductionOrderDo> productionOrderDoList = this.list(new QueryWrapper<ApsProductionOrderDo>().lambda()
+                .eq(ApsProductionOrderDo::getAuditstatus, "已发布计划")
+                .eq(ApsProductionOrderDo::getProductionstatus, "50"));
+        if (ObjectUtil.isEmpty(productionOrderDoList)) {
+            return R.ok();
+        }
+
+        //需要更新的流程实例ID集合
+        List<String> processInstIdList = productionOrderDoList.stream().map(ApsProductionOrderDo::getProcessinstid).collect(Collectors.toList());
+
+        if (ObjectUtil.isEmpty(processInstIdList)) {
+            return R.ok();
+        }
+
+        List<RunTaskDo> needUpdateList = new LinkedList<>();
+        //更新所有 流程节点(wf_run_task)的审批状态为30,结束流程,形成闭环
+        for (String processInstId : processInstIdList) {
+            //获取最新的一个节点
+            RunTaskDo one = runTaskService.getOne(new QueryWrapper<RunTaskDo>().lambda()
+                    .eq(RunTaskDo::getProcessinstid, processInstId)
+                    .eq(RunTaskDo::getTaskname, "生产计划员5")
+                    .in(RunTaskDo::getTaskstatus, Arrays.asList("10", "20"))
+                    .orderByDesc(RunTaskDo::getModifydate).last("limit 1"));
+
+            RunTaskDo needUpdate = new RunTaskDo();
+            needUpdate.setId(one.getId());
+            needUpdate.setAssignee("8672bf72ab274bec83052868ae336b38");//系统管理员
+            needUpdate.setTaskstatus("30");
+            needUpdateList.add(needUpdate);
+        }
+
+        runTaskService.updateBatchById(needUpdateList);
+
+        //更新所有订单的审批状态为 已完工关闭
+        List<String> orderIdList = productionOrderDoList.stream().map(ApsProductionOrderDo::getId).collect(Collectors.toList());
+        this.update(new UpdateWrapper<ApsProductionOrderDo>().lambda()
+                .set(ApsProductionOrderDo::getAuditstatus, "已完工关闭")
+                .in(ApsProductionOrderDo::getId, orderIdList));
+
+        return R.ok();
+    }
+
 }
 
 

+ 11 - 0
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsProductionOrderController.java

@@ -9,6 +9,7 @@ import com.rongwei.rwcommon.base.R;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -143,4 +144,14 @@ public class ApsProductionOrderController {
     public R haveBeChanged(@RequestBody OrderHaveBeChangedReq req) {
         return apsProductionOrderService.haveBeChanged(req);
     }
+
+    /**
+     * 每天凌晨1点执行一次
+     * 每天定时任务检查所有订单评审状态=已发布计划的订单,如果订单生产状态=已完工,则更新订单评审状态=已完工关闭(个人工作台的评审消息自动清除)
+     */
+    @Scheduled(cron = "0 1 * * *")
+    @PostMapping("/closeOrder")
+    public R closeOrder(){
+        return apsProductionOrderService.closeOrder();
+    }
 }