From d56b8093dc9e3e75f8efe1a0f1aa6d821c9c3dfb Mon Sep 17 00:00:00 2001 From: Junjie <xjj@123> Date: 星期二, 15 四月 2025 13:30:35 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java | 422 +--------------------------------------------------- 1 files changed, 12 insertions(+), 410 deletions(-) diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java index 0dfc21b..455181d 100644 --- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java +++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java @@ -1,37 +1,14 @@ package com.zy.asrs.wcs.core.controller; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.zy.asrs.framework.common.Cools; import com.zy.asrs.framework.common.R; -import com.zy.asrs.framework.common.SnowflakeIdWorker; -import com.zy.asrs.wcs.core.domain.dto.BasLiftStaDto; import com.zy.asrs.wcs.core.domain.param.*; -import com.zy.asrs.wcs.core.entity.*; -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.*; -import com.zy.asrs.wcs.core.utils.Utils; -import com.zy.asrs.wcs.rcs.cache.SlaveConnection; -import com.zy.asrs.wcs.rcs.entity.Device; -import com.zy.asrs.wcs.rcs.model.enums.SlaveType; -import com.zy.asrs.wcs.rcs.model.enums.WorkModeType; -import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol; -import com.zy.asrs.wcs.rcs.service.DeviceService; -import com.zy.asrs.wcs.rcs.thread.DevpThread; -import com.zy.asrs.wcs.rcs.thread.ShuttleThread; +import com.zy.asrs.wcs.core.utils.OpenUtils; 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; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; - -import java.util.Date; -import java.util.List; /** * 瀵瑰鏆撮湶鎺ュ彛 @@ -42,417 +19,42 @@ public class OpenController extends BaseController { @Autowired - private SnowflakeIdWorker snowflakeIdWorker; - @Autowired - private TaskCtgService taskCtgService; - @Autowired - private TaskService taskService; - @Autowired - private DeviceService deviceService; - @Autowired - private LocService locService; - @Autowired - private DictService dictService; - @Autowired - private BasConveyorPathService basConveyorPathService; - @Autowired - private BasLiftService basLiftService; - @Autowired - private BasConveyorService basConveyorService; - @Autowired - private BasConveyorStaService basConveyorStaService; + private OpenUtils openUtils; //鐢熸垚鍏ュ簱浠诲姟 @PostMapping("/createInTask") public R createInTask(@RequestBody CreateInTaskParam param) { - //鑾峰彇鍏ュ簱浠诲姟绫诲瀷 - TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>() - .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.IN)) - .eq(TaskCtg::getStatus, 1)); - if (taskCtg == null) { - return R.error("浠诲姟绫诲瀷寮傚父"); - } - - Long hostId = 1L;//榛樿涓讳粨搴� - - Loc loc = locService.selectByLocNo(param.getDestLoc()); - if (loc == null) { - return R.error("搴撲綅鍙蜂笉瀛樺湪"); - } - - //鑾峰彇涓ユ牸妯″紡鍙傛暟 - 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("搴撲綅鐘舵�佷笉婊¤冻鍏ュ簱鏉′欢"); - } - - Task one = taskService.getOne(new LambdaQueryWrapper<Task>() - .eq(Task::getTaskCtg, taskCtg.getId()) - .eq(Task::getOriginSite, param.getOriginSite()) - .eq(Task::getDestSite, param.getDestSite()) - .eq(Task::getDestLoc, param.getDestLoc())); - if (one != null) { - return R.error("浠诲姟宸插瓨鍦�"); - } - - String destSite = param.getDestSite(); - if (Cools.isEmpty(param.getDestSite())) { - //鐩爣绔欎负绌哄垯浣跨敤WCS绯荤粺鍐呯疆璺緞 - BasConveyorPath path = basConveyorPathService.getOne(new LambdaQueryWrapper<BasConveyorPath>() - .eq(BasConveyorPath::getTypeNo, taskCtg.getId()) - .eq(BasConveyorPath::getHostId, hostId) - .eq(BasConveyorPath::getStnNo, param.getOriginSite())); - if(path == null) { - return R.error("鍐呯疆璺緞涓嶅瓨鍦�"); - } - destSite = String.valueOf(path.getDeviceStn()); - } - - //鍒ゆ柇鍑哄叆搴撴ā寮� - BasConveyorSta basConveyorSta = basConveyorStaService.getOne(new LambdaQueryWrapper<BasConveyorSta>() - .eq(BasConveyorSta::getSiteNo, destSite)); - if (!basConveyorSta.getWorkMode().equals((int) WorkModeType.PAKIN_MODE.id)) { - //涓嶆槸鍏ュ簱妯″紡锛屾娴嬫槸鍚﹀彲鍒囨崲鍏ュ簱 - //鑾峰彇鍑哄簱浠诲姟绫诲瀷 - TaskCtg taskInCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>() - .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.OUT)) - .eq(TaskCtg::getStatus, 1)); - if (taskInCtg == null) { - return R.error("浠诲姟绫诲瀷寮傚父"); - } - List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>() - .eq(Task::getTaskCtg, taskInCtg.getId())); - if (!tasks.isEmpty()) { - return R.error("褰撳墠瀛樺湪鍑哄簱浠诲姟锛屾棤娉曞垏鎹㈠叆搴撴ā寮�"); - } - - BasConveyor basConveyor = basConveyorService.getOne(new LambdaQueryWrapper<BasConveyor>().eq(BasConveyor::getConveyorNo, basConveyorSta.getConveyorNo())); - if(basConveyor == null) { - return R.error("杈撻�佺嚎涓嶅瓨鍦�"); - } - - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue()); - if(devpThread == null) { - return R.error("杈撻�佺嚎绾跨▼涓嶅瓨鍦�"); - } - - boolean result = devpThread.switchWorkMode(Integer.parseInt(destSite), WorkModeType.PAKIN_MODE.id); - if (!result) { - return R.error("妯″紡鍒囨崲澶辫触"); - } - } - - //浼樺厛绾� - Integer priority = 10; - if (param.getPriority() != null) { - priority = param.getPriority(); - } - - Task task = new Task(); - task.setUuid(String.valueOf(snowflakeIdWorker.nextId())); - task.setTaskNo(String.valueOf(Utils.getTaskNo("IN"))); - task.setWmsTaskNo(param.getTaskNo()); - task.setTaskSts(TaskStsType.NEW_INBOUND.sts); - task.setTaskCtg(taskCtg.getId()); - task.setPriority(priority); - task.setOriginSite(param.getOriginSite()); - task.setOriginLoc(null); - task.setDestSite(destSite); - task.setDestLoc(param.getDestLoc()); - task.setIoTime(new Date()); - task.setStartTime(new Date()); - task.setStatus(1); - task.setMemo(""); - task.setShuttleNo(null);//绛夊緟涓荤嚎绋嬪垎閰嶅皬杞� - task.setRecordLoc("Y");//璁板綍搴撳瓨淇℃伅 - task.setHostId(hostId);//涓存椂鎺у埗鍙厑璁竓ost涓�1 - - boolean result = taskService.save(task); - if (!result) { - return R.error("鐢熸垚鍏ュ簱浠诲姟澶辫触锛�"); - } - return R.ok(); + return openUtils.createInTask(param); } //鐢熸垚鍑哄簱浠诲姟 @PostMapping("/createOutTask") public R createOutTask(@RequestBody CreateOutTaskParam param) { - //鑾峰彇鍑哄簱浠诲姟绫诲瀷 - TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>() - .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.OUT)) - .eq(TaskCtg::getStatus, 1)); - if (taskCtg == null) { - return R.error("浠诲姟绫诲瀷寮傚父"); - } - - Long hostId = 1L;//榛樿涓讳粨搴� - - Loc loc = locService.selectByLocNo(param.getOriginLoc()); - if (loc == null) { - return R.error("搴撲綅鍙蜂笉瀛樺湪"); - } - - //鑾峰彇涓ユ牸妯″紡鍙傛暟 - 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("搴撲綅鐘舵�佷笉婊¤冻鍑哄簱鏉′欢"); - } - - Task one = taskService.getOne(new LambdaQueryWrapper<Task>() - .eq(Task::getTaskCtg, taskCtg.getId()) - .eq(Task::getOriginSite, param.getOriginSite()) - .eq(Task::getOriginLoc, param.getOriginLoc()) - .eq(Task::getDestSite, param.getDestSite())); - if (one != null) { - return R.error("浠诲姟宸插瓨鍦�"); - } - - String originSite = param.getOriginSite(); - if (Cools.isEmpty(param.getOriginSite())) { - //浣跨敤WCS绯荤粺鍐呯疆璺緞 - BasConveyorPath path = basConveyorPathService.getOne(new LambdaQueryWrapper<BasConveyorPath>() - .eq(BasConveyorPath::getTypeNo, taskCtg.getId()) - .eq(BasConveyorPath::getHostId, hostId) - .eq(BasConveyorPath::getStnNo, param.getDestSite())); - if(path == null) { - return R.error("鍐呯疆璺緞涓嶅瓨鍦�"); - } - Integer deviceNo = path.getDeviceNo();//鑾峰彇鎻愬崌鏈哄彿 - BasLift basLift = basLiftService.getOne(new LambdaQueryWrapper<BasLift>().eq(BasLift::getLiftNo, deviceNo).eq(BasLift::getHostId, hostId)); - if(basLift == null) { - return R.error("鎻愬崌鏈哄璞′笉瀛樺湪"); - } - List<BasLiftStaDto> staList = JSON.parseArray(basLift.getSta(), BasLiftStaDto.class); - BasLiftStaDto originStaDto = null; - for (BasLiftStaDto sta : staList) { - if (sta.getLev() == Utils.getLev(param.getOriginLoc())) { - originStaDto = sta; - break; - } - } - - if (originStaDto == null) { - return R.error("婧愮珯涓嶅瓨鍦�"); - } - - originSite = String.valueOf(originStaDto.getStaNo()); - } - - //鍒ゆ柇鍑哄叆搴撴ā寮� - BasConveyorSta basConveyorSta = basConveyorStaService.getOne(new LambdaQueryWrapper<BasConveyorSta>() - .eq(BasConveyorSta::getSiteNo, originSite)); - if (!basConveyorSta.getWorkMode().equals((int) WorkModeType.PAKOUT_MODE.id)) { - //涓嶆槸鍑哄簱妯″紡锛屾娴嬫槸鍚﹀彲鍒囨崲鍑哄簱 - //鑾峰彇鍏ュ簱浠诲姟绫诲瀷 - TaskCtg taskInCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>() - .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.IN)) - .eq(TaskCtg::getStatus, 1)); - if (taskInCtg == null) { - return R.error("浠诲姟绫诲瀷寮傚父"); - } - List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>() - .eq(Task::getTaskCtg, taskInCtg.getId())); - if (!tasks.isEmpty()) { - return R.error("褰撳墠瀛樺湪鍏ュ簱浠诲姟锛屾棤娉曞垏鎹㈠嚭搴撴ā寮�"); - } - - BasConveyor basConveyor = basConveyorService.getOne(new LambdaQueryWrapper<BasConveyor>().eq(BasConveyor::getConveyorNo, basConveyorSta.getConveyorNo())); - if(basConveyor == null) { - return R.error("杈撻�佺嚎涓嶅瓨鍦�"); - } - - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue()); - if(devpThread == null) { - return R.error("杈撻�佺嚎绾跨▼涓嶅瓨鍦�"); - } - - boolean result = devpThread.switchWorkMode(Integer.parseInt(originSite), WorkModeType.PAKOUT_MODE.id); - if (!result) { - return R.error("妯″紡鍒囨崲澶辫触"); - } - } - - //浼樺厛绾� - Integer priority = 10; - if (param.getPriority() != null) { - priority = param.getPriority(); - } - - Task task = new Task(); - task.setUuid(String.valueOf(snowflakeIdWorker.nextId())); - task.setTaskNo(String.valueOf(Utils.getTaskNo("OUT"))); - task.setWmsTaskNo(param.getTaskNo()); - task.setTaskSts(TaskStsType.NEW_OUTBOUND.sts); - task.setTaskCtg(taskCtg.getId()); - task.setPriority(priority); - task.setOriginSite(originSite); - task.setOriginLoc(param.getOriginLoc()); - task.setDestSite(param.getDestSite()); - task.setDestLoc(null); - task.setIoTime(new Date()); - task.setStartTime(new Date()); - task.setStatus(1); - task.setMemo(""); - task.setShuttleNo(null);//绛夊緟涓荤嚎绋嬪垎閰嶅皬杞� - task.setRecordLoc("Y");//璁板綍搴撳瓨淇℃伅 - task.setHostId(hostId);//涓存椂鎺у埗鍙厑璁竓ost涓�1 - - boolean result = taskService.save(task); - if (!result) { - return R.error("鐢熸垚鍑哄簱浠诲姟澶辫触锛�"); - } - return R.ok(); + return openUtils.createOutTask(param); } //鐢熸垚鎵嬪姩鍙栨斁璐т换鍔� @PostMapping("/createManualTakeTask") public R createManualTakeTask(@RequestBody CreateManualTakeTaskParam param) { - //鑾峰彇鎵嬪姩浠诲姟绫诲瀷 - TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>() - .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.MANUAL)) - .eq(TaskCtg::getStatus, 1)); - if (taskCtg == null) { - return R.error("浠诲姟绫诲瀷寮傚父"); - } + return openUtils.createManualTakeTask(param); + } - Task one = taskService.getOne(new LambdaQueryWrapper<Task>() - .eq(Task::getTaskCtg, taskCtg.getId()) - .eq(Task::getOriginLoc, param.getOriginLoc()) - .eq(Task::getDestLoc, param.getDestLoc())); - if (one != null) { - return R.error("浠诲姟宸插瓨鍦�"); - } - - //浼樺厛绾� - Integer priority = 10; - if (param.getPriority() != null) { - priority = param.getPriority(); - } - - Task task = new Task(); - task.setUuid(String.valueOf(snowflakeIdWorker.nextId())); - task.setTaskNo(String.valueOf(Utils.getTaskNo("OUT"))); - task.setWmsTaskNo(param.getTaskNo()); - task.setTaskSts(TaskStsType.NEW_MANUAL.sts); - task.setTaskCtg(taskCtg.getId()); - task.setPriority(priority); - task.setOriginSite(null); - task.setOriginLoc(param.getOriginLoc());//婧愬簱浣� - task.setDestSite(null); - task.setDestLoc(param.getDestLoc());//鐩爣搴撲綅 - task.setIoTime(new Date()); - task.setStartTime(new Date()); - task.setStatus(1); - task.setMemo(""); - task.setShuttleNo(null);//绛夊緟涓荤嚎绋嬪垎閰嶅皬杞� - task.setRecordLoc(param.getRecord() ? "Y" : "N");//璁板綍搴撳瓨淇℃伅 - task.setHostId(1L);//涓存椂鎺у埗鍙厑璁竓ost涓�1 - - boolean result = taskService.save(task); - if (!result) { - return R.error("鐢熸垚鎵嬪姩鍙栨斁璐т换鍔″け璐ワ紒"); - } - return R.ok(); + //鐢熸垚杞借揣绉诲姩浠诲姟 + @PostMapping("/createLadenMoveTakeTask") + public R createLadenMoveTakeTask(@RequestBody CreateManualTakeTaskParam param) { + return openUtils.createLadenMoveTakeTask(param); } //鐢熸垚灏忚溅绉诲姩浠诲姟 @PostMapping("/createMoveTask") public R createMoveTask(@RequestBody CreateMoveTaskParam param) { - //鑾峰彇鍑哄簱浠诲姟绫诲瀷 - TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>() - .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.MOVE)) - .eq(TaskCtg::getStatus, 1)); - if (taskCtg == null) { - return R.error("浠诲姟绫诲瀷寮傚父"); - } - - Device device = deviceService.getOne(new LambdaQueryWrapper<Device>() - .eq(Device::getDeviceType, DeviceCtgType.SHUTTLE.val()) - .eq(Device::getDeviceNo, param.getShuttleNo()) - .eq(Device::getHostId, 1) - .eq(Device::getStatus, 1)); - if (device == null) { - return R.error("绌挎杞︿笉瀛樺湪"); - } - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getId().intValue()); - if (shuttleThread == null) { - return R.error("绌挎杞︿笉鍦ㄧ嚎"); - } - ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); - if (shuttleProtocol == null) { - return R.error("绌挎杞︿笉鍦ㄧ嚎"); - } -// if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(param.getDestLoc())) { -// return R.error("绌挎杞﹀拰鐩爣浣嶇疆涓嶅湪鍚屼竴妤煎眰"); -// } - - Task one = taskService.getOne(new LambdaQueryWrapper<Task>() - .eq(Task::getTaskCtg, taskCtg.getId()) - .eq(Task::getDestLoc, param.getDestLoc())); - if (one != null) { - return R.error("浠诲姟宸插瓨鍦�"); - } - - //浼樺厛绾� - Integer priority = 10; - if (param.getPriority() != null) { - priority = param.getPriority(); - } - - Task task = new Task(); - task.setUuid(String.valueOf(snowflakeIdWorker.nextId())); - task.setTaskNo(String.valueOf(Utils.getTaskNo("OUT"))); - task.setWmsTaskNo(param.getTaskNo()); - task.setTaskSts(TaskStsType.NEW_MOVE.sts); - task.setTaskCtg(taskCtg.getId()); - task.setPriority(priority); - task.setOriginSite(null); - task.setOriginLoc(null); - task.setDestSite(null); - task.setDestLoc(param.getDestLoc()); - task.setIoTime(new Date()); - task.setStartTime(new Date()); - task.setStatus(1); - task.setMemo(""); - task.setShuttleNo(param.getShuttleNo()); - task.setRecordLoc("N");//涓嶈褰曞簱瀛樹俊鎭� - task.setHostId(1L);//涓存椂鎺у埗鍙厑璁竓ost涓�1 - - boolean result = taskService.save(task); - if (!result) { - return R.error("鐢熸垚灏忚溅绉诲姩浠诲姟澶辫触锛�"); - } - return R.ok(); + return openUtils.createMoveTask(param); } //鍒囨崲宸ヤ綔妯″紡 @PostMapping("/switchWorkMode") public R switchWorkMode(@RequestBody SwitchWorkModeParam param) { - BasConveyor basConveyor = basConveyorService.getOne(new LambdaQueryWrapper<BasConveyor>().eq(BasConveyor::getConveyorNo, param.getConveyorNo())); - if(basConveyor == null) { - return R.error("杈撻�佺嚎涓嶅瓨鍦�"); - } - - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue()); - if(devpThread == null) { - return R.error("杈撻�佺嚎绾跨▼涓嶅瓨鍦�"); - } - - boolean result = devpThread.switchWorkMode(param.getSiteId(), param.getWorkMode()); - if (!result) { - return R.error("妯″紡鍒囨崲澶辫触"); - } - return R.ok(); + return openUtils.switchWorkMode(param); } } -- Gitblit v1.9.1