From 44e258e4f5370a14e92e3c15bccd32e1e4d7280c Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 02 四月 2026 23:17:25 +0800
Subject: [PATCH] #路径清理
---
src/main/java/com/zy/asrs/task/WrkMastScheduler.java | 172 +++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 149 insertions(+), 23 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/WrkMastScheduler.java b/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
index 707d3b9..81946e9 100644
--- a/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WrkMastScheduler.java
@@ -1,19 +1,21 @@
package com.zy.asrs.task;
import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zy.asrs.domain.enums.NotifyMsgType;
+import com.zy.asrs.entity.BasStation;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.service.WrkMastLogService;
-import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.service.*;
import com.zy.asrs.utils.NotifyUtils;
+import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.LocStsType;
+import com.zy.core.enums.SlaveType;
import com.zy.core.enums.WrkIoType;
import com.zy.core.enums.WrkStsType;
+import com.zy.core.thread.StationThread;
+import com.zy.core.utils.StationOperateProcessUtils;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@@ -26,24 +28,44 @@
@Slf4j
public class WrkMastScheduler {
- @Autowired
- private WrkMastService wrkMastService;
- @Autowired
- private WrkMastLogService wrkMastLogService;
- @Autowired
- private LocMastService locMastService;
- @Autowired
- private NotifyUtils notifyUtils;
+ private final WrkMastService wrkMastService;
+ private final WrkMastLogService wrkMastLogService;
+ private final WrkAnalysisService wrkAnalysisService;
+ private final LocMastService locMastService;
+ private final NotifyUtils notifyUtils;
+ private final StationOperateProcessUtils stationOperateProcessUtils;
+ private final BasStationService basStationService;
+
+ public WrkMastScheduler(WrkMastService wrkMastService,
+ WrkMastLogService wrkMastLogService,
+ WrkAnalysisService wrkAnalysisService,
+ LocMastService locMastService,
+ NotifyUtils notifyUtils,
+ StationOperateProcessUtils stationOperateProcessUtils,
+ BasStationService basStationService
+ ) {
+ this.wrkMastService = wrkMastService;
+ this.wrkMastLogService = wrkMastLogService;
+ this.wrkAnalysisService = wrkAnalysisService;
+ this.locMastService = locMastService;
+ this.notifyUtils = notifyUtils;
+ this.stationOperateProcessUtils = stationOperateProcessUtils;
+ this.basStationService = basStationService;
+ }
@Scheduled(cron = "0/1 * * * * ? ")
@Transactional
public void executeIn(){
- List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_INBOUND.sts));
+ List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_INBOUND.sts));
if (wrkMasts.isEmpty()) {
return;
}
for (WrkMast wrkMast : wrkMasts) {
+ Integer taskNo = wrkMast.getWrkNo();
+ Integer sourceStaNo = wrkMast.getSourceStaNo();
+ Integer staNo = wrkMast.getStaNo();
+
String locNo = wrkMast.getLocNo();
LocMast locMast = locMastService.queryByLoc(locNo);
if (locMast == null) {
@@ -68,26 +90,43 @@
// 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
+ } else {
+ wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast));
}
// 鍒犻櫎宸ヤ綔涓绘。
- if (!wrkMastService.deleteById(wrkMast)) {
+ if (!wrkMastService.removeById(wrkMast.getWrkNo())) {
log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
}
//涓婃姤
notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_COMPLETE, JSON.toJSONString(wrkMast));
+
+ //娓呯悊璺緞
+ List<BasStation> basStations = basStationService.list(new QueryWrapper<BasStation>().in("station_id", sourceStaNo, staNo));
+ if (!basStations.isEmpty()) {
+ for (BasStation basStation : basStations) {
+ StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, basStation.getDeviceNo());
+ if (stationThread != null) {
+ stationOperateProcessUtils.attemptClearTaskPath(stationThread, taskNo);
+ }
+ }
+ }
}
}
@Scheduled(cron = "0/1 * * * * ? ")
@Transactional
public void executeOut(){
- List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_OUTBOUND.sts));
+ List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_OUTBOUND.sts));
if (wrkMasts.isEmpty()) {
return;
}
for (WrkMast wrkMast : wrkMasts) {
+ Integer taskNo = wrkMast.getWrkNo();
+ Integer sourceStaNo = wrkMast.getSourceStaNo();
+ Integer staNo = wrkMast.getStaNo();
+
String locNo = wrkMast.getSourceLocNo();
LocMast locMast = locMastService.queryByLoc(locNo);
if (locMast == null) {
@@ -95,8 +134,8 @@
continue;
}
- if (!locMast.getLocSts().equals("R")) {
- log.info("[workNo={}]搴撲綅鐘舵�佷笉澶勪簬R", wrkMast.getWrkNo());
+ if (!(locMast.getLocSts().equals("R") || locMast.getLocSts().equals("O"))) {
+ log.info("[workNo={}]搴撲綅鐘舵�佷笉澶勪簬R or O", wrkMast.getWrkNo());
continue;
}
@@ -112,21 +151,34 @@
// 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
+ } else {
+ wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast));
}
// 鍒犻櫎宸ヤ綔涓绘。
- if (!wrkMastService.deleteById(wrkMast)) {
+ if (!wrkMastService.removeById(wrkMast.getWrkNo())) {
log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
}
//涓婃姤
notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_COMPLETE, JSON.toJSONString(wrkMast));
+
+ //娓呯悊璺緞
+ List<BasStation> basStations = basStationService.list(new QueryWrapper<BasStation>().in("station_id", sourceStaNo, staNo));
+ if (!basStations.isEmpty()) {
+ for (BasStation basStation : basStations) {
+ StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, basStation.getDeviceNo());
+ if (stationThread != null) {
+ stationOperateProcessUtils.attemptClearTaskPath(stationThread, taskNo);
+ }
+ }
+ }
}
}
@Scheduled(cron = "0/1 * * * * ? ")
@Transactional
public void executeLocMove(){
- List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_LOC_MOVE.sts));
+ List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_LOC_MOVE.sts));
if (wrkMasts.isEmpty()) {
return;
}
@@ -177,9 +229,11 @@
// 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
+ } else {
+ wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast));
}
// 鍒犻櫎宸ヤ綔涓绘。
- if (!wrkMastService.deleteById(wrkMast)) {
+ if (!wrkMastService.removeById(wrkMast.getWrkNo())) {
log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
}
@@ -190,8 +244,29 @@
@Scheduled(cron = "0/1 * * * * ? ")
@Transactional
+ public void executeCrnMove(){
+ List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_CRN_MOVE.sts));
+ if (wrkMasts.isEmpty()) {
+ return;
+ }
+
+ for (WrkMast wrkMast : wrkMasts) {
+ if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+ log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
+ } else {
+ wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast));
+ }
+
+ if (!wrkMastService.removeById(wrkMast.getWrkNo())) {
+ log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
+ }
+ }
+ }
+
+ @Scheduled(cron = "0/1 * * * * ? ")
+ @Transactional
public void executeCancelTask(){
- List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("mk", "taskCancel"));
+ List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>().eq("mk", "taskCancel"));
if (wrkMasts.isEmpty()) {
return;
}
@@ -200,9 +275,11 @@
// 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo());
+ } else {
+ wrkAnalysisService.finishTask(wrkMast, resolveFinishTime(wrkMast));
}
// 鍒犻櫎宸ヤ綔涓绘。
- if (!wrkMastService.deleteById(wrkMast)) {
+ if (!wrkMastService.removeById(wrkMast.getWrkNo())) {
log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo());
}
@@ -237,4 +314,53 @@
}
}
+ @Scheduled(cron = "0/1 * * * * ? ")
+ @Transactional
+ public void processOutStationRun(){
+ List<WrkMast> wrkMasts = wrkMastService.list(new QueryWrapper<WrkMast>().eq("wrk_sts", WrkStsType.STATION_RUN.sts));
+ if (wrkMasts.isEmpty()) {
+ return;
+ }
+
+ for (WrkMast wrkMast : wrkMasts) {
+ String locNo = wrkMast.getSourceLocNo();
+ LocMast locMast = locMastService.queryByLoc(locNo);
+ if (locMast == null) {
+ log.info("[workNo={}]搴撲綅涓嶅瓨鍦�", wrkMast.getWrkNo());
+ continue;
+ }
+
+ if (locMast.getLocSts().equals("O")) {
+ continue;
+ }
+
+ if (!locMast.getLocSts().equals("R")) {
+ log.info("[workNo={}]搴撲綅鐘舵�佷笉澶勪簬R", wrkMast.getWrkNo());
+ continue;
+ }
+
+ locMast.setLocSts("O");
+ locMast.setBarcode("");
+ locMast.setModiTime(new Date());
+ boolean result = locMastService.updateById(locMast);
+ if (!result) {
+ log.info("[workNo={}]搴撲綅鐘舵�丱鏇存柊澶辫触", wrkMast.getWrkNo());
+ continue;
+ }
+ }
+ }
+
+ private Date resolveFinishTime(WrkMast wrkMast) {
+ if (wrkMast == null) {
+ return new Date();
+ }
+ if (wrkMast.getModiTime() != null) {
+ return wrkMast.getModiTime();
+ }
+ if (wrkMast.getIoTime() != null) {
+ return wrkMast.getIoTime();
+ }
+ return new Date();
+ }
+
}
--
Gitblit v1.9.1