From 3217d6f977040632c116293dbe483e0d22712e81 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 13 十一月 2025 18:14:16 +0800
Subject: [PATCH] 拣货功能优化
---
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java | 407 ++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 299 insertions(+), 108 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 2d4054d..1d89aaa 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
@@ -6,24 +6,29 @@
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.entity.dto.ContainerWaveDto;
import com.vincent.rsf.server.api.entity.params.ContainerWaveParam;
+import com.vincent.rsf.server.api.entity.params.WavePickItemsParams;
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 com.vincent.rsf.server.system.entity.Fields;
+import com.vincent.rsf.server.system.entity.FieldsItem;
+import com.vincent.rsf.server.system.service.FieldsItemService;
+import com.vincent.rsf.server.system.service.FieldsService;
+import com.vincent.rsf.server.system.service.impl.FieldsItemServiceImpl;
+import com.vincent.rsf.server.system.service.impl.FieldsServiceImpl;
+import com.vincent.rsf.server.system.utils.SystemAuthUtils;
import lombok.Synchronized;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestBody;
import javax.annotation.Resource;
import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
import java.util.stream.Collectors;
@Service
@@ -41,17 +46,21 @@
private AsnOrderItemService asnOrderItemService;
@Autowired
private WaveOrderRelaService waveOrderRelaService;
+ @Autowired
+ private FieldsItemService fieldsItemService;
+ @Autowired
+ private FieldsService fieldsService;
@Override
public R getOutStockTaskItem(String barcode) {
LambdaQueryWrapper<Task> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(Task::getBarcode, barcode);
Task task = taskService.getOne(lambdaQueryWrapper);
- if (null == task){
+ if (null == task) {
return R.error("鏈煡璇㈠埌鐩稿叧浠诲姟");
}
List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
- if (null == taskItems || taskItems.size() <= 0){
+ if (null == taskItems || taskItems.size() <= 0) {
return R.error("浠诲姟鍑洪敊锛屾湭鏌ヨ鍒扮浉鍏充换鍔℃槑缁�");
}
@@ -64,22 +73,22 @@
LambdaQueryWrapper<Task> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(Task::getBarcode, barcode);
Task task = taskService.getOne(lambdaQueryWrapper);
- if (null == task){
+ if (null == task) {
throw new CoolException("鏈壘鍒板鍣ㄥ彿瀵瑰簲浠诲姟");
}
- if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)){
+ 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("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�");
- }
+ WkOrderItem orderItem = asnOrderItemService.getById(key);
+ if (Objects.isNull(orderItem)) {
+ throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�");
+ }
});
task.setTaskStatus(TaskStsType.COMPLETE_OUT.id);
- if (!taskService.updateById(task)){
+ if (!taskService.updateById(task)) {
return R.error("鏇存柊浠诲姟鐘舵�佸け璐�");
}
@@ -89,7 +98,7 @@
@Override
public R getWaveListItem(String barcode) {
LambdaQueryWrapper<Wave> lambdaQueryWrapper = new LambdaQueryWrapper<>();
- lambdaQueryWrapper.eq(!Cools.isEmpty(barcode),Wave::getCode,barcode);
+ lambdaQueryWrapper.eq(!Cools.isEmpty(barcode), Wave::getCode, barcode);
List<Wave> waveList = waveService.list(lambdaQueryWrapper);
return R.ok(waveList);
}
@@ -97,137 +106,319 @@
@Override
public R getContainerWaveList(Map<String, String> map) {
String barcode = map.get("barcode");
-
- if (Cools.isEmpty(barcode) ){
+ if (Cools.isEmpty(barcode)) {
throw new CoolException("鍙傛暟鏈夎");
}
Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, barcode));
- if (null == task){
+ if (null == task) {
throw new CoolException("鏈壘鍒板鍣ㄥ彿瀵瑰簲浠诲姟");
}
- if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)){
+ 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()));
- for (TaskItem taskItem : taskItems) {
- ContainerWaveDto containerWaveDto = new ContainerWaveDto();
- containerWaveDto.setTaskItem(taskItem);
- Wave wave = waveService.getById(taskItem.getSourceId());
- if (null == wave){
- throw new CoolException("鏈壘鍒板鍣ㄥ彿瀵瑰簲娉㈡");
- }
- List<WaveOrderRela> waveOrderRelas = waveOrderRelaService.list(new LambdaQueryWrapper<WaveOrderRela>().eq(WaveOrderRela::getWaveId, wave.getId()));
- if (Cools.isEmpty(waveOrderRelas)){
- throw new CoolException("娉㈡瀵瑰簲鍏宠仈鍗曟湭鎵惧埌");
- }
- List<Long> ids = waveOrderRelas.stream().map(WaveOrderRela::getOrderId).collect(Collectors.toList());
- ArrayList<AsnOrderItem> list = new ArrayList<>();
- List<AsnOrder> asnOrderList = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().in(AsnOrder::getId, ids));
- for (AsnOrder asnOrder : asnOrderList) {
- AsnOrderItem orderItem = asnOrderItemService.getOne(new LambdaQueryWrapper<AsnOrderItem>()
- .eq(AsnOrderItem::getAsnId, asnOrder.getId())
- .eq(AsnOrderItem::getMatnrCode, taskItem.getMatnrCode())
- .eq(AsnOrderItem::getSplrBatch, taskItem.getBatch())
- );
- if (null != orderItem){
- list.add(orderItem);
- }
-
-
- }
- containerWaveDto.setAsnOrderItems(list);
- containerWaveDtos.add(containerWaveDto);
+ Set<Long> longSet = taskItems.stream().map(TaskItem::getSourceId).collect(Collectors.toSet());
+ List<WaveOrderRela> waveOrderRelas = waveOrderRelaService.list(new LambdaQueryWrapper<WaveOrderRela>()
+ .in(WaveOrderRela::getWaveId, longSet));
+ if (Cools.isEmpty(waveOrderRelas)) {
+ throw new CoolException("娉㈡瀵瑰簲鍏宠仈鍗曟湭鎵惧埌");
}
+ Set<Long> orderIds = waveOrderRelas.stream().map(WaveOrderRela::getOrderId).collect(Collectors.toSet());
+ List<WkOrder> wkOrders = asnOrderService.listByIds(orderIds);
+ if (wkOrders.isEmpty()) {
+ throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
+ }
+ Set<String> codes = taskItems.stream().map(TaskItem::getMatnrCode).collect(Collectors.toSet());
+ List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
+ .in(WkOrderItem::getMatnrCode, codes)
+ .in(WkOrderItem::getOrderId, orderIds));
- return R.ok(containerWaveDtos);
+ return R.ok("鏌ヨ鎴愬姛").add(orderItems);
+
+// ArrayList<ContainerWaveDto> containerWaveDtos = new ArrayList<>();
+//// List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
+// for (TaskItem taskItem : taskItems) {
+// ContainerWaveDto containerWaveDto = new ContainerWaveDto();
+// containerWaveDto.setTaskItem(taskItem);
+// Wave wave = waveService.getById(taskItem.getSourceId());
+// if (null == wave) {
+// throw new CoolException("鏈壘鍒板鍣ㄥ彿瀵瑰簲娉㈡");
+// }
+// List<WaveOrderRela> waveOrderRelas = waveOrderRelaService.list(new LambdaQueryWrapper<WaveOrderRela>()
+// .eq(WaveOrderRela::getWaveId, wave.getId()));
+// if (Cools.isEmpty(waveOrderRelas)) {
+// throw new CoolException("娉㈡瀵瑰簲鍏宠仈鍗曟湭鎵惧埌");
+// }
+// Set<Long> ids = waveOrderRelas.stream().map(WaveOrderRela::getOrderId).collect(Collectors.toSet());
+// ArrayList<WkOrderItem> list = new ArrayList<>();
+// List<WkOrder> wkOrderList = asnOrderService.list(new LambdaQueryWrapper<WkOrder>().in(WkOrder::getId, ids));
+// for (WkOrder wkOrder : wkOrderList) {
+// List<WkOrderItem> orderItem = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
+// .eq(WkOrderItem::getOrderId, wkOrder.getId())
+// .eq(StringUtils.isNotEmpty(taskItem.getMatnrCode()), WkOrderItem::getMatnrCode, taskItem.getMatnrCode())
+// .eq(StringUtils.isNotEmpty(taskItem.getBatch()), WkOrderItem::getSplrBatch, taskItem.getBatch()));
+// if (null != orderItem) {
+// list.addAll(orderItem);
+// }
+// }
+// containerWaveDto.setWkOrderItems(list);
+// containerWaveDtos.add(containerWaveDto);
+// }
+// return R.ok("鏌ヨ鎴愬姛").add(wkOrders);
}
+ /**
+ * @author Ryan
+ * @date 2025/11/13
+ * @description: 鑾峰彇娉㈡鎷h揣鏄庣粏
+ * @version 1.0
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R getWaveOrderItems(Map<String, Object> param) {
+ if (Objects.isNull(param)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ if (Objects.isNull(param.get("fieldsIndex"))) {
+ return R.error("绁ㄥ彿涓嶈兘涓虹┖锛侊紒");
+ }
+ if (Objects.isNull(param.get("barcode"))) {
+ return R.error("瀹瑰櫒鍙蜂笉鑳戒负绌猴紒锛�");
+ }
+ if (Objects.isNull(param.get("orderId"))) {
+ return R.error("璁㈠崟ID涓嶈兘涓虹┖锛侊紒");
+ }
+ Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, param.get("barcode").toString()));
+ if (Objects.isNull(task)) {
+ throw new CoolException("鏁版嵁閿欒锛屼换鍔℃。宸蹭笉瀛樺湪锛侊紒");
+ }
+ FieldsItem fieldsItem = fieldsItemService.getOne(new LambdaQueryWrapper<FieldsItem>()
+ .eq(FieldsItem::getValue, param.get("fieldsIndex").toString())
+ .last("limit 1"));
+ if (Objects.isNull(fieldsItem)) {
+ return R.error("鏁版嵁閿欒锛岀エ鍙蜂笉瀛樺湪锛侊紒");
+ }
+ TaskItem taskItem = taskItemService.getOne(new LambdaQueryWrapper<TaskItem>()
+ .eq(TaskItem::getFieldsIndex, fieldsItem.getUuid())
+ .eq(TaskItem::getTaskId, task.getId()));
+ if (Objects.isNull(taskItem)) {
+ return R.error("鏁版嵁閿欒锛屼换鍔℃。鏄庣粏涓嶅瓨鍦紒锛�");
+ }
+// Long orderId = Long.valueOf(param.get("orderId").toString());
+// List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, orderId));
+// if (orderItems.isEmpty()) {
+// return R.error("鏁版嵁閿欒锛岃鍗曟暟鎹笉瀛樺湪锛侊紒");
+// }
+ //鏍规嵁绱㈠紩鑾峰彇鍔ㄦ�佸瓧娈礦alue鍊�
+ Map<String, String> fields = new HashMap<>();
+ Fields fields1 = fieldsService.getById(fieldsItem.getFieldsId());
+ fields.put(fields1.getFields(), fieldsItem.getValue());
+ taskItem.setExtendFields(fields);
+
+ return R.ok().add(taskItem);
+ }
+
+ /**
+ * @author Ryan
+ * @date 2025/11/13
+ * @description: 娉㈡鏄庣粏鎷h揣
+ * @version 1.0
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R wavePickItems(WavePickItemsParams params) {
+ if (Objects.isNull(params.getBarcode())) {
+ return R.error("鎵樼洏鐮佷笉鑳戒负绌猴紒锛�");
+ }
+ if (Objects.isNull(params.getOrderId())) {
+ return R.error("璁㈠崟ID涓嶈兘涓虹┖锛侊紒");
+ }
+ if (Objects.isNull(params.getTaskItems()) || params.getTaskItems().isEmpty()) {
+ return R.error("鎷h揣鏄庣粏涓嶈兘涓虹┖锛�");
+ }
+ Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, params.getBarcode()));
+ if (null == task) {
+ return R.error("鏈壘鍒版墭鐩樺搴旂殑浠诲姟");
+ }
+ if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)) {
+ return R.error("浠诲姟鐘舵�佷笉鏄瓑寰呯‘璁�");
+ }
+ WkOrder order = asnOrderService.getById(params.getOrderId());
+ if (Objects.isNull(order)) {
+ return R.error("鍗曟嵁淇℃伅涓嶅瓨鍦紒锛�");
+ }
+ List<TaskItem> taskItems = params.getTaskItems();
+ Map<String, List<TaskItem>> listMap = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getMatnrCode));
+ listMap.keySet().forEach(code -> {
+ List<TaskItem> items = listMap.get(code);
+ //涓�寮犲嚭搴撳崟锛岀浉鍚岀殑鍝佺涓嶄細鍑虹幇涓ゆ
+ WkOrderItem orderItem = asnOrderItemService.getOne(new LambdaQueryWrapper<WkOrderItem>()
+ .eq(WkOrderItem::getMatnrCode, code)
+ .eq(WkOrderItem::getOrderId, order.getId()));
+ if (Objects.isNull(orderItem)) {
+ throw new CoolException("鏁版嵁閿欒锛屾嫞鏂欎笉鍦ㄥ崟鎹渶姹備腑锛侊紒");
+ }
+ Double summed = items.stream().mapToDouble(TaskItem::getAnfme).sum();
+ //鍔犱笂鍘嗗彶鎷f枡鏁伴噺
+ Double pickQty = Math.round((orderItem.getQty() + summed) * 10000) / 10000.0;
+ if (pickQty.compareTo(orderItem.getAnfme()) > 0.0) {
+ throw new CoolException("鎾鏁伴噺涓嶈兘瓒呭嚭璁㈠崟闇�姹傛暟閲�");
+ }
+ orderItem.setQty(pickQty);
+
+ if (!asnOrderItemService.updateById(orderItem)) {
+ throw new CoolException("鍑哄簱鍗曟槑缁嗘洿鏂板け璐ワ紒锛�");
+ }
+
+ items.forEach(taskItem -> {
+ taskItem.setQty(taskItem.getAnfme());
+ if (!taskItemService.updateById(taskItem)) {
+ throw new CoolException("鐘舵�佸畬鎴愬け璐ワ紒锛�");
+ }
+ });
+ });
+
+ List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, params.getOrderId()));
+ double total = orderItems.stream().mapToDouble(WkOrderItem::getQty).sum();
+ double wkQty = orderItems.stream().mapToDouble(WkOrderItem::getWorkQty).sum();
+ order.setQty(total).setWorkQty(order.getWorkQty() - wkQty);
+ if (!asnOrderService.updateById(order)) {
+ throw new CoolException("璁㈠崟鏁伴噺鏇存柊澶辫触锛侊紒");
+ }
+ //妫�鏌ュ崟鎹槸鍚﹀畬鎴�
+ if (order.getAnfme().compareTo(order.getQty()) == 0) {
+ order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val);
+ if (!asnOrderService.updateById(order)) {
+ throw new CoolException("鍑哄簱鍗曟洿鏂扮姸鎬佸け璐�");
+ }
+ }
+
+ return R.ok();
+ }
+
+ /**
+ * @author Ryan
+ * @date 2025/11/5
+ * @description: 娉㈡鎷h揣
+ * @version 1.0
+ */
@Override
@Transactional(rollbackFor = Exception.class)
@Synchronized
public R saveWavePick(ContainerWaveParam containerWaveParam, Long loginUserId) {
- if (null == containerWaveParam || containerWaveParam.getContainerWaveDtos().size() <= 0){
+ if (null == containerWaveParam ) {
return R.error("鍙傛暟閿欒");
}
- Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode,containerWaveParam.getContainer()));
- if (null == task){
+ List<WkOrderItem> orderItems = containerWaveParam.getContainerWaveDtos();
+ if (Objects.isNull(orderItems) || orderItems.isEmpty()) {
+ return R.error("鏁版嵁閿欒锛侊紒");
+ }
+
+ 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)){
+ if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)) {
return R.error("浠诲姟鐘舵�佷笉鏄瓑寰呯‘璁�");
}
- for (ContainerWaveDto containerWaveDto : containerWaveParam.getContainerWaveDtos()) {
- //鍋氫竴娆℃牎楠岋紝鍒ゆ柇鍓嶇鎵�鏈夊嚭搴撴暟閲忔槸鍚﹁秴杩囨湰鎵樺嚭搴撴暟閲�
- double sum = containerWaveDto.getAsnOrderItems().stream().mapToDouble(AsnOrderItem::getDemandQty).sum();
- BigDecimal total = new BigDecimal(String.valueOf(sum));
- BigDecimal anfme = new BigDecimal(containerWaveDto.getTaskItem().getAnfme().toString());
- if (!anfme.equals(total)){
- throw new CoolException("鎾鏁伴噺涓嶇瓑浜庡鍣ㄥ嚭搴撴暟閲忥紝璇锋鏌�");
+ List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
+ taskItems.forEach(taskItem -> {
+ if (!(taskItem.getQty().compareTo(taskItem.getAnfme()) == 0)) {
+ throw new CoolException("鏈夊崟鎹墿鏂欐湭鎷o紝璇锋嫞瀹屽悗鍐嶇‘璁わ紒锛�");
+ }
+ });
+
+ orderItems.forEach(orderItem -> {
+ try {
+ taskService.saveOutStockItem(taskItems, orderItem, null, null, SystemAuthUtils.getLoginUserId());
+ } catch (Exception e) {
+ throw new RuntimeException(e);
}
- for (AsnOrderItem oldOrderItem : containerWaveDto.getAsnOrderItems()) {
- AsnOrderItem orderItem = asnOrderItemService.getById(oldOrderItem.getId());
- if (Double.compare(orderItem.getDemandQty(), 0.0) == 0) {
- continue;
- }
- BigDecimal num = new BigDecimal(orderItem.getWorkQty().toString()).subtract(new BigDecimal(orderItem.getQty().toString()));
- BigDecimal orderDemandQty = new BigDecimal(orderItem.getDemandQty().toString());
- if (num.compareTo(orderDemandQty) < 0){
- throw new CoolException("鎾鏁伴噺澶т簬鍗曟嵁鍑哄簱鏁伴噺锛岃妫�鏌�");
- }
- orderItem.setQty(new BigDecimal(orderItem.getQty().toString()).add(orderDemandQty).doubleValue());
- if (!asnOrderItemService.updateById(orderItem)){
- throw new CoolException("鍗曟嵁鏄庣粏鏇存柊澶辫触");
- }
- //妫�鏌ュ崟鎹槸鍚﹀畬鎴�
- Boolean orderChecked = checkOrderComplete(orderItem);
- if (orderChecked){
- AsnOrder asnOrder = asnOrderService.getById(orderItem.getAsnId());
- if (Cools.isEmpty(asnOrder)){
- throw new CoolException("鍑哄簱鍗曚富鍗曟湭鎵惧埌");
- }
- asnOrder.setQty(new BigDecimal(asnOrder.getQty().toString()).add(orderDemandQty).doubleValue());
- asnOrder.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val);
- if (!asnOrderService.updateById(asnOrder)){
- throw new CoolException("鍑哄簱鍗曟洿鏂扮姸鎬佸け璐�");
- }
- }
- }
- //妫�鏌ユ尝娆℃槸鍚﹀畬鎴�
-// Boolean waveChecked = checkWaveComplete(containerWaveDto.getTaskItem());
-// if (waveChecked){
-// Wave wave = waveService.getById(containerWaveDto.getTaskItem().getSourceId());
-// if (null == wave){
-// throw new CoolException("鏈壘鍒板鍣ㄥ彿瀵瑰簲娉㈡");
+ });
+
+// containerWaveParam.getOrderItems().forEach(orderItem -> {
+//
+// });
+// for (ContainerWaveDto containerWaveDto : containerWaveParam.getContainerWaveDtos()) {
+// //鍋氫竴娆℃牎楠岋紝鍒ゆ柇鍓嶇鎵�鏈夊嚭搴撴暟閲忔槸鍚﹁秴杩囨湰鎵樺嚭搴撴暟閲�
+// double sum = containerWaveDto.getWkOrderItems().stream().mapToDouble(WkOrderItem::getDemandQty).sum();
+// BigDecimal total = new BigDecimal(String.valueOf(sum));
+// BigDecimal anfme = new BigDecimal(containerWaveDto.getTaskItem().getAnfme().toString());
+// if (!anfme.equals(total)) {
+// throw new CoolException("鎾鏁伴噺涓嶇瓑浜庡鍣ㄥ嚭搴撴暟閲忥紝璇锋鏌�");
+// }
+// for (WkOrderItem oldOrderItem : containerWaveDto.getWkOrderItems()) {
+// if (Double.compare(oldOrderItem.getDemandQty(), 0.0) == 0) {
+// continue;
// }
-// wave.setExceStatus(WaveExceStatus.WAVE_EXCE_STATUS_TASK.val);
-// if (!waveService.updateById(wave)){
-// throw new CoolException("娉㈡鍗曟洿鏂扮姸鎬佸け璐�");
+// WkOrderItem orderItem = asnOrderItemService.getById(oldOrderItem.getId());
+// BigDecimal num = new BigDecimal(orderItem.getWorkQty().toString()).subtract(new BigDecimal(orderItem.getQty().toString()));
+// BigDecimal orderDemandQty = new BigDecimal(oldOrderItem.getDemandQty().toString());
+// if (num.compareTo(orderDemandQty) < 0) {
+// throw new CoolException("鎾鏁伴噺澶т簬鍗曟嵁鍑哄簱鏁伴噺锛岃妫�鏌�");
+// }
+// WkOrder wkOrder = asnOrderService.getById(orderItem.getOrderId());
+// if (Cools.isEmpty(wkOrder)) {
+// throw new CoolException("鍑哄簱鍗曚富鍗曟湭鎵惧埌");
+// }
+// wkOrder.setQty(new BigDecimal(wkOrder.getQty().toString()).add(orderDemandQty).doubleValue());
+// if (!asnOrderService.updateById(wkOrder)) {
+// throw new CoolException("鍑哄簱鍗曟洿鏂扮姸鎬佸け璐�");
+// }
+//
+// if (Objects.isNull(oldOrderItem.getFieldsIndex())) {
+// throw new CoolException("绁ㄥ彿涓嶈兘涓虹┖锛侊紒");
+// }
+// //Fix 杩欓噷鍙拡瀵瑰笇鏃ラ」鐩殑绁ㄥ彿鍔熻兘锛岀エ鍙峰拰uuid涓轰竴瀵逛竴鐨勬儏鍐碉紝涓嶄細鍑虹幇閲嶅鐨勬儏鍐�
+// FieldsItem fieldsItem = fieldsItemService.getOne(new LambdaQueryWrapper<FieldsItem>().eq(FieldsItem::getValue, oldOrderItem.getFieldsIndex()).last("limit 1"));
+// if (!Objects.isNull(fieldsItem)) {
+// orderItem.setFieldsIndex(fieldsItem.getUuid());
+// }
+// orderItem.setQty(new BigDecimal(orderItem.getQty().toString()).add(orderDemandQty).doubleValue());
+// if (!asnOrderItemService.updateById(orderItem)) {
+// throw new CoolException("鍗曟嵁鏄庣粏鏇存柊澶辫触");
+// }
+// //妫�鏌ュ崟鎹槸鍚﹀畬鎴�
+// Boolean orderChecked = checkOrderComplete(orderItem);
+// if (orderChecked) {
+// wkOrder.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val);
+// if (!asnOrderService.updateById(wkOrder)) {
+// throw new CoolException("鍑哄簱鍗曟洿鏂扮姸鎬佸け璐�");
+// }
// }
// }
-
- }
+// //妫�鏌ユ尝娆℃槸鍚﹀畬鎴�
+//// Boolean waveChecked = checkWaveComplete(containerWaveDto.getTaskItem());
+//// if (waveChecked){
+//// Wave wave = waveService.getById(containerWaveDto.getTaskItem().getSourceId());
+//// if (null == wave){
+//// throw new CoolException("鏈壘鍒板鍣ㄥ彿瀵瑰簲娉㈡");
+//// }
+//// wave.setExceStatus(WaveExceStatus.WAVE_EXCE_STATUS_TASK.val);
+//// if (!waveService.updateById(wave)){
+//// throw new CoolException("娉㈡鍗曟洿鏂扮姸鎬佸け璐�");
+//// }
+//// }
+// }
task.setTaskStatus(TaskStsType.COMPLETE_OUT.id);
- if (!taskService.updateById(task)){
+ if (!taskService.updateById(task)) {
throw new CoolException("浠诲姟鐘舵�佹洿鏂板け璐�");
}
-
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()));
- return asnOrderList.stream().allMatch(item -> new BigDecimal(item.getAnfme().toString()).equals(new BigDecimal(item.getQty().toString())));
+ List<WkOrder> wkOrderList = asnOrderService.list(new LambdaQueryWrapper<WkOrder>().eq(WkOrder::getWaveId, wave.getId()));
+ return wkOrderList.stream().allMatch(item -> new BigDecimal(item.getAnfme().toString()).equals(new BigDecimal(item.getQty().toString())));
}
- private Boolean checkOrderComplete(AsnOrderItem orderItem) {
- List<AsnOrderItem> asnOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnCode, orderItem.getAsnCode()));
- return asnOrderItems.stream().allMatch(item -> new BigDecimal(item.getAnfme().toString()).equals(new BigDecimal(item.getQty().toString())));
+ private Boolean checkOrderComplete(WkOrderItem orderItem) {
+ List<WkOrderItem> wkOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderCode, orderItem.getOrderCode()));
+ return wkOrderItems.stream().allMatch(item -> new BigDecimal(item.getAnfme().toString()).equals(new BigDecimal(item.getQty().toString())));
}
}
--
Gitblit v1.9.1