src/main/java/com/zy/asrs/controller/OpenController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/controller/SiteController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/TaskOverParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/OpenService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/utils/Utils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/ServerBootstrap.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/protocol/StaProtocol.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SiemensDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application-prod.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -8,6 +8,7 @@ import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.TaskOverParam; import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam; import com.zy.asrs.entity.param.taskCreateParam; import com.zy.asrs.service.*; @@ -50,6 +51,23 @@ public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{ add("ea1f0459efc02a79f046f982767939ae"); }}; @PostMapping("/toAgvTaskOver") public R getAgvTaskOver(@RequestHeader String appkey, @RequestBody TaskOverParam param, HttpServletRequest request){ auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } if (Cools.isEmpty(param.getWharfCode())){ return R.error("码头[wharfCode]不能为空"); } if (Cools.isEmpty(param.getStatus())){ return R.error("完成标记[status]不能为空"); } openService.getAgvTaskOver(param); return R.ok(); } //创建任务 @PostMapping("/taskCreate") src/main/java/com/zy/asrs/controller/SiteController.java
@@ -186,6 +186,7 @@ vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N"); // 空板信号 vo.setStaNo(staProtocol.getStaNo()); // 目标站 vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() && staProtocol.isLow() ? "低" : "高"); //高低库位 vo.setCar(staProtocol.isCar() ? "有": "无"); return R.ok().add(vo); } } src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java
@@ -37,4 +37,5 @@ //高低库位 private String locType1 = "-"; private String car = "-"; } src/main/java/com/zy/asrs/entity/param/TaskOverParam.java
New file @@ -0,0 +1,10 @@ package com.zy.asrs.entity.param; import lombok.Data; @Data public class TaskOverParam { private String wharfCode; private Boolean status; } src/main/java/com/zy/asrs/service/OpenService.java
@@ -1,6 +1,7 @@ package com.zy.asrs.service; import com.core.common.R; import com.zy.asrs.entity.param.TaskOverParam; import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam; import com.zy.asrs.entity.param.taskCreateParam; @@ -12,4 +13,6 @@ void taskCreate(taskCreateParam param); R AgvToWCSToWms(WMSAndAGVInterfaceParam param) throws IOException; void getAgvTaskOver(TaskOverParam param); } src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -8,11 +8,20 @@ import com.zy.asrs.domain.enums.TaskStatusType; import com.zy.asrs.entity.TaskWrk; import com.zy.asrs.entity.ToWmsDTO; import com.zy.asrs.entity.param.TaskOverParam; import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam; import com.zy.asrs.entity.param.taskCreateParam; import com.zy.asrs.service.OpenService; import com.zy.asrs.service.TaskWrkService; import com.zy.common.utils.HttpHandler; import com.zy.core.DevpThread; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.model.DevpSlave; import com.zy.core.model.Task; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.properties.SlaveProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -25,9 +34,14 @@ @Autowired private TaskWrkService taskWrkService; @Autowired private SlaveProperties slaveProperties; @Value("${wms.url}") private String wmsUrl; public ArrayList<String> wharfCode1 = new ArrayList<String>(){{ add("J-1101"); add("J-1103"); add("J-1105"); add("J-1107"); add("J-1109"); add("J-1111"); }}; @Override public void taskCreate(taskCreateParam param) { @@ -74,9 +88,8 @@ ToWmsDTO toWmsDTO = new ToWmsDTO(); Map<String, Object> map = new HashMap<>(); map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2"); List<Integer> list = new ArrayList<>(); list.add(1); list.add(4); List<Integer> list = getInEnableRoadway(); //TaskWrk taskWrk = taskWrkService.selectByTaskNo(param.getTaskNo()); toWmsDTO.setWarehouseId("1688469798893297665"); toWmsDTO.setContainerCode(param.getContainerCode()); @@ -105,4 +118,87 @@ } } @Override public void getAgvTaskOver(TaskOverParam param) { Map<String,Integer> map = new HashMap<>(); map.put("J-1101",102);map.put("J-1102",101); map.put("J-1103",106);map.put("J-1104",105); map.put("J-1105",110);map.put("J-1106",109); map.put("J-1107",114);map.put("J-1108",113); map.put("J-1109",118);map.put("J-1110",117); map.put("J-1111",122);map.put("J-1112",121); // 根据输送线plc遍历 for (DevpSlave devp : slaveProperties.getDevp()) { // 获取入库站信息 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(map.get(param.getWharfCode())); if (staProtocol == null) { continue; } else { staProtocol = staProtocol.clone(); } Short workNo = staProtocol.getWorkNo(); for (DevpSlave.Sta inSta : devp.getInSta()) { if (inSta.getBackSta().equals(map.get(param.getWharfCode()))){ if (wharfCode1.contains(param.getWharfCode())){ if (!staProtocol.isLoading() && !staProtocol.isCar()){ //AGV出库完成以后 } }else { if (staProtocol.isLoading() && !staProtocol.isCar() && workNo == 0){ //AGV入库完成以后 staProtocol.setWorkNo((short) 9998); staProtocol.setStaNo(inSta.getStaNo().shortValue()); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); if (result) { } else { throw new RuntimeException("agv返回完成后,命令下发失败"); } } } } } } } public List<Integer> getInEnableRoadway(){ int[] roadway = null; List<Integer> list = new ArrayList<>(); Map<Integer,Integer> map = new HashMap<>(); map.put(103,1); map.put(107,2); map.put(111,3); map.put(115,4); map.put(119,5); map.put(123,6); map.put(300,7); // 根据输送线plc遍历 for (DevpSlave devp : slaveProperties.getDevp()) { // 遍历入库口 for (DevpSlave.Sta inSta : devp.getInSta()) { // 获取入库站信息 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(inSta.getBackSta()); if (staProtocol == null) { continue; } else { staProtocol = staProtocol.clone(); } Short workNo = staProtocol.getWorkNo(); if (workNo == 0 && !staProtocol.isLoading()){ list.add(map.get(inSta.getStaNo())); } } } //roadway = list.stream().mapToInt(Integer::intValue).toArray(); return list; } } src/main/java/com/zy/asrs/utils/Utils.java
@@ -23,14 +23,14 @@ int[] wcsRow = getWcsRow(split[0]); int[] ints = null; if (split[3].equals("01")){ ints = Arrays.copyOfRange(wcsRow, 0, wcsRow.length / 2); ints = Arrays.copyOfRange(wcsRow, 0, (wcsRow.length+2-1) / 2); if (split[4].equals("01")){ ints = Arrays.copyOfRange(ints, wcsRow.length / 2,wcsRow.length-1); }else { ints = Arrays.copyOfRange(ints, 0, wcsRow.length / 2); } }else { ints = Arrays.copyOfRange(wcsRow, wcsRow.length / 2,wcsRow.length-1 ); ints = Arrays.copyOfRange(wcsRow, (wcsRow.length+2-1) / 2,wcsRow.length-1 ); if (split[4].equals("01")){ ints = Arrays.copyOfRange(ints, 0, wcsRow.length / 2); @@ -284,7 +284,7 @@ // slaveProperties.setGroupCount(4); // Integer deepRow = getDeepRow(slaveProperties, 6); // System.out.println(deepRow); String wcsLocNo = getWcsLocNo("03-52-01-01-02"); String wcsLocNo = getWcsLocNo("06-52-01-01-01"); System.out.println(wcsLocNo); } } src/main/java/com/zy/core/ServerBootstrap.java
@@ -55,10 +55,10 @@ for (Slave devp : slaveProperties.getDevp()) { MessageQueue.init(SlaveType.Devp, devp); } // // 初始化条码扫描仪mq // for (Slave barcode : slaveProperties.getBarcode()) { // MessageQueue.init(SlaveType.Barcode, barcode); // } // 初始化条码扫描仪mq for (Slave barcode : slaveProperties.getBarcode()) { MessageQueue.init(SlaveType.Barcode, barcode); } // // 初始化Led灯mq // for (Slave led : slaveProperties.getLed()) { // MessageQueue.init(SlaveType.Led, led); @@ -88,13 +88,13 @@ new Thread((Runnable) devpThread).start(); SlaveConnection.put(SlaveType.Devp, devp.getId(), devpThread); } // // 初始化条码扫描仪线程 // log.info("初始化条码扫描仪线程..................................................."); // for (Slave barcode : slaveProperties.getBarcode()) { // BarcodeThread barcodeThread = new BarcodeThread(barcode); //// new Thread(barcodeThread).start(); // SlaveConnection.put(SlaveType.Barcode, barcode.getId(), barcodeThread); // } // 初始化条码扫描仪线程 log.info("初始化条码扫描仪线程..................................................."); for (Slave barcode : slaveProperties.getBarcode()) { BarcodeThread barcodeThread = new BarcodeThread(barcode); // new Thread(barcodeThread).start(); SlaveConnection.put(SlaveType.Barcode, barcode.getId(), barcodeThread); } // // 初始化LED线程 // log.info("初始化LED线程..................................................."); // for (LedSlave led : slaveProperties.getLed()) { src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -42,11 +42,14 @@ private boolean fullPlt; // 高 private boolean high; private boolean high = false; // 低 private boolean low; //agv private boolean car; // 锁定标记 private boolean pakMk = true; src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -223,7 +223,7 @@ staProtocol.setOutEnable(status[3]);// 可出 staProtocol.setEmptyMk(status[4]); // 空板信号 staProtocol.setFullPlt(status[5]); // 满托盘 staProtocol.setHigh(status[6]); // 高库位 staProtocol.setCar(status[6]); // 是否有车 staProtocol.setLow(status[7]); // 低库位 if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { @@ -239,7 +239,7 @@ OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.102",(short)60); if (result2.IsSuccess) { for (int i = 0; i < 6; i++) { String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8"); String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*10,8, "UTF-8"); BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1); if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { barcodeThread.setBarcode(barcode); src/main/resources/application-prod.yml
@@ -233,23 +233,23 @@ scale: ${wcs-slave.scale[0].id} staNo: 111 backSta: 110 barcode: ${wcs-slave.barcode[0].id} barcode: ${wcs-slave.barcode[2].id} inSta[3]: #入库口1 scale: ${wcs-slave.scale[0].id} staNo: 115 backSta: 114 barcode: ${wcs-slave.barcode[0].id} barcode: ${wcs-slave.barcode[3].id} inSta[4]: #入库口2 scale: ${wcs-slave.scale[1].id} staNo: 119 backSta: 118 barcode: ${wcs-slave.barcode[1].id} barcode: ${wcs-slave.barcode[4].id} #slot: 0 inSta[5]: #入库口1 scale: ${wcs-slave.scale[0].id} staNo: 123 backSta: 122 barcode: ${wcs-slave.barcode[0].id} barcode: ${wcs-slave.barcode[5].id} outSta[0]: #出库口1 staNo: 100 outSta[1]: #出库口2 @@ -284,21 +284,21 @@ #slot: 0 outSta[0]: #出库口1 staNo: 307 devp[3]: #输送线 id: 4 ip: 10.10.10.30 rack: 0 slot: 0 port: 102 emptyInSta[0]: #空板入库口1 staNo: 406 inSta[0]: #入库口1 scale: ${wcs-slave.scale[1].id} staNo: 406 barcode: ${wcs-slave.barcode[1].id} #slot: 0 outSta[0]: #出库口1 staNo: 407 # devp[3]: #输送线 # id: 4 # ip: 10.10.10.30 # rack: 0 # slot: 0 # port: 102 # emptyInSta[0]: #空板入库口1 # staNo: 406 # inSta[0]: #入库口1 # scale: ${wcs-slave.scale[1].id} # staNo: 406 # barcode: ${wcs-slave.barcode[1].id} # #slot: 0 # outSta[0]: #出库口1 # staNo: 407 scale[0]: #磅秤 port: 5005 ip: 10.10.10.201 @@ -309,9 +309,25 @@ id: 2 barcode[0]: #条码扫描仪 port: 51236 ip: 10.10.10.52 ip: 172.17.91.39 id: 1 barcode[1]: port: 51236 ip: 10.10.10.52 ip: 172.17.91.40 id: 2 barcode[2]: port: 51236 ip: 172.17.91.41 id: 3 barcode[3]: port: 51236 ip: 172.17.91.42 id: 4 barcode[4]: port: 51236 ip: 172.17.91.43 id: 5 barcode[5]: port: 51236 ip: 172.17.91.44 id: 6