From d8cef0a05401284e18fefcfcf51ebc1b0f6da702 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期一, 27 十一月 2023 13:50:36 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 573 +++++++++++++++++++++++++++++--------------------------- 1 files changed, 296 insertions(+), 277 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 562186e..511ccb0 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -2,14 +2,12 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam; -import com.zy.asrs.mapper.BasCrnErrorMapper; -import com.zy.asrs.mapper.TaskWrkMapper; -import com.zy.asrs.mapper.WaitPakinMapper; -import com.zy.asrs.mapper.WrkMastMapper; +import com.zy.asrs.mapper.*; import com.zy.asrs.service.*; import com.zy.asrs.utils.CommandUtils; import com.zy.asrs.utils.PostMesDataUtils; @@ -18,14 +16,18 @@ import com.zy.common.utils.HttpHandler; 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.model.CrnSlave; +import com.zy.core.model.DevpSlave; import com.zy.core.model.Task; import com.zy.core.model.command.CrnCommand; import com.zy.core.model.protocol.CrnProtocol; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.properties.SlaveProperties; +import com.zy.core.thread.BarcodeThread; +import com.zy.core.thread.LedThread; import com.zy.core.thread.SiemensDevpThread; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; @@ -70,11 +72,93 @@ private TaskWrkService taskWrkService; @Autowired private ConfigService configService; + @Autowired + private StaDescMapper staDescMapper; @Value("${wms.url}") private String wmsUrl; @Value("${wms.movePath}") private String movePath; + + + public void generateStoreWrkFile() { + // 鏍规嵁杈撻�佺嚎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.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + Short workNo = staProtocol.getWorkNo(); + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 + if (staProtocol.isAutoing() && staProtocol.isLoading() + && !staProtocol.isInEnable() + && !staProtocol.isEmptyMk() && (workNo >= 0) + && staProtocol.isPakMk()) { + + // 灏哄妫�娴嬪紓甯� + boolean back = false; + String errMsg = ""; + if (staProtocol.isFrontErr()) { + errMsg = "鍓嶈秴闄�"; + back = true; + } + if (!back && staProtocol.isBackErr()) { + errMsg = "鍚庤秴闄�"; + back = true; + } + if (!back && staProtocol.isHighErr()) { + errMsg = "楂樿秴闄�"; + back = true; + } + if (!back && staProtocol.isLeftErr()) { + errMsg = "宸﹁秴闄�"; + back = true; + } + if (!back && staProtocol.isRightErr()) { + errMsg = "鍙宠秴闄�"; + back = true; + } + if (!back && staProtocol.isWeightErr()) { + errMsg = "瓒呴噸"; + back = true; + } + if (!back && staProtocol.isBarcodeErr()) { + errMsg = "鎵爜澶辫触"; + back = true; + } + // 閫�鍥� + if (back) { +// News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg); + staProtocol.setWorkNo(workNo); + staProtocol.setStaNo(inSta.getBackSta().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + + + continue; + } + // 鑾峰彇鏉$爜鎵弿浠俊鎭� + BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); + if (barcodeThread == null) { + continue; + } + String barcode = barcodeThread.getBarcode(); + if(!Cools.isEmpty(barcode)) { + + } + } + + + } + } + } + /** * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯 @@ -84,56 +168,60 @@ for (CrnSlave crnSlave : slaveProperties.getCrn()) { // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯 for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) { - // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); - StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); - if (staProtocol == null) { - continue; - } else { - staProtocol = staProtocol.clone(); - } - if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) { - // 鏌ヨ宸ヤ綔妗� - TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), staProtocol.getSiteId().toString()); - if (taskWrk == null) { + List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", crnSlave.getId()).eq("crn_stn", crnStn.getStaNo())); + for (StaDesc staDesc : staDescs){ + // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { continue; + } else { + staProtocol = staProtocol.clone(); } - // 鍒ゆ柇宸ヤ綔妗f潯浠� - if (taskWrk.getWrkSts() == 12 && taskWrk.getIoType() == 2) { - // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗� - CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, taskWrk.getCrnNo()); - CrnProtocol crnProtocol = crnThread.getCrnProtocol(); - if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) { - // 绉诲姩涓� + if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) { + // 鏌ヨ宸ヤ綔妗� + TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), staDesc.getStnNo().toString()); + if (taskWrk == null) { continue; } - // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁� - if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(taskWrk.getWrkNo().shortValue()) - && crnProtocol.getTaskFinish() == 1 - && crnProtocol.forkPosType == CrnForkPosType.HOME) { - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - - // 涓嬪彂绔欑偣淇℃伅 - staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue()); - String targetPoint = taskWrk.getTargetPoint(); - int i = Integer.parseInt(targetPoint); - staProtocol.setStaNo((short)i); - if (!CommandUtils.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) { + // 鍒ゆ柇宸ヤ綔妗f潯浠� + if (taskWrk.getWrkSts() == 12 && taskWrk.getIoType() == 2) { + // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗� + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, taskWrk.getCrnNo()); + CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) { + // 绉诲姩涓� continue; } + // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁� + if (crnProtocol.statusType == CrnStatusType.HANDLING_COMPLETED && crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(taskWrk.getWrkNo().shortValue()) + && crnProtocol.getTaskFinish() == 0 + && crnProtocol.forkPosType == CrnForkPosType.HOME) { + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触 - taskWrk.setWrkSts(14); - if (taskWrkMapper.updateById(taskWrk) != 0) { - // 澶嶄綅鍫嗗灈鏈� - crnThread.setResetFlag(true); - } else { - log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", taskWrk.getWrkNo()); + // 涓嬪彂绔欑偣淇℃伅 + staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue()); + String targetPoint = taskWrk.getTargetPoint(); + int i = Integer.parseInt(targetPoint); + staProtocol.setStaNo((short)i); + if (!CommandUtils.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) { + continue; + } + + // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触 + taskWrk.setWrkSts(14); + if (taskWrkMapper.updateById(taskWrk) != 0) { + // 澶嶄綅鍫嗗灈鏈� + crnThread.setResetFlag(true); + } else { + log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", taskWrk.getWrkNo()); + } + } - } } } + } } } @@ -188,78 +276,72 @@ */ public void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol){ for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) { - boolean flag = false; - // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅 - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); - StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); - if (staProtocol == null) { - continue; - } else { - staProtocol = staProtocol.clone(); - } - // 鏌ヨ绔欑偣璇︾粏淇℃伅 - BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); - if (staDetl == null) { - log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); - continue; - } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() - && staDetl.getCanining()!=null && staDetl.getCanining().equals("Y")) { - flag = true; - } - if (!flag) { - continue; - } - // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。 - TaskWrk taskWrk = taskWrkMapper.selectPakIn(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo().toString()); - if(null == taskWrk) { - continue; - } - // 鑾峰彇搴撲綅淇℃伅 - String locNo = taskWrk.getTargetPoint(); - LocMast locMast = locMastService.selectById(locNo); - if (locMast == null) { - log.error("鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", locNo); - continue; - } - if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) { - log.error("鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, locMast.getLocSts()); - continue; - } + List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", slave.getId()).eq("crn_stn", crnStn.getStaNo())); + for (StaDesc staDesc : staDescs) { + boolean flag = false; + // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅 + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + // 鏌ヨ绔欑偣璇︾粏淇℃伅 + BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); + if (staDetl == null) { + log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); + continue; + } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() + && staDetl.getCanining()!=null && staDetl.getCanining().equals("Y")) { + flag = true; + } + if (!flag) { + continue; + } + // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。 + TaskWrk taskWrk = taskWrkMapper.selectPakIn(slave.getId(), staProtocol.getWorkNo().intValue(), staDesc.getStnNo().toString()); + if(null == taskWrk) { + continue; + } - // 鍫嗗灈鏈烘帶鍒惰繃婊� - if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { - continue; - } + // 鍫嗗灈鏈烘帶鍒惰繃婊� + if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { + continue; + } - // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� - if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) { - continue; - } + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� + if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) { + continue; + } - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� - crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙� - crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓 - crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪 - crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(locMast.getRow1().shortValue()); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞� - if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) { - log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); - } else { - // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� - Date now = new Date(); - taskWrk.setWrkSts(3); - taskWrk.setModiTime(now); - if (taskWrkMapper.updateById(taskWrk) == 0) { - log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosY(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setSourcePosZ(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setDestinationPosX(Utils.getBayShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosY(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅灞� + crnCommand.setDestinationPosZ(Utils.getRowShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鎺� + crnCommand.setCommand((short)1); + if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� + Date now = new Date(); + taskWrk.setWrkSts(3); + taskWrk.setModiTime(now); + if (taskWrkMapper.updateById(taskWrk) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); + } } } + return; } } @@ -269,116 +351,116 @@ * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴� */ public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){ + List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOut(slave.getId(), null); + if (taskWrksInitial.size()==0){ + return; + } for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { - // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗� - List<TaskWrk> taskWrks = taskWrkMapper.selectPakOut(slave.getId(), crnStn.getStaNo().toString()); - for (TaskWrk taskWrk : taskWrks){ - if (taskWrk == null) { - continue; - } - // 宸ヤ綔妗g姸鎬佸垽鏂� - if (taskWrk.getIoType() != 2 || taskWrk.getTargetPoint() == null) { - log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", taskWrk.getWrkNo(), taskWrk.getTargetPoint(), taskWrk.getIoType()); - continue; - } - // 鑾峰彇婧愬簱浣嶄俊鎭� - String locNo = taskWrk.getStartPoint(); - LocMast sourceSta = locMastService.selectById(locNo); - if (!sourceSta.getLocSts().equals("R") &&!sourceSta.getLocSts().equals("P")) { - log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, sourceSta.getLocSts()); - continue; - } - // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); - StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); - if (staProtocol == null) { - break; - } else { - staProtocol = staProtocol.clone(); - } + List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", slave.getId()).eq("crn_stn", crnStn.getStaNo())); + for (StaDesc staDesc : staDescs){ + // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗� + List<TaskWrk> taskWrks = taskWrkMapper.selectPakOut(slave.getId(),staDesc.getStnNo().toString()); + for (TaskWrk taskWrk : taskWrks){ + if (taskWrk == null) { + continue; + } + // 宸ヤ綔妗g姸鎬佸垽鏂� + if (taskWrk.getIoType() != 2 || taskWrk.getTargetPoint() == null || taskWrk.getStartPoint() == null) { + log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", taskWrk.getWrkNo(), taskWrk.getStartPoint(), taskWrk.getIoType()); + continue; + } + // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { + break; + } else { + staProtocol = staProtocol.clone(); + } - // 鏌ヨ绔欑偣璇︾粏淇℃伅 - BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); - if (staDetl == null) { - log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); - break; - } - - // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵�� - if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() !=null && staDetl.getCanouting().equals("Y") - && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) { - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - - // 鍫嗗灈鏈烘帶鍒惰繃婊� - if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { + // 鏌ヨ绔欑偣璇︾粏淇℃伅 + BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); + if (staDetl == null) { + log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); break; } - // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� - if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) { - break; - } + // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵�� + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() !=null && staDetl.getCanouting().equals("Y") + && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) { + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� - if (Utils.isDeepLoc(slaveProperties, taskWrk.getStartPoint())) { - - taskWrkMapper.selectPakOutIoType(taskWrk.getCrnNo()); - - List<TaskWrk> taskWrks1 = taskWrkMapper.selectPakOutIoType(taskWrk.getCrnNo()); - if (Cools.isEmpty(taskWrks1) && taskWrks1.size()!=0){ - continue; + // 鍫嗗灈鏈烘帶鍒惰繃婊� + if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { + break; } - String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getStartPoint()); - TaskWrk hallowLocNoTask = taskWrkMapper.selectByStartPoint(shallowLocNo); - if (!Cools.isEmpty(hallowLocNoTask)){ - if (!Cools.isEmpty(hallowLocNoTask.getTargetPoint())){ + + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� + if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) { + break; + } + + // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� + if (Utils.isDeepLoc(slaveProperties, taskWrk.getStartPoint())) { + + taskWrkMapper.selectPakOutIoType(taskWrk.getCrnNo()); + + List<TaskWrk> taskWrks1 = taskWrkMapper.selectPakOutIoType(taskWrk.getCrnNo()); + if (Cools.isEmpty(taskWrks1) && taskWrks1.size()!=0){ continue; } -// new PostMesDataUtils().postMesData("绉诲簱浠诲姟鍒嗛厤搴撲綅",wmsUrl,movePath,hallowLocNoTask); - try { - String response = new HttpHandler.Builder() - .setUri(wmsUrl) - .setPath(movePath) - .setJson(JSON.toJSONString(hallowLocNoTask)) - .build() - .doPost(); - System.out.println("response:"+response); - JSONObject jsonObject = JSON.parseObject(response); - if (jsonObject.getInteger("code").equals(200)) { - //瑙f瀽 + String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getStartPoint()); + TaskWrk hallowLocNoTask = taskWrkMapper.selectByStartPoint(shallowLocNo); + if (!Cools.isEmpty(hallowLocNoTask)){ + if (!Cools.isEmpty(hallowLocNoTask.getTargetPoint())){ + continue; } - }catch (Exception e){ - log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl+"/"+movePath, JSON.toJSONString(hallowLocNoTask), "璇锋眰绉诲簱浠诲姟鍒嗛厤搴撲綅"); +// new PostMesDataUtils().postMesData("绉诲簱浠诲姟鍒嗛厤搴撲綅",wmsUrl,movePath,hallowLocNoTask); + try { + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath(movePath) + .setJson(JSON.toJSONString(hallowLocNoTask)) + .build() + .doPost(); + System.out.println("response:"+response); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + //瑙f瀽 + } + }catch (Exception e){ + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl+"/"+movePath, JSON.toJSONString(hallowLocNoTask), "璇锋眰绉诲簱浠诲姟鍒嗛厤搴撲綅"); + } + continue; } - continue; } - } - // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔� - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� - crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙� - crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(sourceSta.getRow1().shortValue()); // 婧愬簱浣嶆帓 - crnCommand.setSourcePosY(sourceSta.getBay1().shortValue()); // 婧愬簱浣嶅垪 - crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞� - if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) { - log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); - } else { - // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� - Date now = new Date(); - taskWrk.setWrkSts(12); - taskWrk.setModiTime(now); - if (taskWrkMapper.updateById(taskWrk) == 0) { - log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); + // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔� + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(Utils.getBayShort(taskWrk.getStartPoint())); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(Utils.getLevShort(taskWrk.getStartPoint())); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(Utils.getRowShort(taskWrk.getStartPoint())); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(crnStn.getLev().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(crnStn.getRow().shortValue()); // 鐩爣搴撲綅灞� + crnCommand.setCommand((short)1); + if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� + Date now = new Date(); + taskWrk.setWrkSts(12); + taskWrk.setModiTime(now); + if (taskWrkMapper.updateById(taskWrk) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); + } } - break; + return; } - return; } } } @@ -400,38 +482,7 @@ log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/鐩爣搴撲綅鍙�, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", taskWrk.getWrkNo(), taskWrk.getTargetPoint(), taskWrk.getIoType()); continue; } - // 鑾峰彇婧愬簱浣嶄俊鎭� - String locNo = taskWrk.getStartPoint(); - LocMast sourceSta = locMastService.selectById(locNo); - if (!sourceSta.getLocSts().equals("R") &&!sourceSta.getLocSts().equals("P")) { - log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, sourceSta.getLocSts()); - continue; - } - // 鑾峰彇鐩爣搴撲綅淇℃伅 - String locNoEnd = taskWrk.getTargetPoint(); - LocMast sourceEnd = locMastService.selectById(locNoEnd); - if (!sourceEnd.getLocSts().equals("S") && !sourceEnd.getLocSts().equals("Q")) { - log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, sourceSta.getLocSts()); - continue; - } - - -// // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 -// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); -// StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); -// if (staProtocol == null) { -// break; -// } else { -// staProtocol = staProtocol.clone(); -// } - - // 鏌ヨ绔欑偣璇︾粏淇℃伅 - BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); - if (staDetl == null) { - log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); - continue; - } // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- // 鍫嗗灈鏈烘帶鍒惰繃婊� @@ -444,38 +495,6 @@ continue; } - // 璧峰娣卞簱浣嶆祬搴撲綅涓嶄负绌� - if (Utils.isDeepLoc(slaveProperties, taskWrk.getStartPoint())) { - // 鑾峰彇娴呭簱浣嶄俊鎭� - String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getStartPoint()); - LocMast shallowLocMast = locMastService.selectById(shallowLocNo); - if (!shallowLocMast.getLocSts().equals("O")) { - log.error("绉诲簱鎿嶄綔璧峰搴撲綅娴呭簱浣嶇姸鎬佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, shallowLocMast.getLocSts()); - continue; - } - } - - // 鐩爣搴撲綅涓烘繁搴撲綅涓旀祬搴撲綅涓嶄负绌� - if (Utils.isDeepLoc(slaveProperties, taskWrk.getTargetPoint())) { - // 鑾峰彇娴呭簱浣嶄俊鎭� - String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getTargetPoint()); - LocMast shallowLocMast = locMastService.selectById(shallowLocNo); - if (!shallowLocMast.getLocSts().equals("O")) { - log.error("绉诲簱鎿嶄綔鐩爣搴撲綅娴呭簱浣嶇姸鎬佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, shallowLocMast.getLocSts()); - continue; - } - } - - // 鐩爣搴撲綅涓烘祬搴撲綅涓旀繁搴撲綅鏃犺揣 - if (Utils.isShallowLoc(slaveProperties, taskWrk.getTargetPoint())) { - // 鑾峰彇娣卞簱浣嶄俊鎭� - String deepLocNo = Utils.getDeepLoc(slaveProperties, taskWrk.getTargetPoint()); - LocMast deepLocMast = locMastService.selectById(deepLocNo); - if (!deepLocMast.getLocSts().equals("F") && !deepLocMast.getLocSts().equals("D") ) { - log.error("绉诲簱鎿嶄綔鐩爣搴撲綅娣卞簱浣嶇姸鎬佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, deepLocMast.getLocSts()); - continue; - } - } // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔� CrnCommand crnCommand = new CrnCommand(); @@ -483,12 +502,12 @@ crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙� crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(sourceSta.getRow1().shortValue()); // 婧愬簱浣嶆帓 - crnCommand.setSourcePosY(sourceSta.getBay1().shortValue()); // 婧愬簱浣嶅垪 - crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(sourceEnd.getRow1().shortValue()); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY(sourceEnd.getBay1().shortValue()); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(sourceEnd.getLev1().shortValue()); // 鐩爣搴撲綅灞� + crnCommand.setSourcePosX(Utils.getRowShort(taskWrk.getStartPoint())); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(Utils.getBayShort(taskWrk.getStartPoint())); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(Utils.getLevShort(taskWrk.getStartPoint())); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(Utils.getRowShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅灞� if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) { log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); } else { @@ -518,15 +537,15 @@ CrnProtocol crnProtocol = crnThread.getCrnProtocol(); if (crnProtocol == null) { continue; } // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1 - if (crnProtocol.getTaskFinish() == 1 && crnProtocol.getTaskNo() != 0) { + if (crnProtocol.getTaskFinish() == 0 && crnProtocol.statusType == CrnStatusType.HANDLING_COMPLETED && crnProtocol.getTaskNo() != 0) { // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。 TaskWrk taskWrk = taskWrkMapper.selectCrnNoWorking(crn.getId(),crnProtocol.getTaskNo().intValue()); - if (taskWrk == null) { + if (Cools.isEmpty(taskWrk)) { log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo()); continue; } // 鍏ュ簱 + 搴撲綅杞Щ ==> 4.鍏ュ簱瀹屾垚 - if (taskWrk.getWrkSts() == 3 || (taskWrk.getWrkSts() == 12 && taskWrk.getIoType() == 3)) { + if ((taskWrk.getWrkSts() == 3 && taskWrk.getIoType() == 1) || (taskWrk.getWrkSts() == 12 && taskWrk.getIoType() == 3)) { taskWrk.setWrkSts(4); } else { continue; -- Gitblit v1.9.1