24282 1 жил өмнө
parent
commit
79b501aeaa

+ 2 - 1
sd-business/src/main/java/com/sd/business/controller/production/StockPreparationController.java

@@ -4,6 +4,7 @@ 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.entity.production.vo.UncompletedVo;
 import com.sd.business.service.production.StockPreparationService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -29,7 +30,7 @@ public class StockPreparationController {
      * 待备料列表
      */
     @PostMapping("/uncompletedList")
-    public List<StockPreparationVo> uncompletedList(@RequestBody StockPreparationDto dto) {
+    public List<UncompletedVo> uncompletedList(@RequestBody StockPreparationDto dto) {
         return stockPreparationService.uncompletedList(dto);
     }
 

+ 66 - 0
sd-business/src/main/java/com/sd/business/entity/production/vo/UncompletedVo.java

@@ -0,0 +1,66 @@
+package com.sd.business.entity.production.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Getter
+@Setter
+public class UncompletedVo {
+
+
+    /**
+     * bom规格id
+     */
+    private Long bomSpecId;
+
+    /**
+     * bom品号
+     */
+    private String bomSpecCode;
+
+    /**
+     * bom品名
+     */
+    private String bomSpecName;
+
+    /**
+     * 总数量
+     */
+    private BigDecimal totalQuantity;
+
+    /**
+     * sku消息
+     */
+    private List<SkuInfo> skuInfoList;
+
+    @Getter
+    @Setter
+    public static class SkuInfo {
+
+        /**
+         * sku规格id
+         */
+        private Long skuSpecId;
+
+        /**
+         * sku品号
+         */
+        private String skuSpecCode;
+
+        /**
+         * sku品名
+         */
+        private String skuSpecName;
+
+        /**
+         * 数量
+         */
+        private BigDecimal quantity;
+
+    }
+
+
+}

+ 2 - 1
sd-business/src/main/java/com/sd/business/service/production/StockPreparationService.java

@@ -4,6 +4,7 @@ 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.entity.production.vo.UncompletedVo;
 
 import java.util.List;
 
@@ -12,7 +13,7 @@ public interface StockPreparationService {
     /**
      * 待备料列表
      */
-    List<StockPreparationVo> uncompletedList(StockPreparationDto dto);
+    List<UncompletedVo> uncompletedList(StockPreparationDto dto);
 
     /**
      * 已备料分页

+ 65 - 24
sd-business/src/main/java/com/sd/business/service/production/impl/StockPreparationServiceImpl.java

@@ -1,6 +1,7 @@
 package com.sd.business.service.production.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.toolkit.Assert;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.constant.StatusConstant;
@@ -25,6 +26,7 @@ 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.production.vo.UncompletedVo;
 import com.sd.business.entity.sku.po.Sku;
 import com.sd.business.entity.sku.po.SkuSpec;
 import com.sd.business.entity.warehouse.constant.WarehouseConstant;
@@ -92,17 +94,75 @@ public class StockPreparationServiceImpl implements StockPreparationService {
     private BomClassifyService bomClassifyService;
 
     @Override
-    public List<StockPreparationVo> uncompletedList(StockPreparationDto dto) {
-        IWrapper<StockPreparationVo> wrapper = createWrapper(dto);
+    public List<UncompletedVo> uncompletedList(StockPreparationDto dto) {
+        Assert.notNull(dto.getDepartmentId(), "事业部id不能为空");
+
+        IWrapper<StockPreparationVo> wrapper = IWrapper.getWrapper();
         wrapper.eq("oi", OrderInfo::getStatus, OrderStatusEnum.STOCK_PREPARATION.getKey());
-        wrapper.eq("os", OrderSku::getStockPreparationStatus, StatusConstant.NO);
         wrapper.eq("oi", OrderInfo::getExceptionType, OrderExceptionTypeEnum.NORMAL.getKey().toString());
-        return stockPreparationMapper.uncompletedList(wrapper);
+        wrapper.eq("os", OrderSku::getStockPreparationStatus, StatusConstant.NO);
+        wrapper.eq("oi", OrderInfo::getDepartmentId, dto.getDepartmentId());
+        wrapper.eq("bs", BomSpec::getCode, dto.getBomSpecCode());
+        wrapper.eq("bs", BomSpec::getName, dto.getBomSpecName());
+        wrapper.eq("ss", SkuSpec::getCode, dto.getSkuSpecCode());
+        wrapper.eq("ss", SkuSpec::getName, dto.getSkuSpecName());
+        List<StockPreparationVo> stockPreparationVoList = stockPreparationMapper.uncompletedList(wrapper);
+
+        return new ArrayList<>(stockPreparationVoList.stream().collect(Collectors.toMap(
+                StockPreparationVo::getBomSpecId,
+                item -> {
+                    UncompletedVo uncompletedVo = new UncompletedVo();
+                    uncompletedVo.setBomSpecId(item.getBomSpecId());
+                    uncompletedVo.setBomSpecCode(item.getBomSpecCode());
+                    uncompletedVo.setBomSpecName(item.getBomSpecName());
+                    uncompletedVo.setTotalQuantity(item.getQuantity());
+
+                    UncompletedVo.SkuInfo skuInfo = new UncompletedVo.SkuInfo();
+                    skuInfo.setSkuSpecId(item.getSkuSpecId());
+                    skuInfo.setSkuSpecCode(item.getSkuSpecCode());
+                    skuInfo.setSkuSpecName(item.getSkuSpecName());
+                    skuInfo.setQuantity(item.getQuantity());
+
+                    List<UncompletedVo.SkuInfo> skuInfoList = new ArrayList<>();
+                    skuInfoList.add(skuInfo);
+
+                    uncompletedVo.setSkuInfoList(skuInfoList);
+
+                    return uncompletedVo;
+                },
+                (v1, v2) -> {
+                    v1.setTotalQuantity(v1.getTotalQuantity().add(v2.getTotalQuantity()));
+                    UncompletedVo.SkuInfo skuInfo = v2.getSkuInfoList().get(0);
+                    boolean flag = true;
+                    for (UncompletedVo.SkuInfo temp : v1.getSkuInfoList()) {
+                        if (Objects.equals(temp.getSkuSpecId(), skuInfo.getSkuSpecId())) {
+                            temp.setQuantity(temp.getQuantity().add(skuInfo.getQuantity()));
+                            flag = false;
+                            break;
+                        }
+                    }
+
+                    if (flag) {
+                        v1.getSkuInfoList().add(skuInfo);
+                    }
+
+                    return v1;
+                }
+        )).values());
+
     }
 
     @Override
     public Page<StockPreparationVo> completedPage(StockPreparationDto dto) {
-        IWrapper<StockPreparationVo> wrapper = createWrapper(dto);
+        IWrapper<StockPreparationVo> wrapper = IWrapper.getWrapper();
+        wrapper.eq("oi", OrderInfo::getCode, dto.getOrderCode());
+        wrapper.eq("oi", OrderInfo::getWlnCode, dto.getOrderWlnCode());
+        wrapper.eq("bs", BomSpec::getCode, dto.getBomSpecCode());
+        wrapper.eq("bs", BomSpec::getName, dto.getBomSpecName());
+        wrapper.eq("d", Department::getId, dto.getDepartmentId());
+        wrapper.eq("ss", SkuSpec::getCode, dto.getSkuSpecCode());
+        wrapper.eq("ss", SkuSpec::getName, dto.getSkuSpecName());
+        wrapper.eq("bs", BomSpec::getWidth, dto.getWidth());
         wrapper.eq("os", OrderSku::getStockPreparationStatus, StatusConstant.YES);
         wrapper.orderByDesc("os", OrderSku::getStockPreparationTime);
         wrapper.orderByAsc("os", OrderSku::getId);
@@ -195,25 +255,6 @@ public class StockPreparationServiceImpl implements StockPreparationService {
         return result;
     }
 
-    private IWrapper<StockPreparationVo> createWrapper(StockPreparationDto dto) {
-        IWrapper<StockPreparationVo> wrapper = IWrapper.getWrapper();
-
-        wrapper.eq("oi", OrderInfo::getCode, dto.getOrderCode());
-        wrapper.eq("oi", OrderInfo::getWlnCode, dto.getOrderWlnCode());
-
-        wrapper.eq("bs", BomSpec::getCode, dto.getBomSpecCode());
-        wrapper.eq("bs", BomSpec::getName, dto.getBomSpecName());
-
-        wrapper.eq("d", Department::getId, dto.getDepartmentId());
-
-        wrapper.eq("ss", SkuSpec::getCode, dto.getSkuSpecCode());
-        wrapper.eq("ss", SkuSpec::getName, dto.getSkuSpecName());
-
-        wrapper.eq("bs", BomSpec::getWidth, dto.getWidth());
-
-        return wrapper;
-    }
-
     /**
      * 订单状态改为 生产中
      */

+ 16 - 9
sd-business/src/main/resources/mapper/production/StockPreparationMapper.xml

@@ -3,14 +3,21 @@
 <mapper namespace="com.sd.business.mapper.production.StockPreparationMapper">
 
     <select id="uncompletedList" resultType="com.sd.business.entity.production.vo.StockPreparationVo">
-        <include refid="sql"/>
+        select bs.id   bomSpecId,
+               bs.code bomSpecCode,
+               bs.name bomSpecName,
+               ss.id   skuSpecId,
+               ss.code skuSpecCode,
+               ss.name skuSpecName,
+               os.quantity
+        from order_info oi
+                 inner join order_sku os on oi.id = os.order_id
+                 inner join sku_spec ss on os.sku_spec_id = ss.id
+                 inner join bom_spec bs on os.bom_spec_id = bs.id
+            ${ew.customSqlSegment}
     </select>
 
     <select id="completedPage" resultType="com.sd.business.entity.production.vo.StockPreparationVo">
-        <include refid="sql"/>
-    </select>
-
-    <sql id="sql">
         select os.blueprint,
                d.name      departmentName,
                bs.code     bomSpecCode,
@@ -29,10 +36,10 @@
                bs.id       bomSpecId
         from order_info oi
                  inner join order_sku os on oi.id = os.order_id
-                 left join department d on oi.department_id = d.id
-                 left join sku_spec ss on os.sku_spec_id = ss.id
-                 left join bom_spec bs on os.bom_spec_id = bs.id
+                 inner join department d on oi.department_id = d.id
+                 inner join sku_spec ss on os.sku_spec_id = ss.id
+                 inner join bom_spec bs on os.bom_spec_id = bs.id
             ${ew.customSqlSegment}
-    </sql>
+    </select>
 
 </mapper>

+ 29 - 0
sd-starter/src/test/java/TestList.java

@@ -0,0 +1,29 @@
+import com.sd.SdApplication;
+import com.sd.business.entity.production.dto.StockPreparationDto;
+import com.sd.business.entity.production.vo.UncompletedVo;
+import com.sd.business.service.production.StockPreparationService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.List;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = SdApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
+public class TestList {
+
+    @Autowired
+    private StockPreparationService stockPreparationService;
+
+    @Test
+    public void test() {
+        StockPreparationDto stockPreparationDto = new StockPreparationDto();
+        stockPreparationDto.setDepartmentId(1689164627162529793L);
+        List<UncompletedVo> uncompletedVos = stockPreparationService.uncompletedList(stockPreparationDto);
+        System.out.println();
+    }
+
+
+}