Przeglądaj źródła

沟通完成进行整改

Huanyi 1 tydzień temu
rodzic
commit
c5d362613e
37 zmienionych plików z 1818 dodań i 500 usunięć
  1. 0 2
      ruoyi-admin/src/main/java/org/dromara/DromaraApplication.java
  2. 1 1
      ruoyi-admin/src/main/resources/application-prod.yml
  3. 46 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/controller/ErpColorController.java
  4. 0 50
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/controller/ErpOrderAuditController.java
  5. 0 8
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/controller/ErpOrderController.java
  6. 208 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/ErpColor.java
  7. 7 5
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/ErpOrder.java
  8. 0 93
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/ErpOrderAudit.java
  9. 14 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/ErpOrderDetail.java
  10. 670 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/ErpSaleOrderDetail.java
  11. 9 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/ErpSaleOrderMaster.java
  12. 8 4
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/bo/ErpOrderBo.java
  13. 12 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/bo/ErpOrderDetailBo.java
  14. 28 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/query/ErpColorQuery.java
  15. 12 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/query/ErpOrderDetailQuery.java
  16. 14 1
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/query/ErpOrderQuery.java
  17. 174 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/vo/ErpColorVo.java
  18. 0 64
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/vo/ErpOrderAuditVo.java
  19. 12 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/vo/ErpOrderDetailVo.java
  20. 46 6
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/vo/ErpOrderVo.java
  21. 132 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/vo/ErpSaleOrderDetailVo.java
  22. 3 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/vo/ErpSaleOrderMasterVo.java
  23. 0 20
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/enums/ErpAuditResult.java
  24. 0 24
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/enums/ErpOrderStatus.java
  25. 15 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/mapper/ErpColorMapper.java
  26. 0 13
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/mapper/ErpOrderAuditMapper.java
  27. 21 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/mapper/ErpOrderMapper.java
  28. 15 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/mapper/ErpSaleOrderDetailMapper.java
  29. 27 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/service/IErpColorService.java
  30. 0 30
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/service/IErpOrderAuditService.java
  31. 0 5
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/service/IErpOrderService.java
  32. 62 0
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/service/impl/ErpColorServiceImpl.java
  33. 0 56
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/service/impl/ErpOrderAuditServiceImpl.java
  34. 27 67
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/service/impl/ErpOrderServiceImpl.java
  35. 0 36
      ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/task/ErpOrderSyncTask.java
  36. 240 0
      ruoyi-modules/yingpaipay-erp/src/main/resources/mapper/ErpOrderMapper.xml
  37. 15 15
      script/sql/sqlserver/v1/HTSail_CS-create.sql

+ 0 - 2
ruoyi-admin/src/main/java/org/dromara/DromaraApplication.java

@@ -3,7 +3,6 @@ package org.dromara;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
-import org.springframework.scheduling.annotation.EnableScheduling;
 
 /**
  * 启动程序
@@ -11,7 +10,6 @@ import org.springframework.scheduling.annotation.EnableScheduling;
  * @author Lion Li
  */
 
-@EnableScheduling
 @SpringBootApplication
 public class DromaraApplication {
 

+ 1 - 1
ruoyi-admin/src/main/resources/application-prod.yml

@@ -122,7 +122,7 @@ spring.data:
     # 数据库索引
     database: 0
     # redis 密码必须配置
-    password: ruoyi123
+    # password: ruoyi123
     # 连接超时时间
     timeout: 10s
     # 是否开启ssl

+ 46 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/controller/ErpColorController.java

@@ -0,0 +1,46 @@
+package org.dromara.erp.controller;
+
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.erp.domain.query.ErpColorQuery;
+import org.dromara.erp.domain.vo.ErpColorVo;
+import org.dromara.erp.service.IErpColorService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * ERP 颜色控制器
+ *
+ * @Author: Antigravity
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/erp/color")
+public class ErpColorController {
+
+    private final IErpColorService erpColorService;
+
+    /**
+     * 分页查询 ERP 颜色列表
+     */
+    @GetMapping("/page")
+    public TableDataInfo<ErpColorVo> page(ErpColorQuery query, PageQuery pageQuery) {
+        return erpColorService.queryPageList(query, pageQuery);
+    }
+
+    /**
+     * 查询 ERP 颜色列表(不分页)
+     */
+    @GetMapping("/list")
+    public R<List<ErpColorVo>> list(ErpColorQuery query) {
+        return R.ok(erpColorService.queryList(query));
+    }
+
+}

+ 0 - 50
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/controller/ErpOrderAuditController.java

@@ -1,50 +0,0 @@
-package org.dromara.erp.controller;
-
-import lombok.RequiredArgsConstructor;
-import org.dromara.common.core.domain.R;
-import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.erp.domain.ErpOrderAudit;
-import org.dromara.erp.domain.vo.ErpOrderAuditVo;
-import org.dromara.erp.service.IErpOrderAuditService;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-/**
- * 订单审核记录控制器
- * @Author: Antigravity
- */
-@Validated
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/erp/orderAudit")
-public class ErpOrderAuditController {
-
-    private final IErpOrderAuditService erpOrderAuditService;
-
-    /**
-     * 查询审核记录列表
-     */
-    @GetMapping("/list")
-    public TableDataInfo<ErpOrderAuditVo> list(ErpOrderAudit query, PageQuery pageQuery) {
-        return erpOrderAuditService.queryPageList(query, pageQuery);
-    }
-
-    /**
-     * 获取订单的审核历史
-     */
-    @GetMapping("/history/{orderId}")
-    public R<List<ErpOrderAuditVo>> history(@PathVariable("orderId") String orderId) {
-        return R.ok(erpOrderAuditService.queryByOrderId(orderId));
-    }
-
-    /**
-     * 新增审核记录
-     */
-    @PostMapping("/add")
-    public R<Void> add(@RequestBody ErpOrderAudit audit) {
-        return erpOrderAuditService.insert(audit) ? R.ok() : R.fail();
-    }
-}

+ 0 - 8
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/controller/ErpOrderController.java

@@ -77,14 +77,6 @@ public class ErpOrderController {
         return rowId != null ? R.ok("操作成功", rowId) : R.fail();
     }
 
-    /**
-     * 审核订单
-     */
-    @PostMapping("/audit")
-    public R<Void> audit(@RequestBody org.dromara.erp.domain.ErpOrderAudit audit) {
-        return erpOrderService.auditOrder(audit) ? R.ok() : R.fail();
-    }
-
     /**
      * 撤销订单(单纯修改订单状态为已撤销)
      */

+ 208 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/ErpColor.java

@@ -0,0 +1,208 @@
+package org.dromara.erp.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.erp.domain.vo.ErpColorVo;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * ERP 颜色 t_Bdi_Color
+ *
+ * @Author: Antigravity
+ */
+@Data
+@AutoMapper(target = ErpColorVo.class)
+@TableName("t_Bdi_Color")
+public class ErpColor implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 记录号(主键)
+     */
+    @TableId("FRowID")
+    private String rowId;
+
+    /**
+     * 代码
+     */
+    @TableField("FNum")
+    private String num;
+
+    /**
+     * 名称
+     */
+    @TableField("FName")
+    private String name;
+
+    /**
+     * 英文颜色
+     */
+    @TableField("EnName")
+    private String enName;
+
+    /**
+     * 颜色描述ID
+     */
+    @TableField("DescribeID")
+    private String describeId;
+
+    /**
+     * 光泽度
+     */
+    @TableField("GlossQty")
+    private BigDecimal glossQty;
+
+    /**
+     * 窗体功能ID
+     */
+    @TableField("FormID")
+    private String formId;
+
+    /**
+     * 公司ID
+     */
+    @TableField("CompanyID")
+    private Integer companyId;
+
+    /**
+     * 颜色类别ID
+     */
+    @TableField("ParentRowID")
+    private String parentRowId;
+
+    /**
+     * 树记录号
+     */
+    @TableField("TreeControl")
+    private String treeControl;
+
+    /**
+     * 暂停使用 (0-否, 1-是)
+     */
+    @TableField("StopUse")
+    private Integer stopUse;
+
+    /**
+     * 修改人ID
+     */
+    @TableField("ModifyUserID")
+    private String modifyUserId;
+
+    /**
+     * 编辑人
+     */
+    @TableField("ModifyName")
+    private String modifyName;
+
+    /**
+     * 编辑时间
+     */
+    @TableField("ModifyDate")
+    private Date modifyDate;
+
+    /**
+     * 制单人ID
+     */
+    @TableField("EnterUserID")
+    private String enterUserId;
+
+    /**
+     * 创建人
+     */
+    @TableField("EnterName")
+    private String enterName;
+
+    /**
+     * 创建时间
+     */
+    @TableField("EnterDate")
+    private Date enterDate;
+
+    /**
+     * 修改状态
+     */
+    @TableField("IsModifyFlag")
+    private Integer isModifyFlag;
+
+    /**
+     * 加工类型
+     */
+    @TableField("ProcessType")
+    private String processType;
+
+    /**
+     * 工艺ID
+     */
+    @TableField("CraftID")
+    private String craftId;
+
+    /**
+     * 工艺代码
+     */
+    @TableField("CraftNum")
+    private String craftNum;
+
+    /**
+     * 工艺名称
+     */
+    @TableField("CraftName")
+    private String craftName;
+
+    /**
+     * 颜色类别
+     */
+    @TableField("ColorKind")
+    private String colorKind;
+
+    /**
+     * 备注
+     */
+    @TableField("FNote")
+    private String note;
+
+    /**
+     * 喷涂粉号
+     */
+    @TableField("SprayPowder")
+    private String sprayPowder;
+
+    /**
+     * 木纹纸号
+     */
+    @TableField("WoodPaper")
+    private String woodPaper;
+
+    /**
+     * 统计类别
+     */
+    @TableField("StatisticKind")
+    private String statisticKind;
+
+    /**
+     * 统计唯一标识
+     */
+    @TableField("StatisticID")
+    private String statisticId;
+
+    /**
+     * 是否 CGUI
+     */
+    @TableField("CGUI")
+    private Integer cgui;
+
+    /**
+     * 粉号ID
+     */
+    @TableField("SprayPowderID")
+    private String sprayPowderId;
+
+}

+ 7 - 5
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/ErpOrder.java

@@ -49,16 +49,18 @@ public class ErpOrder implements Serializable {
     private Date placeTime;
 
     /**
-     * 订单状态 (0-待审核)
+     * 是否已确认 (0-否 1-是)
+     * @Author: Antigravity
      */
-    @TableField("FStatus")
-    private Integer status;
+    @TableField("FIsConfirmed")
+    private Integer isConfirmed;
 
     /**
-     * ERP单据编号(对应 t_Sale_OrderMaster.DocCode)
+     * 单据编号 (对应物理列 FErpDocCode)
+     * @Author: Antigravity
      */
     @TableField("FErpDocCode")
-    private String erpDocCode;
+    private String docCode;
 
     /**
      * 创建部门

+ 0 - 93
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/ErpOrderAudit.java

@@ -1,93 +0,0 @@
-package org.dromara.erp.domain;
-
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.Data;
-
-import java.io.Serial;
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 订单审核记录对象 t_Applet_Order_Audit
- * @Author: Antigravity
- */
-@Data
-@TableName("t_Applet_Order_Audit")
-public class ErpOrderAudit implements Serializable {
-
-    @Serial
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 审核记录主键
-     */
-    @TableId(value = "FRowID")
-    @JsonProperty("rowId")
-    private String rowId;
-
-    /**
-     * 订单ID
-     */
-    @TableField("FOrderID")
-    @JsonProperty("orderId")
-    private String orderId;
-
-    /**
-     * 审核人
-     */
-    @TableField("FAuditor")
-    private Long auditor;
-
-    /**
-     * 审核时间
-     */
-    @TableField("FAuditTime")
-    private Date auditTime;
-
-    /**
-     * 审核结果(1-通过, 2-驳回)
-     */
-    @TableField("FAuditResult")
-    @JsonProperty("auditResult")
-    private Integer auditResult;
-
-    /**
-     * 驳回原因
-     */
-    @TableField("FRejectReason")
-    private String rejectReason;
-
-    /**
-     * 创建部门
-     */
-    @TableField(value = "CreateDept", fill = FieldFill.INSERT)
-    private Long createDept;
-
-    /**
-     * 创建者
-     */
-    @TableField(value = "CreateBy", fill = FieldFill.INSERT)
-    private Long createBy;
-
-    /**
-     * 创建时间
-     */
-    @TableField(value = "CreateTime", fill = FieldFill.INSERT)
-    private Date createTime;
-
-    /**
-     * 更新者
-     */
-    @TableField(value = "UpdateBy", fill = FieldFill.INSERT_UPDATE)
-    private Long updateBy;
-
-    /**
-     * 更新时间
-     */
-    @TableField(value = "UpdateTime", fill = FieldFill.INSERT_UPDATE)
-    private Date updateTime;
-}

+ 14 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/ErpOrderDetail.java

@@ -104,6 +104,20 @@ public class ErpOrderDetail implements Serializable {
     @TableField("Count")
     private Integer count;
 
+    /**
+     * 单据编号
+     * @Author: Antigravity
+     */
+    @TableField("DocCode")
+    private String docCode;
+
+    /**
+     * 项目号
+     * @Author: Antigravity
+     */
+    @TableField("ItemNo")
+    private String itemNo;
+
     /**
      * ERP项目号
      */

+ 670 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/ErpSaleOrderDetail.java

@@ -0,0 +1,670 @@
+package org.dromara.erp.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.erp.domain.vo.ErpSaleOrderDetailVo;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * ERP 销售订单明细表 t_Sale_OrderDetail
+ *
+ * @Author: Antigravity
+ */
+@Data
+@AutoMapper(target = ErpSaleOrderDetailVo.class)
+@TableName("t_Sale_OrderDetail")
+public class ErpSaleOrderDetail implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 流水号
+     */
+    @TableId("DetailID")
+    private String detailId;
+
+    /**
+     * 关联主表ID (t_Sale_OrderMaster.FRowID)
+     */
+    @TableField("FRowID")
+    private String frowId;
+
+    /**
+     * 单据编号
+     */
+    @TableField("DocCode")
+    private String docCode;
+
+    /**
+     * 记录顺序
+     */
+    @TableField("DocItem")
+    private Integer docItem;
+
+    /**
+     * 小备注
+     */
+    @TableField("DNote")
+    private String dnote;
+
+    /**
+     * 源单编号
+     */
+    @TableField("FromID")
+    private String fromId;
+
+    /**
+     * 源单名称
+     */
+    @TableField("FromBill")
+    private String fromBill;
+
+    /**
+     * 编辑人
+     */
+    @TableField("ModifyName")
+    private String modifyName;
+
+    /**
+     * 编辑时间
+     */
+    @TableField("ModifyDate")
+    private Date modifyDate;
+
+    /**
+     * 创建人
+     */
+    @TableField("EnterName")
+    private String enterName;
+
+    /**
+     * 创建时间
+     */
+    @TableField("EnterDate")
+    private Date enterDate;
+
+    /**
+     * 记录状态
+     */
+    @TableField("IsModifyFlag")
+    private Integer isModifyFlag;
+
+    /**
+     * 项目号
+     */
+    @TableField("ItemNo")
+    private String itemNo;
+
+    /**
+     * 型材ID
+     */
+    @TableField("ModelID")
+    private String modelId;
+
+    /**
+     * 型材型号
+     */
+    @TableField("ModelNum")
+    private String modelNum;
+
+    /**
+     * 型材名称
+     */
+    @TableField("ModelName")
+    private String modelName;
+
+    /**
+     * 表面ID
+     */
+    @TableField("ColorID")
+    private String colorId;
+
+    /**
+     * 表面代码
+     */
+    @TableField("ColorNum")
+    private String colorNum;
+
+    /**
+     * 表面名称
+     */
+    @TableField("ColorName")
+    private String colorName;
+
+    /**
+     * 材质ID
+     */
+    @TableField("AlloyID")
+    private String alloyId;
+
+    /**
+     * 材质
+     */
+    @TableField("AlloyName")
+    private String alloyName;
+
+    /**
+     * 客户型号
+     */
+    @TableField("ClientModel")
+    private String clientModel;
+
+    /**
+     * 膜厚
+     */
+    @TableField("Film")
+    private BigDecimal film;
+
+    /**
+     * 长度
+     */
+    @TableField("FLength")
+    private BigDecimal flength;
+
+    /**
+     * 订单数
+     */
+    @TableField("Qty")
+    private Integer qty;
+
+    /**
+     * 下单重量
+     */
+    @TableField("WT")
+    private BigDecimal wt;
+
+    /**
+     * 米重
+     */
+    @TableField("MeterWT")
+    private BigDecimal meterWt;
+
+    /**
+     * 6米支重
+     */
+    @TableField("SixMeterWT")
+    private BigDecimal sixMeterWt;
+
+    /**
+     * 机台米重
+     */
+    @TableField("MachineMeterWT")
+    private BigDecimal machineMeterWt;
+
+    /**
+     * 支/扎
+     */
+    @TableField("PackPricks")
+    private Integer packPricks;
+
+    /**
+     * 包装方式ID
+     */
+    @TableField("PackID")
+    private String packId;
+
+    /**
+     * 包装代码
+     */
+    @TableField("PackName")
+    private String packName;
+
+    /**
+     * 胶条规格ID
+     */
+    @TableField("StripID")
+    private String stripId;
+
+    /**
+     * 胶条规格
+     */
+    @TableField("StripName")
+    private String stripName;
+
+    /**
+     * 总隔热型号标志位
+     */
+    @TableField("M_Insulated")
+    private Boolean mInsulated;
+
+    /**
+     * 子隔热型号标志位
+     */
+    @TableField("S_Insulated")
+    private Boolean sInsulated;
+
+    /**
+     * 隔热料子项目测试标志
+     */
+    @TableField("T_Insulated")
+    private Boolean tInsulated;
+
+    /**
+     * 分型号标志
+     */
+    @TableField("ParentRowID")
+    private String parentRowId;
+
+    /**
+     * 挤压排产数
+     */
+    @TableField("ExtrPlanQty")
+    private Integer extrPlanQty;
+
+    /**
+     * 预排数
+     */
+    @TableField("ExtrPreQty")
+    private Integer extrPreQty;
+
+    /**
+     * 挤压挤压数
+     */
+    @TableField("ExtrQty")
+    private Integer extrQty;
+
+    /**
+     * 坯料入库数
+     */
+    @TableField("SemiInQty")
+    private Integer semiInQty;
+
+    /**
+     * 坯料出库数
+     */
+    @TableField("SemiOutQty")
+    private Integer semiOutQty;
+
+    /**
+     * 坯料调入/出数
+     */
+    @TableField("SemiMoveQty")
+    private Integer semiMoveQty;
+
+    /**
+     * 成品入库数
+     */
+    @TableField("GoodsInQty")
+    private Integer goodsInQty;
+
+    /**
+     * 成品出库数
+     */
+    @TableField("GoodsOutQty")
+    private Integer goodsOutQty;
+
+    /**
+     * 成品调入/出数
+     */
+    @TableField("GoodsMoveQty")
+    private Integer goodsMoveQty;
+
+    /**
+     * 已备货数量
+     */
+    @TableField("GoodsStoreQty")
+    private Integer goodsStoreQty;
+
+    /**
+     * 成品库存重量
+     */
+    @TableField("GoodsStoreWT")
+    private BigDecimal goodsStoreWt;
+
+    /**
+     * 审价备注
+     */
+    @TableField("ApproveNote")
+    private String approveNote;
+
+    /**
+     * 已取消
+     */
+    @TableField("Canceled")
+    private Integer canceled;
+
+    /**
+     * 取消人
+     */
+    @TableField("CancelName")
+    private String cancelName;
+
+    /**
+     * 取消日期
+     */
+    @TableField("CancelDate")
+    private Date cancelDate;
+
+    /**
+     * 已暂停
+     */
+    @TableField("Paused")
+    private Integer paused;
+
+    /**
+     * 暂停人
+     */
+    @TableField("PauseName")
+    private String pauseName;
+
+    /**
+     * 暂停日期
+     */
+    @TableField("PauseDate")
+    private Date pauseDate;
+
+    /**
+     * 已完成 (生产完成)
+     */
+    @TableField("Finished")
+    private Integer finished;
+
+    /**
+     * 生产完成判定人
+     */
+    @TableField("FinishName")
+    private String finishName;
+
+    /**
+     * 生产完成判定日期
+     */
+    @TableField("FinishDate")
+    private Date finishDate;
+
+    /**
+     * 生产完成判定备注
+     */
+    @TableField("FinishNote")
+    private String finishNote;
+
+    /**
+     * 铝锭价
+     */
+    @TableField("AluPrice")
+    private BigDecimal aluPrice;
+
+    /**
+     * 加工费
+     */
+    @TableField("ProcessPrice")
+    private BigDecimal processPrice;
+
+    /**
+     * 表面加工费
+     */
+    @TableField("ColorPrice")
+    private BigDecimal colorPrice;
+
+    /**
+     * 其他费用
+     */
+    @TableField("OtherPrice")
+    private BigDecimal otherPrice;
+
+    /**
+     * 注胶型号
+     */
+    @TableField("IsGlue")
+    private Integer isGlue;
+
+    /**
+     * 加急
+     */
+    @TableField("IsUrgent")
+    private Integer isUrgent;
+
+    /**
+     * 均质
+     */
+    @TableField("IsHomogeneous")
+    private Integer isHomogeneous;
+
+    /**
+     * 不时效
+     */
+    @TableField("IsNotAging")
+    private Integer isNotAging;
+
+    /**
+     * 车刻方式ID
+     */
+    @TableField("RecordID")
+    private String recordId;
+
+    /**
+     * 车刻方式
+     */
+    @TableField("RecordName")
+    private String recordName;
+
+    /**
+     * 贴膜ID
+     */
+    @TableField("FilmReqID")
+    private String filmReqId;
+
+    /**
+     * 保护膜
+     */
+    @TableField("FilmReq")
+    private String filmReq;
+
+    /**
+     * 首次排产日期
+     */
+    @TableField("ExtrFirstDate")
+    private Date extrFirstDate;
+
+    /**
+     * 壁厚类型
+     */
+    @TableField("ThickKind")
+    private String thickKind;
+
+    /**
+     * 壁厚值
+     */
+    @TableField("Thick")
+    private String thick;
+
+    /**
+     * 壁厚下公差
+     */
+    @TableField("MinThickDif")
+    private BigDecimal minThickDif;
+
+    /**
+     * 壁厚上公差
+     */
+    @TableField("MaxThickDif")
+    private BigDecimal maxThickDif;
+
+    /**
+     * 壁厚下限值
+     */
+    @TableField("MinThickValue")
+    private BigDecimal minThickValue;
+
+    /**
+     * 壁厚上限值
+     */
+    @TableField("MaxThickValue")
+    private BigDecimal maxThickValue;
+
+    /**
+     * 壁厚下限
+     */
+    @TableField("MinThick")
+    private BigDecimal minThick;
+
+    /**
+     * 壁厚上限
+     */
+    @TableField("MaxThick")
+    private BigDecimal maxThick;
+
+    /**
+     * 6米重下限
+     */
+    @TableField("MinSixMeterWT")
+    private BigDecimal minSixMeterWt;
+
+    /**
+     * 6米重上限
+     */
+    @TableField("MaxSixMeterWT")
+    private BigDecimal maxSixMeterWt;
+
+    /**
+     * 锯挂痕
+     */
+    @TableField("IsSawCut")
+    private Integer isSawCut;
+
+    /**
+     * 包装费
+     */
+    @TableField("PackPrice")
+    private BigDecimal packPrice;
+
+    /**
+     * 胶条费
+     */
+    @TableField("StripPrice")
+    private BigDecimal stripPrice;
+
+    /**
+     * 挤压完成
+     */
+    @TableField("ExFinished")
+    private Integer exFinished;
+
+    /**
+     * 挤压完成判定人
+     */
+    @TableField("ExFinishName")
+    private String exFinishName;
+
+    /**
+     * 挤压完成判定日期
+     */
+    @TableField("ExFinishDate")
+    private Date exFinishDate;
+
+    /**
+     * 挤压料别
+     */
+    @TableField("ExtrModelSort")
+    private String extrModelSort;
+
+    /**
+     * 氧化料别
+     */
+    @TableField("OxidModelSort")
+    private String oxidModelSort;
+
+    /**
+     * 壁厚
+     */
+    @TableField("ThickValue")
+    private BigDecimal thickValue;
+
+    /**
+     * 型材料别
+     */
+    @TableField("ModelKind")
+    private String modelKind;
+
+    /**
+     * 壁厚下限分类
+     */
+    @TableField("KHThick")
+    private String khThick;
+
+    /**
+     * 标识符备注
+     */
+    @TableField("bjm")
+    private String bjm;
+
+    /**
+     * 标识位
+     */
+    @TableField("IsMark")
+    private Integer isMark;
+
+    /**
+     * 排产数
+     */
+    @TableField("PlanQty")
+    private Integer planQty;
+
+    /**
+     * 挤压需求数
+     */
+    @TableField("ExtrNeedQty")
+    private Integer extrNeedQty;
+
+    /**
+     * 项目备注
+     */
+    @TableField("ItemNote")
+    private String itemNote;
+
+    /**
+     * 理论重量标志
+     */
+    @TableField("IsTheory")
+    private Integer isTheory;
+
+    /**
+     * 签批标志
+     */
+    @TableField("IsSign")
+    private Integer isSign;
+
+    /**
+     * 签批时间
+     */
+    @TableField("SignDate")
+    private Date signDate;
+
+    /**
+     * 取消标志
+     */
+    @TableField("IsCancel")
+    private Integer isCancel;
+
+    /**
+     * 排产发布标志
+     */
+    @TableField("IsPlanPost")
+    private Integer isPlanPost;
+
+    /**
+     * 结束标志
+     */
+    @TableField("IsEnd")
+    private Integer isEnd;
+
+    /**
+     * 状态填充值
+     */
+    @TableField("Fill")
+    private Integer fill;
+
+    /**
+     * 客户颜色
+     */
+    @TableField("ClientColor")
+    private String clientColor;
+
+}

+ 9 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/ErpSaleOrderMaster.java

@@ -160,6 +160,15 @@ public class ErpSaleOrderMaster implements Serializable {
     @TableField("FinishDate")
     private Date finishDate;
 
+    @TableField("ExFinished")
+    private Integer exFinished;
+
+    @TableField("ExFinishName")
+    private String exFinishName;
+
+    @TableField("ExFinishDate")
+    private Date exFinishDate;
+
     @TableField("Canceled")
     private Integer canceled;
 

+ 8 - 4
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/bo/ErpOrderBo.java

@@ -41,14 +41,18 @@ public class ErpOrderBo implements Serializable {
     private Date placeTime;
 
     /**
-     * 订单状态
+     * 是否已确认 (0-否 1-是)
+     * @Author: Antigravity
      */
-    private Integer status;
+    private Integer isConfirmed;
 
     /**
-     * ERP单据编号
+     * 单据编号
+     * @Author: Antigravity
      */
-    private String erpDocCode;
+    private String docCode;
+
+
 
     /**
      * 绑定的订单明细 ID 列表

+ 12 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/bo/ErpOrderDetailBo.java

@@ -46,6 +46,18 @@ public class ErpOrderDetailBo implements Serializable {
 
     private Integer count;
 
+    /**
+     * 单据编号
+     * @Author: Antigravity
+     */
+    private String docCode;
+
+    /**
+     * 项目号
+     * @Author: Antigravity
+     */
+    private String itemNo;
+
     private Date createTime;
 
 }

+ 28 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/query/ErpColorQuery.java

@@ -0,0 +1,28 @@
+package org.dromara.erp.domain.query;
+
+import lombok.Data;
+
+/**
+ * ERP 颜色查询对象
+ *
+ * @Author: Antigravity
+ */
+@Data
+public class ErpColorQuery {
+
+    /**
+     * 代码
+     */
+    private String num;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 颜色类别(大类,如:沙面粉喷涂、金属粉喷涂等)
+     */
+    private String colorKind;
+
+}

+ 12 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/query/ErpOrderDetailQuery.java

@@ -15,4 +15,16 @@ public class ErpOrderDetailQuery {
      */
     private String orderId;
 
+    /**
+     * 单据编号
+     * @Author: Antigravity
+     */
+    private String docCode;
+
+    /**
+     * 项目号
+     * @Author: Antigravity
+     */
+    private String itemNo;
+
 }

+ 14 - 1
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/query/ErpOrderQuery.java

@@ -20,7 +20,20 @@ public class ErpOrderQuery {
     private Long placer;
 
     /**
-     * 订单状态
+     * 是否已确认 (0-否 1-是)
+     * @Author: Antigravity
+     */
+    private Integer isConfirmed;
+
+    /**
+     * 单据编号
+     * @Author: Antigravity
+     */
+    private String docCode;
+
+    /**
+     * 综合状态 (0-待确认 1-已确认 2-已审核 3-已签批 4-挤压完成 5-生产完成 6-已取消)
+     * @Author: Antigravity
      */
     private Integer status;
 

+ 174 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/vo/ErpColorVo.java

@@ -0,0 +1,174 @@
+package org.dromara.erp.domain.vo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.erp.domain.ErpColor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * ERP 颜色 VO
+ *
+ * @Author: Antigravity
+ */
+@Data
+@AutoMapper(target = ErpColor.class)
+public class ErpColorVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 记录号(主键)
+     */
+    private String rowId;
+
+    /**
+     * 代码
+     */
+    private String num;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 英文颜色
+     */
+    private String enName;
+
+    /**
+     * 颜色描述ID
+     */
+    private String describeId;
+
+    /**
+     * 光泽度
+     */
+    private BigDecimal glossQty;
+
+    /**
+     * 窗体功能ID
+     */
+    private String formId;
+
+    /**
+     * 公司ID
+     */
+    private Integer companyId;
+
+    /**
+     * 颜色类别ID
+     */
+    private String parentRowId;
+
+    /**
+     * 树记录号
+     */
+    private String treeControl;
+
+    /**
+     * 暂停使用 (0-否, 1-是)
+     */
+    private Integer stopUse;
+
+    /**
+     * 修改人ID
+     */
+    private String modifyUserId;
+
+    /**
+     * 编辑人
+     */
+    private String modifyName;
+
+    /**
+     * 编辑时间
+     */
+    private Date modifyDate;
+
+    /**
+     * 制单人ID
+     */
+    private String enterUserId;
+
+    /**
+     * 创建人
+     */
+    private String enterName;
+
+    /**
+     * 创建时间
+     */
+    private Date enterDate;
+
+    /**
+     * 修改状态
+     */
+    private Integer isModifyFlag;
+
+    /**
+     * 加工类型
+     */
+    private String processType;
+
+    /**
+     * 工艺ID
+     */
+    private String craftId;
+
+    /**
+     * 工艺代码
+     */
+    private String craftNum;
+
+    /**
+     * 工艺名称
+     */
+    private String craftName;
+
+    /**
+     * 颜色类别
+     */
+    private String colorKind;
+
+    /**
+     * 备注
+     */
+    private String note;
+
+    /**
+     * 喷涂粉号
+     */
+    private String sprayPowder;
+
+    /**
+     * 木纹纸号
+     */
+    private String woodPaper;
+
+    /**
+     * 统计类别
+     */
+    private String statisticKind;
+
+    /**
+     * 统计唯一标识
+     */
+    private String statisticId;
+
+    /**
+     * 是否 CGUI
+     */
+    private Integer cgui;
+
+    /**
+     * 粉号ID
+     */
+    private String sprayPowderId;
+
+}

+ 0 - 64
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/vo/ErpOrderAuditVo.java

@@ -1,64 +0,0 @@
-package org.dromara.erp.domain.vo;
-
-import io.github.linpeilie.annotations.AutoMapper;
-import lombok.Data;
-import org.dromara.common.translation.annotation.Translation;
-import org.dromara.common.translation.constant.TransConstant;
-import org.dromara.erp.domain.ErpOrderAudit;
-
-import java.io.Serial;
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 订单审核记录视图对象
- * @Author: Antigravity
- */
-@Data
-@AutoMapper(target = ErpOrderAudit.class)
-public class ErpOrderAuditVo implements Serializable {
-
-    @Serial
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 审核记录主键
-     */
-    private String rowId;
-
-    /**
-     * 订单ID
-     */
-    private String orderId;
-
-    /**
-     * 审核人
-     */
-    private Long auditor;
-
-    /**
-     * 审核人名称
-     */
-    @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "auditor")
-    private String auditorName;
-
-    /**
-     * 审核时间
-     */
-    private Date auditTime;
-
-    /**
-     * 审核结果(1-通过, 2-驳回)
-     */
-    private Integer auditResult;
-
-    /**
-     * 驳回原因
-     */
-    private String rejectReason;
-
-    /**
-     * 创建时间
-     */
-    private Date createTime;
-}

+ 12 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/vo/ErpOrderDetailVo.java

@@ -55,6 +55,18 @@ public class ErpOrderDetailVo implements Serializable {
 
     private Integer count;
 
+    /**
+     * 单据编号
+     * @Author: Antigravity
+     */
+    private String docCode;
+
+    /**
+     * 项目号
+     * @Author: Antigravity
+     */
+    private String itemNo;
+
     private String erpProjectId;
 
     private Date createTime;

+ 46 - 6
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/vo/ErpOrderVo.java

@@ -51,19 +51,23 @@ public class ErpOrderVo implements Serializable {
     private Date placeTime;
 
     /**
-     * 订单状态
+     * 是否已确认 (0-否 1-是)
+     * @Author: Antigravity
      */
-    private Integer status;
+    private Integer isConfirmed;
 
     /**
-     * 创建时间
+     * 单据编号
+     * @Author: Antigravity
      */
-    private Date createTime;
+    private String docCode;
 
     /**
-     * ERP单据编号
+     * 创建时间
      */
-    private String erpDocCode;
+    private Date createTime;
+
+
 
     /**
      * 订单明细列表
@@ -77,4 +81,40 @@ public class ErpOrderVo implements Serializable {
     @com.baomidou.mybatisplus.annotation.TableField(exist = false)
     private Integer totalCount;
 
+    /**
+     * 生产完成标志 (0-否 1-是)
+     */
+    @com.baomidou.mybatisplus.annotation.TableField(exist = false)
+    private Integer finished;
+
+    /**
+     * 挤压完成标志 (0-否 1-是)
+     */
+    @com.baomidou.mybatisplus.annotation.TableField(exist = false)
+    private Integer exFinished;
+
+    /**
+     * 已签批标志 (0-否 1-是)
+     */
+    @com.baomidou.mybatisplus.annotation.TableField(exist = false)
+    private Integer reviewed;
+
+    /**
+     * 已审核标志 (0-否 1-是)
+     */
+    @com.baomidou.mybatisplus.annotation.TableField(exist = false)
+    private Integer approved;
+
+    /**
+     * 取消标志 (0-否 1-是)
+     */
+    @com.baomidou.mybatisplus.annotation.TableField(exist = false)
+    private Integer canceled;
+
+    /**
+     * 综合状态 (0-待确认 1-已确认 2-已审核 3-已签批 4-挤压完成 5-生产完成 6-已取消)
+     */
+    @com.baomidou.mybatisplus.annotation.TableField(exist = false)
+    private Integer status;
+
 }

+ 132 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/vo/ErpSaleOrderDetailVo.java

@@ -0,0 +1,132 @@
+package org.dromara.erp.domain.vo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.erp.domain.ErpSaleOrderDetail;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * ERP 销售订单明细表视图对象
+ *
+ * @author Antigravity
+ */
+@Data
+@AutoMapper(target = ErpSaleOrderDetail.class)
+public class ErpSaleOrderDetailVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private String detailId;
+    private String frowId;
+    private String docCode;
+    private Integer docItem;
+    private String dnote;
+    private String fromId;
+    private String fromBill;
+    private String modifyName;
+    private Date modifyDate;
+    private String enterName;
+    private Date enterDate;
+    private Integer isModifyFlag;
+    private String itemNo;
+    private String modelId;
+    private String modelNum;
+    private String modelName;
+    private String colorId;
+    private String colorNum;
+    private String colorName;
+    private String alloyId;
+    private String alloyName;
+    private String clientModel;
+    private BigDecimal film;
+    private BigDecimal flength;
+    private Integer qty;
+    private BigDecimal wt;
+    private BigDecimal meterWt;
+    private BigDecimal sixMeterWt;
+    private BigDecimal machineMeterWt;
+    private Integer packPricks;
+    private String packId;
+    private String packName;
+    private String stripId;
+    private String stripName;
+    private Boolean mInsulated;
+    private Boolean sInsulated;
+    private Boolean tInsulated;
+    private String parentRowId;
+    private Integer extrPlanQty;
+    private Integer extrPreQty;
+    private Integer extrQty;
+    private Integer semiInQty;
+    private Integer semiOutQty;
+    private Integer semiMoveQty;
+    private Integer goodsInQty;
+    private Integer goodsOutQty;
+    private Integer goodsMoveQty;
+    private Integer goodsStoreQty;
+    private BigDecimal goodsStoreWt;
+    private String approveNote;
+    private Integer canceled;
+    private String cancelName;
+    private Date cancelDate;
+    private Integer paused;
+    private String pauseName;
+    private Date pauseDate;
+    private Integer finished;
+    private String finishName;
+    private Date finishDate;
+    private String finishNote;
+    private BigDecimal aluPrice;
+    private BigDecimal processPrice;
+    private BigDecimal colorPrice;
+    private BigDecimal otherPrice;
+    private Integer isGlue;
+    private Integer isUrgent;
+    private Integer isHomogeneous;
+    private Integer isNotAging;
+    private String recordId;
+    private String recordName;
+    private String filmReqId;
+    private String filmReq;
+    private Date extrFirstDate;
+    private String thickKind;
+    private String thick;
+    private BigDecimal minThickDif;
+    private BigDecimal maxThickDif;
+    private BigDecimal minThickValue;
+    private BigDecimal maxThickValue;
+    private BigDecimal minThick;
+    private BigDecimal maxThick;
+    private BigDecimal minSixMeterWt;
+    private BigDecimal maxSixMeterWt;
+    private Integer isSawCut;
+    private BigDecimal packPrice;
+    private BigDecimal stripPrice;
+    private Integer exFinished;
+    private String exFinishName;
+    private Date exFinishDate;
+    private String extrModelSort;
+    private String oxidModelSort;
+    private BigDecimal thickValue;
+    private String modelKind;
+    private String khThick;
+    private String bjm;
+    private Integer isMark;
+    private Integer planQty;
+    private Integer extrNeedQty;
+    private String itemNote;
+    private Integer isTheory;
+    private Integer isSign;
+    private Date signDate;
+    private Integer isCancel;
+    private Integer isPlanPost;
+    private Integer isEnd;
+    private Integer fill;
+    private String clientColor;
+
+}

+ 3 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/domain/vo/ErpSaleOrderMasterVo.java

@@ -66,6 +66,9 @@ public class ErpSaleOrderMasterVo implements Serializable {
     private Integer finished;
     private String finishName;
     private Date finishDate;
+    private Integer exFinished;
+    private String exFinishName;
+    private Date exFinishDate;
     private Integer canceled;
     private Integer paused;
     private String priceMode;

+ 0 - 20
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/enums/ErpAuditResult.java

@@ -1,20 +0,0 @@
-package org.dromara.erp.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * 订单审核结果枚举
- * @Author: Antigravity
- */
-@Getter
-@AllArgsConstructor
-public enum ErpAuditResult {
-
-    PASS(1, "通过"),
-    REJECT(2, "驳回");
-
-    private final Integer code;
-    private final String info;
-
-}

+ 0 - 24
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/enums/ErpOrderStatus.java

@@ -1,24 +0,0 @@
-package org.dromara.erp.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * ERP 订单状态枚举
- * @Author: Antigravity
- */
-@Getter
-@AllArgsConstructor
-public enum ErpOrderStatus {
-
-    CANCELLED(-1, "已撤销"),
-    WAIT_AUDIT(0, "待审核"),
-    REJECTED(1, "已驳回"),
-    WAIT_SIGN(2, "待签批"),
-    PRODUCING(3, "生产中"),
-    FINISHED(4, "已完成");
-
-    private final Integer code;
-    private final String info;
-
-}

+ 15 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/mapper/ErpColorMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.erp.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.erp.domain.ErpColor;
+import org.dromara.erp.domain.vo.ErpColorVo;
+
+/**
+ * ERP 颜色 Mapper 接口
+ *
+ * @Author: Antigravity
+ */
+@DS("htsail_cs")
+public interface ErpColorMapper extends BaseMapperPlus<ErpColor, ErpColorVo> {
+}

+ 0 - 13
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/mapper/ErpOrderAuditMapper.java

@@ -1,13 +0,0 @@
-package org.dromara.erp.mapper;
-
-import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
-import org.dromara.erp.domain.ErpOrderAudit;
-import org.dromara.erp.domain.vo.ErpOrderAuditVo;
-
-/**
- * 订单审核记录 Mapper 接口
- * @Author: Antigravity
- */
-@com.baomidou.dynamic.datasource.annotation.DS("htsail_cs")
-public interface ErpOrderAuditMapper extends BaseMapperPlus<ErpOrderAudit, ErpOrderAuditVo> {
-}

+ 21 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/mapper/ErpOrderMapper.java

@@ -11,4 +11,25 @@ import org.dromara.erp.domain.vo.ErpOrderVo;
  */
 @DS("htsail_cs")
 public interface ErpOrderMapper extends BaseMapperPlus<ErpOrder, ErpOrderVo> {
+
+    /**
+     * 自定义多表联查订单及外部 ERP 状态
+     * @Author: Antigravity
+     */
+    com.baomidou.mybatisplus.extension.plugins.pagination.Page<ErpOrderVo> selectOrderVoPage(
+            @org.apache.ibatis.annotations.Param("page") com.baomidou.mybatisplus.extension.plugins.pagination.Page<ErpOrderVo> page,
+            @org.apache.ibatis.annotations.Param("query") org.dromara.erp.domain.query.ErpOrderQuery query);
+
+    /**
+     * 自定义多表联查订单列表及外部 ERP 状态
+     * @Author: Antigravity
+     */
+    java.util.List<ErpOrderVo> selectOrderVoList(@org.apache.ibatis.annotations.Param("query") org.dromara.erp.domain.query.ErpOrderQuery query);
+
+    /**
+     * 自定义单条联查订单及外部 ERP 状态
+     * @Author: Antigravity
+     */
+    ErpOrderVo selectOrderVoById(@org.apache.ibatis.annotations.Param("rowId") String rowId);
+
 }

+ 15 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/mapper/ErpSaleOrderDetailMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.erp.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.erp.domain.ErpSaleOrderDetail;
+import org.dromara.erp.domain.vo.ErpSaleOrderDetailVo;
+
+/**
+ * ERP 销售订单明细表 Mapper 接口
+ *
+ * @Author: Antigravity
+ */
+@DS("htsail_cs")
+public interface ErpSaleOrderDetailMapper extends BaseMapperPlus<ErpSaleOrderDetail, ErpSaleOrderDetailVo> {
+}

+ 27 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/service/IErpColorService.java

@@ -0,0 +1,27 @@
+package org.dromara.erp.service;
+
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.erp.domain.query.ErpColorQuery;
+import org.dromara.erp.domain.vo.ErpColorVo;
+
+import java.util.List;
+
+/**
+ * ERP 颜色 Service 接口
+ *
+ * @Author: Antigravity
+ */
+public interface IErpColorService {
+
+    /**
+     * 分页查询 ERP 颜色列表
+     */
+    TableDataInfo<ErpColorVo> queryPageList(ErpColorQuery query, PageQuery pageQuery);
+
+    /**
+     * 查询所有启用的 ERP 颜色列表(不分页)
+     */
+    List<ErpColorVo> queryList(ErpColorQuery query);
+
+}

+ 0 - 30
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/service/IErpOrderAuditService.java

@@ -1,30 +0,0 @@
-package org.dromara.erp.service;
-
-import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.erp.domain.ErpOrderAudit;
-import org.dromara.erp.domain.vo.ErpOrderAuditVo;
-
-import java.util.List;
-
-/**
- * 订单审核记录 Service 接口
- * @Author: Antigravity
- */
-public interface IErpOrderAuditService {
-
-    /**
-     * 查询审核记录列表
-     */
-    TableDataInfo<ErpOrderAuditVo> queryPageList(ErpOrderAudit query, PageQuery pageQuery);
-
-    /**
-     * 根据订单ID查询审核历史
-     */
-    List<ErpOrderAuditVo> queryByOrderId(String orderId);
-
-    /**
-     * 新增审核记录
-     */
-    Boolean insert(ErpOrderAudit audit);
-}

+ 0 - 5
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/service/IErpOrderService.java

@@ -39,11 +39,6 @@ public interface IErpOrderService {
      */
     String insert(org.dromara.erp.domain.bo.ErpOrderBo bo);
 
-    /**
-     * 审核订单
-     */
-    Boolean auditOrder(org.dromara.erp.domain.ErpOrderAudit audit);
-
     /**
      * 撤销订单
      */

+ 62 - 0
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/service/impl/ErpColorServiceImpl.java

@@ -0,0 +1,62 @@
+package org.dromara.erp.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.erp.domain.ErpColor;
+import org.dromara.erp.domain.query.ErpColorQuery;
+import org.dromara.erp.domain.vo.ErpColorVo;
+import org.dromara.erp.mapper.ErpColorMapper;
+import org.dromara.erp.service.IErpColorService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * ERP 颜色 Service 业务层处理
+ *
+ * @Author: Antigravity
+ */
+@RequiredArgsConstructor
+@Service
+public class ErpColorServiceImpl implements IErpColorService {
+
+    private final ErpColorMapper baseMapper;
+
+    @Override
+    public TableDataInfo<ErpColorVo> queryPageList(ErpColorQuery query, PageQuery pageQuery) {
+        LambdaQueryWrapper<ErpColor> lqw = buildQueryWrapper(query);
+        IPage<ErpColorVo> page = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(page);
+    }
+
+    @Override
+    public List<ErpColorVo> queryList(ErpColorQuery query) {
+        LambdaQueryWrapper<ErpColor> lqw = buildQueryWrapper(query);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ErpColor> buildQueryWrapper(ErpColorQuery query) {
+        LambdaQueryWrapper<ErpColor> lqw = Wrappers.lambdaQuery();
+        // 仅查询启用的颜色记录
+        lqw.eq(ErpColor::getStopUse, 0);
+
+        if (query != null) {
+            // 代码模糊检索
+            lqw.like(StrUtil.isNotBlank(query.getNum()), ErpColor::getNum, query.getNum());
+            // 名称模糊检索
+            lqw.like(StrUtil.isNotBlank(query.getName()), ErpColor::getName, query.getName());
+            // 颜色大类检索
+            lqw.eq(StrUtil.isNotBlank(query.getColorKind()), ErpColor::getColorKind, query.getColorKind());
+        }
+
+        // 默认按代码顺序升序排列
+        lqw.orderByAsc(ErpColor::getNum);
+        return lqw;
+    }
+
+}

+ 0 - 56
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/service/impl/ErpOrderAuditServiceImpl.java

@@ -1,56 +0,0 @@
-package org.dromara.erp.service.impl;
-
-import cn.hutool.core.util.IdUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.RequiredArgsConstructor;
-import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.erp.domain.ErpOrderAudit;
-import org.dromara.erp.domain.vo.ErpOrderAuditVo;
-import org.dromara.erp.mapper.ErpOrderAuditMapper;
-import org.dromara.erp.service.IErpOrderAuditService;
-import org.springframework.stereotype.Service;
-
-import java.util.Date;
-import java.util.List;
-
-/**
- * 订单审核记录 Service 业务层处理
- * @Author: Antigravity
- */
-@RequiredArgsConstructor
-@Service
-public class ErpOrderAuditServiceImpl implements IErpOrderAuditService {
-
-    private final ErpOrderAuditMapper baseMapper;
-
-    @Override
-    public TableDataInfo<ErpOrderAuditVo> queryPageList(ErpOrderAudit query, PageQuery pageQuery) {
-        LambdaQueryWrapper<ErpOrderAudit> lqw = Wrappers.lambdaQuery();
-        lqw.eq(query.getOrderId() != null, ErpOrderAudit::getOrderId, query.getOrderId());
-        lqw.orderByDesc(ErpOrderAudit::getCreateTime);
-        Page<ErpOrderAuditVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
-        return TableDataInfo.build(result);
-    }
-
-    @Override
-    public List<ErpOrderAuditVo> queryByOrderId(String orderId) {
-        LambdaQueryWrapper<ErpOrderAudit> lqw = Wrappers.lambdaQuery();
-        lqw.eq(ErpOrderAudit::getOrderId, orderId);
-        lqw.orderByDesc(ErpOrderAudit::getCreateTime);
-        return baseMapper.selectVoList(lqw);
-    }
-
-    @Override
-    public Boolean insert(ErpOrderAudit audit) {
-        if (audit.getRowId() == null) {
-            audit.setRowId(IdUtil.fastUUID());
-        }
-        if (audit.getAuditTime() == null) {
-            audit.setAuditTime(new Date());
-        }
-        return baseMapper.insert(audit) > 0;
-    }
-}

+ 27 - 67
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/service/impl/ErpOrderServiceImpl.java

@@ -13,8 +13,6 @@ import org.dromara.common.mybatis.utils.IdGeneratorUtil;
 import org.dromara.erp.domain.ErpOrder;
 import org.dromara.erp.domain.query.ErpOrderQuery;
 import org.dromara.erp.domain.vo.ErpOrderVo;
-import org.dromara.erp.enums.ErpAuditResult;
-import org.dromara.erp.enums.ErpOrderStatus;
 import org.dromara.erp.mapper.ErpOrderMapper;
 import org.dromara.erp.service.IErpOrderService;
 import org.springframework.stereotype.Service;
@@ -36,13 +34,11 @@ public class ErpOrderServiceImpl implements IErpOrderService {
 
     private final ErpOrderMapper baseMapper;
     private final org.dromara.erp.mapper.ErpOrderDetailMapper erpOrderDetailMapper;
-    private final org.dromara.erp.mapper.ErpOrderAuditMapper erpOrderAuditMapper;
     private final org.dromara.erp.mapper.ErpSaleOrderMasterMapper erpSaleOrderMasterMapper;
 
     @Override
     public TableDataInfo<ErpOrderVo> queryPageList(ErpOrderQuery query, PageQuery pageQuery) {
-        LambdaQueryWrapper<ErpOrder> lqw = buildQueryWrapper(query);
-        com.baomidou.mybatisplus.extension.plugins.pagination.Page<ErpOrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        com.baomidou.mybatisplus.extension.plugins.pagination.Page<ErpOrderVo> result = baseMapper.selectOrderVoPage(pageQuery.build(), query);
 
         List<ErpOrderVo> list = result.getRecords();
         if (ObjectUtil.isNotEmpty(list)) {
@@ -53,8 +49,7 @@ public class ErpOrderServiceImpl implements IErpOrderService {
 
     @Override
     public List<ErpOrderVo> queryList(ErpOrderQuery query) {
-        LambdaQueryWrapper<ErpOrder> lqw = buildQueryWrapper(query);
-        List<ErpOrderVo> list = baseMapper.selectVoList(lqw);
+        List<ErpOrderVo> list = baseMapper.selectOrderVoList(query);
         if (ObjectUtil.isNotEmpty(list)) {
             fillOrderDetails(list);
         }
@@ -65,7 +60,8 @@ public class ErpOrderServiceImpl implements IErpOrderService {
         LambdaQueryWrapper<ErpOrder> lqw = Wrappers.lambdaQuery();
         lqw.eq(ObjectUtil.isNotEmpty(query.getCode()), ErpOrder::getCode, query.getCode());
         lqw.eq(ObjectUtil.isNotEmpty(query.getPlacer()), ErpOrder::getPlacer, query.getPlacer());
-        lqw.eq(ObjectUtil.isNotEmpty(query.getStatus()), ErpOrder::getStatus, query.getStatus());
+        lqw.eq(ObjectUtil.isNotEmpty(query.getIsConfirmed()), ErpOrder::getIsConfirmed, query.getIsConfirmed());
+        lqw.eq(ObjectUtil.isNotEmpty(query.getDocCode()), ErpOrder::getDocCode, query.getDocCode());
         lqw.orderByDesc(ErpOrder::getCreateTime);
         return lqw;
     }
@@ -87,7 +83,7 @@ public class ErpOrderServiceImpl implements IErpOrderService {
 
     @Override
     public ErpOrderVo queryById(String rowId) {
-        ErpOrderVo vo = baseMapper.selectVoById(rowId);
+        ErpOrderVo vo = baseMapper.selectOrderVoById(rowId);
         if (vo != null) {
             LambdaQueryWrapper<org.dromara.erp.domain.ErpOrderDetail> detailLqw = Wrappers.lambdaQuery();
             detailLqw.eq(org.dromara.erp.domain.ErpOrderDetail::getOrderId, rowId);
@@ -101,12 +97,11 @@ public class ErpOrderServiceImpl implements IErpOrderService {
     @Override
     public Map<Integer, Long> countByStatus() {
         LambdaQueryWrapper<ErpOrder> lqw = Wrappers.lambdaQuery();
-        lqw.select(ErpOrder::getStatus);
-        lqw.ne(ErpOrder::getStatus, ErpOrderStatus.CANCELLED.getCode());
-        lqw.ne(ErpOrder::getStatus, ErpOrderStatus.REJECTED.getCode());
+        lqw.select(ErpOrder::getIsConfirmed);
         List<ErpOrder> list = baseMapper.selectList(lqw);
         return list.stream()
-                .collect(Collectors.groupingBy(ErpOrder::getStatus, Collectors.counting()));
+                .filter(o -> o.getIsConfirmed() != null)
+                .collect(Collectors.groupingBy(ErpOrder::getIsConfirmed, Collectors.counting()));
     }
 
     @Override
@@ -141,8 +136,8 @@ public class ErpOrderServiceImpl implements IErpOrderService {
         if (entity.getPlaceTime() == null) {
             entity.setPlaceTime(new Date());
         }
-        if (entity.getStatus() == null) {
-            entity.setStatus(ErpOrderStatus.WAIT_AUDIT.getCode());
+        if (entity.getIsConfirmed() == null) {
+            entity.setIsConfirmed(0);
         }
 
         boolean result = baseMapper.insert(entity) > 0;
@@ -157,57 +152,27 @@ public class ErpOrderServiceImpl implements IErpOrderService {
         return result ? entity.getRowId() : null;
     }
 
-    @Override
-    @com.baomidou.dynamic.datasource.annotation.DSTransactional
-    public Boolean auditOrder(org.dromara.erp.domain.ErpOrderAudit audit) {
-        // 1. 修改订单状态
-        ErpOrder order = baseMapper.selectById(audit.getOrderId());
-        if (order == null) {
-            throw new org.dromara.common.core.exception.ServiceException("订单不存在");
-        }
-
-        // 根据审核结果设置订单状态
-        if (ErpAuditResult.PASS.getCode().equals(audit.getAuditResult())) { // 通过 → 待签批
-            order.setStatus(ErpOrderStatus.WAIT_SIGN.getCode());
-        } else if (ErpAuditResult.REJECT.getCode().equals(audit.getAuditResult())) { // 驳回 → 已驳回
-            order.setStatus(ErpOrderStatus.REJECTED.getCode());
-        }
-        baseMapper.updateById(order);
-
-        // 2. 记录审核历史
-        if (audit.getRowId() == null) {
-            audit.setRowId(IdUtil.fastUUID());
-        }
-        if (audit.getAuditor() == null) {
-            audit.setAuditor(org.dromara.common.satoken.utils.LoginHelper.getUserId());
-        }
-        if (audit.getAuditTime() == null) {
-            audit.setAuditTime(new Date());
-        }
-        return erpOrderAuditMapper.insert(audit) > 0;
-    }
-
     @Override
     public Boolean cancelOrder(String rowId) {
         ErpOrder order = baseMapper.selectById(rowId);
         if (order == null) {
             throw new org.dromara.common.core.exception.ServiceException("订单不存在");
         }
-        if (!ErpOrderStatus.WAIT_AUDIT.getCode().equals(order.getStatus())) {
-            throw new org.dromara.common.core.exception.ServiceException("仅待审核状态的订单可以撤销");
+        if (Integer.valueOf(1).equals(order.getIsConfirmed())) {
+            throw new org.dromara.common.core.exception.ServiceException("已确认的订单不可以撤销");
         }
-        order.setStatus(ErpOrderStatus.CANCELLED.getCode());
+        order.setIsConfirmed(0);
         return baseMapper.updateById(order) > 0;
     }
 
     @Override
     public void syncErpOrderStatus() {
         log.info("[ERP状态同步] 开始同步...");
-        // 查询 erpDocCode 不为空且未完成的订单
+        // 查询 erpDocCode 不为空且未确认的订单
         LambdaQueryWrapper<ErpOrder> lqw = Wrappers.lambdaQuery();
-        lqw.isNotNull(ErpOrder::getErpDocCode)
-           .ne(ErpOrder::getErpDocCode, "")
-           .ne(ErpOrder::getStatus, ErpOrderStatus.FINISHED.getCode());
+        lqw.isNotNull(ErpOrder::getDocCode)
+           .ne(ErpOrder::getDocCode, "")
+           .eq(ErpOrder::getIsConfirmed, 0);
         List<ErpOrder> orders = baseMapper.selectList(lqw);
 
         if (orders.isEmpty()) {
@@ -224,28 +189,23 @@ public class ErpOrderServiceImpl implements IErpOrderService {
                 org.dromara.erp.domain.ErpSaleOrderMaster master = erpSaleOrderMasterMapper.selectOne(masterLqw);
 
                 if (master == null) {
-                    log.warn("[ERP状态同步] 未找到 ERP 单据: {}", order.getErpDocCode());
+                    log.warn("[ERP状态同步] 未找到 ERP 单据: {}", order.getDocCode());
                     continue;
                 }
 
-                Integer newStatus = null;
-                if (Integer.valueOf(1).equals(master.getFinished())) {
-                    // 已完成
-                    newStatus = ErpOrderStatus.FINISHED.getCode();
-                } else if (Integer.valueOf(1).equals(master.getReviewed())) {
-                    // 已签批
-                    newStatus = ErpOrderStatus.PRODUCING.getCode();
-                } else if (Integer.valueOf(1).equals(master.getApproved())) {
-                    // 已审核
-                    newStatus = ErpOrderStatus.WAIT_SIGN.getCode();
+                boolean shouldConfirm = false;
+                if (Integer.valueOf(1).equals(master.getFinished()) ||
+                    Integer.valueOf(1).equals(master.getReviewed()) ||
+                    Integer.valueOf(1).equals(master.getApproved())) {
+                    shouldConfirm = true;
                 }
 
-                if (newStatus != null && !newStatus.equals(order.getStatus())) {
-                    order.setStatus(newStatus);
+                if (shouldConfirm) {
+                    order.setIsConfirmed(1);
                     baseMapper.updateById(order);
                     updatedCount++;
-                    log.info("[ERP状态同步] 订单 {} (ERP:{}) 状态更新为: {}",
-                        order.getCode(), order.getErpDocCode(), newStatus);
+                    log.info("[ERP状态同步] 订单 {} (ERP:{}) 状态更新为已确认",
+                        order.getCode(), order.getDocCode());
                 }
             } catch (Exception e) {
                 log.error("[ERP状态同步] 处理订单 {} 异常: {}", order.getCode(), e.getMessage(), e);

+ 0 - 36
ruoyi-modules/yingpaipay-erp/src/main/java/org/dromara/erp/task/ErpOrderSyncTask.java

@@ -1,36 +0,0 @@
-package org.dromara.erp.task;
-
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.dromara.erp.service.IErpOrderService;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-/**
- * ERP 订单状态同步定时任务
- * <p>
- * 每分钟执行一次,将 ERP 系统中的订单状态同步到本地订单表
- *
- * @author Antigravity
- */
-@Slf4j
-@RequiredArgsConstructor
-@Component
-public class ErpOrderSyncTask {
-
-    private final IErpOrderService erpOrderService;
-
-    /**
-     * 每 60 秒同步一次 ERP 订单状态
-     */
-    @Scheduled(fixedRate = 60000)
-    public void syncOrderStatus() {
-        log.debug("[定时任务] 开始同步 ERP 订单状态...");
-        try {
-            erpOrderService.syncErpOrderStatus();
-        } catch (Exception e) {
-            log.error("[定时任务] ERP 订单状态同步异常: {}", e.getMessage(), e);
-        }
-    }
-
-}

+ 240 - 0
ruoyi-modules/yingpaipay-erp/src/main/resources/mapper/ErpOrderMapper.xml

@@ -0,0 +1,240 @@
+<?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 映射文件
+  @Author: Antigravity
+-->
+<mapper namespace="org.dromara.erp.mapper.ErpOrderMapper">
+
+    <!-- 自定义多表联查订单及外部 ERP 状态 -->
+    <select id="selectOrderVoPage" resultType="org.dromara.erp.domain.vo.ErpOrderVo">
+        SELECT 
+            o.FRowID as rowId,
+            o.FCode as code,
+            o.FPlacer as placer,
+            o.FPlaceTime as placeTime,
+            o.FIsConfirmed as isConfirmed,
+            o.FErpDocCode as docCode,
+            o.CreateTime as createTime,
+            m.Finished as finished,
+            m.ExFinished as exFinished,
+            m.Reviewed as reviewed,
+            m.Approved as approved,
+            m.Canceled as canceled,
+            CASE 
+                WHEN m.Finished = 1 THEN 5
+                WHEN m.Finished = 0 AND m.ExFinished = 1 THEN 4
+                WHEN m.Finished = 0 AND m.ExFinished = 0 AND m.Reviewed = 1 THEN 3
+                WHEN m.Finished = 0 AND m.ExFinished = 0 AND m.Reviewed = 0 AND m.Approved = 1 THEN 2
+                WHEN m.Finished = 0 AND m.ExFinished = 0 AND m.Reviewed = 0 AND m.Approved = 0 AND m.Canceled = 1 THEN 6
+                WHEN (m.Canceled IS NULL OR m.Canceled = 0) AND (m.Finished IS NULL OR m.Finished = 0) 
+                     AND (m.ExFinished IS NULL OR m.ExFinished = 0) AND (m.Reviewed IS NULL OR m.Reviewed = 0) 
+                     AND (m.Approved IS NULL OR m.Approved = 0) AND o.FIsConfirmed = 1 THEN 1
+                ELSE 0
+            END as status
+        FROM t_Applet_Order o
+        LEFT JOIN t_Sale_OrderMaster m ON o.FErpDocCode = m.DocCode
+        <where>
+            <if test="query.code != null and query.code != ''">
+                AND o.FCode LIKE concat('%', #{query.code}, '%')
+            </if>
+            <if test="query.placer != null">
+                AND o.FPlacer = #{query.placer}
+            </if>
+            <if test="query.docCode != null and query.docCode != ''">
+                AND o.DocCode LIKE concat('%', #{query.docCode}, '%')
+            </if>
+            <if test="query.isConfirmed != null">
+                <choose>
+                    <when test="query.isConfirmed == 0">
+                        AND o.FIsConfirmed = 0 
+                        AND (m.Finished IS NULL OR m.Finished = 0)
+                        AND (m.ExFinished IS NULL OR m.ExFinished = 0)
+                        AND (m.Reviewed IS NULL OR m.Reviewed = 0)
+                        AND (m.Approved IS NULL OR m.Approved = 0)
+                        AND (m.Canceled IS NULL OR m.Canceled = 0)
+                    </when>
+                    <when test="query.isConfirmed == 1">
+                        AND (
+                            o.FIsConfirmed = 1 
+                            OR m.Finished = 1 
+                            OR m.ExFinished = 1 
+                            OR m.Reviewed = 1 
+                            OR m.Approved = 1 
+                            OR m.Canceled = 1
+                        )
+                    </when>
+                </choose>
+            </if>
+            <if test="query.status != null">
+                <choose>
+                    <when test="query.status == 0">
+                        AND o.FIsConfirmed = 0 
+                        AND (m.Finished IS NULL OR m.Finished = 0)
+                        AND (m.ExFinished IS NULL OR m.ExFinished = 0)
+                        AND (m.Reviewed IS NULL OR m.Reviewed = 0)
+                        AND (m.Approved IS NULL OR m.Approved = 0)
+                        AND (m.Canceled IS NULL OR m.Canceled = 0)
+                    </when>
+                    <when test="query.status == 1">
+                        AND o.FIsConfirmed = 1
+                        AND (m.Finished IS NULL OR m.Finished = 0)
+                        AND (m.ExFinished IS NULL OR m.ExFinished = 0)
+                        AND (m.Reviewed IS NULL OR m.Reviewed = 0)
+                        AND (m.Approved IS NULL OR m.Approved = 0)
+                        AND (m.Canceled IS NULL OR m.Canceled = 0)
+                    </when>
+                    <when test="query.status == 2">
+                        AND m.Finished = 0 AND m.ExFinished = 0 AND m.Reviewed = 0 AND m.Approved = 1
+                    </when>
+                    <when test="query.status == 3">
+                        AND m.Finished = 0 AND m.ExFinished = 0 AND m.Reviewed = 1
+                    </when>
+                    <when test="query.status == 4">
+                        AND m.Finished = 0 AND m.ExFinished = 1
+                    </when>
+                    <when test="query.status == 5">
+                        AND m.Finished = 1
+                    </when>
+                    <when test="query.status == 6">
+                        AND m.Finished = 0 AND m.ExFinished = 0 AND m.Reviewed = 0 AND m.Approved = 0 AND m.Canceled = 1
+                    </when>
+                </choose>
+            </if>
+        </where>
+        ORDER BY o.CreateTime DESC
+    </select>
+
+    <!-- 自定义多表联查订单列表及外部 ERP 状态 -->
+    <select id="selectOrderVoList" resultType="org.dromara.erp.domain.vo.ErpOrderVo">
+        SELECT 
+            o.FRowID as rowId,
+            o.FCode as code,
+            o.FPlacer as placer,
+            o.FPlaceTime as placeTime,
+            o.FIsConfirmed as isConfirmed,
+            o.FErpDocCode as docCode,
+            o.CreateTime as createTime,
+            m.Finished as finished,
+            m.ExFinished as exFinished,
+            m.Reviewed as reviewed,
+            m.Approved as approved,
+            m.Canceled as canceled,
+            CASE 
+                WHEN m.Finished = 1 THEN 5
+                WHEN m.Finished = 0 AND m.ExFinished = 1 THEN 4
+                WHEN m.Finished = 0 AND m.ExFinished = 0 AND m.Reviewed = 1 THEN 3
+                WHEN m.Finished = 0 AND m.ExFinished = 0 AND m.Reviewed = 0 AND m.Approved = 1 THEN 2
+                WHEN m.Finished = 0 AND m.ExFinished = 0 AND m.Reviewed = 0 AND m.Approved = 0 AND m.Canceled = 1 THEN 6
+                WHEN (m.Canceled IS NULL OR m.Canceled = 0) AND (m.Finished IS NULL OR m.Finished = 0) 
+                     AND (m.ExFinished IS NULL OR m.ExFinished = 0) AND (m.Reviewed IS NULL OR m.Reviewed = 0) 
+                     AND (m.Approved IS NULL OR m.Approved = 0) AND o.FIsConfirmed = 1 THEN 1
+                ELSE 0
+            END as status
+        FROM t_Applet_Order o
+        LEFT JOIN t_Sale_OrderMaster m ON o.FErpDocCode = m.DocCode
+        <where>
+            <if test="query.code != null and query.code != ''">
+                AND o.FCode = #{query.code}
+            </if>
+            <if test="query.placer != null">
+                AND o.FPlacer = #{query.placer}
+            </if>
+            <if test="query.docCode != null and query.docCode != ''">
+                AND o.DocCode = #{query.docCode}
+            </if>
+            <if test="query.isConfirmed != null">
+                <choose>
+                    <when test="query.isConfirmed == 0">
+                        AND o.FIsConfirmed = 0 
+                        AND (m.Finished IS NULL OR m.Finished = 0)
+                        AND (m.ExFinished IS NULL OR m.ExFinished = 0)
+                        AND (m.Reviewed IS NULL OR m.Reviewed = 0)
+                        AND (m.Approved IS NULL OR m.Approved = 0)
+                        AND (m.Canceled IS NULL OR m.Canceled = 0)
+                    </when>
+                    <when test="query.isConfirmed == 1">
+                        AND (
+                            o.FIsConfirmed = 1 
+                            OR m.Finished = 1 
+                            OR m.ExFinished = 1 
+                            OR m.Reviewed = 1 
+                            OR m.Approved = 1 
+                            OR m.Canceled = 1
+                        )
+                    </when>
+                </choose>
+            </if>
+            <if test="query.status != null">
+                <choose>
+                    <when test="query.status == 0">
+                        AND o.FIsConfirmed = 0 
+                        AND (m.Finished IS NULL OR m.Finished = 0)
+                        AND (m.ExFinished IS NULL OR m.ExFinished = 0)
+                        AND (m.Reviewed IS NULL OR m.Reviewed = 0)
+                        AND (m.Approved IS NULL OR m.Approved = 0)
+                        AND (m.Canceled IS NULL OR m.Canceled = 0)
+                    </when>
+                    <when test="query.status == 1">
+                        AND o.FIsConfirmed = 1
+                        AND (m.Finished IS NULL OR m.Finished = 0)
+                        AND (m.ExFinished IS NULL OR m.ExFinished = 0)
+                        AND (m.Reviewed IS NULL OR m.Reviewed = 0)
+                        AND (m.Approved IS NULL OR m.Approved = 0)
+                        AND (m.Canceled IS NULL OR m.Canceled = 0)
+                    </when>
+                    <when test="query.status == 2">
+                        AND m.Finished = 0 AND m.ExFinished = 0 AND m.Reviewed = 0 AND m.Approved = 1
+                    </when>
+                    <when test="query.status == 3">
+                        AND m.Finished = 0 AND m.ExFinished = 0 AND m.Reviewed = 1
+                    </when>
+                    <when test="query.status == 4">
+                        AND m.Finished = 0 AND m.ExFinished = 1
+                    </when>
+                    <when test="query.status == 5">
+                        AND m.Finished = 1
+                    </when>
+                    <when test="query.status == 6">
+                        AND m.Finished = 0 AND m.ExFinished = 0 AND m.Reviewed = 0 AND m.Approved = 0 AND m.Canceled = 1
+                    </when>
+                </choose>
+            </if>
+        </where>
+        ORDER BY o.CreateTime DESC
+    </select>
+
+    <!-- 自定义单条联查订单及外部 ERP 状态 -->
+    <select id="selectOrderVoById" resultType="org.dromara.erp.domain.vo.ErpOrderVo">
+        SELECT 
+            o.FRowID as rowId,
+            o.FCode as code,
+            o.FPlacer as placer,
+            o.FPlaceTime as placeTime,
+            o.FIsConfirmed as isConfirmed,
+            o.FErpDocCode as docCode,
+            o.CreateTime as createTime,
+            m.Finished as finished,
+            m.ExFinished as exFinished,
+            m.Reviewed as reviewed,
+            m.Approved as approved,
+            m.Canceled as canceled,
+            CASE 
+                WHEN m.Finished = 1 THEN 5
+                WHEN m.Finished = 0 AND m.ExFinished = 1 THEN 4
+                WHEN m.Finished = 0 AND m.ExFinished = 0 AND m.Reviewed = 1 THEN 3
+                WHEN m.Finished = 0 AND m.ExFinished = 0 AND m.Reviewed = 0 AND m.Approved = 1 THEN 2
+                WHEN m.Finished = 0 AND m.ExFinished = 0 AND m.Reviewed = 0 AND m.Approved = 0 AND m.Canceled = 1 THEN 6
+                WHEN (m.Canceled IS NULL OR m.Canceled = 0) AND (m.Finished IS NULL OR m.Finished = 0) 
+                     AND (m.ExFinished IS NULL OR m.ExFinished = 0) AND (m.Reviewed IS NULL OR m.Reviewed = 0) 
+                     AND (m.Approved IS NULL OR m.Approved = 0) AND o.FIsConfirmed = 1 THEN 1
+                ELSE 0
+            END as status
+        FROM t_Applet_Order o
+        LEFT JOIN t_Sale_OrderMaster m ON o.FErpDocCode = m.DocCode
+        WHERE o.FRowID = #{rowId}
+    </select>
+
+</mapper>

+ 15 - 15
script/sql/sqlserver/v1/HTSail_CS-create.sql

@@ -1,18 +1,15 @@
 -- ----------------------------
 -- Table structure for t_Applet_Order
 -- ----------------------------
-IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[t_Applet_Order]') AND type IN ('U'))
-	DROP TABLE [dbo].[t_Applet_Order]
-GO
 
 CREATE TABLE [dbo].[t_Applet_Order] (
   [FRowID] [dbo].[RowID] NOT NULL,
   [FCode] varchar(50) NULL,
   [FPlacer] bigint NULL,
   [FPlaceTime] datetime DEFAULT GETDATE() NULL,
-  [FStatus] int DEFAULT 0 NULL,
+  [FIsConfirmed] int DEFAULT 0 NULL,
   [FErpDocCode] varchar(50) NULL,
-  
+
   -- 常规审计字段
   [CreateDept] bigint NULL,
   [CreateBy] bigint NULL,
@@ -22,10 +19,10 @@ CREATE TABLE [dbo].[t_Applet_Order] (
 )
 GO
 
+-- 字段注释
 ALTER TABLE [dbo].[t_Applet_Order] ADD CONSTRAINT [PK_t_Applet_Order] PRIMARY KEY CLUSTERED ([FRowID])
 GO
 
--- 字段注释
 EXEC sp_addextendedproperty 'MS_Description', N'订单主键', 'SCHEMA', N'dbo', 'TABLE', N't_Applet_Order', 'COLUMN', N'FRowID'
 GO
 EXEC sp_addextendedproperty 'MS_Description', N'订单单号', 'SCHEMA', N'dbo', 'TABLE', N't_Applet_Order', 'COLUMN', N'FCode'
@@ -34,7 +31,7 @@ EXEC sp_addextendedproperty 'MS_Description', N'下单人', 'SCHEMA', N'dbo', 'T
 GO
 EXEC sp_addextendedproperty 'MS_Description', N'下单时间', 'SCHEMA', N'dbo', 'TABLE', N't_Applet_Order', 'COLUMN', N'FPlaceTime'
 GO
-EXEC sp_addextendedproperty 'MS_Description', N'订单状态 (0-待审核)', 'SCHEMA', N'dbo', 'TABLE', N't_Applet_Order', 'COLUMN', N'FStatus'
+EXEC sp_addextendedproperty 'MS_Description', N'是否已确认', 'SCHEMA', N'dbo', 'TABLE', N't_Applet_Order', 'COLUMN', N'FIsConfirmed'
 GO
 EXEC sp_addextendedproperty 'MS_Description', N'ERP单据编号', 'SCHEMA', N'dbo', 'TABLE', N't_Applet_Order', 'COLUMN', N'FErpDocCode'
 GO
@@ -44,34 +41,33 @@ GO
 -- ----------------------------
 -- Table structure for t_Applet_Order_Details
 -- ----------------------------
-IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[t_Applet_Order_Details]') AND type IN ('U'))
-	DROP TABLE [dbo].[t_Applet_Order_Details]
-GO
 
 CREATE TABLE [dbo].[t_Applet_Order_Details] (
   [FRowID] [dbo].[RowID] NOT NULL,
   [FOrderID] [dbo].[RowID] NULL,
-  
+
   -- 型材信息
   [ModelID] [dbo].[RowID] NULL,
   [ModelNum] [dbo].[FNum] NULL,
   [ModelName] [dbo].[FNum] NULL,
   [Material] [dbo].[FNum] NULL,
-  
+
   -- 表面处理
   [SurfaceID] [dbo].[RowID] NULL,
   [SurfaceName] [dbo].[FNum] NULL,
-  
+
   -- 包装方式
   [PackID] [dbo].[RowID] NULL,
   [PackName] [dbo].[FNum] NULL,
-  
+
   -- 规格与数量
   [Length] [dbo].[CustomFloat] NULL,
   [WallThickness] [dbo].[CustomFloat] NULL,
   [Count] int NULL,
+  [DocCode] varchar(50) NULL,
+  [ItemNo] varchar(50) NULL,
   [FErpProjectID] varchar(50) NULL,
-  
+
   -- 审计字段
   [CreateDept] bigint NULL,
   [CreateBy] bigint NULL,
@@ -111,6 +107,10 @@ EXEC sp_addextendedproperty 'MS_Description', N'壁厚(mm)', 'SCHEMA', N'dbo', '
 GO
 EXEC sp_addextendedproperty 'MS_Description', N'支数', 'SCHEMA', N'dbo', 'TABLE', N't_Applet_Order_Details', 'COLUMN', N'Count'
 GO
+EXEC sp_addextendedproperty 'MS_Description', N'单据编号', 'SCHEMA', N'dbo', 'TABLE', N't_Applet_Order_Details', 'COLUMN', N'DocCode'
+GO
+EXEC sp_addextendedproperty 'MS_Description', N'项目号', 'SCHEMA', N'dbo', 'TABLE', N't_Applet_Order_Details', 'COLUMN', N'ItemNo'
+GO
 EXEC sp_addextendedproperty 'MS_Description', N'ERP项目号', 'SCHEMA', N'dbo', 'TABLE', N't_Applet_Order_Details', 'COLUMN', N'FErpProjectID'
 GO
 EXEC sp_addextendedproperty 'MS_Description', N'创建部门', 'SCHEMA', N'dbo', 'TABLE', N't_Applet_Order_Details', 'COLUMN', N'CreateDept'