| | |
| | | } |
| | | LocMast locMast = null; |
| | | // 修改源库位状态 O.空库位 |
| | | locMast = locMastService.selectById(sourceLocNo); |
| | | locMast.setLocSts("O"); |
| | | locMast.setModiTime(new Date()); |
| | | if (!locMastService.updateById(locMast)) { |
| | | throw new CoolException(wrkMast.getWrkNo() + "修改源库位状态 O.空库位"); |
| | | } |
| | | // locMast = locMastService.selectById(sourceLocNo); |
| | | // locMast.setLocSts("O"); |
| | | // locMast.setModiTime(new Date()); |
| | | // if (!locMastService.updateById(locMast)) { |
| | | // throw new CoolException(wrkMast.getWrkNo() + "修改源库位状态 O.空库位"); |
| | | // } |
| | | // 修改目标库位状态 Q.拣料/盘点/并板再入库 |
| | | locMast = locMastService.selectById(wrkMast.getLocNo()); |
| | | locMast.setLocSts("Q"); |
| | |
| | | throw new CoolException(wrkMast.getWrkNo() + "修改目标库位状态 Q.拣料/盘点/并板再入库"); |
| | | } |
| | | // 库存明细转移 |
| | | if (!locDetlService.updateLocNo(wrkMast.getLocNo(), sourceLocNo)) { |
| | | throw new CoolException(wrkMast.getWrkNo() + "任务库存明细转移失败!!!"); |
| | | } |
| | | // if (!locDetlService.updateLocNo(wrkMast.getLocNo(), sourceLocNo)) { |
| | | // throw new CoolException(wrkMast.getWrkNo() + "任务库存明细转移失败!!!"); |
| | | // } |
| | | |
| | | // 条码设备处理 |
| | | barcodeThread.setBarcode(""); |
| | |
| | | /** |
| | | * 盘点货物抵达盘点目标站 wrkMast.sourceLoc P ===>> O |
| | | */ |
| | | public void pickWrkCompleteStaNo0() { |
| | | for (DevpSlave devp : slaveProperties.getDevp()) { |
| | | // 遍历拣料入库口 |
| | | for (DevpSlave.Sta pickSta : devp.getPickOutSta()) { |
| | | // 获取拣料入库站信息 |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.getWorkNo() > 0) { |
| | | // WrkMast wrkMast = wrkMastMapper.selectPick17(pickSta.getStaNo(), staProtocol.getWorkNo().intValue()); |
| | | // if (Cools.isEmpty(wrkMast)) { |
| | | // log.error("{}站拣料、并板、盘点检索任务失败!任务号:{}", pickSta.getStaNo(), staProtocol.getWorkNo()); |
| | | // } else { |
| | | // // 修改源库位状态 O.空库位 |
| | | // LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); |
| | | // if (locMast.getLocSts().equals("P")) { |
| | | // locMast.setLocSts("O"); |
| | | // locMast.setModiTime(new Date()); |
| | | // if (!locMastService.updateById(locMast)) { |
| | | // throw new CoolException(wrkMast.getWrkNo() + "修改源库位状态 O.空库位"); |
| | | // } |
| | | // } |
| | | // // 修改工作档 |
| | | // wrkMast.setIoPri(13D); |
| | | // if (wrkMastMapper.updateById(wrkMast) == 0) { |
| | | // log.error("更新工作档的优先级失败!!! [工作号:{}]", wrkMast.getWrkNo()); |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 盘点货物抵达盘点目标站 wrkMast.sourceLoc P ===>> O |
| | | */ |
| | | public void pickWrkCompleteStaNo() { |
| | | List<WrkMast> wrkMasts = wrkMastMapper.selectPick17(null, null); |
| | | for (WrkMast wrkMast : wrkMasts) { |
| | |
| | | if (!locMastService.updateById(locMast)) { |
| | | throw new CoolException(wrkMast.getWrkNo() + "修改源库位状态 O.空库位"); |
| | | } |
| | | locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo())); |
| | | } |
| | | // 修改工作档 |
| | | wrkMast.setIoPri(13D); |
| | | wrkMast.setModiTime(new Date()); |
| | | if (wrkMastMapper.updateById(wrkMast) == 0) { |
| | | log.error("更新工作档的优先级失败!!! [工作号:{}]", wrkMast.getWrkNo()); |
| | | } |
| | |
| | | log.error("入库 ===>> 堆垛机站点在数据库不存在, 站点编号={}", crnStn.getStaNo()); |
| | | continue; |
| | | } |
| | | |
| | | //加强判断,只要存在移库任务,说明出库任务未完全结束,不执行入库任务 |
| | | WrkMast one = wrkMastMapper.selectLocMoveData(slave.getId()); |
| | | if(!Cools.isEmpty(one)){ |
| | | log.error("入库 ===>> 存在移库未完成任务,不能入库。移库任务号={},堆垛机号={}", one.getWrkNo(), slave.getId()); |
| | | continue; |
| | | } |
| | | |
| | | // 获取工作状态为 2,3,4,5,6 的入库工作档 |
| | | WrkMast wrkMast = wrkMastMapper.selectPakInStep23456(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo()); |
| | | if(null == wrkMast) { |
| | |
| | | continue; |
| | | } |
| | | |
| | | //加强判断,确保因出库导致的移库整套任务全部结束后,才能执行下一笔出库任务。只有库位完成移库回去全部任务后,才认为当组出库任务完成 |
| | | WrkMast one = wrkMastMapper.selectLocMoveData(slave.getId()); |
| | | if(!Cools.isEmpty(one)){ |
| | | //存在移库任务,且在移出中,且移库源库位与待出库库位不在同一库位组,时跳出,确保移库/出库全套任务完成后,再执行下一笔 |
| | | if(one.getWrkSts() > 10 && (Utils.getGroupRow(wrkMast.getSourceLocNo()) != Utils.getGroupRow(one.getSourceLocNo()) |
| | | || Utils.getBay(wrkMast.getSourceLocNo()) != Utils.getBay(one.getSourceLocNo()) |
| | | || Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(one.getSourceLocNo()))){ |
| | | continue; |
| | | } |
| | | //存在移库任务,且在移回中,且移库目标库位与待出库库位不在同一库位组,时跳出,确保移库/出库全套任务完成后,再执行下一笔 |
| | | if(one.getWrkSts() < 11 && (Utils.getGroupRow(wrkMast.getSourceLocNo()) != Utils.getGroupRow(one.getLocNo()) |
| | | || Utils.getBay(wrkMast.getSourceLocNo()) != Utils.getBay(one.getLocNo()) |
| | | || Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(one.getLocNo()))){ |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | //出库库位不是最外层库位,判断浅库位组是否都为空,或存在库位移转任务 |
| | | boolean flag = false; |
| | | if(!locMastService.isOutMost(wrkMast.getSourceLocNo())){ |
| | |
| | | flag = true; |
| | | break; |
| | | } else { |
| | | log.error("库位出库到堆垛机站 ===>> 库位状态在库,但是浅库位已存在工作档任务!出库库位={},浅库位号={}", shallowLoc.getLocNo()); |
| | | flag = true; |
| | | break; |
| | | if (waitWrkMast.getWrkSts()!=18) { |
| | | log.error("库位出库到堆垛机站 ===>> 库位状态在库,但是浅库位已存在工作档任务!出库库位={},浅库位号={}", shallowLoc.getLocNo()); |
| | | flag = true; |
| | | break; |
| | | } |
| | | |
| | | } |
| | | } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")){ |
| | | log.error("库位出库到堆垛机站 ===>> 浅库位库位状态为入库预约!出库库位={},浅库位号={}", shallowLoc.getLocNo()); |
| | |
| | | } |
| | | } |
| | | LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo()); |
| | | // if(sourceLoc.getLocSts().equals("F")){ |
| | | if(sourceLoc.getLocSts().equals("F")){ |
| | | sourceLoc.setLocSts("R"); // R.出库预约 |
| | | sourceLoc.setModiTime(new Date()); |
| | | if (!locMastService.updateById(sourceLoc)) { |
| | | throw new CoolException("更新移库回库目标库位状态失败"); |
| | | } |
| | | // } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | |
| | | // } |
| | | if (locMastService.isOutMost(wrkMast.getLocNo())) { |
| | | wrkMast.setWrkSts(17L); |
| | | // LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); |
| | | // locMast.setLocSts("F"); |
| | | // locMast.setModiTime(new Date()); |
| | | // if (!locMastService.updateById(locMast)) { |
| | | // log.error(""); |
| | | // } |
| | | // 默认目标库位是空板 |
| | | String locSts = "D"; |
| | | // 库位移转判断是否为空板移转 |
| | | if (wrkMast.getEmptyMk().equals("N")) { |
| | | locSts = "F"; |
| | | // 转移库存明细数据: 库存号 由工作档源库位变为目标库位 |
| | | if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) { |
| | | log.error("库位移转 ===>> 转移库存明细数据失败;[源库位={}],[目标库位={}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo()); |
| | | continue; |
| | | } |
| | | } |
| | | // 修改源库位状态 ==> O |
| | | LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo()); |
| | | if (null != sourceLoc) { |
| | | sourceLoc.setBarcode(""); |
| | | sourceLoc.setLocSts("O"); |
| | | sourceLoc.setModiTime(now); |
| | | sourceLoc.setIoTime(now); |
| | | if (!locMastService.updateById(sourceLoc)) { |
| | | log.error("库位移转 ===>> 修改源库位状态失败;[workNo={}],[sourceLoc={}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); |
| | | } |
| | | } |
| | | // 修改目标库位状态 ==> .locSts |
| | | LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); |
| | | locMast.setLocSts(locSts); |
| | | locMast.setModiTime(new Date()); |
| | | if (!locMastService.updateById(locMast)) { |
| | | log.error(""); |
| | | } |
| | | } |
| | | wrkMast.setModiTime(now); |
| | | // 修改成功后复位堆垛机 |