Browse Source

一键包装

24282 1 year ago
parent
commit
d97cac139b

+ 14 - 39
sd-business/src/main/java/com/sd/business/service/production/impl/ProductionOrderServiceImpl.java

@@ -18,7 +18,6 @@ import com.sd.business.entity.production.po.ProductionTask;
 import com.sd.business.entity.production.vo.ProductionOrderDetailVo;
 import com.sd.business.entity.production.vo.ProductionOrderScheduleVo;
 import com.sd.business.entity.production.vo.ProductionOrderVo;
-import com.sd.business.entity.sku.po.SkuSpecLink;
 import com.sd.business.mapper.production.ProductionOrderMapper;
 import com.sd.business.service.bom.BomSpecService;
 import com.sd.business.service.order.OrderPackageBomService;
@@ -34,8 +33,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.math.BigDecimal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -125,7 +125,7 @@ public class ProductionOrderServiceImpl implements ProductionOrderService {
         Assert.notNull(id, "订单id不能为空");
 
         List<ProductionOrderDetailVo.SkuSpec> skuSpecList = getSkuSpecList(id);
-        List<ProductionOrderDetailVo.OrderPackage> packageList = getPackageList(skuSpecList);
+        List<ProductionOrderDetailVo.OrderPackage> packageList = getPackageList(id);
 
         ProductionOrderDetailVo vo = new ProductionOrderDetailVo();
         vo.setSkuSpecList(skuSpecList);
@@ -143,7 +143,7 @@ public class ProductionOrderServiceImpl implements ProductionOrderService {
 
         List<OrderPackageBom> orderPackageBomList = dto.getPackageList();
         orderPackageBomList.forEach(item -> item.setOrderId(orderId));
-        orderPackageBomService.saveBatch(orderPackageBomList);
+        orderPackageBomService.editLinked(orderPackageBomList, OrderPackageBom::getOrderId, orderId);
 
         Date date = new Date();
         orderService.update(q -> q
@@ -186,41 +186,16 @@ public class ProductionOrderServiceImpl implements ProductionOrderService {
         return skuSpecList;
     }
 
-    private List<ProductionOrderDetailVo.OrderPackage> getPackageList(List<ProductionOrderDetailVo.SkuSpec> skuSpecList) {
-        // 订单sku规格id 数量map
-        Map<Long, BigDecimal> map = skuSpecList.stream().collect(Collectors.toMap(
-                ProductionOrderDetailVo.SkuSpec::getSkuSpecId,
-                ProductionOrderDetailVo.SkuSpec::getQuantity
-        ));
-
-        // 获取订单sku规格包装列表
-        List<SkuSpecLink> list = skuSpecLinkService.list(q -> q
-                .eq(SkuSpecLink::getType, 2)
-                .eq(SkuSpecLink::getDepartmentId, SecurityUtils.getDeptId())
-                .in(SkuSpecLink::getSkuSpecId, map.keySet())
-        );
-
-        if (list.size() == 0) {
-            return Collections.emptyList();
-        }
+    private List<ProductionOrderDetailVo.OrderPackage> getPackageList(Long orderId) {
+
+        List<OrderPackageBom> list = orderPackageBomService.list(q -> q.eq(OrderPackageBom::getOrderId, orderId));
 
-        // 同一包装合并数量
-        List<ProductionOrderDetailVo.OrderPackage> orderPackageList = new ArrayList<>(list.stream()
-                .map(item -> {
-                    ProductionOrderDetailVo.OrderPackage orderPackage = new ProductionOrderDetailVo.OrderPackage();
-                    BigDecimal quantity = map.get(item.getSkuSpecId());
-                    orderPackage.setBomSpecId(item.getBomSpecId());
-                    orderPackage.setQuantity(item.getQuantity().multiply(quantity));
-                    return orderPackage;
-                })
-                .collect(Collectors.toMap(
-                        ProductionOrderDetailVo.OrderPackage::getBomSpecId,
-                        Function.identity(),
-                        (v1, v2) -> {
-                            v1.setQuantity(v1.getQuantity().add(v2.getQuantity()));
-                            return v1;
-                        }
-                )).values());
+        List<ProductionOrderDetailVo.OrderPackage> orderPackageList = list.stream().map(item -> {
+            ProductionOrderDetailVo.OrderPackage orderPackage = new ProductionOrderDetailVo.OrderPackage();
+            orderPackage.setBomSpecId(item.getBomSpecId());
+            orderPackage.setQuantity(item.getQuantity());
+            return orderPackage;
+        }).collect(Collectors.toList());
 
         // 赋值品名 品号 销售单价 成本价
         bomSpecService.attributeAssign(orderPackageList, ProductionOrderDetailVo.OrderPackage::getBomSpecId, (item, bomSpec) -> {