Junjie
23 小时以前 2825b82e8a4eca618ab3c2306de2db74a2ecbd1d
#任务取消优化
3个文件已修改
77 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/WrkMastController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -27,12 +27,15 @@
import com.zy.core.thread.StationThread;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
import com.zy.system.service.HighPrivilegeGrantService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import jakarta.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
@@ -60,6 +63,10 @@
    private ConfigService configService;
    @Autowired
    private DeviceConfigService deviceConfigService;
    @Autowired
    private HighPrivilegeGrantService highPrivilegeGrantService;
    @Autowired
    private HttpServletRequest request;
    // 移库任务
    @PostMapping("/createLocMoveTask")
@@ -137,7 +144,13 @@
        if (param == null) {
            return R.error("参数不能为空");
        }
        boolean completeTask = commonService.cancelTask(param);
        boolean directCancel = false;
        try {
            highPrivilegeGrantService.assertGranted(request.getHeader("token"), "取消任务");
            directCancel = true;
        } catch (CoolException ignore) {
        }
        boolean completeTask = commonService.cancelTask(param, directCancel);
        if (completeTask) {
            return R.ok();
        }
@@ -163,7 +176,13 @@
        if (param == null) {
            return R.error("参数不能为空");
        }
        CancelTaskBatchResult result = commonService.cancelTaskBatch(param);
        boolean directCancel = false;
        try {
            highPrivilegeGrantService.assertGranted(request.getHeader("token"), "取消任务");
            directCancel = true;
        } catch (CoolException ignore) {
        }
        CancelTaskBatchResult result = commonService.cancelTaskBatch(param, directCancel);
        return R.ok().add(result);
    }
src/main/java/com/zy/asrs/controller/WrkMastController.java
@@ -90,7 +90,7 @@
            return R.error("参数不能为空");
        }
        highPrivilegeGrantService.assertGranted(request.getHeader("token"), "取消任务");
        return commonService.cancelTask(param) ? R.ok() : R.error("任务取消失败");
        return commonService.cancelTask(param, true) ? R.ok() : R.error("任务取消失败");
    }
    private <T> void convert(Map<String, Object> map, QueryWrapper<T> wrapper){
src/main/java/com/zy/common/service/CommonService.java
@@ -124,7 +124,7 @@
        return true;
    }
    public boolean cancelTask(CancelTaskParam param) {
    public boolean cancelTask(CancelTaskParam param, boolean allowDirectCancel) {
        WrkMast wrkMast = null;
        Integer wrkNo = param.getWrkNo();
        String taskNo = param.getTaskNo();//wms任务号
@@ -141,24 +141,42 @@
            throw new CoolException("任务不存在");
        }
        boolean cancelSuccess = false;
        if (wrkMast.getIoType().equals(WrkIoType.IN.id) && !wrkMast.getWrkSts().equals(WrkStsType.NEW_INBOUND.sts)) {
            cancelSuccess = true;
        } else if (wrkMast.getIoType().equals(WrkIoType.OUT.id) && !wrkMast.getWrkSts().equals(WrkStsType.NEW_OUTBOUND.sts)) {
            cancelSuccess = true;
        } else if (wrkMast.getIoType().equals(WrkIoType.LOC_MOVE.id) && !wrkMast.getWrkSts().equals(WrkStsType.NEW_LOC_MOVE.sts)) {
            cancelSuccess = true;
        } else if (wrkMast.getIoType().equals(WrkIoType.CRN_MOVE.id) && !wrkMast.getWrkSts().equals(WrkStsType.NEW_CRN_MOVE.sts)) {
            cancelSuccess = true;
        if (allowDirectCancel) {
            boolean updated = wrkMastService.update(null, new UpdateWrapper<WrkMast>()
                    .eq("wrk_no", wrkMast.getWrkNo())
                    .set("mk", "taskCancel")
                    .set("modi_time", new Date()));
            if (!updated) {
                throw new CoolException("任务取消失败");
            }
            return true;
        }
        if (cancelSuccess) {
        Long expectedWrkSts;
        if (wrkMast.getIoType().equals(WrkIoType.IN.id)) {
            expectedWrkSts = WrkStsType.NEW_INBOUND.sts;
        } else if (wrkMast.getIoType().equals(WrkIoType.OUT.id)) {
            expectedWrkSts = WrkStsType.NEW_OUTBOUND.sts;
        } else if (wrkMast.getIoType().equals(WrkIoType.LOC_MOVE.id)) {
            expectedWrkSts = WrkStsType.NEW_LOC_MOVE.sts;
        } else if (wrkMast.getIoType().equals(WrkIoType.CRN_MOVE.id)) {
            expectedWrkSts = WrkStsType.NEW_CRN_MOVE.sts;
        } else {
            throw new CoolException("任务类型不支持取消");
        }
        if (!expectedWrkSts.equals(wrkMast.getWrkSts())) {
            throw new CoolException("任务已执行,取消失败");
        }
        wrkMast.setMk("taskCancel");
        wrkMast.setModiTime(new Date());
        wrkMastService.updateById(wrkMast);
        boolean updated = wrkMastService.update(null, new UpdateWrapper<WrkMast>()
                .eq("wrk_no", wrkMast.getWrkNo())
                .eq("wrk_sts", expectedWrkSts)
                .set("mk", "taskCancel")
                .set("modi_time", new Date()));
        if (!updated) {
            throw new CoolException("任务状态已变化,取消失败");
        }
        return true;
    }
@@ -264,6 +282,10 @@
    }
    public CancelTaskBatchResult cancelTaskBatch(CancelTaskBatchParam param) {
        return cancelTaskBatch(param, false);
    }
    public CancelTaskBatchResult cancelTaskBatch(CancelTaskBatchParam param, boolean allowDirectCancel) {
        if (param == null) {
            throw new CoolException("参数不能为空");
        }
@@ -283,7 +305,7 @@
            boolean cancelStatus = false;
            try {
                cancelStatus = cancelTask(cancelTaskParam);
                cancelStatus = cancelTask(cancelTaskParam, allowDirectCancel);
            } catch (Exception e) {
            }