src/main/java/com/zy/asrs/controller/CrnController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/TaskWrk.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/taskCreateParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/OpenService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/command/CrnCommand.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SiemensCrnThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SiemensDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/deviceOperate/crnOperate.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/CrnController.java
@@ -2,6 +2,7 @@ import HslCommunication.Profinet.Siemens.SiemensS7Net; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.core.annotations.ManagerAuth; @@ -22,6 +23,7 @@ import com.zy.asrs.service.WrkMastService; import com.zy.asrs.service.impl.MainServiceImpl; import com.zy.asrs.utils.VersionUtils; import com.zy.common.utils.HttpHandler; import com.zy.core.CrnThread; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; @@ -37,8 +39,10 @@ import com.zy.core.properties.SystemProperties; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -51,6 +55,11 @@ @Slf4j @RestController public class CrnController { @Value("${wms.url}") private String wmsUrl; @Value("${wms.movePath}") private String movePath; @@ -586,14 +595,6 @@ CrnCommand command = new CrnCommand(); command.setCrnNo(param.getCrnNo()); // 堆垛机编号 command.setTaskNo((short) 0); // 工作号 // command.setAckFinish((short) 0); // 任务完成确认位 // command.setTaskMode(CrnTaskModeType.PAKIN); // 任务模式 // command.setSourcePosX(param.getSourceRow()); // 源库位排 // command.setSourcePosY(param.getSourceBay()); // 源库位列 // command.setSourcePosZ(param.getSourceLev()); // 源库位层 // command.setDestinationPosX(param.getRow()); // 目标库位排 // command.setDestinationPosY(param.getBay()); // 目标库位列 // command.setDestinationPosZ(param.getLev()); // 目标库位层 command.setAuto((short)1); return crnControl2(command)?R.ok():R.error(); @@ -605,37 +606,68 @@ CrnCommand command = new CrnCommand(); command.setCrnNo(param.getCrnNo()); // 堆垛机编号 command.setTaskNo((short) 0); // 工作号 // command.setAckFinish((short) 0); // 任务完成确认位 // command.setTaskMode(CrnTaskModeType.PAKIN); // 任务模式 // command.setSourcePosX(param.getSourceRow()); // 源库位排 // command.setSourcePosY(param.getSourceBay()); // 源库位列 // command.setSourcePosZ(param.getSourceLev()); // 源库位层 // command.setDestinationPosX(param.getRow()); // 目标库位排 // command.setDestinationPosY(param.getBay()); // 目标库位列 // command.setDestinationPosZ(param.getLev()); // 目标库位层 command.setAuto((short)2); return crnControl2(command)?R.ok():R.error(); } @ManagerAuth(memo = "切换手动模式") @PostMapping("/crn/operator/hand") public R onlineWrk1(CrnOperatorParam param){ short[] array = new short[9]; CrnCommand command = new CrnCommand(); command.setCrnNo(param.getCrnNo()); // 堆垛机编号 command.setTaskNo((short) 0); // 工作号 command.setAuto((short)3); return crnControl2(command)?R.ok():R.error(); } @ManagerAuth(memo = "申请完成任务") @PostMapping("/crn/operator/onlineWrk1") public R onlineWrk2(CrnOperatorParam param){ short[] array = new short[9]; CrnCommand command = new CrnCommand(); command.setCrnNo(param.getCrnNo()); // 堆垛机编号 command.setTaskNo((short) 0); // 工作号 command.setOnlineWrk1((short)1); return crnControl2(command)?R.ok():R.error(); } @ManagerAuth(memo = "申请取消任务") @PostMapping("/crn/operator/onlineWrk2") public R onlineWrk3(CrnOperatorParam param){ short[] array = new short[9]; CrnCommand command = new CrnCommand(); command.setCrnNo(param.getCrnNo()); // 堆垛机编号 command.setTaskNo((short) 0); // 工作号 command.setOnlineWrk2((short)1); return crnControl2(command)?R.ok():R.error(); } @ManagerAuth(memo = "清除联机任务") @PostMapping("/crn/operator/onlineWrk3") public R onlineWrk4(CrnOperatorParam param){ short[] array = new short[9]; CrnCommand command = new CrnCommand(); command.setCrnNo(param.getCrnNo()); // 堆垛机编号 command.setTaskNo((short) 0); // 工作号 command.setOnlineWrk3((short)1); return crnControl2(command)?R.ok():R.error(); } @ManagerAuth(memo = "恢复联机任务") @PostMapping("/crn/operator/onlineWrk4") public R crnHand(CrnOperatorParam param){ short[] array = new short[9]; CrnCommand command = new CrnCommand(); command.setCrnNo(param.getCrnNo()); // 堆垛机编号 command.setTaskNo((short) 0); // 工作号 // command.setAckFinish((short) 0); // 任务完成确认位 // command.setTaskMode(CrnTaskModeType.PAKIN); // 任务模式 // command.setSourcePosX(param.getSourceRow()); // 源库位排 // command.setSourcePosY(param.getSourceBay()); // 源库位列 // command.setSourcePosZ(param.getSourceLev()); // 源库位层 // command.setDestinationPosX(param.getRow()); // 目标库位排 // command.setDestinationPosY(param.getBay()); // 目标库位列 // command.setDestinationPosZ(param.getLev()); // 目标库位层 command.setAuto((short)3); command.setOnlineWrk4((short)1); return crnControl2(command)?R.ok():R.error(); } private boolean crnControl2(CrnCommand command){ if (command.getCrnNo() == null) { throw new CoolException("请选择堆垛机"); src/main/java/com/zy/asrs/entity/TaskWrk.java
@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotations.TableField; import java.text.SimpleDateFormat; import java.util.Date; import io.swagger.models.auth.In; import org.springframework.format.annotation.DateTimeFormat; import com.core.common.SpringUtils; import com.zy.asrs.service.BasWrkIotypeService; @@ -78,7 +80,7 @@ */ @ApiModelProperty(value= "优先级") @TableField("io_pri") private Double ioPri; private Integer ioPri; /** * 起点 @@ -180,7 +182,7 @@ public TaskWrk() {} public TaskWrk(String taskNo,Integer status,Integer wrkNo,Date createTime,Integer ioType,Double ioPri,String startPoint,String targetPoint,Long modiUser,Date modiTime,String memo,String barcode,Date assignTime,Date executeTime,Date completeTime,Date cancelTime,Integer wrkSts) { public TaskWrk(String taskNo,Integer status,Integer wrkNo,Date createTime,Integer ioType,Integer ioPri,String startPoint,String targetPoint,Long modiUser,Date modiTime,String memo,String barcode,Date assignTime,Date executeTime,Date completeTime,Date cancelTime,Integer wrkSts) { this.taskNo = taskNo; this.status = status; this.wrkNo = wrkNo; src/main/java/com/zy/asrs/entity/param/taskCreateParam.java
@@ -15,7 +15,7 @@ private String startPoint; //优先级 private Double taskPriority; private Integer taskPriority; //终点 private String targetPoint; @@ -35,7 +35,7 @@ this.taskNo = param.getTaskNo(); this.ioType = convertParamIoType(param.getTaskType()); this.barcode = param.getContainerCode(); this.taskPriority = (double) param.getTaskPriority(); this.taskPriority = param.getTaskPriority(); this.startPoint = param.getSourceLocationCode(); this.targetPoint = param.getTargetLocationCode(); this.emptyContainer = param.getEmptyContainer(); src/main/java/com/zy/asrs/service/OpenService.java
@@ -1,5 +1,6 @@ package com.zy.asrs.service; import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam; import com.zy.asrs.entity.param.taskCreateParam; public interface OpenService { src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -92,7 +92,7 @@ } else { staProtocol = staProtocol.clone(); } if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) { if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) { // 查询工作档 TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), staProtocol.getSiteId().toString()); if (taskWrk == null) { @@ -109,7 +109,7 @@ } // 判断堆垛机状态等待确认 if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(taskWrk.getWrkNo().shortValue()) && crnProtocol.getTaskFinish() == 1 && crnProtocol.getTaskFinish() == 0 && crnProtocol.forkPosType == CrnForkPosType.HOME) { // 命令下发区 -------------------------------------------------------------------------- @@ -447,7 +447,7 @@ continue; } // 入库 + 库位转移 ==> 4.入库完成 if (taskWrk.getWrkSts() == 3 || (taskWrk.getWrkSts() == 12 && taskWrk.getIoType() == 2)) { if (taskWrk.getWrkSts() == 3 || (taskWrk.getWrkSts() == 12 && taskWrk.getIoType() == 3)) { taskWrk.setWrkSts(4); } else { continue; src/main/java/com/zy/core/model/command/CrnCommand.java
@@ -75,6 +75,15 @@ //联机模式 private Short auto = 0; //申请完成任务 private Short onlineWrk1 = 0; //申请取消任务 private Short onlineWrk2 = 0; //清除联机任务 private Short onlineWrk3 = 0; //恢复联机任务 private Short onlineWrk4 = 0; // 任务确认 0:未确认 1:已确认 private Short command = 0; src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -392,7 +392,7 @@ } command.setCrnNo(slave.getId()); short[] array = new short[12]; short[] array = new short[10]; if (Cools.isEmpty(command.getAckFinish())) { array[0] = 5; } else { @@ -429,9 +429,7 @@ // } array[8] = command.getDestinationPosY(); array[9] = command.getCommand(); if (!Cools.isEmpty(command.getAuto())){ array[10] = command.getAuto(); } // 作业信息 @@ -527,9 +525,27 @@ log.error("堆垛机写入命令为空"); return false; } OperateResult result = new OperateResult(); short[] array = new short[1]; array[0] = command.getAuto(); OperateResult result = siemensNet.Write("DB100.20", array); if(command.getAuto() !=0){ array[0] = command.getAuto(); result = siemensNet.Write("DB103.0", array); }else if (command.getOnlineWrk1() != 0){ array[0] = command.getOnlineWrk1(); result = siemensNet.Write("DB103.2", array); }else if (command.getOnlineWrk2() !=0){ array[0] = command.getOnlineWrk2(); result = siemensNet.Write("DB103.4", array); }else if (command.getOnlineWrk3() != 0){ array[0] = command.getOnlineWrk3(); result = siemensNet.Write("DB103.6", array); }else if (command.getOnlineWrk4() != 0){ array[0] = command.getOnlineWrk4(); result = siemensNet.Write("DB103.8", array); } //更新命令日志 CommandInfoLogService commandInfoLogService = SpringUtils.getBean(CommandInfoLogService.class); src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -246,23 +246,23 @@ // // } //RGV台车位置 Thread.sleep(200); OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB100.0",(short)4); if (result3.IsSuccess) { for (int i = 0; i < 2; i++) { Integer siteId = i==0 ? 112 : 212; // 站点编号 StaProtocol staProtocol = station.get(siteId); if (null == staProtocol) { staProtocol = new StaProtocol(); staProtocol.setSiteId(siteId); station.put(siteId, staProtocol); } staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, i*2))); // String aa = staProtocol.getNearbySta(); // System.out.println(siteId + "===>>" + staProtocol.getNearbySta()); } } // //RGV台车位置 // Thread.sleep(200); // OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB100.0",(short)4); // if (result3.IsSuccess) { // for (int i = 0; i < 2; i++) { // Integer siteId = i==0 ? 1 : 2; // 站点编号 // StaProtocol staProtocol = station.get(siteId); // if (null == staProtocol) { // staProtocol = new StaProtocol(); // staProtocol.setSiteId(siteId); // station.put(siteId, staProtocol); // } // staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, i*2))); //// String aa = staProtocol.getNearbySta(); //// System.out.println(siteId + "===>>" + staProtocol.getNearbySta()); // } // } // OperateResultExOne<Short> result2 = siemensS7Net.ReadInt16("DB200.0"); // if (result2.IsSuccess) { src/main/resources/application.yml
@@ -39,7 +39,7 @@ # 是否开启上报 start: true # WMS系统ip url: 10.12.20.12:5001 url: 10.32.53.195:8080 # 入库任务申请接口 inboundTaskApplyPath: api/InterFace/get_InterFace_TestStorage # 任务状态反馈接口 src/main/webapp/views/deviceOperate/crnOperate.html
@@ -85,12 +85,12 @@ <el-button @click="requestOperate('auto')" type="warning">联机</el-button> <el-button @click="requestOperate('semiAutomatic')" type="warning">半自动</el-button> <el-button @click="requestOperate('hand')" type="warning">手动</el-button> <el-button @click="requestOperate('restoreOnlineWrk')" type="warning">恢复联机任务</el-button> <el-button @click="requestOperate('cancelOnlineWrk')" type="warning">取消联机任务</el-button> <el-button @click="requestOperate('finishWrk')" type="warning">申请完成任务</el-button> <el-button @click="requestOperate('onlineWrk4')" type="warning">恢复联机任务</el-button> <el-button @click="requestOperate('onlineWrk3')" type="warning">清除联机任务</el-button> <el-button @click="requestOperate('onlineWrk1')" type="warning">申请完成任务</el-button> <br/> <br/> <el-button @click="requestOperate('cancelWrk')" type="warning">申请取消任务</el-button> <el-button @click="requestOperate('onlineWrk2')" type="warning">申请取消任务</el-button> </div> </div> </el-card>