From ab18ecb1c25613535c2047467cf8c14d3b41b047 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期二, 07 五月 2024 15:46:58 +0800 Subject: [PATCH] #空桶入库完成 --- src/main/java/com/zy/asrs/service/EmptyBarrelInService.java | 8 src/main/java/com/zy/core/enums/RgvModeType.java | 23 src/main/java/com/zy/asrs/domain/enums/RgvStatusType.java | 43 src/main/java/com/zy/core/thread/ZyRgvThread.java | 138 ++- src/main/webapp/static/css/rgv.css | 252 +++++ src/main/java/com/zy/asrs/domain/param/RgvOperatorParam.java | 25 src/main/java/com/zy/core/model/protocol/StaProtocol.java | 5 src/main/java/com/zy/asrs/utils/Utils.java | 16 src/main/java/com/zy/core/model/RgvSlave.java | 7 src/main/java/com/zy/asrs/service/impl/EmptyBarrelInServiceImpl.java | 12 src/main/webapp/views/index.html | 1 src/main/java/com/zy/core/MainProcess.java | 24 src/main/java/com/zy/core/model/command/RgvCommand.java | 78 - src/main/java/com/zy/core/thread/SiemensDevpThread.java | 81 + src/main/java/com/zy/core/enums/RgvStatusType.java | 3 src/main/java/com/zy/asrs/entity/EmptyBarrelIn.java | 45 + src/main/java/com/zy/asrs/entity/FullStoreParam.java | 36 src/main/java/com/zy/asrs/controller/RgvController.java | 319 +++++++ src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java | 53 + src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 351 +++++++ src/main/java/com/zy/core/cache/MessageQueue.java | 14 src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java | 62 + src/main/webapp/views/rgv.html | 598 +++++++++++++ src/main/java/com/zy/asrs/mapper/EmptyBarrelInMapper.java | 12 src/main/java/com/zy/common/CodeBuilder.java | 2 src/main/java/com/zy/asrs/service/WrkMastService.java | 2 src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java | 5 src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 253 ++++- src/main/resources/application.yml | 81 src/main/java/com/zy/core/enums/RgvTaskModeType.java | 32 src/main/resources/mapper/EmptyBarrelInMapper.xml | 14 31 files changed, 2,331 insertions(+), 264 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java new file mode 100644 index 0000000..4b76047 --- /dev/null +++ b/src/main/java/com/zy/asrs/controller/RgvController.java @@ -0,0 +1,319 @@ +package com.zy.asrs.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.annotations.ManagerAuth; +import com.core.common.Cools; +import com.core.common.R; +import com.core.exception.CoolException; +import com.zy.asrs.domain.enums.RgvStatusType; +import com.zy.asrs.domain.param.RgvOperatorParam; +import com.zy.asrs.domain.vo.RgvMsgTableVo; +import com.zy.asrs.domain.vo.RgvStateTableVo; +import com.zy.asrs.entity.BasRgv; +import com.zy.asrs.entity.BasRgvErr; +import com.zy.asrs.entity.WrkMast; +import com.zy.asrs.mapper.BasRgvErrMapper; +import com.zy.asrs.service.BasRgvService; +import com.zy.asrs.service.LocMastService; +import com.zy.asrs.service.WrkMastService; +import com.zy.asrs.service.impl.MainServiceImpl; +import com.zy.core.cache.MessageQueue; +import com.zy.core.cache.OutputQueue; +import com.zy.core.cache.SlaveConnection; +import com.zy.core.enums.RgvModeType; +import com.zy.core.enums.RgvTaskModeType; +import com.zy.core.enums.SlaveType; +import com.zy.core.model.RgvSlave; +import com.zy.core.model.Task; +import com.zy.core.model.command.RgvCommand; +import com.zy.core.model.protocol.RgvProtocol; +import com.zy.core.properties.SlaveProperties; +import com.zy.core.thread.ZyRgvThread; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +/** + * RGV鎺ュ彛 + * Created by vincent on 2020-06-01 + */ +@Slf4j +@RestController +@RequestMapping("/rgv") +public class RgvController { + + @Autowired + private SlaveProperties slaveProperties; + @Autowired + private WrkMastService wrkMastService; + @Autowired + private BasRgvErrMapper basRgvErrMapper; + @Autowired + private BasRgvService basRgvService; + @Autowired + private MainServiceImpl mainService; + @Autowired + private LocMastService locMastService; + + + + @PostMapping("/table/rgv/state") + @ManagerAuth(memo = "RGV淇℃伅琛�") + public R rgvStateTable(){ + List<RgvStateTableVo> list = new ArrayList<>(); + List<BasRgv> rgvs = basRgvService.selectList(new EntityWrapper<BasRgv>().orderBy("rgv_no")); + for (BasRgv basRgv : rgvs) { + // 琛ㄦ牸琛� + RgvStateTableVo vo = new RgvStateTableVo(); + vo.setRgvNo(basRgv.getRgvNo()); // RGV鍙� + list.add(vo); + // 鑾峰彇RGV淇℃伅 + ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, basRgv.getRgvNo()); + if (rgvThread == null) { + continue; + } + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + continue; + } + vo.setStatusType(rgvProtocol.modeType.desc); // 妯″紡鐘舵�� + vo.setStatus(rgvProtocol.getStatusType().desc); // 鐘舵�� + vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 宸ヤ綅1浠诲姟鍙� + vo.setLoading1(rgvProtocol.getLoaded1()==1?"鏈夌墿":"鏃犵墿"); // 宸ヤ綅1鏈夌墿 +// vo.setRgvPos(rgvProtocol.getRgvPos()); + vo.setRgvPos1(rgvProtocol.getRgvPosI()); +// vo.setWalkPos(rgvProtocol.getWalkPos()==1?"鍦ㄥ畾浣�":"涓嶅湪瀹氫綅"); + vo.setWorkNo2(rgvProtocol.getTaskNo2()); // 宸ヤ綅2浠诲姟鍙� +// vo.setStatus2(rgvProtocol.getStatusType2().desc); // 宸ヤ綅2鐘舵�� +// vo.setLoading2(rgvProtocol.getLoaded2()==1?"鏈夌墿":"鏃犵墿"); // 宸ヤ綅2鏈夌墿 + + vo.setWarnCode(String.valueOf(rgvProtocol.getAlarm())); + if (rgvProtocol.getAlarm() > 0) { + BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm()); + vo.setAlarm(rgvErr==null?"鏈煡寮傚父":rgvErr.getErrName()); + } + } + return R.ok().add(list); + } + + @PostMapping("/table/rgv/msg") + @ManagerAuth(memo = "RGV鏁版嵁琛�") + public R rgvMsgTable(){ + List<RgvMsgTableVo> list = new ArrayList<>(); + List<BasRgv> rgvs = basRgvService.selectList(new EntityWrapper<BasRgv>().orderBy("rgv_no")); + for (BasRgv basRgv : rgvs) { + // 琛ㄦ牸琛� + RgvMsgTableVo vo = new RgvMsgTableVo(); + vo.setRgvNo(basRgv.getRgvNo()); // RGV鍙� + list.add(vo); + // 鑾峰彇RGV淇℃伅 + ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, basRgv.getRgvNo()); + if (rgvThread == null) { + continue; + } + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + continue; + } + + vo.setWorkNo(rgvProtocol.getTaskNo1()); // 浠诲姟鍙� + if (rgvProtocol.getTaskNo1()>0) { + WrkMast wrkMast = wrkMastService.selectById(rgvProtocol.getTaskNo1()); + if (wrkMast != null) { + vo.setStatus(RgvStatusType.process(wrkMast.getIoType()).getDesc()); // 妯″紡鐘舵�� + vo.setSourceStaNo(wrkMast.getSourceStaNo$()); // 婧愮珯 + vo.setStaNo(wrkMast.getStaNo$()); // 鐩爣绔� + vo.setSourceLocNo(wrkMast.getSourceLocNo()); // 婧愬簱浣� + vo.setLocNo(wrkMast.getLocNo()); // 鐩爣搴撲綅 + } + } else { + vo.setStatus(rgvProtocol.modeType.equals(RgvModeType.AUTO)? rgvProtocol.modeType.desc: RgvModeType.HAND.desc); // 妯″紡鐘舵�� + } + vo.setXspeed(rgvProtocol.getXSpeed()); // 璧拌閫熷害锛坢/min) + vo.setXdistance(rgvProtocol.getXDistance()); // 璧拌璺濈(Km) + vo.setXduration(rgvProtocol.getXDuration()); // 璧拌鏃堕暱(H) + } + return R.ok().add(list); + } + + @PostMapping("/output/site") + @ManagerAuth(memo = "RGV鎶ユ枃鏃ュ織杈撳嚭") + public R rgvOutput(){ + StringBuilder str = new StringBuilder(); + String s; + int i = 0; + while((s = OutputQueue.RGV.poll()) != null && i <=10) { + str.append("\n").append(s); + i++; + } + return R.ok().add(str.toString()); + } + + /****************************************************************/ + /************************** 鎵嬪姩鎿嶄綔 ******************************/ + /****************************************************************/ + + @ManagerAuth(memo = "鍙栨斁璐�") + @PostMapping("/operator/put") + public R rgvFetchPut(RgvOperatorParam param){ + RgvCommand command = new RgvCommand(); + command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 + //宸ヤ綅1 + command.setTaskNo1(0); // 宸ヤ綔鍙� + command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯 + command.setDestinationStaNo1(param.getStaNo1()); // 鐩爣绔� + command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� + + //宸ヤ綅2 + command.setTaskNo2(0); // 宸ヤ綔鍙� + command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯 + command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� + command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� + + if (Cools.isEmpty(param.getSourceStaNo1()) || param.getStaNo1() == 0){ + command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 浠诲姟妯″紡: 鍙栨斁璐� + } else if (Cools.isEmpty(param.getSourceStaNo2()) || param.getStaNo2() == 0) { + command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 浠诲姟妯″紡: 鍙栨斁璐� + }else { + command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 浠诲姟妯″紡: 鍙栨斁璐� + } + + + command.setCommand(false); + + return rgvControl(command)? R.ok(): R.error(); + } + + + + + @ManagerAuth(memo = "宸ヤ綅1浠诲姟瀹屾垚") + @PostMapping("/operator/taskComplete1") + public R rgvTaskComplete1(RgvOperatorParam param){ + RgvCommand command = new RgvCommand(); + command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 + //宸ヤ綅1 + command.setTaskNo1(0); // 宸ヤ綔鍙� + command.setSourceStaNo1((short) 0); // 婧愮珯 + command.setDestinationStaNo1((short) 0); // 鐩爣绔� + command.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣� + + //宸ヤ綅2 + command.setTaskNo2(0); // 宸ヤ綔鍙� + command.setSourceStaNo2((short) 0); // 婧愮珯 + command.setDestinationStaNo2((short) 0); // 鐩爣绔� + command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� + + command.setTaskMode(RgvTaskModeType.NONE); // 浠诲姟妯″紡: 鍙栨斁璐� + command.setCommand(false); + + return rgvControlAsk1(command)? R.ok(): R.error(); + } + + @ManagerAuth(memo = "宸ヤ綅2浠诲姟瀹屾垚") + @PostMapping("/operator/taskComplete2") + public R rgvTaskComplete2(RgvOperatorParam param){ + RgvCommand command = new RgvCommand(); + command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 + //宸ヤ綅1 + command.setTaskNo1(0); // 宸ヤ綔鍙� + command.setSourceStaNo1((short) 0); // 婧愮珯 + command.setDestinationStaNo1((short) 0); // 鐩爣绔� + command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� + + //宸ヤ綅2 + command.setTaskNo2(0); // 宸ヤ綔鍙� + command.setSourceStaNo2((short) 0); // 婧愮珯 + command.setDestinationStaNo2((short) 0); // 鐩爣绔� + command.setAckFinish2(true); // 浠诲姟瀹屾垚纭浣� + + command.setTaskMode(RgvTaskModeType.NONE); // 浠诲姟妯″紡: 鍙栨斁璐� + command.setCommand(false); + + return rgvControlAsk2(command)? R.ok(): R.error(); + } + + + + + private boolean rgvControl(RgvCommand command){ + if (command.getRgvNo() == null) { + throw new CoolException("璇烽�夋嫨RGV"); + } + for (RgvSlave rgv : slaveProperties.getRgv()) { + // 鑾峰彇RGV淇℃伅 + if (command.getRgvNo().equals(rgv.getId())) { + ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); + if (rgvThread == null) { + throw new CoolException("RGV涓嶅湪绾�"); + } + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + throw new CoolException("RGV涓嶅湪绾�"); + } + if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(2, command))) { + return true; + } else { + throw new CoolException("鍛戒护涓嬪彂澶辫触"); + } + } + } + return false; + } + + private boolean rgvControlAsk1(RgvCommand command){ + if (command.getRgvNo() == null) { + throw new CoolException("璇烽�夋嫨RGV"); + } + for (RgvSlave rgv : slaveProperties.getRgv()) { + // 鑾峰彇RGV淇℃伅 + if (command.getRgvNo().equals(rgv.getId())) { + ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); + if (rgvThread == null) { + throw new CoolException("RGV涓嶅湪绾�"); + } + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + throw new CoolException("RGV涓嶅湪绾�"); + } + if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(3, command))) { + return true; + } else { + throw new CoolException("鍛戒护涓嬪彂澶辫触"); + } + } + } + return false; + } + + private boolean rgvControlAsk2(RgvCommand command){ + if (command.getRgvNo() == null) { + throw new CoolException("璇烽�夋嫨RGV"); + } + for (RgvSlave rgv : slaveProperties.getRgv()) { + // 鑾峰彇RGV淇℃伅 + if (command.getRgvNo().equals(rgv.getId())) { + ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); + if (rgvThread == null) { + throw new CoolException("RGV涓嶅湪绾�"); + } + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + throw new CoolException("RGV涓嶅湪绾�"); + } + if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(4, command))) { + return true; + } else { + throw new CoolException("鍛戒护涓嬪彂澶辫触"); + } + } + } + return false; + } + +} \ No newline at end of file diff --git a/src/main/java/com/zy/asrs/domain/enums/RgvStatusType.java b/src/main/java/com/zy/asrs/domain/enums/RgvStatusType.java new file mode 100644 index 0000000..ee4e2ce --- /dev/null +++ b/src/main/java/com/zy/asrs/domain/enums/RgvStatusType.java @@ -0,0 +1,43 @@ +package com.zy.asrs.domain.enums; + +/** + * RGV鐘舵�佹灇涓� + */ +public enum RgvStatusType { + + // 鍏ュ簱 + MACHINE_PAKIN("鍏ュ簱"), + // 鍑哄簱 + MACHINE_PAKOUT("鍑哄簱"), + // 寮傚父 + MACHINE_ERROR("寮傚父"), + // 鑷姩 + MACHINE_AUTO("鑷姩"), + // 闈炶嚜鍔�/鎵嬪姩 + MACHINE_UN_AUTO("闈炶嚜鍔�"), + ; + + private String desc; + RgvStatusType(String desc){ + this.desc = desc; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public static RgvStatusType process(Integer ioType){ + if (ioType>100) { + return MACHINE_PAKOUT; + } else if (ioType < 100 && ioType!=3 && ioType!=6 && ioType!=11) { + return MACHINE_PAKIN; + } else { + return MACHINE_ERROR; + } + } + +} diff --git a/src/main/java/com/zy/asrs/domain/param/RgvOperatorParam.java b/src/main/java/com/zy/asrs/domain/param/RgvOperatorParam.java new file mode 100644 index 0000000..3b0881f --- /dev/null +++ b/src/main/java/com/zy/asrs/domain/param/RgvOperatorParam.java @@ -0,0 +1,25 @@ +package com.zy.asrs.domain.param; + +import lombok.Data; + +/** + * Created by vincent on 2020-06-02 + */ +@Data +public class RgvOperatorParam { + + // RGV鍙� + private Integer rgvNo; + + // 宸ヤ綅1婧愮珯 + private Short sourceStaNo1; + + // 宸ヤ綅1鐩爣绔� + private Short staNo1; + + // 宸ヤ綅2婧愮珯 + private Short sourceStaNo2; + + // 宸ヤ綅2鐩爣绔� + private Short staNo2; +} diff --git a/src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java b/src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java new file mode 100644 index 0000000..dd6989b --- /dev/null +++ b/src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java @@ -0,0 +1,62 @@ +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 RgvMsgTableVo { + + // RGV鍙� + private Integer rgvNo; + + // 宸ヤ綔鍙� + 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 = ""; + + // 璧拌閫熷害锛坢/min) + private Float xspeed = 0.0F; + + // 璧拌璺濈(Km) + private Float xdistance = 0.0F; + + // 璧拌鏃堕暱(H) + private Float xduration = 0.0F; + + public void setXspeed(Float xspeed) { + this.xspeed = Utils.scale(xspeed); + } + + public void setXdistance(Float xdistance) { + this.xdistance = Utils.scale(xdistance); + } + + public void setXduration(Float xduration) { + this.xduration = Utils.scale(xduration); + } +} diff --git a/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java b/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java new file mode 100644 index 0000000..020f874 --- /dev/null +++ b/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java @@ -0,0 +1,53 @@ +package com.zy.asrs.domain.vo; + +import lombok.Data; + +/** + * Created by vincent on 2020-06-02 + */ +@Data +public class RgvStateTableVo { + + // RGV鍙� + private Integer RgvNo; + + // 妯″紡 + private String statusType = "-"; + + // 鐘舵�� + private String status = "-"; + + // 浠诲姟鍙� + private Integer workNo1 = 0; + + // 鐘舵�� + private String status1 = "-"; + + // 鏈夌墿 + private String loading1 = "-"; + + // RGV浣嶇疆 + private Integer RgvPos = 0; + + // 璧拌瀹氫綅 + private String walkPos = "-"; + + // 浠诲姟鍙� + private Integer workNo2 = 0; + + // 鐘舵�� + private String status2 = "-"; + + // 鏈夌墿 + private String loading2 = "-"; + + //寮傚父 + private String warnCode; + + // 寮傚父鐮佹弿杩� + private String alarm = "-"; + private Integer RgvPos1 = 0; + + private String pakMk="-"; + +} diff --git a/src/main/java/com/zy/asrs/entity/EmptyBarrelIn.java b/src/main/java/com/zy/asrs/entity/EmptyBarrelIn.java new file mode 100644 index 0000000..39d152b --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/EmptyBarrelIn.java @@ -0,0 +1,45 @@ +package com.zy.asrs.entity; + +import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.enums.IdType; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +@Data +@TableName("man_emptyBarrel_in") +public class EmptyBarrelIn implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value= "") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value= "") + private String matnr; + + @ApiModelProperty(value= "") + private String batch; + + @ApiModelProperty(value= "") + private String maktx; + + public EmptyBarrelIn() {} + + public EmptyBarrelIn(String matnr,String batch,String maktx) { + this.matnr = matnr; + this.batch = batch; + this.maktx = maktx; + } + +// EmptyBarrelIn emptyBarrelIn = new EmptyBarrelIn( +// null, // +// null, // +// null // +// ); + + +} diff --git a/src/main/java/com/zy/asrs/entity/FullStoreParam.java b/src/main/java/com/zy/asrs/entity/FullStoreParam.java new file mode 100644 index 0000000..bb5fd8b --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/FullStoreParam.java @@ -0,0 +1,36 @@ +package com.zy.asrs.entity; + +import lombok.Data; + +import java.util.List; + +/** + * Created by vincent on 2020/6/11 + */ +@Data +public class FullStoreParam { + + // 鎵樼洏鏉$爜 + private String barcode; + + // 绔欑偣缂栧彿 + private Integer devpNo; + + // 鐗╂枡鍒楄〃鏁版嵁 + private List<MatCodeStore> list; + + @Data + public static class MatCodeStore { + + // 鐗╂枡缂栧彿 + private String matnr; + + // 搴忓垪鐮� + private String batch; + + // 鐗╂枡鏁伴噺 + private Double anfme; + + } + +} diff --git a/src/main/java/com/zy/asrs/mapper/EmptyBarrelInMapper.java b/src/main/java/com/zy/asrs/mapper/EmptyBarrelInMapper.java new file mode 100644 index 0000000..5668503 --- /dev/null +++ b/src/main/java/com/zy/asrs/mapper/EmptyBarrelInMapper.java @@ -0,0 +1,12 @@ +package com.zy.asrs.mapper; + +import com.zy.asrs.entity.EmptyBarrelIn; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface EmptyBarrelInMapper extends BaseMapper<EmptyBarrelIn> { + +} diff --git a/src/main/java/com/zy/asrs/service/EmptyBarrelInService.java b/src/main/java/com/zy/asrs/service/EmptyBarrelInService.java new file mode 100644 index 0000000..3b6e9cc --- /dev/null +++ b/src/main/java/com/zy/asrs/service/EmptyBarrelInService.java @@ -0,0 +1,8 @@ +package com.zy.asrs.service; + +import com.zy.asrs.entity.EmptyBarrelIn; +import com.baomidou.mybatisplus.service.IService; + +public interface EmptyBarrelInService extends IService<EmptyBarrelIn> { + +} diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java index 5263e48..e0b8f2d 100644 --- a/src/main/java/com/zy/asrs/service/WrkMastService.java +++ b/src/main/java/com/zy/asrs/service/WrkMastService.java @@ -19,4 +19,6 @@ WrkMast selectpj(Integer staNo,String barcode); List<WrkMast> selectLaneWrkMast(Integer lane, Boolean pakIn);//鏌ヨ鎸囧畾宸烽亾浠诲姟 + + WrkMast selectByworkNo(Short workNo); } diff --git a/src/main/java/com/zy/asrs/service/impl/EmptyBarrelInServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/EmptyBarrelInServiceImpl.java new file mode 100644 index 0000000..3f85e49 --- /dev/null +++ b/src/main/java/com/zy/asrs/service/impl/EmptyBarrelInServiceImpl.java @@ -0,0 +1,12 @@ +package com.zy.asrs.service.impl; + +import com.zy.asrs.mapper.EmptyBarrelInMapper; +import com.zy.asrs.entity.EmptyBarrelIn; +import com.zy.asrs.service.EmptyBarrelInService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service("emptyBarrelInService") +public class EmptyBarrelInServiceImpl extends ServiceImpl<EmptyBarrelInMapper, EmptyBarrelIn> implements EmptyBarrelInService { + +} 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 d4eaf2f..8263c0a 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -24,6 +24,7 @@ import com.zy.common.utils.News; import com.zy.core.CrnThread; import com.zy.core.DevpThread; +import com.zy.core.RgvThread; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.*; @@ -46,6 +47,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; +import java.io.IOException; import java.util.*; import java.util.stream.Collectors; @@ -86,9 +88,13 @@ private BasErrLogService basErrLogService; @Autowired private BasCrnErrorMapper basCrnErrorMapper; + @Autowired + private EmptyBarrelInService emptyBarrelInService; @Value("${wms.url}") private String wmsUrl; + + public int workNo = 9900; /** * 缁勬墭 @@ -491,6 +497,9 @@ */ public synchronized void crnStnToOutStn() { for (CrnSlave crnSlave : slaveProperties.getCrn()) { + if (crnSlave.getId() ==5){ + continue; + } // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯 for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) { // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 @@ -561,6 +570,9 @@ */ public synchronized void crnIoExecute() { for (CrnSlave crn : slaveProperties.getCrn()) { + if (crn.getId() == 5){ + continue; + } // 鑾峰彇鍫嗗灈鏈轰俊鎭� CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); CrnProtocol crnProtocol = crnThread.getCrnProtocol(); @@ -2189,7 +2201,29 @@ if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) { - Crn5InTaskSta(crnSlave,crnProtocol); +// Crn5InTaskSta(crnSlave,crnProtocol); + + // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡 + if (crnProtocol.getLastIo().equals("I")) { + if (basCrnp.getInEnable().equals("Y")) { + this.Crn5InTaskSta(crnSlave,crnProtocol); + crnProtocol.setLastIo("O"); + } else if (basCrnp.getOutEnable().equals("Y")) { + this.locToCrn5Stn(crnSlave, crnProtocol); // 鍑哄簱 + crnProtocol.setLastIo("I"); + } + } + // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡 + else if (crnProtocol.getLastIo().equals("O")) { + if (basCrnp.getOutEnable().equals("Y")) { + this.locToCrn5Stn(crnSlave, crnProtocol); // 鍑哄簱 + crnProtocol.setLastIo("I"); + } else if (basCrnp.getInEnable().equals("Y")) { + + this.Crn5InTaskSta(crnSlave,crnProtocol); + crnProtocol.setLastIo("O"); + } + } } @@ -2249,4 +2283,319 @@ } + + public synchronized void crn5StnToOutStn() { + for (CrnSlave crnSlave : slaveProperties.getCrn()) { + if (crnSlave.getId() != 5){ + continue; + } + // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯 + for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) { + // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) { + // 鏌ヨ宸ヤ綔妗� + WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(crnStn.getStaNo()); + if (wrkMast == null) { + continue; + } + // 鍒ゆ柇宸ヤ綔妗f潯浠� + if (wrkMast.getIoType() < 100 || wrkMast.getStaNo() == null || wrkMast.getSourceStaNo() == null) { + continue; + } + // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗� + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo()); + CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) { + // 绉诲姩涓� + continue; + } + // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁� + if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue()) + && crnProtocol.statusType == CrnStatusType.WAITING + && crnProtocol.forkPosType == CrnForkPosType.HOME) { + + // 鏇存柊宸ヤ綔妗g姸鎬佷负14 + wrkMast.setWrkSts(14L); + + wrkMast.setCrnEndTime(new Date()); + if (wrkMastMapper.updateById(wrkMast) != 0) { + // 澶嶄綅鍫嗗灈鏈� + crnThread.setResetFlag(true); + } else { + log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo()); + } + + } + + } + } + } + } + + + public synchronized void locToCrn5Stn(CrnSlave slave, CrnProtocol crnProtocol) { + for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { + // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗� +// WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo()); + List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo()); + // 鑾峰彇宸ヤ綔鐘舵�佷负14鐨勫伐浣滄。 + WrkMast wrkMast1 = wrkMastMapper.selectPakOutStep14(slave.getId(), crnStn.getStaNo()); + if ( wrkMast1 !=null) { + continue; + } + for (WrkMast wrkMast : wrkMasts) { + if (wrkMast == null) { + continue; + } + // 宸ヤ綔妗g姸鎬佸垽鏂� + if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) { + log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType()); + continue; + } + // 鑾峰彇婧愬簱浣嶄俊鎭� + LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); + if (!locMast.getLocSts().equals("R") && !locMast.getLocSts().equals("P")) { + log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts()); + continue; + } + // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { + break; +// continue; + } else { + staProtocol = staProtocol.clone(); + } + + // 鏌ヨ绔欑偣璇︾粏淇℃伅 + BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); + if (staDetl == null) { + log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); + break; +// continue; + } + // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵�� + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isOutEnable()) { + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + + // 鍫嗗灈鏈烘帶鍒惰繃婊� + if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { +// continue; + break; + } + + + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� + if (wrkMastMapper.selectWorking(slave.getId()) != null) { + break; +// return; + } + + // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔� + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(locMast.getRow1()==9?(short)4:(short)5); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(locMast.getBay1().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(locMast.getLev1().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞� + crnCommand.setLocType1(locMast.getLocType1().shortValue()); // 璐х墿绫诲瀷 + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� + Date now = new Date(); + wrkMast.setWrkSts(12L); + wrkMast.setCrnStrTime(now); + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + break; + } + } + } + } + } + + public synchronized void crn5TaskCreate() throws IOException { + for (CrnSlave crnSlave : slaveProperties.getCrn()) { + if (crnSlave.getId() != 5){ + continue; + } + for (CrnSlave.CrnStn crnStn : crnSlave.getCrnInStn()) { + // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { + break; +// continue; + } else { + staProtocol = staProtocol.clone(); + } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){ + + EmptyBarrelIn emptyBarrelIn = emptyBarrelInService.selectOne(new EntityWrapper<>()); + if (Cools.isEmpty(emptyBarrelIn)){ + continue; + } + + FullStoreParam fullStoreParam = new FullStoreParam(); + fullStoreParam.setDevpNo(crnStn.getStaNo()); + FullStoreParam.MatCodeStore matCodeStore = new FullStoreParam.MatCodeStore(); + matCodeStore.setMatnr(emptyBarrelIn.getMatnr()); + matCodeStore.setBatch(emptyBarrelIn.getBatch()); + if (staProtocol.isForce()){ + log.info("绌烘《寮哄埗鍏ュ簱锛�"+staProtocol.getAmount()); + matCodeStore.setAnfme(Double.valueOf(staProtocol.getAmount())); + }else { + matCodeStore.setAnfme(8d) ; + } + ArrayList<FullStoreParam.MatCodeStore> matCodeStores = new ArrayList<>(); + matCodeStores.add(matCodeStore); + fullStoreParam.setList(matCodeStores); + try { + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/full/store/put/start") + .setJson(JSON.toJSONString(fullStoreParam)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + devpThread.setPakMk(crnStn.getStaNo(),false); + } + }catch (CoolException e){ + + } + + } + + } + } + } + + public synchronized void RGVTaskPut(){ + for (RgvSlave rgvSlave:slaveProperties.getRgv()){ + ZyRgvThread rgvThread = (ZyRgvThread)SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol.getModeType() != RgvModeType.AUTO){ + continue; + } + + + int workNo1 = 0; + int workNo2 = 0; + short souSta1 = 0; + short sta1 = 0; + short souSta2 = 0; + short sta2 = 0; + + //宸ヤ綅涓�浠诲姟 + for (RgvSlave.Sta inStn : rgvSlave.getInStn()){ + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId()); + StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo()); + if (staProtocol == null) { + break; +// continue; + } else { + staProtocol = staProtocol.clone(); + } + if (staProtocol.isLoading() && staProtocol.isLoading() && staProtocol.isInEnable()){ + if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){ + WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo()); + if (Cools.isEmpty(wrkMast)){ + log.error("鏈壘鍒板伐浣滄。"); + continue; + } + workNo1 = wrkMast.getWrkNo(); + souSta1 = inStn.getSourceStaNo().shortValue(); + sta1 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo()); + break; + } + workNo1 = workNo++; + souSta1 = inStn.getSourceStaNo().shortValue(); + sta1 = inStn.getStaNo().shortValue(); + break; + } + } + + + //宸ヤ綅浜屼换鍔� + for (RgvSlave.Sta inStn : rgvSlave.getInStn()){ + if (souSta1 == inStn.getSourceStaNo()){ + continue; + } + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId()); + StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo()); + if (staProtocol == null) { + break; +// continue; + } else { + staProtocol = staProtocol.clone(); + } + if (staProtocol.isLoading() && staProtocol.isLoading() && staProtocol.isInEnable()){ + if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){ + WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo()); + if (Cools.isEmpty(wrkMast)){ + log.error("鏈壘鍒板伐浣滄。"); + continue; + } + workNo2 = wrkMast.getWrkNo(); + souSta2 = inStn.getSourceStaNo().shortValue(); + sta2 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo()); + break; + } + workNo2 = workNo++; + souSta2 = inStn.getSourceStaNo().shortValue(); + sta2 = inStn.getStaNo().shortValue(); + break; + } + } + + //rgv浠诲姟涓嬪彂-------------------------------------------------------------- + RgvCommand command = new RgvCommand(); + command.setRgvNo(rgvSlave.getId()); // RGV缂栧彿 + //宸ヤ綅1 + command.setTaskNo1(workNo1); // 宸ヤ綔鍙� + command.setSourceStaNo1(souSta1); // 婧愮珯 + command.setDestinationStaNo1(sta1); // 鐩爣绔� + command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� + + //宸ヤ綅2 + command.setTaskNo2(workNo2); // 宸ヤ綔鍙� + command.setSourceStaNo2(souSta2); // 婧愮珯 + command.setDestinationStaNo2(sta2); // 鐩爣绔� + command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� + + if (workNo1 != 0 && workNo2 ==0){ + command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 浠诲姟妯″紡: 鍙栨斁璐� + } else if (workNo1 == 0 && workNo2 !=0) { + command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 浠诲姟妯″紡: 鍙栨斁璐� + }else { + command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 浠诲姟妯″紡: 鍙栨斁璐� + } + command.setCommand(false); + MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(2, command)); + log.info("rgv浠诲姟涓嬪彂锛�"+JSON.toJSONString(command)); + + } + } + + + public synchronized void RGVTaskOver() { + + } } 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 6c2cc0d..0791e9b 100644 --- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java @@ -62,4 +62,9 @@ } return list; } + + @Override + public WrkMast selectByworkNo(Short workNo) { + return this.baseMapper.selectByWrkNo(Integer.valueOf(workNo)); + } } diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java index a2e94d9..141b18a 100644 --- a/src/main/java/com/zy/asrs/utils/Utils.java +++ b/src/main/java/com/zy/asrs/utils/Utils.java @@ -8,6 +8,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; /** * Created by vincent on 2020/8/27 @@ -16,6 +17,21 @@ private static final DecimalFormat fmt = new DecimalFormat("##0.00"); + public static short getRgvEndStaNo(Integer rgvNo,Integer staNo){ + Map<Integer, Short> rgv1Map = new HashMap<>(); + Map<Integer, Short> rgv2Map = new HashMap<>(); + Map<Integer, Short> rgv3Map = new HashMap<>(); + switch (rgvNo){ + case 1: + return rgv1Map.get(staNo); + case 2: + return rgv2Map.get(staNo); + case 3: + return rgv3Map.get(staNo); + } + return 0; + } + public static float scale(Float f){ if (f == null || f == 0f || Float.isNaN(f)) { return 0f; diff --git a/src/main/java/com/zy/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java index 7df0e02..a172bd3 100644 --- a/src/main/java/com/zy/common/CodeBuilder.java +++ b/src/main/java/com/zy/common/CodeBuilder.java @@ -20,7 +20,7 @@ generator.url="127.0.0.1:1433;databasename=mdqdasrs"; generator.username="sa"; generator.password="sa@123"; - generator.table="asr_wrk_mast_sta"; + generator.table="man_emptyBarrel_in"; generator.packagePath="com.zy.asrs"; generator.html = false; generator.htmlDetail = false; diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java index 70dfd89..497dc9c 100644 --- a/src/main/java/com/zy/core/MainProcess.java +++ b/src/main/java/com/zy/core/MainProcess.java @@ -37,16 +37,10 @@ // 闂撮殧 Thread.sleep(1000); - // 绯荤粺杩愯鐘舵�佸垽鏂� if (!SystemProperties.WCS_RUNNING_STATUS.get()) { continue; } - - // 婕旂ず - //mainService.crnDemoOfLocMove1(); -// // 婕旂ず 鎵�鏈夊簱浣嶈疆璇� -// mainService.crnDemoOfLocMove2(); // 鍏ュ簱 ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。 mainService.generateStoreWrkFile(); // 缁勬墭 // mainService.generateStoreWrkFile0(); // WMS鍏ュ簱 @@ -56,13 +50,8 @@ mainService.crnStnToOutStn(); // 鍏ュ嚭搴� ===>> 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 mainService.crnIoExecute(); - //绌烘《搴撳叆搴� - mainService.crn5InTask(); // 鍏ュ簱 ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣� mainService.storeFinished(); - - - // 鍫嗗灈鏈哄紓甯镐俊鎭褰� mainService.recCrnErr(); // 鍏ュ簱 ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐� @@ -77,6 +66,19 @@ //鎵弿鎷嗙洏鏈鸿嚜鍔ㄥ嚭搴撶┖鎵樼洏 mainService.autoEmptyOut(); + //浜屾湡 + //绌烘《搴撲换鍔$敓鎴� + mainService.crn5TaskCreate(); + //绌烘《搴撳叆搴� + mainService.crn5InTask(); + //绌烘《鍑哄簱瀹屾垚 + mainService.crn5StnToOutStn(); + //rgv浠诲姟 + mainService.RGVTaskPut(); + //rgv浠诲姟瀹屾垚 + mainService.RGVTaskOver(); + + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/main/java/com/zy/core/cache/MessageQueue.java b/src/main/java/com/zy/core/cache/MessageQueue.java index 6a751f2..d48aae3 100644 --- a/src/main/java/com/zy/core/cache/MessageQueue.java +++ b/src/main/java/com/zy/core/cache/MessageQueue.java @@ -28,6 +28,8 @@ // 鍙拌溅mq浜ゆ崲鏈� private static final Map<Integer, ConcurrentLinkedQueue<Task>> CAR_EXCHANGE = new ConcurrentHashMap<>(); + private static final Map<Integer, LinkedBlockingQueue<Task>> RGV_EXCHANGE = new ConcurrentHashMap<>(); + /** * mq 浜ゆ崲鏈哄垵濮嬪寲 */ @@ -35,6 +37,9 @@ switch (type) { case Crn: CRN_EXCHANGE.put(slave.getId(), new LinkedBlockingQueue<>(1)); + break; + case Rgv: + RGV_EXCHANGE.put(slave.getId(), new LinkedBlockingQueue<>(1)); break; case Devp: DEVP_EXCHANGE.put(slave.getId(), new ConcurrentLinkedQueue<>()); @@ -64,6 +69,8 @@ switch (type) { case Crn: return CRN_EXCHANGE.get(id).offer(task); + case Rgv: + return RGV_EXCHANGE.get(id).offer(task); case Devp: return DEVP_EXCHANGE.get(id).offer(task); case Barcode: @@ -87,6 +94,8 @@ switch (type) { case Crn: return CRN_EXCHANGE.get(id).poll(); + case Rgv: + return RGV_EXCHANGE.get(id).poll(); case Devp: return DEVP_EXCHANGE.get(id).poll(); case Barcode: @@ -109,6 +118,8 @@ switch (type) { case Crn: return CRN_EXCHANGE.get(id).peek(); + case Rgv: + return RGV_EXCHANGE.get(id).peek(); case Devp: return DEVP_EXCHANGE.get(id).peek(); case Barcode: @@ -130,6 +141,9 @@ CRN_EXCHANGE.get(id).clear(); break; + case Rgv: + RGV_EXCHANGE.get(id).clear(); + break; case Devp: DEVP_EXCHANGE.get(id).clear(); break; diff --git a/src/main/java/com/zy/core/enums/RgvModeType.java b/src/main/java/com/zy/core/enums/RgvModeType.java index 2b2fdc5..81d1747 100644 --- a/src/main/java/com/zy/core/enums/RgvModeType.java +++ b/src/main/java/com/zy/core/enums/RgvModeType.java @@ -5,16 +5,17 @@ */ public enum RgvModeType { - STOP((short) 0, "鍋滄満妯″紡"), - MANUAL((short) 1, "鎵嬪姩妯″紡"), - AUTO((short) 2, "鑷姩妯″紡"), - COMPUTER((short) 3, "鐢佃剳妯″紡"), + NONE(-1, "绂荤嚎"), + STOP(0, "鍏虫満"), + HAND(1, "鎵嬪姩"), + HALF_AUTO(2, "鍗婅嚜鍔�"), + AUTO(3, "鑷姩"), + AUTO2(100, "鍏跺畠"), ; - public Short id; + public Integer id; public String desc; - - RgvModeType(Short id, String desc) { + RgvModeType(Integer id, String desc) { this.id = id; this.desc = desc; } @@ -24,7 +25,7 @@ return null; } for (RgvModeType type : RgvModeType.values()) { - if (type.id.equals(id)) { + if (type.id.equals(id.intValue())) { return type; } } @@ -35,9 +36,9 @@ if (null == type) { return null; } - for (RgvModeType type1 : RgvModeType.values()) { - if (type1 == type) { - return type1; + for (RgvModeType rgvModeType : RgvModeType.values()) { + if (rgvModeType == type) { + return rgvModeType; } } return null; diff --git a/src/main/java/com/zy/core/enums/RgvStatusType.java b/src/main/java/com/zy/core/enums/RgvStatusType.java index 972cb31..5927760 100644 --- a/src/main/java/com/zy/core/enums/RgvStatusType.java +++ b/src/main/java/com/zy/core/enums/RgvStatusType.java @@ -14,7 +14,8 @@ RELEASE_WAIT((short) 5, "鏀捐揣绛夊緟"), RELEASE_WORKING((short) 6, "鏀捐揣涓�"), WALKING((short) 9, "璧拌涓�"), - WAITING((short) 90, "浠诲姟瀹屾垚绛夊緟WCS纭"), + WAITING((short) 90, "宸ヤ綅涓�浠诲姟瀹屾垚绛夊緟WCS纭"), + WAITING2((short) 91, "宸ヤ綅浜屼换鍔″畬鎴愮瓑寰匴CS纭"), ALARM((short) 99, "鎶ヨ"), OTHER((short) 100, "鍏朵粬"), ; diff --git a/src/main/java/com/zy/core/enums/RgvTaskModeType.java b/src/main/java/com/zy/core/enums/RgvTaskModeType.java index 85a8626..b1c1128 100644 --- a/src/main/java/com/zy/core/enums/RgvTaskModeType.java +++ b/src/main/java/com/zy/core/enums/RgvTaskModeType.java @@ -2,26 +2,32 @@ public enum RgvTaskModeType { - NONE((short) 0, "鏃�"), - PICK((short) 1, "鍙栬揣"), - RELEASE((short) 2, "鏀捐揣"), - PICK_RELEASE((short) 3, "鍙栨斁璐�"), - MOVE((short) 4, "绉诲姩(鍙戝伐浣�1浠诲姟鍗冲彲)"), + NONE(0), // 鏃� + FETCH(1), // 鍙栬揣 + PUT(2), // 鏀捐揣 + FETCH_PUT_ALL(1), // 鍙栨斁璐� + FETCH_PUT1(8), // 鍙栨斁璐� + FETCH_PUT2(9), // 鍙栨斁璐� + X_MOVE(4), // 绔欎綅绉昏浆 + // Y_MOVE(5), // 绔欎綅绉昏浆 +// XY_MOVE(6), // 绔欎綅绉昏浆 + GO_ORIGIN(7), // 鍥炲師鐐� +// BACK_ORIGIN(8), // 鍥炲弽鍘熺偣 +// CLEAR(9), // 娓呴敊 ; - public Short id; - public String desc; - RgvTaskModeType(Short id, String desc) { + public Integer id; + RgvTaskModeType(Integer id) { this.id = id; - this.desc = desc; } + public static RgvTaskModeType get(Short id) { if (null == id) { return null; } for (RgvTaskModeType type : RgvTaskModeType.values()) { - if (type.id.equals(id)) { + if (type.id.equals(id.intValue())) { return type; } } @@ -32,9 +38,9 @@ if (null == type) { return null; } - for (RgvTaskModeType type1 : RgvTaskModeType.values()) { - if (type1 == type) { - return type1; + for (RgvTaskModeType rgvTaskModeType : RgvTaskModeType.values()) { + if (rgvTaskModeType == type) { + return rgvTaskModeType; } } return null; diff --git a/src/main/java/com/zy/core/model/RgvSlave.java b/src/main/java/com/zy/core/model/RgvSlave.java index f2de390..a89d9d0 100644 --- a/src/main/java/com/zy/core/model/RgvSlave.java +++ b/src/main/java/com/zy/core/model/RgvSlave.java @@ -21,12 +21,11 @@ @Data public static class Sta { + private Integer sourceStaNo;//婧愮珯 + private Integer sourcePlcId; private Integer staNo;//鐩爣绔� - - private Integer sourceStaNo;//婧愮珯 - - private Integer devpPlcId; + private Integer staPlcId; } diff --git a/src/main/java/com/zy/core/model/command/RgvCommand.java b/src/main/java/com/zy/core/model/command/RgvCommand.java index e4079e2..1472669 100644 --- a/src/main/java/com/zy/core/model/command/RgvCommand.java +++ b/src/main/java/com/zy/core/model/command/RgvCommand.java @@ -13,40 +13,17 @@ // RGV缂栧彿 private Integer rgvNo = 0; - // 浠诲姟瀹屾垚纭浣� - private boolean ackFinish = false; - - //**************宸ヤ綅1************** - - // 宸ヤ綅1宸ヤ綔鍙� - private Integer taskNo1 = 0; - - /** - * 浠诲姟妯″紡锛� - * 0 = 鏃� - * 1 = 鍙栬揣 - * 2 = 鏀捐揣 - * 3 = 鍙栨斁璐� - * 4 = 绉诲姩(鍙戝伐浣�1浠诲姟鍗冲彲) - */ - private Short taskMode1 = 0; - - @JSONField(serialize = false) - private RgvTaskModeType taskModeType1; - // 宸ヤ綅1婧愮珯 private Short sourceStaNo1 = 0; // 宸ヤ綅1鐩爣绔� private Short destinationStaNo1 = 0; - //**************宸ヤ綅1************** + // 宸ヤ綅2婧愮珯 + private Short sourceStaNo2 = 0; - - //**************宸ヤ綅2************** - - // 宸ヤ綅2宸ヤ綔鍙� - private Short taskNo2 = 0; + // 宸ヤ綅2鐩爣绔� + private Short destinationStaNo2 = 0; /** * 浠诲姟妯″紡锛� @@ -56,40 +33,41 @@ * 3 = 鍙栨斁璐� * 4 = 绉诲姩(鍙戝伐浣�1浠诲姟鍗冲彲) */ - private Short taskMode2 = 0; + private Short taskMode = 0; + + // 宸ヤ綅1宸ヤ綔鍙� + private Integer taskNo1 = 0; + // 宸ヤ綅2宸ヤ綔鍙� + private Integer taskNo2 = 0; + + // 浠诲姟纭 0锛氭湭纭 1锛氬凡纭 + private boolean command = false; + + + // 浠诲姟瀹屾垚纭浣� + private boolean ackFinish1 = false; + + // 浠诲姟瀹屾垚纭浣� + private boolean ackFinish2 = false; @JSONField(serialize = false) - private RgvTaskModeType taskModeType2; + private RgvTaskModeType taskModeType; - // 宸ヤ綅1婧愮珯 - private Short sourceStaNo2 = 0; - - // 宸ヤ綅1鐩爣绔� - private Short destinationStaNo2 = 0; //**************宸ヤ綅2************** - // 浠诲姟纭 0锛氭湭纭 1锛氬凡纭 - private Short command = 0; - public void setTaskMode1(Short taskMode){ - this.taskMode1 = taskMode; - this.taskModeType1 = RgvTaskModeType.get(taskMode); + + public void setTaskMode(Short taskMode){ + this.taskMode = taskMode; + this.taskModeType = RgvTaskModeType.get(taskMode); } - public void setTaskMode1(RgvTaskModeType type) { - this.taskModeType1 = type; - this.taskMode1 = RgvTaskModeType.get(type).id; + public void setTaskMode(RgvTaskModeType type) { + this.taskModeType = type; + this.taskMode = RgvTaskModeType.get(type).id.shortValue(); } - public void setTaskMode2(Short taskMode){ - this.taskMode2 = taskMode; - this.taskModeType2 = RgvTaskModeType.get(taskMode); - } - public void setTaskMode2(RgvTaskModeType type) { - this.taskModeType2 = type; - this.taskMode2 = RgvTaskModeType.get(type).id; - } } diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java index 13c11bf..d6df231 100644 --- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java @@ -1,98 +1,195 @@ package com.zy.core.model.protocol; +import com.zy.asrs.entity.BasRgv; import com.zy.core.enums.RgvModeType; import com.zy.core.enums.RgvStatusType; import com.zy.core.enums.RgvWalkPosType; import lombok.Data; import java.util.Date; +import java.util.HashMap; +import java.util.Map; @Data public class RgvProtocol { - //RGV缂栧彿 - private Integer rgvNo; + private Integer RgvNo; - //妯″紡 - private Short mode; + /** + * 1 = 鎵嬪姩妯″紡 + * 2 = 鑷姩妯″紡 + * 3 = 鐢佃剳妯″紡 + */ + public Short mode; - //RGV妯″紡鏋氫妇 - private RgvModeType modeType; + public RgvModeType modeType; - //RGV鐘舵�� - private Short status; + /** + * 宸ヤ綅1浠诲姟鍙� + */ + public Integer taskNo1 = 0; + /** + * 宸ヤ綅2浠诲姟鍙� + */ + public Integer taskNo2 = 0; - //RGV鐘舵�佹灇涓� - private RgvStatusType statusType; + /** + * RGV褰撳墠鐘舵�� + * 0锛氱┖闂诧紝鏃犱换鍔� + * 1锛氫綔涓氫腑 + * 2锛氭姤璀� + */ + public Short status; - //宸ヤ綅1宸ヤ綔鍙� - private Integer taskNo1; + /** + * 鐘舵�佹灇涓� + */ + public RgvStatusType statusType; + /** + * 褰撳墠鍒楀彿 + */ + public Short columnNumber; - //宸ヤ綅1鏈夌墿淇″彿 - private Short loaded1; + /** + * RGV褰撳墠浣嶇疆 + */ + public Integer RgvPos; - //RGV褰撳墠浣嶇疆 - private Short rgvPos; + /** + * 宸ヤ綅1鏈夌墿 + */ + public Short loaded1; - //璧拌鍦ㄥ畾浣� 0锛氬湪瀹氫綅锛�1锛氫笉鍦ㄥ畾浣� - private Short walkPos; - //RGV璧拌鏋氫妇 - private RgvWalkPosType walkPosType; + /** + * 寮傚父鐮� + */ + public Short alarm; - //宸ヤ綅2宸ヤ綔鍙� - private Short taskNo2; + /** + * X琛岃蛋琛岄�熷害m/min + */ + private Float xSpeed; - //宸ヤ綅2鏈夌墿淇″彿 - private Short loaded2; + /** + * 鍫嗗灈鏈虹疮璁¤蛋琛岃窛绂籯m + */ + public Float xDistance; - //宸ヤ綅1浠诲姟瀹屾垚淇″彿 - private Short taskFinish1; + /** + * 鍫嗗灈鏈虹疮璁¤蛋琛屾椂闀縣 + */ + public Float xDuration; - //宸ヤ綅2浠诲姟瀹屾垚淇″彿 - private Short taskFinish2; - //寮傚父鐮� - private Short alarm; - //蹇冭烦 - private Short heart; - //澶囩敤1 - private Integer temp1; - //澶囩敤2 + /** + * RGV宸ヤ綅1褰撳墠鐘舵�� + * 0锛氱┖闂诧紝鏃犱换鍔� + * 11锛氬彇璐т腑 + * 12锛氭斁璐т腑 + * 10锛氫换鍔″畬鎴愮瓑寰匴CS纭 + */ + public Short status1; + + /** + * 鐘舵�佹灇涓� + */ + public RgvStatusType statusType1; + + + + + + /** + * 璧拌鍦ㄥ畾浣� + * 0 = 鍦ㄥ畾浣� + * 1 = 涓嶅湪瀹氫綅 + */ + public Short walkPos; + + + + + /** + * RGV宸ヤ綅2褰撳墠鐘舵�� + * 0锛氱┖闂诧紝鏃犱换鍔� + * 11锛氬彇璐т腑 + * 12锛氭斁璐т腑 + * 10锛氫换鍔″畬鎴愮瓑寰匴CS纭 + */ + public Short status2; + + /** + * 鐘舵�佹灇涓� + */ + public RgvStatusType statusType2; + + /** + * 宸ヤ綅2鏈夌墿 + */ + public Short loaded2; + + + + /** + * 蹇冭烦鎸囦护 1-2姣忕鍒囨崲涓�娆� + */ + public Short heart; + + private Short temp1; + private Short temp2; - //澶囩敤3 private Short temp3; - //澶囩敤4 private Short temp4; - //澶囩敤5 private Short temp5; - //宸ヤ綅1浠诲姟妯″紡 - private Short taskMode1; - //宸ヤ綅1婧愮珯 - private Short sourceStn1; - //宸ヤ綅1鐩爣绔� - private Short destinationPos1; + public void setMode(Short mode) { + this.mode = mode; + this.modeType = RgvModeType.get(mode); + } - //宸ヤ綅2浠诲姟妯″紡 - private Short taskMode2; + public void setMode(RgvModeType type) { + this.modeType = type; + this.mode = RgvModeType.get(type).id.shortValue(); + } - //宸ヤ綅2婧愮珯 - private Short sourceStn2; + public void setStatus(Short status){ + this.status = status; + this.statusType = RgvStatusType.get(status); + } - //宸ヤ綅2鐩爣绔� - private Short destinationPos2; + public void setStatus(RgvStatusType type){ + this.statusType = type; + this.status = RgvStatusType.get(type).id.shortValue(); + } - //宸ヤ綅1涓嬪彂鏃堕棿 - private Long task1SendTime; + public void setStatus1(Short status1){ + this.status1 = status1; + this.statusType1 = RgvStatusType.get(status1); + } + + public void setStatus1(RgvStatusType type1){ + this.statusType1 = type1; + this.status1 = RgvStatusType.get(type1).id.shortValue(); + } + + public void setStatus2(Short status2){ + this.status2 = status2; + this.statusType2 = RgvStatusType.get(status2); + } + + public void setStatus2(RgvStatusType type2){ + this.statusType2 = type2; + this.status2 = RgvStatusType.get(type2).id.shortValue(); + } /** * 鏈�杩戜竴娆″叆鍑哄簱绫诲瀷 @@ -101,34 +198,50 @@ */ private String lastIo = "I"; - public void setMode(Short mode) { - this.mode = mode; - this.modeType = RgvModeType.get(mode); + + public BasRgv toSqlModel(BasRgv basRgv){ + if (alarm!=null) { + basRgv.setRgvErr(alarm.longValue()); + } + basRgv.setWrkNo1(taskNo1.intValue()); +// basRgv.setWrkNo2(taskNo2.intValue()); + return basRgv; } - public void setMode(RgvModeType type) { - this.mode = type.id; - this.modeType = type; + public void setxSpeed(float xSpeed) { + this.xSpeed = xSpeed; } - public void setStatus(Short status) { - this.status = status; - this.statusType = RgvStatusType.get(status); + public void setxDistance(float xDistance) { + this.xDistance = xDistance; } - public void setStatus(RgvStatusType type) { - this.status = type.id; - this.statusType = type; + public void setxDuration(float xDuration) { + this.xDuration = xDuration; } - public void setWalkPos(Short walkPos) { - this.walkPos = walkPos; - this.walkPosType = RgvWalkPosType.get(walkPos); + public Integer getRgvPosI(){ + //闇�瑕佹牴鎹幇鍦烘敼閫� 鏍规嵁璇诲埌鐨勫�艰幏鍙栧搴旂珯鐐逛綅缃� + Map<Short,Integer> map = new HashMap<>(); + map.put((short) 1,100);map.put((short) 2,101); + map.put((short) 3,106);map.put((short) 4,107); + map.put((short) 5,112);map.put((short) 6,113); + map.put((short) 7,119);map.put((short) 8,124); + map.put((short) 9,149);map.put((short) 10,153); + map.put((short) 11,157);map.put((short) 12,161); + if (RgvPos==null) return 0; + + return map.get(RgvPos); } - public void setWalkPos(RgvWalkPosType type) { - this.walkPos = type.id; - this.walkPosType = type; + @Override + public RgvProtocol clone() { + try { + return (RgvProtocol) super.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + return null; } } diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java index dfb9de5..fb81cc3 100644 --- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java @@ -85,6 +85,9 @@ // 鎵爜澶辫触 private boolean barcodeErr = false; + private boolean force = false; + private short amount = 0; + public Boolean isErr(){ if (frontErr || backErr || highErr || leftErr || rightErr || weightErr || barcodeErr){ return true; @@ -104,7 +107,7 @@ basDevp.setLocType1((short) 0); // 楂樹綆绫诲瀷{0:鏈煡,1:浣庡簱浣�,2:楂樺簱浣峿 basDevp.setLocType2((short) 0); // 瀹界獎绫诲瀷{0:鏈煡,1:绐勫簱浣�,2:瀹藉簱浣峿 basDevp.setLocType3((short) 0); // 杞婚噸绫诲瀷{0:鏈煡,1:杞诲簱浣�,2:閲嶅簱浣峿 - basDevp.setLocType1(high != low && low ? (short) 1 : (short) 2); + basDevp.setLocType1(high != low && high ? (short) 2 : (short) 1); // basDevp. return basDevp; } diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index c360820..70a9ffa 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -59,9 +59,7 @@ }}; public static final ArrayList<Integer> staNos3 = new ArrayList<Integer>() {{ - add(2007);add(2008);add(2009);add(2010);add(2011);add(2012);add(2013); - add(2108);add(2109);add(2110);add(2111);add(2112);add(2113);add(2114); - add(2401);add(2402);add(2403); + add(5001);add(5002); }}; public static final ArrayList<Integer> staNos4 = new ArrayList<Integer>() {{ @@ -88,15 +86,13 @@ }}; public static final ArrayList<Integer> writeStaNos2 = new ArrayList<Integer>() {{ - add(2001);add(2002);add(2003); - add(2101);add(2102);add(2103); - add(2301); + add(2001);add(2002);add(2101);add(2102);add(2301);add(2302); + add(2303);add(2304);add(2305);add(2306);add(2003);add(2004);add(2005); + add(2006);add(2103);add(2104);add(2105);add(2106);add(2107); }}; public static final ArrayList<Integer> writeStaNos3 = new ArrayList<Integer>() {{ - add(2013); - add(2114); - add(2401);add(2402); + add(5001);add(5002); }}; public static final ArrayList<Integer> writeStaNos4 = new ArrayList<Integer>() {{ @@ -209,7 +205,12 @@ switch (step) { // 璇绘暟鎹� case 1: - read(); + if (slave.getId() ==3){ + read30(); + }else { + read(); + } + break; // 鍐欐暟鎹� ID+鐩爣绔� case 2: @@ -356,6 +357,66 @@ } } + private void read30() throws InterruptedException { + ArrayList<Integer> staNos = getStaNo(); + int staNoSize = staNos.size(); + OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (getStaNo().size() * 8)); + + result = siemensS7Net.Read("DB101.0", (short) (getStaNo().size()*4)); + if (result.IsSuccess) { + for (int i = 0; i < staNoSize; i++) { + Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 + boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*4, 1); + short count = siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4 + 2); + + StaProtocol staProtocol = station.get(siteId); + if (null == staProtocol) { + staProtocol = new StaProtocol(); + staProtocol.setSiteId(siteId); + station.put(siteId, staProtocol); + } + staProtocol.setAutoing(status[0]); // 鑷姩 + staProtocol.setLoading(status[1]); // 鏈夌墿 + staProtocol.setInEnable(status[2]); // 鍙叆 + staProtocol.setOutEnable(status[3]);// 鍙嚭 + staProtocol.setForce(status[4]); + staProtocol.setAmount(count); + + + if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { + staProtocol.setPakMk(true); + } + } + } + + if (result.IsSuccess) { + + OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); + + // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� + try { + List<BasDevp> basDevps = new ArrayList<>(); + for (Integer siteId : staNos) { + StaProtocol staProtocol = station.get(siteId); + basDevps.add(staProtocol.toSqlModel()); + } + + BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class); + if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) { + throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�"); + } + } catch (Exception e) { + e.printStackTrace(); + OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); + log.error("鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); + } + + } else { + OutputQueue.DEVP.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())); +// log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); + } + } + /** * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏� */ diff --git a/src/main/java/com/zy/core/thread/ZyRgvThread.java b/src/main/java/com/zy/core/thread/ZyRgvThread.java index 184847d..5df1199 100644 --- a/src/main/java/com/zy/core/thread/ZyRgvThread.java +++ b/src/main/java/com/zy/core/thread/ZyRgvThread.java @@ -64,23 +64,13 @@ case 2: write((RgvCommand) task.getData()); break; - // 澶嶄綅 + // 宸ヤ綅1澶嶄綅 case 3: - RgvCommand command = (RgvCommand) task.getData(); - if (null == command) { - command = new RgvCommand(); - } - command.setRgvNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� - command.setTaskNo1(0); // 宸ヤ綔鍙� - command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡 - command.setSourceStaNo1((short) 0);//婧愮珯 - command.setDestinationStaNo1((short) 0);//鐩爣绔� - command.setTaskNo2((short) 0); // 宸ヤ綔鍙� - command.setTaskMode2(RgvTaskModeType.NONE); // 浠诲姟妯″紡 - command.setSourceStaNo2((short) 0);//婧愮珯 - command.setDestinationStaNo2((short) 0);//鐩爣绔� - command.setAckFinish(true); // 浠诲姟瀹屾垚纭浣� - write(command); + writeAckFinish1((RgvCommand) task.getData()); + break; + //宸ヤ綅2澶嶄綅 + case 4: + writeAckFinish2((RgvCommand) task.getData()); break; default: @@ -88,7 +78,7 @@ } Thread.sleep(500); } catch (Exception e) { -// e.printStackTrace(); + e.printStackTrace(); } } @@ -103,10 +93,10 @@ OperateResult connect = siemensNet.ConnectServer(); if(connect.IsSuccess){ result = true; - OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆慠GV 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())); + OutputQueue.RGV.offer(MessageFormat.format( "銆恵0}銆慠GV 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())); log.info("RGV plc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } else { - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慠GV 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())); + OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慠GV 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())); log.error("RGV plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); initRgv(); } @@ -118,7 +108,7 @@ */ private void readStatus(){ try { - OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 30); + OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 34); if (result.IsSuccess) { if (null == rgvProtocol) { rgvProtocol = new RgvProtocol(); @@ -126,17 +116,18 @@ } rgvProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));//妯″紡 rgvProtocol.setTaskNo1(siemensNet.getByteTransform().TransInt32(result.Content, 2));//宸ヤ綅1宸ヤ綔鍙� - rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 6));//RGV鐘舵�� - rgvProtocol.setRgvPos(siemensNet.getByteTransform().TransInt16(result.Content, 8));//RGV褰撳墠浣嶇疆 - rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 10));//璧拌鍦ㄥ畾浣� - rgvProtocol.setTemp1(siemensNet.getByteTransform().TransInt32(result.Content, 12));//澶囩敤1 - rgvProtocol.setLoaded1(siemensNet.getByteTransform().TransInt16(result.Content, 16));//宸ヤ綅1鏈夌墿 - rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 18));//寮傚父鐮� - rgvProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 20));//澶囩敤2 - rgvProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 24));//澶囩敤3 - rgvProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 28));//澶囩敤4 + rgvProtocol.setTaskNo2(siemensNet.getByteTransform().TransInt32(result.Content, 6));//宸ヤ綅1宸ヤ綔鍙� + rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 10));//RGV鐘舵�� + rgvProtocol.setColumnNumber(siemensNet.getByteTransform().TransInt16(result.Content, 12));//RGV褰撳墠浣嶇疆 + rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 14));//璧拌鍦ㄥ畾浣� + rgvProtocol.setRgvPos(siemensNet.getByteTransform().TransInt32(result.Content, 16));//RGV褰撳墠浣嶇疆 + rgvProtocol.setLoaded1(siemensNet.getByteTransform().TransInt16(result.Content, 20));//宸ヤ綅1鏈夌墿 + rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 22));//寮傚父鐮� + rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 24));//澶囩敤2 + rgvProtocol.setxDistance(siemensNet.getByteTransform().TransSingle(result.Content, 28));//澶囩敤3 + rgvProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 32));//澶囩敤4 - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); + OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); // 澶嶄綅淇″彿 if (rgvProtocol.getStatusType().equals(RgvStatusType.WAITING)) { @@ -172,16 +163,33 @@ } else { initRgv(); - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV 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())); + OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV 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())); log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [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}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); initRgv(); } } + private boolean writeAckFinish1(RgvCommand command) throws InterruptedException { + OperateResult write = siemensNet.Write("DB100.22.1", true); + if (!write.IsSuccess){ + log.error("浠诲姟1纭瀹屾垚鍐欏叆RGVplc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===> [id:{}]",slave.getId()); + MessageQueue.offer(SlaveType.Rgv, slave.getId(), new Task(3, command)); + } + return write.IsSuccess; + } + private boolean writeAckFinish2(RgvCommand command) throws InterruptedException { + OperateResult write = siemensNet.Write("DB100.22.2", true); + if (!write.IsSuccess){ + log.error("浠诲姟2纭瀹屾垚鍐欏叆RGVplc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===> [id:{}]",slave.getId()); + MessageQueue.offer(SlaveType.Rgv, slave.getId(), new Task(4, command)); + } + return write.IsSuccess; + } + /** * 鍐欏叆鏁版嵁 @@ -198,11 +206,21 @@ array[1] = command.getSourceStaNo2(); array[2] = command.getDestinationStaNo1(); array[3] = command.getDestinationStaNo2(); - array[4] = command.getTaskMode1(); + array[4] = command.getTaskMode(); + + int[] array2 = new int[3]; + array2[0] = command.getTaskNo1(); + array2[1] = command.getTaskNo2(); + array2[2] = 0; + + boolean[] array3 = new boolean[3]; + array3[0] = command.isCommand(); + array3[1] = command.isAckFinish1(); + array3[2] = command.isAckFinish2(); OperateResult result1 = siemensNet.Write("DB100.0",array); - OperateResult result2 = siemensNet.Write("DB100.10",command.getTaskNo1()); - OperateResult result3 = siemensNet.Write("DB100.18.1",command.isAckFinish()); + OperateResult result2 = siemensNet.Write("DB100.10",array2); + OperateResult result3 = siemensNet.Write("DB100.22",array3); if (!result1.IsSuccess && !result2.IsSuccess && !result3.IsSuccess){ log.error("鍐欏叆RGVplc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===> [id:{}],{}",slave.getId(),JSON.toJSON(command)); @@ -215,23 +233,33 @@ //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔� Thread.sleep(400); try { - OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20); - OperateResultExOne<byte[]> resultReadAck = siemensNet.Read("DB100.18.1", (short) 1); - if (resultRead.IsSuccess){ + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 24); + OperateResultExOne<byte[]> readAck1 = siemensNet.Read("DB100.0", (short) 22.1); + OperateResultExOne<byte[]> readAck2 = siemensNet.Read("DB100.0", (short) 22.2); + if (resultRead.IsSuccess && readAck1.IsSuccess && readAck2.IsSuccess){ RgvCommand one = new RgvCommand(); - one.setAckFinish(siemensNet.getByteTransform().TransBool(resultReadAck.Content, 0)); one.setSourceStaNo1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 0)); one.setSourceStaNo2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2)); one.setDestinationStaNo1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4)); one.setDestinationStaNo2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6)); - one.setTaskMode1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8)); + one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8)); one.setTaskNo1(siemensNet.getByteTransform().TransInt32(resultRead.Content, 10)); + one.setTaskNo2(siemensNet.getByteTransform().TransInt32(resultRead.Content, 14)); + one.setCommand(siemensNet.getByteTransform().TransBool(resultRead.Content, 22)); + one.setAckFinish1(siemensNet.getByteTransform().TransBool(readAck1.Content, 0)); + one.setAckFinish2(siemensNet.getByteTransform().TransBool(readAck2.Content, 0)); // one.setDestinationStaNo1(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8)); - if ( !command.isAckFinish() == one.isAckFinish() || + if ( !command.isAckFinish1() == one.isAckFinish1() || + !command.isAckFinish2() == one.isAckFinish2() || + !command.isCommand() == one.isCommand() || + !command.getTaskNo1().equals(one.getTaskNo1()) || - !command.getTaskMode1().equals(one.getTaskMode1()) || + !command.getTaskNo2().equals(one.getTaskNo2()) || + !command.getTaskMode().equals(one.getTaskMode()) || !command.getSourceStaNo1().equals(one.getSourceStaNo1()) || - !command.getDestinationStaNo1().equals(one.getDestinationStaNo1()) + !command.getDestinationStaNo1().equals(one.getDestinationStaNo1()) || + !command.getSourceStaNo2().equals(one.getSourceStaNo2()) || + !command.getDestinationStaNo2().equals(one.getDestinationStaNo2()) ){ try{ log.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); @@ -250,12 +278,15 @@ }else { log.info("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); } + }else { + log.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�,閲嶆柊鍔犲叆闃熷垪"); + MessageQueue.offer(SlaveType.Rgv, slave.getId(), new Task(2, command)); } }catch (Exception e){ log.error("RGV鍛戒护鍦板潃鍐欏叆鍚庡洖璇诲嚭閿�"); } - if (!command.isAckFinish()) { + if (!command.isAckFinish1() && !command.isAckFinish2()) { if (result1.IsSuccess) { Thread.sleep(300); //浠诲姟涓嬪彂娆℃暟 @@ -263,11 +294,11 @@ do { writeCount2++; - result1 = siemensNet.Write("DB100.18", true); + result1 = siemensNet.Write("DB100.22", true); if(result1.IsSuccess){ //RGV浠诲姟鍐欏叆鍚庯紝鍥炶涓�娆★紝鐪嬫槸鍚︽垚鍔� Thread.sleep(200); - OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.18", (short) 2); + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.22", (short) 2); if (resultRead.IsSuccess) { boolean commandFinish=siemensNet.getByteTransform().TransBool(resultRead.Content, 0); if (!commandFinish){ @@ -309,9 +340,18 @@ if (null == rgvProtocol) { rgvProtocol = new RgvProtocol(); } - rgvProtocol.setMode((short) 0); - rgvProtocol.setStatus((short) -1); - rgvProtocol.setWalkPos((short) 1); + rgvProtocol.setMode((short) 0);//妯″紡 + rgvProtocol.setTaskNo1(0);//宸ヤ綅1宸ヤ綔鍙� + rgvProtocol.setTaskNo2(0);//宸ヤ綅1宸ヤ綔鍙� + rgvProtocol.setStatus((short) 0);//RGV鐘舵�� + rgvProtocol.setColumnNumber((short) 0);//RGV褰撳墠浣嶇疆 + rgvProtocol.setWalkPos((short) 0);//璧拌鍦ㄥ畾浣� + rgvProtocol.setRgvPos(0);//RGV褰撳墠浣嶇疆 + rgvProtocol.setLoaded1((short) 0);//宸ヤ綅1鏈夌墿 + rgvProtocol.setAlarm((short) 0);//寮傚父鐮� + rgvProtocol.setxSpeed( 0);//澶囩敤2 + rgvProtocol.setxDistance(0);//澶囩敤3 + rgvProtocol.setxDuration( 0);//澶囩敤4 } @Override diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index c499a4b..3b07a94 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -8,7 +8,7 @@ name: @pom.build.finalName@ datasource: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver - url: jdbc:sqlserver://127.0.0.1:1433;databasename=mdqdasrs + url: jdbc:sqlserver://10.10.10.212:1433;databasename=mdqdasrs username: sa password: sa@123 mvc: @@ -34,7 +34,7 @@ enable: false wms: - url: localhost:8080/mdqdwms + url: localhost:8082/mdqdwms # 涓嬩綅鏈洪厤缃� wcs-slave: @@ -132,15 +132,15 @@ demo: false # 鍫嗗灈鏈哄叆搴撶珯1 crnInStn[0]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 1013 + devpPlcId: ${wcs-slave.devp[2].id} + staNo: 5001 row: 4 bay: 2 lev: 1 # 鍫嗗灈鏈哄嚭搴撶珯鐐�1 crnOutStn[0]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 1010 + devpPlcId: ${wcs-slave.devp[2].id} + staNo: 5002 row: 4 bay: 1 lev: 1 @@ -225,45 +225,42 @@ port: 102 rack: 0 slot: 0 - rgvSta[0]: - staNo: 4007 - rgvSta[1]: - staNo: 4001 - rgvSta[2]: - staNo: 4016 - rgvSta[3]: - staNo: 4010 - rgvSta[4]: - staNo: 2003 - rgvSta[5]: - staNo: 2103 - rgvSta[6]: - staNo: 2301 - rgvSta[7]: - staNo: 2002 - rgvSta[8]: - staNo: 2102 -# # 杈撻�佺嚎3 -# devp[2]: -# id: 1 -# ip: 10.10.10.20 -# port: 102 -# rack: 0 -# slot: 0 -# # 杈撻�佺嚎4 -# devp[3]: -# id: 1 -# ip: 10.10.10.20 -# port: 102 -# rack: 0 -# slot: 0 - # RGV1 - rgv[0]: - id: 1 - ip: 10.10.10.120 + # 杈撻�佺嚎3 + devp[2]: + id: 3 + ip: 10.10.10.30 port: 102 rack: 0 slot: 0 + # 杈撻�佺嚎4 + devp[3]: + id: 4 + ip: 10.10.10.33 + port: 102 + rack: 0 + slot: 0 +# # 杈撻�佺嚎5 +# devp[4]: +# id: 5 +# ip: 10.10.10.33 +# port: 102 +# rack: 0 +# slot: 0 +# # RGV1 + rgv[0]: + id: 1 + ip: 10.10.10.130 + port: 102 + rack: 0 + slot: 0 + inStn[0]: + sourceStaNo: 4007 + sourcePlcId: 4 + staNo: 2103 + staPlcId: 2 + outStn[0]: + sourceStaNo: 4007 + sourcePlcId: 4 # # RGV2 # rgv[1]: # id: 2 diff --git a/src/main/resources/mapper/EmptyBarrelInMapper.xml b/src/main/resources/mapper/EmptyBarrelInMapper.xml new file mode 100644 index 0000000..025c0ae --- /dev/null +++ b/src/main/resources/mapper/EmptyBarrelInMapper.xml @@ -0,0 +1,14 @@ +<?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.EmptyBarrelInMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.zy.asrs.entity.EmptyBarrelIn"> + <id column="id" property="id" /> + <result column="matnr" property="matnr" /> + <result column="batch" property="batch" /> + <result column="maktx" property="maktx" /> + + </resultMap> + +</mapper> diff --git a/src/main/webapp/static/css/rgv.css b/src/main/webapp/static/css/rgv.css new file mode 100644 index 0000000..01230f4 --- /dev/null +++ b/src/main/webapp/static/css/rgv.css @@ -0,0 +1,252 @@ +body { + background-color: #6CA7A8; +} +.button-window { + float: left; + width: 100%; + height: 100%; + padding: 10px; + border-radius: 5px; + box-shadow: 0 0 3px rgba(0 0 0 .3); +} +/* -------------------- 绗竴妯″潡 -------------------- */ +.log-board { + background-color: #fff; + border-radius: 5px; + box-shadow: 0 0 3px rgba(0,0,0,.3); + height: 28%; +} + +/* 宸� */ +.command-log { + float: left; + height: 100%; + width: 20%; + text-align: center; +} +.command-log h2 { + padding: 10px; +} +.rgv-command-item { + padding: 4px 0; +} +.rgv-command-item label { + font-size: 20px; + font-weight: bold; + vertical-align: middle; +} +.rgv-command-item span { + display: inline-block; + width: 20px; + height: 20px; + background-color: #2e9926; + border-radius: 5px; + vertical-align: middle; +} +.rgv-command-item input { + vertical-align: middle; + outline: none; + width: 60%; +} + +/* 鍙� */ +.rgv-state { + float: left; + height: 100%; + width: 100%; + overflow: auto; +} +/* 鍫嗗灈鏈虹姸鎬佽〃 */ +#rgv-state-table { + font-size: 12px; + border-collapse: collapse; + margin: 0 auto; + text-align: center; +} +#rgv-state-table td, #rgv-state-table th { + border: 1px solid #cad9ea; + color: #666; + height: 25px; +} +#rgv-state-table thead th { + background-color: #CCE8EB; + width: 300px; +} +#rgv-state-table tr:nth-child(odd) { + background: #fff; +} +#rgv-state-table tr:nth-child(even) { + background: #F5FAFA; +} + +/* -------------------- 绗簩妯″潡 -------------------- */ +.rgv-msg { + /*overflow: auto;*/ + margin-top: 10px; + height: 23%; + background-color: #fff; + border-radius: 5px; + box-shadow: 0 0 3px rgba(0,0,0,.3); +} +/* 鍫嗗灈鏈虹姸鎬佷俊鎭〃 */ +#rgv-msg-table { + font-size: 12px; + border-collapse: collapse; + margin: 0 auto; + text-align: center; +} +#rgv-msg-table td, #rgv-msg-table th { + border: 1px solid #f1f1f1; + color: #666; + height: 30px; +} +#rgv-msg-table thead th { + background-color: #fff; + width: 400px; +} +#rgv-msg-table tr:nth-child(odd) { + background: #fff; +} +#rgv-msg-table tr:nth-child(even) { + background: #fff; +} + +/* -------------------- 绗笁妯″潡 -------------------- */ +.rgv-operation { + position: relative; + margin-top: 10px; + height: 25%; + background-color: #fff; + border-radius: 5px; + box-shadow: 0 0 3px rgba(0,0,0,.3); +} + +/* 浠诲姟璁惧閫夋嫨妗� */ +.task-select { + height: 50%; + overflow: hidden; + padding: 20px 0 10px 20px; +} +.operator-item { + display: inline-block; + height: 100%; + width: 20%; + text-align: center; + position: relative; + vertical-align: middle; + padding: 10px 0px 10px 50px; +} +.operator-item .select-title { + display: inline-block; + position: absolute; + top: -11px; + left: 50%; + transform: translate(-50%, 0); + background-color: #fff; + color: #2e95d3; + font-size: 12px; + border: 1px solid #8d8d8d; + border-radius: 5px; + padding: 5px; + z-index: 999; +} +.operator-item .select-container { + padding: 10px 0; + height: 100%; + border: 1px solid #8d8d8d; + border-radius: 5px; +} +#rgv-select .select-container label { + display: inline-block; + padding: 0 20px; + vertical-align: middle; margin-top:-2px; margin-bottom:1px; + +} +.select-container input { + display: inline-block; + font-size: 12px; + vertical-align: middle; margin-top:-2px; margin-bottom:1px; +} +.select-container-item { + display: block; + margin: 0px auto; + padding: 0; +} +.select-container-item input { + height: 20px; + border: 1px solid #8D8D8D; + border-radius: 3px; + width: 80px; + outline: none; +} + +/* 浠诲姟浣滀笟閫夋嫨妗� */ +.task-operator { + height: 50%; + overflow: hidden; + padding: 0 20px 10px 20px; +} +.task-operator fieldset { + padding: 15px 20px 5px 50px; + border-width: 1px; + border-style: solid; + height: 100%; +} +.task-operator legend { + margin-left: 20px; + padding: 0 10px; + font-size: 16px; + font-weight: 300; +} +button.item { + border: 1px solid #333; + font-size: 13px; + padding: 1px 1px 1px 1px; + width: 100px; + height: 40px; + outline: none; + cursor: pointer; + color: #333; + background-color: transparent; + margin-right: 5px; + border-radius: 5px; +} +button.item:hover { + background-color: #333; + color: #fff; +} + +/* 鎵嬪姩鎿嶄綔閬僵 */ +.rgv-operation-shade { + position: absolute; + height: 100%; + width: 100%; + z-index: 1000; + text-align: center; + padding: 80px 0; +} +.rgv-operation-shade-span { + font-size: xx-large; + font-weight: bold; + color: red; +} + +/* -------------------- 绗洓妯″潡 -------------------- */ +.rgv-output-board { + margin-top: 10px; + height: 15%; + background-color: #fff; + border-radius: 5px; + box-shadow: 0 0 3px rgba(0,0,0,.3); +} +#rgv-output { + border-left: none; + border-right: none; + border-top: 1px solid #9d9d9d; + border-bottom: 1px solid #333; + width: 100%; + height: 100%; + overflow: auto; + resize:none; + color: #666; +} diff --git a/src/main/webapp/views/index.html b/src/main/webapp/views/index.html index 5a55a20..fba5381 100644 --- a/src/main/webapp/views/index.html +++ b/src/main/webapp/views/index.html @@ -17,6 +17,7 @@ <li><a id="console" onclick="nav(this.id)" class="nav-select" href="#">涓绘帶鍥�</a></li> <li><a id="pipeline" onclick="nav(this.id)" class="nav-unselect" href="#">杈撻�佽澶�</a></li> <li><a id="crn" onclick="nav(this.id)" class="nav-unselect" href="#">鍫嗗灈鏈�</a></li> + <li><a id="rgv" onclick="nav(this.id)" class="nav-unselect" href="#">RGV</a></li> </ul> </div> </div> diff --git a/src/main/webapp/views/rgv.html b/src/main/webapp/views/rgv.html new file mode 100644 index 0000000..aa468fc --- /dev/null +++ b/src/main/webapp/views/rgv.html @@ -0,0 +1,598 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <title>RGV鐩戞帶绠$悊</title> + <meta name="renderer" content="webkit"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> + <link rel="stylesheet" type="text/css" href="../static/css/normalize.css"> + <link rel="stylesheet" type="text/css" href="../static/css/common.css"> + <link rel="stylesheet" type="text/css" href="../static/css/rgv.css"> + <script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script> + <script type="text/javascript" src="../static/js/common.js"></script> + <script type="text/javascript" src="../static/js/layer/layer.js"></script> + <style> + .demoBtn { + vertical-align: middle; + width: 20%; + height: 25px; + left: 0; + top: 0; + text-shadow: inherit; + font-size: 15px; + margin-left: 5px; + margin-right: 5px; + display: inline-block; + background-color: #FF5722; + border: none; + color: #FFF; + box-shadow: 1px 1px 5px #B6B6B6; + border-radius: 3px; + cursor: pointer; + } + + .demoBtn:hover { + opacity: 0.8 + } + .demoBtn:focus { + outline: 0; + } + </style> +</head> +<body> +<div style="padding: 10px;height: 100%;float: left;width: 6%"> + <div class="button-window"></div> +</div> +<div style="height: 100%;padding-left: 6%"> + <div style="padding: 10px;height: 100%"> + <!-- 鏃ュ織鐩戞帶鏉� --> + <div class="log-board"> + <!-- 鎵ц鍛戒护 --> + + <!-- 鎵ц鍛戒护 --> + <!--<div class="command-log">--> +<!-- <h3>鎵ц涓殑鍛戒护</h3>--> +<!-- <div class="crn-command-item">--> +<!-- <label>1#</label>--> +<!-- <button id="demoBtn-1" class="demoBtn" onclick="demoSwitch(this.id)"> - </button>--> +<!-- <!– <span> </span>–>--> +<!-- <input id="crn1" disabled="disabled">--> +<!-- </div>--> +<!-- <div class="crn-command-item">--> +<!-- <label>2#</label>--> +<!-- <button id="demoBtn-2" class="demoBtn" onclick="demoSwitch(this.id)"> - </button>--> +<!-- <!– <span> </span>–>--> +<!-- <input id="crn2" disabled="disabled">--> +<!-- </div>--> +<!-- <div class="crn-command-item">--> +<!-- <label>3#</label>--> +<!-- <button id="demoBtn-3" class="demoBtn" onclick="demoSwitch(this.id)"> - </button>--> +<!-- <!– <span> </span>–>--> +<!-- <input id="crn3" disabled="disabled">--> +<!-- </div>--> +<!-- <div class="crn-command-item">--> +<!-- <label>4#</label>--> +<!-- <button id="demoBtn-4" class="demoBtn" onclick="demoSwitch(this.id)"> - </button>--> +<!-- <!– <span> </span>–>--> +<!-- <input id="crn4" disabled="disabled">--> +<!-- </div>--> +<!-- <div class="crn-command-item">--> +<!-- <label>5#</label>--> +<!-- <button id="demoBtn-5" class="demoBtn" onclick="demoSwitch(this.id)"> - </button>--> +<!-- <!– <span> </span>–>--> +<!-- <input id="crn5" disabled="disabled">--> +<!-- </div>--> +<!-- </div>--> + <!-- RGV鐘舵�佷綅淇℃伅 --> + <div class="rgv-state"> + <table id="rgv-state-table"> + <thead> + <tr> + <th>RGV</th> + <th>褰撳墠妯″紡</th> + <th>褰撳墠鐘舵��</th> + <th>宸ヤ綅1浠诲姟鍙�</th> + <th>宸ヤ綔鐘舵��</th> + <th>鏈夌墿</th> + <th>RGV浣嶇疆</th> + <th>璧拌瀹氫綅</th> +<!-- <th>浠诲姟鍙�2</th>--> +<!-- <th>鐘舵��2</th>--> +<!-- <th>鏈夌墿2</th>--> + <th>鏁呴殰浠g爜</th> + <th>鏁呴殰鎻忚堪</th> +<!-- <th>閿佸畾鐘舵��</th>--> + </tr> + </thead> + <tbody> + </tbody> + </table> + </div> + </div> + <!-- RGV鐘舵�� --> + <div class="rgv-msg"> + <table id="rgv-msg-table"> + <thead> + <tr> + <th>RGV</th> + <th>宸ヤ綔鍙�</th> + <th>鐘舵��</th> + <th>婧愮珯</th> + <th>鐩爣绔�</th> + <th>婧愬簱浣�</th> + <th>鐩爣搴撲綅</th> +<!-- <th>璧拌閫熷害锛坢/min)</th>--> +<!-- <th>鍗囬檷閫熷害锛坢/min)</th>--> +<!-- <th>鍙夌墮閫熷害锛坢/min)</th>--> +<!-- <th>璧拌璺濈(Km)</th>--> +<!-- <th>鍗囬檷璺濈(Km)</th>--> +<!-- <th>璧拌鏃堕暱(H)</th>--> +<!-- <th>鍗囬檷鏃堕暱(H)</th>--> + </tr> + </thead> + <tbody> + </tbody> + </table> + </div> + <!-- 鎵嬪姩鎿嶄綔 --> + <div class="rgv-operation"> + + <!-- 閬僵灞� --> + <div class="rgv-operation-shade"> + <span class="rgv-operation-shade-span"> + WCS 绯荤粺杩愯涓紝璇峰仠姝㈠悗鎿嶄綔 + </span> + </div> + + <!-- 璁惧浠诲姟閫夋嫨 --> + <div class="task-select"> + <!-- 鍫嗗灈鏈洪�夋嫨 --> + <div id="rgv-select" class="operator-item" style="width: 55%"> + <span class="select-title">RGV鍙�</span> + <div class="select-container" style="padding: 20px 0;"> + <label><input type="radio" name="rgvSelect" value="1" checked> 1鍙稲GV</label> + <label><input type="radio" name="rgvSelect" value="2"> 2鍙稲GV</label> + <label><input type="radio" name="rgvSelect" value="3"> 3鍙稲GV</label> + </div> + </div> + <!-- 婧愮珯/婧愬簱浣� 閫夋嫨 --> + <div id="source-select" class="operator-item"> + <span class="select-title">婧愮珯</span> + <div class="select-container"> + <div class="select-container-item"> + <span>宸ヤ綅1婧愮珯</span> + <label><input id="sourceStaNo" type="number" name="points" min="0" value="0"/></label> + </div> +<!-- <div class="select-container-item">--> +<!-- <span>鎺�</span>--> +<!-- <label><input id="sourceRow" type="number" name="points" min="1" style="background-color: #a9eeff" value="1" /></label>--> +<!-- </div>--> + <div class="select-container-item"> + <span>宸ヤ綅2婧愮珯</span> + <label><input id="sourceBay" type="number" name="points" min="0" style="background-color: #a9eeff" value="0" /></label> + </div> +<!-- <div class="select-container-item">--> +<!-- <span>灞�</span>--> +<!-- <label><input id="sourceLev" type="number" name="points" min="1" style="background-color: #a9eeff" value="1" /></label>--> +<!-- </div>--> + </div> + </div> + <!-- 鐩爣绔�/鐩爣搴撲綅 閫夋嫨 --> + <div id="target-select" class="operator-item"> + <span class="select-title">鐩爣绔�</span> + <div class="select-container"> + <div class="select-container-item"> + <span>宸ヤ綅1鐩爣绔�</span> + <label><input id="staNo" type="number" name="points" min="0" value="0"/></label> + </div> +<!-- <div class="select-container-item">--> +<!-- <span>鎺�</span>--> +<!-- <label><input id="row" type="number" name="points" min="1" style="background-color: #a9eeff" value="1" /></label>--> +<!-- </div>--> + <div class="select-container-item"> + <span>宸ヤ綅2鐩爣绔�</span> + <label><input id="bay" type="number" name="points" min="0" style="background-color: #a9eeff" value="0" /></label> + </div> +<!-- <div class="select-container-item">--> +<!-- <span>灞�</span>--> +<!-- <label><input id="lev" type="number" name="points" min="1" style="background-color: #a9eeff" value="1" /></label>--> +<!-- </div>--> + </div> + </div> + </div> + + <!-- 璁惧浠诲姟鎿嶄綔 --> + <div class="task-operator"> + <fieldset> + <legend>鎵嬪姩鎿嶄綔</legend> + <div class="button-group"> + <button class="item" onclick="put()">鍙栨斁璐�</button> +<!-- <button class="item" onclick="take()">鍙栬揣</button>--> +<!-- <button class="item" onclick="stockMove()">鏀捐揣</button>--> +<!-- <button class="item" onclick="siteMove()">绔欏埌绔�</button>--> + <!-- <button class="item" onclick="bacOrigin()">鍥炲師鐐�</button>--> + <!-- <button class="item" onclick="reverseOrigin()">鍙嶅師鐐�</button>--> + <!-- <button class="item" onclick="coorMove()">鍧愭爣绉昏</button>--> + <button class="item" onclick="taskComplete1()">宸ヤ綅1浠诲姟瀹屾垚</button> + <button class="item" onclick="taskComplete2()">宸ヤ綅2浠诲姟瀹屾垚</button> + <!-- <button class="item" onclick="pause()">鏆傚仠</button>--> + <!-- <button class="item" onclick="boot()">鍚姩</button>--> +<!-- <button class="item" onclick="clearCommand()">娓呴櫎鍛戒护</button>--> +<!-- <button class="item" onclick="handleReset()">澶嶄綅</button>--> + </div> + </fieldset> + </div> + + </div> + <!-- 鍫嗗灈鏈烘棩蹇楄緭鍑� --> + <div class="rgv-output-board"> + <textarea id="rgv-output"></textarea> + </div> + </div> +</div> +</body> +<script> + // 绌虹櫧琛屾暟 + var rgvStateTableBlankRows = 0; + var rgvMsgTableBlankRows = 0; + // 瀹為檯琛屾暟 + var rgvStateTableFullRows = 0; + var rgvMsgTableFullRows = 0; + // 鍒濆鍖� + var rgvOutputDom = document.getElementById("rgv-output"); + $(document).ready(function() { + // getCommandLog(); + initRgvStateTable(); + getRgvStateInfo(); + initRgvMsgTable(); + getRgvMsgInfo(); + operatorBlockShow(); + }); + // 鏁版嵁鏇存柊 + setInterval(function () { + getRgvStateInfo(); + getRgvMsgInfo(); + // getCommandLog(); + },1000); + setInterval(function () { + getRgvOutput(); + operatorBlockShow(); + // initDemo(); + },500); + + // 鍒ゆ柇鎵嬪姩鎿嶄綔妯″潡鏄惁鍙敤 + function operatorBlockShow() { + if (parent.systemRunning) { + $('.rgv-operation').css("opacity", "0.5"); + $('.rgv-operation-shade').show(); + $('.rgv-operation-shade-span').show(); + } else { + $('.rgv-operation').css("opacity", "1"); + $('.rgv-operation-shade').hide(); + $('.rgv-operation-shade-span').hide(); + } + } + + // 鑾峰彇RGV鎵ц涓殑鍛戒护 + function getCommandLog() { + $.ajax({ + url: baseUrl + "/rgv/command/ongoing", + headers: {'token': localStorage.getItem('token')}, + method: 'POST', + success: function (res) { + if (res.code === 200) { + var commands = res.data; + for (var i=0; i<commands.length;i++){ + $("#rgv"+commands[i].rgvNo).val(commands[i].command); + } + } else if (res.code === 403) { + window.location.href = baseUrl + "/login"; + } else { + console.log(res.msg); + } + } + }) + } + + // 鍫嗗灈鏈轰俊鎭〃鑾峰彇 ---- 琛ㄤ竴 + function getRgvStateInfo() { + var tableEl = $('#rgv-state-table'); + $.ajax({ + url: baseUrl+ "/rgv/table/rgv/state", + headers: {'token': localStorage.getItem('token')}, + method: 'POST', + success: function (res) { + console.log(res) + if (res.code === 200){ + var table = res.data; + if (table.length > rgvStateTableBlankRows && table.length !== rgvStateTableFullRows) { + initRgvStateTable(table.length-rgvStateTableBlankRows); + rgvStateTableFullRows = table.length; + } + for (var i=1;i<=table.length;i++){ + var tr = tableEl.find("tr").eq(i); + setVal(tr.children("td").eq(0), table[i-1].rgvNo); + setVal(tr.children("td").eq(1), table[i-1].statusType); + setVal(tr.children("td").eq(2), table[i-1].status); + setVal(tr.children("td").eq(3), table[i-1].workNo1); + setVal(tr.children("td").eq(4), table[i-1].status1); + setVal(tr.children("td").eq(5), table[i-1].loading1); + setVal(tr.children("td").eq(6), table[i-1].rgvPos1); + setVal(tr.children("td").eq(7), table[i-1].walkPos); + // setVal(tr.children("td").eq(8), table[i-1].workNo2); + // setVal(tr.children("td").eq(9), table[i-1].status2); + // setVal(tr.children("td").eq(10), table[i-1].loading2); + setVal(tr.children("td").eq(8), table[i-1].warnCode); + setVal(tr.children("td").eq(9), table[i-1].alarm); + // setVal(tr.children("td").eq(10), table[i-1].pakMk); + } + } else if (res.code === 403){ + window.location.href = baseUrl+"/login"; + } else { + console.log(res.msg); + } + } + }); + } + + // 鍫嗗灈鏈烘暟鎹〃鑾峰彇 ---- 琛ㄤ簩 + function getRgvMsgInfo() { + var tableEl = $('#rgv-msg-table'); + $.ajax({ + url: baseUrl+ "/rgv/table/rgv/msg", + headers: {'token': localStorage.getItem('token')}, + method: 'POST', + success: function (res) { + if (res.code === 200){ + var table = res.data; + if (table.length > rgvStateTableBlankRows && table.length !== rgvMsgTableFullRows) { + initRgvStateTable(table.length-rgvStateTableBlankRows); + rgvMsgTableFullRows = table.length; + } + for (var i=1;i<=table.length;i++){ + var tr = tableEl.find("tr").eq(i); + setVal(tr.children("td").eq(0), table[i-1].rgvNo); + setVal(tr.children("td").eq(1), table[i-1].workNo); + setVal(tr.children("td").eq(2), table[i-1].status); + setVal(tr.children("td").eq(3), table[i-1].sourceStaNo); + setVal(tr.children("td").eq(4), table[i-1].staNo); + setVal(tr.children("td").eq(5), table[i-1].sourceLocNo); + setVal(tr.children("td").eq(6), table[i-1].locNo); + // setVal(tr.children("td").eq(7), table[i-1].xspeed); + // setVal(tr.children("td").eq(8), table[i-1].yspeed); + // setVal(tr.children("td").eq(9), table[i-1].zspeed); + // setVal(tr.children("td").eq(10), table[i-1].xdistance); + // setVal(tr.children("td").eq(11), table[i-1].ydistance); + // setVal(tr.children("td").eq(12), table[i-1].xduration); + // setVal(tr.children("td").eq(13), table[i-1].yduration); + } + } else if (res.code === 403){ + window.location.href = baseUrl+"/login"; + } else { + console.log(res.msg); + } + } + }); + } + + // 鍫嗗灈鏈烘墜鍔ㄦ搷浣滃尯 ----------------------------------------------------------------------- + + function getReqParam() { + var rgvNo = $('input[name="rgvSelect"]:checked').val(); + var sourceStaNo = $('#sourceStaNo').val(); + var sourceRow = $('#sourceRow').val(); + var sourceBay = $('#sourceBay').val(); + var sourceLev = $('#sourceLev').val(); + var staNo = $('#staNo').val(); + var row = $('#row').val(); + var bay = $('#bay').val(); + var lev = $('#lev').val(); + return { + rgvNo: rgvNo, + sourceStaNo1: sourceStaNo, + sourceRow: sourceRow, + sourceStaNo2: sourceBay, + sourceLev: sourceLev, + staNo1: staNo, + row: row, + staNo2: bay, + lev: lev + }; + } + + // 鍏ュ簱 + function put() { + http.post(baseUrl+"/rgv/operator/put", getReqParam(), function (res) { + layer.msg(res.msg); + }); + } + + // 鍑哄簱 + function take() { + http.post(baseUrl+"/rgv/operator/take", getReqParam(), function (res) { + layer.msg(res.msg); + }); + } + + // 搴撲綅杞Щ + function stockMove() { + http.post(baseUrl+"/rgv/operator/stockMove", getReqParam(), function (res) { + layer.msg(res.msg); + }); + } + + // 绔欏埌绔� + function siteMove() { + http.post(baseUrl+"/rgv/operator/siteMove", getReqParam(), function (res) { + layer.msg(res.msg); + }); + } + + // 鍧愭爣绉诲姩 + function coorMove() { + http.post(baseUrl+"/rgv/operator/coorMove", getReqParam(), function (res) { + layer.msg(res.msg); + }); + } + + // 鍥炲師鐐� + function bacOrigin() { + http.post(baseUrl+"/rgv/operator/bacOrigin", getReqParam(), function (res) { + layer.msg(res.msg); + }); + } + + // 鍥炲師鐐� + function reverseOrigin() { + http.post(baseUrl+"/rgv/operator/reverseOrigin", getReqParam(), function (res) { + layer.msg(res.msg); + }); + } + + // 浠诲姟瀹屾垚 + function taskComplete1() { + http.post(baseUrl+"/rgv/operator/taskComplete1", getReqParam(), function (res) { + layer.msg(res.msg); + }); + } + + // 浠诲姟瀹屾垚 + function taskComplete2() { + http.post(baseUrl+"/rgv/operator/taskComplete2", getReqParam(), function (res) { + layer.msg(res.msg); + }); + } + + function lock() { + http.post(baseUrl+"/rgv/lock", getReqParam(), function (res) { + layer.msg(res.msg); + }); + } + + // 鏆傚仠 + function pause() { + http.post(baseUrl+"/rgv/operator/pause", getReqParam(), function (res) { + layer.msg(res.msg); + }); + } + + // 鍚姩 + function boot() { + http.post(baseUrl+"/rgv/operator/boot", getReqParam(), function (res) { + layer.msg(res.msg); + }); + } + + // 娓呴櫎鍛戒护 + function clearCommand() { + http.post(baseUrl+"/rgv/operator/clearCommand", getReqParam(), function (res) { + layer.msg(res.msg); + }); + } + + // 鎵嬪姩澶嶄綅 + function handleReset() { + http.post(baseUrl+"/rgv/operator/handleReset", getReqParam(), function (res) { + layer.msg(res.msg); + }); + } + + // 杈撻�佽澶囨棩蹇楄緭鍑� ----------------------------------------------------------------------- + function getRgvOutput() { + $.ajax({ + url: baseUrl + "/rgv/output/site", + headers: {'token': localStorage.getItem('token')}, + method: 'POST', + success: function (res) { + console.log(res) + if (res.code === 200) { + rgvOutput(res.data); + } else if (res.code === 403) { + window.location.href = baseUrl + "/login"; + } else { + console.log(res.msg); + } + } + }) + } + + // ------------------------------------------------------------------------------------------------ + + // 鍫嗗灈鏈轰俊鎭〃鑾峰彇 ----- 琛ㄤ竴 + function initRgvStateTable(row) { + var line; + if (row === undefined){ + var one = $('#rgv-state-table thead').height(); + var total = $('.rgv-state').height(); + var count = total / one; + count = parseInt(count) - 1; + rgvStateTableBlankRows = count; + line = count; + } else { + line = row; + } + var html = ""; + for (var i = 0; i < line; i ++){ + html += " <tr>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " </tr>\n"; + } + $('#rgv-state-table tbody').after(html); + } + + // 鍫嗗灈鏈烘暟鎹〃鑾峰彇 ----- 琛ㄤ簩 + function initRgvMsgTable(row) { + var line; + if (row === undefined){ + var one = $('#rgv-msg-table thead').height(); + var total = $('.rgv-msg').height(); + var count = total / one; + count = parseInt(count) - 1; + rgvMsgTableBlankRows = count; + line = count; + } else { + line = row; + } + var html = ""; + for (var i = 0; i < line; i ++){ + html += " <tr>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " <td></td>\n" + + " </tr>\n"; + } + $('#rgv-msg-table tbody').after(html); + } + + // 鏃ュ織杈撳嚭妗� + function rgvOutput(content){ + rgvOutputDom.value += content; + rgvOutputDom.scrollTop = rgvOutputDom.scrollHeight; + } + +</script> +</html> -- Gitblit v1.9.1