| | |
| | | return false; |
| | | } |
| | | Integer ioType = wrkMast.getIoType(); |
| | | return ioType != null && (ioType == 1 || ioType == 8 || ioType == 53 || ioType == 54 || ioType == 57); |
| | | return ioType != null && (ioType == 1 || ioType == 5 || ioType == 11 || ioType == 53 || ioType == 54 || ioType == 57); |
| | | } |
| | | |
| | | private boolean needOutboundErpReport(WrkMast wrkMast) { |
| | |
| | | locMast.setLocSts("D"); |
| | | locMast.setIoTime(now); |
| | | locMast.setModiTime(now); |
| | | locMast.setScWeight(wrkMast.getScWeight()); |
| | | if (!locMastService.updateById(locMast)) { |
| | | // exceptionHandle("空板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | |
| | | locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 |
| | | locDetl.setModiTime(now); |
| | | locDetl.setAppeTime(now); |
| | | locDetl.setWeight(wrkDetl.getWeight()); |
| | | if (!locDetlService.insert(locDetl)) { |
| | | // exceptionHandle("全板入库 ===>> 添加库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | |
| | | locMast.setBarcode(wrkMast.getBarcode()); |
| | | locMast.setIoTime(now); |
| | | locMast.setModiTime(now); |
| | | locMast.setScWeight(wrkMast.getScWeight()); |
| | | if (!locMastService.updateById(locMast)) { |
| | | // exceptionHandle("全板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | |
| | | locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 |
| | | locDetl.setModiTime(now); |
| | | locDetl.setAppeTime(now); |
| | | locDetl.setWeight(wrkDetl.getWeight()); |
| | | if (!locDetlService.insert(locDetl)) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("拣料途中并板 ===>> 添加库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | |
| | | locMast.setBarcode(wrkMast.getBarcode()); |
| | | locMast.setIoTime(now); |
| | | locMast.setModiTime(now); |
| | | locMast.setScWeight(wrkMast.getScWeight()); |
| | | if (!locMastService.updateById(locMast)) { |
| | | // exceptionHandle("拣料入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | |
| | | locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 |
| | | locDetl.setModiTime(now); |
| | | locDetl.setAppeTime(now); |
| | | locDetl.setWeight(wrkDetl.getWeight()); |
| | | if (!locDetlService.insert(locDetl)) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("并板入库 ===>> 新增库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | |
| | | locMast.setBarcode(wrkMast.getBarcode()); |
| | | locMast.setIoTime(now); |
| | | locMast.setModiTime(now); |
| | | locMast.setScWeight(wrkMast.getScWeight()); |
| | | if (!locMastService.updateById(locMast)) { |
| | | // exceptionHandle("并板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | |
| | | locMast.setBarcode(wrkMast.getBarcode()); |
| | | locMast.setIoTime(now); |
| | | locMast.setModiTime(now); |
| | | locMast.setScWeight(wrkMast.getScWeight()); |
| | | if (!locMastService.updateById(locMast)) { |
| | | // exceptionHandle("盘点入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | |
| | | // exceptionHandle("库位移转 ===>> 修改目标库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("库位移转 ===>> 修改目标库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | break; |
| | | // 浅库位移库 |
| | | case 5: |
| | | String changeLocSts = "D"; |
| | | if ("N".equals(wrkMast.getEmptyMk())) { |
| | | changeLocSts = "F"; |
| | | if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("浅库位移库 ===>> 转移库存明细数据失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | } |
| | | LocMast changeLocSource = locMastService.selectById(wrkMast.getSourceLocNo()); |
| | | if (null != changeLocSource) { |
| | | changeLocSource.setBarcode(""); |
| | | changeLocSource.setLocSts("O"); |
| | | changeLocSource.setModiTime(now); |
| | | changeLocSource.setIoTime(now); |
| | | if (!locMastService.updateById(changeLocSource)) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("浅库位移库 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | } |
| | | locMast.setLocSts(changeLocSts); |
| | | locMast.setBarcode(wrkMast.getBarcode()); |
| | | locMast.setIoTime(now); |
| | | locMast.setModiTime(now); |
| | | if (!locMastService.updateById(locMast)) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("浅库位移库 ===>> 修改目标库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | break; |
| | | default: |
| | |
| | | } |
| | | for (WrkDetl wrkDetl : wrkDetls101) { |
| | | // 更新订单完成数量 |
| | | OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), |
| | | wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); |
| | | if (orderDetlPakout == null) { |
| | | orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), |
| | | wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); |
| | | } |
| | | try { |
| | | if (!Cools.isEmpty(orderDetlPakout)) { |
| | | if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), |
| | | orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), |
| | | wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | if (!increasePakoutOrderQty(wrkMast, wrkDetl)) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | } catch (Exception ignore) { |
| | | |
| | |
| | | } |
| | | } |
| | | // 更新订单完成数量 |
| | | OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), |
| | | wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); |
| | | try { |
| | | if (!Cools.isEmpty(orderDetlPakout)) { |
| | | if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), |
| | | orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), |
| | | wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("并板途中捡料 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | if (!increasePakoutOrderQty(wrkMast, wrkDetl)) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("并板途中捡料 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | } catch (Exception ignore) { |
| | | } |
| | |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 回写出库订单完成数量。 |
| | | * |
| | | * 新增的延迟出库订单明细按 pallet_id 保存接口托盘号,因此优先使用 orderNo + palletId 精确回写; |
| | | * 如果是历史订单或旧数据没有 pallet_id,则退回原来的物料/批次/备用字段匹配方式。 |
| | | */ |
| | | private boolean increasePakoutOrderQty(WrkMast wrkMast, WrkDetl wrkDetl) { |
| | | if (wrkDetl == null || Cools.isEmpty(wrkDetl.getOrderNo())) { |
| | | return true; |
| | | } |
| | | String palletId = null; |
| | | if (!Cools.isEmpty(wrkDetl.getZpallet())) { |
| | | palletId = wrkDetl.getZpallet(); |
| | | } else if (wrkMast != null) { |
| | | palletId = wrkMast.getBarcode(); |
| | | } |
| | | // stationId > 600 的延迟出库订单是一托盘一行明细;同一订单、物料、批次、进仓编号下会有多行。 |
| | | // 因此完成回写必须优先用 orderNo + palletId 精确定位,否则旧的物料维度查询会命中多行。 |
| | | if (!Cools.isEmpty(palletId) |
| | | && orderDetlPakoutService.increaseQtyByOrderNoAndPallet(wrkDetl.getOrderNo(), palletId, wrkDetl.getAnfme())) { |
| | | return true; |
| | | } |
| | | // 兼容历史订单:旧数据可能没有 pallet_id,只能退回原来的物料/批次/备用字段匹配。 |
| | | // 这里不再调用批量 update SQL,而是先取一条明细后按 id 更新,避免重复明细时把多行 qty 一起加上。 |
| | | OrderDetlPakout matchedOrderDetl = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), |
| | | wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), |
| | | wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); |
| | | if (Cools.isEmpty(matchedOrderDetl)) { |
| | | return true; |
| | | } |
| | | matchedOrderDetl.setQty(safeDouble(matchedOrderDetl.getQty()) + safeDouble(wrkDetl.getAnfme())); |
| | | matchedOrderDetl.setUpdateTime(new Date()); |
| | | return orderDetlPakoutService.updateById(matchedOrderDetl); |
| | | } |
| | | |
| | | private double safeDouble(Double value) { |
| | | return value == null ? 0.0D : value; |
| | | } |
| | | } |