| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.swing.*; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | |
| | | if (sign){ |
| | | break; |
| | | } |
| | | |
| | | //检测出库的货物中是否有状态为禁止的货物。 |
| | | for (LocDetl locDetl : locDetlService.selectByLocNo(locNo)) { |
| | | if (locDetl.getStockFreeze() == 0) { |
| | | th="库位号:"+locNo+" 有禁止出库的货物!"; |
| | | throw new CoolException("出库失败;"+th); |
| | | } |
| | | |
| | | Mat mat = matService.selectByMatnr(locDetl.getMatnr()); |
| | | if (mat == null) { |
| | | continue; |
| | | } |
| | | if (mat.getStatus() == 0) { |
| | | th="库位号:"+locNo+" 有禁止出库的货物!"; |
| | | throw new CoolException("出库失败;"+th); |
| | | } |
| | | } |
| | | |
| | | List<String> groupInsideLoc = Utils.getGroupInsideLoc(locNo); |
| | | if (!Cools.isEmpty(groupInsideLoc)) { |
| | | for (String insideLoc : groupInsideLoc) { |
| | |
| | | } else { |
| | | // 订单合并出库 |
| | | List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class); |
| | | |
| | | //实际出库数量 |
| | | Double locAnfme = locDto.getAnfme(); |
| | | //订单实际出库数量 |
| | | Double orderAnfme; |
| | | |
| | | for (OrderDto orderDto : orderDtoList) { |
| | | OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); |
| | | if (orderDetl == null) { |
| | | orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null); |
| | | } |
| | | if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDto.getAnfme())) { |
| | | |
| | | if(locAnfme > orderDetl.getAnfme()){ |
| | | orderAnfme = orderDetl.getAnfme(); |
| | | locAnfme -= orderAnfme; |
| | | }else { |
| | | orderAnfme = locAnfme; |
| | | } |
| | | |
| | | if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme)) { |
| | | throw new CoolException("修改订单明细数量失败"); |
| | | } |
| | | orderService.updateSettle(orderDetl.getOrderId(), 2L, userId); |
| | |
| | | } |
| | | } else { |
| | | // 订单合并出库 |
| | | |
| | | //实际取消的出库数量 |
| | | Double wrkDetlAnfme = wrkDetl.getAnfme(); |
| | | //订单实际出库数量 |
| | | Double orderAnfme; |
| | | |
| | | List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class); |
| | | for (OrderDto orderDto : orderDtoList) { |
| | | if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderDto.getAnfme())) { |
| | | |
| | | if(wrkDetlAnfme > orderDto.getAnfme()){ |
| | | orderAnfme = orderDto.getAnfme(); |
| | | wrkDetlAnfme -= orderAnfme; |
| | | }else { |
| | | orderAnfme = wrkDetlAnfme; |
| | | } |
| | | |
| | | if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderAnfme)) { |
| | | throw new CoolException("订单数据回滚失败"); |
| | | } |
| | | } |