瀏覽代碼

feat(order): 添加订单审核和拆单功能

- 新增 updateCheckStatus 方法用于修改订单审核状态
- 添加父订单ID字段 parentOrderId 用于订单层级关系
- 重构拆单相关字段:shippedQuantity 改为 spiltStatus,unshippedQuantity 改为 isSplitChild
- 新增审核状态 checkStatus 字段(0待审核 1已通过 2已驳回)
- 新增分配状态 assignmentStatus 字段(0待分配 1已分配)
- 移除废弃的商品编码 productCode 字段
- 订单查询条件中添加审核状态过滤
- 订单创建时自动将订单时间的时分秒更新为当前时间
- 在VO类中同步添加相关字段以支持前端展示
hurx 3 月之前
父節點
當前提交
5c861df935

+ 15 - 8
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/OrderMain.java

@@ -35,6 +35,11 @@ public class OrderMain extends TenantEntity {
     @TableId(value = "id")
     private Long id;
 
+    /**
+     * 父订单id
+     */
+    private Long parentOrderId;
+
     /**
      * 订单编号
      */
@@ -181,14 +186,14 @@ public class OrderMain extends TenantEntity {
     private Date receivingTime;
 
     /**
-     * 已发货数量
+     * 拆单状态:0=未拆, 1=已拆出子单
      */
-    private Long shippedQuantity;
+    private Long spiltStatus;
 
     /**
-     * 未发货数量
+     * 是否为拆分子单:0=是, 1=否
      */
-    private Long unshippedQuantity;
+    private Long isSplitChild;
 
     /**
      * 包裹数量
@@ -235,10 +240,6 @@ public class OrderMain extends TenantEntity {
      */
     private String orderCategory;
 
-    /**
-     * 商品编码
-     */
-    private String productCode;
 
     /**
      * 取消或异常原因
@@ -262,6 +263,12 @@ public class OrderMain extends TenantEntity {
 
     private String dataSource;
 
+    /*审核状态(0 待审核 1已通过 2已驳回)*/
+    private String checkStatus;
+
+    /*分配状态(0待分配 1已分配 )*/
+    private String assignmentStatus;
+
     /**
      * 删除标志(0代表存在 2代表删除)
      */

+ 15 - 4
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/bo/OrderMainBo.java

@@ -31,6 +31,11 @@ public class OrderMainBo extends BaseEntity {
      */
     private Long id;
 
+    /**
+     * 父订单id
+     */
+    private Long parentOrderId;
+
     /**
      * 订单编号
      */
@@ -182,14 +187,14 @@ public class OrderMainBo extends BaseEntity {
     private Date receivingTime;
 
     /**
-     * 已发货数量
+     * 拆单状态:0=未拆, 1=已拆出子单
      */
-    private Long shippedQuantity;
+    private Long spiltStatus;
 
     /**
-     * 未发货数量
+     * 是否为拆分子单:0=是, 1=否
      */
-    private Long unshippedQuantity;
+    private Long isSplitChild;
 
     /**
      * 包裹数量
@@ -269,6 +274,12 @@ public class OrderMainBo extends BaseEntity {
      */
     private String remark;
 
+    /*审核状态(0 待审核 1已通过 2已驳回)*/
+    private String checkStatus;
+
+    /*分配状态(0待分配 1已分配 )*/
+    private String assignmentStatus;
+
     /**
      * 订单状态
      */

+ 23 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/vo/OrderMainVo.java

@@ -38,6 +38,11 @@ public class OrderMainVo implements Serializable {
     @ExcelProperty(value = "主键ID")
     private Long id;
 
+    /**
+     * 父订单id
+     */
+    private Long parentOrderId;
+
     /**
      * 订单编号
      */
@@ -325,6 +330,24 @@ public class OrderMainVo implements Serializable {
 
     private String dataSource;
 
+    /*审核状态(0 待审核 1已通过 2已驳回)*/
+    private String checkStatus;
+
+    /*分配状态(0待分配 1已分配 )*/
+    private String assignmentStatus;
+
+    /**
+     * 拆单状态:0=未拆, 1=已拆出子单
+     */
+    private Long spiltStatus;
+
+    /**
+     * 是否为拆分子单:0=是, 1=否
+     */
+    private Long isSplitChild;
+
+    private String platformCode;
+
     private String createTime;
 
     private String customerName;

+ 9 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/IOrderMainService.java

@@ -64,6 +64,15 @@ public interface IOrderMainService extends IService<OrderMain> {
 
     int updateStatus(OrderMainBo bo);
 
+
+    /**
+     * 修改订单审核状态
+     *
+     * @param bo 订单主信息
+     * @return 是否修改成功
+     */
+    int updateCheckStatus(OrderMainBo bo);
+
     /**
      * 校验并批量删除订单主信息信息
      *

+ 32 - 8
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/impl/OrderMainServiceImpl.java

@@ -29,10 +29,7 @@ import org.dromara.order.service.IOrderMainService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -155,22 +152,20 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
         lqw.eq(bo.getConfirmTime() != null, OrderMain::getConfirmTime, bo.getConfirmTime());
         lqw.eq(bo.getShippingTime() != null, OrderMain::getShippingTime, bo.getShippingTime());
         lqw.eq(bo.getReceivingTime() != null, OrderMain::getReceivingTime, bo.getReceivingTime());
-        lqw.eq(bo.getShippedQuantity() != null, OrderMain::getShippedQuantity, bo.getShippedQuantity());
-        lqw.eq(bo.getUnshippedQuantity() != null, OrderMain::getUnshippedQuantity, bo.getUnshippedQuantity());
         lqw.eq(bo.getPackageCount() != null, OrderMain::getPackageCount, bo.getPackageCount());
         lqw.eq(bo.getSignedQuantity() != null, OrderMain::getSignedQuantity, bo.getSignedQuantity());
         lqw.eq(bo.getAfterSaleCompleted() != null, OrderMain::getAfterSaleCompleted, bo.getAfterSaleCompleted());
         lqw.eq(bo.getAfterSalePending() != null, OrderMain::getAfterSalePending, bo.getAfterSalePending());
         lqw.eq(StringUtils.isNotBlank(bo.getPushStatus()), OrderMain::getPushStatus, bo.getPushStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getCheckStatus()), OrderMain::getCheckStatus, bo.getCheckStatus());
         lqw.eq(StringUtils.isNotBlank(bo.getAttachmentPath()), OrderMain::getAttachmentPath, bo.getAttachmentPath());
         lqw.eq(StringUtils.isNotBlank(bo.getDeliveryType()), OrderMain::getDeliveryType, bo.getDeliveryType());
         lqw.eq(StringUtils.isNotBlank(bo.getOrderCategory()), OrderMain::getOrderCategory, bo.getOrderCategory());
-        lqw.eq(StringUtils.isNotBlank(bo.getProductCode()), OrderMain::getProductCode, bo.getProductCode());
         lqw.eq(StringUtils.isNotBlank(bo.getExpenseType()), OrderMain::getExpenseType, bo.getExpenseType());
         lqw.eq(StringUtils.isNotBlank(bo.getStatus()), OrderMain::getStatus, bo.getStatus());
         if (params != null) {
             lqw.between(params.get("beginTime") != null && params.get("endTime") != null,
-                OrderMain::getCreateTime, params.get("beginTime"), params.get("endTime"));
+                OrderMain::getOrderTime, params.get("beginTime"), params.get("endTime"));
         }
         if (null != bo.getOrderStatuses() && bo.getOrderStatuses().contains(",")) {
             lqw.in(OrderMain::getOrderStatus, bo.getOrderStatuses().split(","));
@@ -204,6 +199,21 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
             // 2. 生成订单号并转换主单
             String orderNo = SequenceUtils.generateOrderCode("RS");
             bo.setOrderNo(orderNo);
+            Date originalDate = bo.getOrderTime(); // 假设是 2025-01-06 00:00:00
+            if (originalDate != null) {
+                Calendar calOriginal = Calendar.getInstance();
+                calOriginal.setTime(originalDate);
+
+                Calendar calNow = Calendar.getInstance(); // 获取当前时分秒
+
+                // 保留原日期的年月日,替换时分秒为当前时间
+                calOriginal.set(Calendar.HOUR_OF_DAY, calNow.get(Calendar.HOUR_OF_DAY));
+                calOriginal.set(Calendar.MINUTE, calNow.get(Calendar.MINUTE));
+                calOriginal.set(Calendar.SECOND, calNow.get(Calendar.SECOND));
+                calOriginal.set(Calendar.MILLISECOND, calNow.get(Calendar.MILLISECOND));
+
+                bo.setOrderTime(calOriginal.getTime());
+            }
             OrderMain orderMain = MapstructUtils.convert(bo, OrderMain.class);
 
             validEntityBeforeSave(orderMain);
@@ -270,6 +280,20 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
         return baseMapper.updateById(order);
     }
 
+    /**
+     * 修改审核状态
+     *
+     * @param bo 信息
+     * @return 结果
+     */
+    @Override
+    public int updateCheckStatus(OrderMainBo bo) {
+        OrderMain order = new OrderMain();
+        order.setId(bo.getId());
+        order.setCheckStatus(bo.getCheckStatus());
+        return baseMapper.updateById(order);
+    }
+
     /**
      * 保存前的数据校验
      */