|
|
@@ -18,6 +18,7 @@ import com.ruoyi.wms.service.*;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.HashMap;
|
|
|
@@ -47,6 +48,8 @@ public class WmsTaskServiceImpl extends ServiceImpl<WmsTaskMapper, WmsTask>
|
|
|
|
|
|
private final ShipmentOrderDetailService shipmentOrderDetailService;
|
|
|
|
|
|
+ private final WmsFinishedProductCostService wmsFinishedProductCostService;
|
|
|
+
|
|
|
@Override
|
|
|
public void addTask(TaskAddDto taskAddDto) {
|
|
|
// 生成任务单
|
|
|
@@ -61,6 +64,7 @@ public class WmsTaskServiceImpl extends ServiceImpl<WmsTaskMapper, WmsTask>
|
|
|
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void complete(String id) {
|
|
|
WmsTask wmsTask = this.getById(id);
|
|
|
Assert.notNull(wmsTask, "任务单不存在");
|
|
|
@@ -70,11 +74,15 @@ public class WmsTaskServiceImpl extends ServiceImpl<WmsTaskMapper, WmsTask>
|
|
|
|
|
|
// 任务明细
|
|
|
List<WmsTaskDetails> wmsTaskDetails = wmsTaskDetailsService.lambdaQuery().eq(WmsTaskDetails::getTaskId, wmsTask.getId()).list();
|
|
|
- Map<Long, Integer> versionMap = wmsTaskDetails.stream().collect(Collectors.toMap(WmsTaskDetails::getVersionId, WmsTaskDetails::getQuantity));
|
|
|
+ Map<Long, WmsTaskDetails> versionMap = wmsTaskDetails.stream().collect(Collectors.toMap(WmsTaskDetails::getVersionId, x->x));
|
|
|
|
|
|
// BOM明细
|
|
|
List<WmsBomItem> wmsBomItems = wmsBomItemService.lambdaQuery().in(WmsBomItem::getVersionId, versionMap.keySet()).list();
|
|
|
List<Long> itemSkuIdList = wmsBomItems.stream().map(WmsBomItem::getItemSkuId).toList();
|
|
|
+
|
|
|
+ // 成本计算
|
|
|
+ wmsFinishedProductCostService.costCalculation(versionMap, wmsBomItems, itemSkuIdList);
|
|
|
+
|
|
|
// 库存
|
|
|
List<Inventory> inventoryList = inventoryService.lambdaQuery()
|
|
|
.eq(Inventory::getSkuId, itemSkuIdList)
|
|
|
@@ -85,12 +93,10 @@ public class WmsTaskServiceImpl extends ServiceImpl<WmsTaskMapper, WmsTask>
|
|
|
|
|
|
// 出库单
|
|
|
Map<Long, ShipmentOrder> shipmentOrderMap = new HashMap<>();
|
|
|
-
|
|
|
Map<String, ShipmentOrderDetail> shipmentOrderDetailMap = new HashMap<>();
|
|
|
|
|
|
// 汇总出库原料
|
|
|
Map<Long, UnitPo> bomItemQuantityMap = getLongBigDecimalMap(wmsBomItems, versionMap);
|
|
|
-
|
|
|
for (Long skuId : bomItemQuantityMap.keySet()) {
|
|
|
List<Inventory> inventories = inventoryMap.get(skuId);
|
|
|
|
|
|
@@ -145,12 +151,12 @@ public class WmsTaskServiceImpl extends ServiceImpl<WmsTaskMapper, WmsTask>
|
|
|
}
|
|
|
|
|
|
@NotNull
|
|
|
- private static Map<Long, UnitPo> getLongBigDecimalMap(List<WmsBomItem> wmsBomItems, Map<Long, Integer> versionMap) {
|
|
|
+ private static Map<Long, UnitPo> getLongBigDecimalMap(List<WmsBomItem> wmsBomItems, Map<Long, WmsTaskDetails> versionMap) {
|
|
|
Map<Long, UnitPo> bomItemQuantityMap = new HashMap<>();
|
|
|
for (WmsBomItem wmsBomItem : wmsBomItems) {
|
|
|
UnitPo unitPo = bomItemQuantityMap.get(wmsBomItem.getItemSkuId());
|
|
|
- Integer i = versionMap.get(wmsBomItem.getVersionId());
|
|
|
- BigDecimal add = wmsBomItem.getBaseQuantity().add(new BigDecimal(i));
|
|
|
+ WmsTaskDetails wmsTaskDetails = versionMap.get(wmsBomItem.getVersionId());
|
|
|
+ BigDecimal add = wmsBomItem.getBaseQuantity().add(new BigDecimal(wmsTaskDetails.getQuantity()));
|
|
|
if (unitPo == null) {
|
|
|
bomItemQuantityMap.put(wmsBomItem.getItemSkuId(), new UnitPo(wmsBomItem.getBaseUnit(), add));
|
|
|
} else {
|