| | |
| | | import javax.annotation.Resource; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Optional; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | return FAIL.setMsg("库位移转 ===>> 修改目标库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | break; |
| | | // 跨巷道库位移转完成 |
| | | case 12: |
| | | // 默认目标库位是空板 |
| | | String locSts2 = "D"; |
| | | // 库位移转判断是否为空板移转 |
| | | if (wrkMast.getEmptyMk().equals("N")) { |
| | | locSts2 = "F"; |
| | | // 转移库存明细数据: 库存号 由工作档源库位变为目标库位 |
| | | if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) { |
| | | // exceptionHandle("库位移转 ===>> 转移库存明细数据失败;[源库位={0}],[目标库位={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("库位移转 ===>> 转移库存明细数据失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | } |
| | | // 跨巷道移库,更新订单明细及订单状态 |
| | | List<WrkDetl> wrkDetlList2 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); |
| | | if (!wrkDetlList2.isEmpty()) { |
| | | // 判断有无单据编号 |
| | | Optional<WrkDetl> any = wrkDetlList2.stream().filter(wrkDetl -> wrkDetl.getOrderNo() != null).findAny(); |
| | | if (any.isPresent()) { |
| | | String orderNo = any.get().getOrderNo(); |
| | | // 根据单据编号和库位号查询单据明细 |
| | | List<OrderDetl> orderDetlList = orderDetlMapper.selectList(new EntityWrapper<OrderDetl>().in("order_no",orderNo).eq("specs",wrkMast.getSourceLocNo())); |
| | | // 更新单据明细的移库状态 |
| | | for(OrderDetl orderDetl: orderDetlList) { |
| | | orderDetl.setDanger(2); |
| | | orderDetl.setUpdateTime(now); |
| | | orderDetlMapper.updateById(orderDetl); |
| | | } |
| | | // 判断单据明细是不是全部移库完成 |
| | | Integer count = orderDetlMapper.selectCount(new EntityWrapper<OrderDetl>().lt("danger", 2).eq("order_no", orderNo)); |
| | | if (count == 0) { |
| | | // 更新单据为已完成 |
| | | orderMapper.updateSettleByOrderNo(orderNo,4,null); |
| | | } |
| | | } |
| | | } else { // 空板转移没有工作明细,但是要更新单据明细状态 |
| | | |
| | | // 只有一条作业中的移库单据 |
| | | List<Order> orderList = orderMapper.selectList(new EntityWrapper<Order>().eq("doc_type", 24).le("settle", 3)); |
| | | if(orderList.isEmpty()) { |
| | | log.error("没有获取到正在执行中的移库单据"); |
| | | } else { |
| | | Order order = orderList.get(0); |
| | | // 根据单据编号和库位号查询单据明细 |
| | | List<OrderDetl> orderDetlList = orderDetlMapper.selectList(new EntityWrapper<OrderDetl>().in("order_no",order.getOrderNo()).eq("specs",wrkMast.getSourceLocNo())); |
| | | // 更新单据明细的移库状态 |
| | | for(OrderDetl orderDetl: orderDetlList) { |
| | | orderDetl.setDanger(2); |
| | | orderDetl.setUpdateTime(now); |
| | | orderDetlMapper.updateById(orderDetl); |
| | | } |
| | | // 判断单据明细是不是全部移库完成 |
| | | Integer count = orderDetlMapper.selectCount(new EntityWrapper<OrderDetl>().lt("danger", 2).eq("order_no", order.getOrderNo())); |
| | | if (count == 0) { |
| | | // 更新单据为已完成 |
| | | orderMapper.updateSettleByOrderNo(order.getOrderNo(),4,null); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | // 修改源库位状态 ==> O |
| | | LocMast sourceLoc2 = locMastService.selectById(wrkMast.getSourceLocNo()); |
| | | if (null != sourceLoc2) { |
| | | sourceLoc2.setBarcode(""); |
| | | sourceLoc2.setLocSts("O"); |
| | | sourceLoc2.setSheetNo("0"); |
| | | sourceLoc2.setModiTime(now); |
| | | sourceLoc2.setIoTime(now); |
| | | if (!locMastService.updateById(sourceLoc2)) { |
| | | // exceptionHandle("库位移转 ===>> 修改源库位状态失败;[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("库位移转 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | } |
| | | // 修改目标库位状态 ==> .locSts |
| | | locMast.setLocSts(locSts2); |
| | | locMast.setBarcode(wrkMast.getBarcode()); |
| | | locMast.setSheetNo("0"); |
| | | locMast.setIoTime(now); |
| | | locMast.setModiTime(now); |
| | | if (!locMastService.updateById(locMast)) { |
| | | // exceptionHandle("库位移转 ===>> 修改目标库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("库位移转 ===>> 修改目标库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |