Procházet zdrojové kódy

feat:增加开发订单增删改查接口(未完成)

DESKTOP-6104BU4\Administrator před 6 měsíci
rodič
revize
264805ced2
18 změnil soubory, kde provedl 1224 přidání a 26 odebrání
  1. 3 3
      ruoyi-admin/src/main/resources/application-dev.yml
  2. 3 3
      ruoyi-admin/src/main/resources/application.yml
  3. 23 0
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DevelopmentOrderConstants.java
  4. 29 11
      ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/TableDataInfo.java
  5. 1 1
      ruoyi-modules/ruoyi-bulkOrder/pom.xml
  6. 46 0
      ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/controller/DevelopmentOrderController.java
  7. 218 0
      ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/domain/DevelopmentOrder.java
  8. 3 0
      ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/domain/FaKuyouUserOrder.java
  9. 235 0
      ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/domain/bo/DevelopmentOrderBo.java
  10. 170 0
      ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/domain/vo/DevelopmentOrderTableDataInfo.java
  11. 218 0
      ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/domain/vo/DevelopmentOrderVo.java
  12. 27 0
      ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/mapper/DevelopmentOrderMapper.java
  13. 25 0
      ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/service/DevelopmentOrderService.java
  14. 197 0
      ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/service/impl/DevelopmentOrderServiceImpl.java
  15. 1 1
      ruoyi-modules/ruoyi-bulkOrder/src/main/resources/mapper/BulkOrderManagementMapper.xml
  16. 20 0
      ruoyi-modules/ruoyi-bulkOrder/src/main/resources/mapper/DevelopmentOrderMapper.xml
  17. 4 6
      ruoyi-modules/ruoyi-commodityManagement/pom.xml
  18. 1 1
      ruoyi-modules/ruoyi-commodityManagement/src/main/java/org/dromara/commodityManagement/controller/BrandController.java

+ 3 - 3
ruoyi-admin/src/main/resources/application-dev.yml

@@ -1,7 +1,7 @@
 --- # 监控中心配置
 spring.boot.admin.client:
   # 增加客户端开关
-  enabled: true
+  enabled: false
   url: http://localhost:9090/admin
   instance:
     service-host-type: IP
@@ -13,7 +13,7 @@ spring.boot.admin.client:
 
 --- # snail-job 配置
 snail-job:
-  enabled: true
+  enabled: false
   # 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务
   group: "ruoyi_group"
   # SnailJob 接入验证令牌 详见 script/sql/ry_job.sql `sj_group_config` 表
@@ -104,7 +104,7 @@ spring.data:
     # 数据库索引
     database: 0
     # redis 密码必须配置
-    password: ruoyi123
+#    password: ruoyi123
     # 连接超时时间
     timeout: 10s
     # 是否开启ssl

+ 3 - 3
ruoyi-admin/src/main/resources/application.yml

@@ -8,7 +8,7 @@ ruoyi:
   copyrightYear: 2024
 
 captcha:
-  enable: true
+  enable: false
   # 页面 <参数设置> 可开启关闭 验证码校验
   # 验证码类型 math 数组计算 char 字符验证
   type: MATH
@@ -22,7 +22,7 @@ captcha:
 # 开发环境配置
 server:
   # 服务器的HTTP端口,默认为8080
-  port: 8080
+  port: 8110
   servlet:
     # 应用的访问路径
     context-path: /
@@ -172,7 +172,7 @@ mybatis-encryptor:
 # api接口加密
 api-decrypt:
   # 是否开启全局接口加密
-  enabled: true
+  enabled: false
   # AES 加密头标识
   headerFlag: encrypt-key
   # 响应加密公钥 非对称算法的公私钥 如:SM2,RSA 使用者请自行更换

+ 23 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/DevelopmentOrderConstants.java

@@ -0,0 +1,23 @@
+package org.dromara.common.core.constant;
+
+public interface DevelopmentOrderConstants {
+
+//  待处理
+    Long PENDING_PROCESSING = 0L;
+//  画图中
+    Long IN_THE_DRAWING = 1L;
+//  确认中
+    Long CONFIRMING_IN_PROGRESS = 2L;
+//  修改中
+    Long UNDER_MODIFICATION = 3L;
+//  调色中
+    Long IN_COLOR_ADJUSTMENT = 4L;
+//  排版中
+    Long IN_TYPESETTING = 5L;
+//  打版中
+    Long PRINTING_IN_PROGRESS = 6L;
+//  已完成
+    Long COMPLETED = 7L;
+//  已取消
+    Long CANCELLED = 8L;
+}

+ 29 - 11
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/TableDataInfo.java

@@ -4,6 +4,7 @@ import cn.hutool.http.HttpStatus;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.springframework.data.domain.Page;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -21,16 +22,39 @@ public class TableDataInfo<T> implements Serializable {
     @Serial
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 封装列表数据和总记录数
+     */
+    @Data
+    @NoArgsConstructor
+    public static class DataWrapper<T> {
+        private List<T> list;
+        private long total;
+
+        public DataWrapper(List<T> list, long total) {
+            this.list = list;
+            this.total = total;
+        }
+
+    }
+
     /**
      * 总记录数
+     * 已不再单独使用
      */
     private long total;
 
     /**
      * 列表数据
+     * 已不再单独使用
      */
     private List<T> rows;
 
+    /**
+     * 列表数据和总记录数的封装
+     */
+    private DataWrapper<T> data;
+
     /**
      * 消息状态码
      */
@@ -48,21 +72,17 @@ public class TableDataInfo<T> implements Serializable {
      * @param total 总记录数
      */
     public TableDataInfo(List<T> list, long total) {
-        this.rows = list;
-        this.total = total;
-        this.code = HttpStatus.HTTP_OK;
-        this.msg = "查询成功";
+        this.data = new DataWrapper<>(list, total);
     }
 
+
     /**
      * 根据分页对象构建表格分页数据对象
      */
     public static <T> TableDataInfo<T> build(IPage<T> page) {
-        TableDataInfo<T> rspData = new TableDataInfo<>();
+        TableDataInfo<T> rspData = new TableDataInfo<>(page.getRecords(), page.getTotal());
         rspData.setCode(HttpStatus.HTTP_OK);
         rspData.setMsg("查询成功");
-        rspData.setRows(page.getRecords());
-        rspData.setTotal(page.getTotal());
         return rspData;
     }
 
@@ -70,11 +90,9 @@ public class TableDataInfo<T> implements Serializable {
      * 根据数据列表构建表格分页数据对象
      */
     public static <T> TableDataInfo<T> build(List<T> list) {
-        TableDataInfo<T> rspData = new TableDataInfo<>();
+        TableDataInfo<T> rspData = new TableDataInfo<>(list, list.size());
         rspData.setCode(HttpStatus.HTTP_OK);
         rspData.setMsg("查询成功");
-        rspData.setRows(list);
-        rspData.setTotal(list.size());
         return rspData;
     }
 
@@ -83,9 +101,9 @@ public class TableDataInfo<T> implements Serializable {
      */
     public static <T> TableDataInfo<T> build() {
         TableDataInfo<T> rspData = new TableDataInfo<>();
+        rspData.setData(new DataWrapper<>());
         rspData.setCode(HttpStatus.HTTP_OK);
         rspData.setMsg("查询成功");
         return rspData;
     }
-
 }

+ 1 - 1
ruoyi-modules/ruoyi-bulkOrder/pom.xml

@@ -12,7 +12,7 @@
     <artifactId>ruoyi-bulkOrder</artifactId>
 
     <description>
-        demo模块
+        大货订单模块模块
     </description>
 
     <dependencies>

+ 46 - 0
ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/controller/DevelopmentOrderController.java

@@ -0,0 +1,46 @@
+package org.dromara.bulk.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import lombok.RequiredArgsConstructor;
+import org.dromara.bulk.domain.bo.DevelopmentOrderBo;
+import org.dromara.bulk.domain.vo.DevelopmentOrderTableDataInfo;
+import org.dromara.bulk.domain.vo.DevelopmentOrderVo;
+import org.dromara.bulk.service.DevelopmentOrderService;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.core.validate.QueryGroup;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/development")
+@RequiredArgsConstructor
+public class DevelopmentOrderController {
+
+    private final DevelopmentOrderService developmentOrderService;
+
+    @GetMapping("/get")
+    @SaCheckPermission("fa:development:list")
+    public DevelopmentOrderTableDataInfo<DevelopmentOrderVo> getList(PageQuery pageQuery, DevelopmentOrderBo developmentOrderBo) {
+        return developmentOrderService.getList(developmentOrderBo, pageQuery);
+    }
+
+    @GetMapping("/add")
+    @SaCheckPermission("fa:development:add")
+    public int add(@Validated(AddGroup.class) @RequestBody DevelopmentOrderBo developmentOrderBo) {
+        return developmentOrderService.insert(developmentOrderBo);
+    }
+
+    @GetMapping("/edit")
+    @SaCheckPermission("fa:development:edit")
+    public int edit(@Validated(EditGroup.class) @RequestBody DevelopmentOrderBo developmentOrderBo) {
+        return developmentOrderService.update(developmentOrderBo);
+    }
+
+    @GetMapping("/delete/{ids}")
+    @SaCheckPermission("fa:development:delete")
+    public int delete(@PathVariable Long[] ids) {
+        return developmentOrderService.delete(ids);
+    }
+}

+ 218 - 0
ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/domain/DevelopmentOrder.java

@@ -0,0 +1,218 @@
+package org.dromara.bulk.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.dromara.common.tenant.core.TenantEntity;
+
+import java.util.Date;
+
+/**
+ * 开发订单实体类
+ */
+@Data
+@NoArgsConstructor
+@TableName("fa_kuyou_user_order")
+@EqualsAndHashCode(callSuper = true)
+public class DevelopmentOrder extends TenantEntity {
+
+    private Long id;
+
+    /**
+     * 订单编号
+     */
+    private String orderNum;
+
+    /**
+     * 客户姓名
+     */
+    private String customerName;
+
+    /**
+     * 品牌组
+     */
+    private String brandGroup;
+
+    /**
+     * 款号
+     */
+    private String itemNumber;
+
+    /**
+     * 参考图
+     */
+    private String referenceImage;
+
+    /**
+     * 设计图
+     */
+    private String designImage;
+
+    /**
+     * 纸张设计文件
+     */
+    private String paperDesignFile;
+
+    /**
+     * 开发描述
+     */
+    private String devRemark;
+
+    /**
+     * 面料
+     */
+    private String fabric;
+
+    /**
+     * 设计师ID
+     */
+    private Long designUserId;
+
+    /**
+     * 确认人ID
+     */
+    private Long confirmUserId;
+
+    /**
+     * 设计文件
+     */
+    private String designFile;
+
+    /**
+     * 设计素材
+     */
+    private String designMaterial;
+
+    /**
+     * 调色师ID
+     */
+    private Long colorUserId;
+
+    /**
+     * 调试文件
+     */
+    private String colorFile;
+
+    /**
+     * 排版师ID
+     */
+    private Long layoutUserId;
+
+    /**
+     * 打版文件
+     */
+    private String patternFile;
+
+    /**
+     * 0待处理
+     * 1画图中
+     * 2确认中
+     * 3调色中
+     * 4排版中
+     * 5打版中
+     * 6已完成
+     * 99已取消
+     */
+    private Long status;
+
+    /**
+     * 是否排版
+     */
+    private Integer isLayout;
+
+    /**
+     * 取消时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date cancelTime;
+
+    /**
+     * 画图开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startingTimeForDrawing;
+
+    /**
+     * 画图结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTimeOfDrawing;
+
+    /**
+     * 调色开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date colorMixingStartTime;
+
+    /**
+     * 调色结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTimeOfColorAdjustment;
+
+    /**
+     * 确认开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date confirmStartTime;
+
+    /**
+     * 确认结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date confirmEndTime;
+
+    /**
+     * 排版开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date layoutStartTime;
+
+    /**
+     * 排版结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date layoutEndTime;
+
+    /**
+     * 打版开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date printingStartTime;
+
+    /**
+     * 打版结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTimeOfTypesetting;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date statusStartTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date status6EndTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date status7StartTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date status7EndTime;
+
+    private String customerFile;
+
+    /**
+     * 大货款号
+     */
+    private String largePaymentNumber;
+
+    /**
+     * 花型号
+     */
+    private String flowerModel;
+
+    private String remark;
+
+    private Integer flag;
+}

+ 3 - 0
ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/domain/FaKuyouUserOrder.java

@@ -7,6 +7,9 @@ import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 import org.dromara.common.tenant.core.TenantEntity;
 
+/**
+ *大货订单表
+ */
 @Data
 @NoArgsConstructor
 @TableName("fa_kuyou_user_order")

+ 235 - 0
ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/domain/bo/DevelopmentOrderBo.java

@@ -0,0 +1,235 @@
+package org.dromara.bulk.domain.bo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+
+import java.util.Date;
+
+/**
+ * 开发订单实体类
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class DevelopmentOrderBo extends BaseEntity {
+
+    @NotNull(message = "ID不能为空", groups = {EditGroup.class})
+    private Long id;
+
+    /**
+     * 订单编号
+     */
+    private String orderNum;
+
+    /**
+     * 客户姓名
+     */
+    @NotBlank(message = "客户姓名不能为空", groups = {AddGroup.class, EditGroup.class})
+    private String customerName;
+
+    /**
+     * 品牌组
+     */
+    private String brandGroup;
+
+    /**
+     * 款号
+     */
+    @NotBlank(message = "款号不能为空", groups = {EditGroup.class})
+    private String itemNumber;
+
+    /**
+     * 参考图
+     */
+    private String referenceImage;
+
+    /**
+     * 设计图
+     */
+    private String designImage;
+
+    /**
+     * 纸张设计文件
+     */
+    private String paperDesignFile;
+
+    /**
+     * 开发描述
+     */
+    @NotBlank(message = "开发需求不能为空", groups = {AddGroup.class, EditGroup.class})
+    private String devRemark;
+
+    /**
+     * 面料
+     */
+    @NotBlank(message = "面料名称不能为空", groups = {AddGroup.class, EditGroup.class})
+    private String fabric;
+
+    /**
+     * 设计师ID
+     */
+    private Long designUserId;
+
+    /**
+     * 确认人ID
+     */
+    private Long confirmUserId;
+
+    /**
+     * 设计文件
+     */
+    private String designFile;
+
+    /**
+     * 设计素材
+     */
+    private String designMaterial;
+
+    /**
+     * 调色师ID
+     */
+    private Long colorUserId;
+
+    /**
+     * 调试文件
+     */
+    private String colorFile;
+
+    /**
+     * 排版师ID
+     */
+    private Long layoutUserId;
+
+    /**
+     * 排版文件
+     */
+    private String layoutFile;
+
+    /**
+     * 打版文件
+     */
+    private String patternFile;
+
+    /**
+     * 打版师ID
+     */
+    private Long patternUserid;
+
+    /**
+     * 0待处理
+     * 1画图中
+     * 2确认中
+     * 3调色中
+     * 4排版中
+     * 5打版中
+     * 6已完成
+     * 99已取消
+     */
+    private Long status;
+
+    /**
+     * 是否排版
+     */
+    private Integer isLayout;
+
+    /**
+     * 取消时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date cancelTime;
+
+    /**
+     * 画图开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startingTimeForDrawing;
+
+    /**
+     * 画图结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTimeOfDrawing;
+
+    /**
+     * 调色开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date colorMixingStartTime;
+
+    /**
+     * 调色结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTimeOfColorAdjustment;
+
+    /**
+     * 确认开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date confirmStartTime;
+
+    /**
+     * 确认结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date confirmEndTime;
+
+    /**
+     * 排版开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date layoutStartTime;
+
+    /**
+     * 排版结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date layoutEndTime;
+
+    /**
+     * 打版开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date printingStartTime;
+
+    /**
+     * 打版结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTimeOfTypesetting;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date statusStartTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date status6EndTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date status7StartTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date status7EndTime;
+
+    private String customerFile;
+
+    /**
+     * 大货款号
+     */
+    private String largePaymentNumber;
+
+    /**
+     * 花型号
+     */
+    private String flowerModel;
+
+    private String remark;
+
+    private Integer flag;
+}

+ 170 - 0
ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/domain/vo/DevelopmentOrderTableDataInfo.java

@@ -0,0 +1,170 @@
+package org.dromara.bulk.domain.vo;
+
+import cn.hutool.http.HttpStatus;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 表格分页数据对象
+ *
+ * @author Lion Li
+ */
+@Data
+@NoArgsConstructor
+public class DevelopmentOrderTableDataInfo<T> implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 封装列表数据和总记录数
+     */
+    @Data
+    @NoArgsConstructor
+    public static class DataWrapper<T> {
+        private List<T> list;
+        private long total;
+        //      待处理
+        private Integer pendingProcessing;
+        //      画图中
+        private Integer inTheDrawing;
+        //      确认中
+        private Integer confirmingInProgress;
+        //      修改中
+        private Integer underModification;
+        //      调色中
+        private Integer inColorAdjustment;
+        //      排版中
+        private Integer inTypesetting;
+        //      打版中
+        private Integer printingInProgress;
+        //      已完成
+        private Integer completed;
+        //      已取消
+        private Integer cancelled;
+
+        public DataWrapper(List<T> list, long total) {
+            this.list = list;
+            this.total = total;
+        }
+
+        public DataWrapper(List<T> list, long total,
+                           Integer pendingProcessing,
+                           Integer inTheDrawing,
+                           Integer confirmingInProgress,
+                           Integer underModification,
+                           Integer inColorAdjustment,
+                           Integer inTypesetting,
+                           Integer printingInProgress,
+                           Integer completed,
+                           Integer cancelled) {
+            this.list = list;
+            this.total = total;
+            this.pendingProcessing = pendingProcessing;
+            this.inTheDrawing = inTheDrawing;
+            this.confirmingInProgress = confirmingInProgress;
+            this.underModification = underModification;
+            this.inColorAdjustment = inColorAdjustment;
+            this.inTypesetting = inTypesetting;
+            this.printingInProgress = printingInProgress;
+            this.completed = completed;
+            this.cancelled = cancelled;
+        }
+
+    }
+
+    /**
+     * 总记录数
+     * 已不再单独使用
+     */
+    private long total;
+
+    /**
+     * 列表数据
+     * 已不再单独使用
+     */
+    private List<T> rows;
+
+    /**
+     * 列表数据和总记录数的封装
+     */
+    private DataWrapper<T> data;
+
+    /**
+     * 消息状态码
+     */
+    private int code;
+
+    /**
+     * 消息内容
+     */
+    private String msg;
+
+    /**
+     * 分页
+     *
+     * @param list  列表数据
+     * @param total 总记录数
+     */
+    public DevelopmentOrderTableDataInfo(List<T> list, long total) {
+        this.data = new DataWrapper<>(list, total);
+    }
+
+    public DevelopmentOrderTableDataInfo(List<T> list, long total,
+                                         Integer pendingProcessing,
+                                         Integer inTheDrawing,
+                                         Integer confirmingInProgress,
+                                         Integer underModification,
+                                         Integer inColorAdjustment,
+                                         Integer inTypesetting,
+                                         Integer printingInProgress,
+                                         Integer completed,
+                                         Integer cancelled) {
+        this.data = new DataWrapper<>(list, total, pendingProcessing, inTheDrawing, confirmingInProgress, underModification,
+                inColorAdjustment, inTypesetting, printingInProgress, completed, cancelled);
+    }
+
+
+    /**
+     * 根据分页对象构建表格分页数据对象
+     */
+    public static <T> DevelopmentOrderTableDataInfo<T> build(IPage<T> page) {
+        DevelopmentOrderTableDataInfo<T> rspData = new DevelopmentOrderTableDataInfo<>(page.getRecords(), page.getTotal());
+        rspData.setCode(HttpStatus.HTTP_OK);
+        rspData.setMsg("查询成功");
+        return rspData;
+    }
+
+    public static <T> DevelopmentOrderTableDataInfo<T> build(IPage<T> page,
+                                                             Integer pendingProcessing,
+                                                             Integer inTheDrawing,
+                                                             Integer confirmingInProgress,
+                                                             Integer underModification,
+                                                             Integer inColorAdjustment,
+                                                             Integer inTypesetting,
+                                                             Integer printingInProgress,
+                                                             Integer completed,
+                                                             Integer cancelled) {
+        DevelopmentOrderTableDataInfo<T> rspData = new DevelopmentOrderTableDataInfo<>(page.getRecords(), page.getTotal(),
+                pendingProcessing, inTheDrawing, confirmingInProgress, underModification,
+                inColorAdjustment, inTypesetting, printingInProgress, completed, cancelled);
+        rspData.setCode(HttpStatus.HTTP_OK);
+        rspData.setMsg("查询成功");
+        return rspData;
+    }
+
+    /**
+     * 根据数据列表构建表格分页数据对象
+     */
+    public static <T> DevelopmentOrderTableDataInfo<T> build(List<T> list) {
+        DevelopmentOrderTableDataInfo<T> rspData = new DevelopmentOrderTableDataInfo<>(list, list.size());
+        rspData.setCode(HttpStatus.HTTP_OK);
+        rspData.setMsg("查询成功");
+        return rspData;
+    }
+}

+ 218 - 0
ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/domain/vo/DevelopmentOrderVo.java

@@ -0,0 +1,218 @@
+package org.dromara.bulk.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.tenant.core.TenantEntity;
+
+import java.util.Date;
+
+/**
+ * 开发订单实体类
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class DevelopmentOrderVo extends BaseEntity {
+
+    private Long id;
+
+    /**
+     * 订单编号
+     */
+    private String orderNum;
+
+    /**
+     * 客户姓名
+     */
+    private String customerName;
+
+    /**
+     * 品牌组
+     */
+    private String brandGroup;
+
+    /**
+     * 款号
+     */
+    private String itemNumber;
+
+    /**
+     * 参考图
+     */
+    private String referenceImage;
+
+    /**
+     * 设计图
+     */
+    private String designImage;
+
+    /**
+     * 纸张设计文件
+     */
+    private String paperDesignFile;
+
+    /**
+     * 开发描述
+     */
+    private String devRemark;
+
+    /**
+     * 面料
+     */
+    private String fabric;
+
+    /**
+     * 设计师ID
+     */
+    private Long designUserId;
+
+    /**
+     * 确认人ID
+     */
+    private Long confirmUserId;
+
+    /**
+     * 设计文件
+     */
+    private String designFile;
+
+    /**
+     * 设计素材
+     */
+    private String designMaterial;
+
+    /**
+     * 调色师ID
+     */
+    private Long colorUserId;
+
+    /**
+     * 调试文件
+     */
+    private String colorFile;
+
+    /**
+     * 排版师ID
+     */
+    private Long layoutUserId;
+
+    /**
+     * 打版文件
+     */
+    private String patternFile;
+
+    /**
+     * 0待处理
+     * 1画图中
+     * 2确认中
+     * 3调色中
+     * 4排版中
+     * 5打版中
+     * 6已完成
+     * 99已取消
+     */
+    private Long status;
+
+    /**
+     * 是否排版
+     */
+    private Integer isLayout;
+
+    /**
+     * 取消时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date cancelTime;
+
+    /**
+     * 画图开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startingTimeForDrawing;
+
+    /**
+     * 画图结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTimeOfDrawing;
+
+    /**
+     * 调色开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date colorMixingStartTime;
+
+    /**
+     * 调色结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTimeOfColorAdjustment;
+
+    /**
+     * 确认开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date confirmStartTime;
+
+    /**
+     * 确认结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date confirmEndTime;
+
+    /**
+     * 排版开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date layoutStartTime;
+
+    /**
+     * 排版结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date layoutEndTime;
+
+    /**
+     * 打版开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date printingStartTime;
+
+    /**
+     * 打版结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTimeOfTypesetting;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date statusStartTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date status6EndTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date status7StartTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date status7EndTime;
+
+    private String customerFile;
+
+    /**
+     * 大货款号
+     */
+    private String largePaymentNumber;
+
+    /**
+     * 花型号
+     */
+    private String flowerModel;
+
+    private String remark;
+
+    private Integer flag;
+}

+ 27 - 0
ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/mapper/DevelopmentOrderMapper.java

@@ -0,0 +1,27 @@
+package org.dromara.bulk.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.dromara.bulk.domain.DevelopmentOrder;
+import org.dromara.bulk.domain.vo.DevelopmentOrderVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface DevelopmentOrderMapper extends BaseMapperPlus<DevelopmentOrder, DevelopmentOrderVo> {
+
+    Integer getStatusByCount(@Param("status") Long status);
+
+    /**
+     * 批量查询各状态的数量
+     * @param statusCodes 状态列表
+     * @return 状态统计结果
+     */
+//    @Select("SELECT status_code AS key, COUNT(*) AS value FROM development_order GROUP BY status_code HAVING status_code IN (${statusCodes})")
+    Map<Long, Integer> countStatusBatch(@Param("statusCodes") Collection<Long> statusCodes);
+
+}

+ 25 - 0
ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/service/DevelopmentOrderService.java

@@ -0,0 +1,25 @@
+package org.dromara.bulk.service;
+
+import org.dromara.bulk.domain.bo.DevelopmentOrderBo;
+import org.dromara.bulk.domain.vo.DevelopmentOrderTableDataInfo;
+import org.dromara.bulk.domain.vo.DevelopmentOrderVo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+public interface DevelopmentOrderService {
+
+    DevelopmentOrderTableDataInfo<DevelopmentOrderVo> getList(DevelopmentOrderBo developmentOrderBo, PageQuery pageQuery);
+
+    int insert(DevelopmentOrderBo developmentOrder);
+
+    int update(DevelopmentOrderBo developmentOrder);
+
+    int delete(Long[] id);
+
+    DevelopmentOrderVo selectById(Long id);
+
+    /**
+     * 状态参数校验
+     * @param developmentOrderBo
+     */
+    void checkStatus(DevelopmentOrderBo developmentOrderBo);
+}

+ 197 - 0
ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/service/impl/DevelopmentOrderServiceImpl.java

@@ -0,0 +1,197 @@
+package org.dromara.bulk.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import org.dromara.bulk.domain.DevelopmentOrder;
+import org.dromara.bulk.domain.bo.DevelopmentOrderBo;
+import org.dromara.bulk.domain.vo.DevelopmentOrderTableDataInfo;
+import org.dromara.bulk.domain.vo.DevelopmentOrderVo;
+import org.dromara.bulk.mapper.DevelopmentOrderMapper;
+import org.dromara.bulk.service.DevelopmentOrderService;
+import org.dromara.common.core.constant.DevelopmentOrderConstants;
+import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.util.*;
+
+/**
+ * 开发订单Service业务层处理
+ */
+@Service
+@RequiredArgsConstructor
+public class DevelopmentOrderServiceImpl implements DevelopmentOrderService {
+
+    private final DevelopmentOrderMapper developmentOrderMapper;
+
+    /**
+     * 创建所有状态的常量Set集合
+     */
+    private static final Set<Long> STATUS_CODES = Set.of(
+            DevelopmentOrderConstants.PENDING_PROCESSING,
+            DevelopmentOrderConstants.IN_THE_DRAWING,
+            DevelopmentOrderConstants.CONFIRMING_IN_PROGRESS,
+            DevelopmentOrderConstants.UNDER_MODIFICATION,
+            DevelopmentOrderConstants.IN_COLOR_ADJUSTMENT,
+            DevelopmentOrderConstants.IN_TYPESETTING,
+            DevelopmentOrderConstants.PRINTING_IN_PROGRESS,
+            DevelopmentOrderConstants.COMPLETED,
+            DevelopmentOrderConstants.CANCELLED
+    );
+
+    @Override
+    public DevelopmentOrderTableDataInfo<DevelopmentOrderVo> getList(DevelopmentOrderBo bo, PageQuery pageQuery) {
+        // 构建动态查询条件
+        LambdaQueryWrapper<DevelopmentOrder> queryWrapper = new LambdaQueryWrapper<>();
+        addDynamicConditions(queryWrapper, bo);
+
+        Page<DevelopmentOrderVo> page = developmentOrderMapper.selectVoPage(pageQuery.build(), queryWrapper);
+
+        Map<Long, Integer> statusCount = developmentOrderMapper.countStatusBatch(STATUS_CODES);
+
+        // 组装数据返回
+        return DevelopmentOrderTableDataInfo.build(page,
+                statusCount.get(DevelopmentOrderConstants.PENDING_PROCESSING),
+                statusCount.get(DevelopmentOrderConstants.IN_THE_DRAWING),
+                statusCount.get(DevelopmentOrderConstants.CONFIRMING_IN_PROGRESS),
+                statusCount.get(DevelopmentOrderConstants.UNDER_MODIFICATION),
+                statusCount.get(DevelopmentOrderConstants.IN_COLOR_ADJUSTMENT),
+                statusCount.get(DevelopmentOrderConstants.IN_TYPESETTING),
+                statusCount.get(DevelopmentOrderConstants.PRINTING_IN_PROGRESS),
+                statusCount.get(DevelopmentOrderConstants.COMPLETED),
+                statusCount.get(DevelopmentOrderConstants.CANCELLED));
+    }
+
+    private void addDynamicConditions(LambdaQueryWrapper<DevelopmentOrder> queryWrapper, DevelopmentOrderBo bo) {
+        Map<String, Object> params = bo.getParams();
+        // 字符串字段处理
+        if (StringUtils.isNotBlank(bo.getCustomerName())) {
+            queryWrapper.like(DevelopmentOrder::getCustomerName, bo.getCustomerName());
+        }
+        if (StringUtils.isNotBlank(bo.getFabric())) {
+            queryWrapper.like(DevelopmentOrder::getFabric, bo.getFabric());
+        }
+
+        // 时间范围处理
+        LocalDate startDate = parseDate((String) params.get("beginTime"));
+        LocalDate endDate = parseDate((String) params.get("endTime"));
+        if (startDate != null && endDate != null) {
+            queryWrapper.between(DevelopmentOrder::getCreateTime, startDate, endDate);
+        }
+    }
+
+    private LocalDate parseDate(String dateStr) {
+        if (dateStr == null) return null;
+        try {
+            return LocalDate.parse(dateStr, DateTimeFormatter.ISO_LOCAL_DATE);
+        } catch (DateTimeParseException e) {
+            throw new ServiceException("日期格式错误: " + dateStr);
+        }
+    }
+
+    @Override
+    public int insert(DevelopmentOrderBo developmentOrder) {
+        return developmentOrderMapper.insert(MapstructUtils.convert(developmentOrder, DevelopmentOrder.class));
+    }
+
+    @Override
+    public int update(DevelopmentOrderBo developmentOrderBo) {
+        checkStatus(developmentOrderBo);
+        return developmentOrderMapper.updateById(MapstructUtils.convert(developmentOrderBo, DevelopmentOrder.class));
+    }
+
+    public void editRemark(DevelopmentOrderBo developmentOrderBo) {
+        if (!developmentOrderBo.getRemark().isEmpty()) {
+
+        }
+    }
+
+    @Override
+    public int delete(Long[] id) {
+        return developmentOrderMapper.deleteByIds(Arrays.asList(id));
+    }
+
+    @Override
+    public DevelopmentOrderVo selectById(Long id) {
+        return MapstructUtils.convert(developmentOrderMapper.selectById(id), DevelopmentOrderVo.class);
+    }
+
+    @Override
+    public void checkStatus(DevelopmentOrderBo developmentOrderBo) {
+//      状态为画图中
+        if (developmentOrderBo.getStatus().equals(DevelopmentOrderConstants.IN_THE_DRAWING)) {
+            assertNotLongBlank(developmentOrderBo.getDesignUserId(), "设计师不能为空");
+            assertNotBlank(developmentOrderBo.getDesignFile(), "设计文件不能为空");
+            assertNotBlank(developmentOrderBo.getDesignImage(), "设计图片不能为空");
+            assertNotBlank(developmentOrderBo.getDesignMaterial(), "素材图片不能为空");
+//          设置画图开始时间
+            developmentOrderBo.setStartingTimeForDrawing(new Date());
+        }
+//      状态为确认中
+        if (developmentOrderBo.getStatus().equals(DevelopmentOrderConstants.CONFIRMING_IN_PROGRESS)) {
+            assertNotLongBlank(developmentOrderBo.getConfirmUserId(), "确认人不能为空");
+            assertNotBlank(developmentOrderBo.getPaperDesignFile(), "纸样文件不能为空");
+//          设置画图结束时间
+            developmentOrderBo.setEndTimeOfDrawing(new Date());
+//          设置确认开始时间
+            developmentOrderBo.setConfirmStartTime(new Date());
+        }
+//      状态为调色中
+        if (developmentOrderBo.getStatus().equals(DevelopmentOrderConstants.IN_COLOR_ADJUSTMENT)) {
+            assertNotLongBlank(developmentOrderBo.getColorUserId(), "调色人不能为空");
+            assertNotBlank(developmentOrderBo.getColorFile(), "调色文件不能为空");
+//          设置确认结束时间
+            developmentOrderBo.setConfirmEndTime(new Date());
+//          设置调色开始时间
+            developmentOrderBo.setColorMixingStartTime(new Date());
+        }
+//      状态为排版中
+        if (developmentOrderBo.getStatus().equals(DevelopmentOrderConstants.IN_TYPESETTING)) {
+            assertNotLongBlank(developmentOrderBo.getLayoutUserId(), "排版人不能为空");
+            assertNotBlank(developmentOrderBo.getLayoutFile(), "排版文件不能为空");
+//          设置调色结束时间
+            developmentOrderBo.setEndTimeOfColorAdjustment(new Date());
+//          设置排版开始时间
+            developmentOrderBo.setLayoutStartTime(new Date());
+        }
+//      状态为打版中
+        if (developmentOrderBo.getStatus().equals(DevelopmentOrderConstants.PRINTING_IN_PROGRESS)) {
+            assertNotLongBlank(developmentOrderBo.getPatternUserid(), "打版人不能为空");
+            assertNotBlank(developmentOrderBo.getPatternFile(), "打版文件不能为空");
+//      设置排版结束时间
+            developmentOrderBo.setLayoutEndTime(new Date());
+//      设置打版开始时间
+            developmentOrderBo.setPrintingStartTime(new Date());
+        }
+//      状态为已完成
+        if (developmentOrderBo.getStatus().equals(DevelopmentOrderConstants.COMPLETED)) {
+
+        }
+//      状态为取消
+        if (developmentOrderBo.getStatus().equals(DevelopmentOrderConstants.CANCELLED)) {
+            if (!developmentOrderBo.getStatus().equals(DevelopmentOrderConstants.CONFIRMING_IN_PROGRESS)) {
+                throw new ServiceException("状态为确认中才可以取消");
+            }
+            developmentOrderBo.setCancelTime(new Date());
+        }
+    }
+
+    public static void assertNotLongBlank(Long longId, String errorMessage) {
+        if (longId == null || longId == 0) {
+            throw new ServiceException(errorMessage);
+        }
+    }
+
+    public static void assertNotBlank(String str, String errorMessage) {
+        if (StringUtils.isBlank(str)) {
+            throw new ServiceException(errorMessage);
+        }
+    }
+
+}

+ 1 - 1
ruoyi-modules/ruoyi-bulkOrder/src/main/resources/mapper/BulkOrderManagementMapper.xml

@@ -4,4 +4,4 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.bulk.mapper.BulkOrderManagementMapper">
 
-</mapper>
+</mapper>

+ 20 - 0
ruoyi-modules/ruoyi-bulkOrder/src/main/resources/mapper/DevelopmentOrderMapper.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="org.dromara.bulk.mapper.DevelopmentOrderMapper">
+
+    <select id="getStatusByCount" resultType="integer">
+        SELECT COUNT(*)
+        FROM fa_template_dev_order
+        WHERE `status` = #{status}
+    </select>
+
+    <select id="countStatusBatch">
+        SELECT `status` AS `key`, COUNT(*) AS `value`
+        FROM fa_template_dev_order
+        where `status` IN (${statusCodes})
+        GROUP BY `status`
+    </select>
+
+</mapper>

+ 4 - 6
ruoyi-modules/ruoyi-commodityManagement/pom.xml

@@ -6,16 +6,14 @@
     <parent>
         <groupId>org.dromara</groupId>
         <artifactId>ruoyi-modules</artifactId>
-        <version>5.3.0</version>
+        <version>${revision}</version>
     </parent>
 
     <artifactId>ruoyi-commodityManagement</artifactId>
 
-    <properties>
-        <maven.compiler.source>17</maven.compiler.source>
-        <maven.compiler.target>17</maven.compiler.target>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    </properties>
+    <description>
+        商品管理模块
+    </description>
 
     <dependencies>
 

+ 1 - 1
ruoyi-modules/ruoyi-commodityManagement/src/main/java/org/dromara/commodityManagement/controller/BrandController.java

@@ -59,4 +59,4 @@ public class BrandController extends BaseController {
     public R<Void> deleteBrandByIds(@RequestParam int brandId) {
         return toAjax(brandService.deleteBrandById(brandId));
     }
-}
+}