From 2e550be60b3bbd14a61695489ec1fc242fd0e38a Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期三, 25 六月 2025 13:22:19 +0800 Subject: [PATCH] #出库完成变为等待确认 --- rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 40 insertions(+), 3 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java index ea902c4..58fe8c0 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java @@ -9,9 +9,11 @@ import com.vincent.rsf.server.api.service.PdaOutStockService; import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.enums.AsnExceStatus; +import com.vincent.rsf.server.manager.enums.TaskResouceType; import com.vincent.rsf.server.manager.enums.TaskStsType; import com.vincent.rsf.server.manager.enums.WaveExceStatus; import com.vincent.rsf.server.manager.service.*; +import lombok.Synchronized; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -22,6 +24,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; @Service public class PdaOutStockServiceImpl implements PdaOutStockService { @@ -55,6 +58,33 @@ } @Override + public R saveOutTaskSts(String barcode) { + LambdaQueryWrapper<Task> lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(Task::getBarcode, barcode); + Task task = taskService.getOne(lambdaQueryWrapper); + if (null == task){ + throw new CoolException("鏈壘鍒板鍣ㄥ彿瀵瑰簲浠诲姟"); + } + if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)){ + return R.error("浠诲姟鐘舵�佷笉鏄瓑寰呯‘璁�"); + } + List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId())); + Map<Long, List<TaskItem>> maps = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getSource)); + maps.keySet().forEach(key -> { + AsnOrderItem orderItem = asnOrderItemService.getById(key); + if (Objects.isNull(orderItem)) { + throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�"); + } + }); + task.setTaskStatus(TaskStsType.COMPLETE_OUT.id); + if (!taskService.updateById(task)){ + return R.error("鏇存柊浠诲姟鐘舵�佸け璐�"); + } + + return R.ok("纭鎴愬姛"); + } + + @Override public R getWaveListItem(String barcode) { LambdaQueryWrapper<Wave> lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(!Cools.isEmpty(barcode),Wave::getCode,barcode); @@ -73,8 +103,8 @@ if (null == task){ throw new CoolException("鏈壘鍒板鍣ㄥ彿瀵瑰簲浠诲姟"); } - if (task.getTaskStatus().equals(TaskStsType.COMPLETE_OUT.id)){ - throw new CoolException("褰撳墠鐘舵�佷负涓嶅彲鎷h揣鐘舵��"); + if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)){ + return R.error("浠诲姟鐘舵�佷笉鏄瓑寰呯‘璁�"); } ArrayList<ContainerWaveDto> containerWaveDtos = new ArrayList<>(); List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId())); @@ -108,6 +138,7 @@ @Override @Transactional(rollbackFor = Exception.class) + @Synchronized public R saveWavePick(ContainerWaveParam containerWaveParam, Long loginUserId) { if (null == containerWaveParam || containerWaveParam.getContainerWaveDtos().size() <= 0){ return R.error("鍙傛暟閿欒"); @@ -115,6 +146,9 @@ Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode,containerWaveParam.getContainer())); if (null == task){ return R.error("鏈壘鍒版墭鐩樺搴旂殑浠诲姟"); + } + if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)){ + return R.error("浠诲姟鐘舵�佷笉鏄瓑寰呯‘璁�"); } for (ContainerWaveDto containerWaveDto : containerWaveParam.getContainerWaveDtos()) { @@ -125,7 +159,8 @@ if (!anfme.equals(total)){ throw new CoolException("鎾鏁伴噺涓嶇瓑浜庡鍣ㄥ嚭搴撴暟閲忥紝璇锋鏌�"); } - for (AsnOrderItem orderItem : containerWaveDto.getAsnOrderItems()) { + for (AsnOrderItem oldOrderItem : containerWaveDto.getAsnOrderItems()) { + AsnOrderItem orderItem = asnOrderItemService.getById(oldOrderItem.getId()); if (Double.compare(orderItem.getDemandQty(), 0.0) == 0) { continue; } @@ -175,6 +210,8 @@ return R.ok(); } + + private Boolean checkWaveComplete(TaskItem taskItem) { Wave wave = waveService.getById(taskItem.getSourceId()); List<AsnOrder> asnOrderList = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getWaveId, wave.getId())); -- Gitblit v1.9.1