Junjie
2024-06-13 11da5829433e788d8f901ee5cd910d5923f0806a
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java
@@ -11,6 +11,7 @@
import com.zy.asrs.wcs.core.entity.Task;
import com.zy.asrs.wcs.core.entity.TaskCtg;
import com.zy.asrs.wcs.core.model.enums.DeviceCtgType;
import com.zy.asrs.wcs.core.model.enums.TaskCtgType;
import com.zy.asrs.wcs.core.model.enums.TaskStsType;
import com.zy.asrs.wcs.core.service.LocService;
import com.zy.asrs.wcs.core.service.TaskCtgService;
@@ -23,6 +24,8 @@
import com.zy.asrs.wcs.rcs.service.DeviceService;
import com.zy.asrs.wcs.rcs.thread.ShuttleThread;
import com.zy.asrs.wcs.system.controller.BaseController;
import com.zy.asrs.wcs.system.entity.Dict;
import com.zy.asrs.wcs.system.service.DictService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -49,13 +52,15 @@
    private DeviceService deviceService;
    @Autowired
    private LocService locService;
    @Autowired
    private DictService dictService;
    //生成入库任务
    @PostMapping("/createInTask")
    public R createInTask(@RequestBody CreateInTaskParam param) {
        //获取入库任务类型
        TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>()
                .eq(TaskCtg::getFlag, "IN")
                .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.IN))
                .eq(TaskCtg::getStatus, 1));
        if (taskCtg == null) {
            return R.error("任务类型异常");
@@ -66,7 +71,14 @@
            return R.error("库位号不存在");
        }
        if (!loc.getLocStsFlag().equals("O")) {
        //获取严格模式参数
        boolean mapStrict = true;//默认严格模式
        Dict dict = dictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getFlag, "shuttleMapStrict"));
        if (dict != null) {
            mapStrict = Boolean.parseBoolean(dict.getValue());
        }
        if (mapStrict && !loc.getLocStsFlag().equals("O")) {
            return R.error("库位状态不满足入库条件");
        }
@@ -106,7 +118,7 @@
    public R createOutTask(@RequestBody CreateOutTaskParam param) {
        //获取出库任务类型
        TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>()
                .eq(TaskCtg::getFlag, "OUT")
                .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.OUT))
                .eq(TaskCtg::getStatus, 1));
        if (taskCtg == null) {
            return R.error("任务类型异常");
@@ -117,7 +129,14 @@
            return R.error("库位号不存在");
        }
        if (!loc.getLocStsFlag().equals("F")) {
        //获取严格模式参数
        boolean mapStrict = true;//默认严格模式
        Dict dict = dictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getFlag, "shuttleMapStrict"));
        if (dict != null) {
            mapStrict = Boolean.parseBoolean(dict.getValue());
        }
        if (mapStrict && !loc.getLocStsFlag().equals("F")) {
            return R.error("库位状态不满足出库条件");
        }
@@ -157,7 +176,7 @@
    public R createManualTakeTask(@RequestBody CreateManualTakeTaskParam param) {
        //获取手动任务类型
        TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>()
                .eq(TaskCtg::getFlag, "MANUAL")
                .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.MANUAL))
                .eq(TaskCtg::getStatus, 1));
        if (taskCtg == null) {
            return R.error("任务类型异常");
@@ -199,7 +218,7 @@
    public R createMoveTask(@RequestBody CreateMoveTaskParam param) {
        //获取出库任务类型
        TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>()
                .eq(TaskCtg::getFlag, "MOVE")
                .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.MOVE))
                .eq(TaskCtg::getStatus, 1));
        if (taskCtg == null) {
            return R.error("任务类型异常");
@@ -218,7 +237,10 @@
            return R.error("穿梭车不在线");
        }
        ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
        if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(param.getDestSite())) {
        if (shuttleProtocol == null) {
            return R.error("穿梭车不在线");
        }
        if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(param.getDestLoc())) {
            return R.error("穿梭车和目标位置不在同一楼层");
        }
@@ -236,7 +258,7 @@
        task.setPriority(priority);
        task.setOriginSite(null);
        task.setOriginLoc(null);
        task.setDestSite(param.getDestSite());
        task.setDestSite(param.getDestLoc());
        task.setDestLoc(null);
        task.setIoTime(new Date());
        task.setStartTime(new Date());