From 0ac76f7d8101903e1d050116f7d3835ce1303dfa Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期一, 06 一月 2025 17:00:37 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/controller/SiteController.java | 49 src/main/java/com/zy/core/enums/ForkLiftConfirmType.java | 40 src/main/java/com/zy/core/model/command/ShuttleCommand.java | 84 src/main/java/com/zy/core/enums/LocStsType.java | 27 src/main/java/com/zy/core/model/protocol/ForkLiftStaProtocol.java | 49 src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java | 44 src/main/resources/mapper/LocMastMapper.xml | 40 src/main/java/com/zy/core/model/PythonResult.java | 18 src/main/java/com/zy/asrs/utils/Utils.java | 433 - src/main/java/com/zy/core/model/PythonSimilarityResult.java | 16 src/main/java/com/zy/core/action/ShuttleAction.java | 668 ++ src/main/java/com/zy/core/model/command/ForkLiftCommand.java | 47 src/main/java/com/zy/asrs/mapper/LocMastMapper.java | 22 src/main/java/com/zy/core/thread/ForkLiftThread.java | 46 src/main/java/com/zy/asrs/entity/LocMast.java | 71 src/main/java/com/zy/common/service/CommonService.java | 41 src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java | 277 + src/main/java/com/zy/asrs/entity/BasShuttle.java | 17 src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java | 247 src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java | 38 src/main/java/com/zy/common/model/NavigateNode.java | 14 src/main/java/com/zy/common/utils/ShuttleOperaUtils.java | 355 + src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 4692 +++++++----------- src/main/java/com/zy/common/utils/ForkLiftUtils.java | 74 src/main/java/com/zy/core/thread/ShuttleThread.java | 1285 ----- src/main/java/com/zy/asrs/domain/vo/ShuttleStateTableVo.java | 24 src/main/java/com/zy/core/action/ForkLiftAction.java | 155 src/main/java/com/zy/asrs/entity/WrkMastLog.java | 10 src/main/java/com/zy/core/enums/MapNodeType.java | 49 src/main/java/com/zy/asrs/entity/BasLift.java | 9 src/main/java/com/zy/core/ServerBootstrap.java | 26 src/main/java/com/zy/common/utils/ForkLiftOperaUtils.java | 26 src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java | 98 src/main/java/com/zy/core/enums/ShuttleTaskModeType.java | 38 src/main/java/com/zy/core/model/command/NyShuttleHttpCommand.java | 2 src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java | 3 src/main/java/com/zy/common/utils/NavigateSolution.java | 277 src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java | 343 src/main/java/com/zy/core/model/command/ShuttleRedisCommand.java | 4 src/main/java/com/zy/asrs/domain/vo/ShuttleMsgTableVo.java | 40 src/main/java/com/zy/core/thread/impl/NyShuttleThread.java | 1150 ++++ src/main/resources/mapper/BasMapMapper.xml | 3 src/main/java/com/zy/asrs/domain/vo/LiftStateTableVo.java | 7 src/main/java/com/zy/common/utils/NavigateUtils.java | 272 src/main/java/com/zy/asrs/controller/MonitorController.java | 117 src/main/java/com/zy/core/model/command/LiftAssignCommand.java | 4 src/main/resources/mapper/BasShuttleMapper.xml | 44 src/main/java/com/zy/asrs/controller/ForkLiftController.java | 243 + src/main/java/com/zy/common/model/ShuttleOperaResult.java | 4 src/main/java/com/zy/core/enums/ShuttleTaskNoType.java | 48 src/main/java/com/zy/core/model/protocol/ForkLiftProtocol.java | 173 src/main/java/com/zy/common/model/MapNode.java | 40 src/main/java/com/zy/core/enums/ForkLiftIoModeType.java | 41 src/main/java/com/zy/core/model/CommandResponse.java | 23 src/main/java/com/zy/core/enums/ShuttleCommandModeType.java | 53 src/main/java/com/zy/core/ThreadHandler.java | 3 src/main/java/com/zy/core/enums/SlaveType.java | 3 src/main/java/com/zy/core/cache/OutputQueue.java | 2 src/main/java/com/zy/core/MainProcess.java | 60 src/main/java/com/zy/common/utils/NavigateMapData.java | 16 src/main/java/com/zy/core/model/param/ShuttleMoveLocParam.java | 20 src/main/java/com/zy/core/thread/LiftThread.java | 1048 ++-- src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java | 6 src/main/java/com/zy/core/enums/ForkLiftProtocolStatusType.java | 43 src/main/java/com/zy/asrs/entity/WrkMast.java | 249 - src/main/java/com/zy/common/ExecuteSupport.java | 7 src/main/java/com/zy/core/model/ForkLiftSlave.java | 37 src/main/resources/mapper/WrkMastMapper.xml | 95 src/main/java/com/zy/core/model/protocol/LiftStaProtocol.java | 36 src/main/java/com/zy/common/utils/NavigatePositionConvert.java | 31 src/main/java/com/zy/core/properties/SlaveProperties.java | 10 /dev/null | 80 src/main/java/com/zy/asrs/task/ShuttlePowerEarlyWarning.java | 14 src/main/java/com/zy/asrs/controller/ConsoleController.java | 98 src/main/java/com/zy/core/enums/WrkStsType.java | 66 src/main/java/com/zy/core/model/command/LiftCommand.java | 1 src/main/java/com/zy/asrs/service/WrkMastService.java | 19 src/main/java/com/zy/asrs/controller/ShuttleController.java | 347 src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 7 src/main/java/com/zy/core/enums/RedisKeyType.java | 1 src/main/resources/application.yml | 50 src/main/java/com/zy/asrs/entity/StaDesc.java | 10 82 files changed, 7,274 insertions(+), 7,105 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/ConsoleController.java b/src/main/java/com/zy/asrs/controller/ConsoleController.java index 9d6be6e..7aa5a3b 100644 --- a/src/main/java/com/zy/asrs/controller/ConsoleController.java +++ b/src/main/java/com/zy/asrs/controller/ConsoleController.java @@ -3,10 +3,8 @@ import com.alibaba.fastjson.JSON; import com.core.annotations.ManagerAuth; import com.core.common.Arith; -import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.R; -import com.zy.asrs.domain.enums.CrnStatusType; import com.zy.asrs.domain.enums.SiteStatusType; import com.zy.asrs.domain.param.SystemSwitchParam; import com.zy.asrs.domain.vo.*; @@ -20,36 +18,26 @@ import com.zy.common.CodeRes; import com.zy.common.model.MapNode; import com.zy.common.model.enums.NavigationMapType; -import com.zy.common.utils.Http; import com.zy.common.utils.NavigateMapData; import com.zy.common.utils.RedisUtil; -import com.zy.core.CrnThread; import com.zy.core.DevpThread; import com.zy.core.Slave; import com.zy.core.cache.OutputQueue; import com.zy.core.cache.SlaveConnection; -import com.zy.core.enums.CrnModeType; import com.zy.core.enums.RedisKeyType; import com.zy.core.enums.SlaveType; -import com.zy.core.model.CrnSlave; import com.zy.core.model.DevpSlave; -import com.zy.core.model.protocol.CrnProtocol; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.properties.SlaveProperties; import com.zy.core.properties.SystemProperties; import com.zy.core.thread.BarcodeThread; import com.zy.core.thread.ScaleThread; -import com.zy.core.thread.SiemensCrnThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStreamReader; import java.util.*; /** @@ -125,50 +113,6 @@ vo.setWorkNo(staProtocol.getWorkNo()); // 宸ヤ綔鍙� vo.setSiteStatus(SiteStatusType.process(staProtocol)); // 鐘舵�� vos.add(vo); - } - return R.ok().add(vos); - } - - @PostMapping("/latest/data/crn") - @ManagerAuth(memo = "鍫嗗灈鏈哄疄鏃舵暟鎹�") - public R crnLatestData(){ - List<CrnLatestDataVo> vos = 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; - } - CrnLatestDataVo vo = new CrnLatestDataVo(); - vo.setCrnId(crn.getId()); // 鍫嗗灈鏈虹紪鍙� - -// Short totalBay = locMastMapper.selectTotalBay(); - - vo.setOffset((double) new Random().nextInt(560)); // 鍫嗗灈鏈哄亸绉婚噺 - vo.setBay((short) (crnProtocol.getBay() - crn.getOffset())); // 褰撳墠鍒� - /** - * 鍫嗗灈鏈虹姸鎬佸垽鏂� - */ - if (crn.getId() == 1 && crnProtocol.getAlarm() > 0) { - vo.setCrnStatus(CrnStatusType.MACHINE_ERROR); - } else { - if (crnProtocol.getTaskNo()>0) { - WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo()); - if (wrkMast != null) { - vo.setCrnStatus(CrnStatusType.process(wrkMast.getIoType())); - } else { - vo.setCrnStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO: CrnStatusType.MACHINE_UN_AUTO); - } - } else { - vo.setCrnStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO: CrnStatusType.MACHINE_UN_AUTO); - } - } - vos.add(vo); - } return R.ok().add(vos); } @@ -256,38 +200,6 @@ } - @PostMapping("/crn/detail") - @ManagerAuth(memo = "鍫嗗灈鏈鸿澶囨暟鎹鎯�") - public R crnDetail(@RequestParam Integer crnNo){ - if (Cools.isEmpty(crnNo)){ - return R.parse(CodeRes.EMPTY); - } - CrnDetailVo vo = new CrnDetailVo(); - for (CrnSlave crnSlave : slaveProperties.getCrn()) { - if (crnSlave.getId().equals(crnNo)) { - SiemensCrnThread crnThread = (SiemensCrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId()); - CrnProtocol crnProtocol = crnThread.getCrnProtocol(); - vo.setCrnNo(crnNo); - vo.setWorkNo(crnProtocol.getTaskNo()); - if (crnProtocol.getTaskNo() > 0) { - WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo()); - if (wrkMast != null) { - vo.setSourceStaNo(wrkMast.getSourceStaNo$()); - vo.setStaNo(wrkMast.getStaNo$()); - vo.setWrkSts(wrkMast.getWrkSts$()); // 宸ヤ綔鐘舵�� - vo.setIoType(wrkMast.getIoType$()); // 鍏ュ嚭搴撶被鍨� - vo.setSourceLocNo(wrkMast.getSourceLocNo$()); - vo.setLocNo(wrkMast.getLocNo$()); - vo.setCrnStatus(crnProtocol.getStatusType().desc); - vo.setError(""); // todo - } - } - return R.ok().add(vo); - } - } - return R.error(); - } - @Deprecated @PostMapping("/site/update") @ManagerAuth(memo = "杈撻�佽澶囨暟鎹慨鏀�") @@ -303,15 +215,7 @@ } @GetMapping("/barcode/output/site") - public R crnOutput(){ -// StringBuilder str = new StringBuilder(); -// String s; -// int i = 0; -// while((s = OutputQueue.CRN.poll()) != null && i <=32) { -// str.append("\n").append(s); -// i++; -// } -// return R.ok().add(str.toString()); + public R barcodeOutput(){ return R.ok().add(JSON.toJSONString(new ArrayList<>(OutputQueue.BARCODE))); } diff --git a/src/main/java/com/zy/asrs/controller/CrnController.java b/src/main/java/com/zy/asrs/controller/CrnController.java deleted file mode 100644 index 2d23c46..0000000 --- a/src/main/java/com/zy/asrs/controller/CrnController.java +++ /dev/null @@ -1,527 +0,0 @@ -package com.zy.asrs.controller; - -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.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.LocMast; -import com.zy.asrs.entity.WrkMast; -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.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.CrnModeType; -import com.zy.core.enums.CrnTaskModeType; -import com.zy.core.enums.SlaveType; -import com.zy.core.model.CrnSlave; -import com.zy.core.model.Task; -import com.zy.core.model.command.CrnCommand; -import com.zy.core.model.protocol.CrnProtocol; -import com.zy.core.properties.SlaveProperties; -import com.zy.core.properties.SystemProperties; -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; - -/** - * 鍫嗗灈鏈烘帴鍙� - * Created by vincent on 2020-06-01 - */ -@Slf4j -@RestController -@RequestMapping("/crn") -public class CrnController { - - @Autowired - private SlaveProperties slaveProperties; - @Autowired - private WrkMastService wrkMastService; - @Autowired - private BasCrnErrorMapper basCrnErrorMapper; - @Autowired - private BasCrnpService basCrnpService; - @Autowired - private MainServiceImpl mainService; - @Autowired - private LocMastService locMastService; - - - @ManagerAuth(memo = "杩涜涓殑鍛戒护") - @PostMapping("/command/ongoing") - public R ongoingCommand(){ - List<CommandLogVo> list = new ArrayList<>(); - for (CrnSlave crn : slaveProperties.getCrn()) { - CommandLogVo vo = new CommandLogVo(); - vo.setCrnNo(crn.getId()); // 鍫嗗灈鏈哄彿 - vo.setStatus(0); // 鐘舵�� - list.add(vo); - // 鑾峰彇鍫嗗灈鏈轰俊鎭� - CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); - if (crnThread == null) { - continue; - } - CrnProtocol crnProtocol = crnThread.getCrnProtocol(); - if (crnProtocol == null) { - continue; - } - vo.setStatus(1); // 鐘舵�� - Task task = MessageQueue.peek(SlaveType.Crn, crn.getId()); - if (task != null) { - vo.setCommand(JSON.toJSONString((CrnCommand)task.getData())); - } - } - return R.ok().add(list); - } - - @PostMapping("/table/crn/state") - @ManagerAuth(memo = "鍫嗗灈鏈轰俊鎭〃") - public R crnStateTable(){ - List<CrnStateTableVo> list = new ArrayList<>(); - List<BasCrnp> crnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().orderBy("crn_no")); - for (BasCrnp basCrnp : crnps) { - // 琛ㄦ牸琛� - CrnStateTableVo vo = new CrnStateTableVo(); - 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()); // 浠诲姟鍙� - vo.setStatusType(crnProtocol.modeType.desc); // 妯″紡鐘舵�� - vo.setStatus(crnProtocol.getStatusType().desc); // 鐘舵�� - vo.setLoading(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.getAlarm())); - 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") - @ManagerAuth(memo = "鍫嗗灈鏈烘暟鎹〃") - public R crnMsgTable(){ - List<CrnMsgTableVo> list = new ArrayList<>(); - List<BasCrnp> crnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().orderBy("crn_no")); - for (BasCrnp basCrnp : crnps) { - // 琛ㄦ牸琛� - CrnMsgTableVo vo = new CrnMsgTableVo(); - 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.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(list); - } - - @PostMapping("/output/site") - @ManagerAuth(memo = "鍫嗗灈鏈烘姤鏂囨棩蹇楄緭鍑�") - public R crnOutput(){ - StringBuilder str = new StringBuilder(); - String s; - int i = 0; - while((s = OutputQueue.CRN.poll()) != null && i <=10) { - str.append("\n").append(s); - i++; - } - return R.ok().add(str.toString()); - } - - - @GetMapping("/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("/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") - public R crnPut(CrnOperatorParam param){ - CrnCommand command = new CrnCommand(); - command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� - command.setTaskNo((short) 0); // 宸ヤ綔鍙� - command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - 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()); // 鐩爣搴撲綅灞� - return crnControl(command)?R.ok():R.error(); - } - - @ManagerAuth(memo = "鍑哄簱") - @PostMapping("/operator/take") - public R crnTake(CrnOperatorParam param){ - CrnCommand command = new CrnCommand(); - command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� - command.setTaskNo((short) 0); // 宸ヤ綔鍙� - command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - command.setTaskMode(CrnTaskModeType.PAKOUT); // 浠诲姟妯″紡 - 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/stockMove") - public R crnStockMove(CrnOperatorParam param){ - 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()); // 鐩爣搴撲綅灞� - 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/steMove") - public R crnSteMove(CrnOperatorParam param){ - CrnCommand command = new CrnCommand(); - command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� - command.setTaskNo((short) 0); // 宸ヤ綔鍙� - command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - command.setTaskMode(CrnTaskModeType.STE_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/siteMove") - public R crnSiteMove(CrnOperatorParam param){ - CrnCommand command = new CrnCommand(); - command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� - command.setTaskNo((short) 0); // 宸ヤ綔鍙� - command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - command.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡 - command.setSourcePosX(param.getSourceStaNo()); // 婧愬簱浣嶆帓 - command.setSourcePosY((short) 0); // 婧愬簱浣嶅垪 - command.setSourcePosZ((short) 1); // 婧愬簱浣嶅眰 - command.setDestinationPosX(param.getStaNo()); // 鐩爣搴撲綅鎺� - command.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒� - command.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞� - return crnControl(command)?R.ok():R.error(); - } - - @ManagerAuth(memo = "鍥炲師鐐�") - @PostMapping("/operator/bacOrigin") - public R crnBacOrigin(CrnOperatorParam param){ - CrnCommand command = new CrnCommand(); - command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� - command.setTaskNo((short) 0); // 宸ヤ綔鍙� - command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - command.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡 - 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/reverseOrigin") - public R reverseOrigin(CrnOperatorParam param){ - CrnCommand command = new CrnCommand(); - command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� - command.setTaskNo((short) 0); // 宸ヤ綔鍙� - command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - command.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡 - command.setSourcePosX((short) 0); // 婧愬簱浣嶆帓 - command.setSourcePosY((short) 0); // 婧愬簱浣嶅垪 - command.setSourcePosZ((short) 0); // 婧愬簱浣嶅眰 - command.setDestinationPosX((short) 0); // 鐩爣搴撲綅鎺� - command.setDestinationPosY((short) 34); // 鐩爣搴撲綅鍒� - command.setDestinationPosZ((short) 5); // 鐩爣搴撲綅灞� - 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") - public R crnTaskComplete(CrnOperatorParam param){ - - // 鑾峰彇鍫嗗灈鏈轰俊鎭� - CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, param.getCrnNo()); - if (crnThread == null) { - return R.error(); - } - CrnProtocol crnProtocol = crnThread.getCrnProtocol(); - if (crnProtocol == null) { - return R.error(); - } - - //鍫嗗灈鏈虹姸鎬佷笉鏄瓑寰匴CS纭鏃讹紝涓嶈兘涓嬪彂纭浣� - if (!crnProtocol.getStatusType().equals(com.zy.core.enums.CrnStatusType.WAITING)){ - return R.error("鍫嗗灈鏈轰笉鏄瓑寰匴CS纭鐘舵��"); - } - CrnCommand command = new CrnCommand(); - command.setCrnNo(param.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� - command.setTaskNo((short) 0); // 宸ヤ綔鍙� - command.setAckFinish((short) 1); // 浠诲姟瀹屾垚纭浣� - 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/pause") -// public R crnPause(CrnOperatorParam param){ -// return R.ok("鏆傚仠鎴愬姛"); -// } -// -// @ManagerAuth(memo = "鍚姩") -// @PostMapping("/operator/boot") -// public R crnBoot(CrnOperatorParam param){ -// return R.ok("鍚姩鎴愬姛"); -// } - - @ManagerAuth(memo = "娓呴櫎鍛戒护") - @PostMapping("/operator/clearCommand") - public R crnClearCommand(CrnOperatorParam param){ - if (param.getCrnNo() == null) { - throw new CoolException("璇烽�夋嫨鍫嗗灈鏈�"); - } - MessageQueue.clear(SlaveType.Crn, param.getCrnNo()); - return R.ok("娓呴櫎鍛戒护鎴愬姛"); - } - - @ManagerAuth(memo = "鎵嬪姩澶嶄綅") - @PostMapping("/operator/handleReset") - public R handleReset(CrnOperatorParam param) throws Exception { - if (param.getCrnNo() == null) { - throw new CoolException("璇烽�夋嫨鍫嗗灈鏈�"); - } - // 鑾峰彇鍫嗗灈鏈虹紦瀛� - for (CrnSlave crn : slaveProperties.getCrn()) { - // 鑾峰彇鍫嗗灈鏈轰俊鎭� - if (param.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("鍫嗗灈鏈轰笉鍦ㄧ嚎"); - } - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setCrnNo(crn.getId()); // 鍫嗗灈鏈虹紪鍙� - crnCommand.setTaskMode(CrnTaskModeType.CLEAR); - crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - crnCommand.setCommand((short) 0); // 浠诲姟瀹屾垚纭浣� - // 寤舵椂鍙戦�� - Thread.sleep(1000L); - if (MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(2, crnCommand))) { - return R.ok(); - } else { - throw new CoolException("鍛戒护涓嬪彂澶辫触"); - } - - - } - } - - return R.error(); - } - - private boolean crnControl(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 (MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(2, command))) { - return true; - } else { - throw new CoolException("鍛戒护涓嬪彂澶辫触"); - } -// } else { -// throw new CoolException("鍫嗗灈鏈轰笉鍦ㄧ┖闂茬姸鎬�"); -// } - } - } - 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); // 鐩爣搴撲綅灞� - } - } - } - - -} diff --git a/src/main/java/com/zy/asrs/controller/ForkLiftController.java b/src/main/java/com/zy/asrs/controller/ForkLiftController.java new file mode 100644 index 0000000..b42a56f --- /dev/null +++ b/src/main/java/com/zy/asrs/controller/ForkLiftController.java @@ -0,0 +1,243 @@ +package com.zy.asrs.controller; + +import com.alibaba.fastjson.JSON; +import com.core.annotations.ManagerAuth; +import com.core.common.Cools; +import com.core.common.R; +import com.zy.asrs.domain.vo.*; +import com.zy.asrs.entity.BasLift; +import com.zy.asrs.service.BasLiftService; +import com.zy.common.utils.RedisUtil; +import com.zy.core.cache.OutputQueue; +import com.zy.core.cache.SlaveConnection; +import com.zy.core.enums.ForkLiftProtocolStatusType; +import com.zy.core.enums.RedisKeyType; +import com.zy.core.enums.SlaveType; +import com.zy.core.model.ForkLiftSlave; +import com.zy.core.model.command.*; +import com.zy.core.model.protocol.ForkLiftProtocol; +import com.zy.core.properties.SlaveProperties; +import com.zy.core.thread.ForkLiftThread; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * 鎻愬崌鏈烘帴鍙� + */ +@Slf4j +@RestController +@RequestMapping("/lift") +public class ForkLiftController { + + @Autowired + private SlaveProperties slaveProperties; + @Autowired + private BasLiftService basLiftService; + @Autowired + private RedisUtil redisUtil; + + @PostMapping("/table/lift/state") + @ManagerAuth(memo = "鎻愬崌鏈轰俊鎭〃") + public R liftStateTable(){ + List<LiftStateTableVo> list = new ArrayList<>(); + for (ForkLiftSlave slave : slaveProperties.getForkLift()) { + // 琛ㄦ牸琛� + LiftStateTableVo vo = new LiftStateTableVo(); + vo.setLiftNo(slave.getId()); //鎻愬崌鏈哄彿 + list.add(vo); + // 鑾峰彇鎻愬崌鏈轰俊鎭� + ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, slave.getId()); + if (forkLiftThread == null) { + vo.setProtocolStatus(ForkLiftProtocolStatusType.NONE.id);//绂荤嚎 + continue; + } + ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); + if (forkLiftProtocol == null || forkLiftProtocol.getLiftNo()==null) { + continue; + } + vo.setTaskNo(forkLiftProtocol.getTaskNo().shortValue()); // 浠诲姟鍙� + vo.setProtocolStatus(forkLiftProtocol.getProtocolStatusType().id); + } + return R.ok().add(list); + } + + @PostMapping("/table/lift/msg") + @ManagerAuth(memo = "鎻愬崌鏈烘暟鎹〃") + public R liftMsgTable(){ + List<LiftMsgTableVo> list = new ArrayList<>(); + for (ForkLiftSlave slave : slaveProperties.getForkLift()) { + // 琛ㄦ牸琛� + LiftMsgTableVo vo = new LiftMsgTableVo(); + vo.setLiftNo(slave.getId()); // 鎻愬崌鏈哄彿 + list.add(vo); + // 鑾峰彇鎻愬崌鏈轰俊鎭� + ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, slave.getId()); + if (forkLiftThread == null) { + continue; + } + ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); + if (forkLiftProtocol == null) { + continue; + } + + vo.setWorkNo(forkLiftProtocol.getTaskNo().intValue());//浠诲姟鍙� + vo.setPakMk(forkLiftProtocol.getPakMk()?"Y" : "N"); // 浣滀笟鏍囪 + } + return R.ok().add(list); + } + + @PostMapping("/output/lift") + @ManagerAuth + public R liftOutput(){ + StringBuilder str = new StringBuilder(); + String s; + int i = 0; + while((s = OutputQueue.LIFT.poll()) != null && i <=10) { + str.append("\n").append(s); + i++; + } + return R.ok().add(str.toString()); + } + + @GetMapping("/detl/{liftNo}") + public R liftDetl(@PathVariable("liftNo") Integer liftNo){ + LiftDataVo vo = new LiftDataVo(); + for (ForkLiftSlave liftSlave : slaveProperties.getForkLift()) { + if (liftNo.equals(liftSlave.getId())) { + vo.setLiftNo(liftSlave.getId()); + BasLift basLift = basLiftService.selectById(liftSlave.getId()); + if (!Cools.isEmpty(basLift)) { + vo.setWorkNo(basLift.getWrkNo()); + vo.setPakMk(basLift.getPakMk()); + } + break; + } + } + return R.ok().add(vo); + } + + @GetMapping("/sensor/detl/{liftNo}") + public R liftSensorDetl(@PathVariable("liftNo") Integer liftNo){ + LiftSensorDataVo vo = new LiftSensorDataVo(); + for (ForkLiftSlave liftSlave : slaveProperties.getForkLift()) { + if (liftNo.equals(liftSlave.getId())) { + vo.setLiftNo(liftSlave.getId()); + // 鑾峰彇鎻愬崌鏈轰俊鎭� + ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftSlave.getId()); + if (forkLiftThread == null) { + return R.error("璁惧涓嶅湪绾�"); + } + ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); + if (forkLiftProtocol == null) { + return R.error("璁惧涓嶅湪绾�"); + } + + break; + } + } + return R.ok().add(vo); + } + + @PostMapping("/detl/update") + @ManagerAuth(memo = "淇敼鏁版嵁") + public R liftUpdate(@RequestParam Integer liftNo, + @RequestParam Short workNo, + @RequestParam String pakMk, + @RequestParam Integer token) { + ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); + if (forkLiftThread == null) { + return R.error("plc宸叉帀绾�"); + } + ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); + if (forkLiftProtocol == null) { + return R.error("plc宸叉帀绾�"); + } + if (workNo != null) { + forkLiftThread.setSyncTaskNo(workNo.intValue()); + } + return R.ok(); + } + + @RequestMapping(value = "/command/query") + public R liftCommandQuery(@RequestParam("wrkNo") Integer wrkNo) { + Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); + if (o == null) { + return R.error(); + } + LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class); + return R.ok().add(redisCommand); + } + + //鍥為��鍛戒护 + @RequestMapping(value = "/command/rollback") + public R liftCommandRollback(@RequestParam("wrkNo") Integer wrkNo + , @RequestParam("commandStep") Integer commandStep) { + Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); + if (o == null) { + return R.error(); + } + LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class); + redisCommand.setCommandStep(commandStep); + redisUtil.set(RedisKeyType.LIFT.key + wrkNo, JSON.toJSONString(redisCommand)); + return R.ok(); + } + + //鍛戒护瀹屾垚鐘舵�佸垏鎹� + @RequestMapping(value = "/command/completeSwitch") + public R liftCommandCompleteSwitch(@RequestParam("wrkNo") Integer wrkNo + , @RequestParam("commandStep") Integer commandStep + , @RequestParam("complete") Integer complete) { + Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); + if (o == null) { + return R.error(); + } + LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class); + LiftAssignCommand assignCommand = redisCommand.getAssignCommand(); + List<ForkLiftCommand> commands = assignCommand.getCommands(); + ForkLiftCommand command = commands.get(commandStep); + command.setComplete(complete != 0); + redisUtil.set(RedisKeyType.LIFT.key + wrkNo, JSON.toJSONString(redisCommand)); + return R.ok(); + } + + //閲嶅惎浠诲姟(鍛戒护) + @RequestMapping(value = "/command/restart") + public R liftCommandCompleteSwitch(@RequestParam("wrkNo") Integer wrkNo) { + Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); + if (o == null) { + return R.error(); + } + LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class); + Short liftNo = redisCommand.getLiftNo(); + ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo.intValue()); + if (forkLiftThread == null) { + return R.error(); + } + ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); + if (forkLiftProtocol == null) { + return R.error(); + } + if (!forkLiftThread.isIdle()) { + return R.error(); + } + //鎻愬崌鏈哄浜庣┖闂茬姸鎬侊紝杩涜浠诲姟鐨勬仮澶� + forkLiftThread.setSyncTaskNo(redisCommand.getWrkNo().intValue());//灏嗘彁鍗囨満绾跨▼鍒嗛厤浠诲姟鍙� + return R.ok(); + } + + //鍒犻櫎浠诲姟(鍛戒护) + @RequestMapping(value = "/command/del") + public R liftCommandDel(@RequestParam("wrkNo") Integer wrkNo) { + Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); + if (o == null) { + return R.error(); + } + redisUtil.del(RedisKeyType.LIFT.key + wrkNo); + return R.ok(); + } + +} diff --git a/src/main/java/com/zy/asrs/controller/LiftController.java b/src/main/java/com/zy/asrs/controller/LiftController.java deleted file mode 100644 index 9249c42..0000000 --- a/src/main/java/com/zy/asrs/controller/LiftController.java +++ /dev/null @@ -1,380 +0,0 @@ -package com.zy.asrs.controller; - -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.mapper.EntityWrapper; -import com.core.annotations.ManagerAuth; -import com.core.common.BaseRes; -import com.core.common.Cools; -import com.core.common.R; -import com.core.exception.CoolException; -import com.zy.asrs.domain.param.LiftOperatorParam; -import com.zy.asrs.domain.vo.*; -import com.zy.asrs.entity.BasLift; -import com.zy.asrs.service.BasLiftService; -import com.zy.common.service.CommonService; -import com.zy.common.utils.NyLiftUtils; -import com.zy.common.utils.RedisUtil; -import com.zy.core.cache.MessageQueue; -import com.zy.core.cache.OutputQueue; -import com.zy.core.cache.SlaveConnection; -import com.zy.core.enums.LiftProtocolStatusType; -import com.zy.core.enums.NyLiftTaskModelType; -import com.zy.core.enums.RedisKeyType; -import com.zy.core.enums.SlaveType; -import com.zy.core.model.LiftSlave; -import com.zy.core.model.Task; -import com.zy.core.model.command.*; -import com.zy.core.model.protocol.LiftProtocol; -import com.zy.core.model.protocol.LiftStaProtocol; -import com.zy.core.properties.SlaveProperties; -import com.zy.core.thread.LiftThread; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.ArrayList; -import java.util.List; - -/** - * 鎻愬崌鏈烘帴鍙� - */ -@Slf4j -@RestController -@RequestMapping("/lift") -public class LiftController { - - @Autowired - private SlaveProperties slaveProperties; - @Autowired - private BasLiftService basLiftService; - @Autowired - private CommonService commonService; - @Autowired - private RedisUtil redisUtil; - - @PostMapping("/table/lift/state") - @ManagerAuth(memo = "鎻愬崌鏈轰俊鎭〃") - public R liftStateTable(){ - List<LiftStateTableVo> list = new ArrayList<>(); - for (LiftSlave slave : slaveProperties.getLift()) { - // 琛ㄦ牸琛� - LiftStateTableVo vo = new LiftStateTableVo(); - vo.setLiftNo(slave.getId()); //鎻愬崌鏈哄彿 - list.add(vo); - // 鑾峰彇鎻愬崌鏈轰俊鎭� - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, slave.getId()); - if (liftThread == null) { - vo.setProtocolStatus(LiftProtocolStatusType.OFFLINE.id);//绂荤嚎 - continue; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null || liftProtocol.getLiftNo()==null) { - continue; - } - vo.setTaskNo(liftProtocol.getTaskNo()); // 浠诲姟鍙� - vo.setProtocolStatus(liftProtocol.getProtocolStatusType().id); - vo.setModel(liftProtocol.getModel()); - vo.setBusy(liftProtocol.getBusy()); - vo.setHasTray(liftProtocol.getHasTray()); - vo.setHasCar(liftProtocol.getHasCar()); - vo.setDeviceError(liftProtocol.getDeviceError()); - vo.setFrontOverrun(liftProtocol.getFrontOverrun()); - vo.setBackOverrun(liftProtocol.getBackOverrun()); - vo.setLeftOverrun(liftProtocol.getLeftOverrun()); - vo.setRightOverrun(liftProtocol.getRightOverrun()); - vo.setOverHeight(liftProtocol.getOverHeight()); - vo.setOverWeight(liftProtocol.getOverWeight()); - } - return R.ok().add(list); - } - - @PostMapping("/table/lift/msg") - @ManagerAuth(memo = "鎻愬崌鏈烘暟鎹〃") - public R liftMsgTable(){ - List<LiftMsgTableVo> list = new ArrayList<>(); - for (LiftSlave slave : slaveProperties.getLift()) { - // 琛ㄦ牸琛� - LiftMsgTableVo vo = new LiftMsgTableVo(); - vo.setLiftNo(slave.getId()); // 鎻愬崌鏈哄彿 - list.add(vo); - // 鑾峰彇鎻愬崌鏈轰俊鎭� - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, slave.getId()); - if (liftThread == null) { - continue; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - continue; - } - - vo.setWorkNo(liftProtocol.getTaskNo().intValue());//浠诲姟鍙� - vo.setPakMk(liftProtocol.getPakMk()?"Y" : "N"); // 浣滀笟鏍囪 - vo.setLev(liftProtocol.getLev()); - vo.setTaskAddress(liftProtocol.getTaskAddress()); - vo.setDistAddress(liftProtocol.getDistAddress()); - vo.setCompleteTaskNo(liftProtocol.getCompleteTaskNo()); - vo.setShuttleNo(liftProtocol.getShuttleNo().intValue()); - vo.setToken(liftProtocol.getToken());//浠ょ墝 - } - return R.ok().add(list); - } - - @PostMapping("/output/lift") - @ManagerAuth - public R liftOutput(){ - StringBuilder str = new StringBuilder(); - String s; - int i = 0; - while((s = OutputQueue.LIFT.poll()) != null && i <=10) { - str.append("\n").append(s); - i++; - } - return R.ok().add(str.toString()); - } - - @GetMapping("/detl/{liftNo}") - public R liftDetl(@PathVariable("liftNo") Integer liftNo){ - LiftDataVo vo = new LiftDataVo(); - for (LiftSlave liftSlave : slaveProperties.getLift()) { - if (liftNo.equals(liftSlave.getId())) { - vo.setLiftNo(liftSlave.getId()); - BasLift basLift = basLiftService.selectById(liftSlave.getId()); - if (!Cools.isEmpty(basLift)) { - vo.setWorkNo(basLift.getWrkNo()); - vo.setPakMk(basLift.getPakMk()); - } - break; - } - } - return R.ok().add(vo); - } - - @GetMapping("/sensor/detl/{liftNo}") - public R liftSensorDetl(@PathVariable("liftNo") Integer liftNo){ - LiftSensorDataVo vo = new LiftSensorDataVo(); - for (LiftSlave liftSlave : slaveProperties.getLift()) { - if (liftNo.equals(liftSlave.getId())) { - vo.setLiftNo(liftSlave.getId()); - // 鑾峰彇鎻愬崌鏈轰俊鎭� - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); - if (liftThread == null) { - return R.error("璁惧涓嶅湪绾�"); - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return R.error("璁惧涓嶅湪绾�"); - } - - break; - } - } - return R.ok().add(vo); - } - - /****************************************************************/ - /************************** 鎵嬪姩鎿嶄綔 ******************************/ - /****************************************************************/ - - @ManagerAuth(memo = "鎵嬪姩鎿嶄綔") - @PostMapping("/operator/lift") - public R liftOperator(LiftOperatorParam param){ - if (Cools.isEmpty(param.getLiftNo())) { - return R.parse(BaseRes.PARAM); - } - - for (LiftSlave liftSlave : slaveProperties.getLift()) { - if (param.getLiftNo().equals(liftSlave.getId())) { - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); - if (liftThread == null) { - throw new CoolException("鎻愬崌鏈轰笉鍦ㄧ嚎"); - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - throw new CoolException("鎻愬崌鏈轰笉鍦ㄧ嚎"); - } - - if (param.getLiftTaskMode() == 1) { - //鎻愬崌鏈哄崌闄嶆ゼ灞� - int workNo = commonService.getWorkNo(3);//鑾峰彇浠诲姟鍙� - - Integer startSta = null; - Integer targetSta = null; - for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) { - if (liftStaProtocol.getLev() == liftProtocol.getLev().intValue()) { - startSta = liftStaProtocol.getStaNo(); - } - - if (liftStaProtocol.getLev() == param.getLev()) { - targetSta = liftStaProtocol.getStaNo(); - } - } - - if (startSta == null || targetSta == null) { - throw new CoolException("璧风偣鎴栫洰鏍囩偣涓嶅瓨鍦�"); - } - - //鑾峰彇鎻愬崌鏈哄懡浠� - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, startSta, targetSta, workNo); - ArrayList<NyLiftCommand> commands = new ArrayList<>(); - commands.add(liftCommand); - - //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 - LiftAssignCommand assignCommand = new LiftAssignCommand(); - assignCommand.setCommands(commands); - assignCommand.setLiftNo(liftProtocol.getLiftNo()); - assignCommand.setTaskNo((short) workNo); - assignCommand.setAuto(false);//鎵嬪姩妯″紡 - assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_CAR.id.shortValue()); - - if (MessageQueue.offer(SlaveType.Lift, liftSlave.getId(), new Task(3, assignCommand))) { - return R.ok(); - } else { - throw new CoolException("鍛戒护涓嬪彂澶辫触"); - } - } else if (param.getLiftTaskMode() == 2) { - //绉诲姩鎵樼洏 - int workNo = commonService.getWorkNo(3);//鑾峰彇浠诲姟鍙� - -// LiftStaProtocol sourceLiftSta = NyLiftUtils.getLiftStaByStaNo(param.getSourceStaNo()); -// LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(param.getStaNo()); -// if (sourceLiftSta == null || liftSta == null) { -// throw new CoolException("婧愮珯鎴栫洰鏍囩珯涓嶅瓨鍦�"); -// } - - //鑾峰彇鎻愬崌鏈哄懡浠� - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, param.getSourceStaNo(), param.getStaNo(), workNo); - ArrayList<NyLiftCommand> commands = new ArrayList<>(); - commands.add(liftCommand); - - //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 - LiftAssignCommand assignCommand = new LiftAssignCommand(); - assignCommand.setCommands(commands); - assignCommand.setLiftNo(liftProtocol.getLiftNo()); - assignCommand.setTaskNo((short) workNo); - assignCommand.setAuto(false);//鎵嬪姩妯″紡 - assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_TRAY.id.shortValue()); - - if (MessageQueue.offer(SlaveType.Lift, liftSlave.getId(), new Task(3, assignCommand))) { - return R.ok(); - } else { - throw new CoolException("鍛戒护涓嬪彂澶辫触"); - } - } else if (param.getLiftTaskMode() == 0) { - //鎻愬崌鏈哄浣� - liftProtocol.setToken(0); - liftProtocol.setProtocolStatusType(LiftProtocolStatusType.IDLE); - } else { - throw new CoolException("鏈煡鍛戒护"); - } - - } - } - return R.error(); - } - - @PostMapping("/detl/update") - @ManagerAuth(memo = "淇敼鏁版嵁") - public R liftUpdate(@RequestParam Integer liftNo, - @RequestParam Short workNo, - @RequestParam String pakMk, - @RequestParam Integer token) { - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo); - if (liftThread == null) { - return R.error("plc宸叉帀绾�"); - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return R.error("plc宸叉帀绾�"); - } - if (workNo != null) { - liftProtocol.setTaskNo(workNo); - } - if (pakMk != null) { - liftProtocol.setPakMk(pakMk.equals("Y")); - } - if (token != null) { - liftProtocol.setToken(token); - } - return R.ok(); - } - - @RequestMapping(value = "/command/query") - public R liftCommandQuery(@RequestParam("wrkNo") Integer wrkNo) { - Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); - if (o == null) { - return R.error(); - } - LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class); - return R.ok().add(redisCommand); - } - - //鍥為��鍛戒护 - @RequestMapping(value = "/command/rollback") - public R liftCommandRollback(@RequestParam("wrkNo") Integer wrkNo - , @RequestParam("commandStep") Integer commandStep) { - Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); - if (o == null) { - return R.error(); - } - LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class); - redisCommand.setCommandStep(commandStep); - redisUtil.set(RedisKeyType.LIFT.key + wrkNo, JSON.toJSONString(redisCommand)); - return R.ok(); - } - - //鍛戒护瀹屾垚鐘舵�佸垏鎹� - @RequestMapping(value = "/command/completeSwitch") - public R liftCommandCompleteSwitch(@RequestParam("wrkNo") Integer wrkNo - , @RequestParam("commandStep") Integer commandStep - , @RequestParam("complete") Integer complete) { - Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); - if (o == null) { - return R.error(); - } - LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class); - LiftAssignCommand assignCommand = redisCommand.getAssignCommand(); - List<NyLiftCommand> commands = assignCommand.getCommands(); - NyLiftCommand command = commands.get(commandStep); - command.setComplete(complete != 0); - redisUtil.set(RedisKeyType.LIFT.key + wrkNo, JSON.toJSONString(redisCommand)); - return R.ok(); - } - - //閲嶅惎浠诲姟(鍛戒护) - @RequestMapping(value = "/command/restart") - public R liftCommandCompleteSwitch(@RequestParam("wrkNo") Integer wrkNo) { - Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); - if (o == null) { - return R.error(); - } - LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class); - Short liftNo = redisCommand.getLiftNo(); - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo.intValue()); - if (liftThread == null) { - return R.error(); - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return R.error(); - } - if (!liftProtocol.isIdle()) { - return R.error(); - } - //鎻愬崌鏈哄浜庣┖闂茬姸鎬侊紝杩涜浠诲姟鐨勬仮澶� - liftProtocol.setTaskNo(redisCommand.getWrkNo());//灏嗘彁鍗囨満绾跨▼鍒嗛厤浠诲姟鍙� - liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//宸ヤ綔鐘舵�� - return R.ok(); - } - - //鍒犻櫎浠诲姟(鍛戒护) - @RequestMapping(value = "/command/del") - public R liftCommandDel(@RequestParam("wrkNo") Integer wrkNo) { - Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); - if (o == null) { - return R.error(); - } - redisUtil.del(RedisKeyType.LIFT.key + wrkNo); - return R.ok(); - } - -} diff --git a/src/main/java/com/zy/asrs/controller/MonitorController.java b/src/main/java/com/zy/asrs/controller/MonitorController.java index 8751548..1aa3d10 100644 --- a/src/main/java/com/zy/asrs/controller/MonitorController.java +++ b/src/main/java/com/zy/asrs/controller/MonitorController.java @@ -10,22 +10,12 @@ import com.zy.asrs.mapper.BasShuttleOptMapper; import com.zy.asrs.mapper.ReportQueryMapper; import com.zy.common.service.CommonService; -import com.zy.core.CrnThread; import com.zy.core.cache.SlaveConnection; -import com.zy.core.enums.ShuttleProtocolStatusType; import com.zy.core.enums.SlaveType; import com.zy.core.model.LedSlave; -import com.zy.core.model.LiftSlave; -import com.zy.core.model.ShuttleSlave; import com.zy.core.model.command.LedCommand; -import com.zy.core.model.protocol.CrnProtocol; -import com.zy.core.model.protocol.LiftProtocol; -import com.zy.core.model.protocol.NyShuttleProtocol; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.LedThread; -import com.zy.core.thread.LiftThread; -import com.zy.core.thread.NyShuttleThread; -import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -92,36 +82,6 @@ Double yDistance = 0.0D; Double xDuration = 0.0D; Double yDuration = 0.0D; - - if (null != crnId) { - CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnId); - if (crnThread != null) { - CrnProtocol crnProtocol = crnThread.getCrnProtocol(); - if (crnProtocol != null) { - xSpeed = Double.valueOf(crnProtocol.getXSpeed()); - ySpeed = Double.valueOf(crnProtocol.getYSpeed()); - zSpeed = Double.valueOf(crnProtocol.getZSpeed()); - switch (crnProtocol.getForkPos()) { - case 0: - forkPos = 1; - break; - case 1: - forkPos = 2; - break; - case 2: - forkPos = 0; - break; - default: - forkPos = 1; - break; - } - xDistance = Double.valueOf(crnProtocol.getXDistance()); - yDistance = Double.valueOf(crnProtocol.getYDistance()); - xDuration = Double.valueOf(crnProtocol.getXDuration()); - yDuration = Double.valueOf(crnProtocol.getYDuration()); - } - } - } // 鑾峰彇杈撻�佺嚎plc绾跨▼ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, ledId); @@ -303,83 +263,6 @@ } } return R.ok().add(errorMsg); - } - - /** - * 璁惧寮傚父閫氱煡 - */ - @GetMapping("/device/error") - public R monitorDeviceError() { - ArrayList<HashMap<String, Object>> list = new ArrayList<>(); - for (ShuttleSlave slave : slaveProperties.getShuttle()) { - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - continue; - } - HashMap<String, Object> map = new HashMap<>(); - if (shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.OFFLINE)) { - if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60 * 5) { - //绂荤嚎瓒呰繃浜斿垎閽� - //璁惧绂荤嚎涓� - map.put("deviceNo", shuttleProtocol.getShuttleNo());//璁惧鍙�-灏忚溅鍙� - map.put("errorMsg", "璁惧绂荤嚎");//寮傚父淇℃伅 - map.put("device", "鍥涘悜杞�");//寮傚父淇℃伅 - list.add(map); - } - } - - if (shuttleProtocol.getErrState() == 1) { - //鏁呴殰涓� - map.put("deviceNo", shuttleProtocol.getShuttleNo());//璁惧鍙�-灏忚溅鍙� - map.put("errorMsg", shuttleProtocol.getErrCode$());//寮傚父淇℃伅 - map.put("device", "鍥涘悜杞�");//寮傚父淇℃伅 - list.add(map); - } - } - - for (LiftSlave slave : slaveProperties.getLift()) { - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, slave.getId()); - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - continue; - } - - if (liftProtocol.getDeviceError()) { - //鏁呴殰涓� - StringBuffer buffer = new StringBuffer(); - if (liftProtocol.getFrontOverrun()) { - buffer.append("鍓嶈秴闄�"); - } - if (liftProtocol.getBackOverrun()) { - buffer.append("鍚庤秴闄�"); - } - if (liftProtocol.getLeftOverrun()) { - buffer.append("宸﹁秴闄�"); - } - if (liftProtocol.getRightOverrun()) { - buffer.append("鍙宠秴闄�"); - } - if (liftProtocol.getOverHeight()) { - buffer.append("瓒呴珮"); - } - if (liftProtocol.getOverWeight()) { - buffer.append("瓒呴噸"); - } - - if (liftProtocol.getErrorCode() > 0) { - buffer.append(liftProtocol.getErrCode$()); - } - - HashMap<String, Object> map = new HashMap<>(); - map.put("deviceNo", liftProtocol.getLiftNo());//璁惧鍙�-鎻愬崌鏈哄彿 - map.put("errorMsg", buffer.toString());//寮傚父淇℃伅 - map.put("device", "鎻愬崌鏈�");//寮傚父淇℃伅 - list.add(map); - } - } - - return R.ok().add(list); } /** diff --git a/src/main/java/com/zy/asrs/controller/ShuttleController.java b/src/main/java/com/zy/asrs/controller/ShuttleController.java index 18777ea..4e03ad6 100644 --- a/src/main/java/com/zy/asrs/controller/ShuttleController.java +++ b/src/main/java/com/zy/asrs/controller/ShuttleController.java @@ -3,11 +3,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.core.annotations.ManagerAuth; -import com.core.common.BaseRes; -import com.core.common.Cools; import com.core.common.R; -import com.core.exception.CoolException; -import com.zy.asrs.domain.param.ShuttleOperatorParam; import com.zy.asrs.domain.vo.*; import com.zy.asrs.entity.BasShuttle; import com.zy.asrs.entity.WrkMast; @@ -15,26 +11,19 @@ import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.utils.Utils; -import com.zy.common.model.NyShuttleOperaResult; -import com.zy.common.model.enums.NavigationMapType; import com.zy.common.service.CommonService; -import com.zy.common.utils.NyHttpUtils; -import com.zy.common.utils.NyShuttleOperaUtils; import com.zy.common.utils.RedisUtil; -import com.zy.common.utils.ShuttleDispatchUtils; -import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; import com.zy.core.cache.SlaveConnection; +import com.zy.core.dispatcher.ShuttleDispatchUtils; import com.zy.core.enums.*; import com.zy.core.model.ShuttleSlave; -import com.zy.core.model.Task; -import com.zy.core.model.command.NyShuttleHttpCommand; import com.zy.core.model.command.ShuttleAssignCommand; +import com.zy.core.model.command.ShuttleCommand; import com.zy.core.model.command.ShuttleRedisCommand; -import com.zy.core.model.protocol.NyShuttleProtocol; +import com.zy.core.model.param.ShuttleMoveLocParam; import com.zy.core.model.protocol.ShuttleProtocol; import com.zy.core.properties.SlaveProperties; -import com.zy.core.thread.NyShuttleThread; import com.zy.core.thread.ShuttleThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -76,11 +65,11 @@ baseObj.put("shuttleNo", slave.getId()); list.add(baseObj); // 鑾峰彇鍥涘悜绌挎杞︿俊鎭� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); if (shuttleThread == null) { continue; } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); JSONObject shuttleData = JSON.parseObject(JSON.toJSONString(shuttleProtocol)); if (shuttleProtocol == null || shuttleProtocol.getShuttleNo()==null) { if (shuttleData != null) { @@ -101,8 +90,8 @@ Integer chargeLine = basShuttleService.selectById(slave.getId()).getChargeLine(); String lowerPower = "N"; - if (chargeLine != null && shuttleProtocol.getPowerPercent() != null) { - lowerPower = shuttleProtocol.getPowerPercent() <= chargeLine ? "Y" : "N"; + if (chargeLine != null && shuttleProtocol.getBatteryPower() != null) { + lowerPower = Integer.parseInt(shuttleProtocol.getBatteryPower()) <= chargeLine ? "Y" : "N"; } shuttleData.put("lowerPower", lowerPower);//鏄惁浣庣數閲� baseObj.putAll(shuttleData); @@ -124,7 +113,7 @@ if (shuttleThread == null) { continue; } - ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { continue; } @@ -132,7 +121,7 @@ continue; } - vo.setWorkNo(shuttleProtocol.getTaskNo().intValue());//浠诲姟鍙� + vo.setWorkNo(shuttleProtocol.getTaskNo());//浠诲姟鍙� if (shuttleProtocol.getTaskNo() > 0) { WrkMast wrkMast = wrkMastService.selectById(shuttleProtocol.getTaskNo()); if (wrkMast != null) { @@ -143,14 +132,6 @@ if (shuttleProtocol.getProtocolStatusType() != null) { vo.setStatus(shuttleProtocol.getProtocolStatusType().desc);//鐘舵�� } - vo.setCodeOffsetX(shuttleProtocol.getCodeOffsetX());//璇诲埌鐨勪簩缁寸爜X鏂瑰悜鍋忕Щ閲� - vo.setCodeOffsetY(shuttleProtocol.getCodeOffsetY());//璇诲埌鐨勪簩缁寸爜Y鏂瑰悜鍋忕Щ閲� - vo.setCurrentVoltage(shuttleProtocol.getCurrentVoltage());//褰撳墠鐨勭數鍘嬪�� - vo.setCurrentAnalogValue(shuttleProtocol.getCurrentAnalogValue());//褰撳墠鐨勬ā鎷熼噺鍊� - vo.setCurrentMoveServoSpeed(shuttleProtocol.getCurrentMoveServoSpeed());//褰撳墠鐨勮璧颁己鏈嶉�熷害 - vo.setCurrentMoveServoLoad(shuttleProtocol.getCurrentMoveServoLoad() == null ? "" : shuttleProtocol.getCurrentMoveServoLoad() + "%");//褰撳墠鐨勮璧颁己鏈嶈礋杞界巼 - vo.setCurrentLiftServoLoad(shuttleProtocol.getCurrentLiftServoLoad() == null ? "" : shuttleProtocol.getCurrentLiftServoLoad() + "%");//褰撳墠鐨勫崌闄嶄己鏈嶈礋杞界巼 - vo.setCurrentLiftServoSpeed(shuttleProtocol.getCurrentLiftServoSpeed());//褰撳墠鐨勫崌闄嶄己鏈嶉�熷害 vo.setPakMk(shuttleProtocol.getPakMk()?"Y" : "N"); // 浣滀笟鏍囪 vo.setLocNo(shuttleProtocol.getLocNo());//鍥涘悜绌挎杞﹀綋鍓嶅簱浣嶅彿 vo.setLev(shuttleProtocol.getLocNo() == null ? 0 : Utils.getLev(shuttleProtocol.getLocNo()));//鍥涘悜绌挎杞﹀綋鍓嶅眰楂� @@ -217,8 +198,8 @@ } ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); - List<NyShuttleHttpCommand> commands = assignCommand.getCommands(); - NyShuttleHttpCommand command = commands.get(commandStep); + List<ShuttleCommand> commands = assignCommand.getCommands(); + ShuttleCommand command = commands.get(commandStep); command.setComplete(complete != 0); redisUtil.set(RedisKeyType.SHUTTLE.key + wrkNo, JSON.toJSONString(redisCommand)); return R.ok(); @@ -232,21 +213,17 @@ return R.error(); } ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); - Short shuttleNo = redisCommand.getShuttleNo(); - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo.intValue()); + Integer shuttleNo = redisCommand.getShuttleNo(); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); if (shuttleThread == null) { return R.error(); } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return R.error(); - } - if (!shuttleProtocol.isIdle()) { + if (!shuttleThread.isIdle()) { return R.error(); } //鍥涘悜绌挎杞﹀浜庣┖闂茬姸鎬侊紝杩涜浠诲姟鐨勬仮澶� - shuttleProtocol.setTaskNo(redisCommand.getWrkNo().intValue());//灏嗗洓鍚戠┛姊溅绾跨▼鍒嗛厤浠诲姟鍙� - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING);//宸ヤ綔鐘舵�� + shuttleThread.setTaskNo(redisCommand.getWrkNo());//灏嗗洓鍚戠┛姊溅绾跨▼鍒嗛厤浠诲姟鍙� + shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.WORKING);//宸ヤ綔鐘舵�� return R.ok(); } @@ -265,133 +242,133 @@ /************************** 鎵嬪姩鎿嶄綔 ******************************/ /****************************************************************/ - @ManagerAuth(memo = "鎵嬪姩鎿嶄綔") - @PostMapping("/operator/shuttle") - public R shuttleOperator(ShuttleOperatorParam param){ - if (Cools.isEmpty(param.getShuttleNo(), param.getShuttleTaskMode())) { - return R.parse(BaseRes.PARAM); - } - - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - - if (param.getShuttleTaskMode() == 1 || param.getShuttleTaskMode() == 2 || param.getShuttleTaskMode() == 14) { - if (Cools.isEmpty(param.getSourceLocNo(), param.getDistLocNo())) { - return R.parse(BaseRes.PARAM); - } - assignCommand.setSourceLocNo(param.getSourceLocNo()); - assignCommand.setLocNo(param.getDistLocNo()); - } - - for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) { - if (param.getShuttleNo().equals(shuttleSlave.getId())) { - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId()); - if (shuttleThread == null) { - throw new CoolException("鍥涘悜绌挎杞︿笉鍦ㄧ嚎"); - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - throw new CoolException("鍥涘悜绌挎杞︿笉鍦ㄧ嚎"); - } - - ShuttleTaskModeType shuttleTaskModeType = ShuttleTaskModeType.get(param.getShuttleTaskMode()); - assignCommand.setShuttleNo(shuttleSlave.getId().shortValue()); // 鍥涘悜绌挎杞︾紪鍙� - assignCommand.setTaskMode(shuttleTaskModeType.id.shortValue()); - assignCommand.setTaskNo((short) commonService.getWorkNo(3));//鑾峰彇浠诲姟鍙� - assignCommand.setAuto(false);//鎵嬪姩妯″紡 - - if (shuttleTaskModeType == ShuttleTaskModeType.TRANSPORT) { - //鎼繍璐х墿浠诲姟 - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), shuttleProtocol.getCurrentLocNo(), param.getSourceLocNo(), param.getDistLocNo()); - if (result == null) { - throw new CoolException("璺緞璁$畻澶辫触"); - } - - assignCommand.setCommands(result.getCommands()); - assignCommand.setNodes(result.getNodes()); - } else if (shuttleTaskModeType == ShuttleTaskModeType.MOVE_LOC_NO) { - //绉诲姩鍒扮洰鏍囧簱浣� - Integer mapType = NavigationMapType.NORMAL.id; - if (shuttleProtocol.getLiftPosition() == 2) { - mapType = NavigationMapType.DFX.id; - } - NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), shuttleProtocol.getCurrentLocNo(), param.getDistLocNo(), mapType); - if (result == null) { - throw new CoolException("璺緞璁$畻澶辫触"); - } - - assignCommand.setCommands(result.getCommands()); - assignCommand.setNodes(result.getNodes()); - } else if (shuttleTaskModeType == ShuttleTaskModeType.PALLET_LIFT) { - //鎵樼洏椤跺崌 - NyShuttleHttpCommand command = NyHttpUtils.getPalletLiftCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), true); - ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); - commands.add(command); - assignCommand.setCommands(commands); - } else if (shuttleTaskModeType == ShuttleTaskModeType.PALLET_DOWN) { - //鎵樼洏涓嬮檷 - NyShuttleHttpCommand command = NyHttpUtils.getPalletLiftCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), false); - ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); - commands.add(command); - assignCommand.setCommands(commands); - } else if (shuttleTaskModeType == ShuttleTaskModeType.CHARGE) { - //鍏呯數寮�鍏� - boolean charge = false; - if (shuttleProtocol.getChargState() == 1) { - //宸插厖鐢碉紝鍏抽棴鍏呯數 - charge = false; - }else { - //寮�鍚厖鐢� - charge = true; - } - NyShuttleHttpCommand command = NyHttpUtils.getChargeCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), charge); - ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); - commands.add(command); - assignCommand.setCommands(commands); - } else if (shuttleTaskModeType == ShuttleTaskModeType.RESET) { - //澶嶄綅 - shuttleProtocol.setTaskNo(0);//宸ヤ綔鍙锋竻绌� - shuttleProtocol.setToken(0);//浠ょ墝娓呯┖ - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);//浠诲姟鐘舵��-绌洪棽 - shuttleProtocol.setPakMk(false);//浣滀笟鏍囪澶嶄綅 - - shuttleProtocol.setMoveLoc(false); - shuttleProtocol.setMoveType(0); - shuttleProtocol.setXStart(0); - shuttleProtocol.setXTarget(0); - shuttleProtocol.setXCurrent(0); - shuttleProtocol.setYStart(0); - shuttleProtocol.setYTarget(0); - shuttleProtocol.setYCurrent(0); - return R.ok(); - } else if (shuttleTaskModeType == ShuttleTaskModeType.SHUTTLE_CONTROL) { - //灏忚溅绠″埗 - NyShuttleHttpCommand suspendCommand = NyHttpUtils.getSuspendCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), true); - ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); - commands.add(suspendCommand); - assignCommand.setCommands(commands); - } else if (shuttleTaskModeType == ShuttleTaskModeType.SHUTTLE_CANCEL_CONTROL) { - //灏忚溅鍙栨秷绠″埗 - NyShuttleHttpCommand suspendCommand = NyHttpUtils.getSuspendCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), false); - ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); - commands.add(suspendCommand); - assignCommand.setCommands(commands); - } else if (shuttleTaskModeType == ShuttleTaskModeType.MOVE_LOC_NO_WRK_MAST) { - //绉诲姩鍒扮洰鏍囧簱浣�(鐢熸垚绉诲姩浠诲姟) - shuttleDispatchUtils.dispatchShuttle(commonService.getWorkNo(3), param.getDistLocNo(), param.getShuttleNo()); - return R.ok(); - } else { - throw new CoolException("鏈煡鍛戒护"); - } - - if (MessageQueue.offer(SlaveType.Shuttle, shuttleSlave.getId(), new Task(3, assignCommand))) { - return R.ok(); - } else { - throw new CoolException("鍛戒护涓嬪彂澶辫触"); - } - } - } - return R.error(); - } +// @ManagerAuth(memo = "鎵嬪姩鎿嶄綔") +// @PostMapping("/operator/shuttle") +// public R shuttleOperator(ShuttleOperatorParam param){ +// if (Cools.isEmpty(param.getShuttleNo(), param.getShuttleTaskMode())) { +// return R.parse(BaseRes.PARAM); +// } +// +// ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); +// +// if (param.getShuttleTaskMode() == 1 || param.getShuttleTaskMode() == 2 || param.getShuttleTaskMode() == 14) { +// if (Cools.isEmpty(param.getSourceLocNo(), param.getDistLocNo())) { +// return R.parse(BaseRes.PARAM); +// } +// assignCommand.setSourceLocNo(param.getSourceLocNo()); +// assignCommand.setLocNo(param.getDistLocNo()); +// } +// +// for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) { +// if (param.getShuttleNo().equals(shuttleSlave.getId())) { +// ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId()); +// if (shuttleThread == null) { +// throw new CoolException("鍥涘悜绌挎杞︿笉鍦ㄧ嚎"); +// } +// ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); +// if (shuttleProtocol == null) { +// throw new CoolException("鍥涘悜绌挎杞︿笉鍦ㄧ嚎"); +// } +// +// ShuttleTaskModeType shuttleTaskModeType = ShuttleTaskModeType.get(param.getShuttleTaskMode().intValue()); +// assignCommand.setShuttleNo(shuttleSlave.getId()); // 鍥涘悜绌挎杞︾紪鍙� +// assignCommand.setTaskMode(shuttleTaskModeType.id); +// assignCommand.setTaskNo(commonService.getWorkNo(3));//鑾峰彇浠诲姟鍙� +// assignCommand.setAuto(false);//鎵嬪姩妯″紡 +// +// if (shuttleTaskModeType == ShuttleTaskModeType.TRANSPORT) { +// //鎼繍璐х墿浠诲姟 +// NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(shuttleSlave.getId(), assignCommand.getTaskNo(), shuttleProtocol.getCurrentLocNo(), param.getSourceLocNo(), param.getDistLocNo()); +// if (result == null) { +// throw new CoolException("璺緞璁$畻澶辫触"); +// } +// +// assignCommand.setCommands(result.getCommands()); +// assignCommand.setNodes(result.getNodes()); +// } else if (shuttleTaskModeType == ShuttleTaskModeType.MOVE_LOC_NO) { +// //绉诲姩鍒扮洰鏍囧簱浣� +// Integer mapType = NavigationMapType.NORMAL.id; +// if (shuttleProtocol.getLiftPosition() == 2) { +// mapType = NavigationMapType.DFX.id; +// } +// NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), shuttleProtocol.getCurrentLocNo(), param.getDistLocNo(), mapType); +// if (result == null) { +// throw new CoolException("璺緞璁$畻澶辫触"); +// } +// +// assignCommand.setCommands(result.getCommands()); +// assignCommand.setNodes(result.getNodes()); +// } else if (shuttleTaskModeType == ShuttleTaskModeType.PALLET_LIFT) { +// //鎵樼洏椤跺崌 +// NyShuttleHttpCommand command = NyHttpUtils.getPalletLiftCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), true); +// ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); +// commands.add(command); +// assignCommand.setCommands(commands); +// } else if (shuttleTaskModeType == ShuttleTaskModeType.PALLET_DOWN) { +// //鎵樼洏涓嬮檷 +// NyShuttleHttpCommand command = NyHttpUtils.getPalletLiftCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), false); +// ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); +// commands.add(command); +// assignCommand.setCommands(commands); +// } else if (shuttleTaskModeType == ShuttleTaskModeType.CHARGE) { +// //鍏呯數寮�鍏� +// boolean charge = false; +// if (shuttleProtocol.getChargState() == 1) { +// //宸插厖鐢碉紝鍏抽棴鍏呯數 +// charge = false; +// }else { +// //寮�鍚厖鐢� +// charge = true; +// } +// NyShuttleHttpCommand command = NyHttpUtils.getChargeCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), charge); +// ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); +// commands.add(command); +// assignCommand.setCommands(commands); +// } else if (shuttleTaskModeType == ShuttleTaskModeType.RESET) { +// //澶嶄綅 +// shuttleProtocol.setTaskNo(0);//宸ヤ綔鍙锋竻绌� +// shuttleProtocol.setToken(0);//浠ょ墝娓呯┖ +// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);//浠诲姟鐘舵��-绌洪棽 +// shuttleProtocol.setPakMk(false);//浣滀笟鏍囪澶嶄綅 +// +// shuttleProtocol.setMoveLoc(false); +// shuttleProtocol.setMoveType(0); +// shuttleProtocol.setXStart(0); +// shuttleProtocol.setXTarget(0); +// shuttleProtocol.setXCurrent(0); +// shuttleProtocol.setYStart(0); +// shuttleProtocol.setYTarget(0); +// shuttleProtocol.setYCurrent(0); +// return R.ok(); +// } else if (shuttleTaskModeType == ShuttleTaskModeType.SHUTTLE_CONTROL) { +// //灏忚溅绠″埗 +// NyShuttleHttpCommand suspendCommand = NyHttpUtils.getSuspendCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), true); +// ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); +// commands.add(suspendCommand); +// assignCommand.setCommands(commands); +// } else if (shuttleTaskModeType == ShuttleTaskModeType.SHUTTLE_CANCEL_CONTROL) { +// //灏忚溅鍙栨秷绠″埗 +// NyShuttleHttpCommand suspendCommand = NyHttpUtils.getSuspendCommand(shuttleSlave.getId(), assignCommand.getTaskNo().intValue(), false); +// ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); +// commands.add(suspendCommand); +// assignCommand.setCommands(commands); +// } else if (shuttleTaskModeType == ShuttleTaskModeType.MOVE_LOC_NO_WRK_MAST) { +// //绉诲姩鍒扮洰鏍囧簱浣�(鐢熸垚绉诲姩浠诲姟) +// shuttleDispatchUtils.dispatchShuttle(commonService.getWorkNo(3), param.getDistLocNo(), param.getShuttleNo()); +// return R.ok(); +// } else { +// throw new CoolException("鏈煡鍛戒护"); +// } +// +// if (MessageQueue.offer(SlaveType.Shuttle, shuttleSlave.getId(), new Task(3, assignCommand))) { +// return R.ok(); +// } else { +// throw new CoolException("鍛戒护涓嬪彂澶辫触"); +// } +// } +// } +// return R.error(); +// } @PostMapping("/detl/update") @ManagerAuth(memo = "淇敼鏁版嵁") @@ -399,22 +376,15 @@ @RequestParam Integer workNo, @RequestParam String pakMk, @RequestParam Integer token) { - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); if (shuttleThread == null) { return R.error("plc宸叉帀绾�"); } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return R.error("plc宸叉帀绾�"); - } if (workNo != null) { - shuttleProtocol.setTaskNo(workNo); + shuttleThread.setTaskNo(workNo); } if (pakMk != null) { - shuttleProtocol.setPakMk(pakMk.equals("Y")); - } - if (token != null) { - shuttleProtocol.setToken(token); + shuttleThread.setPakMk(pakMk.equals("Y")); } return R.ok(); } @@ -426,7 +396,7 @@ if (basShuttle == null) { return R.error("鍥涘悜绌挎杞︿笉瀛樺湪"); } -// basShuttle.setRunSpeed(runSpeed); + basShuttle.setRunSpeed(runSpeed); basShuttle.setChargeLine(chargeLine); if (!basShuttleService.updateById(basShuttle)) { return R.error(); @@ -445,28 +415,29 @@ @RequestParam Integer xTarget, @RequestParam Integer yStart, @RequestParam Integer yTarget) { - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); if (shuttleThread == null) { return R.error(); } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { return R.error(); } - if (!shuttleProtocol.isIdle()) { + if (!shuttleThread.isIdle()) { return R.error("灏忚溅蹇欑涓�"); } - shuttleProtocol.setMoveLoc(true);//寮�鍚窇搴� - shuttleProtocol.setMoveType(moveType); - shuttleProtocol.setXStart(xStart); - shuttleProtocol.setXTarget(xTarget); - shuttleProtocol.setXCurrent(xStart); - shuttleProtocol.setYStart(yStart); - shuttleProtocol.setYTarget(yTarget); - shuttleProtocol.setYCurrent(yStart); + ShuttleMoveLocParam param = new ShuttleMoveLocParam(); + param.setShuttleNo(shuttleNo); + param.setMoveType(moveType); + param.setStartX(xStart); + param.setTargetX(xTarget); + param.setStartY(yStart); + param.setTargetY(yTarget); + + shuttleThread.enableMoveLoc(param, true); return R.ok(); } diff --git a/src/main/java/com/zy/asrs/controller/SiteController.java b/src/main/java/com/zy/asrs/controller/SiteController.java index 6410628..2f5acc9 100644 --- a/src/main/java/com/zy/asrs/controller/SiteController.java +++ b/src/main/java/com/zy/asrs/controller/SiteController.java @@ -2,33 +2,20 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.ManagerAuth; -import com.core.common.Cools; import com.core.common.R; import com.zy.asrs.domain.vo.PlcErrorTableVo; import com.zy.asrs.domain.vo.SiteTableVo; import com.zy.asrs.entity.BasDevp; -import com.zy.asrs.entity.BasSte; -import com.zy.asrs.entity.WrkCharge; import com.zy.asrs.service.BasDevpService; -import com.zy.asrs.service.BasSteService; -import com.zy.asrs.service.WrkChargeService; -import com.zy.common.model.enums.WrkChargeType; -import com.zy.common.service.CommonService; import com.zy.core.DevpThread; -import com.zy.core.News; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; -import com.zy.core.enums.SteChargeType; -import com.zy.core.enums.SteStatusType; import com.zy.core.model.DevpSlave; import com.zy.core.model.Task; import com.zy.core.model.protocol.StaProtocol; -import com.zy.core.model.protocol.SteProtocol; import com.zy.core.properties.SlaveProperties; -import com.zy.core.thread.SiemensDevpThread; -import com.zy.core.thread.SteThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -37,7 +24,6 @@ /** * 杈撻�佽澶囨帴鍙� - * Created by vincent on 2020-06-01 */ @Slf4j @RestController @@ -48,32 +34,6 @@ private SlaveProperties slaveProperties; @Autowired private BasDevpService basDevpService; - @Autowired - private WrkChargeService wrkChargeService; - @Autowired - private BasSteService basSteService; - @Autowired - private CommonService commonService; - - @GetMapping("/io/mode/info/site") - @ManagerAuth(memo = "鍏呯數妯″紡") - public R ioMode(){ - List<Map<String, Object>> res = new ArrayList<>(); - for (DevpSlave devp : slaveProperties.getDevp()) { - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); - Map<String, Object> map1 = new HashMap<>(); - map1.put("floor", 1); - map1.put("modeVal", !devpThread.charge0); - map1.put("modeDesc", !devpThread.charge0?"鍏呯數涓�":"鍏抽棴"); - res.add(map1); - Map<String, Object> map2 = new HashMap<>(); - map2.put("floor", 2); - map2.put("modeVal", devpThread.charge1); - map2.put("modeDesc", devpThread.charge1?"鍏呯數涓�":"鍏抽棴"); - res.add(map2); - } - return R.ok().add(res); - } @PostMapping("/table/site") @ManagerAuth(memo = "绔欑偣淇℃伅琛�") @@ -136,14 +96,6 @@ for(Map.Entry<Integer, StaProtocol> entry : station.entrySet()) { StaProtocol staProtocol = entry.getValue(); -// if (staProtocol) { -// PlcErrorTableVo vo = new PlcErrorTableVo(); -// vo.setNo(entry.getKey()); // 搴忓彿 -// -// vo.setPlcDesc(""); // todo:luxiaotao plc閿欒鎻忚堪 -// vo.setError(""); // todo:luxiaotao 寮傚父淇℃伅 -// list.add(vo); -// } } } @@ -156,7 +108,6 @@ }else{ return -1; } - }); return R.ok().add(list); } diff --git a/src/main/java/com/zy/asrs/domain/enums/CrnStatusType.java b/src/main/java/com/zy/asrs/domain/enums/CrnStatusType.java deleted file mode 100644 index 99b6d01..0000000 --- a/src/main/java/com/zy/asrs/domain/enums/CrnStatusType.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.zy.asrs.domain.enums; - -/** - * 鍫嗗灈鏈虹姸鎬佹灇涓� - */ -public enum CrnStatusType { - - // 鍏ュ簱 - MACHINE_PAKIN("鍏ュ簱"), - // 鍑哄簱 - MACHINE_PAKOUT("鍑哄簱"), - // 搴撳埌搴� - MACHINE_STOCK_MOVE("搴撳埌搴�"), - // 绔欏埌绔� - MACHINE_SITE_MOVE("绔欏埌绔�"), - // p to p - MACHINE_P_MOVE("PToP"), - // 寮傚父 - MACHINE_ERROR("寮傚父"), - // 鑷姩 - MACHINE_AUTO("鑷姩"), - // 闈炶嚜鍔�/鎵嬪姩 - MACHINE_UN_AUTO("闈炶嚜鍔�"), - ; - - private String desc; - CrnStatusType(String desc){ - this.desc = desc; - } - - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public static CrnStatusType process(Integer ioType){ - if (ioType>100) { - return MACHINE_PAKOUT; - } else if (ioType < 100 && ioType!=3 && ioType!=6 && ioType!=11) { - return MACHINE_PAKIN; - } else if (ioType == 3) { - return MACHINE_SITE_MOVE; - } else if (ioType == 11) { - return MACHINE_STOCK_MOVE; - } else { - return MACHINE_ERROR; - } - } - -} diff --git a/src/main/java/com/zy/asrs/domain/param/CrnDemoParam.java b/src/main/java/com/zy/asrs/domain/param/CrnDemoParam.java deleted file mode 100644 index c724435..0000000 --- a/src/main/java/com/zy/asrs/domain/param/CrnDemoParam.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.zy.asrs.domain.param; - -import lombok.Data; - -/** - * 鍫嗗灈鏈烘紨绀烘搷浣滃叆鍙� - * Created by vincent on 2020-06-03 - */ -@Data -public class CrnDemoParam { - - // 鎿嶄綔绫诲瀷 1: 鎵撳紑; 0: 鍏抽棴 - private Integer crnId; - - // 瀵嗙爜鍙d护 - private String password; - - private Boolean opt; - -} diff --git a/src/main/java/com/zy/asrs/domain/param/CrnOperatorParam.java b/src/main/java/com/zy/asrs/domain/param/CrnOperatorParam.java deleted file mode 100644 index f85698e..0000000 --- a/src/main/java/com/zy/asrs/domain/param/CrnOperatorParam.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.zy.asrs.domain.param; - -import lombok.Data; - -/** - * Created by vincent on 2020-06-02 - */ -@Data -public class CrnOperatorParam { - - // 鍫嗗灈鏈哄彿 - private Integer crnNo; - - // 婧愮珯 - private Short sourceStaNo; - - // 婧愬簱浣�-鎺� - private Short sourceRow; - - // 婧愬簱浣�-鍒� - private Short sourceBay; - - // 婧愬簱浣�-灞� - private Short sourceLev; - - // 鐩爣绔� - private Short staNo; - - // 鐩爣搴撲綅-鎺� - private Short row; - - // 鐩爣搴撲綅-鍒� - private Short bay; - - // 鐩爣搴撲綅-灞� - private Short lev; - -} diff --git a/src/main/java/com/zy/asrs/domain/param/SteModeParam.java b/src/main/java/com/zy/asrs/domain/param/SteModeParam.java deleted file mode 100644 index b15331d..0000000 --- a/src/main/java/com/zy/asrs/domain/param/SteModeParam.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.zy.asrs.domain.param; - -import lombok.Data; - -/** - * 鍫嗗灈鏈烘紨绀烘搷浣滃叆鍙� - * Created by vincent on 2020-06-03 - */ -@Data -public class SteModeParam { - - private Integer steNo; - - // 瀵嗙爜鍙d护 - private String password; - - private Boolean opt; - -} diff --git a/src/main/java/com/zy/asrs/domain/param/SteOperatorParam.java b/src/main/java/com/zy/asrs/domain/param/SteOperatorParam.java deleted file mode 100644 index 41be54d..0000000 --- a/src/main/java/com/zy/asrs/domain/param/SteOperatorParam.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.zy.asrs.domain.param; - -import lombok.Data; - -/** - * Created by vincent on 2020-06-02 - */ -@Data -public class SteOperatorParam { - - // 绌挎杞﹀彿 - private Integer steNo; - - // 鍛戒护绫诲瀷 - private Short steTaskMode; - - // 浠诲姟鍙� - private Integer taskNo = 0; - - // 鐩爣搴撲綅-鎺� - private Short row; - - // 鐩爣搴撲綅-鍒� - private Short bay; - - // 鐩爣搴撲綅-灞� - private Short lev; - - // 鎵�灞炲爢鍨涙満 - private Integer crnNo; - -} diff --git a/src/main/java/com/zy/asrs/domain/vo/CommandLogVo.java b/src/main/java/com/zy/asrs/domain/vo/CommandLogVo.java deleted file mode 100644 index 37fa9c0..0000000 --- a/src/main/java/com/zy/asrs/domain/vo/CommandLogVo.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.zy.asrs.domain.vo; - -import lombok.Data; - -/** - * Created by vincent on 2020-06-02 - */ -@Data -public class CommandLogVo { - - // 鍫嗗灈鏈虹紪鍙� - private Integer crnNo; - - // 鐘舵�� - private Integer status; - - // 鍛戒护鎶ユ枃 - private String command; - -} diff --git a/src/main/java/com/zy/asrs/domain/vo/CrnDetailVo.java b/src/main/java/com/zy/asrs/domain/vo/CrnDetailVo.java deleted file mode 100644 index 434cedc..0000000 --- a/src/main/java/com/zy/asrs/domain/vo/CrnDetailVo.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.zy.asrs.domain.vo; - -import lombok.Data; - -/** - * 鍫嗗灈鏈鸿鎯呰鍥惧璞� - * Created by vincent on 2020-06-03 - */ -@Data -public class CrnDetailVo { - - // 鍫嗗灈鏈哄彿 - private Integer crnNo; - - // 宸ヤ綔鍙� - private Short workNo; - - // 婧愮珯 - private String sourceStaNo = ""; - - // 鐩爣绔� - private String staNo = ""; - - // 宸ヤ綔鐘舵�� - private String wrkSts = ""; - - // 鍑哄叆绫诲瀷 - private String ioType = ""; - - // 婧愬簱浣� - private String sourceLocNo = ""; - - // 鐩爣搴撲綅 - private String locNo = ""; - - // 鍫嗗灈鏈虹姸鎬� - private String crnStatus = ""; - - // 寮傚父 - private String error = ""; - -} diff --git a/src/main/java/com/zy/asrs/domain/vo/CrnLatestDataVo.java b/src/main/java/com/zy/asrs/domain/vo/CrnLatestDataVo.java deleted file mode 100644 index 3200202..0000000 --- a/src/main/java/com/zy/asrs/domain/vo/CrnLatestDataVo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.zy.asrs.domain.vo; - -import com.zy.asrs.domain.enums.CrnStatusType; -import lombok.Data; - -/** - * 鍫嗗灈鏈烘渶鏂版暟鎹鍥惧璞� - * Created by vincent on 2020-06-01 - */ -@Data -public class CrnLatestDataVo { - - // 鍫嗗灈鏈虹紪鍙� - private Integer crnId; - - // 鍋忕Щ閲� - private Double offset; - - // 褰撳墠鍒� - private Short bay; - - private CrnStatusType crnStatus; - - public String getCrnStatus(){ - return crnStatus.toString().toLowerCase().replaceAll("_", "-"); - } - -} diff --git a/src/main/java/com/zy/asrs/domain/vo/CrnMsgTableVo.java b/src/main/java/com/zy/asrs/domain/vo/CrnMsgTableVo.java deleted file mode 100644 index ef124a3..0000000 --- a/src/main/java/com/zy/asrs/domain/vo/CrnMsgTableVo.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.zy.asrs.domain.vo; - -import com.zy.asrs.utils.Utils; -import lombok.Data; - -/** - * Created by vincent on 2020-06-02 - */ -@Data -public class CrnMsgTableVo { - - // 鍫嗗灈鏈哄彿 - private Integer crnNo; - - // 宸ヤ綔鍙� - private Short workNo = 0; - - // 鐘舵�� - private String status = "-"; - - // 婧愮珯 - private String sourceStaNo = "-"; - - // 鐩爣绔� - private String staNo = "-"; - - // 婧愬簱浣� - private String sourceLocNo = "-"; - - // 鐩爣搴撲綅 - private String locNo = "-"; - - // 寮傚父 - private String error = ""; - - // 鍘熺偣 - private String origin = ""; - - // 鍛戒护 - private String command = ""; - - // 璧拌閫熷害锛坢/min) - private Float xspeed = 0.0F; - - // 鍗囬檷閫熷害锛坢/min) - private Float yspeed = 0.0F; - - // 鍙夌墮閫熷害锛坢/min) - private Float zspeed = 0.0F; - - // 璧拌璺濈(Km) - private Float xdistance = 0.0F; - - // 鍗囬檷璺濈(Km) - private Float ydistance = 0.0F; - - // 璧拌鏃堕暱(H) - private Float xduration = 0.0F; - - // 鍗囬檷鏃堕暱(H) - private Float yduration = 0.0F; - - public void setXspeed(Float xspeed) { - this.xspeed = Utils.scale(xspeed); - } - - public void setYspeed(Float yspeed) { - this.yspeed = Utils.scale(yspeed); - } - - public void setZspeed(Float zspeed) { - this.zspeed = Utils.scale(zspeed); - } - - public void setXdistance(Float xdistance) { - this.xdistance = Utils.scale(xdistance); - } - - public void setYdistance(Float ydistance) { - this.ydistance = Utils.scale(ydistance); - } - - public void setXduration(Float xduration) { - this.xduration = Utils.scale(xduration); - } - - public void setYduration(Float yduration) { - this.yduration = Utils.scale(yduration); - } -} diff --git a/src/main/java/com/zy/asrs/domain/vo/CrnStateTableVo.java b/src/main/java/com/zy/asrs/domain/vo/CrnStateTableVo.java deleted file mode 100644 index 4e9f53a..0000000 --- a/src/main/java/com/zy/asrs/domain/vo/CrnStateTableVo.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.zy.asrs.domain.vo; - -import lombok.Data; - -/** - * Created by vincent on 2020-06-02 - */ -@Data -public class CrnStateTableVo { - - // 鍫嗗灈鏈哄彿 - private Integer crnNo; - - // 妯″紡 - private String statusType = "-"; - - // 鏈夌墿 - private String loading = "-"; - - // 鍒� - private Short bay; - - // 灞� - private Short lev; - - // 璧拌鍘熺偣 - private String xOrigin = "-"; - - // 鍗囬檷鍘熺偣 - private String yOrigin = "-"; - - // 璐у弶浣嶇疆 - private String forkOffset = "-"; - - // 杞借揣鍙颁綅缃� - private String liftPos = "-"; - - // 璧拌瀹氫綅 - private String walkPos = "-"; - - // 鎬ュ仠 - private String stop = "-"; - - // 鍒楀潗鏍� - private String bayCoor = "-"; - - // 灞傚潗鏍� - private String levCoor = "-"; - - // 瀹屾垚 - private String complete = "-"; - - // 浠诲姟鍙� - private Short workNo = 0; - - // 鐘舵�� - private String status = "-"; - - // 寮傚父鐮� - private String warnCode = "-"; - - // 鍨傜洿鏁呴殰鐮� - private String alarm = "-"; - -} diff --git a/src/main/java/com/zy/asrs/domain/vo/LiftStateTableVo.java b/src/main/java/com/zy/asrs/domain/vo/LiftStateTableVo.java index ad38491..a4c1b38 100644 --- a/src/main/java/com/zy/asrs/domain/vo/LiftStateTableVo.java +++ b/src/main/java/com/zy/asrs/domain/vo/LiftStateTableVo.java @@ -1,7 +1,6 @@ package com.zy.asrs.domain.vo; -import com.zy.core.enums.LiftNotReadyType; -import com.zy.core.enums.LiftProtocolStatusType; +import com.zy.core.enums.ForkLiftProtocolStatusType; import lombok.Data; @Data @@ -159,9 +158,9 @@ public String getProtocolStatus$() { if (this.protocolStatus == null) { - return LiftProtocolStatusType.OFFLINE.desc; + return ForkLiftProtocolStatusType.NONE.desc; } - return LiftProtocolStatusType.get(this.protocolStatus).desc; + return ForkLiftProtocolStatusType.get(this.protocolStatus).desc; } } diff --git a/src/main/java/com/zy/asrs/domain/vo/ShuttleMsgTableVo.java b/src/main/java/com/zy/asrs/domain/vo/ShuttleMsgTableVo.java index ec6066b..48fb6b8 100644 --- a/src/main/java/com/zy/asrs/domain/vo/ShuttleMsgTableVo.java +++ b/src/main/java/com/zy/asrs/domain/vo/ShuttleMsgTableVo.java @@ -27,46 +27,6 @@ private String pakMk = "-"; /** - * 璇诲埌鐨勪簩缁寸爜X鏂瑰悜鍋忕Щ閲� - */ - private Short codeOffsetX; - - /** - * 璇诲埌鐨勪簩缁寸爜Y鏂瑰悜鍋忕Щ閲� - */ - private Short codeOffsetY; - - /** - * 褰撳墠鐨勭數鍘嬪�� - */ - private Integer currentVoltage; - - /** - * 褰撳墠鐨勬ā鎷熼噺鍊� - */ - private Short currentAnalogValue; - - /** - * 褰撳墠鐨勫崌闄嶄己鏈嶉�熷害 - */ - private Short currentLiftServoSpeed; - - /** - * 褰撳墠鐨勮璧颁己鏈嶉�熷害 - */ - private Short currentMoveServoSpeed; - - /** - * 褰撳墠鐨勫崌闄嶄己鏈嶈礋杞界巼 - */ - private String currentLiftServoLoad; - - /** - * 褰撳墠鐨勮璧颁己鏈嶈礋杞界巼 - */ - private String currentMoveServoLoad; - - /** * 鍥涘悜绌挎杞﹀簱浣嶅彿 */ private String locNo; diff --git a/src/main/java/com/zy/asrs/domain/vo/ShuttleStateTableVo.java b/src/main/java/com/zy/asrs/domain/vo/ShuttleStateTableVo.java index 08bf110..1d11cd8 100644 --- a/src/main/java/com/zy/asrs/domain/vo/ShuttleStateTableVo.java +++ b/src/main/java/com/zy/asrs/domain/vo/ShuttleStateTableVo.java @@ -1,9 +1,5 @@ package com.zy.asrs.domain.vo; -import com.core.common.SpringUtils; -import com.zy.asrs.entity.BasShuttleErr; -import com.zy.asrs.service.BasShuttleErrService; -import com.zy.core.enums.ShuttleErrorCodeType; import com.zy.core.enums.ShuttleProtocolStatusType; import com.zy.core.enums.ShuttleStatusType; import lombok.Data; @@ -102,11 +98,6 @@ private String statusErrorCode; /** - * 閿欒淇℃伅鐮佹灇涓� - */ - private ShuttleErrorCodeType errorCodeType; - - /** * PLC杈撳叆鐘舵�� */ private Short plcInputStatus; @@ -165,21 +156,6 @@ * 褰撳墠浣嶇疆 */ public String loca = "-"; - - public String getErrorCode$() { - if(this.errorCodeType == null) return null; - return this.errorCodeType.desc; - } - - public void setErrorCode(Short errorCode) { - this.errorCode = ShuttleErrorCodeType.get(errorCode.intValue()).desc; - this.errorCodeType = ShuttleErrorCodeType.get(errorCode.intValue()); - } - - public void setErrorCode(ShuttleErrorCodeType type) { - this.errorCode = type.desc; - this.errorCodeType = type; - } public String getPlcOutputLift$() { if (this.plcOutputLift == null) { diff --git a/src/main/java/com/zy/asrs/domain/vo/SteMsgTableVo.java b/src/main/java/com/zy/asrs/domain/vo/SteMsgTableVo.java deleted file mode 100644 index 0be072d..0000000 --- a/src/main/java/com/zy/asrs/domain/vo/SteMsgTableVo.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.zy.asrs.domain.vo; - -import lombok.Data; - -/** - * Created by vincent on 2020-06-02 - */ -@Data -public class SteMsgTableVo { - - // 绌挎杞﹀彿 - private Integer steNo; - - // 宸ヤ綔鍙� - private Integer workNo = 0; - - // 鐘舵�� - private String status = "-"; - - // 婧愮珯 - private String sourceStaNo = "-"; - - // 鐩爣绔� - private String staNo = "-"; - - // 婧愬簱浣� - private String sourceLocNo = "-"; - - // 鐩爣搴撲綅 - private String locNo = "-"; - - // 寮傚父 - private String error = ""; - - // 鍘熺偣 - private String origin = ""; - - // 鍛戒护 - private String command = ""; - - // 閫熷害 - private Double speed = 0.0D; - - // 杩戠偣璺濈 - public Double closer = 0.0D; - - // 浣滀笟鏍囪 - private String pakMk = "-"; - -} diff --git a/src/main/java/com/zy/asrs/domain/vo/SteSensorDataVo.java b/src/main/java/com/zy/asrs/domain/vo/SteSensorDataVo.java deleted file mode 100644 index de04a0c..0000000 --- a/src/main/java/com/zy/asrs/domain/vo/SteSensorDataVo.java +++ /dev/null @@ -1,266 +0,0 @@ -package com.zy.asrs.domain.vo; - -import lombok.Data; - -/** - * Created by vincent on 2020-06-02 - */ -@Data -public class SteSensorDataVo { - - /** - * 绌挎杞﹀彿 - */ - private Integer steNo; - - // 绌挎杞﹀紓甯� ------------------------------------------------------------------------ - - /** - * 0.鍗囬檷瓒呮椂鎶ヨ - */ - private boolean liftErr; - - /** - * 2.鍏ュ簱鍙栫┖鎶ヨ - */ - private boolean inFetchErr; - - /** - * 3.鍑哄簱鍙栫┖鎶ヨ - */ - private boolean outFetchErr; - - /** - * 4.闃叉挒淇濇姢 - */ - private boolean antiErr; - - /** - * 5.鍗囬檷鎺ヨ繎寮�鍏虫晠闅� - */ - private boolean liftSwitchErr; - - /** - * 6.杞ㄩ亾妫�娴嬫姤璀� - */ - private boolean trackErr; - - /** - * 7.璁惧杩愯瓒呮椂鎶ヨ - */ - private boolean timeoutErr; - - /** - * 8.閫氫俊閿欒鎶ヨ - */ - private boolean connectErr; - - /** - * 9.璁惧鎬ュ仠 - */ - private boolean emergencyErr; - - /** - * 10.浠诲姟绫诲瀷缂哄け - */ - private boolean taskTypeErr; - - /** - * 11.浠诲姟鍙风己澶� - */ - private boolean taskNoErr; - - /** - * 12.杩愯涓湁鏂颁换鍔� - */ - private boolean newTaskErr; - - /** - * 13.鏁呴殰涓湁浠诲姟 - */ - private boolean errTaskErr; - - /** - * 14.杩愯涓仠姝� - */ - private boolean stopErr; - - /** - * 15.鑴辨満妯″紡涓嬫湁浠诲姟 - */ - private boolean offlineTaskErr; - - /** - * 16.鏉′欢鏈弧瓒冲惎鍔ㄤ换鍔� - */ - private boolean startTaskErr; - - /** - * 17.浣庣數鍘嬫椂鏈変换鍔� - */ - private boolean voltageTaskErr; - - /** - * 63.璁惧鏁呴殰鏍囧織浣� - */ - private boolean devpErr; - // 绌挎杞﹀紓甯� ------------------------------------------------------------------------ - - // 绌挎杞︽彁绀轰俊鎭� ------------------------------------------------------------------------ - /** - * 64.鑱旀満鐘舵�� - */ - private boolean online; - - /** - * 65.涓嶅湪杞ㄩ亾涓� - */ - private boolean notOnTrack; - - /** - * 66.浣庣數閲忔彁閱� - */ - private boolean lowVoltage; - - /** - * 67.浜忕數涓� - */ - private boolean electricityLoss; - - /** - * 68.寮哄埗琛岃蛋鍚姩 - */ - private boolean forcedTravel; - - /** - * 69.婕旂ず妯″紡寮�鍚� - */ - private boolean demoMode; - - /** - * 70.鍏呯數鍒峰凡鎺ラ�� - */ - private boolean brushConnect; - - /** - * 71.浠诲姟涓姝㈡墜鍔� - */ - private boolean taskManualForbid; - - /** - * 72.鑱旀満涓姝㈡墜鍔� - */ - private boolean onlineManualForbid; - - /** - * 73.璁惧鎬ュ仠涓� - */ - private boolean devpEmergency; - - /** - * 74.浠诲姟涓柇涓� - */ - private boolean taskInterrupt; - - /** - * 75.浠诲姟宸叉竻闄� - */ - private boolean taskClear; - - /** - * 76.浠诲姟纭宸茶秴鏃� - */ - private boolean taskConfirmTimeout; - - /** - * 77.鍏呯數涓湁浠诲姟 - */ - private boolean taskWithCharge; - - // 浠诲姟淇℃伅 --------------------------------------------------------- - /** - * 96.鍏ュ簱浠诲姟涓� - */ - private boolean pakInTask; - - /** - * 97. 鍑哄簱浠诲姟涓� - */ - private boolean pakOutTask; - - /** - * 98. 绉诲簱浠诲姟涓� - */ - private boolean pakMoveTask; - - /** - * 99. 鍥炲師鐐逛换鍔′腑 - */ - private boolean goHpTask; - - /** - * 100. 鍘诲弽鍘熺偣浠诲姟涓� - */ - private boolean goOHpTask; - - /** - * 101. 鍘诲師鐐归伩璁╀綅 - */ - private boolean goHpAvoid; - - /** - * 102. 鍘诲弽鍘熺偣閬胯浣� - */ - private boolean goOHpAvoid; - - /** - * 104. 鍏ュ簱鍙栫┖缁撴潫 - */ - private boolean pakInEmpty; - - /** - * 105. 鍏ュ簱姝e父缁撴潫 - */ - private boolean pakInFinish; - - /** - * 106. 鍑哄簱鍙栫┖缁撴潫 - */ - private boolean pakOutEmpty; - - /** - * 107. 鍑哄簱姝e父缁撴潫 - */ - private boolean pakOutFinish; - - /** - * 108. 鍘诲師鐐归伩璁╁畬鎴� - */ - private boolean goHpAvoidFinish; - - /** - * 109. 鍘诲弽鍘熺偣閬胯瀹屾垚 - */ - private boolean goOHpAvoidFinish; - - /** - * 110. 鍘诲師鐐归伩璁╁畬鎴� - */ - private boolean goHpAvoidErr; - - /** - * 111. 鍘诲弽鍘熺偣閬胯瀹屾垚 - */ - private boolean goOHpAvoidErr; - - // 鐘舵�佷俊鎭� --------------------------------------------------------- - /** - * 112. 鑱旀満妯″紡 - */ - private boolean autoMode; - - /** - * 113. 鐢靛帇杩囦綆 - */ - private boolean voltageLow; -} diff --git a/src/main/java/com/zy/asrs/domain/vo/SteStateTableVo.java b/src/main/java/com/zy/asrs/domain/vo/SteStateTableVo.java deleted file mode 100644 index 17e499a..0000000 --- a/src/main/java/com/zy/asrs/domain/vo/SteStateTableVo.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.zy.asrs.domain.vo; - -import lombok.Data; - -/** - * Created by vincent on 2020-06-02 - */ -@Data -public class SteStateTableVo { - - // 绌挎杞﹀彿 - private Integer steNo; - - // 鍦ㄧ嚎鐘舵�� - private Integer statusVal; - - // 妯″紡 - private String statusType = "-"; - - // 鐘舵�� - private String status = "-"; - - // 鏈夌墿 - private String loading = "-"; - - /** - * 浠诲姟鍙� - */ - public Integer taskNo; - - // 姝e湪鎵ц浠诲姟 - private String execute; - - // 浠诲姟瀹屾垚锛岀瓑寰匴CS纭 - private String waiting; - - // 鎺� - private Short row; - - // 鍒� - private Short bay; - - // 灞� - private Short lev; - - // 寮傚父鐮�1 - private String alarm1 = "-"; - - // 寮傚父鐮�2 - private String alarm2 = "-"; - - /** - * 鐢垫睜鐢甸噺 - */ - public String charge = "-"; - - /** - * 鐢垫睜棣堢數 - */ - public String feed = "-"; - - /** - * 褰撳墠浣嶇疆 1锛岃繎鐐癸紝2杩滅偣锛�3A鐐癸紝4B鐐� - */ - public String loca = "-"; - - /** - * 杩戠偣璺濈 - */ - public Double closer; - - /** - * 褰撳墠閫熷害 - */ - public Double speed; - - /** - * 楂樹綆浣� 0锛屼綆浣嶏紝1楂樹綅 - */ - public String pos = "-"; - - /** - * 鍦ㄨ建閬撲笂 0涓嶅湪锛�1鍦� - */ - public String track = "-"; - - /** - * 鍏呯數鐘舵�� - */ - public String chargeStatus = "-"; - -} diff --git a/src/main/java/com/zy/asrs/entity/BasCrnError.java b/src/main/java/com/zy/asrs/entity/BasCrnError.java deleted file mode 100644 index 8702140..0000000 --- a/src/main/java/com/zy/asrs/entity/BasCrnError.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.zy.asrs.entity; - -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableName; -import com.baomidou.mybatisplus.enums.IdType; -import com.core.common.Cools; -import com.core.common.SpringUtils; -import com.zy.system.entity.User; -import com.zy.system.service.UserService; -import io.swagger.annotations.ApiModelProperty; - -import java.io.Serializable; -import java.text.SimpleDateFormat; -import java.util.Date; - -@TableName("asr_bas_crn_error") -public class BasCrnError implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 寮傚父浠e彿 - */ - @ApiModelProperty(value= "寮傚父浠e彿") - @TableId(value = "error_code", type = IdType.AUTO) - @TableField("error_code") - private Long errorCode; - - /** - * 寮傚父鎻忚堪 - */ - @ApiModelProperty(value= "寮傚父鎻忚堪") - @TableField("err_name") - private String errName; - - /** - * 淇敼浜哄憳 - */ - @ApiModelProperty(value= "淇敼浜哄憳") - @TableField("modi_user") - private Long modiUser; - - /** - * 淇敼鏃堕棿 - */ - @ApiModelProperty(value= "淇敼鏃堕棿") - @TableField("modi_time") - private Date modiTime; - - /** - * 鍒涘缓鑰� - */ - @ApiModelProperty(value= "鍒涘缓鑰�") - @TableField("appe_user") - private Long appeUser; - - /** - * 娣诲姞鏃堕棿 - */ - @ApiModelProperty(value= "娣诲姞鏃堕棿") - @TableField("appe_time") - private Date appeTime; - - public BasCrnError() {} - - public BasCrnError(String errName, Long modiUser, Date modiTime, Long appeUser, Date appeTime) { - this.errName = errName; - this.modiUser = modiUser; - this.modiTime = modiTime; - this.appeUser = appeUser; - this.appeTime = appeTime; - } - -// BasCrnError basCrnError = new BasCrnError( -// null, // 寮傚父鎻忚堪 -// null, // 淇敼浜哄憳 -// null, // 淇敼鏃堕棿 -// null, // 鍒涘缓鑰� -// null // 娣诲姞鏃堕棿 -// ); - - public Long getErrorCode() { - return errorCode; - } - - public void setErrorCode(Long errorCode) { - this.errorCode = errorCode; - } - - public String getErrName() { - return errName; - } - - public void setErrName(String errName) { - this.errName = errName; - } - - public Long getModiUser() { - return modiUser; - } - - public String getModiUser$(){ - UserService service = SpringUtils.getBean(UserService.class); - User user = service.selectById(this.modiUser); - if (!Cools.isEmpty(user)){ - return String.valueOf(user.getUsername()); - } - return null; - } - - public void setModiUser(Long modiUser) { - this.modiUser = modiUser; - } - - public Date getModiTime() { - return modiTime; - } - - public String getModiTime$(){ - if (Cools.isEmpty(this.modiTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime); - } - - public void setModiTime(Date modiTime) { - this.modiTime = modiTime; - } - - public Long getAppeUser() { - return appeUser; - } - - public String getAppeUser$(){ - UserService service = SpringUtils.getBean(UserService.class); - User user = service.selectById(this.appeUser); - if (!Cools.isEmpty(user)){ - return String.valueOf(user.getUsername()); - } - return null; - } - - public void setAppeUser(Long appeUser) { - this.appeUser = appeUser; - } - - public Date getAppeTime() { - return appeTime; - } - - public String getAppeTime$(){ - if (Cools.isEmpty(this.appeTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime); - } - - public void setAppeTime(Date appeTime) { - this.appeTime = appeTime; - } - - -} diff --git a/src/main/java/com/zy/asrs/entity/BasCrnOpt.java b/src/main/java/com/zy/asrs/entity/BasCrnOpt.java deleted file mode 100644 index ed98925..0000000 --- a/src/main/java/com/zy/asrs/entity/BasCrnOpt.java +++ /dev/null @@ -1,334 +0,0 @@ -package com.zy.asrs.entity; - -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableName; -import com.baomidou.mybatisplus.enums.IdType; -import com.core.common.Cools; -import com.core.common.SpringUtils; -import com.zy.system.entity.User; -import com.zy.system.service.UserService; -import io.swagger.annotations.ApiModelProperty; - -import java.io.Serializable; -import java.text.SimpleDateFormat; -import java.util.Date; - -@TableName("asr_bas_crn_opt") -public class BasCrnOpt implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * ID - */ - @ApiModelProperty(value= "ID") - @TableId(value = "id", type = IdType.AUTO) - private Long id; - - /** - * 浠诲姟鍙� - */ - @ApiModelProperty(value= "浠诲姟鍙�") - @TableField("wrk_no") - private Integer wrkNo; - - /** - * 鍫嗗灈鏈� - */ - @ApiModelProperty(value= "鍫嗗灈鏈�") - @TableField("crn_no") - private Integer crnNo; - - /** - * 涓嬪彂鏃堕棿 - */ - @ApiModelProperty(value= "涓嬪彂鏃堕棿") - @TableField("send_time") - private Date sendTime; - - /** - * 妯″紡 - */ - @ApiModelProperty(value= "妯″紡") - private String mode; - - /** - * 婧愭帓 - */ - @ApiModelProperty(value= "婧愭帓") - @TableField("source_row") - private Integer sourceRow; - - /** - * 婧愬垪 - */ - @ApiModelProperty(value= "婧愬垪") - @TableField("source_bay") - private Integer sourceBay; - - /** - * 婧愬眰 - */ - @ApiModelProperty(value= "婧愬眰") - @TableField("source_lev") - private Integer sourceLev; - - /** - * 婧愮珯 - */ - @ApiModelProperty(value= "婧愮珯") - @TableField("source_sta") - private Integer sourceSta; - - /** - * 鐩爣鎺� - */ - @ApiModelProperty(value= "鐩爣鎺�") - @TableField("pos_row") - private Integer posRow; - - /** - * 鐩爣鍒� - */ - @ApiModelProperty(value= "鐩爣鍒�") - @TableField("pos_bay") - private Integer posBay; - - /** - * 鐩爣灞� - */ - @ApiModelProperty(value= "鐩爣灞�") - @TableField("pos_lev") - private Integer posLev; - - /** - * 鐩爣绔� - */ - @ApiModelProperty(value= "鐩爣绔�") - @TableField("pos_sta") - private Integer posSta; - - /** - * 鍝嶅簲缁撴灉 1: 姝e父 0: 澶辫触 - */ - @ApiModelProperty(value= "鍝嶅簲缁撴灉 1: 姝e父 0: 澶辫触 ") - private Integer response; - - /** - * 淇敼鏃堕棿 - */ - @ApiModelProperty(value= "淇敼鏃堕棿") - @TableField("update_time") - private Date updateTime; - - /** - * 淇敼浜哄憳 - */ - @ApiModelProperty(value= "淇敼浜哄憳") - @TableField("update_by") - private Long updateBy; - - public BasCrnOpt() {} - - public BasCrnOpt(Integer wrkNo,Integer crnNo,Date sendTime,String mode,Integer sourceRow,Integer sourceBay,Integer sourceLev,Integer sourceSta,Integer posRow,Integer posBay,Integer posLev,Integer posSta,Integer response,Date updateTime,Long updateBy) { - this.wrkNo = wrkNo; - this.crnNo = crnNo; - this.sendTime = sendTime; - this.mode = mode; - this.sourceRow = sourceRow; - this.sourceBay = sourceBay; - this.sourceLev = sourceLev; - this.sourceSta = sourceSta; - this.posRow = posRow; - this.posBay = posBay; - this.posLev = posLev; - this.posSta = posSta; - this.response = response; - this.updateTime = updateTime; - this.updateBy = updateBy; - } - -// BasCrnOpt basCrnOpt = new BasCrnOpt( -// null, // 浠诲姟鍙� -// null, // 鍫嗗灈鏈篬闈炵┖] -// null, // 涓嬪彂鏃堕棿 -// null, // 妯″紡 -// null, // 婧愭帓 -// null, // 婧愬垪 -// null, // 婧愬眰 -// null, // 婧愮珯 -// null, // 鐩爣鎺� -// null, // 鐩爣鍒� -// null, // 鐩爣灞� -// null, // 鐩爣绔� -// null, // 鍝嶅簲缁撴灉 -// null, // 淇敼鏃堕棿 -// null // 淇敼浜哄憳 -// ); - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public Integer getWrkNo() { - return wrkNo; - } - - public void setWrkNo(Integer wrkNo) { - this.wrkNo = wrkNo; - } - - public Integer getCrnNo() { - return crnNo; - } - - public void setCrnNo(Integer crnNo) { - this.crnNo = crnNo; - } - - public Date getSendTime() { - return sendTime; - } - - public String getSendTime$(){ - if (Cools.isEmpty(this.sendTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.sendTime); - } - - public void setSendTime(Date sendTime) { - this.sendTime = sendTime; - } - - public String getMode() { - return mode; - } - - public void setMode(String mode) { - this.mode = mode; - } - - public Integer getSourceRow() { - return sourceRow; - } - - public void setSourceRow(Integer sourceRow) { - this.sourceRow = sourceRow; - } - - public Integer getSourceBay() { - return sourceBay; - } - - public void setSourceBay(Integer sourceBay) { - this.sourceBay = sourceBay; - } - - public Integer getSourceLev() { - return sourceLev; - } - - public void setSourceLev(Integer sourceLev) { - this.sourceLev = sourceLev; - } - - public Integer getSourceSta() { - return sourceSta; - } - - public void setSourceSta(Integer sourceSta) { - this.sourceSta = sourceSta; - } - - public Integer getPosRow() { - return posRow; - } - - public void setPosRow(Integer posRow) { - this.posRow = posRow; - } - - public Integer getPosBay() { - return posBay; - } - - public void setPosBay(Integer posBay) { - this.posBay = posBay; - } - - public Integer getPosLev() { - return posLev; - } - - public void setPosLev(Integer posLev) { - this.posLev = posLev; - } - - public Integer getPosSta() { - return posSta; - } - - public void setPosSta(Integer posSta) { - this.posSta = posSta; - } - - public Integer getResponse() { - return response; - } - - public String getResponse$(){ - if (null == this.response){ return null; } - switch (this.response){ - case 1: - return "姝e父"; - case 0: - return "澶辫触"; - default: - return String.valueOf(this.response); - } - } - - public void setResponse(Integer response) { - this.response = response; - } - - public Date getUpdateTime() { - return updateTime; - } - - public String getUpdateTime$(){ - if (Cools.isEmpty(this.updateTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); - } - - public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; - } - - public Long getUpdateBy() { - return updateBy; - } - - public String getUpdateBy$(){ - UserService service = SpringUtils.getBean(UserService.class); - User user = service.selectById(this.updateBy); - if (!Cools.isEmpty(user)){ - return String.valueOf(user.getUsername()); - } - return null; - } - - public void setUpdateBy(Long updateBy) { - this.updateBy = updateBy; - } - - -} diff --git a/src/main/java/com/zy/asrs/entity/BasCrnp.java b/src/main/java/com/zy/asrs/entity/BasCrnp.java deleted file mode 100644 index 2ce3c36..0000000 --- a/src/main/java/com/zy/asrs/entity/BasCrnp.java +++ /dev/null @@ -1,436 +0,0 @@ -package com.zy.asrs.entity; - -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableName; -import com.baomidou.mybatisplus.enums.IdType; -import com.core.common.Cools; -import com.core.common.SpringUtils; -import com.zy.asrs.service.BasDevpService; -import com.zy.asrs.service.LocMastService; -import com.zy.system.entity.User; -import com.zy.system.service.UserService; -import io.swagger.annotations.ApiModelProperty; - -import java.io.Serializable; -import java.text.SimpleDateFormat; -import java.util.Date; - -@TableName("asr_bas_crnp") -public class BasCrnp implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 缂栧彿 - */ - @ApiModelProperty(value= "缂栧彿") - @TableId(value = "crn_no", type = IdType.INPUT) - @TableField("crn_no") - private Integer crnNo; - - /** - * 鍙叆 - */ - @ApiModelProperty(value= "鍙叆") - @TableField("in_enable") - private String inEnable; - - /** - * 鍙嚭 - */ - @ApiModelProperty(value= "鍙嚭") - @TableField("out_enable") - private String outEnable; - - /** - * 鐘舵�� - */ - @ApiModelProperty(value= "鐘舵��") - @TableField("crn_sts") - private Integer crnSts; - - /** - * 宸ヤ綔鍙� - */ - @ApiModelProperty(value= "宸ヤ綔鍙�") - @TableField("wrk_no") - private Integer wrkNo; - - /** - * 寮傚父鐮� - */ - @ApiModelProperty(value= "寮傚父鐮�") - @TableField("crn_err") - private Long crnErr; - - /** - * 婧愬簱浣� - */ - @ApiModelProperty(value= "婧愬簱浣�") - @TableField("frm_locno") - private String frmLocno; - - /** - * 婧愮珯 - */ - @ApiModelProperty(value= "婧愮珯") - @TableField("frm_sta") - private Integer frmSta; - - /** - * 鐩爣绔� - */ - @ApiModelProperty(value= "鐩爣绔�") - @TableField("to_sta") - private Integer toSta; - - /** - * 鐩爣搴撲綅 - */ - @ApiModelProperty(value= "鐩爣搴撲綅") - @TableField("to_locno") - private String toLocno; - - /** - * 鍒涘缓鑰� - */ - @ApiModelProperty(value= "鍒涘缓鑰�") - @TableField("appe_user") - private Long appeUser; - - /** - * 鍒涘缓鏃堕棿 - */ - @ApiModelProperty(value= "鍒涘缓鏃堕棿") - @TableField("appe_time") - private Date appeTime; - - /** - * 淇敼浜哄憳 - */ - @ApiModelProperty(value= "淇敼浜哄憳") - @TableField("modi_user") - private Long modiUser; - - /** - * 淇敼鏃堕棿 - */ - @ApiModelProperty(value= "淇敼鏃堕棿") - @TableField("modi_time") - private Date modiTime; - - @ApiModelProperty(value= "") - @TableField("hp_mk") - private String hpMk; - - @ApiModelProperty(value= "") - @TableField("retrieve_mk") - private String retrieveMk; - - @ApiModelProperty(value= "") - @TableField("ctl_hp") - private String ctlHp; - - @ApiModelProperty(value= "") - @TableField("ctl_rest") - private String ctlRest; - - @ApiModelProperty(value= "") - @TableField("emp_in") - private String empIn; - - @ApiModelProperty(value= "") - @TableField("tank_qty") - private Integer tankQty; - - @ApiModelProperty(value= "") - @TableField("tank_qty1") - private Integer tankQty1; - - public BasCrnp() {} - - public BasCrnp(String inEnable,String outEnable,Integer crnSts,Integer wrkNo,Long crnErr,String frmLocno,Integer frmSta,Integer toSta,String toLocno,Long appeUser,Date appeTime,Long modiUser,Date modiTime,String hpMk,String retrieveMk,String ctlHp,String ctlRest,String empIn,Integer tankQty,Integer tankQty1) { - this.inEnable = inEnable; - this.outEnable = outEnable; - this.crnSts = crnSts; - this.wrkNo = wrkNo; - this.crnErr = crnErr; - this.frmLocno = frmLocno; - this.frmSta = frmSta; - this.toSta = toSta; - this.toLocno = toLocno; - this.appeUser = appeUser; - this.appeTime = appeTime; - this.modiUser = modiUser; - this.modiTime = modiTime; - this.hpMk = hpMk; - this.retrieveMk = retrieveMk; - this.ctlHp = ctlHp; - this.ctlRest = ctlRest; - this.empIn = empIn; - this.tankQty = tankQty; - this.tankQty1 = tankQty1; - } - -// BasCrnp basCrnp = new BasCrnp( -// null, // 鍙叆 -// null, // 鍙嚭 -// null, // 鐘舵�� -// null, // 宸ヤ綔鍙� -// null, // 寮傚父鐮� -// null, // 婧愬簱浣� -// null, // 婧愮珯 -// null, // 鐩爣绔� -// null, // 鐩爣搴撲綅 -// null, // 鍒涘缓鑰� -// null, // 鍒涘缓鏃堕棿 -// null, // 淇敼浜哄憳 -// null, // 淇敼鏃堕棿 -// null, // -// null, // -// null, // -// null, // -// null, // -// null, // -// null // -// ); - - public Integer getCrnNo() { - return crnNo; - } - - public void setCrnNo(Integer crnNo) { - this.crnNo = crnNo; - } - - public String getInEnable() { - return inEnable; - } - - public void setInEnable(String inEnable) { - this.inEnable = inEnable; - } - - public String getOutEnable() { - return outEnable; - } - - public void setOutEnable(String outEnable) { - this.outEnable = outEnable; - } - - public Integer getCrnSts() { - return crnSts; - } - - public void setCrnSts(Integer crnSts) { - this.crnSts = crnSts; - } - - public Integer getWrkNo() { - return wrkNo; - } - - public void setWrkNo(Integer wrkNo) { - this.wrkNo = wrkNo; - } - - public Long getCrnErr() { - return crnErr; - } - - public void setCrnErr(Long crnErr) { - this.crnErr = crnErr; - } - - public String getFrmLocno() { - return frmLocno; - } - - public String getFrmLocno$(){ - LocMastService service = SpringUtils.getBean(LocMastService.class); - LocMast locMast = service.selectById(this.frmLocno); - if (!Cools.isEmpty(locMast)){ - return String.valueOf(locMast.getLocNo()); - } - return null; - } - - public void setFrmLocno(String frmLocno) { - this.frmLocno = frmLocno; - } - - public Integer getFrmSta() { - return frmSta; - } - - public String getFrmSta$(){ - BasDevpService service = SpringUtils.getBean(BasDevpService.class); - BasDevp basDevp = service.selectById(this.frmSta); - if (!Cools.isEmpty(basDevp)){ - return String.valueOf(basDevp.getDevNo()); - } - return null; - } - - public void setFrmSta(Integer frmSta) { - this.frmSta = frmSta; - } - - public Integer getToSta() { - return toSta; - } - - public String getToSta$(){ - BasDevpService service = SpringUtils.getBean(BasDevpService.class); - BasDevp basDevp = service.selectById(this.toSta); - if (!Cools.isEmpty(basDevp)){ - return String.valueOf(basDevp.getDevNo()); - } - return null; - } - - public void setToSta(Integer toSta) { - this.toSta = toSta; - } - - public String getToLocno() { - return toLocno; - } - - public String getToLocno$(){ - LocMastService service = SpringUtils.getBean(LocMastService.class); - LocMast locMast = service.selectById(this.toLocno); - if (!Cools.isEmpty(locMast)){ - return String.valueOf(locMast.getLocNo()); - } - return null; - } - - public void setToLocno(String toLocno) { - this.toLocno = toLocno; - } - - public Long getAppeUser() { - return appeUser; - } - - public String getAppeUser$(){ - UserService service = SpringUtils.getBean(UserService.class); - User user = service.selectById(this.appeUser); - if (!Cools.isEmpty(user)){ - return String.valueOf(user.getUsername()); - } - return null; - } - - public void setAppeUser(Long appeUser) { - this.appeUser = appeUser; - } - - public Date getAppeTime() { - return appeTime; - } - - public String getAppeTime$(){ - if (Cools.isEmpty(this.appeTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime); - } - - public void setAppeTime(Date appeTime) { - this.appeTime = appeTime; - } - - public Long getModiUser() { - return modiUser; - } - - public String getModiUser$(){ - UserService service = SpringUtils.getBean(UserService.class); - User user = service.selectById(this.modiUser); - if (!Cools.isEmpty(user)){ - return String.valueOf(user.getUsername()); - } - return null; - } - - public void setModiUser(Long modiUser) { - this.modiUser = modiUser; - } - - public Date getModiTime() { - return modiTime; - } - - public String getModiTime$(){ - if (Cools.isEmpty(this.modiTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime); - } - - public void setModiTime(Date modiTime) { - this.modiTime = modiTime; - } - - public String getHpMk() { - return hpMk; - } - - public void setHpMk(String hpMk) { - this.hpMk = hpMk; - } - - public String getRetrieveMk() { - return retrieveMk; - } - - public void setRetrieveMk(String retrieveMk) { - this.retrieveMk = retrieveMk; - } - - public String getCtlHp() { - return ctlHp; - } - - public void setCtlHp(String ctlHp) { - this.ctlHp = ctlHp; - } - - public String getCtlRest() { - return ctlRest; - } - - public void setCtlRest(String ctlRest) { - this.ctlRest = ctlRest; - } - - public String getEmpIn() { - return empIn; - } - - public void setEmpIn(String empIn) { - this.empIn = empIn; - } - - public Integer getTankQty() { - return tankQty; - } - - public void setTankQty(Integer tankQty) { - this.tankQty = tankQty; - } - - public Integer getTankQty1() { - return tankQty1; - } - - public void setTankQty1(Integer tankQty1) { - this.tankQty1 = tankQty1; - } - - -} diff --git a/src/main/java/com/zy/asrs/entity/BasErrLog.java b/src/main/java/com/zy/asrs/entity/BasErrLog.java deleted file mode 100644 index f135e6b..0000000 --- a/src/main/java/com/zy/asrs/entity/BasErrLog.java +++ /dev/null @@ -1,456 +0,0 @@ -package com.zy.asrs.entity; - -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableName; -import com.baomidou.mybatisplus.enums.IdType; -import com.core.common.Cools; -import com.core.common.SpringUtils; -import com.zy.system.entity.User; -import com.zy.system.service.UserService; -import io.swagger.annotations.ApiModelProperty; - -import java.io.Serializable; -import java.text.SimpleDateFormat; -import java.util.Date; - -@TableName("asr_bas_err_log") -public class BasErrLog implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * ID - */ - @ApiModelProperty(value= "ID") - @TableId(value = "id", type = IdType.AUTO) - private Long id; - - /** - * 缂栧彿 - */ - @ApiModelProperty(value= "缂栧彿") - private String uuid; - - /** - * 宸ヤ綔鍙� - */ - @ApiModelProperty(value= "宸ヤ綔鍙�") - @TableField("wrk_no") - private Integer wrkNo; - - /** - * 鍙戠敓鏃堕棿 - */ - @ApiModelProperty(value= "鍙戠敓鏃堕棿") - @TableField("start_time") - private Date startTime; - - /** - * 缁撴潫鏃堕棿 - */ - @ApiModelProperty(value= "缁撴潫鏃堕棿") - @TableField("end_time") - private Date endTime; - - /** - * 宸ヤ綔鐘舵�� - */ - @ApiModelProperty(value= "宸ヤ綔鐘舵��") - @TableField("wrk_sts") - private Long wrkSts; - - /** - * 鍏ュ嚭搴撶被鍨� - */ - @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�") - @TableField("io_type") - private Integer ioType; - - /** - * 鍫嗗灈鏈� - */ - @ApiModelProperty(value= "鍫嗗灈鏈�") - @TableField("crn_no") - private Integer crnNo; - - /** - * plc - */ - @ApiModelProperty(value= "plc") - @TableField("plc_no") - private Integer plcNo; - - /** - * 鐩爣搴撲綅 - */ - @ApiModelProperty(value= "鐩爣搴撲綅") - @TableField("loc_no") - private String locNo; - - /** - * 鐩爣绔� - */ - @ApiModelProperty(value= "鐩爣绔�") - @TableField("sta_no") - private Integer staNo; - - /** - * 婧愮珯 - */ - @ApiModelProperty(value= "婧愮珯") - @TableField("source_sta_no") - private Integer sourceStaNo; - - /** - * 婧愬簱浣� - */ - @ApiModelProperty(value= "婧愬簱浣�") - @TableField("source_loc_no") - private String sourceLocNo; - - /** - * 鏉$爜 - */ - @ApiModelProperty(value= "鏉$爜") - private String barcode; - - /** - * 寮傚父鐮� - */ - @ApiModelProperty(value= "寮傚父鐮�") - @TableField("err_code") - private Integer errCode; - - /** - * 寮傚父 - */ - @ApiModelProperty(value= "寮傚父") - private String error; - - /** - * 寮傚父鎯呭喌 1: 鏈鐞� 2: 宸蹭慨澶� - */ - @ApiModelProperty(value= "寮傚父鎯呭喌 1: 鏈鐞� 2: 宸蹭慨澶� ") - private Integer status; - - /** - * 娣诲姞鏃堕棿 - */ - @ApiModelProperty(value= "娣诲姞鏃堕棿") - @TableField("create_time") - private Date createTime; - - /** - * 娣诲姞浜哄憳 - */ - @ApiModelProperty(value= "娣诲姞浜哄憳") - @TableField("create_by") - private Long createBy; - - /** - * 淇敼鏃堕棿 - */ - @ApiModelProperty(value= "淇敼鏃堕棿") - @TableField("update_time") - private Date updateTime; - - /** - * 淇敼浜哄憳 - */ - @ApiModelProperty(value= "淇敼浜哄憳") - @TableField("update_by") - private Long updateBy; - - /** - * 澶囨敞 - */ - @ApiModelProperty(value= "澶囨敞") - private String memo; - - public BasErrLog() {} - - public BasErrLog(String uuid,Integer wrkNo,Date startTime,Date endTime,Long wrkSts,Integer ioType,Integer crnNo,Integer plcNo,String locNo,Integer staNo,Integer sourceStaNo,String sourceLocNo,String barcode,Integer errCode,String error,Integer status,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) { - this.uuid = uuid; - this.wrkNo = wrkNo; - this.startTime = startTime; - this.endTime = endTime; - this.wrkSts = wrkSts; - this.ioType = ioType; - this.crnNo = crnNo; - this.plcNo = plcNo; - this.locNo = locNo; - this.staNo = staNo; - this.sourceStaNo = sourceStaNo; - this.sourceLocNo = sourceLocNo; - this.barcode = barcode; - this.errCode = errCode; - this.error = error; - this.status = status; - this.createTime = createTime; - this.createBy = createBy; - this.updateTime = updateTime; - this.updateBy = updateBy; - this.memo = memo; - } - -// BasErrLog basErrLog = new BasErrLog( -// null, // 缂栧彿 -// null, // 宸ヤ綔鍙� -// null, // 鍙戠敓鏃堕棿 -// null, // 缁撴潫鏃堕棿 -// null, // 宸ヤ綔鐘舵�� -// null, // 鍏ュ嚭搴撶被鍨� -// null, // 鍫嗗灈鏈� -// null, // plc -// null, // 鐩爣搴撲綅 -// null, // 鐩爣绔� -// null, // 婧愮珯 -// null, // 婧愬簱浣� -// null, // 鏉$爜 -// null, // 寮傚父鐮� -// null, // 寮傚父 -// null, // 寮傚父鎯呭喌 -// null, // 娣诲姞鏃堕棿 -// null, // 娣诲姞浜哄憳 -// null, // 淇敼鏃堕棿 -// null, // 淇敼浜哄憳 -// null // 澶囨敞 -// ); - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getUuid() { - return uuid; - } - - public void setUuid(String uuid) { - this.uuid = uuid; - } - - public Integer getWrkNo() { - return wrkNo; - } - - public void setWrkNo(Integer wrkNo) { - this.wrkNo = wrkNo; - } - - public Date getStartTime() { - return startTime; - } - - public String getStartTime$(){ - if (Cools.isEmpty(this.startTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.startTime); - } - - public void setStartTime(Date startTime) { - this.startTime = startTime; - } - - public Date getEndTime() { - return endTime; - } - - public String getEndTime$(){ - if (Cools.isEmpty(this.endTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime); - } - - public void setEndTime(Date endTime) { - this.endTime = endTime; - } - - public Long getWrkSts() { - return wrkSts; - } - - public void setWrkSts(Long wrkSts) { - this.wrkSts = wrkSts; - } - - public Integer getIoType() { - return ioType; - } - - public void setIoType(Integer ioType) { - this.ioType = ioType; - } - - public Integer getCrnNo() { - return crnNo; - } - - public void setCrnNo(Integer crnNo) { - this.crnNo = crnNo; - } - - public Integer getPlcNo() { - return plcNo; - } - - public void setPlcNo(Integer plcNo) { - this.plcNo = plcNo; - } - - public String getLocNo() { - return locNo; - } - - public void setLocNo(String locNo) { - this.locNo = locNo; - } - - public Integer getStaNo() { - return staNo; - } - - public void setStaNo(Integer staNo) { - this.staNo = staNo; - } - - public Integer getSourceStaNo() { - return sourceStaNo; - } - - public void setSourceStaNo(Integer sourceStaNo) { - this.sourceStaNo = sourceStaNo; - } - - public String getSourceLocNo() { - return sourceLocNo; - } - - public void setSourceLocNo(String sourceLocNo) { - this.sourceLocNo = sourceLocNo; - } - - public String getBarcode() { - return barcode; - } - - public void setBarcode(String barcode) { - this.barcode = barcode; - } - - public Integer getErrCode() { - return errCode; - } - - public void setErrCode(Integer errCode) { - this.errCode = errCode; - } - - public String getError() { - return error; - } - - public void setError(String error) { - this.error = error; - } - - public Integer getStatus() { - return status; - } - - public String getStatus$(){ - if (null == this.status){ return null; } - switch (this.status){ - case 1: - return "鏈鐞�"; - case 2: - return "宸蹭慨澶�"; - default: - return String.valueOf(this.status); - } - } - - public void setStatus(Integer status) { - this.status = status; - } - - public Date getCreateTime() { - return createTime; - } - - public String getCreateTime$(){ - if (Cools.isEmpty(this.createTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); - } - - public void setCreateTime(Date createTime) { - this.createTime = createTime; - } - - public Long getCreateBy() { - return createBy; - } - - public String getCreateBy$(){ - UserService service = SpringUtils.getBean(UserService.class); - User user = service.selectById(this.createBy); - if (!Cools.isEmpty(user)){ - return String.valueOf(user.getUsername()); - } - return null; - } - - public void setCreateBy(Long createBy) { - this.createBy = createBy; - } - - public Date getUpdateTime() { - return updateTime; - } - - public String getUpdateTime$(){ - if (Cools.isEmpty(this.updateTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); - } - - public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; - } - - public Long getUpdateBy() { - return updateBy; - } - - public String getUpdateBy$(){ - UserService service = SpringUtils.getBean(UserService.class); - User user = service.selectById(this.updateBy); - if (!Cools.isEmpty(user)){ - return String.valueOf(user.getUsername()); - } - return null; - } - - public void setUpdateBy(Long updateBy) { - this.updateBy = updateBy; - } - - public String getMemo() { - return memo; - } - - public void setMemo(String memo) { - this.memo = memo; - } - - -} diff --git a/src/main/java/com/zy/asrs/entity/BasLift.java b/src/main/java/com/zy/asrs/entity/BasLift.java index a72cefb..66b85e2 100644 --- a/src/main/java/com/zy/asrs/entity/BasLift.java +++ b/src/main/java/com/zy/asrs/entity/BasLift.java @@ -1,13 +1,11 @@ package com.zy.asrs.entity; -import com.alibaba.fastjson.JSON; import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.enums.IdType; import com.baomidou.mybatisplus.annotations.TableField; import java.text.SimpleDateFormat; import java.util.Date; -import com.zy.core.model.protocol.NyShuttleProtocol; import org.springframework.format.annotation.DateTimeFormat; import com.core.common.SpringUtils; import com.zy.system.service.UserService; @@ -115,13 +113,6 @@ return String.valueOf(user.getUsername()); } return null; - } - - public NyShuttleProtocol.NyShuttlePointClass getPoint$() { - if (Cools.isEmpty(this.point)){ - return null; - } - return JSON.parseObject(this.point, NyShuttleProtocol.NyShuttlePointClass.class); } } diff --git a/src/main/java/com/zy/asrs/entity/BasShuttle.java b/src/main/java/com/zy/asrs/entity/BasShuttle.java index ed0fd8f..1ee828b 100644 --- a/src/main/java/com/zy/asrs/entity/BasShuttle.java +++ b/src/main/java/com/zy/asrs/entity/BasShuttle.java @@ -106,13 +106,6 @@ private String memo; /** - * 鎻愬崌鏈哄彿 - */ - @ApiModelProperty(value= "鎻愬崌鏈哄彿") - @TableField("lift_no") - private Integer liftNo; - - /** * 浣滀笟鏍囪 */ @ApiModelProperty(value= "浣滀笟鏍囪") @@ -133,9 +126,16 @@ @TableField("device_status") private String deviceStatus; + /** + * 灏忚溅绂佺敤妤煎眰 + */ + @ApiModelProperty(value= "灏忚溅绂佺敤妤煎眰") + @TableField("disable_lev") + private String disableLev; + public BasShuttle() {} - public BasShuttle(Integer shuttleNo, Integer status, Integer shuttleStatus, Integer wrkNo, String idleLoc, Integer autoCharge, Integer chargeLine, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo, Integer liftNo, Boolean pakMk, String deviceStatus) { + public BasShuttle(Integer shuttleNo, Integer status, Integer shuttleStatus, Integer wrkNo, String idleLoc, Integer autoCharge, Integer chargeLine, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo, Boolean pakMk, String deviceStatus) { this.shuttleNo = shuttleNo; this.status = status; this.shuttleStatus = shuttleStatus; @@ -148,7 +148,6 @@ this.updateBy = updateBy; this.updateTime = updateTime; this.memo = memo; - this.liftNo = liftNo; this.pakMk = pakMk; this.deviceStatus = deviceStatus; } diff --git a/src/main/java/com/zy/asrs/entity/BasSte.java b/src/main/java/com/zy/asrs/entity/BasSte.java deleted file mode 100644 index 596f569..0000000 --- a/src/main/java/com/zy/asrs/entity/BasSte.java +++ /dev/null @@ -1,197 +0,0 @@ -package com.zy.asrs.entity; - -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableName; -import com.baomidou.mybatisplus.enums.IdType; -import com.core.common.Cools; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Data -@TableName("asr_bas_ste") -public class BasSte implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 绌挎杞﹀彿 - */ - @ApiModelProperty(value= "绌挎杞﹀彿") - @TableId(value = "ste_no", type = IdType.INPUT) - @TableField("ste_no") - private Integer steNo; - - /** - * 鍙叆 - */ - @ApiModelProperty(value= "鍙叆") - @TableField("in_enable") - private String inEnable; - - /** - * 鍙嚭 - */ - @ApiModelProperty(value= "鍙嚭") - @TableField("out_enable") - private String outEnable; - - /** - * 鐘舵�� - */ - @ApiModelProperty(value= "鐘舵��") - @TableField("ste_sts") - private Integer steSts; - - /** - * 浠诲姟鍙� - */ - @ApiModelProperty(value= "浠诲姟鍙�") - @TableField("wrk_no") - private Integer wrkNo; - - /** - * 浠诲姟鍙� - */ - @ApiModelProperty(value= "鍫嗗灈鏈哄彿") - @TableField("crn_no") - private Integer crnNo; - - /** - * 鎺� - */ - @ApiModelProperty(value= "鎺�") - private Integer row; - - /** - * 鍒� - */ - @ApiModelProperty(value= "鍒�") - private Integer bay; - - /** - * 灞� - */ - @ApiModelProperty(value= "灞�") - private Integer lev; - - /** - * 鍘嗗彶鎺� - */ - @ApiModelProperty(value= "鍘嗗彶鎺�") - @TableField("his_row") - private Integer hisRow; - - /** - * 鍘嗗彶鍒� - */ - @ApiModelProperty(value= "鍘嗗彶鍒�") - @TableField("his_bay") - private Integer hisBay; - - /** - * 鍘嗗彶灞� - */ - @ApiModelProperty(value= "鍘嗗彶灞�") - @TableField("his_lev") - private Integer hisLev; - - /** - * 鏆傚瓨搴撲綅 - */ - @ApiModelProperty(value= "鏆傚瓨搴撲綅") - @TableField("idle_loc") - private String idleLoc; - - /** - * 閿欒鐮� - */ - @ApiModelProperty(value= "閿欒鐮�") - @TableField("ste_err") - private Long steErr; - - /** - * 鏍囪 - */ - @ApiModelProperty(value= "鏍囪") - @TableField("pak_mk") - private String pakMk; - - /** - * 鑷姩鍏呯數 - */ - @ApiModelProperty(value= "鑷姩鍏呯數") - @TableField("auto_charge") - private String autoCharge; - - /** - * 鏈�浣庣數閲� - */ - @ApiModelProperty(value= "鏈�浣庣數閲�") - @TableField("charge_line") - private String chargeLine; - - /** - * 鐘舵�� 1: 姝e父 0: 绂佺敤 - */ - @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 绂佺敤 ") - private Integer status; - - /** - * 娣诲姞浜哄憳 - */ - @ApiModelProperty(value= "娣诲姞浜哄憳") - @TableField("create_by") - private Long createBy; - - /** - * 娣诲姞鏃堕棿 - */ - @ApiModelProperty(value= "娣诲姞鏃堕棿") - @TableField("create_time") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date createTime; - - /** - * 淇敼浜哄憳 - */ - @ApiModelProperty(value= "淇敼浜哄憳") - @TableField("update_by") - private Long updateBy; - - /** - * 淇敼鏃堕棿 - */ - @ApiModelProperty(value= "淇敼鏃堕棿") - @TableField("update_time") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date updateTime; - - /** - * 澶囨敞 - */ - @ApiModelProperty(value= "澶囨敞") - private String memo; - - public String getCreateTime$(){ - if (Cools.isEmpty(this.createTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); - } - - public String getUpdateTime$(){ - if (Cools.isEmpty(this.updateTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); - } - - - -} diff --git a/src/main/java/com/zy/asrs/entity/BasSteErr.java b/src/main/java/com/zy/asrs/entity/BasSteErr.java deleted file mode 100644 index ca59e78..0000000 --- a/src/main/java/com/zy/asrs/entity/BasSteErr.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.zy.asrs.entity; - -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableName; -import com.baomidou.mybatisplus.enums.IdType; -import com.core.common.Cools; -import io.swagger.annotations.ApiModelProperty; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.text.SimpleDateFormat; -import java.util.Date; - -@TableName("asr_bas_ste_err") -public class BasSteErr implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 寮傚父鐮� - */ - @ApiModelProperty(value= "寮傚父鐮�") - @TableId(value = "error_code", type = IdType.INPUT) - @TableField("error_code") - private Long errorCode; - - /** - * 寮傚父 - */ - @ApiModelProperty(value= "寮傚父") - @TableField("err_name") - private String errName; - - /** - * 淇敼浜哄憳 - */ - @ApiModelProperty(value= "淇敼浜哄憳") - @TableField("modi_user") - private Long modiUser; - - /** - * 淇敼鏃堕棿 - */ - @ApiModelProperty(value= "淇敼鏃堕棿") - @TableField("modi_time") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date modiTime; - - /** - * 娣诲姞浜哄憳 - */ - @ApiModelProperty(value= "娣诲姞浜哄憳") - @TableField("appe_user") - private Long appeUser; - - /** - * 娣诲姞鏃堕棿 - */ - @ApiModelProperty(value= "娣诲姞鏃堕棿") - @TableField("appe_time") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date appeTime; - - public BasSteErr() {} - - public BasSteErr(Long errorCode,String errName,Long modiUser,Date modiTime,Long appeUser,Date appeTime) { - this.errorCode = errorCode; - this.errName = errName; - this.modiUser = modiUser; - this.modiTime = modiTime; - this.appeUser = appeUser; - this.appeTime = appeTime; - } - -// BasSteErr basSteErr = new BasSteErr( -// null, // 寮傚父鐮乕闈炵┖] -// null, // 寮傚父 -// null, // 淇敼浜哄憳 -// null, // 淇敼鏃堕棿 -// null, // 娣诲姞浜哄憳 -// null // 娣诲姞鏃堕棿 -// ); - - public Long getErrorCode() { - return errorCode; - } - - public void setErrorCode(Long errorCode) { - this.errorCode = errorCode; - } - - public String getErrName() { - return errName; - } - - public void setErrName(String errName) { - this.errName = errName; - } - - public Long getModiUser() { - return modiUser; - } - - public void setModiUser(Long modiUser) { - this.modiUser = modiUser; - } - - public Date getModiTime() { - return modiTime; - } - - public String getModiTime$(){ - if (Cools.isEmpty(this.modiTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime); - } - - public void setModiTime(Date modiTime) { - this.modiTime = modiTime; - } - - public Long getAppeUser() { - return appeUser; - } - - public void setAppeUser(Long appeUser) { - this.appeUser = appeUser; - } - - public Date getAppeTime() { - return appeTime; - } - - public String getAppeTime$(){ - if (Cools.isEmpty(this.appeTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime); - } - - public void setAppeTime(Date appeTime) { - this.appeTime = appeTime; - } - - -} diff --git a/src/main/java/com/zy/asrs/entity/BasSteErrLog.java b/src/main/java/com/zy/asrs/entity/BasSteErrLog.java deleted file mode 100644 index aa208ed..0000000 --- a/src/main/java/com/zy/asrs/entity/BasSteErrLog.java +++ /dev/null @@ -1,266 +0,0 @@ -package com.zy.asrs.entity; - -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableName; -import com.baomidou.mybatisplus.enums.IdType; -import com.core.common.Cools; -import com.core.common.SpringUtils; -import com.zy.system.entity.User; -import com.zy.system.service.UserService; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Data -@TableName("asr_bas_ste_err_log") -public class BasSteErrLog implements Serializable { - - private static final long serialVersionUID = 1L; - - @ApiModelProperty(value= "") - @TableId(value = "id", type = IdType.AUTO) - private Long id; - - /** - * 缂栧彿 - */ - @ApiModelProperty(value= "缂栧彿") - private String uuid; - - /** - * 宸ヤ綔鍙� - */ - @ApiModelProperty(value= "宸ヤ綔鍙�") - @TableField("wrk_no") - private Integer wrkNo; - - /** - * 鍙戠敓鏃堕棿 - */ - @ApiModelProperty(value= "鍙戠敓鏃堕棿") - @TableField("start_time") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date startTime; - - /** - * 缁撴潫鏃堕棿 - */ - @ApiModelProperty(value= "缁撴潫鏃堕棿") - @TableField("end_time") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date endTime; - - /** - * 宸ヤ綔鐘舵�� - */ - @ApiModelProperty(value= "宸ヤ綔鐘舵��") - @TableField("wrk_sts") - private Long wrkSts; - - /** - * 鍏ュ嚭搴撶被鍨� - */ - @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�") - @TableField("io_type") - private Integer ioType; - - /** - * 绌挎杞� - */ - @ApiModelProperty(value= "绌挎杞�") - @TableField("ste_no") - private Integer steNo; - - /** - * plc - */ - @ApiModelProperty(value= "plc") - @TableField("plc_no") - private Integer plcNo; - - /** - * 鐩爣搴撲綅 - */ - @ApiModelProperty(value= "鐩爣搴撲綅") - @TableField("loc_no") - private String locNo; - - /** - * 鐩爣绔� - */ - @ApiModelProperty(value= "鐩爣绔�") - @TableField("sta_no") - private Integer staNo; - - /** - * 婧愮珯 - */ - @ApiModelProperty(value= "婧愮珯") - @TableField("source_sta_no") - private Integer sourceStaNo; - - /** - * 婧愬簱浣� - */ - @ApiModelProperty(value= "婧愬簱浣�") - @TableField("source_loc_no") - private String sourceLocNo; - - /** - * 鏉$爜 - */ - @ApiModelProperty(value= "鏉$爜") - private String barcode; - - /** - * 寮傚父鐮� - */ - @ApiModelProperty(value= "寮傚父鐮�") - @TableField("err_code") - private Integer errCode; - - /** - * 寮傚父 - */ - @ApiModelProperty(value= "寮傚父") - private String error; - - /** - * 寮傚父鎯呭喌 1: 鏈鐞� 2: 宸蹭慨澶� - */ - @ApiModelProperty(value= "寮傚父鎯呭喌 1: 鏈鐞� 2: 宸蹭慨澶� ") - private Integer status; - - /** - * 娣诲姞鏃堕棿 - */ - @ApiModelProperty(value= "娣诲姞鏃堕棿") - @TableField("create_time") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date createTime; - - /** - * 娣诲姞浜哄憳 - */ - @ApiModelProperty(value= "娣诲姞浜哄憳") - @TableField("create_by") - private Long createBy; - - /** - * 淇敼鏃堕棿 - */ - @ApiModelProperty(value= "淇敼鏃堕棿") - @TableField("update_time") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date updateTime; - - /** - * 淇敼浜哄憳 - */ - @ApiModelProperty(value= "淇敼浜哄憳") - @TableField("update_by") - private Long updateBy; - - /** - * 澶囨敞 - */ - @ApiModelProperty(value= "澶囨敞") - private String memo; - - public BasSteErrLog() {} - - public BasSteErrLog(String uuid, Integer wrkNo, Date startTime, Date endTime, Long wrkSts, Integer ioType, Integer steNo, Integer plcNo, String locNo, Integer staNo, Integer sourceStaNo, String sourceLocNo, String barcode, Integer errCode, String error, Integer status, Date createTime, Long createBy, Date updateTime, Long updateBy, String memo) { - this.uuid = uuid; - this.wrkNo = wrkNo; - this.startTime = startTime; - this.endTime = endTime; - this.wrkSts = wrkSts; - this.ioType = ioType; - this.steNo = steNo; - this.plcNo = plcNo; - this.locNo = locNo; - this.staNo = staNo; - this.sourceStaNo = sourceStaNo; - this.sourceLocNo = sourceLocNo; - this.barcode = barcode; - this.errCode = errCode; - this.error = error; - this.status = status; - this.createTime = createTime; - this.createBy = createBy; - this.updateTime = updateTime; - this.updateBy = updateBy; - this.memo = memo; - } - -// BasSteErrLog basSteErrLog = new BasSteErrLog( -// null, // 缂栧彿 -// null, // 宸ヤ綔鍙� -// null, // 鍙戠敓鏃堕棿 -// null, // 缁撴潫鏃堕棿 -// null, // 宸ヤ綔鐘舵�� -// null, // 鍏ュ嚭搴撶被鍨� -// null, // 绌挎杞� -// null, // plc -// null, // 鐩爣搴撲綅 -// null, // 鐩爣绔� -// null, // 婧愮珯 -// null, // 婧愬簱浣� -// null, // 鏉$爜 -// null, // 寮傚父鐮� -// null, // 寮傚父 -// null, // 寮傚父鎯呭喌 -// null, // 娣诲姞鏃堕棿 -// null, // 娣诲姞浜哄憳 -// null, // 淇敼鏃堕棿 -// null, // 淇敼浜哄憳 -// null // 澶囨敞 -// ); - - public String getStartTime$(){ - if (Cools.isEmpty(this.startTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.startTime); - } - - public String getEndTime$(){ - if (Cools.isEmpty(this.endTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime); - } - - public String getStatus$(){ - if (null == this.status){ return null; } - switch (this.status){ - case 1: - return "鏈鐞�"; - case 2: - return "宸蹭慨澶�"; - default: - return String.valueOf(this.status); - } - } - - public String getCreateTime$(){ - if (Cools.isEmpty(this.createTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); - } - - public String getUpdateTime$(){ - if (Cools.isEmpty(this.updateTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); - } - - -} diff --git a/src/main/java/com/zy/asrs/entity/BasSteOpt.java b/src/main/java/com/zy/asrs/entity/BasSteOpt.java deleted file mode 100644 index 02c3a03..0000000 --- a/src/main/java/com/zy/asrs/entity/BasSteOpt.java +++ /dev/null @@ -1,341 +0,0 @@ -package com.zy.asrs.entity; - -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableName; -import com.baomidou.mybatisplus.enums.IdType; -import com.core.common.Cools; -import io.swagger.annotations.ApiModelProperty; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.text.SimpleDateFormat; -import java.util.Date; - -@TableName("asr_bas_ste_opt") -public class BasSteOpt implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * ID - */ - @ApiModelProperty(value= "ID") - @TableId(value = "id", type = IdType.AUTO) - private Long id; - - /** - * 浠诲姟鍙� - */ - @ApiModelProperty(value= "浠诲姟鍙�") - @TableField("wrk_no") - private Integer wrkNo; - - /** - * 绌挎杞� - */ - @ApiModelProperty(value= "绌挎杞�") - @TableField("ste_no") - private Integer steNo; - - /** - * 涓嬪彂鏃堕棿 - */ - @ApiModelProperty(value= "涓嬪彂鏃堕棿") - @TableField("send_time") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date sendTime; - - /** - * 浣滀笟 - */ - @ApiModelProperty(value= "浣滀笟") - private String mode; - - /** - * 婧愭帓 - */ - @ApiModelProperty(value= "婧愭帓") - @TableField("source_row") - private Integer sourceRow; - - /** - * 婧愬垪 - */ - @ApiModelProperty(value= "婧愬垪") - @TableField("source_bay") - private Integer sourceBay; - - /** - * 婧愬眰 - */ - @ApiModelProperty(value= "婧愬眰") - @TableField("source_lev") - private Integer sourceLev; - - /** - * 婧愮珯 - */ - @ApiModelProperty(value= "婧愮珯") - @TableField("source_sta") - private Integer sourceSta; - - /** - * 鐩爣鎺� - */ - @ApiModelProperty(value= "鐩爣鎺�") - @TableField("pos_row") - private Integer posRow; - - /** - * 鐩爣鍒� - */ - @ApiModelProperty(value= "鐩爣鍒�") - @TableField("pos_bay") - private Integer posBay; - - /** - * 鐩爣灞� - */ - @ApiModelProperty(value= "鐩爣灞�") - @TableField("pos_lev") - private Integer posLev; - - /** - * 鐩爣绔� - */ - @ApiModelProperty(value= "鐩爣绔�") - @TableField("pos_sta") - private Integer posSta; - - /** - * 鍝嶅簲缁撴灉 1: 姝e父 0: 澶辫触 - */ - @ApiModelProperty(value= "鍝嶅簲缁撴灉 1: 姝e父 0: 澶辫触 ") - private Integer response; - - /** - * 淇敼鏃堕棿 - */ - @ApiModelProperty(value= "淇敼鏃堕棿") - @TableField("update_time") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date updateTime; - - /** - * 淇敼浜哄憳 - */ - @ApiModelProperty(value= "淇敼浜哄憳") - @TableField("update_by") - private Long updateBy; - - /** - * 澶囨敞 - */ - @ApiModelProperty(value= "澶囨敞") - private String memo; - - public BasSteOpt() {} - - public BasSteOpt(Integer wrkNo,Integer steNo,Date sendTime,String mode,Integer sourceRow,Integer sourceBay,Integer sourceLev,Integer sourceSta,Integer posRow,Integer posBay,Integer posLev,Integer posSta,Integer response,Date updateTime,Long updateBy,String memo) { - this.wrkNo = wrkNo; - this.steNo = steNo; - this.sendTime = sendTime; - this.mode = mode; - this.sourceRow = sourceRow; - this.sourceBay = sourceBay; - this.sourceLev = sourceLev; - this.sourceSta = sourceSta; - this.posRow = posRow; - this.posBay = posBay; - this.posLev = posLev; - this.posSta = posSta; - this.response = response; - this.updateTime = updateTime; - this.updateBy = updateBy; - this.memo = memo; - } - -// BasSteOpt basSteOpt = new BasSteOpt( -// null, // 浠诲姟鍙� -// null, // 绌挎杞� -// null, // 涓嬪彂鏃堕棿 -// null, // 浣滀笟 -// null, // 婧愭帓 -// null, // 婧愬垪 -// null, // 婧愬眰 -// null, // 婧愮珯 -// null, // 鐩爣鎺� -// null, // 鐩爣鍒� -// null, // 鐩爣灞� -// null, // 鐩爣绔� -// null, // 鍝嶅簲缁撴灉 -// null, // 淇敼鏃堕棿 -// null, // 淇敼浜哄憳 -// null // 澶囨敞 -// ); - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public Integer getWrkNo() { - return wrkNo; - } - - public void setWrkNo(Integer wrkNo) { - this.wrkNo = wrkNo; - } - - public Integer getSteNo() { - return steNo; - } - - public void setSteNo(Integer steNo) { - this.steNo = steNo; - } - - public Date getSendTime() { - return sendTime; - } - - public String getSendTime$(){ - if (Cools.isEmpty(this.sendTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.sendTime); - } - - public void setSendTime(Date sendTime) { - this.sendTime = sendTime; - } - - public String getMode() { - return mode; - } - - public void setMode(String mode) { - this.mode = mode; - } - - public Integer getSourceRow() { - return sourceRow; - } - - public void setSourceRow(Integer sourceRow) { - this.sourceRow = sourceRow; - } - - public Integer getSourceBay() { - return sourceBay; - } - - public void setSourceBay(Integer sourceBay) { - this.sourceBay = sourceBay; - } - - public Integer getSourceLev() { - return sourceLev; - } - - public void setSourceLev(Integer sourceLev) { - this.sourceLev = sourceLev; - } - - public Integer getSourceSta() { - return sourceSta; - } - - public void setSourceSta(Integer sourceSta) { - this.sourceSta = sourceSta; - } - - public Integer getPosRow() { - return posRow; - } - - public void setPosRow(Integer posRow) { - this.posRow = posRow; - } - - public Integer getPosBay() { - return posBay; - } - - public void setPosBay(Integer posBay) { - this.posBay = posBay; - } - - public Integer getPosLev() { - return posLev; - } - - public void setPosLev(Integer posLev) { - this.posLev = posLev; - } - - public Integer getPosSta() { - return posSta; - } - - public void setPosSta(Integer posSta) { - this.posSta = posSta; - } - - public Integer getResponse() { - return response; - } - - public String getResponse$(){ - if (null == this.response){ return null; } - switch (this.response){ - case 1: - return "姝e父"; - case 0: - return "澶辫触"; - default: - return String.valueOf(this.response); - } - } - - public void setResponse(Integer response) { - this.response = response; - } - - public Date getUpdateTime() { - return updateTime; - } - - public String getUpdateTime$(){ - if (Cools.isEmpty(this.updateTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); - } - - public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; - } - - public Long getUpdateBy() { - return updateBy; - } - - public void setUpdateBy(Long updateBy) { - this.updateBy = updateBy; - } - - public String getMemo() { - return memo; - } - - public void setMemo(String memo) { - this.memo = memo; - } - - -} diff --git a/src/main/java/com/zy/asrs/entity/LocMast.java b/src/main/java/com/zy/asrs/entity/LocMast.java index d465035..c302885 100644 --- a/src/main/java/com/zy/asrs/entity/LocMast.java +++ b/src/main/java/com/zy/asrs/entity/LocMast.java @@ -29,35 +29,9 @@ @TableField("loc_no") private String locNo; - /** - * 搴撲綅绫诲瀷 - */ - @ApiModelProperty(value= "搴撲綅绫诲瀷") - @TableField("whs_type") - private Long whsType; - - @ApiModelProperty(value= "") - @TableField("plt_type") - private Integer pltType; - - @ApiModelProperty(value= "") - @TableField("ctn_type") - private Integer ctnType; - @ApiModelProperty(value= "搴撲綅鐘舵��") @TableField("loc_sts") private String locSts; - - @ApiModelProperty(value= "") - @TableField("sheet_no") - private String sheetNo; - - /** - * 鍫嗗灈鏈哄彿(asr_bas_crnp) - */ - @ApiModelProperty(value= "鍫嗗灈鏈哄彿") - @TableField("crn_no") - private Integer crnNo; /** * 鎺� @@ -77,13 +51,6 @@ @ApiModelProperty(value= "灞�") private Integer lev1; - /** - * 婊℃澘 - */ - @ApiModelProperty(value= "婊℃澘") - @TableField("full_plt") - private String fullPlt; - @ApiModelProperty(value= "") @TableField("loc_type") private String locType; @@ -101,16 +68,8 @@ private Short locType3; @ApiModelProperty(value= "") - @TableField("out_enable") - private String outEnable; - - @ApiModelProperty(value= "") @TableField("io_time") private Date ioTime; - - @ApiModelProperty(value= "") - @TableField("first_time") - private Date firstTime; /** * 淇敼浜哄憳 @@ -149,30 +108,7 @@ private String errorMemo; @ApiModelProperty(value= "") - @TableField("ctn_kind") - private Integer ctnKind; - - @ApiModelProperty(value= "") - @TableField("sc_weight") - private Double scWeight; - - @ApiModelProperty(value= "") - @TableField("inv_wh") - private String invWh; - - @ApiModelProperty(value= "") - private String mk; - - @ApiModelProperty(value= "") private String barcode; - - @ApiModelProperty(value= "") - @TableField("Pdc_type") - private String PdcType; - - @ApiModelProperty(value= "") - @TableField("ctn_no") - private String ctnNo; @ApiModelProperty(value= "搴撲綅鐪熷疄浜岀淮鐮�") @TableField("qr_code_value") @@ -183,13 +119,6 @@ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime); - } - - public String getFirstTime$(){ - if (Cools.isEmpty(this.firstTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.firstTime); } public String getLocType1$() { diff --git a/src/main/java/com/zy/asrs/entity/StaDesc.java b/src/main/java/com/zy/asrs/entity/StaDesc.java index 9c61158..feeb779 100644 --- a/src/main/java/com/zy/asrs/entity/StaDesc.java +++ b/src/main/java/com/zy/asrs/entity/StaDesc.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.enums.IdType; import com.core.common.Cools; import com.core.common.SpringUtils; -import com.zy.asrs.service.BasCrnpService; import com.zy.asrs.service.BasDevpService; import com.zy.system.entity.User; import com.zy.system.service.UserService; @@ -183,15 +182,6 @@ public Integer getCrnNo() { return crnNo; - } - - public String getCrnNo$(){ - BasCrnpService service = SpringUtils.getBean(BasCrnpService.class); - BasCrnp basCrnp = service.selectById(this.crnNo); - if (!Cools.isEmpty(basCrnp)){ - return String.valueOf(basCrnp.getCrnNo()); - } - return null; } public void setCrnNo(Integer crnNo) { diff --git a/src/main/java/com/zy/asrs/entity/WrkCharge.java b/src/main/java/com/zy/asrs/entity/WrkCharge.java deleted file mode 100644 index d4ff300..0000000 --- a/src/main/java/com/zy/asrs/entity/WrkCharge.java +++ /dev/null @@ -1,340 +0,0 @@ -package com.zy.asrs.entity; - -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableName; -import com.baomidou.mybatisplus.enums.IdType; -import com.core.common.Cools; -import com.core.common.SpringUtils; -import com.zy.asrs.service.BasCrnpService; -import com.zy.asrs.service.BasDevpService; -import com.zy.asrs.service.BasSteService; -import com.zy.asrs.service.LocMastService; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.text.SimpleDateFormat; -import java.util.Date; - -@Data -@TableName("asr_wrk_charge") -public class WrkCharge implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 宸ヤ綔鍙� - */ - @ApiModelProperty(value= "宸ヤ綔鍙�") - @TableId(value = "wrk_no", type = IdType.INPUT) - @TableField("wrk_no") - private Integer wrkNo; - - /** - * 鏍囪 - */ - @ApiModelProperty(value= "鏍囪") - private String mk; - - /** - * 宸ヤ綔鐘舵�� - */ - @ApiModelProperty(value= "宸ヤ綔鐘舵��") - @TableField("wrk_sts") - private Long wrkSts; - - /** - * 鍏ュ嚭搴撶被鍨� - */ - @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�") - @TableField("io_type") - private Integer ioType; - - /** - * 鍫嗗灈鏈� - */ - @ApiModelProperty(value= "鍫嗗灈鏈�") - @TableField("crn_no") - private Integer crnNo; - - /** - * 鍥涘悜绌挎杞� - */ - @ApiModelProperty(value= "鍥涘悜绌挎杞�") - @TableField("shuttle_no") - private Integer shuttleNo; - - /** - * 绌挎杞� - */ - @ApiModelProperty(value= "绌挎杞�") - @TableField("ste_no") - private Integer steNo; - - /** - * 鍏呯數妗� - */ - @ApiModelProperty(value= "鍏呯數妗�") - private Integer charge; - - /** - * 宸烽亾鍙� - */ - @ApiModelProperty(value= "宸烽亾鍙�") - @TableField("out_most") - private Integer outMost; - - /** - * 浼樺厛绾� - */ - @ApiModelProperty(value= "浼樺厛绾�") - @TableField("io_pri") - private Double ioPri; - - /** - * 鐩爣搴撲綅 - */ - @ApiModelProperty(value= "鐩爣搴撲綅") - @TableField("loc_no") - private String locNo; - - /** - * 鐩爣绔� - */ - @ApiModelProperty(value= "鐩爣绔�") - @TableField("sta_no") - private Integer staNo; - - /** - * 婧愮珯 - */ - @ApiModelProperty(value= "婧愮珯") - @TableField("source_sta_no") - private Integer sourceStaNo; - - /** - * 婧愬簱浣� - */ - @ApiModelProperty(value= "婧愬簱浣�") - @TableField("source_loc_no") - private String sourceLocNo; - - /** - * 绌烘澘(checkBox) - */ - @ApiModelProperty(value= "绌烘澘(checkBox)") - @TableField("empty_mk") - private String emptyMk; - - /** - * 宸ヤ綔鏃堕棿 - */ - @ApiModelProperty(value= "宸ヤ綔鏃堕棿") - @TableField("io_time") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date ioTime; - - /** - * 鍫嗗灈鏈哄惎鍔ㄦ椂闂� - */ - @ApiModelProperty(value= "鍫嗗灈鏈哄惎鍔ㄦ椂闂�") - @TableField("crn_str_time") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date crnStrTime; - - /** - * 鍫嗗灈鏈哄仠姝㈡椂闂� - */ - @ApiModelProperty(value= "鍫嗗灈鏈哄仠姝㈡椂闂�") - @TableField("crn_end_time") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date crnEndTime; - - /** - * 淇敼浜哄憳 - */ - @ApiModelProperty(value= "淇敼浜哄憳") - @TableField("modi_user") - private String modiUser; - - /** - * 淇敼鏃堕棿 - */ - @ApiModelProperty(value= "淇敼鏃堕棿") - @TableField("modi_time") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date modiTime; - - /** - * 鍒涘缓鑰� - */ - @ApiModelProperty(value= "鍒涘缓鑰�") - @TableField("appe_user") - private String appeUser; - - /** - * 娣诲姞鏃堕棿 - */ - @ApiModelProperty(value= "娣诲姞鏃堕棿") - @TableField("appe_time") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - private Date appeTime; - - /** - * 澶囨敞 - */ - @ApiModelProperty(value= "澶囨敞") - private String memo; - - /** - * 鏉$爜 - */ - @ApiModelProperty(value= "鏉$爜") - private String barcode; - - public WrkCharge() {} - - public WrkCharge(Integer wrkNo, String mk, Long wrkSts, Integer ioType, Integer crnNo, Integer steNo, Integer outMost, Double ioPri, String locNo, Integer staNo, Integer sourceStaNo, String sourceLocNo, String emptyMk, Date ioTime, Date crnStrTime, Date crnEndTime, String modiUser, Date modiTime, String appeUser, Date appeTime, String memo, String barcode) { - this.wrkNo = wrkNo; - this.mk = mk; - this.wrkSts = wrkSts; - this.ioType = ioType; - this.crnNo = crnNo; - this.steNo = steNo; - this.outMost = outMost; - this.ioPri = ioPri; - this.locNo = locNo; - this.staNo = staNo; - this.sourceStaNo = sourceStaNo; - this.sourceLocNo = sourceLocNo; - this.emptyMk = emptyMk; - this.ioTime = ioTime; - this.crnStrTime = crnStrTime; - this.crnEndTime = crnEndTime; - this.modiUser = modiUser; - this.modiTime = modiTime; - this.appeUser = appeUser; - this.appeTime = appeTime; - this.memo = memo; - this.barcode = barcode; - } - -// WrkCharge wrkCharge = new WrkCharge( -// null, // 宸ヤ綔鍙穂闈炵┖] -// null, // 鏍囪 -// null, // 宸ヤ綔鐘舵�� -// null, // 鍏ュ嚭搴撶被鍨� -// null, // 鍫嗗灈鏈� -// null, // 绌挎杞� -// null, // 宸烽亾鍙� -// null, // 浼樺厛绾� -// null, // 鐩爣搴撲綅 -// null, // 鐩爣绔� -// null, // 婧愮珯 -// null, // 婧愬簱浣� -// null, // 绌烘澘(checkBox) -// null, // 宸ヤ綔鏃堕棿 -// null, // 鍫嗗灈鏈哄惎鍔ㄦ椂闂� -// null, // 鍫嗗灈鏈哄仠姝㈡椂闂� -// null, // 淇敼浜哄憳 -// null, // 淇敼鏃堕棿 -// null, // 鍒涘缓鑰� -// null, // 娣诲姞鏃堕棿 -// null, // 澶囨敞 -// null // 鏉$爜 -// ); - - - public String getCrnNo$(){ - BasCrnpService service = SpringUtils.getBean(BasCrnpService.class); - BasCrnp basCrnp = service.selectById(this.crnNo); - if (!Cools.isEmpty(basCrnp)){ - return String.valueOf(basCrnp.getCrnNo()); - } - return null; - } - - public String getSteNo$(){ - BasSteService service = SpringUtils.getBean(BasSteService.class); - BasSte basSte = service.selectById(this.steNo); - if (!Cools.isEmpty(basSte)){ - return String.valueOf(basSte.getSteNo()); - } - return null; - } - - public String getLocNo$(){ - LocMastService service = SpringUtils.getBean(LocMastService.class); - LocMast locMast = service.selectById(this.locNo); - if (!Cools.isEmpty(locMast)){ - return String.valueOf(locMast.getLocNo()); - } - return null; - } - - public String getStaNo$(){ - BasDevpService service = SpringUtils.getBean(BasDevpService.class); - BasDevp basDevp = service.selectById(this.staNo); - if (!Cools.isEmpty(basDevp)){ - return String.valueOf(basDevp.getDevNo()); - } - return null; - } - - public String getSourceStaNo$(){ - BasDevpService service = SpringUtils.getBean(BasDevpService.class); - BasDevp basDevp = service.selectById(this.sourceStaNo); - if (!Cools.isEmpty(basDevp)){ - return String.valueOf(basDevp.getDevNo()); - } - return null; - } - - public String getSourceLocNo$(){ - LocMastService service = SpringUtils.getBean(LocMastService.class); - LocMast locMast = service.selectById(this.sourceLocNo); - if (!Cools.isEmpty(locMast)){ - return String.valueOf(locMast.getLocNo()); - } - return null; - } - - public String getIoTime$(){ - if (Cools.isEmpty(this.ioTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime); - } - - public String getCrnStrTime$(){ - if (Cools.isEmpty(this.crnStrTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnStrTime); - } - - public String getCrnEndTime$(){ - if (Cools.isEmpty(this.crnEndTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnEndTime); - } - - public String getModiTime$(){ - if (Cools.isEmpty(this.modiTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime); - } - - public String getAppeTime$(){ - if (Cools.isEmpty(this.appeTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime); - } - - -} diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java index 14b8621..331e8e0 100644 --- a/src/main/java/com/zy/asrs/entity/WrkMast.java +++ b/src/main/java/com/zy/asrs/entity/WrkMast.java @@ -34,18 +34,7 @@ private Integer wrkNo; @ApiModelProperty(value= "") - @TableField("inv_wh") - private String invWh; - - @ApiModelProperty(value= "") - private Date ymd; - - @ApiModelProperty(value= "") private String mk; - - @ApiModelProperty(value= "") - @TableField("whs_type") - private Integer whsType; /** * 宸ヤ綔鐘舵�� @@ -60,31 +49,6 @@ @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�") @TableField("io_type") private Integer ioType; - - /** - * 鍫嗗灈鏈� - */ - @ApiModelProperty(value= "鍫嗗灈鏈�") - @TableField("crn_no") - private Integer crnNo; - - /** - * 绌挎杞� - */ - @ApiModelProperty(value= "绌挎杞�") - @TableField("ste_no") - private Integer steNo; - - /** - * 杈圭紭搴撲綅 - */ - @ApiModelProperty(value= "杈圭紭搴撲綅") - @TableField("out_most") - private Integer outMost; - - @ApiModelProperty(value= "") - @TableField("sheet_no") - private String sheetNo; /** * 浼樺厛绾� @@ -125,112 +89,12 @@ @TableField("source_loc_no") private String sourceLocNo; - @ApiModelProperty(value= "") - @TableField("loc_sts") - private String locSts; - - /** - * 鎷f枡 - */ - @ApiModelProperty(value= "鎷f枡") - private String picking; - - @ApiModelProperty(value= "") - @TableField("link_mis") - private String linkMis; - - @ApiModelProperty(value= "") - @TableField("online_yn") - private String onlineYn; - - @ApiModelProperty(value= "") - @TableField("upd_mk") - private String updMk; - - /** - * 閫�鍑� - */ - @ApiModelProperty(value= "閫�鍑�") - @TableField("exit_mk") - private String exitMk; - - @ApiModelProperty(value= "") - @TableField("plt_type") - private Integer pltType; - - /** - * 绌烘澘 - */ - @ApiModelProperty(value= "绌烘澘") - @TableField("empty_mk") - private String emptyMk; - /** * 宸ヤ綔鏃堕棿 */ @ApiModelProperty(value= "宸ヤ綔鏃堕棿") @TableField("io_time") private Date ioTime; - - @ApiModelProperty(value= "") - @TableField("ctn_type") - private Integer ctnType; - - @ApiModelProperty(value= "") - private String packed; - - @ApiModelProperty(value= "") - @TableField("ove_mk") - private String oveMk; - - @ApiModelProperty(value= "") - @TableField("mtn_type") - private Double mtnType; - - @ApiModelProperty(value= "") - @TableField("user_no") - private String userNo; - - /** - * 鍫嗗灈鏈哄惎鍔ㄦ椂闂� - */ - @ApiModelProperty(value= "鍫嗗灈鏈哄惎鍔ㄦ椂闂�") - @TableField("crn_str_time") - private Date crnStrTime; - - /** - * 鍫嗗灈鏈哄仠姝㈡椂闂� - */ - @ApiModelProperty(value= "鍫嗗灈鏈哄仠姝㈡椂闂�") - @TableField("crn_end_time") - private Date crnEndTime; - - @ApiModelProperty(value= "") - @TableField("plc_str_time") - private Date plcStrTime; - - @ApiModelProperty(value= "") - @TableField("crn_pos_time") - private Date crnPosTime; - - @ApiModelProperty(value= "") - @TableField("load_time") - private Double loadTime; - - @ApiModelProperty(value= "") - @TableField("exp_time") - private Double expTime; - - @ApiModelProperty(value= "") - @TableField("ref_wrkno") - private Double refWrkno; - - /** - * 鎷f枡鏃堕棿 - */ - @ApiModelProperty(value= "鎷f枡鏃堕棿") - @TableField("ref_iotime") - private Date refIotime; /** * 淇敼浜哄憳 @@ -261,10 +125,6 @@ private Date appeTime; @ApiModelProperty(value= "") - @TableField("pause_mk") - private String pauseMk; - - @ApiModelProperty(value= "") @TableField("error_time") private Date errorTime; @@ -272,56 +132,17 @@ @TableField("error_memo") private String errorMemo; - @ApiModelProperty(value= "") - @TableField("ctn_kind") - private Integer ctnKind; - - @ApiModelProperty(value= "") - @TableField("manu_type") - private String manuType; - /** * 澶囨敞 */ @ApiModelProperty(value= "澶囨敞") private String memo; - @ApiModelProperty(value= "") - @TableField("sc_weight") - private Double scWeight; - - @ApiModelProperty(value= "") - @TableField("log_mk") - private String logMk; - - @ApiModelProperty(value= "") - @TableField("log_err_time") - private Date logErrTime; - - @ApiModelProperty(value= "") - @TableField("log_err_memo") - private String logErrMemo; - /** * 鏉$爜 */ @ApiModelProperty(value= "鏉$爜") private String barcode; - - @ApiModelProperty(value= "") - @TableField("Pdc_type") - private String pdcType; - - @ApiModelProperty(value= "") - @TableField("ctn_no") - private String ctnNo; - - /** - * 婊℃澘 - */ - @ApiModelProperty(value= "婊℃澘") - @TableField("full_plt") - private String fullPlt; /** * 鍥涘悜绌挎杞﹀彿 @@ -351,22 +172,6 @@ BasWrkIotype entity = mapper.selectById(this.ioType); if (entity != null) { return entity.getIoDesc(); - } - return null; - } - - public String getYmd$(){ - if (Cools.isEmpty(this.ymd)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ymd); - } - - public String getCrnNo$(){ - BasCrnpService service = SpringUtils.getBean(BasCrnpService.class); - BasCrnp basCrnp = service.selectById(this.crnNo); - if (!Cools.isEmpty(basCrnp)){ - return String.valueOf(basCrnp.getCrnNo()); } return null; } @@ -421,41 +226,6 @@ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime); } - public String getCrnStrTime$(){ - if (Cools.isEmpty(this.crnStrTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnStrTime); - } - - public String getCrnEndTime$(){ - if (Cools.isEmpty(this.crnEndTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnEndTime); - } - - public String getPlcStrTime$(){ - if (Cools.isEmpty(this.plcStrTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.plcStrTime); - } - - public String getCrnPosTime$(){ - if (Cools.isEmpty(this.crnPosTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnPosTime); - } - - public String getRefIotime$(){ - if (Cools.isEmpty(this.refIotime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.refIotime); - } - public String getModiUser$(){ UserService service = SpringUtils.getBean(UserService.class); User user = service.selectById(this.modiUser); @@ -504,25 +274,6 @@ errorMemo = errorMemo.substring(0, 150); } this.errorMemo = errorMemo; - } - - public String getLogErrTime$(){ - if (Cools.isEmpty(this.logErrTime)){ - return ""; - } - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.logErrTime); - } - - public String getOutMost$() { - if (null == this.outMost){ return null; } - switch (this.outMost){ - case 1: - return "杈圭紭搴撲綅"; - case 0: - return "鍐呰仈搴撲綅"; - default: - return String.valueOf(this.outMost); - } } } diff --git a/src/main/java/com/zy/asrs/entity/WrkMastLog.java b/src/main/java/com/zy/asrs/entity/WrkMastLog.java index de47022..0cff0cc 100644 --- a/src/main/java/com/zy/asrs/entity/WrkMastLog.java +++ b/src/main/java/com/zy/asrs/entity/WrkMastLog.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.enums.IdType; import com.core.common.Cools; import com.core.common.SpringUtils; -import com.zy.asrs.service.BasCrnpService; import com.zy.asrs.service.BasDevpService; import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.WrkMastService; @@ -357,15 +356,6 @@ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ymd); - } - - public String getCrnNo$(){ - BasCrnpService service = SpringUtils.getBean(BasCrnpService.class); - BasCrnp basCrnp = service.selectById(this.crnNo); - if (!Cools.isEmpty(basCrnp)){ - return String.valueOf(basCrnp.getCrnNo()); - } - return null; } public String getWrkDate$(){ diff --git a/src/main/java/com/zy/asrs/mapper/BasCrnErrorMapper.java b/src/main/java/com/zy/asrs/mapper/BasCrnErrorMapper.java deleted file mode 100644 index 5323679..0000000 --- a/src/main/java/com/zy/asrs/mapper/BasCrnErrorMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zy.asrs.mapper; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.zy.asrs.entity.BasCrnError; -import org.apache.ibatis.annotations.Mapper; -import org.springframework.stereotype.Repository; - -@Mapper -@Repository -public interface BasCrnErrorMapper extends BaseMapper<BasCrnError> { - -} diff --git a/src/main/java/com/zy/asrs/mapper/BasCrnOptMapper.java b/src/main/java/com/zy/asrs/mapper/BasCrnOptMapper.java deleted file mode 100644 index 744c664..0000000 --- a/src/main/java/com/zy/asrs/mapper/BasCrnOptMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zy.asrs.mapper; - -import com.zy.asrs.entity.BasCrnOpt; -import com.baomidou.mybatisplus.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; -import org.springframework.stereotype.Repository; - -@Mapper -@Repository -public interface BasCrnOptMapper extends BaseMapper<BasCrnOpt> { - -} diff --git a/src/main/java/com/zy/asrs/mapper/BasCrnpMapper.java b/src/main/java/com/zy/asrs/mapper/BasCrnpMapper.java deleted file mode 100644 index baffc35..0000000 --- a/src/main/java/com/zy/asrs/mapper/BasCrnpMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zy.asrs.mapper; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.zy.asrs.entity.BasCrnp; -import org.apache.ibatis.annotations.Mapper; -import org.springframework.stereotype.Repository; - -@Mapper -@Repository -public interface BasCrnpMapper extends BaseMapper<BasCrnp> { - -} diff --git a/src/main/java/com/zy/asrs/mapper/BasErrLogMapper.java b/src/main/java/com/zy/asrs/mapper/BasErrLogMapper.java deleted file mode 100644 index cd49855..0000000 --- a/src/main/java/com/zy/asrs/mapper/BasErrLogMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zy.asrs.mapper; - -import com.zy.asrs.entity.BasErrLog; -import com.baomidou.mybatisplus.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; -import org.springframework.stereotype.Repository; - -@Mapper -@Repository -public interface BasErrLogMapper extends BaseMapper<BasErrLog> { - -} diff --git a/src/main/java/com/zy/asrs/mapper/BasSteErrLogMapper.java b/src/main/java/com/zy/asrs/mapper/BasSteErrLogMapper.java deleted file mode 100644 index f88dcb3..0000000 --- a/src/main/java/com/zy/asrs/mapper/BasSteErrLogMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zy.asrs.mapper; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.zy.asrs.entity.BasSteErrLog; -import org.apache.ibatis.annotations.Mapper; -import org.springframework.stereotype.Repository; - -@Mapper -@Repository -public interface BasSteErrLogMapper extends BaseMapper<BasSteErrLog> { - -} diff --git a/src/main/java/com/zy/asrs/mapper/BasSteErrMapper.java b/src/main/java/com/zy/asrs/mapper/BasSteErrMapper.java deleted file mode 100644 index 0caf74b..0000000 --- a/src/main/java/com/zy/asrs/mapper/BasSteErrMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zy.asrs.mapper; - -import com.zy.asrs.entity.BasSteErr; -import com.baomidou.mybatisplus.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; -import org.springframework.stereotype.Repository; - -@Mapper -@Repository -public interface BasSteErrMapper extends BaseMapper<BasSteErr> { - -} diff --git a/src/main/java/com/zy/asrs/mapper/BasSteMapper.java b/src/main/java/com/zy/asrs/mapper/BasSteMapper.java deleted file mode 100644 index 605f410..0000000 --- a/src/main/java/com/zy/asrs/mapper/BasSteMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.zy.asrs.mapper; - -import com.zy.asrs.entity.BasSte; -import com.baomidou.mybatisplus.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.springframework.stereotype.Repository; - -@Mapper -@Repository -public interface BasSteMapper extends BaseMapper<BasSte> { - - int updatePos(@Param("steNo")Integer steNo, @Param("row")Integer row, @Param("bay")Integer bay, @Param("lev")Integer lev); - - int updatePakMk(@Param("steNo")Integer steNo, @Param("pakMk")String pakMk); - -} diff --git a/src/main/java/com/zy/asrs/mapper/BasSteOptMapper.java b/src/main/java/com/zy/asrs/mapper/BasSteOptMapper.java deleted file mode 100644 index 402a7f0..0000000 --- a/src/main/java/com/zy/asrs/mapper/BasSteOptMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zy.asrs.mapper; - -import com.zy.asrs.entity.BasSteOpt; -import com.baomidou.mybatisplus.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; -import org.springframework.stereotype.Repository; - -@Mapper -@Repository -public interface BasSteOptMapper extends BaseMapper<BasSteOpt> { - -} diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java index 9180b4c..388b99a 100644 --- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java +++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java @@ -4,7 +4,6 @@ import com.zy.asrs.entity.LocMast; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; import java.util.List; @@ -12,27 +11,6 @@ @Mapper @Repository public interface LocMastMapper extends BaseMapper<LocMast> { - - @Select("select distinct row1 from asr_loc_mast where crn_no = #{crnNo} and row1 > 30") - List<Integer> queryDistinctRow(@Param("crnNo")Integer crnNo); - - LocMast queryFreeLocMast(@Param("row") Integer row, @Param("locType1") Short locType1); - - @Select("select loc_no from asr_loc_mast where 1=1 and loc_sts = 'O' and crn_no = #{crnNo}") - List<String> queryGroupEmptyStock(Integer crnNo); - - @Select("select top 1 bay1 from asr_loc_mast order by bay1 desc") - Short selectTotalBay(); - - LocMast queryDemoSourceLoc(@Param("crnNo") Integer crnNo); - - LocMast queryDemoLoc(@Param("crnNo") Integer crnNo); - - @Select("select count(*) as count from asr_loc_mast where 1=1 and loc_sts = 'O' and loc_type1 = #{locType1} and crn_no = #{crnNo}") - Integer selectEmptyLocCount(@Param("locType1") Short locType1, @Param("crnNo") Integer crnNo); - - @Select("select loc_no from asr_loc_mast where crn_no = #{crnNo} and loc_sts='O' order by lev1, bay1, row1") - List<String> getDemoNextLoc(Integer crnNo); LocMast queryByLoc(String locNo); diff --git a/src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java b/src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java deleted file mode 100644 index 987a0bc..0000000 --- a/src/main/java/com/zy/asrs/mapper/WrkChargeMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.zy.asrs.mapper; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.zy.asrs.entity.WrkCharge; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.springframework.stereotype.Repository; - -@Mapper -@Repository -public interface WrkChargeMapper extends BaseMapper<WrkCharge> { - - WrkCharge selectWorking(@Param("shuttleNo") Integer shuttleNo); - - WrkCharge selectWorkingOfCharge(@Param("charge") Integer charge); - - WrkCharge selectWorkingOfReset(@Param("steNo") Integer steNo); - - WrkCharge selectByWorkNo(@Param("workNo") Integer workNo); -} diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java index e7f394d..a41becf 100644 --- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java +++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java @@ -11,11 +11,6 @@ @Repository public interface WrkMastMapper extends BaseMapper<WrkMast> { -// @Select("select * from asr_wrk_mast where ((wrk_sts = 4 Or wrk_sts = 14 ) and io_type <> 103 and io_type <> 104 and io_type <> 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,io_time,wrk_no") - List<WrkMast> selectToBeCompleteData(); - - List<WrkMast> selectToBeHistoryData(); - // wcs --------------------------------------------- // 鍏ュ簱绗竴姝ワ紝鎵爜浠幏鍙栨潯鐮佷俊鎭椂鏌ヨ // @Select("select top 1 * from asr_wrk_mast where source_sta_no=#{sourceStaNo} and wrk_sts=2 and barcode=#{barcode} and (io_type=1 or io_type=10) order by io_pri desc,io_time,wrk_no ASC") @@ -56,4 +51,6 @@ List<WrkMast> selectInWrkMastByLiftNo(Integer liftNo);//鎼滅储鎸囧畾鎻愬崌鏈虹殑鍏ュ簱浠诲姟 + WrkMast selectChargeWorking(Integer shuttleNo); + } diff --git a/src/main/java/com/zy/asrs/service/BasCrnOptService.java b/src/main/java/com/zy/asrs/service/BasCrnOptService.java deleted file mode 100644 index 7538c73..0000000 --- a/src/main/java/com/zy/asrs/service/BasCrnOptService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.zy.asrs.service; - -import com.zy.asrs.entity.BasCrnOpt; -import com.baomidou.mybatisplus.service.IService; - -public interface BasCrnOptService extends IService<BasCrnOpt> { - -} diff --git a/src/main/java/com/zy/asrs/service/BasCrnpService.java b/src/main/java/com/zy/asrs/service/BasCrnpService.java deleted file mode 100644 index 10c3feb..0000000 --- a/src/main/java/com/zy/asrs/service/BasCrnpService.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zy.asrs.service; - -import com.baomidou.mybatisplus.service.IService; -import com.zy.asrs.entity.BasCrnp; - -public interface BasCrnpService extends IService<BasCrnp> { - - BasCrnp checkSiteStatus(Integer crnId); - - boolean checkSiteError(Integer crnNo, boolean pakin); - -} diff --git a/src/main/java/com/zy/asrs/service/BasErrLogService.java b/src/main/java/com/zy/asrs/service/BasErrLogService.java deleted file mode 100644 index 3c335c1..0000000 --- a/src/main/java/com/zy/asrs/service/BasErrLogService.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zy.asrs.service; - -import com.zy.asrs.entity.BasErrLog; -import com.baomidou.mybatisplus.service.IService; - -public interface BasErrLogService extends IService<BasErrLog> { - - BasErrLog findLatestByTaskNo(Integer crnNo, Integer taskNo); - - BasErrLog findLatest(Integer crnNo); - -} diff --git a/src/main/java/com/zy/asrs/service/BasSteErrLogService.java b/src/main/java/com/zy/asrs/service/BasSteErrLogService.java deleted file mode 100644 index 305f874..0000000 --- a/src/main/java/com/zy/asrs/service/BasSteErrLogService.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zy.asrs.service; - -import com.baomidou.mybatisplus.service.IService; -import com.zy.asrs.entity.BasSteErrLog; - -public interface BasSteErrLogService extends IService<BasSteErrLog> { - - BasSteErrLog findLatestByTaskNo(Integer steNo, Integer taskNo); - - BasSteErrLog findLatest(Integer steNo); - -} diff --git a/src/main/java/com/zy/asrs/service/BasSteErrService.java b/src/main/java/com/zy/asrs/service/BasSteErrService.java deleted file mode 100644 index 717faf0..0000000 --- a/src/main/java/com/zy/asrs/service/BasSteErrService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.zy.asrs.service; - -import com.zy.asrs.entity.BasSteErr; -import com.baomidou.mybatisplus.service.IService; - -public interface BasSteErrService extends IService<BasSteErr> { - -} diff --git a/src/main/java/com/zy/asrs/service/BasSteOptService.java b/src/main/java/com/zy/asrs/service/BasSteOptService.java deleted file mode 100644 index 71e3022..0000000 --- a/src/main/java/com/zy/asrs/service/BasSteOptService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.zy.asrs.service; - -import com.zy.asrs.entity.BasSteOpt; -import com.baomidou.mybatisplus.service.IService; - -public interface BasSteOptService extends IService<BasSteOpt> { - -} diff --git a/src/main/java/com/zy/asrs/service/BasSteService.java b/src/main/java/com/zy/asrs/service/BasSteService.java deleted file mode 100644 index bcd6cc1..0000000 --- a/src/main/java/com/zy/asrs/service/BasSteService.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.zy.asrs.service; - -import com.baomidou.mybatisplus.service.IService; -import com.zy.asrs.entity.BasSte; - -public interface BasSteService extends IService<BasSte> { - - Boolean updatePos(Integer steNo, Integer row, Integer bay, Integer lev); - - Boolean updatePakMk(Integer steNo, String pakMk); - - Integer hasCarOfLocNo(String locNo); - -} diff --git a/src/main/java/com/zy/asrs/service/WrkChargeService.java b/src/main/java/com/zy/asrs/service/WrkChargeService.java deleted file mode 100644 index a775d58..0000000 --- a/src/main/java/com/zy/asrs/service/WrkChargeService.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zy.asrs.service; - -import com.baomidou.mybatisplus.service.IService; -import com.zy.asrs.entity.WrkCharge; - -public interface WrkChargeService extends IService<WrkCharge> { - - WrkCharge selectWorking(Integer steNo); - - WrkCharge selectWorkingOfCharge(Integer charge); - -} diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java index ebcb626..218dec1 100644 --- a/src/main/java/com/zy/asrs/service/WrkMastService.java +++ b/src/main/java/com/zy/asrs/service/WrkMastService.java @@ -1,18 +1,15 @@ package com.zy.asrs.service; import com.baomidou.mybatisplus.service.IService; -import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.WrkMast; import java.util.List; public interface WrkMastService extends IService<WrkMast> { - int getWorkingMast(Integer devpNo); + WrkMast selectByWorkNo(Integer workNo); - List<WrkMast> selectToBeCompleteData(); - - List<WrkMast> selectToBeHistoryData(); + Boolean judgeInbound(WrkMast wrkMast); //鏌ヨ鎸囧畾妤煎眰寰呭垎閰嶈溅杈嗙殑浠诲姟 List<WrkMast> selectNoShuttleWrkByLev(Integer lev); @@ -23,4 +20,16 @@ //鏌ヨ鎸囧畾妤煎眰宸插垎閰嶈溅杈嗙殑鍑哄簱浠诲姟 List<WrkMast> selectShuttleOutWrkByLev(Integer lev); + WrkMast selectChargeWorking(Integer shuttleNo); + + Boolean hasBusyByShuttle(Integer shuttleNo); + + WrkMast selectShuttleHasMoveWorking(Integer shuttleNo); + + WrkMast selectShuttleWorking(Integer shuttleNo);//鏄惁鏈夌┛姊溅浠诲姟(绉诲簱浠诲姟闄ゅ) + + List<WrkMast> selectShuttleMoveWrk(); + + WrkMast selectLiftWrkMast(Integer liftNo); + } diff --git a/src/main/java/com/zy/asrs/service/impl/BasCrnOptServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasCrnOptServiceImpl.java deleted file mode 100644 index 299afa8..0000000 --- a/src/main/java/com/zy/asrs/service/impl/BasCrnOptServiceImpl.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zy.asrs.service.impl; - -import com.zy.asrs.mapper.BasCrnOptMapper; -import com.zy.asrs.entity.BasCrnOpt; -import com.zy.asrs.service.BasCrnOptService; -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -@Service("basCrnOptService") -public class BasCrnOptServiceImpl extends ServiceImpl<BasCrnOptMapper, BasCrnOpt> implements BasCrnOptService { - -} diff --git a/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java deleted file mode 100644 index 485d828..0000000 --- a/src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.zy.asrs.service.impl; - -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.core.common.Cools; -import com.core.exception.CoolException; -import com.zy.asrs.entity.BasCrnp; -import com.zy.asrs.mapper.BasCrnpMapper; -import com.zy.asrs.service.BasCrnpService; -import com.zy.core.News; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -@Slf4j -@Service("basCrnpService") -public class BasCrnpServiceImpl extends ServiceImpl<BasCrnpMapper, BasCrnp> implements BasCrnpService { - - @Override - public BasCrnp checkSiteStatus(Integer crnId) { - BasCrnp crnp = this.selectById(crnId); - if (Cools.isEmpty(crnp)) { - throw new CoolException(crnId + "鍙峰爢鍨涙満涓嶅瓨鍦�"); - } - if ("N".equals(crnp.getInEnable())) { - throw new CoolException(crnId + "鍫嗗灈鏈轰笉鍙叆"); - } - if ("N".equals(crnp.getOutEnable())) { - throw new CoolException(crnId + "鍫嗗灈鏈轰笉鍙嚭"); - } - return crnp; - } - - @Override - public boolean checkSiteError(Integer crnNo, boolean pakin) { - BasCrnp crnp = this.selectById(crnNo); - if (Cools.isEmpty(crnp)) { - News.error("{}鍙峰爢鍨涙満涓嶅瓨鍦�", crnNo); - return false; - } - if (pakin) { - if ("N".equals(crnp.getInEnable())) { - News.error("{}鍙峰爢鍨涙満涓嶅彲鍏�", crnNo); - return false; - } - } else { - if ("N".equals(crnp.getOutEnable())) { - News.error("{}鍙峰爢鍨涙満涓嶅彲鍑�", crnNo); - return false; - } - } - if (crnp.getCrnSts() != null) { - if (crnp.getCrnSts() == 10) { - News.error("{}鍙峰爢鍨涙満鐘舵�佷负10.閿欒", crnNo); - return false; - } - } -// if (crnp.getCrnErr() != null) { -// if (crnp.getCrnErr() != 0) { -// News.error("{}鍙峰爢鍨涙満寮傚父锛屽紓甯哥爜{}", crnNo, crnp.getCrnErr()); -// return false; -// } -// } - return true; - } -} diff --git a/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java index f5212fe..044a6a1 100644 --- a/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java @@ -58,9 +58,6 @@ if(station.getWrkNo()!=null && station.getWrkNo()>0) { throw new CoolException(devpNo+"绔欑偣宸叉湁宸ヤ綔鍙�"); } - if(wrkMastService.getWorkingMast(devpNo)>0){ - throw new CoolException(devpNo+"绔欑偣涓嶈兘鍚屾椂鐢熸垚涓ょ瑪鍏ュ簱宸ヤ綔妗�"); - } } return station; } diff --git a/src/main/java/com/zy/asrs/service/impl/BasErrLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasErrLogServiceImpl.java deleted file mode 100644 index 817212c..0000000 --- a/src/main/java/com/zy/asrs/service/impl/BasErrLogServiceImpl.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.zy.asrs.service.impl; - -import com.baomidou.mybatisplus.mapper.EntityWrapper; -import com.zy.asrs.mapper.BasErrLogMapper; -import com.zy.asrs.entity.BasErrLog; -import com.zy.asrs.service.BasErrLogService; -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service("basErrLogService") -public class BasErrLogServiceImpl extends ServiceImpl<BasErrLogMapper, BasErrLog> implements BasErrLogService { - - @Override - public BasErrLog findLatestByTaskNo(Integer crnNo, Integer taskNo) { - List<BasErrLog> basErrLogs = this.baseMapper.selectList(new EntityWrapper<BasErrLog>().eq("crn_no", crnNo).eq("wrk_no", taskNo).orderBy("start_time", false)); - if (basErrLogs == null || basErrLogs.size() == 0) { - return null; - } else { - return basErrLogs.get(0); - } - } - - @Override - public BasErrLog findLatest(Integer crnNo) { - List<BasErrLog> basErrLogs = this.baseMapper.selectList(new EntityWrapper<BasErrLog>().eq("crn_no", crnNo).orderBy("start_time", false)); - if (basErrLogs == null || basErrLogs.size() == 0) { - return null; - } else { - return basErrLogs.get(0); - } - } -} diff --git a/src/main/java/com/zy/asrs/service/impl/BasSteErrLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasSteErrLogServiceImpl.java deleted file mode 100644 index 19658dc..0000000 --- a/src/main/java/com/zy/asrs/service/impl/BasSteErrLogServiceImpl.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.zy.asrs.service.impl; - -import com.baomidou.mybatisplus.mapper.EntityWrapper; -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.zy.asrs.entity.BasErrLog; -import com.zy.asrs.entity.BasSteErrLog; -import com.zy.asrs.mapper.BasSteErrLogMapper; -import com.zy.asrs.service.BasSteErrLogService; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service("basSteErrLogService") -public class BasSteErrLogServiceImpl extends ServiceImpl<BasSteErrLogMapper, BasSteErrLog> implements BasSteErrLogService { - - @Override - public BasSteErrLog findLatestByTaskNo(Integer steNo, Integer taskNo) { - List<BasSteErrLog> basSteErrLogs = this.baseMapper.selectList(new EntityWrapper<BasSteErrLog>().eq("ste_no", steNo).eq("wrk_no", taskNo).orderBy("start_time", false)); - if (basSteErrLogs == null || basSteErrLogs.size() == 0) { - return null; - } else { - return basSteErrLogs.get(0); - } - } - - @Override - public BasSteErrLog findLatest(Integer steNo) { - List<BasSteErrLog> basSteErrLogs = this.baseMapper.selectList(new EntityWrapper<BasSteErrLog>().eq("ste_no", steNo).orderBy("start_time", false)); - if (basSteErrLogs == null || basSteErrLogs.size() == 0) { - return null; - } else { - return basSteErrLogs.get(0); - } - } - -} diff --git a/src/main/java/com/zy/asrs/service/impl/BasSteErrServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasSteErrServiceImpl.java deleted file mode 100644 index 14578fa..0000000 --- a/src/main/java/com/zy/asrs/service/impl/BasSteErrServiceImpl.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zy.asrs.service.impl; - -import com.zy.asrs.mapper.BasSteErrMapper; -import com.zy.asrs.entity.BasSteErr; -import com.zy.asrs.service.BasSteErrService; -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -@Service("basSteErrService") -public class BasSteErrServiceImpl extends ServiceImpl<BasSteErrMapper, BasSteErr> implements BasSteErrService { - -} diff --git a/src/main/java/com/zy/asrs/service/impl/BasSteOptServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasSteOptServiceImpl.java deleted file mode 100644 index c731a51..0000000 --- a/src/main/java/com/zy/asrs/service/impl/BasSteOptServiceImpl.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zy.asrs.service.impl; - -import com.zy.asrs.mapper.BasSteOptMapper; -import com.zy.asrs.entity.BasSteOpt; -import com.zy.asrs.service.BasSteOptService; -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -@Service("basSteOptService") -public class BasSteOptServiceImpl extends ServiceImpl<BasSteOptMapper, BasSteOpt> implements BasSteOptService { - -} diff --git a/src/main/java/com/zy/asrs/service/impl/BasSteServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasSteServiceImpl.java deleted file mode 100644 index 12269ae..0000000 --- a/src/main/java/com/zy/asrs/service/impl/BasSteServiceImpl.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.zy.asrs.service.impl; - -import com.baomidou.mybatisplus.mapper.EntityWrapper; -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.zy.asrs.entity.BasSte; -import com.zy.asrs.mapper.BasSteMapper; -import com.zy.asrs.service.BasSteService; -import com.zy.asrs.utils.Utils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Slf4j -@Service("basSteService") -public class BasSteServiceImpl extends ServiceImpl<BasSteMapper, BasSte> implements BasSteService { - - @Override - public Boolean updatePos(Integer steNo, Integer row, Integer bay, Integer lev) { - return this.baseMapper.updatePos(steNo, row, bay, lev) > 0; - } - - @Override - public Boolean updatePakMk(Integer steNo, String pakMk) { - return this.baseMapper.updatePakMk(steNo, pakMk) > 0; - } - - @Override - public Integer hasCarOfLocNo(String locNo) { - List<BasSte> basStes = this.selectList(new EntityWrapper<>()); - for (BasSte basSte : basStes) { - if (Utils.getRow(locNo) == basSte.getRow() - && Utils.getBay(locNo) == basSte.getBay() - && Utils.getLev(locNo) == basSte.getLev()){ - return basSte.getSteNo(); - } - } - return null; - } - -} diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java index d44fec1..bbf300e 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -1,9 +1,6 @@ package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.mapper.EntityWrapper; -import com.core.common.Cools; import com.zy.asrs.entity.*; import com.zy.asrs.mapper.*; import com.zy.asrs.service.*; @@ -12,24 +9,22 @@ import com.zy.common.model.enums.NavigationMapType; import com.zy.common.service.CommonService; import com.zy.common.utils.*; -import com.zy.core.DevpThread; import com.zy.core.News; -import com.zy.core.cache.MessageQueue; +import com.zy.core.action.ForkLiftAction; +import com.zy.core.action.ShuttleAction; import com.zy.core.cache.SlaveConnection; +import com.zy.core.dispatcher.ShuttleDispatchUtils; import com.zy.core.enums.*; import com.zy.core.model.*; import com.zy.core.model.command.*; import com.zy.core.model.protocol.*; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.*; -import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.util.*; @@ -46,8 +41,6 @@ @Autowired private SlaveProperties slaveProperties; @Autowired - private WrkMastMapper wrkMastMapper; - @Autowired private WrkMastService wrkMastService; @Autowired private LocMastService locMastService; @@ -62,11 +55,7 @@ @Autowired private BasShuttleErrService basShuttleErrService; @Autowired - private WrkChargeService wrkChargeService; - @Autowired private CommonService commonService; - @Autowired - private WrkChargeMapper wrkChargeMapper; @Autowired private BasMapService basMapService; @Autowired @@ -85,673 +74,447 @@ private NavigateMapUtils navigateMapUtils; @Autowired private NavigateMapData navigateMapData; + @Autowired + private NavigateUtils navigateUtils; + @Autowired + private ShuttleOperaUtils shuttleOperaUtils; + @Autowired + private ShuttleAction shuttleAction; + @Autowired + private ForkLiftAction forkLiftAction; - /** - * 缁勬墭 - * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2 - */ - public void generateStoreWrkFile() { - try { - // 鏍规嵁杈撻�佺嚎plc閬嶅巻 - for (DevpSlave devp : slaveProperties.getDevp()) { - // 閬嶅巻鍏ュ簱鍙� - for (DevpSlave.Sta inSta : devp.getInSta()) { - // 鑾峰彇鍏ュ簱绔欎俊鎭� - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); - StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); - if (staProtocol == null) { - continue; - } else { - staProtocol = staProtocol.clone(); - } - Short workNo = staProtocol.getWorkNo(); - // 灏哄妫�娴嬪紓甯� - boolean back = false; - String errMsg = "寮傚父锛�"; - if (staProtocol.isFrontErr()) { - errMsg = errMsg + "鍓嶈秴闄愶紱"; - back = true; - } - if (staProtocol.isBackErr()) { - errMsg = errMsg + "鍚庤秴闄�"; - back = true; - } - if (staProtocol.isHighErr()) { - errMsg = errMsg + "楂樿秴闄�"; - back = true; - } - if (staProtocol.isLeftErr()) { - errMsg = errMsg + "宸﹁秴闄�"; - back = true; - } - if (staProtocol.isRightErr()) { - errMsg = errMsg + "鍙宠秴闄�"; - back = true; - } - if (staProtocol.isWeightErr()) { - errMsg = errMsg + "瓒呴噸"; - back = true; - } - if (staProtocol.isBarcodeErr()) { - errMsg = errMsg + "鎵爜澶辫触"; - back = true; - } - // 閫�鍥� - if (back) { - // led 寮傚父鏄剧ず - LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); - if (ledThread != null) { - MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg)); - } - continue; - } - - // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 - if (staProtocol.isAutoing() && staProtocol.isLoading() - && staProtocol.isInEnable() - && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) - ) { - - // 鑾峰彇鏉$爜鎵弿浠俊鎭� - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); - if (barcodeThread == null) { - continue; - } - String barcode = barcodeThread.getBarcode(); - if (!Cools.isEmpty(barcode)) { -// News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); - if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode) || "00000000".equals(barcode)) { -// staProtocol.setWorkNo((short) 32002); -// staProtocol.setStaNo(inSta.getBackSta().shortValue()); -// devpThread.setPakMk(staProtocol.getSiteId(), false); -// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); - - // led 寮傚父鏄剧ず - LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); - if (ledThread != null) { - String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; - MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); - } - continue; - } - } else { -// staProtocol.setWorkNo((short) 32002); -// staProtocol.setStaNo(inSta.getBackSta().shortValue()); -// devpThread.setPakMk(staProtocol.getSiteId(), false); -// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); - +// /** +// * 缁勬墭 +// * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2 +// */ +// public void generateStoreWrkFile() { +// try { +// // 鏍规嵁杈撻�佺嚎plc閬嶅巻 +// for (DevpSlave devp : slaveProperties.getDevp()) { +// // 閬嶅巻鍏ュ簱鍙� +// for (DevpSlave.Sta inSta : devp.getInSta()) { +// // 鑾峰彇鍏ュ簱绔欎俊鎭� +// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); +// StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); +// if (staProtocol == null) { +// continue; +// } else { +// staProtocol = staProtocol.clone(); +// } +// Short workNo = staProtocol.getWorkNo(); +// // 灏哄妫�娴嬪紓甯� +// boolean back = false; +// String errMsg = "寮傚父锛�"; +// if (staProtocol.isFrontErr()) { +// errMsg = errMsg + "鍓嶈秴闄愶紱"; +// back = true; +// } +// if (staProtocol.isBackErr()) { +// errMsg = errMsg + "鍚庤秴闄�"; +// back = true; +// } +// if (staProtocol.isHighErr()) { +// errMsg = errMsg + "楂樿秴闄�"; +// back = true; +// } +// if (staProtocol.isLeftErr()) { +// errMsg = errMsg + "宸﹁秴闄�"; +// back = true; +// } +// if (staProtocol.isRightErr()) { +// errMsg = errMsg + "鍙宠秴闄�"; +// back = true; +// } +// if (staProtocol.isWeightErr()) { +// errMsg = errMsg + "瓒呴噸"; +// back = true; +// } +// if (staProtocol.isBarcodeErr()) { +// errMsg = errMsg + "鎵爜澶辫触"; +// back = true; +// } +// // 閫�鍥� +// if (back) { // // led 寮傚父鏄剧ず // LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); // if (ledThread != null) { -// String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; -// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); +// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg)); // } - continue; - } - - // 杩囨护鐩樼偣/鎷f枡/骞舵澘浠诲姟 - WrkMast wrkMast1 = wrkMastMapper.selectPickStepByBarcode(barcode); - if (null != wrkMast1) { - continue; - } - - // 鍒ゆ柇閲嶅宸ヤ綔妗� - WrkMast wrkMast2 = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode); - if (wrkMast2 != null) { - News.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast2.getWrkNo()); - continue; - } - - try { - LocTypeDto locTypeDto = new LocTypeDto(staProtocol); - SearchLocParam param = new SearchLocParam(); - param.setBarcode(barcode); - param.setIoType(1); - param.setSourceStaNo(inSta.getStaNo()); - param.setLocType1(locTypeDto.getLocType1()); - String response = new HttpHandler.Builder() - .setUri(wmsUrl) - .setPath("/rpc/pakin/loc/v2") - .setJson(JSON.toJSONString(param)) - .build() - .doPost(); - JSONObject jsonObject = JSON.parseObject(response); - LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); - Integer code = jsonObject.getInteger("code"); - if (code.equals(200)) { - StartupDto dto = jsonObject.getObject("data", StartupDto.class); - // plc 澶勭悊 - barcodeThread.setBarcode(""); -// staProtocol.setWorkNo(dto.getWorkNo().shortValue()); -// staProtocol.setStaNo(dto.getStaNo().shortValue()); -// devpThread.setPakMk(staProtocol.getSiteId(), false); +// continue; +// } // -// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); -// if (!result) { -// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); -// } - - // 鍒ゆ柇閲嶅宸ヤ綔妗� - WrkMast wrkMast = wrkMastMapper.selectPakInStep11(inSta.getStaNo()); - if (wrkMast == null) { - continue; - } - - // 鏇存柊宸ヤ綔涓绘。 - wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細2.璁惧涓婅蛋 - wrkMast.setModiTime(new Date()); - if (wrkMastMapper.updateById(wrkMast) == 0) { - News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo()); - } - - } else if (code == 500) { - if (ledThread != null) { - String errorMsg = jsonObject.getString("msg"); - if (!Cools.isEmpty(errorMsg)) { - MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); - ledThread.setLedMk(false); - } - } - News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); - } else if (code == 700) { -// staProtocol.setWorkNo((short) 32002); -// staProtocol.setRollback102(1);//102绔欏洖閫�淇″彿 -// devpThread.setPakMk(staProtocol.getSiteId(), false); -// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(5, staProtocol)); - - // led 寮傚父鏄剧ず - if (ledThread != null) { - String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒"; - MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); - ledThread.setLedMk(false); - } - } - } catch (Exception e) { - e.printStackTrace(); - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 鎷f枡銆佸苟鏉垮啀鍏ュ簱 - */ - @Transactional - public synchronized void stnToCrnStnPick(){ - try { - for (DevpSlave devp : slaveProperties.getDevp()) { - // 閬嶅巻鎷f枡鍏ュ簱鍙� - for (DevpSlave.Sta pickSta : devp.getPickInSta()) { - // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭� - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); - StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()); - if (staProtocol == null) { - continue; - } else { - staProtocol = staProtocol.clone(); - } - if (staProtocol.isAutoing() - && staProtocol.isLoading() - && staProtocol.isInEnable() -// && (staProtocol.getWorkNo() > 0) - && staProtocol.isPakMk()) { - - // 鑾峰彇鏉$爜鎵弿浠俊鎭� - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); - if (barcodeThread == null) { - continue; - } - String barcode = barcodeThread.getBarcode(); - if (Cools.isEmpty(barcode)) { - continue; - } - if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { - continue; - } - - WrkMast wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode); - if (wrkMast == null) {//鎵句笉鍒板伐浣滄。 - continue; - } - - if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104) - || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) { - continue; - } - -// //*********************鍚屽簱浣嶇粍鏍¢獙********************* -// boolean flag = false; -// String th = ""; -// List<String> innerLoc = Utils.getGroupInnerLoc(wrkMast.getSourceLocNo()); -// for (String loc : innerLoc) { -// LocMast locMast = locMastService.selectById(loc); -// if (locMast == null) { +// // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 +// if (staProtocol.isAutoing() && staProtocol.isLoading() +// && staProtocol.isInEnable() +// && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) +// ) { +// +// // 鑾峰彇鏉$爜鎵弿浠俊鎭� +// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); +// if (barcodeThread == null) { +// continue; +// } +// String barcode = barcodeThread.getBarcode(); +// if (!Cools.isEmpty(barcode)) { +//// News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); +// if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode) || "00000000".equals(barcode)) { +//// staProtocol.setWorkNo((short) 32002); +//// staProtocol.setStaNo(inSta.getBackSta().shortValue()); +//// devpThread.setPakMk(staProtocol.getSiteId(), false); +//// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// +// // led 寮傚父鏄剧ず +// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); +// if (ledThread != null) { +// String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; +// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); +// } // continue; // } +// } else { +//// staProtocol.setWorkNo((short) 32002); +//// staProtocol.setStaNo(inSta.getBackSta().shortValue()); +//// devpThread.setPakMk(staProtocol.getSiteId(), false); +//// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); // -// if (!locMast.getLocSts().equals("F")) { -// flag = true; -// th = loc + "搴撲綅瀛樺湪鏈洖搴撲换鍔�"; -// break; +//// // led 寮傚父鏄剧ず +//// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); +//// if (ledThread != null) { +//// String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; +//// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); +//// } +// continue; +// } +// +// // 杩囨护鐩樼偣/鎷f枡/骞舵澘浠诲姟 +// WrkMast wrkMast1 = wrkMastMapper.selectPickStepByBarcode(barcode); +// if (null != wrkMast1) { +// continue; +// } +// +// // 鍒ゆ柇閲嶅宸ヤ綔妗� +// WrkMast wrkMast2 = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode); +// if (wrkMast2 != null) { +// News.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast2.getWrkNo()); +// continue; +// } +// +// try { +// LocTypeDto locTypeDto = new LocTypeDto(staProtocol); +// SearchLocParam param = new SearchLocParam(); +// param.setBarcode(barcode); +// param.setIoType(1); +// param.setSourceStaNo(inSta.getStaNo()); +// param.setLocType1(locTypeDto.getLocType1()); +// String response = new HttpHandler.Builder() +// .setUri(wmsUrl) +// .setPath("/rpc/pakin/loc/v2") +// .setJson(JSON.toJSONString(param)) +// .build() +// .doPost(); +// JSONObject jsonObject = JSON.parseObject(response); +// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); +// Integer code = jsonObject.getInteger("code"); +// if (code.equals(200)) { +// StartupDto dto = jsonObject.getObject("data", StartupDto.class); +// // plc 澶勭悊 +// barcodeThread.setBarcode(""); +//// staProtocol.setWorkNo(dto.getWorkNo().shortValue()); +//// staProtocol.setStaNo(dto.getStaNo().shortValue()); +//// devpThread.setPakMk(staProtocol.getSiteId(), false); +//// +//// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +//// if (!result) { +//// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); +//// } +// +// // 鍒ゆ柇閲嶅宸ヤ綔妗� +// WrkMast wrkMast = wrkMastMapper.selectPakInStep11(inSta.getStaNo()); +// if (wrkMast == null) { +// continue; +// } +// +// // 鏇存柊宸ヤ綔涓绘。 +// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細2.璁惧涓婅蛋 +// wrkMast.setModiTime(new Date()); +// if (wrkMastMapper.updateById(wrkMast) == 0) { +// News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo()); +// } +// +// } else if (code == 500) { +// if (ledThread != null) { +// String errorMsg = jsonObject.getString("msg"); +// if (!Cools.isEmpty(errorMsg)) { +// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); +// ledThread.setLedMk(false); +// } +// } +// News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); +// } else if (code == 700) { +//// staProtocol.setWorkNo((short) 32002); +//// staProtocol.setRollback102(1);//102绔欏洖閫�淇″彿 +//// devpThread.setPakMk(staProtocol.getSiteId(), false); +//// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(5, staProtocol)); +// +// // led 寮傚父鏄剧ず +// if (ledThread != null) { +// String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒"; +// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); +// ledThread.setLedMk(false); +// } // } +// } catch (Exception e) { +// e.printStackTrace(); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // } -// if (flag) { -// News.info(th); -// continue; -// } -// //*********************鍚屽簱浣嶇粍鏍¢獙********************* - -// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� -// if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { -// News.info(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); -// continue; -// } - - try { - LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());//婧愬簱浣� - SearchLocParam param = new SearchLocParam(); - param.setWrkNo(wrkMast.getWrkNo()); - param.setBarcode(wrkMast.getBarcode()); - param.setIoType(wrkMast.getIoType()); - param.setSourceStaNo(pickSta.getStaNo()); - param.setLiftNo(pickSta.getLiftNo()); - param.setLocType1(locMast.getLocType1()); - String response = new HttpHandler.Builder() - .setUri(wmsUrl) - .setPath("/rpc/pakin/loc/v2") - .setJson(JSON.toJSONString(param)) - .build() - .doPost(); - JSONObject jsonObject = JSON.parseObject(response); - Integer code = jsonObject.getInteger("code"); - if (code.equals(200)) { - StartupDto dto = jsonObject.getObject("data", StartupDto.class); - -// //鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯 -// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo())); -// if (liftStaProtocol == null) { -// News.info(wrkMast.getWrkNo() + "鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯澶辫触"); -// continue; -// } -// -// // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� -// wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54 -// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 -// wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯 -// wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔� -// wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 -// wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌� -// wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌� -// wrkMast.setModiTime(new Date()); -// if (wrkMastMapper.updateById(wrkMast) == 0) { -// News.info(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); -// continue; -// } - } else if (code == 500) { - News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); - } - } catch (Exception e) { - e.printStackTrace(); - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } - } - } - - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 鐩樼偣鍐嶅叆搴� - */ - @Transactional - public synchronized void stnToCrnStnPlate(){ - try { - for (DevpSlave devp : slaveProperties.getDevp()) { - // 閬嶅巻鎷f枡鍏ュ簱鍙� - for (DevpSlave.Sta pickSta : devp.getPickInSta()) { - // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭� - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); - StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()); - if (staProtocol == null) { - continue; - } else { - staProtocol = staProtocol.clone(); - } - if (staProtocol.isAutoing() - && staProtocol.isLoading() - && staProtocol.isInEnable() -// && (staProtocol.getWorkNo() > 0) - && staProtocol.isPakMk()) { - - // 鑾峰彇鏉$爜鎵弿浠俊鎭� - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); - if (barcodeThread == null) { - continue; - } - String barcode = barcodeThread.getBarcode(); - if (Cools.isEmpty(barcode)) { - continue; - } - if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { - continue; - } - WrkMast wrkMast = wrkMastMapper.selectByBarcode(barcode); - if (wrkMast == null) {//鎵句笉鍒板伐浣滄。 - continue; - } - - if ((wrkMast.getIoType() != 107) - || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) { - continue; - } - -// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� -// if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { -// News.info(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); -// continue; -// } - - //鐩樼偣鎵炬柊搴撲綅 - try { - LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());//婧愬簱浣� - SearchLocParam param = new SearchLocParam(); - param.setWrkNo(wrkMast.getWrkNo()); - param.setBarcode(wrkMast.getBarcode()); - param.setIoType(107);//鐩樼偣 - param.setSourceStaNo(pickSta.getStaNo()); - param.setLiftNo(pickSta.getLiftNo()); - param.setLocType1(locMast.getLocType1()); - String response = new HttpHandler.Builder() - .setUri(wmsUrl) - .setPath("/rpc/pakin/loc/v2") - .setJson(JSON.toJSONString(param)) - .build() - .doPost(); - JSONObject jsonObject = JSON.parseObject(response); - Integer code = jsonObject.getInteger("code"); - if (code.equals(200)) { - StartupDto dto = jsonObject.getObject("data", StartupDto.class); - -// //鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯 -// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo())); -// if (liftStaProtocol == null) { -// News.info(wrkMast.getWrkNo() + "鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯澶辫触"); -// continue; -// } -// -// // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� -// wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 107->57 -// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 -// wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯 -// wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔� -// wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 -// wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌� -// wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌� -// wrkMast.setModiTime(new Date()); -// if (wrkMastMapper.updateById(wrkMast) == 0) { -// News.info(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); -// continue; -// } - -// staProtocol.setStaNo(dto.getSourceStaNo().shortValue());//鍐欏叆鐩爣绔� -// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); - - } else if (code == 500) { - News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); - } - } catch (Exception e) { - e.printStackTrace(); - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } - - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } +// } +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } // /** -// * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱 +// * 鎷f枡銆佸苟鏉垮啀鍏ュ簱 // */ // @Transactional // public synchronized void stnToCrnStnPick(){ -// for (DevpSlave devp : slaveProperties.getDevp()) { -// // 閬嶅巻鎷f枡鍏ュ簱鍙� -// for (DevpSlave.Sta pickSta : devp.getPickInSta()) { -// -// // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭� -// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); -// StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()); -// if (staProtocol == null) { -// continue; -// } else { -// staProtocol = staProtocol.clone(); -// } -// if (staProtocol.isAutoing() -// && staProtocol.isLoading() -//// && (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9999) -//// && staProtocol.getStaNo().equals(staProtocol.getSiteId().shortValue()) -// && staProtocol.isPakMk()){ -// -// // 鑾峰彇鏉$爜鎵弿浠俊鎭� -// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); -// if (barcodeThread == null) { +// try { +// for (DevpSlave devp : slaveProperties.getDevp()) { +// // 閬嶅巻鎷f枡鍏ュ簱鍙� +// for (DevpSlave.Sta pickSta : devp.getPickInSta()) { +// // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭� +// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); +// StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()); +// if (staProtocol == null) { // continue; +// } else { +// staProtocol = staProtocol.clone(); // } -// String barcode = barcodeThread.getBarcode(); +// if (staProtocol.isAutoing() +// && staProtocol.isLoading() +// && staProtocol.isInEnable() +//// && (staProtocol.getWorkNo() > 0) +// && staProtocol.isPakMk()) { // -// WrkMast wrkMast = null; -// wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode); -// if (wrkMast == null) { -// continue; -// } -//// if (staProtocol.getWorkNo() == 9996) { -//// String barcode = barcodeThread.getBarcode(); -//// if(!Cools.isEmpty(barcode)) { -//// News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode); -//// if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { -//// staProtocol.setWorkNo((short) 32002); -//// staProtocol.setStaNo(pickSta.getBackSta().shortValue()); -//// devpThread.setPakMk(staProtocol.getSiteId(), false); -//// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); -//// -//// // led 寮傚父鏄剧ず -//// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); -//// if (ledThread != null) { -//// String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; -//// MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); -//// } +// // 鑾峰彇鏉$爜鎵弿浠俊鎭� +// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); +// if (barcodeThread == null) { +// continue; +// } +// String barcode = barcodeThread.getBarcode(); +// if (Cools.isEmpty(barcode)) { +// continue; +// } +// if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { +// continue; +// } +// +// WrkMast wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode); +// if (wrkMast == null) {//鎵句笉鍒板伐浣滄。 +// continue; +// } +// +// if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104) +// || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) { +// continue; +// } +// +//// //*********************鍚屽簱浣嶇粍鏍¢獙********************* +//// boolean flag = false; +//// String th = ""; +//// List<String> innerLoc = Utils.getGroupInnerLoc(wrkMast.getSourceLocNo()); +//// for (String loc : innerLoc) { +//// LocMast locMast = locMastService.selectById(loc); +//// if (locMast == null) { //// continue; //// } -//// } else { -//// staProtocol.setWorkNo((short) 32002); -//// staProtocol.setStaNo(pickSta.getBackSta().shortValue()); -//// devpThread.setPakMk(staProtocol.getSiteId(), false); -//// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); //// -//// // led 寮傚父鏄剧ず -//// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); -//// if (ledThread != null) { -//// String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; -//// MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); +//// if (!locMast.getLocSts().equals("F")) { +//// flag = true; +//// th = loc + "搴撲綅瀛樺湪鏈洖搴撲换鍔�"; +//// break; //// } +//// } +//// if (flag) { +//// News.info(th); //// continue; //// } -//// wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode); -//// if (null == wrkMast) { -//// News.error("{}鏉$爜閿欒锛屾殏鏃犳嫞鏂欎换鍔★紒", barcode); +//// //*********************鍚屽簱浣嶇粍鏍¢獙********************* +// +//// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� +//// if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { +//// News.info(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); +//// continue; //// } -//// } // -// if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) -// || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo()) ) { -// continue; -// } +// try { +// LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());//婧愬簱浣� +// SearchLocParam param = new SearchLocParam(); +// param.setWrkNo(wrkMast.getWrkNo()); +// param.setBarcode(wrkMast.getBarcode()); +// param.setIoType(wrkMast.getIoType()); +// param.setSourceStaNo(pickSta.getStaNo()); +// param.setLiftNo(pickSta.getLiftNo()); +// param.setLocType1(locMast.getLocType1()); +// String response = new HttpHandler.Builder() +// .setUri(wmsUrl) +// .setPath("/rpc/pakin/loc/v2") +// .setJson(JSON.toJSONString(param)) +// .build() +// .doPost(); +// JSONObject jsonObject = JSON.parseObject(response); +// Integer code = jsonObject.getInteger("code"); +// if (code.equals(200)) { +// StartupDto dto = jsonObject.getObject("data", StartupDto.class); // -// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� -// if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { -// throw new CoolException(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); -// } -// -// String sourceLocNo = wrkMast.getSourceLocNo().trim(); -// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(sourceLocNo));//鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯 -// if (liftStaProtocol == null) { -// continue; -// } -// -// // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� -// wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57 -// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 -// wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯 -//// wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔� -//// wrkMast.setCrnNo(dto.getCrnNo()); -// wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔� -// wrkMast.setLocNo(sourceLocNo); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣� -// wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌� -// wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌� -// wrkMast.setModiTime(new Date()); -// if (wrkMastMapper.updateById(wrkMast) == 0) { -// throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); -// } -// if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) { -// throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); -// } -// -// // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴� -// LocMast locMast = locMastService.selectById(sourceLocNo); -// locMast.setLocSts("Q"); -// locMast.setModiTime(new Date()); -// if (!locMastService.updateById(locMast)) { -// throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�"); -// } -// barcodeThread.setBarcode("");//娓呯悊鏉$爜 -// -//// try { -//// // 璁块棶 WMS 鑾峰彇鍏ュ簱搴撲綅 -//// LocTypeDto locTypeDto = new LocTypeDto(staProtocol); -//// SearchLocParam param = new SearchLocParam(); -//// param.setWrkNo(wrkMast.getWrkNo()); -//// param.setIoType(wrkMast.getIoType()); -//// param.setSourceStaNo(pickSta.getStaNo()); -////// param.setLocType1(locTypeDto.getLocType1()); -//// String response = new HttpHandler.Builder() -//// .setUri(wmsUrl) -//// .setPath("/rpc/pakin/loc/v1") -//// .setJson(JSON.toJSONString(param)) -//// .build() -//// .doPost(); -//// JSONObject jsonObject = JSON.parseObject(response); -//// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); -//// Integer code = jsonObject.getInteger("code"); -//// if (code.equals(200)) { -//// StartupDto dto = jsonObject.getObject("data", StartupDto.class); -//// -////// // 鑾峰彇鐩爣绔� -////// Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() -////// .eq("type_no", wrkMast.getIoType() - 50) -////// .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯 -////// .eq("crn_no", dto.getCrnNo()); // 鍫嗗灈鏈哄彿 -////// StaDesc staDesc = staDescService.selectOne(wrapper); -////// if (Cools.isEmpty(staDesc)) { -////// News.error("鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo()); -////// continue; -////// } -////// // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�) -////// Integer staNo = staDesc.getCrnStn(); -//// -//// // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 -////// if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) { -////// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触"); -////// } -//// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� -//// if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { -//// throw new CoolException(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); -//// } -//// -//// String sourceLocNo = wrkMast.getSourceLocNo().trim(); -//// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(sourceLocNo));//鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯 -//// if (liftStaProtocol == null) { -//// continue; -//// } -//// -//// // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� -//// wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57 -//// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 -//// wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯 -////// wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔� -////// wrkMast.setCrnNo(dto.getCrnNo()); -//// wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔� -//// wrkMast.setLocNo(sourceLocNo); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣� -//// wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌� -//// wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌� -//// wrkMast.setModiTime(new Date()); -//// if (wrkMastMapper.updateById(wrkMast) == 0) { -//// throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); -//// } -//// if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) { -//// throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); -//// } -//// -//// // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴� -//// LocMast locMast = locMastService.selectById(sourceLocNo); -//// locMast.setLocSts("Q"); -//// locMast.setModiTime(new Date()); -//// if (!locMastService.updateById(locMast)) { -//// throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�"); -//// } -//// -////// // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 -////// staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); -////// staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); -////// devpThread.setPakMk(staProtocol.getSiteId(), false); -////// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); -////// if (!result) { -////// News.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿{}]", devp.getId()); -////// } -//// -//// barcodeThread.setBarcode("");//娓呯悊鏉$爜 -//// -//// } else if (code == 500){ -//// if (ledThread != null) { -//// String errorMsg = jsonObject.getString("msg"); -//// if (!Cools.isEmpty(errorMsg)) { -//// MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); +//// //鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯 +//// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo())); +//// if (liftStaProtocol == null) { +//// News.info(wrkMast.getWrkNo() + "鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯澶辫触"); +//// continue; //// } -//// } -//// News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); -//// } else { -////// staProtocol.setWorkNo((short) 32002); -////// staProtocol.setStaNo(pickSta.getBackSta().shortValue()); -////// devpThread.setPakMk(staProtocol.getSiteId(), false); -////// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); //// -//// // led 寮傚父鏄剧ず -//// if (ledThread != null) { -//// String errorMsg = jsonObject.getString("msg"); -////// String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒"; -//// MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); -//// } -//// } -//// -//// } catch (Exception e) { -//// e.printStackTrace(); -//// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); -//// } +//// // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� +//// wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54 +//// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 +//// wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯 +//// wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔� +//// wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 +//// wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌� +//// wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌� +//// wrkMast.setModiTime(new Date()); +//// if (wrkMastMapper.updateById(wrkMast) == 0) { +//// News.info(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); +//// continue; +//// } +// } else if (code == 500) { +// News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// } +// } +// } // +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } + +// /** +// * 鐩樼偣鍐嶅叆搴� +// */ +// @Transactional +// public synchronized void stnToCrnStnPlate(){ +// try { +// for (DevpSlave devp : slaveProperties.getDevp()) { +// // 閬嶅巻鎷f枡鍏ュ簱鍙� +// for (DevpSlave.Sta pickSta : devp.getPickInSta()) { +// // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭� +// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); +// StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()); +// if (staProtocol == null) { +// continue; +// } else { +// staProtocol = staProtocol.clone(); +// } +// if (staProtocol.isAutoing() +// && staProtocol.isLoading() +// && staProtocol.isInEnable() +//// && (staProtocol.getWorkNo() > 0) +// && staProtocol.isPakMk()) { +// +// // 鑾峰彇鏉$爜鎵弿浠俊鎭� +// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); +// if (barcodeThread == null) { +// continue; +// } +// String barcode = barcodeThread.getBarcode(); +// if (Cools.isEmpty(barcode)) { +// continue; +// } +// if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { +// continue; +// } +// WrkMast wrkMast = wrkMastMapper.selectByBarcode(barcode); +// if (wrkMast == null) {//鎵句笉鍒板伐浣滄。 +// continue; +// } +// +// if ((wrkMast.getIoType() != 107) +// || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) { +// continue; +// } +// +//// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� +//// if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { +//// News.info(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); +//// continue; +//// } +// +// //鐩樼偣鎵炬柊搴撲綅 +// try { +// LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());//婧愬簱浣� +// SearchLocParam param = new SearchLocParam(); +// param.setWrkNo(wrkMast.getWrkNo()); +// param.setBarcode(wrkMast.getBarcode()); +// param.setIoType(107);//鐩樼偣 +// param.setSourceStaNo(pickSta.getStaNo()); +// param.setLiftNo(pickSta.getLiftNo()); +// param.setLocType1(locMast.getLocType1()); +// String response = new HttpHandler.Builder() +// .setUri(wmsUrl) +// .setPath("/rpc/pakin/loc/v2") +// .setJson(JSON.toJSONString(param)) +// .build() +// .doPost(); +// JSONObject jsonObject = JSON.parseObject(response); +// Integer code = jsonObject.getInteger("code"); +// if (code.equals(200)) { +// StartupDto dto = jsonObject.getObject("data", StartupDto.class); +// +//// //鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯 +//// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo())); +//// if (liftStaProtocol == null) { +//// News.info(wrkMast.getWrkNo() + "鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯澶辫触"); +//// continue; +//// } +//// +//// // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� +//// wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 107->57 +//// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 +//// wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯 +//// wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔� +//// wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 +//// wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌� +//// wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌� +//// wrkMast.setModiTime(new Date()); +//// if (wrkMastMapper.updateById(wrkMast) == 0) { +//// News.info(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); +//// continue; +//// } +// +//// staProtocol.setStaNo(dto.getSourceStaNo().shortValue());//鍐欏叆鐩爣绔� +//// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// +// } else if (code == 500) { +// News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// } +// +// } // } // } -// +// } catch (Exception e) { +// e.printStackTrace(); // } // } @@ -790,1349 +553,871 @@ } } - /** - * 浠巖edis涓噸鍚换鍔� - */ - public synchronized void restartTaskFromRedis() { - HashMap<Object, Object> map = redisUtil.getRedis(); - for (Object key : map.keySet()) { - if (key.toString().contains(RedisKeyType.LIFT.key)) {//鎻愬崌鏈轰换鍔� - LiftRedisCommand redisCommand = JSON.parseObject(map.get(key).toString(), LiftRedisCommand.class); - if (redisCommand == null) { - continue; - } - - Short liftNo = redisCommand.getLiftNo(); - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo.intValue()); - if (liftThread == null) { - continue; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - continue; - } - if (!liftProtocol.isIdle()) { - continue; - } - - //鎻愬崌鏈哄浜庣┖闂茬姸鎬侊紝杩涜浠诲姟鐨勬仮澶� - liftProtocol.setTaskNo(redisCommand.getWrkNo());//灏嗘彁鍗囨満绾跨▼鍒嗛厤浠诲姟鍙� - liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//宸ヤ綔鐘舵�� - - }else if(key.toString().contains(RedisKeyType.SHUTTLE.key)){//鍥涘悜绌挎杞︿换鍔� - ShuttleRedisCommand redisCommand = JSON.parseObject(map.get(key).toString(), ShuttleRedisCommand.class); - if (redisCommand == null) { - continue; - } - - Short shuttleNo = redisCommand.getShuttleNo(); - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo.intValue()); - if (shuttleThread == null) { - continue; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - continue; - } - if (!shuttleProtocol.isIdle()) { - continue; - } - - //鍥涘悜绌挎杞﹀浜庣┖闂茬姸鎬侊紝杩涜浠诲姟鐨勬仮澶� - shuttleProtocol.setTaskNo(redisCommand.getWrkNo().intValue());//灏嗗洓鍚戠┛姊溅绾跨▼鍒嗛厤浠诲姟鍙� - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING);//宸ヤ綔鐘舵�� - } - } - - } - - /** - * 鍏ュ簱 ===>> 鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙� - */ - public synchronized void shuttleInExecute() { - try { - List<WrkMast> wrkMasts = wrkMastMapper.selectInStep4(); - for (WrkMast wrkMast : wrkMasts) { - //鑾峰彇婧愮珯 - BasDevp sourceBasDevp = basDevpService.selectById(wrkMast.getSourceStaNo()); - if (sourceBasDevp == null) { - continue;//绔欑偣涓嶅瓨鍦� - } - - //鑾峰彇鐩爣绔� - LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(sourceBasDevp.getLiftNo(), Utils.getLev(wrkMast.getLocNo())); - if (liftStaProtocol == null) { - continue;//绔欑偣涓嶅瓨鍦� - } - - // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢锛岃嚜鍔ㄣ�佺┖闂层�佹湁鐗� - if (!(liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && liftStaProtocol.getHasTray())) { - News.info("{}浠诲姟锛岃緭閫佺珯鐐圭姸鎬佷笉婊¤冻鍏ュ簱銆傝緭閫佺珯鐐�:{}", wrkMast.getWrkNo(), JSON.toJSONString(liftStaProtocol)); - continue; - } - - boolean step1 = this.shuttleInExecuteStep1(wrkMast, liftStaProtocol);//灏忚溅鎼叆搴撲腑 - if (!step1) { - continue; - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - // /** // * 鍏ュ簱 ===>> 鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙� // */ // public synchronized void shuttleInExecute() { -// // 鏍规嵁杈撻�佺嚎plc閬嶅巻 -// for (DevpSlave devp : slaveProperties.getDevp()) { -// // 閬嶅巻鍏ュ簱绔� -// for (DevpSlave.StaRack staRack : devp.getRackInStn()) { -// // 鑾峰彇鍏ュ簱绔欎俊鎭� -// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); -// StaProtocol staProtocol = devpThread.getStation().get(staRack.getStaNo()); -// if (staProtocol == null) { -// continue; -// } else { -// staProtocol = staProtocol.clone(); -// } -// Short workNo = staProtocol.getWorkNo(); -// BasDevp basDevp = basDevpService.selectById(staProtocol.getSiteId()); -// if (basDevp == null) { -// continue;//绔欑偣淇℃伅涓嶅瓨鍦� +// try { +// List<WrkMast> wrkMasts = wrkMastMapper.selectInStep4(); +// for (WrkMast wrkMast : wrkMasts) { +// //鑾峰彇婧愮珯 +// BasDevp sourceBasDevp = basDevpService.selectById(wrkMast.getSourceStaNo()); +// if (sourceBasDevp == null) { +// continue;//绔欑偣涓嶅瓨鍦� // } // -// // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢锛岃嚜鍔ㄣ�佹湁鐗┿�佸洓鍚戠┛姊溅鍙彇淇″彿 -// if (!(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isShuttleTakeEnable())) { +// //鑾峰彇鐩爣绔� +// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(sourceBasDevp.getLiftNo(), Utils.getLev(wrkMast.getLocNo())); +// if (liftStaProtocol == null) { +// continue;//绔欑偣涓嶅瓨鍦� +// } +// +// // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢锛岃嚜鍔ㄣ�佺┖闂层�佹湁鐗� +// if (!(liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && liftStaProtocol.getHasTray())) { +// News.info("{}浠诲姟锛岃緭閫佺珯鐐圭姸鎬佷笉婊¤冻鍏ュ簱銆傝緭閫佺珯鐐�:{}", wrkMast.getWrkNo(), JSON.toJSONString(liftStaProtocol)); // continue; // } // -// WrkMast wrkMast = wrkMastMapper.selectRackInStep4(workNo, staProtocol.getSiteId()); -// if (wrkMast == null) { -// continue; -// } -// -// boolean step1 = this.shuttleInExecuteStep1(wrkMast, basDevp);//灏忚溅鎼叆搴撲腑 +// boolean step1 = this.shuttleInExecuteStep1(wrkMast, liftStaProtocol);//灏忚溅鎼叆搴撲腑 // if (!step1) { // continue; // } -// // } +// } catch (Exception e) { +// e.printStackTrace(); // } -// // } - /** - * 鍏ュ簱-灏忚溅鎼叆搴撲腑 - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - public boolean shuttleInExecuteStep1(WrkMast wrkMast, LiftStaProtocol liftStaProtocol) { - if (wrkMast.getWrkSts() == 4) { - if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴� - boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftStaProtocol.getLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐� - News.info("{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触"); - return false; - } +// /** +// * 鍏ュ簱-灏忚溅鎼叆搴撲腑 +// * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false +// * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue +// */ +// public boolean shuttleInExecuteStep1(WrkMast wrkMast, LiftStaProtocol liftStaProtocol) { +// if (wrkMast.getWrkSts() == 4) { +// if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴� +// boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftStaProtocol.getLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐� +// News.info("{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触"); +// return false; +// } +// +// //鑾峰彇鍥涘悜绌挎杞︾嚎绋� +// ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); +// if (shuttleThread == null) { +// return false; +// } +// ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); +// if (shuttleProtocol == null) { +// return false; +// } +// if (!shuttleThread.isIdle()) { +// News.info("{}浠诲姟锛寋}灏忚溅蹇欑涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +//// //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻 +//// if (shuttleProtocol.getToken() != 0) { +//// News.info("{}浠诲姟锛寋}灏忚溅锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂浠诲姟", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +//// return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 +//// } +// +// //鍒ゆ柇灏忚溅鏄惁瀛樺湪绉诲姩浠诲姟 +// WrkMast hasMoveWorking = wrkMastMapper.selectShuttleHasMoveWorking(wrkMast.getShuttleNo()); +// if (hasMoveWorking != null) { +// News.info("{}浠诲姟锛寋}灏忚溅锛屽瓨鍦ㄧЩ鍔ㄤ换鍔★紝绂佹娲惧彂浠诲姟", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false;//瀛樺湪绉诲姩浠诲姟锛岀姝㈡墽琛屽叆搴撲换鍔� +// } +// +// //鍒ゆ柇灏忚溅鏄惁鍒拌揪杈撻�佺珯鐐瑰簱浣� +// if (!shuttleProtocol.getCurrentLocNo().equals(liftStaProtocol.getLocNo())) { +// //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃� +// shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftStaProtocol.getLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐� +// News.info("{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪杈撻�佺珯鐐癸紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// +// //灏忚溅宸叉姷杈捐緭閫佺珯鐐逛綅缃紝杩涜鎼繍璐х墿 +// ShuttleOperaResult result = ShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo()); +// if (result == null) {//璺緞璁$畻澶辫触 +// News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐ワ紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// +// //鍒涘缓鍒嗛厤鍛戒护 +// ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); +// assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 +// assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� +// assignCommand.setTaskMode(ShuttleTaskModeType.PAK_IN.id);//鍏ュ簱妯″紡 +// assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) +// assignCommand.setCommands(result.getCommands());//杩愯鍛戒护 +// assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣 +// +// wrkMast.setWrkSts(5L);//4.鎻愬崌鏈烘惉杩愬畬鎴� => 5.灏忚溅鎼繍涓� +// wrkMast.setModiTime(new Date()); +//// shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰灏忚溅浠ょ墝 +// if (wrkMastMapper.updateById(wrkMast) > 0) { +// //涓嬪彂浠诲姟 +// MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); +// } +// +// return false; +// } +// return true; +// } - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - if (!shuttleProtocol.isIdle()) { - News.info("{}浠诲姟锛寋}灏忚溅蹇欑涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻 - if (shuttleProtocol.getToken() != 0) { - News.info("{}浠诲姟锛寋}灏忚溅锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂浠诲姟", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 - } +// /** +// * 鍑哄簱 ===>> 鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙� +// */ +// public synchronized void shuttleOutExecute() { +// try { +// for (WrkMast wrkMast : wrkMastMapper.selectBy2125()) { +// boolean step1 = this.shuttleOutExecuteStep1(wrkMast);//灏忚溅鎼嚭搴撲腑 +// if (!step1) { +// continue; +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// /** +// * 鍑哄簱-灏忚溅鎼嚭搴撲腑 +// * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false +// * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue +// */ +// public boolean shuttleOutExecuteStep1(WrkMast wrkMast) { +// //21.鐢熸垚鍑哄簱浠诲姟 => 22.灏忚溅鎼繍涓� +// if (wrkMast.getWrkSts() == 21) { +// EntityWrapper<StaDesc> wrapper = new EntityWrapper<>(); +// wrapper.eq("type_no", wrkMast.getIoType());//璺緞绫诲瀷 +// wrapper.eq("stn_no", wrkMast.getStaNo());//鍑哄簱绔欑偣缂栧彿 +// StaDesc staDesc = staDescService.selectOne(wrapper); +// if (staDesc == null) { +// News.info("{}浠诲姟锛屽嚭搴撹矾寰勪笉瀛樺湪", wrkMast.getWrkNo()); +// return false;//鍑哄簱璺緞涓嶅瓨鍦� +// } +// +// //鑾峰彇鍑哄簱绔欑偣 +// BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo()); +// if (basDevp == null) { +// return false;//鍑哄簱绔欑偣涓嶅瓨鍦� +// } +// +//// if (!basDevp.getAutoing().equals("Y")) { +//// News.info("{}浠诲姟锛寋}绔欑偣锛屼笉鏄嚜鍔ㄧ姸鎬�",wrkMast.getWrkNo(),basDevp.getDevNo()); +//// return false;//涓嶆槸鑷姩鐘舵�� +//// } +//// +//// if (!basDevp.getOutEnable().equals("Y")) { +//// News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夊彲鍑轰俊鍙�", wrkMast.getWrkNo(), basDevp.getDevNo()); +//// return false;//鍑哄簱绔欑偣涓嶅彲鍑� +//// } +// +// Integer liftNo = basDevp.getLiftNo();//鎼滅储鍑哄簱鎻愬崌鏈烘槸鍚﹀瓨鍦ㄥ叆搴撲换鍔★紝濡傚瓨鍦ㄧ姝㈠嚭搴� +// List<WrkMast> liftWrkMasts = wrkMastMapper.selectInWrkMastByLiftNo(liftNo); +// if (!liftWrkMasts.isEmpty()) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽瓨鍦ㄥ叆搴撲换鍔★紝绯荤粺绂佹鍑哄簱", wrkMast.getWrkNo(), liftNo); +// return false;//瀛樺湪鍏ュ簱浠诲姟锛岀姝㈠嚭搴� +// } +// +// //鍚屽簱浣嶇粍鏍¢獙 +// List<String> outerLoc = Utils.getGroupOuterLoc(wrkMast.getSourceLocNo()); +// List<LocMast> outerLocMasts = locMastService.selectNotEmptyLocNos(outerLoc); +// if (!outerLocMasts.isEmpty()) { +// News.info("{}浠诲姟锛屾祬搴撲綅瀛樺湪璐х墿锛岀郴缁熺瓑寰呬腑", wrkMast.getWrkNo()); +// return false;//娴呭簱浣嶅瓨鍦ㄦ湭鎵ц浠诲姟 +// } +// +// //鑾峰彇婧愮珯 +// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(basDevp.getLiftNo(), Utils.getLev(wrkMast.getSourceLocNo())); +// if (liftStaProtocol == null) { +// return false;//鎵句笉鍒扮珯鐐� +// } +// +// if (!(liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && !liftStaProtocol.getHasTray())) { +// News.info("{}浠诲姟锛寋}鍐呴儴杈撻�佺珯锛屼笉婊¤冻鑷姩銆佺┖闂层�佹棤鎵樼洏鐘舵��", wrkMast.getWrkNo(), liftStaProtocol.getStaNo()); +// return false;//绔欑偣蹇呴』鑷姩銆佺┖闂层�佹病鏈夋墭鐩� +// } +// +// if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴� +// //寮哄埗棰勭暀涓�鍙板皬杞︾粰鍏ュ簱浠诲姟 +// int lev = Utils.getLev(wrkMast.getSourceLocNo()); +// //鑾峰彇褰撳墠妤煎眰鏈夊嚑鍙板彲鐢ㄥ皬杞� +// int shuttleCount = shuttleDispatchUtils.getShuttleCountByLev(lev); +// if (shuttleCount >= 2) {//鍙湁鍙敤灏忚溅鏁伴噺澶т簬2锛屾墠杩涜鍏ュ簱浠诲姟棰勭暀灏忚溅 +// int shuttleWrkInObligateCount = 1;//棰勭暀灏忚溅鏁伴噺 +// Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleWrkInObligateCount").eq("status", 1)); +// if (config != null) { +// shuttleWrkInObligateCount = Integer.parseInt(config.getValue()); +// } +// //鍙敤鍑哄簱灏忚溅鏁伴噺(缁欏叆搴撲换鍔¢鐣欎竴鍙拌溅) +// int useShuttleCount = shuttleCount - shuttleWrkInObligateCount; +// //鏌ヨ妤煎眰宸插垎閰嶈溅杈嗙殑鍑哄簱浠诲姟鏁伴噺 +// List<WrkMast> wrkMasts = wrkMastService.selectShuttleOutWrkByLev(lev); +// if (wrkMasts.size() >= useShuttleCount) { +// News.info("{}浠诲姟锛屽綋鍓嶆ゼ灞傚彲鐢ㄥ皬杞}鍙帮紝鍑哄簱浠诲姟宸插垎閰峽}鍙帮紝绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), useShuttleCount, wrkMasts.size()); +// return false; +// } +// } +// boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐� +// News.info("{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触"); +// return false; +// } +// +// //鑾峰彇鍥涘悜绌挎杞︾嚎绋� +// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); +// if (shuttleThread == null) { +// return false; +// } +// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); +// if (shuttleProtocol == null) { +// return false; +// } +// if (!shuttleProtocol.isIdle()) { +// News.info("{}浠诲姟锛寋}灏忚溅锛屽繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻 +// if (shuttleProtocol.getToken() != 0) { +// News.info("{}浠诲姟锛寋}灏忚溅锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂浠诲姟", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 +// } +// +// //鍒ゆ柇灏忚溅鏄惁鍒拌揪璐х墿搴撲綅 +// if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { +// //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃� +// shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐� +// News.info("{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪杈撻�佺珯鐐癸紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// +// //灏忚溅宸叉姷杈捐揣鐗╀綅缃紝杩涜鎼繍璐х墿 +// ShuttleOperaResult result = ShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), liftStaProtocol.getLocNo());//灏嗚揣鐗╂惉杩愯嚦鎻愬崌鏈鸿緭閫佺珯鐐� +// if (result == null) {//鍑哄簱璺緞璁$畻澶辫触 +// News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐ワ紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// +// //鍒涘缓鍒嗛厤鍛戒护 +// ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); +// assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 +// assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� +// assignCommand.setTaskMode(ShuttleTaskModeType.PAK_OUT.id.shortValue());//鍑哄簱妯″紡 +// assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) +// assignCommand.setCommands(result.getCommands());//杩愯鍛戒护 +// assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣 +// +// wrkMast.setWrkSts(22L);//21.鐢熸垚鍑哄簱浠诲姟 => 22.灏忚溅鎼繍涓� +// wrkMast.setModiTime(new Date()); +// shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰灏忚溅浠ょ墝 +// if (wrkMastMapper.updateById(wrkMast) > 0) { +// //涓嬪彂浠诲姟 +// MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); +// } +// return false; +// } +// return true; +// } - //鍒ゆ柇灏忚溅鏄惁瀛樺湪绉诲姩浠诲姟 - WrkMast hasMoveWorking = wrkMastMapper.selectShuttleHasMoveWorking(wrkMast.getShuttleNo()); - if (hasMoveWorking != null) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽瓨鍦ㄧЩ鍔ㄤ换鍔★紝绂佹娲惧彂浠诲姟", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false;//瀛樺湪绉诲姩浠诲姟锛岀姝㈡墽琛屽叆搴撲换鍔� - } +// /** +// * 鍥涘悜绌挎杞︿换鍔″畬鎴� +// */ +// public synchronized void shuttleFinished() { +// try { +// for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { +// //鑾峰彇鍥涘悜绌挎杞︿俊鎭� +// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); +// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); +// if (shuttleProtocol == null) { +// continue; +// } +// +// //鍥涘悜绌挎杞︾姸鎬佷负绛夊緟纭銆佸皬杞﹀浜庣┖闂茬姸鎬� +// if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id //浠诲姟瀹屾垚绛夊緟纭 +// && shuttleProtocol.getTaskNo() != 0 +// && shuttleProtocol.getFree() == ShuttleStatusType.IDLE.id +// ) { +// //灏嗕换鍔℃。鏍囪涓哄畬鎴� +// WrkMast wrkMast = wrkMastMapper.selectByWorkNo(shuttleProtocol.getTaskNo()); +// if (wrkMast != null) { +// switch (wrkMast.getWrkSts().intValue()) { +// case 5://5.灏忚溅鎼繍涓� ==> 9.鍏ュ簱瀹屾垚 +// wrkMast.setWrkSts(9L); +// shuttleProtocol.setTaskNo(0); +// if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { +// //閲婃斁灏忚溅浠ょ墝 +// shuttleProtocol.setToken(0); +// } +// break; +// case 22://22.灏忚溅鎼繍涓� ==> 23.灏忚溅鎼繍瀹屾垚 +// wrkMast.setWrkSts(23L); +// shuttleProtocol.setTaskNo(0); +// if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { +// //閲婃斁灏忚溅浠ょ墝 +// shuttleProtocol.setToken(0); +// } +// break; +// case 102://102.灏忚溅绉诲姩鑷崇珯鐐� ==> 103.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� +// wrkMast.setWrkSts(103L); +// break; +// case 104://104.灏忚溅杩佸叆鎻愬崌鏈轰腑 ==> 105.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� +// wrkMast.setWrkSts(105L); +// shuttleProtocol.setTaskNo(0);//娓呯悊宸ヤ綔鍙� +// break; +// case 108://108.灏忚溅杩佸嚭鎻愬崌鏈轰腑 ==> 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� +// wrkMast.setWrkSts(109L); +// break; +// case 110://110.灏忚溅绉诲姩涓� ==> 111.灏忚溅绉诲姩瀹屾垚 +// wrkMast.setWrkSts(111L); +// shuttleProtocol.setTaskNo(0); +// if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { +// //閲婃斁灏忚溅浠ょ墝 +// shuttleProtocol.setToken(0); +// } +// break; +// default: +// } +// +// if (wrkMastMapper.updateById(wrkMast) > 0) { +// if (wrkMast.getWrkSts() == 111) { +// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� +// if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) { +// log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); +// } +// // 鍒犻櫎宸ヤ綔涓绘。 +// if (!wrkMastService.deleteById(wrkMast)) { +// log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo()); +// } +// } +// +// //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� +// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); +// //婧愬簱浣嶆竻闆� +// shuttleProtocol.setSourceLocNo(null); +// //鐩爣搴撲綅娓呴浂 +// shuttleProtocol.setLocNo(null); +// //浠诲姟鎸囦护娓呴浂 +// shuttleProtocol.setAssignCommand(null); +// News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); +// } else { +// News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo()); +// } +// } else { +// ShuttleAssignCommand assignCommand = shuttleProtocol.getAssignCommand(); +// if (!assignCommand.getAuto()) { +// //鎵嬪姩妯″紡 +// //宸ヤ綔鍙锋竻闆� +// shuttleProtocol.setTaskNo(0); +// //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� +// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); +// //婧愬簱浣嶆竻闆� +// shuttleProtocol.setSourceLocNo(null); +// //鐩爣搴撲綅娓呴浂 +// shuttleProtocol.setLocNo(null); +// //浠诲姟鎸囦护娓呴浂 +// shuttleProtocol.setAssignCommand(null); +// //娓呴浂浠ょ墝 +// shuttleProtocol.setToken(0); +// News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); +// } +// } +// +// } +// +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } - //鍒ゆ柇灏忚溅鏄惁鍒拌揪杈撻�佺珯鐐瑰簱浣� - if (!shuttleProtocol.getCurrentLocNo().equals(liftStaProtocol.getLocNo())) { - //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃� - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftStaProtocol.getLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐� - News.info("{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪杈撻�佺珯鐐癸紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //灏忚溅宸叉姷杈捐緭閫佺珯鐐逛綅缃紝杩涜鎼繍璐х墿 - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo()); - if (result == null) {//璺緞璁$畻澶辫触 - News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐ワ紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //鍒涘缓鍒嗛厤鍛戒护 - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.PAK_IN.id.shortValue());//鍏ュ簱妯″紡 - assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - assignCommand.setCommands(result.getCommands());//杩愯鍛戒护 - assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣 - - wrkMast.setWrkSts(5L);//4.鎻愬崌鏈烘惉杩愬畬鎴� => 5.灏忚溅鎼繍涓� - wrkMast.setModiTime(new Date()); - shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰灏忚溅浠ょ墝 - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - - return false; - } - return true; - } - - /** - * 鍑哄簱 ===>> 鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙� - */ - public synchronized void shuttleOutExecute() { - try { - for (WrkMast wrkMast : wrkMastMapper.selectBy2125()) { - boolean step1 = this.shuttleOutExecuteStep1(wrkMast);//灏忚溅鎼嚭搴撲腑 - if (!step1) { - continue; - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 鍑哄簱-灏忚溅鎼嚭搴撲腑 - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - public boolean shuttleOutExecuteStep1(WrkMast wrkMast) { - //21.鐢熸垚鍑哄簱浠诲姟 => 22.灏忚溅鎼繍涓� - if (wrkMast.getWrkSts() == 21) { - EntityWrapper<StaDesc> wrapper = new EntityWrapper<>(); - wrapper.eq("type_no", wrkMast.getIoType());//璺緞绫诲瀷 - wrapper.eq("stn_no", wrkMast.getStaNo());//鍑哄簱绔欑偣缂栧彿 - StaDesc staDesc = staDescService.selectOne(wrapper); - if (staDesc == null) { - News.info("{}浠诲姟锛屽嚭搴撹矾寰勪笉瀛樺湪", wrkMast.getWrkNo()); - return false;//鍑哄簱璺緞涓嶅瓨鍦� - } - - //鑾峰彇鍑哄簱绔欑偣 - BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo()); - if (basDevp == null) { - return false;//鍑哄簱绔欑偣涓嶅瓨鍦� - } - +// /** +// * 鎻愬崌鏈轰换鍔� +// */ +// public synchronized void liftIoExecute() { +// try { +// for (LiftSlave liftSlave : slaveProperties.getLift()) { +// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); +// if (liftThread == null) { +// continue; +// } +// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); +// if (liftProtocol == null) { +// continue; +// } +// +// if (!liftProtocol.isIdle()) { +// News.info("{}鍙锋彁鍗囨満锛屽繖纰屼腑", liftSlave.getId()); +// continue; +// } +// +// //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚﹁鍗犵敤 +// if (liftProtocol.getToken() != 0) { +// News.info("{}鍙锋彁鍗囨満锛屼护鐗屽凡琚嫭鍗�", liftSlave.getId()); +// continue; +// } +// +// //鎼滅储鏄惁鏈夊緟澶勭悊鐨勪换鍔� +// List<WrkMast> wrkMasts = wrkMastMapper.selectLiftStep223103(); +// if (wrkMasts.isEmpty()) { +// continue; +// } +// +// for (WrkMast wrkMast : wrkMasts) { +// //鎼滅储鏄惁鏈夊叾浠栦换鍔″崰鐢ㄤ簡鎻愬崌鏈猴紝濡傛灉鍗犵敤鎻愬崌鏈虹殑浠诲姟鍜屽綋鍓嶄换鍔$浉鍚岋紝鍒欒繍琛屾墽琛� +// WrkMast wrkMast1 = wrkMastMapper.selectLiftWrkMast(liftProtocol.getLiftNo().intValue()); +// if (wrkMast1 != null && wrkMast1.getWrkNo().intValue() != wrkMast.getWrkNo().intValue()) { +// News.info("{}鍙锋彁鍗囨満锛岃鍏朵粬浠诲姟{}鍗犵敤涓斿拰褰撳墠浠诲姟{}涓嶇浉鍚岋紝绂佹娲惧彂", liftSlave.getId(), wrkMast1.getWrkNo(), wrkMast.getWrkNo()); +// continue; +// } +// +// boolean stepIn = this.liftIoExecuteStepIn(wrkMast);//鎻愬崌鏈哄叆搴� +// if (!stepIn) { +// continue; +// } +// +// boolean stepOut = this.liftIoExecuteStepOut(wrkMast);//鎻愬崌鏈哄嚭搴� +// if (!stepOut) { +// continue; +// } +// } +// +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// /** +// * 鎻愬崌鏈哄叆搴� +// * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false +// * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue +// */ +// private boolean liftIoExecuteStepIn(WrkMast wrkMast) { +// //--------------------------------------鎻愬崌鏈哄叆搴�-----------------------------------------// +// Date now = new Date(); +// +// //2.璁惧涓婅蛋 ==> 3.鎻愬崌鏈烘惉杩愪腑 +// if (wrkMast.getWrkSts() == 2) { +// //鑾峰彇婧愮珯 +// BasDevp sourceBasDevp = basDevpService.selectById(wrkMast.getSourceStaNo()); +// if (sourceBasDevp == null) { +// return false;//鎵句笉鍒扮珯鐐� +// } +// +// if (!sourceBasDevp.getInEnable().equals("Y")) { +// News.info("{}浠诲姟锛寋}婧愮珯锛屾病鏈夊彲鍏ヤ俊鍙�", wrkMast.getWrkNo(), sourceBasDevp.getDevNo()); +// return false;//绔欑偣涓嶅彲鍏� +// } +// +// Integer barcodeId = Utils.getBarcodeIdByStaNo(wrkMast.getSourceStaNo()); +// if (barcodeId == null) { +// News.info("{}浠诲姟锛寋}婧愮珯锛屾壘涓嶅埌鍙敤鏉$爜鍣↖D", wrkMast.getWrkNo(), sourceBasDevp.getDevNo()); +// return false;//绔欑偣涓嶅彲鍏� +// } +// +// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId); +// if (barcodeThread == null) { +// News.info("{}浠诲姟锛寋}婧愮珯锛屾潯鐮佸櫒{}绾跨▼涓虹┖", wrkMast.getWrkNo(), sourceBasDevp.getDevNo(), barcodeId); +// return false;//绔欑偣涓嶅彲鍏� +// } +// String barcode = barcodeThread.getBarcode(); +// if(!Cools.isEmpty(barcode)) { +// if(!("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode))) { +// //瀛樺湪鏉$爜鍊硷紝鍒ゆ柇鏄惁鍜屽綋鍓嶅伐浣滄。涓�鑷� +// if (!barcode.equals(wrkMast.getBarcode())) { +// News.info("{}浠诲姟,{}绔欑偣锛屾潯鐮佸櫒{}鍊納}涓庡伐浣滄。鏉$爜鍊納}涓嶄竴鑷达紝绯荤粺璺宠繃鎵ц", wrkMast.getWrkNo(), sourceBasDevp.getDevNo(), barcodeId, barcode,wrkMast.getBarcode()); +// return false;//绔欑偣涓嶅彲鍏� +// } +// } +// }else { +// return false; +// } +// +// //鍒ゆ柇鎻愬崌鏈烘暣涓笁妤兼槸鍚﹂兘澶勪簬鍏ュ簱妯″紡 +// Integer outInModel1 = Utils.getOutInModelByLift(sourceBasDevp.getLiftNo(), 1); +// Integer outInModel2 = Utils.getOutInModelByLift(sourceBasDevp.getLiftNo(), 5); +// Integer outInModel3 = Utils.getOutInModelByLift(sourceBasDevp.getLiftNo(), 8); +// if (outInModel1 == null || outInModel2 == null || outInModel3 == null) { +// News.info("{}浠诲姟锛屾病鏈夊嚭鍏ュ簱妯″紡", wrkMast.getWrkNo()); +// return false;//涓嶅瓨鍦ㄥ嚭鍏ュ簱妯″紡 +// } +// +// if (outInModel1 == 2 || outInModel2 == 2 && outInModel3 == 2) { +// News.info("{}浠诲姟锛屾湁绔欑偣澶勪簬鍑哄簱妯″紡锛岀姝㈠叆搴�", wrkMast.getWrkNo()); +// return false;//鍙鏈変竴涓浜庡嚭搴撴ā寮忥紝绂佹鍏ュ簱 +// } +// +// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, sourceBasDevp.getLiftNo()); +// if (liftThread == null) { +// return false; +// } +// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); +// if (liftProtocol == null) { +// return false; +// } +// if (!liftProtocol.isIdle()) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽繖纰屼腑", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false; +// } +// //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰� +// if (liftProtocol.getToken() != 0) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� +// } +// +// //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞� +// if (liftProtocol.getHasCar()) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呴儴鏈夊皬杞︼紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false;//鏈夊皬杞︼紝绂佹娲惧彂 +// } +// +// //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩� +// if (liftProtocol.getHasTray()) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呴儴鏈夋墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false;//鏈夋墭鐩橈紝绂佹娲惧彂 +// } +// +// //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 +// WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); +// if (liftWrkMast != null) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽綋鍓嶆彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� +// } +// +// //鑾峰彇婧愮珯瀵瑰簲鐨勭墰鐪兼彁鍗囨満绔欑偣缂栧彿(璧风偣缂栧彿) +// Integer startSta = Integer.parseInt(sourceBasDevp.getQrCodeValue()); +// //鑾峰彇鎻愬崌鏈虹珯鐐� +// LiftStaProtocol targetStaProtocol = NyLiftUtils.getLiftStaByLev(liftThread.getSlave().getId(), Utils.getLev(wrkMast.getLocNo())); +// if (targetStaProtocol == null) { +// return false;//绔欑偣涓嶅瓨鍦� +// } +// +// if (targetStaProtocol.getHasTray()) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛寋}绔欑偣锛屾彁鍗囨満绔欑偣鏈夋墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo(), targetStaProtocol.getStaNo()); +// return false;//鎻愬崌鏈虹珯鐐规湁鎵樼洏锛岀姝㈡淳鍙� +// } +// +// Integer targetSta = targetStaProtocol.getStaNo(); +// +// //鑾峰彇鎻愬崌鏈哄懡浠� +// NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, wrkMast.getWrkNo()); +// if (wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57) { +// //鎷f枡鍐嶅洖搴擄紝閲嶆柊鍒嗛厤璁惧宸ヤ綔鍙� +// int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿 +// BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(String.valueOf(deviceWrk), liftThread.getSlave().getId()); +// if (basLiftOpt != null) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛岃澶囧伐浣滃彿鍑虹幇閲嶅鎯呭喌锛岃鑱旂郴鎶�鏈汉鍛樻敮鎸併��", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false; +// } +// liftCommand.setTaskNo((short) deviceWrk); +// } +// ArrayList<NyLiftCommand> commands = new ArrayList<>(); +// commands.add(liftCommand); +// +// //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 +// LiftAssignCommand assignCommand = new LiftAssignCommand(); +// assignCommand.setCommands(commands); +// assignCommand.setLiftNo(liftProtocol.getLiftNo()); +// assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); +// assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_TRAY.id.shortValue()); +// +// wrkMast.setWrkSts(3L);//2.璁惧涓婅蛋 ==> 3.鎻愬崌鏈烘惉杩愪腑 +// wrkMast.setLiftNo(liftThread.getSlave().getId());//浠诲姟妗g粦瀹氭彁鍗囨満鍙� +// wrkMast.setModiTime(now); +// liftProtocol.setToken(wrkMast.getWrkNo());//鐙崰鎻愬崌鏈轰护鐗� +// if (wrkMastMapper.updateById(wrkMast) > 0) { +// //涓嬪彂浠诲姟 +// MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); +// } +// +// return false; +// } +// return true; +// } +// +// /** +// * 鎻愬崌鏈哄嚭搴� +// * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false +// * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue +// */ +// private boolean liftIoExecuteStepOut(WrkMast wrkMast) { +// //--------------------------------------鎻愬崌鏈哄嚭搴�-----------------------------------------// +// Date now = new Date(); +// +// //23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑 +// if (wrkMast.getWrkSts() == 23) { +// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); +// if (shuttleThread == null) { +// return false; +// } +// +// //鑾峰彇鍑哄簱绔欑偣(鐩爣绔�) +// BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo()); +// if (basDevp == null) { +// News.info("{}浠诲姟锛屽嚭搴撶珯鐐逛笉瀛樺湪锛岀姝㈡淳鍙�", wrkMast.getWrkNo()); +// return false;//鍑哄簱绔欑偣涓嶅瓨鍦� +// } +// +// //鑾峰彇婧愮珯瀵瑰簲鐨勭墰鐪兼彁鍗囨満绔欑偣缂栧彿(璧风偣缂栧彿) +// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(basDevp.getLiftNo(), Utils.getLev(wrkMast.getSourceLocNo())); +// if (liftStaProtocol == null) { +// News.info("{}浠诲姟锛屾壘涓嶅埌绔欑偣锛岀姝㈡淳鍙�", wrkMast.getWrkNo()); +// return false;//鎵句笉鍒扮珯鐐� +// } +// Integer startSta = liftStaProtocol.getStaNo(); +// +// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); +// if (shuttleProtocol.getCurrentLocNo().equals(liftStaProtocol.getLocNo())) { +// //灏忚溅杩樺湪杈撻�佺珯鐐� +// //璋冨害灏忚溅閬胯 +// boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkMast.getSourceLocNo()), wrkMast.getShuttleNo(), shuttleThread); +// if (!result) { +// News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀湪杈撻�佺珯鐐硅皟搴﹀皬杞﹂伩璁╁け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// } +// // if (!basDevp.getAutoing().equals("Y")) { -// News.info("{}浠诲姟锛寋}绔欑偣锛屼笉鏄嚜鍔ㄧ姸鎬�",wrkMast.getWrkNo(),basDevp.getDevNo()); -// return false;//涓嶆槸鑷姩鐘舵�� +// News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夎嚜鍔ㄤ俊鍙凤紝绂佹娲惧彂", wrkMast.getWrkNo(), basDevp.getDevNo()); +// return false;//鍑哄簱绔欑偣涓嶅彲鍑� +// } +// +// if (basDevp.getLoading().equals("Y")) { +// News.info("{}浠诲姟锛寋}绔欑偣锛屽瓨鍦ㄦ湁鐗╀俊鍙凤紝绂佹娲惧彂", wrkMast.getWrkNo(), basDevp.getDevNo()); +// return false;//鍑哄簱绔欑偣涓嶅彲鍑� // } // // if (!basDevp.getOutEnable().equals("Y")) { -// News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夊彲鍑轰俊鍙�", wrkMast.getWrkNo(), basDevp.getDevNo()); +// News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夊彲鍑轰俊鍙凤紝绂佹娲惧彂", wrkMast.getWrkNo(), basDevp.getDevNo()); // return false;//鍑哄簱绔欑偣涓嶅彲鍑� // } - - Integer liftNo = basDevp.getLiftNo();//鎼滅储鍑哄簱鎻愬崌鏈烘槸鍚﹀瓨鍦ㄥ叆搴撲换鍔★紝濡傚瓨鍦ㄧ姝㈠嚭搴� - List<WrkMast> liftWrkMasts = wrkMastMapper.selectInWrkMastByLiftNo(liftNo); - if (!liftWrkMasts.isEmpty()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽瓨鍦ㄥ叆搴撲换鍔★紝绯荤粺绂佹鍑哄簱", wrkMast.getWrkNo(), liftNo); - return false;//瀛樺湪鍏ュ簱浠诲姟锛岀姝㈠嚭搴� - } - - //鍚屽簱浣嶇粍鏍¢獙 - List<String> outerLoc = Utils.getGroupOuterLoc(wrkMast.getSourceLocNo()); - List<LocMast> outerLocMasts = locMastService.selectNotEmptyLocNos(outerLoc); - if (!outerLocMasts.isEmpty()) { - News.info("{}浠诲姟锛屾祬搴撲綅瀛樺湪璐х墿锛岀郴缁熺瓑寰呬腑", wrkMast.getWrkNo()); - return false;//娴呭簱浣嶅瓨鍦ㄦ湭鎵ц浠诲姟 - } - - //鑾峰彇婧愮珯 - LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(basDevp.getLiftNo(), Utils.getLev(wrkMast.getSourceLocNo())); - if (liftStaProtocol == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - if (!(liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && !liftStaProtocol.getHasTray())) { - News.info("{}浠诲姟锛寋}鍐呴儴杈撻�佺珯锛屼笉婊¤冻鑷姩銆佺┖闂层�佹棤鎵樼洏鐘舵��", wrkMast.getWrkNo(), liftStaProtocol.getStaNo()); - return false;//绔欑偣蹇呴』鑷姩銆佺┖闂层�佹病鏈夋墭鐩� - } - - if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴� - //寮哄埗棰勭暀涓�鍙板皬杞︾粰鍏ュ簱浠诲姟 - int lev = Utils.getLev(wrkMast.getSourceLocNo()); - //鑾峰彇褰撳墠妤煎眰鏈夊嚑鍙板彲鐢ㄥ皬杞� - int shuttleCount = shuttleDispatchUtils.getShuttleCountByLev(lev); - if (shuttleCount >= 2) {//鍙湁鍙敤灏忚溅鏁伴噺澶т簬2锛屾墠杩涜鍏ュ簱浠诲姟棰勭暀灏忚溅 - int shuttleWrkInObligateCount = 1;//棰勭暀灏忚溅鏁伴噺 - Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleWrkInObligateCount").eq("status", 1)); - if (config != null) { - shuttleWrkInObligateCount = Integer.parseInt(config.getValue()); - } - //鍙敤鍑哄簱灏忚溅鏁伴噺(缁欏叆搴撲换鍔¢鐣欎竴鍙拌溅) - int useShuttleCount = shuttleCount - shuttleWrkInObligateCount; - //鏌ヨ妤煎眰宸插垎閰嶈溅杈嗙殑鍑哄簱浠诲姟鏁伴噺 - List<WrkMast> wrkMasts = wrkMastService.selectShuttleOutWrkByLev(lev); - if (wrkMasts.size() >= useShuttleCount) { - News.info("{}浠诲姟锛屽綋鍓嶆ゼ灞傚彲鐢ㄥ皬杞}鍙帮紝鍑哄簱浠诲姟宸插垎閰峽}鍙帮紝绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), useShuttleCount, wrkMasts.size()); - return false; - } - } - boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐� - News.info("{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触"); - return false; - } - - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - if (!shuttleProtocol.isIdle()) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻 - if (shuttleProtocol.getToken() != 0) { - News.info("{}浠诲姟锛寋}灏忚溅锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂浠诲姟", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 - } - - //鍒ゆ柇灏忚溅鏄惁鍒拌揪璐х墿搴撲綅 - if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { - //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃� - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐� - News.info("{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪杈撻�佺珯鐐癸紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //灏忚溅宸叉姷杈捐揣鐗╀綅缃紝杩涜鎼繍璐х墿 - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), liftStaProtocol.getLocNo());//灏嗚揣鐗╂惉杩愯嚦鎻愬崌鏈鸿緭閫佺珯鐐� - if (result == null) {//鍑哄簱璺緞璁$畻澶辫触 - News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐ワ紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //鍒涘缓鍒嗛厤鍛戒护 - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.PAK_OUT.id.shortValue());//鍑哄簱妯″紡 - assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - assignCommand.setCommands(result.getCommands());//杩愯鍛戒护 - assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣 - - wrkMast.setWrkSts(22L);//21.鐢熸垚鍑哄簱浠诲姟 => 22.灏忚溅鎼繍涓� - wrkMast.setModiTime(new Date()); - shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰灏忚溅浠ょ墝 - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - return false; - } - return true; - } - - /** - * 鍥涘悜绌挎杞︿换鍔″畬鎴� - */ - public synchronized void shuttleFinished() { - try { - for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { - //鑾峰彇鍥涘悜绌挎杞︿俊鎭� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - continue; - } - - //鍥涘悜绌挎杞︾姸鎬佷负绛夊緟纭銆佸皬杞﹀浜庣┖闂茬姸鎬� - if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id //浠诲姟瀹屾垚绛夊緟纭 - && shuttleProtocol.getTaskNo() != 0 - && shuttleProtocol.getFree() == ShuttleStatusType.IDLE.id - ) { - //灏嗕换鍔℃。鏍囪涓哄畬鎴� - WrkMast wrkMast = wrkMastMapper.selectByWorkNo(shuttleProtocol.getTaskNo()); - if (wrkMast != null) { - switch (wrkMast.getWrkSts().intValue()) { - case 5://5.灏忚溅鎼繍涓� ==> 9.鍏ュ簱瀹屾垚 - wrkMast.setWrkSts(9L); - shuttleProtocol.setTaskNo(0); - if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - //閲婃斁灏忚溅浠ょ墝 - shuttleProtocol.setToken(0); - } - break; - case 22://22.灏忚溅鎼繍涓� ==> 23.灏忚溅鎼繍瀹屾垚 - wrkMast.setWrkSts(23L); - shuttleProtocol.setTaskNo(0); - if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - //閲婃斁灏忚溅浠ょ墝 - shuttleProtocol.setToken(0); - } - break; - case 102://102.灏忚溅绉诲姩鑷崇珯鐐� ==> 103.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� - wrkMast.setWrkSts(103L); - break; - case 104://104.灏忚溅杩佸叆鎻愬崌鏈轰腑 ==> 105.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� - wrkMast.setWrkSts(105L); - shuttleProtocol.setTaskNo(0);//娓呯悊宸ヤ綔鍙� - break; - case 108://108.灏忚溅杩佸嚭鎻愬崌鏈轰腑 ==> 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� - wrkMast.setWrkSts(109L); - break; - case 110://110.灏忚溅绉诲姩涓� ==> 111.灏忚溅绉诲姩瀹屾垚 - wrkMast.setWrkSts(111L); - shuttleProtocol.setTaskNo(0); - if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - //閲婃斁灏忚溅浠ょ墝 - shuttleProtocol.setToken(0); - } - break; - default: - } - - if (wrkMastMapper.updateById(wrkMast) > 0) { - if (wrkMast.getWrkSts() == 111) { - // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� - if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) { - log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - // 鍒犻櫎宸ヤ綔涓绘。 - if (!wrkMastService.deleteById(wrkMast)) { - log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - } - - //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); - //婧愬簱浣嶆竻闆� - shuttleProtocol.setSourceLocNo(null); - //鐩爣搴撲綅娓呴浂 - shuttleProtocol.setLocNo(null); - //浠诲姟鎸囦护娓呴浂 - shuttleProtocol.setAssignCommand(null); - News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); - } else { - News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo()); - } - } else { - ShuttleAssignCommand assignCommand = shuttleProtocol.getAssignCommand(); - if (!assignCommand.getAuto()) { - //鎵嬪姩妯″紡 - //宸ヤ綔鍙锋竻闆� - shuttleProtocol.setTaskNo(0); - //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); - //婧愬簱浣嶆竻闆� - shuttleProtocol.setSourceLocNo(null); - //鐩爣搴撲綅娓呴浂 - shuttleProtocol.setLocNo(null); - //浠诲姟鎸囦护娓呴浂 - shuttleProtocol.setAssignCommand(null); - //娓呴浂浠ょ墝 - shuttleProtocol.setToken(0); - News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); - } - } - - } - - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 鎻愬崌鏈轰换鍔� - */ - public synchronized void liftIoExecute() { - try { - for (LiftSlave liftSlave : slaveProperties.getLift()) { - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); - if (liftThread == null) { - continue; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - continue; - } - - if (!liftProtocol.isIdle()) { - News.info("{}鍙锋彁鍗囨満锛屽繖纰屼腑", liftSlave.getId()); - continue; - } - - //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚﹁鍗犵敤 - if (liftProtocol.getToken() != 0) { - News.info("{}鍙锋彁鍗囨満锛屼护鐗屽凡琚嫭鍗�", liftSlave.getId()); - continue; - } - - //鎼滅储鏄惁鏈夊緟澶勭悊鐨勪换鍔� - List<WrkMast> wrkMasts = wrkMastMapper.selectLiftStep223103(); - if (wrkMasts.isEmpty()) { - continue; - } - - for (WrkMast wrkMast : wrkMasts) { - //鎼滅储鏄惁鏈夊叾浠栦换鍔″崰鐢ㄤ簡鎻愬崌鏈猴紝濡傛灉鍗犵敤鎻愬崌鏈虹殑浠诲姟鍜屽綋鍓嶄换鍔$浉鍚岋紝鍒欒繍琛屾墽琛� - WrkMast wrkMast1 = wrkMastMapper.selectLiftWrkMast(liftProtocol.getLiftNo().intValue()); - if (wrkMast1 != null && wrkMast1.getWrkNo().intValue() != wrkMast.getWrkNo().intValue()) { - News.info("{}鍙锋彁鍗囨満锛岃鍏朵粬浠诲姟{}鍗犵敤涓斿拰褰撳墠浠诲姟{}涓嶇浉鍚岋紝绂佹娲惧彂", liftSlave.getId(), wrkMast1.getWrkNo(), wrkMast.getWrkNo()); - continue; - } - - boolean stepIn = this.liftIoExecuteStepIn(wrkMast);//鎻愬崌鏈哄叆搴� - if (!stepIn) { - continue; - } - - boolean stepOut = this.liftIoExecuteStepOut(wrkMast);//鎻愬崌鏈哄嚭搴� - if (!stepOut) { - continue; - } - } - - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 鎻愬崌鏈哄叆搴� - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - private boolean liftIoExecuteStepIn(WrkMast wrkMast) { - //--------------------------------------鎻愬崌鏈哄叆搴�-----------------------------------------// - Date now = new Date(); - - //2.璁惧涓婅蛋 ==> 3.鎻愬崌鏈烘惉杩愪腑 - if (wrkMast.getWrkSts() == 2) { - //鑾峰彇婧愮珯 - BasDevp sourceBasDevp = basDevpService.selectById(wrkMast.getSourceStaNo()); - if (sourceBasDevp == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - if (!sourceBasDevp.getInEnable().equals("Y")) { - News.info("{}浠诲姟锛寋}婧愮珯锛屾病鏈夊彲鍏ヤ俊鍙�", wrkMast.getWrkNo(), sourceBasDevp.getDevNo()); - return false;//绔欑偣涓嶅彲鍏� - } - - Integer barcodeId = Utils.getBarcodeIdByStaNo(wrkMast.getSourceStaNo()); - if (barcodeId == null) { - News.info("{}浠诲姟锛寋}婧愮珯锛屾壘涓嶅埌鍙敤鏉$爜鍣↖D", wrkMast.getWrkNo(), sourceBasDevp.getDevNo()); - return false;//绔欑偣涓嶅彲鍏� - } - - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId); - if (barcodeThread == null) { - News.info("{}浠诲姟锛寋}婧愮珯锛屾潯鐮佸櫒{}绾跨▼涓虹┖", wrkMast.getWrkNo(), sourceBasDevp.getDevNo(), barcodeId); - return false;//绔欑偣涓嶅彲鍏� - } - String barcode = barcodeThread.getBarcode(); - if(!Cools.isEmpty(barcode)) { - if(!("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode))) { - //瀛樺湪鏉$爜鍊硷紝鍒ゆ柇鏄惁鍜屽綋鍓嶅伐浣滄。涓�鑷� - if (!barcode.equals(wrkMast.getBarcode())) { - News.info("{}浠诲姟,{}绔欑偣锛屾潯鐮佸櫒{}鍊納}涓庡伐浣滄。鏉$爜鍊納}涓嶄竴鑷达紝绯荤粺璺宠繃鎵ц", wrkMast.getWrkNo(), sourceBasDevp.getDevNo(), barcodeId, barcode,wrkMast.getBarcode()); - return false;//绔欑偣涓嶅彲鍏� - } - } - }else { - return false; - } - - //鍒ゆ柇鎻愬崌鏈烘暣涓笁妤兼槸鍚﹂兘澶勪簬鍏ュ簱妯″紡 - Integer outInModel1 = Utils.getOutInModelByLift(sourceBasDevp.getLiftNo(), 1); - Integer outInModel2 = Utils.getOutInModelByLift(sourceBasDevp.getLiftNo(), 5); - Integer outInModel3 = Utils.getOutInModelByLift(sourceBasDevp.getLiftNo(), 8); - if (outInModel1 == null || outInModel2 == null || outInModel3 == null) { - News.info("{}浠诲姟锛屾病鏈夊嚭鍏ュ簱妯″紡", wrkMast.getWrkNo()); - return false;//涓嶅瓨鍦ㄥ嚭鍏ュ簱妯″紡 - } - - if (outInModel1 == 2 || outInModel2 == 2 && outInModel3 == 2) { - News.info("{}浠诲姟锛屾湁绔欑偣澶勪簬鍑哄簱妯″紡锛岀姝㈠叆搴�", wrkMast.getWrkNo()); - return false;//鍙鏈変竴涓浜庡嚭搴撴ā寮忥紝绂佹鍏ュ簱 - } - - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, sourceBasDevp.getLiftNo()); - if (liftThread == null) { - return false; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return false; - } - if (!liftProtocol.isIdle()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽繖纰屼腑", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false; - } - //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰� - if (liftProtocol.getToken() != 0) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� - } - - //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞� - if (liftProtocol.getHasCar()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呴儴鏈夊皬杞︼紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鏈夊皬杞︼紝绂佹娲惧彂 - } - - //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩� - if (liftProtocol.getHasTray()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呴儴鏈夋墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鏈夋墭鐩橈紝绂佹娲惧彂 - } - - //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); - if (liftWrkMast != null) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽綋鍓嶆彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� - } - - //鑾峰彇婧愮珯瀵瑰簲鐨勭墰鐪兼彁鍗囨満绔欑偣缂栧彿(璧风偣缂栧彿) - Integer startSta = Integer.parseInt(sourceBasDevp.getQrCodeValue()); - //鑾峰彇鎻愬崌鏈虹珯鐐� - LiftStaProtocol targetStaProtocol = NyLiftUtils.getLiftStaByLev(liftThread.getSlave().getId(), Utils.getLev(wrkMast.getLocNo())); - if (targetStaProtocol == null) { - return false;//绔欑偣涓嶅瓨鍦� - } - - if (targetStaProtocol.getHasTray()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛寋}绔欑偣锛屾彁鍗囨満绔欑偣鏈夋墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo(), targetStaProtocol.getStaNo()); - return false;//鎻愬崌鏈虹珯鐐规湁鎵樼洏锛岀姝㈡淳鍙� - } - - Integer targetSta = targetStaProtocol.getStaNo(); - - //鑾峰彇鎻愬崌鏈哄懡浠� - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, wrkMast.getWrkNo()); - if (wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57) { - //鎷f枡鍐嶅洖搴擄紝閲嶆柊鍒嗛厤璁惧宸ヤ綔鍙� - int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿 - BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(String.valueOf(deviceWrk), liftThread.getSlave().getId()); - if (basLiftOpt != null) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛岃澶囧伐浣滃彿鍑虹幇閲嶅鎯呭喌锛岃鑱旂郴鎶�鏈汉鍛樻敮鎸併��", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false; - } - liftCommand.setTaskNo((short) deviceWrk); - } - ArrayList<NyLiftCommand> commands = new ArrayList<>(); - commands.add(liftCommand); - - //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 - LiftAssignCommand assignCommand = new LiftAssignCommand(); - assignCommand.setCommands(commands); - assignCommand.setLiftNo(liftProtocol.getLiftNo()); - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); - assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_TRAY.id.shortValue()); - - wrkMast.setWrkSts(3L);//2.璁惧涓婅蛋 ==> 3.鎻愬崌鏈烘惉杩愪腑 - wrkMast.setLiftNo(liftThread.getSlave().getId());//浠诲姟妗g粦瀹氭彁鍗囨満鍙� - wrkMast.setModiTime(now); - liftProtocol.setToken(wrkMast.getWrkNo());//鐙崰鎻愬崌鏈轰护鐗� - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); - } - - return false; - } - return true; - } - - /** - * 鎻愬崌鏈哄嚭搴� - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - private boolean liftIoExecuteStepOut(WrkMast wrkMast) { - //--------------------------------------鎻愬崌鏈哄嚭搴�-----------------------------------------// - Date now = new Date(); - - //23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑 - if (wrkMast.getWrkSts() == 23) { - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - - //鑾峰彇鍑哄簱绔欑偣(鐩爣绔�) - BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo()); - if (basDevp == null) { - News.info("{}浠诲姟锛屽嚭搴撶珯鐐逛笉瀛樺湪锛岀姝㈡淳鍙�", wrkMast.getWrkNo()); - return false;//鍑哄簱绔欑偣涓嶅瓨鍦� - } - - //鑾峰彇婧愮珯瀵瑰簲鐨勭墰鐪兼彁鍗囨満绔欑偣缂栧彿(璧风偣缂栧彿) - LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(basDevp.getLiftNo(), Utils.getLev(wrkMast.getSourceLocNo())); - if (liftStaProtocol == null) { - News.info("{}浠诲姟锛屾壘涓嶅埌绔欑偣锛岀姝㈡淳鍙�", wrkMast.getWrkNo()); - return false;//鎵句笉鍒扮珯鐐� - } - Integer startSta = liftStaProtocol.getStaNo(); - - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol.getCurrentLocNo().equals(liftStaProtocol.getLocNo())) { - //灏忚溅杩樺湪杈撻�佺珯鐐� - //璋冨害灏忚溅閬胯 - boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkMast.getSourceLocNo()), wrkMast.getShuttleNo(), shuttleThread); - if (!result) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀湪杈撻�佺珯鐐硅皟搴﹀皬杞﹂伩璁╁け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - } - - if (!basDevp.getAutoing().equals("Y")) { - News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夎嚜鍔ㄤ俊鍙凤紝绂佹娲惧彂", wrkMast.getWrkNo(), basDevp.getDevNo()); - return false;//鍑哄簱绔欑偣涓嶅彲鍑� - } - - if (basDevp.getLoading().equals("Y")) { - News.info("{}浠诲姟锛寋}绔欑偣锛屽瓨鍦ㄦ湁鐗╀俊鍙凤紝绂佹娲惧彂", wrkMast.getWrkNo(), basDevp.getDevNo()); - return false;//鍑哄簱绔欑偣涓嶅彲鍑� - } - - if (!basDevp.getOutEnable().equals("Y")) { - News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夊彲鍑轰俊鍙凤紝绂佹娲惧彂", wrkMast.getWrkNo(), basDevp.getDevNo()); - return false;//鍑哄簱绔欑偣涓嶅彲鍑� - } - - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, basDevp.getLiftNo()); - if (liftThread == null) { - return false; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return false; - } - - if (!liftProtocol.isIdle()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽繖纰屼腑", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false; - } - //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰� - if (liftProtocol.getToken() != 0) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� - } - //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); - if (liftWrkMast != null) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽綋鍓嶆彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� - } - - //鑾风洰鏍囩珯婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐� - BasDevp targetBasDevp = basDevpService.selectById(wrkMast.getStaNo()); - if (targetBasDevp == null) { - News.info("{}浠诲姟锛寋}绔欑偣锛岀珯鐐逛笉瀛樺湪锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), wrkMast.getStaNo()); - return false;//绔欑偣涓嶅瓨鍦� - } - //鑾峰彇鐗涚溂鎻愬崌鏈虹珯鐐圭紪鍙�(鐩爣缂栧彿) - Integer targetSta = Integer.parseInt(targetBasDevp.getQrCodeValue()); - - //鑾峰彇鎻愬崌鏈哄懡浠� - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftThread.getSlave().getId(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, wrkMast.getWrkNo()); - - ArrayList<NyLiftCommand> commands = new ArrayList<>(); - commands.add(liftCommand); - - //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 - LiftAssignCommand assignCommand = new LiftAssignCommand(); - assignCommand.setCommands(commands); - assignCommand.setLiftNo(liftProtocol.getLiftNo()); - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); - assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_TRAY.id.shortValue()); - - wrkMast.setWrkSts(24L);//23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑 - wrkMast.setLiftNo(liftThread.getSlave().getId());//浠诲姟妗g粦瀹氭彁鍗囨満鍙� - wrkMast.setModiTime(now); - liftProtocol.setToken(wrkMast.getWrkNo());//鐙崰鎻愬崌鏈轰护鐗� - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); - } - - return false; - } - return true; - } - - /** - * 鎻愬崌鏈轰换鍔″畬鎴� - */ - public synchronized void liftFinished() { - try { - for (LiftSlave liftSlave : slaveProperties.getLift()) { - //鑾峰彇鎻愬崌鏈轰俊鎭� - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - continue; - } - - //鎻愬崌鏈轰负绛夊緟纭涓旂┖闂� - if (liftProtocol.getProtocolStatus() == LiftProtocolStatusType.WAITING.id - && liftProtocol.getTaskNo() != 0 - && !liftProtocol.getBusy() - ) { - int taskNo = liftProtocol.getTaskNo().intValue(); - if (taskNo >= 20000 && taskNo <= 30000) { - //鎻愬崌鏈鸿澶囧伐浣滃彿锛岄渶瑕佹煡璇㈠搴斾换鍔″彿 - BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(liftProtocol.getTaskNo().toString(), liftSlave.getId()); - if (basLiftOpt != null) { - taskNo = basLiftOpt.getWrkNo(); - } - } - - //灏嗕换鍔℃。鏍囪涓哄畬鎴� - WrkMast wrkMast = wrkMastMapper.selectByWorkNo324104(taskNo); - if (wrkMast != null) { - switch (wrkMast.getWrkSts().intValue()) { - case 3://3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴� - wrkMast.setWrkSts(4L); - wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� - if (liftProtocol.getToken().equals(wrkMast.getWrkNo())) { - //閲婃斁鎻愬崌鏈轰护鐗� - liftProtocol.setToken(0); - } - break; - case 24://24.鎻愬崌鏈烘惉杩愪腑 ==> 25.鎻愬崌鏈烘惉杩愬畬鎴� - wrkMast.setWrkSts(25L); - if (wrkMast.getIoType() == 11) {//搴撲綅绉昏浆 - wrkMast.setWrkSts(4L);//4.鎻愬崌鏈烘惉杩愬畬鎴� - } else { - if (wrkMast.getMk() == null || !wrkMast.getMk().equals("Y")) { - //涓嶉渶瑕佺敤鍒版満姊拌噦锛岀洿鎺ヨ浆29.鍑哄簱瀹屾垚 - wrkMast.setWrkSts(29L); - wrkMast.setShuttleNo(null);//閲婃斁灏忚溅 - wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� - wrkMast.setModiTime(new Date()); - } - } - - if (liftProtocol.getToken().equals(wrkMast.getWrkNo())) { - //閲婃斁鎻愬崌鏈轰护鐗� - liftProtocol.setToken(0); - } - - break; - case 106://106.鎻愬崌鏈烘惉杩愪腑 ==> 107.鎻愬崌鏈烘惉杩愬畬鎴� - wrkMast.setWrkSts(107L); - break; - default: - } - - if (wrkMastMapper.updateById(wrkMast) > 0) { - //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵�� - liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); - //浠诲姟鎸囦护娓呴浂 - liftProtocol.setAssignCommand(null); - News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo()); - } else { - News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo()); - } - } else { - LiftAssignCommand assignCommand = liftProtocol.getAssignCommand(); - if (assignCommand != null) { - if (!assignCommand.getAuto()) { - //鎵嬪姩鎿嶄綔 - //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵�� - liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); - //浠诲姟鎸囦护娓呴浂 - liftProtocol.setAssignCommand(null); - News.info("鎻愬崌鏈哄凡纭鎵嬪姩鎿嶄綔銆傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo()); - } - } - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 搴撲綅绉昏浆 - */ - public synchronized void locToLocExecute() { - try { - //鑾峰彇鍑哄叆搴撳伐浣滄。 -// List<WrkMast> wrkMasts = wrkMastMapper.selectInOutWrkMast(); -// if (wrkMasts.size() > 0) { -// //鏈夊嚭鍏ュ簱浠诲姟锛屽繀椤荤瓑寰呬换鍔℃墽琛屽畬姣曞啀鎵ц搴撲綅绉昏浆 -// return; +// +// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, basDevp.getLiftNo()); +// if (liftThread == null) { +// return false; +// } +// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); +// if (liftProtocol == null) { +// return false; +// } +// +// if (!liftProtocol.isIdle()) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽繖纰屼腑", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false; +// } +// //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰� +// if (liftProtocol.getToken() != 0) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� +// } +// //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 +// WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); +// if (liftWrkMast != null) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽綋鍓嶆彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� +// } +// +// //鑾风洰鏍囩珯婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐� +// BasDevp targetBasDevp = basDevpService.selectById(wrkMast.getStaNo()); +// if (targetBasDevp == null) { +// News.info("{}浠诲姟锛寋}绔欑偣锛岀珯鐐逛笉瀛樺湪锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), wrkMast.getStaNo()); +// return false;//绔欑偣涓嶅瓨鍦� +// } +// //鑾峰彇鐗涚溂鎻愬崌鏈虹珯鐐圭紪鍙�(鐩爣缂栧彿) +// Integer targetSta = Integer.parseInt(targetBasDevp.getQrCodeValue()); +// +// //鑾峰彇鎻愬崌鏈哄懡浠� +// NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftThread.getSlave().getId(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, wrkMast.getWrkNo()); +// +// ArrayList<NyLiftCommand> commands = new ArrayList<>(); +// commands.add(liftCommand); +// +// //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 +// LiftAssignCommand assignCommand = new LiftAssignCommand(); +// assignCommand.setCommands(commands); +// assignCommand.setLiftNo(liftProtocol.getLiftNo()); +// assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); +// assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_TRAY.id.shortValue()); +// +// wrkMast.setWrkSts(24L);//23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑 +// wrkMast.setLiftNo(liftThread.getSlave().getId());//浠诲姟妗g粦瀹氭彁鍗囨満鍙� +// wrkMast.setModiTime(now); +// liftProtocol.setToken(wrkMast.getWrkNo());//鐙崰鎻愬崌鏈轰护鐗� +// if (wrkMastMapper.updateById(wrkMast) > 0) { +// //涓嬪彂浠诲姟 +// MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); +// } +// +// return false; // } +// return true; +// } +// +// /** +// * 鎻愬崌鏈轰换鍔″畬鎴� +// */ +// public synchronized void liftFinished() { +// try { +// for (LiftSlave liftSlave : slaveProperties.getLift()) { +// //鑾峰彇鎻愬崌鏈轰俊鎭� +// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); +// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); +// if (liftProtocol == null) { +// continue; +// } +// +// //鎻愬崌鏈轰负绛夊緟纭涓旂┖闂� +// if (liftProtocol.getProtocolStatus() == LiftProtocolStatusType.WAITING.id +// && liftProtocol.getTaskNo() != 0 +// && !liftProtocol.getBusy() +// ) { +// int taskNo = liftProtocol.getTaskNo().intValue(); +// if (taskNo >= 20000 && taskNo <= 30000) { +// //鎻愬崌鏈鸿澶囧伐浣滃彿锛岄渶瑕佹煡璇㈠搴斾换鍔″彿 +// BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(liftProtocol.getTaskNo().toString(), liftSlave.getId()); +// if (basLiftOpt != null) { +// taskNo = basLiftOpt.getWrkNo(); +// } +// } +// +// //灏嗕换鍔℃。鏍囪涓哄畬鎴� +// WrkMast wrkMast = wrkMastMapper.selectByWorkNo324104(taskNo); +// if (wrkMast != null) { +// switch (wrkMast.getWrkSts().intValue()) { +// case 3://3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴� +// wrkMast.setWrkSts(4L); +// wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� +// if (liftProtocol.getToken().equals(wrkMast.getWrkNo())) { +// //閲婃斁鎻愬崌鏈轰护鐗� +// liftProtocol.setToken(0); +// } +// break; +// case 24://24.鎻愬崌鏈烘惉杩愪腑 ==> 25.鎻愬崌鏈烘惉杩愬畬鎴� +// wrkMast.setWrkSts(25L); +// if (wrkMast.getIoType() == 11) {//搴撲綅绉昏浆 +// wrkMast.setWrkSts(4L);//4.鎻愬崌鏈烘惉杩愬畬鎴� +// } else { +// if (wrkMast.getMk() == null || !wrkMast.getMk().equals("Y")) { +// //涓嶉渶瑕佺敤鍒版満姊拌噦锛岀洿鎺ヨ浆29.鍑哄簱瀹屾垚 +// wrkMast.setWrkSts(29L); +// wrkMast.setShuttleNo(null);//閲婃斁灏忚溅 +// wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� +// wrkMast.setModiTime(new Date()); +// } +// } +// +// if (liftProtocol.getToken().equals(wrkMast.getWrkNo())) { +// //閲婃斁鎻愬崌鏈轰护鐗� +// liftProtocol.setToken(0); +// } +// +// break; +// case 106://106.鎻愬崌鏈烘惉杩愪腑 ==> 107.鎻愬崌鏈烘惉杩愬畬鎴� +// wrkMast.setWrkSts(107L); +// break; +// default: +// } +// +// if (wrkMastMapper.updateById(wrkMast) > 0) { +// //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵�� +// liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); +// //浠诲姟鎸囦护娓呴浂 +// liftProtocol.setAssignCommand(null); +// News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo()); +// } else { +// News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo()); +// } +// } else { +// LiftAssignCommand assignCommand = liftProtocol.getAssignCommand(); +// if (assignCommand != null) { +// if (!assignCommand.getAuto()) { +// //鎵嬪姩鎿嶄綔 +// //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵�� +// liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); +// //浠诲姟鎸囦护娓呴浂 +// liftProtocol.setAssignCommand(null); +// News.info("鎻愬崌鏈哄凡纭鎵嬪姩鎿嶄綔銆傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo()); +// } +// } +// } +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } - //鏌ヨ搴撲綅绉昏浆宸ヤ綔妗� - List<WrkMast> wrkMasts1 = wrkMastMapper.selectLocToLocWrkMast(); - for (WrkMast wrkMast : wrkMasts1) { - if (Utils.getLev(wrkMast.getSourceLocNo()) == Utils.getLev(wrkMast.getLocNo())) { - boolean step1 = this.locToLocExecuteStep1(wrkMast);//鍚屾ゼ灞傚簱浣嶇Щ杞� - if (!step1) { - continue; - } - } else { - //璺ㄦゼ灞傚簱浣嶇Щ杞� - boolean step2 = this.locToLocExecuteStep2(wrkMast);//璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鍑哄簱鍙� - if (!step2) { - continue; - } +// /** +// * 寮傚父淇℃伅璁板綍 +// */ +// public void recErr() { +// try { +// this.recShuttleErr(); +// this.recLiftErr(); +// } catch (Exception e) { +// News.error("recErr fail", e); +// } +// } - boolean step3 = this.locToLocExecuteStep3(wrkMast);//鎻愬崌鏈烘惉杩愯揣鐗� - if (!step3) { - continue; - } - - boolean step4 = this.locToLocExecuteStep4(wrkMast);//璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鐩爣搴撲綅 - if (!step4) { - continue; - } - - } - - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 鍚屾ゼ灞傚簱浣嶇Щ杞� - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - private boolean locToLocExecuteStep1(WrkMast wrkMast) { - if (wrkMast.getWrkSts() == 21) {//21.鐢熸垚鍑哄簱浠诲姟 - if (wrkMast.getShuttleNo() == null) { - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//璋冨害灏忚溅鍒版簮搴撲綅杩涜鍙栬揣 - return false; - } - - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - if (!shuttleProtocol.isIdle()) { - return false; - } - - //鍒ゆ柇灏忚溅鏄惁鍒拌揪婧愬簱浣� - if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { - //灏忚溅涓嶅湪婧愬簱浣嶄綅缃� - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒版簮搴撲綅杩涜鍙栬揣 - return false; - } - - //灏忚溅宸叉姷杈炬簮搴撲綅锛岃繘琛屾惉杩愯揣鐗� - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getLocNo()); - if (result == null) {//璺緞璁$畻澶辫触 - return false; - } - - //鍒涘缓鍒嗛厤鍛戒护 - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.PAK_IN.id.shortValue());//鍏ュ簱妯″紡 - assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - assignCommand.setCommands(result.getCommands());//杩愯鍛戒护 - assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣 - - wrkMast.setWrkSts(5L);//21.鐢熸垚鍑哄簱浠诲姟 => 5.灏忚溅鎼繍涓� - wrkMast.setModiTime(new Date()); - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - - return false; - } - return true; - } - - /** - * 璺ㄦゼ灞傚簱浣嶇Щ杞�-璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鍑哄簱鍙� - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - private boolean locToLocExecuteStep2(WrkMast wrkMast) { - if (wrkMast.getWrkSts() == 21) {//21.鐢熸垚鍑哄簱浠诲姟 - if (wrkMast.getShuttleNo() == null) { - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//璋冨害灏忚溅鍒版簮搴撲綅杩涜鍙栬揣 - return false; - } - - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - if (!shuttleProtocol.isIdle()) { - return false; - } - - //鍒ゆ柇灏忚溅鏄惁鍒拌揪婧愬簱浣� - if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { - //灏忚溅涓嶅湪婧愬簱浣嶄綅缃� - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒版簮搴撲綅杩涜鍙栬揣 - return false; - } - - //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満杈撻�佺珯鐐� - LiftStaProtocol liftSta = shuttleDispatchUtils.getRecentLiftSta(shuttleThread.getSlave().getId(), Utils.getLev(wrkMast.getLocNo())); - if (liftSta == null) { - return false;//娌℃湁鍙敤涓旂┖闂茬殑杈撻�佺珯鐐� - } - //婧愮珯 - Integer sourceStaNo = liftSta.getStaNo(); - //鎻愬崌鏈哄彿*100+鐩爣妤煎眰=鐩爣绔欑偣 - Integer staNo = liftSta.getLiftNo() * 100 + Utils.getLev(wrkMast.getLocNo());//鐩爣绔� - - //灏忚溅宸叉姷杈炬簮搴撲綅锛屽皢璐х墿鎼繍鍒拌緭閫佺珯鐐� - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), liftSta.getLocNo()); - if (result == null) {//璺緞璁$畻澶辫触 - return false; - } - - //鍒涘缓鍒嗛厤鍛戒护 - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.SHUTTLE_LOC_TO_LOC.id.shortValue());//搴撲綅绉昏浆妯″紡 - assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - assignCommand.setCommands(result.getCommands());//杩愯鍛戒护 - assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣 - - wrkMast.setWrkSts(22L);//21.鐢熸垚鍑哄簱浠诲姟 => 22.灏忚溅鎼繍涓� - wrkMast.setSourceStaNo(sourceStaNo);//婧愮珯 - wrkMast.setStaNo(staNo);//鐩爣绔� - wrkMast.setModiTime(new Date()); - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - - return false; - } - return true; - } - - /** - * 璺ㄦゼ灞傚簱浣嶇Щ杞�-鎻愬崌鏈烘惉杩愯揣鐗� - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - private boolean locToLocExecuteStep3(WrkMast wrkMast) { - Date now = new Date(); - if (wrkMast.getWrkSts() == 23) {//23.灏忚溅鎼繍瀹屾垚 - //婧愮珯 - Integer sourceStaNo = wrkMast.getSourceStaNo(); - //鐩爣绔� - Integer staNo = wrkMast.getStaNo(); - if (sourceStaNo == null || staNo == null) { - return false;//婧愮珯鎴栫洰鏍囩珯涓虹┖ - } - - int liftNo = staNo / 100;//鑾峰彇鎻愬崌鏈哄彿 - - //鑾峰彇鎻愬崌鏈虹嚎绋� - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo); - if (liftThread == null) { - return false; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return false; - } - - //鑾峰彇婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐� - LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(liftNo, Utils.getLev(wrkMast.getSourceLocNo())); - if (liftStaProtocol == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - if (!(liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && liftStaProtocol.getHasTray())) { - return false;//绔欑偣蹇呴』鑷姩銆佺┖闂层�佹湁鎵樼洏 - } - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol.getCurrentLocNo().equals(liftStaProtocol.getLocNo())) { - //灏忚溅杩樺湪杈撻�佺珯鐐� - //璋冨害灏忚溅閬胯 - boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkMast.getSourceLocNo()), wrkMast.getShuttleNo(), shuttleThread); - if (!result) { - return false; - } - } - - if (!liftProtocol.isIdle()) { - return false; - } - - //鎼滅储鏄惁鏈夊叾浠栦换鍔″崰鐢ㄤ簡鎻愬崌鏈猴紝濡傛灉鍗犵敤鎻愬崌鏈虹殑浠诲姟鍜屽綋鍓嶄换鍔$浉鍚岋紝鍒欒繍琛屾墽琛� - WrkMast wrkMast1 = wrkMastMapper.selectLiftWrkMast(liftProtocol.getLiftNo().intValue()); - if (wrkMast1 != null && wrkMast1.getWrkNo().intValue() != wrkMast.getWrkNo().intValue()) { - return false; - } - - //鑾峰彇鎻愬崌鏈哄懡浠� - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, sourceStaNo, staNo, wrkMast.getWrkNo()); - - ArrayList<NyLiftCommand> commands = new ArrayList<>(); - commands.add(liftCommand); - - //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 - LiftAssignCommand assignCommand = new LiftAssignCommand(); - assignCommand.setCommands(commands); - assignCommand.setLiftNo(liftProtocol.getLiftNo()); - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); - assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_TRAY.id.shortValue()); - - wrkMast.setWrkSts(24L);//23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑 - wrkMast.setLiftNo(liftThread.getSlave().getId());//浠诲姟妗g粦瀹氭彁鍗囨満鍙� - wrkMast.setShuttleNo(null);//娓呯┖灏忚溅鍙凤紝绛夎揣鐗╂惉杩愬畬鎴愬悗锛屽埌鐩爣妤煎眰閲嶆柊鎼滅储灏忚溅 - wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); - } - return false; - } - return true; - } - - /** - * 璺ㄦゼ灞傚簱浣嶇Щ杞�-璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鐩爣搴撲綅 - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - private boolean locToLocExecuteStep4(WrkMast wrkMast) { - if (wrkMast.getWrkSts() == 4) {//4.鎻愬崌鏈烘惉杩愬畬鎴� - //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐� - LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(wrkMast.getLiftNo(), Utils.getLev(wrkMast.getLocNo())); - if (liftStaProtocol == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - if (!(liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && liftStaProtocol.getHasTray())) { - return false;//绔欑偣蹇呴』鑷姩銆佺┖闂层�佹湁鎵樼洏 - } - - if (wrkMast.getShuttleNo() == null) { - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftStaProtocol.getLocNo());//璋冨害灏忚溅鍒扮洰鏍囪緭閫佺珯鐐硅繘琛屽彇璐� - return false; - } - - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - if (!shuttleProtocol.isIdle()) { - return false; - } - - //鍒ゆ柇灏忚溅鏄惁鍒拌揪鐩爣杈撻�佺珯鐐� - if (!shuttleProtocol.getCurrentLocNo().equals(liftStaProtocol.getLocNo())) { - //灏忚溅涓嶅湪鐩爣杈撻�佺珯鐐� - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftStaProtocol.getLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒扮洰鏍囪緭閫佺珯鐐硅繘琛屽彇璐� - return false; - } - - //灏忚溅宸叉姷杈剧洰鏍囪緭閫佺珯鐐癸紝灏嗚揣鐗╂惉杩愬埌鐩爣搴撲綅 - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), liftStaProtocol.getLocNo(), wrkMast.getLocNo()); - if (result == null) {//璺緞璁$畻澶辫触 - return false; - } - - //鍒涘缓鍒嗛厤鍛戒护 - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.SHUTTLE_LOC_TO_LOC.id.shortValue());//搴撲綅绉昏浆妯″紡 - assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - assignCommand.setCommands(result.getCommands());//杩愯鍛戒护 - assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣 - - wrkMast.setWrkSts(5L);//4.鎻愬崌鏈烘惉杩愬畬鎴� => 5.灏忚溅鎼繍涓� - wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� - wrkMast.setModiTime(new Date()); - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - - return false; - } - return true; - } - - /** - * 寮傚父淇℃伅璁板綍 - */ - public void recErr() { - try { - this.recShuttleErr(); - this.recLiftErr(); - } catch (Exception e) { - News.error("recErr fail", e); - } - } - - /** - * 鍥涘悜绌挎杞﹀紓甯镐俊鎭褰� - */ - private void recShuttleErr() { - Date now = new Date(); - for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) { - // 鑾峰彇鍥涘悜绌挎杞︿俊鎭� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId()); - if (shuttleThread == null) { - continue; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - continue; - } - - if (shuttleProtocol.getTaskNo() != 0) { - //鏈変换鍔� - BasShuttleErrLog latest = basShuttleErrLogService.findLatestByTaskNo(shuttleSlave.getId(), shuttleProtocol.getTaskNo()); - // 鏈夊紓甯� - if (latest == null) { - if (shuttleProtocol.getErrState() != null && shuttleProtocol.getErrState() == 1) { - WrkMast wrkMast = wrkMastMapper.selectById(shuttleProtocol.getTaskNo()); - if (wrkMast == null) { - continue; - } - BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getErrCode()); - String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName(); - BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog( - null, // 缂栧彿 - wrkMast.getWrkNo(), // 宸ヤ綔鍙� - now, // 鍙戠敓鏃堕棿 - null, // 缁撴潫鏃堕棿 - wrkMast.getWrkSts(), // 宸ヤ綔鐘舵�� - wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨� - shuttleSlave.getId(), // 鍥涘悜绌挎杞� - null, // plc - wrkMast.getLocNo(), // 鐩爣搴撲綅 - wrkMast.getStaNo(), // 鐩爣绔� - wrkMast.getSourceStaNo(), // 婧愮珯 - wrkMast.getSourceLocNo(), // 婧愬簱浣� - wrkMast.getBarcode(), // 鏉$爜 - shuttleProtocol.getErrCode(), // 寮傚父鐮� - errName, // 寮傚父 - 1, // 寮傚父鎯呭喌 - now, // 娣诲姞鏃堕棿 - null, // 娣诲姞浜哄憳 - now, // 淇敼鏃堕棿 - null, // 淇敼浜哄憳 - "浠诲姟涓紓甯�", // 澶囨敞 - JSON.toJSONString(shuttleProtocol) // 绯荤粺鐘舵�佹暟鎹� - ); - if (!basShuttleErrLogService.insert(basShuttleErrLog)) { - News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName); - } - } - } else { - // 寮傚父淇 - if (shuttleProtocol.getErrState() == null || shuttleProtocol.getErrState() == 0) { - latest.setEndTime(now); - latest.setUpdateTime(now); - latest.setStatus(2); - if (!basShuttleErrLogService.updateById(latest)) { - News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", shuttleSlave.getId(), latest.getId()); - } - } - } - }else { -// //鏃犱换鍔� -// BasShuttleErrLog latest = basShuttleErrLogService.findLatest(shuttleSlave.getId()); +// /** +// * 鍥涘悜绌挎杞﹀紓甯镐俊鎭褰� +// */ +// private void recShuttleErr() { +// Date now = new Date(); +// for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) { +// // 鑾峰彇鍥涘悜绌挎杞︿俊鎭� +// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId()); +// if (shuttleThread == null) { +// continue; +// } +// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); +// if (shuttleProtocol == null) { +// continue; +// } +// +// if (shuttleProtocol.getTaskNo() != 0) { +// //鏈変换鍔� +// BasShuttleErrLog latest = basShuttleErrLogService.findLatestByTaskNo(shuttleSlave.getId(), shuttleProtocol.getTaskNo()); // // 鏈夊紓甯� -// if (shuttleProtocol.getStatusErrorCode() != null && shuttleProtocol.getStatusErrorCode() > 0) { -// // 璁板綍鏂板紓甯� -// if (latest == null || (latest.getErrCode() != shuttleProtocol.getStatusErrorCode().intValue())) { -// BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getStatusErrorCode().intValue()); +// if (latest == null) { +// if (shuttleProtocol.getErrState() != null && shuttleProtocol.getErrState() == 1) { +// WrkMast wrkMast = wrkMastMapper.selectById(shuttleProtocol.getTaskNo()); +// if (wrkMast == null) { +// continue; +// } +// BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getErrCode()); // String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName(); // BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog( // null, // 缂栧彿 -// null, // 宸ヤ綔鍙� +// wrkMast.getWrkNo(), // 宸ヤ綔鍙� // now, // 鍙戠敓鏃堕棿 // null, // 缁撴潫鏃堕棿 -// null, // 宸ヤ綔鐘舵�� -// null, // 鍏ュ嚭搴撶被鍨� +// wrkMast.getWrkSts(), // 宸ヤ綔鐘舵�� +// wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨� // shuttleSlave.getId(), // 鍥涘悜绌挎杞� // null, // plc -// null, // 鐩爣搴撲綅 -// null, // 鐩爣绔� -// null, // 婧愮珯 -// null, // 婧愬簱浣� -// null, // 鏉$爜 -// (int)shuttleProtocol.getStatusErrorCode(), // 寮傚父鐮� +// wrkMast.getLocNo(), // 鐩爣搴撲綅 +// wrkMast.getStaNo(), // 鐩爣绔� +// wrkMast.getSourceStaNo(), // 婧愮珯 +// wrkMast.getSourceLocNo(), // 婧愬簱浣� +// wrkMast.getBarcode(), // 鏉$爜 +// shuttleProtocol.getErrCode(), // 寮傚父鐮� // errName, // 寮傚父 // 1, // 寮傚父鎯呭喌 // now, // 娣诲姞鏃堕棿 // null, // 娣诲姞浜哄憳 // now, // 淇敼鏃堕棿 // null, // 淇敼浜哄憳 -// "鏃犱换鍔″紓甯�" // 澶囨敞 +// "浠诲姟涓紓甯�", // 澶囨敞 +// JSON.toJSONString(shuttleProtocol) // 绯荤粺鐘舵�佹暟鎹� // ); // if (!basShuttleErrLogService.insert(basShuttleErrLog)) { // News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName); // } // } -// // 鏃犲紓甯� // } else { // // 寮傚父淇 -// if (latest != null && latest.getStatus() == 1) { +// if (shuttleProtocol.getErrState() == null || shuttleProtocol.getErrState() == 0) { // latest.setEndTime(now); // latest.setUpdateTime(now); // latest.setStatus(2); @@ -2141,195 +1426,243 @@ // } // } // } - } - } - } - - /** - * 鎻愬崌鏈哄紓甯镐俊鎭褰� - */ - private void recLiftErr() { - Date now = new Date(); - for (LiftSlave liftSlave : slaveProperties.getLift()) { - // 鑾峰彇鎻愬崌鏈轰俊鎭� - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); - if (liftThread == null) { - continue; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - continue; - } - - if (liftProtocol.getTaskNo() != 0) { - //鏈変换鍔� - BasLiftErrLog latest = basLiftErrLogService.findLatestByTaskNo(liftSlave.getId(), liftProtocol.getTaskNo().intValue()); - // 鏈夊紓甯� - if (latest == null) { - if (liftProtocol.getDeviceError() != null && liftProtocol.getDeviceError()) { - WrkMast wrkMast = wrkMastMapper.selectById(liftProtocol.getTaskNo()); - if (wrkMast == null) { - continue; - } - - String errName = ""; - if (liftProtocol.getFrontOverrun()) { - errName = "鍓嶈秴闄�"; - } else if (liftProtocol.getBackOverrun()) { - errName = "鍚庤秴闄�"; - } else if (liftProtocol.getLeftOverrun()) { - errName = "宸﹁秴闄�"; - } else if (liftProtocol.getRightOverrun()) { - errName = "鍙宠秴闄�"; - } else if (liftProtocol.getOverHeight()) { - errName = "瓒呴珮"; - } else if (liftProtocol.getOverWeight()) { - errName = "瓒呴噸"; - } - - BasLiftErrLog basLiftErrLog = new BasLiftErrLog( - null, // 缂栧彿 - wrkMast.getWrkNo(), // 宸ヤ綔鍙� - now, // 鍙戠敓鏃堕棿 - null, // 缁撴潫鏃堕棿 - wrkMast.getWrkSts(), // 宸ヤ綔鐘舵�� - wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨� - liftSlave.getId(), // 鎻愬崌鏈� - null, // plc - wrkMast.getLocNo(), // 鐩爣搴撲綅 - wrkMast.getStaNo(), // 鐩爣绔� - wrkMast.getSourceStaNo(), // 婧愮珯 - wrkMast.getSourceLocNo(), // 婧愬簱浣� - wrkMast.getBarcode(), // 鏉$爜 - null, // 寮傚父鐮� - errName, // 寮傚父 - 1, // 寮傚父鎯呭喌 - now, // 娣诲姞鏃堕棿 - null, // 娣诲姞浜哄憳 - now, // 淇敼鏃堕棿 - null, // 淇敼浜哄憳 - "浠诲姟涓紓甯�", // 澶囨敞 - JSON.toJSONString(liftProtocol) // 绯荤粺鐘舵�佹暟鎹� - ); - if (!basLiftErrLogService.insert(basLiftErrLog)) { - News.error("鎻愬崌鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", liftSlave.getId(), errName); - } - } - } else { - // 寮傚父淇 - if (liftProtocol.getDeviceError() == null || !liftProtocol.getDeviceError()) { - latest.setEndTime(now); - latest.setUpdateTime(now); - latest.setStatus(2); - if (!basLiftErrLogService.updateById(latest)) { - News.error("鎻愬崌鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", liftSlave.getId(), latest.getId()); - } - } - } - } - } - } +// }else { +//// //鏃犱换鍔� +//// BasShuttleErrLog latest = basShuttleErrLogService.findLatest(shuttleSlave.getId()); +//// // 鏈夊紓甯� +//// if (shuttleProtocol.getStatusErrorCode() != null && shuttleProtocol.getStatusErrorCode() > 0) { +//// // 璁板綍鏂板紓甯� +//// if (latest == null || (latest.getErrCode() != shuttleProtocol.getStatusErrorCode().intValue())) { +//// BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getStatusErrorCode().intValue()); +//// String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName(); +//// BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog( +//// null, // 缂栧彿 +//// null, // 宸ヤ綔鍙� +//// now, // 鍙戠敓鏃堕棿 +//// null, // 缁撴潫鏃堕棿 +//// null, // 宸ヤ綔鐘舵�� +//// null, // 鍏ュ嚭搴撶被鍨� +//// shuttleSlave.getId(), // 鍥涘悜绌挎杞� +//// null, // plc +//// null, // 鐩爣搴撲綅 +//// null, // 鐩爣绔� +//// null, // 婧愮珯 +//// null, // 婧愬簱浣� +//// null, // 鏉$爜 +//// (int)shuttleProtocol.getStatusErrorCode(), // 寮傚父鐮� +//// errName, // 寮傚父 +//// 1, // 寮傚父鎯呭喌 +//// now, // 娣诲姞鏃堕棿 +//// null, // 娣诲姞浜哄憳 +//// now, // 淇敼鏃堕棿 +//// null, // 淇敼浜哄憳 +//// "鏃犱换鍔″紓甯�" // 澶囨敞 +//// ); +//// if (!basShuttleErrLogService.insert(basShuttleErrLog)) { +//// News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName); +//// } +//// } +//// // 鏃犲紓甯� +//// } else { +//// // 寮傚父淇 +//// if (latest != null && latest.getStatus() == 1) { +//// latest.setEndTime(now); +//// latest.setUpdateTime(now); +//// latest.setStatus(2); +//// if (!basShuttleErrLogService.updateById(latest)) { +//// News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", shuttleSlave.getId(), latest.getId()); +//// } +//// } +//// } +// } +// } +// } +// +// /** +// * 鎻愬崌鏈哄紓甯镐俊鎭褰� +// */ +// private void recLiftErr() { +// Date now = new Date(); +// for (LiftSlave liftSlave : slaveProperties.getLift()) { +// // 鑾峰彇鎻愬崌鏈轰俊鎭� +// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); +// if (liftThread == null) { +// continue; +// } +// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); +// if (liftProtocol == null) { +// continue; +// } +// +// if (liftProtocol.getTaskNo() != 0) { +// //鏈変换鍔� +// BasLiftErrLog latest = basLiftErrLogService.findLatestByTaskNo(liftSlave.getId(), liftProtocol.getTaskNo().intValue()); +// // 鏈夊紓甯� +// if (latest == null) { +// if (liftProtocol.getDeviceError() != null && liftProtocol.getDeviceError()) { +// WrkMast wrkMast = wrkMastMapper.selectById(liftProtocol.getTaskNo()); +// if (wrkMast == null) { +// continue; +// } +// +// String errName = ""; +// if (liftProtocol.getFrontOverrun()) { +// errName = "鍓嶈秴闄�"; +// } else if (liftProtocol.getBackOverrun()) { +// errName = "鍚庤秴闄�"; +// } else if (liftProtocol.getLeftOverrun()) { +// errName = "宸﹁秴闄�"; +// } else if (liftProtocol.getRightOverrun()) { +// errName = "鍙宠秴闄�"; +// } else if (liftProtocol.getOverHeight()) { +// errName = "瓒呴珮"; +// } else if (liftProtocol.getOverWeight()) { +// errName = "瓒呴噸"; +// } +// +// BasLiftErrLog basLiftErrLog = new BasLiftErrLog( +// null, // 缂栧彿 +// wrkMast.getWrkNo(), // 宸ヤ綔鍙� +// now, // 鍙戠敓鏃堕棿 +// null, // 缁撴潫鏃堕棿 +// wrkMast.getWrkSts(), // 宸ヤ綔鐘舵�� +// wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨� +// liftSlave.getId(), // 鎻愬崌鏈� +// null, // plc +// wrkMast.getLocNo(), // 鐩爣搴撲綅 +// wrkMast.getStaNo(), // 鐩爣绔� +// wrkMast.getSourceStaNo(), // 婧愮珯 +// wrkMast.getSourceLocNo(), // 婧愬簱浣� +// wrkMast.getBarcode(), // 鏉$爜 +// null, // 寮傚父鐮� +// errName, // 寮傚父 +// 1, // 寮傚父鎯呭喌 +// now, // 娣诲姞鏃堕棿 +// null, // 娣诲姞浜哄憳 +// now, // 淇敼鏃堕棿 +// null, // 淇敼浜哄憳 +// "浠诲姟涓紓甯�", // 澶囨敞 +// JSON.toJSONString(liftProtocol) // 绯荤粺鐘舵�佹暟鎹� +// ); +// if (!basLiftErrLogService.insert(basLiftErrLog)) { +// News.error("鎻愬崌鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", liftSlave.getId(), errName); +// } +// } +// } else { +// // 寮傚父淇 +// if (liftProtocol.getDeviceError() == null || !liftProtocol.getDeviceError()) { +// latest.setEndTime(now); +// latest.setUpdateTime(now); +// latest.setStatus(2); +// if (!basLiftErrLogService.updateById(latest)) { +// News.error("鎻愬崌鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", liftSlave.getId(), latest.getId()); +// } +// } +// } +// } +// } +// } // ------------------------------------------------------------------------------- - /** - * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐� - */ - public void storeEmptyPlt(){ - try { - for (DevpSlave devp : slaveProperties.getDevp()) { - // 閬嶅巻绌烘澘鍏ュ簱鍙� - for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) { - // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭� - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); - StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo()); - if (staProtocol == null) { - continue; - } else { - staProtocol = staProtocol.clone(); - } - // 绔欑偣鏉′欢鍒ゆ柇 - if (staProtocol.isAutoing() - && staProtocol.isLoading() - && staProtocol.isInEnable() - && staProtocol.isEmptyMk() - && (staProtocol.getWorkNo() == 0 || (staProtocol.getWorkNo() >= 9990 || staProtocol.getWorkNo() <= 9999)) - && staProtocol.isPakMk()) { - - // 鑾峰彇鏉$爜鎵弿浠俊鎭� - String barcode = null; - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, emptyInSta.getBarcode()); - if (barcodeThread != null) { - String barcode0 = barcodeThread.getBarcode(); - if (!Cools.isEmpty(barcode0)) { -// News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", emptyInSta.getBarcode(), barcode0); - if (!"NG".endsWith(barcode0) && !"NoRead".equals(barcode0) && !"empty".equals(barcode0)) { - barcode = barcode0; - } - } - } - - if (!Cools.isEmpty(barcode)) { - WrkMast wrkMast = wrkMastMapper.selectByBarcode(barcode);//鏉$爜瀛樺湪宸ヤ綔妗� - if (wrkMast != null) { - continue; - } - } - - LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, emptyInSta.getLed()); - - try { - LocTypeDto locTypeDto = new LocTypeDto(staProtocol); - - SearchLocParam param = new SearchLocParam(); - param.setIoType(10); - if (!Cools.isEmpty(barcode)) { - param.setBarcode(barcode); - } - param.setSourceStaNo(emptyInSta.getStaNo()); -// param.setLocType1(locTypeDto.getLocType1()); - String response = new HttpHandler.Builder() - .setUri(wmsUrl) - .setPath("/rpc/pakin/loc/v2") - .setJson(JSON.toJSONString(param)) - .build() - .doPost(); - JSONObject jsonObject = JSON.parseObject(response); - Integer code = jsonObject.getInteger("code"); - if (code.equals(200)) { - StartupDto dto = jsonObject.getObject("data", StartupDto.class); - barcodeThread.setBarcode(""); -// // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 -// staProtocol.setWorkNo(dto.getWorkNo().shortValue()); -// staProtocol.setStaNo(dto.getStaNo().shortValue()); -// devpThread.setPakMk(staProtocol.getSiteId(), false); -// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); -// if (!result) { -// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); +// /** +// * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐� +// */ +// public void storeEmptyPlt(){ +// try { +// for (DevpSlave devp : slaveProperties.getDevp()) { +// // 閬嶅巻绌烘澘鍏ュ簱鍙� +// for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) { +// // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭� +// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); +// StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo()); +// if (staProtocol == null) { +// continue; +// } else { +// staProtocol = staProtocol.clone(); +// } +// // 绔欑偣鏉′欢鍒ゆ柇 +// if (staProtocol.isAutoing() +// && staProtocol.isLoading() +// && staProtocol.isInEnable() +// && staProtocol.isEmptyMk() +// && (staProtocol.getWorkNo() == 0 || (staProtocol.getWorkNo() >= 9990 || staProtocol.getWorkNo() <= 9999)) +// && staProtocol.isPakMk()) { +// +// // 鑾峰彇鏉$爜鎵弿浠俊鎭� +// String barcode = null; +// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, emptyInSta.getBarcode()); +// if (barcodeThread != null) { +// String barcode0 = barcodeThread.getBarcode(); +// if (!Cools.isEmpty(barcode0)) { +//// News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", emptyInSta.getBarcode(), barcode0); +// if (!"NG".endsWith(barcode0) && !"NoRead".equals(barcode0) && !"empty".equals(barcode0)) { +// barcode = barcode0; +// } // } - } else { - if (ledThread != null) { - String errorMsg = jsonObject.getString("msg"); - if (!Cools.isEmpty(errorMsg)) { - MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, errorMsg)); - } - } - News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); - } - } catch (Exception e) { - e.printStackTrace(); - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } - - } - - - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } +// } +// +// if (!Cools.isEmpty(barcode)) { +// WrkMast wrkMast = wrkMastMapper.selectByBarcode(barcode);//鏉$爜瀛樺湪宸ヤ綔妗� +// if (wrkMast != null) { +// continue; +// } +// } +// +// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, emptyInSta.getLed()); +// +// try { +// LocTypeDto locTypeDto = new LocTypeDto(staProtocol); +// +// SearchLocParam param = new SearchLocParam(); +// param.setIoType(10); +// if (!Cools.isEmpty(barcode)) { +// param.setBarcode(barcode); +// } +// param.setSourceStaNo(emptyInSta.getStaNo()); +//// param.setLocType1(locTypeDto.getLocType1()); +// String response = new HttpHandler.Builder() +// .setUri(wmsUrl) +// .setPath("/rpc/pakin/loc/v2") +// .setJson(JSON.toJSONString(param)) +// .build() +// .doPost(); +// JSONObject jsonObject = JSON.parseObject(response); +// Integer code = jsonObject.getInteger("code"); +// if (code.equals(200)) { +// StartupDto dto = jsonObject.getObject("data", StartupDto.class); +// barcodeThread.setBarcode(""); +//// // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 +//// staProtocol.setWorkNo(dto.getWorkNo().shortValue()); +//// staProtocol.setStaNo(dto.getStaNo().shortValue()); +//// devpThread.setPakMk(staProtocol.getSiteId(), false); +//// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +//// if (!result) { +//// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); +//// } +// } else { +// if (ledThread != null) { +// String errorMsg = jsonObject.getString("msg"); +// if (!Cools.isEmpty(errorMsg)) { +// MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, errorMsg)); +// } +// } +// News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// } +// +// } +// +// +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } /** * 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣� @@ -2531,220 +1864,220 @@ // } } - /** - * 鍥涘悜绌挎杞︾數閲忔娴� ===>> 鍙戣捣鍏呯數 - */ - public synchronized void loopShuttleCharge() { - try { - for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - continue; - } - - //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹� - if (!shuttleProtocol.isRequireCharge()) { - continue; - } - - WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttleProtocol.getShuttleNo().intValue()); - if (wrkCharge != null) {//宸叉湁鍏呯數浠诲姟 - continue; - } - - //灏忚溅鎵�鍦ㄦゼ灞� - int lev = Utils.getLev(shuttleProtocol.getCurrentLocNo()); - ShuttleChargeType shuttleCharge = null; - - //鎼滅储灏忚溅鎵�鍦ㄦゼ灞傛湁娌℃湁鍏呯數妗� - for (ShuttleChargeType chargeType : ShuttleChargeType.values()) { - if (lev != Utils.getLev(chargeType.locNo)) { - continue;//灏忚溅鍜屽厖鐢垫々涓嶅湪鍚屼竴灞� - } - - //灏忚溅鍜屽厖鐢垫々鍦ㄥ悓涓�灞� - if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) { - shuttleCharge = chargeType; - break; - } - } - - if (shuttleCharge == null) { - //鍚屾ゼ灞傛病鏈夋壘鍒板厖鐢垫々锛屾壘鍙敤鍏呯數妗� - //灏忚溅鍚屾ゼ灞傛病鏈夊厖鐢垫々锛屽彧瑕佸厖鐢垫々鍙敤灏辩敓鎴愬厖鐢典换鍔� - for (ShuttleChargeType chargeType : ShuttleChargeType.values()) { - if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) { - //鍒ゆ柇褰撳墠鍏呯數妗╂ゼ灞傛槸鍚︽湁灏忚溅锛屽鏈夊皬杞︼紝涓嶅垎閰嶈鍏呯數妗� - int chargeLev = Utils.getLev(chargeType.locNo);//鍏呯數妗╂ゼ灞� - boolean checkLevHasShuttle = Utils.checkLevHasShuttle(chargeLev);//妫�娴嬫ゼ灞傛槸鍚︽湁绌挎杞� - if (checkLevHasShuttle) { - //褰撳墠鍏呯數妗╂ゼ灞傛湁绌挎杞︼紝涓嶅垎閰嶈鍏呯數妗� - continue; - } - - shuttleCharge = chargeType; - break; - } - } - } - - if (shuttleCharge == null) { - continue; - } - - String chargeLocNo = shuttleCharge.locNo; - wrkCharge = new WrkCharge(); - wrkCharge.setShuttleNo(shuttle.getId()); - wrkCharge.setCharge(shuttleCharge.id); - wrkCharge.setWrkNo(commonService.getChargeWorkNo(4)); - wrkCharge.setWrkSts(51L); // 51.鍑嗗鍏呯數 - wrkCharge.setIoPri((double) 10); - wrkCharge.setLocNo(chargeLocNo); - wrkCharge.setMemo("charge"); - wrkCharge.setAppeTime(new Date()); - if (!wrkChargeService.insert(wrkCharge)) { - News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId()); - continue; - } - - News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", shuttle.getId()); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 鎵ц鍥涘悜绌挎杞﹀厖鐢典换鍔� - */ - public synchronized void executeShuttleCharge() { - try { - for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { - WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttle.getId()); - if (wrkCharge == null) { - continue; - } - - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkCharge.getShuttleNo()); - if (shuttleThread == null) { - continue; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - continue; - } - - if (wrkCharge.getWrkSts() == 51) { - if (!shuttleProtocol.isIdleNoCharge()) { - continue; - } - - if (shuttleProtocol.getSuspendState() == 1) { - continue;//绠″埗涓� - } - - if (!shuttleProtocol.getCurrentLocNo().equals(wrkCharge.getLocNo())) { - //灏忚溅涓嶅湪鍏呯數妗╀綅缃� - shuttleDispatchUtils.dispatchShuttle(wrkCharge.getWrkNo(), wrkCharge.getLocNo(), shuttle.getId());//璋冨害灏忚溅鍘诲厖鐢垫々 - continue; - } - - //灏忚溅宸茬粡鍦ㄥ厖鐢垫々浣嶇疆锛屼笅鍙戝厖鐢靛懡浠� - NyShuttleHttpCommand chargeCommand = NyHttpUtils.getChargeCommand(shuttle.getId(), wrkCharge.getWrkNo(), true); - ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); - commands.add(chargeCommand); - //鍒涘缓鍒嗛厤鍛戒护 - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 - assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id.shortValue());//鍑哄簱妯″紡 - assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - assignCommand.setCommands(commands);//杩愯鍛戒护 - - wrkCharge.setWrkSts(52L);//51.鐢熸垚鍏呯數浠诲姟 => 52.灏忚溅鍘诲厖鐢典腑 - wrkCharge.setModiTime(new Date()); - if (wrkChargeMapper.updateById(wrkCharge) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - } else if (wrkCharge.getWrkSts() == 52) { - //妫�娴嬪皬杞︽槸鍚︽弧鐢� - - //鑾峰彇婊$數闃堝�� - int maxPower = 95; - EntityWrapper<Config> wrapper = new EntityWrapper<>(); - wrapper.eq("code", "chargeMaxValue"); - Config config = configService.selectOne(wrapper); - if (config != null) { - maxPower = Integer.parseInt(config.getValue()); - } - - if (shuttleProtocol.getPowerPercent() < maxPower) { - continue; - } - - //***************鍒ゆ柇鏄惁婊″厖鏍″噯*************** - EntityWrapper<Config> wrapper1 = new EntityWrapper<>(); - wrapper.eq("code", "shuttleMaxPowerVerify"); - Config config1 = configService.selectOne(wrapper1); - if (config1 != null) { - if (config1.getValue().equals("true")) { - if (shuttleProtocol.getVoltage() < 5630) { - continue;//鐢靛帇涓嶅缁х画鍏呯數 - } - } - } - //***************鍒ゆ柇鏄惁婊″厖鏍″噯*************** - - //灏忚溅婊$數锛岀粨鏉熷厖鐢典换鍔� - NyShuttleHttpCommand chargeCommand = NyHttpUtils.getChargeCommand(shuttle.getId(), wrkCharge.getWrkNo(), false); - ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); - commands.add(chargeCommand); - //鍒涘缓鍒嗛厤鍛戒护 - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 - assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id.shortValue());//鍑哄簱妯″紡 - assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - assignCommand.setCommands(commands);//杩愯鍛戒护 - - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - try { - Thread.sleep(3000); - } catch (Exception e) { - e.printStackTrace(); - } - - wrkCharge.setWrkSts(53L);//52.灏忚溅鍘诲厖鐢典腑 => 53.灏忚溅鍏呯數瀹屾垚 - wrkCharge.setModiTime(new Date()); - if (wrkChargeMapper.updateById(wrkCharge) > 0) { - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE.id); - shuttleProtocol.setTaskNo(0); - shuttleProtocol.setPakMk(false); - } - } else if (wrkCharge.getWrkSts() == 53) { - if (shuttleProtocol.getChargState() == 0) {//灏忚溅澶勪簬鏈厖鐢电姸鎬� - boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkCharge.getLocNo()), shuttleThread.getSlave().getId(), shuttleThread); - if (!result) { - continue; - } - - wrkCharge.setWrkSts(60L);//53.灏忚溅鍏呯數瀹屾垚 => 60.鍏呯數浠诲姟瀹屾垚 - wrkCharge.setModiTime(new Date()); - if (wrkChargeMapper.updateById(wrkCharge) > 0) { - - } - } - } - - } - } catch (Exception e) { - e.printStackTrace(); - } - } +// /** +// * 鍥涘悜绌挎杞︾數閲忔娴� ===>> 鍙戣捣鍏呯數 +// */ +// public synchronized void loopShuttleCharge() { +// try { +// for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { +// //鑾峰彇鍥涘悜绌挎杞︾嚎绋� +// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); +// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); +// if (shuttleProtocol == null) { +// continue; +// } +// +// //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹� +// if (!shuttleProtocol.isRequireCharge()) { +// continue; +// } +// +// WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttleProtocol.getShuttleNo().intValue()); +// if (wrkCharge != null) {//宸叉湁鍏呯數浠诲姟 +// continue; +// } +// +// //灏忚溅鎵�鍦ㄦゼ灞� +// int lev = Utils.getLev(shuttleProtocol.getCurrentLocNo()); +// ShuttleChargeType shuttleCharge = null; +// +// //鎼滅储灏忚溅鎵�鍦ㄦゼ灞傛湁娌℃湁鍏呯數妗� +// for (ShuttleChargeType chargeType : ShuttleChargeType.values()) { +// if (lev != Utils.getLev(chargeType.locNo)) { +// continue;//灏忚溅鍜屽厖鐢垫々涓嶅湪鍚屼竴灞� +// } +// +// //灏忚溅鍜屽厖鐢垫々鍦ㄥ悓涓�灞� +// if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) { +// shuttleCharge = chargeType; +// break; +// } +// } +// +// if (shuttleCharge == null) { +// //鍚屾ゼ灞傛病鏈夋壘鍒板厖鐢垫々锛屾壘鍙敤鍏呯數妗� +// //灏忚溅鍚屾ゼ灞傛病鏈夊厖鐢垫々锛屽彧瑕佸厖鐢垫々鍙敤灏辩敓鎴愬厖鐢典换鍔� +// for (ShuttleChargeType chargeType : ShuttleChargeType.values()) { +// if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) { +// //鍒ゆ柇褰撳墠鍏呯數妗╂ゼ灞傛槸鍚︽湁灏忚溅锛屽鏈夊皬杞︼紝涓嶅垎閰嶈鍏呯數妗� +// int chargeLev = Utils.getLev(chargeType.locNo);//鍏呯數妗╂ゼ灞� +// boolean checkLevHasShuttle = Utils.checkLevHasShuttle(chargeLev);//妫�娴嬫ゼ灞傛槸鍚︽湁绌挎杞� +// if (checkLevHasShuttle) { +// //褰撳墠鍏呯數妗╂ゼ灞傛湁绌挎杞︼紝涓嶅垎閰嶈鍏呯數妗� +// continue; +// } +// +// shuttleCharge = chargeType; +// break; +// } +// } +// } +// +// if (shuttleCharge == null) { +// continue; +// } +// +// String chargeLocNo = shuttleCharge.locNo; +// wrkCharge = new WrkCharge(); +// wrkCharge.setShuttleNo(shuttle.getId()); +// wrkCharge.setCharge(shuttleCharge.id); +// wrkCharge.setWrkNo(commonService.getChargeWorkNo(4)); +// wrkCharge.setWrkSts(51L); // 51.鍑嗗鍏呯數 +// wrkCharge.setIoPri((double) 10); +// wrkCharge.setLocNo(chargeLocNo); +// wrkCharge.setMemo("charge"); +// wrkCharge.setAppeTime(new Date()); +// if (!wrkChargeService.insert(wrkCharge)) { +// News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId()); +// continue; +// } +// +// News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", shuttle.getId()); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// /** +// * 鎵ц鍥涘悜绌挎杞﹀厖鐢典换鍔� +// */ +// public synchronized void executeShuttleCharge() { +// try { +// for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { +// WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttle.getId()); +// if (wrkCharge == null) { +// continue; +// } +// +// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkCharge.getShuttleNo()); +// if (shuttleThread == null) { +// continue; +// } +// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); +// if (shuttleProtocol == null) { +// continue; +// } +// +// if (wrkCharge.getWrkSts() == 51) { +// if (!shuttleProtocol.isIdleNoCharge()) { +// continue; +// } +// +// if (shuttleProtocol.getSuspendState() == 1) { +// continue;//绠″埗涓� +// } +// +// if (!shuttleProtocol.getCurrentLocNo().equals(wrkCharge.getLocNo())) { +// //灏忚溅涓嶅湪鍏呯數妗╀綅缃� +// shuttleDispatchUtils.dispatchShuttle(wrkCharge.getWrkNo(), wrkCharge.getLocNo(), shuttle.getId());//璋冨害灏忚溅鍘诲厖鐢垫々 +// continue; +// } +// +// //灏忚溅宸茬粡鍦ㄥ厖鐢垫々浣嶇疆锛屼笅鍙戝厖鐢靛懡浠� +// NyShuttleHttpCommand chargeCommand = NyHttpUtils.getChargeCommand(shuttle.getId(), wrkCharge.getWrkNo(), true); +// ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); +// commands.add(chargeCommand); +// //鍒涘缓鍒嗛厤鍛戒护 +// ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); +// assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 +// assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());//浠诲姟鍙� +// assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id.shortValue());//鍑哄簱妯″紡 +// assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) +// assignCommand.setCommands(commands);//杩愯鍛戒护 +// +// wrkCharge.setWrkSts(52L);//51.鐢熸垚鍏呯數浠诲姟 => 52.灏忚溅鍘诲厖鐢典腑 +// wrkCharge.setModiTime(new Date()); +// if (wrkChargeMapper.updateById(wrkCharge) > 0) { +// //涓嬪彂浠诲姟 +// MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); +// } +// } else if (wrkCharge.getWrkSts() == 52) { +// //妫�娴嬪皬杞︽槸鍚︽弧鐢� +// +// //鑾峰彇婊$數闃堝�� +// int maxPower = 95; +// EntityWrapper<Config> wrapper = new EntityWrapper<>(); +// wrapper.eq("code", "chargeMaxValue"); +// Config config = configService.selectOne(wrapper); +// if (config != null) { +// maxPower = Integer.parseInt(config.getValue()); +// } +// +// if (shuttleProtocol.getPowerPercent() < maxPower) { +// continue; +// } +// +// //***************鍒ゆ柇鏄惁婊″厖鏍″噯*************** +// EntityWrapper<Config> wrapper1 = new EntityWrapper<>(); +// wrapper.eq("code", "shuttleMaxPowerVerify"); +// Config config1 = configService.selectOne(wrapper1); +// if (config1 != null) { +// if (config1.getValue().equals("true")) { +// if (shuttleProtocol.getVoltage() < 5630) { +// continue;//鐢靛帇涓嶅缁х画鍏呯數 +// } +// } +// } +// //***************鍒ゆ柇鏄惁婊″厖鏍″噯*************** +// +// //灏忚溅婊$數锛岀粨鏉熷厖鐢典换鍔� +// NyShuttleHttpCommand chargeCommand = NyHttpUtils.getChargeCommand(shuttle.getId(), wrkCharge.getWrkNo(), false); +// ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); +// commands.add(chargeCommand); +// //鍒涘缓鍒嗛厤鍛戒护 +// ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); +// assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 +// assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());//浠诲姟鍙� +// assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id.shortValue());//鍑哄簱妯″紡 +// assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) +// assignCommand.setCommands(commands);//杩愯鍛戒护 +// +// //涓嬪彂浠诲姟 +// MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); +// try { +// Thread.sleep(3000); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// wrkCharge.setWrkSts(53L);//52.灏忚溅鍘诲厖鐢典腑 => 53.灏忚溅鍏呯數瀹屾垚 +// wrkCharge.setModiTime(new Date()); +// if (wrkChargeMapper.updateById(wrkCharge) > 0) { +// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE.id); +// shuttleProtocol.setTaskNo(0); +// shuttleProtocol.setPakMk(false); +// } +// } else if (wrkCharge.getWrkSts() == 53) { +// if (shuttleProtocol.getChargState() == 0) {//灏忚溅澶勪簬鏈厖鐢电姸鎬� +// boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkCharge.getLocNo()), shuttleThread.getSlave().getId(), shuttleThread); +// if (!result) { +// continue; +// } +// +// wrkCharge.setWrkSts(60L);//53.灏忚溅鍏呯數瀹屾垚 => 60.鍏呯數浠诲姟瀹屾垚 +// wrkCharge.setModiTime(new Date()); +// if (wrkChargeMapper.updateById(wrkCharge) > 0) { +// +// } +// } +// } +// +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } /** * 鎵ц灏忚溅绉诲簱浠诲姟 @@ -2752,25 +2085,15 @@ public synchronized void shuttleMoveExecute() { try { //鏌ヨ灏忚溅绉诲簱浠诲姟 - List<WrkMast> wrkMasts = wrkMastMapper.selectShuttleMoveWrk(); + List<WrkMast> wrkMasts = wrkMastService.selectShuttleMoveWrk(); for (WrkMast wrkMast : wrkMasts) { boolean stepMoveSta = this.shuttleMoveExecuteStepMoveSta(wrkMast);//灏忚溅绉诲姩鍒扮珯鐐� if (!stepMoveSta) { continue; } - boolean stepIntoLift = this.shuttleMoveExecuteStepIntoLift(wrkMast);//灏忚溅杩佸叆鎻愬崌鏈� - if (!stepIntoLift) { - continue; - } - boolean stepLiftMove = this.shuttleMoveExecuteStepLiftMove(wrkMast);//鎻愬崌鏈烘惉杩愪腑 if (!stepLiftMove) { - continue; - } - - boolean stepOutLift = this.shuttleMoveExecuteStepOutLift(wrkMast);//灏忚溅杩佸嚭鎻愬崌鏈� - if (!stepOutLift) { continue; } @@ -2794,284 +2117,92 @@ //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------// Date now = new Date(); - //灏忚溅绉诲姩鑷崇珯鐐� 101.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 102.灏忚溅绉诲姩鑷崇珯鐐逛腑 - if (wrkMast.getWrkSts() == 101) { + //灏忚溅绉诲姩鑷崇珯鐐� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐逛腑 + if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) { //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); if (shuttleThread == null) { return false; } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { return false; } //灏忚溅澶勪簬绌洪棽鐘舵�� - if (!shuttleProtocol.isIdleNoCharge(wrkMast.getWrkNo())) { + if (!shuttleThread.isIdle()) { News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; } - //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻 - if (shuttleProtocol.getToken() != 0) { - News.info("{}浠诲姟锛寋}灏忚溅锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 - } - - if (Utils.getLev(wrkMast.getLocNo()) == shuttleProtocol.getPoint().getZ()) { + if (Utils.getLev(wrkMast.getLocNo()) == Utils.getLev(shuttleProtocol.getCurrentLocNo())) { //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庡悓涓�妤煎眰锛屼笉闇�瑕侀�氳繃鎻愬崌鏈鸿皟搴� - wrkMast.setWrkSts(109L);// 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 110.灏忚溅绉诲姩涓� + wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts);// 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓� wrkMast.setModiTime(now); - shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰璇ュ皬杞︿护鐗� - if (wrkMastMapper.updateById(wrkMast) > 0) { + if (wrkMastService.updateById(wrkMast)) { //涓嬪彂浠诲姟 - return true;//鐩存帴杩涘叆109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 110.灏忚溅绉诲姩涓� + return true;//鐩存帴杩涘叆309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓� } return false; } //鑾峰彇婧愯緭閫佺珯 - LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); + ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); if (liftSta == null) { return false;//鎵句笉鍒扮珯鐐� } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満) - WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftSta.getLiftNo()); + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftSta.getLiftNo()); if (liftWrkMast != null) { News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getLiftNo()); return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� } + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� + assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟 + assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� + assignCommand.setAuto(true);//鑷姩妯″紡 + + //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠� + List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); + if (commands == null) { + News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); + return false;//璺緞瑙i攣澶辫触 + } + + assignCommand.setCommands(commands); + //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�*************** - List<NavigateNode> targetNodes = NyLiftUtils.getLiftStaNodes(wrkMast.getStaNo()); + List<NavigateNode> targetNodes = ForkLiftUtils.getLiftStaNodes(wrkMast.getStaNo()); if (targetNodes == null) { return false;//鏈幏鍙栧埌鑺傜偣 } - boolean checkPathIsAvailable = NavigateUtils.checkPathIsAvailable(targetNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(wrkMast.getLocNo()), null); + boolean checkPathIsAvailable = navigateUtils.checkPathIsAvailable(targetNodes, shuttleProtocol.getShuttleNo(), Utils.getLev(wrkMast.getLocNo())); if (!checkPathIsAvailable) { News.info("{}浠诲姟锛寋}灏忚溅锛岀洰鏍囩珯鐐硅矾寰勮鍗犵敤锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false;//妫�娴嬬洰鏍囩珯鐐硅矾寰勬槸鍚︽湭琚崰鐢� } //灏濊瘯閿佸畾鐩爣绔欒矾寰� - boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo().intValue(), targetNodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� + boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo(), targetNodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� if (!result2) { News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勯攣瀹氬け璐ワ紝绂佹娲惧彂", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false;//璺緞閿佸畾澶辫触 } //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�*************** - //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠� - NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.NORMAL.id); - if (result == null) { - //璺緞鑾峰彇澶辫触锛岄渶瑕佽В閿佷笂闈㈤攣瀹氱殑璺緞 - //灏濊瘯瑙i攣鐩爣绔欒矾寰� - boolean result3 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo().intValue(), targetNodes, false);//鎵�浣跨敤鐨勮矾寰勮繘琛岃В閿� - if (!result3) { - News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮В閿佸け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false;//璺緞瑙i攣澶辫触 - } - News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false;//璺緞瑙i攣澶辫触 - } - List<NyShuttleHttpCommand> commands = result.getCommands(); - - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO.id.shortValue());//灏忚溅绉诲簱浠诲姟 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setAuto(true);//鑷姩妯″紡 - assignCommand.setCommands(commands); - assignCommand.setNodes(result.getNodes()); - - wrkMast.setWrkSts(102L);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 101.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 102.灏忚溅绉诲姩鑷崇珯鐐� + wrkMast.setWrkSts(WrkStsType.MOVE_SITE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐� wrkMast.setModiTime(now); wrkMast.setLiftNo(liftSta.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈� - shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰璇ュ皬杞︿护鐗� - if (wrkMastMapper.updateById(wrkMast) > 0) { +// shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰璇ュ皬杞︿护鐗� + if (wrkMastService.updateById(wrkMast)) { //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); + shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); return false; } return false; } - return true; - } - - /** - * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈� - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - private boolean shuttleMoveExecuteStepIntoLift(WrkMast wrkMast) { - //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------// - Date now = new Date(); - - //灏忚溅绉诲姩鍒版彁鍗囨満涓� 103.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 104.灏忚溅杩佸叆鎻愬崌鏈轰腑 - if (wrkMast.getWrkSts() == 103) { - //鑾峰彇婧愮珯 - LiftStaProtocol sourceLiftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); - if (sourceLiftSta == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - //鑾峰彇鐩爣杈撻�佺珯 - LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); - if (liftSta == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - //鑾峰彇鎻愬崌鏈烘暟鎹� - BasLift basLift = basLiftService.selectById(liftSta.getLiftNo()); - if (basLift == null) { - return false;//娌℃湁鎻愬崌鏈烘暟鎹� - } - - if (basLift.getPoint() == null) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾病鏈夋彁鍗囨満鐐逛綅鍧愭爣锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), basLift.getLiftNo()); - return false;//娌℃湁璁剧疆鎻愬崌鏈虹偣浣嶅潗鏍� - } - - //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(basLift.getLiftNo()); - if (liftWrkMast != null) { - if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), basLift.getLiftNo()); - return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� - } - } - - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSta.getLiftNo()); - if (liftThread == null) { - return false; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return false; - } - - if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), basLift.getLiftNo()); - return false; - } - - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - - //灏忚溅澶勪簬绌洪棽鐘舵�� - if (!shuttleProtocol.isIdleNoCharge(wrkMast.getWrkNo())) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //灏忚溅浠ょ墝鏄惁琚换鍔$嫭鍗� - if (!shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞︿护鐗岃鐙崰锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //鍒ゆ柇鎻愬崌鏈烘ゼ灞� - if (liftProtocol.getLev().intValue() != shuttleProtocol.getPoint().getZ()) { - //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞� - //璋冨害鎻愬崌鏈� - - if (liftProtocol.getToken() != 0) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満浠ょ墝琚嫭鍗狅紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鎻愬崌鏈轰护鐗岃鍗犵敤 - } - - //鑾峰彇鎻愬崌鏈哄懡浠わ紝璋冨害鎻愬崌鏈哄埌婧愮珯浣嶇疆 - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, sourceLiftSta.getStaNo(), sourceLiftSta.getStaNo(), wrkMast.getWrkNo()); - - int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿 - BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(String.valueOf(deviceWrk), liftThread.getSlave().getId()); - if (basLiftOpt != null) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛岃澶囧伐浣滃彿鍑虹幇閲嶅鎯呭喌锛岃鑱旂郴鎶�鏈汉鍛樻敮鎸併��", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false; - } - liftCommand.setTaskNo((short) deviceWrk);//鏇存崲闅忔満浠诲姟鍙� - - ArrayList<NyLiftCommand> commands = new ArrayList<>(); - commands.add(liftCommand); - - //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 - LiftAssignCommand assignCommand = new LiftAssignCommand(); - assignCommand.setCommands(commands); - assignCommand.setLiftNo(liftProtocol.getLiftNo()); - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); - assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_CAR.id.shortValue()); - assignCommand.setAuto(false); - - wrkMast.setLiftNo(liftThread.getSlave().getId());//閿佸畾鎻愬崌鏈洪槻姝㈣鍗犵敤 - wrkMast.setModiTime(now); - liftProtocol.setToken(wrkMast.getShuttleNo());//鎻愬崌鏈轰护鐗岀粦瀹氬綋鍓嶅皬杞� - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); - } - return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰 - } - - if (liftProtocol.getToken() == 0) {//鎻愬崌鏈轰护鐗屾湭琚崰鐢� - //鐙崰鎻愬崌鏈� - liftProtocol.setToken(wrkMast.getShuttleNo()); - return false;//绛夊緟涓嬩竴娆℃墽琛� - } - - //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︿负褰撳墠灏忚溅 - if (!liftProtocol.getToken().equals(wrkMast.getShuttleNo())) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満浠ょ墝琚嫭鍗狅紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� - } - - //鍒ゆ柇灏忚溅鏄惁涓哄綋鍓嶄换鍔$嫭鍗� - if (!shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞︿护鐗岃鐙崰锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //绔欑偣鑺傜偣 - NavigateNode staNode = NavigatePositionConvert.locNoToNode(sourceLiftSta.getLocNo()); - - //鎻愬崌鏈鸿妭鐐� - NavigateNode liftNode = new NavigateNode(basLift.getPoint$().getX(), basLift.getPoint$().getY()); - liftNode.setZ(staNode.getZ()); - - //鑾峰彇灏忚溅杩涙彁鍗囨満琛岃蛋鍛戒护 - NyShuttleHttpCommand moveCommand = NyHttpUtils.getInOutLiftCommand(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), staNode, liftNode, true); - List<NyShuttleHttpCommand> commands = new ArrayList<>(); - commands.add(moveCommand); - List<NavigateNode> nodes = new ArrayList<>();//琛岃蛋鑺傜偣璺緞 - nodes.add(staNode); - nodes.add(liftNode); - - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO.id.shortValue());//灏忚溅绉诲簱浠诲姟 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setAuto(true);//鑷姩妯″紡 - assignCommand.setCommands(commands); - assignCommand.setNodes(nodes); - - wrkMast.setWrkSts(104L);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 103.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 104.灏忚溅杩佸叆鎻愬崌鏈轰腑 - wrkMast.setModiTime(now); - wrkMast.setLiftNo(liftThread.getSlave().getId());//閿佸畾鎻愬崌鏈洪槻姝㈣鍗犵敤 - liftProtocol.setToken(wrkMast.getShuttleNo());//鎻愬崌鏈轰护鐗岀粦瀹氬綋鍓嶅皬杞� - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - return false; - } - return false; - } - return true; } @@ -3084,203 +2215,57 @@ //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------// Date now = new Date(); - //鎻愬崌鏈烘惉杩愪腑 105.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 106.鎻愬崌鏈烘惉杩愪腑 - if (wrkMast.getWrkSts() == 105) { - - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); - if (liftThread == null) { + //鎻愬崌鏈烘惉杩愪腑 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑 + if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE_COMPLETE.sts) { + ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, wrkMast.getLiftNo()); + if (forkLiftThread == null) { return false; } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { + ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); + if (forkLiftProtocol == null) { return false; } - if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); + if (!forkLiftThread.isIdle()) { + News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); return false; } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo()); if (liftWrkMast != null) { if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); + News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� } } - //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︿负褰撳墠灏忚溅 - if (!liftProtocol.getToken().equals(wrkMast.getShuttleNo())) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満浠ょ墝鍜屽綋鍓嶅皬杞︿笉涓�鑷达紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鎻愬崌鏈轰护鐗屽拰褰撳墠灏忚溅涓嶄竴鑷达紝绂佹娲惧彂 - } - - //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞� - if (!liftProtocol.getHasCar()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鎻愬崌鏈哄唴鏃犲皬杞� - } - - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - - //灏忚溅澶勪簬绌洪棽鐘舵�� - if (!shuttleProtocol.isIdleNoCharge()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false; - } - - //鍒ゆ柇灏忚溅鏄惁涓哄綋鍓嶄换鍔$嫭鍗� - if (!shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀綋鍓嶄换鍔℃湭琚嫭鍗狅紝绂佹娲惧彂", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - //鑾峰彇婧愮珯 - LiftStaProtocol sourceLiftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); + ForkLiftStaProtocol sourceLiftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); //鑾峰彇鐩爣绔� - LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); + ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); if (sourceLiftSta == null || liftSta == null) { News.info("{}浠诲姟锛岀己灏戠珯鐐逛俊鎭紝绂佹娲惧彂", wrkMast.getWrkNo()); return false;//缂哄皯绔欑偣淇℃伅 } - //鑾峰彇鎻愬崌鏈哄懡浠� - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, sourceLiftSta.getStaNo(), liftSta.getStaNo(), wrkMast.getWrkNo()); - ArrayList<NyLiftCommand> commands = new ArrayList<>(); - commands.add(liftCommand); + //鑾峰彇鎻愬崌鏈哄懡浠� + List<ForkLiftCommand> liftCommands = forkLiftThread.getShuttleSwitchCommand(wrkMast.getWrkNo(), sourceLiftSta.getLev(), liftSta.getLev()); + ArrayList<ForkLiftCommand> commands = new ArrayList<>(); + commands.addAll(liftCommands); //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 LiftAssignCommand assignCommand = new LiftAssignCommand(); assignCommand.setCommands(commands); - assignCommand.setLiftNo(liftProtocol.getLiftNo()); + assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue()); assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); - assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_CAR.id.shortValue()); + assignCommand.setTaskMode(ForkLiftTaskModeType.SHUTTLE_SWITCH.id.shortValue()); - wrkMast.setWrkSts(106L);//鎻愬崌鏈烘惉杩愪腑 105.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 106.鎻愬崌鏈烘惉杩愪腑 - wrkMast.setLiftNo(liftThread.getSlave().getId());//閿佸畾鎻愬崌鏈洪槻姝㈣鍗犵敤 + wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑 wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) > 0) { + if (wrkMastService.updateById(wrkMast)) { //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); + forkLiftAction.assignWork(wrkMast.getLiftNo(), assignCommand); } - - } - return true; - } - - /** - * 灏忚溅杩佺Щ-灏忚溅杩佸嚭鎻愬崌鏈� - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - private boolean shuttleMoveExecuteStepOutLift(WrkMast wrkMast) { - //--------------------------------------灏忚溅杩佸嚭鎻愬崌鏈�-----------------------------------------// - Date now = new Date(); - //灏忚溅绉诲姩鍒版彁鍗囨満涓� 107.鎻愬崌鏈烘惉杩愬畬鎴� ==> 108.灏忚溅杩佸嚭鎻愬崌鏈轰腑 - if (wrkMast.getWrkSts() == 107) { - - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); - if (liftThread == null) { - return false; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return false; - } - if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false; - } - - //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); - if (liftWrkMast != null) { - if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� - } - } - - //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︿负褰撳墠灏忚溅 - if (!liftProtocol.getToken().equals(wrkMast.getShuttleNo())) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満浠ょ墝鍜屽綋鍓嶅皬杞︿笉涓�鑷达紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鎻愬崌鏈轰护鐗屽拰褰撳墠灏忚溅涓嶄竴鑷达紝绂佹娲惧彂 - } - - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - - //灏忚溅澶勪簬绌洪棽鐘舵�� - if (!shuttleProtocol.isIdleNoCharge()) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //鍒ゆ柇灏忚溅鏄惁涓哄綋鍓嶄换鍔$嫭鍗� - if (!shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞︿护鐗岃鐙崰锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //鑾峰彇鐩爣绔� - LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); - if (liftSta == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - //鑾峰彇鎻愬崌鏈烘暟鎹� - BasLift basLift = basLiftService.selectById(liftProtocol.getLiftNo().intValue()); - if (basLift == null) { - return false;//娌℃湁鎻愬崌鏈烘暟鎹� - } - if (basLift.getPoint() == null) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛岀己灏戞彁鍗囨満鐐逛綅鍧愭爣锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//娌℃湁璁剧疆鎻愬崌鏈虹偣浣嶅潗鏍� - } - - NavigateNode liftNode = new NavigateNode(basLift.getPoint$().getX(), basLift.getPoint$().getY()); - liftNode.setZ(liftSta.getLev()); - - List<NyShuttleHttpCommand> commands = new ArrayList<>(); - //鑾峰彇灏忚溅鏇存柊妤煎眰鍛戒护 - NyShuttleHttpCommand updateZCommand = NyHttpUtils.getUpdateZCommand(shuttleThread.getSlave().getId(), liftProtocol.getLev().intValue(), wrkMast.getWrkNo()); - commands.add(updateZCommand); - - //鑾峰彇灏忚溅鍑烘彁鍗囨満琛岃蛋鍛戒护 - NyShuttleHttpCommand moveCommand = NyHttpUtils.getInOutLiftCommand(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), liftNode, NavigatePositionConvert.locNoToNode(liftSta.getLocNo()), false); - commands.add(moveCommand);//娣诲姞灏忚溅杩佸嚭鎻愬崌鏈哄懡浠� - - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO.id.shortValue());//灏忚溅绉诲簱浠诲姟 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setAuto(true);//鑷姩妯″紡 - assignCommand.setCommands(commands); - assignCommand.setNodes(null); - - wrkMast.setWrkSts(108L);//灏忚溅杩佸嚭鎻愬崌鏈轰腑 107.鎻愬崌鏈烘惉杩愬畬鎴� ==> 108.灏忚溅杩佸嚭鎻愬崌鏈轰腑 - wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - return false; - } - return false; } return true; } @@ -3294,180 +2279,145 @@ //--------------------------------------灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑-----------------------------------------// Date now = new Date(); - //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 110.灏忚溅绉诲姩涓� - if (wrkMast.getWrkSts() == 109) { + //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓� + if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts) { //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); if (shuttleThread == null) { return false; } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { return false; } //灏忚溅澶勪簬绌洪棽鐘舵�� - if (!shuttleProtocol.isIdleNoCharge(wrkMast.getWrkNo())) { + if (!shuttleThread.isIdle()) { News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; } - //鍒ゆ柇灏忚溅浠ょ墝鏄惁涓哄綋鍓嶄换鍔� - if (shuttleProtocol.getToken() != 0 && !shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞︿护鐗岃鐙崰锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); + //灏忚溅宸茬粡鍦ㄧ洰鏍囧簱浣嶏紝鐩存帴璁ゅ畾灏忚溅绉诲姩浠诲姟瀹屾垚 + if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) { + wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);//311.灏忚溅绉诲姩瀹屾垚 + wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� + wrkMast.setModiTime(now); + wrkMastService.updateById(wrkMast); + + if (wrkMast.getWrkSts() == WrkStsType.COMPLETE_MOVE.sts) { + // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� + if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) { + log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo()); + } + // 鍒犻櫎宸ヤ綔涓绘。 + if (!wrkMastService.deleteById(wrkMast)) { + log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo()); + } + } return false; } -// //璺ㄦゼ灞傜Щ鍔ㄤ换鍔� -// if (Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(wrkMast.getLocNo())) { + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� + assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟 + assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� + assignCommand.setAuto(true);//鑷姩妯″紡 + assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣� + assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅 + + List<ShuttleCommand> commands = null; + //璺ㄦゼ灞傜Щ鍔ㄤ换鍔� + if (Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(wrkMast.getLocNo())) { +// //闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆 // //鑾峰彇鐩爣绔� // LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); // if (liftSta == null) { // return false;//鎵句笉鍒扮珯鐐� // } // -// //*************灏濊瘯瑙i攣鐩爣绔欒矾寰�*************** // List<NavigateNode> targetNodes = NyLiftUtils.getLiftStaNodes(liftSta.getStaNo()); // if (targetNodes == null) { // return false;//鏈幏鍙栧埌鑺傜偣 // } -// //灏濊瘯瑙i攣鐩爣绔欒矾寰� -// boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), targetNodes, false);//鎵�浣跨敤鐨勮矾寰勮繘琛岃В閿� -// if (!result) { -// return false;//璺緞瑙i攣澶辫触 +// +// //璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟 +// ArrayList<int[]> whiteList = new ArrayList<>();//璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟 +// for (NavigateNode node : targetNodes) { +// whiteList.add(new int[]{node.getX(), node.getY()}); // } -// //*************灏濊瘯瑙i攣鐩爣绔欒矾寰�*************** -// } - - //灏忚溅宸茬粡鍦ㄧ洰鏍囧簱浣嶏紝鐩存帴璁ゅ畾灏忚溅绉诲姩浠诲姟瀹屾垚 - if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) { - if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - //閲婃斁灏忚溅浠ょ墝 - shuttleProtocol.setToken(0); - } - wrkMast.setWrkSts(111L);//111.灏忚溅绉诲姩瀹屾垚 - wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� - wrkMast.setModiTime(now); - wrkMastMapper.updateById(wrkMast); - - shuttleProtocol.setShuttleNo((short) 0);//閲婃斁灏忚溅 - shuttleProtocol.setToken(0);//閲婃斁灏忚溅 - - if (wrkMast.getWrkSts() == 111) { - // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� - if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) { - log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - // 鍒犻櫎宸ヤ綔涓绘。 - if (!wrkMastService.deleteById(wrkMast)) { - log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - } - return false; - } - - NyShuttleOperaResult result = null; - //璺ㄦゼ灞傜Щ鍔ㄤ换鍔� - if (Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(wrkMast.getLocNo())) { - //闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆 - //鑾峰彇鐩爣绔� - LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); - if (liftSta == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - List<NavigateNode> targetNodes = NyLiftUtils.getLiftStaNodes(liftSta.getStaNo()); - if (targetNodes == null) { - return false;//鏈幏鍙栧埌鑺傜偣 - } - - //璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟 - ArrayList<int[]> whiteList = new ArrayList<>();//璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟 - for (NavigateNode node : targetNodes) { - whiteList.add(new int[]{node.getX(), node.getY()}); - } - result = NyShuttleOperaUtils.getStartToTargetCommandsByWhites(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.NORMAL.id, whiteList); +// commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread, whiteList); }else { //鑾峰彇灏忚溅鍒扮洰鏍囧簱浣嶅懡浠� - result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.NORMAL.id); + commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); } - if (result == null) { + if (commands == null) { return false;//璺緞璁$畻澶辫触 } - List<NyShuttleHttpCommand> commands = result.getCommands(); - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO.id.shortValue());//灏忚溅绉诲簱浠诲姟 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setAuto(true);//鑷姩妯″紡 assignCommand.setCommands(commands); - assignCommand.setNodes(result.getNodes()); - assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣� - assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅 - if (wrkMast.getLiftNo() != null) { - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); - if (liftThread == null) { - return false; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return false; - } - if (liftProtocol.getToken().equals(shuttleProtocol.getShuttleNo().intValue())) { - liftProtocol.setToken(0);//閲婃斁鎻愬崌鏈轰护鐗� - } - } +// if (wrkMast.getLiftNo() != null) { +// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); +// if (liftThread == null) { +// return false; +// } +// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); +// if (liftProtocol == null) { +// return false; +// } +// if (liftProtocol.getToken().equals(shuttleProtocol.getShuttleNo())) { +// liftProtocol.setToken(0);//閲婃斁鎻愬崌鏈轰护鐗� +// } +// } - wrkMast.setWrkSts(110L);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 110.灏忚溅绉诲姩涓� + wrkMast.setWrkSts(WrkStsType.MOVE_SHUTTLE.sts);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓� wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) > 0) { + if (wrkMastService.updateById(wrkMast)) { //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); + shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); } } return true; } - //鎵弿璁惧PakMk鏍囪鏄惁瓒呮椂 - public synchronized void scanDevicePakMk() { - try { - //鎵弿灏忚溅 - for (ShuttleSlave slave : slaveProperties.getShuttle()) { - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - continue; - } - - if ((System.currentTimeMillis() - shuttleProtocol.getSendTime() > (1000 * 60 * 5)) && shuttleProtocol.getPakMk()) { - //璁惧瓒呰繃5鍒嗛挓杩樻病澶嶄綅鏍囪 - shuttleProtocol.setPakMk(false);//澶嶄綅鏍囪 - } - } - - //鎵弿鎻愬崌鏈� - for (LiftSlave slave : slaveProperties.getLift()) { - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, slave.getId()); - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - continue; - } - - if ((System.currentTimeMillis() - liftProtocol.getSendTime() > (1000 * 60 * 5)) && liftProtocol.getPakMk()) { - //璁惧瓒呰繃5鍒嗛挓杩樻病澶嶄綅鏍囪 - liftProtocol.setPakMk(false);//澶嶄綅鏍囪 - } - } - } catch (Exception e) { - e.printStackTrace(); - } - - } +// //鎵弿璁惧PakMk鏍囪鏄惁瓒呮椂 +// public synchronized void scanDevicePakMk() { +// try { +// //鎵弿灏忚溅 +// for (ShuttleSlave slave : slaveProperties.getShuttle()) { +// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); +// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); +// if (shuttleProtocol == null) { +// continue; +// } +// +// if ((System.currentTimeMillis() - shuttleProtocol.getSendTime() > (1000 * 60 * 5)) && shuttleProtocol.getPakMk()) { +// //璁惧瓒呰繃5鍒嗛挓杩樻病澶嶄綅鏍囪 +// shuttleProtocol.setPakMk(false);//澶嶄綅鏍囪 +// } +// } +// +// //鎵弿鎻愬崌鏈� +// for (LiftSlave slave : slaveProperties.getLift()) { +// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, slave.getId()); +// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); +// if (liftProtocol == null) { +// continue; +// } +// +// if ((System.currentTimeMillis() - liftProtocol.getSendTime() > (1000 * 60 * 5)) && liftProtocol.getPakMk()) { +// //璁惧瓒呰繃5鍒嗛挓杩樻病澶嶄綅鏍囪 +// liftProtocol.setPakMk(false);//澶嶄綅鏍囪 +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// } } diff --git a/src/main/java/com/zy/asrs/service/impl/WrkChargeServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkChargeServiceImpl.java deleted file mode 100644 index 63a867b..0000000 --- a/src/main/java/com/zy/asrs/service/impl/WrkChargeServiceImpl.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.zy.asrs.service.impl; - -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.zy.asrs.entity.WrkCharge; -import com.zy.asrs.mapper.WrkChargeMapper; -import com.zy.asrs.service.WrkChargeService; -import org.springframework.stereotype.Service; - -@Service("wrkChargeService") -public class WrkChargeServiceImpl extends ServiceImpl<WrkChargeMapper, WrkCharge> implements WrkChargeService { - - @Override - public WrkCharge selectWorking(Integer shuttleNo) { - return this.baseMapper.selectWorking(shuttleNo); - } - - @Override - public WrkCharge selectWorkingOfCharge(Integer charge) { - return this.baseMapper.selectWorkingOfCharge(charge); - } -} diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java index 04b26fd..17e957c 100644 --- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java @@ -2,10 +2,11 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.zy.asrs.entity.LocMast; +import com.core.common.Cools; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.WrkMastService; +import com.zy.core.enums.WrkStsType; import org.springframework.stereotype.Service; import java.util.List; @@ -14,18 +15,32 @@ public class WrkMastServiceImpl extends ServiceImpl<WrkMastMapper, WrkMast> implements WrkMastService { @Override - public int getWorkingMast(Integer devpNo) { - return selectCount(new EntityWrapper<WrkMast>().eq("source_sta_no", devpNo).in("wrk_sts", 1, 6)); + public WrkMast selectByWorkNo(Integer workNo) { + return this.baseMapper.selectByWorkNo(workNo); } @Override - public List<WrkMast> selectToBeCompleteData() { - return this.baseMapper.selectToBeCompleteData(); - } - - @Override - public List<WrkMast> selectToBeHistoryData() { - return this.baseMapper.selectToBeHistoryData(); + public Boolean judgeInbound(WrkMast wrkMast) { + switch (WrkStsType.query(wrkMast.getWrkSts())) { + case NEW_INBOUND: + case INBOUND_DEVICE_RUN: + case INBOUND_LIFT_RUN: + case INBOUND_LIFT_RUN_COMPLETE: + case INBOUND_SHUTTLE_RUN: + case INBOUND_SHUTTLE_RUN_COMPLETE: + case COMPLETE_INBOUND: + case SETTLE_INBOUND: + return Boolean.TRUE; + case NEW_OUTBOUND: + case OUTBOUND_SHUTTLE_RUN: + case OUTBOUND_SHUTTLE_RUN_COMPLETE: + case OUTBOUND_LIFT_RUN: + case OUTBOUND_LIFT_RUN_COMPLETE: + case COMPLETE_OUTBOUND: + case SETTLE_OUTBOUND: + return Boolean.FALSE; + } + return Boolean.TRUE; } @Override @@ -42,4 +57,67 @@ public List<WrkMast> selectShuttleOutWrkByLev(Integer lev) { return this.baseMapper.selectShuttleOutWrkByLev("%" + lev); } + + @Override + public WrkMast selectChargeWorking(Integer shuttleNo) { + return this.baseMapper.selectChargeWorking(shuttleNo); + } + + @Override + public Boolean hasBusyByShuttle(Integer shuttleNo) { + List<WrkMast> wrkMasts = this.selectList(new EntityWrapper<WrkMast>().in("wrk_sts" + , WrkStsType.NEW_INBOUND.sts + , WrkStsType.INBOUND_DEVICE_RUN.sts + , WrkStsType.INBOUND_LIFT_RUN.sts + , WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts + , WrkStsType.INBOUND_SHUTTLE_RUN.sts + , WrkStsType.INBOUND_SHUTTLE_RUN_COMPLETE.sts + + , WrkStsType.NEW_OUTBOUND.sts + , WrkStsType.OUTBOUND_SHUTTLE_RUN.sts + , WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts + , WrkStsType.OUTBOUND_LIFT_RUN.sts + , WrkStsType.OUTBOUND_LIFT_RUN_COMPLETE.sts + + , WrkStsType.NEW_MOVE.sts + , WrkStsType.MOVE_SITE.sts + , WrkStsType.MOVE_SITE_COMPLETE.sts + , WrkStsType.MOVE_IN_LIFT.sts + , WrkStsType.MOVE_IN_LIFT_COMPLETE.sts + , WrkStsType.MOVE_LIFT_RUN.sts + , WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts + , WrkStsType.MOVE_OUT_LIFT.sts + , WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts + , WrkStsType.MOVE_SHUTTLE.sts + + , WrkStsType.NEW_CHARGE.sts + , WrkStsType.CHARGE_SHUTTLE_RUN.sts + , WrkStsType.CHARGE_SHUTTLE_WORKING.sts + , WrkStsType.CHARGE_SHUTTLE_COMPLETE.sts + ).eq("shuttle_no", shuttleNo)); + if (Cools.isEmpty(wrkMasts)) { + return false; + } + return true; + } + + @Override + public WrkMast selectShuttleHasMoveWorking(Integer shuttleNo) { + return this.baseMapper.selectShuttleHasMoveWorking(shuttleNo); + } + + @Override + public WrkMast selectShuttleWorking(Integer shuttleNo) { + return this.baseMapper.selectShuttleWorking(shuttleNo); + } + + @Override + public List<WrkMast> selectShuttleMoveWrk() { + return this.baseMapper.selectShuttleMoveWrk(); + } + + @Override + public WrkMast selectLiftWrkMast(Integer liftNo) { + return this.baseMapper.selectLiftWrkMast(liftNo); + } } diff --git a/src/main/java/com/zy/asrs/task/ShuttlePowerEarlyWarning.java b/src/main/java/com/zy/asrs/task/ShuttlePowerEarlyWarning.java index f3e773c..00b5259 100644 --- a/src/main/java/com/zy/asrs/task/ShuttlePowerEarlyWarning.java +++ b/src/main/java/com/zy/asrs/task/ShuttlePowerEarlyWarning.java @@ -7,9 +7,9 @@ import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.model.ShuttleSlave; -import com.zy.core.model.protocol.NyShuttleProtocol; +import com.zy.core.model.protocol.ShuttleProtocol; import com.zy.core.properties.SlaveProperties; -import com.zy.core.thread.NyShuttleThread; +import com.zy.core.thread.ShuttleThread; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; import lombok.extern.slf4j.Slf4j; @@ -58,22 +58,22 @@ boolean hasReport = false;//鏄惁鏈夐渶瑕佹姤鍛婄殑鏁版嵁 for (ShuttleSlave slave : slaveProperties.getShuttle()) { - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); if (shuttleThread == null) { continue; } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { continue; } - if (shuttleProtocol.getChargState() == 1) { + if (shuttleThread.isCharging()) { continue;//鍏呯數涓紝鏃犻渶閫氱煡 } - if (shuttleProtocol.getPowerPercent() < shuttlePowerEarlyValue) { - buffer.append(shuttleProtocol.getShuttleNo()).append("鍙峰皬杞︼紝鐢甸噺").append(shuttleProtocol.getPowerPercent$()).append("锛岃娉ㄦ剰銆俓n"); + if (Integer.parseInt(shuttleProtocol.getBatteryPower()) < shuttlePowerEarlyValue) { + buffer.append(shuttleProtocol.getShuttleNo()).append("鍙峰皬杞︼紝鐢甸噺").append(shuttleProtocol.getBatteryPower()).append("锛岃娉ㄦ剰銆俓n"); hasReport = true; } } diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java index 139e95a..d8dd70e 100644 --- a/src/main/java/com/zy/asrs/utils/Utils.java +++ b/src/main/java/com/zy/asrs/utils/Utils.java @@ -1,64 +1,22 @@ package com.zy.asrs.utils; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.mapper.EntityWrapper; -import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Arith; import com.core.common.Cools; import com.core.common.SpringUtils; -import com.zy.asrs.entity.BasShuttle; -import com.zy.asrs.entity.LocMast; -import com.zy.asrs.entity.WrkMast; -import com.zy.asrs.service.BasShuttleService; -import com.zy.asrs.service.LocMastService; -import com.zy.asrs.service.WrkMastService; -import com.zy.common.service.CommonService; -import com.zy.common.utils.NavigateMapData; import com.zy.common.utils.NavigatePositionConvert; -import com.zy.common.utils.ShuttleDispatchUtils; -import com.zy.core.DevpThread; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; -import com.zy.core.model.DevpSlave; import com.zy.core.model.ShuttleSlave; -import com.zy.core.model.protocol.NyShuttleProtocol; -import com.zy.core.model.protocol.StaProtocol; +import com.zy.core.model.protocol.ShuttleProtocol; import com.zy.core.properties.SlaveProperties; -import com.zy.core.thread.NyShuttleThread; - +import com.zy.core.thread.ShuttleThread; import java.text.DecimalFormat; import java.util.*; -import java.util.regex.Pattern; /** * Created by vincent on 2020/8/27 */ public class Utils { - - public static final List<Integer> FIRST_GROUP_ROW_LIST = new ArrayList<Integer>() {{ - add(1); - }}; - public static final List<Integer> SECOND_GROUP_ROW_LIST = new ArrayList<Integer>() {{ - add(3);add(4); - }}; - public static final List<Integer> THIRD_GROUP_ROW_LIST = new ArrayList<Integer>() {{ - add(6);add(7); - }}; - public static final List<Integer> FOURTH_GROUP_ROW_LIST = new ArrayList<Integer>() {{ - add(8); - }}; - public static final List<Integer> FIFTH_GROUP_ROW_LIST = new ArrayList<Integer>() {{ - add(10);add(11); - }}; - public static final List<Integer> SIXTH_GROUP_ROW_LIST = new ArrayList<Integer>() {{ - add(13);add(14);add(15);add(16); - }}; - public static final List<Integer> SEVENTH_GROUP_ROW_LIST = new ArrayList<Integer>() {{ - add(13);add(14); - }}; - public static final List<Integer> EIGHTH_GROUP_ROW_LIST = new ArrayList<Integer>() {{ - add(16); - }}; private static final DecimalFormat fmt = new DecimalFormat("##0.00"); @@ -81,38 +39,6 @@ } return msgBuilder.toString(); } - } - - public static Integer getGroupRow(String locNo, Boolean pakin){ - int row = getRow(locNo); - return getGroupRow(row, pakin); - } - - public static Integer getGroupRow(Integer row, Boolean pakin) { - if (FIRST_GROUP_ROW_LIST.contains(row)) { - return 4; - } else if (SECOND_GROUP_ROW_LIST.contains(row)) { - return 5; - } else { - return 0; - } -// if (pakin) { -// if (FIRST_GROUP_ROW_LIST.contains(row)) { -// return 2; -// } else if (SECOND_GROUP_ROW_LIST.contains(row)) { -// return 18; -// } else { -// return 0; -// } -// } else { -// if (FIRST_GROUP_ROW_LIST.contains(row)) { -// return 12; -// } else if (SECOND_GROUP_ROW_LIST.contains(row)) { -// return 30; -// } else { -// return 0; -// } -// } } /** @@ -145,140 +71,16 @@ throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); } - /** - * 閫氳繃鎺掑垪灞傛嫾鎺ュ嚭搴撲綅鍙� - */ - public static String append(int row, int bay, int lev) { - return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 3) + zerofill(String.valueOf(lev), 2); - } - public static String getLocNo(Number row, Number bay, Number lev) { return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 3) + zerofill(String.valueOf(lev), 2); } - public static void main(String[] args) { - System.out.println(JSON.toJSONString(getGroupLoc("1606101"))); - } - - /** - * 鑾峰彇搴撲綅缁� - * @param locNo 搴撲綅鍙� - */ - public static List<String> getGroupLoc(String locNo){ - int row = getRow(locNo); - int bay = getBay(locNo); - if (FIRST_GROUP_ROW_LIST.contains(row)) { - List<String> result = new ArrayList<>(); - for (Integer row0 : FIRST_GROUP_ROW_LIST) { - result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); - } - return result; - } - if (SECOND_GROUP_ROW_LIST.contains(row)) { - List<String> result = new ArrayList<>(); - for (Integer row0 : SECOND_GROUP_ROW_LIST) { - result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); - } - return result; - } - if (THIRD_GROUP_ROW_LIST.contains(row)) { - List<String> result = new ArrayList<>(); - for (Integer row0 : THIRD_GROUP_ROW_LIST) { - result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); - } - Collections.reverse(result); - return result; - } - if (FOURTH_GROUP_ROW_LIST.contains(row)) { - List<String> result = new ArrayList<>(); - for (Integer row0 : FOURTH_GROUP_ROW_LIST) { - result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); - } - return result; - } - if (FIFTH_GROUP_ROW_LIST.contains(row)) { - List<String> result = new ArrayList<>(); - for (Integer row0 : FIFTH_GROUP_ROW_LIST) { - result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); - } - return result; - } - if (SIXTH_GROUP_ROW_LIST.contains(row) && (bay >= 59 && bay <= 61)) { - List<String> result = new ArrayList<>(); - for (Integer row0 : SIXTH_GROUP_ROW_LIST) { - result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); - } - Collections.reverse(result); - return result; - } - if (SEVENTH_GROUP_ROW_LIST.contains(row) && bay < 59) { - List<String> result = new ArrayList<>(); - for (Integer row0 : SEVENTH_GROUP_ROW_LIST) { - result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); - } - return result; - } - if (EIGHTH_GROUP_ROW_LIST.contains(row) && bay < 59) { - List<String> result = new ArrayList<>(); - for (Integer row0 : EIGHTH_GROUP_ROW_LIST) { - result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); - } - return result; - } - throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); - } - - /** - * 鑾峰彇澶栦晶鏂瑰悜鐨勫簱浣嶇粍 - * @param locNo 搴撲綅鍙� - */ - public static List<String> getGroupOuterLoc(String locNo){ - int row = getRow(locNo); - int bay = getBay(locNo); - - //(1,3,4,10,11)娌℃湁澶栦晶鏂瑰悜搴撲綅缁�,(13,14,16)59鍒椾箣鍐呮病鏈夊渚ф柟鍚戝簱浣嶇粍 - if (FIRST_GROUP_ROW_LIST.contains(row)) {//1鎺� - return new ArrayList<>(); - } - if (SECOND_GROUP_ROW_LIST.contains(row)) {//3-4鎺� - return new ArrayList<>(); - } - if (THIRD_GROUP_ROW_LIST.contains(row)) {//6-7鎺� - List<String> result = new ArrayList<>(); - for (Integer row0 : THIRD_GROUP_ROW_LIST) { - if (row0 < row) { - result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); - } - } - return result; - } - if (FOURTH_GROUP_ROW_LIST.contains(row)) {//8鎺� - return new ArrayList<>(); - } - if (FIFTH_GROUP_ROW_LIST.contains(row)) {//10-11鎺� - return new ArrayList<>(); - } - if (SIXTH_GROUP_ROW_LIST.contains(row) && (bay >= 59 && bay <= 61)) {//13-16鎺�59-61鍒楀渚ф柟鍚戝簱浣嶇粍 - List<String> result = new ArrayList<>(); - for (Integer row0 : SIXTH_GROUP_ROW_LIST) { - if (row0 < row) { - result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); - } - } - return result; - } - if (SEVENTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//13-14鎺�59鍒椾箣鍐呮病鏈夊渚ф柟鍚戝簱浣嶇粍 - return new ArrayList<>(); - } - if (EIGHTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//16鎺�59鍒椾箣鍐呮病鏈夊渚ф柟鍚戝簱浣嶇粍 - return new ArrayList<>(); - } - throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); + public static List<String> getGroupLoc(String locNo) { + return null; } //鑾峰彇闄ょ櫧鍚嶅崟澶栫殑鎸囧畾妤煎眰鍏ㄩ儴绌挎杞y鍧愭爣鐐� public static List<int[]> getShuttlePoints(Integer whiteShuttle, Integer lev) { - BasShuttleService basShuttleService = SpringUtils.getBean(BasShuttleService.class); SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class); ArrayList<int[]> list = new ArrayList<>(); for (ShuttleSlave slave : slaveProperties.getShuttle()) { @@ -287,25 +89,18 @@ } //鑾峰彇绌挎杞︽墍鍦ㄨ妭鐐逛綅缃� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); if (shuttleThread == null) { continue; } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { continue; } String currentLocNo = shuttleProtocol.getCurrentLocNo(); - if (currentLocNo == null) { - //灏忚溅娌℃湁搴撲綅鍙锋暟鎹紝浠庢暟鎹簱涓彇 - BasShuttle basShuttle = basShuttleService.selectById(slave.getId()); - if (basShuttle == null) { - continue; - } - NyShuttleProtocol.NyShuttlePointClass shuttlePoint = shuttleProtocol.getPoint(); - currentLocNo = NavigatePositionConvert.nyXyzToLocNo(shuttlePoint.getX(), shuttlePoint.getY(), shuttlePoint.getZ()); + continue; } if (lev != Utils.getLev(currentLocNo)) { @@ -321,95 +116,16 @@ return list; } - //鎼滅储涓�鏉℃病鏈夊皬杞︾殑绌哄贩閬擄紝骞惰皟搴﹀皬杞� - public static boolean searchEmptyGroupToMoveShuttle(int z, Integer currentShuttleId, NyShuttleThread shuttleThread) { - LocMastService locMastService = SpringUtils.getBean(LocMastService.class); - WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class); - CommonService commonService = SpringUtils.getBean(CommonService.class); - ShuttleDispatchUtils shuttleDispatchUtils = SpringUtils.getBean(ShuttleDispatchUtils.class); - NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); - - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - - int[][] data = navigateMapData.getData(z, -1, null, currentShuttleId == null ? null : Utils.getShuttlePoints(0, z));//杞藉叆鍏ㄩ儴杞﹁締 - - int moveBay = 23;//閬胯璧峰鍒� - int bay = Utils.getBay(shuttleProtocol.getCurrentLocNo());//灏忚溅褰撳墠鍒� - if (bay > 1 && bay <= 30) { - moveBay = 23; - } else if (bay > 30 && bay <= 45) { - moveBay = 39; - } else if (bay > 45) { - moveBay = 50; - } - - int distY = -1; - int distX = -1; - int distZ = -1; - //鑾峰彇閬胯搴撲綅 - String distLocNo = null; - for (int y = moveBay; y <= 56; y++) { - boolean searchFlag = true; - for (int x = 10; x <= 11; x++) { - if (data[x][y] < 0 || data[x][y] == 66) { - searchFlag = false;//璇ュ贩閬撴湁绂佺敤鑺傜偣鎴栨湁灏忚溅 - break; - } - } - - if (searchFlag) { - //鎼滅储鍑虹┖宸烽亾 - distY = y; - distX = 11; - distZ = z; - - //鑾峰彇閬胯搴撲綅 - String locNo = NavigatePositionConvert.xyzToLocNo(distX, distY, distZ); - LocMast distLocMast = locMastService.queryByLoc(locNo); - if (distLocMast == null) { - continue; - } - - if (distLocMast.getLocSts().equals("X")) { - continue;//璋冭繃绂佺敤搴撲綅 - } - - //鍒ゆ柇璇ュ簱浣嶆槸鍚﹀瓨鍦ㄥ伐浣滄。 - EntityWrapper<WrkMast> wrapper = new EntityWrapper<>(); - wrapper.eq("loc_no", locNo); - WrkMast wrkMast = wrkMastService.selectOne(wrapper); - if (wrkMast != null) { - continue;//瀛樺湪宸ヤ綔妗h烦杩囪搴撲綅 - } - - distLocNo = locNo; - break; - } - } - - if (distLocNo != null) { - //璋冨害灏忚溅鍒伴伩璁╀綅缃� - return shuttleDispatchUtils.dispatchShuttle(commonService.getWorkNo(7), distLocNo, shuttleProtocol.getShuttleNo().intValue()); - } - return false; - } - //妫�娴嬫ゼ灞傛槸鍚︽湁绌挎杞� public static boolean checkLevHasShuttle(Integer lev) { SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class); for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); if (shuttleThread == null) { continue; } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { continue; } @@ -443,12 +159,12 @@ for (String loc : groupLoc) { for (ShuttleSlave slave : slaveProperties.getShuttle()) { - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); if (shuttleThread == null) { continue; } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { continue; } @@ -465,132 +181,5 @@ } return null; - } - - //閫氳繃鎻愬崌鏈哄彿鍜屾ゼ灞傝幏鍙栧嚭鍏ュ簱妯″紡 - public static Integer getOutInModelByLift(Integer liftNo, Integer lev) { - ArrayList<Integer> lev1 = new ArrayList<Integer>() {{ - add(100);add(103); - add(105); - }}; - ArrayList<Integer> lev2 = new ArrayList<Integer>() {{ - add(200);add(203); - add(205); - }}; - ArrayList<Integer> lev3 = new ArrayList<Integer>() {{ - add(341);add(346); - }}; - - Integer staNo = null; - if (lev <= 4) { - staNo = lev1.get(liftNo - 1); - } else if (lev >= 5 && lev <= 7) { - staNo = lev2.get(liftNo - 1); - } else if ((lev >=8 && lev <= 10) && liftNo != 1) { - staNo = lev3.get(liftNo - 2); - } - - if (staNo != null) { - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); - StaProtocol staProtocol = devpThread.getStation().get(staNo); - if (staProtocol == null) { - return null; - } - - if (staNo == 100 || staNo == 200) {//1鍙锋彁鍗囨満100绔欏拰200绔欓粯璁ゅ叏鏄嚭搴撴ā寮� - return 2;//鍑哄簱妯″紡 - } - - if (staNo == 341) { - return 1;//341绔欓粯璁ゅ彧鑳藉叆搴撴ā寮� - } - - if (staProtocol.getOutInModel() == null) { - return null;//娌℃湁鍑哄叆搴撲俊鍙� - } - - return staProtocol.getOutInModel().intValue(); - } - return null; - } - - public static void wapperSetCondition(Wrapper wrapper, String column, String condition){ - if(Cools.isEmpty(condition) || "null".equals(condition)){ - wrapper.andNew().eq(column,"").or().isNull(column); - }else { - wrapper.eq(column,condition); - } - } - - /** - * 鑾峰彇鍐呬晶鏂瑰悜鐨勫簱浣嶇粍 - * @param locNo 搴撲綅鍙� - */ - public static List<String> getGroupInnerLoc(String locNo){ - int row = getRow(locNo); - int bay = getBay(locNo); - - //(1,3,4,10,11)娌℃湁鍐呬晶鏂瑰悜搴撲綅缁�,(13,14,16)59鍒椾箣鍐呮病鏈夊唴渚ф柟鍚戝簱浣嶇粍 - if (FIRST_GROUP_ROW_LIST.contains(row)) {//1鎺� - return new ArrayList<>(); - } - if (SECOND_GROUP_ROW_LIST.contains(row)) {//3-4鎺� - return new ArrayList<>(); - } - if (THIRD_GROUP_ROW_LIST.contains(row)) {//6-7鎺� - List<String> result = new ArrayList<>(); - for (Integer row0 : THIRD_GROUP_ROW_LIST) { - if (row0 > row) { - result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); - } - } - return result; - } - if (FOURTH_GROUP_ROW_LIST.contains(row)) {//8鎺� - return new ArrayList<>(); - } - if (FIFTH_GROUP_ROW_LIST.contains(row)) {//10-11鎺� - return new ArrayList<>(); - } - if (SIXTH_GROUP_ROW_LIST.contains(row) && (bay >= 59 && bay <= 61)) {//13-16鎺�59-61鍒楀唴渚ф柟鍚戝簱浣嶇粍 - List<String> result = new ArrayList<>(); - for (Integer row0 : SIXTH_GROUP_ROW_LIST) { - if (row0 > row) { - result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); - } - } - return result; - } - if (SEVENTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//13-14鎺�59鍒椾箣鍐呮病鏈夊唴渚ф柟鍚戝簱浣嶇粍 - return new ArrayList<>(); - } - if (EIGHTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//16鎺�59鍒椾箣鍐呮病鏈夊唴渚ф柟鍚戝簱浣嶇粍 - return new ArrayList<>(); - } - throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); - } - - /** - * 閫氳繃鍏ュ簱绔欑偣鍙疯幏鍙栨潯鐮佸櫒ID - */ - public static Integer getBarcodeIdByStaNo(int staNo) { - SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class); - for (DevpSlave devpSlave : slaveProperties.getDevp()) { - for (DevpSlave.Sta sta : devpSlave.getInSta()) { - if (sta.getStaNo().equals(staNo)) { - return sta.getBarcode(); - } - } - } - return null; - } - /** - * 鍒ゆ柇瀛楃涓叉槸鍚︿负JSON鏍煎紡 - */ - public static boolean isJson(String jsonString) { - // JSON鏍煎紡鐨勬鍒欒〃杈惧紡 - String pattern = "^\\{.*\\}$"; - // 浣跨敤Pattern绫昏繘琛屾鍒欏尮閰� - return Pattern.matches(pattern, jsonString); } } diff --git a/src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java b/src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java index 75c45e1..ddf9b6d 100644 --- a/src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java +++ b/src/main/java/com/zy/asrs/ws/ConsoleWebSocket.java @@ -4,7 +4,7 @@ import com.core.common.R; import com.core.common.SpringUtils; import com.zy.asrs.controller.ConsoleController; -import com.zy.asrs.controller.LiftController; +import com.zy.asrs.controller.ForkLiftController; import com.zy.asrs.controller.ShuttleController; import com.zy.common.model.WebSocketMessage; import lombok.Data; @@ -71,7 +71,7 @@ @OnMessage public void onMessage(String message, Session session) throws IOException { ShuttleController shuttleController = SpringUtils.getBean(ShuttleController.class); - LiftController liftController = SpringUtils.getBean(LiftController.class); + ForkLiftController liftController = SpringUtils.getBean(ForkLiftController.class); ConsoleController consoleController = SpringUtils.getBean(ConsoleController.class); WebSocketMessage socketMessage = JSON.parseObject(message, WebSocketMessage.class); if (socketMessage.getUrl().equals("/shuttle/table/shuttle/state")) { @@ -91,7 +91,7 @@ socketMessage.setData(JSON.toJSONString(result)); this.sendMessage(JSON.toJSONString(socketMessage)); } else if (socketMessage.getUrl().equals("/console/barcode/output/site")) { - R result = consoleController.crnOutput(); + R result = consoleController.barcodeOutput(); socketMessage.setData(JSON.toJSONString(result)); this.sendMessage(JSON.toJSONString(socketMessage)); } diff --git a/src/main/java/com/zy/common/ExecuteSupport.java b/src/main/java/com/zy/common/ExecuteSupport.java new file mode 100644 index 0000000..436ca53 --- /dev/null +++ b/src/main/java/com/zy/common/ExecuteSupport.java @@ -0,0 +1,7 @@ +package com.zy.common; + +public interface ExecuteSupport { + + Boolean judgement(); + +} diff --git a/src/main/java/com/zy/common/model/MapNode.java b/src/main/java/com/zy/common/model/MapNode.java index 6914713..32da26a 100644 --- a/src/main/java/com/zy/common/model/MapNode.java +++ b/src/main/java/com/zy/common/model/MapNode.java @@ -6,8 +6,19 @@ * 鍦板浘鏁版嵁鑺傜偣 */ @Data -public class MapNode { +public class MapNode implements Cloneable { + /** + * -1 绂佺敤 + * 0 瀛愯建閬� + * 3 姣嶈建閬� + * 4 杈撻�佺珯鐐� + * 5 鍏呯數妗� + * 6 灏忚溅鍙蛋杈撻�佺珯鐐� + * 66 绌挎杞﹀潗鏍� + * 67 鎻愬崌鏈哄潗鏍� + * -999 閿佸畾鑺傜偣 + */ private Integer value; private String data; @@ -20,4 +31,29 @@ private Integer right; -} + private String no; + + private Integer row; + + private Integer bay; + + //鑺傜偣琚攣瀹氭椂鎵�灞炶澶囧彿 + private Integer lockDeviceNo; + + //**************鍏煎鐗涚溂鏂板崗璁�**************// + private Integer xBase;//x鍩哄噯 + + private Integer yBase;//y鍩哄噯 + //**************鍏煎鐗涚溂鏂板崗璁�**************// + + @Override + public MapNode clone() { + try { + return (MapNode) super.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + return null; + } + +} \ No newline at end of file diff --git a/src/main/java/com/zy/common/model/NavigateNode.java b/src/main/java/com/zy/common/model/NavigateNode.java index d5ff8d6..5a41b66 100644 --- a/src/main/java/com/zy/common/model/NavigateNode.java +++ b/src/main/java/com/zy/common/model/NavigateNode.java @@ -2,11 +2,13 @@ import lombok.Data; +import java.io.Serializable; + /** * A*瀵昏矾绠楁硶Node鑺傜偣 */ @Data -public class NavigateNode implements Comparable<NavigateNode>{ +public class NavigateNode implements Comparable<NavigateNode>, Cloneable, Serializable { private int x;//鍧愭爣x private int y;//鍧愭爣y @@ -46,4 +48,14 @@ return Integer.compare(this.F, o.F); } + @Override + public NavigateNode clone() { + try { + return (NavigateNode) super.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + return null; + } + } diff --git a/src/main/java/com/zy/common/model/NyShuttleOperaResult.java b/src/main/java/com/zy/common/model/ShuttleOperaResult.java similarity index 72% rename from src/main/java/com/zy/common/model/NyShuttleOperaResult.java rename to src/main/java/com/zy/common/model/ShuttleOperaResult.java index e21e9bc..82f4120 100644 --- a/src/main/java/com/zy/common/model/NyShuttleOperaResult.java +++ b/src/main/java/com/zy/common/model/ShuttleOperaResult.java @@ -7,13 +7,13 @@ @Data //缁撴灉闆� -public class NyShuttleOperaResult { +public class ShuttleOperaResult { //鍛戒护闆嗗悎 private List<NyShuttleHttpCommand> commands; //琛岃蛋璺緞闆嗗悎 private List<NavigateNode> nodes; - public NyShuttleOperaResult(List<NyShuttleHttpCommand> commands, List<NavigateNode> nodes) { + public ShuttleOperaResult(List<NyShuttleHttpCommand> commands, List<NavigateNode> nodes) { this.commands = commands; this.nodes = nodes; } diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java index eb14888..246a478 100644 --- a/src/main/java/com/zy/common/service/CommonService.java +++ b/src/main/java/com/zy/common/service/CommonService.java @@ -8,10 +8,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -/** - * 璐ф灦鏍稿績鍔熻兘 - * Created by vincent on 2020/6/11 - */ @Slf4j @Service public class CommonService { @@ -20,9 +16,6 @@ private WrkMastService wrkMastService; @Autowired private WrkLastnoService wrkLastnoService; - @Autowired - private WrkChargeService wrkChargeService; - /** * 鐢熸垚宸ヤ綔鍙� @@ -57,40 +50,6 @@ } else { if (wrkMastService.selectById(workNo)!=null) { throw new CoolException("鐢熸垚宸ヤ綔鍙�" + workNo + "鍦ㄥ伐浣滄。涓凡瀛樺湪"); - } - } - return workNo; - } - - public int getChargeWorkNo(Integer wrkMk) { - WrkLastno wrkLastno = wrkLastnoService.selectById(wrkMk); - if (Cools.isEmpty(wrkLastno)) { - throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�"); - } - - int workNo = wrkLastno.getWrkNo(); - int sNo = wrkLastno.getSNo(); - int eNo = wrkLastno.getENo(); - workNo = workNo>=eNo ? sNo : workNo+1; - while (true) { - WrkCharge wrkCharge = wrkChargeService.selectById(workNo); - if (null != wrkCharge) { - workNo = workNo>=eNo ? sNo : workNo+1; - } else { - break; - } - } - // 淇敼搴忓彿璁板綍 - if (workNo > 0){ - wrkLastno.setWrkNo(workNo); - wrkLastnoService.updateById(wrkLastno); - } - // 妫�楠� - if (workNo == 0) { - throw new CoolException("鐢熸垚鍏呯數宸ヤ綔鍙峰け璐ワ紝璇疯仈绯荤鐞嗗憳"); - } else { - if (wrkChargeService.selectById(workNo)!=null) { - throw new CoolException("鐢熸垚宸ヤ綔鍙�" + workNo + "鍦ㄥ厖鐢靛伐浣滄。涓凡瀛樺湪"); } } return workNo; diff --git a/src/main/java/com/zy/common/utils/ForkLiftOperaUtils.java b/src/main/java/com/zy/common/utils/ForkLiftOperaUtils.java new file mode 100644 index 0000000..e45d338 --- /dev/null +++ b/src/main/java/com/zy/common/utils/ForkLiftOperaUtils.java @@ -0,0 +1,26 @@ +package com.zy.common.utils; + +import com.zy.core.model.command.ForkLiftCommand; +import org.springframework.stereotype.Component; + +/** + * 璐у弶鎻愬崌鏈烘搷浣滃伐鍏风被 + */ +@Component +public class ForkLiftOperaUtils { + + /** + * 鑾峰彇鎻愬崌鏈哄懡浠� + */ + public ForkLiftCommand getLiftCommand(Integer liftNo, Integer taskNo, Integer taskModel, Integer pick, Integer put, Integer confirm) { + ForkLiftCommand command = new ForkLiftCommand(); + command.setLiftNo(liftNo); + command.setTaskNo(taskNo.shortValue()); + command.setMode(taskModel.shortValue()); + command.setPick(pick.shortValue()); + command.setPut(put.shortValue()); + command.setConfirm(confirm.shortValue()); + return command; + } + +} diff --git a/src/main/java/com/zy/common/utils/ForkLiftUtils.java b/src/main/java/com/zy/common/utils/ForkLiftUtils.java new file mode 100644 index 0000000..044d9e1 --- /dev/null +++ b/src/main/java/com/zy/common/utils/ForkLiftUtils.java @@ -0,0 +1,74 @@ +package com.zy.common.utils; + +import com.core.common.SpringUtils; +import com.zy.asrs.utils.Utils; +import com.zy.common.model.NavigateNode; +import com.zy.core.cache.SlaveConnection; +import com.zy.core.enums.SlaveType; +import com.zy.core.model.ForkLiftSlave; +import com.zy.core.model.protocol.ForkLiftStaProtocol; +import com.zy.core.properties.SlaveProperties; +import com.zy.core.thread.ForkLiftThread; + +import java.util.ArrayList; +import java.util.List; + +/** + * 璐у弶鎻愬崌鏈哄伐鍏风被 + */ +public class ForkLiftUtils { + + //鑾峰彇鎻愬崌鏈虹珯鐐� + public static ForkLiftStaProtocol getLiftStaByStaNo(Integer staNo) { + SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class); + for (ForkLiftSlave liftSlave : slaveProperties.getForkLift()) { + ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftSlave.getId()); + if (forkLiftThread == null) { + return null; + } + + for (ForkLiftStaProtocol forkLiftStaProtocol : forkLiftThread.getForkLiftStaProtocols()) { + if (forkLiftStaProtocol.getStaNo().equals(staNo)) { + return forkLiftStaProtocol; + } + } + } + + return null; + } + + + //鑾峰彇鎻愬崌鏈虹珯鐐� + public static ForkLiftStaProtocol getLiftStaByLev(Integer liftNo, Integer lev) { + ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); + if (forkLiftThread == null) { + return null; + } + + for (ForkLiftStaProtocol forkLiftStaProtocol : forkLiftThread.getForkLiftStaProtocols()) { + if (forkLiftStaProtocol.getLev().equals(lev)) { + return forkLiftStaProtocol; + } + } + + return null; + } + + //鑾峰彇鎻愬崌鏈鸿緭閫佺珯鍙婂叾鍓嶄竴绔欒妭鐐� + public static List<NavigateNode> getLiftStaNodes(Integer staNo) { + List<NavigateNode> targetNodes = new ArrayList<>(); + //鑾峰彇鐩爣绔� + ForkLiftStaProtocol targetLiftSta = ForkLiftUtils.getLiftStaByStaNo(staNo); + if (targetLiftSta == null) { + return null;//鎵句笉鍒扮珯鐐� + } + NavigateNode targetNode = NavigatePositionConvert.locNoToNode(targetLiftSta.getLocNo());//鐩爣鑺傜偣 + String targetLastLocNo = Utils.getLocNo(Utils.getRow(targetLiftSta.getLocNo()) - 1, Utils.getBay(targetLiftSta.getLocNo()), Utils.getLev(targetLiftSta.getLocNo()));//鐩爣鑺傜偣鍓嶄竴绔� + NavigateNode targetLastNode = NavigatePositionConvert.locNoToNode(targetLastLocNo);//鐩爣鑺傜偣鍓嶄竴绔� + targetNodes.add(targetNode); + targetNodes.add(targetLastNode); + + return targetNodes; + } + +} diff --git a/src/main/java/com/zy/common/utils/NavigateMapData.java b/src/main/java/com/zy/common/utils/NavigateMapData.java index a81489e..66a14d2 100644 --- a/src/main/java/com/zy/common/utils/NavigateMapData.java +++ b/src/main/java/com/zy/common/utils/NavigateMapData.java @@ -1,24 +1,18 @@ package com.zy.common.utils; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.core.common.SpringUtils; import com.zy.asrs.entity.BasMap; import com.zy.asrs.entity.LocMast; -import com.zy.asrs.service.BasShuttleService; import com.zy.asrs.service.LocMastService; import com.zy.common.model.MapNode; -import com.zy.common.model.NavigateNode; import com.zy.common.model.enums.NavigationMapType; import com.zy.core.enums.RedisKeyType; -import com.zy.core.enums.ShuttleTaskModeType; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Component; import java.io.*; import java.util.ArrayList; -import java.util.Date; import java.util.List; /** @@ -26,16 +20,6 @@ */ @Component public class NavigateMapData { - -// private Integer lev;//鍦板浘妤煎眰 -// -// public Integer getLev() { -// return lev; -// } -// -// public void setLev(Integer lev) { -// this.lev = lev; -// } public int[][] getData(Integer lev, Integer mapType, List<int[]> whitePoints, List<int[]> shuttlePoints) { try { diff --git a/src/main/java/com/zy/common/utils/NavigatePositionConvert.java b/src/main/java/com/zy/common/utils/NavigatePositionConvert.java index 7c5aa60..76a2bfd 100644 --- a/src/main/java/com/zy/common/utils/NavigatePositionConvert.java +++ b/src/main/java/com/zy/common/utils/NavigatePositionConvert.java @@ -1,9 +1,8 @@ package com.zy.common.utils; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.SpringUtils; -import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.LocMast; -import com.zy.asrs.service.BasDevpService; import com.zy.asrs.service.LocMastService; import com.zy.asrs.utils.Utils; import com.zy.common.model.NavigateNode; @@ -13,6 +12,34 @@ */ public class NavigatePositionConvert { + public static String xyToPosition(int x, int y, int z) { + String locNo = Utils.getLocNo(x, y, z); + + //搴撲綅鍙疯浆灏忚溅浜岀淮鐮� + LocMastService locMastService = SpringUtils.getBean(LocMastService.class); + LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() + .eq("loc_no", locNo) + .eq("status", 1)); + if (locMast == null) { + return null; + } + return locMast.getQrCodeValue(); + } + + //灏忚溅鏉″舰鐮佽浆璺緞绠楁硶鑺傜偣 + public static NavigateNode codeToNode(String code) { + LocMastService locMastService = SpringUtils.getBean(LocMastService.class); + LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() + .eq("qr_code_value", code) + .eq("status", 1)); + if (locMast == null) { + return null; + } + NavigateNode node = new NavigateNode(locMast.getRow1(), locMast.getBay1()); + node.setZ(locMast.getLev1()); + return node; + } + //鍧愭爣缂栧彿杞瑇y杞� public static int[] positionToXY(String position) { int col = Integer.parseInt(position.substring(0, 2)); diff --git a/src/main/java/com/zy/common/utils/NavigateSolution.java b/src/main/java/com/zy/common/utils/NavigateSolution.java index 2ad8529..d9887d3 100644 --- a/src/main/java/com/zy/common/utils/NavigateSolution.java +++ b/src/main/java/com/zy/common/utils/NavigateSolution.java @@ -1,27 +1,38 @@ package com.zy.common.utils; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.SpringUtils; +import com.core.exception.CoolException; import com.zy.common.model.NavigateNode; +import com.zy.core.enums.MapNodeType; +import com.zy.core.model.PythonResult; +import com.zy.system.entity.Config; +import com.zy.system.service.ConfigService; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.PriorityQueue; /** + * 鍥涘悜搴撴牳蹇� * A*绠楁硶瀹炵幇绫� */ public class NavigateSolution { - // -1 -> 澧欏锛� 1 -> 璧风偣 2 -> 缁堢偣 3-> 姣嶈建 4->绔欑偣 + // -1 -> 澧欏锛� 0 -> 璐т綅锛� 1 -> 璧风偣 2 -> 缁堢偣 3-> 姣嶈建 4->杈撻�佺珯鐐� 5->鍏呯數妗� 6->灏忚溅鍙蛋杈撻�佺珯鐐� 66->灏忚溅 67->鎻愬崌鏈� int[][] map = {{}}; public NavigateSolution(Integer mapType, Integer lev, List<int[]> whitePoints, List<int[]> shuttlePoints) { //杞藉叆鍦板浘鎸囧畾灞傞珮鍦板浘 - NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); - int[][] data = navigateMapData.getDataFromRedis(lev, mapType, whitePoints, shuttlePoints); + NavigateMapData mapData = SpringUtils.getBean(NavigateMapData.class); + int[][] data = mapData.getDataFromRedis(lev, mapType, whitePoints, shuttlePoints); if (data == null) { - data = navigateMapData.getData(lev, mapType, whitePoints, shuttlePoints); + throw new CoolException("鍦板浘鏈浇鍏ワ紒"); } this.map = data; } @@ -37,56 +48,115 @@ //Exist琛ㄧ敤鏉ュ瓨鏀惧凡缁忓嚭鐜拌繃鐨勭粨鐐广�� public ArrayList<NavigateNode> Exist = new ArrayList<NavigateNode>(); - public NavigateNode astarSearch(NavigateNode start, NavigateNode end) { - //鎶婄涓�涓紑濮嬬殑缁撶偣鍔犲叆鍒癘pen琛ㄤ腑 - this.Open.add(start); - //鎶婂嚭鐜拌繃鐨勭粨鐐瑰姞鍏ュ埌Exist琛ㄤ腑 - this.Exist.add(start); - //涓诲惊鐜� - while (Open.size() > 0) { - //鍙栦紭鍏堥槦鍒楅《閮ㄥ厓绱犲苟涓旀妸杩欎釜鍏冪礌浠嶰pen琛ㄤ腑鍒犻櫎 - NavigateNode current_node = Open.poll(); - //灏嗚繖涓粨鐐瑰姞鍏ュ埌Close琛ㄤ腑 - Close.add(current_node); - //瀵瑰綋鍓嶇粨鐐硅繘琛屾墿灞曪紝寰楀埌涓�涓洓鍛ㄧ粨鐐圭殑鏁扮粍 - ArrayList<NavigateNode> neighbour_node = extend_current_node(current_node); - //瀵硅繖涓粨鐐归亶鍘嗭紝鐪嬫槸鍚︽湁鐩爣缁撶偣鍑虹幇 - for (NavigateNode node : neighbour_node) { - // G + H + E (瀵瑰惎鍙戝嚱鏁板鍔犲幓鎷愮偣鏂规calcNodeExtraCost) - int gCost = calcNodeCost(current_node, node) + calcNodeExtraCost(current_node, node, end); - if (node.getX() == end.getX() && node.getY() == end.getY()) {//鎵惧埌鐩爣缁撶偣灏辫繑鍥� - //init_node鎿嶄綔鎶婅繖涓偦灞呯粨鐐圭殑鐖惰妭鐐硅缃负褰撳墠缁撶偣 - //骞朵笖璁$畻鍑篏锛� F锛� H绛夊�� - node.init_node(current_node, end); - return node; - } + public String astarSearch(NavigateNode start, NavigateNode end, String pythonScriptPath) { + String maps = JSON.toJSONString(map); + String startStr = start.getX() + "-" + start.getY(); + String targetStr = end.getX() + "-" + end.getY(); - //(瀵瑰惎鍙戝嚱鏁板鍔犲幓鎷愮偣鏂规calcNodeExtraCost) - if (is_exist(node)) { - if (gCost < node.getG()) { - node.setFather(current_node); - node.setG(gCost); - node.setF(node.getG() + node.getH()); - } - }else { - //娌″嚭鐜拌繃鐨勭粨鐐瑰姞鍏ュ埌Open琛ㄤ腑骞朵笖璁剧疆鐖惰妭鐐� - //杩涜璁$畻瀵笹, F, H 绛夊�� - node.init_node(current_node, end); - node.setG(gCost); - node.setH(calcNodeCost(node, end)); - node.setF(node.getG() + node.getH()); - - Open.add(node); - Exist.add(node); - } + //榛樿鍦板浘姣嶈建鏂瑰悜x + String mapDirection = "x"; + ConfigService configService = SpringUtils.getBean(ConfigService.class); + if (configService != null) { + Config config = configService.selectOne(new EntityWrapper<Config>() + .eq("code", "direction_map") + .eq("status", 1)); + if (config != null) { + mapDirection = config.getValue(); } } - //濡傛灉閬嶅巻瀹屾墍鏈夊嚭鐜扮殑缁撶偣閮芥病鏈夋壘鍒版渶缁堢殑缁撶偣锛岃繑鍥瀗ull + + ProcessBuilder processBuilder = new ProcessBuilder("python", pythonScriptPath, maps, startStr, targetStr, mapDirection); + processBuilder.redirectErrorStream(true); + + try { + Process process = processBuilder.start(); + + // 璇诲彇Python鑴氭湰鐨勮緭鍑� + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + String line; + StringBuilder builder = new StringBuilder(); + while ((line = reader.readLine()) != null) { + builder.append(line); + } + + // 绛夊緟Python鑴氭湰鎵ц瀹屾垚 + int exitCode = process.waitFor(); + if (exitCode != 0) { + System.out.println("Python script exited with error code: " + exitCode); + return null; + } + reader.close(); + + if (builder.length() <= 0) { + return null; + } + + PythonResult result = JSON.parseObject(builder.toString(), PythonResult.class); + if (result.getCalcResult() != 200) { + return null; + } + + String path = result.getPath(); + return path; + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } return null; } +// public NavigateNode astarSearch(NavigateNode start, NavigateNode end) { +// //鎶婄涓�涓紑濮嬬殑缁撶偣鍔犲叆鍒癘pen琛ㄤ腑 +// this.Open.add(start); +// //鎶婂嚭鐜拌繃鐨勭粨鐐瑰姞鍏ュ埌Exist琛ㄤ腑 +// this.Exist.add(start); +// //涓诲惊鐜� +// while (Open.size() > 0) { +// //鍙栦紭鍏堥槦鍒楅《閮ㄥ厓绱犲苟涓旀妸杩欎釜鍏冪礌浠嶰pen琛ㄤ腑鍒犻櫎 +// NavigateNode current_node = Open.poll(); +// //灏嗚繖涓粨鐐瑰姞鍏ュ埌Close琛ㄤ腑 +// Close.add(current_node); +// //瀵瑰綋鍓嶇粨鐐硅繘琛屾墿灞曪紝寰楀埌涓�涓洓鍛ㄧ粨鐐圭殑鏁扮粍 +// ArrayList<NavigateNode> neighbour_node = extend_current_node(current_node); +// //瀵硅繖涓粨鐐归亶鍘嗭紝鐪嬫槸鍚︽湁鐩爣缁撶偣鍑虹幇 +// for (NavigateNode node : neighbour_node) { +// // G + H + E (瀵瑰惎鍙戝嚱鏁板鍔犲幓鎷愮偣鏂规calcNodeExtraCost) +// int gCost = calcNodeCost(current_node, node) * calcNodeExtraCost(current_node, node, end); +// if (node.getX() == end.getX() && node.getY() == end.getY()) {//鎵惧埌鐩爣缁撶偣灏辫繑鍥� +// //init_node鎿嶄綔鎶婅繖涓偦灞呯粨鐐圭殑鐖惰妭鐐硅缃负褰撳墠缁撶偣 +// //骞朵笖璁$畻鍑篏锛� F锛� H绛夊�� +// node.setLastDistance(gCost); +// node.init_node(current_node, end); +// return node; +// } +// +// //杩涜璁$畻瀵笹, F, H 绛夊�� +// node.setLastDistance(gCost); +// node.init_node(current_node, end); +// node.setH(calcNodeCost(node, end)); +// node.setF(node.getG() + node.getH()); +// +// Open.add(node); +// Exist.add(node); +// } +// } +// //濡傛灉閬嶅巻瀹屾墍鏈夊嚭鐜扮殑缁撶偣閮芥病鏈夋壘鍒版渶缁堢殑缁撶偣锛岃繑鍥瀗ull +// return null; +// } + public ArrayList<NavigateNode> extend_current_node(NavigateNode current_node) { + //榛樿鍦板浘姣嶈建鏂瑰悜x + String mapDirection = "x"; + ConfigService configService = SpringUtils.getBean(ConfigService.class); + if (configService != null) { + Config config = configService.selectOne(new EntityWrapper<Config>() + .eq("config", "direction_map") + .eq("status", 1)); + if (config != null) { + mapDirection = config.getValue(); + } + } + //鑾峰彇褰撳墠缁撶偣鐨剎, y int x = current_node.getX(); int y = current_node.getY(); @@ -119,31 +189,62 @@ // neighbour_node.add(node); // } // } - if (map[x][y] == 3) { - //姣嶈建鎵嶈兘杩涜宸﹀彸绉诲姩 - if (is_valid(x, y + 1)) - { - NavigateNode node = new NavigateNode(x, y + 1); - neighbour_node.add(node); - } - if (is_valid(x, y - 1)) - { - NavigateNode node = new NavigateNode(x, y - 1); - neighbour_node.add(node); - } - } - if (map[x][y] == 0 || map[x][y] == 3 || map[x][y] == 4 || map[x][y] == 5) { - //瀛愯建鍜屾瘝杞ㄣ�佽緭閫佺嚎銆佸厖鐢垫々鎵嶈兘杩涜涓婁笅绉诲姩 - if (is_valid(x + 1, y)) - { - NavigateNode node = new NavigateNode(x + 1, y); - neighbour_node.add(node); + if (mapDirection.equals("x")) {//姣嶈建x鏂瑰悜 + if (map[x][y] == MapNodeType.MAIN_PATH.id) { + //姣嶈建鎵嶈兘杩涜涓婁笅绉诲姩 + if (is_valid(x + 1, y)) + { + NavigateNode node = new NavigateNode(x + 1, y); + neighbour_node.add(node); + } + if (is_valid(x - 1, y)) + { + NavigateNode node = new NavigateNode(x -1, y); + neighbour_node.add(node); + } } - if (is_valid(x - 1, y)) - { - NavigateNode node = new NavigateNode(x -1, y); - neighbour_node.add(node); + + if (map[x][y] == MapNodeType.NORMAL_PATH.id || map[x][y] == MapNodeType.MAIN_PATH.id || map[x][y] == MapNodeType.CONVEYOR_CAR_GO.id || map[x][y] == MapNodeType.CHARGE.id || map[x][y] == MapNodeType.LIFT.id) { + //瀛愯建鍜屾瘝杞ㄣ�佸皬杞﹀彲璧拌緭閫佺嚎銆佸厖鐢垫々銆佹彁鍗囨満鎵嶈兘杩涜宸﹀彸绉诲姩 + if (is_valid(x, y + 1)) + { + NavigateNode node = new NavigateNode(x, y + 1); + neighbour_node.add(node); + } + if (is_valid(x, y - 1)) + { + NavigateNode node = new NavigateNode(x, y - 1); + neighbour_node.add(node); + } + } + }else if (mapDirection.equals("y")) {//姣嶈建y鏂瑰悜 + if (map[x][y] == MapNodeType.MAIN_PATH.id) { + //姣嶈建鎵嶈兘杩涜宸﹀彸绉诲姩 + if (is_valid(x, y + 1)) + { + NavigateNode node = new NavigateNode(x, y + 1); + neighbour_node.add(node); + } + if (is_valid(x, y - 1)) + { + NavigateNode node = new NavigateNode(x, y - 1); + neighbour_node.add(node); + } + } + + if (map[x][y] == MapNodeType.NORMAL_PATH.id || map[x][y] == MapNodeType.MAIN_PATH.id || map[x][y] == MapNodeType.CONVEYOR_CAR_GO.id || map[x][y] == MapNodeType.CHARGE.id || map[x][y] == MapNodeType.LIFT.id) { + //瀛愯建鍜屾瘝杞ㄣ�佸皬杞﹀彲璧拌緭閫佺嚎銆佸厖鐢垫々銆佹彁鍗囨満鎵嶈兘杩涜涓婁笅绉诲姩 + if (is_valid(x + 1, y)) + { + NavigateNode node = new NavigateNode(x + 1, y); + neighbour_node.add(node); + } + if (is_valid(x - 1, y)) + { + NavigateNode node = new NavigateNode(x -1, y); + neighbour_node.add(node); + } } } @@ -151,16 +252,21 @@ } public boolean is_valid(int x, int y) { + if (x < 0 || x >= this.map.length + || y < 0 || y >= this.map[0].length) { + return false; + } // 濡傛灉缁撶偣鐨勪綅缃皬浜�0锛屽垯涓嶅悎娉� - if (map[x][y] < 0) return false; - for (NavigateNode node : Exist) { - //濡傛灉缁撶偣鍑虹幇杩囷紝涓嶅悎娉� - if (node.getX() == x && node.getY() == y) { - return false; - } - if (is_exist(new NavigateNode(x, y))) { - return false; - } + if (map[x][y] < 0) { + return false; + } + + if (map[x][y] == MapNodeType.CAR.id) {//鑺傜偣鏄皬杞� + return false; + } + NavigateNode navigateNode = new NavigateNode(x, y); + if (is_exist(navigateNode)) { + return false; } //浠ヤ笂鎯呭喌閮芥病鏈夊垯鍚堟硶 return true; @@ -188,23 +294,12 @@ // 绗竴涓偣鎴栫洿绾跨偣 if (currNode.getFather() == null || nextNode.getX() == currNode.getFather().getX() || nextNode.getY() == currNode.getFather().getY()) { - return 0; + return 1; } // 鎷愬悜缁堢偣鐨勭偣 if (nextNode.getX() == endNode.getX() || nextNode.getY() == endNode.getY()) { - return 1; - } - - // 鎷愬悜涓昏建閬撶殑鐐� - if (map[nextNode.getX()][nextNode.getY()] == 3) { - //------------------涓夊嚡鐙壒鍒ゆ柇------------------// - if (nextNode.getX() == 15) { - return 2;//褰卞搷绠楁硶锛屼笉瑕佸湪15鎺掕繖涓富杞ㄩ亾鎹㈠悜 - } - //------------------涓夊嚡鐙壒鍒ゆ柇------------------// - - return 0; + return 2; } // 鏅�氭嫄鐐� diff --git a/src/main/java/com/zy/common/utils/NavigateUtils.java b/src/main/java/com/zy/common/utils/NavigateUtils.java index 8db9603..4e02d8e 100644 --- a/src/main/java/com/zy/common/utils/NavigateUtils.java +++ b/src/main/java/com/zy/common/utils/NavigateUtils.java @@ -1,24 +1,35 @@ package com.zy.common.utils; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.core.common.SpringUtils; import com.zy.asrs.utils.Utils; import com.zy.common.model.MapNode; import com.zy.common.model.NavigateNode; import com.zy.common.model.enums.NavigationMapType; -import com.zy.core.cache.SlaveConnection; -import com.zy.core.enums.ShuttleTaskModeType; -import com.zy.core.enums.SlaveType; -import com.zy.core.model.protocol.NyShuttleProtocol; -import com.zy.core.thread.NyShuttleThread; +import com.zy.core.News; +import com.zy.core.enums.MapNodeType; +import com.zy.core.model.PythonSimilarityResult; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import java.io.BufferedReader; +import java.io.InputStreamReader; import java.util.*; /** * A*绠楁硶浣跨敤宸ュ叿 */ +@Component public class NavigateUtils { - public static List<NavigateNode> calc(String startPoint, String endPoint, Integer mapType, List<int[]> shuttlePoints, List<int[]> whites) { + @Value("${pythonCalcPath}") + private String pythonCalcPath; + + @Value("${pythonCalcSimilarity}") + private String pythonCalcSimilarity; + + public List<NavigateNode> calc(String startPoint, String endPoint, Integer mapType, List<int[]> shuttlePoints, List<int[]> whites) { //閫氳繃寮�濮嬬紪鍙峰拰缁撴潫缂栧彿鑾峰彇瀵瑰簲鐨剎y杞村潗鏍� int[] startArr = NavigatePositionConvert.positionToXY(startPoint);//寮�濮嬭妭鐐� int[] endArr = NavigatePositionConvert.positionToXY(endPoint);//缁撴潫鑺傜偣 @@ -41,56 +52,61 @@ NavigateSolution solution = new NavigateSolution(mapType, lev, whiteList, shuttlePoints); //寮�濮嬭妭鐐癸紝涓嶇撼鍏ョ鐢ㄨ妭鐐瑰唴璁$畻 - NavigateNode res_node = solution.astarSearch(start, end); - if (res_node == null) { - System.out.println(start + "," + end + "锛氭湭鎵惧埌璺緞"); + String pathStr = solution.astarSearch(start, end, pythonCalcPath); + if (pathStr == null) { + News.error("{} dash {} can't find navigate path!", startPoint, endPoint); return null; - } else { - ArrayList<NavigateNode> list = new ArrayList<>(); - - //娓叉煋 - NavigateNode fatherNode = null;//褰撳墠寰幆涓婁竴鑺傜偣锛岀敤浜庢嫄鐐硅绠� - while (res_node != null) { - res_node.setDirection(null); - res_node.setIsInflectionPoint(false); - res_node.setZ(lev);//璁剧疆灞傞珮 - - //瀵绘壘鎷愮偣 - HashMap<String, Object> result = searchInflectionPoint(res_node, fatherNode, res_node.getFather());//鍒嗗埆浼犲叆褰撳墠鑺傜偣銆佺埗鑺傜偣銆佷笅涓�鑺傜偣 - //鍒ゆ柇褰撳墠鑺傜偣鏄惁涓烘嫄鐐� - if (Boolean.parseBoolean(result.get("result").toString())) { - //褰撳墠涓烘嫄鐐� - res_node.setIsInflectionPoint(true); - //鎷愮偣鏂瑰悜 - res_node.setDirection(result.get("direction").toString()); - } - list.add(res_node); - - fatherNode = res_node;//鎶婂綋鍓嶈妭鐐逛繚瀛樻垚涓�涓埗鑺傜偣 - res_node = res_node.getFather();//杩唬鎿嶄綔 - } - - Collections.reverse(list); - - //灏嗘瘡涓妭鐐归噷闈㈢殑fatherNode鑷充负null(鏂逛究鍚庣画璁$畻鏃剁埗鑺傜偣杩囧瀵艰嚧鏄剧ず鐨勮妭鐐瑰お澶�) - for (NavigateNode navigateNode : list) { - //鐖惰妭鐐硅缃负null锛屼笉褰卞搷璁$畻缁撴灉锛屼笉褰卞搷鍚庣画鎿嶄綔銆� - //姝ゆ搷浣滀粎涓哄悗缁帓鏌ュ鐞嗘彁渚涜瑙夋柟渚裤�� - navigateNode.setFather(null); - } - - //璧峰鑺傜偣璁$畻鏂瑰悜 - String direction = calcDirection(list.get(0), list.get(1)); - NavigateNode startNode = list.get(0); - startNode.setDirection(direction); - //鏇存柊鑺傜偣鍒楄〃 - list.set(0, startNode); - return list; } + + List<NavigateNode> list = new ArrayList<>(); + + NavigateNode fatherNode = null;//褰撳墠寰幆涓婁竴鑺傜偣锛岀敤浜庢嫄鐐硅绠� + JSONArray rows = JSON.parseArray(pathStr); + + for (int i = 0; i < rows.size(); i++) { + Object currentObj = rows.get(i); + + NavigateNode nextNode = null; + if ((i + 1) < rows.size()) { + Object object = rows.get(i + 1); + nextNode = pythonObjTransferNode(object, lev); + } + + NavigateNode node = pythonObjTransferNode(currentObj, lev); + + //瀵绘壘鎷愮偣 + HashMap<String, Object> result = searchInflectionPoint(node, fatherNode, nextNode);//鍒嗗埆浼犲叆褰撳墠鑺傜偣銆佺埗鑺傜偣銆佷笅涓�鑺傜偣 + //鍒ゆ柇褰撳墠鑺傜偣鏄惁涓烘嫄鐐� + if (Boolean.parseBoolean(result.get("result").toString())) { + //褰撳墠涓烘嫄鐐� + node.setIsInflectionPoint(true); + //鎷愮偣鏂瑰悜 + node.setDirection(result.get("direction").toString()); + } + + list.add(node); + + fatherNode = node;//鎶婂綋鍓嶈妭鐐逛繚瀛樻垚涓�涓埗鑺傜偣 + } + + //灏嗘瘡涓妭鐐归噷闈㈢殑fatherNode鑷充负null(鏂逛究鍚庣画璁$畻鏃剁埗鑺傜偣杩囧瀵艰嚧鏄剧ず鐨勮妭鐐瑰お澶�) + for (NavigateNode navigateNode : list) { + //鐖惰妭鐐硅缃负null锛屼笉褰卞搷璁$畻缁撴灉锛屼笉褰卞搷鍚庣画鎿嶄綔銆� + //姝ゆ搷浣滀粎涓哄悗缁帓鏌ュ鐞嗘彁渚涜瑙夋柟渚裤�� + navigateNode.setFather(null); + } + + //璧峰鑺傜偣璁$畻鏂瑰悜 + String direction = calcDirection(list.get(0), list.get(1)); + NavigateNode startNode = list.get(0); + startNode.setDirection(direction); + //鏇存柊鑺傜偣鍒楄〃 + list.set(0, startNode); + return list; } //鍒ゆ柇褰撳墠鑺傜偣鍒颁笅涓�涓妭鐐规槸鍚︿负鎷愮偣 - public static HashMap<String,Object> searchInflectionPoint(NavigateNode currentNode, NavigateNode fatherNode, NavigateNode nextNode) { + public HashMap<String,Object> searchInflectionPoint(NavigateNode currentNode, NavigateNode fatherNode, NavigateNode nextNode) { HashMap<String, Object> map = new HashMap<>(); map.put("result", false);//鏄惁涓烘嫄鐐癸紝true锛氭嫄鐐癸紝false锛氱洿绾� // 绗竴涓偣鎴栫洿绾跨偣 @@ -109,7 +125,7 @@ /** * 璁$畻鏂瑰悜 */ - public static String calcDirection(NavigateNode currentNode, NavigateNode fatherNode) { + public String calcDirection(NavigateNode currentNode, NavigateNode fatherNode) { //鎷愮偣鏂瑰悜 String direction = ""; // 鏅�氭嫄鐐� @@ -142,30 +158,30 @@ } /** + * 鍔犺浆寮妭鐐� * 鑾峰彇鍒嗘璺緞锛屾瘡褰撴湁涓�涓嫄鐐瑰垯杩涜涓�娆″垎娈碉紝鏈�缁堣繑鍥炴�诲垎娈垫暟鎹� */ - public static ArrayList<ArrayList<NavigateNode>> getSectionPath(List<NavigateNode> mapList) { + public ArrayList<ArrayList<NavigateNode>> getSectionPath(List<NavigateNode> mapList) { ArrayList<ArrayList<NavigateNode>> list = new ArrayList<>(); + ArrayList<NavigateNode> data = new ArrayList<>(); String direction = mapList.get(0).getDirection();//琛岃蛋鏂瑰悜 - for (int i = 0; i < mapList.size(); i++) { - NavigateNode mapNode = mapList.get(i); - boolean isInflectionPoint = mapNode.getIsInflectionPoint(); - data.add(mapNode); - if (isInflectionPoint) { - //鎷愮偣 + for (NavigateNode navigateNode : mapList) { + data.add(navigateNode); + //鎷愮偣 + if (navigateNode.getIsInflectionPoint()) { //鍒嗗壊鏁版嵁 list.add(data);//娣诲姞鏌愪竴娈垫暟鎹� - direction = mapNode.getDirection();//鏇存柊琛岃蛋鏂瑰悜 + direction = navigateNode.getDirection();//鏇存柊琛岃蛋鏂瑰悜 data = new ArrayList<>(); - data.add(mapNode);//灏嗘嫄鐐圭殑缁堢偣锛屾洿鏂版垚涓嬩竴娈靛懡浠ょ殑璧风偣鍧愭爣 - }else { + data.add(navigateNode);//灏嗘嫄鐐圭殑缁堢偣锛屾洿鏂版垚涓嬩竴娈靛懡浠ょ殑璧风偣鍧愭爣 + } else { //鐩磋绾胯矾 - mapNode.setDirection(direction);//璁剧疆琛岃蛋鏂瑰悜 + navigateNode.setDirection(direction);//璁剧疆琛岃蛋鏂瑰悜 } - Integer distance = getXToNextDistance(mapNode);//鑾峰彇褰撳墠鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈 - mapNode.setMoveDistance(distance); + Integer distance = getXToNextDistance(navigateNode);//鑾峰彇褰撳墠鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈 + navigateNode.setMoveDistance(distance); } //灏嗘渶鍚庝竴娈垫暟鎹坊鍔犺繘鍏� @@ -175,10 +191,9 @@ } //鑾峰彇浠巟鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈 - public static Integer getXToNextDistance(NavigateNode xNode) { - NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); - - List<List<MapNode>> lists = navigateMapData.getJsonData(xNode.getZ(), NavigationMapType.NONE.id, null, null); + public Integer getXToNextDistance(NavigateNode xNode) { + NavigateMapData mapData = SpringUtils.getBean(NavigateMapData.class); + List<List<MapNode>> lists = mapData.getJsonData(xNode.getZ(), NavigationMapType.NONE.id, null, null); if (lists != null) { MapNode mapNode = lists.get(xNode.getX()).get(xNode.getY()); if (mapNode != null) { @@ -201,11 +216,11 @@ /** * 鏍规嵁鍘熷鑺傜偣缁撴灉锛岃绠楁�昏璧拌窛绂� */ - public static Integer getOriginPathAllDistance(List<NavigateNode> path) { - ArrayList<ArrayList<NavigateNode>> sectionPath = NavigateUtils.getSectionPath(path); + public Integer getOriginPathAllDistance(List<NavigateNode> path) { + ArrayList<ArrayList<NavigateNode>> sectionPath = getSectionPath(path); Integer allDistance = 0; for (ArrayList<NavigateNode> navigateNodes : sectionPath) { - Integer distance = NavigateUtils.getCurrentPathAllDistance(navigateNodes); + Integer distance = getCurrentPathAllDistance(navigateNodes); allDistance += distance; } return allDistance; @@ -214,7 +229,7 @@ /** * 鑾峰彇褰撳墠璺緞鎬昏璧拌窛绂� */ - public static Integer getCurrentPathAllDistance(List<NavigateNode> path) { + public Integer getCurrentPathAllDistance(List<NavigateNode> path) { if (path.size() == 1) { //璺緞鍙湁涓�鏉℃暟鎹紝鍒欑洿鎺ヨ繑鍥炶璧拌窛绂� return path.get(0).getMoveDistance(); @@ -231,7 +246,7 @@ /** * 鑾峰彇涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂� */ - public static Integer getMiddleToDistDistance(List<NavigateNode> path, NavigateNode middlePath) { + public Integer getMiddleToDistDistance(List<NavigateNode> path, NavigateNode middlePath) { //鏈�鍚庝竴鏉¤妭鐐逛笉璁$畻杩涜璧拌窛绂� NavigateNode lastPath = path.get(path.size() - 1); //鎬昏窛绂� @@ -256,46 +271,95 @@ /** * 妫�娴嬭矾寰勬槸鍚﹀彲鐢�(鍙蛋) */ - public static boolean checkPathIsAvailable(List<NavigateNode> path, Integer shuttleNo, Integer lev, List<int[]> whitePoints) { - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - - Integer mapType = NavigationMapType.DFX.id; - if (shuttleProtocol.getLiftPosition() == 1) { - //涓嬮檷浣嶇疆 - mapType = NavigationMapType.NORMAL.id; - } - - NavigateSolution solution = new NavigateSolution(mapType, lev, whitePoints, Utils.getShuttlePoints(shuttleNo, lev));//鑾峰彇鏃犵櫧鍚嶅崟鍦板浘(璇ュ湴鍥惧寘鍚皬杞﹀潗鏍�) + public boolean checkPathIsAvailable(List<NavigateNode> path, Integer shuttleNo, Integer lev) { + NavigateSolution solution = new NavigateSolution(NavigationMapType.DFX.id, lev, null, Utils.getShuttlePoints(shuttleNo, lev));//鑾峰彇鏃犵櫧鍚嶅崟鍦板浘(璇ュ湴鍥惧寘鍚皬杞﹀潗鏍�) int[][] map = solution.map; for (NavigateNode node : path) { int value = map[node.getX()][node.getY()]; - if (value != 0 && value != 3 && value != 5) {//姣嶈建閬�3銆佸瓙杞ㄩ亾0銆佸厖鐢垫々5 + if (value != MapNodeType.NORMAL_PATH.id && value != MapNodeType.MAIN_PATH.id && value != MapNodeType.CHARGE.id && value != MapNodeType.CONVEYOR_CAR_GO.id) {//姣嶈建閬�3銆佸瓙杞ㄩ亾0銆佸厖鐢垫々5銆佸皬杞﹀彲璧拌緭閫佺珯 return false; } } return true; } - public static void main(String[] args) { - //璁$畻璺緞 - List<NavigateNode> calc = calc("1000901", "1800201", NavigationMapType.NONE.id, null, null); - System.out.println(calc); - System.out.println("------------------------"); -// List<NavigateNode> calc = calc("0501401", "0201801", "out"); - //灏嗚矾寰勫垎鍓叉垚澶氭 - ArrayList<ArrayList<NavigateNode>> data = getSectionPath(calc); - for (ArrayList<NavigateNode> list : data) { - Integer currentPathAllDistance = getCurrentPathAllDistance(list);//璁$畻褰撳墠璺緞鎬昏窛绂� - System.out.println(currentPathAllDistance); - System.out.println(list); + private NavigateNode pythonObjTransferNode(Object obj, Integer z) { + List<Integer> pathData = JSON.parseArray(obj.toString(), Integer.class); + Integer x = pathData.get(0); + Integer y = pathData.get(1); + + NavigateNode node = new NavigateNode(x, y); + node.setDirection(null); + node.setIsInflectionPoint(false); + node.setZ(z); + return node; + } + + public Double similarityPath(List<NavigateNode> firstPath, List<NavigateNode> secondPath) { + try { + List<int[]> first = new ArrayList<>(); + for (NavigateNode node : firstPath) { + first.add(new int[]{node.getX(), node.getY()}); + } + + List<int[]> second = new ArrayList<>(); + for (NavigateNode node : secondPath) { + second.add(new int[]{node.getX(), node.getY()}); + } + + ProcessBuilder processBuilder = new ProcessBuilder("python", pythonCalcSimilarity, JSON.toJSONString(first), JSON.toJSONString(second)); + processBuilder.redirectErrorStream(true); + + Process process = processBuilder.start(); + + // 璇诲彇Python鑴氭湰鐨勮緭鍑� + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + String line; + StringBuilder builder = new StringBuilder(); + while ((line = reader.readLine()) != null) { + builder.append(line); + } + + // 绛夊緟Python鑴氭湰鎵ц瀹屾垚 + int exitCode = process.waitFor(); + if (exitCode != 0) { + System.out.println("Python script exited with error code: " + exitCode); + return null; + } + reader.close(); + + if (builder.length() <= 0) { + return null; + } + + PythonSimilarityResult result = JSON.parseObject(builder.toString(), PythonSimilarityResult.class); + if (result.getCalcResult() != 200) { + return 0D; + } + + Double similarity = result.getSimilarity(); + return similarity; + } catch (Exception e) { + e.printStackTrace(); } + return 0D; + } + + public static void main(String[] args) { +// //璁$畻璺緞 +// List<NavigateNode> calc = calc("1000901", "1800201", NavigationMapType.NONE.id, null); +// System.out.println(calc); +// System.out.println("------------------------"); +//// List<NavigateNode> calc = calc("0501401", "0201801", "out"); +// //灏嗚矾寰勫垎鍓叉垚澶氭 +// ArrayList<ArrayList<NavigateNode>> data = getSectionPath(calc); +// for (ArrayList<NavigateNode> list : data) { +// Integer currentPathAllDistance = getCurrentPathAllDistance(list);//璁$畻褰撳墠璺緞鎬昏窛绂� +// System.out.println(currentPathAllDistance); +// System.out.println(list); +// } + + System.loadLibrary("example"); } diff --git a/src/main/java/com/zy/common/utils/News.java b/src/main/java/com/zy/common/utils/News.java deleted file mode 100644 index 63c8762..0000000 --- a/src/main/java/com/zy/common/utils/News.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.zy.common.utils; - -import lombok.extern.slf4j.Slf4j; - -import java.lang.reflect.Array; -import java.text.SimpleDateFormat; -import java.util.*; - -/** - * news stories for zoneyung - * Created by vincent on 2022/12/22 - */ -@Slf4j -public class News { - - public static void main(String[] args) { - News.info("info{}", 1); - News.warn("warn{}", 2); - News.error("error{}", 3); - System.out.println(News.print()); - } - - interface NewsSupport<T> { boolean execute(T t); } - - private static final NewsQueue<NewsDomain> NEWS_QUEUE = new NewsQueue<>(NewsDomain.class, 1024); - - @SuppressWarnings({"unchecked"}) - static class NewsQueue<T> { - - private final transient Class<T> cls; - private final T[] arr; - private final int capacity; - private int head; - private int tail; - - { this.head = 0; this.tail = 0; } - - public NewsQueue(Class<T> cls, int capacity) { - this.cls = cls; - this.arr = (T[]) Array.newInstance(cls, capacity); - this.capacity = capacity; - } - - public synchronized boolean offer(T t) { - if (this.tail == this.capacity) { - this.peek(); - } - this.reform(); - this.arr[this.tail] = t; - this.tail ++; - return true; - } - - public synchronized boolean put(T t) { - if (this.tail == this.capacity) { - return false; - } else { - this.reform(); - } - this.arr[this.tail] = t; - this.tail ++; - return true; - } - - public synchronized T peek() { - if (this.head == this.tail) { - return null; - } - T t = this.arr[this.head]; - this.head ++; - this.reform(); - return t; - } - - private void reform() { - for (int i = this.head; i < this.tail; i++) { - this.arr[i-this.head] = this.arr[i]; - } - this.tail -= this.head; - this.head = 0; - } - - public synchronized int size() { - return this.tail - this.head; - } - - public synchronized List<T> data() { - T[] ts = (T[]) Array.newInstance(this.cls, size()); - if (this.tail - this.head >= 0) { - System.arraycopy(this.arr, this.head, ts, 0, this.tail - this.head); - } - return Arrays.asList(ts); - } - - } - - public static void info(String format, Object... arguments) { - log.info(format, arguments); - offer(NewsLevel.INFO, format, arguments); - } - - public static void warn(String format, Object... arguments) { - log.warn(format, arguments); - offer(NewsLevel.WARN, format, arguments); - } - - public static void error(String format, Object... arguments) { - log.error(format, arguments); - offer(NewsLevel.ERROR, format, arguments); - } - - public static void infoNoLog(String format, Object... arguments) { - offer(NewsLevel.INFO, format, arguments); - } - - public static void warnNoLog(String format, Object... arguments) { - offer(NewsLevel.WARN, format, arguments); - } - - public static void errorNoLog(String format, Object... arguments) { - offer(NewsLevel.ERROR, format, arguments); - } - - public static String printStr() { - StringBuilder sb = new StringBuilder("["); - List<NewsDomain> domains = NEWS_QUEUE.data(); - for (int i = 0; i < domains.size(); i++) { - NewsDomain domain = domains.get(i); - sb.append("{"); - sb.append("\"l\":").append(domain.level.idx).append(","); - sb.append("\"v\":\"").append(domain.content).append("\"").append(","); - sb.append("\"t\":\"").append(domain.date).append("\""); - sb.append("}"); - if (i < domains.size() - 1) { - sb.append(","); - } - } - sb.append("]"); - return sb.toString(); - } - - public static List<Map<String, Object>> print() { - List<Map<String, Object>> res = new ArrayList<>(); - for (NewsDomain datum : NEWS_QUEUE.data()) { - Map<String, Object> map = new HashMap<>(); - map.put("l", datum.level.idx); - map.put("v", datum.content); - map.put("t", datum.date); - res.add(map); - } - return res; - } - - private static boolean offer(NewsLevel level, String msg, Object[] args) { - return NEWS_QUEUE.offer(new NewsDomain(level, replace(msg, args), (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date()))); - } - - private static String replace(String str, Object[] objs){ - if (null == objs || objs.length == 0 || null == str || "".equals(str.trim())) { - return str; - } else { - StringBuilder sb = new StringBuilder(str); - for (Object obj : objs) { - int idx = sb.indexOf("{}"); - if (idx == -1) { break; } - sb.replace(idx, idx + 2, String.valueOf(obj)); - } - return sb.toString(); - } - } - - static class NewsDomain { - public NewsLevel level; - public String content; - public String date; - - public NewsDomain(NewsLevel level, String content, String date) { - this.level = level; - this.content = content; - this.date = date; - } - } - - enum NewsLevel { - INFO(1), - WARN(2), - ERROR(3), - ; - public int idx; - NewsLevel(int idx) { - this.idx = idx; - } - } - -} diff --git a/src/main/java/com/zy/common/utils/NyHttpUtils.java b/src/main/java/com/zy/common/utils/NyHttpUtils.java deleted file mode 100644 index 5727eed..0000000 --- a/src/main/java/com/zy/common/utils/NyHttpUtils.java +++ /dev/null @@ -1,368 +0,0 @@ -package com.zy.common.utils; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.zy.common.model.NavigateNode; -import com.zy.core.model.command.NyShuttleHttpCommand; -import com.zy.core.model.protocol.NyShuttleProtocol; -import springfox.documentation.spring.web.json.Json; - -import java.io.*; -import java.net.Socket; -import java.util.*; - -/** - * 鐗涚溂鍥涘悜绌挎杞TTP璇锋眰宸ュ叿绫� - */ -public class NyHttpUtils { - - private static final boolean DEBUG = true;//璋冭瘯妯″紡 - - //鑾峰彇HTTP璇锋眰鏍囧噯缁撴瀯浣� - public static NyShuttleHttpCommand getHttpStandard(Integer shuttleNo, Integer wrkNo) { - NyShuttleHttpCommand httpStandard = new NyShuttleHttpCommand(); - httpStandard.setMsgType("requestMsg");//璇锋眰娑堟伅 - httpStandard.setRobotId(shuttleNo);//杞﹁締缂栧彿 - httpStandard.setWrkNo(wrkNo);//宸ヤ綔鍙� - - //璁剧疆璇锋眰娑堟伅 - NyShuttleHttpCommand.NyRequest request = new NyShuttleHttpCommand.NyRequest(); - NyShuttleHttpCommand.NyRequest.NyHeader header = new NyShuttleHttpCommand.NyRequest.NyHeader(); - header.setVersion("1.0");//鐗堟湰鍙� - header.setRequestId(getRequestId());//娑堟伅缂栧彿 - - //璁剧疆璇锋眰澶� - request.setHeader(header); - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇FAS 鎵嬪姩/鑷姩鍒囨崲 - public static NyShuttleHttpCommand getFASSwitchCommand(Integer shuttleNo, boolean auto) { - NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, 9999); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", auto ? "switchAuto" : "switchManual"); - request.setBody(body); - - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇绉诲姩璇锋眰 - public static NyShuttleHttpCommand getMoveCommand(Integer shuttleNo, Integer wrkNo, NavigateNode start, NavigateNode target) { - NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, wrkNo); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", "move");//绉诲姩鍛戒护 - body.put("taskId", getTaskId());//TaskID闇�瑕侀殢鏈� - body.put("start", navigateNodeToNyPointNode(start));//璧风偣 - body.put("target", navigateNodeToNyPointNode(target));//缁堢偣 - request.setBody(body); - - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇杩涘嚭鎻愬崌鏈鸿姹� - public static NyShuttleHttpCommand getInOutLiftCommand(Integer shuttleNo, Integer wrkNo, NavigateNode start, NavigateNode target, boolean in) { - NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, wrkNo); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - NyShuttleProtocol.NyShuttlePointClass nyStartPoint = new NyShuttleProtocol.NyShuttlePointClass(); - NyShuttleProtocol.NyShuttlePointClass nyTargetPoint = new NyShuttleProtocol.NyShuttlePointClass(); - if (in) { - //杩涙彁鍗囨満 - nyStartPoint = navigateNodeToNyPointNode(start); - nyTargetPoint.setX(target.getX()); - nyTargetPoint.setY(target.getY()); - nyTargetPoint.setZ(target.getZ()); - }else { - //鍑烘彁鍗囨満 - nyTargetPoint = navigateNodeToNyPointNode(target); - nyStartPoint.setX(start.getX()); - nyStartPoint.setY(start.getY()); - nyStartPoint.setZ(start.getZ()); - } - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", in ? "intoLift" : "outLift");//杩涘嚭鎻愬崌鏈� - body.put("taskId", getTaskId());//TaskID闇�瑕侀殢鏈� - body.put("start", nyStartPoint);//璧风偣 - body.put("target", nyTargetPoint);//缁堢偣 - request.setBody(body); - - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇椤跺崌鍛戒护 - public static NyShuttleHttpCommand getPalletLiftCommand(Integer shuttleNo, Integer wrkNo, boolean lift) { - NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, wrkNo); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", lift ? "liftUp" : "liftDown");//椤跺崌鎴栦笅闄嶅懡浠� - body.put("taskId", getTaskId());//TaskID闇�瑕侀殢鏈� - request.setBody(body); - - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇鍏呯數鍛戒护 - public static NyShuttleHttpCommand getChargeCommand(Integer shuttleNo, Integer wrkNo, boolean charge) { - NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, wrkNo); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", charge ? "charge" : "stopCharge");//鍏呯數鎴栧仠姝㈠厖鐢� - body.put("taskId", getTaskId());//TaskID闇�瑕侀殢鏈� - request.setBody(body); - - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇绠″埗鍛戒护 - public static NyShuttleHttpCommand getSuspendCommand(Integer shuttleNo, Integer wrkNo, boolean suspend) { - NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, wrkNo); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", suspend ? "stop" : "resume");//绠″埗鎴栧彇娑堢鍒� - body.put("taskId", getTaskId());//TaskID闇�瑕侀殢鏈� - request.setBody(body); - - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇鏇存柊灞傚潗鏍嘮(妤煎眰)鍛戒护 - public static NyShuttleHttpCommand getUpdateZCommand(Integer shuttleNo, Integer z, Integer wrkNo) { - NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, wrkNo); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", "updateFloor");//鏇存柊灞俍 - body.put("z", z);//鍧愭爣Z - request.setBody(body); - - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇璇籉AS鐘舵�佷俊鎭懡浠� - public static NyShuttleHttpCommand getReadStatusCommand(Integer shuttleNo) { - NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, 9999); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", "readState");//璇籉AS鐘舵�佷俊鎭� - request.setBody(body); - - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇鏇存柊FAS鍩哄噯鍦板浘鍛戒护 - public static NyShuttleHttpCommand getUpdateFASBaseMapCommand(Integer shuttleNo, Integer xBase, Integer yBase, Integer zBase, Integer xEnd, Integer yEnd, Integer zEnd, Integer xBaseCoord, Integer yBaseCoord, Integer xDefaultSpace, Integer yDefaultSpace) { - NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, 9999); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", "updateMapStandard");//鏇存柊FAS鍩哄噯鍦板浘 - - HashMap<String, Object> standard = new HashMap<>(); - standard.put("xBase", xBase);//搴撲綅X鍚戝熀鐐� - standard.put("yBase", yBase);//搴撲綅Y鍚戝熀鐐� - standard.put("zBase", zBase);//搴撲綅Z鍚戝熀鐐� - standard.put("xEnd", xEnd);//搴撲綅X鍚戠粓鐐� - standard.put("yEnd", yEnd);//搴撲綅Y鍚戠粓鐐� - standard.put("zEnd", zEnd);//搴撲綅Z鍚戠粓鐐� - standard.put("xBaseCoord", xBaseCoord);//搴撲綅X鍚戝熀鐐瑰潗鏍� 鍗曚綅mm - standard.put("yBaseCoord", yBaseCoord);//搴撲綅Y鍚戝熀鐐瑰潗鏍� 鍗曚綅mm - standard.put("xDefaultSpace", xDefaultSpace);//搴撲綅X鍚戞爣鍑嗛棿璺� 鍗曚綅mm - standard.put("yDefaultSpace", yDefaultSpace);//搴撲綅Y鍚戞爣鍑嗛棿璺� 鍗曚綅mm - body.put("standard", standard); - request.setBody(body); - - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇鏇存柊FAS鐗规畩X杞村湴鍥惧懡浠� - public static NyShuttleHttpCommand getUpdateMapSpecialXAxisCommand(Integer shuttleNo, List<Map<String, Object>> list) { - NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, 9999); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", "updateMapSpecialXAxis");//鏇存柊FAS鐗规畩X杞村湴鍥� - body.put("specialXAxis", list); - request.setBody(body); - - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇鏇存柊FAS鐗规畩Y杞村湴鍥惧懡浠� - public static NyShuttleHttpCommand getUpdateMapSpecialYAxisCommand(Integer shuttleNo, List<Map<String, Object>> list) { - NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, 9999); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", "updateMapSpecialYAxis");//鏇存柊FAS鐗规畩Y杞村湴鍥� - body.put("specialYAxis", list); - request.setBody(body); - - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇鏇存柊FAS鐗规畩搴撲綅鐐瑰湴鍥惧懡浠� - public static NyShuttleHttpCommand getUpdateMapSpecialPointCommand(Integer shuttleNo, List<Map<String, Object>> list) { - NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, 9999); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", "updateMapSpecialPoint");//鏇存柊FAS鐗规畩搴撲綅鐐瑰湴鍥� - body.put("specialPoint", list); - request.setBody(body); - - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇鏇存柊FAS鎻愬崌鏈虹偣浣嶅湴鍥惧懡浠� - public static NyShuttleHttpCommand getUpdateMapDevicePointCommand(Integer shuttleNo, List<Map<String, Object>> list) { - NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, 9999); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", "updateMapDevicePoint");//鏇存柊FAS鎻愬崌鏈虹偣浣嶅湴鍥� - body.put("devicePoint", list); - request.setBody(body); - - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇鍗曚釜RFID褰曞啓鍛戒护 - public static NyShuttleHttpCommand getWriteSingleRFIDCommand(Integer shuttleNo, Integer xPoint, Integer yPoint, Integer zPoint) { - NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, 9999); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", "WriteSingleRFID");//鍗曚釜RFID褰曞啓 - body.put("xPoint", xPoint);//X 鐐逛綅 - body.put("yPoint", yPoint);//Y 鐐逛綅 - body.put("zPoint", zPoint);//Z 鐐逛綅 - request.setBody(body); - - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇鑷姩褰曞啓RFID鍛戒护 - public static NyShuttleHttpCommand getAutoWriteRFIDCommand(Integer shuttleNo, Integer dir, Integer xBase, Integer yBase, Integer zBase, Integer pointEnd, List<Integer> specialPoint) { - NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, 9999); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", "AutoWriteRFID");//鑷姩褰曞啓RFID - body.put("requestCode", dir);//鏂瑰悜xDir/yDir - body.put("xBase", xBase);//X 璧峰鐐逛綅 - body.put("yBase", yBase);//Y 璧峰鐐逛綅 - body.put("zBase", zBase);//Z 璧峰鐐逛綅 - body.put("pointEnd", pointEnd);//缁堢偣鍧愭爣 鏍规嵁requestCode鏉ュ喅瀹氱粓鐐瑰潗鏍囩殑鏂瑰悜 - body.put("specialPoint", specialPoint);//鐗规畩鐐逛綅杩囩▼涓笉闇�瑕佸綍鍒剁殑RFID鐐逛綅 - request.setBody(body); - - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇璇锋眰缂栧彿 - public static Integer getRequestId() { - Random random = new Random(); - return random.nextInt(9999999); - } - - //鑾峰彇TaskId - public static Integer getTaskId() { - Random random = new Random(); - return random.nextInt(999999); - } - - //鍙戝嚭璇锋眰 - public static JSONObject requestCommand(Socket socket, NyShuttleHttpCommand httpCommand) throws IOException { - if (socket == null) { - return null; - } - - //鍘嬬缉鏁版嵁鍖� - JSONObject data = JSON.parseObject(JSON.toJSONString(httpCommand)); - data.remove("nodes"); - - // 鑾峰彇杈撳叆娴佸拰杈撳嚭娴� - BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); - OutputStreamWriter writer = new OutputStreamWriter(socket.getOutputStream()); - writer.write(JSON.toJSONString(data) + "\r\n"); - writer.flush(); -// System.out.println("Sent message to server: " + JSON.toJSONString(httpCommand)); - - // 璇诲彇鏈嶅姟鍣ㄧ殑鍝嶅簲 - StringBuffer sb = new StringBuffer(); - char[] chars = new char[2048];//缂撳啿鍖� - while (true) { - reader.read(chars); - String trim = new String(chars); - sb.append(trim); - if (trim.lastIndexOf("\r\n") != -1) { - break; - } - } - - JSONObject result = JSON.parseObject(sb.toString());//寰楀埌鍝嶅簲缁撴灉闆� - if (!result.get("msgType").equals("responseMsg")) {//涓嶆槸鍝嶅簲鍐呭 - return null; - } - - JSONObject resultResponse = JSON.parseObject(result.get("response").toString()); - JSONObject resultHeader = JSON.parseObject(resultResponse.get("header").toString()); - int responseId = Integer.parseInt(resultHeader.get("responseId").toString()); - if (!DEBUG && responseId != httpCommand.getRequest().getHeader().getRequestId()) { - return null;//鍝嶅簲ID涓庤姹侷D涓嶄竴鑷达紝涓嶅湪璋冭瘯妯″紡涓� - } - - return filterBodyData(result);//杩斿洖Body缁撴灉闆� - } - - public static JSONObject filterBodyData(JSONObject data) { - Object response = data.get("response"); - if (response == null) { - return null; - } - - JSONObject result = JSON.parseObject(response.toString()); - Object body = result.get("body"); - if (body == null) { - return null; - } - JSONObject jsonBody = JSON.parseObject(body.toString()); - return jsonBody; - } - - //鍦板浘鑺傜偣杞崲鐗涚溂鑺傜偣 - public static NyShuttleProtocol.NyShuttlePointClass navigateNodeToNyPointNode(NavigateNode node) { - int[] NyPosition = NavigatePositionConvert.WCSXyzToNyXyz(node.getX(), node.getY(), node.getZ());//WCS绯荤粺鍧愭爣杞墰鐪煎潗鏍� - NyShuttleProtocol.NyShuttlePointClass point = new NyShuttleProtocol.NyShuttlePointClass(); - point.setX(NyPosition[0]); - point.setY(NyPosition[1]); - point.setZ(NyPosition[2]); - return point; - } - -} diff --git a/src/main/java/com/zy/common/utils/NyLiftUtils.java b/src/main/java/com/zy/common/utils/NyLiftUtils.java deleted file mode 100644 index b5baaaa..0000000 --- a/src/main/java/com/zy/common/utils/NyLiftUtils.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.zy.common.utils; - -import com.core.common.SpringUtils; -import com.zy.asrs.utils.Utils; -import com.zy.common.model.NavigateNode; -import com.zy.core.cache.SlaveConnection; -import com.zy.core.enums.SlaveType; -import com.zy.core.model.LiftSlave; -import com.zy.core.model.command.NyLiftCommand; -import com.zy.core.model.protocol.LiftStaProtocol; -import com.zy.core.properties.SlaveProperties; -import com.zy.core.thread.LiftThread; - -import javax.swing.*; -import java.util.ArrayList; -import java.util.List; - -/** - * 鐗涚溂鎻愬崌鏈哄伐鍏风被 - */ -public class NyLiftUtils { - - /** - * 鑾峰彇鎻愬崌鏈哄懡浠� - */ - public static NyLiftCommand getLiftCommand(Integer liftNo, Integer taskModel, Integer sourceSta, Integer targetSta, Integer taskNo) { - NyLiftCommand command = new NyLiftCommand(); - command.setLiftNo(liftNo.shortValue()); - command.setTaskNo(taskNo.shortValue()); - command.setTaskModel(taskModel.shortValue()); - command.setSourceSta(sourceSta.shortValue()); - command.setTargetSta(targetSta.shortValue()); - return command; - } - - /** - * 鑾峰彇鎻愬崌鏈哄浣嶅懡浠� - */ - public static NyLiftCommand getLiftResetCommand(Integer liftNo) { - NyLiftCommand command = new NyLiftCommand(); - command.setLiftNo(liftNo.shortValue()); - command.setTaskNo((short) 0); - command.setTaskModel((short) 0); - command.setSourceSta((short) 0); - command.setTargetSta((short) 0); - return command; - } - - //鑾峰彇鎻愬崌鏈虹珯鐐� - public static LiftStaProtocol getLiftStaByStaNo(Integer staNo) { - SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class); - for (LiftSlave liftSlave : slaveProperties.getLift()) { - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); - if (liftThread == null) { - return null; - } - - for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) { - if (liftStaProtocol.getStaNo().equals(staNo)) { - return liftStaProtocol; - } - } - } - - return null; - } - - //鑾峰彇鎻愬崌鏈虹珯鐐� - public static LiftStaProtocol getLiftStaByStaNo(Integer liftNo, Integer staNo) { - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo); - if (liftThread == null) { - return null; - } - - for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) { - if (liftStaProtocol.getStaNo().equals(staNo)) { - return liftStaProtocol; - } - } - - return null; - } - - //鑾峰彇鎻愬崌鏈虹珯鐐� - public static LiftStaProtocol getLiftStaByLev(Integer liftNo, Integer lev) { - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo); - if (liftThread == null) { - return null; - } - - for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) { - if (liftStaProtocol.getLev().equals(lev)) { - return liftStaProtocol; - } - } - - return null; - } - - //鑾峰彇鎻愬崌鏈鸿緭閫佺珯鍙婂叾鍓嶄竴绔欒妭鐐� - public static List<NavigateNode> getLiftStaNodes(Integer staNo) { - List<NavigateNode> targetNodes = new ArrayList<>(); - //鑾峰彇鐩爣绔� - LiftStaProtocol targetLiftSta = NyLiftUtils.getLiftStaByStaNo(staNo); - if (targetLiftSta == null) { - return null;//鎵句笉鍒扮珯鐐� - } - NavigateNode targetNode = NavigatePositionConvert.locNoToNode(targetLiftSta.getLocNo());//鐩爣鑺傜偣 - String targetLastLocNo = Utils.getLocNo(Utils.getRow(targetLiftSta.getLocNo()) - 1, Utils.getBay(targetLiftSta.getLocNo()), Utils.getLev(targetLiftSta.getLocNo()));//鐩爣鑺傜偣鍓嶄竴绔� - NavigateNode targetLastNode = NavigatePositionConvert.locNoToNode(targetLastLocNo);//鐩爣鑺傜偣鍓嶄竴绔� - targetNodes.add(targetNode); - targetNodes.add(targetLastNode); - - return targetNodes; - } - -} diff --git a/src/main/java/com/zy/common/utils/NyShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/NyShuttleOperaUtils.java deleted file mode 100644 index fc00b05..0000000 --- a/src/main/java/com/zy/common/utils/NyShuttleOperaUtils.java +++ /dev/null @@ -1,182 +0,0 @@ -package com.zy.common.utils; - -import com.core.common.SpringUtils; -import com.zy.asrs.utils.Utils; -import com.zy.common.model.NavigateNode; -import com.zy.common.model.NyShuttleOperaResult; -import com.zy.common.model.enums.NavigationMapType; -import com.zy.core.model.command.NyShuttleHttpCommand; -import java.util.ArrayList; -import java.util.List; - -/** - * 鐗涚溂鍥涘悜杞︽搷浣滃伐鍏风被 - * 姝ゅ伐鍏风被鍙浣滅敤浜庤幏鍙栧皬杞︾殑鍚勭被鍛戒护List锛岀Щ鍔ㄥ懡浠ゃ�佹惉杩愯揣鐗╁懡浠ゃ�佸浣嶅懡浠ょ瓑銆傚鍛戒护涓虹Щ鍔ㄥ懡浠わ紝杩樺皢杩斿洖琛岃蛋璺緞List - */ -public class NyShuttleOperaUtils { - - /** - * 璁$畻骞惰幏鍙栧皬杞︿粠璧风偣鈥斺�斾腑闂寸偣鈥斺�旂洰鏍囩偣涔嬮棿鎼繍璐х墿鍔ㄤ綔鍛戒护 - * @param shuttleNo 灏忚溅鍙� - * @param wrkNo 宸ヤ綔鍙� - * @param startPoint 璧风偣锛堝皬杞﹀綋鍓嶄綅缃級 - * @param targetPoint 鐩爣鐐癸紙璐х墿鐩爣浣嶇疆锛� - */ - public static synchronized NyShuttleOperaResult getShuttleTransportCommands(Integer shuttleNo, Integer wrkNo, String startPoint, String targetPoint) { - //琛岃蛋璺緞 - ArrayList<NavigateNode> nodes = new ArrayList<>(); - //鍛戒护闆嗗悎 - ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); - - //璁$畻璧风偣鍒扮洰鏍囩偣鍛戒护 - NyShuttleOperaResult result = getStartToTargetCommands(shuttleNo, wrkNo, startPoint, targetPoint, NavigationMapType.DFX.id); - if (result == null) { - //璁$畻缁撴灉蹇呴』涓嶄负绌猴紝鍚﹀垯璁$畻澶辫触 - return null; - } - nodes.addAll(result.getNodes()); - //璧风偣浣嶇疆涓嬪彂涓�鏉¢《鍗囧懡浠ゅ皢璐х墿杩涜鎼繍 - commands.add(NyHttpUtils.getPalletLiftCommand(shuttleNo, wrkNo, true)); - commands.addAll(result.getCommands());//璧风偣鍒扮洰鏍囩偣绉诲姩鍛戒护 - //褰撳皬杞﹁璧板埌鐩爣鐐瑰悗锛岄渶瑕佷笅鍙戜竴鏉′笅闄嶅懡浠ゅ皢璐х墿鏀剧疆 - commands.add(NyHttpUtils.getPalletLiftCommand(shuttleNo, wrkNo, false)); - return result(commands, nodes); - } - - /** - * 璁$畻骞惰幏鍙栧皬杞︿粠璧风偣鈥斺�斾腑闂寸偣鈥斺�旂洰鏍囩偣涔嬮棿鎼繍璐х墿鍔ㄤ綔鍛戒护 - * @param shuttleNo 灏忚溅鍙� - * @param wrkNo 宸ヤ綔鍙� - * @param startPoint 璧风偣锛堝皬杞﹀綋鍓嶄綅缃級 - * @param middlePoint 涓棿鐐癸紙璐х墿浣嶇疆锛� - * @param targetPoint 鐩爣鐐癸紙璐х墿鐩爣浣嶇疆锛� - */ - public static synchronized NyShuttleOperaResult getShuttleTransportCommands(Integer shuttleNo, Integer wrkNo, String startPoint, String middlePoint, String targetPoint) { - //琛岃蛋璺緞 - ArrayList<NavigateNode> nodes = new ArrayList<>(); - //鍛戒护闆嗗悎 - ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); - - if (!startPoint.equals(middlePoint)) {//璧风偣鍜屼腑闂寸偣涓嶄竴鑷达紝闇�瑕佽绠楄捣鐐瑰埌涓棿鐐硅矾寰� - //璁$畻璧风偣鍒颁腑闂寸偣鍛戒护 - NyShuttleOperaResult result1 = getStartToTargetCommands(shuttleNo, wrkNo, startPoint, middlePoint, NavigationMapType.NORMAL.id); - if (result1 == null) { - //璁$畻缁撴灉蹇呴』涓嶄负绌猴紝鍚﹀垯璁$畻澶辫触 - return null; - } - nodes.addAll(result1.getNodes()); - commands.addAll(result1.getCommands()); - } - - //璁$畻涓棿鐐瑰埌鐩爣鐐瑰懡浠� - NyShuttleOperaResult result2 = getStartToTargetCommands(shuttleNo, wrkNo, middlePoint, targetPoint, NavigationMapType.DFX.id); - if (result2 == null) { - //璁$畻缁撴灉蹇呴』涓嶄负绌猴紝鍚﹀垯璁$畻澶辫触 - return null; - } - nodes.addAll(result2.getNodes()); - //褰撳皬杞﹁璧板埌涓棿鐐瑰悗锛岄渶瑕佷笅鍙戜竴鏉¢《鍗囧懡浠ゅ皢璐х墿杩涜鎼繍 - commands.add(NyHttpUtils.getPalletLiftCommand(shuttleNo, wrkNo, true)); - commands.addAll(result2.getCommands());//涓棿鐐瑰埌鐩爣鐐圭Щ鍔ㄥ懡浠� - //褰撳皬杞﹁璧板埌鐩爣鐐瑰悗锛岄渶瑕佷笅鍙戜竴鏉′笅闄嶅懡浠ゅ皢璐х墿鏀剧疆 - commands.add(NyHttpUtils.getPalletLiftCommand(shuttleNo, wrkNo, false)); - return result(commands, nodes); - } - - /** - * 鑾峰彇璧风偣鍒扮洰鏍囩偣琛岃蛋鍛戒护 - */ - public static synchronized NyShuttleOperaResult getStartToTargetCommands(Integer shuttleNo, Integer wrkNo, String startPoint, String targetPoint, Integer mapType) { - NavigateMapUtils navigateMapUtils = SpringUtils.getBean(NavigateMapUtils.class); - //璁$畻璧风偣鍒扮洰鏍囩偣琛岃蛋鑺傜偣 - List<NavigateNode> calc = NavigateUtils.calc(startPoint, targetPoint, mapType, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startPoint)), null); - if (calc == null) { - return null; - } - - //鍛戒护闆嗗悎 - ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); - List<NavigateNode> allNode = new ArrayList<>(); - - //鑾峰彇鍒嗘璺緞 - ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc); - //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 - for (ArrayList<NavigateNode> nodes : data) { - //寮�濮嬭矾寰� - NavigateNode startPath = nodes.get(0); - //鐩爣璺緞 - NavigateNode targetPath = nodes.get(nodes.size() - 1); - //鑾峰彇绉诲姩鍛戒护 - NyShuttleHttpCommand moveCommand = NyHttpUtils.getMoveCommand(shuttleNo, wrkNo, startPath, targetPath); - moveCommand.setNodes(nodes);//灏嗚璧拌妭鐐规坊鍔犲埌姣忎竴姝ュ懡浠や腑 - commands.add(moveCommand); - - allNode.addAll(nodes); - } - - boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(startPoint), shuttleNo, allNode, true);//閿佸畾璺緞 - if (!result) { - return null;//璺緞閿佸畾澶辫触 - } - return result(commands, calc); - } - - /** - * 鑾峰彇璧风偣鍒扮洰鏍囩偣琛岃蛋鍛戒护(鍙紶鐧藉悕鍗�) - */ - public static synchronized NyShuttleOperaResult getStartToTargetCommandsByWhites(Integer shuttleNo, Integer wrkNo, String startPoint, String targetPoint, Integer mapType, List<int[]> whites) { - NavigateMapUtils navigateMapUtils = SpringUtils.getBean(NavigateMapUtils.class); - //璁$畻璧风偣鍒扮洰鏍囩偣琛岃蛋鑺傜偣 - List<NavigateNode> calc = NavigateUtils.calc(startPoint, targetPoint, mapType, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startPoint)), whites); - if (calc == null) { - return null; - } - - //鍛戒护闆嗗悎 - ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); - List<NavigateNode> allNode = new ArrayList<>(); - - //鑾峰彇鍒嗘璺緞 - ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc); - //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 - for (ArrayList<NavigateNode> nodes : data) { - //寮�濮嬭矾寰� - NavigateNode startPath = nodes.get(0); - //鐩爣璺緞 - NavigateNode targetPath = nodes.get(nodes.size() - 1); - //鑾峰彇绉诲姩鍛戒护 - NyShuttleHttpCommand moveCommand = NyHttpUtils.getMoveCommand(shuttleNo, wrkNo, startPath, targetPath); - moveCommand.setNodes(nodes);//灏嗚璧拌妭鐐规坊鍔犲埌姣忎竴姝ュ懡浠や腑 - commands.add(moveCommand); - - allNode.addAll(nodes); - } - - //閿佸畾璺緞鏃跺墧闄ょ櫧鍚嶅崟鑺傜偣 - ArrayList<NavigateNode> nodes = new ArrayList<>(); - for (NavigateNode node : allNode) { - boolean flag = false; - for (int[] white : whites) { - if (node.getX() == white[0] && node.getY() == white[1]) { - flag = true;//瀛樺湪鐧藉悕鍗曡妭鐐� - break;//璺宠繃鐧藉悕鍗曡妭鐐� - } - } - - if (!flag) { - nodes.add(node); - } - } - boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(startPoint), shuttleNo, nodes, true);//閿佸畾璺緞 - if (!result) { - return null;//璺緞閿佸畾澶辫触 - } - return result(commands, calc); - } - - //杩斿洖缁撴灉闆� - public static NyShuttleOperaResult result(List<NyShuttleHttpCommand> commands, List<NavigateNode> nodes) { - return new NyShuttleOperaResult(commands, nodes); - } - -} diff --git a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java new file mode 100644 index 0000000..d7a6adc --- /dev/null +++ b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java @@ -0,0 +1,355 @@ +package com.zy.common.utils; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.zy.asrs.entity.BasShuttle; +import com.zy.asrs.service.BasShuttleService; +import com.zy.asrs.utils.Utils; +import com.zy.common.model.NavigateNode; +import com.zy.core.News; +import com.zy.core.enums.ShuttleRunDirection; +import com.zy.core.model.command.ShuttleAssignCommand; +import com.zy.core.model.command.ShuttleCommand; +import com.zy.core.model.protocol.ShuttleProtocol; +import com.zy.core.thread.ShuttleThread; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +/** + * 鍥涘悜杞︽搷浣滃伐鍏风被 + * 姝ゅ伐鍏风被鍙浣滅敤浜庤幏鍙栧皬杞︾殑鍚勭被鍛戒护List锛岀Щ鍔ㄥ懡浠ゃ�佹惉杩愯揣鐗╁懡浠ゃ�佸浣嶅懡浠ょ瓑銆傚鍛戒护涓虹Щ鍔ㄥ懡浠わ紝杩樺皢杩斿洖琛岃蛋璺緞List + */ +@Component +public class ShuttleOperaUtils { + + @Autowired + private BasShuttleService basShuttleService; + @Autowired + private NavigateUtils navigateUtils; + @Autowired + private NavigateMapUtils navigateMapUtils; + + public synchronized List<ShuttleCommand> getStartToTargetCommands(String startLocNo, String endLocNo, Integer mapType, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) { + return getStartToTargetCommands(startLocNo, endLocNo, mapType, null, assignCommand, shuttleThread); + } + + public synchronized List<ShuttleCommand> getStartToTargetCommands(String startLocNo, String endLocNo, Integer mapType, List<int[]> whites, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) { + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); + if (shuttleProtocol == null) { + return null; + } + Integer shuttleNo = shuttleProtocol.getShuttleNo(); + //鑾峰彇灏忚溅绉诲姩閫熷害 + Integer runSpeed = Optional.ofNullable(basShuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", shuttleNo)).getRunSpeed()).orElse(1000); + List<NavigateNode> nodeList = navigateUtils.calc(startLocNo, endLocNo, mapType, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startLocNo)), null); + if (nodeList == null) { + News.error("{} dash {} can't find navigate path!", startLocNo, endLocNo); + return null; + } + + List<NavigateNode> allNode = new ArrayList<>(); + for (NavigateNode node : nodeList) { + allNode.add(node.clone()); + } + + List<ShuttleCommand> commands = new ArrayList<>(); + //鑾峰彇鍒嗘璺緞 + ArrayList<ArrayList<NavigateNode>> data = navigateUtils.getSectionPath(nodeList); + //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 + for (ArrayList<NavigateNode> nodes : data) { + //寮�濮嬭矾寰� + NavigateNode startPath = nodes.get(0); + + //鐩爣璺緞 + NavigateNode endPath = nodes.get(nodes.size() - 1); + Integer allDistance = navigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� + //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮� + String startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ()); + //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮� + String distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ()); + //鑾峰彇绉诲姩鍛戒护 + ShuttleCommand command = shuttleThread.getMoveCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes); + command.setNodes(nodes);//灏嗚璧拌妭鐐规坊鍔犲埌姣忎竴姝ュ懡浠や腑 + commands.add(command); + } + + assignCommand.setNodes(allNode);//褰撳墠浠诲姟鎵�鍗犵敤鐨勮妭鐐筶ist + + return commands; + } + + public synchronized List<ShuttleCommand> shuttleInOutLiftCommand(String startLocNo, String endLocNo, Integer mapType, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) { + NavigateNode startNode = NavigatePositionConvert.locNoToNode(startLocNo); + NavigateNode endNode = NavigatePositionConvert.locNoToNode(endLocNo); + List<NavigateNode> unlockPath = new ArrayList<>(); + unlockPath.add(startNode); + unlockPath.add(endNode); + + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); + if (shuttleProtocol == null) { + return null; + } + + Integer shuttleNo = shuttleProtocol.getShuttleNo(); + //鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹�/瑙i攣 + boolean lockResult = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(endLocNo), shuttleProtocol.getShuttleNo(), unlockPath, false);//鎵�浣跨敤鐨勮矾寰勮繘琛岃В閿� + if (!lockResult) { + News.error("{} dash {} can't find unlock path!", startLocNo, endLocNo); + return null;//瑙i攣澶辫触 + } + + //鑾峰彇灏忚溅绉诲姩閫熷害 + Integer runSpeed = Optional.ofNullable(basShuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", shuttleNo)).getRunSpeed()).orElse(1000); + List<NavigateNode> nodeList = navigateUtils.calc(startLocNo, endLocNo, mapType, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startLocNo)), null); + if (nodeList == null) { + News.error("{} dash {} can't find navigate path!", startLocNo, endLocNo); + return null; + } + + List<NavigateNode> allNode = new ArrayList<>(); + for (NavigateNode node : nodeList) { + allNode.add(node.clone()); + } + + List<ShuttleCommand> commands = new ArrayList<>(); + //鑾峰彇鍒嗘璺緞 + ArrayList<ArrayList<NavigateNode>> data = navigateUtils.getSectionPath(nodeList); + //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 + for (ArrayList<NavigateNode> nodes : data) { + //寮�濮嬭矾寰� + NavigateNode startPath = nodes.get(0); + + //鐩爣璺緞 + NavigateNode endPath = nodes.get(nodes.size() - 1); + Integer allDistance = navigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� + //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮� + String startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ()); + //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮� + String distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ()); + //鑾峰彇绉诲姩鍛戒护 + ShuttleCommand command = shuttleThread.getMoveCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes); + command.setNodes(nodes);//灏嗚璧拌妭鐐规坊鍔犲埌姣忎竴姝ュ懡浠や腑 + commands.add(command); + } + + assignCommand.setNodes(allNode);//褰撳墠浠诲姟鎵�鍗犵敤鐨勮妭鐐筶ist + + return commands; + } + +// private boolean checkSimilarityPath(Motion motion, ShuttleAssignCommand assignCommand) { +// String movePath = motion.getMovePath(); +// if (Cools.isEmpty(movePath)) { +// return false; +// } +// +// Double similarityRef = 0.9D; +// Dict similarityRefDict = dictService.getOne(new LambdaQueryWrapper<Dict>() +// .eq(Dict::getFlag, "similarityRef") +// .eq(Dict::getStatus, 1)); +// if (similarityRefDict != null) { +// similarityRef = Double.parseDouble(similarityRefDict.getValue()); +// } +// +// List<NavigateNode> originPath = JSON.parseArray(movePath, NavigateNode.class); +// List<NavigateNode> finalPath = assignCommand.getNodes(); +// +// if (finalPath == null) { +// return false; +// } +// +// Double similarity = navigateUtils.similarityPath(originPath, finalPath); +// if (similarity <= similarityRef) { +// Object object = redisUtil.get(DeviceRedisConstant.SIMILARITY_TIMES + motion.getTaskNo()); +// if (object == null) { +// redisUtil.set(DeviceRedisConstant.SIMILARITY_TIMES + motion.getTaskNo(), System.currentTimeMillis(), 60 * 60 * 24); +// }else { +// long similarityTimeoutRef = 20L;//榛樿瓒呮椂20s +// Dict similarityTimeoutDict = dictService.getOne(new LambdaQueryWrapper<Dict>() +// .eq(Dict::getFlag, "similarityTimeout") +// .eq(Dict::getStatus, 1)); +// if (similarityTimeoutDict != null) { +// similarityTimeoutRef = Long.parseLong(similarityTimeoutDict.getValue()); +// } +// +// long recordTime = Long.parseLong(object.toString()); +// if (System.currentTimeMillis() - recordTime > (60 * similarityTimeoutRef)) { +// //瓒呮椂锛岀洿鎺ユ斁琛� +// return true; +// } +// } +// News.error("{} dash {} path similarity mismatch!", motion.getOrigin(), motion.getTarget()); +// return false; +// } +// +// return true; +// } + +// /** +// * 璁$畻骞惰幏鍙栧皬杞︿粠璧风偣鈥斺�斾腑闂寸偣鈥斺�旂洰鏍囩偣涔嬮棿鎼繍璐х墿鍔ㄤ綔鍛戒护 +// * @param shuttleNo 灏忚溅鍙� +// * @param wrkNo 宸ヤ綔鍙� +// * @param startPoint 璧风偣锛堝皬杞﹀綋鍓嶄綅缃級 +// * @param targetPoint 鐩爣鐐癸紙璐х墿鐩爣浣嶇疆锛� +// */ +// public static synchronized ShuttleOperaResult getShuttleTransportCommands(Integer shuttleNo, Integer wrkNo, String startPoint, String targetPoint) { +// //琛岃蛋璺緞 +// ArrayList<NavigateNode> nodes = new ArrayList<>(); +// //鍛戒护闆嗗悎 +// ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); +// +// //璁$畻璧风偣鍒扮洰鏍囩偣鍛戒护 +// ShuttleOperaResult result = getStartToTargetCommands(shuttleNo, wrkNo, startPoint, targetPoint, NavigationMapType.DFX.id); +// if (result == null) { +// //璁$畻缁撴灉蹇呴』涓嶄负绌猴紝鍚﹀垯璁$畻澶辫触 +// return null; +// } +// nodes.addAll(result.getNodes()); +// //璧风偣浣嶇疆涓嬪彂涓�鏉¢《鍗囧懡浠ゅ皢璐х墿杩涜鎼繍 +// commands.add(NyHttpUtils.getPalletLiftCommand(shuttleNo, wrkNo, true)); +// commands.addAll(result.getCommands());//璧风偣鍒扮洰鏍囩偣绉诲姩鍛戒护 +// //褰撳皬杞﹁璧板埌鐩爣鐐瑰悗锛岄渶瑕佷笅鍙戜竴鏉′笅闄嶅懡浠ゅ皢璐х墿鏀剧疆 +// commands.add(NyHttpUtils.getPalletLiftCommand(shuttleNo, wrkNo, false)); +// return result(commands, nodes); +// } +// +// /** +// * 璁$畻骞惰幏鍙栧皬杞︿粠璧风偣鈥斺�斾腑闂寸偣鈥斺�旂洰鏍囩偣涔嬮棿鎼繍璐х墿鍔ㄤ綔鍛戒护 +// * @param shuttleNo 灏忚溅鍙� +// * @param wrkNo 宸ヤ綔鍙� +// * @param startPoint 璧风偣锛堝皬杞﹀綋鍓嶄綅缃級 +// * @param middlePoint 涓棿鐐癸紙璐х墿浣嶇疆锛� +// * @param targetPoint 鐩爣鐐癸紙璐х墿鐩爣浣嶇疆锛� +// */ +// public static synchronized ShuttleOperaResult getShuttleTransportCommands(Integer shuttleNo, Integer wrkNo, String startPoint, String middlePoint, String targetPoint) { +// //琛岃蛋璺緞 +// ArrayList<NavigateNode> nodes = new ArrayList<>(); +// //鍛戒护闆嗗悎 +// ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); +// +// if (!startPoint.equals(middlePoint)) {//璧风偣鍜屼腑闂寸偣涓嶄竴鑷达紝闇�瑕佽绠楄捣鐐瑰埌涓棿鐐硅矾寰� +// //璁$畻璧风偣鍒颁腑闂寸偣鍛戒护 +// ShuttleOperaResult result1 = getStartToTargetCommands(shuttleNo, wrkNo, startPoint, middlePoint, NavigationMapType.NORMAL.id); +// if (result1 == null) { +// //璁$畻缁撴灉蹇呴』涓嶄负绌猴紝鍚﹀垯璁$畻澶辫触 +// return null; +// } +// nodes.addAll(result1.getNodes()); +// commands.addAll(result1.getCommands()); +// } +// +// //璁$畻涓棿鐐瑰埌鐩爣鐐瑰懡浠� +// ShuttleOperaResult result2 = getStartToTargetCommands(shuttleNo, wrkNo, middlePoint, targetPoint, NavigationMapType.DFX.id); +// if (result2 == null) { +// //璁$畻缁撴灉蹇呴』涓嶄负绌猴紝鍚﹀垯璁$畻澶辫触 +// return null; +// } +// nodes.addAll(result2.getNodes()); +// //褰撳皬杞﹁璧板埌涓棿鐐瑰悗锛岄渶瑕佷笅鍙戜竴鏉¢《鍗囧懡浠ゅ皢璐х墿杩涜鎼繍 +// commands.add(NyHttpUtils.getPalletLiftCommand(shuttleNo, wrkNo, true)); +// commands.addAll(result2.getCommands());//涓棿鐐瑰埌鐩爣鐐圭Щ鍔ㄥ懡浠� +// //褰撳皬杞﹁璧板埌鐩爣鐐瑰悗锛岄渶瑕佷笅鍙戜竴鏉′笅闄嶅懡浠ゅ皢璐х墿鏀剧疆 +// commands.add(NyHttpUtils.getPalletLiftCommand(shuttleNo, wrkNo, false)); +// return result(commands, nodes); +// } +// +// /** +// * 鑾峰彇璧风偣鍒扮洰鏍囩偣琛岃蛋鍛戒护 +// */ +// public synchronized ShuttleOperaResult getStartToTargetCommands(Integer shuttleNo, Integer wrkNo, String startPoint, String targetPoint, Integer mapType) { +// NavigateMapUtils navigateMapUtils = SpringUtils.getBean(NavigateMapUtils.class); +// //璁$畻璧风偣鍒扮洰鏍囩偣琛岃蛋鑺傜偣 +// List<NavigateNode> calc = NavigateUtils.calc(startPoint, targetPoint, mapType, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startPoint)), null); +// if (calc == null) { +// return null; +// } +// +// //鍛戒护闆嗗悎 +// ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); +// List<NavigateNode> allNode = new ArrayList<>(); +// +// //鑾峰彇鍒嗘璺緞 +// ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc); +// //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 +// for (ArrayList<NavigateNode> nodes : data) { +// //寮�濮嬭矾寰� +// NavigateNode startPath = nodes.get(0); +// //鐩爣璺緞 +// NavigateNode targetPath = nodes.get(nodes.size() - 1); +// //鑾峰彇绉诲姩鍛戒护 +// NyShuttleHttpCommand moveCommand = NyHttpUtils.getMoveCommand(shuttleNo, wrkNo, startPath, targetPath); +// moveCommand.setNodes(nodes);//灏嗚璧拌妭鐐规坊鍔犲埌姣忎竴姝ュ懡浠や腑 +// commands.add(moveCommand); +// +// allNode.addAll(nodes); +// } +// +// boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(startPoint), shuttleNo, allNode, true);//閿佸畾璺緞 +// if (!result) { +// return null;//璺緞閿佸畾澶辫触 +// } +// return result(commands, calc); +// } +// +// /** +// * 鑾峰彇璧风偣鍒扮洰鏍囩偣琛岃蛋鍛戒护(鍙紶鐧藉悕鍗�) +// */ +// public static synchronized ShuttleOperaResult getStartToTargetCommandsByWhites(Integer shuttleNo, Integer wrkNo, String startPoint, String targetPoint, Integer mapType, List<int[]> whites) { +// NavigateMapUtils navigateMapUtils = SpringUtils.getBean(NavigateMapUtils.class); +// //璁$畻璧风偣鍒扮洰鏍囩偣琛岃蛋鑺傜偣 +// List<NavigateNode> calc = NavigateUtils.calc(startPoint, targetPoint, mapType, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startPoint)), whites); +// if (calc == null) { +// return null; +// } +// +// //鍛戒护闆嗗悎 +// ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); +// List<NavigateNode> allNode = new ArrayList<>(); +// +// //鑾峰彇鍒嗘璺緞 +// ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc); +// //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 +// for (ArrayList<NavigateNode> nodes : data) { +// //寮�濮嬭矾寰� +// NavigateNode startPath = nodes.get(0); +// //鐩爣璺緞 +// NavigateNode targetPath = nodes.get(nodes.size() - 1); +// //鑾峰彇绉诲姩鍛戒护 +// NyShuttleHttpCommand moveCommand = NyHttpUtils.getMoveCommand(shuttleNo, wrkNo, startPath, targetPath); +// moveCommand.setNodes(nodes);//灏嗚璧拌妭鐐规坊鍔犲埌姣忎竴姝ュ懡浠や腑 +// commands.add(moveCommand); +// +// allNode.addAll(nodes); +// } +// +// //閿佸畾璺緞鏃跺墧闄ょ櫧鍚嶅崟鑺傜偣 +// ArrayList<NavigateNode> nodes = new ArrayList<>(); +// for (NavigateNode node : allNode) { +// boolean flag = false; +// for (int[] white : whites) { +// if (node.getX() == white[0] && node.getY() == white[1]) { +// flag = true;//瀛樺湪鐧藉悕鍗曡妭鐐� +// break;//璺宠繃鐧藉悕鍗曡妭鐐� +// } +// } +// +// if (!flag) { +// nodes.add(node); +// } +// } +// boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(startPoint), shuttleNo, nodes, true);//閿佸畾璺緞 +// if (!result) { +// return null;//璺緞閿佸畾澶辫触 +// } +// return result(commands, calc); +// } +// +// //杩斿洖缁撴灉闆� +// public static ShuttleOperaResult result(List<NyShuttleHttpCommand> commands, List<NavigateNode> nodes) { +// return new ShuttleOperaResult(commands, nodes); +// } + +} diff --git a/src/main/java/com/zy/core/CrnThread.java b/src/main/java/com/zy/core/CrnThread.java deleted file mode 100644 index 70c3d75..0000000 --- a/src/main/java/com/zy/core/CrnThread.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.zy.core; - -import com.zy.core.model.protocol.CrnProtocol; - -public interface CrnThread extends ThreadHandler { - - CrnProtocol getCrnProtocol(); - - void setResetFlag(boolean flag); - -} diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java index 568d8a8..e29ecc4 100644 --- a/src/main/java/com/zy/core/MainProcess.java +++ b/src/main/java/com/zy/core/MainProcess.java @@ -41,43 +41,41 @@ continue; } - // 鍏ュ簱 ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。 - mainService.generateStoreWrkFile(); // 缁勬墭 +// // 鍏ュ簱 ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。 +// mainService.generateStoreWrkFile(); // 缁勬墭 //鍒濆鍖栧疄鏃跺湴鍥� mainService.initRealtimeBasMap(); - // 鎷f枡銆佸苟鏉垮啀鍏ュ簱 - mainService.stnToCrnStnPick(); - // 鐩樼偣鍐嶅叆搴� - mainService.stnToCrnStnPlate(); - // 鍏ュ簱 ===>> 鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙� - mainService.shuttleInExecute(); - // 鍑哄簱 ===>> 鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙� - mainService.shuttleOutExecute(); - //鍥涘悜绌挎杞︿换鍔″畬鎴� - mainService.shuttleFinished(); - //鎻愬崌鏈轰换鍔� - mainService.liftIoExecute(); - //鎻愬崌鏈轰换鍔″畬鎴� - mainService.liftFinished(); - //搴撲綅绉昏浆 - mainService.locToLocExecute(); +// // 鎷f枡銆佸苟鏉垮啀鍏ュ簱 +// mainService.stnToCrnStnPick(); +// // 鐩樼偣鍐嶅叆搴� +// mainService.stnToCrnStnPlate(); +// // 鍏ュ簱 ===>> 鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙� +// mainService.shuttleInExecute(); +// // 鍑哄簱 ===>> 鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙� +// mainService.shuttleOutExecute(); +// //鍥涘悜绌挎杞︿换鍔″畬鎴� +// mainService.shuttleFinished(); +// //鎻愬崌鏈轰换鍔� +// mainService.liftIoExecute(); +// //鎻愬崌鏈轰换鍔″畬鎴� +// mainService.liftFinished(); //鎵ц灏忚溅绉诲簱浠诲姟 mainService.shuttleMoveExecute(); - // 寮傚父淇℃伅璁板綍 - mainService.recErr(); - // 鍏ュ簱 ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐� - mainService.storeEmptyPlt(); - // 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣� - mainService.ledExecute(); - // 鍏朵粬 ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅 - mainService.ledReset(); - // 绌挎杞� ===>> 灏忚溅鐢甸噺妫�娴嬪厖鐢� - mainService.loopShuttleCharge(); - mainService.executeShuttleCharge(); +// // 寮傚父淇℃伅璁板綍 +// mainService.recErr(); +// // 鍏ュ簱 ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐� +// mainService.storeEmptyPlt(); +// // 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣� +// mainService.ledExecute(); +// // 鍏朵粬 ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅 +// mainService.ledReset(); +// // 绌挎杞� ===>> 灏忚溅鐢甸噺妫�娴嬪厖鐢� +// mainService.loopShuttleCharge(); +// mainService.executeShuttleCharge(); - //鎵弿璁惧PakMk鏍囪鏄惁瓒呮椂 - mainService.scanDevicePakMk(); +// //鎵弿璁惧PakMk鏍囪鏄惁瓒呮椂 +// mainService.scanDevicePakMk(); // 闂撮殧 Thread.sleep(200); diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java index 47266bb..5f00670 100644 --- a/src/main/java/com/zy/core/ServerBootstrap.java +++ b/src/main/java/com/zy/core/ServerBootstrap.java @@ -7,6 +7,8 @@ import com.zy.core.model.*; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.*; +import com.zy.core.thread.impl.NyShuttleThread; +import com.zy.core.thread.impl.ZyForkLiftThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; @@ -49,12 +51,6 @@ for (Slave devp : slaveProperties.getDevp()) { MessageQueue.init(SlaveType.Devp, devp); } - for (Slave devp2 : slaveProperties.getDevp2()) { - MessageQueue.init(SlaveType.Devp2, devp2); - } - for (Slave devp3 : slaveProperties.getDevp3()) { - MessageQueue.init(SlaveType.Devp3, devp3); - } // 鍒濆鍖栨潯鐮佹壂鎻忎华mq for (Slave barcode : slaveProperties.getBarcode()) { MessageQueue.init(SlaveType.Barcode, barcode); @@ -71,9 +67,9 @@ for (Slave car : slaveProperties.getCar()) { MessageQueue.init(SlaveType.Car, car); } - // 鍒濆鍖栨彁鍗囨満mq - for (Slave lift : slaveProperties.getLift()) { - MessageQueue.init(SlaveType.Lift, lift); + // 鍒濆鍖栬揣鍙夋彁鍗囨満mq + for (Slave forkLift : slaveProperties.getForkLift()) { + MessageQueue.init(SlaveType.ForkLift, forkLift); } // 鍒濆鍖栧洓鍚戠┛姊溅mq for (Slave shuttle : slaveProperties.getShuttle()) { @@ -89,12 +85,12 @@ new Thread((Runnable) devpThread).start(); SlaveConnection.put(SlaveType.Devp, devp.getId(), devpThread); } - // 鍒濆鍖栨彁鍗囨満 - News.info("鍒濆鍖栨彁鍗囨満........................................................"); - for (LiftSlave liftSlave : slaveProperties.getLift()) { - LiftThread liftThread = new LiftThread(liftSlave, redisUtil); - new Thread(liftThread).start(); - SlaveConnection.put(SlaveType.Lift, liftSlave.getId(), liftThread); + // 鍒濆鍖栬揣鍙夋彁鍗囨満 + News.info("鍒濆鍖栬揣鍙夋彁鍗囨満........................................................"); + for (ForkLiftSlave forkLiftSlave : slaveProperties.getForkLift()) { + ZyForkLiftThread forkLiftThread = new ZyForkLiftThread(forkLiftSlave, redisUtil); + new Thread(forkLiftThread).start(); + SlaveConnection.put(SlaveType.ForkLift, forkLiftSlave.getId(), forkLiftThread); } // 鍒濆鍖栧洓鍚戠┛姊溅 News.info("鍒濆鍖栧洓鍚戠┛姊溅......................................................"); diff --git a/src/main/java/com/zy/core/ThreadHandler.java b/src/main/java/com/zy/core/ThreadHandler.java index 9b08feb..0a5b96e 100644 --- a/src/main/java/com/zy/core/ThreadHandler.java +++ b/src/main/java/com/zy/core/ThreadHandler.java @@ -1,9 +1,10 @@ package com.zy.core; -public interface ThreadHandler { +public interface ThreadHandler extends Runnable { boolean connect(); void close(); } + diff --git a/src/main/java/com/zy/core/action/ForkLiftAction.java b/src/main/java/com/zy/core/action/ForkLiftAction.java new file mode 100644 index 0000000..c72deec --- /dev/null +++ b/src/main/java/com/zy/core/action/ForkLiftAction.java @@ -0,0 +1,155 @@ +package com.zy.core.action; + +import com.alibaba.fastjson.JSON; +import com.zy.asrs.entity.BasLiftOpt; +import com.zy.asrs.entity.WrkMast; +import com.zy.asrs.service.BasLiftOptService; +import com.zy.asrs.service.WrkMastService; +import com.zy.common.utils.RedisUtil; +import com.zy.core.News; +import com.zy.core.cache.SlaveConnection; +import com.zy.core.enums.ForkLiftTaskModeType; +import com.zy.core.enums.RedisKeyType; +import com.zy.core.enums.SlaveType; +import com.zy.core.model.CommandResponse; +import com.zy.core.model.command.ForkLiftCommand; +import com.zy.core.model.command.LiftAssignCommand; +import com.zy.core.model.command.LiftRedisCommand; +import com.zy.core.model.protocol.ForkLiftProtocol; +import com.zy.core.thread.ForkLiftThread; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.List; + +@Component +public class ForkLiftAction { + + @Autowired + private RedisUtil redisUtil; + @Autowired + private WrkMastService wrkMastService; + @Autowired + private BasLiftOptService basLiftOptService; + + public synchronized boolean assignWork(Integer liftNo, LiftAssignCommand assignCommand) { + ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); + if (forkLiftThread == null) { + return false; + } + + ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); + if (forkLiftProtocol == null) { + return false; + } + + LiftRedisCommand redisCommand = new LiftRedisCommand(); + redisCommand.setLiftNo(assignCommand.getLiftNo());//鎻愬崌鏈哄彿 + redisCommand.setWrkNo(assignCommand.getTaskNo());//宸ヤ綔鍙� + redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭 + redisCommand.setAssignCommand(assignCommand);//鍛戒护 + //浠诲姟鏁版嵁淇濆瓨鍒皉edis + if (redisUtil.set(RedisKeyType.FORK_LIFT.key + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand))) { + forkLiftThread.setSyncTaskNo(assignCommand.getTaskNo().intValue()); + return true; + } + return false; + } + + public synchronized boolean executeWork(Integer liftNo, Integer taskNo) { + Object obj = redisUtil.get(RedisKeyType.FORK_LIFT.key + taskNo); + if (obj == null) { + return false; + } + + WrkMast wrkMast = wrkMastService.selectByWorkNo(taskNo); + if (wrkMast == null) { + return false; + } + + LiftRedisCommand redisCommand = JSON.parseObject(obj.toString(), LiftRedisCommand.class); + if (redisCommand == null) { + return false; + } + + ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); + if (forkLiftThread == null) { + return false; + } + + ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); + if (forkLiftProtocol == null) { + return false; + } + + List<ForkLiftCommand> commands = redisCommand.getAssignCommand().getCommands(); + if (commands.isEmpty()) { + return false; + } + + LiftAssignCommand assignCommand = redisCommand.getAssignCommand(); + int commandStep = redisCommand.getCommandStep(); + + if (commandStep == 0) { + //鍙栧嚭鍛戒护 + ForkLiftCommand command = commands.get(commandStep); + + //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂� + if (!forkLiftThread.isIdle()) { + return false; + } + + // 涓嬪彂鍛戒护 + CommandResponse response = write(command, liftNo); + + //淇濆瓨鍛戒护鏃ュ織 + BasLiftOpt basLiftOpt = new BasLiftOpt(); + basLiftOpt.setWrkNo(taskNo); + basLiftOpt.setLiftNo(liftNo); + basLiftOpt.setCommand(JSON.toJSONString(command)); + basLiftOpt.setSystemStatus(JSON.toJSONString(forkLiftProtocol)); + basLiftOpt.setDeviceWrk(String.valueOf(command.getTaskNo())); + basLiftOpt.setSendTime(new Date());//鎸囦护涓嬪彂鏃堕棿 + //淇濆瓨鍛戒护娴佹按 + basLiftOptService.insert(basLiftOpt); + + if (!response.getResult()) { + News.error("璐у弶鎻愬崌鏈哄懡浠や笅鍙戝け璐ワ紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command)); + return false; + } else { + News.info("璐у弶鎻愬崌鏈哄懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command)); + } + + commandStep++; + //鏇存柊redis鏁版嵁 + redisCommand.setCommandStep(commandStep); + // 鏇存柊redis鏁版嵁 + redisUtil.set(RedisKeyType.FORK_LIFT.key + taskNo, JSON.toJSONString(redisCommand)); + } + + return true; + } + + private synchronized CommandResponse write(ForkLiftCommand command, Integer liftNo) { + CommandResponse response = new CommandResponse(false); + if (null == command) { + News.error("鎻愬崌鏈哄啓鍏ュ懡浠や负绌�"); + response.setMessage("鎻愬崌鏈哄啓鍏ュ懡浠や负绌�"); + return response; + } + + ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); + if (forkLiftThread == null) { + return response; + } + + if (command.getMode().intValue() == ForkLiftTaskModeType.PICK_PUT.id) { + response = forkLiftThread.pickAndPut(command); + } else if (command.getMode().intValue() == ForkLiftTaskModeType.SHUTTLE_SWITCH.id) { + response = forkLiftThread.shuttleSwitch(command); + } + return response; + } + +} diff --git a/src/main/java/com/zy/core/action/ShuttleAction.java b/src/main/java/com/zy/core/action/ShuttleAction.java new file mode 100644 index 0000000..fb12232 --- /dev/null +++ b/src/main/java/com/zy/core/action/ShuttleAction.java @@ -0,0 +1,668 @@ +package com.zy.core.action; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.zy.asrs.entity.BasShuttleOpt; +import com.zy.asrs.service.BasShuttleOptService; +import com.zy.asrs.service.BasShuttleService; +import com.zy.asrs.service.LocMastService; +import com.zy.asrs.utils.Utils; +import com.zy.common.ExecuteSupport; +import com.zy.common.model.NavigateNode; +import com.zy.common.utils.NavigateMapUtils; +import com.zy.common.utils.RedisUtil; +import com.zy.core.News; +import com.zy.core.cache.SlaveConnection; +import com.zy.core.enums.*; +import com.zy.core.model.CommandResponse; +import com.zy.core.model.command.ShuttleAssignCommand; +import com.zy.core.model.command.ShuttleCommand; +import com.zy.core.model.command.ShuttleRedisCommand; +import com.zy.core.model.protocol.ShuttleProtocol; +import com.zy.core.thread.ShuttleThread; +import com.zy.system.service.ConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.util.Date; +import java.util.List; + +@Component +public class ShuttleAction { + + @Autowired + private RedisUtil redisUtil; + @Autowired + private NavigateMapUtils navigateMapUtils; + @Autowired + private BasShuttleService basShuttleService; + @Autowired + private LocMastService locMastService; + @Autowired + private ObjectMapper objectMapper; + @Autowired + private ConfigService configService; + @Autowired + private BasShuttleOptService basShuttleOptService; + + public synchronized boolean assignWork(Integer shuttleNo, ShuttleAssignCommand assignCommand) { + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); + if (shuttleThread == null) { + return false; + } + + ShuttleRedisCommand redisCommand = new ShuttleRedisCommand(); + + redisCommand.setShuttleNo(assignCommand.getShuttleNo());//鍥涘悜绌挎杞﹀彿 + redisCommand.setWrkNo(assignCommand.getTaskNo());//宸ヤ綔鍙� + redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭 + redisCommand.setAssignCommand(assignCommand);//鍛戒护 + //浠诲姟鏁版嵁淇濆瓨鍒皉edis + if (redisUtil.set(RedisKeyType.SHUTTLE.key + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand, SerializerFeature.DisableCircularReferenceDetect))) { + shuttleThread.setSyncTaskNo(assignCommand.getTaskNo()); + return true; + } + return false; + } + + public synchronized boolean executeWork(Integer shuttleNo, Integer taskNo) { + Object obj = redisUtil.get(RedisKeyType.SHUTTLE.key + taskNo); + if (obj == null) { + return false; + } + + ShuttleRedisCommand redisCommand = null; + try { + redisCommand = objectMapper.readValue(String.valueOf(obj), ShuttleRedisCommand.class); + } catch (IOException e) { + throw new RuntimeException(e); + } + + if (redisCommand == null) { + return false; + } + + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); + if (shuttleThread == null) { + return false; + } + + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); + if (shuttleProtocol == null) { + return false; + } + + //鍒ゆ柇宸ヤ綔鍙锋槸鍚︾浉鍚� + if (!shuttleProtocol.getTaskNo().equals(taskNo)) { + return false; + } + + List<ShuttleCommand> commands = redisCommand.getAssignCommand().getCommands(); + if (commands.isEmpty()) { + return false; + } + + ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); + int commandStep = redisCommand.getCommandStep(); + + Integer mode = -1; + if(commandStep < commands.size()) { + //鍙栧嚭鍛戒护 + ShuttleCommand currentCommand = commands.get(commandStep); + mode = currentCommand.getMode(); + } + + //鍒ゆ柇璁惧鏄惁绌洪棽 + Integer finalMode = mode; + if (!shuttleThread.isDeviceIdle(new ExecuteSupport() { + @Override + public Boolean judgement() { + if (ShuttleCommandModeType.CHARGE_CLOSE.id.equals(finalMode)) {//鍏抽棴鍏呯數 + return false;//涓嶉渶瑕佸垽鏂姸鎬� + } + return true;//闇�瑕佸垽鏂姸鎬� + } + })) { + return false; + } + + // 瀹岀粨涓婁竴鏉″懡浠� + boolean updateCommand = false; + if (commandStep != 0) { + ShuttleCommand command = commands.get(commandStep - 1); + if (command.getMode() == ShuttleCommandModeType.MOVE.id) { + // 姝e父绉诲姩 + if (command.getTargetLocNo().equals(shuttleProtocol.getCurrentLocNo())) { + command.setComplete(true); + updateCommand = true; + //瑙i攣閿佸畾璺緞锛屼笂涓�鏉¤矾寰� + List<NavigateNode> nodes = null; + try { + String nodesStr = objectMapper.writeValueAsString(command.getNodes()); + nodes = objectMapper.readValue(nodesStr, new TypeReference<List<NavigateNode>>() { + }); + } catch (IOException e) { + throw new RuntimeException(e); + } + + if (nodes != null) { + NavigateNode targetNode = assignCommand.getNodes().get(assignCommand.getNodes().size() - 1);//鏈�缁堣妭鐐� + NavigateNode node = nodes.get(nodes.size() - 1); + if (!(targetNode.getX() == node.getX() && targetNode.getY() == node.getY())) { + nodes.remove(nodes.size() - 1);//鍓旈櫎灏捐妭鐐� + } + boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(shuttleProtocol.getCurrentLocNo()), shuttleProtocol.getShuttleNo(), nodes, false);//瑙i攣璺緞 + if (!result) { + return false;//瑙i攣澶辫触 + } + } + } + } else if (command.getMode() == ShuttleCommandModeType.PALLET_LIFT.id) { + // 鎵樼洏椤跺崌 + //鍒ゆ柇鏄惁椤跺崌鍒颁綅 + if (shuttleProtocol.getHasLift()) { + command.setComplete(true); + updateCommand = true; +// //鍒ゆ柇鏄惁鏈夌墿 +// if (shuttleProtocol.getHasPallet()) { +// command.setComplete(true); +// } + } + } else if (command.getMode() == ShuttleCommandModeType.PALLET_DOWN.id) { + // 鎵樼洏涓嬮檷鍛戒护 + // 鍒ゆ柇鏄惁涓嬮檷鍒颁綅 + if (!shuttleProtocol.getHasLift()) { + command.setComplete(true); + updateCommand = true; + } + } else if (command.getMode() == ShuttleCommandModeType.CHARGE_OPEN.id) { + // 鍏呯數寮� + //鍒ゆ柇灏忚溅鍏呯數鐘舵�� + if (shuttleProtocol.getHasCharge()) { + command.setComplete(true); + updateCommand = true; + } + }else { + command.setComplete(true);//鍏朵粬鍛戒护榛樿璁や负瀹屾垚 + updateCommand = true; + } + + if(updateCommand) { + // 鏇存柊redis鏁版嵁 + redisUtil.set(RedisKeyType.SHUTTLE.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand, SerializerFeature.DisableCircularReferenceDetect)); + } + + if (!command.getComplete()) { + return false; + } + + //鍒ゆ柇鏄惁涓烘渶鍚庝竴鏉″懡浠や笖鍛戒护鎵ц瀹屾垚锛屾姏鍑虹瓑寰呯‘璁ょ姸鎬� + ShuttleCommand endCommand = commands.get(commands.size() - 1); + if (endCommand.getComplete()) { + News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(commands)); + + // 绯荤粺浠诲姟 + if (assignCommand.getAuto()) { + if (!assignCommand.getCharge()) { + //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting + shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.WAITING); + }else { + shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); + } + News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); + + // 鎵嬪姩浠诲姟 + } else { + //鎵嬪姩妯″紡涓嶆姏鍑虹瓑寰呯姸鎬侊紝鐩存帴澶嶄綅绌洪棽鐘舵�� + shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE); + //浠诲姟鍙锋竻闆� + shuttleThread.setSyncTaskNo(0); + //鏍囪澶嶄綅 + shuttleThread.setPakMk(true); + News.info("鍥涘悜绌挎杞︽墜鍔ㄤ换鍔℃墽琛屽畬鎴愶紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); + } + + //鍒犻櫎redis + redisUtil.del(RedisKeyType.SHUTTLE.key + redisCommand.getWrkNo()); + return false;//绂佹鍐嶄笅鍙戝懡浠� + } + } + + //鍙栧嚭鍛戒护 + ShuttleCommand command = commands.get(commandStep); + + // 涓嬪彂鍛戒护 + CommandResponse response = write(command, shuttleNo); + + //淇濆瓨鍛戒护鏃ュ織 + BasShuttleOpt basShuttleOpt = new BasShuttleOpt(); + basShuttleOpt.setWrkNo(redisCommand.getWrkNo()); + basShuttleOpt.setShuttleNo(shuttleNo); + + basShuttleOpt.setMode(ShuttleTaskModeType.get(assignCommand.getTaskMode()).desc); + basShuttleOpt.setSourceLocNo(assignCommand.getSourceLocNo()); + basShuttleOpt.setDistLocNo(assignCommand.getLocNo()); + basShuttleOpt.setCommand(JSON.toJSONString(command)); + basShuttleOpt.setSystemStatus(JSON.toJSONString(shuttleProtocol)); + basShuttleOpt.setDeviceWrk(String.valueOf(command.getTaskNo())); + basShuttleOpt.setResponse(response.getMessage());//鑾峰彇鍝嶅簲 + basShuttleOpt.setSendTime(new Date());//鎸囦护涓嬪彂鏃堕棿 + basShuttleOpt.setSend(response.getResult() ? 1 : 0); + //淇濆瓨鍛戒护娴佹按 + basShuttleOptService.insert(basShuttleOpt); + + if (!response.getResult()) { + News.error("鍥涘悜绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); + return false; + } + + shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.WORKING); + commandStep++; + //鏇存柊redis鏁版嵁 + redisCommand.setCommandStep(commandStep); + //浠诲姟鏁版嵁淇濆瓨鍒皉edis + redisUtil.set(RedisKeyType.SHUTTLE.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); + return true; + } + +// //璺戝簱绋嬪簭 +// public synchronized void moveLoc(Integer shuttleNo) { +// ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); +// if (shuttleThread == null) { +// return; +// } +// ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(false); +// if (shuttleProtocol == null) { +// return; +// } +// +// //灏忚溅寮�鍚窇搴撴ā寮� +// if (!shuttleProtocol.getMoveLoc()) { +// return; +// } +// +// //灏忚溅绌洪棽 +// if (!shuttleThread.isIdle()) { +// return; +// } +// +// int lev = Utils.getLev(shuttleProtocol.getCurrentLocNo());//灏忚溅褰撳墠妤煎眰 +// +// if (shuttleProtocol.getMoveType() == 0) {//璺戣建閬� +// //鏍规嵁鍦板浘鏂瑰悜鍐冲畾璺憍鎴杫 +// Config config = configService.selectOne(new EntityWrapper<Config>() +// .eq("code", "direction_map") +// .eq("status", 1)); +// if (config == null) { +// //璺戝簱缁撴潫 +// shuttleProtocol.setMoveLoc(false); +// shuttleProtocol.setMoveType(0); +// shuttleProtocol.setXStart(0); +// shuttleProtocol.setXTarget(0); +// shuttleProtocol.setXCurrent(0); +// shuttleProtocol.setYStart(0); +// shuttleProtocol.setYTarget(0); +// shuttleProtocol.setYCurrent(0); +// return; +// } +// String direction = config.getValue(); +// +// if (direction.equals("y")) {//璺憍杞存柟鍚戯紝璺戝畬x杞村啀鍒囨崲y杞� +// ArrayList<String> locs = new ArrayList<>(); +// for (int i = shuttleProtocol.getXCurrent(); i <= shuttleProtocol.getXTarget(); i++) { +// String locNo = Utils.getLocNo(i, shuttleProtocol.getYCurrent(), lev); +// locs.add(locNo); +// } +// +// List<LocMast> locList = locMastService.selectList(new EntityWrapper<LocMast>() +// .eq("loc_sts", LocStsType.O.toString()) +// .in("loc_no", locs)); +// if (locList.isEmpty()) { +// //绌哄簱浣� +// shuttleProtocol.setYCurrent(shuttleProtocol.getYCurrent() + 1); +// return; +// } +// +// LocMast start = locList.get(0); +// LocMast target = locList.get(locList.size() - 1); +// //鍒ゆ柇灏忚溅鏄惁鍦ㄨ捣鐐逛綅缃� +// if (!shuttleProtocol.getCurrentLocNo().equals(start.getLocNo())) {//涓嶅湪璧风偣浣嶇疆锛岃皟搴﹀幓璧风偣浣嶇疆 +// shuttleDispatcher.generateMoveTask(device, start.getLocNo()); +// }else { +// //鍦ㄨ捣鐐逛綅缃紝璋冨害鍘荤洰鏍囦綅缃� +// Task task = shuttleDispatcher.generateMoveTask(device, target.getLocNo()); +// if (task != null) { +// shuttleProtocol.setYCurrent(shuttleProtocol.getYCurrent() + 1);//鍒囨崲y杞� +// } +// +// if(shuttleProtocol.getYCurrent() > shuttleProtocol.getYTarget()) { +// //y杞翠篃璺戝畬浜嗭紝缁撴潫璺戝簱 +// shuttleProtocol.setMoveLoc(false); +// shuttleProtocol.setMoveType(0); +// shuttleProtocol.setXStart(0); +// shuttleProtocol.setXTarget(0); +// shuttleProtocol.setXCurrent(0); +// shuttleProtocol.setYStart(0); +// shuttleProtocol.setYTarget(0); +// shuttleProtocol.setYCurrent(0); +// return; +// } +// } +// }else {//璺憏杞存柟鍚戯紝璺戝畬y杞村啀鍒囨崲x杞� +// ArrayList<String> locs = new ArrayList<>(); +// for (int i = shuttleProtocol.getYCurrent(); i <= shuttleProtocol.getYTarget(); i++) { +// String locNo = Utils.getLocNo(shuttleProtocol.getXCurrent(), i, lev); +// locs.add(locNo); +// } +// +// List<Loc> locList = locService.list(new LambdaQueryWrapper<Loc>() +// .eq(Loc::getLocSts, LocStsType.O.val()) +// .in(Loc::getLocNo, locs)); +// if (locList.isEmpty()) { +// //绌哄簱浣� +// shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); +// return; +// } +// +// Loc start = locList.get(0); +// Loc target = locList.get(locList.size() - 1); +// //鍒ゆ柇灏忚溅鏄惁鍦ㄨ捣鐐逛綅缃� +// if (!shuttleProtocol.getCurrentLocNo().equals(start.getLocNo())) {//涓嶅湪璧风偣浣嶇疆锛岃皟搴﹀幓璧风偣浣嶇疆 +// shuttleDispatcher.generateMoveTask(device, start.getLocNo()); +// }else { +// //鍦ㄨ捣鐐逛綅缃紝璋冨害鍘荤洰鏍囦綅缃� +// Task task = shuttleDispatcher.generateMoveTask(device, target.getLocNo()); +// if (task != null) { +// shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);//鍒囨崲x杞� +// } +// +// if(shuttleProtocol.getXCurrent() > shuttleProtocol.getXTarget()) { +// //y杞翠篃璺戝畬浜嗭紝缁撴潫璺戝簱 +// shuttleProtocol.setMoveLoc(false); +// shuttleProtocol.setMoveType(0); +// shuttleProtocol.setXStart(0); +// shuttleProtocol.setXTarget(0); +// shuttleProtocol.setXCurrent(0); +// shuttleProtocol.setYStart(0); +// shuttleProtocol.setYTarget(0); +// shuttleProtocol.setYCurrent(0); +// return; +// } +// } +// } +// +// } else if (shuttleProtocol.getMoveType() == 1) {//璺戝簱浣� +// //鏍规嵁鍦板浘鏂瑰悜鍐冲畾璺憍鎴杫 +// Dict dict = dictService.getOne(new LambdaQueryWrapper<Dict>() +// .eq(Dict::getFlag, "direction_map") +// .eq(Dict::getStatus, 1)); +// if (dict == null) { +// //璺戝簱缁撴潫 +// shuttleProtocol.setMoveLoc(false); +// shuttleProtocol.setMoveType(0); +// shuttleProtocol.setXStart(0); +// shuttleProtocol.setXTarget(0); +// shuttleProtocol.setXCurrent(0); +// shuttleProtocol.setYStart(0); +// shuttleProtocol.setYTarget(0); +// shuttleProtocol.setYCurrent(0); +// return; +// } +// String direction = dict.getValue(); +// +// if (direction.equals("y")) {//璺憍杞存柟鍚戯紝璺戝畬x杞村啀鍒囨崲y杞� +// Integer xCurrent = shuttleProtocol.getXCurrent(); +// +// //鑾峰彇寰呰窇搴撲綅鍙� +// String locNo = Utils.getLocNo(xCurrent, shuttleProtocol.getYCurrent(), lev); +// Loc target = locService.getOne(new LambdaQueryWrapper<Loc>() +// .eq(Loc::getLocNo, locNo) +// .eq(Loc::getLocSts, LocStsType.O.val()) +// .eq(Loc::getHostId, device.getHostId())); +// if (target == null || shuttleProtocol.getCurrentLocNo().equals(locNo)) {//搴撲綅涓嶅瓨鍦ㄦ垨灏忚溅宸插湪褰撳墠浣嶇疆 +// shuttleProtocol.setXCurrent(xCurrent + 1); +// if (shuttleProtocol.getXCurrent() > shuttleProtocol.getXTarget()) { +// //x杞磋窇瀹岋紝鍒囨崲y杞� +// shuttleProtocol.setXCurrent(shuttleProtocol.getXStart()); +// shuttleProtocol.setYCurrent(shuttleProtocol.getYCurrent() + 1); +// +// if(shuttleProtocol.getYCurrent() > shuttleProtocol.getYTarget()) { +// //y杞翠篃璺戝畬浜嗭紝缁撴潫璺戝簱 +// shuttleProtocol.setMoveLoc(false); +// shuttleProtocol.setMoveType(0); +// shuttleProtocol.setXStart(0); +// shuttleProtocol.setXTarget(0); +// shuttleProtocol.setXCurrent(0); +// shuttleProtocol.setYStart(0); +// shuttleProtocol.setYTarget(0); +// shuttleProtocol.setYCurrent(0); +// return; +// } +// } +// return; +// } +// +// //璋冨害鍘诲簱浣� +// Task task = shuttleDispatcher.generateMoveTask(device, locNo); +// if (task == null) { +// return;//璋冨害澶辫触 +// } +// +// shuttleProtocol.setXCurrent(xCurrent + 1); +// if (shuttleProtocol.getXCurrent() > shuttleProtocol.getXTarget()) { +// //x杞磋窇瀹岋紝鍒囨崲y杞� +// shuttleProtocol.setXCurrent(shuttleProtocol.getXStart()); +// shuttleProtocol.setYCurrent(shuttleProtocol.getYCurrent() + 1); +// +// if(shuttleProtocol.getYCurrent() > shuttleProtocol.getYTarget()) { +// //y杞翠篃璺戝畬浜嗭紝缁撴潫璺戝簱 +// shuttleProtocol.setMoveLoc(false); +// shuttleProtocol.setMoveType(0); +// shuttleProtocol.setXStart(0); +// shuttleProtocol.setXTarget(0); +// shuttleProtocol.setXCurrent(0); +// shuttleProtocol.setYStart(0); +// shuttleProtocol.setYTarget(0); +// shuttleProtocol.setYCurrent(0); +// return; +// } +// } +// +// }else {//璺憏杞存柟鍚戯紝璺戝畬y杞村啀鍒囨崲x杞� +// Integer yCurrent = shuttleProtocol.getYCurrent(); +// +// //鑾峰彇寰呰窇搴撲綅鍙� +// String locNo = Utils.getLocNo(shuttleProtocol.getXCurrent(), yCurrent, lev); +// Loc target = locService.getOne(new LambdaQueryWrapper<Loc>() +// .eq(Loc::getLocNo, locNo) +// .eq(Loc::getLocSts, LocStsType.O.val()) +// .eq(Loc::getHostId, device.getHostId())); +// if (target == null || shuttleProtocol.getCurrentLocNo().equals(locNo)) {//搴撲綅涓嶅瓨鍦ㄦ垨灏忚溅宸插湪褰撳墠浣嶇疆 +// shuttleProtocol.setYCurrent(yCurrent + 1); +// if (shuttleProtocol.getYCurrent() > shuttleProtocol.getYTarget()) { +// //y杞磋窇瀹岋紝鍒囨崲x杞� +// shuttleProtocol.setYCurrent(shuttleProtocol.getYStart()); +// shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); +// +// if(shuttleProtocol.getXCurrent() > shuttleProtocol.getXTarget()) { +// //x杞翠篃璺戝畬浜嗭紝缁撴潫璺戝簱 +// shuttleProtocol.setMoveLoc(false); +// shuttleProtocol.setMoveType(0); +// shuttleProtocol.setXStart(0); +// shuttleProtocol.setXTarget(0); +// shuttleProtocol.setXCurrent(0); +// shuttleProtocol.setYStart(0); +// shuttleProtocol.setYTarget(0); +// shuttleProtocol.setYCurrent(0); +// return; +// } +// } +// return; +// } +// +// //璋冨害鍘诲簱浣� +// Task task = shuttleDispatcher.generateMoveTask(device, locNo); +// if (task == null) { +// return;//璋冨害澶辫触 +// } +// +// shuttleProtocol.setYCurrent(yCurrent + 1); +// if (shuttleProtocol.getYCurrent() > shuttleProtocol.getYTarget()) { +// //y杞磋窇瀹岋紝鍒囨崲x杞� +// shuttleProtocol.setYCurrent(shuttleProtocol.getYStart()); +// shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); +// +// if(shuttleProtocol.getXCurrent() > shuttleProtocol.getXTarget()) { +// //x杞翠篃璺戝畬浜嗭紝缁撴潫璺戝簱 +// shuttleProtocol.setMoveLoc(false); +// shuttleProtocol.setMoveType(0); +// shuttleProtocol.setXStart(0); +// shuttleProtocol.setXTarget(0); +// shuttleProtocol.setXCurrent(0); +// shuttleProtocol.setYStart(0); +// shuttleProtocol.setYTarget(0); +// shuttleProtocol.setYCurrent(0); +// return; +// } +// } +// +// } +// } else if (shuttleProtocol.getMoveType() == 2) {//姣嶈建閬撳惊鐜窇 +// Integer xCurrent = shuttleProtocol.getXCurrent(); +// Integer yCurrent = shuttleProtocol.getYCurrent(); +// +// String locNo = Utils.getLocNo(xCurrent, yCurrent, lev); +// //璋冨害鍘荤洰鏍囦綅缃� +// if (shuttleProtocol.getCurrentLocNo().equals(locNo)) { +// if (yCurrent.equals(shuttleProtocol.getYStart())) { +// shuttleProtocol.setYCurrent(shuttleProtocol.getYTarget());//灏忚溅鍜岀洰鏍囦綅缃竴鑷达紝鍒囨崲搴撲綅 +// } else { +// shuttleProtocol.setYCurrent(shuttleProtocol.getYStart());//灏忚溅鍜岀洰鏍囦綅缃竴鑷达紝鍒囨崲搴撲綅 +// } +// } else { +// Task result = shuttleDispatcher.generateMoveTask(device, locNo); +// if (result != null) {//璋冨害鎴愬姛 +// if (yCurrent.equals(shuttleProtocol.getYStart())) { +// shuttleProtocol.setYCurrent(shuttleProtocol.getYTarget());//鍒囨崲搴撲綅 +// } else { +// shuttleProtocol.setYCurrent(shuttleProtocol.getYStart());//鍒囨崲搴撲綅 +// } +// } +// } +// } else if (shuttleProtocol.getMoveType() == 3) {//瀛愯建閬撳惊鐜窇 +// Integer xCurrent = shuttleProtocol.getXCurrent(); +// Integer yCurrent = shuttleProtocol.getYCurrent(); +// +// String locNo = Utils.getLocNo(xCurrent, yCurrent, lev); +// //璋冨害鍘荤洰鏍囦綅缃� +// if (shuttleProtocol.getCurrentLocNo().equals(locNo)) { +// if (xCurrent.equals(shuttleProtocol.getXStart())) { +// shuttleProtocol.setXCurrent(shuttleProtocol.getXTarget());//灏忚溅鍜岀洰鏍囦綅缃竴鑷达紝鍒囨崲搴撲綅 +// } else { +// shuttleProtocol.setXCurrent(shuttleProtocol.getXStart());//灏忚溅鍜岀洰鏍囦綅缃竴鑷达紝鍒囨崲搴撲綅 +// } +// } else { +// Task result = shuttleDispatcher.generateMoveTask(device, locNo); +// if (result != null) {//璋冨害鎴愬姛 +// if (xCurrent.equals(shuttleProtocol.getXStart())) { +// shuttleProtocol.setXCurrent(shuttleProtocol.getXTarget());//鍒囨崲搴撲綅 +// } else { +// shuttleProtocol.setXCurrent(shuttleProtocol.getXStart());//鍒囨崲搴撲綅 +// } +// } +// } +// } else if (shuttleProtocol.getMoveType() == 4) {//鍙栨斁璐� +// Integer xCurrent = shuttleProtocol.getXCurrent(); +// if (xCurrent > shuttleProtocol.getXTarget()) {//褰揦鍊煎ぇ浜嶺鐩爣鍊� +// shuttleProtocol.setXCurrent(shuttleProtocol.getXStart()); +// shuttleProtocol.setYCurrent(shuttleProtocol.getYStart()); +// return; +// } +// +// //鍒ゆ柇x杞磋揣浣嶆槸鍚︽斁婊� +// boolean flag = true; +// for (Loc loc : locService.list(new LambdaQueryWrapper<Loc>() +// .eq(Loc::getHostId, device.getHostId()) +// .eq(Loc::getRow, xCurrent) +// .ge(Loc::getBay, shuttleProtocol.getYStart()) +// .le(Loc::getBay, shuttleProtocol.getYTarget()))) { +// if (loc.getLocSts() != LocStsType.F.val()) { +// flag = false;//鏈弧 +// break; +// } +// } +// if (flag) { +// shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); +// return; +// } +// +// //鎼滅储鏈夎揣搴撲綅 +// List<Loc> list = locService.list(new LambdaQueryWrapper<Loc>() +// .eq(Loc::getLocSts, LocStsType.F.val()) +// .eq(Loc::getHostId, device.getHostId()) +// .notIn(Loc::getRow, xCurrent) +// .eq(Loc::getStatus, 1)); +// if (list.isEmpty()) { +// return; +// } +// +// Loc start = list.get(0); +// +// List<Loc> locList = locService.list(new LambdaQueryWrapper<Loc>() +// .eq(Loc::getHostId, device.getHostId()) +// .eq(Loc::getStatus, 1) +// .eq(Loc::getLocSts, LocStsType.O.val()) +// .eq(Loc::getRow, xCurrent) +// .orderByDesc(Loc::getBay) +// .orderByAsc(Loc::getRow)); +// if (locList.isEmpty()) { +// return; +// } +// +// Loc target = locList.get(0); +// if (target == null) { +// return; +// } +// +// //璋冨害鍘荤洰鏍囦綅缃� +// if (!shuttleProtocol.getCurrentLocNo().equals(target.getLocNo())) { +// Task task = shuttleDispatcher.generateManuaTakeMoveTask(device, start.getLocNo(), target.getLocNo()); +//// if(task != null) {//璋冨害鎴愬姛 +//// shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); +//// } +// } +// } +// } + + private synchronized CommandResponse write(ShuttleCommand command, Integer shuttleNo) { + CommandResponse response = new CommandResponse(false); + if (null == command) { + News.error("鍥涘悜绌挎杞﹀啓鍏ュ懡浠や负绌�"); + response.setMessage("鍥涘悜绌挎杞﹀啓鍏ュ懡浠や负绌�"); + return response; + } + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); + if (command.getMode() == ShuttleCommandModeType.MOVE.id + || command.getMode() == ShuttleCommandModeType.IN_LIFT.id + || command.getMode() == ShuttleCommandModeType.OUT_LIFT.id) {//绉诲姩 + response = shuttleThread.move(command); + } else if (command.getMode() == ShuttleCommandModeType.PALLET_LIFT.id + || command.getMode() == ShuttleCommandModeType.PALLET_DOWN.id) {//椤跺崌 + response = shuttleThread.lift(command); + } else if (command.getMode() == ShuttleCommandModeType.CHARGE_OPEN.id + || command.getMode() == ShuttleCommandModeType.CHARGE_CLOSE.id) {//鍏呯數 + response = shuttleThread.charge(command); + } else if (command.getMode() == ShuttleCommandModeType.RESET.id) {//澶嶄綅 + response = shuttleThread.reset(command); + } else if (command.getMode() == ShuttleCommandModeType.UPDATE_LOCATION.id) {//鏇存柊鍧愭爣 + response = shuttleThread.updateLocation(command); + } + + News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戯紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleNo, JSON.toJSON(command)); + return response; + } + +} diff --git a/src/main/java/com/zy/core/cache/OutputQueue.java b/src/main/java/com/zy/core/cache/OutputQueue.java index e3f2d37..5ddde51 100644 --- a/src/main/java/com/zy/core/cache/OutputQueue.java +++ b/src/main/java/com/zy/core/cache/OutputQueue.java @@ -21,5 +21,7 @@ public static ArrayBlockingQueue<String> SHUTTLE = new ArrayBlockingQueue<>(32); //鎻愬崌鏈鸿緭鍑烘棩蹇� public static ArrayBlockingQueue<String> LIFT = new ArrayBlockingQueue<>(32); + //璐у弶鎻愬崌鏈鸿緭鍑烘棩蹇� + public static ArrayBlockingQueue<String> FORKLIFT = new ArrayBlockingQueue<>(32); } diff --git a/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java b/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java similarity index 62% rename from src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java rename to src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java index 3cb4367..72f341a 100644 --- a/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java +++ b/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java @@ -1,32 +1,25 @@ -package com.zy.common.utils; +package com.zy.core.dispatcher; -import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.mapper.EntityWrapper; -import com.core.common.SpringUtils; import com.core.exception.CoolException; -import com.zy.asrs.entity.BasShuttle; -import com.zy.asrs.entity.WrkCharge; import com.zy.asrs.entity.WrkMast; -import com.zy.asrs.mapper.WrkChargeMapper; -import com.zy.asrs.mapper.WrkMastMapper; -import com.zy.asrs.service.BasShuttleService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.utils.Utils; import com.zy.common.model.NavigateNode; import com.zy.common.model.enums.NavigationMapType; import com.zy.common.service.CommonService; +import com.zy.common.utils.ForkLiftUtils; +import com.zy.common.utils.NavigateUtils; import com.zy.core.News; import com.zy.core.cache.SlaveConnection; -import com.zy.core.enums.ShuttleChargeType; import com.zy.core.enums.SlaveType; -import com.zy.core.model.LiftSlave; +import com.zy.core.enums.WrkStsType; +import com.zy.core.model.ForkLiftSlave; import com.zy.core.model.ShuttleSlave; -import com.zy.core.model.protocol.LiftProtocol; -import com.zy.core.model.protocol.LiftStaProtocol; -import com.zy.core.model.protocol.NyShuttleProtocol; +import com.zy.core.model.protocol.*; import com.zy.core.properties.SlaveProperties; -import com.zy.core.thread.LiftThread; -import com.zy.core.thread.NyShuttleThread; +import com.zy.core.thread.ForkLiftThread; +import com.zy.core.thread.ShuttleThread; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; import org.springframework.beans.factory.annotation.Autowired; @@ -46,20 +39,16 @@ @Autowired private WrkMastService wrkMastService; @Autowired - private WrkMastMapper wrkMastMapper; - @Autowired - private WrkChargeMapper wrkChargeMapper; - @Autowired private CommonService commonService; + @Autowired + private NavigateUtils navigateUtils; + @Autowired + private ConfigService configService; /** * 璋冨害杞﹁締-璋冨害鎸囧畾绌挎杞� */ public boolean dispatchShuttle(Integer wrkNo, String locNo, Integer shuttleNo) { - if (!checkCharge(shuttleNo, locNo)) { - News.info("{}鍙峰皬杞︼紝瀛樺湪鍏呯數浠诲姟绂佹灏忚溅绉诲姩浠诲姟璋冨害", shuttleNo); - return false;//瀛樺湪鍏呯數浠诲姟鏆傚仠璋冨害 - } return shuttleMoveGenerate(wrkNo, locNo, shuttleNo); } @@ -68,7 +57,7 @@ */ public boolean dispatchShuttle(Integer wrkNo, String locNo) { //妫�娴嬬洰鏍囧簱浣嶇粍鏄惁瀛樺湪灏忚溅锛屽瀛樺湪灏忚溅鍒欑洿鎺ユ寚瀹氳杞� - WrkMast wrkMast = wrkMastMapper.selectByWorkNo(wrkNo); + WrkMast wrkMast = wrkMastService.selectByWorkNo(wrkNo); if (wrkMast != null) { String targetLocNo = wrkMast.getIoType() < 100 ? wrkMast.getLocNo() : wrkMast.getSourceLocNo(); List<String> groupLoc = Utils.getGroupLoc(targetLocNo); @@ -79,13 +68,13 @@ } } - ArrayList<NyShuttleThread> sameLev = new ArrayList<>();//鐩稿悓妤煎眰鐨勭┛姊溅 - ArrayList<NyShuttleThread> diffLev = new ArrayList<>();//涓嶅悓妤煎眰鐨勭┛姊溅 + ArrayList<ShuttleThread> sameLev = new ArrayList<>();//鐩稿悓妤煎眰鐨勭┛姊溅 + ArrayList<ShuttleThread> diffLev = new ArrayList<>();//涓嶅悓妤煎眰鐨勭┛姊溅 for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) { continue; } @@ -94,30 +83,20 @@ continue;//瀛樺湪鍏呯數浠诲姟锛岃繃婊ゅ皬杞� } - if (!shuttleProtocol.isIdle()) { + if (!shuttleThread.isIdle()) { continue;//灏忚溅蹇欑涓� } - if (shuttleProtocol.getSuspendState() == 1) { - //灏忚溅澶勪簬绠″埗涓� - continue; - } - - if (shuttleProtocol.getWorkingMode() == 0) { - //灏忚溅澶勪簬鎵嬪姩妯″紡 - continue; - } - - int currentLev = shuttleProtocol.getPoint().getZ();//灏忚溅褰撳墠灞傞珮 + int currentLev = Utils.getLev(shuttleProtocol.getCurrentLocNo());//灏忚溅褰撳墠灞傞珮 String currentLocNo = shuttleProtocol.getCurrentLocNo();//灏忚溅褰撳墠搴撲綅鍙� if (currentLocNo.equals(locNo)) { //杞﹁締褰撳墠浣嶇疆宸茬粡鏄洰鏍囧簱浣嶏紝璋冨害璇ヨ溅 //缁欏伐浣滄。缁戝畾灏忚溅鍙� - WrkMast wrkMast1 = wrkMastMapper.selectByWorkNo(wrkNo); + WrkMast wrkMast1 = wrkMastService.selectByWorkNo(wrkNo); if (wrkMast1 != null) { - wrkMast1.setShuttleNo(shuttleProtocol.getShuttleNo().intValue()); - wrkMastMapper.updateById(wrkMast1); + wrkMast1.setShuttleNo(shuttleProtocol.getShuttleNo()); + wrkMastService.updateById(wrkMast1); return true; } break; @@ -135,24 +114,28 @@ //浼樺厛璋冨害鍚屾ゼ灞傚皬杞︼紝瀵绘壘绂讳换鍔℃渶杩戠殑绌挎杞� if (!sameLev.isEmpty()) { - Map<Integer, NyShuttleThread> sameShuttles = new TreeMap<>();//鑷劧鎺掑簭灏忚溅Map - for (NyShuttleThread shuttleThread : sameLev) { + Map<Integer, ShuttleThread> sameShuttles = new TreeMap<>();//鑷劧鎺掑簭灏忚溅Map + for (ShuttleThread shuttleThread : sameLev) { + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); + Integer shuttleNo = shuttleProtocol.getShuttleNo(); //褰撳墠绌挎杞﹀簱浣嶅彿 - String currentLocNo = shuttleThread.getShuttleProtocol().getCurrentLocNo(); + String currentLocNo = shuttleProtocol.getCurrentLocNo(); //褰撳墠绌挎杞︾嚎绋嬪埌鐩爣鍦扮偣璺濈 - List<NavigateNode> currentShuttlePath = NavigateUtils.calc(currentLocNo, locNo, NavigationMapType.NORMAL.id, Utils.getShuttlePoints(shuttleThread.getSlave().getId(), Utils.getLev(currentLocNo)), null);//鎼滅储绌洪棽绌挎杞︼紝浣跨敤姝e父閫氶亾鍦板浘 + List<NavigateNode> currentShuttlePath = navigateUtils.calc(currentLocNo, locNo, NavigationMapType.NORMAL.id, Utils.getShuttlePoints(shuttleNo, Utils.getLev(currentLocNo)), null);//鎼滅储绌洪棽绌挎杞︼紝浣跨敤姝e父閫氶亾鍦板浘 if (currentShuttlePath == null) { continue; } - Integer currentAllDistance = NavigateUtils.getOriginPathAllDistance(currentShuttlePath);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� + Integer currentAllDistance = navigateUtils.getOriginPathAllDistance(currentShuttlePath);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� sameShuttles.put(currentAllDistance, shuttleThread); } //灏濊瘯璋冨害鍚屾ゼ灞傚皬杞� - for (Map.Entry<Integer, NyShuttleThread> entry : sameShuttles.entrySet()) { - NyShuttleThread shuttleThread = entry.getValue(); + for (Map.Entry<Integer, ShuttleThread> entry : sameShuttles.entrySet()) { + ShuttleThread shuttleThread = entry.getValue(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); + Integer shuttleNo = shuttleProtocol.getShuttleNo(); //灏濊瘯璋冨害灏忚溅 - boolean result = shuttleMoveGenerate(wrkNo, locNo, shuttleThread.getSlave().getId()); + boolean result = shuttleMoveGenerate(wrkNo, locNo, shuttleNo); if (result) { return true;//璋冨害鎴愬姛 } @@ -162,9 +145,9 @@ //鎵ц鍒版澶勶紝鍚屾ゼ灞傛棤璋冨害鎴愬姛灏忚溅銆傞渶瑕佽繘琛岃法妤煎眰璋冨害灏忚溅 //瀵绘壘绂讳换鍔℃ゼ灞傛渶杩戠殑绌挎杞�(涓嶈�冭檻璺ㄦゼ灞傚皬杞︾Щ鍔ㄨ窛绂�) if (!diffLev.isEmpty()) { - Map<Integer, NyShuttleThread> diffShuttles = new TreeMap<>();//鑷劧鎺掑簭灏忚溅Map + Map<Integer, ShuttleThread> diffShuttles = new TreeMap<>();//鑷劧鎺掑簭灏忚溅Map //鑾峰彇浠诲姟 - WrkMast wrkMast1 = wrkMastMapper.selectByWorkNo(wrkNo); + WrkMast wrkMast1 = wrkMastService.selectByWorkNo(wrkNo); if (wrkMast1 != null) { String targetLoc = wrkMast1.getIoType() < 100 ? wrkMast1.getLocNo() : wrkMast1.getSourceLocNo(); int lev = Utils.getLev(targetLoc);//鐩爣妤煎眰 @@ -176,9 +159,10 @@ return false; } - for (NyShuttleThread shuttleThread : diffLev) { + for (ShuttleThread shuttleThread : diffLev) { + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); //褰撳墠绌挎杞﹀簱浣嶅彿 - String currentLocNo = shuttleThread.getShuttleProtocol().getCurrentLocNo(); + String currentLocNo = shuttleProtocol.getCurrentLocNo(); int currentLev = Utils.getLev(currentLocNo); List<WrkMast> wrkMasts1 = wrkMastService.selectNoShuttleWrkByLev(currentLev);//鍒ゆ柇褰撳墠绌挎杞︽ゼ灞傛槸鍚︽湁寰呭垎閰嶈溅杈嗙殑浠诲姟锛屽鏋滄湁鍒欎笉鍒嗛厤杩欒締杞� int shuttleCount = this.getShuttleCountByLev(currentLev);//鑾峰彇绌挎杞︽ゼ灞傝溅杈嗘暟閲� @@ -193,10 +177,12 @@ } //灏濊瘯璋冨害璺ㄦゼ灞傚皬杞� - for (Map.Entry<Integer, NyShuttleThread> entry : diffShuttles.entrySet()) { - NyShuttleThread shuttleThread = entry.getValue(); + for (Map.Entry<Integer, ShuttleThread> entry : diffShuttles.entrySet()) { + ShuttleThread shuttleThread = entry.getValue(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); + Integer shuttleNo = shuttleProtocol.getShuttleNo(); //灏濊瘯璋冨害灏忚溅 - boolean result = shuttleMoveGenerate(wrkNo, locNo, shuttleThread.getSlave().getId()); + boolean result = shuttleMoveGenerate(wrkNo, locNo, shuttleNo); if (result) { return true;//璋冨害鎴愬姛 } @@ -215,32 +201,32 @@ public boolean shuttleMoveGenerate(Integer wrkNo, String locNo, Integer shuttleNo) { Date now = new Date(); //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); if (shuttleThread == null) { News.info("{}鍙峰皬杞︼紝绾跨▼涓嶅瓨鍦�", shuttleNo); return false; } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { News.info("{}鍙峰皬杞︼紝绾跨▼涓嶅瓨鍦�", shuttleNo); return false; } //灏忚溅澶勪簬绌洪棽鐘舵�� - if (!shuttleProtocol.isIdleNoCharge()) { + if (!shuttleThread.isIdle()) { News.info("{}鍙峰皬杞︼紝蹇欑涓�", shuttleNo); return false; } //鍒ゆ柇绌挎杞︽槸鍚﹀瓨鍦ㄦ湭瀹屾垚鐨勫皬杞︾Щ搴撲换鍔� - WrkMast hasMoveWorking = wrkMastMapper.selectShuttleHasMoveWorking(shuttleNo); + WrkMast hasMoveWorking = wrkMastService.selectShuttleHasMoveWorking(shuttleNo); if (hasMoveWorking != null) {//灏忚溅瀛樺湪绉诲簱浠诲姟锛岀瓑寰呮墽琛屽畬鎴愬悗鍐嶇敓鎴愭柊鐨勪换鍔� News.info("{}鍙峰皬杞︼紝瀛樺湪绉诲姩浠诲姟锛岀瓑寰呮墽琛屽畬鎴愬悗鍐嶇敓鎴愭柊鐨勪换鍔�", shuttleNo); return false; } //鍒ゆ柇鏄惁鏈夊叾浠栦换鍔℃鍦ㄤ娇鐢ㄧ┛姊溅 - WrkMast wrkMast2 = wrkMastMapper.selectShuttleWorking(shuttleNo); + WrkMast wrkMast2 = wrkMastService.selectShuttleWorking(shuttleNo); if (wrkMast2 != null) {//灏忚溅瀛樺湪鍏朵粬宸ヤ綔妗d换鍔★紝绛夊緟鎵ц瀹屾垚鍚庡啀鐢熸垚鏂扮殑浠诲姟 News.info("{}鍙峰皬杞︼紝瀛樺湪鍏朵粬宸ヤ綔妗d换鍔★紝绛夊緟鎵ц瀹屾垚鍐嶇敓鎴愭柊鐨勪换鍔�", shuttleNo); return false; @@ -248,10 +234,10 @@ Integer sourceStaNo = null;//灏忚溅鎹㈠眰婧愮珯鐐� Integer staNo = null;//灏忚溅鎹㈠眰鐩爣绔欑偣 - if (Utils.getLev(locNo) != shuttleProtocol.getPoint().getZ()) { + if (Utils.getLev(locNo) != Utils.getLev(shuttleProtocol.getCurrentLocNo())) { //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庝笉鍚屼竴妤煎眰锛岄渶瑕侀�氳繃鎻愬崌鏈鸿皟搴� //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満杈撻�佺珯鐐� - LiftStaProtocol liftSta = this.getRecentLiftSta(shuttleNo, Utils.getLev(locNo)); + ForkLiftStaProtocol liftSta = this.getRecentLiftSta(shuttleNo, Utils.getLev(locNo)); if (liftSta == null) { News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂茶緭閫佺珯鐐�", shuttleNo, locNo); return false;//娌℃湁鍙敤涓旂┖闂茬殑杈撻�佺珯鐐� @@ -267,30 +253,27 @@ WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); - wrkMast.setWrkSts(101L); // 宸ヤ綔鐘舵�侊細101.绉诲姩鍒拌繎鐐圭瓑寰呰縼鍑� - wrkMast.setIoType(200); // 鍏ュ嚭搴撶姸鎬侊細 200.灏忚溅绉诲簱 + wrkMast.setWrkSts(WrkStsType.NEW_MOVE.sts); // 宸ヤ綔鐘舵�侊細301.鐢熸垚杩佺Щ浠诲姟 + wrkMast.setIoType(200); // 鍏ュ嚭搴撶姸鎬侊細 200.灏忚溅杩佺Щ wrkMast.setIoPri(20D); wrkMast.setShuttleNo(shuttleNo);//绌挎杞﹀彿 wrkMast.setSourceLocNo(shuttleProtocol.getCurrentLocNo()); // 婧愬簱浣� => 灏忚溅褰撳墠搴撲綅鍙� wrkMast.setLocNo(locNo); // 鐩爣搴撲綅 wrkMast.setSourceStaNo(sourceStaNo);//婧愮珯 wrkMast.setStaNo(staNo);//鐩爣绔� - wrkMast.setPicking("N"); // 鎷f枡 - wrkMast.setExitMk("N"); // 閫�鍑� - wrkMast.setLinkMis("N"); wrkMast.setAppeTime(now); wrkMast.setModiTime(now); - int res = wrkMastMapper.insert(wrkMast); - if (res == 0) { + boolean res = wrkMastService.insert(wrkMast); + if (!res) { News.error("灏忚溅杩佺Щ --- 淇濆瓨宸ヤ綔妗eけ璐ワ紒 绌挎杞﹀彿锛�" + shuttleNo); throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } //缁欏伐浣滄。缁戝畾灏忚溅鍙� - WrkMast wrkMast1 = wrkMastMapper.selectByWorkNo(wrkNo); + WrkMast wrkMast1 = wrkMastService.selectByWorkNo(wrkNo); if (wrkMast1 != null) { wrkMast1.setShuttleNo(shuttleNo); - wrkMastMapper.updateById(wrkMast1); + wrkMastService.updateById(wrkMast1); } return true; @@ -301,8 +284,6 @@ * true: 灏忎簬鏈�澶ф暟閲� false: 澶т簬鎴栫瓑浜庢渶澶ф暟閲� */ public boolean checkDispatchMaxNum(Integer lev) { - BasShuttleService basShuttleService = SpringUtils.getBean(BasShuttleService.class); - ConfigService configService = SpringUtils.getBean(ConfigService.class); EntityWrapper<Config> wrapper = new EntityWrapper<>(); wrapper.eq("code", "dispatchShuttleMaxNum"); Config config = configService.selectOne(wrapper); @@ -313,34 +294,28 @@ int levCount = 0;//鐩爣妤煎眰杞﹁締鏁伴噺 for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) { continue; } - NyShuttleProtocol.NyShuttlePointClass point = null; - if (shuttleProtocol.getPoint() == null) { + String currentLocNo = shuttleProtocol.getCurrentLocNo(); + if (currentLocNo == null) { continue; - }else { - point = shuttleProtocol.getPoint(); } + int currentLev = Utils.getLev(currentLocNo); - if (point.getZ().equals(lev)) { - if (shuttleProtocol.getChargState() == 1) { - continue;//鍏呯數涓� + if (lev == currentLev) { + if (shuttleThread.isCharging()) { + continue; } - - if (shuttleProtocol.getSuspendState() == 1) { - continue;//绠″埗涓� - } - levCount++;//鐩爣妤煎眰鏈夎溅锛屾暟閲忓鍔� } } //鎼滅储鏄惁瀛樺湪鍓嶅線鐩爣妤煎眰鐨勫皬杞︾Щ鍔ㄥ伐浣滄。 - for (WrkMast wrkMast : wrkMastMapper.selectShuttleMoveWrk()) { + for (WrkMast wrkMast : wrkMastService.selectShuttleMoveWrk()) { if (wrkMast.getSourceLocNo() == null || wrkMast.getLocNo() == null) { continue; } @@ -364,40 +339,40 @@ /** * 鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満杈撻�佺珯鐐� */ - public LiftStaProtocol getRecentLiftSta(Integer shuttleNo, Integer targetLev) { + public ForkLiftStaProtocol getRecentLiftSta(Integer shuttleNo, Integer targetLev) { //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); if (shuttleThread == null) { return null; } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { return null; } //鑾峰彇灏忚溅鍚屼竴妤煎眰鐨勭珯鐐� - ArrayList<LiftStaProtocol> list = new ArrayList<>(); + ArrayList<ForkLiftStaProtocol> list = new ArrayList<>(); int lev = Utils.getLev(shuttleProtocol.getCurrentLocNo());//灏忚溅妤煎眰 - for (LiftSlave slave : slaveProperties.getLift()) { - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, slave.getId()); - if (liftThread == null) { + for (ForkLiftSlave slave : slaveProperties.getForkLift()) { + ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, slave.getId()); + if (forkLiftThread == null) { continue; } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { + ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); + if (forkLiftProtocol == null) { continue; } - if (!liftProtocol.isIdle()) { + if (!forkLiftThread.isIdle()) { continue; } - LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(slave.getId(), lev); - if (liftStaProtocol == null) { + ForkLiftStaProtocol forkLiftStaProtocol = ForkLiftUtils.getLiftStaByLev(slave.getId(), lev); + if (forkLiftStaProtocol == null) { continue; } //鍒ゆ柇鐩爣妤煎眰绔欑偣鏄惁鏃犳墭鐩� - LiftStaProtocol targetLiftStaProtocol = NyLiftUtils.getLiftStaByLev(slave.getId(), targetLev); + ForkLiftStaProtocol targetLiftStaProtocol = ForkLiftUtils.getLiftStaByLev(slave.getId(), targetLev); if (targetLiftStaProtocol == null) { continue; } @@ -406,7 +381,7 @@ continue;//鏈夋墭鐩樿烦杩� } - list.add(liftStaProtocol); + list.add(forkLiftStaProtocol); } if (list.isEmpty()) { @@ -415,21 +390,21 @@ String currentLocNo = shuttleProtocol.getCurrentLocNo();//灏忚溅浣嶇疆 Integer recentAllDistance = 9999999; - LiftStaProtocol recentSta = null;//鏈�杩戠珯鐐� + ForkLiftStaProtocol recentSta = null;//鏈�杩戠珯鐐� //鎼滅储璺濈灏忚溅鏈�杩戠殑绔欑偣 - for (LiftStaProtocol liftStaProtocol : list) { - Integer staNo = liftStaProtocol.getStaNo();//绔欑偣鍙� - String locNo = liftStaProtocol.getLocNo();//绔欑偣搴撲綅鍙� + for (ForkLiftStaProtocol forkLiftStaProtocol : list) { + Integer staNo = forkLiftStaProtocol.getStaNo();//绔欑偣鍙� + String locNo = forkLiftStaProtocol.getLocNo();//绔欑偣搴撲綅鍙� //褰撳墠绌挎杞︾嚎绋嬪埌鐩爣鍦扮偣璺濈 - List<NavigateNode> currentShuttlePath = NavigateUtils.calc(currentLocNo, locNo, NavigationMapType.NORMAL.id, Utils.getShuttlePoints(shuttleNo, Utils.getLev(currentLocNo)), null);//浣跨敤姝e父閫氶亾鍦板浘 + List<NavigateNode> currentShuttlePath = navigateUtils.calc(currentLocNo, locNo, NavigationMapType.NORMAL.id, Utils.getShuttlePoints(shuttleNo, Utils.getLev(currentLocNo)), null);//浣跨敤姝e父閫氶亾鍦板浘 if (currentShuttlePath == null) { continue; } - Integer currentAllDistance = NavigateUtils.getOriginPathAllDistance(currentShuttlePath);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� + Integer currentAllDistance = navigateUtils.getOriginPathAllDistance(currentShuttlePath);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� if (currentAllDistance < recentAllDistance) { //濡傛灉褰撳墠妤煎眰鐨勮溅璺緞鏇村皬锛屽垯鏇存柊鏈�杩戠珯鐐� - recentSta = liftStaProtocol; + recentSta = forkLiftStaProtocol; recentAllDistance = currentAllDistance; } } @@ -442,42 +417,11 @@ */ public boolean checkChargeWrk(int shuttleNo) { //鍒ゆ柇鏄惁鏈夊厖鐢典换鍔℃鍦ㄤ娇鐢ㄧ┛姊溅 - WrkCharge wrkCharge = wrkChargeMapper.selectWorking(shuttleNo); - if (wrkCharge != null) { + WrkMast wrkMast = wrkMastService.selectChargeWorking(shuttleNo); + if (wrkMast != null) { return true;//鏈夊厖鐢典换鍔� } return false;//鏃犲厖鐢典换鍔� - } - - /** - * 妫�娴嬬┛姊溅鏄惁鏈夊厖鐢典换鍔★紝鐩爣鐐规槸鍚︿负鍏呯數妗╀綅缃� - * @param shuttleNo 灏忚溅鍙� - * @param locNo 鐩爣浣嶇疆 - */ - public boolean checkCharge(int shuttleNo, String locNo) { - //鍒ゆ柇鏄惁鏈夊厖鐢典换鍔℃鍦ㄤ娇鐢ㄧ┛姊溅 - WrkCharge wrkCharge = wrkChargeMapper.selectWorking(shuttleNo); - if (wrkCharge != null) {//灏忚溅瀛樺湪鍏呯數浠诲姟锛岀瓑寰呮墽琛屽畬鎴愬悗鍐嶇敓鎴愭柊鐨勪换鍔� - //鍒ゆ柇鐩爣鐐规槸鍚︿负鍏呯數妗╋紝濡傛灉鏄幓鍏呯數鍒欐斁琛� - boolean toCharge = false;//鍘诲厖鐢电洰鏍� - for (ShuttleChargeType chargeType : ShuttleChargeType.values()) { - if (chargeType.locNo.equals(locNo)) { - toCharge = true;//鍘诲厖鐢垫々 - break; - } - } - - if (wrkCharge.getWrkSts() == 53) { - toCharge = true;//鍏呯數缁撴潫锛屽厑璁哥敓鎴愮Щ搴撲换鍔� - } - - if (!toCharge) { - //涓嶆槸鍘诲厖鐢垫々涓斿瓨鍦ㄥ厖鐢典换鍔★紝绂佹鐢熸垚鏂扮殑绉诲姩浠诲姟 - return false; - } - } - - return true;//鏃犲厖鐢典换鍔℃斁琛� || 鍘诲厖鐢垫々涓斁琛� } /** @@ -487,12 +431,12 @@ int count = 0; for (ShuttleSlave slave : slaveProperties.getShuttle()) { //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); if (shuttleThread == null) { continue; } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) { continue; } @@ -501,16 +445,11 @@ continue;//瀛樺湪鍏呯數浠诲姟锛岃繃婊ゅ皬杞� } - if (shuttleProtocol.getWorkingMode() == 0) { - continue;//鎵嬪姩鐘舵�� - } - - if (shuttleProtocol.getSuspendState() == 1) { - //灏忚溅澶勪簬绠″埗涓� + if (!shuttleThread.isIdle()) { continue; } - if (shuttleProtocol.getPoint().getZ() == lev) { + if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) == lev) { //鍚屼竴妤煎眰鍙敤灏忚溅 count++; continue; diff --git a/src/main/java/com/zy/core/enums/CrnFingerPosType.java b/src/main/java/com/zy/core/enums/CrnFingerPosType.java deleted file mode 100644 index 76d8c60..0000000 --- a/src/main/java/com/zy/core/enums/CrnFingerPosType.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.zy.core.enums; - -public enum CrnFingerPosType { - - DOWN(2, "涓嬪畾浣�"), // 涓嬪畾浣� - UP(1, "涓婂畾浣�"), // 涓婂畾浣� - NONE(0, "涓嶅湪瀹氫綅"), // 涓嶅湪瀹氫綅 - ; - - public Integer id; - public String desc; - CrnFingerPosType(Integer id, String desc) { - this.id = id; - this.desc = desc; - } - - public static CrnFingerPosType get(Short id) { - if (null == id) { - return null; - } - for (CrnFingerPosType type : CrnFingerPosType.values()) { - if (type.id.equals(id.intValue())) { - return type; - } - } - return null; - } - - public static CrnFingerPosType get(CrnFingerPosType type) { - if (null == type) { - return null; - } - for (CrnFingerPosType crnLiftPosType : CrnFingerPosType.values()) { - if (crnLiftPosType == type) { - return crnLiftPosType; - } - } - return null; - } - -} diff --git a/src/main/java/com/zy/core/enums/CrnForkPosType.java b/src/main/java/com/zy/core/enums/CrnForkPosType.java deleted file mode 100644 index 55e44ab..0000000 --- a/src/main/java/com/zy/core/enums/CrnForkPosType.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.zy.core.enums; - -public enum CrnForkPosType { - - NONE(-1, "涓嶅湪瀹氫綅"), // 璐у弶鍘熶綅 - HOME(0, "璐у弶鍘熶綅"), // 璐у弶鍘熶綅 - _LEFT(1, "璐у弶鍦ㄥ乏渚ц繙"), // 璐у弶鍦ㄥ彸渚ц繙 - LEFT(2, "璐у弶鍦ㄥ乏渚�"), // 璐у弶鍦ㄥ乏渚� - RIGHT(3, "璐у弶鍦ㄥ彸渚�"), // 璐у弶鍦ㄥ彸渚� - _RIGHT(4, "璐у弶鍦ㄥ彸渚ц繙"), // 璐у弶鍦ㄥ彸渚ц繙 - ; - - public Integer id; - public String desc; - CrnForkPosType(Integer id, String desc) { - this.id = id; - this.desc = desc; - } - - public static CrnForkPosType get(Short id) { - if (null == id) { - return null; - } - for (CrnForkPosType type : CrnForkPosType.values()) { - if (type.id.equals(id.intValue())) { - return type; - } - } - return null; - } - - public static CrnForkPosType get(CrnForkPosType type) { - if (null == type) { - return null; - } - for (CrnForkPosType crnForkPosType : CrnForkPosType.values()) { - if (crnForkPosType == type) { - return crnForkPosType; - } - } - return null; - } -} diff --git a/src/main/java/com/zy/core/enums/CrnLiftPosType.java b/src/main/java/com/zy/core/enums/CrnLiftPosType.java deleted file mode 100644 index 5dc366d..0000000 --- a/src/main/java/com/zy/core/enums/CrnLiftPosType.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.zy.core.enums; - -public enum CrnLiftPosType { - - ERROR(-1, "鏈煡"), // 涓嶅湪瀹氫綅 - ORIGIN(0, "璐у弶鍘熶綅"), // 涓嶅湪瀹氫綅 - _DOWN(1, "鍙屼几浣嶄綆浣�"), - DOWN(2, "鍗曚几浣嶄綆浣�"), // 涓嬪畾浣� - UP(3, "鍗曚几浣嶉珮浣�"), // 涓婂畾浣� - _UP(4, "鍙屼几浣嶉珮浣�"), - ; - - public Integer id; - public String desc; - CrnLiftPosType(Integer id, String desc) { - this.id = id; - this.desc = desc; - } - - public static CrnLiftPosType get(Short id) { - if (null == id) { - return null; - } - for (CrnLiftPosType type : CrnLiftPosType.values()) { - if (type.id.equals(id.intValue())) { - return type; - } - } - return null; - } - - public static CrnLiftPosType get(CrnLiftPosType type) { - if (null == type) { - return null; - } - for (CrnLiftPosType crnLiftPosType : CrnLiftPosType.values()) { - if (crnLiftPosType == type) { - return crnLiftPosType; - } - } - return null; - } - -} diff --git a/src/main/java/com/zy/core/enums/CrnModeType.java b/src/main/java/com/zy/core/enums/CrnModeType.java deleted file mode 100644 index 7f2d84a..0000000 --- a/src/main/java/com/zy/core/enums/CrnModeType.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.zy.core.enums; - -public enum CrnModeType { - - NONE(-1, "绂荤嚎"), - STOP(0, "缁翠慨"), - HAND(1, "鎵嬪姩"), - HALF_AUTO(2, "鍗婅嚜鍔�"), - AUTO(3, "鑷姩"), - ; - - public Integer id; - public String desc; - CrnModeType(Integer id, String desc) { - this.id = id; - this.desc = desc; - } - - public static CrnModeType get(Short id) { - if (null == id) { - return null; - } - for (CrnModeType type : CrnModeType.values()) { - if (type.id.equals(id.intValue())) { - return type; - } - } - return null; - } - - public static CrnModeType get(CrnModeType type) { - if (null == type) { - return null; - } - for (CrnModeType crnModeType : CrnModeType.values()) { - if (crnModeType == type) { - return crnModeType; - } - } - return null; - } -} diff --git a/src/main/java/com/zy/core/enums/CrnStatusType.java b/src/main/java/com/zy/core/enums/CrnStatusType.java deleted file mode 100644 index b680737..0000000 --- a/src/main/java/com/zy/core/enums/CrnStatusType.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.zy.core.enums; - -public enum CrnStatusType { - - NONE(-1, "绂荤嚎"), - IDLE(0, "绌洪棽"), - FETCH_MOVING(1, "鍙栬揣琛岃蛋"), - FETCH_WAITING(2, "鍙栬揣绛夊緟"), - FETCHING(3, "鍙栬揣涓�"), - PUT_MOVING(4, "鏀捐揣璧拌"), - PUT_WAITING(5, "鏀捐揣绛夊緟"), - PUTTING(6, "鏀捐揣涓�"), - ORIGIN_GO(7, "鍥炲師鐐�"), - ORIGIN_BACK(8, "鍥炲弽鍘熺偣"), - MOVING(9, "璧拌涓�"), - WAITING(10, "浠诲姟瀹屾垚绛夊緟WCS纭"), - PAUSE(11, "浠诲姟鏆傚仠"), - SOS(99, "鎶ヨ"), - ; - - public Integer id; - public String desc; - CrnStatusType(Integer id, String desc) { - this.id = id; - this.desc = desc; - } - - public static CrnStatusType get(Short id) { - if (null == id) { - return null; - } - for (CrnStatusType type : CrnStatusType.values()) { - if (type.id.equals(id.intValue())) { - return type; - } - } - return null; - } - - public static CrnStatusType get(CrnStatusType type) { - if (null == type) { - return null; - } - for (CrnStatusType crnStatusType : CrnStatusType.values()) { - if (crnStatusType == type) { - return crnStatusType; - } - } - return null; - } -} diff --git a/src/main/java/com/zy/core/enums/CrnTaskModeType.java b/src/main/java/com/zy/core/enums/CrnTaskModeType.java deleted file mode 100644 index d505543..0000000 --- a/src/main/java/com/zy/core/enums/CrnTaskModeType.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.zy.core.enums; - -public enum CrnTaskModeType { - - NONE(0), // 鏃� - PAKIN(1), // 鍏ュ簱 - PAKOUT(2), // 鍑哄簱 - LOC_MOVE(3), // 搴撲綅绉昏浆 - X_MOVE(4), // 绔欎綅绉昏浆 - Y_MOVE(5), // 绔欎綅绉昏浆 - XY_MOVE(6), // 绔欎綅绉昏浆 - GO_ORIGIN(7), // 鍥炲師鐐� - BACK_ORIGIN(8), // 鍥炲弽鍘熺偣 - CLEAR(9), // 娓呴敊 - STE_MOVE(10), // 鍙栨斁灏忚溅 - ; - - public Integer id; - CrnTaskModeType(Integer id) { - this.id = id; - } - - public static CrnTaskModeType get(Short id) { - if (null == id) { - return null; - } - for (CrnTaskModeType type : CrnTaskModeType.values()) { - if (type.id.equals(id.intValue())) { - return type; - } - } - return null; - } - - public static CrnTaskModeType get(CrnTaskModeType type) { - if (null == type) { - return null; - } - for (CrnTaskModeType crnTaskModeType : CrnTaskModeType.values()) { - if (crnTaskModeType == type) { - return crnTaskModeType; - } - } - return null; - } - -} diff --git a/src/main/java/com/zy/core/enums/ForkLiftConfirmType.java b/src/main/java/com/zy/core/enums/ForkLiftConfirmType.java new file mode 100644 index 0000000..410b0da --- /dev/null +++ b/src/main/java/com/zy/core/enums/ForkLiftConfirmType.java @@ -0,0 +1,40 @@ +package com.zy.core.enums; + +//璐у弶鎻愬崌鏈轰换鍔$‘璁� +public enum ForkLiftConfirmType { + NO(0, "鏈‘璁�"), + CONFIRM(1, "宸茬‘璁�"), + ; + + public Integer id; + public String desc; + + ForkLiftConfirmType(Integer id, String desc) { + this.id = id; + this.desc = desc; + } + + public static ForkLiftConfirmType get(Integer id) { + if (null == id) { + return null; + } + for (ForkLiftConfirmType type : ForkLiftConfirmType.values()) { + if (type.id.equals(id)) { + return type; + } + } + return null; + } + + public static ForkLiftConfirmType get(ForkLiftConfirmType type) { + if (null == type) { + return null; + } + for (ForkLiftConfirmType type2 : ForkLiftConfirmType.values()) { + if (type2 == type) { + return type2; + } + } + return null; + } +} diff --git a/src/main/java/com/zy/core/enums/ForkLiftIoModeType.java b/src/main/java/com/zy/core/enums/ForkLiftIoModeType.java new file mode 100644 index 0000000..a2d9a10 --- /dev/null +++ b/src/main/java/com/zy/core/enums/ForkLiftIoModeType.java @@ -0,0 +1,41 @@ +package com.zy.core.enums; + +//璐у弶鎻愬崌鏈哄嚭鍏ュ簱妯″紡 +public enum ForkLiftIoModeType { + NONE(0, "鏈煡"), + IN(1, "鍏ュ簱"), + OUT(2, "鍑哄簱"), + ; + + public Integer id; + public String desc; + + ForkLiftIoModeType(Integer id, String desc) { + this.id = id; + this.desc = desc; + } + + public static ForkLiftIoModeType get(Integer id) { + if (null == id) { + return null; + } + for (ForkLiftIoModeType type : ForkLiftIoModeType.values()) { + if (type.id.equals(id)) { + return type; + } + } + return null; + } + + public static ForkLiftIoModeType get(ForkLiftIoModeType type) { + if (null == type) { + return null; + } + for (ForkLiftIoModeType type2 : ForkLiftIoModeType.values()) { + if (type2 == type) { + return type2; + } + } + return null; + } +} diff --git a/src/main/java/com/zy/core/enums/ForkLiftProtocolStatusType.java b/src/main/java/com/zy/core/enums/ForkLiftProtocolStatusType.java new file mode 100644 index 0000000..2ada10c --- /dev/null +++ b/src/main/java/com/zy/core/enums/ForkLiftProtocolStatusType.java @@ -0,0 +1,43 @@ +package com.zy.core.enums; + +public enum ForkLiftProtocolStatusType { + NONE(-1, "绂荤嚎"), + IDLE(0, "绌洪棽"), + PICK_UP(1, "鍙栬揣涓�"), + PUT_DOWN(2, "鏀捐揣涓�"), + WAITING(98, "绛夊緟纭"), + ERROR(99, "鏁呴殰"), + ; + + public Integer id; + public String desc; + + ForkLiftProtocolStatusType(Integer id, String desc) { + this.id = id; + this.desc = desc; + } + + public static ForkLiftProtocolStatusType get(Integer id) { + if (null == id) { + return null; + } + for (ForkLiftProtocolStatusType type : ForkLiftProtocolStatusType.values()) { + if (type.id.equals(id)) { + return type; + } + } + return null; + } + + public static ForkLiftProtocolStatusType get(ForkLiftProtocolStatusType type) { + if (null == type) { + return null; + } + for (ForkLiftProtocolStatusType type2 : ForkLiftProtocolStatusType.values()) { + if (type2 == type) { + return type2; + } + } + return null; + } +} diff --git a/src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java b/src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java new file mode 100644 index 0000000..d49b56e --- /dev/null +++ b/src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java @@ -0,0 +1,44 @@ +package com.zy.core.enums; + +//璐у弶鎻愬崌鏈轰换鍔℃ā寮� +public enum ForkLiftTaskModeType { + + NONE(0, "鏈煡"), + PICK_UP(1, "鍙栬揣"), + PUT_DOWN(2, "鏀捐揣"), + PICK_PUT(3, "鍙栨斁璐�"), + SHUTTLE_SWITCH(4, "灏忚溅鎹㈠眰"), + ; + + public Integer id; + public String desc; + + ForkLiftTaskModeType(Integer id, String desc) { + this.id = id; + this.desc = desc; + } + + public static ForkLiftTaskModeType get(Integer id) { + if (null == id) { + return null; + } + for (ForkLiftTaskModeType type : ForkLiftTaskModeType.values()) { + if (type.id.equals(id)) { + return type; + } + } + return null; + } + + public static ForkLiftTaskModeType get(ForkLiftTaskModeType type) { + if (null == type) { + return null; + } + for (ForkLiftTaskModeType type2 : ForkLiftTaskModeType.values()) { + if (type2 == type) { + return type2; + } + } + return null; + } +} diff --git a/src/main/java/com/zy/core/enums/LiftLevType.java b/src/main/java/com/zy/core/enums/LiftLevType.java deleted file mode 100644 index 488398f..0000000 --- a/src/main/java/com/zy/core/enums/LiftLevType.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.zy.core.enums; - -/** - * 鎻愬崌鏈烘ゼ灞備笌瀹為檯妤煎眰鏁板�艰浆鎹� - */ -public enum LiftLevType { - - ONE(1, (short) 1), - TWO(2, (short) 2), - THREE(3, (short) 4), - FOUR(4, (short) 8), - FIVE(5, (short) 16), - ; - - public Integer lev; - public Short realLev; - - LiftLevType(Integer lev, Short realLev) { - this.lev = lev; - this.realLev = realLev; - } - - public static LiftLevType get(Integer lev) { - if (null == lev) { - return null; - } - for (LiftLevType type : LiftLevType.values()) { - if (type.lev.equals(lev)) { - return type; - } - } - return null; - } - - public static LiftLevType get(LiftLevType type) { - if (null == type) { - return null; - } - for (LiftLevType type2 : LiftLevType.values()) { - if (type2 == type) { - return type2; - } - } - return null; - } - - public static Short getRealLev(Integer lev) { - if (null == lev) { - return null; - } - for (LiftLevType type : LiftLevType.values()) { - if (type.lev.equals(lev)) { - return type.realLev; - } - } - return null; - } - - public static Integer getLev(Short realLev) { - if (null == realLev) { - return null; - } - for (LiftLevType type : LiftLevType.values()) { - if (type.realLev.equals(realLev)) { - return type.lev; - } - } - return null; - } - -} diff --git a/src/main/java/com/zy/core/enums/LiftNotReadyType.java b/src/main/java/com/zy/core/enums/LiftNotReadyType.java deleted file mode 100644 index eb933fc..0000000 --- a/src/main/java/com/zy/core/enums/LiftNotReadyType.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.zy.core.enums; - -public enum LiftNotReadyType { - STATUS_0(0, "N"), - NOT_LEV(1, "涓嶅湪鎸囧畾灞�"), - NOT_SYNC(2, "鍥涜酱涓嶅悓姝�"), - STATUS_3(3, "骞冲彴鍓嶉檺鍏夌數琚尅鍒帮紙闈犺繎璐ф灦锛�"), - STATUS_4(4, "骞冲彴鍚庨檺鍏夌數琚尅鍒帮紙杩滅璐ф灦锛�"), - STATUS_5(5, "骞冲彴涓婇檺浣嶆姤璀�"), - STATUS_6(6, "骞冲彴涓嬮檺浣嶆姤璀�"), - STATUS_7(7, "鐢垫煖鎬ュ仠鎶ヨ"), - STATUS_8(8, "杈撻�佺嚎鍓嶉檺浣嶈鎸″埌锛堥潬杩戣揣鏋讹級"), - STATUS_9(9, "杈撻�佺嚎鍚庨檺浣嶈鎸″埌锛堣繙绂昏揣鏋讹級"), - STATUS_10(10, "瑙︽懜灞忕揣鎬ュ仠姝㈣鎸変笅"), - STATUS_11(11, "鍥涜酱鍔ㄥ姏绾挎柇绾�"), - STATUS_12(12, "鍗曟満妯″紡"), - STATUS_13(13, "鍥涜酱鎶ヨ"), - STATUS_14(14, "浣嶇疆鍋忓樊杩囧ぇ"), - STATUS_15(15, "鎵煩鍋忓樊杩囧ぇ"), - STATUS_16(16, "杈撻�佺嚎杩囪浇"), - STATUS_17(17, "杩涙彁鍗囨満鍗℃墭鐩�"), - STATUS_18(18, "鍑烘彁鍗囨満鍗℃墭鐩�"), - ; - - public Integer id; - public String desc; - - LiftNotReadyType(Integer id, String desc) { - this.id = id; - this.desc = desc; - } - - public static LiftNotReadyType get(Integer id) { - if (null == id) { - return null; - } - for (LiftNotReadyType type : LiftNotReadyType.values()) { - if (type.id.equals(id)) { - return type; - } - } - return null; - } - - public static LiftNotReadyType get(LiftNotReadyType type) { - if (null == type) { - return null; - } - for (LiftNotReadyType type2 : LiftNotReadyType.values()) { - if (type2 == type) { - return type2; - } - } - return null; - } -} diff --git a/src/main/java/com/zy/core/enums/LiftProtocolStatusType.java b/src/main/java/com/zy/core/enums/LiftProtocolStatusType.java deleted file mode 100644 index e5b8e3c..0000000 --- a/src/main/java/com/zy/core/enums/LiftProtocolStatusType.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.zy.core.enums; - -public enum LiftProtocolStatusType { - IDLE(1, "绌洪棽"), - WORKING(2, "浣滀笟涓�"), - WAITING(3, "绛夊緟纭"), - OFFLINE(4, "绂荤嚎"), - ; - - public Integer id; - public String desc; - - LiftProtocolStatusType(Integer id, String desc) { - this.id = id; - this.desc = desc; - } - - public static LiftProtocolStatusType get(Integer id) { - if (null == id) { - return null; - } - for (LiftProtocolStatusType type : LiftProtocolStatusType.values()) { - if (type.id.equals(id.intValue())) { - return type; - } - } - return null; - } - - public static LiftProtocolStatusType get(LiftProtocolStatusType type) { - if (null == type) { - return null; - } - for (LiftProtocolStatusType type2 : LiftProtocolStatusType.values()) { - if (type2 == type) { - return type2; - } - } - return null; - } -} diff --git a/src/main/java/com/zy/core/enums/LocStsType.java b/src/main/java/com/zy/core/enums/LocStsType.java new file mode 100644 index 0000000..9a275af --- /dev/null +++ b/src/main/java/com/zy/core/enums/LocStsType.java @@ -0,0 +1,27 @@ +package com.zy.core.enums; + +public enum LocStsType { + + D,//绌烘澘 + F,//鍦ㄥ簱 + O,//绌哄簱 + X,//绂佺敤 + E,//涓嶅彲鏀捐揣閫氶亾 + W,//姣嶈建閬� + C,//鍏呯數妗� + Z,//绔欑偣 + ; + + LocStsType() { + } + + public static LocStsType get(String el) { + for (LocStsType value : LocStsType.values()) { + if (el.equals(value.toString())) { + return value; + } + } + return null; + } + +} diff --git a/src/main/java/com/zy/core/enums/MapNodeType.java b/src/main/java/com/zy/core/enums/MapNodeType.java new file mode 100644 index 0000000..15ae607 --- /dev/null +++ b/src/main/java/com/zy/core/enums/MapNodeType.java @@ -0,0 +1,49 @@ +package com.zy.core.enums; + +public enum MapNodeType { + + DISABLE(-1, "绂佺敤"), + NORMAL_PATH(0, "璐т綅"), + START_POINT(1, "璧风偣"), + TARGET_POINT(2, "缁堢偣"), + MAIN_PATH(3, "姣嶈建"), + CONVEYOR(4, "杈撻�佺珯鐐�"), + CHARGE(5, "鍏呯數妗�"), + CONVEYOR_CAR_GO(6, "灏忚溅鍙蛋杈撻�佺珯鐐�"), + CAR(66, "灏忚溅"), + LIFT(67, "鎻愬崌鏈�"), + LOCK(-999, "閿佸畾鑺傜偣"), + ; + + public Integer id; + public String desc; + + MapNodeType(Integer id, String desc) { + this.id = id; + this.desc = desc; + } + + public static MapNodeType get(Short id) { + if (null == id) { + return null; + } + for (MapNodeType type : MapNodeType.values()) { + if (type.id.equals(id.intValue())) { + return type; + } + } + return null; + } + + public static MapNodeType get(MapNodeType type) { + if (null == type) { + return null; + } + for (MapNodeType type1 : MapNodeType.values()) { + if (type1 == type) { + return type1; + } + } + return null; + } +} diff --git a/src/main/java/com/zy/core/enums/NyLiftTaskModelType.java b/src/main/java/com/zy/core/enums/NyLiftTaskModelType.java deleted file mode 100644 index b30bce1..0000000 --- a/src/main/java/com/zy/core/enums/NyLiftTaskModelType.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.zy.core.enums; - -/** - * 鐗涚溂鎻愬崌鏈轰换鍔$被鍨嬫灇涓� - */ -public enum NyLiftTaskModelType { - MOVE_TRAY(1, "绉绘墭鐩�"), - MOVE_CAR(2, "绉诲皬杞�"), - RESET(3, "鎻愬崌鏈哄浣�"), - ; - - public Integer id; - public String desc; - - NyLiftTaskModelType(Integer id, String desc) { - this.id = id; - this.desc = desc; - } - - public static NyLiftTaskModelType get(Integer id) { - if (null == id) { - return null; - } - for (NyLiftTaskModelType type : NyLiftTaskModelType.values()) { - if (type.id.equals(id)) { - return type; - } - } - return null; - } - - public static NyLiftTaskModelType get(NyLiftTaskModelType type) { - if (null == type) { - return null; - } - for (NyLiftTaskModelType type2 : NyLiftTaskModelType.values()) { - if (type2 == type) { - return type2; - } - } - return null; - } -} diff --git a/src/main/java/com/zy/core/enums/RedisKeyType.java b/src/main/java/com/zy/core/enums/RedisKeyType.java index 837eef7..2a9af30 100644 --- a/src/main/java/com/zy/core/enums/RedisKeyType.java +++ b/src/main/java/com/zy/core/enums/RedisKeyType.java @@ -4,6 +4,7 @@ SHUTTLE("shuttle_wrk_no_"), LIFT("lift_wrk_no_"), + FORK_LIFT("fork_lift_wrk_no_"), MAP("realtimeBasMap_"), BASIC_MAP("basicMap_"), ; diff --git a/src/main/java/com/zy/core/enums/ShuttleChargeType.java b/src/main/java/com/zy/core/enums/ShuttleChargeType.java deleted file mode 100644 index 7d0d635..0000000 --- a/src/main/java/com/zy/core/enums/ShuttleChargeType.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.zy.core.enums; - -import com.core.common.Cools; - -public enum ShuttleChargeType { - - CHARGE_1(1, "1402001"), - CHARGE_2(2, "1402002"), - CHARGE_3(3, "1402003"), - CHARGE_4(4, "1402004"), - CHARGE_5(5, "1601905"), - CHARGE_6(6, "1601906"), - CHARGE_7(7, "1601907"), - CHARGE_8(8, "1302008"), - CHARGE_9(9, "1302009"), - CHARGE_10(10, "1302010") - ; - - ShuttleChargeType(int id, String locNo) { - this.id = id; - this.locNo = locNo; - } - - public int id; - - public String locNo; - - public static ShuttleChargeType get(String locNo) { - if (Cools.isEmpty(locNo)) { - return null; - } - ShuttleChargeType[] values = ShuttleChargeType.values(); - for (ShuttleChargeType value : values) { - if (value.locNo.equals(locNo)) { - return value; - } - } - return null; - } - - public static ShuttleChargeType get(int id) { - if (Cools.isEmpty(id)) { - return null; - } - ShuttleChargeType[] values = ShuttleChargeType.values(); - for (ShuttleChargeType value : values) { - if (value.id == id) { - return value; - } - } - return null; - } - -} diff --git a/src/main/java/com/zy/core/enums/ShuttleCommandModeType.java b/src/main/java/com/zy/core/enums/ShuttleCommandModeType.java new file mode 100644 index 0000000..082aa68 --- /dev/null +++ b/src/main/java/com/zy/core/enums/ShuttleCommandModeType.java @@ -0,0 +1,53 @@ +package com.zy.core.enums; + +/** + * 鍥涘悜绌挎杞﹀懡浠ょ被鍨� + */ +public enum ShuttleCommandModeType { + + NONE(-1, "鏈煡绫诲瀷"), + MOVE(1, "绉诲姩"), + IN_LIFT(2, "杩涙彁鍗囨満"), + OUT_LIFT(3, "鍑烘彁鍗囨満"), + CHARGE_OPEN(4, "鍏呯數寮�"), + CHARGE_CLOSE(5, "鍏呯數鍏�"), + PALLET_LIFT(6, "鎵樼洏椤跺崌"), + PALLET_DOWN(7, "鎵樼洏涓嬮檷"), + RESET(8, "澶嶄綅"), + UPDATE_LOCATION(9, "鏇存柊鍧愭爣"), + ; + + public Integer id; + public String desc; + + ShuttleCommandModeType(Integer id, String desc) { + this.id = id; + this.desc = desc; + } + + public static ShuttleCommandModeType get(Integer id) { + if (null == id) { + return null; + } + for (ShuttleCommandModeType type : ShuttleCommandModeType.values()) { + if (type.id.equals(id)) { + return type; + } + } + return null; + } + + public static ShuttleCommandModeType get(ShuttleCommandModeType type) { + if (null == type) { + return null; + } + for (ShuttleCommandModeType type1 : ShuttleCommandModeType.values()) { + if (type1 == type) { + return type1; + } + } + return null; + } + + +} diff --git a/src/main/java/com/zy/core/enums/ShuttleErrorCodeType.java b/src/main/java/com/zy/core/enums/ShuttleErrorCodeType.java deleted file mode 100644 index 773edb2..0000000 --- a/src/main/java/com/zy/core/enums/ShuttleErrorCodeType.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.zy.core.enums; - -/** - * 鍥涘悜绌挎杞� - * Wm204 閿欒缂栧彿 - */ -public enum ShuttleErrorCodeType { - - NORMAL(0, "鏃犻敊璇�"), - PCB_SUBMODULE(1, "PCB瀛愭ā鍧�(1)"), - PCB_PLATE(2, "PCB鏉�(2)"), - SERVO(10, "浼烘湇(10)"), - CANOPEN(11, "canopen(11)"), - RUN_ERROR(14, "杩愯閿欒(14)"), - SYSTEM_ERROR(16, "绯荤粺閿欒(16)") - ; - - public Integer id; - public String desc; - - ShuttleErrorCodeType(Integer id, String desc) { - this.id = id; - this.desc = desc; - } - - public static ShuttleErrorCodeType get(Integer id) { - if (null == id) { - return null; - } - for (ShuttleErrorCodeType type : ShuttleErrorCodeType.values()) { - if (type.id.equals(id.intValue())) { - return type; - } - } - return null; - } - - public static ShuttleErrorCodeType get(ShuttleErrorCodeType type) { - if (null == type) { - return null; - } - for (ShuttleErrorCodeType shuttleErrorCodeType : ShuttleErrorCodeType.values()) { - if (shuttleErrorCodeType == type) { - return shuttleErrorCodeType; - } - } - return null; - } - -} diff --git a/src/main/java/com/zy/core/enums/ShuttlePlcInputStatusType.java b/src/main/java/com/zy/core/enums/ShuttlePlcInputStatusType.java deleted file mode 100644 index d9df63f..0000000 --- a/src/main/java/com/zy/core/enums/ShuttlePlcInputStatusType.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.zy.core.enums; - -/** - * 鍥涘悜绌挎杞� - * Wm207 PLC杈撳叆鐘舵�� - */ -public enum ShuttlePlcInputStatusType { - - LIFT_STATUS(Byte.parseByte("6"), "鎵樼洏椤堕儴浼犳劅鍣ㄧ姸鎬�") - ; - - public byte id; - public String desc; - - ShuttlePlcInputStatusType(byte id, String desc) { - this.id = id; - this.desc = desc; - } - - public static ShuttlePlcInputStatusType get(byte id) { - for (ShuttlePlcInputStatusType type : ShuttlePlcInputStatusType.values()) { - if (type.id == id) { - return type; - } - } - return null; - } - - public static ShuttlePlcInputStatusType get(ShuttlePlcInputStatusType type) { - if (null == type) { - return null; - } - for (ShuttlePlcInputStatusType shuttlePlcInputStatusType : ShuttlePlcInputStatusType.values()) { - if (shuttlePlcInputStatusType == type) { - return shuttlePlcInputStatusType; - } - } - return null; - } - -} diff --git a/src/main/java/com/zy/core/enums/ShuttlePlcOutputStatusType.java b/src/main/java/com/zy/core/enums/ShuttlePlcOutputStatusType.java deleted file mode 100644 index dd67492..0000000 --- a/src/main/java/com/zy/core/enums/ShuttlePlcOutputStatusType.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.zy.core.enums; - -/** - * 鍥涘悜绌挎杞� - * WM205 Plc杈撳嚭鐘舵�両O - */ -public enum ShuttlePlcOutputStatusType { - - NULL(Byte.parseByte("0"), "绌�"), - LIFT(Byte.parseByte("1"), "椤跺崌浣�"), - TURN(Byte.parseByte("2"), "杞悜浣�"), - BRAKE(Byte.parseByte("3"), "鎶遍椄浣�"), - CHARGE(Byte.parseByte("4"), "鍐茬數浣�") - ; - - public byte id; - public String desc; - - ShuttlePlcOutputStatusType(byte id, String desc) { - this.id = id; - this.desc = desc; - } - - public static ShuttlePlcOutputStatusType get(byte id) { - for (ShuttlePlcOutputStatusType type : ShuttlePlcOutputStatusType.values()) { - if (type.id == id) { - return type; - } - } - return null; - } - - public static ShuttlePlcOutputStatusType get(ShuttlePlcOutputStatusType type) { - if (null == type) { - return null; - } - for (ShuttlePlcOutputStatusType shuttlePlcOutputStatusType : ShuttlePlcOutputStatusType.values()) { - if (shuttlePlcOutputStatusType == type) { - return shuttlePlcOutputStatusType; - } - } - return null; - } - -} diff --git a/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java b/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java index d4bfed8..884a137 100644 --- a/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java +++ b/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java @@ -3,29 +3,17 @@ public enum ShuttleTaskModeType { INIT(0, "鍒濆"), // 鍒濆 - PAK_IN(1, "鍏ュ簱"), - PAK_OUT(2, "鍑哄簱"), - PALLET_LIFT(3, "鎵樼洏椤跺崌"), - PALLET_DOWN(4, "鎵樼洏涓嬮檷"), - X_NEGATIVE(5, "X-鏂瑰悜"), - X_POSITIVE(6, "X+鏂瑰悜"), - Y_POSITIVE(7, "Y+鏂瑰悜"), - Y_NEGATIVE(8, "Y-鏂瑰悜"), - RESET(9, "鐘舵�佸浣�"), - SEARCH_LEFT(10, "姝f柟鍚�(鍙�)瀵诲簱浣�"), - SEARCH_RIGHT(11, "璐熸柟鍚�(宸�)瀵诲簱浣�"), - SEARCH_TOP(12, "璐熸柟鍚�(鍓�)瀵诲簱浣�"), - SEARCH_BOTTOM(13, "璐熸柟鍚�(鍚�)瀵诲簱浣�"), - MOVE_LOC_NO(14, "绉诲姩鍒扮洰鏍囧簱浣�"), - CHARGE(15, "鍏呯數"), - MOVE_LIFT(16, "绉诲姩鍒版彁鍗囨満"), - AVOID(17, "閬胯浠诲姟"), - TRANSPORT(18, "鎼繍浠诲姟"), - SHUTTLE_MOVE_LOC_NO(19, "灏忚溅绉诲簱浠诲姟"), - SHUTTLE_LOC_TO_LOC(20, "搴撲綅绉昏浆"), - SHUTTLE_CONTROL(21, "灏忚溅绠″埗"), - SHUTTLE_CANCEL_CONTROL(22, "灏忚溅鍙栨秷绠″埗"), - MOVE_LOC_NO_WRK_MAST(23, "绉诲姩鍒扮洰鏍囧簱浣�(鐢熸垚绉诲姩浠诲姟)"), + PALLET_LIFT(1, "鎵樼洏椤跺崌"), + PALLET_DOWN(2, "鎵樼洏涓嬮檷"), + RESET(3, "鐘舵�佸浣�"), + MOVE_LOC_NO(4, "绉诲姩鍒扮洰鏍囧簱浣�"), + MOVE_LOC_NO_TASK(5, "绉诲姩鍒扮洰鏍囧簱浣�(鐢熸垚绉诲姩浠诲姟)"), + CHARGE(6, "鍏呯數"), + MOVE_LIFT(7, "绉诲姩鍒版彁鍗囨満"), + AVOID(8, "閬胯浠诲姟"), + TRANSPORT(9, "鎼繍浠诲姟"), + SHUTTLE_CONTROL(10, "灏忚溅绠″埗"), + SHUTTLE_CANCEL_CONTROL(11, "灏忚溅鍙栨秷绠″埗"), ; public Integer id; @@ -36,12 +24,12 @@ this.desc = desc; } - public static ShuttleTaskModeType get(Short id) { + public static ShuttleTaskModeType get(Integer id) { if (null == id) { return null; } for (ShuttleTaskModeType type : ShuttleTaskModeType.values()) { - if (type.id.equals(id.intValue())) { + if (type.id.equals(id)) { return type; } } diff --git a/src/main/java/com/zy/core/enums/ShuttleTaskNoType.java b/src/main/java/com/zy/core/enums/ShuttleTaskNoType.java new file mode 100644 index 0000000..5f50b41 --- /dev/null +++ b/src/main/java/com/zy/core/enums/ShuttleTaskNoType.java @@ -0,0 +1,48 @@ +package com.zy.core.enums; + +/** + * 鍥涘悜绌挎杞︿换鍔″彿绫诲瀷 + */ +public enum ShuttleTaskNoType { + + IN(1, "鍏ュ簱"), + OUT(2, "鍑哄簱"), + MOVE(3, "绉诲姩"), + CHARGE(4, "鍏呯數"), + RESET(5, "澶嶄綅"), + ; + + public Integer id; + public String desc; + + ShuttleTaskNoType(Integer id, String desc) { + this.id = id; + this.desc = desc; + } + + public static ShuttleTaskNoType get(Integer id) { + if (null == id) { + return null; + } + for (ShuttleTaskNoType type : ShuttleTaskNoType.values()) { + if (type.id.equals(id)) { + return type; + } + } + return null; + } + + public static ShuttleTaskNoType get(ShuttleTaskNoType type) { + if (null == type) { + return null; + } + for (ShuttleTaskNoType type1 : ShuttleTaskNoType.values()) { + if (type1 == type) { + return type1; + } + } + return null; + } + + +} diff --git a/src/main/java/com/zy/core/enums/SlaveType.java b/src/main/java/com/zy/core/enums/SlaveType.java index 72c47c4..08c387a 100644 --- a/src/main/java/com/zy/core/enums/SlaveType.java +++ b/src/main/java/com/zy/core/enums/SlaveType.java @@ -4,8 +4,6 @@ Crn, Devp, - Devp2, - Devp3, Barcode, Led, Scale, @@ -13,6 +11,7 @@ Ste, Shuttle, Lift, + ForkLift, ; public static SlaveType findInstance(String s){ diff --git a/src/main/java/com/zy/core/enums/SteABType.java b/src/main/java/com/zy/core/enums/SteABType.java deleted file mode 100644 index d94f35e..0000000 --- a/src/main/java/com/zy/core/enums/SteABType.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.zy.core.enums; - -public enum SteABType { - - A, - B, - ; - - -} diff --git a/src/main/java/com/zy/core/enums/SteChargeType.java b/src/main/java/com/zy/core/enums/SteChargeType.java deleted file mode 100644 index 1635cd2..0000000 --- a/src/main/java/com/zy/core/enums/SteChargeType.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.zy.core.enums; - -import com.core.common.Cools; - -public enum SteChargeType { - - FIRST(1, "0100101"), -// SECOND(2, "0100201"), -// THIRD(3, "0100301"), - ; - - SteChargeType(int ssbm, String locNo) { - this.ssbm = ssbm; - this.locNo = locNo; - } - - public int ssbm; - - public String locNo; - - public static SteChargeType get(String locNo) { - if (Cools.isEmpty(locNo)) { - return null; - } - SteChargeType[] values = SteChargeType.values(); - for (SteChargeType value : values) { - if (value.locNo.equals(locNo)) { - return value; - } - } - return null; - } - - public static SteChargeType get(int ssbm) { - if (Cools.isEmpty(ssbm)) { - return null; - } - SteChargeType[] values = SteChargeType.values(); - for (SteChargeType value : values) { - if (value.ssbm == ssbm) { - return value; - } - } - return null; - } - -} diff --git a/src/main/java/com/zy/core/enums/SteHisTaskStatusType.java b/src/main/java/com/zy/core/enums/SteHisTaskStatusType.java deleted file mode 100644 index b29f2a4..0000000 --- a/src/main/java/com/zy/core/enums/SteHisTaskStatusType.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.zy.core.enums; - -public enum SteHisTaskStatusType { - - INIT(0, "鍒濆"), - COMPLETE(1, "鎵ц瀹屾垚"), - REMOVE(2, "鍒犻櫎"), - ; - - public Integer id; - public String desc; - SteHisTaskStatusType(Integer id, String desc) { - this.id = id; - this.desc = desc; - } - - public static SteHisTaskStatusType get(Short id) { - if (null == id) { - return null; - } - for (SteHisTaskStatusType type : SteHisTaskStatusType.values()) { - if (type.id.equals(id.intValue())) { - return type; - } - } - return null; - } - - public static SteHisTaskStatusType get(SteHisTaskStatusType type) { - if (null == type) { - return null; - } - for (SteHisTaskStatusType statusType : SteHisTaskStatusType.values()) { - if (statusType == type) { - return statusType; - } - } - return null; - } - -} diff --git a/src/main/java/com/zy/core/enums/SteLocaType.java b/src/main/java/com/zy/core/enums/SteLocaType.java deleted file mode 100644 index bf72a9c..0000000 --- a/src/main/java/com/zy/core/enums/SteLocaType.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.zy.core.enums; - -public enum SteLocaType { - - NONE(0, "鏈煡"), - A(1, "A鐐�"), - B(2, "B鐐�"), - A_WAITING(3, "A寰呮満鐐�"), - B_WAITING(4, "B寰呮満鐐�"), - ; - - public Integer id; - public String desc; - SteLocaType(Integer id, String desc) { - this.id = id; - this.desc = desc; - } - - public static SteLocaType get(Short id) { - if (null == id) { - return null; - } - for (SteLocaType type : SteLocaType.values()) { - if (type.id.equals(id.intValue())) { - return type; - } - } - return null; - } - - public static SteLocaType get(SteLocaType type) { - if (null == type) { - return null; - } - for (SteLocaType crnStatusType : SteLocaType.values()) { - if (crnStatusType == type) { - return crnStatusType; - } - } - return null; - } -} diff --git a/src/main/java/com/zy/core/enums/SteStatusType.java b/src/main/java/com/zy/core/enums/SteStatusType.java deleted file mode 100644 index 6adee1e..0000000 --- a/src/main/java/com/zy/core/enums/SteStatusType.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.zy.core.enums; - -public enum SteStatusType { - - IDLE(0, "绌洪棽"), - MOVING(1, "浣滀笟涓�"), - SOS(2, "鎶ヨ"), - WAITING(10, "绛夊緟纭"), - OFF_LINE(-1, "鏈煡"), - ; - - public Integer id; - public String desc; - SteStatusType(Integer id, String desc) { - this.id = id; - this.desc = desc; - } - - public static SteStatusType get(Short id) { - if (null == id) { - return null; - } - for (SteStatusType type : SteStatusType.values()) { - if (type.id.equals(id.intValue())) { - return type; - } - } - return OFF_LINE; - } - - public static SteStatusType get(SteStatusType type) { - if (null == type) { - return null; - } - for (SteStatusType crnStatusType : SteStatusType.values()) { - if (crnStatusType == type) { - return crnStatusType; - } - } - return null; - } -} diff --git a/src/main/java/com/zy/core/enums/SteTaskModeType.java b/src/main/java/com/zy/core/enums/SteTaskModeType.java deleted file mode 100644 index 02930f9..0000000 --- a/src/main/java/com/zy/core/enums/SteTaskModeType.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.zy.core.enums; - -import com.core.exception.CoolException; -import com.zy.asrs.utils.Utils; -import com.zy.core.model.protocol.SteProtocol; - -public enum SteTaskModeType { - - INIT(0, "鍒濆"), // 鍒濆 - OUT_RIGHT(1, "鍙冲嚭搴�"), // 鍙冲嚭搴� - OUT_LEFT(2, "宸﹀嚭搴�"), // 宸﹀嚭搴� - IN_RIGHT(3, "鍙冲叆搴�"), // 鍙冲叆搴� - IN_LEFT(4, "宸﹀叆搴�"), // 宸﹀叆搴� - MOVE_LEFT(5, "宸︾Щ搴�"), // 宸︾Щ搴� - MOVE_RIGHT(6, "鍙崇Щ搴�"), // 鍙崇Щ搴� - GO_ORIGIN(7, "鍘诲彸绔�"), // 鍥炲師鐐� - BACK_ORIGIN(8, "鍘诲乏绔�"), // 鍥炲弽鍘熺偣 - WAITING_RIGHT(9, "鍙冲緟鏈�"), // A鐐� - WAITING_LEFT(10, "宸﹀緟鏈�"), // B鐐� -// FIT_LEFT(11, "宸︽惉绉�"), // 宸︽惉绉� -// FIT_RIGHT(12, "鍙虫惉绉�"), // 鍙虫惉绉� - CHARGE_LEFT(13, "宸﹀厖鐢�"), // 宸﹀厖鐢� - CHARGE_RIGHT(14, "鍙冲厖鐢�"), // 宸﹀厖鐢� -// CHECK_LEFT(14, "宸︾洏鐐�"), // 宸︾洏鐐� -// CHECK_RIGHT(15, "鍙崇洏鐐�"), // 鍙崇洏鐐� - CLOSE_CHARGE(17, "鏂紑鍏呯數"), // 鏂紑鍏呯數 - ; - - public Integer id; - public String desc; - SteTaskModeType(Integer id, String desc) { - this.id = id; - this.desc = desc; - } - - public static SteTaskModeType get(Short id) { - if (null == id) { - return null; - } - for (SteTaskModeType type : SteTaskModeType.values()) { - if (type.id.equals(id.intValue())) { - return type; - } - } - return null; - } - - public static SteTaskModeType get(SteTaskModeType type) { - if (null == type) { - return null; - } - for (SteTaskModeType crnTaskModeType : SteTaskModeType.values()) { - if (crnTaskModeType == type) { - return crnTaskModeType; - } - } - return null; - } - - public static SteTaskModeType findInByLoc(String locNo) { - switch (Utils.getGroupRow(locNo, true)) { - case 4: - return SteTaskModeType.IN_LEFT; // 宸� - case 5: - return SteTaskModeType.IN_RIGHT; // 鍙� - default: - throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�"); - } - } - - public static SteTaskModeType findOutByLoc(String locNo) { - switch (Utils.getGroupRow(locNo, false)) { - case 4: - return SteTaskModeType.OUT_LEFT; // 鍙� - case 5: - return SteTaskModeType.OUT_RIGHT; // 宸� - default: - throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�"); - } - } - - - // ----------------------------------------------- - - // 鍘诲緟鎼偣 - public static SteTaskModeType findOriginByLoc(SteProtocol steProtocol) { - int row = steProtocol.getRow().intValue(); - if (Utils.FIRST_GROUP_ROW_LIST.contains(row)) { - return SteTaskModeType.GO_ORIGIN; - } else if (Utils.SECOND_GROUP_ROW_LIST.contains(row)) { - return SteTaskModeType.BACK_ORIGIN; - } else { - throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�"); - } - } - - public static SteTaskModeType findOriginByLoc(Integer row) { - if (Utils.FIRST_GROUP_ROW_LIST.contains(row)) { - return SteTaskModeType.GO_ORIGIN; - } else if (Utils.SECOND_GROUP_ROW_LIST.contains(row)) { - return SteTaskModeType.BACK_ORIGIN; - } else { - throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�"); - } - } - - - public static SteTaskModeType findWaiting(Integer row) { - if (Utils.FIRST_GROUP_ROW_LIST.contains(row)) { - return SteTaskModeType.WAITING_RIGHT; - } else if (Utils.SECOND_GROUP_ROW_LIST.contains(row)) { - return SteTaskModeType.WAITING_LEFT; - } else { - throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�"); - } - } - - public static SteTaskModeType findChargeByLoc(Integer row) { - if (Utils.FIRST_GROUP_ROW_LIST.contains(row)) { - return SteTaskModeType.CHARGE_RIGHT; - } else if (Utils.SECOND_GROUP_ROW_LIST.contains(row)) { - return SteTaskModeType.CHARGE_LEFT; - } else { - throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�"); - } - } - -} diff --git a/src/main/java/com/zy/core/enums/WrkStsType.java b/src/main/java/com/zy/core/enums/WrkStsType.java new file mode 100644 index 0000000..50a045b --- /dev/null +++ b/src/main/java/com/zy/core/enums/WrkStsType.java @@ -0,0 +1,66 @@ +package com.zy.core.enums; + +import com.core.exception.CoolException; + +public enum WrkStsType { + + NEW_INBOUND(1, "鐢熸垚鍏ュ簱浠诲姟"), + INBOUND_DEVICE_RUN(2, "璁惧涓婅蛋"), + INBOUND_LIFT_RUN(3, "鎻愬崌鏈烘惉杩愪腑"), + INBOUND_LIFT_RUN_COMPLETE(4, "鎻愬崌鏈烘惉杩愬畬鎴�"), + INBOUND_SHUTTLE_RUN(5, "灏忚溅鎼繍涓�"), + INBOUND_SHUTTLE_RUN_COMPLETE(6, "灏忚溅鎼繍瀹屾垚"), + COMPLETE_INBOUND(9, "鍏ュ簱瀹屾垚"), + SETTLE_INBOUND(10, "鍏ュ簱搴撳瓨鏇存柊"), + + NEW_OUTBOUND(101, "鐢熸垚鍑哄簱浠诲姟"), + OUTBOUND_SHUTTLE_RUN(102, "灏忚溅鎼繍涓�"), + OUTBOUND_SHUTTLE_RUN_COMPLETE(103, "灏忚溅鎼繍瀹屾垚"), + OUTBOUND_LIFT_RUN(104, "鎻愬崌鏈烘惉杩愪腑"), + OUTBOUND_LIFT_RUN_COMPLETE(105, "鎻愬崌鏈烘惉杩愬畬鎴�"), + COMPLETE_OUTBOUND(109, "鍑哄簱瀹屾垚"), + SETTLE_OUTBOUND(110, "鍑哄簱搴撳瓨鏇存柊"), + + NEW_CHARGE(201, "鐢熸垚鍏呯數浠诲姟"), + CHARGE_SHUTTLE_RUN(202, "灏忚溅鍘诲厖鐢典腑"), + CHARGE_SHUTTLE_WORKING(203, "鎵ц鍏呯數浠诲姟"), + CHARGE_SHUTTLE_COMPLETE(204, "灏忚溅鍏呯數瀹屾垚"), + COMPLETE_CHARGE(210, "鍏呯數浠诲姟瀹屾垚"), + + NEW_MOVE(301, "鐢熸垚杩佺Щ浠诲姟"), + MOVE_SITE(302, "灏忚溅绉诲姩鑷崇珯鐐�"), + MOVE_SITE_COMPLETE(303, "灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴�"), + MOVE_IN_LIFT(304, "灏忚溅杩佸叆鎻愬崌鏈轰腑"), + MOVE_IN_LIFT_COMPLETE(305, "灏忚溅杩佸叆鎻愬崌鏈哄畬鎴�"), + MOVE_LIFT_RUN(306, "鎻愬崌鏈烘惉杩愪腑"), + MOVE_LIFT_RUN_COMPLETE(307, "鎻愬崌鏈烘惉杩愬畬鎴�"), + MOVE_OUT_LIFT(308, "灏忚溅杩佸嚭鎻愬崌鏈轰腑"), + MOVE_OUT_LIFT_COMPLETE(309, "灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴�"), + MOVE_SHUTTLE(310, "灏忚溅绉诲姩涓�"), + COMPLETE_MOVE(311, "灏忚溅绉诲姩瀹屾垚"), + + NEW_MANUAL(401, "鐢熸垚鎵嬪姩浠诲姟"), + ANALYZE_MANUAL(402, "鎵嬪姩浠诲姟瑙f瀽"), + EXECUTE_MANUAL(403, "鎵ц鎵嬪姩浠诲姟"), + COMPLETE_MANUAL(410, "鎵嬪姩浠诲姟瀹屾垚"), + ; + + + public long sts; + public String desc; + + WrkStsType(long sts, String desc) { + this.sts = sts; + this.desc = desc; + } + + public static WrkStsType query(Long sts) { + for (WrkStsType value : WrkStsType.values()) { + if (value.sts == sts) { + return value; + } + } + throw new CoolException("TaskStsType Error!!!"); + } + +} diff --git a/src/main/java/com/zy/core/model/CommandResponse.java b/src/main/java/com/zy/core/model/CommandResponse.java new file mode 100644 index 0000000..cc974c0 --- /dev/null +++ b/src/main/java/com/zy/core/model/CommandResponse.java @@ -0,0 +1,23 @@ +package com.zy.core.model; + +import lombok.Data; + +@Data +public class CommandResponse { + + private Boolean result; + + private String message; + + public CommandResponse() { + } + + public CommandResponse(Boolean result) { + this.result = result; + } + + public CommandResponse(Boolean result, String message) { + this.result = result; + this.message = message; + } +} diff --git a/src/main/java/com/zy/core/model/CrnSlave.java b/src/main/java/com/zy/core/model/CrnSlave.java deleted file mode 100644 index cfee50d..0000000 --- a/src/main/java/com/zy/core/model/CrnSlave.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.zy.core.model; - -import com.zy.core.Slave; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by vincent on 2020/8/10 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class CrnSlave extends Slave { - - private Integer rack; - - private Integer slot; - - private Integer offset; - - private Boolean demo; - - // 鍫嗗灈鏈哄叆搴撶珯鐐� - private List<CrnStn> crnInStn = new ArrayList<>(); - - // 鍫嗗灈鏈哄嚭搴撶珯鐐� - private List<CrnStn> crnOutStn = new ArrayList<>(); - - @Data - public static class CrnStn { - - // 杈撻�佺嚎plc缂栧彿 - private Integer devpPlcId; - - // 鍫嗗灈鏈虹珯鐐圭紪鍙� - private Integer staNo; - - // 鎺� - private Integer row; - - // 鍒� - private Integer bay; - - // 灞� - private Integer lev; - - } - -} diff --git a/src/main/java/com/zy/core/model/Devp2Slave.java b/src/main/java/com/zy/core/model/Devp2Slave.java deleted file mode 100644 index b1e819d..0000000 --- a/src/main/java/com/zy/core/model/Devp2Slave.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.zy.core.model; - -import com.zy.core.Slave; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.ArrayList; -import java.util.List; - -/** - * 杈撻�佺嚎閰嶇疆 - * Created by vincent on 2020/8/6 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class Devp2Slave extends Slave { - - private Integer rack; - - private Integer slot; - -} diff --git a/src/main/java/com/zy/core/model/ForkLiftSlave.java b/src/main/java/com/zy/core/model/ForkLiftSlave.java new file mode 100644 index 0000000..f8102fe --- /dev/null +++ b/src/main/java/com/zy/core/model/ForkLiftSlave.java @@ -0,0 +1,37 @@ +package com.zy.core.model; + +import com.zy.core.Slave; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.ArrayList; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class ForkLiftSlave extends Slave { + + //鎻愬崌鏈虹珯鐐� + private List<Sta> sta = new ArrayList<>(); + + //杈撻�佺珯鐐规帓 + private Integer staRow; + + //杈撻�佺珯鐐瑰垪 + private Integer staBay; + + @Data + public static class Sta { + + // 鎻愬崌鏈虹珯鐐瑰彿 + private Integer staNo; + + // 灞� + private Integer lev; + + // 鎻愬崌鏈哄彿 + private Integer liftNo; + + } + +} diff --git a/src/main/java/com/zy/core/model/PythonResult.java b/src/main/java/com/zy/core/model/PythonResult.java new file mode 100644 index 0000000..91b4c1f --- /dev/null +++ b/src/main/java/com/zy/core/model/PythonResult.java @@ -0,0 +1,18 @@ +package com.zy.core.model; + +import lombok.Data; + +@Data +public class PythonResult { + + private String start; + + private String target; + + private String path; + + private Double time; + + private Integer calcResult; + +} diff --git a/src/main/java/com/zy/core/model/PythonSimilarityResult.java b/src/main/java/com/zy/core/model/PythonSimilarityResult.java new file mode 100644 index 0000000..5ce03c7 --- /dev/null +++ b/src/main/java/com/zy/core/model/PythonSimilarityResult.java @@ -0,0 +1,16 @@ +package com.zy.core.model; + +import lombok.Data; + +@Data +public class PythonSimilarityResult { + + private String firstPath; + + private String secondPath; + + private Double similarity; + + private Integer calcResult; + +} diff --git a/src/main/java/com/zy/core/model/SteSlave.java b/src/main/java/com/zy/core/model/SteSlave.java deleted file mode 100644 index f9edd36..0000000 --- a/src/main/java/com/zy/core/model/SteSlave.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.zy.core.model; - -import com.zy.core.Slave; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by vincent on 2020/8/10 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class SteSlave extends Slave { - - private Integer rack; - - private Integer slot; - - private Boolean demo; - - // 绌挎杞﹀叆搴撶珯鐐� - private List<CrnStn> steInStn = new ArrayList<>(); - - // 绌挎杞﹀嚭搴撶珯鐐� - private List<CrnStn> steOutStn = new ArrayList<>(); - - @Data - public static class CrnStn { - - // 杈撻�佺嚎plc缂栧彿 - private Integer devpPlcId; - - // 绌挎杞︾珯鐐圭紪鍙� - private Integer staNo; - - // 鎺� - private Integer row; - - // 鍒� - private Integer bay; - - // 灞� - private Integer lev; - - } - -} diff --git a/src/main/java/com/zy/core/model/command/CrnCommand.java b/src/main/java/com/zy/core/model/command/CrnCommand.java deleted file mode 100644 index c777ecb..0000000 --- a/src/main/java/com/zy/core/model/command/CrnCommand.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.zy.core.model.command; - -import com.alibaba.fastjson.annotation.JSONField; -import com.zy.core.enums.CrnTaskModeType; -import lombok.Data; - -import java.util.Calendar; -import java.util.Date; - -/** - * 鍫嗗灈鏈哄懡浠ゆ姤鏂� - * Created by vincent on 2020/8/11 - */ -@Data -public class CrnCommand { - - // 鍫嗗灈鏈哄彿 - private Integer crnNo = 0; - - // 浠诲姟瀹屾垚纭浣� - private Short ackFinish = 0; - - // 浠诲姟鍙� - private Short taskNo = 0; - - /** - * 浠诲姟妯″紡锛� - * 0 = 鏃� - * 1 = 鍏ュ簱 婧愬拰鐩爣閮藉彂 - * 2 = 鍑哄簱 婧愬拰鐩爣閮藉彂 - * 3 = 搴撲綅绉昏浆 婧愬拰鐩爣閮藉彂 - * 4 = 绔欎綅绉昏浆 婧愬拰鐩爣閮藉彂 - * 5 = 鍥炲師鐐� 涓嶇敤鍙� - * 6 = 鍘诲弽鍘熺偣 鐩爣鍙� - * 7 = 鍧愭爣绉昏 鐩爣鍙� - * 90 = 璁剧疆鏃堕棿 - * 99 = 鍙栨秷褰撳墠浠诲姟 - */ - private Short taskMode = 0; - - @JSONField(serialize = false) - private CrnTaskModeType taskModeType; - - // 婧愪綅缃帓鍙� - private Short sourcePosX = 0; - - // 婧愪綅缃垪鍙� - private Short sourcePosY = 0; - - // 婧愪綅缃眰鍙� - private Short sourcePosZ = 0; - - // 婧愮珯 - private Short sourceStaNo = 0; - - // 婧愬贩閬� - private Short sourceLane = 0; - - // 鐩爣浣嶇疆鎺掑彿 - private Short destinationPosX = 0; - - // 鐩爣浣嶇疆鍒楀彿 - private Short destinationPosY = 0; - - // 鐩爣浣嶇疆灞傚彿 - private Short destinationPosZ = 0; - - // 鐩爣绔� - private Short destinationStaNo = 0; - - // 鐩爣宸烽亾 - private Short destinationLane = 0; - - // 浠诲姟纭 0锛氭湭纭 1锛氬凡纭 - private Short command = 0; - - public void setTaskMode(Short taskMode){ - this.taskMode = taskMode; - this.taskModeType = CrnTaskModeType.get(taskModeType); - } - - public void setTaskMode(CrnTaskModeType type) { - this.taskModeType = type; - this.taskMode = CrnTaskModeType.get(type).id.shortValue(); - } - - public static void main(String[] args) { - Date date = new Date(); - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - - System.out.println(cal.get(Calendar.YEAR)); - //榛樿浠�0-11 - System.out.println(cal.get(Calendar.MONTH)+1); - System.out.println(cal.get(Calendar.DATE)); - int hour = cal.get(Calendar.HOUR_OF_DAY); - System.out.println("鏃�"); - System.out.println(hour); - int minute = cal.get(Calendar.MINUTE); - System.out.println("鍒�"); - System.out.println(minute); - int second = cal.get(Calendar.SECOND); - System.out.println("绉�"); - System.out.println(second); - int mm = cal.get(Calendar.DAY_OF_WEEK) - 1; // 鏄熸湡锛�0(鏃�)锝�6(鍏�) - System.out.println("绀兼嫓"); - System.out.println(mm); - } -} diff --git a/src/main/java/com/zy/core/model/command/ForkLiftCommand.java b/src/main/java/com/zy/core/model/command/ForkLiftCommand.java new file mode 100644 index 0000000..69b637f --- /dev/null +++ b/src/main/java/com/zy/core/model/command/ForkLiftCommand.java @@ -0,0 +1,47 @@ +package com.zy.core.model.command; + +import lombok.Data; + + +/** + * 璐у弶鎻愬崌鏈哄懡浠ゆ姤鏂� + */ +@Data +public class ForkLiftCommand { + + /** + * 鎻愬崌鏈哄彿 + */ + private Integer liftNo; + + /** + * 浠诲姟鍙� + */ + private Short taskNo; + + /** + * 浠诲姟妯″紡 + */ + private Short mode; + + /** + * 鍙栬揣鏁版嵁 + */ + private Short pick; + + /** + * 鏀捐揣鏁版嵁 + */ + private Short put; + + /** + * 浠诲姟纭 + */ + private Short confirm; + + /** + * 鍛戒护鏄惁瀹屾垚,榛樿false鏈畬鎴� + */ + private Boolean complete = false; + +} diff --git a/src/main/java/com/zy/core/model/command/LiftAssignCommand.java b/src/main/java/com/zy/core/model/command/LiftAssignCommand.java index 6d713d9..145a836 100644 --- a/src/main/java/com/zy/core/model/command/LiftAssignCommand.java +++ b/src/main/java/com/zy/core/model/command/LiftAssignCommand.java @@ -20,12 +20,10 @@ /** * 鍛戒护list */ - private List<NyLiftCommand> commands; + private List<ForkLiftCommand> commands; /** * 浣滀笟绫诲瀷 - * 1=绉绘墭鐩橈紱鍗囬檷鏈哄皢婧愮珯鍙版墭鐩樼Щ鍒扮洰鏍囩珯鍙� - * 2=绉诲皬杞︼紝鍗囬檷鏈虹Щ鍒扮洰鏍囧眰锛岀瓑寰� */ private Short taskMode = 0; diff --git a/src/main/java/com/zy/core/model/command/LiftCommand.java b/src/main/java/com/zy/core/model/command/LiftCommand.java index 040910c..107441b 100644 --- a/src/main/java/com/zy/core/model/command/LiftCommand.java +++ b/src/main/java/com/zy/core/model/command/LiftCommand.java @@ -1,6 +1,5 @@ package com.zy.core.model.command; -import com.zy.core.model.protocol.StaProtocol; import lombok.Data; diff --git a/src/main/java/com/zy/core/model/command/NyLiftCommand.java b/src/main/java/com/zy/core/model/command/NyLiftCommand.java deleted file mode 100644 index 5ac873b..0000000 --- a/src/main/java/com/zy/core/model/command/NyLiftCommand.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.zy.core.model.command; - -import lombok.Data; - -/** - * - */ -@Data -public class NyLiftCommand { - - /** - * 鎻愬崌鏈哄彿 - */ - private Short liftNo = 0; - - /** - * 鎻愬崌鏈哄伐浣滃彿(闅忔満鍊�) - */ - private Short taskNo = 0; - - /** - * 鍛戒护鏄惁瀹屾垚,榛樿false鏈畬鎴� - */ - private Boolean complete = false; - - /** - * 浠诲姟绫诲瀷 - * 1=绉绘墭鐩橈紱鍗囬檷鏈哄皢婧愮珯鍙版墭鐩樼Щ鍒扮洰鏍囩珯鍙� - * 2=绉诲皬杞︼紝鍗囬檷鏈虹Щ鍒扮洰鏍囧眰锛岀瓑寰� - */ - private Short taskModel; - - /** - * 婧愮珯鍙扮紪鍙� - */ - private Short sourceSta; - - /** - * 鐩爣绔欏彴缂栧彿 - */ - private Short targetSta; - -} diff --git a/src/main/java/com/zy/core/model/command/NyShuttleHttpCommand.java b/src/main/java/com/zy/core/model/command/NyShuttleHttpCommand.java index bab7844..ce5c165 100644 --- a/src/main/java/com/zy/core/model/command/NyShuttleHttpCommand.java +++ b/src/main/java/com/zy/core/model/command/NyShuttleHttpCommand.java @@ -19,7 +19,7 @@ private NyRequest request; //宸ヤ綔鍙� - private Integer wrkNo; + private Integer taskNo; @Data public static class NyRequest { diff --git a/src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java b/src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java index f248396..a64f1c4 100644 --- a/src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java +++ b/src/main/java/com/zy/core/model/command/ShuttleAssignCommand.java @@ -3,25 +3,38 @@ import com.zy.common.model.NavigateNode; import lombok.Data; +import java.io.Serializable; import java.util.ArrayList; import java.util.List; @Data -public class ShuttleAssignCommand { +public class ShuttleAssignCommand implements Serializable { + + private static final long serialVersionUID = 1L; /** * 鍥涘悜绌挎杞﹀彿 */ - private Short shuttleNo = 0; + private Integer shuttleNo = 0; + + /** + * 璁惧ID + */ + private Integer deviceId; /** * 浠诲姟鍙� */ - private Short taskNo = 0; + private Integer taskNo = 0; + + /** + * 璁惧宸ヤ綔鍙� + */ + private Integer deviceTaskNo = 0; /** * 浣滀笟绫诲瀷 - * 1: 鍏ュ簱 + * 1: 鍏ュ簱 * 2锛� 鍑哄簱 * 3锛� 鎵樼洏椤跺崌 * 4锛� 鎵樼洏涓嬮檷 @@ -31,7 +44,7 @@ * 8锛� 鍚庣Щ * 9: 鍏呯數 */ - private Short taskMode = 0; + private Integer taskMode = 0; /** * 婧愬簱浣� @@ -46,7 +59,7 @@ /** * 鍛戒护list */ - private List<NyShuttleHttpCommand> commands = new ArrayList<>(); + private List<ShuttleCommand> commands = new ArrayList<>(); /** * 鏄惁鑷姩锛宼rue锛氳嚜鍔ㄦā寮忥紝false锛氭墜鍔ㄦā寮� @@ -64,4 +77,15 @@ */ private List<NavigateNode> nodes; -} + public List<NavigateNode> getNodesDeepCopy() { + if (this.nodes == null) { + return null; + } + List<NavigateNode> navigateNodes = new ArrayList<>(); + for (NavigateNode node : nodes) { + navigateNodes.add(node.clone()); + } + return navigateNodes; + } + +} \ No newline at end of file diff --git a/src/main/java/com/zy/core/model/command/ShuttleCommand.java b/src/main/java/com/zy/core/model/command/ShuttleCommand.java index aab60da..f80ecf6 100644 --- a/src/main/java/com/zy/core/model/command/ShuttleCommand.java +++ b/src/main/java/com/zy/core/model/command/ShuttleCommand.java @@ -1,6 +1,9 @@ package com.zy.core.model.command; +import com.zy.common.model.NavigateNode; +import com.zy.core.enums.ShuttleCommandModeType; import lombok.Data; +import java.util.List; /** * 鍥涘悜绌挎杞﹀懡浠ゆ姤鏂� @@ -11,91 +14,36 @@ /** * 鍥涘悜绌挎杞﹀彿 */ - private Short shuttleNo = 0; + private Integer shuttleNo; /** * 浠诲姟鍙� */ - private Short taskNo = 0; + private Integer taskNo = 0; /** - * 浣滀笟绫诲瀷 + * 鍛戒护绫诲瀷 */ - private Short taskMode = 0; + private Integer mode = ShuttleCommandModeType.NONE.id; /** - * 鎺у埗鎸囦护瀛� + * 鐩爣搴撲綅 */ - private Short commandWord; + private String targetLocNo; /** - * 鍚浜岀淮缂栧彿 + * 鎶ユ枃鍐呭 */ - private Short startCodeNum; - - /** - * 涓棿浜岀淮缂栧彿 - */ - private Short middleCodeNum; - - /** - * 鐩爣浜岀淮缂栧彿 - */ - private Short distCodeNum; - - /** - * 璧风偣鍒扮洰鏍囩偣鐨勮窛绂婚暱搴� - */ - private Integer startToDistDistance; - - /** - * 涓棿鐐瑰埌鐩爣鐐圭殑璺濈闀垮害 - */ - private Integer middleToDistDistance; - - /** - * 灏忚溅杩愯鏂瑰悜 - */ - private Short runDirection; - - /** - * 鎵樼洏椤跺崌 - */ - private Short palletLift; - - /** - * 灏忚溅寮哄埗绉诲姩璺濈 - */ - private Integer forceMoveDistance; - - /** - * 鍏呯數寮�鍏� - */ - private Short chargeSwitch; - - /** - * 灏忚溅IO鎺у埗 - */ - private Short IOControl; - - /** - * 灏忚溅杩愯閫熷害 - */ - private Short runSpeed; - - /** - * 灏忚溅闆疯揪澶囩敤 - */ - private Short radarTmp; - - /** - * 鎸囦护缁撴潫浣� - */ - private Short commandEnd; + private String body; /** * 鍛戒护鏄惁瀹屾垚,榛樿false鏈畬鎴� */ private Boolean complete = false; + /** + * 琛岃蛋鍛戒护鎵�鍗犵敤鐨勮妭鐐筶ist + */ + private List<NavigateNode> nodes; + } diff --git a/src/main/java/com/zy/core/model/command/ShuttleRedisCommand.java b/src/main/java/com/zy/core/model/command/ShuttleRedisCommand.java index 8305af3..f43cec8 100644 --- a/src/main/java/com/zy/core/model/command/ShuttleRedisCommand.java +++ b/src/main/java/com/zy/core/model/command/ShuttleRedisCommand.java @@ -11,10 +11,10 @@ public class ShuttleRedisCommand implements Serializable { //鍥涘悜绌挎杞﹀彿 - private Short shuttleNo; + private Integer shuttleNo; //宸ヤ綔鍙� - private Short wrkNo; + private Integer wrkNo; //鍛戒护鎵ц姝ュ簭 private Integer commandStep; diff --git a/src/main/java/com/zy/core/model/command/SteCommand.java b/src/main/java/com/zy/core/model/command/SteCommand.java deleted file mode 100644 index 1b91911..0000000 --- a/src/main/java/com/zy/core/model/command/SteCommand.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.zy.core.model.command; - -import com.alibaba.fastjson.annotation.JSONField; -import com.zy.core.enums.SteTaskModeType; -import lombok.Data; - -/** - * 绌挎杞﹀懡浠ゆ姤鏂� - * Created by vincent on 2020/8/11 - */ -@Data -public class SteCommand { - - // 绌挎杞﹀彿 - private Integer steNo = 0; - - // 浠诲姟鍙� - private Integer taskNo = 0; - - // 浣滀笟绫诲瀷 - private Short taskMode = 0; - - // 姝e湪鎵ц浠诲姟 - public Boolean execute = Boolean.FALSE; - - // 纭浠诲姟瀹屾垚 - public Boolean complete = Boolean.FALSE; - - @JSONField(serialize = false) - private SteTaskModeType taskModeType; - - // 鎺� - private Short row; - - // 鍒� - private Short bay; - - // 灞� - private Short lev; - - // 璧峰璁惧鍙� - private Short startSsbm; - - // 鐩殑璁惧鍙� - private Short endSsbm; - - // 鎺у埗妯″紡 0=鑴辨満 1=鑱旀満 - private Short controlMode; - - // 寮�鍚俊鍙� 1-鍚姩 - private Short open; - - // 鍒濆鍖� - private Short init; - - // 澶嶄綅淇″彿 1=澶嶄綅 - private Boolean reset; - - // 鍒犻櫎鎸囦护 1=鍒犻櫎 - private Boolean delete; - - // 鎵樼洏闂磋窛 涓棿鎵樼洏涔嬮棿璺濈 鍗曚綅姣背 - private Short space; - - // 闂磋窛纭 - private Short spaceYes; - - // 鎺掍慨鏀� - private Short rowModify; - - // 鍒椾慨鏀� - private Short bayModify; - - // 灞備慨鏀� - private Short levModify; - - // 淇敼纭 - private Short modifyYes; - - /** - * 杈撳叆绌挎杞﹁繍琛岀姝� 1杩愯锛�0绂佹 - */ - private Short run; - - public void setTaskMode(Short taskMode){ - this.taskMode = taskMode; - this.taskModeType = SteTaskModeType.get(taskModeType); - } - - public void setTaskMode(SteTaskModeType type) { - this.taskModeType = type; - this.taskMode = SteTaskModeType.get(type).id.shortValue(); - } - -} diff --git a/src/main/java/com/zy/core/model/param/ShuttleMoveLocParam.java b/src/main/java/com/zy/core/model/param/ShuttleMoveLocParam.java new file mode 100644 index 0000000..402d32e --- /dev/null +++ b/src/main/java/com/zy/core/model/param/ShuttleMoveLocParam.java @@ -0,0 +1,20 @@ +package com.zy.core.model.param; + +import lombok.Data; + +@Data +public class ShuttleMoveLocParam { + + private Integer shuttleNo; + + private Integer moveType; + + private Integer startX; + + private Integer targetX; + + private Integer startY; + + private Integer targetY; + +} diff --git a/src/main/java/com/zy/core/model/protocol/CrnError1.java b/src/main/java/com/zy/core/model/protocol/CrnError1.java deleted file mode 100644 index 0ae2829..0000000 --- a/src/main/java/com/zy/core/model/protocol/CrnError1.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.zy.core.model.protocol; - -import lombok.Data; - -/** - * Created by vincent on 2020/8/17 - */ -@Data -public class CrnError1 { - - // 閬ユ帶鍣ㄦ�ュ仠 - public boolean remoteStop; - - // 涓绘帶鐩樻�ュ仠 - public boolean mainStop; - - // 鎿嶄綔鐩樻�ュ仠 - public boolean controlStop; - - // X琛岃蛋鍙橀鍣ㄦ晠闅� - public boolean xCoverErr; - - // Y鍗囬檷鍙橀鍣ㄦ晠闅� - public boolean yCoverErr; - - // Z璐у弶鍙橀鍣ㄦ晠闅� - public boolean zCoverErr; - - // 婵�鍏夋晠闅� - public boolean laserErr; - - // 鏉$爜闃呰鍣ㄦ晠闅� - public boolean barcodeErr; - - // X鍓嶆瀬闄� - public boolean xFrontLimitErr; - - // X鍚庢瀬闄� - public boolean xBackLimitErr; - - // Y涓婃瀬闄� - public boolean yUpLimitErr; - - // Y涓嬫瀬闄� - public boolean yDownLimitErr; - - // Z宸︽瀬闄� - public boolean zLeftLimitErr; - - // Z鍙虫瀬闄� - public boolean zRightLimitErr; - - // 宸﹁秴瀹�1 - public boolean leftOverWidthErr1; - - // 宸﹁秴瀹�2 - public boolean leftOverWidthErr2; - - -} diff --git a/src/main/java/com/zy/core/model/protocol/CrnError2.java b/src/main/java/com/zy/core/model/protocol/CrnError2.java deleted file mode 100644 index ef0e1cd..0000000 --- a/src/main/java/com/zy/core/model/protocol/CrnError2.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.zy.core.model.protocol; - -import lombok.Data; - -/** - * Created by vincent on 2020/8/17 - */ -@Data -public class CrnError2 { - - // 宸﹁秴闀�1 - public boolean leftOverLenErr1; - - // 宸﹁秴闀�2 - public boolean leftOverLenErr2; - - // 宸﹁秴楂� - public boolean leftOverHighErr; - - // 鍙宠秴瀹�1 - public boolean rightOverWidthErr1; - - // 鍙宠秴瀹�2 - public boolean rightOverWidthErr2; - - // 鍙宠秴闀�1 - public boolean rightOverLenErr1; - - // 鍙宠秴闀�2 - public boolean rightOverLenErr2; - - // 鍙宠秴楂� - public boolean rightOverHighErr; - - // 宸︽澗缁� - public boolean leftLooseRopeErr; - - // 鍙虫澗缁� - public boolean rightLooseRopeErr; - - // 鍓嶅畨鍏ㄩ棬鏁呴殰 - public boolean frontDoorErr; - - // 鍚庡畨鍏ㄩ棬鏁呴殰 - public boolean backDoorErr; - - // 鍚姩閿欒 - public boolean startupErr; - - // X鍚戝墠瀹氫綅瓒呬笂闄� - public boolean xFrontLocaUpErr; - - // X鍚戝墠瀹氫綅瓒呬笅闄� - public boolean xFrontLocaDownErr; - - // X鍚戝悗瀹氫綅瓒呬笂闄� - public boolean xBackLocaUpErr; - - -} diff --git a/src/main/java/com/zy/core/model/protocol/CrnError3.java b/src/main/java/com/zy/core/model/protocol/CrnError3.java deleted file mode 100644 index d399480..0000000 --- a/src/main/java/com/zy/core/model/protocol/CrnError3.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.zy.core.model.protocol; - -import lombok.Data; - -/** - * Created by vincent on 2020/8/17 - */ -@Data -public class CrnError3 { - - // X鍚戝悗瀹氫綅瓒呬笅闄� - public boolean xBackLocaDownErr; - - // Y鍚戜笂瀹氫綅瓒呬笂闄� - public boolean yUpLocaUpErr; - - // Y鍚戜笂瀹氫綅瓒呬笅闄� - public boolean yUpLocaDownErr; - - // Y鍚戜笅瀹氫綅瓒呬笂闄� - public boolean yDownLocaUpErr; - - // Y鍚戜笅瀹氫綅瓒呬笅闄� - public boolean yDownLocaDownErr; - - // Z鍚戝乏瀹氫綅瓒呬笂闄� - public boolean zLeftLocaUpErr; - - // Z鍚戝乏瀹氫綅瓒呬笅闄� - public boolean zLeftLocaDownErr; - - // Z鍚戝彸瀹氫綅瓒呬笂闄� - public boolean zRightLocaUpErr; - - // Z鍚戝彸瀹氫綅瓒呬笅闄� - public boolean zRightLocaDownErr; - - // 宸﹀彇璐ф椂搴撲綅鏃犺揣 - public boolean leftTakeNoneErr; - - // 鍙冲彇璐ф椂搴撲綅鏃犺揣 - public boolean rightTakeNoneErr; - - // 宸﹀彇璐у悗搴撲綅鏈夎揣 - public boolean leftTakeThenLoadErr; - - // 鍙冲彇璐у悗搴撲綅鏈夎揣 - public boolean rightTakeThenLoadErr; - - // 宸︽斁璐ф椂搴撲綅鏈夎揣 - public boolean leftPutAndLoadErr; - - // 鍙冲彇璐у悗搴撲綅鏈夎揣 - public boolean rightPutAndLoadErr; - - // 宸︽斁璐у悗搴撲綅鏃犺揣 - public boolean leftPutThenNoneErr; - - -} diff --git a/src/main/java/com/zy/core/model/protocol/CrnError4.java b/src/main/java/com/zy/core/model/protocol/CrnError4.java deleted file mode 100644 index 9eb90f9..0000000 --- a/src/main/java/com/zy/core/model/protocol/CrnError4.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.zy.core.model.protocol; - -import lombok.Data; - -/** - * Created by vincent on 2020/8/17 - */ -@Data -public class CrnError4 { - - // 鍙虫斁璐у悗搴撲綅鏃犺揣 - public boolean rightPutThenNoneErr; - - // X鏉鹃椄瓒呮椂 - public boolean xLooseBrakeTimeout; - - // Y鏉鹃椄瓒呮椂 - public boolean yLooseBrakeTimeout; - - // Z鏉鹃椄瓒呮椂 - public boolean zLooseBrakeTimeout; - -} diff --git a/src/main/java/com/zy/core/model/protocol/CrnError5.java b/src/main/java/com/zy/core/model/protocol/CrnError5.java deleted file mode 100644 index 47d1863..0000000 --- a/src/main/java/com/zy/core/model/protocol/CrnError5.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.zy.core.model.protocol; - -import lombok.Data; - -/** - * Created by vincent on 2020/8/17 - */ -@Data -public class CrnError5 { - -} diff --git a/src/main/java/com/zy/core/model/protocol/CrnError6.java b/src/main/java/com/zy/core/model/protocol/CrnError6.java deleted file mode 100644 index a449f3c..0000000 --- a/src/main/java/com/zy/core/model/protocol/CrnError6.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.zy.core.model.protocol; - -import lombok.Data; - -/** - * Created by vincent on 2020/8/17 - */ -@Data -public class CrnError6 { - -} diff --git a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java deleted file mode 100644 index 974ba72..0000000 --- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java +++ /dev/null @@ -1,264 +0,0 @@ -package com.zy.core.model.protocol; - -import com.zy.asrs.entity.BasCrnp; -import com.zy.core.enums.CrnForkPosType; -import com.zy.core.enums.CrnLiftPosType; -import com.zy.core.enums.CrnModeType; -import com.zy.core.enums.CrnStatusType; -import lombok.Data; - -/** - * Created by vincent on 2020/8/7 - */ -@Data -public class CrnProtocol { - - /** - * 鍫嗗灈鏈哄彿 - */ - private Integer crnNo; - - /** - * 1 = 鎵嬪姩妯″紡 - * 2 = 鑷姩妯″紡 - * 3 = 鐢佃剳妯″紡 - */ - public Short mode; - - public CrnModeType modeType; - - /** - * 1 = 鎬ュ仠 - */ - public Short eStop; - - /** - * 寮傚父鐮� - */ - public Short alarm; - - /** - * 浠诲姟鍙� - */ - public Short taskNo = 0; - - /** - * 鍫嗗灈鏈哄綋鍓嶇姸鎬� - * 0锛氱┖闂诧紝鏃犱换鍔� - * 1锛氬彇璐у畾浣嶄腑 - * 2锛氬彇璐т腑 - * 3锛氬彇璐у畬鎴愶紝鏀捐揣瀹氫綅涓� - * 4锛氭斁璐т腑 - * 5锛氬洖鍘熺偣涓� - * 6锛氬弽鍘熺偣 - * 7锛氬簱浣嶇Щ浣� - * 90锛氫换鍔″畬鎴愮瓑寰匴CS纭 - * 99锛氭姤璀� - */ - public Short status; - - /** - * 鐘舵�佹灇涓� - */ - public CrnStatusType statusType; - - /** - * 鍫嗗灈鏈哄綋鍓嶅垪鍙� - */ - public Short bay; - - /** - * 鍫嗗灈鏈哄綋鍓嶅眰鍙� - */ - public Short level; - - /** - * 褰撳墠璐у弶浣嶇疆 - * 0 = 璐у弶鍘熶綅 - * 1 = 璐у弶鍦ㄥ乏渚� - * 2 = 璐у弶鍦ㄥ彸渚� - */ - public Short forkPos; - - public CrnForkPosType forkPosType; - - /** - * 褰撳墠杞借揣鍙颁綅缃� - * 0 = 涓嬪畾浣� - * 1 = 涓婂畾浣� - */ - public Short liftPos; - - public CrnLiftPosType liftPosType; - - /** - * 璧拌鍦ㄥ畾浣� - * 0 = 鍦ㄥ畾浣� - * 1 = 涓嶅湪瀹氫綅 - */ - public Short walkPos; - - /** - * 杞借揣鍙版湁鐗� - */ - public Short loaded; - - private Short temp1; - - private CrnTemp1 crnTemp1; - - private Short temp2; - - private Short temp3; - - private Short temp4; - - /** - * 寮傚父1 - */ - private boolean[] error1; - - private CrnError1 crnError1; - - /** - * 寮傚父2 - */ - private boolean[] error2; - - private CrnError2 crnError2; - - /** - * 寮傚父3 - */ - private boolean[] error3; - - private CrnError3 crnError3; - - /** - * 寮傚父4 - */ - private boolean[] error4; - - private CrnError4 crnError4; - - /** - * 寮傚父5 - */ - private boolean[] error5; - - private CrnError5 crnError5; - - /** - * 寮傚父6 - */ - private boolean[] error6; - - private CrnError6 crnError6; - - /** - * X琛岃蛋绾块�熷害m/min - */ - private Float xSpeed; - - /** - * Y琛岃蛋绾块�熷害m/min - */ - private Float ySpeed; - - /** - * Z琛岃蛋绾块�熷害m/min - */ - private Float zSpeed; - - public void setZSpeed(Float zSpeed) { - if (zSpeed.isNaN()) { - this.zSpeed = 0.0F; - } else { - this.zSpeed = zSpeed; - } - } - - /** - * 鍫嗗灈鏈虹疮璁¤蛋琛岃窛绂籯m - */ - public Float xDistance; - - /** - * 鍫嗗灈鏈虹疮璁″崌闄嶈窛绂籯m - */ - public Float yDistance; - - /** - * 鍫嗗灈鏈虹疮璁¤蛋琛屾椂闀縣 - */ - public Float xDuration; - - /** - * 鍫嗗灈鏈虹疮璁″崌闄嶆椂闀縣 - */ - public Float yDuration; - - public void setMode(Short mode) { - this.mode = mode; - this.modeType = CrnModeType.get(mode); - } - - public void setMode(CrnModeType type) { - this.modeType = type; - this.mode = CrnModeType.get(type).id.shortValue(); - } - - public void setForkPos(Short forkPos) { - this.forkPos = forkPos; - this.forkPosType = CrnForkPosType.get(forkPos); - } - - public void setForkPos(CrnForkPosType type) { - this.forkPosType = type; - this.forkPos = CrnForkPosType.get(type).id.shortValue(); - } - - public void setLiftPos(Short liftPos) { - this.liftPos = liftPos; - this.liftPosType = CrnLiftPosType.get(liftPos); - } - - public void setLiftPos(CrnLiftPosType type) { - this.liftPosType = type; - this.liftPos = CrnLiftPosType.get(type).id.shortValue(); - } - - public void setStatus(Short status){ - this.status = status; - this.statusType = CrnStatusType.get(status); - } - - public void setStatus(CrnStatusType type){ - this.statusType = type; - this.status = CrnStatusType.get(type).id.shortValue(); - } - - public Short getTemp1() { - return temp1; - } - - public void setTemp1(Short temp1) { - this.temp1 = temp1; - } - - /** - * 鏈�杩戜竴娆″叆鍑哄簱绫诲瀷 - * I:鍏ュ簱 - * O:鍑哄簱 - */ - private String lastIo = "I"; - - - public BasCrnp toSqlModel(BasCrnp basCrnp){ - if (alarm!=null) { - basCrnp.setCrnErr(alarm.longValue()); - } - basCrnp.setWrkNo(taskNo.intValue()); - return basCrnp; - } -} diff --git a/src/main/java/com/zy/core/model/protocol/CrnTemp1.java b/src/main/java/com/zy/core/model/protocol/CrnTemp1.java deleted file mode 100644 index 3ca39e4..0000000 --- a/src/main/java/com/zy/core/model/protocol/CrnTemp1.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.zy.core.model.protocol; - -import lombok.Data; - -/** - * Created by vincent on 2020/8/17 - */ -@Data -public class CrnTemp1 { - - // 鍗囬檷闄愪綅寮�鍏宠Е鍙� - public boolean liftLimitSwitchErr; - - // 琛岃蛋鍒跺姩搴忓垪寮傚父 - public boolean liftBrakeErr; - - // 琛岃蛋娴嬭窛鍣ㄦ晠闅� - public boolean liftDiastimeterFau; - - // 鎬ュ仠 - public boolean stop; - - // 鐩稿簭鎶ヨ - public boolean warn; - - // 瓒呴珮 - public boolean overHighErr; - - // 宸﹁秴瀹� - public boolean leftOverWidthErr; - - // 鍙宠秴瀹� - public boolean rightOverWidthErr; - - // 宸﹁秴闀� - public boolean leftOverLenErr; - - // 鍙宠秴闀� - public boolean rightOverLenErr; - - // 鏈夌墿鍏� - public boolean pakinThenLoadedErr; - - // 鏃犵墿鍑� - public boolean pakOutThenNoneErr; - -} diff --git a/src/main/java/com/zy/core/model/protocol/ForkLiftProtocol.java b/src/main/java/com/zy/core/model/protocol/ForkLiftProtocol.java new file mode 100644 index 0000000..fdbaa2a --- /dev/null +++ b/src/main/java/com/zy/core/model/protocol/ForkLiftProtocol.java @@ -0,0 +1,173 @@ +package com.zy.core.model.protocol; + +import com.core.common.SpringUtils; +import com.zy.asrs.entity.BasLiftErr; +import com.zy.asrs.service.BasLiftErrService; +import com.zy.core.enums.ForkLiftIoModeType; +import com.zy.core.enums.ForkLiftProtocolStatusType; +import com.zy.core.enums.ForkLiftTaskModeType; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +/** + * 璐у弶鎻愬崌鏈� + */ +@Slf4j +@Data +public class ForkLiftProtocol implements Cloneable { + + /** + * 鎻愬崌鏈哄彿 + */ + private Integer liftNo; + + /** + * 妯″紡0鍗曟満 1鑱旀満 + */ + private Integer model; + + /** + * 浠诲姟鍙� + */ + private Integer taskNo = 0; + + /** + * 浠诲姟鐘舵�� + */ + private Integer protocolStatus = ForkLiftProtocolStatusType.NONE.id; + + /** + * 浠诲姟鐘舵�佹灇涓� + */ + private ForkLiftProtocolStatusType protocolStatusType = ForkLiftProtocolStatusType.NONE; + + /** + * 浠诲姟妯″紡 + */ + private Integer mode = ForkLiftTaskModeType.NONE.id; + + /** + * 浠诲姟妯″紡鏋氫妇 + */ + private ForkLiftTaskModeType modeType = ForkLiftTaskModeType.NONE; + + /** + * 鍙栬揣鏁版嵁 + */ + private Integer pick; + + /** + * 鏀捐揣鏁版嵁 + */ + private Integer put; + + /** + * 鍑哄叆搴撴ā寮� + */ + private Integer iOMode = ForkLiftIoModeType.NONE.id; + + /** + * 鍑哄叆搴撴ā寮忔灇涓� + */ + private ForkLiftIoModeType iOModeType = ForkLiftIoModeType.NONE; + + /** + * 鏁呴殰鐮� + */ + private Integer errorCode; + + /** + * 浣滀笟鏍囪 + */ + private Boolean pakMk = false; + + /** + * 鎸囦护涓嬪彂鏃堕棿 + */ + private Long sendTime = 0L; + + /** + * 鏃ュ織閲囬泦鏃堕棿 + */ + private Long deviceDataLog = System.currentTimeMillis(); + + /** + * 鎵╁睍瀛楁 + */ + private Object extend; + + /** + * 璁剧疆浠诲姟鐘舵�� + */ + public void setProtocolStatus(Integer status) { + this.protocolStatus = status; + this.protocolStatusType = ForkLiftProtocolStatusType.get(status); + } + + /** + * 璁剧疆浠诲姟鐘舵�� + */ + public void setProtocolStatus(ForkLiftProtocolStatusType status) { + this.protocolStatus = status.id; + this.protocolStatusType = status; + } + + /** + * 璁剧疆浠诲姟妯″紡 + */ + public void setMode(Integer mode) { + this.mode = mode; + this.modeType = ForkLiftTaskModeType.get(mode); + } + + /** + * 璁剧疆浠诲姟妯″紡 + */ + public void setMode(ForkLiftTaskModeType mode) { + this.mode = mode.id; + this.modeType = mode; + } + + /** + * 璁剧疆鍑哄叆搴撴ā寮� + */ + public void setIOMode(Integer ioMode) { + this.iOMode = ioMode; + this.iOModeType = ForkLiftIoModeType.get(ioMode); + } + + /** + * 璁剧疆鍑哄叆搴撴ā寮� + */ + public void setIOMode(ForkLiftIoModeType ioMode) { + this.iOMode = ioMode.id; + this.iOModeType = ioMode; + } + + /** + * 閿欒鐮� + */ + public String getErrCode$() { + if (this.errorCode == null) { + return ""; + } + BasLiftErrService basLiftErrService = SpringUtils.getBean(BasLiftErrService.class); + BasLiftErr basLiftErr = basLiftErrService.selectById(this.errorCode); + if (basLiftErr == null) { + return String.valueOf(this.errorCode); + } + return basLiftErr.getErrName(); + } + + @Override + public ForkLiftProtocol clone() { + try { + return (ForkLiftProtocol) super.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + return null; + } + + +} diff --git a/src/main/java/com/zy/core/model/protocol/ForkLiftStaProtocol.java b/src/main/java/com/zy/core/model/protocol/ForkLiftStaProtocol.java new file mode 100644 index 0000000..9b96b42 --- /dev/null +++ b/src/main/java/com/zy/core/model/protocol/ForkLiftStaProtocol.java @@ -0,0 +1,49 @@ +package com.zy.core.model.protocol; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +/** + * 鎻愬崌鏈虹珯鐐� + */ +@Slf4j +@Data +public class ForkLiftStaProtocol { + + /** + * 绔欑偣鍙� + */ + private Integer staNo; + + /** + * 鏈夋墭鐩� + */ + private Boolean hasTray; + + /** + * 鏈夊皬杞� + */ + private Boolean hasCar; + + /** + * 浠诲姟鍙� + */ + private Short taskNo; + + + /** + * 灞� + */ + private Integer lev; + + /** + * 绔欑偣搴撲綅鍙� + */ + private String locNo; + + /** + * 鎻愬崌鏈哄彿 + */ + private Integer liftNo; + +} diff --git a/src/main/java/com/zy/core/model/protocol/LiftProtocol.java b/src/main/java/com/zy/core/model/protocol/LiftProtocol.java deleted file mode 100644 index 9a607af..0000000 --- a/src/main/java/com/zy/core/model/protocol/LiftProtocol.java +++ /dev/null @@ -1,243 +0,0 @@ -package com.zy.core.model.protocol; - -import com.core.common.SpringUtils; -import com.zy.asrs.entity.BasLiftErr; -import com.zy.asrs.service.BasLiftErrService; -import com.zy.core.enums.LiftProtocolStatusType; -import com.zy.core.model.command.LiftAssignCommand; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; - -/** - * 鎻愬崌鏈� - */ -@Slf4j -@Data -public class LiftProtocol { - - /** - * 鎻愬崌鏈哄彿 - */ - private Short liftNo; - - /** - * 浠诲姟鍙� - */ - private Short taskNo = 0; - - /** - * 鍥涘悜绌挎杞﹀彿 - */ - private Short shuttleNo = 0; - - /** - * 褰撳墠鎻愬崌鏈虹姸鎬侊紙鍐呴儴鑷垜缁存姢锛� - */ - private Integer protocolStatus = 1; - - /** - * 褰撳墠鎻愬崌鏈虹姸鎬佹灇涓� - */ - private LiftProtocolStatusType protocolStatusType = LiftProtocolStatusType.IDLE; - - /** - * 妯″紡 - */ - private Boolean model; - - /** - * 蹇欓棽 - */ - private Boolean busy; - - /** - * 鍓嶈秴闄� - */ - private Boolean frontOverrun; - - /** - * 鍚庤秴闄� - */ - private Boolean backOverrun; - - /** - * 宸﹁秴闄� - */ - private Boolean leftOverrun; - - /** - * 鍙宠秴闄� - */ - private Boolean rightOverrun; - - /** - * 瓒呴珮 - */ - private Boolean overHeight; - - /** - * 瓒呴噸 - */ - private Boolean overWeight; - - /** - * 鏈夋墭鐩� - */ - private Boolean hasTray; - - /** - * 鏈夊皬杞� - */ - private Boolean hasCar; - - /** - * 璁惧鏁呴殰 - */ - private Boolean deviceError; - - /** - * 鏁呴殰鐮� - */ - private Short errorCode; - - /** - * 浠诲姟鍦板潃 - */ - private Short taskAddress; - - /** - * 鐩殑鍦板潃 - */ - private Short distAddress; - - /** - * 宸插畬鎴愮殑浠诲姟鍙� - */ - private Short completeTaskNo; - - /** - * 灞� - */ - private Short lev; - - /** - * 浣滀笟鏍囪 - */ - private Boolean pakMk = false; - - /** - * 鐙崰浠ょ墝 - * 鏈浠诲姟鍗犳嵁锛屼护鐗屼负0 - * 琚换鍔″崰鎹紝灏嗕换鍔″彿璧嬪�肩粰浠ょ墝 - */ - private Integer token = 0; - - /** - * 浠诲姟鍛戒护 - */ - private LiftAssignCommand assignCommand; - - /** - * 鎸囦护涓嬪彂鏃堕棿 - */ - private Long sendTime = 0L; - - /** - * 鏃ュ織閲囬泦鏃堕棿 - */ - private Long deviceDataLog = System.currentTimeMillis(); - - /** - * 璁剧疆鎻愬崌鏈虹姸鎬� - */ - public void setProtocolStatus(Integer status) { - this.protocolStatus = status; - this.protocolStatusType = LiftProtocolStatusType.get(status); - } - - /** - * 璁剧疆鎻愬崌鏈虹姸鎬� - */ - public void setProtocolStatus(LiftProtocolStatusType status) { - this.protocolStatus = status.id; - this.protocolStatusType = status; - } - - // 鏄惁澶勪簬绌洪棽寰呭懡鐘舵�� - public Boolean isIdle(Short taskNo) { - if(this.busy == null - || this.model == null - || this.deviceError == null - || this.pakMk == null - || this.token == null - ){ - return false; - } - - boolean res = -// (this.taskNo.equals(this.completeTaskNo) || this.taskNo.intValue() == taskNo.intValue()) - !this.busy - && this.model - && !this.pakMk - && !this.deviceError - && this.protocolStatusType.equals(LiftProtocolStatusType.IDLE) - ; - return res; - } - - // 鏄惁澶勪簬绌洪棽寰呭懡鐘舵�� - public Boolean isIdle() { - if(this.taskNo == null - || this.busy == null - || this.model == null - || this.deviceError == null - || this.pakMk == null - || this.token == null - ){ - return false; - } - - boolean res = -// this.taskNo.equals(this.completeTaskNo) - !this.busy - && this.model - && !this.pakMk - && !this.deviceError - && this.token == 0 - && this.protocolStatusType.equals(LiftProtocolStatusType.IDLE) - ; - return res; - } - - // 鏄惁澶勪簬绌洪棽寰呭懡鐘舵�侊紝涓嶅垽鏂换鍔″彿 - public Boolean isIdleNoTask() { - if(this.busy == null - || this.model == null - || this.deviceError == null - || this.pakMk == null - ){ - return false; - } - - boolean res = !this.busy - && this.model - && !this.pakMk - && !this.deviceError - ; - return res; - } - - public String getErrCode$() { - if (this.errorCode == null) { - return ""; - } - BasLiftErrService basLiftErrService = SpringUtils.getBean(BasLiftErrService.class); - BasLiftErr basLiftErr = basLiftErrService.selectById(this.errorCode); - if (basLiftErr == null) { - return String.valueOf(this.errorCode); - } - return basLiftErr.getErrName(); - } - - -} diff --git a/src/main/java/com/zy/core/model/protocol/LiftStaProtocol.java b/src/main/java/com/zy/core/model/protocol/LiftStaProtocol.java index 1bb4b1a..e52218b 100644 --- a/src/main/java/com/zy/core/model/protocol/LiftStaProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/LiftStaProtocol.java @@ -26,36 +26,6 @@ private Boolean busy; /** - * 鍓嶈秴闄� - */ - private Boolean frontOverrun; - - /** - * 鍚庤秴闄� - */ - private Boolean backOverrun; - - /** - * 宸﹁秴闄� - */ - private Boolean leftOverrun; - - /** - * 鍙宠秴闄� - */ - private Boolean rightOverrun; - - /** - * 瓒呴珮 - */ - private Boolean overHeight; - - /** - * 瓒呴噸 - */ - private Boolean overWeight; - - /** * 鏈夋墭鐩� */ private Boolean hasTray; @@ -71,13 +41,9 @@ private Boolean deviceError; /** - * 褰撳墠鎵ц浠诲姟鍙� + * 浠诲姟鍙� */ private Short taskNo; - /** - * 宸插畬鎴愮殑浠诲姟鍙� - */ - private Short completeTaskNo; /** * 灞� diff --git a/src/main/java/com/zy/core/model/protocol/NyShuttleProtocol.java b/src/main/java/com/zy/core/model/protocol/NyShuttleProtocol.java deleted file mode 100644 index 4e60dab..0000000 --- a/src/main/java/com/zy/core/model/protocol/NyShuttleProtocol.java +++ /dev/null @@ -1,608 +0,0 @@ -package com.zy.core.model.protocol; - -import com.alibaba.fastjson.JSON; -import com.core.common.SpringUtils; -import com.zy.asrs.entity.BasShuttle; -import com.zy.asrs.entity.BasShuttleErr; -import com.zy.asrs.service.BasShuttleErrService; -import com.zy.asrs.service.BasShuttleService; -import com.zy.asrs.utils.Utils; -import com.zy.common.utils.NavigatePositionConvert; -import com.zy.core.News; -import com.zy.core.enums.ShuttleProtocolStatusType; -import com.zy.core.enums.ShuttleStatusType; -import com.zy.core.model.command.ShuttleAssignCommand; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; - -/** - * 鐗涚溂鍥涘悜绌挎杞� - */ -@Slf4j -@Data -public class NyShuttleProtocol { - - /** - * 鍥涘悜绌挎杞﹀彿 - */ - private Short shuttleNo; - - /** - * 浠诲姟鍙� - */ - private Integer taskNo = 0; - - /** - * 浠诲姟鎸囦护 - */ - private ShuttleAssignCommand assignCommand; - - /** - * 褰撳墠灏忚溅鐘舵�侊紙鍐呴儴鑷垜缁存姢锛� - */ - private Integer protocolStatus; - - /** - * 褰撳墠灏忚溅鐘舵�佹灇涓� - */ - private ShuttleProtocolStatusType protocolStatusType; - - /** - * 婧愬簱浣� - */ - private String sourceLocNo; - - /** - * 鐩爣搴撲綅 - */ - private String locNo; - - /** - * 灏忚溅褰撳墠搴撲綅鍙� - */ - private String currentLocNo; - - /** - * 浣滀笟鏍囪 - */ - private Boolean pakMk = false; - - /** - * 鎵嬪姩鐘舵��/鑷姩鐘舵�� - * 0/1 - */ - private Integer workingMode; - - /** - * 0:杩愯涓�1锛氱┖闂层�傦紙杞﹁嚜鍔ㄦā寮忎笅锛屽湪 - * 闈欐鐘舵�佷笅锛屼笖娌℃湁鍏朵粬浠诲姟涓旀弧瓒冲彂閫� - * 鏂颁换鍔$殑鐘舵�侊級 - */ - private Integer free; - - /** - * 褰撳墠閫熷害锛屽崟浣峬m/s - */ - private Integer speed; - - /** - * 璐熻浇鐘舵�佹棤/鏈夎礋杞� - * 0/1 - */ - private Integer loadState; - - /** - * 绠″埗鐘舵�佷笉鍦ㄧ鍒朵笅/琚鍒朵腑 - * 0/1 - */ - private Integer suspendState; - - /** - * 椤跺崌浣嶇疆0-鏈煡1-涓嬮檷浣嶇疆2-鎵樹妇浣嶇疆 - */ - private Integer liftPosition; - - /** - * 杩愯鏂瑰悜0-鏈煡1-X鍚�2-Y鍚� - */ - private Integer runDir; - - /** - * 杩愯鏂瑰悜0-鏈煡锛堥潤姝級1-X+鍚�2-X鍚�3-Y+鍚�4-Y-鍚� - */ - private Integer runDir2; - - /** - * 鍏呯數鐘舵��0涓嶅湪鍏呯數鐘舵��1鍏呯數涓� - */ - private Integer chargState; - - /** - * 鐢垫睜鐢甸噺0%-100% - */ - private Integer powerPercent; - - /** - * 鏈�楂樼數鑺數鍘�(mV) - */ - private Integer maxCellVoltage; - - /** - * 鏈�浣庣數鑺數鍘�(mV)锛屼綆浜�2900mv闇�瑕佺珛鍗冲厖鐢� - */ - private Integer minCellVoltage; - - /** - * 鐢垫睜鐢靛帇锛坢V锛� - */ - private Integer voltage; - - /** - * 鍏呮斁鐢靛惊鐜鏁� - */ - private Integer chargeCycleTimes; - - /** - * 鍓╀綑鐢甸噺/10(A) - */ - private Integer surplusQuantity; - - /** - * 鎬荤數閲�/10(A) - */ - private Integer countQuantity; - - /** - * 瀹為檯搴撲綅xyz - */ - private NyShuttlePointClass point; - - /** - * 瀹為檯鍧愭爣xyz鍗曚綅mm - */ - private NyShuttlePointClass coord; - - /** - * WCS搴撲綅xyz - */ - private NyShuttlePointClass wcsPoint; - - /** - * 浠诲姟鐩殑搴撲綅xyztaskId(姝e湪鍔ㄤ綔鐨勪换鍔D)lastTaskId(鏈�鍚庝竴涓畬鎴愮殑浠诲姟ID)recentTaskId(鏀跺埌鐨勬渶鍚庝竴涓换鍔D) - */ - private TaskClass task; - - /** - * 浠诲姟鐘舵��0鏃犱换鍔�1鏈変换鍔� - */ - private Integer taskState; - - /** - * 鏁呴殰鐘舵��0鏃犳晠闅�1鏁呴殰涓� - */ - private Integer errState; - - /** - * 鏁呴殰鐮� - */ - private Integer errCode; - - /** - * mileage鎬婚噷绋嬫暟(绫�)锛宭iftNumber椤跺崌鎬绘暟dropNumber涓嬮檷鎬绘暟reversingX鎹鎬绘暟reversingY鎹鎬绘暟 - */ - private StatusSumClass statusSum; - - /** - * 闈炶嚜鍔ㄧ姸鎬佹椂闂磋鏃�(S) - */ - private Integer errTime; - - /** - * 鐙崰浠ょ墝 - * 鏈浠诲姟鍗犳嵁锛屼护鐗屼负0 - * 琚换鍔″崰鎹紝灏嗕换鍔″彿璧嬪�肩粰浠ょ墝 - */ - private Integer token = 0; - - /** - * 璺戝簱鐘舵�� - */ - private Boolean moveLoc = false; - - /** - * 璺戝簱绫诲瀷锛�0:璺戣建閬擄紝1锛氳窇搴撲綅 - */ - private Integer moveType = 0; - - /** - * 璺戝簱X璧风偣 - */ - private Integer xStart = 0; - - /** - * 璺戝簱X缁堢偣 - */ - private Integer xTarget = 0; - - /** - * 璺戝簱X褰撳墠鐐逛綅 - */ - private Integer xCurrent = 0; - - /** - * 璺戝簱Y璧风偣 - */ - private Integer yStart = 0; - - /** - * 璺戝簱Y缁堢偣 - */ - private Integer yTarget = 0; - - /** - * 璺戝簱Y褰撳墠鐐逛綅 - */ - private Integer yCurrent = 0; - - /** - * 鎸囦护涓嬪彂鏃堕棿 - */ - private Long sendTime = 0L; - - /** - * 鏃ュ織閲囬泦鏃堕棿 - */ - private Long deviceDataLog = System.currentTimeMillis(); - - /** - * 鏈�杩戜竴娆″湪绾挎椂闂� - */ - private Long lastOnlineTime = System.currentTimeMillis(); - - //鎬婚噷绋嬫暟 - @Data - public static class StatusSumClass { - private Integer mileage;//鎬婚噷绋嬫暟(绫�) - private Integer liftNumber;//椤跺崌鎬绘暟 - private Integer dropNumber;//涓嬮檷鎬绘暟 - private Integer reversingX;//鎹鎬绘暟 - private Integer reversingY;//鎹鎬绘暟 - } - - @Data - public static class NyShuttlePointClass{ - private Integer x; - private Integer y; - private Integer z; - } - - //浠诲姟鐩殑搴撲綅 - @Data - public static class TaskClass extends NyShuttlePointClass{ - private Integer taskState; - private Integer taskId;//褰撳墠浠诲姟ID - private Integer lastTaskId;//涓婁竴娆″畬鎴愮殑浠诲姟ID - private Integer recentTaskId;//鏈�鍚庝竴娆℃帴鏀跺埌鐨勪换鍔D - } - - public String getFree$() { - if (this.getFree() == null) { - return ""; - } - return this.getFree() == 0 ? "杩愯涓�" : "绌洪棽"; - } - - public String getWorkingMode$() { - if (this.getWorkingMode() == null) { - return ""; - } - return this.getWorkingMode() == 0 ? "鎵嬪姩" : "鑷姩"; - } - - public String getLoadState$() { - if (this.getLoadState() == null) { - return ""; - } - return this.getLoadState() == 1 ? "鏈�" : "鏃�"; - } - - public String getSuspendState$() { - if (this.getSuspendState() == null) { - return ""; - } - return this.getSuspendState() == 1 ? "鏄�" : "鍚�"; - } - - public String getPowerPercent$() { - if (this.getPowerPercent() == null) { - return ""; - } - return this.getPowerPercent() + "%"; - } - - public String getLiftPosition$() { - if (this.getLiftPosition() == null) { - return ""; - } - - switch (this.getLiftPosition()) { - case 0: - return "鏈煡"; - case 1: - return "涓嬮檷浣嶇疆"; - case 2: - return "鎵樹妇浣嶇疆"; - default: - return this.getLiftPosition().toString(); - } - } - - public String getChargState$() { - if (this.getChargState() == null) { - return ""; - } - return this.getChargState() == 1 ? "鍏呯數涓�" : "鏈厖鐢�"; - } - - public String getMaxCellVoltage$() { - if (this.getMaxCellVoltage() == null) { - return ""; - } - return this.getMaxCellVoltage() + "mV"; - } - - public String getMinCellVoltage$() { - if (this.getMinCellVoltage() == null) { - return ""; - } - return this.getMinCellVoltage() + "mV"; - } - - public String getVoltage$() { - if (this.getVoltage() == null) { - return ""; - } - return this.getVoltage() + "mV"; - } - - public String getTaskState$() { - if (this.getTaskState() == null) { - return ""; - } - return this.getTaskState() == 1 ? "鏈変换鍔�" : "鏃犱换鍔�"; - } - - public String getErrState$() { - if (this.getErrState() == null) { - return ""; - } - return this.getErrState() == 1 ? "鏁呴殰涓�" : "鏃犳晠闅�"; - } - - public String getRunDir$() { - if (this.getRunDir() == null) { - return ""; - } - - switch (this.getRunDir()) { - case 0: - return "鏈煡"; - case 1: - return "X鍚�"; - case 2: - return "Y鍚�"; - default: - return "鏈煡"; - } - } - - public String getRunDir2$() { - if (this.getRunDir2() == null) { - return ""; - } - - switch (this.getRunDir2()) { - case 0: - return "鏈煡"; - case 1: - return "X+鍚�"; - case 2: - return "X-鍚�"; - case 3: - return "Y+鍚�"; - case 4: - return "Y-鍚�"; - default: - return "鏈煡"; - } - } - - /** - * 璁剧疆灏忚溅鐘舵�� - */ - public void setProtocolStatus(Integer status) { - this.protocolStatus = status; - this.protocolStatusType = ShuttleProtocolStatusType.get(status); - } - - /** - * 璁剧疆灏忚溅鐘舵�� - */ - public void setProtocolStatus(ShuttleProtocolStatusType status) { - this.protocolStatus = status.id; - this.protocolStatusType = status; - } - - public String getProtocolStatus$() { - if (this.getProtocolStatus() == null) { - return ""; - } - return ShuttleProtocolStatusType.get(this.getProtocolStatus()).desc; - } - - public String getPakMk$() { - if (this.getPakMk() == null) { - return ""; - } - return this.getPakMk() ? "Y" : "N"; - } - - public String getPoint$() { - if (this.getPoint() == null) { - return ""; - } - return NavigatePositionConvert.nyXyzToLocNo(this.getPoint().getX(), this.getPoint().getY(), this.getPoint().getZ()); - } - - public String getPoint$$() { - if (this.getPoint() == null) { - return ""; - } - return JSON.toJSONString(this.getPoint()); - } - - public String getCoord$() { - if (this.getCoord() == null) { - return ""; - } - return JSON.toJSONString(this.getCoord()); - } - - public String getErrCode$() { - if (this.getErrCode() == null) { - return ""; - } - BasShuttleErrService basShuttleErrService = SpringUtils.getBean(BasShuttleErrService.class); - BasShuttleErr basShuttleErr = basShuttleErrService.selectById(this.getErrCode()); - if (basShuttleErr == null) { - return this.getErrCode().toString(); - } - return basShuttleErr.getErrName(); - } - - public void setPoint(NyShuttlePointClass point) { - String locNo = NavigatePositionConvert.nyXyzToLocNo(point.getX(), point.getY(), point.getZ()); - this.point = point; - this.currentLocNo = locNo; - NyShuttlePointClass wcsPoint = new NyShuttlePointClass(); - wcsPoint.setX(Utils.getRow(locNo)); - wcsPoint.setY(Utils.getBay(locNo)); - wcsPoint.setZ(Utils.getLev(locNo)); - this.wcsPoint = wcsPoint; - } - - // 鏄惁澶勪簬绌洪棽寰呭懡鐘舵�� - public Boolean isIdle() { - boolean res = this.free == ShuttleStatusType.IDLE.id - && !this.pakMk - && this.errState == 0 - && this.taskNo == 0 - && this.protocolStatus == ShuttleProtocolStatusType.IDLE.id - ; - return res; -// if (!res) { -// return res; -// } else { -// // 鐢甸噺 -// try { -// Integer chargeLine = SpringUtils.getBean(BasShuttleService.class).selectById(this.shuttleNo).getChargeLine(); -// if (chargeLine == null) { -// return false; -// } -// return this.getPowerPercent() >= chargeLine; -// } catch (Exception e) { -// News.error("fail", e); -// return false; -// } -// } - } - - // 鏄惁澶勪簬绌洪棽寰呭懡鐘舵�侊紝浼犲叆鐨則askNo鍜屽綋鍓峵askNo鐩稿悓鏃跺厑璁告斁琛� - public Boolean isIdle(int taskNo) { - boolean res = this.free == ShuttleStatusType.IDLE.id - && !this.pakMk - && this.errState == 0 - && (this.taskNo == 0 || this.taskNo == taskNo) - && this.protocolStatus.intValue() == ShuttleProtocolStatusType.IDLE.id - ; - return res; -// if (!res) { -// return res; -// } else { -// // 鐢甸噺 -// try { -// Integer chargeLine = SpringUtils.getBean(BasShuttleService.class).selectById(this.shuttleNo).getChargeLine(); -// return this.getPowerPercent() > chargeLine; -// } catch (Exception e) { -// News.error("fail", e); -// return false; -// } -// } - } - - // 鏄惁澶勪簬绌洪棽寰呭懡鐘舵�� - public Boolean isIdleNoCharge() { - boolean res = this.free == ShuttleStatusType.IDLE.id - && !this.pakMk - && this.errState == 0 - && this.taskNo == 0 - && this.protocolStatus == ShuttleProtocolStatusType.IDLE.id - ; - return res; - } - - // 鏄惁澶勪簬绌洪棽寰呭懡鐘舵�� - public Boolean isIdleNoCharge(int taskNo) { - boolean res = this.free == ShuttleStatusType.IDLE.id - && !this.pakMk - && this.errState == 0 - && (this.taskNo == 0 || this.taskNo == taskNo) - && this.protocolStatus == ShuttleProtocolStatusType.IDLE.id - ; - return res; - } - - // 鏄惁婊¤冻鍏呯數鐘舵�� - public Boolean isRequireCharge() { - if (this.free == null || this.pakMk == null || this.errState == null || this.taskNo == null) { - return false; - } - - boolean res = this.free == ShuttleStatusType.IDLE.id - && !this.pakMk - && this.errState == 0 - && this.taskNo == 0 - && this.protocolStatusType.id == ShuttleProtocolStatusType.IDLE.id - ; - if (!res) { - return res; - } else { - // 鐢甸噺灏忎簬闃堝�兼垨鏈�浣庣數鑺數鍘嬪皬浜�2900mv锛岄渶瑕佽繘琛屽厖鐢� - try { - BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class); - if (shuttleService == null) { - return false; - - } - BasShuttle basShuttle = shuttleService.selectById(this.shuttleNo); - if (basShuttle == null) { - return false; - } - Integer chargeLine = basShuttle.getChargeLine(); - if (chargeLine == null) { - return false; - } - return this.getPowerPercent() < chargeLine; - } catch (Exception e) { - News.error("fail", e); - return false; - } - } - } - - public void setShuttleNo(Short shuttleNo) { - if (shuttleNo != 0) { - this.shuttleNo = shuttleNo; - } - } -} diff --git a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java index bcbc38e..932cd79 100644 --- a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java @@ -1,19 +1,14 @@ package com.zy.core.model.protocol; +import com.core.common.Cools; import com.core.common.SpringUtils; -import com.zy.asrs.entity.BasDevp; -import com.zy.asrs.entity.BasShuttle; import com.zy.asrs.entity.BasShuttleErr; import com.zy.asrs.entity.LocMast; -import com.zy.asrs.service.BasDevpService; import com.zy.asrs.service.BasShuttleErrService; -import com.zy.asrs.service.BasShuttleService; import com.zy.asrs.service.LocMastService; -import com.zy.core.News; -import com.zy.core.enums.ShuttleErrorCodeType; +import com.zy.common.utils.RedisUtil; +import com.zy.core.enums.RedisKeyType; import com.zy.core.enums.ShuttleProtocolStatusType; -import com.zy.core.enums.ShuttleStatusType; -import com.zy.core.model.command.ShuttleAssignCommand; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -22,22 +17,18 @@ */ @Slf4j @Data -public class ShuttleProtocol { +public class ShuttleProtocol implements Cloneable { + //**********************蹇呴』瀛樺湪灞炴��********************** /** * 鍥涘悜绌挎杞﹀彿 */ - private Short shuttleNo; + private Integer shuttleNo; /** * 浠诲姟鍙� */ - private Short taskNo = 0; - - /** - * 浠诲姟鎸囦护 - */ - private ShuttleAssignCommand assignCommand; + private Integer taskNo; /** * 褰撳墠灏忚溅鐘舵�侊紙鍐呴儴鑷垜缁存姢锛� @@ -45,7 +36,7 @@ private Integer protocolStatus; /** - * 褰撳墠灏忚溅鐘舵�佹灇涓� + * 褰撳墠灏忚溅浣滀笟鐘舵�佹灇涓� */ private ShuttleProtocolStatusType protocolStatusType; @@ -60,147 +51,130 @@ private String locNo; /** - * 灏忚溅蹇欑姸鎬佷綅 - * 1: 蹇� - * 0: 绌洪棽 + * 灏忚溅璁惧鐘舵�� */ - private Short busyStatus; + private Integer deviceStatus; /** - * 灏忚溅蹇欑姸鎬佷綅鏋氫妇 + * 灏忚溅妯″紡锛�0锛氭墜鍔� 1锛氳嚜鍔� */ - private ShuttleStatusType busyStatusType; + private Integer mode; /** * 褰撳墠浜岀淮鐮� * 0涓虹┖ */ - private Short currentCode; + private String currentCode; /** - * 鐢垫睜鐢甸噺鐧惧垎姣� + * 鐢垫睜鐢甸噺 */ - private Short batteryPower; - - /** - * 鐢垫睜娓╁害 - */ - private Integer batteryTemp; + private String batteryPower; /** * 閿欒缂栧彿 */ - private Short errorCode; + private String errorCode; + + + //**********************闈炲繀椤诲睘鎬э紝瀹為檯浣跨敤涓彲鑳藉瓨鍦ㄧ┖鍊�********************** /** - * 閿欒缂栧彿鏋氫妇 + * 鐢垫睜娓╁害 */ - private ShuttleErrorCodeType errorCodeType; + private String batteryTemp; /** - * Plc杈撳嚭鐘舵�両O + * 鏄惁椤跺崌 */ - private Short plcOutputStatusIO; + private Boolean hasLift; /** - * Plc杈撳嚭鐘舵�両O-椤跺崌浣� + * 鏄惁鏈夋墭鐩� */ - private Boolean plcOutputLift; + private Boolean hasPallet; /** - * Plc杈撳嚭鐘舵�両O-鎹㈠悜浣� + * 琛岄┒鏂瑰悜 */ - private Boolean plcOutputTransfer; + private String runDirection; /** - * Plc杈撳嚭鐘舵�両O-鎶遍椄浣� + * 鏄惁涓哄厖鐢电姸鎬� */ - private Boolean plcOutputBrake; + private Boolean hasCharge; /** - * Plc杈撳嚭鐘舵�両O-鍏呯數浣� + * 鐢垫睜鐢靛帇 */ - private Boolean plcOutputCharge; + private Integer batteryVoltage; - /** - * 閿欒淇℃伅鐮� - */ - private Short statusErrorCode; + //**********************绯荤粺鑷韩鎵�闇�灞炴��********************** /** - * PLC杈撳叆鐘舵�侊紝鐩墠鍙湁涓�涓姸鎬佹湁鏁堟灉锛屾墭鐩橀浄杈�1鏈夎揣锛�0鏃犺揣 - */ - private Short plcInputStatus; - - /** - * 褰撳墠鎴栬�呬箣鍓嶈鍒扮殑浜岀淮鐮佸�� - */ - private Short currentOrBeforeCode; - - /** - * 璇诲埌鐨勪簩缁寸爜X鏂瑰悜鍋忕Щ閲� - */ - private Short codeOffsetX; - - /** - * 璇诲埌鐨勪簩缁寸爜Y鏂瑰悜鍋忕Щ閲� - */ - private Short codeOffsetY; - - /** - * 褰撳墠鐨勭數鍘嬪�� - */ - private Integer currentVoltage; - - /** - * 褰撳墠鐨勬ā鎷熼噺鍊� - */ - private Short currentAnalogValue; - - /** - * 褰撳墠鐨勫崌闄嶄己鏈嶉�熷害 - */ - private Short currentLiftServoSpeed; - - /** - * 褰撳墠鐨勮璧颁己鏈嶉�熷害 - */ - private Short currentMoveServoSpeed; - - /** - * 褰撳墠鐨勫崌闄嶄己鏈嶈礋杞界巼 - */ - private Short currentLiftServoLoad; - - /** - * 褰撳墠鐨勮璧颁己鏈嶈礋杞界巼 - */ - private Short currentMoveServoLoad; - - /** - * 浣滀笟鏍囪 + * 浣滀笟鏍囪 false琛ㄧず姝e湪浣滀笟 */ private Boolean pakMk = true; - public void setBusyStatus(Short status) { - this.busyStatus = status; - this.busyStatusType = ShuttleStatusType.get(status.intValue()); - } + /** + * 璺戝簱鐘舵�� + */ + private Boolean moveLoc = false; - public void setBusyStatus(ShuttleStatusType type) { - this.busyStatus = type.id.shortValue(); - this.busyStatusType = type; - } + /** + * 璺戝簱绫诲瀷锛�0:璺戣建閬擄紝1锛氳窇搴撲綅 + */ + private Integer moveType = 0; - //鑾峰彇鐢垫睜鐢甸噺 - public Short getBatteryPower$() { - return (short) (this.batteryPower * 0.1); - } + /** + * 璺戝簱X璧风偣 + */ + private Integer xStart = 0; - //鑾峰彇鐢垫睜娓╁害 - public Short getBatteryTemp$() { - return (short) (this.batteryTemp * 0.1); - } + /** + * 璺戝簱X缁堢偣 + */ + private Integer xTarget = 0; + + /** + * 璺戝簱X褰撳墠鐐逛綅 + */ + private Integer xCurrent = 0; + + /** + * 璺戝簱Y璧风偣 + */ + private Integer yStart = 0; + + /** + * 璺戝簱Y缁堢偣 + */ + private Integer yTarget = 0; + + /** + * 璺戝簱Y褰撳墠鐐逛綅 + */ + private Integer yCurrent = 0; + + /** + * 鏃ュ織閲囬泦鏃堕棿 + */ + private Long deviceDataLog = System.currentTimeMillis(); + + /** + * 鎸囦护涓嬪彂鏃堕棿 + */ + private Long sendTime = 0L; + + /** + * 鏈�杩戜竴娆″湪绾挎椂闂� + */ + private Long lastOnlineTime = System.currentTimeMillis(); + + /** + * 鎵╁睍瀛楁 + */ + private Object extend; /** * 璁剧疆灏忚溅鐘舵�� @@ -218,105 +192,33 @@ this.protocolStatusType = status; } - /** - * 璁剧疆閿欒缂栧彿 - */ - public void setErrorCode(Short errorCode) { - this.errorCode = errorCode; - this.errorCodeType = ShuttleErrorCodeType.get(errorCode.intValue()); - } - - /** - * 璁剧疆閿欒缂栧彿 - */ - public void setErrorCode(ShuttleErrorCodeType type) { - this.errorCode = type.id.shortValue(); - this.errorCodeType = type; - } - - // 鏄惁澶勪簬绌洪棽寰呭懡鐘舵�� - public Boolean isIdle() { - boolean res = this.busyStatusType.equals(ShuttleStatusType.IDLE) - && this.pakMk.equals(true) - && this.errorCodeType.equals(ShuttleErrorCodeType.NORMAL) - && this.taskNo == 0 - && this.protocolStatus.intValue() == ShuttleProtocolStatusType.IDLE.id - ; - if (!res) { - return res; - } else { - // 鐢甸噺 - try { - Integer chargeLine = SpringUtils.getBean(BasShuttleService.class).selectById(this.shuttleNo).getChargeLine(); - if (chargeLine == null) { - return false; - } - return this.getBatteryPower$() >= chargeLine; - } catch (Exception e) { - News.error("fail", e); - return false; + public Integer getTaskNo() { + RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class); + if (null != redisUtil) { + Object o = redisUtil.get(RedisKeyType.SHUTTLE.key + this.shuttleNo); + if (!Cools.isEmpty(o)) { + this.taskNo = Integer.parseInt(String.valueOf(o)); } } + return this.taskNo == null ? 0 : this.taskNo; } - // 鏄惁澶勪簬绌洪棽寰呭懡鐘舵�侊紝浼犲叆鐨則askNo鍜屽綋鍓峵askNo鐩稿悓鏃跺厑璁告斁琛� - public Boolean isIdle(Short taskNo) { - boolean res = this.busyStatusType.equals(ShuttleStatusType.IDLE) - && this.pakMk.equals(true) - && this.errorCodeType.equals(ShuttleErrorCodeType.NORMAL) - && (this.taskNo == 0 || this.taskNo.intValue() == taskNo.intValue()) - && this.protocolStatus.intValue() == ShuttleProtocolStatusType.IDLE.id - ; - if (!res) { - return res; - } else { - // 鐢甸噺 - try { - Integer chargeLine = SpringUtils.getBean(BasShuttleService.class).selectById(this.shuttleNo).getChargeLine(); - return this.getBatteryPower$() > chargeLine; - } catch (Exception e) { - News.error("fail", e); - return false; - } + public synchronized void setSyncTaskNo(Integer taskNo) { + RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class); + if (null != redisUtil) { + redisUtil.set(RedisKeyType.SHUTTLE.key + this.shuttleNo, taskNo); + this.taskNo = taskNo; } } - // 鏄惁婊¤冻鍏呯數鐘舵�� - public Boolean isRequireCharge() { - if (this.busyStatusType == null || this.pakMk == null || this.errorCodeType == null || this.taskNo == null) { - return false; + @Override + public ShuttleProtocol clone() { + try { + return (ShuttleProtocol) super.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); } - - boolean res = this.busyStatusType.id.intValue() == ShuttleStatusType.IDLE.id.intValue() - && this.pakMk - && this.errorCodeType.id.intValue() == ShuttleErrorCodeType.NORMAL.id.intValue() - && this.taskNo == 0 - && this.protocolStatusType.id == ShuttleProtocolStatusType.IDLE.id - ; - if (!res) { - return res; - } else { - // 鐢甸噺灏忎簬闃堝�兼垨鐢靛帇灏忎簬48V锛岄渶瑕佽繘琛屽厖鐢� - try { - BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class); - if (shuttleService == null) { - return false; - - } - BasShuttle basShuttle = shuttleService.selectById(this.shuttleNo); - if (basShuttle == null) { - return false; - } - Integer chargeLine = basShuttle.getChargeLine(); - if (chargeLine == null) { - return false; - } - return this.getBatteryPower$() < chargeLine || this.currentVoltage < 48000; - } catch (Exception e) { - News.error("fail", e); - return false; - } - } + return null; } //閫氳繃褰撳墠浜岀淮鐮佽幏鍙栧綋鍓嶅簱浣嶅彿 @@ -326,7 +228,7 @@ return null; } //婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - LocMast currentLocMast = locMastService.queryByQrCode(this.currentCode.toString()); + LocMast currentLocMast = locMastService.queryByQrCode(this.currentCode); if (currentLocMast == null) { return null; } @@ -335,31 +237,14 @@ public String getStatusErrorCode$() { BasShuttleErrService basShuttleErrService = SpringUtils.getBean(BasShuttleErrService.class); - BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(this.statusErrorCode.intValue()); + if (this.errorCode == null) { + return ""; + } + BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(Integer.valueOf(this.errorCode)); if (basShuttleErr == null) { - return this.statusErrorCode.toString(); + return this.errorCode; } return basShuttleErr.getErrName(); - } - - public void setCurrentCode(Short currentCode) { - this.currentCode = currentCode; - LocMastService locMastService = SpringUtils.getBean(LocMastService.class); - if (locMastService != null) { - LocMast locMast = locMastService.queryByQrCode(currentCode.toString()); - if (locMast == null) { - //鏌ヤ笉鍒板簱浣嶅彿锛屾煡璇㈡槸鍚︿负绔欑偣 - BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class); - if (basDevpService != null) { - BasDevp basDevp = basDevpService.queryByLocNo(currentCode.toString()); - if (basDevp != null) { - this.locNo = basDevp.getLocNo(); - } - } - }else{ - this.locNo = locMast.getLocNo(); - } - } } } diff --git a/src/main/java/com/zy/core/model/protocol/SteProtocol.java b/src/main/java/com/zy/core/model/protocol/SteProtocol.java deleted file mode 100644 index 5ed0d12..0000000 --- a/src/main/java/com/zy/core/model/protocol/SteProtocol.java +++ /dev/null @@ -1,556 +0,0 @@ -package com.zy.core.model.protocol; - -import com.core.common.Cools; -import com.core.common.SpringUtils; -import com.zy.asrs.entity.BasSte; -import com.zy.asrs.service.BasSteService; -import com.zy.core.News; -import com.zy.core.enums.SteHisTaskStatusType; -import com.zy.core.enums.SteLocaType; -import com.zy.core.enums.SteStatusType; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; - -/** - * Created by vincent on 2020/8/7 - */ -@Slf4j -@Data -public class SteProtocol { - - /** - * 璁惧鍙� - */ - private Short steNo; - - /** - * 1 = 鑱旀満妯″紡 - * 0 = 鑴辨満妯″紡 - */ - public Short mode; - - /** - IDLE(0, "绌洪棽"), - MOVING(1, "浣滀笟涓�"), - SOS(2, "鎶ヨ"), - WAITING(3, "浠诲姟瀹屾垚绛夊緟WCS纭"), - */ - public Short status; - - public SteStatusType statusType; - - /** - * 浠诲姟鍙� - */ - public Short taskNo = 0; - - /** - * 姝e湪鎵ц浠诲姟 - */ - public Boolean execute; - - /** - * 浠诲姟瀹屾垚锛岀瓑寰匴CS纭 - */ - public Boolean waiting; - - - /** - * 寮傚父鐮�1 - */ - public Short alarm; - - - /** - * 寮傚父鐮�2 - */ - public Short alarm0; - - /** - * 鐢垫睜鐢甸噺 - */ - public Float charge = 0.0F; - - public void setCharge(Float charge) { - if (charge >= 0) { - this.charge = charge; - } - } - - /** - * 婊$數 - */ - public Boolean fullCharge; - - /** - * 浣庣數閲� - */ - public Boolean lowCharge; - - /** - * 鐢垫睜棣堢數 0锛屾瑺鐢碉紝1浣庣數 2婊$數 - */ - public Short feed; - - /** - * 褰撳墠浣嶇疆 1锛岃繎鐐癸紝2杩滅偣锛�3A鐐癸紝4B鐐� - */ - public Short loca; - - public SteLocaType locaType; - - /** - * 杩戠偣璺濈 - */ - public Double closer; - - /** - * 褰撳墠閫熷害 - */ - public Double speed = 0.0D; - - /** - * 楂樹綆浣� 0锛屼綆浣嶏紝1楂樹綅 - */ - public Short pos; - - /** - * 鏈夎揣 0锛屾病璐э紝1鏈夎揣 - */ - public Short load; - - /** - * 鍦ㄨ建閬撲笂 0涓嶅湪锛�1鍦� - */ - public Short track; - - /** - * 浠诲姟绫诲瀷 - */ - public Short taskType; - - /** - * 鎺� - */ - public Short row; - - /** - * 鍒� - */ - public Short bay; - - /** - * 灞� - */ - public Short lev; - - /** - * 杩囪处鎸囦护浠诲姟鍙� - */ - public Integer hisTaskNo; - - /** - * 杩囪处鎸囦护鐘舵�� - * 0鍒濆 1鎵ц瀹屾垚 2鍒犻櫎 - */ - public Short hisTaskStatus; - - public SteHisTaskStatusType hisTaskStatusType; - - /** - * 鐩樼偣鏁伴噺 - */ - public Short checkQty; - - /** - * 灏辩华鐘舵�� 0鏈氨缁� 1灏辩华 - */ - public Short ready; - - /** - * 鎵撳紑鍏呯數妗╁彿 - */ - public Short chargeNo; - - /** - * 蹇冭烦鎸囦护 1-2姣忕鍒囨崲涓�娆� - */ - public Short heart; - - /** - * 鍫嗗灈鏈虹姝㈣繍琛� 1杩愯锛�0绂佹 - */ - public Short crnStopRun; - - /** - * 鍫嗗灈鏈虹姝几鍙� 1杩愯锛�0绂佹 - */ - public Short crnStopFork; - - /** - * 鍫嗗灈鏈烘惉绉诲厑璁� 0涓嶅厑璁� 1鍏佽 - */ - public Short crnAllowRun; - - /** - * 鍏呯數鐘舵�� 1锛氬湪鍏呯數锛�0锛氫笉鍦ㄥ厖鐢� - */ - private Short chargeStatus; - - // 鍏ュ簱鍙栫┖ - private Boolean inEmpty; - - // 鍑哄簱鍙栫┖ - private Boolean outEmpty; - - // 绌挎杞﹀紓甯� ------------------------------------------------------------------------ - - /** - * 0.鍗囬檷瓒呮椂鎶ヨ - */ - private boolean liftErr; - - /** - * 2.鍏ュ簱鍙栫┖鎶ヨ - */ - private boolean inFetchErr; - - /** - * 3.鍑哄簱鍙栫┖鎶ヨ - */ - private boolean outFetchErr; - - /** - * 4.闃叉挒淇濇姢 - */ - private boolean antiErr; - - /** - * 5.鍗囬檷鎺ヨ繎寮�鍏虫晠闅� - */ - private boolean liftSwitchErr; - - /** - * 6.杞ㄩ亾妫�娴嬫姤璀� - */ - private boolean trackErr; - - /** - * 7.璁惧杩愯瓒呮椂鎶ヨ - */ - private boolean timeoutErr; - - /** - * 8.閫氫俊閿欒鎶ヨ - */ - private boolean connectErr; - - /** - * 9.璁惧鎬ュ仠 - */ - private boolean emergencyErr; - - /** - * 10.浠诲姟绫诲瀷缂哄け - */ - private boolean taskTypeErr; - - /** - * 11.浠诲姟鍙风己澶� - */ - private boolean taskNoErr; - - /** - * 12.杩愯涓湁鏂颁换鍔� - */ - private boolean newTaskErr; - - /** - * 13.鏁呴殰涓湁浠诲姟 - */ - private boolean errTaskErr; - - /** - * 14.杩愯涓仠姝� - */ - private boolean stopErr; - - /** - * 15.鑴辨満妯″紡涓嬫湁浠诲姟 - */ - private boolean offlineTaskErr; - - /** - * 16.鏉′欢鏈弧瓒冲惎鍔ㄤ换鍔� - */ - private boolean startTaskErr; - - /** - * 17.浣庣數鍘嬫椂鏈変换鍔� - */ - private boolean voltageTaskErr; - - /** - * 63.璁惧鏁呴殰鏍囧織浣� - */ - private boolean devpErr; - // 绌挎杞﹀紓甯� ------------------------------------------------------------------------ - - // 绌挎杞︽彁绀轰俊鎭� ------------------------------------------------------------------------ - /** - * 64.鑱旀満鐘舵�� - */ - private boolean online; - - /** - * 65.涓嶅湪杞ㄩ亾涓� - */ - private boolean notOnTrack; - - /** - * 66.浣庣數閲忔彁閱� - */ - private boolean lowVoltage; - - /** - * 67.浜忕數涓� - */ - private boolean electricityLoss; - - /** - * 68.寮哄埗琛岃蛋鍚姩 - */ - private boolean forcedTravel; - - /** - * 69.婕旂ず妯″紡寮�鍚� - */ - private boolean demoMode; - - /** - * 70.鍏呯數鍒峰凡鎺ラ�� - */ - private boolean brushConnect; - - /** - * 71.浠诲姟涓姝㈡墜鍔� - */ - private boolean taskManualForbid; - - /** - * 72.鑱旀満涓姝㈡墜鍔� - */ - private boolean onlineManualForbid; - - /** - * 73.璁惧鎬ュ仠涓� - */ - private boolean devpEmergency; - - /** - * 74.浠诲姟涓柇涓� - */ - private boolean taskInterrupt; - - /** - * 75.浠诲姟宸叉竻闄� - */ - private boolean taskClear; - - /** - * 76.浠诲姟纭宸茶秴鏃� - */ - private boolean taskConfirmTimeout; - - /** - * 77.鍏呯數涓湁浠诲姟 - */ - private boolean taskWithCharge; - - // 浠诲姟淇℃伅 --------------------------------------------------------- - /** - * 96.鍏ュ簱浠诲姟涓� - */ - private boolean pakInTask; - - /** - * 97. 鍑哄簱浠诲姟涓� - */ - private boolean pakOutTask; - - /** - * 98. 绉诲簱浠诲姟涓� - */ - private boolean pakMoveTask; - - /** - * 99. 鍥炲師鐐逛换鍔′腑 - */ - private boolean goHpTask; - - /** - * 100. 鍘诲弽鍘熺偣浠诲姟涓� - */ - private boolean goOHpTask; - - /** - * 101. 鍘诲師鐐归伩璁╀綅 - */ - private boolean goHpAvoid; - - /** - * 102. 鍘诲弽鍘熺偣閬胯浣� - */ - private boolean goOHpAvoid; - - /** - * 104. 鍏ュ簱鍙栫┖缁撴潫 - */ - private boolean pakInEmpty; - - /** - * 105. 鍏ュ簱姝e父缁撴潫 - */ - private boolean pakInFinish; - - /** - * 106. 鍑哄簱鍙栫┖缁撴潫 - */ - private boolean pakOutEmpty; - - /** - * 107. 鍑哄簱姝e父缁撴潫 - */ - private boolean pakOutFinish; - - /** - * 108. 鍘诲師鐐归伩璁╁畬鎴� - */ - private boolean goHpAvoidFinish; - - /** - * 109. 鍘诲弽鍘熺偣閬胯瀹屾垚 - */ - private boolean goOHpAvoidFinish; - - /** - * 110. 鍘诲師鐐归伩璁╁畬鎴� - */ - private boolean goHpAvoidErr; - - /** - * 111. 鍘诲弽鍘熺偣閬胯瀹屾垚 - */ - private boolean goOHpAvoidErr; - - // 鐘舵�佷俊鎭� --------------------------------------------------------- - /** - * 112. 鑱旀満妯″紡 - */ - private boolean autoMode; - - /** - * 113. 鐢靛帇杩囦綆 - */ - private boolean voltageLow; - - - public void setStatus(Short status){ - this.status = status; - this.statusType = SteStatusType.get(status); - } - - public void setStatus(SteStatusType type){ - this.statusType = type; - this.status = SteStatusType.get(type).id.shortValue(); - } - - public void setLoca(Short loca){ - this.loca = loca; - this.locaType = SteLocaType.get(loca); - } - - public void setLoca(SteLocaType type){ - this.locaType = type; - this.loca = SteLocaType.get(type).id.shortValue(); - } - - public void setHisTaskStatus(Short hisTaskStatus){ - this.hisTaskStatus = hisTaskStatus; - this.hisTaskStatusType = SteHisTaskStatusType.get(hisTaskStatus); - } - - public void setHisTaskStatus(SteHisTaskStatusType type){ - this.hisTaskStatusType = type; - this.hisTaskStatus = SteHisTaskStatusType.get(type).id.shortValue(); - } - - /** - * 鏈�杩戜竴娆″叆鍑哄簱绫诲瀷 - * I:鍏ュ簱 - * O:鍑哄簱 - */ - private String lastIo = "I"; - - private String pakMk = "-"; - - public BasSte toSqlModel(BasSte basSte){ - if (alarm!=null) { - basSte.setSteErr(alarm.longValue()); - } - basSte.setWrkNo(taskNo.intValue()); -// if (basSte.getPakMk().equals("N")) { -// if (!Cools.isEmpty(row)) { -// basSte.setRow(row.intValue()); -// } -// if (!Cools.isEmpty(bay)) { -// basSte.setBay(bay.intValue()); -// } -// if (!Cools.isEmpty(lev)) { -// basSte.setLev(lev.intValue()); -// } -// } - return basSte; - } - - // 鏄惁澶勪簬绌洪棽寰呭懡鐘舵�� - public Boolean isIdle() { - boolean res = this.statusType.equals(SteStatusType.IDLE) - && this.mode == 1 - && this.pakMk.equals("N") - && !isAlarm() - && this.chargeStatus == 0 - && isEnable() - ; - if (!res) { - return res; - } else { - // 鐢甸噺 - try { - String chargeLine = SpringUtils.getBean(BasSteService.class).selectById(this.steNo).getChargeLine(); - return charge > Float.parseFloat(chargeLine); - } catch (Exception e) { - News.error("fail", e); - return false; - } - } - } - - // 灏忚溅鐢甸噺 - public Float isIdle2() { - return this.charge; - } - - // 鏄惁澶勪簬鎶ヨ鐘舵�� - public Boolean isAlarm() { - return this.alarm > 1; - } - - public Boolean isEnable() { - if (Cools.isEmpty(row, bay, lev)) { - return false; - } - return row > 0 && bay > 0 && lev > 0; - } - -} diff --git a/src/main/java/com/zy/core/properties/SlaveProperties.java b/src/main/java/com/zy/core/properties/SlaveProperties.java index 7bf463d..4f5e7a5 100644 --- a/src/main/java/com/zy/core/properties/SlaveProperties.java +++ b/src/main/java/com/zy/core/properties/SlaveProperties.java @@ -25,15 +25,7 @@ private List<String> channel = new ArrayList<>(); - private List<CrnSlave> crn = new ArrayList<>(); - - private List<SteSlave> ste = new ArrayList<>(); - private List<DevpSlave> devp = new ArrayList<>(); - - private List<Devp2Slave> devp2 = new ArrayList<>(); - - private List<Devp2Slave> devp3 = new ArrayList<>(); private List<Slave> barcode = new ArrayList<>(); @@ -45,6 +37,6 @@ private List<ShuttleSlave> shuttle = new ArrayList<>(); - private List<LiftSlave> lift = new ArrayList<>(); + private List<ForkLiftSlave> forkLift = new ArrayList<>(); } diff --git a/src/main/java/com/zy/core/thread/ForkLiftThread.java b/src/main/java/com/zy/core/thread/ForkLiftThread.java new file mode 100644 index 0000000..512137a --- /dev/null +++ b/src/main/java/com/zy/core/thread/ForkLiftThread.java @@ -0,0 +1,46 @@ +package com.zy.core.thread; + +import com.zy.common.ExecuteSupport; +import com.zy.core.ThreadHandler; +import com.zy.core.enums.ForkLiftProtocolStatusType; +import com.zy.core.enums.ForkLiftTaskModeType; +import com.zy.core.model.CommandResponse; +import com.zy.core.model.command.ForkLiftCommand; +import com.zy.core.model.protocol.ForkLiftProtocol; +import com.zy.core.model.protocol.ForkLiftStaProtocol; + +import java.util.List; + +public interface ForkLiftThread extends ThreadHandler { + + ForkLiftProtocol getStatus();//鑾峰彇鎻愬崌鏈虹姸鎬� + + ForkLiftProtocol getStatus(boolean clone);//鑾峰彇鎻愬崌鏈虹姸鎬� + + List<ForkLiftStaProtocol> getForkLiftStaProtocols(); + + CommandResponse pickAndPut(ForkLiftCommand command);//鍙栨斁璐ф寚浠� + + CommandResponse shuttleSwitch(ForkLiftCommand command);//灏忚溅鎹㈠眰 + + CommandResponse reset(ForkLiftCommand command);//澶嶄綅 + + boolean isIdle();//鏄惁绌洪棽 + + boolean isDeviceIdle();//璁惧鏄惁绌洪棽 + + boolean isDeviceIdle(ExecuteSupport support);//璁惧鏄惁绌洪棽 + + boolean setProtocolStatus(ForkLiftProtocolStatusType status);//璁剧疆宸ヤ綔鐘舵�� + + boolean setSyncTaskNo(Integer taskNo);//璁剧疆宸ヤ綔鍙� + + int generateDeviceTaskNo(int taskNo, ForkLiftTaskModeType type);//鐢熸垚纭欢璁惧宸ヤ綔鍙� + + //***************鑾峰彇鍛戒护***************** + + List<ForkLiftCommand> getPickAndPutCommand(Integer taskNo, Integer pick, Integer put);//鍙栨斁璐ф寚浠� + + List<ForkLiftCommand> getShuttleSwitchCommand(Integer taskNo, Integer originLev, Integer targetLev);//灏忚溅鎹㈠眰 + +} diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java index bbbc3d3..2854b0a 100644 --- a/src/main/java/com/zy/core/thread/LiftThread.java +++ b/src/main/java/com/zy/core/thread/LiftThread.java @@ -1,536 +1,522 @@ -package com.zy.core.thread; - -import HslCommunication.Core.Types.OperateResult; -import HslCommunication.Core.Types.OperateResultExOne; -import HslCommunication.Profinet.Siemens.SiemensPLCS; -import HslCommunication.Profinet.Siemens.SiemensS7Net; -import com.alibaba.fastjson.JSON; -import com.core.common.DateUtils; -import com.core.common.SpringUtils; -import com.core.exception.CoolException; -import com.zy.asrs.entity.BasLift; -import com.zy.asrs.entity.BasLiftOpt; -import com.zy.asrs.entity.DeviceDataLog; -import com.zy.asrs.mapper.WrkMastMapper; -import com.zy.asrs.service.BasLiftOptService; -import com.zy.asrs.service.BasLiftService; -import com.zy.asrs.service.DeviceDataLogService; -import com.zy.asrs.utils.Utils; -import com.zy.common.utils.RedisUtil; -import com.zy.core.News; -import com.zy.core.ThreadHandler; -import com.zy.core.cache.MessageQueue; -import com.zy.core.cache.OutputQueue; -import com.zy.core.enums.*; -import com.zy.core.model.LiftSlave; -import com.zy.core.model.Task; -import com.zy.core.model.command.*; -import com.zy.core.model.protocol.LiftStaProtocol; -import com.zy.core.model.protocol.LiftProtocol; -import com.zy.core.model.protocol.StaProtocol; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; - -import java.text.MessageFormat; -import java.util.*; - -/** - * 鎻愬崌鏈虹嚎绋� - */ -@Data -@Slf4j -public class LiftThread implements Runnable, ThreadHandler { - - private SiemensS7Net siemensS7Net; - private LiftSlave slave; - private LiftProtocol liftProtocol; - private RedisUtil redisUtil; - private List<LiftStaProtocol> liftStaProtocols = new ArrayList<>(); - - public LiftThread(LiftSlave slave,RedisUtil redisUtil) { - this.slave = slave; - this.redisUtil = redisUtil; - - //鍒濆鍖栫珯鐐� - for (LiftSlave.Sta sta : this.slave.getSta()) { - LiftStaProtocol liftStaProtocol = new LiftStaProtocol(); - liftStaProtocol.setStaNo(sta.getStaNo());//绔欑偣鍙� - liftStaProtocol.setLev(sta.getLev());//绔欑偣妤煎眰 - String locNo = Utils.getLocNo(this.slave.getStaRow(), this.slave.getStaBay(), sta.getLev()); - liftStaProtocol.setLocNo(locNo);//绔欑偣搴撲綅鍙� - liftStaProtocol.setLiftNo(sta.getLiftNo());//鎻愬崌鏈哄彿 - liftStaProtocols.add(liftStaProtocol); - } - - } - - @Override - public void run() { - this.connect(); - while (true) { - try { - int step = 1; - Task task = MessageQueue.poll(SlaveType.Lift, slave.getId()); - if (task != null) { - step = task.getStep(); - } - switch (step) { - // 璇绘暟鎹� - case 1: - read(); - break; - // 鍐欏叆鏁版嵁 - case 2: - write((NyLiftCommand) task.getData()); - break; - //鍒嗛厤浠诲姟 - case 3: - assignWork((LiftAssignCommand) task.getData()); - break; - case 4: - write2((HashMap<String, Object>) task.getData()); - default: - break; - } - Thread.sleep(500); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - @Override - public boolean connect() { - boolean result = false; - //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------// - siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp()); - OperateResult connect = siemensS7Net.ConnectServer(); - if(connect.IsSuccess){ - result = true; - OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戞彁鍗囨満plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - log.info("鎻愬崌鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort()); - } else { - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - log.error("鎻愬崌鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort()); - } - siemensS7Net.ConnectClose(); - //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------// - return result; - } - - @Override - public void close() { - siemensS7Net.ConnectClose(); - } - - private void read() { - try { - readStatus(); - - //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓篺alse - if (liftProtocol.getBusy()) { - liftProtocol.setPakMk(false); - } - - //鎻愬崌鏈哄浜庢湭杩愯銆佸氨缁�佹爣璁皌rue銆佹湁浠诲姟鍙� - if (!liftProtocol.getBusy() - && !liftProtocol.getPakMk() - && liftProtocol.getTaskNo() != 0) { - //杩樻湁鏈畬鎴愮殑鍛戒护 - executeWork(liftProtocol.getTaskNo()); - } - } catch (Exception e) { - OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - } - } - - private void readStatus() { - try { - //鑾峰彇鎻愬崌鏈烘暟鎹� - OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB82.4.0", (short) 10); - if (result1.IsSuccess) { - if (null == liftProtocol) { - liftProtocol = new LiftProtocol(); - liftProtocol.setLiftNo(slave.getId().shortValue()); - } - //璇诲彇4.0-4.7鏁版嵁 - boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result1.Content, 0, 1); - //璇诲彇5.0-5.7鏁版嵁 - boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result1.Content, 1, 1); - //妯″紡 - liftProtocol.setModel(status1[0]); - //蹇欓棽 - liftProtocol.setBusy(!status1[1]); - //鍓嶈秴闄� - liftProtocol.setFrontOverrun(status1[4]); - //鍚庤秴闄� - liftProtocol.setBackOverrun(status1[5]); - //宸﹁秴闄� - liftProtocol.setLeftOverrun(status1[6]); - //鍙宠秴闄� - liftProtocol.setRightOverrun(status1[7]); - //瓒呴珮 - liftProtocol.setOverHeight(status2[0]); - //瓒呴噸 - liftProtocol.setOverWeight(status2[1]); - //鏈夋墭鐩� - liftProtocol.setHasTray(status2[5]); - //鏈夊皬杞� - liftProtocol.setHasCar(status2[6]); - //璁惧鏁呴殰 - liftProtocol.setDeviceError(status2[7]); - //浠诲姟鍙� - liftProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 2)); - //鐩殑鍦板潃 - liftProtocol.setDistAddress(siemensS7Net.getByteTransform().TransInt16(result1.Content, 4)); - //宸插畬鎴愪换鍔″彿 - liftProtocol.setCompleteTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 6)); - //褰撳墠妤煎眰 - short lev = siemensS7Net.getByteTransform().TransInt16(result1.Content, 8); - if (lev >= 7 && lev <= 9) { - lev -= 2; - } else if (lev >= 12 && lev <= 14) { - lev -= 4; - } - liftProtocol.setLev(lev); - - //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴� - BasLiftService liftService = SpringUtils.getBean(BasLiftService.class); - BasLift basLift = liftService.selectById(liftProtocol.getLiftNo()); - if (basLift == null) { - basLift = new BasLift(); - //鎻愬崌鏈哄彿 - basLift.setLiftNo(slave.getId()); - liftService.insert(basLift); - } - basLift.setStatus(liftProtocol.getProtocolStatus()); - basLift.setWrkNo(liftProtocol.getTaskNo().intValue()); - basLift.setUpdateTime(new Date()); - basLift.setPakMk(liftProtocol.getPakMk()); - basLift.setDeviceStatus(JSON.toJSONString(liftProtocol)); - if (liftService.updateById(basLift)) { - OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); -// log.info(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); - } - }else { - OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆憑1}鎻愬崌鏈簆lc鐘舵�佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId())); - throw new CoolException(MessageFormat.format( "鎻愬崌鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort())); - } - Thread.sleep(200); - - //鑾峰彇鎻愬崌鏈虹珯鐐规暟鎹� - OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB82.14.0", (short) (10 * liftStaProtocols.size())); - if (result1.IsSuccess) { - for (int i = 0; i < slave.getSta().size(); i++) { - LiftStaProtocol liftStaProtocol = liftStaProtocols.get(i); - int i1 = 0 + (i * 10); - int i2 = 1 + (i * 10); - //璇诲彇x4.0-x4.7鏁版嵁 - boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result2.Content, i1, 1); - //璇诲彇x5.0-x5.7鏁版嵁 - boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result2.Content, i2, 1); - //妯″紡 - liftStaProtocol.setModel(status1[0]); - //蹇欓棽 - liftStaProtocol.setBusy(!status1[1]); - //鏈夋墭鐩� - liftStaProtocol.setHasTray(status1[2]); - //鍓嶈秴闄� - liftStaProtocol.setFrontOverrun(status1[4]); - //鍚庤秴闄� - liftStaProtocol.setBackOverrun(status1[5]); - //宸﹁秴闄� - liftStaProtocol.setLeftOverrun(status1[6]); - //鍙宠秴闄� - liftStaProtocol.setRightOverrun(status1[7]); - //瓒呴珮 - liftStaProtocol.setOverHeight(status2[0]); - //瓒呴噸 - liftStaProtocol.setOverWeight(status2[1]); - //鏈夊皬杞� - liftStaProtocol.setHasCar(status2[6]); - //璁惧鏁呴殰 - liftStaProtocol.setDeviceError(status2[7]); - //浠诲姟鍙� - liftStaProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result2.Content, 2)); - //宸插畬鎴愪换鍔″彿 - liftStaProtocol.setCompleteTaskNo(siemensS7Net.getByteTransform().TransInt16(result2.Content, 6)); - } - } - - Thread.sleep(100); - //鑾峰彇鎻愬崌鏈哄紓甯告暟鎹� - OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB82.22.0", (short) 2); - if (result3.IsSuccess) { - liftProtocol.setErrorCode(siemensS7Net.getByteTransform().TransInt16(result3.Content, 0));//閿欒鐮� - } - - if (System.currentTimeMillis() - liftProtocol.getDeviceDataLog() > 1000 * 5) { - //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰� - //淇濆瓨鏁版嵁璁板綍 - DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class); - DeviceDataLog deviceDataLog = new DeviceDataLog(); - deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result1.Content)); - deviceDataLog.setWcsData(JSON.toJSONString(liftProtocol)); - deviceDataLog.setType("lift"); - deviceDataLog.setDeviceNo(liftProtocol.getLiftNo().intValue()); - deviceDataLog.setCreateTime(new Date()); - deviceDataLogService.insert(deviceDataLog); - - //鏇存柊閲囬泦鏃堕棿 - liftProtocol.setDeviceDataLog(System.currentTimeMillis()); - } - - } catch (Exception e) { - OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - } - } - - private boolean write(NyLiftCommand command){ - if (null == command) { - News.error("鎻愬崌鏈哄啓鍏ュ懡浠や负绌�"); - return false; - } - - command.setLiftNo(slave.getId().shortValue()); - short[] array = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃 - - OperateResult result = siemensS7Net.Write("DB83.0", array); - if (result != null && result.IsSuccess) { - liftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 - News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); - OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); - return true; - } else { - OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戝啓鍏ユ彁鍗囨満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}],娆℃暟锛歿}", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - News.error("鍐欏叆鎻愬崌鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - return false; - } - } - - //鑾峰彇鍛戒护鎶ユ枃 - private short[] getCommandArr(NyLiftCommand command) { - // 寮�濮嬩换鍔� - short[] array = new short[4]; - if (command.getTaskModel() != null) { - //浠诲姟绫诲瀷 - array[0] = command.getTaskModel(); - } - if (command.getSourceSta() != null) { - //婧愮珯鍙扮紪鍙� - array[1] = command.getSourceSta(); - } - if (command.getTargetSta() != null) { - //鐩爣绔欏彴缂栧彿 - array[2] = command.getTargetSta(); - } - if (command.getTaskNo() != null) { - //浠诲姟鍙� - array[3] = command.getTaskNo(); - } - return array; - } - - //鍒嗛厤浠诲姟 - private void assignWork(LiftAssignCommand assignCommand) { - LiftRedisCommand redisCommand = new LiftRedisCommand(); - redisCommand.setLiftNo(assignCommand.getLiftNo());//鎻愬崌鏈哄彿 - redisCommand.setWrkNo(assignCommand.getTaskNo());//宸ヤ綔鍙� - redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭 - redisCommand.setAssignCommand(assignCommand);//鍛戒护 - //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set(RedisKeyType.LIFT.key + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand)); - liftProtocol.setAssignCommand(assignCommand); - liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING); - //鎵ц涓嬪彂浠诲姟 - executeWork(assignCommand.getTaskNo()); - } - - //鎵ц浠诲姟 - private boolean executeWork(Short wrkNo) { - //璇诲彇redis鏁版嵁 - if (wrkNo == null) { - return false; - } - - if (wrkNo >= 20000 && wrkNo <= 30000) { - //鎻愬崌鏈鸿澶囧伐浣滃彿锛岄渶瑕佹煡璇㈠搴斾换鍔″彿 - BasLiftOptService basLiftOptService = SpringUtils.getBean(BasLiftOptService.class); - BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(liftProtocol.getTaskNo().toString(), liftProtocol.getLiftNo().intValue()); - if (basLiftOpt != null) { - wrkNo = basLiftOpt.getWrkNo().shortValue(); - } - } - - Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); - if (o == null) { - return false; - } - LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class); - List<NyLiftCommand> commands = redisCommand.getAssignCommand().getCommands(); - //褰撳墠姝ュ簭 - int commandStep = redisCommand.getCommandStep(); - //鎬绘搴� - int size = commands.size(); - - if (!redisCommand.getLiftNo().equals(liftProtocol.getLiftNo())) { - return false; - } - - if (commandStep != 0) { - //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀仛瀹� - NyLiftCommand lastCommand = commands.get(commandStep - 1);//涓婁竴鏉℃寚浠� - if (!liftProtocol.getBusy() && liftProtocol.getTaskNo().equals(lastCommand.getTaskNo())) { - //鎻愬崌鏈虹┖闂层�佷笖鎻愬崌鏈哄伐浣滃彿涓庝笂涓�鏉℃寚浠ゅ伐浣滃彿鐩稿悓 - lastCommand.setComplete(true);//鏍囪浠诲姟瀹屾垚 - } - - //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); - - if (!lastCommand.getComplete()) { - //涓婁竴鏉′换鍔℃湭瀹屾垚锛岀姝笅鍙戝懡浠� - return false; - } - - //鍒ゆ柇鏄惁涓烘渶鍚庝竴鏉″懡浠や笖鍛戒护鎵ц瀹屾垚锛屾姏鍑虹瓑寰呯‘璁ょ姸鎬� - NyLiftCommand endCommand = commands.get(commands.size() - 1); - if (endCommand.getComplete()) { - //宸叉墽琛屽畬鎴� - //鍒犻櫎redis - redisUtil.del(RedisKeyType.LIFT.key + redisCommand.getWrkNo()); - - //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting - liftProtocol.setProtocolStatus(LiftProtocolStatusType.WAITING); - News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愭墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", redisCommand.getLiftNo(), JSON.toJSON(redisCommand)); - } - - } - - //鍙栧嚭鍛戒护 - NyLiftCommand command = commands.get(commandStep); - - //涓嬪彂鍛戒护 - if (!write(command)) { - News.error("鎻愬崌鏈哄懡浠や笅鍙戝け璐ワ紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command)); - return false; - } - - liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING); - News.info("鎻愬崌鏈哄懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command)); - - //灏嗘爣璁扮疆涓簍rue(闃叉閲嶅彂) - liftProtocol.setPakMk(true); - - //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘� - BasLiftOptService liftOptService = SpringUtils.getBean(BasLiftOptService.class); - if (liftOptService != null) { - short[] commandArr = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃 - BasLiftOpt opt = new BasLiftOpt( - redisCommand.getWrkNo().intValue(), - liftProtocol.getLiftNo().intValue(), - new Date(), - null, - null, - null, - JSON.toJSONString(command), - JSON.toJSONString(liftProtocol) - ); - opt.setDeviceWrk(command.getTaskNo().toString());//璁惧宸ヤ綔鍙� - liftOptService.insert(opt); - } - - //鏇存柊redis鏁版嵁 - //姝ュ簭澧炲姞 - commandStep++; - redisCommand.setCommandStep(commandStep); - //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); - -// //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚 -// if (commandStep < size - 1) { -// //鏇存柊redis鏁版嵁 -// //姝ュ簭澧炲姞 -// commandStep++; -// redisCommand.setCommandStep(commandStep); +//package com.zy.core.thread; +// +//import HslCommunication.Core.Types.OperateResult; +//import HslCommunication.Core.Types.OperateResultExOne; +//import HslCommunication.Profinet.Siemens.SiemensPLCS; +//import HslCommunication.Profinet.Siemens.SiemensS7Net; +//import com.alibaba.fastjson.JSON; +//import com.core.common.DateUtils; +//import com.core.common.SpringUtils; +//import com.core.exception.CoolException; +//import com.zy.asrs.entity.BasLift; +//import com.zy.asrs.entity.BasLiftOpt; +//import com.zy.asrs.entity.DeviceDataLog; +//import com.zy.asrs.mapper.WrkMastMapper; +//import com.zy.asrs.service.BasLiftOptService; +//import com.zy.asrs.service.BasLiftService; +//import com.zy.asrs.service.DeviceDataLogService; +//import com.zy.asrs.utils.Utils; +//import com.zy.common.utils.RedisUtil; +//import com.zy.core.News; +//import com.zy.core.ThreadHandler; +//import com.zy.core.cache.MessageQueue; +//import com.zy.core.cache.OutputQueue; +//import com.zy.core.enums.*; +//import com.zy.core.model.LiftSlave; +//import com.zy.core.model.Task; +//import com.zy.core.model.command.*; +//import com.zy.core.model.protocol.LiftStaProtocol; +//import com.zy.core.model.protocol.LiftProtocol; +//import com.zy.core.model.protocol.StaProtocol; +//import lombok.Data; +//import lombok.extern.slf4j.Slf4j; +// +//import java.text.MessageFormat; +//import java.util.*; +// +///** +// * 鎻愬崌鏈虹嚎绋� +// */ +//@Data +//@Slf4j +//public class LiftThread implements Runnable, ThreadHandler { +// +// private SiemensS7Net siemensS7Net; +// private LiftSlave slave; +// private LiftProtocol liftProtocol; +// private RedisUtil redisUtil; +// private List<LiftStaProtocol> liftStaProtocols = new ArrayList<>(); +// +// public LiftThread(LiftSlave slave,RedisUtil redisUtil) { +// this.slave = slave; +// this.redisUtil = redisUtil; +// +// //鍒濆鍖栫珯鐐� +// for (LiftSlave.Sta sta : this.slave.getSta()) { +// LiftStaProtocol liftStaProtocol = new LiftStaProtocol(); +// liftStaProtocol.setStaNo(sta.getStaNo());//绔欑偣鍙� +// liftStaProtocol.setLev(sta.getLev());//绔欑偣妤煎眰 +// String locNo = Utils.getLocNo(this.slave.getStaRow(), this.slave.getStaBay(), sta.getLev()); +// liftStaProtocol.setLocNo(locNo);//绔欑偣搴撲綅鍙� +// liftStaProtocol.setLiftNo(sta.getLiftNo());//鎻愬崌鏈哄彿 +// liftStaProtocols.add(liftStaProtocol); +// } +// +// } +// +// @Override +// public void run() { +// this.connect(); +// while (true) { +// try { +// int step = 1; +// Task task = MessageQueue.poll(SlaveType.Lift, slave.getId()); +// if (task != null) { +// step = task.getStep(); +// } +// switch (step) { +// // 璇绘暟鎹� +// case 1: +// read(); +// break; +// // 鍐欏叆鏁版嵁 +// case 2: +// write((NyLiftCommand) task.getData()); +// break; +// //鍒嗛厤浠诲姟 +// case 3: +// assignWork((LiftAssignCommand) task.getData()); +// break; +// case 4: +// write2((HashMap<String, Object>) task.getData()); +// default: +// break; +// } +// Thread.sleep(500); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// } +// +// @Override +// public boolean connect() { +// boolean result = false; +// //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------// +// siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp()); +// OperateResult connect = siemensS7Net.ConnectServer(); +// if(connect.IsSuccess){ +// result = true; +// OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戞彁鍗囨満plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); +// log.info("鎻愬崌鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort()); +// } else { +// OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); +// log.error("鎻愬崌鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort()); +// } +// siemensS7Net.ConnectClose(); +// //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------// +// return result; +// } +// +// @Override +// public void close() { +// siemensS7Net.ConnectClose(); +// } +// +// private void read() { +// try { +// readStatus(); +// +// //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓篺alse +// if (liftProtocol.getBusy()) { +// liftProtocol.setPakMk(false); +// } +// +// //鎻愬崌鏈哄浜庢湭杩愯銆佸氨缁�佹爣璁皌rue銆佹湁浠诲姟鍙� +// if (!liftProtocol.getBusy() +// && !liftProtocol.getPakMk() +// && liftProtocol.getTaskNo() != 0) { +// //杩樻湁鏈畬鎴愮殑鍛戒护 +// executeWork(liftProtocol.getTaskNo()); +// } +// } catch (Exception e) { +// OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); +// } +// } +// +// private void readStatus() { +// try { +// //鑾峰彇鎻愬崌鏈烘暟鎹� +// OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB82.4.0", (short) 10); +// if (result1.IsSuccess) { +// if (null == liftProtocol) { +// liftProtocol = new LiftProtocol(); +// liftProtocol.setLiftNo(slave.getId().shortValue()); +// } +// //璇诲彇4.0-4.7鏁版嵁 +// boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result1.Content, 0, 1); +// //璇诲彇5.0-5.7鏁版嵁 +// boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result1.Content, 1, 1); +// //妯″紡 +// liftProtocol.setModel(status1[0]); +// //蹇欓棽 +// liftProtocol.setBusy(!status1[1]); +// //鍓嶈秴闄� +// liftProtocol.setFrontOverrun(status1[4]); +// //鍚庤秴闄� +// liftProtocol.setBackOverrun(status1[5]); +// //宸﹁秴闄� +// liftProtocol.setLeftOverrun(status1[6]); +// //鍙宠秴闄� +// liftProtocol.setRightOverrun(status1[7]); +// //瓒呴珮 +// liftProtocol.setOverHeight(status2[0]); +// //瓒呴噸 +// liftProtocol.setOverWeight(status2[1]); +// //鏈夋墭鐩� +// liftProtocol.setHasTray(status2[5]); +// //鏈夊皬杞� +// liftProtocol.setHasCar(status2[6]); +// //璁惧鏁呴殰 +// liftProtocol.setDeviceError(status2[7]); +// //浠诲姟鍙� +// liftProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 2)); +// //鐩殑鍦板潃 +// liftProtocol.setDistAddress(siemensS7Net.getByteTransform().TransInt16(result1.Content, 4)); +// //宸插畬鎴愪换鍔″彿 +// liftProtocol.setCompleteTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 6)); +// //褰撳墠妤煎眰 +// short lev = siemensS7Net.getByteTransform().TransInt16(result1.Content, 8); +// if (lev >= 7 && lev <= 9) { +// lev -= 2; +// } else if (lev >= 12 && lev <= 14) { +// lev -= 4; +// } +// liftProtocol.setLev(lev); +// +// //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴� +// BasLiftService liftService = SpringUtils.getBean(BasLiftService.class); +// BasLift basLift = liftService.selectById(liftProtocol.getLiftNo()); +// if (basLift == null) { +// basLift = new BasLift(); +// //鎻愬崌鏈哄彿 +// basLift.setLiftNo(slave.getId()); +// liftService.insert(basLift); +// } +// basLift.setStatus(liftProtocol.getProtocolStatus()); +// basLift.setWrkNo(liftProtocol.getTaskNo().intValue()); +// basLift.setUpdateTime(new Date()); +// basLift.setPakMk(liftProtocol.getPakMk()); +// basLift.setDeviceStatus(JSON.toJSONString(liftProtocol)); +// if (liftService.updateById(basLift)) { +// OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); +//// log.info(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); +// } +// }else { +// OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆憑1}鎻愬崌鏈簆lc鐘舵�佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId())); +// throw new CoolException(MessageFormat.format( "鎻愬崌鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort())); +// } +// Thread.sleep(200); +// +// //鑾峰彇鎻愬崌鏈虹珯鐐规暟鎹� +// OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB82.14.0", (short) (10 * liftStaProtocols.size())); +// if (result1.IsSuccess) { +// for (int i = 0; i < slave.getSta().size(); i++) { +// LiftStaProtocol liftStaProtocol = liftStaProtocols.get(i); +// int i1 = 0 + (i * 10); +// int i2 = 1 + (i * 10); +// //璇诲彇x4.0-x4.7鏁版嵁 +// boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result2.Content, i1, 1); +// //璇诲彇x5.0-x5.7鏁版嵁 +// boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result2.Content, i2, 1); +// //妯″紡 +// liftStaProtocol.setModel(status1[0]); +// //蹇欓棽 +// liftStaProtocol.setBusy(!status1[1]); +// //鏈夋墭鐩� +// liftStaProtocol.setHasTray(status1[2]); +// //鏈夊皬杞� +// liftStaProtocol.setHasCar(status2[6]); +// //璁惧鏁呴殰 +// liftStaProtocol.setDeviceError(status2[7]); +// //浠诲姟鍙� +// liftStaProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result2.Content, 2)); +// } +// } +// +// Thread.sleep(100); +// //鑾峰彇鎻愬崌鏈哄紓甯告暟鎹� +// OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB82.22.0", (short) 2); +// if (result3.IsSuccess) { +// liftProtocol.setErrorCode(siemensS7Net.getByteTransform().TransInt16(result3.Content, 0));//閿欒鐮� +// } +// +// if (System.currentTimeMillis() - liftProtocol.getDeviceDataLog() > 1000 * 5) { +// //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰� +// //淇濆瓨鏁版嵁璁板綍 +// DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class); +// DeviceDataLog deviceDataLog = new DeviceDataLog(); +// deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result1.Content)); +// deviceDataLog.setWcsData(JSON.toJSONString(liftProtocol)); +// deviceDataLog.setType("lift"); +// deviceDataLog.setDeviceNo(liftProtocol.getLiftNo().intValue()); +// deviceDataLog.setCreateTime(new Date()); +// deviceDataLogService.insert(deviceDataLog); +// +// //鏇存柊閲囬泦鏃堕棿 +// liftProtocol.setDeviceDataLog(System.currentTimeMillis()); +// } +// +// } catch (Exception e) { +// OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); +// } +// } +// +// private boolean write(NyLiftCommand command){ +// if (null == command) { +// News.error("鎻愬崌鏈哄啓鍏ュ懡浠や负绌�"); +// return false; +// } +// +// command.setLiftNo(slave.getId().shortValue()); +// short[] array = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃 +// +// OperateResult result = siemensS7Net.Write("DB83.0", array); +// if (result != null && result.IsSuccess) { +// liftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 +// News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); +// OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); +// return true; +// } else { +// OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戝啓鍏ユ彁鍗囨満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}],娆℃暟锛歿}", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); +// News.error("鍐欏叆鎻愬崌鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); +// return false; +// } +// } +// +// //鑾峰彇鍛戒护鎶ユ枃 +// private short[] getCommandArr(NyLiftCommand command) { +// // 寮�濮嬩换鍔� +// short[] array = new short[4]; +// if (command.getTaskModel() != null) { +// //浠诲姟绫诲瀷 +// array[0] = command.getTaskModel(); +// } +// if (command.getSourceSta() != null) { +// //婧愮珯鍙扮紪鍙� +// array[1] = command.getSourceSta(); +// } +// if (command.getTargetSta() != null) { +// //鐩爣绔欏彴缂栧彿 +// array[2] = command.getTargetSta(); +// } +// if (command.getTaskNo() != null) { +// //浠诲姟鍙� +// array[3] = command.getTaskNo(); +// } +// return array; +// } +// +// //鍒嗛厤浠诲姟 +// private void assignWork(LiftAssignCommand assignCommand) { +// LiftRedisCommand redisCommand = new LiftRedisCommand(); +// redisCommand.setLiftNo(assignCommand.getLiftNo());//鎻愬崌鏈哄彿 +// redisCommand.setWrkNo(assignCommand.getTaskNo());//宸ヤ綔鍙� +// redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭 +// redisCommand.setAssignCommand(assignCommand);//鍛戒护 +// //浠诲姟鏁版嵁淇濆瓨鍒皉edis +// redisUtil.set(RedisKeyType.LIFT.key + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand)); +// liftProtocol.setAssignCommand(assignCommand); +// liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING); +// //鎵ц涓嬪彂浠诲姟 +// executeWork(assignCommand.getTaskNo()); +// } +// +// //鎵ц浠诲姟 +// private boolean executeWork(Short wrkNo) { +// //璇诲彇redis鏁版嵁 +// if (wrkNo == null) { +// return false; +// } +// +// if (wrkNo >= 20000 && wrkNo <= 30000) { +// //鎻愬崌鏈鸿澶囧伐浣滃彿锛岄渶瑕佹煡璇㈠搴斾换鍔″彿 +// BasLiftOptService basLiftOptService = SpringUtils.getBean(BasLiftOptService.class); +// BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(liftProtocol.getTaskNo().toString(), liftProtocol.getLiftNo().intValue()); +// if (basLiftOpt != null) { +// wrkNo = basLiftOpt.getWrkNo().shortValue(); +// } +// } +// +// Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); +// if (o == null) { +// return false; +// } +// LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class); +// List<NyLiftCommand> commands = redisCommand.getAssignCommand().getCommands(); +// //褰撳墠姝ュ簭 +// int commandStep = redisCommand.getCommandStep(); +// //鎬绘搴� +// int size = commands.size(); +// +// if (!redisCommand.getLiftNo().equals(liftProtocol.getLiftNo())) { +// return false; +// } +// +// if (commandStep != 0) { +// //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀仛瀹� +// NyLiftCommand lastCommand = commands.get(commandStep - 1);//涓婁竴鏉℃寚浠� +// if (!liftProtocol.getBusy() && liftProtocol.getTaskNo().equals(lastCommand.getTaskNo())) { +// //鎻愬崌鏈虹┖闂层�佷笖鎻愬崌鏈哄伐浣滃彿涓庝笂涓�鏉℃寚浠ゅ伐浣滃彿鐩稿悓 +// lastCommand.setComplete(true);//鏍囪浠诲姟瀹屾垚 +// } +// // //浠诲姟鏁版嵁淇濆瓨鍒皉edis // redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); -// }else { -// //宸叉墽琛屽畬鎴� -// //鍒犻櫎redis -// redisUtil.del(RedisKeyType.LIFT.key + redisCommand.getWrkNo()); // -// //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting -// liftProtocol.setProtocolStatus(LiftProtocolStatusType.WAITING); -// News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command)); +// if (!lastCommand.getComplete()) { +// //涓婁竴鏉′换鍔℃湭瀹屾垚锛岀姝笅鍙戝懡浠� +// return false; +// } +// +// //鍒ゆ柇鏄惁涓烘渶鍚庝竴鏉″懡浠や笖鍛戒护鎵ц瀹屾垚锛屾姏鍑虹瓑寰呯‘璁ょ姸鎬� +// NyLiftCommand endCommand = commands.get(commands.size() - 1); +// if (endCommand.getComplete()) { +// //宸叉墽琛屽畬鎴� +// //鍒犻櫎redis +// redisUtil.del(RedisKeyType.LIFT.key + redisCommand.getWrkNo()); +// +// //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting +// liftProtocol.setProtocolStatus(LiftProtocolStatusType.WAITING); +// News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愭墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", redisCommand.getLiftNo(), JSON.toJSON(redisCommand)); +// } +// // } - - if (redisCommand.getAssignCommand().getTaskMode() == NyLiftTaskModelType.RESET.id.shortValue()) { - //澶嶄綅鍛戒护 - //宸ヤ綔鍙锋竻闆� - liftProtocol.setTaskNo((short) 0); - //浠ょ墝娓呴浂 - liftProtocol.setToken(0); - //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵�� - liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); - //浠诲姟鎸囦护娓呴浂 - liftProtocol.setAssignCommand(null); - } - - return true; - } - - //缁欐彁鍗囨満鍐欏叆杩涘嚭鐘舵�� - private void write2(HashMap<String,Object> data) { -// //鍑� -// status = true; -// //杩� -// status = false; - int lev = Integer.parseInt(data.get("lev").toString()); - boolean status = Boolean.parseBoolean(data.get("status").toString()); - - ArrayList<String> list = new ArrayList<String>(){{ - add("83.8.0"); - add("83.8.1"); - add("83.8.2"); - add("83.8.3"); - add("83.8.4"); - add("83.8.5"); - add("83.8.6"); - add("83.8.7"); - add("83.9.0"); - add("83.9.1"); - }}; - OperateResult result = siemensS7Net.Write("DB" + list.get(lev - 1), status); - if (result != null && result.IsSuccess) { - News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}]", slave.getId()); - } else { - News.error("鍐欏叆鎻愬崌鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - } - } - - /******************************************************************************************/ - /**************************************** 娴嬭瘯涓撶敤 *****************************************/ - /*****************************************************************************************/ - public static void main(String[] args) throws InterruptedException { - LiftSlave slave = new LiftSlave(); - slave.setId(1); - slave.setIp("192.168.4.24"); - slave.setPort(502); -// LiftThread thread = new LiftThread(slave,); -// thread.connect(); -// thread.readStatus(); // -// LiftCommand command = new LiftCommand(); -// command.setRun((short) 1); -// command.setDistPosition((short) 12); -// command.setSpeed((short) 300); -// command.setHeight2((short) 100); -// command.setHeight3((short) 200); -// command.setHeight4((short) 303); -// command.setLiftLock(true); -// thread.write(command); - - } - -} +// //鍙栧嚭鍛戒护 +// NyLiftCommand command = commands.get(commandStep); +// +// //涓嬪彂鍛戒护 +// if (!write(command)) { +// News.error("鎻愬崌鏈哄懡浠や笅鍙戝け璐ワ紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command)); +// return false; +// } +// +// liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING); +// News.info("鎻愬崌鏈哄懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command)); +// +// //灏嗘爣璁扮疆涓簍rue(闃叉閲嶅彂) +// liftProtocol.setPakMk(true); +// +// //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘� +// BasLiftOptService liftOptService = SpringUtils.getBean(BasLiftOptService.class); +// if (liftOptService != null) { +// short[] commandArr = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃 +// BasLiftOpt opt = new BasLiftOpt( +// redisCommand.getWrkNo().intValue(), +// liftProtocol.getLiftNo().intValue(), +// new Date(), +// null, +// null, +// null, +// JSON.toJSONString(command), +// JSON.toJSONString(liftProtocol) +// ); +// opt.setDeviceWrk(command.getTaskNo().toString());//璁惧宸ヤ綔鍙� +// liftOptService.insert(opt); +// } +// +// //鏇存柊redis鏁版嵁 +// //姝ュ簭澧炲姞 +// commandStep++; +// redisCommand.setCommandStep(commandStep); +// //浠诲姟鏁版嵁淇濆瓨鍒皉edis +// redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); +// +//// //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚 +//// if (commandStep < size - 1) { +//// //鏇存柊redis鏁版嵁 +//// //姝ュ簭澧炲姞 +//// commandStep++; +//// redisCommand.setCommandStep(commandStep); +//// //浠诲姟鏁版嵁淇濆瓨鍒皉edis +//// redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); +//// }else { +//// //宸叉墽琛屽畬鎴� +//// //鍒犻櫎redis +//// redisUtil.del(RedisKeyType.LIFT.key + redisCommand.getWrkNo()); +//// +//// //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting +//// liftProtocol.setProtocolStatus(LiftProtocolStatusType.WAITING); +//// News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command)); +//// } +// +// if (redisCommand.getAssignCommand().getTaskMode() == NyLiftTaskModelType.RESET.id.shortValue()) { +// //澶嶄綅鍛戒护 +// //宸ヤ綔鍙锋竻闆� +// liftProtocol.setTaskNo((short) 0); +// //浠ょ墝娓呴浂 +// liftProtocol.setToken(0); +// //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵�� +// liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); +// //浠诲姟鎸囦护娓呴浂 +// liftProtocol.setAssignCommand(null); +// } +// +// return true; +// } +// +// //缁欐彁鍗囨満鍐欏叆杩涘嚭鐘舵�� +// private void write2(HashMap<String,Object> data) { +//// //鍑� +//// status = true; +//// //杩� +//// status = false; +// int lev = Integer.parseInt(data.get("lev").toString()); +// boolean status = Boolean.parseBoolean(data.get("status").toString()); +// +// ArrayList<String> list = new ArrayList<String>(){{ +// add("83.8.0"); +// add("83.8.1"); +// add("83.8.2"); +// add("83.8.3"); +// add("83.8.4"); +// add("83.8.5"); +// add("83.8.6"); +// add("83.8.7"); +// add("83.9.0"); +// add("83.9.1"); +// }}; +// OperateResult result = siemensS7Net.Write("DB" + list.get(lev - 1), status); +// if (result != null && result.IsSuccess) { +// News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}]", slave.getId()); +// } else { +// News.error("鍐欏叆鎻愬崌鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); +// } +// } +// +// /******************************************************************************************/ +// /**************************************** 娴嬭瘯涓撶敤 *****************************************/ +// /*****************************************************************************************/ +// public static void main(String[] args) throws InterruptedException { +// LiftSlave slave = new LiftSlave(); +// slave.setId(1); +// slave.setIp("192.168.4.24"); +// slave.setPort(502); +//// LiftThread thread = new LiftThread(slave,); +//// thread.connect(); +//// thread.readStatus(); +//// +//// LiftCommand command = new LiftCommand(); +//// command.setRun((short) 1); +//// command.setDistPosition((short) 12); +//// command.setSpeed((short) 300); +//// command.setHeight2((short) 100); +//// command.setHeight3((short) 200); +//// command.setHeight4((short) 303); +//// command.setLiftLock(true); +//// thread.write(command); +// +// } +// +//} diff --git a/src/main/java/com/zy/core/thread/NyShuttleThread.java b/src/main/java/com/zy/core/thread/NyShuttleThread.java deleted file mode 100644 index f7dc6fe..0000000 --- a/src/main/java/com/zy/core/thread/NyShuttleThread.java +++ /dev/null @@ -1,899 +0,0 @@ -package com.zy.core.thread; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.core.common.DateUtils; -import com.core.common.SpringUtils; -import com.zy.asrs.entity.*; -import com.zy.asrs.mapper.WrkMastMapper; -import com.zy.asrs.service.*; - -import com.zy.asrs.utils.Utils; -import com.zy.common.model.NavigateNode; -import com.zy.common.service.CommonService; -import com.zy.common.utils.*; -import com.zy.core.News; -import com.zy.core.ThreadHandler; -import com.zy.core.cache.MessageQueue; -import com.zy.core.cache.OutputQueue; -import com.zy.core.cache.SlaveConnection; -import com.zy.core.enums.*; -import com.zy.core.model.LiftSlave; -import com.zy.core.model.ShuttleSlave; -import com.zy.core.model.Task; -import com.zy.core.model.command.*; -import com.zy.core.model.protocol.LiftProtocol; -import com.zy.core.model.protocol.NyShuttleProtocol; -import com.zy.core.properties.SlaveProperties; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; - -import java.io.IOException; -import java.net.Socket; -import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -/** - * 鐗涚溂鍥涘悜绌挎杞︾嚎绋� - */ -@Data -@Slf4j -public class NyShuttleThread implements Runnable, ThreadHandler { - - private ShuttleSlave slave; - private NyShuttleProtocol shuttleProtocol; - private RedisUtil redisUtil; - private Socket socket; - - public NyShuttleThread(ShuttleSlave slave,RedisUtil redisUtil) { - this.slave = slave; - this.redisUtil = redisUtil; - } - - @Override - public void run() { - this.connect(); - while (true) { - try { - int step = 1; - Task task = MessageQueue.poll(SlaveType.Shuttle, slave.getId()); - if (task != null) { - step = task.getStep(); - } - switch (step) { - // 璇绘暟鎹� - case 1: - read(); - break; -// // 鍐欏叆鏁版嵁 -// case 2: -// write((NyShuttleHttpCommand) task.getData()); -// break; - //涓嬪彂浠诲姟 - case 3: - assignWork((ShuttleAssignCommand) task.getData()); - break; - default: - break; - } - Thread.sleep(500); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - private void read() { - try { - if (this.socket == null || this.socket.isClosed()) { - //閾炬帴鏂紑閲嶆柊閾炬帴 - this.connect(); - } - readStatus(); - //鍥涘悜绌挎杞︾┖闂层�佹湁浠诲姟銆佹爣璁颁负true銆佸瓨鍦ㄤ换鍔℃寚浠わ紝闇�瑕佹墽琛屼换鍔$殑涓嬩竴鏉℃寚浠� - if (shuttleProtocol.getFree() == ShuttleStatusType.IDLE.id - && shuttleProtocol.getTaskNo() != 0 - && !shuttleProtocol.getPakMk()) { - //鎵ц涓嬩竴姝ユ寚浠� - executeWork(shuttleProtocol.getTaskNo().shortValue()); - } - - //灏忚溅绌洪棽涓旀湁璺戝簱绋嬪簭 - if (shuttleProtocol.isIdle() && shuttleProtocol.getMoveLoc()) { - moveLoc(); - } - } catch (Exception e) { - e.printStackTrace(); - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - } - } - - private void readStatus() { - try { - //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�----------- - NyShuttleHttpCommand readStatusCommand = NyHttpUtils.getReadStatusCommand(slave.getId()); - JSONObject jsonObject = NyHttpUtils.requestCommand(socket, readStatusCommand); - if (jsonObject == null) { - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE); - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - }else { - //鎵嬪姩鐘舵��/鑷姩鐘舵�� - shuttleProtocol.setWorkingMode(jsonObject.getInteger("workingMode")); - //鍏佽鐘舵�� 0:杩愯涓�1锛氱┖闂� - shuttleProtocol.setFree(jsonObject.getInteger("free")); - //褰撳墠閫熷害 - shuttleProtocol.setSpeed(jsonObject.getInteger("speed")); - //璐熻浇鐘舵�� - shuttleProtocol.setLoadState(jsonObject.getInteger("loadState")); - //绠″埗鐘舵�� - shuttleProtocol.setSuspendState(jsonObject.getInteger("suspendState")); - //椤跺崌浣嶇疆 - shuttleProtocol.setLiftPosition(jsonObject.getInteger("liftPosition")); - //杩愯鏂瑰悜 - shuttleProtocol.setRunDir(jsonObject.getInteger("runDir")); - //杩愯鏂瑰悜 - shuttleProtocol.setRunDir2(jsonObject.getInteger("runDir2")); - //鍏呯數鐘舵�� - shuttleProtocol.setChargState(jsonObject.getInteger("chargState")); - //鐢垫睜鐢甸噺 - shuttleProtocol.setPowerPercent(jsonObject.getInteger("powerPercent")); - //鏈�楂樼數鑺數鍘�(mV) - shuttleProtocol.setMaxCellVoltage(jsonObject.getInteger("maxCellVoltage")); - //鏈�浣庣數鑺數鍘�(mV) - shuttleProtocol.setMinCellVoltage(jsonObject.getInteger("minCellVoltage")); - //鐢垫睜鐢靛帇 - shuttleProtocol.setVoltage(jsonObject.getInteger("voltage")); - //鍏呮斁鐢靛惊鐜鏁� - shuttleProtocol.setChargeCycleTimes(jsonObject.getInteger("chargeCycleTimes")); - //鍓╀綑鐢甸噺 - shuttleProtocol.setSurplusQuantity(jsonObject.getInteger("surplusQuantity")); - //鎬荤數閲� - shuttleProtocol.setCountQuantity(jsonObject.getInteger("countQuantity")); - //瀹為檯搴撲綅xyz - shuttleProtocol.setPoint(jsonObject.getObject("point", NyShuttleProtocol.NyShuttlePointClass.class)); - //瀹為檯鍧愭爣xyz - shuttleProtocol.setCoord(jsonObject.getObject("coord", NyShuttleProtocol.NyShuttlePointClass.class)); - //浠诲姟鐩殑搴撲綅 - shuttleProtocol.setTask(jsonObject.getObject("task", NyShuttleProtocol.TaskClass.class)); - //浠诲姟鐘舵�� - shuttleProtocol.setTaskState(jsonObject.getInteger("taskState")); - //鏁呴殰鐘舵�� - shuttleProtocol.setErrState(jsonObject.getInteger("errState")); - ArrayList<Integer> errCode = new ArrayList<>(); - for (Object o : jsonObject.getJSONArray("errCode")) { - errCode.add(Integer.parseInt(o.toString())); - } - //鏁呴殰鐮� - shuttleProtocol.setErrCode(errCode.get(0)); - //鎬婚噷绋嬫暟 - shuttleProtocol.setStatusSum(jsonObject.getObject("statusSum", NyShuttleProtocol.StatusSumClass.class)); - //闈炶嚜鍔ㄧ姸鎬佹椂闂磋鏃� - shuttleProtocol.setErrTime(jsonObject.getInteger("errTime")); - //鏈�杩戜竴娆″湪绾挎椂闂� - shuttleProtocol.setLastOnlineTime(System.currentTimeMillis()); - - //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓篺alse - if (shuttleProtocol.getFree() == 0) { - shuttleProtocol.setPakMk(false); - } - - //灏嗗洓鍚戠┛姊溅鐘舵�佷繚瀛樿嚦鏁版嵁搴� - BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class); - BasShuttle basShuttle = shuttleService.selectById(slave.getId()); - if (basShuttle == null) { - basShuttle = new BasShuttle(); - //鍥涘悜绌挎杞﹀彿 - basShuttle.setShuttleNo(slave.getId()); - shuttleService.insert(basShuttle); - } - //浠诲姟鍙� - basShuttle.setWrkNo(shuttleProtocol.getTaskNo().intValue()); - //淇敼鏃堕棿 - basShuttle.setUpdateTime(new Date()); - //浣滀笟鏍囪 - basShuttle.setPakMk(shuttleProtocol.getPakMk()); - basShuttle.setDeviceStatus(JSON.toJSONString(basShuttle)); - if (shuttleService.updateById(basShuttle)) { - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); -// log.info(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); - } -// log.warn(JSON.toJSONString(shuttleProtocol));//杈撳嚭灏忚溅鐘舵�� - - if (System.currentTimeMillis() - shuttleProtocol.getDeviceDataLog() > 1000 * 5) { - //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰� - //淇濆瓨鏁版嵁璁板綍 - DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class); - DeviceDataLog deviceDataLog = new DeviceDataLog(); - deviceDataLog.setOriginData(JSON.toJSONString(jsonObject)); - deviceDataLog.setWcsData(JSON.toJSONString(shuttleProtocol)); - deviceDataLog.setType("shuttle"); - deviceDataLog.setDeviceNo(shuttleProtocol.getShuttleNo().intValue()); - deviceDataLog.setCreateTime(new Date()); - deviceDataLogService.insert(deviceDataLog); - - //鏇存柊閲囬泦鏃堕棿 - shuttleProtocol.setDeviceDataLog(System.currentTimeMillis()); - } - } - } catch (Exception e) { - e.printStackTrace(); - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - try { - this.socket.close(); - this.socket = null; - Thread.sleep(1000); - this.connect(); - } catch (IOException | InterruptedException exception) { - e.printStackTrace(); - } - } - } - - @Override - public boolean connect() { - try { - Socket socket = new Socket(slave.getIp(),slave.getPort()); - socket.setSoTimeout(60000); - socket.setKeepAlive(true); - this.socket = socket; - if (null == shuttleProtocol) { - shuttleProtocol = new NyShuttleProtocol(); - shuttleProtocol.setShuttleNo(slave.getId().shortValue()); - } - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); - log.info(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - } catch (IOException e) { - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - } - return true; - } - - @Override - public void close() { - - } - - private boolean write(NyShuttleHttpCommand command, ShuttleAssignCommand assignCommand) { - if (null == command) { - News.error("鍥涘悜绌挎杞﹀啓鍏ュ懡浠や负绌�"); - return false; - } - BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class); - if (shuttleService == null) { - News.error("绯荤粺閿欒"); - return false; - } - - BasShuttle basShuttle = shuttleService.selectById(slave.getId().shortValue()); - if (basShuttle == null) { - News.error("鍥涘悜绌挎杞︿笉瀛樺湪"); - return false; - } - - //鍙戝嚭璇锋眰 - JSONObject result = null; - try { - result = NyHttpUtils.requestCommand(socket, command); - } catch (IOException e) { - try { - this.socket.close(); - this.socket = null; - Thread.sleep(1000); - this.connect(); - } catch (IOException exception) { - exception.printStackTrace(); - } catch (InterruptedException ex) { - throw new RuntimeException(ex); - } - } - - //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘� - BasShuttleOptService shuttleOptService = SpringUtils.getBean(BasShuttleOptService.class); - BasShuttleOpt opt = null; - if (shuttleOptService != null) { - opt = new BasShuttleOpt( - assignCommand.getTaskNo().intValue(), - assignCommand.getShuttleNo().intValue(), - new Date(), - ShuttleTaskModeType.get(assignCommand.getTaskMode()).desc, - assignCommand.getSourceLocNo(), - assignCommand.getLocNo(), - null, - null, - null, - JSON.toJSONString(command), - null, - JSON.toJSONString(shuttleProtocol) - ); - opt.setSend(1);//宸蹭笅鍙� - opt.setResponse(JSON.toJSONString(result));//璇锋眰鍝嶅簲 - opt.setDeviceWrk(command.getWrkNo().toString());//璁惧宸ヤ綔鍙� - shuttleOptService.insert(opt); - } - - if (result == null) { - return false;//璇锋眰澶辫触 - } - - shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 - - return true; - } - - //鍒嗛厤浠诲姟 - private void assignWork(ShuttleAssignCommand assignCommand) { - ShuttleRedisCommand redisCommand = new ShuttleRedisCommand(); - redisCommand.setShuttleNo(assignCommand.getShuttleNo());//鍥涘悜绌挎杞﹀彿 - redisCommand.setWrkNo(assignCommand.getTaskNo());//宸ヤ綔鍙� - redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭 - redisCommand.setAssignCommand(assignCommand);//鍛戒护 - shuttleProtocol.setTaskNo(assignCommand.getTaskNo().intValue()); - shuttleProtocol.setAssignCommand(assignCommand); - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING); - //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set(RedisKeyType.SHUTTLE.key + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand)); - //鎵ц涓嬪彂浠诲姟 - executeWork(assignCommand.getTaskNo()); - } - - //鎵ц涓嬪彂鐨勬寚浠� - private boolean executeWork(Short wrkNo) { - //璇诲彇redis鏁版嵁 - if (wrkNo == null) { - return false; - } - - NavigateMapUtils navigateMapUtils = SpringUtils.getBean(NavigateMapUtils.class); - WrkMastMapper wrkMastMapper = SpringUtils.getBean(WrkMastMapper.class); - WrkMast wrkMast = wrkMastMapper.selectByWorkNo(wrkNo.intValue()); - - Object o = redisUtil.get(RedisKeyType.SHUTTLE.key + wrkNo); - if (o == null) { - return false; - } - - ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); - ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); - List<NyShuttleHttpCommand> commands = redisCommand.getAssignCommand().getCommands(); - //褰撳墠姝ュ簭 - int commandStep = redisCommand.getCommandStep(); - if (commands.size() == 0) { - return false; - } - - checkIOSta(commands, commandStep);//妫�娴嬪皬杞︽槸鍚﹁繘鍑烘彁鍗囨満杈撻�佺珯 - - boolean isLock = false;//鏄惁瑙i攣璺緞 - //鍙栧嚭鍛戒护 - NyShuttleHttpCommand command = null; - if (commandStep < commands.size()) { - command = commands.get(commandStep);//褰撳墠鍛戒护 - } - if (commandStep != 0) { - //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀畬鎴� - NyShuttleHttpCommand lastCommand = commands.get(commandStep - 1); - String requestType = lastCommand.getRequest().getBody().get("requestType").toString(); - if (requestType.equals("move") || requestType.equals("intoLift") || requestType.equals("outLift")) { - //绉诲姩鍛戒护銆佸嚭鍏ユ彁鍗囨満鍛戒护 - NyShuttleProtocol.NyShuttlePointClass target = JSON.parseObject(lastCommand.getRequest().getBody().get("target").toString(), NyShuttleProtocol.NyShuttlePointClass.class); - if (shuttleProtocol.getPoint().equals(target)) { - //涓婁竴鏉℃寚浠ょ殑鐩爣浣嶇疆鍜屽綋鍓嶅皬杞︿綅缃浉鍚岋紝鍒欒瀹氫笂涓�鏉′换鍔″畬鎴� - lastCommand.setComplete(true); - //瑙i攣閿佸畾璺緞锛屼笂涓�鏉¤矾寰� - List<NavigateNode> nodes = JSON.parseArray(JSON.toJSONString(lastCommand.getNodes()), NavigateNode.class);//杩涜娣卞害copy -// //瑙i攣褰撳墠璺緞 -// if (command != null && command.getNodes() != null) { -// nodes.addAll(command.getNodes()); -// } - if (nodes != null) { - NavigateNode targetNode = assignCommand.getNodes().get(assignCommand.getNodes().size() - 1);//鏈�缁堣妭鐐� - NavigateNode node = nodes.get(nodes.size() - 1); - if (!(targetNode.getX() == node.getX() && targetNode.getY() == node.getY())) { - nodes.remove(nodes.size() - 1);//鍓旈櫎灏捐妭鐐� - } - boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(shuttleProtocol.getCurrentLocNo()), shuttleProtocol.getShuttleNo().intValue(), nodes, false);//瑙i攣璺緞 - if (!result) { - return false;//瑙i攣澶辫触 - } - isLock = true;//瑙i攣杩囪矾寰� - } - } - }else { - lastCommand.setComplete(true);//鍏朵粬鍛戒护榛樿璁や负瀹屾垚 - } - //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set(RedisKeyType.SHUTTLE.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); - - if (!lastCommand.getComplete()) { - //涓婁竴鏉′换鍔℃湭瀹屾垚锛岀姝笅鍙戝懡浠� - return false; - } - - //鍒ゆ柇鏄惁涓烘渶鍚庝竴鏉″懡浠や笖鍛戒护鎵ц瀹屾垚锛屾姏鍑虹瓑寰呯‘璁ょ姸鎬� - NyShuttleHttpCommand endCommand = commands.get(commands.size() - 1); - if (endCommand.getComplete()) { - //鍒犻櫎redis - redisUtil.del(RedisKeyType.SHUTTLE.key + redisCommand.getWrkNo()); - - if (!assignCommand.getCharge()) { - //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); - }else { - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); - } - News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(commands)); - - return false;//绂佹鍐嶄笅鍙戝懡浠� - } - } - - List<NavigateNode> nextNodes = null;//涓嬩竴姝ュ懡浠よ璧拌矾寰� - if (commandStep + 1 < commands.size()) { - NyShuttleHttpCommand nextCommand = commands.get(commandStep + 1);//涓嬩竴姝ュ懡浠� - nextNodes = nextCommand.getNodes();//涓嬩竴姝ュ懡浠よ璧拌矾寰� - } - - if (shuttleProtocol.getFree() == ShuttleStatusType.BUSY.id) { - String requestType = command.getRequest().getBody().get("requestType").toString(); - //鍋滄鍏呯數 绠″埗鍛戒护 - if(!(requestType.equals("stopCharge") && shuttleProtocol.getChargState() == 1) && !requestType.equals("resume")){ - return false;//灏忚溅鐘舵�佸繖锛岀姝㈡墽琛屽懡浠� - } - } - -// //妫�娴嬪皬杞︽槸鍚﹁杩涙彁鍗囨満锛屽闇�瑕佽繘鎻愬崌鏈哄垯璋冨害鎻愬崌鏈� -// if (!checkLiftStation(wrkNo)) { -// return false; -// } - - //妫�娴嬬┛姊溅鏄惁鍦ㄦ彁鍗囨満鍐� - if (!checkShuttleInTheLift(wrkNo)) { - return false; - } - -// if (command.getRequest().getBody().get("requestType").equals("move")) { -// ArrayList<int[]> whiteList = new ArrayList<>();//璁剧疆鑺傜偣鐨勭櫧鍚嶅崟 -// if (wrkMast != null && ((wrkMast.getIoType() > 100 && wrkMast.getIoType() < 200) || wrkMast.getIoType() == 11)) { -// //鍑哄簱浠诲姟锛屼笉妫�娴嬮鑺傜偣 -// int[] startArr = NavigatePositionConvert.positionToXY(wrkMast.getSourceLocNo());//寮�濮嬭妭鐐� -// whiteList.add(startArr); -// } -// -// //瑙i攣杩囪矾寰勶紝鍙娴嬩笅涓�娈佃矾寰勬槸鍚﹀彲璧�(褰撳墠璺緞宸茬粡琚攣瀹氭棤闇�鍐嶆娴�) -// if (isLock) { -// //鍙娴嬩笅涓�娈佃矾寰勬槸鍚﹀彲璧�(褰撳墠璺緞宸茬粡琚攣瀹氭棤闇�鍐嶆娴�) -// //妫�娴嬭矾寰勬槸鍚﹀彲琛岃蛋 -// if (!checkPath(nextNodes == null ? command.getNodes() : nextNodes, null, whiteList)) { -// return false; -// } -// }else { -// //妫�娴嬪綋鍓嶈矾寰勫拰涓嬩竴娈佃矾寰� -// //妫�娴嬭矾寰勬槸鍚﹀彲琛岃蛋 -// if (!checkPath(command.getNodes(), nextNodes, whiteList)) { -// return false; -// } -// } -// -// //閿佸畾璺緞锛岄攣瀹氬綋鍓嶈矾寰勫拰涓嬩竴姝ヨ矾寰� -// List<NavigateNode> nodes = command.getNodes(); -// if (nextNodes != null) { -// nodes.addAll(nextNodes); -// } -// if (nodes != null) { -// boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(shuttleProtocol.getCurrentLocNo()), nodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� -// if (!result) { -// return false;//璺緞閿佸畾澶辫触 -// } -// } -// } - - //鍙墽琛屽懡浠� - if (!write(command, assignCommand)) { - News.error("鍥涘悜绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); - return false; - } - - News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戞垚鍔燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); - //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂) - shuttleProtocol.setPakMk(true); - - String requestType = command.getRequest().getBody().get("requestType").toString(); - if (requestType.equals("updateFloor")) { - //鏇存柊妤煎眰鍛戒护 - shuttleProtocol.setPakMk(false);//鎭㈠鏍囪 - } - - commandStep++; - //鏇存柊redis鏁版嵁 - redisCommand.setCommandStep(commandStep); - //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set(RedisKeyType.SHUTTLE.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); - - return true; - } - - //妫�娴嬪皬杞︽槸鍚﹁杩涙彁鍗囨満锛屽闇�瑕佽繘鎻愬崌鏈哄垯璋冨害鎻愬崌鏈� - private boolean checkLiftStation(Short wrkNo) { - //璇诲彇redis鏁版嵁 - if (wrkNo == null) { - return false; - } - - Object o = redisUtil.get(RedisKeyType.SHUTTLE.key + wrkNo); - if (o == null) { - return false; - } - - WrkMastMapper wrkMastMapper = SpringUtils.getBean(WrkMastMapper.class); - - ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); - //褰撳墠姝ュ簭 - int commandStep = redisCommand.getCommandStep(); - - //妫�娴嬫槸鍚﹀瓨鍦ㄦ彁鍗囨満鍙g殑鎸囦护 - List<NyShuttleHttpCommand> commands = redisCommand.getAssignCommand().getCommands(); - if (commands.isEmpty()) { - return false; - } - NyShuttleHttpCommand command = commands.get(commandStep);//褰撳墠鍛戒护 - if (!command.getMsgType().equals("intoLift")) { - return true;//涓嶆槸鍏ユ彁鍗囨満鍛戒护锛岀洿鎺ユ斁琛� - } - - //鑾峰彇璧风偣(杈撻�佺珯鐐�) - NyShuttleProtocol.NyShuttlePointClass start = JSON.parseObject(command.getRequest().getBody().get("start").toString(), NyShuttleProtocol.NyShuttlePointClass.class); - //灏嗙墰鐪煎潗鏍囪浆鎹㈡垚WCS搴撲綅鍙� - String startLocNo = NavigatePositionConvert.nyXyzToLocNo(start.getX(), start.getY(), start.getZ()); - - BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class); - BasDevp basDevp = basDevpService.queryByLocNo(startLocNo); - if (basDevp == null) { - return false;//鏌ヤ笉鍒扮珯鐐癸紝绂佹涓嬪彂 - } - - //鎷垮埌鎻愬崌鏈虹嚎绋� - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, basDevp.getLiftNo()); - if (liftThread == null) { - return false; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return false; - } - if (!liftProtocol.isIdle()) { - return false; - } - - if (liftProtocol.getLev().intValue() == Utils.getLev(shuttleProtocol.getCurrentLocNo())) { - return true;//鎻愬崌鏈鸿揪鍒板皬杞︽ゼ灞傦紝鏀捐 - } - - //鎼滅储鏄惁鏈夊叾浠栦换鍔″崰鐢ㄤ簡鎻愬崌鏈猴紝濡傛灉鍗犵敤鎻愬崌鏈虹殑浠诲姟鍜屽綋鍓嶄换鍔$浉鍚岋紝鍒欒繍琛屾墽琛� - WrkMast wrkMast1 = wrkMastMapper.selectLiftWrkMast(liftProtocol.getLiftNo().intValue()); - if (wrkMast1 != null && wrkMast1.getWrkNo() != wrkNo.intValue()) { - return false; - } - - //鎻愬崌鏈烘湭鍒拌揪灏忚溅妤煎眰锛屽懠鍙彁鍗囨満 - //鑾峰彇鎻愬崌鏈哄懡浠� - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, null, basDevp.getDevNo(), wrkNo.intValue()); - ArrayList<NyLiftCommand> liftCommands = new ArrayList<>(); - liftCommands.add(liftCommand); - - //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 - LiftAssignCommand assignCommand = new LiftAssignCommand(); - assignCommand.setCommands(liftCommands); - assignCommand.setLiftNo(liftProtocol.getLiftNo()); - assignCommand.setTaskNo(wrkNo); - assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_CAR.id.shortValue()); - - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); - - return false;//榛樿涓嶆斁琛� - } - - /** - * 妫�娴嬬┛姊溅鏄惁鍦ㄦ彁鍗囨満鍐� - * 濡傜┛姊溅鍦ㄦ彁鍗囨満鍐咃紝蹇呴』绛夊緟鎻愬崌鏈虹┖闂叉墠鍙墽琛岀┛姊溅鍛戒护 - */ - private boolean checkShuttleInTheLift(Short wrkNo) { - //璇诲彇redis鏁版嵁 - if (wrkNo == null) { - return false; - } - - Object o = redisUtil.get(RedisKeyType.SHUTTLE.key + wrkNo); - if (o == null) { - return false; - } - - SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class); - BasLiftService liftService = SpringUtils.getBean(BasLiftService.class); - for (LiftSlave liftSlave : slaveProperties.getLift()) { - BasLift basLift = liftService.selectById(liftSlave.getId()); - if (basLift == null) { - continue; - } - Integer liftX = basLift.getPoint$().getX(); - Integer liftY = basLift.getPoint$().getY(); - if (liftX.equals(shuttleProtocol.getPoint().getX()) && liftY.equals(shuttleProtocol.getPoint().getY())) { - //灏忚溅鍦ㄦ彁鍗囨満鍐� - //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂� - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); - if (liftThread == null) { - return false; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return false; - } - if (liftProtocol.isIdle()) { - //鎻愬崌鏈哄浜庣┖闂诧紝鏀捐 - return true; - } - }else { - return true;//涓嶅湪鎻愬崌鏈哄唴锛屾斁琛� - } - } - return false;//榛樿涓嶆斁琛� - } - - /** - * 妫�娴嬭矾寰勬槸鍚﹀彲琛岃蛋 - * 濡傛灉璺緞涓虹洰鏍囧簱浣嶏紝浣嗕笉鍙璧帮紝绯荤粺灏嗗皾璇曢噸鏂拌绠楄矾寰� - */ - private boolean checkPath(List<NavigateNode> currentNodes, List<NavigateNode> nextNodes, List<int[]> whitePoints) { - //妫�娴嬭矾寰勬槸鍚﹀彲琛岃蛋(妫�鏌ヨ矾寰勯攣瀹氱姸鎬侊紝妫�娴嬭矾寰勬槸鍚︽湁鍏朵粬灏忚溅) - //妫�娴嬪綋鍓嶈璧拌矾寰勶紝鍜屼笅涓�姝ヨ矾寰� - boolean checkPathIsAvailable = NavigateUtils.checkPathIsAvailable(currentNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), whitePoints); - if (nextNodes == null) { - if (checkPathIsAvailable) { - return true;//鍙璧� - } - return false; - }else { - boolean checkPathIsAvailable2 = NavigateUtils.checkPathIsAvailable(nextNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), whitePoints); - if (checkPathIsAvailable && checkPathIsAvailable2) { - return true;//鍙璧� - } - } - -// ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); -// NavigateNode currentTarget = currentNodes.get(currentNodes.size() - 1); -// String currentLocNo = NavigatePositionConvert.nodeToLocNo(currentTarget); -// NavigateNode nextTarget = nextNodes.get(nextNodes.size() - 1); -// String nextLocNo = NavigatePositionConvert.nodeToLocNo(nextTarget); -// if (assignCommand.getLocNo().equals(currentLocNo) || assignCommand.getLocNo().equals(nextLocNo)) { -// //褰撳墠璺緞鏈�鍚庝竴涓妭鐐规槸鐩爣搴撲綅锛岃繘琛岃矾寰勬娴嬶紝濡傛灉涓嶅彲琛岃蛋锛岄噸鏂拌绠楄矾寰� -// //涓嶅彲琛岃蛋锛岄噸鏂拌绠楄矾寰� -// NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getShuttleNo().intValue(), shuttleProtocol.getTaskNo(), shuttleProtocol.getCurrentLocNo(), assignCommand.getLocNo()); -// if (result == null) { -// return false;//璺緞璁$畻澶辫触锛屼笉鍙璧� -// } -// -// List<NyShuttleHttpCommand> newCommands = result.getCommands();//鏂拌矾寰� -// -// //褰撳墠姝ュ簭 -// int commandStep = redisCommand.getCommandStep(); -// List<NyShuttleHttpCommand> commands = assignCommand.getCommands(); -// -// commands.remove(commandStep);//绉婚櫎褰撳墠姝ュ簭鎸囦护 -// if (assignCommand.getLocNo().equals(currentLocNo)) { -// //褰撳墠璺緞锛岄渶瑕佸啀澶氱Щ闄や笅涓�姝ユ寚浠� -// commands.remove(commandStep + 1); -// } -// -// //灏嗘柊璺緞娣诲姞杩涙寚浠ら泦鍚� -// commands.addAll(commandStep, newCommands); -// assignCommand.setCommands(commands); -// redisCommand.setAssignCommand(assignCommand); -// //浠诲姟鏁版嵁淇濆瓨鍒皉edis -// redisUtil.set(RedisKeyType.SHUTTLE.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); -// return false;//褰撳墠涓嶅彲琛岃蛋锛岀瓑寰呬笅涓�娆℃墽琛岃蛋鏂拌矾寰� -// } - - return false;//涓嶅彲琛岃蛋 - } - - /** - * 璺戝簱绋嬪簭 - */ - private void moveLoc() { - LocMastService locMastService = SpringUtils.getBean(LocMastService.class); - ShuttleDispatchUtils shuttleDispatchUtils = SpringUtils.getBean(ShuttleDispatchUtils.class); - CommonService commonService = SpringUtils.getBean(CommonService.class); - WrkMastMapper wrkMastMapper = SpringUtils.getBean(WrkMastMapper.class); - int lev = Utils.getLev(shuttleProtocol.getCurrentLocNo());//灏忚溅褰撳墠妤煎眰 - if (!shuttleProtocol.isIdle()) { - return; - } - - WrkMast wrkMast = wrkMastMapper.selectShuttleHasMoveWorking(shuttleProtocol.getShuttleNo().intValue()); - if (wrkMast != null) { - return; - } - - if (shuttleProtocol.getYCurrent() > shuttleProtocol.getYTarget()) { - //璺戝簱缁撴潫 - shuttleProtocol.setMoveLoc(false); - shuttleProtocol.setMoveType(0); - shuttleProtocol.setXStart(0); - shuttleProtocol.setXTarget(0); - shuttleProtocol.setXCurrent(0); - shuttleProtocol.setYStart(0); - shuttleProtocol.setYTarget(0); - shuttleProtocol.setYCurrent(0); - return; - } - - if (shuttleProtocol.getMoveType() == 0) {//璺戣建閬� - ArrayList<String> locs = new ArrayList<>(); - for (int i = shuttleProtocol.getXCurrent(); i <= shuttleProtocol.getXTarget(); i++) { - String locNo = Utils.getLocNo(i, shuttleProtocol.getYCurrent(), lev); - locs.add(locNo); - } - List<LocMast> locMasts = locMastService.selectEmptyLocNos(locs); - if (locMasts.isEmpty()) { - //绌哄簱浣� - shuttleProtocol.setYCurrent(shuttleProtocol.getYCurrent() + 1); - return; - } - - LocMast start = locMasts.get(0); - LocMast target = locMasts.get(locMasts.size() - 1); - //鍒ゆ柇灏忚溅鏄惁鍦ㄨ捣鐐逛綅缃� - if (!shuttleProtocol.getCurrentLocNo().equals(start.getLocNo())) {//涓嶅湪璧风偣浣嶇疆锛岃皟搴﹀幓璧风偣浣嶇疆 - shuttleDispatchUtils.dispatchShuttle(commonService.getWorkNo(3), start.getLocNo()); - }else { - //鍦ㄨ捣鐐逛綅缃紝璋冨害鍘荤洰鏍囦綅缃� - if (shuttleProtocol.getCurrentLocNo().equals(target.getLocNo())) { - shuttleProtocol.setYCurrent(shuttleProtocol.getYCurrent() + 1);//灏忚溅鍜岀洰鏍囦綅缃竴鑷达紝璺宠繃 - }else { - boolean result = shuttleDispatchUtils.dispatchShuttle(commonService.getWorkNo(3), target.getLocNo()); - if (result) {//璋冨害鎴愬姛 - shuttleProtocol.setYCurrent(shuttleProtocol.getYCurrent() + 1); - } - } - } - } else if (shuttleProtocol.getMoveType() == 1) {//璺戝簱浣� - Integer xCurrent = shuttleProtocol.getXCurrent(); - if (xCurrent > shuttleProtocol.getXTarget()) {//褰揦鍊煎ぇ浜嶺鐩爣鍊硷紝杩涜褰掗浂涓擸鏂瑰悜+1 - shuttleProtocol.setXCurrent(shuttleProtocol.getXStart()); - shuttleProtocol.setYCurrent(shuttleProtocol.getYCurrent() + 1); - return; - } - - Integer yCurrent = shuttleProtocol.getYCurrent(); - String locNo = Utils.getLocNo(xCurrent, yCurrent, lev); - LocMast target = locMastService.selectById(locNo); - if (target == null) { - shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); - return; - } - - if (!target.getLocSts().equals("O")) { - shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); - return; - } - - //璋冨害鍘荤洰鏍囦綅缃� - if (shuttleProtocol.getCurrentLocNo().equals(target.getLocNo())) { - shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);//灏忚溅鍜岀洰鏍囦綅缃竴鑷达紝璺宠繃 - } else { - boolean result = shuttleDispatchUtils.dispatchShuttle(commonService.getWorkNo(3), target.getLocNo()); - if (result) {//璋冨害鎴愬姛 - shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1); - } - } - } else if (shuttleProtocol.getMoveType() == 2) {//姣嶈建閬撳惊鐜窇 - Integer xCurrent = shuttleProtocol.getXCurrent(); - Integer yCurrent = shuttleProtocol.getYCurrent(); - - String locNo = Utils.getLocNo(xCurrent, yCurrent, lev); - //璋冨害鍘荤洰鏍囦綅缃� - if (shuttleProtocol.getCurrentLocNo().equals(locNo)) { - if (yCurrent.equals(shuttleProtocol.getYStart())) { - shuttleProtocol.setYCurrent(shuttleProtocol.getYTarget());//灏忚溅鍜岀洰鏍囦綅缃竴鑷达紝鍒囨崲搴撲綅 - }else { - shuttleProtocol.setYCurrent(shuttleProtocol.getYStart());//灏忚溅鍜岀洰鏍囦綅缃竴鑷达紝鍒囨崲搴撲綅 - } - } else { - boolean result = shuttleDispatchUtils.dispatchShuttle(commonService.getWorkNo(3), locNo); - if (result) {//璋冨害鎴愬姛 - if (yCurrent.equals(shuttleProtocol.getYStart())) { - shuttleProtocol.setYCurrent(shuttleProtocol.getYTarget());//鍒囨崲搴撲綅 - }else { - shuttleProtocol.setYCurrent(shuttleProtocol.getYStart());//鍒囨崲搴撲綅 - } - } - } - } else if (shuttleProtocol.getMoveType() == 3) {//瀛愯建閬撳惊鐜窇 - Integer xCurrent = shuttleProtocol.getXCurrent(); - Integer yCurrent = shuttleProtocol.getYCurrent(); - - String locNo = Utils.getLocNo(xCurrent, yCurrent, lev); - //璋冨害鍘荤洰鏍囦綅缃� - if (shuttleProtocol.getCurrentLocNo().equals(locNo)) { - if (xCurrent.equals(shuttleProtocol.getXStart())) { - shuttleProtocol.setXCurrent(shuttleProtocol.getXTarget());//灏忚溅鍜岀洰鏍囦綅缃竴鑷达紝鍒囨崲搴撲綅 - }else { - shuttleProtocol.setXCurrent(shuttleProtocol.getXStart());//灏忚溅鍜岀洰鏍囦綅缃竴鑷达紝鍒囨崲搴撲綅 - } - } else { - boolean result = shuttleDispatchUtils.dispatchShuttle(commonService.getWorkNo(3), locNo); - if (result) {//璋冨害鎴愬姛 - if (xCurrent.equals(shuttleProtocol.getXStart())) { - shuttleProtocol.setXCurrent(shuttleProtocol.getXTarget());//鍒囨崲搴撲綅 - }else { - shuttleProtocol.setXCurrent(shuttleProtocol.getXStart());//鍒囨崲搴撲綅 - } - } - } - } - } - - //妫�娴嬪皬杞︽槸鍚﹁繘鍑烘彁鍗囨満杈撻�佺珯 - public void checkIOSta(List<NyShuttleHttpCommand> commands, int commandStep) { - if (commandStep != 0) { - NyShuttleHttpCommand lastCommand = commands.get(commandStep - 1);//涓婁竴姝ュ懡浠� - if (lastCommand.getRequest().getBody().get("requestType").equals("move")) { - //妫�娴嬭捣鐐规槸鍚︿负鎻愬崌鏈鸿緭閫佺珯鐐� - NyShuttleProtocol.NyShuttlePointClass start = JSON.parseObject(lastCommand.getRequest().getBody().get("start").toString(), NyShuttleProtocol.NyShuttlePointClass.class); - int[] startPoint = NavigatePositionConvert.NyXyzToWCSXyz(start.getX(), start.getY(), start.getZ()); - if (startPoint[0] == 13 && (startPoint[1] == 22 || startPoint[1] == 38 || startPoint[1] == 57)) { - //杈撻�佺珯鐐逛綅缃� - - int liftNo; - if (startPoint[1] == 22) { - liftNo = 1; - } else if (startPoint[1] == 38) { - liftNo = 2; - } else { - liftNo = 3; - } - - HashMap<String, Object> data = new HashMap<>(); - data.put("lev", startPoint[2]); - data.put("status", false);//鍑鸿緭閫佺珯 - - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftNo, new Task(4, data)); - } - } - } - - if (commands.size() == commandStep) { - return; - } - NyShuttleHttpCommand command = commands.get(commandStep);//褰撳墠鍛戒护 - if (command.getRequest().getBody().get("requestType").equals("move")) { - NyShuttleProtocol.NyShuttlePointClass target = JSON.parseObject(command.getRequest().getBody().get("target").toString(), NyShuttleProtocol.NyShuttlePointClass.class); - int[] targetPoint = NavigatePositionConvert.NyXyzToWCSXyz(target.getX(), target.getY(), target.getZ()); - //妫�娴嬬洰鏍囦綅缃槸鍚︿负鎻愬崌鏈鸿緭閫佺珯鐐� - if (targetPoint[0] == 13 && (targetPoint[1] == 22 || targetPoint[1] == 38 || targetPoint[1] == 57)) { - //杈撻�佺珯鐐逛綅缃� - - int liftNo; - if (targetPoint[1] == 22) { - liftNo = 1; - } else if (targetPoint[1] == 38) { - liftNo = 2; - } else { - liftNo = 3; - } - - HashMap<String, Object> data = new HashMap<>(); - data.put("lev", targetPoint[2]); - data.put("status", true);//杩涜緭閫佺珯 - - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftNo, new Task(4, data)); - } - } - } - -} diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java index 670a82e..9e243ca 100644 --- a/src/main/java/com/zy/core/thread/ShuttleThread.java +++ b/src/main/java/com/zy/core/thread/ShuttleThread.java @@ -1,1281 +1,74 @@ package com.zy.core.thread; -import HslCommunication.Core.Transfer.DataFormat; -import HslCommunication.Core.Types.OperateResult; -import HslCommunication.Core.Types.OperateResultExOne; -import HslCommunication.ModBus.ModbusTcpNet; -import com.alibaba.fastjson.JSON; -import com.core.common.DateUtils; -import com.core.common.SpringUtils; -import com.core.exception.CoolException; -import com.zy.asrs.entity.*; -import com.zy.asrs.service.*; -import com.zy.asrs.utils.Utils; -import com.zy.common.model.NavigateNode; -import com.zy.common.model.enums.NavigationMapType; -import com.zy.common.utils.*; -import com.zy.core.News; -import com.zy.core.ThreadHandler; -import com.zy.core.cache.MessageQueue; -import com.zy.core.cache.OutputQueue; -import com.zy.core.cache.SlaveConnection; -import com.zy.core.enums.*; -import com.zy.core.model.ShuttleSlave; -import com.zy.core.model.Task; -import com.zy.core.model.command.*; -import com.zy.core.model.protocol.LiftProtocol; -import com.zy.core.model.protocol.ShuttleProtocol; -import com.zy.core.model.protocol.StaProtocol; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.Date; +import com.zy.common.ExecuteSupport; +import com.zy.common.model.NavigateNode; +import com.zy.core.ThreadHandler; +import com.zy.core.enums.ShuttleProtocolStatusType; +import com.zy.core.enums.ShuttleTaskNoType; +import com.zy.core.model.CommandResponse; +import com.zy.core.model.command.ShuttleCommand; +import com.zy.core.model.param.ShuttleMoveLocParam; +import com.zy.core.model.protocol.ShuttleProtocol; + import java.util.List; -/** - * 鍥涘悜绌挎杞︾嚎绋� - */ -@Data -@Slf4j -public class ShuttleThread implements Runnable, ThreadHandler { +public interface ShuttleThread extends ThreadHandler { - private ModbusTcpNet modbusTcpNet; - private ShuttleSlave slave; - private ShuttleProtocol shuttleProtocol; - private RedisUtil redisUtil; + ShuttleProtocol getStatus(boolean clone);//鑾峰彇鍥涘悜绌挎杞︾姸鎬� - public ShuttleThread(ShuttleSlave slave,RedisUtil redisUtil) { - this.slave = slave; - this.redisUtil = redisUtil; - } + ShuttleProtocol getStatus();//鑾峰彇鍥涘悜绌挎杞︾姸鎬�-榛樿clone - @Override - public void run() { - this.connect(); - while (true) { - try { - int step = 1; - Task task = MessageQueue.poll(SlaveType.Shuttle, slave.getId()); - if (task != null) { - step = task.getStep(); - } - switch (step) { - // 璇绘暟鎹� - case 1: - read(); - break; - // 鍐欏叆鏁版嵁 - case 2: - write((ShuttleCommand) task.getData()); - break; - //涓嬪彂浠诲姟 - case 3: - assignWork((ShuttleAssignCommand) task.getData()); - break; - default: - break; - } - Thread.sleep(500); - } catch (Exception e) { - e.printStackTrace(); - } - } - } + CommandResponse movePath(List<NavigateNode> nodes, Integer taskNo);//璺緞涓嬪彂 - @Override - public boolean connect() { - boolean result = false; - //-------------------------鍥涘悜绌挎杞﹁繛鎺ユ柟娉�------------------------// - modbusTcpNet = new ModbusTcpNet(slave.getIp(), slave.getPort(), (byte) 0x01); - // 褰撲綘闇�瑕佹寚瀹氭牸寮忕殑鏁版嵁瑙f瀽鏃讹紝灏遍渶瑕佽缃笅闈㈢殑杩欎釜淇℃伅 - modbusTcpNet.setDataFormat(DataFormat.ABCD); - OperateResult connect = modbusTcpNet.ConnectServer(); - if(connect.IsSuccess){ - result = true; - OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戝洓鍚戠┛姊溅plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - log.info("鍥涘悜绌挎杞lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort()); - } else { - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - log.error("鍥涘悜绌挎杞lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort()); - } - modbusTcpNet.ConnectClose(); - //-------------------------鍥涘悜绌挎杞﹁繛鎺ユ柟娉�------------------------// - return result; - } + CommandResponse move(ShuttleCommand command);//绉诲姩 - @Override - public void close() { - modbusTcpNet.ConnectClose(); - } + CommandResponse lift(ShuttleCommand command);//椤跺崌 - private void read() { - try { - readStatus(); - //鍥涘悜绌挎杞︾┖闂层�佹湁浠诲姟銆佹爣璁颁负true銆佸瓨鍦ㄤ换鍔℃寚浠わ紝闇�瑕佹墽琛屼换鍔$殑涓嬩竴鏉℃寚浠� - if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE - && shuttleProtocol.getTaskNo() != 0 - && shuttleProtocol.getPakMk()) { - //鎵ц涓嬩竴姝ユ寚浠� - executeWork(shuttleProtocol.getTaskNo()); - } - } catch (Exception e) { - e.printStackTrace(); - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - initShuttle(); - } - } + CommandResponse charge(ShuttleCommand command);//鍏呯數寮�鍏� - private void readStatus() { - try { - OperateResultExOne<byte[]> result = modbusTcpNet.Read("200", (short) 17); - if (result.IsSuccess) { - if (null == shuttleProtocol) { - shuttleProtocol = new ShuttleProtocol(); - shuttleProtocol.setShuttleNo(slave.getId().shortValue()); - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); - } + CommandResponse reset(ShuttleCommand command);//澶嶄綅寮�鍏� - //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�----------- - //鑾峰彇鏁版嵁 - byte[] content = result.Content; - //灏忚溅蹇欑姸鎬佷綅 - shuttleProtocol.setBusyStatus(modbusTcpNet.getByteTransform().TransInt16(content,0)); - //褰撳墠浜岀淮鐮� - shuttleProtocol.setCurrentCode(modbusTcpNet.getByteTransform().TransInt16(content,2)); - //鐢垫睜鐢甸噺鐧惧垎姣� - shuttleProtocol.setBatteryPower(modbusTcpNet.getByteTransform().TransInt16(content,4)); - //鐢垫睜娓╁害 - shuttleProtocol.setBatteryTemp(modbusTcpNet.getByteTransform().TransUInt16(content, 6)); - //閿欒缂栧彿 - shuttleProtocol.setErrorCode(modbusTcpNet.getByteTransform().TransInt16(content,8)); - //Plc杈撳嚭鐘舵�両O - int plcOutIo = modbusTcpNet.getByteTransform().TransUInt16(content, 10); - int[] plcOutIos = CommonUtils.byteToBits((byte) plcOutIo); - shuttleProtocol.setPlcOutputLift(plcOutIos[1] == 1); - shuttleProtocol.setPlcOutputTransfer(plcOutIos[2] == 1); - shuttleProtocol.setPlcOutputBrake(plcOutIos[3] == 1); - shuttleProtocol.setPlcOutputCharge(plcOutIos[4] == 1); - shuttleProtocol.setPlcOutputStatusIO(modbusTcpNet.getByteTransform().TransInt16(content, 10)); - //閿欒淇℃伅鐮� - shuttleProtocol.setStatusErrorCode(modbusTcpNet.getByteTransform().TransInt16(content,12)); - int plcInIo = modbusTcpNet.getByteTransform().TransUInt16(content, 14); - int[] plcInIos = CommonUtils.byteToBits((byte) plcInIo); - //PLC杈撳叆鐘舵�� - shuttleProtocol.setPlcInputStatus((short) plcInIos[6]); - //褰撳墠鎴栬�呬箣鍓嶈鍒扮殑浜岀淮鐮佸�� - shuttleProtocol.setCurrentOrBeforeCode(modbusTcpNet.getByteTransform().TransInt16(content,16)); - //璇诲埌鐨勪簩缁寸爜X鏂瑰悜鍋忕Щ閲� - shuttleProtocol.setCodeOffsetX(modbusTcpNet.getByteTransform().TransInt16(content,18)); - //璇诲埌鐨勪簩缁寸爜Y鏂瑰悜鍋忕Щ閲� - shuttleProtocol.setCodeOffsetY(modbusTcpNet.getByteTransform().TransInt16(content,20)); - //褰撳墠鐨勭數鍘嬪�� - shuttleProtocol.setCurrentVoltage(modbusTcpNet.getByteTransform().TransUInt16(content, 22)); - //褰撳墠鐨勬ā鎷熼噺鍊� - shuttleProtocol.setCurrentAnalogValue(modbusTcpNet.getByteTransform().TransInt16(content,24)); - //褰撳墠鐨勫崌闄嶄己鏈嶉�熷害 - shuttleProtocol.setCurrentLiftServoSpeed(modbusTcpNet.getByteTransform().TransInt16(content,26)); - //褰撳墠鐨勮璧颁己鏈嶉�熷害 - shuttleProtocol.setCurrentMoveServoSpeed(modbusTcpNet.getByteTransform().TransInt16(content,28)); - //褰撳墠鐨勫崌闄嶄己鏈嶈礋杞界巼 - shuttleProtocol.setCurrentLiftServoLoad(modbusTcpNet.getByteTransform().TransInt16(content,30)); - //褰撳墠鐨勮璧颁己鏈嶈礋杞界巼 - shuttleProtocol.setCurrentMoveServoLoad(modbusTcpNet.getByteTransform().TransInt16(content,32)); + CommandResponse updateLocation(ShuttleCommand command);//鏇存柊鍧愭爣 - ///璇诲彇鍥涘悜绌挎杞︾姸鎬�-end + boolean isIdle(); - //灏忚溅澶勪簬蹇欑鐘舵�侊紝灏嗘爣璁扮疆涓簍rue - if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.BUSY) { - shuttleProtocol.setPakMk(true); - } + boolean isIdle(ExecuteSupport support);//鏄惁绌洪棽 -// //灏嗗洓鍚戠┛姊溅鐘舵�佷繚瀛樿嚦鏁版嵁搴� -// BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class); -// BasShuttle basShuttle = shuttleService.selectById(slave.getId()); -// if (basShuttle == null) { -// basShuttle = new BasShuttle(); -// //鍥涘悜绌挎杞﹀彿 -// basShuttle.setShuttleNo(slave.getId()); -// shuttleService.insert(basShuttle); -// } -// //灏忚溅蹇欑姸鎬佷綅 -// basShuttle.setBusyStatus(shuttleProtocol.getBusyStatus().intValue()); -// //褰撳墠浜岀淮鐮� -// basShuttle.setCurrentCode(shuttleProtocol.getCurrentCode().intValue()); -// //鐢垫睜鐢甸噺鐧惧垎姣� -// basShuttle.setBatteryPower(shuttleProtocol.getBatteryPower().intValue()); -// //鐢垫睜娓╁害 -// basShuttle.setBatteryTemp(shuttleProtocol.getBatteryTemp().intValue()); -// //閿欒缂栧彿 -// basShuttle.setErrorCode(shuttleProtocol.getErrorCode().intValue()); -// //Plc杈撳嚭鐘舵�両O -// basShuttle.setPlcOutputStatusIo(shuttleProtocol.getPlcOutputStatusIO().intValue()); -// //閿欒淇℃伅鐮� -// basShuttle.setStatusErrorCode(shuttleProtocol.getStatusErrorCode().intValue()); -// //PLC杈撳叆鐘舵�� -// basShuttle.setPlcInputStatus(shuttleProtocol.getPlcInputStatus().intValue()); -// //褰撳墠鎴栬�呬箣鍓嶈鍒扮殑浜岀淮鐮佸�� -// basShuttle.setCurrentOrBeforeCode(shuttleProtocol.getCurrentOrBeforeCode().intValue()); -// //璇诲埌鐨勪簩缁寸爜X鏂瑰悜鍋忕Щ閲� -// basShuttle.setCodeOffsetX(shuttleProtocol.getCodeOffsetX().intValue()); -// //璇诲埌鐨勪簩缁寸爜Y鏂瑰悜鍋忕Щ閲� -// basShuttle.setCodeOffsetY(shuttleProtocol.getCodeOffsetY().intValue()); -// //褰撳墠鐨勭數鍘嬪�� -// basShuttle.setCurrentVoltage(shuttleProtocol.getCurrentVoltage().intValue()); -// //褰撳墠鐨勬ā鎷熼噺鍊� -// basShuttle.setCurrentAnalogValue(shuttleProtocol.getCurrentAnalogValue().intValue()); -// //褰撳墠鐨勫崌闄嶄己鏈嶉�熷害 -// basShuttle.setCurrentLiftServoSpeed(shuttleProtocol.getCurrentLiftServoSpeed().intValue()); -// //褰撳墠鐨勮璧颁己鏈嶉�熷害 -// basShuttle.setCurrentMoveServoSpeed(shuttleProtocol.getCurrentMoveServoSpeed().intValue()); -// //褰撳墠鐨勫崌闄嶄己鏈嶈礋杞界巼 -// basShuttle.setCurrentLiftServoLoad(shuttleProtocol.getCurrentLiftServoLoad().intValue()); -// //褰撳墠鐨勮璧颁己鏈嶈礋杞界巼 -// basShuttle.setCurrentMoveServoLoad(shuttleProtocol.getCurrentMoveServoLoad().intValue()); -// //褰撳墠灏忚溅鐘舵�侊紙鍐呴儴鑷垜缁存姢锛� -// basShuttle.setShuttleStatus(shuttleProtocol.getProtocolStatus()); -// //浠诲姟鍙� -// basShuttle.setWrkNo(shuttleProtocol.getTaskNo().intValue()); -// //淇敼鏃堕棿 -// basShuttle.setUpdateTime(new Date()); -// //浣滀笟鏍囪 -// basShuttle.setPakMk(shuttleProtocol.getPakMk()); -// if (shuttleService.updateById(basShuttle)) { -// OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); -//// log.info(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); -// } + boolean isDeviceIdle();//璁惧鏄惁绌洪棽 - }else { - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆憑1}鍥涘悜绌挎杞lc鐘舵�佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId())); - throw new CoolException(MessageFormat.format( "鍥涘悜绌挎杞lc鐘舵�佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort())); - } - } catch (Exception e) { - e.printStackTrace(); - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - initShuttle(); - } - } + boolean isDeviceIdle(ExecuteSupport support);//璁惧鏄惁绌洪棽 - private boolean write(ShuttleCommand command){ - if (null == command) { - News.error("鍥涘悜绌挎杞﹀啓鍏ュ懡浠や负绌�"); - return false; - } - BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class); - if (shuttleService == null) { - News.error("绯荤粺閿欒"); - return false; - } + boolean isRequireCharge();//鏄惁婊¤冻鍏呯數鐘舵�� - BasShuttle basShuttle = shuttleService.selectById(slave.getId().shortValue()); - if (basShuttle == null) { - News.error("鍥涘悜绌挎杞︿笉瀛樺湪"); - return false; - } - command.setShuttleNo(slave.getId().shortValue()); - short[] array = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃 - OperateResult result = modbusTcpNet.Write("0", array); - if (result != null && result.IsSuccess) { - News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); + boolean isCharging();//鏄惁鍏呯數涓� - try { - Thread.sleep(3000);//鍛戒护涓嬪彂鍚庝紤鐪� - } catch (InterruptedException e) { - throw new RuntimeException(e); - } + boolean isChargingCompleted();//鏄惁鍏呯數瀹屾垚 - for (int i = 0; i < 5; i++) { - if (command.getCommandWord().intValue() == 5 || command.getCommandWord().intValue() == 6) { - break;//鍏呯數寮�鍏冲拰绯荤粺澶嶄綅涓嶉渶瑕侀噸鍙戞満鍒� - } - readStatus();//閲嶆柊璇诲彇鐘舵�� - if (shuttleProtocol.getBusyStatusType().equals(ShuttleStatusType.BUSY)) { - break; - } + List<NavigateNode> getMoveAdvancePath();//鑾峰彇绌挎杞︿换鍔¤矾寰� - //鍒ゆ柇鏄惁杩愯涓紝濡備笉杩愯锛岄噸鏂颁笅鍙戝懡浠� - result = modbusTcpNet.Write("0", array); - News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙慬id:{}] >>>>> {},娆℃暟锛歿}", slave.getId(), JSON.toJSON(command), i); - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2},娆℃暟锛歿}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command), i)); - try { - Thread.sleep(300);//鍛戒护涓嬪彂鍚庝紤鐪� - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - } + int generateDeviceTaskNo(int taskNo, ShuttleTaskNoType type);//鐢熸垚纭欢璁惧宸ヤ綔鍙� - return true; - } else { - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ洓鍚戠┛姊溅plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}],娆℃暟锛歿}", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - News.error("鍐欏叆鍥涘悜绌挎杞lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - return false; - } - } + boolean setProtocolStatus(ShuttleProtocolStatusType status);//璁剧疆宸ヤ綔鐘舵�� - //鑾峰彇鍛戒护鎶ユ枃 - private short[] getCommandArr(ShuttleCommand command) { - // 寮�濮嬩换鍔� - short[] array = new short[17]; - //鎺у埗鎸囦护瀛� - array[0] = command.getCommandWord(); - if (command.getStartCodeNum() != null) { - //鍚浜岀淮缂栧彿 - array[1] = command.getStartCodeNum(); - } + boolean setTaskNo(Integer taskNo);//璁剧疆宸ヤ綔鍙� - if (command.getMiddleCodeNum() != null) { - //涓棿浜岀淮缂栧彿 - array[2] = command.getMiddleCodeNum(); - } + boolean setSyncTaskNo(Integer taskNo);//璁剧疆宸ヤ綔鍙� - if (command.getDistCodeNum() != null) { - //鐩爣浜岀淮缂栧彿 - array[3] = command.getDistCodeNum(); - } + boolean setPakMk(boolean pakMk);//璁剧疆鏍囪 - if (command.getStartToDistDistance() != null) { - //璧风偣鍒扮洰鏍囩偣鐨勮窛绂婚暱搴︼紝鍏堝皢int杞负byte鏁扮粍锛屽啀灏哹yte鏁扮粍杞垚涓や釜short锛屽垎鍒崰鐢�4鍜�5绌洪棿 - short[] startToDistDistances = CommonUtils.intToShorts(command.getStartToDistDistance()); - array[4] = startToDistDistances[0]; - array[5] = startToDistDistances[1]; - } + boolean enableMoveLoc(ShuttleMoveLocParam param, boolean enable); - if (command.getMiddleToDistDistance() != null) { - //涓棿鐐瑰埌鐩爣鐐圭殑璺濈闀垮害锛屽厛灏唅nt杞负byte鏁扮粍锛屽啀灏哹yte鏁扮粍杞垚涓や釜short锛屽垎鍒崰鐢�4鍜�5绌洪棿 - short[] middleToDistDistances = CommonUtils.intToShorts(command.getMiddleToDistDistance()); - array[6] = middleToDistDistances[0]; - array[7] = middleToDistDistances[1]; - } + boolean requestWaiting(); - if (command.getRunDirection() != null) { - //灏忚溅杩愯鏂瑰悜 - array[8] = command.getRunDirection(); - } + //***************鑾峰彇鍛戒护***************** - if (command.getPalletLift() != null) { - //鎵樼洏椤跺崌 - array[9] = command.getPalletLift(); - } + ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes);//鑾峰彇绉诲姩鍛戒护 - if (command.getForceMoveDistance() != null) { - //灏忚溅寮哄埗绉诲姩璺濈锛屽厛灏唅nt杞负byte鏁扮粍锛屽啀灏哹yte鏁扮粍杞垚涓や釜short锛屽垎鍒崰鐢�4鍜�5绌洪棿 - short[] forceMoveDistances = CommonUtils.intToShorts(command.getForceMoveDistance()); - array[10] = forceMoveDistances[0]; - array[11] = forceMoveDistances[1]; - } + ShuttleCommand getLiftCommand(Integer taskNo, Boolean lift);//椤跺崌鍛戒护 true=>椤跺崌 false=>涓嬮檷 - if (command.getChargeSwitch() != null) { - //鍏呯數寮�鍏� - array[12] = command.getChargeSwitch(); - } + ShuttleCommand getChargeCommand(Integer taskNo, Boolean charge);//鍏呯數寮�鍏冲懡浠� true=>寮� false=>鍏� - if (command.getIOControl() != null) { - //灏忚溅IO鎺у埗 - array[13] = command.getIOControl(); - } + ShuttleCommand getUpdateLocationCommand(Integer taskNo, String locNo);//鑾峰彇鏇存柊鍧愭爣鍛戒护 - if (command.getRunSpeed() != null) { - //灏忚溅杩愯閫熷害 - array[14] = command.getRunSpeed(); - } - - if (command.getRadarTmp() != null) { - //灏忚溅闆疯揪澶囩敤 - array[15] = command.getRadarTmp(); - } - //鎸囦护缁撴潫浣� - array[16] = command.getCommandEnd(); - return array; - } - - /** - * 鍒濆鍖栧洓鍚戠┛姊溅 - */ - private void initShuttle() { - this.connect(); - if (null == shuttleProtocol) { - shuttleProtocol = new ShuttleProtocol(); - } - } - - //鍒嗛厤浠诲姟 - private void assignWork(ShuttleAssignCommand assignCommand) { -// ShuttleRedisCommand redisCommand = new ShuttleRedisCommand(); -// -// if (!assignCommand.getAuto()) { -// List<NavigateNode> allNode = new ArrayList<>(); -// List<ShuttleCommand> commands = new ArrayList<>(); -// LocMastService locMastService = SpringUtils.getBean(LocMastService.class); -// BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class); -// NavigateMapData navigateMapData; -// -// //鑾峰彇灏忚溅绉诲姩閫熷害 -// BasShuttle basShuttle = shuttleService.selectById(slave.getId()); -// Integer runSpeed = 1000; -//// if (basShuttle != null) { -//// Integer runSpeed1 = basShuttle.getRunSpeed(); -//// if (runSpeed1 != null) { -//// runSpeed = runSpeed1; -//// } -//// } -// -// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1); -// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); -// -// switch (assignCommand.getTaskMode()) { -// case 1://鍏ュ簱 -// case 2://鍑哄簱 -// //灏忚溅绉诲姩鍒版彁鍗囨満鍙o紝璁$畻璺緞 -// //璁$畻灏忚溅璧风偣鍒颁腑鐐规墍闇�鍛戒护 -// LocMast currentLocMast = locMastService.queryByQrCode(shuttleProtocol.getCurrentCode().toString()); -// List<NavigateNode> firstMastResult = NavigateUtils.calc(currentLocMast.getLocNo(), assignCommand.getSourceLocNo(), NavigationMapType.NORMAL.id, Utils.getShuttlePoints(assignCommand.getShuttleNo().intValue(), Utils.getLev(currentLocMast.getLocNo())));//灏忚溅鍒颁腑鐐癸紝澶勪簬鏃犺揣鐘舵�侊紝浣跨敤姝e父閫氶亾鍦板浘 -// boolean checkResult = Utils.checkShuttlePath(firstMastResult, shuttleProtocol.getShuttleNo().intValue()); -// if (firstMastResult != null && checkResult) { -// allNode.addAll(firstMastResult);//灏嗚妭鐐硅繘琛屼繚瀛� -// //鑾峰彇鍒嗘璺緞 -// ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(firstMastResult); -// //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 -// for (ArrayList<NavigateNode> nodes : data) { -// //寮�濮嬭矾寰� -// NavigateNode startPath = nodes.get(0); -// //涓棿璺緞 -// NavigateNode middlePath = nodes.get(nodes.size() - 2); -// //鐩爣璺緞 -// NavigateNode endPath = nodes.get(nodes.size() - 1); -// Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� -// Integer middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂� -// -// //姝e父绉诲姩鍛戒护 -// Short startCode = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());//寮�濮嬩簩缁寸爜 -// Short middleCode = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());//鐩爣浜岀淮鐮� -// Short distCode = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());//鐩爣浜岀淮鐮� -// commands.add(getMoveCommand(startCode, distCode, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id, middleCode, middleToDistDistance, runSpeed)); -// } -// -// //鎵樼洏椤跺崌 -// commands.add(getPalletCommand((short) 1)); -// }else { -// //娌℃湁璁$畻鍒拌矾寰勶紝鍙兘瀛樺湪灏忚溅浣嶇疆灏辨槸璧风偣浣嶇疆 -// if (currentLocMast.getLocNo().equals(assignCommand.getSourceLocNo())) { -// //灏忚溅浣嶇疆灏辨槸璧风偣浣嶇疆锛屾棤闇�绉诲姩锛岀洿鎺ラ《鍗� -// //鎵樼洏椤跺崌 -// commands.add(getPalletCommand((short) 1)); -// } -// } -// -// //璁$畻涓偣鍒扮粓鐐硅矾寰� -// List<NavigateNode> secMastResult = NavigateUtils.calc(assignCommand.getSourceLocNo(), assignCommand.getLocNo(), NavigationMapType.DFX.id, Utils.getShuttlePoints(assignCommand.getShuttleNo().intValue(), Utils.getLev(assignCommand.getSourceLocNo())));//灏忚溅浠庝腑鐐瑰埌缁堢偣锛屽浜庢湁璐х姸鎬侊紝浣跨敤DFX鍦板浘 -// boolean checkResult2 = Utils.checkShuttlePath(secMastResult, shuttleProtocol.getShuttleNo().intValue()); -// if (secMastResult != null && checkResult2) { -// allNode.addAll(secMastResult);//灏嗚妭鐐硅繘琛屼繚瀛� -// //鑾峰彇鍒嗘璺緞 -// ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(secMastResult); -// //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 -// for (ArrayList<NavigateNode> nodes : data) { -// //寮�濮嬭矾寰� -// NavigateNode startPath = nodes.get(0); -// //涓棿璺緞 -// NavigateNode middlePath = nodes.get(nodes.size() - 2); -// //鐩爣璺緞 -// NavigateNode endPath = nodes.get(nodes.size() - 1); -// Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� -// Integer middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂� -// -// //姝e父绉诲姩鍛戒护 -// Short startCode = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());//寮�濮嬩簩缁寸爜 -// Short middleCode = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());//涓棿浜岀淮鐮� -// Short distCode = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());//鐩爣浜岀淮鐮� -// commands.add(getMoveCommand(startCode, distCode, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id, middleCode, middleToDistDistance, runSpeed)); -// } -// -// //鎵樼洏涓嬮檷 -// commands.add(getPalletCommand((short) 2)); -// } -// -// if (firstMastResult == null || secMastResult == null) { -// throw new CoolException(MessageFormat.format( "鍥涘悜绌挎杞﹀嚭鍏ュ簱璺緞鎼滅储澶辫触 ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort())); -// } -// -// navigateMapData = new NavigateMapData(Utils.getLev(currentLocMast.getLocNo())); -// //鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� -// navigateMapData.writeNavigateNodeToRedisMap(firstMastResult, true);////鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� -// navigateMapData.writeNavigateNodeToRedisMap(secMastResult, true);////鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� -// break; -// case 3://鎵樼洏椤跺崌 -// case 4://鎵樼洏涓嬮檷 -// commands.add(getPalletCommand(assignCommand.getTaskMode() == 3 ? (short) 1 : (short) 2)); -// break; -// case 5://寮哄埗宸︾Щ -// commands.add(getForceMoveCommand((short) 2)); -// break; -// case 6://寮哄埗鍙崇Щ -// commands.add(getForceMoveCommand((short) 1)); -// break; -// case 7://寮哄埗涓婄Щ -// commands.add(getForceMoveCommand((short) 3)); -// break; -// case 8://寮哄埗涓嬬Щ -// commands.add(getForceMoveCommand((short) 4)); -// break; -// case 9://鐘舵�佸浣� -// ShuttleCommand reset = getResetCommand(); -// commands.add(reset); -// break; -// case 10://姝f柟鍚�(鍙�)瀵诲簱浣� -// commands.add(getFindLocCommand((short) 1)); -// break; -// case 11://璐熸柟鍚�(宸�)瀵诲簱浣� -// commands.add(getFindLocCommand((short) 2)); -// break; -// case 12://鍚戞鏂瑰悜(鍓�)瀵诲簱浣� -// commands.add(getFindLocCommand((short) 4)); -// break; -// case 13://鍚戣礋鏂瑰悜(鍚�)瀵诲簱浣� -// commands.add(getFindLocCommand((short) 3)); -// break; -// case 14://绉诲姩鍒扮洰鏍囧簱浣� -// String startQr = shuttleProtocol.getCurrentCode().toString();//璧峰浣嶇疆 -// //濡傛灉绌挎杞﹀湪鎻愬崌鏈哄唴锛岀Щ鍔ㄦ椂闇�瑕佸厛涓嬪彂鍑烘彁鍗囨満鍛戒护 -// if (liftProtocol.getBarcode().intValue() == shuttleProtocol.getCurrentCode().intValue()) { -// //绌挎杞﹀嚭鎻愬崌鏈� -// Short liftArrival = liftProtocol.getPositionArrivalFeedback();//鎻愬崌鏈轰綅缃弽棣� -// String liftSiteLocNo = Utils.liftArrivalToOutInStaLocNo(liftArrival); -// LocMast locMast1 = locMastService.selectById(liftSiteLocNo); -// ShuttleCommand moveCommand = getMoveCommand(liftProtocol.getBarcode(), Short.parseShort(locMast1.getQrCodeValue()), 1600, ShuttleRunDirection.BOTTOM.id, null, null, runSpeed); -// commands.add(moveCommand); -// -// //璧峰浣嶇疆淇敼涓烘彁鍗囨満鍙g珯鐐逛綅缃� -// startQr = locMast1.getQrCodeValue(); -// } -// -// LocMast locMast = locMastService.queryByQrCode(startQr); -// List<NavigateNode> result = NavigateUtils.calc(locMast.getLocNo(), assignCommand.getLocNo(), NavigationMapType.NONE.id, Utils.getShuttlePoints(assignCommand.getShuttleNo().intValue(), Utils.getLev(locMast.getLocNo())));//鎵嬪姩鍛戒护-绉诲姩鍛戒护锛屼娇鐢ㄦ棤杩囨护鍦板浘 -// boolean checkResult3 = Utils.checkShuttlePath(result, shuttleProtocol.getShuttleNo().intValue()); -// if (result != null && checkResult3) { -// //鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� -// navigateMapData = new NavigateMapData(Utils.getLev(locMast.getLocNo())); -// navigateMapData.writeNavigateNodeToRedisMap(result, true);////鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� -// -// allNode.addAll(result);//灏嗚妭鐐硅繘琛屼繚瀛� -// //鑾峰彇鍒嗘璺緞 -// ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(result); -// //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 -// for (ArrayList<NavigateNode> nodes : data) { -// //寮�濮嬭矾寰� -// NavigateNode startPath = nodes.get(0); -// //涓棿璺緞 -// NavigateNode middlePath = nodes.get(nodes.size() - 2); -// //鐩爣璺緞 -// NavigateNode endPath = nodes.get(nodes.size() - 1); -// Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� -// Integer middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂� -// Short startCode = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());//寮�濮嬩簩缁寸爜 -// Short middleCode = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());//涓棿浜岀淮鐮� -// Short distCode = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());//鐩爣浜岀淮鐮� -// //姝e父绉诲姩鍛戒护 -// commands.add(getMoveCommand(startCode, distCode, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id, middleCode, middleToDistDistance, runSpeed)); -// } -// } -// break; -// case 15://鍏呯數寮�鍏� -// commands.add(getChargeSwitchCommand()); -// break; -// case 16://绉诲姩鍒版彁鍗囨満 -// LocMast locMast1 = locMastService.queryByQrCode(shuttleProtocol.getCurrentCode().toString()); -// int lev = Utils.getLev(locMast1.getLocNo());//绌挎杞﹀綋鍓嶉珮搴� -// String liftSiteLocNo = Utils.levToOutInStaLocNo(lev);//褰撳墠妤煎眰绔欑偣搴撲綅鍙� -// LocMast liftSitelocMast = locMastService.selectById(liftSiteLocNo); -// List<NavigateNode> result1 = NavigateUtils.calc(locMast1.getLocNo(), liftSiteLocNo, NavigationMapType.NONE.id, Utils.getShuttlePoints(assignCommand.getShuttleNo().intValue(), Utils.getLev(locMast1.getLocNo())));//绉诲姩鍒版彁鍗囨満锛屼娇鐢ㄦ棤杩囨护鍦板浘 -// boolean checkResult4 = Utils.checkShuttlePath(result1, shuttleProtocol.getShuttleNo().intValue()); -// Short endStartCode = null; -// if (result1 != null && checkResult4) { -// //鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� -// navigateMapData = new NavigateMapData(Utils.getLev(locMast1.getLocNo())); -// navigateMapData.writeNavigateNodeToRedisMap(result1, true);////鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� -// -// allNode.addAll(result1);//灏嗚妭鐐硅繘琛屼繚瀛� -// //鑾峰彇鍒嗘璺緞 -// ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(result1); -// //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 -// for (ArrayList<NavigateNode> nodes : data) { -// //寮�濮嬭矾寰� -// NavigateNode startPath = nodes.get(0); -// //涓棿璺緞 -// NavigateNode middlePath = nodes.get(nodes.size() - 2); -// //鐩爣璺緞 -// NavigateNode endPath = nodes.get(nodes.size() - 1); -// Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� -// Integer middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂� -// Short startCode = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());//寮�濮嬩簩缁寸爜 -// Short middleCode = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());//涓棿浜岀淮鐮� -// Short distCode = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());//鐩爣浜岀淮鐮� -// endStartCode = distCode; -// //姝e父绉诲姩鍛戒护 -// commands.add(getMoveCommand(startCode, distCode, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id, middleCode, middleToDistDistance, runSpeed)); -// } -// } -// -// if (endStartCode == null && shuttleProtocol.getCurrentCode() == Short.parseShort(liftSitelocMast.getQrCodeValue())) { -// //绌挎杞﹀凡缁忓湪鎻愬崌鏈虹珯鐐瑰彛 -// endStartCode = shuttleProtocol.getCurrentCode(); -// } -// -// //澧炲姞绉诲姩杩涙彁鍗囨満鍛戒护 -// ShuttleCommand moveCommand = getMoveCommand(endStartCode, liftProtocol.getBarcode(), 1600, ShuttleRunDirection.TOP.id, null, null, runSpeed); -// commands.add(moveCommand); -// break; -// default: -// } -// assignCommand.setCommands(commands); -// assignCommand.setNodes(allNode);//褰撳墠浠诲姟鎵�鍗犵敤鐨勮妭鐐筶ist -// } -// -// redisCommand.setShuttleNo(assignCommand.getShuttleNo());//鍥涘悜绌挎杞﹀彿 -// redisCommand.setWrkNo(assignCommand.getTaskNo());//宸ヤ綔鍙� -// redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭 -// redisCommand.setAssignCommand(assignCommand);//鍛戒护 -// shuttleProtocol.setTaskNo(assignCommand.getTaskNo()); -// shuttleProtocol.setAssignCommand(assignCommand); -// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING); -// //浠诲姟鏁版嵁淇濆瓨鍒皉edis -// redisUtil.set("shuttle_wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand)); -// //鎵ц涓嬪彂浠诲姟 -// executeWork(assignCommand.getTaskNo()); - } - - //鎵ц涓嬪彂鐨勬寚浠� - private boolean executeWork(Short wrkNo) { - //璇诲彇redis鏁版嵁 - if (wrkNo == null) { - return false; - } - -// WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class); -// -// Object o = redisUtil.get("shuttle_wrk_no_" + wrkNo); -// if (o == null) { -// return false; -// } -// ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); -// -// if (shuttleProtocol.getBusyStatus().intValue() == ShuttleStatusType.BUSY.id) { -// return false;//灏忚溅鐘舵�佸繖 -// } -// -// if (!checkLiftStation(wrkNo)) {//妫�娴嬫槸鍚︽湁鎻愬崌鏈虹珯鐐癸紝鏈夊垯璋冨害鎻愬崌鏈� -// return false; -// } -// -// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1); -// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); -// -// List<ShuttleCommand> commands = redisCommand.getAssignCommand().getCommands(); -// //褰撳墠姝ュ簭 -// int commandStep = redisCommand.getCommandStep(); -// //path璺緞鏁扮洰 -// int size = commands.size(); -// ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); -// -// if (commandStep != 0) { -// //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀畬鎴� -// ShuttleCommand command = commands.get(commandStep - 1); -// if (command.getCommandWord().intValue() == 1) { -// //绉诲姩鍛戒护 -// if (command.getDistCodeNum().intValue() == shuttleProtocol.getCurrentCode().intValue()) { -// //涓婁竴鏉℃寚浠ょ殑鐩爣浣嶇疆鍜屽綋鍓嶅皬杞︿綅缃浉鍚岋紝鍒欒瀹氫笂涓�鏉′换鍔″畬鎴� -// command.setComplete(true); -// -// //涓婁竴鏉℃寚浠よ捣鐐规槸鎻愬崌鏈轰簩缁寸爜锛屽垯娓呴浂鎻愬崌鏈轰换鍔″彿 -// if (command.getStartCodeNum().intValue() == liftProtocol.getBarcode().intValue()) { -// //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂� -// if (liftProtocol.isIdleNoTask() && liftProtocol.getTaskNo().intValue() == redisCommand.getWrkNo().intValue()) { -// liftProtocol.setTaskNo((short) 0);//娓呯┖浠诲姟鍙� -// WrkMast wrkMast = wrkMastService.selectById(wrkNo); -// if (wrkMast != null) { -// wrkMast.setLiftNo(null);//瑙i攣鎻愬崌鏈� -// wrkMastService.updateById(wrkMast); -// } -// } -// } -// -// //鍏ュ簱鍛戒护锛屽綋灏忚溅鍙栧畬璐у悗锛岄渶瑕佸皢鎻愬崌鏈洪噴鏀� -// if (assignCommand.getTaskMode().intValue() == ShuttleTaskModeType.PAK_IN.id) { -// //鍒ゆ柇涓婁竴鏉℃寚浠ょ殑璧风偣鏄惁涓鸿緭閫佺珯鐐逛笖鐩爣鐐逛笉鏄彁鍗囨満鍐呴儴浜岀淮鐮� -// Short startCodeNum = command.getStartCodeNum(); -// BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class); -// BasDevp basDevp = basDevpService.queryByQrCode(startCodeNum.intValue());//鐩爣绔欑偣 -// if (basDevp != null && command.getDistCodeNum().intValue() != liftProtocol.getBarcode().intValue()) { -// //涓婁竴鏉℃寚浠ょ殑璧风偣涓鸿緭閫佺珯鐐逛笖鐩爣鐐逛笉鏄彁鍗囨満鍐呴儴浜岀淮鐮� -// //姝ゆ椂灏忚溅搴旇宸茬粡绂诲紑杈撻�佺珯鐐癸紝鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂蹭笖鏈夊伐浣滃彿 -// if (liftProtocol.isIdleNoTask() && liftProtocol.getTaskNo().intValue() == redisCommand.getWrkNo().intValue()) { -// liftProtocol.setTaskNo((short) 0);//娓呯┖浠诲姟鍙� -// WrkMast wrkMast = wrkMastService.selectById(wrkNo); -// if (wrkMast != null) { -// wrkMast.setLiftNo(null);//瑙i攣鎻愬崌鏈� -// wrkMastService.updateById(wrkMast); -// } -// } -// } -// } -// -// } -// } else if (command.getCommandWord().intValue() == 2) { -// //鎵樼洏椤跺崌鍛戒护 -// if (command.getPalletLift().intValue() == 1) { -// //椤跺崌 -// //鍒ゆ柇鏄惁椤跺崌鍒颁綅 -// if (shuttleProtocol.getPlcOutputLift()) { -// //鑷姩妯″紡 -// if (assignCommand.getAuto() && shuttleProtocol.getPlcInputStatus().intValue() == 1) { -// //椤跺崌鍒颁綅,涓旀墭鐩橀浄杈炬湁鐗╋紝璁ゅ畾浠诲姟瀹屾垚 -// command.setComplete(true); -// }else { -// //鎵嬪姩妯″紡锛屼笉鍒ゆ柇鎵樼洏闆疯揪 -// //椤跺崌鍒颁綅锛岃瀹氫换鍔″畬鎴� -// command.setComplete(true); -// } -// } -// }else { -// //涓嬮檷 -// //鍒ゆ柇鏄惁涓嬮檷鍒颁綅锛屽垽鏂墭鐩橀浄杈炬槸鍚︽棤鐗� -// if (!shuttleProtocol.getPlcOutputLift() && !shuttleProtocol.getPlcOutputTransfer()) { -// //鑷姩妯″紡 -// if (assignCommand.getAuto() && shuttleProtocol.getPlcInputStatus().intValue() == 0) { -// //涓嬮檷鍒颁綅锛屼笖鎵樼洏闆疯揪鏃犵墿锛岃瀹氫换鍔″畬鎴� -// command.setComplete(true); -// }else { -// //鎵嬪姩妯″紡锛屼笉鍒ゆ柇鎵樼洏闆疯揪 -// //涓嬮檷鍒颁綅锛屼笖鎵樼洏闆疯揪鏃犵墿锛岃瀹氫换鍔″畬鎴� -// command.setComplete(true); -// } -// } -// } -// } else if (command.getCommandWord().intValue() == 5) { -// //鍏呯數鍛戒护 -// //鍒ゆ柇灏忚溅鍏呯數寮�鍏� -// if (shuttleProtocol.getPlcOutputCharge()) { -// //姝e父鍏呯數锛岃瀹氫换鍔″畬鎴� -// command.setComplete(true); -// } -// } -// //浠诲姟鏁版嵁淇濆瓨鍒皉edis -// redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); -// -// if (!command.getComplete()) { -// //涓婁竴鏉′换鍔℃湭瀹屾垚锛岀姝笅鍙戝懡浠� -// return false; -// } -// } -// -// if (commands.size() == 0) { -// return false; -// } -// -// //鍙栧嚭鍛戒护 -// ShuttleCommand command = commands.get(commandStep); -// -// if (assignCommand.getTaskMode() == ShuttleTaskModeType.PAK_IN.id.shortValue() -// || assignCommand.getTaskMode() == ShuttleTaskModeType.PAK_OUT.id.shortValue() -// ) { -// //灏忚溅澶卞幓鍧愭爣锛岀姝笅鍙戝懡浠� -// if (shuttleProtocol.getCurrentCode() == 0) { -// return false; -// } -// } -// -// -// //鍒ゆ柇灏忚溅褰撳墠浜岀淮鐮佹槸鍚︿负鎻愬崌鏈轰簩缁寸爜 -// if (shuttleProtocol.getCurrentCode().intValue() == liftProtocol.getBarcode().intValue()) { -// //灏忚溅褰撳墠鍛戒护璧峰浣嶇疆灏辨槸鎻愬崌鏈轰簩缁寸爜锛岃鏄庡皬杞﹂渶瑕佸悜鎻愬崌鏈哄绉诲姩锛屽垯闇�瑕佸垽鏂姸鎬佹槸鍚︽弧瓒� -// if (command.getStartCodeNum().intValue() == liftProtocol.getBarcode().intValue()){ -// //鎻愬崌鏈烘槸鍚︾┖闂诧紝鎻愬崌鏈烘槸鍚﹀埌杈剧洰鏍囨ゼ灞傦紝鐩爣妤煎眰鏄惁缁欏嚭鎻愬崌鏈哄埌浣嶄俊鍙蜂綅 -// if (!liftProtocol.isIdleNoTask()) { -// return false;//鎻愬崌鏈哄繖锛岀姝笅鍙戝懡浠� -// } -// if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkNo) { -// //鎻愬崌鏈哄伐浣滃彿鍜屽綋鍓嶅伐浣滀笉鐩稿悓锛岀姝笅鍙戝懡浠� -// return false; -// } -// -// Short distCodeNum = command.getDistCodeNum();//鐩爣浜岀淮鐮� -// BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class); -// BasDevp basDevp = basDevpService.queryByQrCode(distCodeNum.intValue());//鐩爣绔欑偣 -// if (basDevp == null) { -// return false;//鎵句笉鍒扮洰鏍囩珯锛岀姝笅鍙戝懡浠� -// } -// -// int lev = Utils.getLev(basDevp.getLocNo());//鐩爣浜岀淮鐮佹墍鍦ㄦゼ灞� -// int liftLev = liftProtocol.getLev().intValue();//鎻愬崌鏈烘墍鍦ㄦゼ灞� -// if (liftLev != lev) { -// return false;//鎻愬崌鏈轰笉鍦ㄧ洰鏍囨ゼ灞傦紝绂佹涓嬪彂鍛戒护 -// } -// -// //鑾峰彇鐩爣绔欎俊鎭� -// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); -// StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo()); -// if (staProtocol == null) { -// return false;//绔欑偣淇℃伅涓嶅瓨鍦紝绂佹涓嬪彂鍛戒护 -// } -// if (!staProtocol.isLiftArrival()) { -// return false;//绔欑偣鎻愬崌鏈哄埌浣嶄俊鍙穎alse锛岀姝笅鍙戝懡浠� -// } -// -// //鏉′欢婊¤冻锛屽崰鐢ㄦ彁鍗囨満 -// liftProtocol.setTaskNo(wrkNo); -// } -// } -// -// //涓嬪彂鍛戒护 -// if (!write(command)) { -// News.error("鍥涘悜绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); -// return false; -// } else { -// News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戞垚鍔燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); -// -// //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂) -// shuttleProtocol.setPakMk(false); -// -// //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘� -// BasShuttleOptService shuttleOptService = SpringUtils.getBean(BasShuttleOptService.class); -// if (shuttleOptService != null) { -// short[] commandArr = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃 -// BasShuttleOpt opt = new BasShuttleOpt( -// assignCommand.getTaskNo().intValue(), -// assignCommand.getShuttleNo().intValue(), -// new Date(), -// ShuttleTaskModeType.get(assignCommand.getTaskMode()).desc, -// assignCommand.getSourceLocNo(), -// assignCommand.getLocNo(), -// null, -// null, -// null, -// JSON.toJSONString(command), -// JSON.toJSONString(commandArr) -// ); -// shuttleOptService.insert(opt); -// } -// -// //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚 -// if (commandStep < size - 1) { -// //鏇存柊redis鏁版嵁 -// //姝ュ簭澧炲姞 -// commandStep++; -// redisCommand.setCommandStep(commandStep); -// //浠诲姟鏁版嵁淇濆瓨鍒皉edis -// redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); -// }else { -// //宸叉墽琛屽畬鎴� -// -// if (redisCommand.getLiftSecurityMk()) { -// //鏇鹃攣瀹氳繃鎻愬崌鏈猴紝闇�瑕佽繘琛岃В閿� -// if (liftProtocol != null) { -// liftProtocol.setSecurityMk(false); -// } -// } -// -// String locNo = shuttleProtocol.getLocNo() == null ? shuttleProtocol.getSourceLocNo() : shuttleProtocol.getLocNo(); -// if (locNo != null) { -// //瑙i櫎閿佸畾鐨勫簱浣嶈矾寰� -// NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(locNo)); -// navigateMapData.writeNavigateNodeToRedisMap(redisCommand.getAssignCommand().getNodes(), false); -// } -// -// //鍒犻櫎redis -// redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo()); -// -// if (!assignCommand.getAuto()) { -// //鎵嬪姩妯″紡涓嶆姏鍑虹瓑寰呯姸鎬侊紝鐩存帴澶嶄綅 -// //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� -// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); -// //浠诲姟鍙锋竻闆� -// shuttleProtocol.setTaskNo((short) 0); -// //鏍囪澶嶄綅 -// shuttleProtocol.setPakMk(true); -// News.info("鍥涘悜绌挎杞︽墜鍔ㄤ换鍔℃墽琛屽畬鎴愶紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); -// }else { -// if (!assignCommand.getCharge()) { -// //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting -// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); -// }else { -// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); -// } -// News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); -// } -// -// } -// -// } - return true; - } - - /** - * 妫�娴嬫槸鍚︽湁鎻愬崌鏈虹珯鐐癸紝鏈夊垯璋冨害鎻愬崌鏈� - */ - private boolean checkLiftStation(Short wrkNo) { - //璇诲彇redis鏁版嵁 - if (wrkNo == null) { - return false; - } - -// //鎷垮埌鎻愬崌鏈虹嚎绋� -// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1); -// if (liftThread == null) { -// return false; -// } -// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); -// if (liftProtocol == null) { -// return false; -// } -// -// Object o = redisUtil.get("shuttle_wrk_no_" + wrkNo); -// if (o == null) { -// return false; -// } -// ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); -// //褰撳墠姝ュ簭 -// int commandStep = redisCommand.getCommandStep(); -// -// //妫�娴嬫槸鍚﹀瓨鍦ㄦ彁鍗囨満鍙g殑鎸囦护 -// List<ShuttleCommand> commands = redisCommand.getAssignCommand().getCommands(); -// if (commands.size() > 0) { -// if (commands.get(commandStep).getCommandWord() != 1) { -// //涓嶆槸琛岃蛋鍛戒护锛岀洿鎺ユ斁琛� -// return true; -// } -// -// if (commands.get(0).getStartCodeNum() == null) { -// return false; -// } -// } -// -// if (commands.size() == 0) { -// return false; -// } -// -// //褰撳墠绛夊緟鎵ц鐨勬寚浠� -// ShuttleCommand command = commands.get(commandStep); -// -// BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class); -// ArrayList<Short> qrCodeValues = new ArrayList<>(); -// for (BasDevp basDevp : basDevpService.selectList(null)) { -// //灏嗘墍鏈夋彁鍗囨満鍙d簩缁寸爜瀛樺叆list -// qrCodeValues.add(Short.parseShort(basDevp.getQrCodeValue())); -// } -// -// Integer siteNo = null;//绔欑偣鍙� -// for (Short qrCodeValue : qrCodeValues) { -// //鐩爣浣嶇疆鏄彁鍗囨満鍙o紝鎴栬捣鐐逛綅缃槸鎻愬崌鏈哄彛涓旂洰鏍囨槸鍘绘彁鍗囨満鍐� -// if (command.getDistCodeNum() == null || command.getStartCodeNum() == null) { -// continue; -// } -// -// if (qrCodeValue.intValue() == command.getDistCodeNum().intValue() || (qrCodeValue.intValue() == command.getStartCodeNum().intValue() && command.getDistCodeNum().intValue() == liftProtocol.getBarcode().intValue())) { -// //瀛樺湪 -// BasDevp basDevp = basDevpService.queryByQrCode(qrCodeValue.intValue()); -// siteNo = basDevp.getDevNo(); -// break; -// } -// } -// -// if (siteNo == null) { -// //鎵句笉鍒扮珯鐐癸紝璇存槑杩樻湭鍒版彁鍗囨満 -// return true; -// } -// -// -//// //閬嶅巻鎵�鏈夋寚浠わ紝鍒ゆ柇鏄惁鏈夊埌鎻愬崌鏈哄彛鐨勬寚浠ゆ垨浠庢彁鍗囨満鍙e墠寰�鎻愬崌鏈哄唴鐨勬寚浠わ紝骞惰幏鍙栧埌杈捐鎻愬崌鏈哄彛鎵�闇�姝ュ簭 -//// int step = 0; -//// Integer siteNo = null;//绔欑偣鍙� -//// ShuttleCommand command = null; -//// for (int i = 0; i < commands.size(); i++) { -//// command = commands.get(i); -//// for (Short qrCodeValue : qrCodeValues) { -//// //鐩爣浣嶇疆鏄彁鍗囨満鍙o紝鎴栬捣鐐逛綅缃槸鎻愬崌鏈哄彛涓旂洰鏍囨槸鍘绘彁鍗囨満鍐� -//// if (command.getDistCodeNum() == null || command.getStartCodeNum() == null) { -//// continue; -//// } -//// -//// if (qrCodeValue.intValue() == command.getDistCodeNum().intValue() || (qrCodeValue.intValue() == command.getStartCodeNum().intValue() && command.getDistCodeNum().intValue() == liftProtocol.getBarcode().intValue())) { -//// //瀛樺湪 -//// step = i + 1; -//// BasDevp basDevp = basDevpService.queryByQrCode(qrCodeValue.intValue()); -//// siteNo = basDevp.getDevNo(); -//// break; -//// } -//// } -//// } -//// -//// if (step == 0) { -//// //鏃犻渶鍚庣画妫�娴嬶紝鐩存帴鏀捐 -//// return true; -//// } -// -// //鍒ゆ柇涓嬩竴姝ユ槸鍚︿负鎻愬崌鏈哄彛鎴栨彁鍗囨満鍐� -// if (commandStep < commands.size()) { -// ShuttleCommand command1 = commands.get(commandStep); -// Short distCodeNum = command1.getDistCodeNum(); -// if (distCodeNum != null) { -// BasDevp basDevp = basDevpService.queryByQrCode(Integer.valueOf(distCodeNum)); -// if (basDevp == null && distCodeNum.intValue() != liftProtocol.getBarcode().intValue()) { -// return true;//涓嬩竴姝ヤ笉鏄彁鍗囨満鍙o紝璺宠繃鍚庣画娴佺▼ -// } -// } -// } -// -// //鑾峰彇鍥涘悜绌挎杞﹀綋鍓嶆ゼ灞� -// String shuttleLocNo = shuttleProtocol.getCurrentLocNo();//浜岀淮鐮佸搴斿簱浣嶅彿 -// Integer shuttleLocNoLev = shuttleLocNo == null ? 0 : Utils.getLev(shuttleLocNo);//搴撲綅鍙峰搴斿眰楂� -// -// //鍒ゆ柇绌挎杞﹀拰鎻愬崌鏈烘槸鍚﹀湪鐩爣妤煎眰 -// if (shuttleLocNoLev >= 2) { -// shuttleLocNoLev++; -// } -// -// //鍒ゆ柇杈撻�佺嚎绔欑偣鏄惁缁欏嚭鎻愬崌鏈哄埌浣嶄俊鍙� -// SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); -// StaProtocol staProtocol = siemensDevpThread.getStation().get(siteNo); -// if (!staProtocol.isLiftArrival()) { -// //杈撻�佺嚎鍙嶉鎻愬崌鏈烘病鏈夊埌浣� -// executeLift(liftThread, liftProtocol, redisCommand, shuttleLocNoLev);//璋冨害鎻愬崌鏈� -// return false; -// } -// -// if (shuttleProtocol.getCurrentCode().intValue() == liftProtocol.getBarcode().intValue()) { -// //灏忚溅澶勪簬鎻愬崌鏈哄唴 -// return true; -// }else { -// if (liftProtocol.getPositionArrivalFeedback$() == shuttleLocNoLev) { -// //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁浠诲姟鍙� -// if (liftProtocol.getTaskNo().intValue() != 0) { -// //鍒ゆ柇浠诲姟鍙锋槸鍚﹀拰褰撳墠灏忚溅浠诲姟涓�鑷� -// if (liftProtocol.getTaskNo().intValue() != wrkNo.intValue()) { -// return false;//浠诲姟鍙蜂笉涓�鑷达紝涓旀彁鍗囨満浠诲姟鍙蜂笉涓�0 -// } -// } -// liftProtocol.setTaskNo(wrkNo);//缁欐彁鍗囨満鍐欏伐浣滃彿锛岄槻姝㈣鍗犵敤 -// WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class); -// WrkMast wrkMast = wrkMastService.selectById(shuttleProtocol.getTaskNo()); -// if (wrkMast != null) { -// wrkMast.setLiftNo(liftProtocol.getLiftNo().intValue());//閿佸畾鎻愬崌鏈猴紝闃叉琚姠鍗� -// wrkMastService.updateById(wrkMast); -// } -// return true;//鎻愬崌鏈哄埌浣� -// } -// executeLift(liftThread, liftProtocol, redisCommand, shuttleLocNoLev);//璋冨害鎻愬崌鏈� -// return false;//鎻愬崌鏈烘病鏈夊埌浣� -// } - - return false; - } - - private boolean executeLift(LiftThread liftThread, LiftProtocol liftProtocol, ShuttleRedisCommand redisCommand, Integer shuttleLocNoLev) {//璋冨害鎻愬崌鏈� - if (!liftProtocol.isIdle()) { - //鎻愬崌鏈轰笉绌洪棽绂佹涓嬪彂 - return false; - } - -// if (liftProtocol.getPlatShuttleCheck()) { -// //鎻愬崌鏈哄唴鏈夎溅绂佹涓嬪彂 -// return false; -// } - - if (redisCommand.getLiftSecurityMk()) { - //宸茬粡鎵ц杩囨彁鍗囨満鍛戒护锛岀姝笅鍙� - return false; - } - - WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class); - WrkMast wrkMast = wrkMastService.selectById(shuttleProtocol.getTaskNo()); - if (wrkMast != null) { - wrkMast.setLiftNo(liftProtocol.getLiftNo().intValue());//閿佸畾鎻愬崌鏈猴紝闃叉琚姠鍗� - wrkMastService.updateById(wrkMast); - } - - //缁欐彁鍗囨満鍒嗛厤浠诲姟 - liftProtocol.setTaskNo(shuttleProtocol.getTaskNo());//璁剧疆浠诲姟鍙� - liftProtocol.setShuttleNo(shuttleProtocol.getShuttleNo());//璁剧疆鍥涘悜绌挎杞﹀彿 - liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓� -// liftProtocol.setSecurityMk(true);//鏍囪缃负true锛岄槻姝㈠叾浠栦换鍔″崰鐢ㄥ綋鍓嶆彁鍗囨満 - redisCommand.setLiftSecurityMk(true);//鏍囪缃负true锛岄槻姝㈠叾浠栦换鍔″崰鐢ㄥ綋鍓嶆彁鍗囨満 - //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); - - //鍛戒护list - ArrayList<LiftCommand> liftCommands = new ArrayList<>(); -// LiftCommand liftCommand = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), shuttleLocNoLev); -// liftCommands.add(liftCommand);//灏嗗懡浠ゆ坊鍔犺繘list - - LiftAssignCommand liftAssignCommand = new LiftAssignCommand(); -// liftAssignCommand.setCommands(liftCommands); - liftAssignCommand.setLiftNo(liftProtocol.getLiftNo()); - liftAssignCommand.setTaskNo(liftProtocol.getTaskNo()); - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, liftAssignCommand)); - return true; - } - - /** - * 鑾峰彇鎵樼洏椤跺崌鍛戒护 - * @param lift 1椤跺崌锛�2涓嬮檷 - */ - public ShuttleCommand getPalletCommand(Short lift) { - ShuttleCommand command = new ShuttleCommand(); - command.setCommandWord((short) 2); - command.setStartCodeNum((short) 0); - command.setMiddleCodeNum((short) 0); - command.setDistCodeNum((short) 0); - command.setStartToDistDistance(0); - command.setMiddleToDistDistance(0); - command.setRunDirection((short) 0); - command.setForceMoveDistance(0); - command.setPalletLift(lift); - command.setRunSpeed((short) 0); - command.setCommandEnd((short) 1); - return command; - } - - /** - * 姝e父绉诲姩鍛戒护,榛樿绉诲姩閫熷害1000 - */ - public ShuttleCommand getMoveCommand(Short startCodeNum, Short distCodeNum, Integer startToDistDistance, Short runDirection, Short middleCodeNum, Integer middleToDistDistance) { - return getMoveCommand(startCodeNum, distCodeNum, startToDistDistance, runDirection, middleCodeNum, middleToDistDistance, 500); - } - - /** - * 姝e父绉诲姩鍛戒护 - */ - public ShuttleCommand getMoveCommand(Short startCodeNum, Short distCodeNum, Integer startToDistDistance, Short runDirection, Short middleCodeNum, Integer middleToDistDistance, Integer runSpeed) { - ShuttleCommand command = new ShuttleCommand(); - command.setCommandWord((short) 1); - command.setStartCodeNum(startCodeNum); - command.setMiddleCodeNum(middleCodeNum); - command.setDistCodeNum(distCodeNum); - command.setStartToDistDistance(startToDistDistance); - command.setMiddleToDistDistance(middleToDistDistance); - command.setRunDirection(runDirection); - command.setForceMoveDistance(0); - command.setIOControl((short) 0); - command.setRunSpeed(runSpeed.shortValue()); - command.setCommandEnd((short) 1); - return command; - } - - /** - * 寮哄埗绉诲姩鍛戒护 - * @param direction 绉诲姩鏂瑰悜 1宸︾Щ锛�2鍙崇Щ锛�3鍓嶇Щ锛�4鍚庣Щ - */ - public ShuttleCommand getForceMoveCommand(Short direction) { - ShuttleCommand command = new ShuttleCommand(); - command.setCommandWord((short) 3); - command.setStartCodeNum((short) 0); - command.setMiddleCodeNum((short) 0); - command.setDistCodeNum((short) 0); - command.setStartToDistDistance(600); - command.setRunDirection(direction); - command.setForceMoveDistance(600); - command.setIOControl((short) 0); - command.setCommandEnd((short) 1); - command.setRunSpeed((short) 1000); - return command; - } - - /** - * 鐘舵�佸浣嶅懡浠� - */ - public ShuttleCommand getResetCommand() { - ShuttleCommand command = new ShuttleCommand(); - command.setCommandWord((short) 6); - command.setStartCodeNum((short) 0); - command.setMiddleCodeNum((short) 0); - command.setDistCodeNum((short) 0); - command.setStartToDistDistance(0); - command.setMiddleToDistDistance(0); - command.setRunDirection((short) 0); - command.setPalletLift((short) 0); - command.setPalletLift((short) 0); - command.setForceMoveDistance(0); - command.setChargeSwitch((short) 0); - command.setIOControl((short) 0); - command.setRunSpeed((short) 0); - command.setCommandEnd((short) 1); - return command; - } - - /** - * 鑾峰彇瀵诲簱浣嶅懡浠� - * @param direction 1:鍚戞鏂瑰悜(宸�)瀵诲簱浣�,2:鍚戣礋鏂瑰悜(鍙�)瀵诲簱浣�,3:鍚戣礋鏂瑰悜(鍚�)瀵诲簱浣�,4:鍚戞鏂瑰悜(鍓�)瀵诲簱浣� - */ - public ShuttleCommand getFindLocCommand(Short direction, Integer startToDistance, Short runSpeed) { - ShuttleCommand command = new ShuttleCommand(); - command.setCommandWord((short) 4); - command.setRunDirection(direction); - command.setStartToDistDistance(startToDistance); - command.setRunSpeed((short) runSpeed); - command.setCommandEnd((short) 1); - return command; - } - - /** - * 鑾峰彇瀵诲簱浣嶅懡浠わ紝榛樿绉诲姩璺濈3000锛岃繍琛岄�熷害1000 - * @param direction 1:鍚戞鏂瑰悜(宸�)瀵诲簱浣�,2:鍚戣礋鏂瑰悜(鍙�)瀵诲簱浣�,3:鍚戣礋鏂瑰悜(鍚�)瀵诲簱浣�,4:鍚戞鏂瑰悜(鍓�)瀵诲簱浣� - */ - public ShuttleCommand getFindLocCommand(Short direction) { - return getFindLocCommand(direction, 3000, (short) 1000); - } - - /** - * 鑾峰彇鍏呯數寮�鍏冲懡浠� - */ - public ShuttleCommand getChargeSwitchCommand() { - ShuttleCommand command = new ShuttleCommand(); - command.setCommandWord((short) 5); - command.setChargeSwitch((short) 1); - command.setCommandEnd((short) 1); - return command; - } - - /** - * charge锛�1=>寮�濮嬪厖鐢碉紝2=>鏂紑鍏呯數 - */ - public ShuttleCommand getChargeSwitchCommand(Short charge) { - ShuttleCommand command = new ShuttleCommand(); - command.setCommandWord((short) 5);//鍏呯數 - command.setShuttleNo(shuttleProtocol.getShuttleNo()); - command.setChargeSwitch(charge);//寮�濮嬪厖鐢� - command.setCommandEnd((short) 1); - return command; - } - - /******************************************************************************************/ - /**************************************** 娴嬭瘯涓撶敤 *****************************************/ - /*****************************************************************************************/ - public static void main(String[] args) throws InterruptedException { - ShuttleSlave slave = new ShuttleSlave(); - slave.setId(1); - slave.setIp("192.168.4.24"); - slave.setPort(502); -// ShuttleThread thread = new ShuttleThread(slave); -// thread.connect(); -// thread.readStatus(); -// -// ShuttleCommand command = new ShuttleCommand(); -// command.setCommandWord((short) 0); -// command.setStartCodeNum((short) 12323); -// command.setMiddleCodeNum((short) 22323); -// command.setDistCodeNum((short) 29999); -// command.setStartToDistDistance(109999); -// command.setMiddleToDistDistance(5000); -// command.setRunDirection((short) 1); -// command.setPalletLift((short) 2); -// command.setForceMoveDistance(3000); -// command.setChargeSwitch((short) 2); -// command.setIOControl((short) 0); -// command.setRunSpeed((short) 0); -// command.setRadarTmp((short) 0); -// command.setCommandEnd((short) 1); -// thread.write(command); - - } } diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java deleted file mode 100644 index 8b6f94c..0000000 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ /dev/null @@ -1,465 +0,0 @@ -package com.zy.core.thread; - -import HslCommunication.Core.Types.OperateResult; -import HslCommunication.Core.Types.OperateResultExOne; -import HslCommunication.Profinet.Siemens.SiemensPLCS; -import HslCommunication.Profinet.Siemens.SiemensS7Net; -import com.alibaba.fastjson.JSON; -import com.core.common.DateUtils; -import com.core.common.SpringUtils; -import com.zy.asrs.entity.BasCrnOpt; -import com.zy.asrs.entity.BasCrnp; -import com.zy.asrs.service.BasCrnOptService; -import com.zy.asrs.service.BasCrnpService; -import com.zy.core.CrnThread; -import com.zy.core.News; -import com.zy.core.cache.MessageQueue; -import com.zy.core.cache.OutputQueue; -import com.zy.core.enums.CrnStatusType; -import com.zy.core.enums.CrnTaskModeType; -import com.zy.core.enums.SlaveType; -import com.zy.core.model.CrnSlave; -import com.zy.core.model.Task; -import com.zy.core.model.command.CrnCommand; -import com.zy.core.model.protocol.CrnProtocol; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; - -import java.text.MessageFormat; -import java.util.Date; - -/** - * 鍫嗗灈鏈虹嚎绋� - * Created by vincent on 2020/8/4 - */ -@Data -@Slf4j -public class SiemensCrnThread implements Runnable, CrnThread { - - private SiemensS7Net siemensNet; - private CrnSlave slave; - private CrnProtocol crnProtocol; - private boolean resetFlag = false; - - public SiemensCrnThread(CrnSlave slave) { - this.slave = slave; - } - - @Override - @SuppressWarnings("InfiniteLoopStatement") - public void run() { - this.connect(); - while (true) { - try { - int step = 1; - Task task = MessageQueue.poll(SlaveType.Crn, slave.getId()); - if (task != null) { - step = task.getStep(); - } - switch (step) { - // 璇绘暟鎹� - case 1: - readStatus(); - break; - // 鍐欏叆鏁版嵁 - case 2: - write((CrnCommand) task.getData()); - break; - // 澶嶄綅 - case 3: - CrnCommand command = (CrnCommand) task.getData(); - if (null == command) { - command = new CrnCommand(); - } - command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� - command.setTaskNo((short) 0); // 宸ヤ綔鍙� - command.setAckFinish((short) 1); // 浠诲姟瀹屾垚纭浣� - 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); // 鐩爣搴撲綅灞� - write(command); - break; - default: - break; - } - Thread.sleep(500); - } catch (Exception e) { -// e.printStackTrace(); - } - - } - } - - /** - * 鍒濆鍖栧爢鍨涙満鐘舵�� - */ - private void initCrn() { - if (null == crnProtocol) { - crnProtocol = new CrnProtocol(); - } - crnProtocol.setMode((short) -1); -// crnProtocol.setTaskNo((short)0); - crnProtocol.setStatus((short)-1); - crnProtocol.setBay((short)0); - crnProtocol.setLevel((short)0); - crnProtocol.setForkPos((short) -1); - crnProtocol.setLiftPos((short) -1); - crnProtocol.setWalkPos((short)0); - crnProtocol.setLoaded((short)0); - crnProtocol.setAlarm((short)0); - crnProtocol.setXSpeed(0F); - crnProtocol.setYSpeed(0F); - crnProtocol.setZSpeed(0F); - crnProtocol.setXDistance(0F); - crnProtocol.setYDistance(0F); - crnProtocol.setXDuration(0F); - crnProtocol.setYDuration(0F); - } - - @Override - public boolean connect() { - boolean result = false; - siemensNet = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp()); - siemensNet.setRack(slave.getRack().byteValue()); - siemensNet.setSlot(slave.getSlot().byteValue()); - OperateResult connect = siemensNet.ConnectServer(); - if(connect.IsSuccess){ - result = true; - OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戝爢鍨涙満plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); - News.info("鍫嗗灈鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); - } else { - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝爢鍨涙満plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); - News.error("鍫嗗灈鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); - initCrn(); - } -// siemensNet.ConnectClose(); - return result; - } - - /** - * 璇诲彇鐘舵�� - */ - private void readStatus(){ - try { - OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56); - if (result.IsSuccess) { - if (null == crnProtocol) { - crnProtocol = new CrnProtocol(); - crnProtocol.setCrnNo(this.getSlave().getId()); - } - crnProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0)); - crnProtocol.setTaskNo(siemensNet.getByteTransform().TransInt16(result.Content, 2)); - crnProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 4)); - crnProtocol.setBay(siemensNet.getByteTransform().TransInt16(result.Content, 6)); - crnProtocol.setLevel(siemensNet.getByteTransform().TransInt16(result.Content, 8)); - crnProtocol.setForkPos(siemensNet.getByteTransform().TransInt16(result.Content, 10)); - crnProtocol.setLiftPos(siemensNet.getByteTransform().TransInt16(result.Content, 12)); - crnProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 14)); - crnProtocol.setLoaded(siemensNet.getByteTransform().TransInt16(result.Content, 16)); - crnProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 18)); - crnProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 20)); - crnProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 22)); - crnProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 24)); - crnProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 26)); - crnProtocol.setXSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 28)); - crnProtocol.setYSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 32)); - crnProtocol.setZSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 36)); - crnProtocol.setXDistance(siemensNet.getByteTransform().TransSingle(result.Content, 40)); - crnProtocol.setYDistance(siemensNet.getByteTransform().TransSingle(result.Content, 44)); - crnProtocol.setXDuration(siemensNet.getByteTransform().TransSingle(result.Content, 48)); - crnProtocol.setYDuration(siemensNet.getByteTransform().TransSingle(result.Content, 52)); - - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); - - // 澶嶄綅淇″彿 - if (crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) { - if (resetFlag) { - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setAckFinish((short)1); - if (write(crnCommand)) { - resetFlag = false; - } - } - } - - try { - // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� - BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class); - BasCrnp basCrnp = new BasCrnp(); - basCrnp.setCrnNo(slave.getId()); - if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){ - News.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); - } - } catch (Exception ignore){} - - } else { - initCrn(); - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); -// News.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); - } - } catch (Exception e) { -// e.printStackTrace(); - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); -// News.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - initCrn(); - } - } - - private void convertRow(CrnCommand crnCommand) { - if (crnCommand.getSourcePosX() != null && crnCommand.getSourcePosX() != 0) { - crnCommand.setSourcePosX((short) (crnCommand.getSourcePosX() - ((slave.getId() - 1) * 4))); - } - if (crnCommand.getDestinationPosX() != null && crnCommand.getDestinationPosX() != 0) { - crnCommand.setDestinationPosX((short) (crnCommand.getDestinationPosX() - ((slave.getId() - 1) * 4))); - } - } - - /** - * 鍐欏叆鏁版嵁 - */ - private boolean write(CrnCommand command) throws InterruptedException { - if (null == command) { - News.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�"); - return false; - } -// siemensNet.Write("DB100.18", (short) 0); -// convertRow(command); - command.setCrnNo(slave.getId()); - short[] array = new short[10]; - array[0] = command.getAckFinish(); - array[1] = command.getTaskNo(); - array[2] = command.getTaskMode(); - if (command.getSourcePosX()==4){ - array[3] = 1; - }else if (command.getSourcePosX()==5){ - array[3] = 2; - }else { - array[3] = command.getSourcePosX(); - } - - - array[4] = command.getSourcePosY(); - array[5] = command.getSourcePosZ(); - if (command.getDestinationPosX()==4){ - array[6] = 1; - }else if (command.getDestinationPosX()==5){ - array[6] = 2; - }else { - array[6] = command.getDestinationPosX(); - } - - array[7] = command.getDestinationPosY(); - array[8] = command.getDestinationPosZ(); - array[9] = command.getCommand(); - OperateResult result=null; - //浠诲姟涓嬪彂娆℃暟 - int writeCount = 0; - do { - result = siemensNet.Write("DB100.0", array); - if(result.IsSuccess){ - //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔� - Thread.sleep(200); - OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20); - if (resultRead.IsSuccess) { - CrnCommand one = new CrnCommand(); - one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2)); - one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4)); - one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6)); - one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8)); - one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10)); - one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12)); - one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14)); - one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16)); - if (!command.getTaskNo().equals(one.getTaskNo()) || !command.getTaskMode().equals(one.getTaskMode()) - || !command.getSourcePosX().equals(one.getSourcePosX()) || !command.getSourcePosY().equals(one.getSourcePosY()) - || !command.getSourcePosZ().equals(one.getSourcePosZ()) || !command.getDestinationPosX().equals(one.getDestinationPosX()) - || !command.getDestinationPosY().equals(one.getDestinationPosY()) || !command.getDestinationPosZ().equals(one.getDestinationPosZ()) - ){ - News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); - }else{ - //浠诲姟鍛戒护鍐欏叆鎴愬姛 - log.info("鍐欏叆鍫嗗灈鏈哄懡浠ゅ悗杩斿洖鎴愬姛锛屽苟涓斿洖璇绘垚鍔熴�傚爢鍨涙満plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(command), writeCount); - break; - } - }else { - writeCount++; - log.error("鍐欏叆鍫嗗灈鏈哄懡浠ゅ悗璇诲彇澶辫触銆傚爢鍨涙満plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(command), writeCount); - } - } else { - writeCount++; - log.error("鍐欏叆鍫嗗灈鏈哄懡浠ゅ悗璇诲彇澶辫触銆傚爢鍨涙満plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(command), writeCount); - } - }while (writeCount<5); - - if (command.getAckFinish() == 0) { - short commandFinish = 1; - Thread.sleep(300); - result = siemensNet.Write("DB100.18", commandFinish); - log.info("鍐欏叆鍫嗗灈鏈哄懡浠ゅ悗杩斿洖鎴愬姛锛屽苟涓斿洖璇绘垚鍔熴�傚爢鍨涙満plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(command), writeCount); - }else { - log.info("鏈啓鍏ュ爢鍨涙満鍛戒护"+command.getAckFinish()); - } - log.info("鍫嗗灈鏈哄懡浠ゆ祴璇�-----"+command.getAckFinish()); - - try { - // 鏃ュ織璁板綍 - BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class); - BasCrnOpt basCrnOpt = new BasCrnOpt( - command.getTaskNo().intValue(), // 浠诲姟鍙� - command.getCrnNo(), // 鍫嗗灈鏈篬闈炵┖] - new Date(), // 涓嬪彂鏃堕棿 - command.getTaskModeType().toString(), // 妯″紡 - command.getSourcePosX().intValue(), // 婧愭帓 - command.getSourcePosY().intValue(), // 婧愬垪 - command.getSourcePosZ().intValue(), // 婧愬眰 - null, // 婧愮珯 - command.getDestinationPosX().intValue(), // 鐩爣鎺� - command.getDestinationPosY().intValue(), // 鐩爣鍒� - command.getDestinationPosZ().intValue(), // 鐩爣灞� - null, // 鐩爣绔� - null, // 鍝嶅簲缁撴灉 - null, // 淇敼鏃堕棿 - null // 淇敼浜哄憳 - ); - bean.insert(basCrnOpt); - } catch (Exception ignore) {} - - if (result != null && result.IsSuccess) { - Thread.sleep(200); -// this.readStatus(); - News.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); - return true; - } else { - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - return false; - } - } - - - @Override - public void close() { - siemensNet.ConnectClose(); - } - - /******************************************************************************************/ - /**************************************** 娴嬭瘯涓撶敤 *****************************************/ - /*****************************************************************************************/ - public static void main(String[] args) throws InterruptedException { - CrnSlave slave = new CrnSlave(); - slave.setId(1); - slave.setIp("192.168.6.9"); - slave.setRack(0); - slave.setSlot(0); - SiemensCrnThread crnThread = new SiemensCrnThread(slave); - crnThread.connect(); - crnThread.readStatus(); - System.out.println(JSON.toJSONString(crnThread.crnProtocol)); - Thread.sleep(3000L); - - // 1.鍏ュ簱 婧愬拰鐩爣閮藉彂 -// CrnCommand command = new CrnCommand(); -// command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙� -// command.setTaskNo((short) 0); // 宸ヤ綔鍙� -// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� -// command.setTaskMode(CrnTaskModeType.PAKIN); // 浠诲姟妯″紡 -// command.setSourcePosX((short) 1); // 婧愬簱浣嶆帓 -// command.setSourcePosY((short) 0); // 婧愬簱浣嶅垪 -// command.setSourcePosZ((short) 1); // 婧愬簱浣嶅眰 -// command.setDestinationPosX((short) 2); // 鐩爣搴撲綅鎺� -// command.setDestinationPosY((short) 3); // 鐩爣搴撲綅鍒� -// command.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞� -// crnThread.write(command); - - // 2.鍑哄簱 婧愬拰鐩爣閮藉彂 -// CrnCommand command = new CrnCommand(); -// command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙� -// command.setTaskNo((short) 0); // 宸ヤ綔鍙� -// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� -// command.setTaskMode(CrnTaskModeType.PAKOUT); // 浠诲姟妯″紡 -// command.setSourcePosX((short) 2); // 婧愬簱浣嶆帓 -// command.setSourcePosY((short) 4); // 婧愬簱浣嶅垪 -// command.setSourcePosZ((short) 3); // 婧愬簱浣嶅眰 -// command.setDestinationPosX((short) 1); // 鐩爣搴撲綅鎺� -// command.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒� -// command.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞� -// crnThread.write(command); - - -// // 3.搴撲綅绉昏浆 婧愬拰鐩爣閮藉彂 pass -// CrnCommand command = new CrnCommand(); -// command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� -// command.setTaskNo((short) 0); // 宸ヤ綔鍙� -// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� -// command.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 -// command.setSourcePosX((short)2); // 婧愬簱浣嶆帓 -// command.setSourcePosY((short)2); // 婧愬簱浣嶅垪 -// command.setSourcePosZ((short)3); // 婧愬簱浣嶅眰 -// command.setDestinationPosX((short)2); // 鐩爣搴撲綅鎺� -// command.setDestinationPosY((short)4); // 鐩爣搴撲綅鍒� -// command.setDestinationPosZ((short)4); // 鐩爣搴撲綅灞� -// crnThread.write(command); - - // 4.绔欎綅绉昏浆 婧愬拰鐩爣閮藉彂 -// CrnCommand command = new CrnCommand(); -// command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� -// command.setTaskNo((short) 0); // 宸ヤ綔鍙� -// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� -// command.setTaskMode(CrnTaskModeType.SITE_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 -// command.setSourcePosX((short)1); // 婧愬簱浣嶆帓 -// command.setSourcePosY((short)0); // 婧愬簱浣嶅垪 -// command.setSourcePosZ((short)1); // 婧愬簱浣嶅眰 -// command.setDestinationPosX((short)2); // 鐩爣搴撲綅鎺� -// command.setDestinationPosY((short)0); // 鐩爣搴撲綅鍒� -// command.setDestinationPosZ((short)1); // 鐩爣搴撲綅灞� -// crnThread.write(command); - -// // 5.鍥炲師鐐� 涓嶇敤鍙� pass -// CrnCommand command = new CrnCommand(); -// command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙� -// command.setTaskNo((short) 0); // 宸ヤ綔鍙� -// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� -// command.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡 -// command.setSourcePosX((short) 0); // 婧愬簱浣嶆帓 -// command.setSourcePosY((short) 0); // 婧愬簱浣嶅垪 -// command.setSourcePosZ((short) 0); // 婧愬簱浣嶅眰 -// command.setDestinationPosX((short) 0); // 鐩爣搴撲綅鎺� -// command.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒� -// command.setDestinationPosZ((short) 0); // 鐩爣搴撲綅灞� -// crnThread.write(command); - -// // 7.鍧愭爣绉昏 鐩爣鍙� pass -// CrnCommand command = new CrnCommand(); -// command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙� -// command.setTaskNo((short) 0); // 宸ヤ綔鍙� -// command.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� -// command.setTaskMode(CrnTaskModeType.OFFSET_MOVE); // 浠诲姟妯″紡 -// command.setSourcePosX((short) 0); // 婧愬簱浣嶆帓 -// command.setSourcePosY((short) 0); // 婧愬簱浣嶅垪 -// command.setSourcePosZ((short) 0); // 婧愬簱浣嶅眰 -// command.setDestinationPosX((short) 2); // 鐩爣搴撲綅鎺� -// command.setDestinationPosY((short) 1); // 鐩爣搴撲綅鍒� -// command.setDestinationPosZ((short) 1); // 鐩爣搴撲綅灞� -// crnThread.write(command); - - // 鍙湁鍑虹幇鎸囧畾寮傚父鎵嶈繘琛屽浣� -// if (crnThread.crnProtocol.getCrnError2().leftTakeNoneErr -// || crnThread.crnProtocol.getCrnError2().rightTakeNoneErr -// || crnThread.crnProtocol.getCrnError2().leftPutLoadErr -// || crnThread.crnProtocol.getCrnError2().rightPutLoadErr) { -// CrnCommand command = new CrnCommand(); -// command.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙� -// command.setAckFinish((short) 1); // 浠诲姟瀹屾垚纭浣� -// command.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡 -// Thread.sleep(3000L); -// crnThread.write(command); -// } - - } - -} diff --git a/src/main/java/com/zy/core/thread/SteThread.java b/src/main/java/com/zy/core/thread/SteThread.java deleted file mode 100644 index 72dbc49..0000000 --- a/src/main/java/com/zy/core/thread/SteThread.java +++ /dev/null @@ -1,546 +0,0 @@ -package com.zy.core.thread; - -import HslCommunication.Core.Types.OperateResult; -import HslCommunication.Core.Types.OperateResultExOne; -import HslCommunication.Profinet.Siemens.SiemensPLCS; -import HslCommunication.Profinet.Siemens.SiemensS7Net; -import com.alibaba.fastjson.JSON; -import com.core.common.Cools; -import com.core.common.DateUtils; -import com.core.common.SpringUtils; -import com.core.exception.CoolException; -import com.zy.asrs.entity.BasSte; -import com.zy.asrs.entity.BasSteOpt; -import com.zy.asrs.entity.WrkCharge; -import com.zy.asrs.service.BasSteOptService; -import com.zy.asrs.service.BasSteService; -import com.zy.common.model.enums.WrkChargeType; -import com.zy.core.DevpThread; -import com.zy.core.News; -import com.zy.core.ThreadHandler; -import com.zy.core.cache.MessageQueue; -import com.zy.core.cache.OutputQueue; -import com.zy.core.cache.SlaveConnection; -import com.zy.core.enums.SlaveType; -import com.zy.core.enums.SteStatusType; -import com.zy.core.model.SteSlave; -import com.zy.core.model.Task; -import com.zy.core.model.command.SteCommand; -import com.zy.core.model.protocol.SteProtocol; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; - -import java.text.MessageFormat; -import java.util.Date; - -/** - * shuttle 绌挎杞︾嚎绋� - * Created by vincent on 2020/8/4 - * 涓嶈兘鏈� 妲藉彿 鍜� 鏈烘灦鍙� - */ -@Data -@Slf4j -public class SteThread implements Runnable, ThreadHandler { - - private SiemensS7Net siemensS7Net; - private SteSlave slave; - private SteProtocol steProtocol; - private short heartBeatVal = 1; - private boolean resetFlag = false; - - public SteThread(SteSlave slave) { - this.slave = slave; - } - - @Override - @SuppressWarnings("InfiniteLoopStatement") - public void run() { - this.connect(); - while (true) { - try { - int step = 1; - Task task = MessageQueue.poll(SlaveType.Ste, slave.getId()); - if (task != null) { - step = task.getStep(); - } - switch (step) { - // 璇绘暟鎹� - case 1: - readStatus(); - break; - // 鍐欏叆鏁版嵁 - case 2: - write((SteCommand) task.getData()); - break; - default: - break; - } - // 蹇冭烦 -// heartbeat(); - Thread.sleep(500); - } catch (Exception e) { - e.printStackTrace(); - } - - } - } - - /** - * 鍒濆鍖栧爢鍨涙満鐘舵�� - */ - private void initSte() { - if (null == steProtocol) { - steProtocol = new SteProtocol(); - } - steProtocol.setSteNo(slave.getId().shortValue()); - steProtocol.setMode((short) 0); - steProtocol.setStatus(SteStatusType.OFF_LINE); - steProtocol.setTaskNo((short) 0); - steProtocol.setExecute(false); - steProtocol.setWaiting(false); - } - - @Override - public boolean connect() { - boolean result = false; - // 涓嶈兘鏈� 妲藉彿 鍜� 鏈烘灦鍙� - siemensS7Net = new SiemensS7Net(SiemensPLCS.S200Smart, slave.getIp()); -// siemensS7Net.setRack(slave.getRack().byteValue()); -// siemensS7Net.setSlot(slave.getSlot().byteValue()); - OperateResult connect = siemensS7Net.ConnectServer(); - if(connect.IsSuccess){ - result = true; - OutputQueue.STE.offer(MessageFormat.format( "銆恵0}銆戠┛姊溅plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - News.info("绌挎杞lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - } else { - OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆戠┛姊溅plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] ", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - News.error("绌挎杞lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - initSte(); - } -// melsecMcNet.ConnectClose(); - return result; - } - - /** - * 璇诲彇鐘舵�� - */ - private void readStatus(){ - try { - OperateResultExOne<byte[]> result = siemensS7Net.Read("V800", (short) 70); - if (result.IsSuccess) { - if (null == steProtocol) { - steProtocol = new SteProtocol(); - steProtocol.setSteNo(slave.getId().shortValue()); - } -// steProtocol.setSteNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 0)); - steProtocol.setMode(siemensS7Net.getByteTransform().TransInt16(result.Content, 2)); - steProtocol.setStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 4)); - OperateResultExOne<Boolean> executeRes = siemensS7Net.ReadBool("V2001.0"); - if (executeRes.IsSuccess) { - steProtocol.setExecute(executeRes.Content); - } - OperateResultExOne<Boolean> waitingRes = siemensS7Net.ReadBool("V2001.1"); - if (waitingRes.IsSuccess) { - steProtocol.setWaiting(waitingRes.Content); - } - OperateResultExOne<Boolean> inEmptyRes = siemensS7Net.ReadBool("V2001.2"); - if (inEmptyRes.IsSuccess) { - steProtocol.setInEmpty(inEmptyRes.Content); - } - OperateResultExOne<Boolean> outEmptyRes = siemensS7Net.ReadBool("V2001.3"); - if (outEmptyRes.IsSuccess) { - steProtocol.setOutEmpty(outEmptyRes.Content); - } - steProtocol.setAlarm(siemensS7Net.getByteTransform().TransInt16(result.Content, 6)); - steProtocol.setAlarm0(siemensS7Net.getByteTransform().TransInt16(result.Content, 8)); - steProtocol.setCharge(siemensS7Net.getByteTransform().TransSingle(result.Content, 10)); -// steProtocol.setFullCharge(); -// steProtocol.setLowCharge(); - steProtocol.setFeed(siemensS7Net.getByteTransform().TransInt16(result.Content, 14)); - steProtocol.setLoca(siemensS7Net.getByteTransform().TransInt16(result.Content, 16)); -// steProtocol.setCloser(); -// steProtocol.setSpeed(); - steProtocol.setPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 18)); - steProtocol.setLoad(siemensS7Net.getByteTransform().TransInt16(result.Content, 20)); - steProtocol.setTrack(siemensS7Net.getByteTransform().TransInt16(result.Content, 22)); - steProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 24)); - steProtocol.setTaskType(siemensS7Net.getByteTransform().TransInt16(result.Content, 28)); - steProtocol.setRow(siemensS7Net.getByteTransform().TransInt16(result.Content, 30)); - steProtocol.setBay(siemensS7Net.getByteTransform().TransInt16(result.Content, 32)); - steProtocol.setLev(siemensS7Net.getByteTransform().TransInt16(result.Content, 34)); - -// steProtocol.setHisTaskNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 58)); -// steProtocol.setHisTaskStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 62)); -// steProtocol.setCheckQty(siemensS7Net.getByteTransform().TransInt16(result.Content, 64)); - steProtocol.setReady(siemensS7Net.getByteTransform().TransInt16(result.Content, 36)); -// steProtocol.setChargeNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 68)); - -// steProtocol.setHeart(siemensS7Net.getByteTransform().TransInt16(result.Content, 72)); - steProtocol.setCrnStopRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 38)); - steProtocol.setCrnStopFork(siemensS7Net.getByteTransform().TransInt16(result.Content, 40)); - steProtocol.setCrnAllowRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 42)); -// steProtocol.setCrnAllowRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 44)); - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); - if (!devpThread.charge0 || devpThread.charge1){ - steProtocol.setChargeStatus((short)1); - }else { - steProtocol.setChargeStatus((short)0); - } - - OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); - - //璇诲彇绌挎杞﹁澶囦俊鎭紝鎻愪緵鏌ヨ - OperateResultExOne<byte[]> result1 = siemensS7Net.Read("V732", (short) 16); - if (result1.IsSuccess) { - boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, 0, 15); - steProtocol.setLiftErr(status[0]); - steProtocol.setInFetchErr(status[2]); - steProtocol.setOutFetchErr(status[3]); - steProtocol.setAntiErr(status[4]); - steProtocol.setLiftSwitchErr(status[5]); - steProtocol.setTrackErr(status[6]); - steProtocol.setTimeoutErr(status[7]); - steProtocol.setConnectErr(status[8]); - steProtocol.setEmergencyErr(status[9]); - steProtocol.setTaskTypeErr(status[10]); - steProtocol.setTaskNoErr(status[11]); - steProtocol.setNewTaskErr(status[12]); - steProtocol.setErrTaskErr(status[13]); - steProtocol.setStopErr(status[14]); - steProtocol.setOfflineTaskErr(status[15]); - steProtocol.setStartTaskErr(status[16]); - steProtocol.setVoltageTaskErr(status[17]); - - steProtocol.setDevpErr(status[63]); - - steProtocol.setOnline(status[64]); - steProtocol.setNotOnTrack(status[65]); - steProtocol.setLowVoltage(status[66]); - steProtocol.setElectricityLoss(status[67]); - steProtocol.setForcedTravel(status[68]); - steProtocol.setDemoMode(status[69]); - steProtocol.setBrushConnect(status[70]); -// if (status[70]){ -// steProtocol.setChargeStatus((short)1); -// } - steProtocol.setTaskManualForbid(status[71]); - steProtocol.setOnlineManualForbid(status[72]); - steProtocol.setDevpEmergency(status[73]); - steProtocol.setTaskInterrupt(status[74]); - steProtocol.setTaskClear(status[75]); - steProtocol.setTaskConfirmTimeout(status[76]); - steProtocol.setTaskWithCharge(status[77]); - - steProtocol.setPakInTask(status[96]); - steProtocol.setPakOutTask(status[97]); - steProtocol.setPakMoveTask(status[98]); - steProtocol.setGoHpTask(status[99]); - steProtocol.setGoOHpTask(status[100]); - steProtocol.setGoHpAvoid(status[101]); - steProtocol.setGoOHpAvoid(status[102]); - steProtocol.setPakInEmpty(status[104]); - steProtocol.setPakInFinish(status[105]); - steProtocol.setPakOutEmpty(status[106]); - steProtocol.setPakOutFinish(status[107]); - steProtocol.setGoHpAvoidFinish(status[108]); - steProtocol.setGoOHpAvoidFinish(status[109]); - steProtocol.setGoHpAvoidErr(status[110]); - steProtocol.setGoOHpAvoidErr(status[111]); - - steProtocol.setAutoMode(status[112]); - steProtocol.setVoltageLow(status[113]); - } - - // 澶嶄綅淇″彿 - if (steProtocol.getWaiting()) { - if (resetFlag) { - SteCommand steCommand = new SteCommand(); - steCommand.setComplete(true); - if (write(steCommand) && confirmPos()) { - resetFlag = false; - } - } - } - - // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� - BasSteService service = SpringUtils.getBean(BasSteService.class); - if (null != service) { - // 鍚屾pakMk - BasSte one = service.selectById(slave.getId()); - if (one != null) { - steProtocol.setPakMk(one.getPakMk()); - } - - BasSte basSte = new BasSte(); - basSte.setSteNo(slave.getId()); - if (!service.updateById(steProtocol.toSqlModel(basSte))){ - News.error("绌挎杞lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - } - - } - } else { - OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆憑1}绌挎杞lc鐘舵�佷俊鎭け璐�",DateUtils.convert(new Date()), slave.getId())); - throw new CoolException(MessageFormat.format( "绌挎杞lc鐘舵�佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort())); - } - } catch (Exception e) { -// e.printStackTrace(); - OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆戣鍙栫┛姊溅plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); -// News.error("璇诲彇绌挎杞lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - initSte(); - } - - } - - /** - * 鍐欏叆鏁版嵁 - */ - private boolean write(SteCommand command){ - if (null == command) { - News.error("绌挎杞﹀啓鍏ュ懡浠や负绌�"); - return false; - } - //鍒ゆ柇灏忚溅鏄惁鍦ㄥ厖鐢� - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); - if (devpThread.charge1){ - // led 寮傚父鏄剧ず - LedThread ledThread1 = (LedThread) SlaveConnection.get(SlaveType.Led, 1); - LedThread ledThread2 = (LedThread) SlaveConnection.get(SlaveType.Led, 1); - LedThread ledThread3 = (LedThread) SlaveConnection.get(SlaveType.Led, 1); - if (ledThread1 != null && ledThread2 != null && ledThread3 != null) { - MessageQueue.offer(SlaveType.Led, 1, new Task(3, "绌挎杞︽鍦ㄥ厖鐢�")); - MessageQueue.offer(SlaveType.Led, 2, new Task(3, "绌挎杞︽鍦ㄥ厖鐢�")); - MessageQueue.offer(SlaveType.Led, 3, new Task(3, "绌挎杞︽鍦ㄥ厖鐢�")); - } - News.error("绌挎杞︽鍦ㄥ厖鐢�"); - return false; - }else if (!devpThread.charge0){ - // led 寮傚父鏄剧ず - LedThread ledThread1 = (LedThread) SlaveConnection.get(SlaveType.Led, 1); - LedThread ledThread2 = (LedThread) SlaveConnection.get(SlaveType.Led, 1); - LedThread ledThread3 = (LedThread) SlaveConnection.get(SlaveType.Led, 1); - if (ledThread1 != null && ledThread2 != null && ledThread3 != null) { - MessageQueue.offer(SlaveType.Led, 1, new Task(3, "绌挎杞﹀彲鑳藉湪绂荤嚎鍏呯數锛屾鏌ョ數鎺ф煖绌挎杞︽槸鍚﹀厖鐢垫々鍦ㄧ嚎")); - MessageQueue.offer(SlaveType.Led, 2, new Task(3, "绌挎杞﹀彲鑳藉湪绂荤嚎鍏呯數锛屾鏌ョ數鎺ф煖绌挎杞︽槸鍚﹀厖鐢垫々鍦ㄧ嚎")); - MessageQueue.offer(SlaveType.Led, 3, new Task(3, "绌挎杞﹀彲鑳藉湪绂荤嚎鍏呯數锛屾鏌ョ數鎺ф煖绌挎杞︽槸鍚﹀厖鐢垫々鍦ㄧ嚎")); - } - News.error("绌挎杞﹀彲鑳藉湪绂荤嚎鍏呯數锛屾鏌ョ數鎺ф煖绌挎杞︽槸鍚﹀厖鐢垫々鍦ㄧ嚎"); - return false; - } - command.setSteNo(slave.getId()); - OperateResult result = null; - // 寮�濮嬩换鍔� - if (!command.getComplete()) { - //缁勭粐浠诲姟鍓嶏紝鍏堟竻绌哄啓浠诲姟纭浣嶏紝浠ュ強浠诲姟瀹屾垚纭浣� - siemensS7Net.Write("V2000.0", false); - siemensS7Net.Write("V2000.1", false); - // 1.浠诲姟鍙� - OperateResult result0 = siemensS7Net.Write("V998", command.getTaskNo().shortValue()); - try { - Thread.sleep(200); - } catch (InterruptedException e) { - e.printStackTrace(); - } - // 浣滀笟 - if (command.getTaskMode() != 0) { - // 2.浣滀笟 - OperateResult result1 = siemensS7Net.Write("V1000", command.getTaskMode()); - // 3.纭寮�濮嬩换鍔� - if (result0.IsSuccess && result1.IsSuccess) { - result = siemensS7Net.Write("V2000.0", true); - siemensS7Net.Write("V2000.1", false); - } - - // 鍏朵粬鎸囦护 - } else { - // 鎺у埗妯″紡 - if (command.getControlMode() != null) { - result = siemensS7Net.Write("V1010", command.getControlMode()); - // 澶嶄綅淇″彿 - } else if (command.getReset() != null) { - result = siemensS7Net.Write("V2000.2", command.getReset()); - // 鍒犻櫎鎸囦护 - } else if (command.getDelete() != null) { - result = siemensS7Net.Write("V2000.3", command.getDelete()); - // 鏃犳晥鎸囦护 - } else if (command.getRun() != null) { - result = siemensS7Net.Write("V1016", command.getRun()); - // 鏃犳晥鎸囦护 - }else { - return false; - } - } - - // 浠诲姟瀹屾垚 - } else { - siemensS7Net.Write("V2000.0", false); - siemensS7Net.Write("V998", (short) 0); - siemensS7Net.Write("V1000", (short) 0); - result = siemensS7Net.Write("V2000.1", true); - } - - try { - // 鏃ュ織璁板綍 - if (!command.getComplete() && command.getTaskMode() != 0) { - BasSteOptService bean = SpringUtils.getBean(BasSteOptService.class); - if (null != bean) { - BasSteOpt basSteOpt = new BasSteOpt( - command.getTaskNo(), // 浠诲姟鍙� - command.getSteNo(), // 绌挎杞� - new Date(), // 涓嬪彂鏃堕棿 - command.getTaskModeType().desc, // 浣滀笟 - null, // 婧愭帓 - null, // 婧愬垪 - null, // 婧愬眰 - null, // 婧愮珯 - null, // 鐩爣鎺� - null, // 鐩爣鍒� - null, // 鐩爣灞� - null, // 鐩爣绔� - null, // 鍝嶅簲缁撴灉 - null, // 淇敼鏃堕棿 - null, // 淇敼浜哄憳 - null // 澶囨敞 - ); - bean.insert(basSteOpt); - } - } - - } catch (Exception ignore) {} - - if (result != null && result.IsSuccess) { - // 缁存姢鏁版嵁搴撴帓鍒楀眰 - if (!steProtocol.getWaiting()) { - if (!Cools.isEmpty(command.getRow(), command.getBay(), command.getLev())) { - this.modifyPos(command.getRow().intValue(), command.getBay().intValue(), command.getLev().intValue()); - } - } - - News.info("绌挎杞﹀懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); - OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); - return true; - } else { - OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆戝啓鍏ョ┛姊溅plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - News.error("鍐欏叆绌挎杞lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - return false; - } - } - - public void modifyPos(Integer row, Integer bay, Integer lev) { - BasSteService service = SpringUtils.getBean(BasSteService.class); - if (!service.updatePos(this.slave.getId(), row, bay, lev)) { - News.error("鏇存柊{}鍙风┛姊溅瀹氫綅澶辫触 ===>> 鎺掞細銆恵}銆�, 鍒楋細銆恵}銆戯紝灞傦細銆恵}銆�", this.slave.getId(), row, bay, lev); - } - } - - public boolean confirmPos() { - BasSteService service = SpringUtils.getBean(BasSteService.class); - BasSte basSte = service.selectById(slave.getId()); - if (basSte != null) { - // 鏇存柊plc鏁版嵁鍧� - short[] arr = new short[] {basSte.getRow().shortValue(), basSte.getBay().shortValue(), basSte.getLev().shortValue()}; - OperateResult result = siemensS7Net.Write("V1002", arr); - if (result.IsSuccess) { - // 鏇存柊鏁版嵁搴� - if (service.updatePakMk(this.slave.getId(), "N")) { - return true; - } else { - News.error("{}鍙风┛姊溅淇敼鏁版嵁搴撳畾浣嶅け璐ワ紒锛侊紒", slave.getId()); - } - } - } - return false; - } - - public boolean modifyPosHandle(Integer row, Integer bay, Integer lev) { - short[] arr = new short[] {row.shortValue(), bay.shortValue(), lev.shortValue()}; - OperateResult result = siemensS7Net.Write("V1002", arr); - if (!result.IsSuccess) { - News.error("鏇存柊{}鍙风┛姊溅瀹氫綅澶辫触 ===>> 鎺掞細銆恵}銆�, 鍒楋細銆恵}銆戯紝灞傦細銆恵}銆�", this.slave.getId(), row, bay, lev); - return false; - } - BasSteService service = SpringUtils.getBean(BasSteService.class); - if (!service.updatePos(this.slave.getId(), row, bay, lev)) { - News.error("鏇存柊{}鍙风┛姊溅瀹氫綅澶辫触 ===>> 鎺掞細銆恵}銆�, 鍒楋細銆恵}銆戯紝灞傦細銆恵}銆�", this.slave.getId(), row, bay, lev); - return false; - } - return true; - } - - @Override - public void close() { - siemensS7Net.ConnectClose(); - } - - /** - * 蹇冭烦 - */ - private void heartbeat(){ - if (heartBeatVal == 1) { - heartBeatVal = 2; - } else { - heartBeatVal = 1; - } - OperateResult write = siemensS7Net.Write("D10", heartBeatVal); - if (!write.IsSuccess) { - News.error("杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId()); - } - } - -// public void modifyPos(int wrkNo, int row, int bay, int lev) { -// BasSteService service = SpringUtils.getBean(BasSteService.class); -// if (!service.updatePos(wrkNo,this.slave.getId(), row, bay, lev)) { -// News.error("鏇存柊{}鍙风┛姊溅瀹氫綅澶辫触 ===>> 鎺掞細銆恵}銆�, 鍒楋細銆恵}銆戯紝灞傦細銆恵}銆�", this.slave.getId(), row, bay, lev); -// } -// } - - /******************************************************************************************/ - /**************************************** 娴嬭瘯涓撶敤 *****************************************/ - /*****************************************************************************************/ - public static void main(String[] args) throws InterruptedException { - SteSlave slave = new SteSlave(); - slave.setId(1); - slave.setIp("192.168.2.1"); - slave.setPort(502); - SteThread thread = new SteThread(slave); - thread.connect(); - thread.readStatus(); - System.out.println(JSON.toJSONString(thread.steProtocol)); - - // 浠诲姟浣滀笟 -// SteCommand command = new SteCommand(); -// command.setSteNo(1); // 鍫嗗灈鏈虹紪鍙� -// Random random = new Random(); -// int taskNo = random.nextInt(9090); -// command.setTaskNo(taskNo); // 宸ヤ綔鍙� -// command.setTaskMode(SteTaskModeType.MOVE_LEFT); // 浠诲姟妯″紡 -// thread.write(command); - - // 浠诲姟瀹屾垚 -// SteCommand command = new SteCommand(); -// command.setSteNo(1); // 鍫嗗灈鏈虹紪鍙� -// command.setComplete(Boolean.TRUE); // 浠诲姟妯″紡 -// thread.write(command); - - // 鎺у埗妯″紡 -// SteCommand command = new SteCommand(); -// command.setControlMode((short) 1); -// thread.write(command); - - // 澶嶄綅淇″彿 -// SteCommand command = new SteCommand(); -// command.setReset(Boolean.TRUE); -// thread.write(command); - - // 鍒犻櫎鎸囦护 -// SteCommand command = new SteCommand(); -// command.setDelete(Boolean.TRUE); -// thread.write(command); - - // 绌挎杞﹁繍琛岀姝� - SteCommand command = new SteCommand(); - command.setRun((short)0); - thread.write(command); - - } - -} diff --git a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java new file mode 100644 index 0000000..b70f987 --- /dev/null +++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java @@ -0,0 +1,1150 @@ +package com.zy.core.thread.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.common.DateUtils; +import com.core.common.SpringUtils; +import com.core.exception.CoolException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.zy.asrs.entity.BasShuttle; +import com.zy.asrs.entity.DeviceDataLog; +import com.zy.asrs.entity.LocMast; +import com.zy.asrs.service.BasShuttleService; +import com.zy.asrs.service.DeviceDataLogService; +import com.zy.asrs.service.LocMastService; +import com.zy.asrs.utils.Utils; +import com.zy.common.ExecuteSupport; +import com.zy.common.model.MapNode; +import com.zy.common.model.NavigateNode; +import com.zy.common.model.enums.NavigationMapType; +import com.zy.common.utils.NavigateMapData; +import com.zy.common.utils.NavigatePositionConvert; +import com.zy.common.utils.RedisUtil; +import com.zy.core.News; +import com.zy.core.action.ShuttleAction; +import com.zy.core.cache.OutputQueue; +import com.zy.core.enums.*; +import com.zy.core.model.CommandResponse; +import com.zy.core.model.ShuttleSlave; +import com.zy.core.model.command.NyShuttleHttpCommand; +import com.zy.core.model.command.ShuttleCommand; +import com.zy.core.model.command.ShuttleRedisCommand; +import com.zy.core.model.param.ShuttleMoveLocParam; +import com.zy.core.model.protocol.ShuttleProtocol; +import com.zy.core.thread.ShuttleThread; +import com.zy.system.entity.Config; +import com.zy.system.service.ConfigService; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.net.Socket; +import java.text.MessageFormat; +import java.util.*; + +@Slf4j +@SuppressWarnings("all") +public class NyShuttleThread implements ShuttleThread { + + private ShuttleSlave slave; + private RedisUtil redisUtil; + private ShuttleProtocol shuttleProtocol; + private Socket socket; + + private static final boolean DEBUG = false;//璋冭瘯妯″紡 + + private List<JSONObject> socketResults = new ArrayList<>(); + + //鍘熷璁惧鏁版嵁 + private Object originDeviceData; + + public NyShuttleThread(ShuttleSlave slave, RedisUtil redisUtil) { + this.slave = slave; + this.redisUtil = redisUtil; + } + + @Override + public void run() { + News.info("{}鍙峰洓鍚戣溅绾跨▼鍚姩", slave.getId()); + this.connect(); + + //鐩戝惉娑堟伅骞跺瓨鍌� + Thread innerThread = new Thread(() -> { + while (true) { + try { + listenSocketMessage(); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + innerThread.start(); + + //璁惧璇诲彇 + Thread readThread = new Thread(() -> { + while (true) { + try { + read(); + Thread.sleep(50); + } catch (Exception e) { + log.error("ShuttleThread Fail", e); + } + } + }); + readThread.start(); + + //璁惧鎵ц + Thread executeThread = new Thread(() -> { + while (true) { + try { + ShuttleAction shuttleAction = SpringUtils.getBean(ShuttleAction.class); + if (shuttleAction == null) { + continue; + } + + Object object = redisUtil.get(RedisKeyType.SHUTTLE.key + slave.getId()); + if (object == null) { + continue; + } + + Integer taskNo = Integer.valueOf(String.valueOf(object)); + if (taskNo != 0) { + //瀛樺湪浠诲姟闇�瑕佹墽琛� + boolean result = shuttleAction.executeWork(slave.getId(), taskNo); + } + +// //灏忚溅绌洪棽涓旀湁璺戝簱绋嬪簭 +// shuttleAction.moveLoc(slave.getId()); + + Thread.sleep(200); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + executeThread.start(); + + //鍏朵粬浠诲姟 + Thread otherThread = new Thread(() -> { + while (true) { + try { + listenInit();//鐩戝惉鍒濆鍖栦簨浠� + saveLog();//淇濆瓨鏁版嵁 + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + otherThread.start(); + } + + private void saveLog() { + if (shuttleProtocol == null) { + return; + } + + if (System.currentTimeMillis() - shuttleProtocol.getDeviceDataLog() > 1000 * 5) { + if (this.originDeviceData != null) { + //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰� + //淇濆瓨鏁版嵁璁板綍 + DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class); + DeviceDataLog deviceDataLog = new DeviceDataLog(); + deviceDataLog.setOriginData(JSON.toJSONString(this.originDeviceData)); + deviceDataLog.setWcsData(JSON.toJSONString(shuttleProtocol)); + deviceDataLog.setType(String.valueOf(SlaveType.Shuttle)); + deviceDataLog.setDeviceNo(slave.getId()); + deviceDataLog.setCreateTime(new Date()); + deviceDataLogService.insert(deviceDataLog); + + //鏇存柊閲囬泦鏃堕棿 + shuttleProtocol.setDeviceDataLog(System.currentTimeMillis()); + } + } + + //灏嗗洓鍚戠┛姊溅鐘舵�佷繚瀛樿嚦鏁版嵁搴� + BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class); + BasShuttle basShuttle = shuttleService.selectOne(new EntityWrapper<BasShuttle>() + .eq("shuttle_no", slave.getId())); + + if (basShuttle == null) { + basShuttle = new BasShuttle(); + //鍥涘悜绌挎杞﹀彿 + basShuttle.setShuttleNo(slave.getId()); + basShuttle.setStatus(1); + shuttleService.insert(basShuttle); + } + //浠诲姟鍙� + basShuttle.setWrkNo(shuttleProtocol.getTaskNo().intValue()); + //淇敼鏃堕棿 + basShuttle.setUpdateTime(new Date()); + //璁惧鐘舵�� + basShuttle.setDeviceStatus(JSON.toJSONString(shuttleProtocol)); + if (shuttleService.updateById(basShuttle)) { + OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); + } + } + + private void listenSocketMessage() { + try { + if (this.socket == null) { + return; + } + + // 鑾峰彇杈撳叆娴� + BufferedReader reader = new BufferedReader(new InputStreamReader(this.socket.getInputStream())); + // 璇诲彇鏈嶅姟鍣ㄧ殑鍝嶅簲 + StringBuffer sb = new StringBuffer(); + char[] chars = new char[2048];//缂撳啿鍖� + while (true) { + reader.read(chars); + String trim = new String(chars); + sb.append(trim); + if (trim.lastIndexOf("\r\n") != -1) { + break; + } + } + + JSONObject result = JSON.parseObject(sb.toString());//寰楀埌鍝嶅簲缁撴灉闆� + if (!socketResults.isEmpty() && socketResults.size() >= 5) { + socketResults.remove(0);//娓呯悊澶磋妭鐐� + } + socketResults.add(result);//娣诲姞鏁版嵁 + } catch (Exception e) { +// e.printStackTrace(); + } + } + + public JSONObject getRequestBody(String type) { + try { + // 鑾峰彇鏈嶅姟鍣ㄥ搷搴� + JSONObject result = null; + if (type.equals("readState")) { + type = "state"; + } + + for (int i = 0; i < socketResults.size(); i++) { + JSONObject socketResult = socketResults.get(i); + if (!socketResult.get("msgType").equals("responseMsg")) {//涓嶆槸鍝嶅簲鍐呭 + continue; + } + + JSONObject resultResponse = JSON.parseObject(socketResult.get("response").toString()); + JSONObject resultBody = JSON.parseObject(resultResponse.get("body").toString()); + String responseType = resultBody.get("responseType").toString(); + if (DEBUG) { + result = socketResult; + break; + } + + if (!responseType.equals(type)) { + continue;//鍝嶅簲ID涓庤姹侷D涓嶄竴鑷达紝涓嶅湪璋冭瘯妯″紡涓� + } + + result = socketResult; + break; + } + + if (result == null) { + return null;//鏃犲搷搴旂粨鏋� + } + + return filterBodyData(result);//杩斿洖Body缁撴灉闆� + } catch (Exception e) { + return null; + } + } + + private void read() { + try { + if (this.socket == null || this.socket.isClosed()) { + //閾炬帴鏂紑閲嶆柊閾炬帴 + this.connect(); + } + readStatus(); + } catch (Exception e) { + e.printStackTrace(); + OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戣鍙栧洓鍚戠┛姊溅鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + } + } + + private void readStatus() { + try { + if (null == shuttleProtocol) { + shuttleProtocol = new ShuttleProtocol(); + shuttleProtocol.setShuttleNo(slave.getId()); + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); + + InnerSuhttleExtend extend = new InnerSuhttleExtend(); + shuttleProtocol.setExtend(extend); + } + + //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�----------- + NyShuttleHttpCommand readStatusCommand = getReadStatusCommand(slave.getId()); + JSONObject data = requestCommand(readStatusCommand); + if (data == null) { + if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) { + //鏈�鍚庝竴娆′笂绾挎椂闂磋秴杩�60s锛岃瀹氱绾� + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE); + } + OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + }else { + + //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�----------- + //灏忚溅璁惧鐘舵�� + shuttleProtocol.setDeviceStatus(data.getInteger("free")); + //灏忚溅妯″紡 + shuttleProtocol.setMode(data.getInteger("workingMode")); + //褰撳墠浜岀淮鐮� + shuttleProtocol.setCurrentCode(data.getString("point")); + //鐢垫睜鐢甸噺 + shuttleProtocol.setBatteryPower(data.getString("powerPercent")); + //鐢垫睜鐢靛帇 + shuttleProtocol.setBatteryVoltage(data.getInteger("voltage")); + //鏁呴殰 + shuttleProtocol.setErrorCode(data.getJSONArray("errCode").getString(0)); + + //鏄惁椤跺崌 + shuttleProtocol.setHasLift(data.getInteger("liftPosition") == 2 ? true : false); + //鏄惁鏈夋墭鐩� + shuttleProtocol.setHasPallet(data.getInteger("loadState") == 1 ? true : false); + //琛岄┒鏂瑰悜 + shuttleProtocol.setRunDirection(data.getString("runDir") == null ? "none" : data.getString("runDir")); + //鏄惁涓哄厖鐢电姸鎬� + shuttleProtocol.setHasCharge(data.getInteger("chargState") == 1 ? true : false); + + //*********璇诲彇鎵╁睍瀛楁********** + InnerSuhttleExtend extend = (InnerSuhttleExtend) shuttleProtocol.getExtend(); + //绠″埗鐘舵�� + extend.setSuspendState(data.getInteger("suspendState")); + //褰撳墠閫熷害 + extend.setSpeed(data.getInteger("speed")); + //鍓╀綑鐢甸噺 + extend.setSurplusQuantity(data.getInteger("surplusQuantity")); + //鎬荤數閲� + extend.setCountQuantity(data.getInteger("countQuantity")); + shuttleProtocol.setExtend(extend);//鎵╁睍瀛楁 + + //鏈�杩戜竴娆″湪绾挎椂闂� + shuttleProtocol.setLastOnlineTime(System.currentTimeMillis()); + ///璇诲彇鍥涘悜绌挎杞︾姸鎬�-end + + //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓簍rue + if (shuttleProtocol.getDeviceStatus() == 1) { + shuttleProtocol.setPakMk(true); + } + + if (shuttleProtocol.getProtocolStatusType() == null && shuttleProtocol.getDeviceStatus().intValue() == 0) { + //灏忚溅绌洪棽鐘舵�併�佸皬杞︿换鍔$姸鎬佷负鏈煡锛岃瀹氭浘绂荤嚎杩囷紝闇�瑕佸浣嶆垚绌洪棽 + shuttleProtocol.setProtocolStatusType(ShuttleProtocolStatusType.IDLE); + } + + this.originDeviceData = data; + + OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); + } + } catch (Exception e) { + e.printStackTrace(); + OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + try { + this.socket.close(); + this.socket = null; + Thread.sleep(1000); + this.connect(); + } catch (IOException | InterruptedException exception) { + e.printStackTrace(); + } + } + } + + /** + * 鐩戝惉灏忚溅澶嶄綅鍒濆鍖栦俊鍙� + */ + public void listenInit() { + try { + // 鑾峰彇鏈嶅姟鍣ㄥ搷搴� + JSONObject result = null; + int removeIdx = -1; + for (int i = 0; i < socketResults.size(); i++) { + JSONObject socketResult = socketResults.get(i); + if (!socketResult.get("msgType").equals("requestMsg")) {//涓嶆槸璇锋眰鍐呭 + continue; + } + + JSONObject resultResponse = JSON.parseObject(socketResult.get("request").toString()); + JSONObject resultHeader = JSON.parseObject(resultResponse.get("header").toString()); + JSONObject resultBody = JSON.parseObject(resultResponse.get("body").toString()); + String requestType = resultBody.getString("requestType"); + Integer requestId = resultHeader.getInteger("requestId"); + if (requestType.equals("init")) { + Integer code = resultBody.getInteger("code"); + //灏忚溅澶嶄綅璇锋眰 + ShuttleCommand initCommand = getInitCommand(requestId, code); + //鍙戝嚭璇锋眰 + NyShuttleHttpCommand httpCommand = JSON.parseObject(initCommand.getBody(), NyShuttleHttpCommand.class); + JSONObject requestResult = requestCommand(httpCommand); + + removeIdx = i;//姝ゆ暟鎹凡缁忓鐞嗭紝浠庣粨鏋滈泦涓墧闄� + + log.info(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", slave.getId(), code, slave.getIp(), slave.getPort())); + OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", slave.getId(), code, slave.getIp(), slave.getPort())); + break; + } + } + + if (removeIdx != -1) { + socketResults.remove(removeIdx); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public ShuttleProtocol getStatus() { + return getStatus(true); + } + + @Override + public ShuttleProtocol getStatus(boolean clone) { + if (this.shuttleProtocol == null) { + return null; + } + return clone ? this.shuttleProtocol.clone() : this.shuttleProtocol; + } + + @Override + public CommandResponse movePath(List<NavigateNode> nodes, Integer taskNo) { + CommandResponse response = new CommandResponse(true); + return response; + } + + @Override + public CommandResponse move(ShuttleCommand command) { + CommandResponse response = new CommandResponse(false); + try { + //鍙戝嚭璇锋眰 + NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); + Map<String, Object> body = httpCommand.getRequest().getBody(); + Object pathObj = body.get("path"); + int taskId = Integer.parseInt(body.get("taskId").toString()); + List<JSONObject> path = JSON.parseArray(JSON.toJSONString(pathObj), JSONObject.class); + ArrayList<NyShuttleHttpCommand> commandList = new ArrayList<>(); + while (!path.isEmpty()) { + ArrayList<Map<String, Object>> list = new ArrayList<>(); + if (path.size() > 10) { + List<JSONObject> subList = path.subList(0, 10); + list.addAll(subList); + + List<JSONObject> tmp = new ArrayList<>(); + for (int i = 10; i < path.size(); i++) { + tmp.add(path.get(i)); + } + path = tmp; + }else { + list.addAll(path); + path.clear(); + } + + NyShuttleHttpCommand httpCommandCopy = JSON.parseObject(JSON.toJSONString(httpCommand), NyShuttleHttpCommand.class); + JSONObject bodyCopy = JSON.parseObject(JSON.toJSONString(body)); + + NyShuttleHttpCommand.NyRequest request = httpCommandCopy.getRequest(); + bodyCopy.put("path", list); + bodyCopy.put("taskId", taskId++); + request.setBody(bodyCopy); + httpCommandCopy.setRequest(request); + + commandList.add(httpCommandCopy);//add copy + } + + for (NyShuttleHttpCommand requestCommand : commandList) { + JSONObject result = requestCommand(requestCommand); + if (result == null) { + return response;//璇锋眰澶辫触 + } + this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 + response.setMessage(JSON.toJSONString(result)); + response.setResult(true); + } + return response; + } catch (Exception e) { + e.printStackTrace(); + response.setMessage(e.getMessage()); + return response; + } + } + + @Override + public CommandResponse lift(ShuttleCommand command) { + CommandResponse response = new CommandResponse(false); + try { + //鍙戝嚭璇锋眰 + NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); + JSONObject result = requestCommand(httpCommand); + if (result == null) { + return response;//璇锋眰澶辫触 + } + this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 + response.setMessage(JSON.toJSONString(result)); + response.setResult(true); + return response; + } catch (Exception e) { + e.printStackTrace(); + return response; + } + } + + @Override + public CommandResponse charge(ShuttleCommand command) { + CommandResponse response = new CommandResponse(false); + try { + //鍙戝嚭璇锋眰 + NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); + JSONObject result = requestCommand(httpCommand); + if (result == null) { + return response;//璇锋眰澶辫触 + } + this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 + response.setMessage(JSON.toJSONString(result)); + response.setResult(true); + return response; + } catch (Exception e) { + e.printStackTrace(); + return response; + } + } + + @Override + public CommandResponse reset(ShuttleCommand command) { + setSyncTaskNo(0); + setProtocolStatus(ShuttleProtocolStatusType.IDLE); + enableMoveLoc(null, false); + return new CommandResponse(true, JSON.toJSONString(command)); + } + + @Override + public CommandResponse updateLocation(ShuttleCommand command) { + CommandResponse response = new CommandResponse(false); + try { + //鍙戝嚭璇锋眰 + NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); + JSONObject result = requestCommand(httpCommand); + if (result == null) { + return response;//璇锋眰澶辫触 + } + this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 + response.setMessage(JSON.toJSONString(result)); + response.setResult(true); + return response; + } catch (Exception e) { + e.printStackTrace(); + return response; + } + } + + @Override + public boolean isIdle() { + return this.isIdle(null); + } + + @Override + public boolean isIdle(ExecuteSupport support) { + if (null != support) { + Boolean judgement = support.judgement(); + if (judgement != null && !judgement) { + return true; + } + } + + if (this.shuttleProtocol.getDeviceStatus() == null + || this.shuttleProtocol.getPakMk() == null + || this.shuttleProtocol.getErrorCode() == null + || this.shuttleProtocol.getProtocolStatus() == null + || this.shuttleProtocol.getMode() == null + || this.shuttleProtocol.getExtend() == null + ) { + return false; + } + + InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); + + boolean res = this.shuttleProtocol.getDeviceStatus() == 1 + && this.shuttleProtocol.getMode() == 1 + && this.shuttleProtocol.getPakMk() + && this.shuttleProtocol.getErrorCode().equals("0") + && (this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id + || this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id + || this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id) + && extend.getSuspendState() == 0; + return res; + } + + @Override + public boolean isDeviceIdle() { + return isDeviceIdle(null); + } + + @Override + public boolean isDeviceIdle(ExecuteSupport support) { + if (null != support) { + Boolean judgement = support.judgement(); + if (judgement != null && !judgement) { + return true; + } + } + + if (this.shuttleProtocol.getDeviceStatus() == null + || this.shuttleProtocol.getPakMk() == null + || this.shuttleProtocol.getErrorCode() == null + || this.shuttleProtocol.getMode() == null + || this.shuttleProtocol.getExtend() == null + ) { + return false; + } + + InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); + + boolean res = this.shuttleProtocol.getDeviceStatus() == 1 + && this.shuttleProtocol.getMode() == 1 + && this.shuttleProtocol.getPakMk() + && this.shuttleProtocol.getErrorCode().equals("0") + && extend.getSuspendState() == 0 + ; + return res; + } + + @Override + public boolean isRequireCharge() { + if (this.shuttleProtocol.getDeviceStatus() == null + || this.shuttleProtocol.getPakMk() == null + || this.shuttleProtocol.getErrorCode() == null + || this.shuttleProtocol.getProtocolStatus() == null + || this.shuttleProtocol.getMode() == null + || this.shuttleProtocol.getExtend() == null + ) { + return false; + } + + InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); + + boolean res = this.shuttleProtocol.getDeviceStatus() == 1 + && this.shuttleProtocol.getMode() == 1 + && this.shuttleProtocol.getPakMk() + && this.shuttleProtocol.getErrorCode().equals("0") + && this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id + && extend.getSuspendState() == 0 + ; + if (!res) { + return res; + } else { + // 鐢甸噺灏忎簬闃堝�奸渶瑕佽繘琛屽厖鐢� + try { + BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class); + if (shuttleService == null) { + return false; + } + BasShuttle basShuttle = shuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", slave.getId())); + if (basShuttle == null) { + return false; + } + Integer chargeLine = basShuttle.getChargeLine(); + if (chargeLine == null) { + return false; + } + return Integer.valueOf(this.shuttleProtocol.getBatteryPower()) < chargeLine; + } catch (Exception e) { + return false; + } + } + } + + @Override + public boolean isCharging() { + if (this.shuttleProtocol.getDeviceStatus() == null || this.shuttleProtocol.getHasCharge() == null) { + return false; + } + + if (this.shuttleProtocol.getDeviceStatus() == 0 && this.shuttleProtocol.getHasCharge()) { + //杩愯涓� && 鍏呯數涓� + return true; + } + return false; + } + + @Override + public boolean isChargingCompleted() { + Integer maxPower = 100; + ConfigService configService = SpringUtils.getBean(ConfigService.class); + if (configService != null) { + Config chargeMaxValue = configService.selectOne(new EntityWrapper<Config>() + .eq("code", "chargeMaxValue") + .eq("status", 1)); + if (chargeMaxValue != null) { + maxPower = Integer.parseInt(chargeMaxValue.getValue()); + } + } + + if (this.shuttleProtocol.getHasCharge() == null) { + return false; + } + + if (this.shuttleProtocol.getBatteryPower() == null) { + return false; + } + + if (!this.shuttleProtocol.getHasCharge()) { + return false; + } + + if (Integer.valueOf(this.shuttleProtocol.getBatteryPower()) >= maxPower) { + return true; + } + return false; + } + + @Override + public List<NavigateNode> getMoveAdvancePath() { + ObjectMapper objectMapper = SpringUtils.getBean(ObjectMapper.class); + NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); + ArrayList<NavigateNode> path = new ArrayList<>(); + if (shuttleProtocol.getTaskNo() != 0) { + //瀛樺湪浠诲姟锛岃幏鍙栨寚浠� + Object object = redisUtil.get(RedisKeyType.SHUTTLE.key + shuttleProtocol.getTaskNo()); + if (object != null) { + ShuttleRedisCommand redisCommand = null; + try { + redisCommand = objectMapper.readValue(String.valueOf(object), ShuttleRedisCommand.class); + } catch (IOException e) { + return path; + } + List<NavigateNode> nodes = redisCommand.getAssignCommand().getNodes();//绌挎杞﹂璁¤矾寰� + if (nodes == null) { + return path; + } + if (!nodes.isEmpty()) { + path.addAll(nodes); + } + NavigateNode navigateNode = path.get(0); + int lev = navigateNode.getZ(); + + //灏嗚矾寰勯攣涓庡皬杞﹁矾寰勮繘琛屽尮閰� + ArrayList<NavigateNode> tmp = new ArrayList<>(); + //妫�娴嬭矾寰勬槸鍚﹁閿佸畾 + int[][] map = navigateMapData.getDataFromRedis(lev, NavigationMapType.DFX.id, null, null); + for (NavigateNode node : path) { + if(map[node.getX()][node.getY()] == -999) { + tmp.add(node); + } + } + + path = tmp; + } + } + return path; + } + + @Override + public int generateDeviceTaskNo(int taskNo, ShuttleTaskNoType type) { + return taskNo; + } + + @Override + public synchronized boolean setProtocolStatus(ShuttleProtocolStatusType status) { + this.shuttleProtocol.setProtocolStatus(status); + return true; + } + + @Override + public synchronized boolean setTaskNo(Integer taskNo) { + this.shuttleProtocol.setTaskNo(taskNo); + return true; + } + + @Override + public synchronized boolean setSyncTaskNo(Integer taskNo) { + this.shuttleProtocol.setSyncTaskNo(taskNo); + return true; + } + + @Override + public synchronized boolean setPakMk(boolean pakMk) { + this.shuttleProtocol.setPakMk(pakMk); + return true; + } + + @Override + public boolean enableMoveLoc(ShuttleMoveLocParam param, boolean enable) { + if (enable) { + shuttleProtocol.setMoveLoc(true);//寮�鍚窇搴� + shuttleProtocol.setMoveType(param.getMoveType()); + shuttleProtocol.setXStart(param.getStartX()); + shuttleProtocol.setXTarget(param.getTargetX()); + shuttleProtocol.setXCurrent(param.getStartX()); + shuttleProtocol.setYStart(param.getStartY()); + shuttleProtocol.setYTarget(param.getTargetY()); + shuttleProtocol.setYCurrent(param.getStartY()); + }else { + shuttleProtocol.setMoveLoc(false); + shuttleProtocol.setMoveType(0); + shuttleProtocol.setXStart(0); + shuttleProtocol.setXTarget(0); + shuttleProtocol.setXCurrent(0); + shuttleProtocol.setYStart(0); + shuttleProtocol.setYTarget(0); + shuttleProtocol.setYCurrent(0); + } + return true; + } + + @Override + public boolean requestWaiting() { + if (this.shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.IDLE)) { + this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); + return true; + } + return false; + } + + @Override + public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes) { + NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); + NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo); + NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); + + ArrayList<HashMap<String, Object>> path = new ArrayList<>(); + + Integer taskId = getTaskId(); + HashMap<String, Object> body = new HashMap<>(); + body.put("requestType", "move");//绉诲姩鍛戒护 + body.put("taskId", taskId);//TaskID闇�瑕侀殢鏈� +// body.put("start", navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(startCodeNum, device.getHostId())));//璧风偣 +// body.put("target", navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(distCodeNum, device.getHostId())));//缁堢偣 + body.put("path", path); + request.setBody(body); + + NavigateNode startNode = nodes.get(0); + for (NavigateNode node : nodes) { + HashMap<String, Object> data = new HashMap<>(); + String codeNum = NavigatePositionConvert.xyToPosition(node.getX(), node.getY(), node.getZ()); + Map<String, Object> nyNode = navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(codeNum)); + int xp = Integer.parseInt(String.valueOf(nyNode.get("y"))); + int yp = Integer.parseInt(String.valueOf(nyNode.get("x"))); + int z = Integer.parseInt(String.valueOf(nyNode.get("z"))); + + List<List<MapNode>> mapData = navigateMapData.getJsonData(startNode.getZ(), NavigationMapType.NONE.id, null, null); + List<MapNode> mapNodes = mapData.get(node.getX()); + MapNode mapNode = mapNodes.get(node.getY()); + + data.put("xp", xp); + data.put("yp", yp); + data.put("z", z); + data.put("x", mapNode.getYBase()); + data.put("y", mapNode.getXBase()); + path.add(data); + } + + httpStandard.setRequest(request); + + LocMastService locMastService = SpringUtils.getBean(LocMastService.class); + LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() + .eq("code", distCodeNum)); + if (locMast == null) { + throw new CoolException("搴撲綅淇℃伅涓嶅瓨鍦�"); + } + + ShuttleCommand command = new ShuttleCommand(); + command.setShuttleNo(slave.getId()); + command.setBody(JSON.toJSONString(httpStandard)); + command.setMode(ShuttleCommandModeType.MOVE.id); + command.setTargetLocNo(locMast.getLocNo()); + command.setTaskNo(taskId); + return command; + } + + @Override + public ShuttleCommand getLiftCommand(Integer taskNo, Boolean lift) { + NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo); + NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); + + Integer taskId = getTaskId();//TaskID闇�瑕侀殢鏈� + HashMap<String, Object> body = new HashMap<>(); + body.put("requestType", lift ? "liftUp" : "liftDown");//椤跺崌鎴栦笅闄嶅懡浠� + body.put("taskId", taskId); + request.setBody(body); + + httpStandard.setRequest(request); + + ShuttleCommand command = new ShuttleCommand(); + command.setShuttleNo(slave.getId()); + command.setBody(JSON.toJSONString(httpStandard)); + command.setMode(lift ? ShuttleCommandModeType.PALLET_LIFT.id : ShuttleCommandModeType.PALLET_DOWN.id); + command.setTaskNo(taskId); + return command; + } + + @Override + public ShuttleCommand getChargeCommand(Integer taskNo, Boolean charge) { + NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo); + NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); + + Integer taskId = getTaskId();//TaskID闇�瑕侀殢鏈� + HashMap<String, Object> body = new HashMap<>(); + body.put("requestType", charge ? "charge" : "stopCharge");//鍏呯數鎴栧仠姝㈠厖鐢� + body.put("taskId", taskId); + request.setBody(body); + + httpStandard.setRequest(request); + + ShuttleCommand command = new ShuttleCommand(); + command.setShuttleNo(slave.getId()); + command.setBody(JSON.toJSONString(httpStandard)); + command.setMode(charge ? ShuttleCommandModeType.CHARGE_OPEN.id : ShuttleCommandModeType.CHARGE_CLOSE.id); + command.setTaskNo(taskId); + return command; + } + + @Override + public ShuttleCommand getUpdateLocationCommand(Integer taskNo, String locNo) { + NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo); + NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); + + HashMap<String, Object> body = new HashMap<>(); + body.put("requestType", "updateFloor");//鏇存柊灞俍 + body.put("z", Utils.getLev(locNo));//鍧愭爣Z + request.setBody(body); + + httpStandard.setRequest(request); + + ShuttleCommand command = new ShuttleCommand(); + command.setShuttleNo(slave.getId()); + command.setBody(JSON.toJSONString(httpStandard)); + command.setMode(ShuttleCommandModeType.UPDATE_LOCATION.id); + command.setTaskNo(taskNo); + return command; + } + + //鑾峰彇灏忚溅澶嶄綅鍝嶅簲鍛戒护 + public ShuttleCommand getInitCommand(Integer taskNo, Integer code) { + LocMastService locMastService = SpringUtils.getBean(LocMastService.class); + NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); + NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo); + NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); + + //code -> {Integer@13781} 1101101 + int lev = code % 100; + int bay = code / 100 % 1000; + int row = code / 100000; + + HashMap<String, Object> map = new HashMap<>(); + map.put("x", row); + map.put("y", bay); + map.put("z", lev); + + String mapStr = JSON.toJSONString(map); + LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() + .eq("code", mapStr) + .eq("status", 1)); + if (locMast == null) { + throw new CoolException("鍦板潃鐮佷笉瀛樺湪"); + } + + List<List<MapNode>> mapData = navigateMapData.getJsonData(lev, NavigationMapType.NONE.id, null, null); + List<MapNode> mapNodes = mapData.get(locMast.getRow1()); + MapNode mapNode = mapNodes.get(locMast.getBay1()); + + HashMap<String, Object> location = new HashMap<>(); + location.put("xp", row); + location.put("yp", bay); + location.put("z", lev); + location.put("x", mapNode.getYBase()); + location.put("y", mapNode.getXBase()); + + HashMap<String, Object> body = new HashMap<>(); + body.put("responseType", "init");//澶嶄綅 + body.put("location", location);//鍒濆鍖栧潗鏍� + body.put("devicePoints", new ArrayList<>());//鎻愬崌鏈虹偣浣� + body.put("specialPoints", new ArrayList<>());//鐗规畩鏉$爜鍧愭爣 + request.setBody(body); + + httpStandard.setRequest(request); + + ShuttleCommand command = new ShuttleCommand(); + command.setShuttleNo(slave.getId()); + command.setBody(JSON.toJSONString(httpStandard)); + command.setMode(ShuttleCommandModeType.RESET.id); + command.setTaskNo(taskNo); + return command; + } + + @Override + public boolean connect() { + try { + Socket socket = new Socket(slave.getIp(), slave.getPort()); + socket.setSoTimeout(10000); + socket.setKeepAlive(true); + this.socket = socket; + log.info(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + } catch (IOException e) { + OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + return false; + } + + return true; + } + + @Override + public void close() { + + } + + //鑾峰彇HTTP璇锋眰鏍囧噯缁撴瀯浣� + private NyShuttleHttpCommand getHttpStandard(Integer shuttleNo, Integer taskNo) { + NyShuttleHttpCommand httpStandard = new NyShuttleHttpCommand(); + httpStandard.setMsgType("requestMsg");//璇锋眰娑堟伅 + httpStandard.setRobotId(shuttleNo);//杞﹁締缂栧彿 + httpStandard.setTaskNo(taskNo);//宸ヤ綔鍙� + + //璁剧疆璇锋眰娑堟伅 + NyShuttleHttpCommand.NyRequest request = new NyShuttleHttpCommand.NyRequest(); + NyShuttleHttpCommand.NyRequest.NyHeader header = new NyShuttleHttpCommand.NyRequest.NyHeader(); + header.setVersion("1.0");//鐗堟湰鍙� + header.setRequestId(getRequestId());//娑堟伅缂栧彿 + + //璁剧疆璇锋眰澶� + request.setHeader(header); + httpStandard.setRequest(request); + return httpStandard; + } + + //鑾峰彇璇锋眰缂栧彿 + private Integer getRequestId() { + Random random = new Random(); + return random.nextInt(9999999); + } + + //鑾峰彇TaskId + private static Integer getTaskId() { + Random random = new Random(); + return random.nextInt(999999); + } + + //鑾峰彇璇籉AS鐘舵�佷俊鎭懡浠� + private NyShuttleHttpCommand getReadStatusCommand(Integer shuttleNo) { + NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, 9999); + NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); + + HashMap<String, Object> body = new HashMap<>(); + body.put("requestType", "readState");//璇籉AS鐘舵�佷俊鎭� + request.setBody(body); + + httpStandard.setRequest(request); + return httpStandard; + } + + //鍙戝嚭璇锋眰 + private JSONObject requestCommand(NyShuttleHttpCommand httpCommand) throws IOException { + if (this.socket == null) { + return null; + } + + //鍘嬬缉鏁版嵁鍖� + JSONObject data = JSON.parseObject(JSON.toJSONString(httpCommand)); + data.remove("nodes"); + + // 鑾峰彇杈撳嚭娴� + OutputStreamWriter writer = new OutputStreamWriter(this.socket.getOutputStream()); + writer.write(JSON.toJSONString(data) + "\r\n"); + writer.flush(); +// System.out.println("Sent message to server: " + JSON.toJSONString(httpCommand)); + + String requestType = null; + try { + requestType = httpCommand.getRequest().getBody().get("requestType").toString(); + } catch (Exception e) { + return null; + } + + // 鑾峰彇鏈嶅姟鍣ㄥ搷搴� + // 灏濊瘯10娆� + JSONObject result = null; + for (int i = 0; i < 10; i++) { + result = getRequestBody(requestType); + if (result == null) { + try { + Thread.sleep(100); + } catch (Exception e) { + e.printStackTrace(); + } + }else { + break; + } + } + return result;//杩斿洖Body缁撴灉闆� + } + + private JSONObject filterBodyData(JSONObject data) { + Object response = data.get("response"); + if (response == null) { + return null; + } + + JSONObject result = JSON.parseObject(response.toString()); + Object body = result.get("body"); + if (body == null) { + return null; + } + JSONObject jsonBody = JSON.parseObject(body.toString()); + return jsonBody; + } + + //鍦板浘鑺傜偣杞崲鐗涚溂鑺傜偣 + private static Map<String, Object> navigateNodeToNyPointNode(NavigateNode node) { + int[] NyPosition = WCSXyzToNyXyz(node.getX(), node.getY(), node.getZ());//WCS绯荤粺鍧愭爣杞墰鐪煎潗鏍� + HashMap<String, Object> point = new HashMap<>(); + point.put("x", NyPosition[0]); + point.put("y", NyPosition[1]); + point.put("z", NyPosition[2]); + return point; + } + + //WCS绯荤粺鍧愭爣杞墰鐪煎潗鏍� + private static int[] WCSXyzToNyXyz(int x, int y, int z) { +// //WCS绯荤粺Y杞� => 鐗涚溂X杞磋浆鎹㈠叕寮� +// int x1 = Math.abs(y - 61) + 11; +// //WCS绯荤粺X杞� => 鐗涚溂Y杞磋浆鎹㈠叕寮� +// int y1 = x + 10; + int x1 = x + 10; + int y1 = y + 10; + return new int[]{y1, x1, z}; + } + + @Data + private class InnerSuhttleExtend { + + /** + * 绠″埗鐘舵�佷笉鍦ㄧ鍒朵笅/琚鍒朵腑 + * 0/1 + */ + private Integer suspendState; + + /** + * 褰撳墠閫熷害锛屽崟浣峬m/s + */ + private Integer speed; + + /** + * 鍓╀綑鐢甸噺/10(A) + */ + private Integer surplusQuantity; + + /** + * 鎬荤數閲�/10(A) + */ + private Integer countQuantity; + + } +} diff --git a/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java b/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java new file mode 100644 index 0000000..82bc397 --- /dev/null +++ b/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java @@ -0,0 +1,277 @@ +package com.zy.core.thread.impl; + +import HslCommunication.Core.Types.OperateResultExOne; +import HslCommunication.Profinet.Siemens.SiemensS7Net; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.common.DateUtils; +import com.core.common.SpringUtils; +import com.zy.asrs.entity.BasLift; +import com.zy.asrs.entity.DeviceDataLog; +import com.zy.asrs.service.BasLiftService; +import com.zy.asrs.service.DeviceDataLogService; +import com.zy.asrs.utils.Utils; +import com.zy.common.ExecuteSupport; +import com.zy.common.utils.RedisUtil; +import com.zy.core.News; +import com.zy.core.cache.OutputQueue; +import com.zy.core.enums.ForkLiftProtocolStatusType; +import com.zy.core.enums.ForkLiftTaskModeType; +import com.zy.core.model.CommandResponse; +import com.zy.core.model.ForkLiftSlave; +import com.zy.core.model.command.ForkLiftCommand; +import com.zy.core.model.protocol.ForkLiftProtocol; +import com.zy.core.model.protocol.ForkLiftStaProtocol; +import com.zy.core.thread.ForkLiftThread; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +import java.text.MessageFormat; +import java.util.*; + +@Slf4j +@SuppressWarnings("all") +public class ZyForkLiftThread implements ForkLiftThread { + + private ForkLiftSlave slave; + private ForkLiftProtocol forkLiftProtocol; + private RedisUtil redisUtil; + private SiemensS7Net siemensS7Net; + private List<ForkLiftStaProtocol> forkLiftStaProtocols = new ArrayList<>(); + + public ZyForkLiftThread(ForkLiftSlave slave, RedisUtil redisUtil) { + this.slave = slave; + this.redisUtil = redisUtil; + //鍒濆鍖栫珯鐐� + for (ForkLiftSlave.Sta sta : this.slave.getSta()) { + ForkLiftStaProtocol forkLiftStaProtocol = new ForkLiftStaProtocol(); + forkLiftStaProtocol.setStaNo(sta.getStaNo());//绔欑偣鍙� + forkLiftStaProtocol.setLev(sta.getLev());//绔欑偣妤煎眰 + String locNo = Utils.getLocNo(this.slave.getStaRow(), this.slave.getStaBay(), sta.getLev()); + forkLiftStaProtocol.setLocNo(locNo);//绔欑偣搴撲綅鍙� + forkLiftStaProtocol.setLiftNo(sta.getLiftNo());//鎻愬崌鏈哄彿 + forkLiftStaProtocols.add(forkLiftStaProtocol); + } + } + + @Override + public boolean connect() { + return false; + } + + @Override + public void close() { + + } + + @Override + public void run() { + News.info("{}鍙疯揣鍙夋彁鍗囨満绾跨▼鍚姩", slave.getId()); + this.connect(); + while (true) { + try { + read(); + Thread.sleep(200); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + private void read() { + try { + readStatus(); + + //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓簍rue + if (forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.PICK_UP) + || forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.PUT_DOWN) + || forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.WAITING)) { + forkLiftProtocol.setPakMk(true); + } + } catch (Exception e) { + OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栨彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + } + } + + private void readStatus() { + try { + //鑾峰彇鎻愬崌鏈烘暟鎹� + OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB101.0", (short) 32); + if (result1.IsSuccess) { + if (null == forkLiftProtocol) { + forkLiftProtocol = new ForkLiftProtocol(); + forkLiftProtocol.setLiftNo(slave.getId()); + forkLiftProtocol.setProtocolStatus(ForkLiftProtocolStatusType.NONE); + + InnerForkLiftExtend innerForkLiftExtend = new InnerForkLiftExtend(); + } + + //----------璇诲彇鎻愬崌鏈虹姸鎬�----------- + //妯″紡 + forkLiftProtocol.setModel((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 0)); + //浠诲姟鍙� + forkLiftProtocol.setTaskNo((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 4)); + //浠诲姟鐘舵�� + forkLiftProtocol.setProtocolStatus((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 8)); + //浠诲姟妯″紡 + forkLiftProtocol.setModel((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 12)); + //鍙栬揣鏁版嵁 + forkLiftProtocol.setPick((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 16)); + //鏀捐揣鏁版嵁 + forkLiftProtocol.setPut((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 20)); + //鍑哄叆搴撴ā寮� + forkLiftProtocol.setIOMode((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 24)); + //鏁呴殰鐮� + forkLiftProtocol.setErrorCode((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 28)); + + //************琛ュ厖鎵╁睍瀛楁************* + InnerForkLiftExtend forkLiftExtend = (InnerForkLiftExtend) forkLiftProtocol.getExtend(); + forkLiftProtocol.setExtend(forkLiftExtend); + + }else { + OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆憑1}璇诲彇璐у弶鎻愬崌鏈虹姸鎬佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId())); + } + + if (System.currentTimeMillis() - forkLiftProtocol.getDeviceDataLog() > 1000 * 5) { + //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰� + //淇濆瓨鏁版嵁璁板綍 + DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class); + DeviceDataLog deviceDataLog = new DeviceDataLog(); + deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result1.Content)); + deviceDataLog.setWcsData(JSON.toJSONString(forkLiftProtocol)); + deviceDataLog.setType("forkLift"); + deviceDataLog.setDeviceNo(forkLiftProtocol.getLiftNo()); + deviceDataLog.setCreateTime(new Date()); + deviceDataLogService.insert(deviceDataLog); + + //鏇存柊閲囬泦鏃堕棿 + forkLiftProtocol.setDeviceDataLog(System.currentTimeMillis()); + } + + //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴� + BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class); + BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>() + .eq("lift_no", slave.getId())); + if (basLift == null) { + basLift = new BasLift(); + //鎻愬崌鏈哄彿 + basLift.setLiftNo(forkLiftProtocol.getLiftNo()); + basLift.setStatus(1); + basLiftService.insert(basLift); + } + //浠诲姟鍙� + basLift.setWrkNo(forkLiftProtocol.getTaskNo()); + //淇敼鏃堕棿 + basLift.setUpdateTime(new Date()); + //璁惧鐘舵�� + basLift.setDeviceStatus(JSON.toJSONString(forkLiftProtocol)); + if (basLiftService.updateById(basLift)) { + OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), forkLiftProtocol.getLiftNo())); + } + + } catch (Exception e) { + OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栬揣鍙夋彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + } + } + + @Override + public ForkLiftProtocol getStatus(boolean clone) { + if (this.forkLiftProtocol == null) { + return null; + } + return clone ? this.forkLiftProtocol.clone() : this.forkLiftProtocol; + } + + @Override + public List<ForkLiftStaProtocol> getForkLiftStaProtocols() { + return this.forkLiftStaProtocols; + } + + @Override + public ForkLiftProtocol getStatus() { + return getStatus(true); + } + + @Override + public CommandResponse pickAndPut(ForkLiftCommand command) { + return null; + } + + @Override + public CommandResponse shuttleSwitch(ForkLiftCommand command) { + return null; + } + + @Override + public CommandResponse reset(ForkLiftCommand command) { + return null; + } + + @Override + public boolean isIdle() { + return false; + } + + @Override + public boolean isDeviceIdle() { + return false; + } + + @Override + public boolean isDeviceIdle(ExecuteSupport support) { + return false; + } + + @Override + public boolean setProtocolStatus(ForkLiftProtocolStatusType status) { + return false; + } + + @Override + public boolean setSyncTaskNo(Integer taskNo) { + return false; + } + + @Override + public int generateDeviceTaskNo(int taskNo, ForkLiftTaskModeType type) { + return 0; + } + + @Override + public List<ForkLiftCommand> getPickAndPutCommand(Integer taskNo, Integer pick, Integer put) { + List<ForkLiftCommand> commands = new ArrayList<>(); + ForkLiftCommand command = new ForkLiftCommand(); + command.setLiftNo(slave.getId()); + command.setTaskNo(taskNo.shortValue()); + command.setMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue()); + command.setPick(pick.shortValue()); + command.setPut(put.shortValue()); + command.setConfirm((short) 1); + + commands.add(command); + return commands; + } + + @Override + public List<ForkLiftCommand> getShuttleSwitchCommand(Integer taskNo, Integer originLev, Integer targetLev) { + List<ForkLiftCommand> commands = new ArrayList<>(); + ForkLiftCommand command = new ForkLiftCommand(); + command.setLiftNo(slave.getId()); + command.setTaskNo(taskNo.shortValue()); + command.setMode(ForkLiftTaskModeType.SHUTTLE_SWITCH.id.shortValue()); + command.setPick(originLev.shortValue()); + command.setPut(targetLev.shortValue()); + command.setConfirm((short) 1); + + commands.add(command); + return commands; + } + + /** + * 鎵╁睍瀛楁 + */ + @Data + private class InnerForkLiftExtend { + + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4d37303..45b0c92 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -42,9 +42,11 @@ wms: url: 10.10.10.40:8080/tzskwms +pythonCalcPath: D:\\path\\cpu.py +pythonCalcSimilarity: D:\\path\\similarity.py + # 涓嬩綅鏈洪厤缃� wcs-slave: - # 杈撻�佺嚎 devp[0]: id: 1 @@ -58,28 +60,28 @@ backSta: 101 barcode: ${wcs-slave.barcode[0].id} led: ${wcs-slave.led[1].id} - liftNo: ${wcs-slave.lift[0].id} + liftNo: ${wcs-slave.forkLift[0].id} # 鍏ュ簱鍙�2 inSta[1]: staNo: 103 backSta: 102 barcode: ${wcs-slave.barcode[1].id} led: ${wcs-slave.led[2].id} - liftNo: ${wcs-slave.lift[0].id} + liftNo: ${wcs-slave.forkLift[0].id} # 绌烘澘鍏ュ簱鍙�1 emptyInSta[0]: staNo: 100 backSta: 101 barcode: ${wcs-slave.barcode[0].id} led: ${wcs-slave.led[1].id} - liftNo: ${wcs-slave.lift[0].id} + liftNo: ${wcs-slave.forkLift[0].id} # 绌烘澘鍏ュ簱鍙�2 emptyInSta[1]: staNo: 103 backSta: 102 barcode: ${wcs-slave.barcode[1].id} led: ${wcs-slave.led[2].id} - liftNo: ${wcs-slave.lift[0].id} + liftNo: ${wcs-slave.forkLift[0].id} # 鍑哄簱鍙�1 outSta[0]: staNo: 100 @@ -94,13 +96,13 @@ backSta: 100 barcode: ${wcs-slave.barcode[0].id} led: ${wcs-slave.led[1].id} - liftNo: ${wcs-slave.lift[0].id} + liftNo: ${wcs-slave.forkLift[0].id} pickInSta[1]: staNo: 103 backSta: 103 barcode: ${wcs-slave.barcode[1].id} led: ${wcs-slave.led[2].id} - liftNo: ${wcs-slave.lift[0].id} + liftNo: ${wcs-slave.forkLift[0].id} # 鏉$爜鎵弿浠� barcode[0]: @@ -156,8 +158,8 @@ port: 8888 rack: 0 slot: 0 - # 鎻愬崌鏈�1 - lift[0]: + # 璐у弶鎻愬崌鏈�1 + forkLift[0]: id: 1 ip: 10.10.10.131 port: 102 @@ -166,40 +168,20 @@ sta[0]: staNo: 101 lev: 1 - liftNo: ${wcs-slave.lift[0].id} + liftNo: ${wcs-slave.forkLift[0].id} sta[1]: staNo: 102 lev: 2 - liftNo: ${wcs-slave.lift[0].id} + liftNo: ${wcs-slave.forkLift[0].id} sta[2]: staNo: 103 lev: 3 - liftNo: ${wcs-slave.lift[0].id} + liftNo: ${wcs-slave.forkLift[0].id} sta[3]: staNo: 104 lev: 4 - liftNo: ${wcs-slave.lift[0].id} + liftNo: ${wcs-slave.forkLift[0].id} sta[4]: staNo: 105 lev: 5 - liftNo: ${wcs-slave.lift[0].id} - sta[5]: - staNo: 106 - lev: 6 - liftNo: ${wcs-slave.lift[0].id} - sta[6]: - staNo: 107 - lev: 7 - liftNo: ${wcs-slave.lift[0].id} - sta[7]: - staNo: 108 - lev: 8 - liftNo: ${wcs-slave.lift[0].id} - sta[8]: - staNo: 109 - lev: 9 - liftNo: ${wcs-slave.lift[0].id} - sta[9]: - staNo: 110 - lev: 10 - liftNo: ${wcs-slave.lift[0].id} \ No newline at end of file + liftNo: ${wcs-slave.forkLift[0].id} \ No newline at end of file diff --git a/src/main/resources/mapper/BasCrnErrorMapper.xml b/src/main/resources/mapper/BasCrnErrorMapper.xml deleted file mode 100644 index e911e0f..0000000 --- a/src/main/resources/mapper/BasCrnErrorMapper.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.zy.asrs.mapper.BasCrnErrorMapper"> - - <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> - <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasCrnError"> - <id column="error_code" property="errorCode" /> - <result column="err_name" property="errName" /> - <result column="modi_user" property="modiUser" /> - <result column="modi_time" property="modiTime" /> - <result column="appe_user" property="appeUser" /> - <result column="appe_time" property="appeTime" /> - - </resultMap> - -</mapper> diff --git a/src/main/resources/mapper/BasCrnpMapper.xml b/src/main/resources/mapper/BasCrnpMapper.xml deleted file mode 100644 index b9a10bc..0000000 --- a/src/main/resources/mapper/BasCrnpMapper.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.zy.asrs.mapper.BasCrnpMapper"> - - <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> - <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasCrnp"> - <id column="crn_no" property="crnNo" /> - <result column="in_enable" property="inEnable" /> - <result column="out_enable" property="outEnable" /> - <result column="crn_sts" property="crnSts" /> - <result column="wrk_no" property="wrkNo" /> - <result column="crn_err" property="crnErr" /> - <result column="frm_locno" property="frmLocno" /> - <result column="frm_sta" property="frmSta" /> - <result column="to_sta" property="toSta" /> - <result column="to_locno" property="toLocno" /> - <result column="appe_user" property="appeUser" /> - <result column="appe_time" property="appeTime" /> - <result column="modi_user" property="modiUser" /> - <result column="modi_time" property="modiTime" /> - <result column="hp_mk" property="hpMk" /> - <result column="retrieve_mk" property="retrieveMk" /> - <result column="ctl_hp" property="ctlHp" /> - <result column="ctl_rest" property="ctlRest" /> - <result column="emp_in" property="empIn" /> - <result column="tank_qty" property="tankQty" /> - <result column="tank_qty1" property="tankQty1" /> - - </resultMap> - -</mapper> diff --git a/src/main/resources/mapper/BasMapMapper.xml b/src/main/resources/mapper/BasMapMapper.xml index 0f46fc6..14d108f 100644 --- a/src/main/resources/mapper/BasMapMapper.xml +++ b/src/main/resources/mapper/BasMapMapper.xml @@ -14,10 +14,11 @@ </resultMap> <select id="selectLatestMap" resultMap="BaseResultMap"> - select top 1 * + select * from asr_bas_map where lev = #{lev} order by id desc + limit 0,1 </select> <delete id="deleteByLev"> diff --git a/src/main/resources/mapper/BasShuttleMapper.xml b/src/main/resources/mapper/BasShuttleMapper.xml index a511c7b..5e44550 100644 --- a/src/main/resources/mapper/BasShuttleMapper.xml +++ b/src/main/resources/mapper/BasShuttleMapper.xml @@ -16,49 +16,11 @@ <result column="update_by" property="updateBy" /> <result column="update_time" property="updateTime" /> <result column="memo" property="memo" /> - <result column="lift_no" property="liftNo" /> <result column="pak_mk" property="pakMk" /> -<!-- <result column="busy_status" property="busyStatus" />--> -<!-- <result column="current_code" property="currentCode" />--> -<!-- <result column="battery_power" property="batteryPower" />--> -<!-- <result column="battery_temp" property="batteryTemp" />--> -<!-- <result column="error_code" property="errorCode" />--> -<!-- <result column="plc_output_status_io" property="plcOutputStatusIo" />--> -<!-- <result column="status_error_code" property="statusErrorCode" />--> -<!-- <result column="plc_input_status" property="plcInputStatus" />--> -<!-- <result column="current_or_before_code" property="currentOrBeforeCode" />--> -<!-- <result column="code_offset_x" property="codeOffsetX" />--> -<!-- <result column="code_offset_y" property="codeOffsetY" />--> -<!-- <result column="current_voltage" property="currentVoltage" />--> -<!-- <result column="current_analog_value" property="currentAnalogValue" />--> -<!-- <result column="current_lift_servo_speed" property="currentLiftServoSpeed" />--> -<!-- <result column="current_move_servo_speed" property="currentMoveServoSpeed" />--> -<!-- <result column="current_lift_servo_load" property="currentLiftServoLoad" />--> -<!-- <result column="current_move_servo_load" property="currentMoveServoLoad" />--> - <result column="working_mode" property="workingMode" /> - <result column="free" property="free" /> - <result column="speed" property="speed" /> - <result column="load_state" property="loadState" /> - <result column="suspend_state" property="suspendState" /> - <result column="lift_position" property="liftPosition" /> - <result column="run_dir" property="runDir" /> - <result column="run_dir2" property="runDir2" /> - <result column="charg_state" property="chargState" /> - <result column="power_percent" property="powerPercent" /> - <result column="max_cell_voltage" property="maxCellVoltage" /> - <result column="min_cell_voltage" property="minCellVoltage" /> - <result column="voltage" property="voltage" /> - <result column="charge_cycle_times" property="chargeCycleTimes" /> - <result column="surplus_quantity" property="surplusQuantity" /> - <result column="count_quantity" property="countQuantity" /> - <result column="point" property="point" /> - <result column="coord" property="coord" /> - <result column="task" property="task" /> - <result column="task_state" property="taskState" /> - <result column="err_state" property="errState" /> - <result column="status_sum" property="statusSum" /> - <result column="err_time" property="errTime" /> + <result column="run_speed" property="runSpeed" /> + <result column="device_status" property="deviceStatus" /> + <result column="disable_lev" property="disableLev" /> </resultMap> diff --git a/src/main/resources/mapper/BasSteErrLogMapper.xml b/src/main/resources/mapper/BasSteErrLogMapper.xml deleted file mode 100644 index 393f570..0000000 --- a/src/main/resources/mapper/BasSteErrLogMapper.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.zy.asrs.mapper.BasSteErrLogMapper"> - - <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> - <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasSteErrLog"> - <id column="id" property="id" /> - <result column="uuid" property="uuid" /> - <result column="wrk_no" property="wrkNo" /> - <result column="start_time" property="startTime" /> - <result column="end_time" property="endTime" /> - <result column="wrk_sts" property="wrkSts" /> - <result column="io_type" property="ioType" /> - <result column="ste_no" property="steNo" /> - <result column="plc_no" property="plcNo" /> - <result column="loc_no" property="locNo" /> - <result column="sta_no" property="staNo" /> - <result column="source_sta_no" property="sourceStaNo" /> - <result column="source_loc_no" property="sourceLocNo" /> - <result column="barcode" property="barcode" /> - <result column="err_code" property="errCode" /> - <result column="error" property="error" /> - <result column="status" property="status" /> - <result column="create_time" property="createTime" /> - <result column="create_by" property="createBy" /> - <result column="update_time" property="updateTime" /> - <result column="update_by" property="updateBy" /> - <result column="memo" property="memo" /> - - </resultMap> - -</mapper> diff --git a/src/main/resources/mapper/BasSteErrMapper.xml b/src/main/resources/mapper/BasSteErrMapper.xml deleted file mode 100644 index c106c43..0000000 --- a/src/main/resources/mapper/BasSteErrMapper.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.zy.asrs.mapper.BasSteErrMapper"> - - <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> - <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasSteErr"> - <result column="error_code" property="errorCode" /> - <result column="err_name" property="errName" /> - <result column="modi_user" property="modiUser" /> - <result column="modi_time" property="modiTime" /> - <result column="appe_user" property="appeUser" /> - <result column="appe_time" property="appeTime" /> - - </resultMap> - -</mapper> diff --git a/src/main/resources/mapper/BasSteMapper.xml b/src/main/resources/mapper/BasSteMapper.xml deleted file mode 100644 index bb35c09..0000000 --- a/src/main/resources/mapper/BasSteMapper.xml +++ /dev/null @@ -1,49 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.zy.asrs.mapper.BasSteMapper"> - - <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> - <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasSte"> - <result column="ste_no" property="steNo" /> - <result column="in_enable" property="inEnable" /> - <result column="out_enable" property="outEnable" /> - <result column="ste_sts" property="steSts" /> - <result column="wrk_no" property="wrkNo" /> - <result column="crn_no" property="crnNo" /> - <result column="row" property="row" /> - <result column="bay" property="bay" /> - <result column="lev" property="lev" /> - <result column="his_row" property="hisRow" /> - <result column="his_bay" property="hisBay" /> - <result column="his_lev" property="hisLev" /> - <result column="idle_loc" property="idleLoc" /> - <result column="ste_err" property="steErr" /> - <result column="pak_mk" property="pakMk" /> - <result column="auto_charge" property="autoCharge" /> - <result column="charge_line" property="chargeLine" /> - <result column="status" property="status" /> - <result column="create_by" property="createBy" /> - <result column="create_time" property="createTime" /> - <result column="update_by" property="updateBy" /> - <result column="update_time" property="updateTime" /> - <result column="memo" property="memo" /> - - </resultMap> - - <update id="updatePos"> - update asr_bas_ste - set his_row = row, his_bay = bay,his_lev = lev, - row = #{row}, bay = #{bay}, lev = #{lev}, - pak_mk = 'Y' - where 1=1 - and ste_no = #{steNo} - </update> - - <update id="updatePakMk"> - update asr_bas_ste - set pak_mk = #{pakMk} - where 1=1 - and ste_no = #{steNo} - </update> - -</mapper> diff --git a/src/main/resources/mapper/BasSteOptMapper.xml b/src/main/resources/mapper/BasSteOptMapper.xml deleted file mode 100644 index bb1d51d..0000000 --- a/src/main/resources/mapper/BasSteOptMapper.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.zy.asrs.mapper.BasSteOptMapper"> - - <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> - <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasSteOpt"> - <id column="id" property="id" /> - <result column="wrk_no" property="wrkNo" /> - <result column="ste_no" property="steNo" /> - <result column="send_time" property="sendTime" /> - <result column="mode" property="mode" /> - <result column="source_row" property="sourceRow" /> - <result column="source_bay" property="sourceBay" /> - <result column="source_lev" property="sourceLev" /> - <result column="source_sta" property="sourceSta" /> - <result column="pos_row" property="posRow" /> - <result column="pos_bay" property="posBay" /> - <result column="pos_lev" property="posLev" /> - <result column="pos_sta" property="posSta" /> - <result column="response" property="response" /> - <result column="update_time" property="updateTime" /> - <result column="update_by" property="updateBy" /> - <result column="memo" property="memo" /> - - </resultMap> - -</mapper> diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml index 5e839b2..0a4b649 100644 --- a/src/main/resources/mapper/LocMastMapper.xml +++ b/src/main/resources/mapper/LocMastMapper.xml @@ -5,68 +5,32 @@ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> <resultMap id="BaseResultMap" type="com.zy.asrs.entity.LocMast"> <id column="loc_no" property="locNo" /> - <result column="whs_type" property="whsType" /> - <result column="plt_type" property="pltType" /> - <result column="ctn_type" property="ctnType" /> <result column="loc_sts" property="locSts" /> - <result column="sheet_no" property="sheetNo" /> - <result column="crn_no" property="crnNo" /> <result column="row1" property="row1" /> <result column="bay1" property="bay1" /> <result column="lev1" property="lev1" /> - <result column="full_plt" property="fullPlt" /> <result column="loc_type" property="locType" /> <result column="loc_type1" property="locType1" /> <result column="loc_type2" property="locType2" /> <result column="loc_type3" property="locType3" /> - <result column="out_enable" property="outEnable" /> <result column="io_time" property="ioTime" /> - <result column="first_time" property="firstTime" /> <result column="modi_user" property="modiUser" /> <result column="modi_time" property="modiTime" /> <result column="appe_user" property="appeUser" /> <result column="appe_time" property="appeTime" /> <result column="error_time" property="errorTime" /> <result column="error_memo" property="errorMemo" /> - <result column="ctn_kind" property="ctnKind" /> - <result column="sc_weight" property="scWeight" /> - <result column="inv_wh" property="invWh" /> - <result column="mk" property="mk" /> <result column="barcode" property="barcode" /> - <result column="ctn_no" property="ctnNo" /> <result column="qr_code_value" property="qrCodeValue" /> </resultMap> - <select id="queryFreeLocMast" resultMap="BaseResultMap"> - select top 1 * - from asr_loc_mast - where row1=#{row} - and loc_sts='O' - and row1 > 30 - <if test="locType1 != null"> - and loc_type1 = #{locType1} - </if> - order by loc_sts desc ,lev1 asc,bay1 asc - </select> - - <select id="queryDemoSourceLoc" resultMap="BaseResultMap"> - select top 1 * from asr_loc_mast where crn_no = #{crnNo} - and loc_sts='D' - ORDER BY NEWID() - </select> - - <select id="queryDemoLoc" resultMap="BaseResultMap"> - select top 1 * from asr_loc_mast where crn_no = #{crnNo} and loc_sts = 'O' - ORDER BY NEWID() - </select> - <select id="queryByLoc" resultMap="BaseResultMap"> - select top 1 * from asr_loc_mast where loc_no = #{locNo} + select * from asr_loc_mast where loc_no = #{locNo} limit 0,1 </select> <select id="queryByQrCode" resultMap="BaseResultMap"> - select top 1 * from asr_loc_mast where qr_code_value = #{qrCodeValue} + select * from asr_loc_mast where qr_code_value = #{qrCodeValue} limit 0,1 </select> <select id="selectLocByLev" resultMap="BaseResultMap"> diff --git a/src/main/resources/mapper/WrkChargeMapper.xml b/src/main/resources/mapper/WrkChargeMapper.xml deleted file mode 100644 index 9dc3068..0000000 --- a/src/main/resources/mapper/WrkChargeMapper.xml +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.zy.asrs.mapper.WrkChargeMapper"> - - <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> - <resultMap id="BaseResultMap" type="com.zy.asrs.entity.WrkCharge"> - <id column="wrk_no" property="wrkNo" /> - <result column="mk" property="mk" /> - <result column="wrk_sts" property="wrkSts" /> - <result column="io_type" property="ioType" /> - <result column="crn_no" property="crnNo" /> - <result column="ste_no" property="steNo" /> - <result column="charge" property="charge" /> - <result column="out_most" property="outMost" /> - <result column="io_pri" property="ioPri" /> - <result column="loc_no" property="locNo" /> - <result column="sta_no" property="staNo" /> - <result column="source_sta_no" property="sourceStaNo" /> - <result column="source_loc_no" property="sourceLocNo" /> - <result column="empty_mk" property="emptyMk" /> - <result column="io_time" property="ioTime" /> - <result column="crn_str_time" property="crnStrTime" /> - <result column="crn_end_time" property="crnEndTime" /> - <result column="modi_user" property="modiUser" /> - <result column="modi_time" property="modiTime" /> - <result column="appe_user" property="appeUser" /> - <result column="appe_time" property="appeTime" /> - <result column="memo" property="memo" /> - <result column="barcode" property="barcode" /> - <result column="shuttle_no" property="shuttleNo" /> - - </resultMap> - - <select id="selectWorking" resultMap="BaseResultMap"> - select * - from asr_wrk_charge - where 1=1 - <if test="shuttleNo != null"> - and shuttle_no = #{shuttleNo} - </if> - and wrk_sts < 60 - and memo = 'charge' - order by appe_time, io_pri desc - limit 0,1 - </select> - - <select id="selectWorkingOfCharge" resultMap="BaseResultMap"> - select * - from asr_wrk_charge - where 1=1 - <if test="charge != null"> - and charge = #{charge} - </if> - and wrk_sts < 60 - and memo = 'charge' - order by appe_time, io_pri desc - limit 0,1 - </select> - - <select id="selectWorkingOfReset" resultMap="BaseResultMap"> - select * - from asr_wrk_charge - where 1=1 - <if test="steNo != null"> - and ste_no = #{steNo} - </if> - and wrk_sts < 47 - and memo = 'reset' - order by appe_time, io_pri desc - limit 0,1 - </select> - - <select id="selectByWorkNo" resultMap="BaseResultMap"> - select * from asr_wrk_charge - where wrk_no=#{workNo} - order by appe_time, io_pri desc - limit 0,1 - </select> - -</mapper> diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml index 5106f54..75874ef 100644 --- a/src/main/resources/mapper/WrkMastMapper.xml +++ b/src/main/resources/mapper/WrkMastMapper.xml @@ -5,79 +5,28 @@ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> <resultMap id="BaseResultMap" type="com.zy.asrs.entity.WrkMast"> <id column="wrk_no" property="wrkNo" /> - <result column="inv_wh" property="invWh" /> - <result column="ymd" property="ymd" /> <result column="mk" property="mk" /> - <result column="whs_type" property="whsType" /> <result column="wrk_sts" property="wrkSts" /> <result column="io_type" property="ioType" /> - <result column="crn_no" property="crnNo" /> - <result column="ste_no" property="steNo" /> - <result column="out_most" property="outMost" /> - <result column="sheet_no" property="sheetNo" /> <result column="io_pri" property="ioPri" /> <result column="wrk_date" property="wrkDate" /> <result column="loc_no" property="locNo" /> <result column="sta_no" property="staNo" /> <result column="source_sta_no" property="sourceStaNo" /> <result column="source_loc_no" property="sourceLocNo" /> - <result column="loc_sts" property="locSts" /> - <result column="picking" property="picking" /> - <result column="link_mis" property="linkMis" /> - <result column="online_yn" property="onlineYn" /> - <result column="upd_mk" property="updMk" /> - <result column="exit_mk" property="exitMk" /> - <result column="plt_type" property="pltType" /> - <result column="empty_mk" property="emptyMk" /> <result column="io_time" property="ioTime" /> - <result column="ctn_type" property="ctnType" /> - <result column="packed" property="packed" /> - <result column="ove_mk" property="oveMk" /> - <result column="mtn_type" property="mtnType" /> - <result column="user_no" property="userNo" /> - <result column="crn_str_time" property="crnStrTime" /> - <result column="crn_end_time" property="crnEndTime" /> - <result column="plc_str_time" property="plcStrTime" /> - <result column="crn_pos_time" property="crnPosTime" /> - <result column="load_time" property="loadTime" /> - <result column="exp_time" property="expTime" /> - <result column="ref_wrkno" property="refWrkno" /> - <result column="ref_iotime" property="refIotime" /> <result column="modi_user" property="modiUser" /> <result column="modi_time" property="modiTime" /> <result column="appe_user" property="appeUser" /> <result column="appe_time" property="appeTime" /> - <result column="pause_mk" property="pauseMk" /> <result column="error_time" property="errorTime" /> <result column="error_memo" property="errorMemo" /> - <result column="ctn_kind" property="ctnKind" /> - <result column="manu_type" property="manuType" /> <result column="memo" property="memo" /> - <result column="sc_weight" property="scWeight" /> - <result column="log_mk" property="logMk" /> - <result column="log_err_time" property="logErrTime" /> - <result column="log_err_memo" property="logErrMemo" /> <result column="barcode" property="barcode" /> - <result column="Pdc_type" property="pdcType" /> - <result column="ctn_no" property="ctnNo" /> - <result column="full_plt" property="fullPlt" /> <result column="shuttle_no" property="shuttleNo" /> <result column="lift_no" property="liftNo" /> </resultMap> - - <select id="selectToBeCompleteData" resultMap="BaseResultMap"> - select * from asr_wrk_mast where ((wrk_sts = 4 Or wrk_sts = 14 ) and io_type != 103 and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,io_time,wrk_no - </select> - - <select id="selectToBeHistoryData" resultMap="BaseResultMap"> - select * from asr_wrk_mast - where wrk_sts=5 - or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp)) - or (wrk_sts=15 and dateadd(mi,15,crn_end_time) <= getdate() and wrk_no not in (select wrk_no from asr_bas_devp)) - or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp)) - order by io_time,wrk_no asc - </select> <select id="selectPakInStep1" resultMap="BaseResultMap"> select * from asr_wrk_mast where source_sta_no=#{sourceStaNo} and wrk_sts=2 and barcode=#{barcode} and (io_type=1 or io_type=10) order by io_pri desc,io_time,wrk_no ASC limit 0,1 @@ -105,20 +54,20 @@ <select id="selectLiftStep223103" resultMap="BaseResultMap"> select * from asr_wrk_mast where 1=1 - and wrk_sts in (2,23,103) + and wrk_sts in (2,103,303) order by io_pri desc,wrk_sts desc </select> <select id="selectByWorkNo324104" resultMap="BaseResultMap"> select * from asr_wrk_mast where wrk_no=#{workNo} - and wrk_sts in (3,24,103,106) + and wrk_sts in (3,104,303,306) limit 0,1 </select> <select id="selectBy2125" resultMap="BaseResultMap"> select * from asr_wrk_mast - where wrk_sts in (21,25) + where wrk_sts in (101,105) and io_type in (101,103,107,110) order by io_pri desc,wrk_sts desc </select> @@ -126,7 +75,7 @@ <select id="selectNoShuttleWrkByLev" resultMap="BaseResultMap"> select * from asr_wrk_mast where shuttle_no is null - and ((wrk_sts = 2 and loc_no like #{lev}) or (wrk_sts = 21 and source_loc_no like #{lev})) + and ((wrk_sts = 2 and loc_no like #{lev}) or (wrk_sts = 101 and source_loc_no like #{lev})) order by io_pri desc,wrk_sts desc </select> @@ -140,62 +89,67 @@ <select id="selectShuttleOutWrkByLev" resultMap="BaseResultMap"> select * from asr_wrk_mast where shuttle_no is not null - and (wrk_sts not in (29,30) and source_loc_no like #{lev}) + and (wrk_sts not in (109,110) and source_loc_no like #{lev}) order by io_pri desc,wrk_sts desc </select> <select id="selectLiftWrkMast" resultMap="BaseResultMap"> - select top 1 * from asr_wrk_mast + select * from asr_wrk_mast where lift_no = #{liftNo} - and wrk_sts in (3,4,24,25,102,103,104,105,106,107,108,109) + and wrk_sts in (3,4,104,105,302,303,304,305,306,307,308,309) + limit 0,1 </select> <select id="selectLocToLocWrkMast" resultMap="BaseResultMap"> select * from asr_wrk_mast where io_type in (11) - and wrk_sts not in (9,10,29,30) + and wrk_sts not in (9,10,109,110) order by io_pri desc,wrk_sts desc </select> <select id="selectPickStepByBarcode" resultMap="BaseResultMap"> - select top 1 * from asr_wrk_mast + select * from asr_wrk_mast where io_type in (53,103,107) - and wrk_sts in (2,3,34,29) + and wrk_sts in (2,3,104,109) and barcode = #{barcode} order by io_pri desc,wrk_sts desc + limit 0,1 </select> <select id="selectShuttleHasMoveWorking" resultMap="BaseResultMap"> - select top 1 * from asr_wrk_mast + select * from asr_wrk_mast where 1=1 and shuttle_no = #{shuttleNo} - and wrk_sts not in (111) + and wrk_sts not in (311) and io_type = 200 order by io_pri desc,io_time,wrk_no asc + limit 0,1 </select> <select id="selectShuttleMoveWrk" resultMap="BaseResultMap"> select * from asr_wrk_mast where 1=1 - and wrk_sts in (101,103,105,107,109,111) + and wrk_sts in (301,302,303,304,305,306,307,308,309,310,311) and io_type = 200 order by io_pri desc,io_time,wrk_no asc </select> <select id="selectShuttleWorking" resultMap="BaseResultMap"> - select top 1 * from asr_wrk_mast + select * from asr_wrk_mast where 1=1 and shuttle_no = #{shuttleNo} - and wrk_sts not in (9,10,23,29,30) + and wrk_sts not in (9,10,109,110,210) and io_type not in (200) order by io_pri desc,io_time,wrk_no asc + limit 0,1 </select> <select id="selectByBarcode" resultMap="BaseResultMap"> - select top 1 * from asr_wrk_mast + select * from asr_wrk_mast where 1=1 and barcode = #{barcode} order by io_pri desc,io_time,wrk_no asc + limit 0,1 </select> <select id="selectInWrkMastByLiftNo" resultMap="BaseResultMap"> @@ -207,4 +161,11 @@ order by io_pri desc,io_time,wrk_no asc </select> + <select id="selectChargeWorking" resultMap="BaseResultMap"> + select * from asr_wrk_mast + where wrk_sts in (201,202,203) + and shuttle_no = #{shuttleNo} + order by priority desc,start_time,wrk_no asc + </select> + </mapper> -- Gitblit v1.9.1