From 72c06d5800d3a99dbd7002a6946be749d9264b15 Mon Sep 17 00:00:00 2001 From: zhang <zc857179121@qq.com> Date: 星期四, 26 六月 2025 10:44:26 +0800 Subject: [PATCH] 1 --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 364 +++++++++++++++++++++++++++++++++++---------------- 1 files changed, 247 insertions(+), 117 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 aa40e13..4c9d443 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -7,12 +7,17 @@ import com.core.exception.CoolException; import com.zy.asrs.controller.CrnController; import com.zy.asrs.domain.enums.TaskStatusType; +import com.zy.asrs.domain.enums.WorkNoType; import com.zy.asrs.domain.param.CrnOperatorParam; import com.zy.asrs.entity.*; import com.zy.asrs.entity.wms.StorageEscalationParam; -import com.zy.asrs.mapper.*; +import com.zy.asrs.mapper.BasCrnErrorMapper; +import com.zy.asrs.mapper.StaDescMapper; +import com.zy.asrs.mapper.TaskWrkMapper; +import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.*; import com.zy.asrs.utils.Utils; +import com.zy.common.service.CommonService; import com.zy.core.CrnThread; import com.zy.core.DevpThread; import com.zy.core.cache.MessageQueue; @@ -29,6 +34,7 @@ import com.zy.core.thread.SiemensDevpThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; @@ -36,6 +42,7 @@ import java.io.IOException; import java.util.Date; import java.util.List; +import java.util.Random; /** * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔� @@ -55,6 +62,8 @@ @Autowired private LocMastService locMastService; @Autowired + private LocDetlService locDetlService; + @Autowired private BasCrnpService basCrnpService; @Autowired private BasDevpService basDevpService; @@ -66,10 +75,9 @@ private TaskWrkMapper taskWrkMapper; @Autowired - private DevpTaskMapper devpTaskMapper; - @Autowired private TaskWrkService taskWrkService; - + @Autowired + private CommonService commonService; @Autowired private StaDescMapper staDescMapper; @@ -88,7 +96,20 @@ @Autowired private TransferTaskService transferTaskService; - public void generateStoreWrkFile() throws IOException, InterruptedException { + @Autowired + private WrkMastService wrkMastService; + + @Autowired + private WrkDetlService wrkDetlService; + + @Value("${loc-move.enable}") + private boolean enable; + + @Value("${config.outloading}") + private boolean outloading; + + + public synchronized void generateStoreWrkFile() { try { // 鏍规嵁杈撻�佺嚎plc閬嶅巻 for (DevpSlave devp : slaveProperties.getDevp()) { @@ -137,57 +158,51 @@ back = true; } // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 - if (staProtocol.isAutoing() && staProtocol.isLoading() - && staProtocol.isInEnable() - && !staProtocol.isEmptyMk() && workNo >= 9790 - && staProtocol.isPakMk()) { + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() + && !staProtocol.isEmptyMk() && workNo >= 9000 && staProtocol.isPakMk()) { // 鑾峰彇鏉$爜鎵弿浠俊鎭� BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); if (barcodeThread == null) { continue; } String BoxNo = barcodeThread.getBarcode(); + if (Cools.isEmpty(BoxNo)) { + log.error("{}鍙锋潯鐮佹壂鎻忓け璐ワ紝鍊硷細{}", inSta.getBarcode(), BoxNo); + continue; + } TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", BoxNo)); if (!Cools.isEmpty(taskWrk1)) { log.info("鎵樼洏鐮侊細" + BoxNo + "浠诲姟妗e瓨鍦�"); - if (taskWrk1.getIoType() == 1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) { - StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() - .eq("crn_no", taskWrk1.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId())); - if (Cools.isEmpty(staDesc)) { - return; - } else { - continue; - } - } + continue; } if (back) { storageEscalationParam.setWCSStatus(1); storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errMsg); } storageEscalationParam.setBarcode(BoxNo); + storageEscalationParam.setMatIdList(staProtocol.getMatIdList()); log.info("缁勬墭鍏ュ簱={}", storageEscalationParam); TaskWrk taskWrk = toWmsService.getLocNoFromWms(storageEscalationParam); + if (taskWrk == null) { + log.error("鍏ュ簱璇锋眰wms鍒涘缓浠诲姟宸ヤ綔妗d负绌猴細{}", storageEscalationParam); + continue; + } if (back) { - log.info("鎵樼洏閫�鍥�==>{}锛寋}", BoxNo, errMsg); staProtocol.setStaNo(inSta.getBackSta().shortValue()); devpThread.setPakMk(staProtocol.getSiteId(), false); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + log.info("缁勬墭鍏ュ簱鎵樼洏閫�鍥炲懡浠ゆ帹閫佽緭閫佺嚎闃熷垪鎴愬姛==>{}锛寋}", BoxNo, errMsg); } else { - if (!Cools.isEmpty(taskWrk)) { - StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() - .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId())); - staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue()); - staProtocol.setStaNo(staDesc.getCrnStn().shortValue()); - MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); - //娣诲姞涓婃姤鏃ュ織 - toWmsService.addReportLog(taskWrk); - } else { - log.info("鍒涘缓宸ヤ綔妗eけ璐�==>{}", taskWrk.getTaskNo()); - staProtocol.setStaNo(inSta.getBackSta().shortValue()); - devpThread.setPakMk(staProtocol.getSiteId(), false); - MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() + .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId())); + if (staDesc == null) { + log.error("缁勬墭鍏ュ簱璺緞涓嶅瓨鍦紝wrkNo={},crn={},stn_no={}", taskWrk.getWrkNo(), taskWrk.getCrnNo(), staProtocol.getSiteId()); + continue; } - + staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue()); + staProtocol.setStaNo(staDesc.getCrnStn().shortValue()); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + log.info("缁勬墭鍏ュ簱鍛戒护鎺ㄩ�佽緭閫佺嚎闃熷垪鎴愬姛:{}", staProtocol); } } @@ -207,47 +222,50 @@ for (CrnSlave crnSlave : slaveProperties.getCrn()) { // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯 for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) { - List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", crnSlave.getId()).eq("crn_stn", crnStn.getStaNo())); - for (StaDesc staDesc : staDescs) { - try { - // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 - 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() == 0)) { - // 鏌ヨ宸ヤ綔妗� - TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), staDesc.getStnNo().toString()); - if (taskWrk == null) { - continue; - } - log.info("涓嬪彂杈撻�佺嚎浠诲姟锛歵askWrk:" + JSON.toJSONString(taskWrk)); - staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue()); - staProtocol.setStaNo(staDesc.getStnNo().shortValue()); - boolean offer = false; - try { - offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol)); - } catch (Exception e) { - log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:" + e); - log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:offer:" + offer); - } - if (offer) { - log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(taskWrk)); - taskWrk.setStatus(5); - taskWrk.setWrkSts(14); - taskWrkService.updateById(taskWrk); - - } else { - log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:" + JSON.toJSONString(taskWrk)); - } - } - } catch (Exception e) { - log.error("鍑哄簱鍒板嚭搴撶珯寮傚父:寮傚父淇℃伅锛�" + e); + try { + // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 + 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() == 0)) { + // 鏌ヨ宸ヤ綔妗� + TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), String.valueOf(crnStn.getStaNo() - 1)); + if (taskWrk == null) { + continue; + } + log.info("涓嬪彂杈撻�佺嚎浠诲姟锛歵askWrk:" + JSON.toJSONString(taskWrk)); + staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue()); + staProtocol.setStaNo(Short.valueOf(taskWrk.getTargetPoint())); + if (!Cools.isEmpty(taskWrk.getType())) { + staProtocol.setHeight(taskWrk.getType()); + } + boolean offer = false; + try { + offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol)); + } catch (Exception e) { + log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:" + e); + log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:offer:" + offer); + } + if (offer) { + log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(taskWrk)); + taskWrk.setStatus(5); + taskWrk.setWrkSts(14); + taskWrk.setCompleteTime(new Date()); + taskWrkService.updateById(taskWrk); + + } else { + log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:" + JSON.toJSONString(taskWrk)); + } +// } + } + } catch (Exception e) { + log.error("鍑哄簱鍒板嚭搴撶珯寮傚父:寮傚父淇℃伅锛�" + e); } +// } } } @@ -336,6 +354,17 @@ continue; } + LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint()); + if (!locMast.getLocSts().equals("O")) { + if (taskWrk.getWrkSts() == 2) { + log.error("鍏ュ簱WMS鍒嗛厤搴撲綅{}鏈夎锛屽簱浣嶇姸鎬佷负{}", locMast.getLocNo(), locMast.getLocSts()); + taskWrk.setWrkSts(5); + taskWrk.setMemo("WMS鍒嗛厤搴撲綅鏈夎"); + taskWrkService.updateById(taskWrk); + } + continue; + } + // 鍫嗗灈鏈烘帶鍒惰繃婊� if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { continue; @@ -349,11 +378,12 @@ // int workNo = commonService.getWorkNo(WorkNoType.PAKIN.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙� // taskWrk.setWrkNo(workNo);//宸ヤ綔鍙� taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//娲惧彂鐘舵�� - taskWrk.setAssignTime(new Date());//娲惧彂鏃堕棿 + taskWrk.setExecuteTime(new Date()); +// taskWrk.setAssignTime(new Date());//娲惧彂鏃堕棿 taskWrk.setWrkSts(3);//宸ヤ綔鐘舵�� 3.鍚婅溅鍏ュ簱 taskWrk.setCrnNo(staDesc.getCrnNo());//鍫嗗灈鏈哄彿 - taskWrk.setModiTime(new Date()); - taskWrk.setModiUser(9988L); +// taskWrk.setModiTime(new Date()); +// taskWrk.setModiUser(9988L); // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- CrnCommand crnCommand = new CrnCommand(); @@ -374,6 +404,8 @@ throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�"); } else { try { + // 涓婃姤鎵ц鐘舵�� + toWmsService.executionStatusReport(taskWrk.getTaskNo(), taskWrk.getWrkSts()); taskWrkService.updateById(taskWrk); } catch (Exception e) { log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); @@ -410,24 +442,24 @@ LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint()); //鍒ゆ柇鍏跺簱浣嶆槸鍚︿负娣卞簱浣嶏紝濡傛灉涓烘繁搴撲綅鎵惧叾娴呭簱浣嶆槸閮芥湁璐� - boolean flag = false; + int flag = 0; if (locMast.getRow1() == 1 || locMast.getRow1() == 5 || locMast.getRow1() == 9) { - flag = true; + flag = 1; } else if (locMast.getRow1() == 4 || locMast.getRow1() == 8 || locMast.getRow1() == 12) { - flag = true; + flag = 2; } - if (flag) { + if (flag == 1) { LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>() - .eq("row1", (locMast.getRow1() - 1)) + .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 { + } else if (flag == 2) { LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>() - .eq("row1", (locMast.getRow1() + 1)) + .eq("row1", (locMast.getRow1() - 1)) .eq("bay1", locMast.getBay1()) .eq("lev1", locMast.getLev1()).eq("loc_sts", "F")); if (!Cools.isEmpty(locMast1)) { @@ -454,7 +486,7 @@ } // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵�� - if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") + if (staProtocol.isAutoing() && (outloading || !staProtocol.isLoading()) && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) { // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- @@ -494,10 +526,12 @@ Date now = new Date(); taskWrk.setWrkSts(12); taskWrk.setStatus(2); - taskWrk.setModiTime(now); + taskWrk.setExecuteTime(now); if (taskWrkMapper.updateById(taskWrk) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); } + // 涓婃姤鎵ц鐘舵�� + toWmsService.executionStatusReport(taskWrk.getTaskNo(), taskWrk.getWrkSts()); } catch (Exception e) { log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽紓甯革細" + e); @@ -565,6 +599,7 @@ Date now = new Date(); taskWrk.setWrkSts(12); taskWrk.setStatus(2); + taskWrk.setExecuteTime(now); taskWrk.setModiTime(now); if (taskWrkMapper.updateById(taskWrk) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); @@ -645,6 +680,7 @@ locMast1.setModiUser(9999L); locMastService.updateById(locMast1); } + taskWrk.setCompleteTime(new Date()); taskWrkService.updateById(taskWrk); } @@ -838,19 +874,19 @@ try { // 鏍规嵁杈撻�佺嚎plc閬嶅巻 for (DevpSlave devp : slaveProperties.getDevp()) { - if (devp.getId() == 2){ + if (devp.getId() == 2) { continue; } SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); for (DevpSlave.Sta inSta : devp.getInSta()) { - WrkMast pakout = wrkMastMapper.selectWorkingPakout(inSta.getBackSta()); + TaskWrk taskWrk = taskWrkService.selectByTargetPoint(inSta.getBackSta() + ""); switch (inSta.getBackSta()) { - case 116: - if (pakout != null) { + case 101: + if (taskWrk != null) { if (devpThread.ioModeOf1F1 != IoModeType.PAKOUT_MODE) { // 鍑哄簱鍒囨崲涓� devpThread.ioModeOf1F1 = IoModeType.PAKOUT_BOOTING; - WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo()); + TaskWrk pakin = taskWrkService.selectByStartPoint(inSta.getStaNo() + ""); if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading() && !devpThread.getStation().get(inSta.getBackSta()).isLoading() && devpThread.getStation().get(inSta.getBackSta()).getWorkNo() == 0) { @@ -863,12 +899,12 @@ devpThread.ioModeOf1F1 = IoModeType.PAKIN_MODE; } break; - case 117: - if (pakout != null) { + case 104: + if (taskWrk != null) { if (devpThread.ioModeOf1F2 != IoModeType.PAKOUT_MODE) { // 鍑哄簱鍒囨崲涓� devpThread.ioModeOf1F2 = IoModeType.PAKOUT_BOOTING; - WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo()); + TaskWrk pakin = taskWrkService.selectByStartPoint(inSta.getStaNo() + ""); if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading() && !devpThread.getStation().get(inSta.getBackSta()).isLoading() && devpThread.getStation().get(inSta.getBackSta()).getWorkNo() == 0) { @@ -881,12 +917,12 @@ devpThread.ioModeOf1F2 = IoModeType.PAKIN_MODE; } break; - case 118: - if (pakout != null) { + case 107: + if (taskWrk != null) { if (devpThread.ioModeOf1F3 != IoModeType.PAKOUT_MODE) { // 鍑哄簱鍒囨崲涓� devpThread.ioModeOf1F3 = IoModeType.PAKOUT_BOOTING; - WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo()); + TaskWrk pakin = taskWrkService.selectByStartPoint(inSta.getStaNo() + ""); if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading() && !devpThread.getStation().get(inSta.getBackSta()).isLoading() && devpThread.getStation().get(inSta.getBackSta()).getWorkNo() == 0) { @@ -899,12 +935,12 @@ devpThread.ioModeOf1F3 = IoModeType.PAKIN_MODE; } break; - case 119: - if (pakout != null) { + case 110: + if (taskWrk != null) { if (devpThread.ioModeOf1F4 != IoModeType.PAKOUT_MODE) { // 鍑哄簱鍒囨崲涓� devpThread.ioModeOf1F4 = IoModeType.PAKOUT_BOOTING; - WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo()); + TaskWrk pakin = taskWrkService.selectByStartPoint(inSta.getStaNo() + ""); if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading() && !devpThread.getStation().get(inSta.getBackSta()).isLoading() && devpThread.getStation().get(inSta.getBackSta()).getWorkNo() == 0) { @@ -917,12 +953,12 @@ devpThread.ioModeOf1F4 = IoModeType.PAKIN_MODE; } break; - case 120: - if (pakout != null) { + case 113: + if (taskWrk != null) { if (devpThread.ioModeOf1F5 != IoModeType.PAKOUT_MODE) { // 鍑哄簱鍒囨崲涓� devpThread.ioModeOf1F5 = IoModeType.PAKOUT_BOOTING; - WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo()); + TaskWrk pakin = taskWrkService.selectByStartPoint(inSta.getStaNo() + ""); if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading() && !devpThread.getStation().get(inSta.getBackSta()).isLoading() && devpThread.getStation().get(inSta.getBackSta()).getWorkNo() == 0) { @@ -936,11 +972,11 @@ } break; case 203: - if (pakout != null) { + if (taskWrk != null) { if (devpThread.ioModeOf2F1 != IoModeType.PAKOUT_MODE) { // 鍑哄簱鍒囨崲涓� devpThread.ioModeOf2F1 = IoModeType.PAKOUT_BOOTING; - WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo()); + TaskWrk pakin = taskWrkService.selectByStartPoint(inSta.getStaNo() + ""); if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading() && !devpThread.getStation().get(inSta.getBackSta()).isLoading() && devpThread.getStation().get(inSta.getBackSta()).getWorkNo() == 0) { @@ -955,11 +991,11 @@ break; case 207: - if (pakout != null) { + if (taskWrk != null) { if (devpThread.ioModeOf2F2 != IoModeType.PAKOUT_MODE) { // 鍑哄簱鍒囨崲涓� devpThread.ioModeOf2F2 = IoModeType.PAKOUT_BOOTING; - WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo()); + TaskWrk pakin = taskWrkService.selectByStartPoint(inSta.getStaNo() + ""); if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading() && !devpThread.getStation().get(inSta.getBackSta()).isLoading() && devpThread.getStation().get(inSta.getBackSta()).getWorkNo() == 0) { @@ -974,11 +1010,11 @@ break; case 212: - if (pakout != null) { + if (taskWrk != null) { if (devpThread.ioModeOf2F3 != IoModeType.PAKOUT_MODE) { // 鍑哄簱鍒囨崲涓� devpThread.ioModeOf2F3 = IoModeType.PAKOUT_BOOTING; - WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo()); + TaskWrk pakin = taskWrkService.selectByStartPoint(inSta.getStaNo() + ""); if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading() && !devpThread.getStation().get(inSta.getBackSta()).isLoading() && devpThread.getStation().get(inSta.getBackSta()).getWorkNo() == 0) { @@ -1003,23 +1039,117 @@ /** * 璺戝簱绋嬪簭 */ - public void debug() { - //棣栧厛搴撲綅鏈変竴涓湪搴撶殑搴撲綅 - LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "F")); - if (locMast != null) { - // 鍐嶇敓鎴愪竴涓Щ搴撲换鍔� - LocMast mk = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "O").ne("mk", 1)); - + public void debug(String sts, Long modiUser, Integer loc_type1) { + if (!enable) { + return; } - + List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>()); + if (basCrnps.isEmpty()) { + return; + } + for (BasCrnp basCrnp : basCrnps) { + if (!basCrnp.getInEnable().equals("N") || !basCrnp.getOutEnable().equals("Y")) { + continue; + } + List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", basCrnp.getCrnNo()).eq("io_type", 11)); + if (Cools.isEmpty(wrkMasts) || wrkMasts.isEmpty()) { + int i = locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", sts).eq("loc_type1", loc_type1).ne("modi_user", modiUser)); + LocMast locMastStart = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", sts).eq("loc_type1", loc_type1).ne("modi_user", modiUser)); + if (locMastStart == null || i > 1) { + continue; + } + List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("loc_sts", "O") + .eq("crn_no", basCrnp.getCrnNo()) + .eq("loc_type1", locMastStart.getLocType1()) + .ne("modi_user", 77)); + if (Cools.isEmpty(locMasts)) { + continue; + } + Random random = new Random(); + LocMast locMastEnd = locMasts.get(random.nextInt(locMasts.size())); + locMove(locMastStart, locMastEnd, Long.parseLong(basCrnp.getCrnNo().toString())); + } + } } + + public void locMove(LocMast sourceLoc, LocMast locNo, Long userId) { + List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLoc.getLocNo())); + LocMast loc = locMastService.selectById(locNo); + if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) { + throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�"); + } + Date now = new Date(); + // 鑾峰彇宸ヤ綔鍙� + int workNo = commonService.getWorkNo(WorkNoType.PICK.type); + // 淇濆瓨宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇 + wrkMast.setIoPri(10D); + wrkMast.setCrnNo(sourceLoc.getCrnNo()); + wrkMast.setSourceLocNo(sourceLoc.getLocNo()); // 婧愬簱浣� + wrkMast.setLocNo(locNo.getLocNo()); // 鐩爣搴撲綅 + wrkMast.setFullPlt(Cools.isEmpty(locDetls) ? "N" : "Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘 + wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮� + wrkMast.setLinkMis("N"); + wrkMast.setAppeUser(userId); + wrkMast.setAppeTime(now); + wrkMast.setModiUser(userId); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + // 宸ヤ綔妗f槑缁嗕繚瀛� + for (LocDetl locDetl : locDetls) { + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(locDetl); + wrkDetl.setWrkNo(workNo); + wrkDetl.setIoTime(now); + wrkDetl.setAnfme(locDetl.getAnfme()); + wrkDetl.setAppeTime(now); + wrkDetl.setAppeUser(userId); + wrkDetl.setModiTime(now); + wrkDetl.setModiUser(userId); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + } + } + // 淇敼婧愬簱浣嶇姸鎬� + if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) { + sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害 + sourceLoc.setModiUser(userId); + sourceLoc.setModiTime(now); + if (!locMastService.updateById(sourceLoc)) { + throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�"); + } + } else { + throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細" + sourceLoc.getLocSts$()); + } + // 淇敼鐩爣搴撲綅鐘舵�� + if (loc.getLocSts().equals("O")) { + loc.setLocSts("S"); // S.鍏ュ簱棰勭害 + loc.setModiTime(now); + loc.setModiUser(userId); + if (!locMastService.updateById(loc)) { + throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�"); + } + } else { + throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocSts$()); + } + } /** * 杞Щ浠诲姟涓嬪彂 */ public void transferTaskStart() { - for (DevpSlave.Sta sta : slaveProperties.getDevp().get(1).getInSta()) { try { // 鑾峰彇鍏ュ簱绔欎俊鎭� @@ -1082,7 +1212,7 @@ continue; } log.info("杞Щ浠诲姟瀹屾垚锛歵ransferTask:" + JSON.toJSONString(transferTask)); - transferTask.setStatus(5); + transferTask.setStatus(3); transferTaskService.updateById(transferTask); } } catch (Exception e) { -- Gitblit v1.9.1