2025-05-15 | Junjie | ![]() |
2025-05-15 | Junjie | ![]() |
2025-05-15 | Junjie | ![]() |
2025-05-15 | Junjie | ![]() |
2025-05-15 | Junjie | ![]() |
2025-05-15 | Junjie | ![]() |
2025-05-15 | Junjie | ![]() |
2025-05-15 | Junjie | ![]() |
2025-05-15 | Junjie | ![]() |
2025-05-15 | Junjie | ![]() |
2025-05-15 | Junjie | ![]() |
2025-05-15 | Junjie | ![]() |
2025-05-15 | Junjie | ![]() |
2025-05-15 | Junjie | ![]() |
2025-05-15 | Junjie | ![]() |
2025-05-15 | Junjie | ![]() |
src/main/java/com/zy/asrs/controller/SiteController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/domain/enums/RedisKeyType.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.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/SiteController.java
@@ -80,6 +80,7 @@ vo.setPakMk(staProtocol.isPakMk()?"Y":"N"); // 入库标记 vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N"); // 空板信号 vo.setStaNo(staProtocol.getStaNo()); // 目标站 vo.setWorkNo(staProtocol.getWorkNo().shortValue()); // 任务号 // vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() && staProtocol.isLow() ? "低" : "高"); //高低库位 vo.setLocType1(devp.getDevNo()==102 ? "高" : "低"); } @@ -112,6 +113,7 @@ vo.setPakMk(staProtocol.isPakMk()?"Y":"N"); // 入库标记 vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N"); // 空板信号 vo.setStaNo(staProtocol.getStaNo()); // 目标站 vo.setWorkNo(staProtocol.getWorkNo().shortValue()); // 任务号 // vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() && staProtocol.isLow() ? "低" : "高"); //高低库位 vo.setLocType1(devp.getDevNo()==102 ? "高" : "低"); } src/main/java/com/zy/asrs/domain/enums/RedisKeyType.java
@@ -3,6 +3,7 @@ public enum RedisKeyType { QUEUE_TASK("queue_task_"), IN_TASK_LOCK("in_task_lock"), ; public String key; src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -7,6 +7,7 @@ import com.core.exception.CoolException; import com.zy.asrs.domain.dto.NotifyCustomDataDto; import com.zy.asrs.domain.enums.NotifyMsgType; import com.zy.asrs.domain.enums.RedisKeyType; import com.zy.asrs.domain.enums.TaskStatusType; import com.zy.asrs.domain.enums.WorkNoType; import com.zy.asrs.entity.*; @@ -18,15 +19,12 @@ import com.zy.asrs.utils.Utils; import com.zy.common.service.CommonService; import com.zy.common.utils.HttpHandler; import com.zy.common.utils.RedisUtil; import com.zy.core.CrnThread; import com.zy.core.DevpThread; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.*; import com.zy.core.enums.DevpType.DevpRequestType; import com.zy.core.enums.DevpType.DevpStateType; import com.zy.core.enums.DevpType.DevpTrayType; import com.zy.core.enums.DevpType.DevpWorkType; import com.zy.core.model.CrnSlave; import com.zy.core.model.DevpSlave; import com.zy.core.model.Task; @@ -76,13 +74,9 @@ @Autowired private TaskWrkService taskWrkService; @Autowired private ConfigService configService; @Autowired private StaDescMapper staDescMapper; @Autowired private CommandInfoService commandInfoService; @Autowired private OpenServiceImpl openServiceImpl; @Autowired private StaDescService staDescService; @Autowired @@ -93,6 +87,8 @@ private CrnOperaUtils crnOperaUtils; @Autowired private NotifyUtils notifyUtils; @Autowired private RedisUtil redisUtil; @Value("${wms.count}") private Integer maxCount; @Value("${wms.url}") @@ -116,8 +112,6 @@ } else { staProtocol = staProtocol.clone(); } Short workNo = staProtocol.getWorkNo().shortValue(); Short stano = staProtocol.getStaNo(); // 尺寸检测异常 boolean back = false; @@ -156,7 +150,9 @@ && staProtocol.isLoading() && staProtocol.isInEnable() && !staProtocol.isEmptyMk() && staProtocol.isPakMk()) { && staProtocol.isPakMk() && staProtocol.getWorkNo() == 9999 ) { // 获取条码扫描仪信息 BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); if (barcodeThread == null) { @@ -183,6 +179,11 @@ String response = ""; Boolean success = false; try { Object object = redisUtil.get(RedisKeyType.IN_TASK_LOCK.key); if(object != null) { continue; } response = new HttpHandler.Builder() .setUri(wmsUrl) .setPath(inboundTaskApplyPath) @@ -190,14 +191,9 @@ .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); redisUtil.set(RedisKeyType.IN_TASK_LOCK.key, "lock", 5); if (jsonObject.getInteger("code") != 200) { log.info("条码:" + barcode + "申请WMS失败,response=" + JSON.toJSONString(jsonObject)); continue; } if (back) { devpThread.setPakMk(staProtocol.getSiteId(), false); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); continue; } @@ -523,28 +519,6 @@ continue; } LocMast locMast=locMastService.selectByLocNo(taskWrk.getStartPoint()); //判断其库位是否为深库位,如果为深库位找其浅库位是都有货 if(locMast.getRow1()==1||locMast.getRow1()==5){ LocMast locMast1=locMastService.selectOne(new EntityWrapper<LocMast>() .eq("row1", (locMast.getRow1()+1)) .eq("bay1",locMast.getBay1()) .eq("lev1",locMast.getLev1()).eq("loc_sts","F")); if (!Cools.isEmpty(locMast1)){ log.info(locMast.getLocNo()+"出深库位,浅库位有货"); continue; } }else if(locMast.getRow1()==4||locMast.getRow1()==8){ LocMast locMast1=locMastService.selectOne(new EntityWrapper<LocMast>() .eq("row1", (locMast.getRow1()-1)) .eq("bay1",locMast.getBay1()) .eq("lev1",locMast.getLev1()).eq("loc_sts","F")); if (!Cools.isEmpty(locMast1)){ log.info(locMast.getLocNo()+"出深库位,浅库位有货"); continue; } } // 获取堆垛机出库站信息 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); @@ -820,42 +794,13 @@ if (taskWrk.getIoType() == 1 && taskWrk.getWrkSts() == 3) { taskWrk.setWrkSts(4);//入库完成 taskWrk.setStatus(5);//完结 //更新库位状态 LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint()); locMast.setLocSts("F");//F.在库 locMast.setBarcode(taskWrk.getBarcode());//托盘码 locMast.setModiTime(new Date()); locMast.setModiUser(9999L); locMastService.updateById(locMast); } else if (taskWrk.getIoType() == 2 && taskWrk.getWrkSts() == 12) { taskWrk.setWrkSts(13);//出库完成 taskWrk.setStatus(5);//完结 //更新库位状态 LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint()); locMast.setLocSts("O");//O.空库位 locMast.setBarcode("");//托盘码 locMast.setModiTime(new Date()); locMast.setModiUser(9999L); locMastService.updateById(locMast); } else if (taskWrk.getIoType() == 3 && taskWrk.getWrkSts() == 12) { taskWrk.setWrkSts(4);//入库完成 taskWrk.setStatus(5);//完结 //更新库位状态 LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint()); locMast.setLocSts("F");//F.在库 locMast.setBarcode(taskWrk.getBarcode());//托盘码 locMast.setModiTime(new Date()); locMast.setModiUser(9999L); locMastService.updateById(locMast); LocMast locMast1 = locMastService.selectByLocNo(taskWrk.getStartPoint()); locMast1.setLocSts("O");//O.空库位 locMast1.setBarcode("");//托盘码 locMast1.setModiTime(new Date()); locMast1.setModiUser(9999L); locMastService.updateById(locMast1); } taskWrkService.updateById(taskWrk); } src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -55,8 +55,8 @@ }}; public static final ArrayList<Integer> BarcodeList = new ArrayList<Integer>() {{ add(1);add(2);add(3);add(4); add(5);add(6);add(7);add(8); add(0);add(1);add(2);add(3); add(4);add(5);add(6);add(7); }}; public static final ArrayList<Integer> staNosErrList = new ArrayList<Integer>() {{ @@ -183,7 +183,7 @@ // updateIoMode(); ArrayList<Integer> staNos = getStaNo(); int staNoSize = staNos.size(); OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*8)); OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*2)); if (result.IsSuccess) { for (int i = 0; i < staNoSize; i++) { Integer siteId = staNos.get(i); // 站点编号 @@ -193,11 +193,7 @@ staProtocol.setSiteId(siteId); station.put(siteId, staProtocol); } staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, i*8)); // 工作号 staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*8 + 4)); // 目标站 boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*8 + 6, 2); boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*2, 2); staProtocol.setAutoing(status[0]); // 自动 staProtocol.setLoading(status[1]); // 有物 staProtocol.setInEnable(status[2]); // 可入 @@ -213,13 +209,29 @@ } } OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.0", (short) (staNoSize*4)); if (result1.IsSuccess) { for (int i = 0; i < staNoSize; i++) { Integer siteId = staNos.get(i); // 站点编号 StaProtocol staProtocol = station.get(siteId); if (null == staProtocol) { staProtocol = new StaProtocol(); staProtocol.setSiteId(siteId); station.put(siteId, staProtocol); } staProtocol.setWorkNo((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, i*4)); // 工作号 staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, i*4 + 2)); // 目标站 } } //条码扫描器 ArrayList<Integer> barcodeList = BarcodeList; OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.100", (short) (barcodeList.size() * 8)); OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.100", (short) (barcodeList.size() * 10)); if (result2.IsSuccess) { for (int i = 0; i < barcodeList.size(); i++) { Integer barcodeId = barcodeList.get(i); String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8"); String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*10+2,8, "UTF-8"); barcode = barcode.trim(); BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId + 1); if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { barcodeThread.setBarcode(barcode); @@ -303,14 +315,15 @@ ArrayList<Integer> staNos = getStaNo(); int index = staNos.indexOf(staProtocol.getSiteId()); OperateResult write = null; OperateResult write1 = null; //任务下发次数 int writeCount = 0; do { write = siemensS7Net.Write("DB100." + index*6, staProtocol.getWorkNo()); // 工作号 Thread.sleep(200); write1 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo().shortValue()); // 目标站 if(write.IsSuccess && write1.IsSuccess){ short[] data = new short[2]; data[0] = staProtocol.getWorkNo().shortValue(); data[1] = staProtocol.getStaNo(); write = siemensS7Net.Write("DB100." + index*4, data); if(write.IsSuccess){ log.error("写入输送线命令成功。输送线plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); break; } src/main/resources/application-prod.yml
@@ -120,7 +120,7 @@ devpPlcId: ${wcs-slave.devp[0].id} ip: 192.168.10.90 crnInStn[0]: #堆垛机入库站点1 staNo: 106 staNo: 107 row: 7 bay: 1 lev: 1 @@ -170,17 +170,17 @@ emptyInSta[4]: #空板入库口5 staNo: 203 inSta[2]: staNo: 106 staNo: 105 barcode: ${wcs-slave.barcode[2].id} inSta[4]: staNo: 203 staNo: 202 barcode: ${wcs-slave.barcode[4].id} inSta[0]: #入库口1 staNo: 102 staNo: 101 barcode: ${wcs-slave.barcode[0].id} id: 1 inSta[6]: staNo: 209 staNo: 208 barcode: ${wcs-slave.barcode[6].id} emptyInSta[1]: #空板入库口2 staNo: 104 @@ -197,17 +197,17 @@ outSta[1]: #出库口2 staNo: 101 inSta[3]: staNo: 108 staNo: 107 barcode: ${wcs-slave.barcode[3].id} inSta[5]: staNo: 206 staNo: 205 barcode: ${wcs-slave.barcode[5].id} port: 102 inSta[1]: #入库口2 staNo: 104 staNo: 103 barcode: ${wcs-slave.barcode[1].id} inSta[7]: staNo: 212 staNo: 211 barcode: ${wcs-slave.barcode[7].id} barcode[5]: #条码扫描仪6 port: 51236