|  |  |  | 
|---|
|  |  |  | import com.zy.asrs.mapper.ManLocDetlMapper; | 
|---|
|  |  |  | import com.zy.asrs.service.*; | 
|---|
|  |  |  | import com.zy.asrs.utils.MatUtils; | 
|---|
|  |  |  | import com.zy.asrs.utils.OrderInAndOutUtil; | 
|---|
|  |  |  | import com.zy.common.CodeRes; | 
|---|
|  |  |  | import com.zy.common.constant.MesConstant; | 
|---|
|  |  |  | import com.zy.common.entity.Parameter; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 关联组托 | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | Order order = orderService.selectByNo(param.getOrderNo()); | 
|---|
|  |  |  | //            Order order = orderService.selectByNo(param.getOrderNo()); | 
|---|
|  |  |  | Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, param.getOrderNo()); | 
|---|
|  |  |  | if (Cools.isEmpty(order) || order.getSettle() > 2) { | 
|---|
|  |  |  | throw new CoolException("单据编号已过期"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | param.getCombMats().forEach(elem -> { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 订单明细数量校验 | 
|---|
|  |  |  | OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch()); | 
|---|
|  |  |  | //                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch()); | 
|---|
|  |  |  | OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch()); | 
|---|
|  |  |  | if (elem.getAnfme() > orderDetl.getEnableQty()) { | 
|---|
|  |  |  | throw new CoolException(orderDetl.getMatnr() + "入库数量不合法"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 修改订单作业数量 | 
|---|
|  |  |  | if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) { | 
|---|
|  |  |  | throw new CoolException("修改单据作业数量失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //                if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) { | 
|---|
|  |  |  | //                    throw new CoolException("修改单据作业数量失败"); | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  | OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE,order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme()); | 
|---|
|  |  |  | DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme()); | 
|---|
|  |  |  | if (DetlDto.has(detlDtos, detlDto)) { | 
|---|
|  |  |  | DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch()); | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new CoolException("保存入库通知档失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | orderService.updateSettle(order.getId(), 2L, userId); | 
|---|
|  |  |  | //            orderService.updateSettle(order.getId(), 2L, userId); | 
|---|
|  |  |  | OrderInAndOutUtil.updateOrder(Boolean.TRUE,order.getId(), 2L, userId); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | openParam.setOrderType("打包入库单"); | 
|---|
|  |  |  | openParam.setOrderDetails(detlDtos); | 
|---|
|  |  |  | openService.pakinOrderCreate(openParam); | 
|---|
|  |  |  | Order order = orderService.selectByNo(orderNo); | 
|---|
|  |  |  | //            Order order = orderService.selectByNo(orderNo); | 
|---|
|  |  |  | Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, param.getOrderNo()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (null == order) { | 
|---|
|  |  |  | throw new CoolException("生成单据失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!orderService.updateSettle(order.getId(), 2L, userId)) { | 
|---|
|  |  |  | throw new CoolException("修改单据状态失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //            if (!orderService.updateSettle(order.getId(), 2L, userId)) { | 
|---|
|  |  |  | //                throw new CoolException("修改单据状态失败"); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | OrderInAndOutUtil.updateOrder(Boolean.TRUE, order.getId(), 2L, userId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 生成入库通知档 | 
|---|
|  |  |  | for (DetlDto detlDto : detlDtos) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 修改作业数量 ---------------------------------------- | 
|---|
|  |  |  | // 订单明细数量校验 | 
|---|
|  |  |  | OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), detlDto.getMatnr(), detlDto.getBatch()); | 
|---|
|  |  |  | //                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), detlDto.getMatnr(), detlDto.getBatch()); | 
|---|
|  |  |  | OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.TRUE, order.getId(), detlDto.getMatnr(), detlDto.getBatch()); | 
|---|
|  |  |  | if (detlDto.getAnfme() > orderDetl.getEnableQty()) { | 
|---|
|  |  |  | throw new CoolException(orderDetl.getMatnr() + "入库数量不合法"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 修改订单作业数量 | 
|---|
|  |  |  | if (!orderDetlService.increaseWorkQty(order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme())) { | 
|---|
|  |  |  | throw new CoolException("修改单据作业数量失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //                if (!orderDetlService.increaseWorkQty(order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme())) { | 
|---|
|  |  |  | //                    throw new CoolException("修改单据作业数量失败"); | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  | OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE,order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme()); | 
|---|
|  |  |  | // 保存入库通知档 | 
|---|
|  |  |  | Mat mat = matService.selectByMatnr(detlDto.getMatnr()); | 
|---|
|  |  |  | if (Cools.isEmpty(mat)) { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BasDevp sta = basDevpService.checkSiteStatus(staNo); | 
|---|
|  |  |  | //根据订单号生成出库任务工作档 | 
|---|
|  |  |  | Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderNo)); | 
|---|
|  |  |  | Order order = OrderInAndOutUtil.selectByNo(Boolean.FALSE, orderNo); | 
|---|
|  |  |  | //        Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderNo)); | 
|---|
|  |  |  | if (order.getSettle() != 1 && order.getSettle() != 2){ | 
|---|
|  |  |  | throw new CoolException("该订单已处理"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", orderNo)); | 
|---|
|  |  |  | //        List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", orderNo)); | 
|---|
|  |  |  | List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(Boolean.FALSE, order.getId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  | for(OrderDetl orderDetl : orderDetls){ | 
|---|
|  |  |  | //查询所有库位状态为F的库位信息 | 
|---|
|  |  |  | 
|---|
|  |  |  | order.setSettle(2L); | 
|---|
|  |  |  | order.setUpdateBy(userId); | 
|---|
|  |  |  | order.setUpdateTime(now); | 
|---|
|  |  |  | if(!orderService.update(order, new EntityWrapper<Order>().eq("order_no", orderNo))){ | 
|---|
|  |  |  | throw new CoolException("更新订单状态失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //                if(!orderService.update(order, new EntityWrapper<Order>().eq("order_no", orderNo))){ | 
|---|
|  |  |  | //                    throw new CoolException("更新订单状态失败"); | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  | OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(),order.getId(),2L,userId); | 
|---|
|  |  |  | orderDetl.setWorkQty(orderDetl.getWorkQty() + curOutQty); | 
|---|
|  |  |  | orderDetl.setUpdateBy(userId); | 
|---|
|  |  |  | orderDetl.setUpdateTime(now); | 
|---|
|  |  |  | 
|---|
|  |  |  | if(!Cools.isEmpty(orderDetl.getBatch())){ | 
|---|
|  |  |  | wrapper.eq("batch", orderDetl.getBatch()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!orderDetlService.update(orderDetl, wrapper)){ | 
|---|
|  |  |  | throw new CoolException("更新订单明细失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //                if(!orderDetlService.update(orderDetl, wrapper)){ | 
|---|
|  |  |  | //                    throw new CoolException("更新订单明细失败"); | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  | OrderInAndOutUtil.updateOrderDetl(order.getPakinPakoutStatus$(),order,orderDetl); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|