瀏覽代碼

打单 装箱明细

24282 1 年之前
父節點
當前提交
2027127d39
共有 23 個文件被更改,包括 633 次插入21 次删除
  1. 11 2
      sd-business/src/main/java/com/sd/business/controller/order/IssueBillController.java
  2. 17 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/OrderEncasementDetailDto.java
  3. 17 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/OrderEncasementDetailSelectDto.java
  4. 17 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/OrderEncasementDto.java
  5. 17 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/OrderEncasementSelectDto.java
  6. 53 0
      sd-business/src/main/java/com/sd/business/entity/order/po/OrderEncasement.java
  7. 43 0
      sd-business/src/main/java/com/sd/business/entity/order/po/OrderEncasementDetail.java
  8. 59 0
      sd-business/src/main/java/com/sd/business/entity/order/vo/AssemblyDetailVo.java
  9. 6 1
      sd-business/src/main/java/com/sd/business/entity/order/vo/IssueBillVo.java
  10. 27 0
      sd-business/src/main/java/com/sd/business/entity/order/vo/OrderEncasementDetailVo.java
  11. 24 0
      sd-business/src/main/java/com/sd/business/entity/order/vo/OrderEncasementVo.java
  12. 2 2
      sd-business/src/main/java/com/sd/business/mapper/order/IssueBillMapper.java
  13. 17 0
      sd-business/src/main/java/com/sd/business/mapper/order/OrderEncasementDetailMapper.java
  14. 26 0
      sd-business/src/main/java/com/sd/business/mapper/order/OrderEncasementMapper.java
  15. 8 2
      sd-business/src/main/java/com/sd/business/service/order/IssueBillService.java
  16. 17 0
      sd-business/src/main/java/com/sd/business/service/order/OrderEncasementDetailService.java
  17. 46 0
      sd-business/src/main/java/com/sd/business/service/order/OrderEncasementService.java
  18. 102 12
      sd-business/src/main/java/com/sd/business/service/order/impl/IssueBillServiceImpl.java
  19. 21 0
      sd-business/src/main/java/com/sd/business/service/order/impl/OrderEncasementDetailServiceImpl.java
  20. 76 0
      sd-business/src/main/java/com/sd/business/service/order/impl/OrderEncasementServiceImpl.java
  21. 3 2
      sd-business/src/main/resources/mapper/order/IssueBillMapper.xml
  22. 4 0
      sd-business/src/main/resources/mapper/order/OrderEncasementDetailMapper.xml
  23. 20 0
      sd-business/src/main/resources/mapper/order/OrderEncasementMapper.xml

+ 11 - 2
sd-business/src/main/java/com/sd/business/controller/order/IssueBillController.java

@@ -5,7 +5,8 @@ import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.sd.business.entity.order.dto.IssueBillSelectDto;
 import com.sd.business.entity.order.dto.OrderInfoDto;
 import com.sd.business.entity.order.po.OrderInfo;
-import com.sd.business.entity.order.vo.IssueBillVO;
+import com.sd.business.entity.order.vo.AssemblyDetailVo;
+import com.sd.business.entity.order.vo.IssueBillVo;
 import com.sd.business.entity.production.dto.MergeOrderDto;
 import com.sd.business.service.order.IssueBillService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,7 +27,7 @@ public class IssueBillController {
      * 打单分页
      */
     @PostMapping("/page")
-    public Page<IssueBillVO> page(@RequestBody IssueBillSelectDto dto) {
+    public Page<IssueBillVo> page(@RequestBody IssueBillSelectDto dto) {
         return issueBillService.getPage(dto);
     }
 
@@ -78,4 +79,12 @@ public class IssueBillController {
         issueBillService.unmerge(dto.getId());
     }
 
+    /**
+     * 装箱明细
+     */
+    @PostMapping("/assemblyDetail")
+    public AssemblyDetailVo assemblyDetail(@RequestBody BaseSelectDto dto) {
+        return issueBillService.assemblyDetail(dto.getId());
+    }
+
 }

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderEncasementDetailDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.order.dto;
+
+import com.sd.business.entity.order.po.OrderEncasementDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单装箱明细新增编辑入参实体
+ *
+ * @author
+ * @since 2023-09-25
+ */
+@Getter
+@Setter
+public class OrderEncasementDetailDto extends OrderEncasementDetail {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderEncasementDetailSelectDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.order.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单装箱明细列表查询入参实体
+ *
+ * @author
+ * @since 2023-09-25
+ */
+@Getter
+@Setter
+public class OrderEncasementDetailSelectDto extends BaseSelectDto {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderEncasementDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.order.dto;
+
+import com.sd.business.entity.order.po.OrderEncasement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单装箱新增编辑入参实体
+ *
+ * @author
+ * @since 2023-09-25
+ */
+@Getter
+@Setter
+public class OrderEncasementDto extends OrderEncasement {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderEncasementSelectDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.order.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单装箱列表查询入参实体
+ *
+ * @author
+ * @since 2023-09-25
+ */
+@Getter
+@Setter
+public class OrderEncasementSelectDto extends BaseSelectDto {
+
+}

+ 53 - 0
sd-business/src/main/java/com/sd/business/entity/order/po/OrderEncasement.java

@@ -0,0 +1,53 @@
+package com.sd.business.entity.order.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 订单装箱
+ * </p>
+ *
+ * @author
+ * @since 2023-09-25
+ */
+@Getter
+@Setter
+@TableName("order_encasement")
+public class OrderEncasement extends BasePo {
+
+    /**
+     * 订单id
+     */
+    private Long orderId;
+
+    /**
+     * 长 cm
+     */
+    private BigDecimal length;
+
+    /**
+     * 宽 cm
+     */
+    private BigDecimal width;
+
+    /**
+     * 高 cm
+     */
+    private BigDecimal height;
+
+    /**
+     * 净重 g
+     */
+    private BigDecimal netWeight;
+
+    /**
+     * 包裹总数
+     */
+    private Integer total;
+
+}

+ 43 - 0
sd-business/src/main/java/com/sd/business/entity/order/po/OrderEncasementDetail.java

@@ -0,0 +1,43 @@
+package com.sd.business.entity.order.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 订单装箱明细
+ * </p>
+ *
+ * @author
+ * @since 2023-09-25
+ */
+@Getter
+@Setter
+@TableName("order_encasement_detail")
+public class OrderEncasementDetail extends BasePo {
+
+    /**
+     * 订单装箱id
+     */
+    private Long orderEncasementId;
+
+    /**
+     * 订单产品id
+     */
+    private Long orderSkuId;
+
+    /**
+     * sku规格id
+     */
+    private Long skuSpecId;
+
+    /**
+     * 数量
+     */
+    private BigDecimal quantity;
+
+}

+ 59 - 0
sd-business/src/main/java/com/sd/business/entity/order/vo/AssemblyDetailVo.java

@@ -0,0 +1,59 @@
+package com.sd.business.entity.order.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Getter
+@Setter
+public class AssemblyDetailVo {
+
+    /**
+     * 产品清单
+     */
+    private List<SkuInfo> skuInfoList;
+
+    /**
+     * 包裹规格
+     */
+    private List<OrderEncasementVo> orderEncasementList;
+
+    @Getter
+    @Setter
+    public static class SkuInfo {
+
+        /**
+         * 订单sku id
+         */
+        private Long orderSkuId;
+
+        /**
+         * sku规格id
+         */
+        private Long skuSpecId;
+
+        /**
+         * sku规格编号
+         */
+        private String skuSpecCode;
+
+        /**
+         * sku规格名称
+         */
+        private String skuSpecName;
+
+        /**
+         * 总数量
+         */
+        private BigDecimal totalQuantity;
+
+        /**
+         * 剩余数量
+         */
+        private BigDecimal surplusQuantity;
+
+    }
+
+}

+ 6 - 1
sd-business/src/main/java/com/sd/business/entity/order/vo/IssueBillVO.java → sd-business/src/main/java/com/sd/business/entity/order/vo/IssueBillVo.java

@@ -8,7 +8,7 @@ import java.util.List;
 
 @Getter
 @Setter
-public class IssueBillVO {
+public class IssueBillVo {
 
     /**
      * 订单id
@@ -96,6 +96,11 @@ public class IssueBillVO {
     private String expressDeliveryName;
 
     /**
+     * 主订单id
+     */
+    private Long masterOrderId;
+
+    /**
      * 合并订单列表
      */
     private List<String> groupOrderCodeList;

+ 27 - 0
sd-business/src/main/java/com/sd/business/entity/order/vo/OrderEncasementDetailVo.java

@@ -0,0 +1,27 @@
+package com.sd.business.entity.order.vo;
+
+import com.sd.business.entity.order.po.OrderEncasementDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单装箱明细列表查询返回值实体
+ *
+ * @author
+ * @since 2023-09-25
+ */
+@Getter
+@Setter
+public class OrderEncasementDetailVo extends OrderEncasementDetail {
+
+    /**
+     * sku规格编号
+     */
+    private String skuSpecCode;
+
+    /**
+     * sku规格名称
+     */
+    private String skuSpecName;
+
+}

+ 24 - 0
sd-business/src/main/java/com/sd/business/entity/order/vo/OrderEncasementVo.java

@@ -0,0 +1,24 @@
+package com.sd.business.entity.order.vo;
+
+import com.sd.business.entity.order.po.OrderEncasement;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 订单装箱列表查询返回值实体
+ *
+ * @author
+ * @since 2023-09-25
+ */
+@Getter
+@Setter
+public class OrderEncasementVo extends OrderEncasement {
+
+    /**
+     * 产品列表
+     */
+    private List<OrderEncasementDetailVo> orderEncasementDetailList;
+
+}

+ 2 - 2
sd-business/src/main/java/com/sd/business/mapper/order/IssueBillMapper.java

@@ -2,11 +2,11 @@ package com.sd.business.mapper.order;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.utils.wrapper.IWrapper;
-import com.sd.business.entity.order.vo.IssueBillVO;
+import com.sd.business.entity.order.vo.IssueBillVo;
 import org.apache.ibatis.annotations.Param;
 
 public interface IssueBillMapper {
 
-    Page<IssueBillVO> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Object> wrapper);
+    Page<IssueBillVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Object> wrapper);
 
 }

+ 17 - 0
sd-business/src/main/java/com/sd/business/mapper/order/OrderEncasementDetailMapper.java

@@ -0,0 +1,17 @@
+package com.sd.business.mapper.order;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sd.business.entity.order.po.OrderEncasementDetail;
+
+
+/**
+ * <p>
+ * 订单装箱明细 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-09-25
+ */
+public interface OrderEncasementDetailMapper extends BaseMapper<OrderEncasementDetail> {
+
+}

+ 26 - 0
sd-business/src/main/java/com/sd/business/mapper/order/OrderEncasementMapper.java

@@ -0,0 +1,26 @@
+package com.sd.business.mapper.order;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.sd.business.entity.order.po.OrderEncasement;
+import com.sd.business.entity.order.vo.OrderEncasementVo;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 订单装箱 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-09-25
+ */
+public interface OrderEncasementMapper extends BaseMapper<OrderEncasement> {
+
+    /**
+     * 订单装箱分页
+     */
+    Page<OrderEncasementVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<OrderEncasement> wrapper);
+
+}

+ 8 - 2
sd-business/src/main/java/com/sd/business/service/order/IssueBillService.java

@@ -4,7 +4,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sd.business.entity.order.dto.IssueBillSelectDto;
 import com.sd.business.entity.order.dto.OrderInfoDto;
 import com.sd.business.entity.order.po.OrderInfo;
-import com.sd.business.entity.order.vo.IssueBillVO;
+import com.sd.business.entity.order.vo.AssemblyDetailVo;
+import com.sd.business.entity.order.vo.IssueBillVo;
 import com.sd.business.entity.production.dto.MergeOrderDto;
 
 public interface IssueBillService {
@@ -12,7 +13,7 @@ public interface IssueBillService {
     /**
      * 打单分页
      */
-    Page<IssueBillVO> getPage(IssueBillSelectDto dto);
+    Page<IssueBillVo> getPage(IssueBillSelectDto dto);
 
     /**
      * 编辑地址
@@ -44,4 +45,9 @@ public interface IssueBillService {
      */
     void unmerge(Long id);
 
+    /**
+     * 装箱明细
+     */
+    AssemblyDetailVo assemblyDetail(Long id);
+
 }

+ 17 - 0
sd-business/src/main/java/com/sd/business/service/order/OrderEncasementDetailService.java

@@ -0,0 +1,17 @@
+package com.sd.business.service.order;
+
+import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.order.po.OrderEncasementDetail;
+
+
+/**
+ * <p>
+ * 订单装箱明细 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-09-25
+ */
+public interface OrderEncasementDetailService extends BaseService<OrderEncasementDetail> {
+
+}

+ 46 - 0
sd-business/src/main/java/com/sd/business/service/order/OrderEncasementService.java

@@ -0,0 +1,46 @@
+package com.sd.business.service.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.order.dto.OrderEncasementDto;
+import com.sd.business.entity.order.dto.OrderEncasementSelectDto;
+import com.sd.business.entity.order.po.OrderEncasement;
+import com.sd.business.entity.order.vo.OrderEncasementVo;
+
+
+/**
+ * <p>
+ * 订单装箱 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-09-25
+ */
+public interface OrderEncasementService extends BaseService<OrderEncasement> {
+
+    /**
+     * 订单装箱分页
+     */
+    Page<OrderEncasementVo> getPage(OrderEncasementSelectDto dto);
+
+    /**
+     * 订单装箱明细
+     */
+    OrderEncasementVo detail(Long id);
+
+    /**
+     * 订单装箱新增
+     */
+    void add(OrderEncasementDto orderEncasementDto);
+
+    /**
+     * 订单装箱编辑
+     */
+    void edit(OrderEncasementDto orderEncasementDto);
+
+    /**
+     * 订单装箱删除
+     */
+    void delete(Long orderId);
+
+}

+ 102 - 12
sd-business/src/main/java/com/sd/business/service/order/impl/IssueBillServiceImpl.java

@@ -1,5 +1,6 @@
 package com.sd.business.service.order.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.ruoyi.common.core.domain.BaseIdPo;
@@ -9,20 +10,25 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.sd.business.entity.order.dto.IssueBillSelectDto;
 import com.sd.business.entity.order.dto.OrderInfoDto;
 import com.sd.business.entity.order.enums.OrderStatusEnum;
+import com.sd.business.entity.order.po.OrderEncasement;
+import com.sd.business.entity.order.po.OrderEncasementDetail;
 import com.sd.business.entity.order.po.OrderInfo;
-import com.sd.business.entity.order.vo.IssueBillVO;
+import com.sd.business.entity.order.po.OrderSku;
+import com.sd.business.entity.order.vo.AssemblyDetailVo;
+import com.sd.business.entity.order.vo.IssueBillVo;
+import com.sd.business.entity.order.vo.OrderEncasementDetailVo;
+import com.sd.business.entity.order.vo.OrderEncasementVo;
 import com.sd.business.entity.production.dto.MergeOrderDto;
 import com.sd.business.mapper.order.IssueBillMapper;
-import com.sd.business.service.order.IssueBillService;
-import com.sd.business.service.order.OrderService;
+import com.sd.business.service.order.*;
+import com.sd.business.service.sku.SkuSpecService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @Service
@@ -34,8 +40,20 @@ public class IssueBillServiceImpl implements IssueBillService {
     @Autowired
     private OrderService orderService;
 
+    @Autowired
+    private OrderSkuService orderSkuService;
+
+    @Autowired
+    private OrderEncasementService orderEncasementService;
+
+    @Autowired
+    private OrderEncasementDetailService orderEncasementDetailService;
+
+    @Autowired
+    private SkuSpecService skuSpecService;
+
     @Override
-    public Page<IssueBillVO> getPage(IssueBillSelectDto dto) {
+    public Page<IssueBillVo> getPage(IssueBillSelectDto dto) {
         IWrapper<Object> wrapper = IWrapper.getWrapper();
         wrapper.orderByDesc("oi", OrderInfo::getWlnCreateTime);
 
@@ -57,15 +75,15 @@ public class IssueBillServiceImpl implements IssueBillService {
             }
         }
 
-        Page<IssueBillVO> page = mapper.getPage(dto.getPage(), wrapper);
-        List<IssueBillVO> records = page.getRecords();
+        Page<IssueBillVo> page = mapper.getPage(dto.getPage(), wrapper);
+        List<IssueBillVo> records = page.getRecords();
 
         if (records.size() == 0) {
             return page;
         }
 
         // 查询合并订单code
-        List<Long> orderIdList = records.stream().map(IssueBillVO::getId).collect(Collectors.toList());
+        List<Long> orderIdList = records.stream().map(IssueBillVo::getId).collect(Collectors.toList());
         List<OrderInfo> orderInfoList = orderService.list(q -> q.in(OrderInfo::getMasterOrderId, orderIdList));
 
         Map<Long, List<String>> map = orderInfoList.stream().collect(
@@ -75,7 +93,6 @@ public class IssueBillServiceImpl implements IssueBillService {
         });
 
         return page;
-
     }
 
     @Override
@@ -121,12 +138,85 @@ public class IssueBillServiceImpl implements IssueBillService {
     public void merge(MergeOrderDto dto) {
         orderService.update(q -> q.eq(OrderInfo::getId, dto.getId()).set(OrderInfo::getMasterOrderId, 0));
         orderService.update(q -> q.in(OrderInfo::getId, dto.getMergeIdList()).set(OrderInfo::getMasterOrderId, dto.getId()));
+        orderEncasementService.delete(dto.getId());
     }
 
     @Override
     public void unmerge(Long id) {
         orderService.update(q -> q.eq(OrderInfo::getId, id).set(OrderInfo::getMasterOrderId, null));
         orderService.update(q -> q.eq(OrderInfo::getMasterOrderId, id).set(OrderInfo::getMasterOrderId, null));
+        orderEncasementService.delete(id);
+    }
+
+    @Override
+    public AssemblyDetailVo assemblyDetail(Long id) {
+        AssemblyDetailVo result = new AssemblyDetailVo();
+
+        // 获取合并订单
+        List<OrderInfo> mergeOrderList = orderService.list(q -> q.eq(OrderInfo::getMasterOrderId, id));
+
+        // 订单id列表
+        List<Long> orderIdList = mergeOrderList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
+        orderIdList.add(id);
+
+        // 赋值产品清单
+        List<OrderSku> list = orderSkuService.list(q -> q.in(OrderSku::getOrderId, orderIdList));
+        List<AssemblyDetailVo.SkuInfo> skuInfoList = list.stream().map(item -> {
+            AssemblyDetailVo.SkuInfo skuInfo = new AssemblyDetailVo.SkuInfo();
+            skuInfo.setOrderSkuId(item.getId());
+            skuInfo.setSkuSpecId(item.getSkuSpecId());
+            skuInfo.setTotalQuantity(item.getQuantity());
+            skuInfo.setSurplusQuantity(item.getQuantity());
+            return skuInfo;
+        }).collect(Collectors.toList());
+
+        // 赋值sku规格编号、名称
+        skuSpecService.attributeAssign(skuInfoList, AssemblyDetailVo.SkuInfo::getSkuSpecId, (item, skuSpec) -> {
+            item.setSkuSpecCode(skuSpec.getCode());
+            item.setSkuSpecName(skuSpec.getName());
+        });
+        result.setSkuInfoList(skuInfoList);
+
+        // 包裹规格数
+        List<OrderEncasement> tempOrderEncasementList = orderEncasementService.list(q -> q.eq(OrderEncasement::getOrderId, id));
+        if (tempOrderEncasementList.size() == 0) {
+            result.setOrderEncasementList(Collections.emptyList());
+        }
+
+        List<OrderEncasementVo> orderEncasementList = BeanUtil.copyToList(tempOrderEncasementList, OrderEncasementVo.class);
+        Map<Long, OrderEncasementVo> orderEncasementVoMap = orderEncasementList.stream().collect(Collectors.toMap(BaseIdPo::getId, Function.identity()));
+        Set<Long> orderEncasementIdList = orderEncasementVoMap.keySet();
+
+        // 查询包裹规格sku列表
+        List<OrderEncasementDetail> tempOrderEncasementDetailList = orderEncasementDetailService.list(
+                q -> q.in(OrderEncasementDetail::getOrderEncasementId, orderEncasementIdList));
+        List<OrderEncasementDetailVo> orderEncasementDetailList = BeanUtil.copyToList(tempOrderEncasementDetailList, OrderEncasementDetailVo.class);
+
+        // 设置包裹规格sku品号、品名
+        skuSpecService.attributeAssign(orderEncasementDetailList, OrderEncasementDetailVo::getSkuSpecId, (item, skuSpec) -> {
+            item.setSkuSpecCode(skuSpec.getCode());
+            item.setSkuSpecName(skuSpec.getName());
+        });
+
+        // 通过订单id分组
+        Map<Long, List<OrderEncasementDetailVo>> map = orderEncasementDetailList.stream()
+                .collect(Collectors.groupingBy(OrderEncasementDetail::getOrderEncasementId));
+        orderEncasementList.forEach(item -> item.setOrderEncasementDetailList(map.get(item.getId())));
+
+        // 赋值剩余可装箱数量
+        Map<Long, List<OrderEncasementDetailVo>> collect = orderEncasementDetailList.stream()
+                .collect(Collectors.groupingBy(OrderEncasementDetail::getOrderSkuId));
+        for (AssemblyDetailVo.SkuInfo skuInfo : skuInfoList) {
+            List<OrderEncasementDetailVo> tempList = collect.getOrDefault(skuInfo.getOrderSkuId(), Collections.emptyList());
+            tempList.forEach(item -> {
+                OrderEncasementVo orderEncasementVo = orderEncasementVoMap.get(item.getOrderEncasementId());
+                BigDecimal quantity = item.getQuantity().multiply(new BigDecimal(orderEncasementVo.getTotal()));
+                skuInfo.setSurplusQuantity(skuInfo.getSurplusQuantity().subtract(quantity));
+            });
+        }
+
+        result.setOrderEncasementList(orderEncasementList);
+        return result;
     }
 
 }

+ 21 - 0
sd-business/src/main/java/com/sd/business/service/order/impl/OrderEncasementDetailServiceImpl.java

@@ -0,0 +1,21 @@
+package com.sd.business.service.order.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sd.business.entity.order.po.OrderEncasementDetail;
+import com.sd.business.mapper.order.OrderEncasementDetailMapper;
+import com.sd.business.service.order.OrderEncasementDetailService;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ * 订单装箱明细 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-09-25
+ */
+@Service
+public class OrderEncasementDetailServiceImpl extends ServiceImpl<OrderEncasementDetailMapper, OrderEncasementDetail> implements OrderEncasementDetailService {
+
+}

+ 76 - 0
sd-business/src/main/java/com/sd/business/service/order/impl/OrderEncasementServiceImpl.java

@@ -0,0 +1,76 @@
+package com.sd.business.service.order.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.BaseIdPo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.sd.business.entity.order.dto.OrderEncasementDto;
+import com.sd.business.entity.order.dto.OrderEncasementSelectDto;
+import com.sd.business.entity.order.po.OrderEncasement;
+import com.sd.business.entity.order.po.OrderEncasementDetail;
+import com.sd.business.entity.order.vo.OrderEncasementVo;
+import com.sd.business.mapper.order.OrderEncasementMapper;
+import com.sd.business.service.order.OrderEncasementDetailService;
+import com.sd.business.service.order.OrderEncasementService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 订单装箱 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-09-25
+ */
+@Service
+public class OrderEncasementServiceImpl extends ServiceImpl<OrderEncasementMapper, OrderEncasement> implements OrderEncasementService {
+
+    @Autowired
+    private OrderEncasementDetailService orderEncasementDetailService;
+
+    @Override
+    public Page<OrderEncasementVo> getPage(OrderEncasementSelectDto dto) {
+        IWrapper<OrderEncasement> wrapper = getWrapper();
+        wrapper.orderByDesc("oe", OrderEncasement::getId);
+        Page<OrderEncasementVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public OrderEncasementVo detail(Long id) {
+        OrderEncasement OrderEncasement = this.getById(id);
+        OrderEncasementVo result = BeanUtil.toBean(OrderEncasement, OrderEncasementVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(OrderEncasementDto orderEncasementDto) {
+        this.save(orderEncasementDto);
+    }
+
+    @Override
+    public void edit(OrderEncasementDto orderEncasementDto) {
+        this.updateById(orderEncasementDto);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(Long orderId) {
+        List<OrderEncasement> list = list(q -> q.eq(OrderEncasement::getOrderId, orderId));
+        if (list.size() == 0) {
+            return;
+        }
+
+        List<Long> idList = list.stream().map(BaseIdPo::getId).collect(Collectors.toList());
+        removeBatchByIds(idList);
+        orderEncasementDetailService.remove(q -> q.in(OrderEncasementDetail::getOrderEncasementId, idList));
+    }
+
+}

+ 3 - 2
sd-business/src/main/resources/mapper/order/IssueBillMapper.xml

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.sd.business.mapper.order.IssueBillMapper">
 
-    <select id="getPage" resultType="com.sd.business.entity.order.vo.IssueBillVO">
+    <select id="getPage" resultType="com.sd.business.entity.order.vo.IssueBillVo">
         select oi.id,
                oi.code,
                d.name  departmentName,
@@ -18,7 +18,8 @@
                oi.city,
                oi.county,
                oi.detailed_address,
-               oi.remark
+               oi.remark,
+               oi.master_order_id
         from order_info oi
                  left join department d on oi.department_id = d.id
                  left join express_delivery ed on oi.express_delivery_id = ed.id

+ 4 - 0
sd-business/src/main/resources/mapper/order/OrderEncasementDetailMapper.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sd.business.mapper.order.OrderEncasementDetailMapper">
+</mapper>

+ 20 - 0
sd-business/src/main/resources/mapper/order/OrderEncasementMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sd.business.mapper.order.OrderEncasementMapper">
+    <select id="getPage" resultType="com.sd.business.entity.order.vo.OrderEncasementVo">
+        select oe.id,
+               oe.order_id,
+               oe.length,
+               oe.width,
+               oe.height,
+               oe.net_weight,
+               oe.total,
+               oe.create_user,
+               oe.create_time,
+               oe.update_user,
+               oe.update_time
+        from order_encasement oe
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>