From cb2d5d9ac39efdb38d8a301f7396ac1ab171efc1 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期四, 09 五月 2024 21:49:11 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 306 ++++++++++++++++++++++++++++++++++---------------- 1 files changed, 208 insertions(+), 98 deletions(-) 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 8263c0a..d2181a2 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -90,6 +90,8 @@ private BasCrnErrorMapper basCrnErrorMapper; @Autowired private EmptyBarrelInService emptyBarrelInService; + @Autowired + private WrkMastStaService wrkMastStaService; @Value("${wms.url}") private String wmsUrl; @@ -2299,7 +2301,7 @@ } else { staProtocol = staProtocol.clone(); } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) { +// if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) { // 鏌ヨ宸ヤ綔妗� WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(crnStn.getStaNo()); if (wrkMast == null) { @@ -2334,7 +2336,7 @@ } - } +// } } } } @@ -2491,111 +2493,219 @@ for (RgvSlave rgvSlave:slaveProperties.getRgv()){ ZyRgvThread rgvThread = (ZyRgvThread)SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); - if (rgvProtocol.getModeType() != RgvModeType.AUTO){ + if (Cools.isEmpty(rgvProtocol)){ 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); // 浠诲姟妯″紡: 鍙栨斁璐� + rgvProtocol = rgvProtocol.clone(); } - command.setCommand(false); - MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(2, command)); - log.info("rgv浠诲姟涓嬪彂锛�"+JSON.toJSONString(command)); + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getLoaded1() == 0){ + boolean work1 = false; + boolean work2 = false; + 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.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){ + if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){ + WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo()); + if (Cools.isEmpty(wrkMast)){ + log.error("鏈壘鍒板伐浣滄。"); + continue; + } + workNo1 = wrkMast.getWrkNo(); + souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),wrkMast.getSourceStaNo()); + sta1 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo()); + work1 = true; + devpThread.setPakMk(inStn.getSourceStaNo(),false); + break; + } + workNo1 = workNo++; + souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getSourceStaNo()); + sta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo()); + work1 = true; + devpThread.setPakMk(inStn.getSourceStaNo(),false); + 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.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()&& staProtocol.isPakMk()){ + 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()); + work2 = true; + devpThread.setPakMk(inStn.getSourceStaNo(),false); + break; + } + workNo2 = workNo++; + souSta2 = inStn.getSourceStaNo().shortValue(); + sta2 = inStn.getStaNo().shortValue(); + work2 = true; + devpThread.setPakMk(inStn.getSourceStaNo(),false); + break; + } + } + + if (work1 || work2){ + //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); + rgvTaskSave(command); + MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(2, command)); + log.info("rgv浠诲姟涓嬪彂锛�"+JSON.toJSONString(command)); + } + } + + + + } } public synchronized void RGVTaskOver() { + for (RgvSlave rgvSlave:slaveProperties.getRgv()) { + ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (Cools.isEmpty(rgvProtocol)){ + continue; + }else { + rgvProtocol = rgvProtocol.clone(); + } + //宸ヤ綅涓�浠诲姟瀹屾垚 + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 1) { + WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1()); + if (Cools.isEmpty(wrkMastSta)){ + log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); + continue; + } + for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getSourcePlcId()); + StaProtocol staProtocol = devpThread.getStation().get(outStn.getSourceStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isPakMk()){ +// staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); +// staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); + if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) { + continue; + } + } + + } + + MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(3,new RgvCommand())); + log.info("{}鍙穜gv宸ヤ綅涓�宸ヤ綔瀹屾垚澶嶄綅,宸ヤ綔鍙�:{}",rgvSlave.getId(),wrkMastSta.getWrkNo()); + } + + //宸ヤ綅浜屼换鍔″畬鎴� + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded1() == 1) { + WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2()); + if (Cools.isEmpty(wrkMastSta)){ + log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2()); + continue; + } + for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getSourcePlcId()); + StaProtocol staProtocol = devpThread.getStation().get(outStn.getSourceStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isPakMk()){ +// staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); +// staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); + if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) { + continue; + } + } + + } + + MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4,new RgvCommand())); + log.info("{}鍙穜gv宸ヤ綅浜屽伐浣滃畬鎴愬浣�,宸ヤ綔鍙�:{}",rgvSlave.getId(),wrkMastSta.getWrkNo2()); + } + } } + + public boolean rgvTaskSave(RgvCommand command){ + Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", command.getRgvNo()).eq("wrk_no", command.getTaskNo1()); + WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper); + if (!Cools.isEmpty(wrkMastSta1)){ + wrkMastStaService.delete(wrkMastStaWrapper); + } + WrkMastSta wrkMastSta = new WrkMastSta(); + wrkMastSta.setWrkNo(Long.valueOf(command.getTaskNo1())); + wrkMastSta.setWrkNo2(Long.valueOf(command.getTaskNo2())); + wrkMastSta.setWrkStart(command.getSourceStaNo1().intValue()); + wrkMastSta.setWrkEnd(command.getDestinationStaNo1().intValue()); + wrkMastSta.setStaStart(command.getSourceStaNo2().intValue()); + wrkMastSta.setStaEnd(command.getDestinationStaNo2().intValue()); + wrkMastSta.setWrkSts(1); + Date now = new Date(); + wrkMastSta.setCreateTime(now); + wrkMastSta.setUpdateTime(now); + wrkMastSta.setWrkCrn(command.getRgvNo()); + wrkMastSta.setWrkType(command.getTaskMode().intValue()); + return wrkMastStaService.insert(wrkMastSta); + } + } -- Gitblit v1.9.1