瀏覽代碼

Merge remote-tracking branch 'origin/master'

24282 1 年之前
父節點
當前提交
0ee79c17b9

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

@@ -2,10 +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.OutBomVo;
-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.production.vo.*;
 import com.sd.business.service.production.StockPreparationService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -36,6 +33,14 @@ public class StockPreparationController {
     }
 
     /**
+     * 打印待备料列表
+     */
+    @PostMapping("/printUncompletedList")
+    public List<PrintUncompletedVo> printUncompletedList(@RequestBody StockPreparationDto dto) {
+        return stockPreparationService.printUncompletedList(dto);
+    }
+
+    /**
      * 已备料分页
      */
     @PostMapping("/completedPage")

+ 38 - 0
sd-business/src/main/java/com/sd/business/entity/production/vo/PrintUncompletedVo.java

@@ -0,0 +1,38 @@
+package com.sd.business.entity.production.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 打印备料单数据
+ */
+@Getter
+@Setter
+public class PrintUncompletedVo {
+
+    /**
+     * 规格
+     */
+    private String spec;
+
+    /**
+     * 颜色分组数据
+     */
+    private List<ColourGroupingInfo> colourGroupingInfoList;
+
+    @Getter
+    @Setter
+    public static class ColourGroupingInfo {
+        /**
+         * 颜色
+         */
+        private String colour;
+
+        /**
+         * bom数据
+         */
+        private List<UncompletedVo> uncompletedVoList;
+    }
+}

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

@@ -32,26 +32,6 @@ public class UncompletedVo {
     private BigDecimal totalQuantity;
 
     /**
-     * 长 cm
-     */
-    private String length;
-
-    /**
-     * 宽 cm
-     */
-    private String width;
-
-    /**
-     * 高 cm
-     */
-    private String height;
-
-    /**
-     * 颜色
-     */
-    private String colour;
-
-    /**
      * sku消息
      */
     private List<SkuInfo> skuInfoList;

+ 33 - 19
sd-business/src/main/java/com/sd/business/service/order/impl/OrderSalesShipmentStatisticsServiceImpl.java

@@ -145,27 +145,41 @@ public class OrderSalesShipmentStatisticsServiceImpl extends ServiceImpl<OrderSa
 
     @Override
     public void salesShipmentStatistics() {
-        Date yesterday = DateUtil.yesterday();
-        String date = DateUtil.formatDate(yesterday);
-        List<OrderInfo> list = orderService.list(q -> q
-                .eq(OrderInfo::getStatus, OrderStatusEnum.COMPLETION_PRODUCTION.getKey())
-                .ne(OrderInfo::getClassify, OrderClassifyEnum.OUTSOURCE_ORDER.getKey())
-                .likeRight(OrderInfo::getShippingTime, date)
-                .select(BaseIdPo::getId));
-        if (list.isEmpty()) {
+        Date date = new Date();
+        List<OrderSalesShipmentStatistics> salesShipmentStatisticsList = new ArrayList<>();
+        // 统计近7天数据
+        for (int i = 7; i >= 1; i--) {
+            Date offsetDay = DateUtil.offsetDay(date, -i);
+            String formatDate = DateUtil.formatDate(offsetDay);
+            List<OrderInfo> list = orderService.list(q -> q
+                    .eq(OrderInfo::getStatus, OrderStatusEnum.COMPLETION_PRODUCTION.getKey())
+                    .ne(OrderInfo::getClassify, OrderClassifyEnum.OUTSOURCE_ORDER.getKey())
+                    .likeRight(OrderInfo::getShippingTime, formatDate)
+                    .select(BaseIdPo::getId));
+            if (list.isEmpty()) {
+                return;
+            }
+            Map<Long, OrderSalesShipmentStatistics> statisticsMap = this.mapKEntity(OrderSalesShipmentStatistics::getBomSpecId, q -> q.eq(OrderSalesShipmentStatistics::getTotalDate, formatDate));
+
+            List<Long> orderIds = list.stream().map(BaseIdPo::getId).collect(Collectors.toList());
+            List<OrderSku> orderSkuList = orderSkuService.list(q -> q.in(OrderSku::getOrderId, orderIds));
+            Map<Long, BigDecimal> map = orderSkuList.stream().collect(Collectors.toMap(OrderSku::getBomSpecId, OrderSku::getQuantity, BigDecimal::add));
+            List<OrderSalesShipmentStatistics> statisticsDtoList = map.keySet().stream().map(item -> {
+                OrderSalesShipmentStatistics statistics = statisticsMap.get(item);
+                if (statistics == null) {
+                    statistics = new OrderSalesShipmentStatistics();
+                }
+                statistics.setTotalDate(offsetDay);
+                statistics.setBomSpecId(item);
+                statistics.setQuantity(map.get(item));
+                return statistics;
+            }).collect(Collectors.toList());
+            salesShipmentStatisticsList.addAll(statisticsDtoList);
+        }
+        if (salesShipmentStatisticsList.isEmpty()) {
             return;
         }
-        List<Long> orderIds = list.stream().map(BaseIdPo::getId).collect(Collectors.toList());
-        List<OrderSku> orderSkuList = orderSkuService.list(q -> q.in(OrderSku::getOrderId, orderIds));
-        Map<Long, BigDecimal> map = orderSkuList.stream().collect(Collectors.toMap(OrderSku::getBomSpecId, OrderSku::getQuantity, BigDecimal::add));
-        List<OrderSalesShipmentStatistics> statisticsDtoList = map.keySet().stream().map(item -> {
-            OrderSalesShipmentStatistics dto = new OrderSalesShipmentStatistics();
-            dto.setTotalDate(yesterday);
-            dto.setBomSpecId(item);
-            dto.setQuantity(map.get(item));
-            return dto;
-        }).collect(Collectors.toList());
-        this.saveBatch(statisticsDtoList);
+        this.saveOrUpdateBatch(salesShipmentStatisticsList);
     }
 
     @Override

+ 8 - 4
sd-business/src/main/java/com/sd/business/service/production/StockPreparationService.java

@@ -2,10 +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.OutBomVo;
-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.production.vo.*;
 
 import java.util.List;
 
@@ -17,6 +14,13 @@ public interface StockPreparationService {
     List<UncompletedVo> uncompletedList(StockPreparationDto dto);
 
     /**
+     * 打印待备料列表
+     * @param dto
+     * @return
+     */
+    List<PrintUncompletedVo> printUncompletedList(StockPreparationDto dto);
+
+    /**
      * 已备料分页
      */
     Page<StockPreparationVo> completedPage(StockPreparationDto dto);

+ 94 - 11
sd-business/src/main/java/com/sd/business/service/production/impl/StockPreparationServiceImpl.java

@@ -23,10 +23,7 @@ import com.sd.business.entity.order.po.OrderSku;
 import com.sd.business.entity.order.po.OrderSkuBom;
 import com.sd.business.entity.production.dto.StockPreparationDto;
 import com.sd.business.entity.production.po.ProductionWorkOrder;
-import com.sd.business.entity.production.vo.OutBomVo;
-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.production.vo.*;
 import com.sd.business.entity.sku.po.SkuSpec;
 import com.sd.business.entity.statement.dto.StatementOfAccountDto;
 import com.sd.business.entity.warehouse.constant.WarehouseConstant;
@@ -126,10 +123,6 @@ public class StockPreparationServiceImpl implements StockPreparationService {
                             uncompletedVo.setBomSpecCode(item.getBomSpecCode());
                             uncompletedVo.setBomSpecName(item.getBomSpecName());
                             uncompletedVo.setTotalQuantity(item.getQuantity());
-                            uncompletedVo.setLength(item.getLength());
-                            uncompletedVo.setWidth(item.getWidth());
-                            uncompletedVo.setHeight(item.getHeight());
-                            uncompletedVo.setColour(item.getColour());
 
                             UncompletedVo.SkuInfo skuInfo = new UncompletedVo.SkuInfo();
                             skuInfo.setSkuSpecId(item.getSkuSpecId());
@@ -172,6 +165,99 @@ public class StockPreparationServiceImpl implements StockPreparationService {
     }
 
     @Override
+    public List<PrintUncompletedVo> printUncompletedList(StockPreparationDto dto) {
+
+        IWrapper<StockPreparationVo> wrapper = getWrapper(dto);
+        List<StockPreparationVo> stockPreparationVoList = stockPreparationMapper.uncompletedList(wrapper);
+
+        if (ObjectUtil.isEmpty(stockPreparationVoList)) {
+            return Collections.emptyList();
+        }
+
+        // 查询出委外订单,委外订单不出库主材
+        List<Long> orderIds = stockPreparationVoList.stream().map(StockPreparationVo::getOrderId).collect(Collectors.toList());
+        List<Long> outsourceOrderIds = orderService.list(q -> q
+                        .in(BaseIdPo::getId, orderIds)
+                        .eq(OrderInfo::getType, 2)
+                        .select(BaseIdPo::getId))
+                .stream().map(BaseIdPo::getId).collect(Collectors.toList());
+
+        // 根据规格分组后再根据颜色分组
+        Map<String, Map<String, List<StockPreparationVo>>> map = stockPreparationVoList.stream()
+                .collect(
+                        Collectors.groupingBy(
+                                item -> item.getLength() + "*" + item.getWidth() + "*" + item.getHeight(),
+                                Collectors.groupingBy(StockPreparationVo::getColour)
+                        ));
+
+        List<PrintUncompletedVo> list = new ArrayList<>();
+        for (String spec : map.keySet()) {
+            Map<String, List<StockPreparationVo>> specListMap = map.get(spec);
+            List<PrintUncompletedVo.ColourGroupingInfo> groupingInfoList = new ArrayList<>();
+            for (String colour : specListMap.keySet()) {
+                PrintUncompletedVo.ColourGroupingInfo colourGroupingInfo = new PrintUncompletedVo.ColourGroupingInfo();
+                colourGroupingInfo.setColour(colour);
+                colourGroupingInfo.setUncompletedVoList(specListMap.get(colour).stream()
+                        .filter(item -> outsourceOrderIds.isEmpty() || !outsourceOrderIds.contains(item.getOrderId()))
+                        .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());
+                                    skuInfo.setMachinedPanel(item.getMachinedPanel());
+                                    skuInfo.setArtworkName(item.getArtworkName());
+
+                                    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()
+                        .stream()
+                        .sorted(Comparator.comparing(UncompletedVo::getBomSpecCode))
+                        .collect(Collectors.toList()));
+                groupingInfoList.add(colourGroupingInfo);
+            }
+
+            PrintUncompletedVo printUncompletedVo = new PrintUncompletedVo();
+            printUncompletedVo.setSpec(spec);
+            printUncompletedVo.setColourGroupingInfoList(groupingInfoList);
+            list.add(printUncompletedVo);
+        }
+        return list;
+    }
+
+    @Override
     public Page<StockPreparationVo> completedPage(StockPreparationDto dto) {
         IWrapper<StockPreparationVo> wrapper = IWrapper.getWrapper();
         wrapper.eq("oi", OrderInfo::getCode, dto.getOrderCode());
@@ -263,9 +349,6 @@ public class StockPreparationServiceImpl implements StockPreparationService {
 
             // 生产入库
             inventoryFinishedService.productionWarehousing(orderIds);
-
-            // 库存销售出库
-            inventoryFinishedService.saleOutOfWarehouse(orderIds);
         }
 
         // 把生产工单发送到mq

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

@@ -11,9 +11,9 @@
                ss.code                                   skuSpecCode,
                ss.name                                   skuSpecName,
                ss.machined_panel                         machinedPanel,
-               CAST(0 + CAST(bs.length as char) as char) length,
-               CAST(0 + CAST(bs.width as char) as char)  width,
-               CAST(0 + CAST(bs.height as char) as char) height,
+               CAST(0 + CAST(ss.length as char) as char) length,
+               CAST(0 + CAST(ss.width as char) as char)  width,
+               CAST(0 + CAST(ss.height as char) as char) height,
                os.quantity,
                os.id                                     orderSkuId,
                oi.id                                     orderId,

+ 0 - 4
sd-wln/src/main/java/com/sd/wln/service/impl/WlnOrderServiceImpl.java

@@ -667,10 +667,6 @@ public class WlnOrderServiceImpl implements WlnOrderService {
 
                 // 生产入库
                 inventoryFinishedService.productionWarehousing(Collections.singletonList(item.getId()));
-
-                // 库存销售出库
-                inventoryFinishedService.saleOutOfWarehouse(Collections.singletonList(item.getId()));
-
             });
         }
         if (!saveOrderSkuList.isEmpty()) {