fix(order): 修复生产订单状态检查和无码收货功能
- 添加订单状态为1时返回空列表的逻辑 - 移除对订单项数量小于等于0的过滤条件 - 修改无码收货接口参数结构,从列表改为单个对象 - 简化无码收货流程中的订单验证和票据创建逻辑 - 优化循环结构,移除重复的订单查询操作 - 统一物料号匹配和二维码存在性检查的处理方式
This commit is contained in:
parent
e3b7642c6b
commit
23f0dd176b
|
|
@ -431,11 +431,13 @@ public class InProduceOrderController extends BaseController {
|
|||
.eq(StrUtil.isNotBlank(no), WmsInProduceOrder::getNo, no)
|
||||
.one();
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
|
||||
if (order.getState()==1){
|
||||
return ApiResult.success(Collections.emptyList());
|
||||
}
|
||||
List<WmsInProduceOrderItem> items = produceOrderItemService.lambdaQuery()
|
||||
.eq(WmsInProduceOrderItem::getOrderId, order.getId())
|
||||
.list();
|
||||
items.removeIf(item -> item.getNum().compareTo(BigDecimal.ZERO) <= 0
|
||||
|| noScanningBaseControllerService.existsQrCode(item.getMaterialNo()));
|
||||
items.removeIf(item -> noScanningBaseControllerService.existsQrCode(item.getMaterialNo()));
|
||||
return ApiResult.success(
|
||||
items.stream()
|
||||
.map(item -> new NoScanItemVO()
|
||||
|
|
|
|||
|
|
@ -433,48 +433,39 @@ public class InProduceOrderSurplusController extends BaseController {
|
|||
|
||||
/**
|
||||
* 无码收货和入库
|
||||
* @param requests 请求参数
|
||||
* @param request 请求参数
|
||||
*/
|
||||
@Transactional
|
||||
@PostMapping("receiveNoScanning")
|
||||
public ApiResult<Void> receiveNoScanning(@Valid @RequestBody @NotEmpty List<NoScanningRequest> requests) {
|
||||
public ApiResult<Void> receiveNoScanning(@Valid @RequestBody NoScanningRequest request) {
|
||||
List<InventoryInDTO> inventories = new ArrayList<>();
|
||||
Map<String, ZWM3A22Input1QO> input1Map = new LinkedHashMap<>();
|
||||
Map<String, ZWM3A22Input2QO> input2Map = new LinkedHashMap<>();
|
||||
Set<Long> orderIds = new HashSet<>();
|
||||
Set<String> warehouseNos = new HashSet<>();
|
||||
WmsInProduceOrderSurplusTicket ticket = null;
|
||||
List<WmsInProduceOrderSurplusItem> orderItemsToUpdate = new ArrayList<>();
|
||||
List<WmsInProduceOrderSurplusTicketItem> ticketItems = new ArrayList<>();
|
||||
WmsInProduceOrderSurplus order = null;
|
||||
|
||||
for (NoScanningRequest request : requests) {
|
||||
order = inProduceOrderSurplusService.lambdaQuery()
|
||||
WmsInProduceOrderSurplus order = inProduceOrderSurplusService.lambdaQuery()
|
||||
.eq(Objects.nonNull(request.getId()), WmsInProduceOrderSurplus::getId, request.getId())
|
||||
.eq(StrUtil.isNotBlank(request.getNo()), WmsInProduceOrderSurplus::getNo, request.getNo())
|
||||
.one();
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
|
||||
WmsInProduceOrderSurplus currentOrder = order;
|
||||
List<WmsInProduceOrderSurplusItem> orderItems = inProduceOrderSurplusItemService.lambdaQuery()
|
||||
.eq(WmsInProduceOrderSurplusItem::getOrderId, currentOrder.getId())
|
||||
.eq(WmsInProduceOrderSurplusItem::getOrderId, order.getId())
|
||||
.list();
|
||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(orderItems)).throwMessage("订单项不存在");
|
||||
Map<Long, WmsInProduceOrderSurplusItem> orderItemMap = orderItems.stream()
|
||||
.collect(Collectors.toMap(WmsInProduceOrderSurplusItem::getId, item -> item));
|
||||
orderIds.add(currentOrder.getId());
|
||||
VUtil.trueThrowBusinessError(orderIds.size() != 1).throwMessage("请一次只提交同一个订单的无码收货");
|
||||
warehouseNos.addAll(request.getItems().stream().map(NoScanningItemRequest::getWarehouseNo).collect(Collectors.toSet()));
|
||||
VUtil.trueThrowBusinessError(warehouseNos.size() != 1).throwMessage("请一次只提交同一个库存地点的无码收货");
|
||||
if (ticket == null) {
|
||||
ticket = new WmsInProduceOrderSurplusTicket()
|
||||
WmsInProduceOrderSurplusTicket ticket = new WmsInProduceOrderSurplusTicket()
|
||||
.setId(IdUtil.getSnowflakeNextId())
|
||||
.setNo(serialNumberControllerService.generateSerialNumber(25))
|
||||
.setOrderId(currentOrder.getId())
|
||||
.setOrderId(order.getId())
|
||||
.setLgort(warehouseNos.iterator().next())
|
||||
.setType(1)
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(LocalDateTime.now());
|
||||
}
|
||||
|
||||
for (NoScanningItemRequest item : request.getItems()) {
|
||||
WmsInProduceOrderSurplusItem orderItem = orderItemMap.get(item.getOrderItemId());
|
||||
|
|
@ -497,7 +488,7 @@ public class InProduceOrderSurplusController extends BaseController {
|
|||
item.getDatas().forEach(data -> {
|
||||
inventories.add(new InventoryInDTO()
|
||||
.setMaterialNo(orderItem.getMatnr())
|
||||
.setFactoryNo(currentOrder.getDwerk())
|
||||
.setFactoryNo(order.getDwerk())
|
||||
.setWarehouseNo(item.getWarehouseNo())
|
||||
.setBatchNo(StrUtil.blankToDefault(data.getBatchNo(), ""))
|
||||
.setSerialNo(StrUtil.blankToDefault(data.getSerialNo(), ""))
|
||||
|
|
@ -509,7 +500,7 @@ public class InProduceOrderSurplusController extends BaseController {
|
|||
.setRspos(orderItem.getRspos())
|
||||
.setMatnr(orderItem.getMatnr())
|
||||
.setMaktx(orderItem.getMaktx2())
|
||||
.setWerks(currentOrder.getDwerk())
|
||||
.setWerks(order.getDwerk())
|
||||
.setLgort(item.getWarehouseNo())
|
||||
.setMenge(data.getNum())
|
||||
.setMenge_t(BigDecimal.ZERO)
|
||||
|
|
@ -535,7 +526,6 @@ public class InProduceOrderSurplusController extends BaseController {
|
|||
.toList()))
|
||||
.setNum(totalNum));
|
||||
}
|
||||
}
|
||||
|
||||
inventoryService.in(mergeInventories(inventories));
|
||||
inProduceOrderSurplusItemService.updateBatchById(orderItemsToUpdate);
|
||||
|
|
|
|||
Loading…
Reference in New Issue