24282 před 1 rokem
rodič
revize
4f0587b813

+ 9 - 0
sd-business/src/main/java/com/sd/business/controller/production/StockPreparationController.java

@@ -2,6 +2,7 @@ package com.sd.business.controller.production;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sd.business.entity.production.dto.StockPreparationDto;
+import com.sd.business.entity.production.vo.PackageBomVo;
 import com.sd.business.entity.production.vo.StockPreparationVo;
 import com.sd.business.service.production.StockPreparationService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -48,4 +49,12 @@ public class StockPreparationController {
         stockPreparationService.submit(orderSkuIdList);
     }
 
+    /**
+     * 获取包材
+     */
+    @PostMapping("/getPackageBomList")
+    public List<PackageBomVo> getPackageBomList(@Valid @NotEmpty(message = "订单skuId不能为空") @RequestBody List<Long> orderSkuIdList) {
+        return stockPreparationService.getPackageBomList(orderSkuIdList);
+    }
+
 }

+ 34 - 0
sd-business/src/main/java/com/sd/business/entity/production/vo/PackageBomVo.java

@@ -0,0 +1,34 @@
+package com.sd.business.entity.production.vo;
+
+import lombok.Builder;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+@Builder
+public class PackageBomVo {
+
+    /**
+     * bom规格id
+     */
+    private Long bomSpecId;
+
+    /**
+     * bom品名
+     */
+    private String bomSpecName;
+
+    /**
+     * sku品号
+     */
+    private String skuSpecCode;
+
+    /**
+     * 数量
+     */
+    private BigDecimal quantity;
+
+}

+ 6 - 0
sd-business/src/main/java/com/sd/business/service/production/StockPreparationService.java

@@ -2,6 +2,7 @@ package com.sd.business.service.production;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sd.business.entity.production.dto.StockPreparationDto;
+import com.sd.business.entity.production.vo.PackageBomVo;
 import com.sd.business.entity.production.vo.StockPreparationVo;
 
 import java.util.List;
@@ -23,4 +24,9 @@ public interface StockPreparationService {
      */
     void submit(List<Long> orderSkuIdList);
 
+    /**
+     * 获取包材列表
+     */
+    List<PackageBomVo> getPackageBomList(List<Long> orderSkuIdList);
+
 }

+ 29 - 0
sd-business/src/main/java/com/sd/business/service/production/impl/StockPreparationServiceImpl.java

@@ -23,11 +23,13 @@ import com.sd.business.entity.order.po.OrderSkuBom;
 import com.sd.business.entity.production.dto.StockPreparationDto;
 import com.sd.business.entity.production.po.ProductionTask;
 import com.sd.business.entity.production.po.ProductionWorkOrder;
+import com.sd.business.entity.production.vo.PackageBomVo;
 import com.sd.business.entity.production.vo.StockPreparationVo;
 import com.sd.business.entity.sku.po.Sku;
 import com.sd.business.entity.sku.po.SkuSpec;
 import com.sd.business.entity.warehouse.constant.WarehouseConstant;
 import com.sd.business.mapper.production.StockPreparationMapper;
+import com.sd.business.service.bom.BomSpecService;
 import com.sd.business.service.in.InOutStorageService;
 import com.sd.business.service.order.OrderService;
 import com.sd.business.service.order.OrderSkuBomService;
@@ -78,6 +80,9 @@ public class StockPreparationServiceImpl implements StockPreparationService {
     @Autowired
     private InOutStorageService inOutStorageService;
 
+    @Autowired
+    private BomSpecService bomSpecService;
+
     @Override
     public List<StockPreparationVo> uncompletedList(StockPreparationDto dto) {
         IWrapper<StockPreparationVo> wrapper = createWrapper(dto);
@@ -149,6 +154,30 @@ public class StockPreparationServiceImpl implements StockPreparationService {
 
     }
 
+    @Override
+    public List<PackageBomVo> getPackageBomList(List<Long> orderSkuIdList) {
+
+        List<OrderSkuBom> list = orderSkuBomService.list(q -> q.in(OrderSkuBom::getOrderSkuId, orderSkuIdList));
+
+        List<PackageBomVo> result = new ArrayList<>(list.stream()
+                .map(item -> PackageBomVo.builder().bomSpecId(item.getBomSpecId()).quantity(item.getQuantity()).build())
+                .collect(Collectors.toMap(
+                        PackageBomVo::getBomSpecId,
+                        Function.identity(),
+                        (v1, v2) -> {
+                            v1.setQuantity(v1.getQuantity().add(v2.getQuantity()));
+                            return v1;
+                        }
+                )).values());
+
+        bomSpecService.attributeAssign(result, PackageBomVo::getBomSpecId, (item, bomSpec) -> {
+            item.setSkuSpecCode(bomSpec.getCode());
+            item.setBomSpecName(bomSpec.getName());
+        });
+
+        return result;
+    }
+
     private IWrapper<StockPreparationVo> createWrapper(StockPreparationDto dto) {
         IWrapper<StockPreparationVo> wrapper = IWrapper.getWrapper();
 

+ 1 - 1
sd-starter/src/test/java/C1_SyncInventoryTest.java

@@ -56,7 +56,7 @@ public class C1_SyncInventoryTest {
 
         DataListener<ExcelData> listener = new DataListener<>();
 
-        FileInputStream fileInputStream = new FileInputStream("E:\\库存表.xlsx");
+        FileInputStream fileInputStream = new FileInputStream("E:\\库存表 (5).xlsx");
 
         ExcelReaderBuilder read = EasyExcel.read(fileInputStream, ExcelData.class, listener);
         read.sheet(0).doRead();

+ 14 - 20
sd-starter/src/test/java/C2_SyncInventoryTest.java

@@ -45,28 +45,22 @@ public class C2_SyncInventoryTest {
     @Test
     public void test() {
 
-        String a = "204010400104\t19\n" +
-                "204010400089\t50\n" +
-                "204010400090\t129\n" +
-                "204010400121\t75\n" +
-                "204010400092\t237\n" +
-                "204010400032\t170\n" +
-                "204010400035\t137\n" +
-                "204010400127\t18\n" +
-                "204010400033\t151\n" +
-                "204010400125\t31\n" +
-                "204010100239\t45\n" +
-                "204010400126\t2\n" +
-                "204010400034\t35\n" +
-                "204010400124\t32\n" +
-                "204012300027\t285\n" +
-                "204012300023\t210\n" +
-                "204012300028\t52\n" +
-                "204012300024\t70\n" +
-                "204010400197\t2294";
+        String a = "204010400192 2075  \n" +
+                "204010400195 1851  \n" +
+                "204010400198 213      \n" +
+                "204010400193 396   \n" +
+                "204010400196 3617  \n" +
+                "204010400199 322 \n" +
+                "204010400201 890  \n" +
+                "204010400205 1731  \n" +
+                "204010400209 448\n" +
+                "204010400250 299   \n" +
+                "204010400200 431  \n" +
+                "204010400212 338  \n" +
+                "204010400211 712";
 
         List<List<String>> list = Arrays.stream(a.split("\n"))
-                .map(item -> Arrays.stream(item.split("\t")).filter(StrUtil::isNotBlank).collect(Collectors.toList()))
+                .map(item -> Arrays.stream(item.split(" ")).filter(StrUtil::isNotBlank).collect(Collectors.toList()))
                 .collect(Collectors.toList());
 
         Map<String, Long> bomSpecMap = bomSpecService.mapKV(BomSpec::getCode, BaseIdPo::getId, null);