From 66942458f7753fe4ddee7c5ed3386d61cff28b24 Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期二, 01 四月 2025 13:55:21 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/jxjdzwcs' into jxjdzwcs --- src/main/java/com/zy/asrs/controller/CrnController.java | 625 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 535 insertions(+), 90 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/CrnController.java b/src/main/java/com/zy/asrs/controller/CrnController.java index 7829f11..2ee0692 100644 --- a/src/main/java/com/zy/asrs/controller/CrnController.java +++ b/src/main/java/com/zy/asrs/controller/CrnController.java @@ -3,23 +3,28 @@ import com.alibaba.fastjson.JSON; 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.CrnStatusType; +import com.zy.asrs.domain.param.CrnDemoParam; import com.zy.asrs.domain.param.CrnOperatorParam; import com.zy.asrs.domain.vo.CommandLogVo; +import com.zy.asrs.domain.vo.CrnListVo; import com.zy.asrs.domain.vo.CrnMsgTableVo; import com.zy.asrs.domain.vo.CrnStateTableVo; -import com.zy.asrs.entity.BasCrnError; -import com.zy.asrs.entity.BasCrnp; -import com.zy.asrs.entity.WrkMast; +import com.zy.asrs.entity.*; import com.zy.asrs.mapper.BasCrnErrorMapper; import com.zy.asrs.service.BasCrnpService; +import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.WrkMastService; +import com.zy.asrs.service.impl.MainServiceImpl; +import com.zy.asrs.utils.CommandUtils; +import com.zy.asrs.utils.VersionUtils; +import com.zy.core.CrnThread; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; import com.zy.core.cache.SlaveConnection; -import com.zy.core.enums.CrnLiftPosType; import com.zy.core.enums.CrnModeType; import com.zy.core.enums.CrnTaskModeType; import com.zy.core.enums.SlaveType; @@ -28,15 +33,17 @@ import com.zy.core.model.command.CrnCommand; import com.zy.core.model.protocol.CrnProtocol; import com.zy.core.properties.SlaveProperties; -import com.zy.core.thread.CrnThread; +import com.zy.core.properties.SystemProperties; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; +import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 鍫嗗灈鏈烘帴鍙� @@ -44,8 +51,14 @@ */ @Slf4j @RestController -@RequestMapping("/crn") public class CrnController { + + @Value("${wms.url}") + private String wmsUrl; + @Value("${wms.movePath}") + private String movePath; + + @Autowired private SlaveProperties slaveProperties; @@ -55,10 +68,14 @@ private BasCrnErrorMapper basCrnErrorMapper; @Autowired private BasCrnpService basCrnpService; + @Autowired + private MainServiceImpl mainService; + @Autowired + private LocMastService locMastService; @ManagerAuth(memo = "杩涜涓殑鍛戒护") - @PostMapping("/command/ongoing") + @PostMapping("/crn/command/ongoing") public R ongoingCommand(){ List<CommandLogVo> list = new ArrayList<>(); for (CrnSlave crn : slaveProperties.getCrn()) { @@ -84,7 +101,7 @@ return R.ok().add(list); } - @PostMapping("/table/crn/state") + @PostMapping("/crn/table/crn/state") @ManagerAuth(memo = "鍫嗗灈鏈轰俊鎭〃") public R crnStateTable(){ List<CrnStateTableVo> list = new ArrayList<>(); @@ -104,30 +121,59 @@ continue; } vo.setWorkNo(crnProtocol.getTaskNo()); // 浠诲姟鍙� - if (crnProtocol.getTaskNo()>0) { - WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo()); - if (wrkMast != null) { - vo.setStatusType(CrnStatusType.process(wrkMast.getIoType()).getDesc()); // 妯″紡鐘舵�� - } - } else { - vo.setStatusType(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO.getDesc(): CrnStatusType.MACHINE_UN_AUTO.getDesc()); // 妯″紡鐘舵�� - } + vo.setStatusType(crnProtocol.modeType.desc); // 妯″紡鐘舵�� vo.setStatus(crnProtocol.getStatusType().desc); // 鐘舵�� - vo.setLoading(crnProtocol.getLoaded()==1?"鏈夌墿":"鏃犵墿"); // 鏈夌墿 + vo.setLoading((crnProtocol.getLoaded() != null && crnProtocol.getLoaded() == 1) ? "鏈夌墿" : "鏃犵墿"); // 鏈夌墿 vo.setBay(crnProtocol.getBay()); // 鍒� vo.setLev(crnProtocol.getLevel()); // 灞� - vo.setXOrigin(crnProtocol.getBay()==1?"鏄�":"鍚�"); // 璧拌鍘熺偣 - vo.setYOrigin(crnProtocol.getLevel()==1?"鏄�":"鍚�"); // 鍗囬檷鍘熺偣 + vo.setForkOffset(crnProtocol.getForkPosType().desc); // 璐у弶浣嶇疆 - vo.setXLocation(crnProtocol.getWalkPos() == 1?"鏄�":"鍚�"); // 璧拌瀹氫綅 - vo.setYLocation(crnProtocol.getLiftPosType().equals(CrnLiftPosType.NONE)?"鍚�":"鏄�"); // 鍗囬檷瀹氫綅 - vo.setStop(crnProtocol.getCrnTemp1().stop?"鏄�":"鍚�"); // 鎬ュ仠 - vo.setWarnCode(String.valueOf(crnProtocol.getAlarm())); // 寮傚父鐮� + vo.setLiftPos(crnProtocol.getLiftPosType().desc); + vo.setWalkPos(crnProtocol.getWalkPos()==1?"涓嶅湪瀹氫綅":"鍦ㄥ畾浣�"); + vo.setWarnCode(String.valueOf(crnProtocol.getAlarm1())); + if (crnProtocol.getAlarm() > 0) { + BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm()); + vo.setAlarm(crnError==null?"鏈煡寮傚父":crnError.getErrName()); + } } return R.ok().add(list); } - @PostMapping("/table/crn/msg") + @PostMapping("/crn/table/crn/{id}/state") + @ManagerAuth(memo = "鍫嗗灈鏈轰俊鎭〃") + public R crnStateTable(@PathVariable("id") Integer id){ + BasCrnp basCrnp = basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no", id).orderBy("crn_no")); + // 琛ㄦ牸琛� + CrnStateTableVo vo = new CrnStateTableVo(); + vo.setCrnNo(basCrnp.getCrnNo()); // 鍫嗗灈鏈哄彿 + // 鑾峰彇鍫嗗灈鏈轰俊鎭� + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, basCrnp.getCrnNo()); + if (crnThread == null) { + return R.error(); + } + CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol == null) { + return R.error(); + } + vo.setWorkNo(crnProtocol.getTaskNo()); // 浠诲姟鍙� + vo.setStatusType(crnProtocol.modeType.desc); // 妯″紡鐘舵�� + vo.setStatus(crnProtocol.getStatusType().desc); // 鐘舵�� + vo.setLoading((crnProtocol.getLoaded() != null && crnProtocol.getLoaded() == 1) ? "鏈夌墿" : "鏃犵墿"); // 鏈夌墿 + vo.setBay(crnProtocol.getBay()); // 鍒� + vo.setLev(crnProtocol.getLevel()); // 灞� + + vo.setForkOffset(crnProtocol.getForkPosType().desc); // 璐у弶浣嶇疆 + vo.setLiftPos(crnProtocol.getLiftPosType().desc); + vo.setWalkPos(crnProtocol.getWalkPos()==1?"涓嶅湪瀹氫綅":"鍦ㄥ畾浣�"); + vo.setWarnCode(String.valueOf(crnProtocol.getAlarm1())); + if (crnProtocol.getAlarm1() > 0) { + BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm1()); + vo.setAlarm(crnError==null?"鏈煡寮傚父":crnError.getErrName()); + } + return R.ok().add(vo); + } + + @PostMapping("/crn/table/crn/msg") @ManagerAuth(memo = "鍫嗗灈鏈烘暟鎹〃") public R crnMsgTable(){ List<CrnMsgTableVo> list = new ArrayList<>(); @@ -148,10 +194,6 @@ } vo.setWorkNo(crnProtocol.getTaskNo()); // 浠诲姟鍙� - BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm()); - if (null != crnError) { - vo.setError(crnError.getErrName()); - } if (crnProtocol.getTaskNo()>0) { WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo()); if (wrkMast != null) { @@ -175,7 +217,108 @@ return R.ok().add(list); } - @PostMapping("/output/site") + @PostMapping("/crn/table/crn/{id}/msg") + @ManagerAuth(memo = "鍫嗗灈鏈烘暟鎹〃") + public R crnMsgTable(@PathVariable("id") Integer id){ + BasCrnp basCrnp = basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no", id).orderBy("crn_no")); + // 琛ㄦ牸琛� + CrnMsgTableVo vo = new CrnMsgTableVo(); + vo.setCrnNo(basCrnp.getCrnNo()); // 鍫嗗灈鏈哄彿 + // 鑾峰彇鍫嗗灈鏈轰俊鎭� + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, basCrnp.getCrnNo()); + if (crnThread == null) { + return R.error(); + } + CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol == null) { + return R.error(); + } + + vo.setWorkNo(crnProtocol.getTaskNo()); // 浠诲姟鍙� + if (crnProtocol.getTaskNo()>0) { + WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo()); + if (wrkMast != null) { + vo.setStatus(CrnStatusType.process(wrkMast.getIoType()).getDesc()); // 妯″紡鐘舵�� + vo.setSourceStaNo(wrkMast.getSourceStaNo$()); // 婧愮珯 + vo.setStaNo(wrkMast.getStaNo$()); // 鐩爣绔� + vo.setSourceLocNo(wrkMast.getSourceLocNo()); // 婧愬簱浣� + vo.setLocNo(wrkMast.getLocNo()); // 鐩爣搴撲綅 + } + } else { + vo.setStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO.getDesc(): CrnStatusType.MACHINE_UN_AUTO.getDesc()); // 妯″紡鐘舵�� + } + vo.setXspeed(crnProtocol.getXSpeed()); // 璧拌閫熷害锛坢/min) + vo.setYspeed(crnProtocol.getYSpeed()); // 鍗囬檷閫熷害锛坢/min) + vo.setZspeed(crnProtocol.getZSpeed()); // 鍙夌墮閫熷害锛坢/min) + vo.setXdistance(crnProtocol.getXDistance()); // 璧拌璺濈(Km) + vo.setYdistance(crnProtocol.getYDistance()); // 鍗囬檷璺濈(Km) + vo.setXduration(crnProtocol.getXDuration()); // 璧拌鏃堕暱(H) + vo.setYduration(crnProtocol.getYDuration()); // 鍗囬檷鏃堕暱(H) + return R.ok().add(vo); + } + + @GetMapping("/crn/list/auth") + @ManagerAuth(memo = "鍫嗗灈鏈烘暟鎹〃") + public R crnList(){ + List<CrnListVo> list = new ArrayList<>(); + List<BasCrnp> crnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().orderBy("crn_no")); + for (BasCrnp basCrnp : crnps) { + // 琛ㄦ牸琛� + CrnListVo vo = new CrnListVo(); + vo.setCrnNo(basCrnp.getCrnNo()); // 鍫嗗灈鏈哄彿 + list.add(vo); + // 鑾峰彇鍫嗗灈鏈轰俊鎭� + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, basCrnp.getCrnNo()); + if (crnThread == null) { + continue; + } + CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol == null) { + continue; + } + + vo.setWorkNo(crnProtocol.getTaskNo()); // 浠诲姟鍙� + if (crnProtocol.getTaskNo()>0) { + WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo()); + if (wrkMast != null) { + vo.setDeviceStatus(CrnStatusType.process(wrkMast.getIoType()).getDesc()); // 妯″紡鐘舵�� + vo.setSourceStaNo(wrkMast.getSourceStaNo$()); // 婧愮珯 + vo.setStaNo(wrkMast.getStaNo$()); // 鐩爣绔� + vo.setSourceLocNo(wrkMast.getSourceLocNo()); // 婧愬簱浣� + vo.setLocNo(wrkMast.getLocNo()); // 鐩爣搴撲綅 + } + } else { + vo.setDeviceStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO.getDesc(): CrnStatusType.MACHINE_UN_AUTO.getDesc()); // 妯″紡鐘舵�� + } + vo.setXspeed(crnProtocol.getXSpeed()); // 璧拌閫熷害锛坢/min) + vo.setYspeed(crnProtocol.getYSpeed()); // 鍗囬檷閫熷害锛坢/min) + vo.setZspeed(crnProtocol.getZSpeed()); // 鍙夌墮閫熷害锛坢/min) + vo.setXdistance(crnProtocol.getXDistance()); // 璧拌璺濈(Km) + vo.setYdistance(crnProtocol.getYDistance()); // 鍗囬檷璺濈(Km) + vo.setXduration(crnProtocol.getXDuration()); // 璧拌鏃堕暱(H) + vo.setYduration(crnProtocol.getYDuration()); // 鍗囬檷鏃堕暱(H) + + vo.setStatusType(crnProtocol.modeType.desc); // 妯″紡鐘舵�� + vo.setWrkStatus(crnProtocol.getStatusType().id); // 浠诲姟鐘舵�� + vo.setLoading((crnProtocol.getLoaded() != null && crnProtocol.getLoaded() == 1) ? "鏈夌墿" : "鏃犵墿"); // 鏈夌墿 + vo.setBay(crnProtocol.getBay()); // 鍒� + vo.setLev(crnProtocol.getLevel()); // 灞� + + vo.setForkOffset(crnProtocol.getForkPosType().desc); // 璐у弶浣嶇疆 + vo.setLiftPos(crnProtocol.getLiftPosType().desc); + vo.setWalkPos(crnProtocol.getWalkPos()==1?"涓嶅湪瀹氫綅":"鍦ㄥ畾浣�"); + vo.setWarnCode(String.valueOf(crnProtocol.getAlarm1())); + if (crnProtocol.getAlarm1() > 0) { + BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm1()); + vo.setAlarm(crnError==null?"鏈煡寮傚父":crnError.getErrName()); + } + vo.setInEnable(basCrnp.getInEnable()); + vo.setOutEnable(basCrnp.getOutEnable()); + } + return R.ok().add(list); + } + + @PostMapping("/crn/output/site") @ManagerAuth(memo = "鍫嗗灈鏈烘姤鏂囨棩蹇楄緭鍑�") public R crnOutput(){ StringBuilder str = new StringBuilder(); @@ -189,13 +332,54 @@ } + @GetMapping("/crn/demo/status") + public R demoStatus(){ + List<Map<String, Object>> res = new ArrayList<>(); + for (CrnSlave crnSlave : slaveProperties.getCrn()) { + Map<String, Object> map = new HashMap<>(); + map.put("crnNo", crnSlave.getId()); + map.put("demo", crnSlave.getDemo()); + res.add(map); + } + return R.ok().add(res); + } + + + @PostMapping("/crn/demo/switch") + @ManagerAuth(memo = "鍫嗗灈鏈烘紨绀�") + 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 (CrnSlave crnSlave : slaveProperties.getCrn()) { + if (crnSlave.getId().equals(param.getCrnId())) { + crnSlave.setDemo(param.getOpt()); + } + } +// mainService.crnDemoOfLocMove(param.getCrnId()); + return R.ok(); + } + + + /****************************************************************/ /************************** 鎵嬪姩鎿嶄綔 ******************************/ /****************************************************************/ @ManagerAuth(memo = "鍏ュ簱") - @PostMapping("/operator/put") + @PostMapping("/crn/operator/put") public R crnPut(CrnOperatorParam param){ +// // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } CrnCommand command = new CrnCommand(); command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� command.setTaskNo((short) 0); // 宸ヤ綔鍙� @@ -207,51 +391,71 @@ command.setDestinationPosX(param.getRow()); // 鐩爣搴撲綅鎺� command.setDestinationPosY(param.getBay()); // 鐩爣搴撲綅鍒� command.setDestinationPosZ(param.getLev()); // 鐩爣搴撲綅灞� +// command.setCommand((short)1); return crnControl(command)?R.ok():R.error(); } @ManagerAuth(memo = "鍑哄簱") - @PostMapping("/operator/take") + @PostMapping("/crn/operator/take") public R crnTake(CrnOperatorParam param){ + // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } CrnCommand command = new CrnCommand(); command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� command.setTaskNo((short) 0); // 宸ヤ綔鍙� command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - command.setTaskMode(CrnTaskModeType.PAKOUT); // 浠诲姟妯″紡 + command.setTaskMode(CrnTaskModeType.PAKIN); // 浠诲姟妯″紡 command.setSourcePosX(param.getSourceRow()); // 婧愬簱浣嶆帓 command.setSourcePosY(param.getSourceBay()); // 婧愬簱浣嶅垪 command.setSourcePosZ(param.getSourceLev()); // 婧愬簱浣嶅眰 command.setDestinationPosX(param.getRow()); // 鐩爣搴撲綅鎺� command.setDestinationPosY(param.getBay()); // 鐩爣搴撲綅鍒� command.setDestinationPosZ(param.getLev()); // 鐩爣搴撲綅灞� +// command.setCommand((short)1); return crnControl(command)?R.ok():R.error(); } @ManagerAuth(memo = "搴撲綅杞Щ") - @PostMapping("/operator/stockMove") + @PostMapping("/crn/operator/stockMove") public R crnStockMove(CrnOperatorParam param){ + // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } CrnCommand command = new CrnCommand(); command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� command.setTaskNo((short) 0); // 宸ヤ綔鍙� command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� command.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡 - command.setSourcePosX(param.getSourceRow()); // 婧愬簱浣嶆帓 - command.setSourcePosY(param.getSourceBay()); // 婧愬簱浣嶅垪 - command.setSourcePosZ(param.getSourceLev()); // 婧愬簱浣嶅眰 - command.setDestinationPosX(param.getRow()); // 鐩爣搴撲綅鎺� - command.setDestinationPosY(param.getBay()); // 鐩爣搴撲綅鍒� - command.setDestinationPosZ(param.getLev()); // 鐩爣搴撲綅灞� + command.setSourcePosZ(param.getSourceRow()); // 婧愬簱浣嶆帓 + command.setSourcePosX(param.getSourceBay()); // 婧愬簱浣嶅垪 + command.setSourcePosY(param.getSourceLev()); // 婧愬簱浣嶅眰 + command.setDestinationPosZ(param.getRow()); // 鐩爣搴撲綅鎺� + command.setDestinationPosX(param.getBay()); // 鐩爣搴撲綅鍒� + command.setDestinationPosY(param.getLev()); // 鐩爣搴撲綅灞� +// command.setCommand((short)1); + LocMast sourceLoc = locMastService.selectOne(new EntityWrapper<LocMast>().eq("row1", command.getSourcePosX()) + .eq("bay1", command.getSourcePosY()).eq("lev1", command.getSourcePosZ())); + LocMast loc = locMastService.selectOne(new EntityWrapper<LocMast>().eq("row1", command.getDestinationPosX()) + .eq("bay1", command.getDestinationPosY()).eq("lev1", command.getDestinationPosZ())); + VersionUtils.locMoveCheckLocType(sourceLoc, loc); return crnControl(command)?R.ok():R.error(); } @ManagerAuth(memo = "绔欏埌绔�") - @PostMapping("/operator/siteMove") + @PostMapping("/crn/operator/siteMove") public R crnSiteMove(CrnOperatorParam param){ + // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } CrnCommand command = new CrnCommand(); command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� command.setTaskNo((short) 0); // 宸ヤ綔鍙� command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - command.setTaskMode(CrnTaskModeType.SITE_MOVE); // 浠诲姟妯″紡 + command.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡 command.setSourcePosX(param.getSourceStaNo()); // 婧愬簱浣嶆帓 command.setSourcePosY((short) 0); // 婧愬簱浣嶅垪 command.setSourcePosZ((short) 1); // 婧愬簱浣嶅眰 @@ -262,8 +466,12 @@ } @ManagerAuth(memo = "鍥炲師鐐�") - @PostMapping("/operator/bacOrigin") + @PostMapping("/crn/operator/bacOrigin") public R crnBacOrigin(CrnOperatorParam param){ + // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } CrnCommand command = new CrnCommand(); command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� command.setTaskNo((short) 0); // 宸ヤ綔鍙� @@ -279,8 +487,12 @@ } @ManagerAuth(memo = "鍙嶅師鐐�") - @PostMapping("/operator/reverseOrigin") + @PostMapping("/crn/operator/reverseOrigin") public R reverseOrigin(CrnOperatorParam param){ + // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } CrnCommand command = new CrnCommand(); command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� command.setTaskNo((short) 0); // 宸ヤ綔鍙� @@ -290,31 +502,36 @@ command.setSourcePosY((short) 0); // 婧愬簱浣嶅垪 command.setSourcePosZ((short) 0); // 婧愬簱浣嶅眰 command.setDestinationPosX((short) 0); // 鐩爣搴撲綅鎺� - command.setDestinationPosY((short) 34); // 鐩爣搴撲綅鍒� - command.setDestinationPosZ((short) 5); // 鐩爣搴撲綅灞� + command.setDestinationPosY((short) 22); // 鐩爣搴撲綅鍒� + command.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞� return crnControl(command)?R.ok():R.error(); } - @ManagerAuth(memo = "鍧愭爣绉诲姩") - @PostMapping("/operator/coorMove") - public R crnCoorMove(CrnOperatorParam param){ - CrnCommand command = new CrnCommand(); - command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� - command.setTaskNo((short) 0); // 宸ヤ綔鍙� - command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - command.setTaskMode(CrnTaskModeType.OFFSET_MOVE); // 浠诲姟妯″紡 - command.setSourcePosX(param.getSourceRow()); // 婧愬簱浣嶆帓 - command.setSourcePosY(param.getSourceBay()); // 婧愬簱浣嶅垪 - command.setSourcePosZ(param.getSourceLev()); // 婧愬簱浣嶅眰 - command.setDestinationPosX(param.getRow()); // 鐩爣搴撲綅鎺� - command.setDestinationPosY(param.getBay()); // 鐩爣搴撲綅鍒� - command.setDestinationPosZ(param.getLev()); // 鐩爣搴撲綅灞� - return crnControl(command)?R.ok():R.error(); - } +// @ManagerAuth(memo = "鍧愭爣绉诲姩") +// @PostMapping("/operator/coorMove") +// public R crnCoorMove(CrnOperatorParam param){ +// CrnCommand command = new CrnCommand(); +// command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� +// command.setTaskNo((short) 0); // 宸ヤ綔鍙� +// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� +// command.setTaskMode(CrnTaskModeType.OFFSET_MOVE); // 浠诲姟妯″紡 +// command.setSourcePosX(param.getSourceRow()); // 婧愬簱浣嶆帓 +// command.setSourcePosY(param.getSourceBay()); // 婧愬簱浣嶅垪 +// command.setSourcePosZ(param.getSourceLev()); // 婧愬簱浣嶅眰 +// command.setDestinationPosX(param.getRow()); // 鐩爣搴撲綅鎺� +// command.setDestinationPosY(param.getBay()); // 鐩爣搴撲綅鍒� +// command.setDestinationPosZ(param.getLev()); // 鐩爣搴撲綅灞� +// staNoProcess(param, command); +// return crnControl(command)?R.ok():R.error(); +// } @ManagerAuth(memo = "浠诲姟瀹屾垚") - @PostMapping("/operator/taskComplete") + @PostMapping("/crn/operator/taskComplete") public R crnTaskComplete(CrnOperatorParam param){ + // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } CrnCommand command = new CrnCommand(); command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� command.setTaskNo((short) 0); // 宸ヤ綔鍙� @@ -326,6 +543,7 @@ command.setDestinationPosX((short) 0); // 鐩爣搴撲綅鎺� command.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒� command.setDestinationPosZ((short) 0); // 鐩爣搴撲綅灞� + command.setCommand((short)0); return crnControl(command)?R.ok():R.error(); } @@ -342,18 +560,36 @@ // } @ManagerAuth(memo = "娓呴櫎鍛戒护") - @PostMapping("/operator/clearCommand") + @PostMapping("/crn/operator/clearCommand") public R crnClearCommand(CrnOperatorParam param){ + // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } if (param.getCrnNo() == null) { throw new CoolException("璇烽�夋嫨鍫嗗灈鏈�"); } - MessageQueue.clear(SlaveType.Crn, param.getCrnNo()); - return R.ok("娓呴櫎鍛戒护鎴愬姛"); + CrnCommand command = new CrnCommand(); + command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� + command.setTaskNo((short) 0); // 宸ヤ綔鍙� + command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + command.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡 + command.setSourcePosX((short) 0); // 婧愬簱浣嶆帓 + command.setSourcePosY((short) 0); // 婧愬簱浣嶅垪 + command.setSourcePosZ((short) 0); // 婧愬簱浣嶅眰 + command.setDestinationPosX((short) 0); // 鐩爣搴撲綅鎺� + command.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒� + command.setDestinationPosZ((short) 0); // 鐩爣搴撲綅灞� + return crnControl(command)?R.ok():R.error(); } @ManagerAuth(memo = "鎵嬪姩澶嶄綅") - @PostMapping("/operator/handleReset") + @PostMapping("/crn/operator/handleReset") public R handleReset(CrnOperatorParam param) throws Exception { + // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } if (param.getCrnNo() == null) { throw new CoolException("璇烽�夋嫨鍫嗗灈鏈�"); } @@ -369,28 +605,183 @@ if (crnProtocol == null) { throw new CoolException("鍫嗗灈鏈轰笉鍦ㄧ嚎"); } - // 鍙湁鍑虹幇鎸囧畾寮傚父鎵嶈繘琛屽浣� - if (crnProtocol.getCrnError3().leftTakeNoneErr - || crnProtocol.getCrnError3().rightTakeNoneErr - || crnProtocol.getCrnError3().leftTakeThenLoadErr - || crnProtocol.getCrnError3().rightTakeThenLoadErr) { - CrnCommand command = new CrnCommand(); - command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� - command.setAckFinish((short) 1); // 浠诲姟瀹屾垚纭浣� - command.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡 - // 寤舵椂鍙戦�� - Thread.sleep(3000L); - if (MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(2, command))) { - return R.ok(); - } else { - throw new CoolException("鍛戒护涓嬪彂澶辫触"); - } + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(crn.getId()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskMode(CrnTaskModeType.CLEAR); + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setCommand((short) 0); // 浠诲姟瀹屾垚纭浣� + // 寤舵椂鍙戦�� + Thread.sleep(1000L); + if (CommandUtils.offer(SlaveType.Crn, crn.getId(), new Task(5, crnCommand), false)) { + return R.ok(); + } else { + throw new CoolException("鍛戒护涓嬪彂澶辫触"); } + + } } return R.error(); } + + @ManagerAuth(memo = "鍒囨崲鑱旀満妯″紡") + @PostMapping("/crn/operator/auto") + public R crnAuto(CrnOperatorParam param){ + // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } + short[] array = new short[9]; + CrnCommand command = new CrnCommand(); + command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� + command.setTaskNo((short) 0); // 宸ヤ綔鍙� + command.setAuto((short)1); + + return crnControl2(command)?R.ok():R.error(); + } + @ManagerAuth(memo = "鍒囨崲鍗婃墜鍔ㄦā寮�") + @PostMapping("/crn/operator/semiAutomatic") + public R crnsemiAutomatic(CrnOperatorParam param){ + // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } + short[] array = new short[9]; + CrnCommand command = new CrnCommand(); + command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� + command.setTaskNo((short) 0); // 宸ヤ綔鍙� + command.setAuto((short)2); + + return crnControl2(command)?R.ok():R.error(); + } + @ManagerAuth(memo = "鍒囨崲鎵嬪姩妯″紡") + @PostMapping("/crn/operator/hand") + public R onlineWrk1(CrnOperatorParam param){ + // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } + short[] array = new short[9]; + CrnCommand command = new CrnCommand(); + command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� + command.setTaskNo((short) 0); // 宸ヤ綔鍙� + command.setAuto((short)3); + + return crnControl2(command)?R.ok():R.error(); + } + @ManagerAuth(memo = "鐢宠瀹屾垚浠诲姟") + @PostMapping("/crn/operator/onlineWrk1") + public R onlineWrk2(CrnOperatorParam param){ + // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } + short[] array = new short[9]; + CrnCommand command = new CrnCommand(); + command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� + command.setTaskNo((short) 0); // 宸ヤ綔鍙� + command.setOnlineWrk1((short)1); + + return crnControl2(command)?R.ok():R.error(); + } + @ManagerAuth(memo = "鐢宠鍙栨秷浠诲姟") + @PostMapping("/crn/operator/onlineWrk2") + public R onlineWrk3(CrnOperatorParam param){ + // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } + short[] array = new short[9]; + CrnCommand command = new CrnCommand(); + command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� + command.setTaskNo((short) 0); // 宸ヤ綔鍙� + command.setOnlineWrk2((short)1); + + return crnControl2(command)?R.ok():R.error(); + } + @ManagerAuth(memo = "娓呴櫎鑱旀満浠诲姟") + @PostMapping("/crn/operator/onlineWrk3") + public R onlineWrk4(CrnOperatorParam param){ + // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } + short[] array = new short[9]; + CrnCommand command = new CrnCommand(); + command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� + command.setTaskNo((short) 0); // 宸ヤ綔鍙� + command.setOnlineWrk3((short)1); + + return crnControl2(command)?R.ok():R.error(); + } + @ManagerAuth(memo = "鎭㈠鑱旀満浠诲姟") + @PostMapping("/crn/operator/onlineWrk4") + public R crnHand(CrnOperatorParam param){ + // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } + short[] array = new short[9]; + CrnCommand command = new CrnCommand(); + command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� + command.setTaskNo((short) 0); // 宸ヤ綔鍙� + command.setOnlineWrk4((short)1); + + return crnControl2(command)?R.ok():R.error(); + } + + @ManagerAuth(memo = "澶嶄綅") + @PostMapping("/crn/operator/reset") + public R crnReset(CrnOperatorParam param){ + // 绯荤粺杩愯鐘舵�佸垽鏂� +// if (SystemProperties.WCS_RUNNING_STATUS.get()) { +// return R.error("wcs绯荤粺鐘舵�佷负寮�鍚�"); +// } + short[] array = new short[9]; + CrnCommand command = new CrnCommand(); + command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� + command.setTaskNo((short) 0); // 宸ヤ綔鍙� + command.setReset((short)1); + + return crnControl2(command)?R.ok():R.error(); + } + + + + private boolean crnControl2(CrnCommand command){ + if (command.getCrnNo() == null) { + throw new CoolException("璇烽�夋嫨鍫嗗灈鏈�"); + } + for (CrnSlave crn : slaveProperties.getCrn()) { + // 鑾峰彇鍫嗗灈鏈轰俊鎭� + if (command.getCrnNo().equals(crn.getId())) { + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); + if (crnThread == null) { + throw new CoolException("鍫嗗灈鏈轰笉鍦ㄧ嚎"); + } + CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol == null) { + throw new CoolException("鍫嗗灈鏈轰笉鍦ㄧ嚎"); + } + // 绌洪棽鍒ゆ柇 +// if (crnProtocol.getStatusType().equals(com.zy.core.enums.CrnStatusType.IDLE) && crnProtocol.getTaskNo() == 0) { + if (CommandUtils.offer(SlaveType.Crn, crn.getId(), new Task(4, command), false)) { + return true; + } else { + throw new CoolException("鍛戒护涓嬪彂澶辫触"); + } +// } else { +// throw new CoolException("鍫嗗灈鏈轰笉鍦ㄧ┖闂茬姸鎬�"); +// } + } + } + return false; + } + + + + private boolean crnControl(CrnCommand command){ if (command.getCrnNo() == null) { @@ -409,11 +800,11 @@ } // 绌洪棽鍒ゆ柇 // if (crnProtocol.getStatusType().equals(com.zy.core.enums.CrnStatusType.IDLE) && crnProtocol.getTaskNo() == 0) { - if (MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(2, command))) { - return true; - } else { - throw new CoolException("鍛戒护涓嬪彂澶辫触"); - } + if (CommandUtils.offer(SlaveType.Crn, crn.getId(), new Task(2, command), false)) { + return true; + } else { + throw new CoolException("鍛戒护涓嬪彂澶辫触"); + } // } else { // throw new CoolException("鍫嗗灈鏈轰笉鍦ㄧ┖闂茬姸鎬�"); // } @@ -422,4 +813,58 @@ return false; } + private void staNoProcess(CrnOperatorParam param, CrnCommand command){ + if (param.getSourceStaNo()!=null) { + if (param.getSourceStaNo() == 5) { + command.setSourcePosX((short) 2); // 婧愬簱浣嶆帓 + command.setSourcePosY((short) 0); // 婧愬簱浣嶅垪 + command.setSourcePosZ((short) 1); // 婧愬簱浣嶅眰 + } else if (param.getSourceStaNo() == 6) { + command.setSourcePosX((short) 1); // 婧愬簱浣嶆帓 + command.setSourcePosY((short) 0); // 婧愬簱浣嶅垪 + command.setSourcePosZ((short) 1); // 婧愬簱浣嶅眰 + } + } + if (param.getStaNo()!=null) { + if (param.getStaNo() == 5) { + command.setDestinationPosX((short) 2); // 鐩爣搴撲綅鎺� + command.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒� + command.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞� + } else if (param.getStaNo() == 6) { + command.setDestinationPosX((short) 1); // 鐩爣搴撲綅鎺� + command.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒� + command.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞� + } + } + } + + // /crn/list/auth + @RequestMapping(value = "/crnListQuery/auth") + @ManagerAuth + public R listQuery(String condition){ + ArrayList<HashMap<String, Object>> list = new ArrayList<>(); + for (CrnSlave crn : slaveProperties.getCrn()) { + // 鑾峰彇鍫嗗灈鏈轰俊鎭� + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); + if (crnThread == null) { + continue; + } + CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol == null) { + continue; + } + + HashMap<String, Object> map = new HashMap<>(); + map.put("id", crn.getId()); + map.put("value", "鍫嗗灈鏈�" + crn.getId() + "鍙�"); + if (condition != "" && !condition.equals(crn.getId().toString())) { + continue; + } + + list.add(map); + } + return R.ok().add(list); + } + + } -- Gitblit v1.9.1