From c904f735e0b8a488ef56744c08f8e10258639bce Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期四, 05 六月 2025 15:54:58 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/controller/RgvController.java | 378 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 353 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java index b4639a5..59cb2d8 100644 --- a/src/main/java/com/zy/asrs/controller/RgvController.java +++ b/src/main/java/com/zy/asrs/controller/RgvController.java @@ -2,9 +2,11 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.ManagerAuth; +import com.core.common.Cools; import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.domain.enums.RgvStatusType; +import com.zy.asrs.domain.param.CrnDemoParam; import com.zy.asrs.domain.param.CrnOperatorParam; import com.zy.asrs.domain.param.RgvOperatorParam; import com.zy.asrs.domain.vo.RgvMsgTableVo; @@ -12,10 +14,12 @@ import com.zy.asrs.entity.BasRgv; import com.zy.asrs.entity.BasRgvErr; import com.zy.asrs.entity.WrkMast; +import com.zy.asrs.entity.WrkMastSta; import com.zy.asrs.mapper.BasRgvErrMapper; import com.zy.asrs.service.BasRgvService; import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.WrkMastService; +import com.zy.asrs.service.WrkMastStaService; import com.zy.asrs.service.impl.MainServiceImpl; import com.zy.core.CrnThread; import com.zy.core.RgvThread; @@ -33,15 +37,19 @@ import com.zy.core.model.protocol.CrnProtocol; import com.zy.core.model.protocol.RgvProtocol; import com.zy.core.properties.SlaveProperties; +import com.zy.core.properties.SystemProperties; import com.zy.core.thread.SiemensRgvThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * RGV鎺ュ彛 @@ -64,6 +72,278 @@ private MainServiceImpl mainService; @Autowired private LocMastService locMastService; + @Autowired + private WrkMastStaService wrkMastStaService; + int wrkNo = 9990; + + + @ManagerAuth(memo = "婕旂ず鍛戒护涓嬪彂") + @GetMapping("/rgvDemoTask") + public R rgvDemoTask(Integer rgvNo, Integer sta,Integer end){ + wrkNo++; + RgvCommand command = new RgvCommand(); + command.setRgvNo(rgvNo); // RGV缂栧彿 + command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo1(wrkNo); // 宸ヤ綔鍙� + command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� + command.setSourceStaNo1(sta.shortValue()); // 婧愮珯 + command.setDestinationStaNo1(end.shortValue()); // 鐩爣绔� +// command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣� +// command.setTaskNo2((short) 0); // 宸ヤ綔鍙� +// command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� +// command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯 +// command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� + command.setCommand((short) 0); + + return rgvControl(command)? R.ok(): R.error(); + } + + @ManagerAuth(memo = "瑙i攣灏忚溅") + @PostMapping("/lock") + public R lock(RgvOperatorParam param ){ + SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, param.getRgvNo()); + rgvThread.setPakMk(true); + return R.ok(); + } + + @GetMapping("/demo/status") + public R demoStatus(Integer rgvNo){ + Map<String,Object> map = new HashMap<>(); + if (Cools.isEmpty(rgvNo)){ + map.put("demo","X"); + map.put("rgvMode",0); + return R.ok().add(map); + } + String demo = "X"; + Integer rgvMode = 0; +// List<Map<String, Object>> res = new ArrayList<>(); + for (RgvSlave rgvSlave : slaveProperties.getRgv()) { + SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvSlave.getId().equals(rgvNo)){ + demo = rgvSlave.getDemo()?"Y":"N"; + rgvSlave.setRgvMode(rgvProtocol.getMode().intValue()); + rgvMode = rgvProtocol.getMode().intValue(); + } + } + map.put("demo",demo); + map.put("rgvMode",rgvMode); + return R.ok().add(map); + } + + @GetMapping("/demo/status/true") + public R demoStatusTrue(Integer rgvNo){ + if (Cools.isEmpty(rgvNo)){ + return R.error("璇烽�夋嫨rgv"); + } +// List<Map<String, Object>> res = new ArrayList<>(); + for (RgvSlave rgvSlave : slaveProperties.getRgv()) { + if (rgvSlave.getId().equals(rgvNo)){ + rgvSlave.setDemo(true); + } + } + return R.ok(); + } + @GetMapping("/demo/status/false") + public R demoStatusFalse(Integer rgvNo){ + if (Cools.isEmpty(rgvNo)){ + return R.error("璇烽�夋嫨rgv"); + } +// List<Map<String, Object>> res = new ArrayList<>(); + for (RgvSlave rgvSlave : slaveProperties.getRgv()) { + if (rgvSlave.getId().equals(rgvNo)){ + rgvSlave.setDemo(false); + } + } + return R.ok(); + } + + @GetMapping("/demo/status/rgvStatus") + public R demoStatusTrue1(Integer rgvNo,Integer status){ + if (Cools.isEmpty(rgvNo)){ + return R.error("璇烽�夋嫨rgv"); + } + if (Cools.isEmpty(status)){ + return R.error("閫夋嫨鎸夐挳鏈夎"); + } +// List<Map<String, Object>> res = new ArrayList<>(); + for (RgvSlave rgvSlave : slaveProperties.getRgv()) { + // 鑾峰彇RGV淇℃伅 + SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo); + if (rgvThread == null) { + throw new CoolException("RGV涓嶅湪绾�"); + } + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + throw new CoolException("RGV涓嶅湪绾�"); + } + String DB = ""; + if (rgvSlave.getId().equals(rgvNo)){ + switch (status){ + case 5://寮哄埗鍚姩 + DB="4.4"; + break; +// case 6://澶嶄綅淇″彿 +// DB="4.5"; +// break; + case 7://鎶ヨ娑堥煶 + DB="4.6"; + break; + case 8://鍚姩 + DB="4.7"; + break; + case 9://鍋滄 + DB="5.0"; + break; + case 10://鎬ュ仠 + DB="5.1"; + break; + case 11://澶嶄綅鎸夐挳 + DB="5.2"; + break; + case 12://鎵嬪姩 + DB="5.3"; + rgvSlave.setRgvMode(3); + break; + case 13://鎵嬪姩瀹氫綅 + DB="5.4"; + break; + case 14://鍗曟満 + DB="5.5"; + rgvSlave.setRgvMode(2); + break; + case 15://鑱旀満 + DB="5.6"; + rgvSlave.setRgvMode(1); + break; + case 16://璐у弶瀹氫綅鍥炰腑 + DB="5.7"; + break; + case 17://鎭㈠鑱旀満浠诲姟 + DB="6.0"; + break; + case 18://娓呮鑱旀満浠诲姟 + DB="6.1"; + break; + default: + return R.error("鎸夐挳涓嶅瓨鍦紵锛燂紵锛燂紒锛侊紒"); + } + if (MessageQueue.offer(SlaveType.Rgv, rgvNo, new Task(10, DB))) { + return R.ok(); + } else { + return R.error("鍛戒护涓嬪彂澶辫触"); + } + } + + } + return R.ok(); + } + + + + @PostMapping("/demo/switch") + @ManagerAuth(memo = "RGV婕旂ず") + public R crnDemo(CrnDemoParam param) throws InterruptedException { + if (Cools.isEmpty(param.getCrnId())){ + return R.error(); + } + if (Cools.isEmpty(param.getPassword())){ + return R.error("璇疯緭鍏ュ彛浠�"); + } + if (!param.getPassword().equals(SystemProperties.WCS_PASSWORD)){ + return R.error("鍙d护閿欒"); + } + Thread.sleep(200L); + for (RgvSlave rgvSlave : slaveProperties.getRgv()) { + if (rgvSlave.getId().equals(param.getCrnId())) { + rgvSlave.setDemo(param.getOpt()); + } + } +// mainService.crnDemoOfLocMove(param.getCrnId()); + return R.ok(); + } + + @ManagerAuth(memo = "鍙栨斁璐�") + @PostMapping("/operator/put") + public R rgvFetchPut(RgvOperatorParam param){ + wrkNo++; + RgvCommand command = new RgvCommand(); + command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 + command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo1(wrkNo); // 宸ヤ綔鍙� + command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� + command.setSourceStaNo1(param.getSourceRow().shortValue()); // 婧愮珯 + command.setDestinationStaNo1(param.getSourceBay().shortValue()); // 鐩爣绔� +// command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣� +// command.setTaskNo2((short) 0); // 宸ヤ綔鍙� +// command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� +// command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯 +// command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� + command.setCommand((short) 0); + + return rgvControl(command)? R.ok(): R.error(); + } + + + @ManagerAuth(memo = "鍙�") + @PostMapping("/operator/single/step/one/put") + public R rgvFetchSingleStepOnePut(RgvOperatorParam param){ + return rgvFetchSingleStepPut(param,1)?R.ok():R.error(); + } + @ManagerAuth(memo = "鏀�") + @PostMapping("/operator/single/step/two/put") + public R rgvFetchSingleStepTwoPut(RgvOperatorParam param){ + return rgvFetchSingleStepPut(param,2)?R.ok():R.error(); + } + @ManagerAuth(memo = "X杩愯") + @PostMapping("/operator/single/step/three/put") + public R rgvFetchSingleStepThreePut(RgvOperatorParam param){ + return rgvFetchSingleStepPut(param,3)?R.ok():R.error(); + } + + @ManagerAuth(memo = "鍙栨斁") + @PostMapping("/operator/single/step/four/put") + public R rgvFetchSingleStepFourPut(RgvOperatorParam param){ + return rgvFetchSingleStepPut(param,4)?R.ok():R.error(); + } + + public boolean rgvFetchSingleStepPut(RgvOperatorParam param ,Integer type){ + wrkNo++; + RgvCommand command = new RgvCommand(); + RgvTaskModeType fetchPut = RgvTaskModeType.NONE; + switch (type){ + case 1: + fetchPut = RgvTaskModeType.FETCH; + param.setSourceBay(0); + break; + case 2: + fetchPut = RgvTaskModeType.PUT; + param.setSourceRow(0); + break; + case 3: + fetchPut = RgvTaskModeType.X_MOVE; + break; + case 4: + fetchPut = RgvTaskModeType.FETCH_PUT; + break; + default: + return false; + } + command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 + command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo1(wrkNo); // 宸ヤ綔鍙� + command.setTaskMode1(fetchPut); // 浠诲姟妯″紡: 鍙栨斁璐� + command.setSourceStaNo1(param.getSourceRow().shortValue()); // 婧愮珯 + command.setDestinationStaNo1(param.getSourceBay().shortValue()); // 鐩爣绔� +// command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣� +// command.setTaskNo2((short) 0); // 宸ヤ綔鍙� +// command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� +// command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯 +// command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� + command.setCommand((short) 0); + + return rgvControlD(command); + } @ManagerAuth(memo = "澶嶄綅") @@ -74,36 +354,45 @@ command.setReset(true); return rgvControl2(command)?R.ok():R.error(); } - @ManagerAuth(memo = "澶嶄綅") - @PostMapping("/operator/reset") + @ManagerAuth(memo = "鑱旀満") + @PostMapping("/operator/auto") public R crnAuto(RgvOperatorParam param){ RgvCommand command = new RgvCommand(); command.setRgvNo(param.getRgvNo()); // 鍫嗗灈鏈虹紪鍙� command.setAuto(true); return rgvControl2(command)?R.ok():R.error(); } - @ManagerAuth(memo = "澶嶄綅") - @PostMapping("/operator/reset") + @ManagerAuth(memo = "鎭㈠浠诲姟") + @PostMapping("/operator/restoreTask") public R crnRestoreTask(RgvOperatorParam param){ RgvCommand command = new RgvCommand(); command.setRgvNo(param.getRgvNo()); // 鍫嗗灈鏈虹紪鍙� command.setRestoreTask(true); return rgvControl2(command)?R.ok():R.error(); } - @ManagerAuth(memo = "澶嶄綅") - @PostMapping("/operator/reset") + @ManagerAuth(memo = "瀹屾垚浠诲姟") + @PostMapping("/operator/compTask") public R rgvCompTask(RgvOperatorParam param){ RgvCommand command = new RgvCommand(); command.setRgvNo(param.getRgvNo()); // 鍫嗗灈鏈虹紪鍙� command.setCompTask(true); return rgvControl2(command)?R.ok():R.error(); } - @ManagerAuth(memo = "澶嶄綅") - @PostMapping("/operator/reset") + @ManagerAuth(memo = "鎬ュ仠") + @PostMapping("/operator/stop") public R rgvStop(RgvOperatorParam param){ RgvCommand command = new RgvCommand(); command.setRgvNo(param.getRgvNo()); // 鍫嗗灈鏈虹紪鍙� command.setStop(true); + return rgvControl2(command)?R.ok():R.error(); + } + + @ManagerAuth(memo = "鍙栨秷鎬ュ仠") + @PostMapping("/operator/noStop") + public R rgvNoStop(RgvOperatorParam param){ + RgvCommand command = new RgvCommand(); + command.setRgvNo(param.getRgvNo()); // 鍫嗗灈鏈虹紪鍙� + command.setNoStop(true); return rgvControl2(command)?R.ok():R.error(); } @@ -156,20 +445,29 @@ if (rgvProtocol == null) { continue; } - vo.setStatusType(rgvProtocol.modeType.desc); // 妯″紡鐘舵�� - vo.setStatus(rgvProtocol.getStatusType().desc); // 鐘舵�� - vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 宸ヤ綅1浠诲姟鍙� - vo.setStatus1(rgvProtocol.getStatusType1().desc); // 宸ヤ綅1鐘舵�� - vo.setLoading1(rgvProtocol.getLoaded1()==1?"鏈夌墿":"鏃犵墿"); // 宸ヤ綅1鏈夌墿 - vo.setRgvPos(rgvProtocol.getRgvPos()); - vo.setRgvPos1(rgvProtocol.getRgvPosI()); - vo.setWalkPos(rgvProtocol.getWalkPos()==1?"鍦ㄥ畾浣�":"涓嶅湪瀹氫綅"); - vo.setPakMk(rgvThread.isPakMk()?"鏃犻攣":"閿佸畾"); -// vo.setWorkNo2(rgvProtocol.getTaskNo2()); // 宸ヤ綅2浠诲姟鍙� -// vo.setStatus2(rgvProtocol.getStatusType2().desc); // 宸ヤ綅2鐘舵�� -// vo.setLoading2(rgvProtocol.getLoaded2()==1?"鏈夌墿":"鏃犵墿"); // 宸ヤ綅2鏈夌墿 + if (rgvProtocol.getTaskNo1() != 0){ + WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>() + .setSqlSelect("TOP 1 wrk_no as wrkNo , wrk_sts as wrkSts, create_time as createTime") + .eq("wrk_No", rgvProtocol.getTaskNo1()) + .orderBy("create_time", false) + + ); + if (!Cools.isEmpty(wrkMastSta)){ + vo.setWrkSts(wrkMastSta.getWrkSts()); + } + } + vo.setStatusType(rgvProtocol.modeType.desc); // 妯″紡鐘舵�� + vo.setStatus(rgvProtocol.getStatusType1().desc); // 鐘舵�� + vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 宸ヤ綅1浠诲姟鍙� + vo.setRgvPos(rgvProtocol.getCode()); + vo.setPakMk(rgvThread.isPakMk()?"鏃犻攣":"閿佸畾"); + vo.setWalkPos(rgvProtocol.getAlarm() == 0?"姝e父":"鎶ヨ"); vo.setWarnCode(String.valueOf(rgvProtocol.getAlarm())); + vo.setList32(rgvProtocol.getList32()); + vo.setList33(rgvProtocol.getList33()); + vo.setList34(rgvProtocol.getList34()); + vo.setList35(rgvProtocol.getList35()); if (rgvProtocol.getAlarm() > 0) { BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm()); vo.setAlarm(rgvErr==null?"鏈煡寮傚父":rgvErr.getErrName()); @@ -243,8 +541,8 @@ public R rgvTaskComplete(RgvOperatorParam param){ RgvCommand command = new RgvCommand(); command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 - command.setAckFinish1((short) 1); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo1((short) 0); // 宸ヤ綔鍙� + command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo1( 0); // 宸ヤ綔鍙� command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡 command.setSourceStaNo1((short) 0); // 婧愮珯 command.setDestinationStaNo1((short) 0); // 鐩爣绔� @@ -266,8 +564,8 @@ } RgvCommand command = new RgvCommand(); command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 - command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣� - command.setTaskNo1((short) 0); // 宸ヤ綔鍙� + command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo1(0); // 宸ヤ綔鍙� command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡 command.setSourceStaNo1((short) 0); // 婧愮珯 command.setDestinationStaNo1((short) 0); // 鐩爣绔� @@ -302,7 +600,7 @@ RgvCommand Command = new RgvCommand(); Command.setRgvNo(rgv.getId()); // RGV缂栧彿 Command.setTaskMode1(RgvTaskModeType.NONE); - Command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣� + Command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� Command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣� Command.setCommand((short) 0); // 浠诲姟瀹屾垚纭浣� // 寤舵椂鍙戦�� @@ -343,4 +641,34 @@ return false; } + private boolean rgvControlD(RgvCommand command){ + if (command.getRgvNo() == null) { + throw new CoolException("璇烽�夋嫨RGV"); + } + for (RgvSlave rgv : slaveProperties.getRgv()) { + // 鑾峰彇RGV淇℃伅 + if (command.getRgvNo().equals(rgv.getId())) { +// SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); +// if (rgvThread == null) { +// throw new CoolException("RGV涓嶅湪绾�"); +// } +// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); +// if (rgvProtocol == null) { +// throw new CoolException("RGV涓嶅湪绾�"); +// } + try{ + if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(11, command))) { + return true; + } else { + throw new CoolException("鍛戒护涓嬪彂澶辫触"); + } + }catch (Exception e){ + log.error("鍗曟浠诲姟涓嬪彂澶辫触锛屽紓甯革細"+e); + throw new CoolException("鍛戒护涓嬪彂澶辫触"); + } + } + } + return false; + } + } \ No newline at end of file -- Gitblit v1.9.1