From 770a7701c1473993c0e8148377c4f44dfec31e20 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期二, 28 十一月 2023 16:34:19 +0800 Subject: [PATCH] #接口+高度位变更为检测小车+扫码 --- src/main/java/com/zy/core/model/protocol/StaProtocol.java | 5 + src/main/java/com/zy/asrs/controller/SiteController.java | 1 src/main/java/com/zy/asrs/entity/param/TaskOverParam.java | 10 ++ src/main/java/com/zy/asrs/utils/Utils.java | 6 src/main/java/com/zy/asrs/controller/OpenController.java | 18 ++++ src/main/resources/application-prod.yml | 58 +++++++++----- src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java | 1 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 102 ++++++++++++++++++++++++ src/main/java/com/zy/asrs/service/OpenService.java | 3 src/main/java/com/zy/core/thread/SiemensDevpThread.java | 4 src/main/java/com/zy/core/ServerBootstrap.java | 22 ++-- 11 files changed, 189 insertions(+), 41 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java index ed3afdb..3451eaf 100644 --- a/src/main/java/com/zy/asrs/controller/OpenController.java +++ b/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") diff --git a/src/main/java/com/zy/asrs/controller/SiteController.java b/src/main/java/com/zy/asrs/controller/SiteController.java index 90caa8f..d3fd0ff 100644 --- a/src/main/java/com/zy/asrs/controller/SiteController.java +++ b/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); } } diff --git a/src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java b/src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java index 42b7bc9..6007fce 100644 --- a/src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java +++ b/src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java @@ -37,4 +37,5 @@ //楂樹綆搴撲綅 private String locType1 = "-"; + private String car = "-"; } diff --git a/src/main/java/com/zy/asrs/entity/param/TaskOverParam.java b/src/main/java/com/zy/asrs/entity/param/TaskOverParam.java new file mode 100644 index 0000000..17bb554 --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/param/TaskOverParam.java @@ -0,0 +1,10 @@ +package com.zy.asrs.entity.param; + +import lombok.Data; + +@Data +public class TaskOverParam { + private String wharfCode; + private Boolean status; + +} diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java index 345157b..0af74f2 100644 --- a/src/main/java/com/zy/asrs/service/OpenService.java +++ b/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); } diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java index 1819c4a..2741292 100644 --- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java +++ b/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; + } } diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java index 367f9ca..4342fb5 100644 --- a/src/main/java/com/zy/asrs/utils/Utils.java +++ b/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); } } diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java index 4876375..a97d9a0 100644 --- a/src/main/java/com/zy/core/ServerBootstrap.java +++ b/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); + } // // 鍒濆鍖朙ed鐏痬q // 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); + } // // 鍒濆鍖朙ED绾跨▼ // log.info("鍒濆鍖朙ED绾跨▼..................................................."); // for (LedSlave led : slaveProperties.getLed()) { 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 f6bde14..8dbd9ce 100644 --- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java +++ b/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; diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index 30e8f67..7b417cf 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/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); diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index c1953f2..7759046 100644 --- a/src/main/resources/application-prod.yml +++ b/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 -- Gitblit v1.9.1