Selaa lähdekoodia

新增订单打样登记,打样费

fgd 1 vuosi sitten
vanhempi
commit
9b26110621
31 muutettua tiedostoa jossa 532 lisäystä ja 36 poistoa
  1. 8 0
      sd-business/src/main/java/com/sd/business/controller/order/OrderController.java
  2. 62 0
      sd-business/src/main/java/com/sd/business/controller/order/OrderProofingRegistrationController.java
  3. 7 3
      sd-business/src/main/java/com/sd/business/entity/board/vo/TurnoverRateStatisticsVo.java
  4. 17 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/OrderProofingRegistrationDto.java
  5. 26 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/OrderProofingRegistrationSelectDto.java
  6. 6 0
      sd-business/src/main/java/com/sd/business/entity/order/po/OrderInfo.java
  7. 87 0
      sd-business/src/main/java/com/sd/business/entity/order/po/OrderProofingRegistration.java
  8. 7 0
      sd-business/src/main/java/com/sd/business/entity/order/po/OrderSku.java
  9. 26 0
      sd-business/src/main/java/com/sd/business/entity/order/vo/OrderProofingRegistrationVo.java
  10. 5 0
      sd-business/src/main/java/com/sd/business/entity/statement/bo/ExportDocumentByOrderBo.java
  11. 5 0
      sd-business/src/main/java/com/sd/business/entity/statement/vo/DocumentByBomVo.java
  12. 10 0
      sd-business/src/main/java/com/sd/business/entity/statement/vo/DocumentByOrderVo.java
  13. 5 0
      sd-business/src/main/java/com/sd/business/entity/statement/vo/DocumentBySkuVo.java
  14. 26 0
      sd-business/src/main/java/com/sd/business/mapper/order/OrderProofingRegistrationMapper.java
  15. 39 0
      sd-business/src/main/java/com/sd/business/service/order/OrderProofingRegistrationService.java
  16. 7 0
      sd-business/src/main/java/com/sd/business/service/order/OrderService.java
  17. 86 0
      sd-business/src/main/java/com/sd/business/service/order/impl/OrderProofingRegistrationServiceImpl.java
  18. 7 10
      sd-business/src/main/java/com/sd/business/service/order/impl/OrderSalesShipmentStatisticsServiceImpl.java
  19. 38 15
      sd-business/src/main/java/com/sd/business/service/order/impl/OrderServiceImpl.java
  20. 2 2
      sd-business/src/main/java/com/sd/business/service/statement/impl/DocumentByOrderExcelCellMergeStrategy.java
  21. 2 2
      sd-business/src/main/java/com/sd/business/service/statement/impl/SalesOutWarehouseDetailsExcelCellMergeStrategy.java
  22. 1 0
      sd-business/src/main/java/com/sd/business/service/statement/impl/StatementOfAccountExportServiceImpl.java
  23. 18 4
      sd-business/src/main/java/com/sd/business/service/statement/impl/StatementOfAccountServiceImpl.java
  24. 1 0
      sd-business/src/main/java/com/sd/business/strategy/impl/DocumentByOrderExcelExportStrategy.java
  25. 1 0
      sd-business/src/main/java/com/sd/business/strategy/impl/SalesOutWarehouseDetailsExportStrategy.java
  26. 1 0
      sd-business/src/main/resources/mapper/order/OrderMapper.xml
  27. 30 0
      sd-business/src/main/resources/mapper/order/OrderProofingRegistrationMapper.xml
  28. BIN
      sd-starter/src/main/resources/template/bomDocument.xlsx
  29. BIN
      sd-starter/src/main/resources/template/orderDocument.xlsx
  30. BIN
      sd-starter/src/main/resources/template/salesOutWarehouseDetails.xlsx
  31. 2 0
      sd-wln/src/main/java/com/sd/wln/service/impl/WlnOrderServiceImpl.java

+ 8 - 0
sd-business/src/main/java/com/sd/business/controller/order/OrderController.java

@@ -219,4 +219,12 @@ public class OrderController {
         orderService.orderExportExcel(dto.getId());
     }
 
+    /**
+     * 订单选择列表
+     */
+    @PostMapping("/getOrderSelectList")
+    public Page<OrderInfoVo> getOrderSelectList(@RequestBody OrderSelectDto dto) {
+        return orderService.getOrderSelectListByCode(dto);
+    }
+
 }

+ 62 - 0
sd-business/src/main/java/com/sd/business/controller/order/OrderProofingRegistrationController.java

@@ -0,0 +1,62 @@
+package com.sd.business.controller.order;
+
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sd.business.entity.order.vo.OrderProofingRegistrationVo;
+import com.sd.business.entity.order.dto.OrderProofingRegistrationSelectDto;
+import com.sd.business.entity.order.dto.OrderProofingRegistrationDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.sd.business.service.order.OrderProofingRegistrationService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 订单打样登记 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-19
+ */
+@RestController
+@RequestMapping("/orderProofingRegistration")
+public class OrderProofingRegistrationController {
+
+    @Autowired
+    private OrderProofingRegistrationService orderProofingRegistrationService;
+
+    /**
+     * 订单打样登记分页
+     */
+    @PostMapping("/page")
+    public Page<OrderProofingRegistrationVo> page(@RequestBody OrderProofingRegistrationSelectDto dto) {
+        return orderProofingRegistrationService.getPage(dto);
+    }
+
+    /**
+     * 订单打样登记新增
+     */
+    @PostMapping("/add")
+    public void add(@Validated @RequestBody OrderProofingRegistrationDto dto) {
+        orderProofingRegistrationService.add(dto);
+    }
+
+    /**
+     * 订单打样登记编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody OrderProofingRegistrationDto dto) {
+        orderProofingRegistrationService.edit(dto);
+    }
+
+    /**
+     * 订单打样登记删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        orderProofingRegistrationService.delete(dto.getId());
+    }
+
+
+}

+ 7 - 3
sd-business/src/main/java/com/sd/business/entity/board/vo/TurnoverRateStatisticsVo.java

@@ -2,6 +2,7 @@ package com.sd.business.entity.board.vo;
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.format.NumberFormat;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -51,8 +52,9 @@ public class TurnoverRateStatisticsVo {
     /**
      * 周转率
      */
+    @NumberFormat("0.00%")
     @ExcelProperty(value = "30天周转率", index = 5)
-    private String turnoverRateThirtyDays;
+    private BigDecimal turnoverRateThirtyDays;
 
     /**
      * 30天销售量
@@ -63,8 +65,9 @@ public class TurnoverRateStatisticsVo {
     /**
      * 周转率
      */
+    @NumberFormat("0.00%")
     @ExcelProperty(value = "60天周转率", index = 7)
-    private String turnoverRateSixtyDays;
+    private BigDecimal turnoverRateSixtyDays;
 
     /**
      * 60天销售量
@@ -75,8 +78,9 @@ public class TurnoverRateStatisticsVo {
     /**
      * 周转率
      */
+    @NumberFormat("0.00%")
     @ExcelProperty(value = "90天周转率", index = 9)
-    private String turnoverRateNinetyDays;
+    private BigDecimal turnoverRateNinetyDays;
 
     /**
      * 90天销售量

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

@@ -0,0 +1,17 @@
+package com.sd.business.entity.order.dto;
+
+import com.sd.business.entity.order.po.OrderProofingRegistration;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单打样登记新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-12-19
+ */
+@Getter
+@Setter
+public class OrderProofingRegistrationDto extends OrderProofingRegistration {
+
+}

+ 26 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderProofingRegistrationSelectDto.java

@@ -0,0 +1,26 @@
+package com.sd.business.entity.order.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单打样登记列表查询入参实体
+ *
+ * @author 
+ * @since 2023-12-19
+ */
+@Getter
+@Setter
+public class OrderProofingRegistrationSelectDto extends BaseSelectDto {
+
+    /**
+     * 事业部id
+     */
+    private Long departmentId;
+
+    /**
+     * 订单号
+     */
+    private String orderCode;
+}

+ 6 - 0
sd-business/src/main/java/com/sd/business/entity/order/po/OrderInfo.java

@@ -199,6 +199,12 @@ public class OrderInfo extends BasePo {
     private BigDecimal packagingMaterialCost;
 
     /**
+     * 打样费
+     */
+    @NotNull(message = "打样费不能为空")
+    private BigDecimal proofingFee;
+
+    /**
      * 税率
      */
     private BigDecimal taxRate;

+ 87 - 0
sd-business/src/main/java/com/sd/business/entity/order/po/OrderProofingRegistration.java

@@ -0,0 +1,87 @@
+package com.sd.business.entity.order.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.DecimalMin;
+import javax.validation.constraints.NotNull;
+
+/**
+ * <p>
+ * 订单打样登记
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-19
+ */
+@Getter
+@Setter
+@TableName("order_proofing_registration")
+public class OrderProofingRegistration extends BasePo {
+
+    /**
+     * 事业部id
+     */
+    @NotNull(message = "事业部id不能为空")
+    private Long departmentId;
+
+    /**
+     * 订单id
+     */
+    @NotNull(message = "订单id不能为空")
+    private Long orderId;
+
+    /**
+     * 长 cm
+     */
+    private BigDecimal length;
+
+    /**
+     * 宽 cm
+     */
+    private BigDecimal width;
+
+    /**
+     * 高 cm
+     */
+    private BigDecimal height;
+
+    /**
+     * 是否新废垫 1-是,0-否
+     */
+    private Boolean useNewBom;
+
+    /**
+     * 单价
+     */
+    @NotNull(message = "单价不能为空")
+    private BigDecimal unitPrice;
+
+    /**
+     * 定制加工类型
+     */
+    @NotNull(message = "定制加工类型不能为空")
+    private String customProcessingType;
+
+    /**
+     * 加工次数
+     */
+    @NotNull(message = "加工次数不能为空")
+    @DecimalMin(value = "0.01", message = "加工次数必须大于0")
+    private BigDecimal processingNum;
+
+    /**
+     * 定制加工费
+     */
+    @NotNull(message = "定制加工费不能为空")
+    private BigDecimal customProcessingFee;
+
+    /**
+     * 操作人
+     */
+    private String operator;
+
+}

+ 7 - 0
sd-business/src/main/java/com/sd/business/entity/order/po/OrderSku.java

@@ -124,6 +124,13 @@ public class OrderSku extends BasePo {
     private BigDecimal packagingMaterialCost;
 
     /**
+     * 打样费
+     * sku的打样费用,只计算一次,不需要与数量相乘
+     */
+    @NotNull(message = "打样费不能为空")
+    private BigDecimal proofingFee;
+
+    /**
      * 定制加工类型
      */
     private String customProcessingType;

+ 26 - 0
sd-business/src/main/java/com/sd/business/entity/order/vo/OrderProofingRegistrationVo.java

@@ -0,0 +1,26 @@
+package com.sd.business.entity.order.vo;
+
+import com.sd.business.entity.order.po.OrderProofingRegistration;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单打样登记列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-12-19
+ */
+@Getter
+@Setter
+public class OrderProofingRegistrationVo extends OrderProofingRegistration {
+
+    /**
+     * 事业部名称
+     */
+    private String departmentName;
+
+    /**
+     * 订单号
+     */
+    private String orderCode;
+}

+ 5 - 0
sd-business/src/main/java/com/sd/business/entity/statement/bo/ExportDocumentByOrderBo.java

@@ -148,4 +148,9 @@ public class ExportDocumentByOrderBo {
      */
     private BigDecimal managementFeeSummary;
 
+    /**
+     * 打样费
+     */
+    private BigDecimal proofingFeeSummary;
+
 }

+ 5 - 0
sd-business/src/main/java/com/sd/business/entity/statement/vo/DocumentByBomVo.java

@@ -67,6 +67,11 @@ public class DocumentByBomVo {
     private BigDecimal managementFeeSummary;
 
     /**
+     * 打样费
+     */
+    private BigDecimal proofingFeeSummary;
+
+    /**
      * 小计
      */
     private BigDecimal subtotal;

+ 10 - 0
sd-business/src/main/java/com/sd/business/entity/statement/vo/DocumentByOrderVo.java

@@ -121,6 +121,11 @@ public class DocumentByOrderVo {
         private BigDecimal subtotal;
 
         /**
+         * 打样费
+         */
+        private BigDecimal proofingFee;
+
+        /**
          * bom规格列表
          */
         private List<BomSpec> bomSpecList;
@@ -197,6 +202,11 @@ public class DocumentByOrderVo {
         private BigDecimal managementFeeSummary;
 
         /**
+         * 打样费
+         */
+        private BigDecimal proofingFeeSummary;
+
+        /**
          * 分类父名称
          */
         private String classifyName;

+ 5 - 0
sd-business/src/main/java/com/sd/business/entity/statement/vo/DocumentBySkuVo.java

@@ -42,6 +42,11 @@ public class DocumentBySkuVo {
     private BigDecimal subtotal;
 
     /**
+     * 打样费
+     */
+    private BigDecimal proofingFee;
+
+    /**
      * 合计
      */
     private BigDecimal total;

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

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

+ 39 - 0
sd-business/src/main/java/com/sd/business/service/order/OrderProofingRegistrationService.java

@@ -0,0 +1,39 @@
+package com.sd.business.service.order;
+
+import com.sd.business.entity.order.po.OrderProofingRegistration;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sd.business.entity.order.vo.OrderProofingRegistrationVo;
+import com.sd.business.entity.order.dto.OrderProofingRegistrationSelectDto;
+import com.sd.business.entity.order.dto.OrderProofingRegistrationDto;
+
+/**
+ * <p>
+ * 订单打样登记 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-19
+ */
+public interface OrderProofingRegistrationService extends BaseService<OrderProofingRegistration> {
+
+    /**
+     * 订单打样登记分页
+     */
+    Page<OrderProofingRegistrationVo> getPage(OrderProofingRegistrationSelectDto dto);
+
+    /**
+     * 订单打样登记新增
+     */
+    void add(OrderProofingRegistrationDto dto);
+
+    /**
+     * 订单打样登记编辑
+     */
+    void edit(OrderProofingRegistrationDto dto);
+
+    /**
+     * 订单打样登记删除
+     */
+    void delete(Long id);
+}

+ 7 - 0
sd-business/src/main/java/com/sd/business/service/order/OrderService.java

@@ -170,4 +170,11 @@ public interface OrderService extends BaseService<OrderInfo> {
      * @param id
      */
     void orderExportExcel(Long id);
+
+    /**
+     * 根据订单号获取订单列表
+     * @param dto
+     * @return
+     */
+    Page<OrderInfoVo> getOrderSelectListByCode(OrderSelectDto dto);
 }

+ 86 - 0
sd-business/src/main/java/com/sd/business/service/order/impl/OrderProofingRegistrationServiceImpl.java

@@ -0,0 +1,86 @@
+package com.sd.business.service.order.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.sd.business.entity.department.po.Department;
+import com.sd.business.entity.order.po.OrderInfo;
+import com.sd.business.entity.order.po.OrderProofingRegistration;
+import com.sd.business.entity.order.po.OrderSku;
+import com.sd.business.mapper.order.OrderProofingRegistrationMapper;
+import com.sd.business.service.order.OrderProofingRegistrationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sd.business.service.order.OrderService;
+import com.sd.business.service.order.OrderSkuService;
+import com.sd.framework.util.Assert;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sd.business.entity.order.vo.OrderProofingRegistrationVo;
+import com.sd.business.entity.order.dto.OrderProofingRegistrationSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.sd.business.entity.order.dto.OrderProofingRegistrationDto;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 订单打样登记 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-19
+ */
+@Service
+public class OrderProofingRegistrationServiceImpl extends ServiceImpl<OrderProofingRegistrationMapper, OrderProofingRegistration> implements OrderProofingRegistrationService {
+
+    @Autowired
+    private OrderService orderService;
+
+    @Autowired
+    private OrderSkuService orderSkuService;
+
+    @Override
+    public Page<OrderProofingRegistrationVo> getPage(OrderProofingRegistrationSelectDto dto) {
+        IWrapper<OrderProofingRegistration> wrapper = getWrapper();
+        wrapper.orderByDesc("opr", OrderProofingRegistration::getId);
+        wrapper.eq("d", Department::getId, dto.getDepartmentId());
+        wrapper.and(StrUtil.isNotBlank(dto.getOrderCode()), q -> q
+                .like("oi", OrderInfo::getCode, dto.getOrderCode())
+                .or()
+                .like("oi", OrderInfo::getWlnCode, dto.getOrderCode()));
+        Page<OrderProofingRegistrationVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(OrderProofingRegistrationDto dto) {
+        OrderInfo orderInfo = orderService.getById(dto.getOrderId());
+        Assert.notNull(orderInfo, "未知订单");
+
+        dto.setOperator(SecurityUtils.getLoginUser().getUser().getNickName());
+        this.save(dto);
+
+        // 打样金额
+        BigDecimal proofingFee = dto.getUnitPrice().add(dto.getCustomProcessingFee());
+        // 取出订单任意一个sku,将打样金额保存
+        OrderSku orderSku = orderSkuService.getOne(q -> q.eq(OrderSku::getOrderId, orderInfo.getId()));
+        orderSku.setProofingFee(orderSku.getProofingFee().add(proofingFee));
+        orderInfo.setProofingFee(orderInfo.getProofingFee().add(proofingFee));
+        orderInfo.setTotalAmount(orderInfo.getTotalAmount().add(proofingFee));
+        orderService.updateById(orderInfo);
+        orderSkuService.updateById(orderSku);
+    }
+
+    @Override
+    public void edit(OrderProofingRegistrationDto dto) {
+        this.updateById(dto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 7 - 10
sd-business/src/main/java/com/sd/business/service/order/impl/OrderSalesShipmentStatisticsServiceImpl.java

@@ -164,8 +164,7 @@ public class OrderSalesShipmentStatisticsServiceImpl implements OrderSalesShipme
                                 .divide(days.multiply(new BigDecimal("0.5"))
                                                 .multiply(beginQuantityNinetyDays.add(endQuantity))
                                                 .divide(item.getNinetyDaysSalesQuantity(), 4, RoundingMode.HALF_UP),
-                                        4, RoundingMode.HALF_UP)
-                                .multiply(new BigDecimal(100));
+                                        4, RoundingMode.HALF_UP);
                     }
                     if (ObjectUtil.notEqual(item.getSixtyDaysSalesQuantity(), BigDecimal.ZERO)
                             && ObjectUtil.notEqual(beginQuantitySixtyDays.add(endQuantity), BigDecimal.ZERO)) {
@@ -174,8 +173,7 @@ public class OrderSalesShipmentStatisticsServiceImpl implements OrderSalesShipme
                                 .divide(days.multiply(new BigDecimal("0.5"))
                                                 .multiply(beginQuantitySixtyDays.add(endQuantity))
                                                 .divide(item.getSixtyDaysSalesQuantity(), 4, RoundingMode.HALF_UP),
-                                        4, RoundingMode.HALF_UP)
-                                .multiply(new BigDecimal(100));
+                                        4, RoundingMode.HALF_UP);
                     }
                     if (ObjectUtil.notEqual(item.getThirtyDaysSalesQuantity(), BigDecimal.ZERO)
                             && ObjectUtil.notEqual(beginQuantityThirtyDays.add(endQuantity), BigDecimal.ZERO)) {
@@ -184,8 +182,7 @@ public class OrderSalesShipmentStatisticsServiceImpl implements OrderSalesShipme
                                 .divide(days.multiply(new BigDecimal("0.5"))
                                                 .multiply(beginQuantityThirtyDays.add(endQuantity))
                                                 .divide(item.getThirtyDaysSalesQuantity(), 4, RoundingMode.HALF_UP),
-                                        4, RoundingMode.HALF_UP)
-                                .multiply(new BigDecimal(100));
+                                        4, RoundingMode.HALF_UP);
                     }
                     if (ObjectUtil.equals(endQuantity, BigDecimal.ZERO)) {
                         return null;
@@ -199,13 +196,13 @@ public class OrderSalesShipmentStatisticsServiceImpl implements OrderSalesShipme
                     vo.setSalesQuantityThirtyDays(item.getThirtyDaysSalesQuantity());
                     vo.setSalesQuantitySixtyDays(item.getSixtyDaysSalesQuantity());
                     vo.setSalesQuantityNinetyDays(item.getNinetyDaysSalesQuantity());
-                    vo.setTurnoverRateNinetyDays(turnoverRateNinetyDays.stripTrailingZeros().toPlainString() + "%");
-                    vo.setTurnoverRateSixtyDays(turnoverRateSixtyDays.stripTrailingZeros().toPlainString() + "%");
-                    vo.setTurnoverRateThirtyDays(turnoverRateThirtyDays.stripTrailingZeros().toPlainString() + "%");
+                    vo.setTurnoverRateNinetyDays(turnoverRateNinetyDays);
+                    vo.setTurnoverRateSixtyDays(turnoverRateSixtyDays);
+                    vo.setTurnoverRateThirtyDays(turnoverRateThirtyDays);
                     vo.setQuantity(endQuantity);
                     return vo;
                 }).filter(Objects::nonNull)
-                .sorted(comparing(item -> new BigDecimal(item.getTurnoverRateNinetyDays().replace("%", ""))))
+                .sorted(comparing(TurnoverRateStatisticsVo::getTurnoverRateNinetyDays))
                 .collect(Collectors.toList());
         return list;
     }

+ 38 - 15
sd-business/src/main/java/com/sd/business/service/order/impl/OrderServiceImpl.java

@@ -321,16 +321,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
         orderDto.setExceptionType(OrderExceptionTypeEnum.NORMAL.getKey().toString());
         if (Objects.equals(orderDto.getType(), 2)) {
             orderDto.setClassify(OrderClassifyEnum.OUTSOURCE_ORDER.getKey());
-        } else if (Objects.equals(orderDto.getType(), 1)) {
-            // 拥有采购角色的账号创建的自主订单为采购订单
-            Long userId = SecurityUtils.getUserId();
-            Set<String> roleKeys = roleService.selectRolePermissionByUserId(userId);
-            if (!Collections.disjoint(roleKeys, Arrays.asList("sypurchasing", "purchasingOfficer", "bzpurchasing"))) {
-                orderDto.setClassify(OrderClassifyEnum.PURCHASE_ORDER.getKey());
-            }
-        }
-        // 委外订单修改金额
-        if (ObjectUtil.equals(orderDto.getType(), 2)) {
+            // 委外订单修改金额
             orderDto.setProductTotalAmount(BigDecimal.ZERO);
             orderDto.setDeliveryMaterialsFee(BigDecimal.ZERO);
             orderDto.setManagementFee(BigDecimal.ZERO);
@@ -341,7 +332,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
                     .add(orderDto.getDeliveryMaterialsFee())
                     .add(orderDto.getPackingLabor())
                     .add(orderDto.getPackagingMaterialCost())
+                    .add(orderDto.getProofingFee())
                     .add(orderDto.getManagementFee()));
+        } else if (Objects.equals(orderDto.getType(), 1)) {
+            // 拥有采购角色的账号创建的自主订单为采购订单
+            Long userId = SecurityUtils.getUserId();
+            Set<String> roleKeys = roleService.selectRolePermissionByUserId(userId);
+            if (!Collections.disjoint(roleKeys, Arrays.asList("sypurchasing", "purchasingOfficer", "bzpurchasing"))) {
+                orderDto.setClassify(OrderClassifyEnum.PURCHASE_ORDER.getKey());
+            }
         }
         this.save(orderDto);
 
@@ -590,6 +589,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
                     .add(dto.getDeliveryMaterialsFee())
                     .add(dto.getPackingLabor())
                     .add(dto.getPackagingMaterialCost())
+                    .add(dto.getProofingFee())
                     .add(dto.getManagementFee()));
             // 清空订单快递包材
             dto.setOrderPackageBomList(null);
@@ -1300,14 +1300,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
                     .map(item -> item.getInternalSellingPrice().multiply(item.getQuantity()))
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
         }
-        orderInfo.setDeliveryMaterialsFee(newDeliveryMaterialsFee);
         List<OrderSku> orderSkuList = orderSkuService.list(q -> q.eq(OrderSku::getOrderId, orderInfo.getId()));
+        // sku的数量
         BigDecimal quantity = orderSkuList.stream().map(OrderSku::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
+        // sku快递包材费
+        BigDecimal skuDeliveryMaterialsFee = newDeliveryMaterialsFee.divide(quantity, 3, RoundingMode.CEILING);
         orderSkuList.forEach(item ->
-                item.setDeliveryMaterialsFee(orderInfo.getDeliveryMaterialsFee()
-                        .divide(quantity, 4, RoundingMode.HALF_UP))
+                item.setDeliveryMaterialsFee(skuDeliveryMaterialsFee)
         );
-        orderInfo.setTotalAmount(totalAmount.subtract(oldDeliveryMaterialsFee).add(newDeliveryMaterialsFee));
+        // 订单更新快递包材费
+        orderInfo.setDeliveryMaterialsFee(skuDeliveryMaterialsFee.multiply(quantity).setScale(2, RoundingMode.HALF_UP));
+        orderInfo.setTotalAmount(totalAmount.subtract(oldDeliveryMaterialsFee).add(orderInfo.getDeliveryMaterialsFee()));
         this.updateById(orderInfo);
         orderSkuService.updateBatchById(orderSkuList);
         ObsFileUtil.editFile(dto.getOuterBoxSelfAdhesiveStickerFile(), dto.getId(), 1);
@@ -1444,12 +1447,32 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
             orderSkuExportVo.setErpCode(item.getErpCode());
             orderSkuExportVo.setFeatureCode(item.getFeatureCode());
             orderSkuExportVo.setQuantity(item.getQuantity());
-            orderSkuExportVo.setTotalAmount(subtotal.multiply(item.getQuantity()).add(orderPackagePrice));
+            orderSkuExportVo.setTotalAmount(subtotal.multiply(item.getQuantity()).add(orderPackagePrice).setScale(2, RoundingMode.HALF_UP));
             return orderSkuExportVo;
         }).collect(Collectors.toList());
         ExcelUtil.export(response, exportVoList, OrderSkuExportVo.class);
     }
 
+    @Override
+    public Page<OrderInfoVo> getOrderSelectListByCode(OrderSelectDto dto) {
+        IWrapper<OrderInfo> wrapper = getWrapper();
+        wrapper.orderByDesc("o", OrderInfo::getId);
+        wrapper.and(q -> q
+                .and(r -> r.eq("o", OrderInfo::getWlnStorageCode, "T007").ge("o", OrderInfo::getWlnStatus, 2))
+                .or(r -> r.ne("o", OrderInfo::getWlnStorageCode, "T007").ge("o", OrderInfo::getWlnStatus, 1))
+                .or(r -> r.eq("o", OrderInfo::getSource, 1))
+        );
+        wrapper.and(StrUtil.isNotBlank(dto.getCode()), q -> q
+                .like("o", OrderInfo::getCode, dto.getCode())
+                .or()
+                .like("o", OrderInfo::getWlnCode, dto.getCode()));
+
+        wrapper.ne("o", OrderInfo::getExceptionType, OrderExceptionTypeEnum.NORMAL.getKey().toString());
+
+        Page<OrderInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
     /**
      * 删除订单以及订单关联数据
      */

+ 2 - 2
sd-business/src/main/java/com/sd/business/service/statement/impl/DocumentByOrderExcelCellMergeStrategy.java

@@ -17,12 +17,12 @@ public class DocumentByOrderExcelCellMergeStrategy extends AbstractMergeStrategy
     private final int maxRow;
 
     // sku需要合并的列
-    private final List<Integer> skuColIndex = Arrays.asList(3, 4, 5, 16, 17);
+    private final List<Integer> skuColIndex = Arrays.asList(3, 4, 5, 17, 18);
     // sku无需合并的行
     private final List<Integer> skuRowIndex = new ArrayList<>();
 
     // 订单需要合并的列
-    private final List<Integer> orderColIndex = Arrays.asList(0, 1, 2, 18);
+    private final List<Integer> orderColIndex = Arrays.asList(0, 1, 2, 19);
     // 订单无需合并的行
     private final List<Integer> orderRowIndex = new ArrayList<>();
 

+ 2 - 2
sd-business/src/main/java/com/sd/business/service/statement/impl/SalesOutWarehouseDetailsExcelCellMergeStrategy.java

@@ -17,12 +17,12 @@ public class SalesOutWarehouseDetailsExcelCellMergeStrategy extends AbstractMerg
     private final int maxRow;
 
     // sku需要合并的列
-    private final List<Integer> skuColIndex = Arrays.asList(6, 7, 8, 22, 23);
+    private final List<Integer> skuColIndex = Arrays.asList(6, 7, 8, 23, 24);
     // sku无需合并的行
     private final List<Integer> skuRowIndex = new ArrayList<>();
 
     // 订单需要合并的列
-    private final List<Integer> orderColIndex = Arrays.asList(0, 1, 2, 3, 4, 5, 24, 25);
+    private final List<Integer> orderColIndex = Arrays.asList(0, 1, 2, 3, 4, 5, 25);
     // 订单无需合并的行
     private final List<Integer> orderRowIndex = new ArrayList<>();
 

+ 1 - 0
sd-business/src/main/java/com/sd/business/service/statement/impl/StatementOfAccountExportServiceImpl.java

@@ -57,6 +57,7 @@ public class StatementOfAccountExportServiceImpl implements StatementOfAccountEx
         map.put("totalDeliveryMaterialsFeeSummary", StreamUtil.bigDecimalAdd(list, DocumentByBomVo::getDeliveryMaterialsFeeSummary));
         map.put("totalPackingLaborSummary", StreamUtil.bigDecimalAdd(list, DocumentByBomVo::getPackingLaborSummary));
         map.put("totalManagementFeeSummary", StreamUtil.bigDecimalAdd(list, DocumentByBomVo::getManagementFeeSummary));
+        map.put("totalProofingFeeSummary", StreamUtil.bigDecimalAdd(list, DocumentByBomVo::getProofingFeeSummary));
 
         TemplateExcelUtil.writeBrowser("bomDocument.xlsx", OrderClassifyEnum.getEnum(orderClassify).getValue() + "-bom对账单", response, list, map);
     }

+ 18 - 4
sd-business/src/main/java/com/sd/business/service/statement/impl/StatementOfAccountServiceImpl.java

@@ -280,10 +280,15 @@ public class StatementOfAccountServiceImpl extends ServiceImpl<StatementOfAccoun
                                 .add(item.getPackagingMaterialCost())
                                 .add(item.getManagementFee())
                         )
+                        .proofingFee(item.getProofingFee())
                         .build())
-                .peek(item -> item.setSubtotal(item.getQuantity().multiply(item.getUnitPrice()).setScale(2, RoundingMode.HALF_UP)))
+                .peek(item -> item.setSubtotal(item.getQuantity().multiply(item.getUnitPrice())
+                        .add(item.getProofingFee())
+                        .setScale(2, RoundingMode.HALF_UP)))
                 .peek(item -> item.setTotal(item.getSubtotal()))
-                .peek(item -> item.setUnitPrice(item.getUnitPrice().setScale(2, RoundingMode.HALF_UP)))
+                .peek(item -> item.setUnitPrice(item.getUnitPrice()
+                        .add(item.getProofingFee().divide(item.getQuantity(), 2, RoundingMode.HALF_UP))
+                        .setScale(2, RoundingMode.HALF_UP)))
                 .collect(Collectors.toList());
 
         // 查询赠品sku
@@ -354,6 +359,7 @@ public class StatementOfAccountServiceImpl extends ServiceImpl<StatementOfAccoun
                         .deliveryMaterialsFeeSummary(item.getDeliveryMaterialsFee().multiply(item.getQuantity()))
                         .packingLaborSummary(item.getPackingLabor().multiply(item.getQuantity()))
                         .managementFeeSummary(item.getManagementFee().multiply(item.getQuantity()))
+                        .proofingFeeSummary(item.getProofingFee())
                         .build())
                 .peek(item -> item.setSubtotal(
                         item.getUnitPrice()
@@ -364,6 +370,7 @@ public class StatementOfAccountServiceImpl extends ServiceImpl<StatementOfAccoun
                                 .add(item.getDeliveryMaterialsFeeSummary())
                                 .add(item.getPackingLaborSummary())
                                 .add(item.getManagementFeeSummary())
+                                .add(item.getProofingFeeSummary())
                                 .setScale(2, RoundingMode.HALF_UP)
                 ))
                 .peek(item -> item.setTotal(item.getSubtotal()))
@@ -389,6 +396,7 @@ public class StatementOfAccountServiceImpl extends ServiceImpl<StatementOfAccoun
                             v1.setDeliveryMaterialsFeeSummary(v1.getDeliveryMaterialsFeeSummary().add(v2.getDeliveryMaterialsFeeSummary()));
                             v1.setPackingLaborSummary(v1.getPackingLaborSummary().add(v2.getPackingLaborSummary()));
                             v1.setManagementFeeSummary(v1.getManagementFeeSummary().add(v2.getManagementFeeSummary()));
+                            v1.setProofingFeeSummary(v1.getProofingFeeSummary().add(v2.getProofingFeeSummary()));
                             v1.setSubtotal(v1.getSubtotal().add(v2.getSubtotal()));
                             v1.setTotal(v1.getSubtotal());
                             return v1;
@@ -595,6 +603,7 @@ public class StatementOfAccountServiceImpl extends ServiceImpl<StatementOfAccoun
                     skuSpec.setOrderSkuId(item.getId());
                     skuSpec.setSkuSpecId(item.getSkuSpecId());
                     skuSpec.setQuantity(item.getQuantity());
+                    skuSpec.setProofingFee(item.getProofingFee());
                     skuSpec.setUnitPrice(item.getUnitPrice()
                             .add(item.getCustomProcessingFee())
                             .add(item.getLssueFee())
@@ -604,8 +613,12 @@ public class StatementOfAccountServiceImpl extends ServiceImpl<StatementOfAccoun
                             .add(item.getManagementFee()));
                     return skuSpec;
                 })
-                .peek(item -> item.setSubtotal(item.getQuantity().multiply(item.getUnitPrice()).setScale(2, RoundingMode.HALF_UP)))
-                .peek(item -> item.setUnitPrice(item.getUnitPrice().setScale(2, RoundingMode.HALF_UP)))
+                .peek(item -> item.setSubtotal(item.getQuantity().multiply(item.getUnitPrice())
+                        .add(item.getProofingFee())
+                        .setScale(2, RoundingMode.HALF_UP)))
+                .peek(item -> item.setUnitPrice(item.getUnitPrice()
+                        .add(item.getProofingFee().divide(item.getQuantity(), 2, RoundingMode.HALF_UP))
+                        .setScale(2, RoundingMode.HALF_UP)))
                 .collect(Collectors.toList());
 
         skuSpecService.attributeAssign(skuSpecList, DocumentByOrderVo.SkuSpec::getSkuSpecId, (item, skuSpec) -> {
@@ -638,6 +651,7 @@ public class StatementOfAccountServiceImpl extends ServiceImpl<StatementOfAccoun
                     bomSpec.setDeliveryMaterialsFeeSummary(item.getDeliveryMaterialsFee());
                     bomSpec.setPackingLaborSummary(item.getPackingLabor());
                     bomSpec.setManagementFeeSummary(item.getManagementFee());
+                    bomSpec.setProofingFeeSummary(item.getProofingFee().divide(item.getQuantity(), 2, RoundingMode.HALF_UP));
                     return bomSpec;
                 })
                 .collect(Collectors.toList());

+ 1 - 0
sd-business/src/main/java/com/sd/business/strategy/impl/DocumentByOrderExcelExportStrategy.java

@@ -85,6 +85,7 @@ public class DocumentByOrderExcelExportStrategy implements ExcelExportStrategy<M
                             .deliveryMaterialsFeeSummary(bomSpec.getDeliveryMaterialsFeeSummary())
                             .packingLaborSummary(bomSpec.getPackingLaborSummary())
                             .managementFeeSummary(bomSpec.getManagementFeeSummary())
+                            .proofingFeeSummary(bomSpec.getProofingFeeSummary())
                             .build();
                     exportDocumentByOrderBos.add(exportDocumentByOrderBo);
                 }

+ 1 - 0
sd-business/src/main/java/com/sd/business/strategy/impl/SalesOutWarehouseDetailsExportStrategy.java

@@ -77,6 +77,7 @@ public class SalesOutWarehouseDetailsExportStrategy implements ExcelExportStrate
                             .deliveryMaterialsFeeSummary(bomSpec.getDeliveryMaterialsFeeSummary())
                             .packingLaborSummary(bomSpec.getPackingLaborSummary())
                             .managementFeeSummary(bomSpec.getManagementFeeSummary())
+                            .proofingFeeSummary(bomSpec.getProofingFeeSummary())
 
                             .shopName(documentByOrderVo.getShopName())
                             .departmentName(documentByOrderVo.getDepartmentName())

+ 1 - 0
sd-business/src/main/resources/mapper/order/OrderMapper.xml

@@ -31,6 +31,7 @@
                o.packing_labor,
                o.management_fee,
                o.packaging_material_cost,
+               o.proofing_fee,
                o.tax_rate,
                o.shipping_time,
                o.consignee,

+ 30 - 0
sd-business/src/main/resources/mapper/order/OrderProofingRegistrationMapper.xml

@@ -0,0 +1,30 @@
+<?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.OrderProofingRegistrationMapper">
+    <select id="getPage" resultType="com.sd.business.entity.order.vo.OrderProofingRegistrationVo">
+        select
+            opr.id,
+            opr.department_id,
+            opr.order_id,
+            opr.length,
+            opr.width,
+            opr.height,
+            opr.use_new_bom,
+            opr.unit_price,
+            opr.custom_processing_type,
+            opr.processing_num,
+            opr.custom_processing_fee,
+            opr.operator,
+            opr.create_user,
+            opr.create_time,
+            opr.update_user,
+            opr.update_time,
+            concat(oi.code, '(', oi.wln_code, ')') orderCode,
+            d.name departmentName
+        from order_proofing_registration opr
+            inner join order_info oi on opr.order_id = oi.id
+            inner join department d on opr.department_id = d.id
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

BIN
sd-starter/src/main/resources/template/bomDocument.xlsx


BIN
sd-starter/src/main/resources/template/orderDocument.xlsx


BIN
sd-starter/src/main/resources/template/salesOutWarehouseDetails.xlsx


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

@@ -188,6 +188,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         orderInfo.setPackingLabor(BigDecimal.ZERO);
         orderInfo.setManagementFee(BigDecimal.ZERO);
         orderInfo.setPackagingMaterialCost(BigDecimal.ZERO);
+        orderInfo.setProofingFee(BigDecimal.ZERO);
 
         // 赋值订单异常类型
         orderInfo.setExceptionType(OrderExceptionTypeEnum.NORMAL.getKey().toString());
@@ -563,6 +564,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         orderSku.setPackingLabor(BigDecimal.ZERO);
         orderSku.setManagementFee(BigDecimal.ZERO);
         orderSku.setPackagingMaterialCost(BigDecimal.ZERO);
+        orderSku.setProofingFee(BigDecimal.ZERO);
 
         if (skuSpec != null) {
             orderSku.setSkuId(skuSpec.getSkuId());