Browse Source

Merge branch 'master' into zl

林小张 2 months ago
parent
commit
61354ca15c
100 changed files with 7855 additions and 15 deletions
  1. 6 0
      ruoyi-api/ruoyi-api-bom/pom.xml
  2. 10 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteCustomerDeptService.java
  3. 14 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteSupplierContractService.java
  4. 12 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteSupplierInfoService.java
  5. 13 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteSupplierProcurementService.java
  6. 63 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/vo/RemoteCustomerDeptVo.java
  7. 1 0
      ruoyi-api/ruoyi-api-external/pom.xml
  8. 42 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCompany.java
  9. 13 0
      ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/service/RemoteExternalProductService.java
  10. 15 0
      ruoyi-api/ruoyi-api-product/src/main/java/org/dromara/product/api/RemoteCategoryService.java
  11. 30 0
      ruoyi-api/ruoyi-api-product/src/main/java/org/dromara/product/api/RemoteContractProdcutService.java
  12. 8 0
      ruoyi-api/ruoyi-api-product/src/main/java/org/dromara/product/api/RemoteProductService.java
  13. 72 0
      ruoyi-api/ruoyi-api-product/src/main/java/org/dromara/product/api/domain/ContractProductDto.java
  14. 2 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteComStaffService.java
  15. 14 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteSupplierTypeService.java
  16. 12 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java
  17. 5 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/bo/RemoteUserBo.java
  18. 19 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteSupplierTypeVo.java
  19. 23 0
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/AssigneeTypeConstants.java
  20. 7 0
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/OrderAssignStatus.java
  21. 11 1
      ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlatformDataScopeInterceptor.java
  22. 5 0
      ruoyi-gateway/pom.xml
  23. 1 0
      ruoyi-modules/pom.xml
  24. 27 0
      ruoyi-modules/ruoyi-customer/Dockerfile
  25. 5 0
      ruoyi-modules/ruoyi-customer/pom.xml
  26. 0 1
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/RuoyiCustomerApplication.java
  27. 123 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/ContractSupplyController.java
  28. 1 1
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/CustomerInfoController.java
  29. 14 6
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/EnterpriseScaleController.java
  30. 14 6
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/IndustryCategoryController.java
  31. 114 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierAddressController.java
  32. 126 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierAuthorizeController.java
  33. 118 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierBankController.java
  34. 112 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierBusinessInfoController.java
  35. 118 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierContactController.java
  36. 127 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierContractController.java
  37. 161 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierInfoController.java
  38. 41 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierInformationController.java
  39. 111 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierProcurementController.java
  40. 106 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierapproveController.java
  41. 111 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplyAreaController.java
  42. 114 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/ContractSupply.java
  43. 117 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplierAddress.java
  44. 154 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplierAuthorize.java
  45. 112 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplierBank.java
  46. 109 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplierBusinessInfo.java
  47. 142 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplierContact.java
  48. 142 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplierContract.java
  49. 329 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplierInfo.java
  50. 92 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplierProcurement.java
  51. 341 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/Supplierapprove.java
  52. 77 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplyArea.java
  53. 120 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/ContractSupplyBo.java
  54. 99 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierAddressBo.java
  55. 160 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierAuthorizeBo.java
  56. 86 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierBankBo.java
  57. 91 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierBusinessInfoBo.java
  58. 142 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierContactBo.java
  59. 102 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierContractBo.java
  60. 366 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierInfoBo.java
  61. 44 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierProcurementBo.java
  62. 65 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierapproveBo.java
  63. 62 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplyAreaBo.java
  64. 16 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/dto/ContractCountDTO.java
  65. 496 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/ContractSupplyProductVo.java
  66. 94 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/ContractSupplyVo.java
  67. 2 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/CustomerContactVo.java
  68. 125 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierAddressVo.java
  69. 207 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierAuthorizeVo.java
  70. 80 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierBankVo.java
  71. 112 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierBusinessInfoVo.java
  72. 134 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierContactVo.java
  73. 113 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierContractVo.java
  74. 448 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierInfoVo.java
  75. 251 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierInformationVo.java
  76. 56 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierProcurementVo.java
  77. 87 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierapproveVo.java
  78. 78 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplyAreaVo.java
  79. 28 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/dubbo/RemoteCustomerDeptServiceImpl.java
  80. 25 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/dubbo/RemoteSupplierContractServiceImpl.java
  81. 25 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/dubbo/RemoteSupplierInfoServiceImpl.java
  82. 31 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/dubbo/RemoteSupplierProcurementServiceImpl.java
  83. 51 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/enums/ContractSupplierStatusEnum.java
  84. 50 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/enums/SupplierCooperationStatusEnum.java
  85. 66 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/enums/SupplierStatusEnum.java
  86. 15 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/ContractSupplyMapper.java
  87. 15 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierAddressMapper.java
  88. 15 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierAuthorizeMapper.java
  89. 15 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierBankMapper.java
  90. 15 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierBusinessInfoMapper.java
  91. 15 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierContactMapper.java
  92. 15 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierContractMapper.java
  93. 15 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierInfoMapper.java
  94. 15 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierProcurementMapper.java
  95. 15 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierapproveMapper.java
  96. 15 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplyAreaMapper.java
  97. 72 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/IContractSupplyService.java
  98. 3 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/ICustomerDeptService.java
  99. 72 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/ISupplierAddressService.java
  100. 75 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/ISupplierAuthorizeService.java

+ 6 - 0
ruoyi-api/ruoyi-api-bom/pom.xml

@@ -21,6 +21,12 @@
     <dependencyManagement>
         <dependencies>
 
+            <dependency>
+                <groupId>org.dromara</groupId>
+                <artifactId>ruoyi-api-customer</artifactId>
+                <version>${revision}</version>
+            </dependency>
+
             <!-- 系统接口 -->
             <dependency>
                 <groupId>org.dromara</groupId>

+ 10 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteCustomerDeptService.java

@@ -0,0 +1,10 @@
+package org.dromara.customer.api;
+
+import org.dromara.customer.api.domain.vo.RemoteCustomerDeptVo;
+
+import java.util.List;
+
+public interface RemoteCustomerDeptService {
+
+    List<RemoteCustomerDeptVo> selectCustomerDeptListByCustomerId(Long customerId);
+}

+ 14 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteSupplierContractService.java

@@ -0,0 +1,14 @@
+package org.dromara.customer.api;
+
+/**
+ * author
+ * 时间:2026/1/23,9:21
+ */
+public interface RemoteSupplierContractService {
+
+    /**
+     * 获取待审核 以及 生效的合同,并通过定时任务批量更新合同状态
+     */
+    int updateExpiredContractStatus();
+
+}

+ 12 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteSupplierInfoService.java

@@ -0,0 +1,12 @@
+package org.dromara.customer.api;
+
+/**
+ * author
+ * 时间:2026/1/23,9:43
+ */
+public interface RemoteSupplierInfoService {
+    /**
+     * 通过生效状态下判断有效期来更新是否停用
+     */
+    int updateIsDisable();
+}

+ 13 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemoteSupplierProcurementService.java

@@ -0,0 +1,13 @@
+package org.dromara.customer.api;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * author
+ * 时间:2026/1/14,19:21
+ */
+public interface RemoteSupplierProcurementService {
+
+    Map<String,Long> selectSupplierProcurementIds(Long id);
+}

+ 63 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/domain/vo/RemoteCustomerDeptVo.java

@@ -0,0 +1,63 @@
+package org.dromara.customer.api.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class RemoteCustomerDeptVo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    private Long deptId;
+
+    /**
+     * 客户编号
+     */
+    private Long customerId;
+
+    /**
+     * 年度预算
+     */
+    private BigDecimal yearlyBudget;
+
+    /**
+     * 已使用预算
+     */
+    private BigDecimal usedBudget;
+
+    /**
+     * 月度限额
+     */
+    private BigDecimal monthLimit;
+
+    /**
+     * 月度已用预算
+     */
+    private BigDecimal monthUsedBudget;
+
+    /**
+     * 绑定状态
+     */
+    private String bindStatus;
+
+    /**
+     * 绑定地址
+     */
+    private String bindAddress;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 1 - 0
ruoyi-api/ruoyi-api-external/pom.xml

@@ -7,6 +7,7 @@
         <artifactId>ruoyi-api</artifactId>
         <version>${revision}</version>
     </parent>
+
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>ruoyi-api-external</artifactId>

+ 42 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/erp/domain/ErpCompany.java

@@ -0,0 +1,42 @@
+package org.dromara.external.api.erp.domain;
+
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 公司信息实体类(字段名与 JSON 保持一致)
+ */
+@Data
+public class ErpCompany implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private ComCo comCo; // 注意:这里也改为驼峰 comCo,与 JSON 顶层字段名一致
+
+    @Data
+    public static class ComCo {
+        private String AccBnId;      // 开户银行
+        private String AccBnNo;      // 开户银行帐号
+        private String Address;      // 地址信息
+        private Long BegDa;          // 营业期限(开始)— JSON 中是数字 0
+        private String BusScp;       // 经营范围
+        private Double CapAmt;       // 注册资本 — JSON 是 0.000000
+        private String CoFuNm;       // 企业名称
+        private String Corporation;  // 法定代表人
+        private String EMail;        // E-Mail
+        private Long EndDa;          // 营业期限(结束)
+        private Long FoundDa;        // 成立日期
+        private String InCustId;     // 内部交易客户
+        private String InSupId;      // 内部交易供应商
+        private String LelPer;       // 法人代表
+        private String Phone;        // 办公电话
+        private String Principal;    // 负责人
+        private String RegAddr;      // 注册地址
+        private Long RegDa;          // 登记日期
+        private String RegOrg;       // 登记机关
+        private String Remark;       // 备注
+        private String TaxNo;        // 统一社会信用代码
+        private String CoId;         // 编号
+        private String CoNm;         // 名称
+    }
+}

+ 13 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/service/RemoteExternalProductService.java

@@ -0,0 +1,13 @@
+package org.dromara.external.api.service;
+
+/**
+ * @author
+ * @date 2026/1/14 下午4:58
+ */
+public interface RemoteExternalProductService {
+
+    /**
+    * 获取商品的对接状态
+    * */
+    Boolean getProductDockingStatus(Long productId,String itemKey);
+}

+ 15 - 0
ruoyi-api/ruoyi-api-product/src/main/java/org/dromara/product/api/RemoteCategoryService.java

@@ -0,0 +1,15 @@
+package org.dromara.product.api;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * author
+ * 时间:2026/1/16,10:18
+ */
+public interface RemoteCategoryService {
+
+    Map<Long,Map<String,String>> getallCategoryNameById(Map<Long,Long> categoryMap);
+
+    Map<Long,String> getCategoryNamebyIds(Set<Long> ids);
+}

+ 30 - 0
ruoyi-api/ruoyi-api-product/src/main/java/org/dromara/product/api/RemoteContractProdcutService.java

@@ -0,0 +1,30 @@
+package org.dromara.product.api;
+
+/**
+ * author
+ * 时间:2026/1/20,13:52
+ */
+
+import org.dromara.common.core.domain.R;
+import org.dromara.product.api.domain.ContractProductDto;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+/**
+ * 产品与协议供货合同表示接口
+ */
+public interface RemoteContractProdcutService {
+
+    /**
+     * 批量添加商品合同信息
+     * @param bo
+     * @return
+     */
+    boolean add(List<ContractProductDto> bo) ;
+
+    List<ContractProductDto> queryList(Long contractSupplyId);
+
+    boolean delete(Long contractSupplyId);
+
+}

+ 8 - 0
ruoyi-api/ruoyi-api-product/src/main/java/org/dromara/product/api/RemoteProductService.java

@@ -50,6 +50,14 @@ public interface RemoteProductService {
     * */
     RemoteProductBrand getProductByBrandId(Long brandId);
 
+
+    /**
+     * 根据品牌id集合获取品牌名称
+     * @param ids
+     * @return
+     */
+    List<RemoteProductBrand> getProductByBrandId(List<Long> ids);
+
     /**
      * 获取品目列表
      */

+ 72 - 0
ruoyi-api/ruoyi-api-product/src/main/java/org/dromara/product/api/domain/ContractProductDto.java

@@ -0,0 +1,72 @@
+package org.dromara.product.api.domain;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * author
+ * 时间:2026/1/20,13:50
+ */
+@Data
+public class ContractProductDto implements Serializable {
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 合同供货编号
+     */
+    private String contractSupplyNo;
+
+    /**
+     * 合同供货Id
+     */
+    private Long contractSupplyId;
+
+    /**
+     * 产品编号
+     */
+    private String productNo;
+
+    /**
+     * 产品id
+     */
+    private Long productId;
+
+    /**
+     * 供货周期(单位:天/月,根据业务定义)
+     */
+    private Long supplyCycle;
+
+    /**
+     * 库存属性
+     */
+    private String inventoryProperties;
+
+    /**
+     * 最小供货量
+     */
+    private Long minSupply;
+
+    /**
+     * 报价(支持大文本)
+     */
+    private String offerPrice;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 2 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteComStaffService.java

@@ -7,4 +7,6 @@ public interface RemoteComStaffService {
 
     Map<Long, String> selectStaffNameByIds(Set<Long> ids);
 
+    Map<String,String> selectStaffNameAndCode();
+
 }

+ 14 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteSupplierTypeService.java

@@ -0,0 +1,14 @@
+package org.dromara.system.api;
+
+import org.dromara.system.api.domain.vo.RemoteSupplierTypeVo;
+
+import java.util.List;
+
+/**
+ * author
+ * 时间:2026/1/13,16:07
+ */
+public interface RemoteSupplierTypeService {
+
+    List<RemoteSupplierTypeVo> queryList();
+}

+ 12 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java

@@ -189,4 +189,16 @@ public interface RemoteUserService {
      */
     Map<Long, String> selectPostNamesByIds(List<Long> postIds);
 
+    /**
+     * 新增用户
+     */
+    Long addUser(RemoteUserBo remoteUserBo);
+
+    /**
+    * 编辑用户
+    * */
+    Long editUser(RemoteUserBo remoteUserBo);
+
+
+
 }

+ 5 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/bo/RemoteUserBo.java

@@ -113,6 +113,11 @@ public class RemoteUserBo implements Serializable {
      */
     private Long roleId;
 
+    /**
+     * 用户子类型 用户子类型(0=平台用户,1=供应商,2=伙伴商,3=商城用户)
+     * */
+    private String userSonType;
+
     public RemoteUserBo(Long userId) {
         this.userId = userId;
     }

+ 19 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteSupplierTypeVo.java

@@ -0,0 +1,19 @@
+package org.dromara.system.api.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * author
+ * 时间:2026/1/13,16:10
+ */
+@Data
+public class RemoteSupplierTypeVo implements Serializable {
+    private long id;
+
+    private String typeId;
+
+    private String typeName;
+
+}

+ 23 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/AssigneeTypeConstants.java

@@ -0,0 +1,23 @@
+package org.dromara.common.core.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum AssigneeTypeConstants {
+
+    /**
+     * 供应商
+     */
+    SUPPLIER("srm", "供应商"),
+
+    /**
+     * 伙伴商
+     */
+    PARTNER("bp", "伙伴商");
+
+
+    private final String code;
+    private final String info;
+}

+ 7 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/OrderAssignStatus.java

@@ -15,6 +15,13 @@ public enum OrderAssignStatus {
      * 待分配
      */
     WAIT_ASSIGN("0", "待分配"),
+
+    /**
+     * 部分分配
+     */
+    PARTIALLY_ASSIGNED("2", "部分分配"),
+
+
     /**
      * 已分配
      */

+ 11 - 1
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlatformDataScopeInterceptor.java

@@ -76,9 +76,19 @@ public class PlatformDataScopeInterceptor implements Interceptor {
         "order_main",
         "order_product",
         "com_",
-        "product_"
+        "product_",
+        "supplier_level",
+        "enterprise_scale",
+        "industry_category",
+        "contract_product",
+        "supplier_contact",
+        "address_area"
+
+
+        // 注意:前缀匹配需特殊处理(如 qrtz_),见 isIgnoreTable 方法
     ));
 
+
     @Override
     public Object intercept(Invocation invocation) throws Throwable {
         StatementHandler statementHandler = (StatementHandler) invocation.getTarget();

+ 5 - 0
ruoyi-gateway/pom.xml

@@ -72,6 +72,11 @@
             </exclusions>
         </dependency>
 
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-json</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.dromara</groupId>
             <artifactId>ruoyi-common-satoken</artifactId>

+ 1 - 0
ruoyi-modules/pom.xml

@@ -18,6 +18,7 @@
 	    <module>ruoyi-product</module>
         <module>ruoyi-customer</module>
 	    <module>ruoyi-external</module>
+	    <module>ruoyi-mall</module>
     </modules>
 
     <artifactId>ruoyi-modules</artifactId>

+ 27 - 0
ruoyi-modules/ruoyi-customer/Dockerfile

@@ -0,0 +1,27 @@
+# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
+FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds
+#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds
+#FROM findepi/graalvm:java17-native
+
+LABEL maintainer="Lion Li"
+
+RUN mkdir -p /ruoyi/customer/logs \
+    /ruoyi/customer/temp \
+    /ruoyi/skywalking/agent
+
+WORKDIR /ruoyi/customer
+
+ENV SERVER_PORT=9212 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
+
+EXPOSE ${SERVER_PORT}
+
+ADD ./target/ruoyi-customer.jar ./app.jar
+
+SHELL ["/bin/bash", "-c"]
+
+ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Dserver.port=${SERVER_PORT} \
+           #-Dskywalking.agent.service_name=ruoyi-customer \
+           #-javaagent:/ruoyi/skywalking/agent/skywalking-agent.jar \
+           -XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC ${JAVA_OPTS} \
+           -jar app.jar
+

+ 5 - 0
ruoyi-modules/ruoyi-customer/pom.xml

@@ -16,6 +16,11 @@
 
     <dependencies>
 
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-api-customer</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.dromara</groupId>
             <artifactId>ruoyi-common-nacos</artifactId>

+ 0 - 1
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/RuoyiCustomerApplication.java

@@ -4,7 +4,6 @@ import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
-
 @EnableDubbo
 @SpringBootApplication
 public class RuoyiCustomerApplication {

+ 123 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/ContractSupplyController.java

@@ -0,0 +1,123 @@
+package org.dromara.customer.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.customer.domain.vo.ContractSupplyVo;
+import org.dromara.customer.domain.bo.ContractSupplyBo;
+import org.dromara.customer.service.IContractSupplyService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 协议供货
+ * 前端访问路由地址为:/supplier/contractsupply
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/contractsupply")
+public class ContractSupplyController extends BaseController {
+
+    private final IContractSupplyService contractSupplyService;
+
+    /**
+     * 查询协议供货列表
+     */
+    @SaCheckPermission("supplier:contractsupply:list")
+    @GetMapping("/list")
+    public TableDataInfo<ContractSupplyVo> list(ContractSupplyBo bo, PageQuery pageQuery) {
+
+        return contractSupplyService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出协议供货列表
+     */
+    @SaCheckPermission("supplier:contractsupply:export")
+    @Log(title = "协议供货", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ContractSupplyBo bo, HttpServletResponse response) {
+        List<ContractSupplyVo> list = contractSupplyService.queryList(bo);
+        ExcelUtil.exportExcel(list, "协议供货", ContractSupplyVo.class, response);
+    }
+
+    /**
+     * 获取协议供货详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("supplier:contractsupply:query")
+    @GetMapping("/{id}")
+    public R<ContractSupplyVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+
+        return R.ok(contractSupplyService.queryById(id));
+    }
+
+    /**
+     * 新增协议供货
+     */
+    @SaCheckPermission("supplier:contractsupply:add")
+    @Log(title = "协议供货", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    @Transactional
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ContractSupplyBo bo) {
+        return toAjax(contractSupplyService.insertByBo(bo));
+    }
+
+    /**
+     * 修改协议供货
+     */
+    @SaCheckPermission("supplier:contractsupply:edit")
+    @Log(title = "协议供货", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ContractSupplyBo bo) {
+        return toAjax(contractSupplyService.updateByBo(bo));
+    }
+
+    /**
+     * 审核
+     * @param bo
+     * @return
+     */
+    @PutMapping("/edit")
+    public R<Void> approve(@RequestBody ContractSupplyBo bo) {
+        return toAjax(contractSupplyService.aprprove(bo));
+    }
+
+
+
+
+    /**
+     * 删除协议供货
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("supplier:contractsupply:remove")
+    @Log(title = "协议供货", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(contractSupplyService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 1 - 1
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/CustomerInfoController.java

@@ -118,7 +118,7 @@ public class CustomerInfoController extends BaseController {
     @Log(title = "客户信息", businessType = BusinessType.UPDATE)
     @RepeatSubmit()
     @PutMapping()
-    public R<Void> edit(@Validated(EditGroup.class) @RequestBody CustomerInfoBo bo) {
+    public R<Void> edit(@RequestBody CustomerInfoBo bo) {
         return toAjax(customerInfoService.updateByBo(bo));
     }
 

+ 14 - 6
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/EnterpriseScaleController.java

@@ -40,16 +40,24 @@ public class EnterpriseScaleController extends BaseController {
     /**
      * 查询企业规模列表
      */
-    @SaCheckPermission("customer:enterpriseScale:list")
+//    @SaCheckPermission("customer:enterpriseScale:list")
     @GetMapping("/list")
     public TableDataInfo<EnterpriseScaleVo> list(EnterpriseScaleBo bo, PageQuery pageQuery) {
         return enterpriseScaleService.queryPageList(bo, pageQuery);
     }
 
+    /**
+     * 查询企业规模列表
+     */
+    @GetMapping("/getlist")
+    public R<List<EnterpriseScaleVo>> getlist(EnterpriseScaleBo bo) {
+        return R.ok(enterpriseScaleService.queryList(bo));
+    }
+
     /**
      * 导出企业规模列表
      */
-    @SaCheckPermission("customer:enterpriseScale:export")
+//    @SaCheckPermission("customer:enterpriseScale:export")
     @Log(title = "企业规模", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(EnterpriseScaleBo bo, HttpServletResponse response) {
@@ -62,7 +70,7 @@ public class EnterpriseScaleController extends BaseController {
      *
      * @param id 主键
      */
-    @SaCheckPermission("customer:enterpriseScale:query")
+//    @SaCheckPermission("customer:enterpriseScale:query")
     @GetMapping("/{id}")
     public R<EnterpriseScaleVo> getInfo(@NotNull(message = "主键不能为空")
                                      @PathVariable("id") Long id) {
@@ -72,7 +80,7 @@ public class EnterpriseScaleController extends BaseController {
     /**
      * 新增企业规模
      */
-    @SaCheckPermission("customer:enterpriseScale:add")
+//    @SaCheckPermission("customer:enterpriseScale:add")
     @Log(title = "企业规模", businessType = BusinessType.INSERT)
     @RepeatSubmit()
     @PostMapping()
@@ -83,7 +91,7 @@ public class EnterpriseScaleController extends BaseController {
     /**
      * 修改企业规模
      */
-    @SaCheckPermission("customer:enterpriseScale:edit")
+//    @SaCheckPermission("customer:enterpriseScale:edit")
     @Log(title = "企业规模", businessType = BusinessType.UPDATE)
     @RepeatSubmit()
     @PutMapping()
@@ -96,7 +104,7 @@ public class EnterpriseScaleController extends BaseController {
      *
      * @param ids 主键串
      */
-    @SaCheckPermission("customer:enterpriseScale:remove")
+//    @SaCheckPermission("customer:enterpriseScale:remove")
     @Log(title = "企业规模", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     public R<Void> remove(@NotEmpty(message = "主键不能为空")

+ 14 - 6
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/IndustryCategoryController.java

@@ -40,16 +40,24 @@ public class IndustryCategoryController extends BaseController {
     /**
      * 查询所属行业列表
      */
-    @SaCheckPermission("customer:industryCategory:list")
+//    @SaCheckPermission("customer:industryCategory:list")
     @GetMapping("/list")
     public TableDataInfo<IndustryCategoryVo> list(IndustryCategoryBo bo, PageQuery pageQuery) {
         return industryCategoryService.queryPageList(bo, pageQuery);
     }
 
+    /**
+     * 查询所属行业列表供应商
+     */
+    @GetMapping("/getlist")
+    public R<List<IndustryCategoryVo>> list(IndustryCategoryBo bo) {
+        return R.ok(industryCategoryService.queryList(bo));
+    }
+
     /**
      * 导出所属行业列表
      */
-    @SaCheckPermission("customer:industryCategory:export")
+//    @SaCheckPermission("customer:industryCategory:export")
     @Log(title = "所属行业", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(IndustryCategoryBo bo, HttpServletResponse response) {
@@ -62,7 +70,7 @@ public class IndustryCategoryController extends BaseController {
      *
      * @param id 主键
      */
-    @SaCheckPermission("customer:industryCategory:query")
+//    @SaCheckPermission("customer:industryCategory:query")
     @GetMapping("/{id}")
     public R<IndustryCategoryVo> getInfo(@NotNull(message = "主键不能为空")
                                      @PathVariable("id") Long id) {
@@ -72,7 +80,7 @@ public class IndustryCategoryController extends BaseController {
     /**
      * 新增所属行业
      */
-    @SaCheckPermission("customer:industryCategory:add")
+//    @SaCheckPermission("customer:industryCategory:add")
     @Log(title = "所属行业", businessType = BusinessType.INSERT)
     @RepeatSubmit()
     @PostMapping()
@@ -83,7 +91,7 @@ public class IndustryCategoryController extends BaseController {
     /**
      * 修改所属行业
      */
-    @SaCheckPermission("customer:industryCategory:edit")
+//    @SaCheckPermission("customer:industryCategory:edit")
     @Log(title = "所属行业", businessType = BusinessType.UPDATE)
     @RepeatSubmit()
     @PutMapping()
@@ -96,7 +104,7 @@ public class IndustryCategoryController extends BaseController {
      *
      * @param ids 主键串
      */
-    @SaCheckPermission("customer:industryCategory:remove")
+//    @SaCheckPermission("customer:industryCategory:remove")
     @Log(title = "所属行业", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     public R<Void> remove(@NotEmpty(message = "主键不能为空")

+ 114 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierAddressController.java

@@ -0,0 +1,114 @@
+package org.dromara.customer.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.customer.domain.vo.SupplierAddressVo;
+import org.dromara.customer.domain.bo.SupplierAddressBo;
+import org.dromara.customer.service.ISupplierAddressService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 供应商地址
+ * 前端访问路由地址为:/supplierAddress/supplieraddress
+ *
+ * @author LJY
+ * @date 2026-01-19
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/supplieraddress")
+public class SupplierAddressController extends BaseController {
+
+    private final ISupplierAddressService supplierAddressService;
+
+    /**
+     * 根据supplierID查询地址信息
+     */
+    @SaCheckPermission("supplierAddress:supplieraddress:list")
+    @GetMapping("/supplierAddressById")
+    public R<List<SupplierAddressVo>> list(SupplierAddressBo bo) {
+        return R.ok(supplierAddressService.getSupplierAddressById(bo));
+    }
+    /**
+     * 查询供应商地址列表
+     */
+    @SaCheckPermission("supplierAddress:supplieraddress:list")
+    @GetMapping("/list")
+    public TableDataInfo<SupplierAddressVo> list(SupplierAddressBo bo, PageQuery pageQuery) {
+        return supplierAddressService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出供应商地址列表
+     */
+    @SaCheckPermission("supplierAddress:supplieraddress:export")
+    @Log(title = "供应商地址", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SupplierAddressBo bo, HttpServletResponse response) {
+        List<SupplierAddressVo> list = supplierAddressService.queryList(bo);
+        ExcelUtil.exportExcel(list, "供应商地址", SupplierAddressVo.class, response);
+    }
+
+    /**
+     * 获取供应商地址详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("supplierAddress:supplieraddress:query")
+    @GetMapping("/{id}")
+    public R<SupplierAddressVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(supplierAddressService.queryById(id));
+    }
+
+    /**
+     * 新增供应商地址
+     */
+    @SaCheckPermission("supplierAddress:supplieraddress:add")
+    @Log(title = "供应商地址", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SupplierAddressBo bo) {
+        return toAjax(supplierAddressService.insertByBo(bo));
+    }
+
+    /**
+     * 修改供应商地址
+     */
+    @SaCheckPermission("supplierAddress:supplieraddress:edit")
+    @Log(title = "供应商地址", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SupplierAddressBo bo) {
+        return toAjax(supplierAddressService.updateByBo(bo));
+    }
+
+    /**
+     * 删除供应商地址
+     *
+     * @param ids 主键串
+     */
+    //@SaCheckPermission("supplierAddress:supplieraddress:remove")
+    @Log(title = "供应商地址", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(supplierAddressService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 126 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierAuthorizeController.java

@@ -0,0 +1,126 @@
+package org.dromara.customer.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.customer.domain.bo.SupplyAreaBo;
+import org.dromara.customer.domain.vo.SupplyAreaVo;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.customer.domain.vo.SupplierAuthorizeVo;
+import org.dromara.customer.domain.bo.SupplierAuthorizeBo;
+import org.dromara.customer.service.ISupplierAuthorizeService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 供应能力查询
+ * 前端访问路由地址为:/supplier/supplierauthorize
+ *
+ * @author LJY
+ * @date 2026-01-15
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/supplierauthorize")
+public class SupplierAuthorizeController extends BaseController {
+
+    private final ISupplierAuthorizeService supplierAuthorizeService;
+
+    /**
+     * 查询供应能力查询列表
+     */
+    @SaCheckPermission("supplier:supplierauthorize:list")
+    @GetMapping("/list")
+    public TableDataInfo<SupplierAuthorizeVo> list(SupplierAuthorizeBo bo, PageQuery pageQuery) {
+        return supplierAuthorizeService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出供应能力查询列表
+     */
+    @SaCheckPermission("supplier:supplierauthorize:export")
+    @Log(title = "供应能力查询", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SupplierAuthorizeBo bo, HttpServletResponse response) {
+        List<SupplierAuthorizeVo> list = supplierAuthorizeService.queryList(bo);
+        ExcelUtil.exportExcel(list, "供应能力查询", SupplierAuthorizeVo.class, response);
+    }
+
+    /**
+     * 获取供应能力查询详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("supplier:supplierauthorize:query")
+    @GetMapping("/{id}")
+    public R<SupplierAuthorizeVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(supplierAuthorizeService.queryById(id));
+    }
+
+    /**
+     * 根据供应商ID查询授权详情信息列表
+     */
+//    @SaCheckPermission("supplier:supplierauthorize:query")
+    @GetMapping("/getAuthorizeDetailList")
+    public R<List<SupplierAuthorizeVo>> getAuthorizeDetailList(Long supplierId) {
+        return R.ok(supplierAuthorizeService.getAuthorizeDetailList(supplierId));
+    }
+
+    /**
+     * 供应能力查询信息列表
+     */
+    @SaCheckPermission("supplier:supplierauthorize:list")
+    @GetMapping("/getSupplyCapacityList")
+    public TableDataInfo<SupplierAuthorizeVo> getSupplyCapacityList(SupplierAuthorizeBo bo, PageQuery pageQuery) {
+        return supplierAuthorizeService.getSupplyCapacityList(bo, pageQuery);
+    }
+
+    /**
+     * 新增供应能力查询
+     */
+    @SaCheckPermission("supplier:supplierauthorize:add")
+    @Log(title = "供应能力查询", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SupplierAuthorizeBo bo) {
+        return toAjax(supplierAuthorizeService.insertByBo(bo));
+    }
+
+    /**
+     * 修改供应能力查询
+     */
+    @SaCheckPermission("supplier:supplierauthorize:edit")
+    @Log(title = "供应能力查询", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SupplierAuthorizeBo bo) {
+        return toAjax(supplierAuthorizeService.updateByBo(bo));
+    }
+
+    /**
+     * 删除供应能力查询
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("supplier:supplierauthorize:remove")
+    @Log(title = "供应能力查询", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(supplierAuthorizeService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 118 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierBankController.java

@@ -0,0 +1,118 @@
+package org.dromara.customer.controller;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.customer.domain.vo.SupplierBankVo;
+import org.dromara.customer.domain.bo.SupplierBankBo;
+import org.dromara.customer.service.ISupplierBankService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 供应商银行账户
+ * 前端访问路由地址为:/customer/bank
+ *
+ * @author LJY
+ * @date 2026-01-15
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/supplierbank")
+public class SupplierBankController extends BaseController {
+
+    private final ISupplierBankService supplierBankService;
+
+    /**
+     * 查询供应商银行账户列表
+     */
+    @SaCheckPermission("customer:bank:list")
+    @GetMapping("/list")
+    public TableDataInfo<SupplierBankVo> list(SupplierBankBo bo, PageQuery pageQuery) {
+        return supplierBankService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出供应商银行账户列表
+     */
+    @SaCheckPermission("customer:bank:export")
+    @Log(title = "供应商银行账户", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SupplierBankBo bo, HttpServletResponse response) {
+        List<SupplierBankVo> list = supplierBankService.queryList(bo);
+        ExcelUtil.exportExcel(list, "供应商银行账户", SupplierBankVo.class, response);
+    }
+
+    /**
+     * 获取供应商银行账户详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("customer:bank:query")
+    @GetMapping("/{id}")
+    public R<SupplierBankVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(supplierBankService.queryById(id));
+    }
+
+    @SaCheckPermission("customer:bank:query")
+    @GetMapping("/getBankBySupplierId")
+    public R<List<SupplierBankVo>> getBankBySupplierId(@RequestParam Long id) {
+        SupplierBankBo supplierBankBo = new SupplierBankBo();
+        supplierBankBo.setSupplierId(id);
+        List<SupplierBankVo> supplierBankVos = supplierBankService.queryList(supplierBankBo);
+        return R.ok(supplierBankVos);
+    }
+
+
+
+    /**
+     * 新增供应商银行账户
+     */
+    @SaCheckPermission("customer:bank:add")
+    @Log(title = "供应商银行账户", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SupplierBankBo bo) {
+        return toAjax(supplierBankService.insertByBo(bo));
+    }
+
+    /**
+     * 修改供应商银行账户
+     */
+    @SaCheckPermission("customer:bank:edit")
+    @Log(title = "供应商银行账户", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SupplierBankBo bo) {
+        return toAjax(supplierBankService.updateByBo(bo));
+    }
+
+    /**
+     * 删除供应商银行账户
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("customer:bank:remove")
+    @Log(title = "供应商银行账户", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(supplierBankService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 112 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierBusinessInfoController.java

@@ -0,0 +1,112 @@
+package org.dromara.customer.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.customer.domain.vo.SupplierBusinessInfoVo;
+import org.dromara.customer.domain.bo.SupplierBusinessInfoBo;
+import org.dromara.customer.service.ISupplierBusinessInfoService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 供应商工商注册信息
+ * 前端访问路由地址为:/suuplier/businessInfo
+ *
+ * @author LionLi
+ * @date 2026-01-22
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/sbusinessInfo")
+public class SupplierBusinessInfoController extends BaseController {
+
+    private final ISupplierBusinessInfoService supplierBusinessInfoService;
+
+    /**
+     * 查询供应商工商注册信息列表
+     */
+    @SaCheckPermission("suuplier:businessInfo:list")
+    @GetMapping("/list")
+    public TableDataInfo<SupplierBusinessInfoVo> list(SupplierBusinessInfoBo bo, PageQuery pageQuery) {
+        return supplierBusinessInfoService.queryPageList(bo, pageQuery);
+    }
+
+    @GetMapping("/getinformation")
+    public R<SupplierBusinessInfoVo> getinformation(@RequestParam("enterpriseName") String enterpriseName)
+    {
+        return R.ok(supplierBusinessInfoService.getinformation(enterpriseName));
+    }
+
+    /**
+     * 导出供应商工商注册信息列表
+     */
+    @SaCheckPermission("suuplier:businessInfo:export")
+    @Log(title = "供应商工商注册信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SupplierBusinessInfoBo bo, HttpServletResponse response) {
+        List<SupplierBusinessInfoVo> list = supplierBusinessInfoService.queryList(bo);
+        ExcelUtil.exportExcel(list, "供应商工商注册信息", SupplierBusinessInfoVo.class, response);
+    }
+
+    /**
+     * 获取供应商工商注册信息详细信息
+     *
+     * @param supplierId 主键
+     */
+    @SaCheckPermission("suuplier:businessInfo:query")
+    @GetMapping("/{supplierId}")
+    public R<SupplierBusinessInfoVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("supplierId") Long supplierId) {
+        return R.ok(supplierBusinessInfoService.queryById(supplierId));
+    }
+
+    /**
+     * 新增供应商工商注册信息
+     */
+    @SaCheckPermission("suuplier:businessInfo:add")
+    @Log(title = "供应商工商注册信息", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SupplierBusinessInfoBo bo) {
+        return toAjax(supplierBusinessInfoService.insertByBo(bo));
+    }
+
+    /**
+     * 修改供应商工商注册信息
+     */
+    @SaCheckPermission("suuplier:businessInfo:edit")
+    @Log(title = "供应商工商注册信息", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SupplierBusinessInfoBo bo) {
+        return toAjax(supplierBusinessInfoService.updateByBo(bo));
+    }
+
+    /**
+     * 删除供应商工商注册信息
+     *
+     * @param supplierIds 主键串
+     */
+    @SaCheckPermission("suuplier:businessInfo:remove")
+    @Log(title = "供应商工商注册信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{supplierIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("supplierIds") Long[] supplierIds) {
+        return toAjax(supplierBusinessInfoService.deleteWithValidByIds(List.of(supplierIds), true));
+    }
+}

+ 118 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierContactController.java

@@ -0,0 +1,118 @@
+package org.dromara.customer.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.customer.domain.vo.SupplierContactVo;
+import org.dromara.customer.domain.bo.SupplierContactBo;
+import org.dromara.customer.service.ISupplierContactService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 联系人
+ * 前端访问路由地址为:/supplier/contact
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/contact")
+public class SupplierContactController extends BaseController {
+
+    private final ISupplierContactService supplierContactService;
+
+    /**
+     * 获取业务联系人信息
+     */
+    @SaCheckPermission("supplier:contact:list")
+    @GetMapping("/list")
+    public TableDataInfo<SupplierContactVo> list(SupplierContactBo bo, PageQuery pageQuery) {
+        return supplierContactService.queryPageList(bo, pageQuery);
+    }
+
+
+    /**
+     * 根据id获取业务联系人
+     */
+    @SaCheckPermission("supplier:contact:list")
+    @GetMapping("/getSupplierContactlistById")
+    public TableDataInfo<SupplierContactVo> getlistById(SupplierContactBo bo, PageQuery pageQuery) {
+        return supplierContactService.queryPageListById(bo, pageQuery);
+    }
+
+
+
+    /**
+     * 导出联系人列表
+     */
+    @SaCheckPermission("supplier:contact:export")
+    @Log(title = "联系人", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SupplierContactBo bo, HttpServletResponse response) {
+        List<SupplierContactVo> list = supplierContactService.queryList(bo);
+        ExcelUtil.exportExcel(list, "联系人", SupplierContactVo.class, response);
+    }
+
+    /**
+     * 获取联系人详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("supplier:contact:query")
+    @GetMapping("/{id}")
+    public R<SupplierContactVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(supplierContactService.queryById(id));
+    }
+
+    /**
+     * 新增联系人
+     */
+    @SaCheckPermission("supplier:contact:add")
+    @Log(title = "联系人", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SupplierContactBo bo) {
+        return toAjax(supplierContactService.insertByBo(bo));
+    }
+
+    /**
+     * 修改联系人
+     */
+    @SaCheckPermission("supplier:contact:edit")
+    @Log(title = "联系人", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SupplierContactBo bo) {
+        return toAjax(supplierContactService.updateByBo(bo));
+    }
+
+    /**
+     * 删除联系人
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("supplier:contact:remove")
+    @Log(title = "联系人", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(supplierContactService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 127 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierContractController.java

@@ -0,0 +1,127 @@
+package org.dromara.customer.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.customer.domain.vo.SupplierContractVo;
+import org.dromara.customer.domain.bo.SupplierContractBo;
+import org.dromara.customer.service.ISupplierContractService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 合同管理
+ * 前端访问路由地址为:/supplier/contract
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/supplierContract")
+public class SupplierContractController extends BaseController {
+
+    private final ISupplierContractService supplierContractService;
+
+    /**
+     * 查询合同管理列表
+     */
+    @SaCheckPermission("supplier:contract:list")
+    @GetMapping("/list")
+    public TableDataInfo<SupplierContractVo> list(SupplierContractBo bo, PageQuery pageQuery) {
+        return supplierContractService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 获取合同列表
+     *
+     *
+     */
+    @GetMapping("/getListbyId")
+    public R<List<SupplierContractVo>> getListbyId(SupplierContractBo bo) {
+        return R.ok(supplierContractService.queryList(bo));
+
+    }
+
+    /**
+     * 导出合同管理列表
+     */
+    @SaCheckPermission("supplier:contract:export")
+    @Log(title = "合同管理", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SupplierContractBo bo, HttpServletResponse response) {
+        List<SupplierContractVo> list = supplierContractService.queryList(bo);
+        ExcelUtil.exportExcel(list, "合同管理", SupplierContractVo.class, response);
+    }
+
+    /**
+     * 根据supplierid查询合同列表
+     */
+    @SaCheckPermission("supplier:contract:list")
+    @GetMapping("/supplierContractsById")
+    public TableDataInfo<SupplierContractVo> supplierContractsById(SupplierContractBo bo, PageQuery pageQuery) {
+        TableDataInfo<SupplierContractVo> supplierContracts = supplierContractService.queryContractsPageList(bo, pageQuery);
+        return supplierContracts;
+    }
+
+    /**
+     * 获取合同管理详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("supplier:contract:query")
+    @GetMapping("/{id}")
+    public R<SupplierContractVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(supplierContractService.queryById(id));
+    }
+
+    /**
+     * 新增合同管理
+     */
+    @SaCheckPermission("supplier:contract:add")
+    @Log(title = "合同管理", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SupplierContractBo bo) {
+        return toAjax(supplierContractService.insertByBo(bo));
+    }
+
+    /**
+     * 修改合同管理
+     */
+    @SaCheckPermission("supplier:contract:edit")
+    @Log(title = "合同管理", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SupplierContractBo bo) {
+        return toAjax(supplierContractService.updateByBo(bo));
+    }
+
+    /**
+     * 删除合同管理
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("supplier:contract:remove")
+    @Log(title = "合同管理", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(supplierContractService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 161 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierInfoController.java

@@ -0,0 +1,161 @@
+package org.dromara.customer.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.customer.domain.SupplierInfo;
+import org.dromara.customer.domain.vo.SupplierInformationVo;
+import org.dromara.customer.service.ISupplierProcurementService;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.customer.domain.vo.SupplierInfoVo;
+import org.dromara.customer.domain.bo.SupplierInfoBo;
+import org.dromara.customer.service.ISupplierInfoService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 供应商信息
+ * 前端访问路由地址为:/customer/info
+ *
+ * @author LionLi
+ * @date 2026-01-09
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/info")
+public class SupplierInfoController extends BaseController {
+
+    private final ISupplierInfoService supplierInfoService;
+
+    private final ISupplierProcurementService supplierProcurementService;
+
+    /**
+     * 查询供应商信息列表
+     */
+    @SaCheckPermission("customer:info:list")
+    @GetMapping("/list")
+    public TableDataInfo<SupplierInfoVo> list(SupplierInfoBo bo, PageQuery pageQuery) {
+        return supplierInfoService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 供应商信息 获取供应商信息列表
+     * @param bo
+     * @param pageQuery
+     * @return
+     */
+    @SaCheckPermission("customer:info:list")
+    @GetMapping("/getList")
+    public TableDataInfo<SupplierInfoVo> getList(SupplierInfoBo bo, PageQuery pageQuery) {
+        return supplierInfoService.getSupplierInformation(bo, pageQuery);
+    }
+
+    /**
+     * 供应商审核 获取供应商信息列表
+     * @param bo
+     * @param pageQuery
+     * @return
+     */
+    @SaCheckPermission("customer:info:list")
+    @GetMapping("/getApproveList")
+    public TableDataInfo<SupplierInfoVo> getApproveList(SupplierInfoBo bo, PageQuery pageQuery) {
+
+        return supplierInfoService.getSupplierApproveInformation(bo, pageQuery);
+    }
+
+    /**
+     * 根据id获取品目列表
+     * @param supplierId
+     * @return
+     */
+    @GetMapping("/getSupplierCategories")
+    public R<List<String>> getSupplierCategories(@RequestParam Long supplierId) throws JsonProcessingException {
+        // 根据供应商ID查询已选择的品目ID列表
+        SupplierInfoVo supplierInfo = supplierInfoService.queryById(supplierId);
+        if (ObjectUtil.isEmpty(supplierInfo) || ObjectUtil.isEmpty(supplierInfo.getOperatingCategory())) {
+            return R.ok(List.of());
+        }
+        List<String> collect = Arrays.stream(supplierInfo.getOperatingCategory().split(",")).collect(Collectors.toList());
+        //List<String> categoryIds = supplierCategoryService.getCategoryIdsBySupplierId(supplierId);
+        return R.ok(collect);
+    }
+
+
+
+
+
+    /**
+     * 导出供应商信息列表
+     */
+    @SaCheckPermission("customer:info:export")
+    @Log(title = "供应商信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SupplierInfoBo bo, HttpServletResponse response) {
+        List<SupplierInfoVo> list = supplierInfoService.queryList(bo);
+        ExcelUtil.exportExcel(list, "供应商信息", SupplierInfoVo.class, response);
+    }
+
+    /**
+     * 获取供应商信息详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("customer:info:query")
+    @GetMapping("/{id}")
+    public R<SupplierInfoVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) throws JsonProcessingException {
+        return R.ok(supplierInfoService.queryById(id));
+    }
+
+    /**
+     * 新增供应商信息
+     */
+    @SaCheckPermission("customer:info:add")
+    @Log(title = "供应商信息", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SupplierInfoBo bo) {
+        return toAjax(supplierInfoService.insertByBo(bo));
+    }
+
+    /**
+     * 修改供应商信息
+     */
+    @SaCheckPermission("customer:info:edit")
+    @Log(title = "供应商信息", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SupplierInfoBo bo) {
+        return toAjax(supplierInfoService.updateByBo(bo));
+    }
+
+    /**
+     * 删除供应商信息
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("customer:info:remove")
+    @Log(title = "供应商信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(supplierInfoService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 41 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierInformationController.java

@@ -0,0 +1,41 @@
+package org.dromara.customer.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.customer.domain.bo.SupplyAreaBo;
+import org.dromara.customer.domain.vo.SupplyAreaVo;
+import org.dromara.customer.service.ISupplierInfoService;
+import org.dromara.system.api.RemoteComStaffService;
+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;
+
+/**
+ * author
+ * 时间:2026/1/14,15:51
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/supplierinformation")
+public class SupplierInformationController {
+
+    private final RemoteComStaffService remoteComStaffService;
+
+    private final ISupplierInfoService infoService;
+
+    /**
+     * 获取供应商采购信息列表
+     */
+    @GetMapping("/renyuan")
+    public R list(SupplyAreaBo bo, PageQuery pageQuery) {
+//        remoteComStaffService.
+//        return supplyAreaService.queryPageList(bo, pageQuery);
+        return R.ok();
+    }
+
+
+}

+ 111 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierProcurementController.java

@@ -0,0 +1,111 @@
+package org.dromara.customer.controller;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.customer.domain.SupplierProcurement;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.customer.domain.vo.SupplierProcurementVo;
+import org.dromara.customer.domain.bo.SupplierProcurementBo;
+import org.dromara.customer.service.ISupplierProcurementService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 供应商采购结算配置
+ * 前端访问路由地址为:/supplier/procurement
+ *
+ * @author LionLi
+ * @date 2026-01-14
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/procurement")
+public class SupplierProcurementController extends BaseController {
+
+    private final ISupplierProcurementService supplierProcurementService;
+
+    /**
+     * 查询供应商采购结算配置列表
+     */
+    @SaCheckPermission("supplier:procurement:list")
+    @GetMapping("/list")
+    public TableDataInfo<SupplierProcurementVo> list(SupplierProcurementBo bo, PageQuery pageQuery) {
+        return supplierProcurementService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出供应商采购结算配置列表
+     */
+    @SaCheckPermission("supplier:procurement:export")
+    @Log(title = "供应商采购结算配置", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SupplierProcurementBo bo, HttpServletResponse response) {
+        List<SupplierProcurementVo> list = supplierProcurementService.queryList(bo);
+        ExcelUtil.exportExcel(list, "供应商采购结算配置", SupplierProcurementVo.class, response);
+    }
+
+    /**
+     * 获取供应商采购结算配置详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("supplier:procurement:query")
+    @GetMapping("/{id}")
+    public R<SupplierProcurementVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(supplierProcurementService.queryById(id));
+    }
+
+    /**
+     * 新增供应商采购结算配置
+     */
+    @Log(title = "供应商采购结算配置", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SupplierProcurementBo bo) {
+        SupplierProcurement one = supplierProcurementService.getOne(new LambdaQueryWrapper<SupplierProcurement>()
+            .eq(SupplierProcurement::getSupplierId, bo.getSupplierId()));
+        if (one != null){
+            return toAjax(supplierProcurementService.updateByBo(bo));
+        }
+        return toAjax(supplierProcurementService.insertByBo(bo));
+    }
+
+    /**
+     * 修改供应商采购结算配置
+     */
+    @Log(title = "供应商采购结算配置", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SupplierProcurementBo bo) {
+        return toAjax(supplierProcurementService.updateByBo(bo));
+    }
+
+    /**
+     * 删除供应商采购结算配置
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("supplier:procurement:remove")
+    @Log(title = "供应商采购结算配置", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(supplierProcurementService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplierapproveController.java

@@ -0,0 +1,106 @@
+package org.dromara.customer.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.customer.domain.vo.SupplierapproveVo;
+import org.dromara.customer.domain.bo.SupplierapproveBo;
+import org.dromara.customer.service.ISupplierapproveService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 供应商审核
+ * 前端访问路由地址为:/supplier/approve
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/approve")
+public class SupplierapproveController extends BaseController {
+
+    private final ISupplierapproveService supplierapproveService;
+
+    /**
+     * 查询供应商审核列表
+     */
+    @SaCheckPermission("supplier:approve:list")
+    @GetMapping("/list")
+    public TableDataInfo<SupplierapproveVo> list(SupplierapproveBo bo, PageQuery pageQuery) {
+        return supplierapproveService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出供应商审核列表
+     */
+    @SaCheckPermission("supplier:approve:export")
+    @Log(title = "供应商审核", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SupplierapproveBo bo, HttpServletResponse response) {
+        List<SupplierapproveVo> list = supplierapproveService.queryList(bo);
+        ExcelUtil.exportExcel(list, "供应商审核", SupplierapproveVo.class, response);
+    }
+
+    /**
+     * 获取供应商审核详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("supplier:approve:query")
+    @GetMapping("/{id}")
+    public R<SupplierapproveVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(supplierapproveService.queryById(id));
+    }
+
+    /**
+     * 新增供应商审核
+     */
+    @SaCheckPermission("supplier:approve:add")
+    @Log(title = "供应商审核", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SupplierapproveBo bo) {
+        return toAjax(supplierapproveService.insertByBo(bo));
+    }
+
+    /**
+     * 修改供应商审核
+     */
+    @SaCheckPermission("supplier:approve:edit")
+    @Log(title = "供应商审核", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SupplierapproveBo bo) {
+        return toAjax(supplierapproveService.updateByBo(bo));
+    }
+
+    /**
+     * 删除供应商审核
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("supplier:approve:remove")
+    @Log(title = "供应商审核", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(supplierapproveService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 111 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/SupplyAreaController.java

@@ -0,0 +1,111 @@
+package org.dromara.customer.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.customer.domain.vo.SupplyAreaVo;
+import org.dromara.customer.domain.bo.SupplyAreaBo;
+import org.dromara.customer.service.ISupplyAreaService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 供应区域
+ * 前端访问路由地址为:/supplier/area
+ *
+ * @author LJY
+ * @date 2026-01-14
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/area")
+public class SupplyAreaController extends BaseController {
+
+    private final ISupplyAreaService supplyAreaService;
+
+    /**
+     * 查询供应区域列表
+     */
+    //@SaCheckPermission("supplier:area:list")
+    @GetMapping("/list")
+    public TableDataInfo<SupplyAreaVo> list(SupplyAreaBo bo, PageQuery pageQuery) {
+        return supplyAreaService.queryPageList(bo, pageQuery);
+    }
+
+
+
+
+    /**
+     * 导出供应区域列表
+     */
+    //@SaCheckPermission("supplier:area:export")
+    @Log(title = "供应区域", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SupplyAreaBo bo, HttpServletResponse response) {
+        List<SupplyAreaVo> list = supplyAreaService.queryList(bo);
+        ExcelUtil.exportExcel(list, "供应区域", SupplyAreaVo.class, response);
+    }
+
+    /**
+     * 获取供应区域详细信息
+     *
+     * @param id 主键
+     */
+    //@SaCheckPermission("supplier:area:query")
+    @GetMapping("/{id}")
+    public R<List<SupplyAreaVo>> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(supplyAreaService.queryById(id));
+    }
+
+    /**
+     * 新增供应区域
+     */
+    //@SaCheckPermission("supplier:area:add")
+    @Log(title = "供应区域", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    @Transactional
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SupplyAreaBo bo) {
+        return toAjax(supplyAreaService.insertByBo(bo));
+    }
+
+    /**
+     * 修改供应区域
+     */
+    //@SaCheckPermission("supplier:area:edit")
+    @Log(title = "供应区域", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SupplyAreaBo bo) {
+        return toAjax(supplyAreaService.updateByBo(bo));
+    }
+
+    /**
+     * 删除供应区域
+     *
+     * @param ids 主键串
+     */
+    //@SaCheckPermission("supplier:area:remove")
+    @Log(title = "供应区域", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(supplyAreaService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 114 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/ContractSupply.java

@@ -0,0 +1,114 @@
+package org.dromara.customer.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 协议供货对象 contract_supply
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("contract_supply")
+public class ContractSupply extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 协议单号
+     */
+    private String contractSupplyNo;
+
+    /**
+     * 供应商编号
+     */
+    private String supplyNo;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 商品数量
+     */
+    private Long productNumber;
+
+    /**
+     * 开始时间
+     */
+    private Date startTime;
+
+    /**
+     * 结束时间
+     */
+    private Date endTime;
+
+    /**
+     * 审核时间
+     */
+    private Date auditTime;
+
+    /**
+     * 价格周期(单位:天/月,根据业务定义)
+     */
+    private Long priceCycle;
+
+    /**
+     * 配送方式(如:自提、快递、送货上门等)
+     */
+    private String deliveryMethod;
+
+    /**
+     * 结算方式(如:月结、现结、账期等)
+     */
+    private String settlementMethod;
+
+    /**
+     * 价格说明(详细描述定价规则、优惠政策等)
+     */
+    private String priceDescription;
+
+    /**
+     * 附件文件路径
+     */
+    private String proFile;
+
+    /**
+     * 附件文件名
+     */
+    private String proFileName;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注信息
+     */
+    private String remark;
+
+
+}

+ 117 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplierAddress.java

@@ -0,0 +1,117 @@
+package org.dromara.customer.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 供应商地址对象 supplier_address
+ *
+ * @author LJY
+ * @date 2026-01-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("supplier_address")
+public class SupplierAddress extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 供应商编号
+     */
+    private String supplierNo;
+
+    /**
+     * 供应商编号ID
+     */
+    private Long supplierId;
+
+    /**
+     * 配送公司名称
+     */
+    private String shippingCompany;
+
+    /**
+     * 发货人姓名
+     */
+    private String shipperName;
+
+    /**
+     * 发货人电话
+     */
+    private String shipperPhone;
+
+    /**
+     * 邮政编码
+     */
+    private String shippingPostCode;
+
+    /**
+     * 省
+     */
+    private String shippingProvincial;
+
+    /**
+     * 市
+     */
+    private String shippingCity;
+
+    /**
+     * 区/县
+     */
+    private String shippingCounty;
+
+    /**
+     * 详细地址
+     */
+    private String shippingAddress;
+
+    /**
+     * 推送状态(例如:0-未推送, 1-已推送, 16-推送失败)
+     */
+    private String pushStatus;
+
+    /**
+     * 是否为自身地址(1-是, 0-否)
+     */
+    private String isSelf;
+
+    /**
+     * 地址类型(例如:1-注册地址, 2-经营地址, 3-发货地址)
+     */
+    private String type;
+
+    /**
+     * 地址编码
+     */
+    private String addressNo;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 154 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplierAuthorize.java

@@ -0,0 +1,154 @@
+package org.dromara.customer.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 供应能力查询对象 supplier_authorize
+ *
+ * @author LJY
+ * @date 2026-01-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("supplier_authorize")
+public class SupplierAuthorize extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 类目ID 三级
+     */
+    private Long categoryId;
+
+    /**
+     * 供应商编号
+     */
+    private String supplierNo;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 授权单编号
+     */
+    private String authorizeNo;
+
+    /**
+     * 品牌编号
+     */
+    private String brandNo;
+
+    /**
+     * 品牌名称(中文)
+     */
+    private String brandName;
+
+    /**
+     * 品牌英文名称
+     */
+    private String brandEnglishName;
+
+    /**
+     * 品牌LOGO图片地址
+     */
+    private String brandLogo;
+
+    /**
+     * 授权类型(如独家/非独家)
+     */
+    private String authorizeType;
+
+    /**
+     * 授权品类(多个品类用分隔符区分)
+     */
+    private String authorizationCategory;
+
+    /**
+     * 品牌授权方(授权出具主体)
+     */
+    private String brandLicensor;
+
+    /**
+     * 授权关系文件存储地址
+     */
+    private String authorizationRelationshipFile;
+
+    /**
+     * 授权开始时间
+     */
+    private Date authorizationStartTime;
+
+    /**
+     * 授权结束时间
+     */
+    private Date authorizationEndTime;
+
+    /**
+     * 授权区域(如中国大陆/全球等)
+     */
+    private String authorizedArea;
+
+    /**
+     * 品牌持有类型(如自有/代理)
+     */
+    private String brandHoldType;
+
+    /**
+     * 授权层级(如一级/二级授权)
+     */
+    private String authorizeLevel;
+
+    /**
+     * 授权审核状态(0待审核/1已通过/2已驳回)
+     */
+    private String authorizedStatus;
+
+    /**
+     * 授权关系文件原文件名
+     */
+    private String authorizationRelationshipFileName;
+
+    /**
+     * 品牌注册人
+     */
+    private String brandRegistrant;
+
+    /**
+     * 审核反馈意见
+     */
+    private String reviewFeedback;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注信息
+     */
+    private String remark;
+
+
+}

+ 112 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplierBank.java

@@ -0,0 +1,112 @@
+package org.dromara.customer.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 供应商银行账户对象 supplier_bank
+ *
+ * @author LJY
+ * @date 2026-01-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("supplier_bank")
+public class SupplierBank extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 账户序号
+     */
+    private Long num;
+
+    /**
+     * 供应商编号
+     */
+    private String supplierNo;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 银行行号
+     */
+    private String bankNum;
+
+    /**
+     * 银行信息编号(可能为内部系统编号)
+     */
+    private String bankInfoNo;
+
+    /**
+     * 银行名称
+     */
+    private String bankName;
+
+    /**
+     * 银行账号
+     */
+    private String bankNo;
+
+    /**
+     * 账户有效性标识(1-有效, 0-无效)
+     */
+    private String isture;
+
+    /**
+     * 账户户名
+     */
+    private String circlesName;
+
+    /**
+     * 账户预留电话
+     */
+    private String phone;
+
+    /**
+     * 发票类型编码
+     */
+    private String invoiceTypeNo;
+
+    /**
+     * 发票类型名称
+     */
+    private String invoiceTypeName;
+
+    /**
+     * 推送状态(例如:0-未推送, 1-已推送, 16-推送失败)
+     */
+    private String pushStatus;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 109 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplierBusinessInfo.java

@@ -0,0 +1,109 @@
+package org.dromara.customer.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 供应商工商注册信息对象 supplier_business_info
+ *
+ * @author LionLi
+ * @date 2026-01-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("supplier_business_info")
+public class SupplierBusinessInfo extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 关联供应商ID
+     */
+    @TableId(value = "supplier_id")
+    private Long supplierId;
+
+    /**
+     * 工商全称
+     */
+    private String businessName;
+
+    /**
+     * 统一社会信用代码
+     */
+    private String socialCreditCode;
+
+    /**
+     * 法人姓名
+     */
+    private String legalPersonName;
+
+    /**
+     * 注册资本
+     */
+    private String registeredCapital;
+
+    /**
+     * 实缴资本
+     */
+    private String paidInCapital;
+
+    /**
+     * 成立日期
+     */
+    private Date establishmentDate;
+
+    /**
+     * 吊销日期
+     */
+    private Date revocationDate;
+
+    /**
+     * 登记状态
+     */
+    private String registrationStatus;
+
+    /**
+     * 登记机关
+     */
+    private String registrationAuthority;
+
+    /**
+     * 经营范围
+     */
+    private String bussinessRange;
+
+    /**
+     * 营业执照路径
+     */
+    private String businessLicense;
+
+    /**
+     * 工商地址-详细地址
+     */
+    private String businessAddress;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 142 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplierContact.java

@@ -0,0 +1,142 @@
+package org.dromara.customer.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 联系人对象 supplier_contact
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("supplier_contact")
+public class SupplierContact extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * userId
+     */
+    private Long userId;
+
+    /**
+     * 供应商编号
+     */
+    private String supplierNo;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 用户ID
+     */
+    private String userNo;
+
+    /**
+     * 员工姓名
+     */
+    private String userName;
+
+    /**
+     * 手机号
+     */
+    private String phone;
+
+    /**
+     * 联系地址
+     */
+    private String connAddr;
+
+    /**
+     * 员工密码
+     */
+    private String password;
+
+    /**
+     * 角色
+     */
+    private String roleNo;
+
+    /**
+     * 部门
+     */
+    private String departmentNo;
+
+    /**
+     * 职位
+     */
+    private String position;
+
+    /**
+     * 联系人描述
+     */
+    private String userDescribe;
+
+    /**
+     * 主要联系人
+     */
+    private String isPrimaryContact;
+
+    /**
+     * 允许登录供应商端
+     */
+    private String isRegister;
+
+    /**
+     * 办公电话
+     */
+    private String officePhone;
+
+    /**
+     * 性别(0未知 1男 2女)
+     */
+    private String gender;
+
+    /**
+     * 对接人编号
+     */
+    private Long abutmentNo;
+
+    /**
+     * 数据推送状态(0未推送 1已推送 2推送失败)
+     */
+    private String pushStatus;
+
+    /**
+     * 行标识(预留字段)
+     */
+    private String rowCd;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注信息
+     */
+    private String remark;
+
+
+}

+ 142 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplierContract.java

@@ -0,0 +1,142 @@
+package org.dromara.customer.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 合同管理对象 supplier_contract
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("supplier_contract")
+public class SupplierContract extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 供应商编号
+     */
+    private String supplierNo;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 合同编号
+     */
+    private String contractNo;
+
+    /**
+     * 合同类型(年度合作/项目采购/其他合作)
+     */
+    private String contractType;
+
+    /**
+     * 合同名称
+     */
+    private String contractName;
+
+    /**
+     * 到期提醒时间(单位:天,如提前7天提醒)
+     */
+    private Long demandReminderTime;
+
+    /**
+     * 合同生效时间
+     */
+    private Date contractStartTime;
+
+    /**
+     * 合同到期时间
+     */
+    private Date contractEndTime;
+
+    /**
+     * 合同金额
+     */
+    private Long contractAmount;
+
+    /**
+     * 发票类型(如增值税专票/普票)
+     */
+    private String invoiceType;
+
+    /**
+     * 税率(如13%/9%/6%)
+     */
+    private Long taxRate;
+
+    /**
+     * 结算方式(如月结/季结/一次性)
+     */
+    private String settlementMethod;
+
+    /**
+     * 合同说明
+     */
+    private String contractDescription;
+
+    /**
+     * 合同附件存储地址(多个附件用分隔符区分)
+     */
+    private String contractAttachment;
+
+    /**
+     * 项目负责人(姓名/工号)
+     */
+    private String projectLeader;
+
+    /**
+     * 合同状态(0草稿 1已生效 2已到期 3已终止 4已作废)
+     */
+    private Long contractStatus;
+
+    /**
+     * 状态变更原因(如终止原因/作废理由)
+     */
+    private String reason;
+
+
+    /**
+     * 合同附件原文件名
+     */
+    private String filename;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注信息
+     */
+    private String remark;
+
+
+}

+ 329 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplierInfo.java

@@ -0,0 +1,329 @@
+package org.dromara.customer.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.translation.annotation.Translation;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.common.translation.constant.TransConstant;
+
+import java.io.Serial;
+
+/**
+ * 供应商信息对象 supplier_info
+ *
+ * @author LionLi
+ * @date 2026-01-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("supplier_info")
+public class SupplierInfo extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 供应商编号
+     */
+    private String supplierNo;
+
+    /**
+     * 企业名称
+     */
+    private String enterpriseName;
+
+    /**
+     * 人员规模
+     */
+    private Long membershipSize;
+
+    /**
+     * 供应商类型
+     */
+    private Long supplierType;
+
+    /**
+     * 合作类型
+     */
+    private Long cooperationType;
+
+    /**
+     * 固定电话
+     */
+    private String fixedPhone;
+
+    /**
+     * 传真
+     */
+    private String fax;
+
+    /**
+     * 网址
+     */
+    private String url;
+
+    /**
+     * 邮政编码
+     */
+    private String postCode;
+
+    /**
+     * 邮箱
+     */
+    private String mailbox;
+
+    /**
+     * 办公地址-省
+     */
+    private String officeProvince;
+
+    /**
+     * 办公地址-市
+     */
+    private String officeCity;
+
+    /**
+     * 办公地址-区/县
+     */
+    private String officeCounty;
+
+    /**
+     * 办公详细地址
+     */
+    private String officeAddress;
+
+    /**
+     * 营业执照名称
+     */
+    private String businessName;
+
+    /**
+     * 统一社会信用代码
+     */
+    private String socialCreditCode;
+
+    /**
+     * 法人姓名
+     */
+    private String legalPersonName;
+
+    /**
+     * 法人身份证号
+     */
+    private String legalPersonId;
+
+    /**
+     * 注册资本
+     */
+    private String registeredCapital;
+
+    /**
+     * 注册地址-省
+     */
+    private String businessProvince;
+
+    /**
+     * 注册地址-市
+     */
+    private String businessCity;
+
+    /**
+     * 注册地址-区/县
+     */
+    private String businessCounty;
+
+    /**
+     * 注册详细地址
+     */
+    private String businessAddress;
+
+    /**
+     * 营业执照图片路径
+     */
+    private String businessLicense;
+
+    /**
+     * 发票类型
+     */
+    private String invoiceType;
+
+    /**
+     * 发票抬头
+     */
+    private String invoiceHeader;
+
+    /**
+     * 纳税人识别号
+     */
+    private String taxpayerIdentifier;
+
+    /**
+     * 开户银行
+     */
+    private String depositaryBank;
+
+    /**
+     * 行号(可能是银行行号)
+     */
+    private String rowNum;
+
+    /**
+     * 银行账号
+     */
+    private String bankAccounts;
+
+    /**
+     * 发票地址
+     */
+    private String invoiceAddress;
+
+    /**
+     * 发票电话
+     */
+    private String invoiceLandline;
+
+    /**
+     * 供货范围
+     */
+    private String scopeSupply;
+
+    /**
+     * 合作方式(0-公开招标, 1-邀请招标...)
+     */
+    private Long cooperateWay;
+
+    /**
+     * 合作等级
+     */
+    private String cooperateLevel;
+
+    /**
+     * 合同到期时间
+     */
+    private Date contractEndTime;
+
+    /**
+     * 供应状态(0-暂停, 1-正常...)
+     */
+    private Long supplyStatus;
+
+    /**
+     * 供应评分
+     */
+    private Long supplyScore;
+
+    /**
+     * 年销售额
+     */
+    private Long yearSales;
+
+    /**
+     * 供应商联系人姓名
+     */
+    private String supplierName;
+
+    /**
+     * 供应商联系人电话
+     */
+    private String supplierPhone;
+
+    /**
+     * 供应商登录密码(已加密)
+     */
+    private String supplierPassword;
+
+    /**
+     * 经营品类
+     */
+    private String operatingCategory;
+
+    /**
+     * 经营品牌
+     */
+    private String operatingBrand;
+
+    /**
+     * 其他客户
+     */
+    private String otherCustomers;
+
+    /**
+     * 简称
+     */
+    private String shortName;
+
+    /**
+     * 所属行业
+     */
+    private Long industrCategory;
+
+    /**
+     * 类型(可能与supplier_type重复或细分)
+     */
+    private String type;
+
+    /**
+     * 所属公司
+     */
+    private Long ownedCompany;
+
+    /**
+     * 推送状态(0-未推送, 1-已推送...)
+     */
+    private Long pushStatus;
+
+
+    /**
+     * 有效期开始时间
+     */
+    private Date validityFromDate;
+
+    /**
+     * 有效期结束时间
+     */
+    private Date validityToDate;
+
+    /**
+     * 行号(可能是内部排序或备用字段)
+     */
+    private Long rowNo;
+
+    /**
+     * 法人身份证图片路径
+     */
+    private String personImage;
+
+    /**
+     * 对接次数
+     */
+    private Long abutmentNo;
+
+    /**
+     * 是否合作(1-是, 0-否)
+     */
+    private Long cooperative;
+
+
+    /**
+     * 供应区域(省)
+     */
+    @TableField(exist = false)
+    private String province;
+
+    /**
+     * 供应区域(市)
+     */
+    @TableField(exist = false)
+    private String city;
+
+
+}

+ 92 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplierProcurement.java

@@ -0,0 +1,92 @@
+package org.dromara.customer.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 供应商采购结算配置对象 supplier_procurement
+ *
+ * @author LionLi
+ * @date 2026-01-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("supplier_procurement")
+public class SupplierProcurement extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 产品经理 外键ID
+     */
+    private Long productManager;
+
+    /**
+     * 供应商编号
+     */
+    private String supplierNo;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 采购员  外键ID
+     */
+    private Long purchaser;
+
+    /**
+     * 结算方式(如月结/季结/现结/承兑)
+     */
+    private String settlementMethod;
+
+    /**
+     * 账期类型(如自然月/固定周期/滚动账期)
+     */
+    private String accountPeriod;
+
+    /**
+     * 开票日期(每月第N天,如5代表每月5号开票)
+     */
+    private Long billDate;
+
+    /**
+     * 结算日期(每月第N天,如10代表每月10号结算)
+     */
+    private Long settlementDay;
+
+    /**
+     * 付款账期天数(如30代表开票后30天付款)
+     */
+    private Long payDays;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注信息(如结算规则特殊说明、调整原因)
+     */
+    private String remark;
+
+
+}

+ 341 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/Supplierapprove.java

@@ -0,0 +1,341 @@
+package org.dromara.customer.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.translation.annotation.Translation;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.common.translation.constant.TransConstant;
+
+import java.io.Serial;
+
+/**
+ * 供应商审核对象 supplier_info
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("supplier_info")
+public class Supplierapprove extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 供应商编号
+     */
+    private String supplierNo;
+
+    /**
+     * 供应商名称
+     */
+    private String enterpriseName;
+
+    /**
+     * 企业规模
+     */
+    private Long membershipSize;
+
+    /**
+     * 供应商类型
+     */
+    private Long supplierType;
+
+    /**
+     * 合作类型
+     */
+    private Long cooperationType;
+
+    /**
+     * 固定电话
+     */
+    private String fixedPhone;
+
+    /**
+     * 传真
+     */
+    private String fax;
+
+    /**
+     * 网址
+     */
+    private String url;
+
+    /**
+     * 邮政编码
+     */
+    private String postCode;
+
+    /**
+     * 邮箱
+     */
+    private String mailbox;
+
+    /**
+     * 办公地址-省
+     */
+    private String officeProvince;
+
+    /**
+     * 办公地址-市
+     */
+    private String officeCity;
+
+    /**
+     * 办公地址-区/县
+     */
+    private String officeCounty;
+
+    /**
+     * 办公详细地址
+     */
+    private String officeAddress;
+
+    /**
+     * 营业执照名称
+     */
+    private String businessName;
+
+    /**
+     * 统一社会信用代码
+     */
+    private String socialCreditCode;
+
+    /**
+     * 法人姓名
+     */
+    private String legalPersonName;
+
+    /**
+     * 法人身份证号
+     */
+    private String legalPersonId;
+
+    /**
+     * 注册资本
+     */
+    private String registeredCapital;
+
+    /**
+     * 注册地址-省
+     */
+    private String businessProvince;
+
+    /**
+     * 注册地址-市
+     */
+    private String businessCity;
+
+    /**
+     * 注册地址-区/县
+     */
+    private String businessCounty;
+
+    /**
+     * 注册详细地址
+     */
+    private String businessAddress;
+
+    /**
+     * 营业执照图片路径
+     */
+    private String businessLicense;
+
+    /**
+     * 发票类型
+     */
+    private String invoiceType;
+
+    /**
+     * 发票抬头
+     */
+    private String invoiceHeader;
+
+    /**
+     * 纳税人识别号
+     */
+    private String taxpayerIdentifier;
+
+    /**
+     * 开户银行
+     */
+    private String depositaryBank;
+
+    /**
+     * 行号(可能是银行行号)
+     */
+    private String rowNum;
+
+    /**
+     * 银行账号
+     */
+    private String bankAccounts;
+
+    /**
+     * 发票地址
+     */
+    private String invoiceAddress;
+
+    /**
+     * 发票电话
+     */
+    private String invoiceLandline;
+
+    /**
+     * 供货范围
+     */
+    private String scopeSupply;
+
+    /**
+     * 合作方式(0-公开招标, 1-邀请招标...)
+     */
+    private String cooperateWay;
+
+    /**
+     * 合作等级
+     */
+    private String cooperateLevel;
+
+    /**
+     * 合同到期时间
+     */
+    private Date contractEndTime;
+
+    /**
+     * 供应状态(0-暂停, 1-正常...)
+     */
+    private String supplyStatus;
+
+    /**
+     * 供应评分
+     */
+    private Long supplyScore;
+
+    /**
+     * 年销售额
+     */
+    private Long yearSales;
+
+    /**
+     * 供应商联系人姓名
+     */
+    private String supplierName;
+
+    /**
+     * 供应商联系人电话
+     */
+    private String supplierPhone;
+
+    /**
+     * 供应商登录密码(已加密)
+     */
+    private String supplierPassword;
+
+    /**
+     * 经营类目
+     */
+    private String operatingCategory;
+
+    /**
+     * 供应品牌
+     */
+    private String operatingBrand;
+
+    /**
+     * 其他客户
+     */
+    private String otherCustomers;
+
+    /**
+     * 简称
+     */
+    private String shortName;
+
+    /**
+     * 所属行业
+     */
+    private Long industrCategory;
+
+    /**
+     * 类型(可能与supplier_type重复或细分)
+     */
+    private String type;
+
+    /**
+     * 所属公司
+     */
+    private Long ownedCompany;
+
+    /**
+     * 推送状态(0-未推送, 1-已推送...)
+     */
+    private String pushStatus;
+
+    /**
+     * 创建时间
+     */
+    private Date created;
+
+    /**
+     * 修改时间
+     */
+    private Date modify;
+
+    /**
+     * 有效期开始时间
+     */
+    private Date validityFromDate;
+
+    /**
+     * 有效期结束时间
+     */
+    private Date validityToDate;
+
+    /**
+     * 行号(可能是内部排序或备用字段)
+     */
+    private Long rowNo;
+
+    /**
+     * 法人身份证图片路径
+     */
+    private String personImage;
+
+    /**
+     * 对接次数
+     */
+    private Long abutmentNo;
+
+    /**
+     * 是否合作(1-是, 0-否)status
+     */
+    private Long cooperative;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 77 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/SupplyArea.java

@@ -0,0 +1,77 @@
+package org.dromara.customer.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 供应区域对象 supply_area
+ *
+ * @author LJY
+ * @date 2026-01-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("supply_area")
+public class SupplyArea extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 供应商编号(关联供应商主表)
+     */
+    private String supplyNo;
+
+    /**
+     * 供应商ID(关联供应商主表主键)
+     */
+    private Long supplierId;
+
+    /**
+     * 区域编码(如国标行政区域编码/自定义区域编码)
+     */
+    private String areaCode;
+
+    /**
+     * 区域名称(如北京市/江苏省南京市/天河区)
+     */
+    private String areaName;
+
+    /**
+     * 上级区域编码(如省级编码对应市级的上级编码,顶级区域为0)
+     */
+    private String parentCode;
+
+    /**
+     * 区域层级(1省/直辖市 2市 3区县 4街道/镇)
+     */
+    private String level;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注信息(如区域覆盖范围说明、调整原因)
+     */
+    private String remark;
+
+
+}

+ 120 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/ContractSupplyBo.java

@@ -0,0 +1,120 @@
+package org.dromara.customer.domain.bo;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import org.dromara.customer.domain.ContractSupply;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.product.api.domain.ContractProductDto;
+
+/**
+ * 协议供货业务对象 contract_supply
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ContractSupply.class, reverseConvertGenerate = false)
+public class ContractSupplyBo extends BaseEntity {
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 协议单号
+     */
+    private String contractSupplyNo;
+
+    /**
+     * 供应商编号
+     */
+    private String supplyNo;
+    /**
+     * 供应商名称
+     */
+    private String supplierName;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 商品数量
+     */
+    private Long productNumber;
+
+    /**
+     * 开始时间
+     */
+    private Date startTime;
+
+    /**
+     * 结束时间
+     */
+    private Date endTime;
+
+    /**
+     * 审核时间
+     */
+    private Date auditTime;
+
+    /**
+     * 价格周期(单位:天/月,根据业务定义)
+     */
+    private Long priceCycle;
+
+    /**
+     * 配送方式(如:自提、快递、送货上门等)
+     */
+    private String deliveryMethod;
+
+    /**
+     * 结算方式(如:月结、现结、账期等)
+     */
+    private String settlementMethod;
+
+    /**
+     * 价格说明(详细描述定价规则、优惠政策等)
+     */
+    private String priceDescription;
+
+    /**
+     * 附件文件路径
+     */
+    private String proFile;
+
+    /**
+     * 附件文件名
+     */
+    private String proFileName;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+
+    /**
+     * 备注信息
+     */
+    private String remark;
+
+
+    private List<ContractProductDto> contractProduct;
+
+
+}

+ 99 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierAddressBo.java

@@ -0,0 +1,99 @@
+package org.dromara.customer.domain.bo;
+
+import org.dromara.customer.domain.SupplierAddress;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 供应商地址业务对象 supplier_address
+ *
+ * @author LJY
+ * @date 2026-01-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SupplierAddress.class, reverseConvertGenerate = false)
+public class SupplierAddressBo extends BaseEntity {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 供应商编号
+     */
+    private String supplierNo;
+
+    /**
+     * 供应商编号ID
+     */
+    private Long supplierId;
+
+    /**
+     * 配送公司名称
+     */
+    private String shippingCompany;
+
+    /**
+     * 发货人姓名
+     */
+    private String shipperName;
+
+    /**
+     * 发货人电话
+     */
+    private String shipperPhone;
+
+    /**
+     * 邮政编码
+     */
+    private String shippingPostCode;
+
+    /**
+     * 省
+     */
+    private String shippingProvincial;
+
+    /**
+     * 市
+     */
+    private String shippingCity;
+
+    /**
+     * 区/县
+     */
+    private String shippingCounty;
+
+    /**
+     * 详细地址
+     */
+    private String shippingAddress;
+
+    /**
+     * 推送状态(例如:0-未推送, 1-已推送, 16-推送失败)
+     */
+    private String pushStatus;
+
+    /**
+     * 是否为自身地址(1-是, 0-否)
+     */
+    private String isSelf;
+
+    /**
+     * 地址类型(例如:1-注册地址, 2-经营地址, 3-发货地址)
+     */
+    private String type;
+
+    /**
+     * 地址编码
+     */
+    private String addressNo;
+
+
+}

+ 160 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierAuthorizeBo.java

@@ -0,0 +1,160 @@
+package org.dromara.customer.domain.bo;
+
+import org.dromara.customer.domain.SupplierAuthorize;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 供应能力查询业务对象 supplier_authorize
+ *
+ * @author LJY
+ * @date 2026-01-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SupplierAuthorize.class, reverseConvertGenerate = false)
+public class SupplierAuthorizeBo extends BaseEntity {
+
+    private Long id;
+
+    /**
+     * 供应商编号
+     */
+    private String supplierNo;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 供应商名称
+     */
+    private String supplierName;
+
+    /**
+     * 有授权品牌
+     */
+    private List<String> authBrand;
+
+    /**
+     * 供货类目
+     */
+    private String supplyProCate;
+
+    /**
+     * 可供货品牌
+     */
+    private String supplyBrand;
+
+    /**
+     * 授权单编号
+     */
+    private String authorizeNo;
+
+    /**
+     * 品牌编号
+     */
+    private String brandNo;
+
+    /**
+     * 品牌名称(中文)
+     */
+    private String brandName;
+
+    /**
+     * 品牌英文名称
+     */
+    private String brandEnglishName;
+
+    /**
+     * 品牌LOGO图片地址
+     */
+    private String brandLogo;
+
+    /**
+     * 授权类型(如独家/非独家)
+     */
+    private String authorizeType;
+
+    /**
+     * 授权品类(多个品类用分隔符区分)
+     */
+    private String authorizationCategory;
+
+    /**
+     * 品牌授权方(授权出具主体)
+     */
+    private String brandLicensor;
+
+    /**
+     * 授权关系文件存储地址
+     */
+    private String authorizationRelationshipFile;
+
+    /**
+     * 授权开始时间
+     */
+    private Date authorizationStartTime;
+
+    /**
+     * 授权结束时间
+     */
+    private Date authorizationEndTime;
+
+    /**
+     * 授权区域(如中国大陆/全球等)
+     */
+    private String authorizedArea;
+
+    /**
+     * 品牌持有类型(如自有/代理)
+     */
+    private String brandHoldType;
+
+    /**
+     * 授权层级(如一级/二级授权)
+     */
+    private String authorizeLevel;
+
+    /**
+     * 授权审核状态(0待审核/1已通过/2已驳回)
+     */
+    private String authorizedStatus;
+
+    /**
+     * 授权关系文件原文件名
+     */
+    private String authorizationRelationshipFileName;
+
+    /**
+     * 品牌注册人
+     */
+    private String brandRegistrant;
+
+    /**
+     * 审核反馈意见
+     */
+    private String reviewFeedback;
+
+    /**
+     * 省份
+     */
+    private String province;
+
+    /**
+     *  城市
+     */
+    private String city;
+
+
+}

+ 86 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierBankBo.java

@@ -0,0 +1,86 @@
+package org.dromara.customer.domain.bo;
+
+import org.dromara.customer.domain.SupplierBank;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 供应商银行账户业务对象 supplier_bank
+ *
+ * @author LJY
+ * @date 2026-01-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SupplierBank.class, reverseConvertGenerate = false)
+public class SupplierBankBo extends BaseEntity {
+
+    private Long id;
+
+    /**
+     * 账户序号
+     */
+    private Long num;
+
+    /**
+     * 供应商编号
+     */
+    private String supplierNo;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 银行行号
+     */
+    private String bankNum;
+
+    /**
+     * 银行信息编号(可能为内部系统编号)
+     */
+    private String bankInfoNo;
+
+    /**
+     * 银行名称
+     */
+    private String bankName;
+
+    /**
+     * 银行账号
+     */
+    private String bankNo;
+
+    /**
+     * 账户有效性标识(1-有效, 0-无效)
+     */
+    private String isture;
+
+    /**
+     * 账户户名
+     */
+    private String circlesName;
+
+    /**
+     * 账户预留电话
+     */
+    private String phone;
+
+    /**
+     * 发票类型编码
+     */
+    private String invoiceTypeNo;
+
+    /**
+     * 发票类型名称
+     */
+    private String invoiceTypeName;
+
+
+}

+ 91 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierBusinessInfoBo.java

@@ -0,0 +1,91 @@
+package org.dromara.customer.domain.bo;
+
+import org.dromara.customer.domain.SupplierBusinessInfo;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 供应商工商注册信息业务对象 supplier_business_info
+ *
+ * @author LionLi
+ * @date 2026-01-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SupplierBusinessInfo.class, reverseConvertGenerate = false)
+public class SupplierBusinessInfoBo extends BaseEntity {
+
+    /**
+     * 关联供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 工商全称
+     */
+    private String businessName;
+
+    /**
+     * 统一社会信用代码
+     */
+    private String socialCreditCode;
+
+    /**
+     * 法人姓名
+     */
+    private String legalPersonName;
+
+    /**
+     * 注册资本
+     */
+    private String registeredCapital;
+
+    /**
+     * 实缴资本
+     */
+    private String paidInCapital;
+
+    /**
+     * 成立日期
+     */
+    private Date establishmentDate;
+
+    /**
+     * 吊销日期
+     */
+    private Date revocationDate;
+
+    /**
+     * 登记状态
+     */
+    private String registrationStatus;
+
+    /**
+     * 登记机关
+     */
+    private String registrationAuthority;
+
+    /**
+     * 经营范围
+     */
+    private String bussinessRange;
+
+    /**
+     * 营业执照路径
+     */
+    private String businessLicense;
+
+    /**
+     * 工商地址-详细地址
+     */
+    private String businessAddress;
+
+
+}

+ 142 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierContactBo.java

@@ -0,0 +1,142 @@
+package org.dromara.customer.domain.bo;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import org.dromara.customer.domain.SupplierContact;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 联系人业务对象 supplier_contact
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SupplierContact.class, reverseConvertGenerate = false)
+public class SupplierContactBo extends BaseEntity {
+
+    private Long id;
+
+    /**
+     * userId
+     */
+    private Long userId;
+    /**
+     * 供应商编号
+     */
+    private String supplierNo;
+
+    /**
+     * 供应商名称
+     */
+    private String supplierName;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 用户ID
+     */
+    private String userNo;
+
+    /**
+     * 员工姓名
+     */
+    private String userName;
+
+    /**
+     * 手机号
+     */
+    private String phone;
+
+    /**
+     * 联系地址
+     */
+    private String connAddr;
+
+    /**
+     * 员工密码
+     */
+    private String password;
+
+    /**
+     * 角色
+     */
+    private String roleNo;
+
+    /**
+     * 部门
+     */
+    private String departmentNo;
+
+    /**
+     * 职位
+     */
+    private String position;
+
+    /**
+     * 联系人描述
+     */
+    private String userDescribe;
+
+    /**
+     * 主要联系人
+     */
+    private String isPrimaryContact;
+
+    /**
+     * 允许登录供应商端
+     */
+    private String isRegister;
+
+    /**
+     * 办公电话
+     */
+    private String officePhone;
+
+    /**
+     * 性别(0未知 1男 2女)
+     */
+    private String gender;
+
+    /**
+     * 对接人编号
+     */
+    private Long abutmentNo;
+
+    /**
+     * 数据推送状态(0未推送 1已推送 2推送失败)
+     */
+    private String pushStatus;
+
+    /**
+     * 行标识(预留字段)
+     */
+    private String rowCd;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    /**
+     * 备注信息
+     */
+    private String remark;
+
+
+}

+ 102 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierContractBo.java

@@ -0,0 +1,102 @@
+package org.dromara.customer.domain.bo;
+
+import org.dromara.customer.domain.SupplierContract;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 合同管理业务对象 supplier_contract
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SupplierContract.class, reverseConvertGenerate = false)
+public class SupplierContractBo extends BaseEntity {
+
+    private Long id;
+
+    /**
+     * 供应商编号
+     */
+    private String supplierNo;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 供应商名称
+     */
+    private String supplierName;
+
+    /**
+     * 合同编号
+     */
+    private String contractNo;
+
+    /**
+     * 合同名称
+     */
+    private String contractName;
+
+    /**
+     * 合同类型(年度合作/项目采购/其他合作)
+     */
+    private Long contractType;
+
+    /**
+     * 合同生效时间
+     */
+    private Date contractStartTime;
+
+    /**
+     * 合同到期时间
+     */
+    private Date contractEndTime;
+
+    /**
+     * 合同状态(0待审核 1已签署 2已完成 3已到期 4审核未通过)
+     */
+    private Long contractStatus;
+
+    /**
+     * 到期提醒时间(单位:天,如提前7天提醒)
+     */
+    private Long demandReminderTime;
+
+    /**
+     * 税率(如13%/9%/6%)
+     */
+    private Long taxRate;
+
+    /**
+     * 合同金额
+     */
+    private Long contractAmount;
+
+    /**
+     * 合同说明
+     */
+    private String contractDescription;
+
+    /**
+     * 合同附件存储地址(多个附件用分隔符区分)
+     */
+    private String contractAttachment;
+
+
+
+
+}

+ 366 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierInfoBo.java

@@ -0,0 +1,366 @@
+package org.dromara.customer.domain.bo;
+
+import org.dromara.customer.domain.SupplierInfo;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import org.dromara.common.translation.annotation.Translation;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.common.translation.constant.TransConstant;
+
+/**
+ * 供应商信息业务对象 supplier_info
+ *
+ * @author LionLi
+ * @date 2026-01-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SupplierInfo.class, reverseConvertGenerate = false)
+public class SupplierInfoBo extends BaseEntity {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 供应商编号
+     */
+    //@NotBlank(message = "供应商编号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String supplierNo;
+
+    /**
+     * 企业名称
+     */
+    //@NotBlank(message = "企业名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String enterpriseName;
+
+    /**
+     * 人员规模
+     */
+    //@NotBlank(message = "人员规模不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long membershipSize;
+
+    /**
+     * 供应商类型
+     */
+    //@NotBlank(message = "供应商类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long supplierType;
+
+    /**
+     * 合作类型
+     */
+    //@NotBlank(message = "合作类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long cooperationType;
+
+
+    /**
+     * 固定电话
+     */
+    //@NotBlank(message = "固定电话不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fixedPhone;
+
+    /**
+     * 传真
+     */
+    //@NotBlank(message = "传真不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fax;
+
+    /**
+     * 网址
+     */
+    //@NotBlank(message = "网址不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String url;
+
+    /**
+     * 邮政编码
+     */
+    //@NotBlank(message = "邮政编码不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String postCode;
+
+    /**
+     * 邮箱
+     */
+    //@NotBlank(message = "邮箱不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String mailbox;
+
+    /**
+     * 办公地址-省
+     */
+    //@NotBlank(message = "办公地址-省不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String officeProvince;
+
+    /**
+     * 办公地址-市
+     */
+    //@NotBlank(message = "办公地址-市不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String officeCity;
+
+    /**
+     * 办公地址-区/县
+     */
+    //@NotBlank(message = "办公地址-区/县不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String officeCounty;
+
+    /**
+     * 办公详细地址
+     */
+    //@NotBlank(message = "办公详细地址不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String officeAddress;
+
+    /**
+     * 营业执照名称
+     */
+    //@NotBlank(message = "营业执照名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String businessName;
+
+    /**
+     * 统一社会信用代码
+     */
+    //@NotBlank(message = "统一社会信用代码不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String socialCreditCode;
+
+    /**
+     * 法人姓名
+     */
+    //@NotBlank(message = "法人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String legalPersonName;
+
+    /**
+     * 法人身份证号
+     */
+    //@NotBlank(message = "法人身份证号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String legalPersonId;
+
+    /**
+     * 注册资本
+     */
+    //@NotBlank(message = "注册资本不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String registeredCapital;
+
+    /**
+     * 注册地址-省
+     */
+    //@NotBlank(message = "注册地址-省不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String businessProvince;
+
+    /**
+     * 注册地址-市
+     */
+    //@NotBlank(message = "注册地址-市不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String businessCity;
+
+    /**
+     * 注册地址-区/县
+     */
+    //@NotBlank(message = "注册地址-区/县不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String businessCounty;
+
+    /**
+     * 注册详细地址
+     */
+    //@NotBlank(message = "注册详细地址不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String businessAddress;
+
+    /**
+     * 营业执照图片路径
+     */
+    //@NotBlank(message = "营业执照图片路径不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String businessLicense;
+
+    /**
+     * 发票类型
+     */
+    //@NotBlank(message = "发票类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String invoiceType;
+
+    /**
+     * 发票抬头
+     */
+    //@NotBlank(message = "发票抬头不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String invoiceHeader;
+
+    /**
+     * 纳税人识别号
+     */
+    //@NotBlank(message = "纳税人识别号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String taxpayerIdentifier;
+
+    /**
+     * 开户银行
+     */
+    //@NotBlank(message = "开户银行不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String depositaryBank;
+
+    /**
+     * 行号(可能是银行行号)
+     */
+    //@NotBlank(message = "行号(可能是银行行号)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String rowNum;
+
+    /**
+     * 银行账号
+     */
+    //@NotBlank(message = "银行账号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String bankAccounts;
+
+    /**
+     * 发票地址
+     */
+    //@NotBlank(message = "发票地址不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String invoiceAddress;
+
+    /**
+     * 发票电话
+     */
+    //@NotBlank(message = "发票电话不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String invoiceLandline;
+
+    /**
+     * 供货范围
+     */
+    //@NotBlank(message = "供货范围不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String scopeSupply;
+
+    /**
+     * 合作方式(0-公开招标, 1-邀请招标...)
+     */
+    //@NotNull(message = "合作方式(0-公开招标, 1-邀请招标...)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long cooperateWay;
+
+    /**
+     * 合作等级
+     */
+    private String cooperateLevel;
+
+    /**
+     * 合同到期时间
+     */
+    //@NotNull(message = "合同到期时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date contractEndTime;
+
+    /**
+     * 供应状态(0-暂停, 1-正常...)
+     */
+    private Long supplyStatus;
+
+    /**
+     * 供应评分
+     */
+    private Long supplyScore;
+
+    /**
+     * 年销售额
+     */
+    //@NotNull(message = "年销售额不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long yearSales;
+
+    /**
+     * 供应商联系人姓名
+     */
+    //@NotBlank(message = "供应商联系人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String supplierName;
+
+    /**
+     * 供应商联系人电话
+     */
+    //@NotBlank(message = "供应商联系人电话不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String supplierPhone;
+
+    /**
+     * 供应商登录密码(已加密)
+     */
+    //@NotBlank(message = "供应商登录密码(已加密)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String supplierPassword;
+
+    /**
+     * 经营品类
+     */
+    //@NotBlank(message = "经营品类不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String operatingCategory;
+
+    /**
+     * 经营品牌
+     */
+    //@NotBlank(message = "经营品牌不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String operatingBrand;
+
+    /**
+     * 其他客户
+     */
+    //@NotBlank(message = "其他客户不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String otherCustomers;
+
+    /**
+     * 简称
+     */
+    //@NotBlank(message = "简称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String shortName;
+
+    /**
+     * 所属行业
+     */
+    //@NotBlank(message = "所属行业不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long industrCategory;
+
+    /**
+     * 类型(可能与supplier_type重复或细分)
+     */
+    //@NotBlank(message = "类型(可能与supplier_type重复或细分)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String type;
+
+    /**
+     * 所属公司
+     */
+    //@NotBlank(message = "所属公司不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long ownedCompany;
+
+    /**
+     * 推送状态(0-未推送, 1-已推送...)
+     */
+    private Long pushStatus;
+
+
+    /**
+     * 有效期开始时间
+     */
+    //@NotNull(message = "有效期开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date validityFromDate;
+
+    /**
+     * 有效期结束时间
+     */
+    //@NotNull(message = "有效期结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date validityToDate;
+
+    /**
+     * 行号(可能是内部排序或备用字段)
+     */
+    //@NotNull(message = "行号(可能是内部排序或备用字段)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long rowNo;
+
+    /**
+     * 法人身份证图片路径
+     */
+    //@NotBlank(message = "法人身份证图片路径不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String personImage;
+
+    /**
+     * 对接次数
+     */
+    private Long abutmentNo;
+
+    /**
+     * 是否合作(1-是, 0-否)
+     */
+    //@NotNull(message = "是否合作(1-是, 0-否)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long cooperative;
+
+
+}

+ 44 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierProcurementBo.java

@@ -0,0 +1,44 @@
+package org.dromara.customer.domain.bo;
+
+import org.dromara.customer.domain.SupplierProcurement;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 供应商采购结算配置业务对象 supplier_procurement
+ *
+ * @author LionLi
+ * @date 2026-01-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SupplierProcurement.class, reverseConvertGenerate = false)
+public class SupplierProcurementBo extends BaseEntity {
+
+    /**
+     * 产品经理
+     */
+    private String productManager;
+
+    /**
+     * 供应商编号
+     */
+    private String supplierNo;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 采购员
+     */
+    private String purchaser;
+
+
+}

+ 65 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplierapproveBo.java

@@ -0,0 +1,65 @@
+package org.dromara.customer.domain.bo;
+
+import org.dromara.customer.domain.Supplierapprove;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import org.dromara.common.translation.annotation.Translation;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.common.translation.constant.TransConstant;
+
+/**
+ * 供应商审核业务对象 supplier_info
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = Supplierapprove.class, reverseConvertGenerate = false)
+public class SupplierapproveBo extends BaseEntity {
+
+    /**
+     * 供应商名称
+     */
+
+    private String enterpriseName;
+
+    /**
+     * 供应商类型
+     */
+    private Long supplierType;
+
+    /**
+     * 供货范围
+     */
+    private String scopeSupply;
+
+    /**
+     * 经营类目
+     */
+    private String operatingCategory;
+
+    /**
+     * 供应品牌
+     */
+    private String operatingBrand;
+
+    /**
+     * 是否合作(1-是, 0-否)status
+     */
+    private Long cooperative;
+
+    /**
+     * 状态
+     */
+
+    private String status;
+
+
+}

+ 62 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/SupplyAreaBo.java

@@ -0,0 +1,62 @@
+package org.dromara.customer.domain.bo;
+
+import org.dromara.common.core.validate.enumd.EnumPattern;
+import org.dromara.customer.domain.SupplyArea;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+import java.util.List;
+
+/**
+ * 供应区域业务对象 supply_area
+ *
+ * @author LJY
+ * @date 2026-01-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SupplyArea.class, reverseConvertGenerate = false)
+public class SupplyAreaBo extends BaseEntity {
+
+    private Long id;
+
+    /**
+     * 供应商编号(关联供应商主表)
+     */
+    private String supplyNo;
+
+    /**
+     * 供应商ID(关联供应商主表主键)
+     */
+    private Long supplierId;
+
+    /**
+     * 区域编码(如国标行政区域编码/自定义区域编码)
+     */
+    private String areaCode;
+
+    /**
+     * 区域名称(如北京市/江苏省南京市/天河区)
+     */
+    private String areaName;
+
+    /**
+     * 上级区域编码(如省级编码对应市级的上级编码,顶级区域为0)
+     */
+    private String parentCode;
+
+    /**
+     * 区域层级(1省/直辖市 2市 3区县 4街道/镇)
+     */
+    private String level;
+
+
+    private List<SupplyAreaBo> areaList;
+
+
+}

+ 16 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/dto/ContractCountDTO.java

@@ -0,0 +1,16 @@
+package org.dromara.customer.domain.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.RequiredArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ContractCountDTO {
+    private long total;       // 合同总数
+    private long validCount;  // 有效合同数
+    private long invalidCount;// 失效合同数
+
+}

+ 496 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/ContractSupplyProductVo.java

@@ -0,0 +1,496 @@
+package org.dromara.customer.domain.vo;
+
+import cn.idev.excel.annotation.ExcelProperty;
+import lombok.Data;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+
+import java.math.BigDecimal;
+
+/**
+ * author
+ * 时间:2026/1/20,15:46
+ */
+@Data
+public class ContractSupplyProductVo {
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 合同供货编号
+     */
+    private String contractSupplyNo;
+
+    /**
+     * 合同供货Id
+     */
+    private Long contractSupplyId;
+
+    /**
+     * 产品编号
+     */
+    private String productNo;
+
+    /**
+     * 产品id
+     */
+    private Long productId;
+
+    /**
+     * 供货周期(单位:天/月,根据业务定义)
+     */
+    private Long supplyCycle;
+
+    /**
+     * 库存属性
+     */
+    private String inventoryProperties;
+
+    /**
+     * 最小供货量
+     */
+    private Long minSupply;
+
+    /**
+     * 报价(支持大文本)
+     */
+    private String offerPrice;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+
+
+
+    /**
+     * 产品名称
+     */
+    @ExcelProperty(value = "项目名称")
+    private String itemName;
+
+    /**
+     * 品牌id
+     */
+    @ExcelProperty(value = "品牌id")
+    private Long brandId;
+
+    /**
+     * 品牌名称
+     */
+    private String brandName;
+
+    /**
+     * 顶级分类id
+     */
+    @ExcelProperty(value = "顶级分类id")
+    private Long topCategoryId;
+
+    /**
+     * 中级分类id
+     */
+    @ExcelProperty(value = "中级分类id")
+    private Long mediumCategoryId;
+
+    /**
+     * 底层分类id
+     */
+    @ExcelProperty(value = "底层分类id")
+    private Long bottomCategoryId;
+
+    /**
+     * 分类名称(底级分类)
+     */
+    private String categoryName;
+
+    /**
+     * 顶级分类名称
+     */
+    private String topCategoryName;
+
+    /**
+     * 中级分类名称
+     */
+    private String mediumCategoryName;
+
+    /**
+     * 底级分类名称
+     */
+    private String bottomCategoryName;
+
+    /**
+     * 单位id
+     */
+    @ExcelProperty(value = "单位id")
+    private String unitId;
+
+    /**
+     * 单位名称(如:件、箱、千克等)
+     */
+    private String unitName;
+
+    /**
+     * 产品图片URL
+     */
+    @ExcelProperty(value = "产品图片URL")
+    private String productImage;
+
+    /**
+     * 是否自营(1=是,0=否)
+     */
+    @ExcelProperty(value = "是否自营", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1==是,0=否")
+    private Integer isSelf;
+
+    /**
+     * 商品类型 1=默认类型,2精选商品,3=停售商品
+     * */
+    private Integer productCategory;
+
+    /**
+     * 产品审核状态 0=待提交,1=待审核,2=审核通过,3=审核驳回
+     */
+    @ExcelProperty(value = "产品审核状态 0=待采购审核,1=审核通过,2=驳回,3=待营销审核")
+    private Integer productReviewStatus;
+
+    /**
+     * 审核意见
+     * */
+    @ExcelProperty(value = "审核意见")
+    private String reviewComments;
+
+    /**
+     * 首页推荐:1=推荐,0=不推荐
+     */
+    @ExcelProperty(value = "首页推荐:1=推荐,0=不推荐")
+    private Integer homeRecommended;
+
+    /**
+     * 分类推荐:1=推荐,0=不推荐
+     */
+    @ExcelProperty(value = "分类推荐:1=推荐,0=不推荐")
+    private Integer categoryRecommendation;
+
+    /**
+     * 购物车推荐:1=推荐,0=不推荐
+     */
+    @ExcelProperty(value = "购物车推荐:1=推荐,0=不推荐")
+    private Integer cartRecommendation;
+
+    /**
+     * 推荐产品顺序
+     */
+    @ExcelProperty(value = "推荐产品顺序")
+    private Long recommendedProductOrder;
+
+    /**
+     * 是否热门:1=是,0=否
+     */
+    @ExcelProperty(value = "是否热门:1=是,0=否")
+    private Integer isPopular;
+
+    /**
+     * 是否新品:1=是,0=否
+     */
+    @ExcelProperty(value = "是否新品:1=是,0=否")
+    private Integer isNew;
+
+    /**
+     * 商品状态:1=已上架,0=下架 2 上架中等
+     */
+    @ExcelProperty(value = "商品状态:1=已上架,0=下架 2 上架中等")
+    private Integer productStatus;
+
+    /**
+     * 数据来源
+     */
+    @ExcelProperty(value = "数据来源")
+    private String dataSource;
+
+    /**
+     * 市场价
+     * */
+    @ExcelProperty(value = "市场价")
+    private BigDecimal marketPrice;
+
+    /**
+     * 会员价格
+     */
+    @ExcelProperty(value = "会员价格")
+    private BigDecimal memberPrice;
+
+    /**
+     * 最低销售价格
+     */
+    @ExcelProperty(value = "最低销售价格")
+    private BigDecimal minSellingPrice;
+
+    /**
+     * 采购价格
+     */
+    @ExcelProperty(value = "采购价格")
+    private BigDecimal purchasingPrice;
+
+
+    /**
+     * 暂估毛利率
+     * */
+    @ExcelProperty(value = "暂估毛利率")
+    private BigDecimal tempGrossMargin;
+
+
+    /**
+     * A10产品名称
+     */
+    @ExcelProperty(value = "A10产品名称")
+    private String a10ProductName;
+
+    /**
+     * 规格型号
+     */
+    @ExcelProperty(value = "规格型号")
+    private String specification;
+
+    /**
+     * UPC(S)条码
+     */
+    @ExcelProperty(value = "UPC(S)条码")
+    private String upcBarcode;
+
+    /**
+     * 发票名称
+     */
+    @ExcelProperty(value = "发票名称")
+    private String invoiceName;
+
+    /**
+     * 发票规格
+     */
+    @ExcelProperty(value = "发票规格")
+    private String invoiceSpec;
+
+    /**
+     * 包装规格
+     */
+    @ExcelProperty(value = "包装规格")
+    private String packagingSpec;
+
+    /**
+     * 参考链接
+     */
+    @ExcelProperty(value = "参考链接")
+    private String referenceLink;
+
+    /**
+     * 商品重量
+     */
+    @ExcelProperty(value = "商品重量")
+    private String weight;
+
+    /**
+     * 重量单位
+     */
+    @ExcelProperty(value = "重量单位")
+    private String weightUnit;
+
+    /**
+     * 商品体积
+     */
+    @ExcelProperty(value = "商品体积")
+    private String volume;
+
+    /**
+     * 体积单位
+     */
+    @ExcelProperty(value = "体积单位")
+    private String volumeUnit;
+
+    /**
+     * 主库简介
+     */
+    @ExcelProperty(value = "主库简介")
+    private String mainLibraryIntro;
+
+    /**
+     * 售后服务
+     */
+    @ExcelProperty(value = "售后服务")
+    private String afterSalesService;
+
+    /**
+     * 服务保证 - 无忧退货
+     */
+    @ExcelProperty(value = "无忧退货")
+    private String worryFreeReturn;
+
+    /**
+     * 服务保证 - 快速退款
+     */
+    @ExcelProperty(value = "快速退款")
+    private String quickRefund;
+
+    /**
+     * 服务保证 - 免费包邮
+     */
+    @ExcelProperty(value = "免费包邮")
+    private String freeShipping;
+
+    /**
+     * 服务保证 - 正品保障
+     */
+    @ExcelProperty(value = "正品保障")
+    private String genuineGuarantee;
+
+    /**
+     * 安装服务 - 免费安装
+     */
+    @ExcelProperty(value = "免费安装")
+    private String freeInstallation;
+
+    /**
+     * 中档价
+     */
+    @ExcelProperty(value = "中档价")
+    private BigDecimal midRangePrice;
+
+    /**
+     * 平档价
+     */
+    @ExcelProperty(value = "平档价")
+    private BigDecimal standardPrice;
+
+    /**
+     * 套证价
+     */
+    @ExcelProperty(value = "套证价")
+    private BigDecimal certificatePrice;
+
+    /**
+     * 采购价
+     */
+    @ExcelProperty(value = "采购价")
+    private BigDecimal purchasePrice;
+
+    /**
+     * 暂估采购价
+     */
+    @ExcelProperty(value = "暂估采购价")
+    private BigDecimal estimatedPurchasePrice;
+
+    /**
+     * 产品性质
+     */
+    @ExcelProperty(value = "产品性质")
+    private String productNature;
+
+    /**
+     * 采购人员
+     */
+    @ExcelProperty(value = "采购人员")
+    private String purchasingPersonnel;
+
+    /**
+     * 商品详情 - 电脑端
+     */
+    @ExcelProperty(value = "电脑端详情")
+    private String pcDetail;
+
+    /**
+     * 商品详情 - 移动端
+     */
+    @ExcelProperty(value = "移动端详情")
+    private String mobileDetail;
+
+    /**
+     * 税率
+     */
+    @ExcelProperty(value = "税率")
+    private BigDecimal taxRate;
+
+    /**
+     * 币种
+     */
+    @ExcelProperty(value = "币种")
+    private String currency;
+
+    /**
+     * 最低起订量
+     */
+    @ExcelProperty(value = "最低起订量")
+    private Long minOrderQuantity;
+
+    /**
+     * 总库存
+     * */
+    private Long totalInventory;
+    /**
+     * 当前可用库存
+     * */
+    private Long nowInventory;
+
+    /**
+     * 虚拟库存
+     * */
+    private Long virtualInventory;
+
+    /**
+     * 是否可定制
+     */
+    private Boolean customizable;
+
+    /**
+     * 定制说明
+     */
+    private String customDescription;
+
+    /**
+     * 定制详情列表(JSON字符串)
+     */
+    private String customDetailsJson;
+
+    /**
+     * 服务保障(逗号分隔的ID列表)
+     */
+    private String serviceGuarantee;
+
+    /**
+     * 商品属性值(JSON字符串)
+     */
+    private String attributesList;
+
+    /**
+     * 销售量/销量人气
+     */
+    private Long salesVolume;
+
+    /**
+     * 定制方式(逗号分隔)
+     */
+    private String customizedStyle;
+
+    /**
+     * 定制工艺(逗号分隔)
+     */
+    private String customizedCraft;
+
+    /**
+     * 推送状态 0未推送,1已推送
+     */
+    private Long pushStatus;
+
+
+}

+ 94 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/ContractSupplyVo.java

@@ -0,0 +1,94 @@
+package org.dromara.customer.domain.vo;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.customer.domain.ContractSupply;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.product.api.domain.ContractProductDto;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 协议供货视图对象 contract_supply
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ContractSupply.class)
+public class ContractSupplyVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+
+    private Long id;
+    /**
+     * 协议单号
+     */
+    @ExcelProperty(value = "协议单号")
+    private String contractSupplyNo;
+
+    /**
+     * 供应商编号
+     */
+    @ExcelProperty(value = "供应商编号")
+    private String supplyNo;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 供应商名称
+     */
+    private String supplierName;
+
+    /**
+     * 商品数量
+     */
+    @ExcelProperty(value = "商品数量")
+    private Long productNumber = 0L;
+
+    /**
+     * 开始时间
+     */
+    @ExcelProperty(value = "开始时间")
+    private Date startTime;
+
+    /**
+     * 结束时间
+     */
+    @ExcelProperty(value = "结束时间")
+    private Date endTime;
+
+    /**
+     * 状态(0未生效 1生效)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "contract_supplier_status")
+    private String status;
+
+    private String remark;
+    /**
+     * 剩余时限(天)
+     */
+    private String timeRemaining;
+
+    private List<ContractSupplyProductVo> contractProduct;
+
+
+}

+ 2 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/CustomerContactVo.java

@@ -39,6 +39,8 @@ public class CustomerContactVo implements Serializable {
     @ExcelProperty(value = "所属客户ID")
     private Long customerId;
 
+
+
     /**
      * 联系人姓名
      */

+ 125 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierAddressVo.java

@@ -0,0 +1,125 @@
+package org.dromara.customer.domain.vo;
+
+import org.dromara.customer.domain.SupplierAddress;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 供应商地址视图对象 supplier_address
+ *
+ * @author LJY
+ * @date 2026-01-19
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SupplierAddress.class)
+public class SupplierAddressVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /**
+     * 供应商编号
+     */
+    @ExcelProperty(value = "供应商编号")
+    private String supplierNo;
+
+    /**
+     * 供应商编号ID
+     */
+    @ExcelProperty(value = "供应商编号ID")
+    private Long supplierId;
+
+    /**
+     * 配送公司名称
+     */
+    @ExcelProperty(value = "配送公司名称")
+    private String shippingCompany;
+
+    /**
+     * 发货人姓名
+     */
+    @ExcelProperty(value = "发货人姓名")
+    private String shipperName;
+
+    /**
+     * 发货人电话
+     */
+    @ExcelProperty(value = "发货人电话")
+    private String shipperPhone;
+
+    /**
+     * 邮政编码
+     */
+    @ExcelProperty(value = "邮政编码")
+    private String shippingPostCode;
+
+    /**
+     * 省
+     */
+    @ExcelProperty(value = "省")
+    private String shippingProvincial;
+
+    /**
+     * 市
+     */
+    @ExcelProperty(value = "市")
+    private String shippingCity;
+
+    /**
+     * 区/县
+     */
+    @ExcelProperty(value = "区/县")
+    private String shippingCounty;
+
+    /**
+     * 详细地址
+     */
+    @ExcelProperty(value = "详细地址")
+    private String shippingAddress;
+
+    /**
+     * 推送状态(例如:0-未推送, 1-已推送, 16-推送失败)
+     */
+    @ExcelProperty(value = "推送状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "例=如:0-未推送,,1=-已推送,,1=6-推送失败")
+    private String pushStatus;
+
+    /**
+     * 是否为自身地址(1-是, 0-否)
+     */
+    @ExcelProperty(value = "是否为自身地址", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=-是,,0=-否")
+    private String isSelf;
+
+    /**
+     * 地址类型(例如:1-注册地址, 2-经营地址, 3-发货地址)
+     */
+    @ExcelProperty(value = "地址类型", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "例=如:1-注册地址,,2=-经营地址,,3=-发货地址")
+    private String type;
+
+    /**
+     * 地址编码
+     */
+    @ExcelProperty(value = "地址编码")
+    private String addressNo;
+
+
+}

+ 207 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierAuthorizeVo.java

@@ -0,0 +1,207 @@
+package org.dromara.customer.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.customer.domain.SupplierAuthorize;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Map;
+
+
+/**
+ * 供应能力查询视图对象 supplier_authorize
+ *
+ * @author LJY
+ * @date 2026-01-15
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SupplierAuthorize.class)
+public class SupplierAuthorizeVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    /**
+     * 类目ID 三级
+     */
+    private Long categoryId;
+
+    /**
+     * 供应商编号
+     */
+    @ExcelProperty(value = "供应商编号")
+    private String supplierNo;
+
+    /**
+     * 供应商ID
+     */
+    @ExcelProperty(value = "供应商ID")
+    private Long supplierId;
+
+    /**
+     * 供应商名称
+     */
+    private String supplierName;
+
+
+    /**
+     * 供货类目
+     */
+    private String supplyProCate;
+
+    /**
+     * 可供货品牌
+     */
+    private String supplyBrand;
+
+
+
+    /**
+     * 授权单编号
+     */
+    @ExcelProperty(value = "授权单编号")
+    private String authorizeNo;
+
+    /**
+     * 有授权品牌
+     */
+    private String authBrand;
+
+    /**
+     * 品牌编号
+     */
+    @ExcelProperty(value = "品牌编号")
+    private String brandNo;
+
+    /**
+     * 品牌名称(中文)
+     */
+    @ExcelProperty(value = "品牌名称", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "中=文")
+    private String brandName;
+
+    /**
+     * 品牌英文名称
+     */
+    @ExcelProperty(value = "品牌英文名称")
+    private String brandEnglishName;
+
+    /**
+     * 品牌LOGO图片地址
+     */
+    @ExcelProperty(value = "品牌LOGO图片地址")
+    private String brandLogo;
+
+    /**
+     * 授权类型(如独家/非独家)
+     */
+    @ExcelProperty(value = "授权类型", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "如=独家/非独家")
+    private String authorizeType;
+
+    /**
+     * 授权品类(多个品类用分隔符区分)
+     */
+    @ExcelProperty(value = "授权品类", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "多=个品类用分隔符区分")
+    private String authorizationCategory;
+
+    /**
+     * 品牌授权方(授权出具主体)
+     */
+    @ExcelProperty(value = "品牌授权方", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "授=权出具主体")
+    private String brandLicensor;
+
+    /**
+     * 授权关系文件存储地址
+     */
+    @ExcelProperty(value = "授权关系文件存储地址")
+    private String authorizationRelationshipFile;
+
+    /**
+     * 授权开始时间
+     */
+    @ExcelProperty(value = "授权开始时间")
+    private Date authorizationStartTime;
+
+    /**
+     * 授权结束时间
+     */
+    @ExcelProperty(value = "授权结束时间")
+    private Date authorizationEndTime;
+
+    /**
+     * 授权区域(如中国大陆/全球等)
+     */
+    @ExcelProperty(value = "授权区域", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "如=中国大陆/全球等")
+    private String authorizedArea;
+
+    /**
+     * 品牌持有类型(如自有/代理)
+     */
+    @ExcelProperty(value = "品牌持有类型", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "如=自有/代理")
+    private String brandHoldType;
+
+    /**
+     * 授权层级(如一级/二级授权)
+     */
+    @ExcelProperty(value = "授权层级", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "如=一级/二级授权")
+    private String authorizeLevel;
+
+    /**
+     * 授权审核状态(0待审核/1已通过/2已驳回)
+     */
+    @ExcelProperty(value = "授权审核状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=待审核/1已通过/2已驳回")
+    private String authorizedStatus;
+
+    /**
+     * 授权关系文件原文件名
+     */
+    @ExcelProperty(value = "授权关系文件原文件名")
+    private String authorizationRelationshipFileName;
+
+    /**
+     * 品牌注册人
+     */
+    @ExcelProperty(value = "品牌注册人")
+    private String brandRegistrant;
+
+    /**
+     * 审核反馈意见
+     */
+    @ExcelProperty(value = "审核反馈意见")
+    private String reviewFeedback;
+
+    /**
+     * 供应区域(省)
+     */
+    private String province;
+
+    /**
+     * 供应区域(市)
+     */
+    private String city;
+
+    /**
+     * 一级,二级,三级品目名称 oneLevelName twoLevelName threeLevelName
+     */
+    Map<String, String> categorysMap;
+
+
+}

+ 80 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierBankVo.java

@@ -0,0 +1,80 @@
+package org.dromara.customer.domain.vo;
+
+import org.dromara.customer.domain.SupplierBank;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 供应商银行账户视图对象 supplier_bank
+ *
+ * @author LJY
+ * @date 2026-01-15
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SupplierBank.class)
+public class SupplierBankVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 账户序号
+     */
+    @ExcelProperty(value = "账户序号")
+    private Long num;
+
+    /**
+     * 供应商编号
+     */
+    @ExcelProperty(value = "供应商编号")
+    private String supplierNo;
+
+    /**
+     * 供应商ID
+     */
+    @ExcelProperty(value = "供应商ID")
+    private Long supplierId;
+
+    /**
+     * 银行行号
+     */
+    @ExcelProperty(value = "银行行号")
+    private String bankNum;
+
+    /**
+     * 银行信息编号(可能为内部系统编号)
+     */
+    @ExcelProperty(value = "银行信息编号", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "可=能为内部系统编号")
+    private String bankInfoNo;
+
+    /**
+     * 银行名称
+     */
+    @ExcelProperty(value = "银行名称")
+    private String bankName;
+
+    /**
+     * 银行账号
+     */
+    @ExcelProperty(value = "银行账号")
+    private String bankNo;
+
+
+}

+ 112 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierBusinessInfoVo.java

@@ -0,0 +1,112 @@
+package org.dromara.customer.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.customer.domain.SupplierBusinessInfo;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 供应商工商注册信息视图对象 supplier_business_info
+ *
+ * @author LionLi
+ * @date 2026-01-22
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SupplierBusinessInfo.class)
+public class SupplierBusinessInfoVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 关联客户ID
+     */
+    @ExcelProperty(value = "关联供应商ID")
+    private Long supplierId;
+
+    /**
+     * 工商全称
+     */
+    @ExcelProperty(value = "工商全称")
+    private String businessName;
+
+    /**
+     * 统一社会信用代码
+     */
+    @ExcelProperty(value = "统一社会信用代码")
+    private String socialCreditCode;
+
+    /**
+     * 法人姓名
+     */
+    @ExcelProperty(value = "法人姓名")
+    private String legalPersonName;
+
+    /**
+     * 注册资本
+     */
+    @ExcelProperty(value = "注册资本")
+    private String registeredCapital;
+
+    /**
+     * 实缴资本
+     */
+    @ExcelProperty(value = "实缴资本")
+    private String paidInCapital;
+
+    /**
+     * 成立日期
+     */
+    @ExcelProperty(value = "成立日期")
+    private Date establishmentDate;
+
+    /**
+     * 吊销日期
+     */
+    @ExcelProperty(value = "吊销日期")
+    private Date revocationDate;
+
+    /**
+     * 登记状态
+     */
+    @ExcelProperty(value = "登记状态")
+    private String registrationStatus;
+
+    /**
+     * 登记机关
+     */
+    @ExcelProperty(value = "登记机关")
+    private String registrationAuthority;
+
+    /**
+     * 经营范围
+     */
+    @ExcelProperty(value = "经营范围")
+    private String bussinessRange;
+
+    /**
+     * 营业执照路径
+     */
+    @ExcelProperty(value = "营业执照路径")
+    private String businessLicense;
+
+    /**
+     * 工商地址-详细地址
+     */
+    @ExcelProperty(value = "工商地址-详细地址")
+    private String businessAddress;
+
+
+}

+ 134 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierContactVo.java

@@ -0,0 +1,134 @@
+package org.dromara.customer.domain.vo;
+
+import org.dromara.customer.domain.SupplierContact;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 联系人视图对象 supplier_contact
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SupplierContact.class)
+public class SupplierContactVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    /**
+     * userId
+     */
+    private Long userId;
+    /**
+     * 供应商编号
+     */
+    @ExcelProperty(value = "供应商编号")
+    private String supplierNo;
+
+    /**
+     * 用户ID
+     */
+    @ExcelProperty(value = "用户ID")
+    private String userNo;
+
+    /**
+     * 供应商名称
+     */
+    private String supplierName;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 对接人编号
+     */
+    private Long abutmentNo;
+
+    /**
+     * 员工姓名
+     */
+    @ExcelProperty(value = "员工姓名")
+    private String userName;
+
+    /**
+     * 手机号
+     */
+    @ExcelProperty(value = "手机号")
+    private String phone;
+
+    /**
+     * 角色
+     */
+    @ExcelProperty(value = "角色")
+    private String roleNo;
+
+    /**
+     * A10标识号
+     */
+    private String abutment_no;
+
+    /**
+     * 部门
+     */
+    @ExcelProperty(value = "部门")
+    private String departmentNo;
+
+    /**
+     * 职位
+     */
+    @ExcelProperty(value = "职位")
+    private String position;
+
+    /**
+     * 主要联系人
+     */
+    @ExcelProperty(value = "主要联系人", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "is_primary_contack")
+    private String isPrimaryContact;
+
+    /**
+     * 允许登录供应商端
+     */
+    @ExcelProperty(value = "允许登录供应商端", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "is_register")
+    private String isRegister;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
+    private String status;
+
+
+    private String officePhone;
+
+    /**
+     * 联系地址
+     */
+    private String connAddr;
+
+    /**
+     * 用户描述
+     */
+    private String userDescribe;
+
+
+}

+ 113 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierContractVo.java

@@ -0,0 +1,113 @@
+package org.dromara.customer.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.customer.domain.SupplierContract;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 合同管理视图对象 supplier_contract
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SupplierContract.class)
+public class SupplierContractVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+    /**
+     * 供应商编号
+     */
+    @ExcelProperty(value = "供应商编号")
+    private String supplierNo;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplierId;
+
+    /**
+     * 供应商名称
+     */
+    private String supplierName;
+
+    /**
+     * 合同编号
+     */
+    private String contractNo;
+
+    /**
+     * 合同类型(年度合作/项目采购/其他合作)
+     */
+    private Long contractType;
+
+    /**
+     * 合同名称
+     */
+    private String contractName;
+
+
+    /**
+     * 合同金额
+     */
+    private Long contractAmount;
+
+
+    /**
+     * 合同生效时间
+     */
+    private Date contractStartTime;
+
+    /**
+     * 合同到期时间
+     */
+    private Date contractEndTime;
+
+
+    /**
+     * 上传时间
+     */
+    private Date createTime;
+
+    /**
+     * 合同状态(0草稿 1已生效 2已到期 3已终止 4已作废)
+     */
+    private Long contractStatus;
+
+
+    /**
+     * 合同附件存储地址(多个附件用分隔符区分)
+     */
+    private String contractAttachment;
+
+    /**
+     * 合同数
+     */
+    private String contractNum;
+
+    /**
+     * 有效期内的合同
+     */
+    private String validContract;
+    /**
+     * 失效合同
+     */
+    private String invalidContract;
+
+}

+ 448 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierInfoVo.java

@@ -0,0 +1,448 @@
+package org.dromara.customer.domain.vo;
+
+import org.dromara.common.translation.annotation.Translation;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.customer.domain.SupplierInfo;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Map;
+
+
+/**
+ * 供应商信息视图对象 supplier_info
+ *
+ * @author LionLi
+ * @date 2026-01-09
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SupplierInfo.class)
+public class SupplierInfoVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /**
+     * 供应商编号
+     */
+    @ExcelProperty(value = "供应商编号")
+    private String supplierNo;
+
+    /**
+     * 企业名称
+     */
+    @ExcelProperty(value = "企业名称")
+    private String enterpriseName;
+
+    /**
+     * 人员规模
+     */
+    @ExcelProperty(value = "人员规模")
+    private Long membershipSize;
+
+    /**
+     * 供应商类型
+     */
+    @ExcelProperty(value = "供应商类型")
+    private Long supplierType;
+
+    /**
+     * 合作类型
+     */
+    @ExcelProperty(value = "合作类型")
+    private Long cooperationType;
+
+    /**
+     * 固定电话
+     */
+    @ExcelProperty(value = "固定电话")
+    private String fixedPhone;
+
+    /**
+     * 传真
+     */
+    @ExcelProperty(value = "传真")
+    private String fax;
+
+    /**
+     * 网址
+     */
+    @ExcelProperty(value = "网址")
+    private String url;
+
+    /**
+     * 邮政编码
+     */
+    @ExcelProperty(value = "邮政编码")
+    private String postCode;
+
+    /**
+     * 邮箱
+     */
+    @ExcelProperty(value = "邮箱")
+    private String mailbox;
+
+    /**
+     * 办公地址-省
+     */
+    @ExcelProperty(value = "办公地址-省")
+    private String officeProvince;
+
+    /**
+     * 办公地址-市
+     */
+    @ExcelProperty(value = "办公地址-市")
+    private String officeCity;
+
+    /**
+     * 办公地址-区/县
+     */
+    @ExcelProperty(value = "办公地址-区/县")
+    private String officeCounty;
+
+    /**
+     * 办公详细地址
+     */
+    @ExcelProperty(value = "办公详细地址")
+    private String officeAddress;
+
+    /**
+     * 营业执照名称
+     */
+    @ExcelProperty(value = "营业执照名称")
+    private String businessName;
+
+    /**
+     * 统一社会信用代码
+     */
+    @ExcelProperty(value = "统一社会信用代码")
+    private String socialCreditCode;
+
+    /**
+     * 法人姓名
+     */
+    @ExcelProperty(value = "法人姓名")
+    private String legalPersonName;
+
+    /**
+     * 法人身份证号
+     */
+    @ExcelProperty(value = "法人身份证号")
+    private String legalPersonId;
+
+    /**
+     * 注册资本
+     */
+    @ExcelProperty(value = "注册资本")
+    private String registeredCapital;
+
+    /**
+     * 注册地址-省
+     */
+    @ExcelProperty(value = "注册地址-省")
+    private String businessProvince;
+
+    /**
+     * 注册地址-市
+     */
+    @ExcelProperty(value = "注册地址-市")
+    private String businessCity;
+
+    /**
+     * 注册地址-区/县
+     */
+    @ExcelProperty(value = "注册地址-区/县")
+    private String businessCounty;
+
+    /**
+     * 注册详细地址
+     */
+    @ExcelProperty(value = "注册详细地址")
+    private String businessAddress;
+
+    /**
+     * 营业执照图片路径
+     */
+    @ExcelProperty(value = "营业执照图片路径")
+    private String businessLicense;
+
+    /**
+     * 发票类型
+     */
+    @ExcelProperty(value = "发票类型")
+    private String invoiceType;
+
+    /**
+     * 发票抬头
+     */
+    @ExcelProperty(value = "发票抬头")
+    private String invoiceHeader;
+
+    /**
+     * 纳税人识别号
+     */
+    @ExcelProperty(value = "纳税人识别号")
+    private String taxpayerIdentifier;
+
+    /**
+     * 开户银行
+     */
+    @ExcelProperty(value = "开户银行")
+    private String depositaryBank;
+
+    /**
+     * 行号(可能是银行行号)
+     */
+    @ExcelProperty(value = "行号", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "可=能是银行行号")
+    private String rowNum;
+
+    /**
+     * 银行账号
+     */
+    @ExcelProperty(value = "银行账号")
+    private String bankAccounts;
+
+    /**
+     * 发票地址
+     */
+    @ExcelProperty(value = "发票地址")
+    private String invoiceAddress;
+
+    /**
+     * 发票电话
+     */
+    @ExcelProperty(value = "发票电话")
+    private String invoiceLandline;
+
+    /**
+     * 供货范围
+     */
+    @ExcelProperty(value = "供货范围")
+    private String scopeSupply;
+
+    /**
+     * 合作方式(0-公开招标, 1-邀请招标...)
+     */
+    @ExcelProperty(value = "合作方式", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=-公开招标,,1=-邀请招标...")
+    private Long cooperateWay;
+
+    /**
+     * 合作等级
+     */
+    @ExcelProperty(value = "合作等级")
+    private String cooperateLevel;
+
+    /**
+     * 合同到期时间
+     */
+    @ExcelProperty(value = "合同到期时间")
+    private Date contractEndTime;
+
+    /**
+     * 供应状态(0-暂停, 1-正常...)
+     */
+    @ExcelProperty(value = "供应状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=-暂停,,1=-正常...")
+    private Long supplyStatus;
+
+    /**
+     * 供应评分
+     */
+    @ExcelProperty(value = "供应评分")
+    private Long supplyScore;
+
+    /**
+     * 年销售额
+     */
+    @ExcelProperty(value = "年销售额")
+    private Long yearSales;
+
+    /**
+     * 供应商联系人姓名
+     */
+    @ExcelProperty(value = "供应商联系人姓名")
+    private String supplierName;
+
+    /**
+     * 供应商联系人电话
+     */
+    @ExcelProperty(value = "供应商联系人电话")
+    private String supplierPhone;
+
+    /**
+     * 供应商登录密码(已加密)
+     */
+    @ExcelProperty(value = "供应商登录密码", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "已=加密")
+    private String supplierPassword;
+
+    /**
+     * 经营品类
+     */
+    @ExcelProperty(value = "经营品类")
+    private String operatingCategory;
+
+    /**
+     * 经营品牌
+     */
+    @ExcelProperty(value = "经营品牌")
+    private String operatingBrand;
+
+    /**
+     * 其他客户
+     */
+    @ExcelProperty(value = "其他客户")
+    private String otherCustomers;
+
+    /**
+     * 简称
+     */
+    @ExcelProperty(value = "简称")
+    private String shortName;
+
+    /**
+     * 所属行业
+     */
+    @ExcelProperty(value = "所属行业")
+    private Long industrCategory;
+
+    /**
+     * 类型(可能与supplier_type重复或细分)
+     */
+    @ExcelProperty(value = "类型", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "可=能与supplier_type重复或细分")
+    private String type;
+
+    /**
+     * 所属公司
+     */
+    @ExcelProperty(value = "所属公司")
+    private Long ownedCompany;
+
+    /**
+     * 推送状态(0-未推送, 1-已推送...)
+     */
+    @ExcelProperty(value = "推送状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=-未推送,,1=-已推送...")
+    private Long pushStatus;
+
+
+    /**
+     * 有效期开始时间
+     */
+    @ExcelProperty(value = "有效期开始时间")
+    private Date validityFromDate;
+
+    /**
+     * 有效期结束时间
+     */
+    @ExcelProperty(value = "有效期结束时间")
+    private Date validityToDate;
+
+    /**
+     * 行号(可能是内部排序或备用字段)
+     */
+    @ExcelProperty(value = "行号", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "可=能是内部排序或备用字段")
+    private Long rowNo;
+
+    /**
+     * 法人身份证图片路径
+     */
+    @ExcelProperty(value = "法人身份证图片路径")
+    private String personImage;
+
+    /**
+     * 法人身份证图片路径Url
+     */
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "personImage")
+    private String personImageUrl;
+    /**
+     * 对接次数
+     */
+    @ExcelProperty(value = "对接次数")
+    private Long abutmentNo;
+
+    /**
+     * 是否合作(1-是, 0-否)
+     */
+    @ExcelProperty(value = "是否合作", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=-是,,0=-否")
+    private Long cooperative;
+
+    /**
+     * 产品经理
+     */
+    private String productManager;
+
+    /**
+     * 采购员
+     */
+    private String buyer;
+
+    /**
+     * 供应地区(省)
+     */
+    private String province;
+
+    /**
+     * 供应地区(市)
+     */
+    private String city;
+
+    private Map<String,Object> otherCustomersMap;
+
+
+    private Date createTime;
+
+    private Long listedNum = 0L; // 上架产品数(默认值0)
+
+    private String brandName;
+
+    private String enterpriseScaleName;
+
+
+    private String SupplierTypeName;
+
+    /**
+     * 登记状态
+     */
+    private String registrationStatus;
+
+    /**
+     * 登记机关
+     */
+    private String registrationAuthority;
+
+    /**
+     * 成立日期
+     */
+    private Date establishmentDate;
+
+    /**
+     * 实缴资本
+     */
+    private String paidInCapital;
+
+
+
+
+}

+ 251 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierInformationVo.java

@@ -0,0 +1,251 @@
+package org.dromara.customer.domain.vo;
+
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.customer.domain.SupplierInfo;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Map;
+
+
+/**
+ * 供应商信息视图对象 supplier_info
+ *
+ * @author LionLi
+ * @date 2026-01-09
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SupplierInfo.class)
+public class SupplierInformationVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /**
+     * 供应商编号
+     */
+    @ExcelProperty(value = "供应商编号")
+    private String supplierNo;
+
+    /**
+     * 企业名称
+     */
+    @ExcelProperty(value = "企业名称")
+    private String enterpriseName;
+
+    /**
+     * 人员规模
+     */
+    @ExcelProperty(value = "人员规模")
+    private Long membershipSize;
+
+    /**
+     * 供应商类型
+     */
+    @ExcelProperty(value = "供应商类型")
+    private Long supplierType;
+
+    /**
+     * 合作类型
+     */
+    @ExcelProperty(value = "合作类型")
+    private Long cooperationType;
+
+    /**
+     * 工商名称
+     */
+    private String businessName;
+
+    /**
+     * 企业简称
+     */
+    private String shortName;
+
+    /**
+     * 办公地址-省
+     */
+    private String officeProvince;
+
+    /**
+     * 办公地址-市
+     */
+    private String officeCity;
+
+    /**
+     * 办公地址-区/县
+     */
+    private String officeCounty;
+
+    /**
+     * 办公详细地址
+     */
+    private String officeAddress;
+
+    /**
+     * 开始时间
+     */
+    @ExcelProperty(value = "有效期开始时间")
+    private Date validityFromDate;
+
+    /**
+     * 结束时间
+     */
+    @ExcelProperty(value = "有效期结束时间")
+    private Date validityToDate;
+
+    /**
+     * 固定电话
+     */
+    @ExcelProperty(value = "固定电话")
+    private String fixedPhone;
+
+    /**
+     * 传真
+     */
+    @ExcelProperty(value = "传真")
+    private String fax;
+
+    /**
+     * 邮箱
+     */
+    @ExcelProperty(value = "邮箱")
+    private String mailbox;
+
+    /**
+     * 邮政编码
+     */
+    @ExcelProperty(value = "邮政编码")
+    private String postCode;
+
+    /**
+     * 网址
+     */
+    @ExcelProperty(value = "网址")
+    private String url;
+
+
+
+    /**
+     * 供货范围
+     */
+    @ExcelProperty(value = "供货范围")
+    private String scopeSupply;
+
+    /**
+     * 合作方式(0-公开招标, 1-邀请招标...)
+     */
+    @ExcelProperty(value = "合作方式", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=-公开招标,,1=-邀请招标...")
+    private Long cooperateWay;
+
+    /**
+     * 合作等级
+     */
+    @ExcelProperty(value = "合作等级")
+    private String cooperateLevel;
+
+    /**
+     * 合同到期时间
+     */
+    @ExcelProperty(value = "合同到期时间")
+    private Date contractEndTime;
+
+    /**
+     * 供应状态(0-暂停, 1-正常...)
+     */
+    @ExcelProperty(value = "供应状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=-暂停,,1=-正常...")
+    private String supplyStatus;
+
+
+
+    /**
+     * 经营品类
+     */
+    @ExcelProperty(value = "经营品类")
+    private String operatingCategory;
+
+    /**
+     * 经营品牌
+     */
+    @ExcelProperty(value = "经营品牌")
+    private String operatingBrand;
+
+
+    /**
+     * 所属行业
+     */
+    @ExcelProperty(value = "所属行业")
+    private Long industrCategory;
+
+
+    /**
+     * 所属公司
+     */
+    @ExcelProperty(value = "所属公司")
+    private Long ownedCompany;
+
+    /**
+     * 推送状态(0-未推送, 1-已推送...)
+     */
+    @ExcelProperty(value = "推送状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=-未推送,,1=-已推送...")
+    private Long pushStatus;
+
+
+
+
+    /**
+     * 是否合作(1-是, 0-否)
+     */
+    @ExcelProperty(value = "是否合作", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=-是,,0=-否")
+    private Long cooperative;
+
+
+    /**
+     * 产品经理
+     */
+    private String productManager;
+
+    /**
+     * 采购员
+     */
+    private String buyer;
+
+    /**
+     * 供应地区(省)
+     */
+    private String province;
+
+    /**
+     * 供应地区(市)
+     */
+    private String city;
+
+    private Map<String,Object> otherCustomersMap;
+
+    private Date createTime;
+
+    /**
+     * 上架产品数
+     */
+    private Long listedNum = 0L;
+
+
+}

+ 56 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierProcurementVo.java

@@ -0,0 +1,56 @@
+package org.dromara.customer.domain.vo;
+
+import org.dromara.customer.domain.SupplierProcurement;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 供应商采购结算配置视图对象 supplier_procurement
+ *
+ * @author LionLi
+ * @date 2026-01-14
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SupplierProcurement.class)
+public class SupplierProcurementVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 产品经理
+     */
+    @ExcelProperty(value = "产品经理")
+    private String productManager;
+
+    /**
+     * 供应商编号
+     */
+    @ExcelProperty(value = "供应商编号")
+    private String supplierNo;
+
+    /**
+     * 供应商ID
+     */
+    @ExcelProperty(value = "供应商ID")
+    private Long supplierId;
+
+    /**
+     * 采购员
+     */
+    @ExcelProperty(value = "采购员")
+    private String purchaser;
+
+
+}

+ 87 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplierapproveVo.java

@@ -0,0 +1,87 @@
+package org.dromara.customer.domain.vo;
+
+import org.dromara.common.translation.annotation.Translation;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.customer.domain.Supplierapprove;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 供应商审核视图对象 supplier_info
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = Supplierapprove.class)
+public class SupplierapproveVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 供应商编号
+     */
+    @ExcelProperty(value = "供应商编号")
+    private String supplierNo;
+
+    /**
+     * 供应商名称
+     */
+    @ExcelProperty(value = "供应商名称")
+    private String enterpriseName;
+
+    /**
+     * 企业规模
+     */
+    @ExcelProperty(value = "企业规模")
+    private Long membershipSize;
+
+    /**
+     * 供应商类型
+     */
+    @ExcelProperty(value = "供应商类型", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "supplier_type")
+    private Long supplierType;
+
+    /**
+     * 经营类目
+     */
+    @ExcelProperty(value = "经营类目")
+    private String operatingCategory;
+
+    /**
+     * 供应品牌
+     */
+    @ExcelProperty(value = "供应品牌")
+    private String operatingBrand;
+
+    /**
+     * 是否合作(1-是, 0-否)status
+     */
+    @ExcelProperty(value = "是否合作", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=-是,,0=-否")
+    private Long cooperative;
+
+    /**
+     * 状态
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "supplier_approve_status")
+    private String status;
+
+
+}

+ 78 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/SupplyAreaVo.java

@@ -0,0 +1,78 @@
+package org.dromara.customer.domain.vo;
+
+import org.dromara.customer.domain.SupplyArea;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 供应区域视图对象 supply_area
+ *
+ * @author LJY
+ * @date 2026-01-14
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SupplyArea.class)
+public class SupplyAreaVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    /**
+     * 供应商编号(关联供应商主表)
+     */
+    @ExcelProperty(value = "供应商编号", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "关=联供应商主表")
+    private String supplyNo;
+
+    /**
+     * 供应商ID(关联供应商主表主键)
+     */
+    @ExcelProperty(value = "供应商ID", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "关=联供应商主表主键")
+    private Long supplierId;
+
+    /**
+     * 区域编码(如国标行政区域编码/自定义区域编码)
+     */
+    @ExcelProperty(value = "区域编码", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "如=国标行政区域编码/自定义区域编码")
+    private String areaCode;
+
+    /**
+     * 区域名称(如北京市/江苏省南京市/天河区)
+     */
+    @ExcelProperty(value = "区域名称", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "如=北京市/江苏省南京市/天河区")
+    private String areaName;
+
+    /**
+     * 上级区域编码(如省级编码对应市级的上级编码,顶级区域为0)
+     */
+    @ExcelProperty(value = "上级区域编码", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "如=省级编码对应市级的上级编码,顶级区域为0")
+    private String parentCode;
+
+    /**
+     * 区域层级(1省/直辖市 2市 3区县 4街道/镇)
+     */
+    @ExcelProperty(value = "区域层级", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=省/直辖市,2=市,3=区县,4=街道/镇")
+    private String level;
+
+    private List<SupplyAreaVo> areaList;
+
+
+}

+ 28 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/dubbo/RemoteCustomerDeptServiceImpl.java

@@ -0,0 +1,28 @@
+package org.dromara.customer.dubbo;
+
+import cn.hutool.core.bean.BeanUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.customer.api.RemoteCustomerDeptService;
+import org.dromara.customer.api.domain.vo.RemoteCustomerDeptVo;
+import org.dromara.customer.domain.vo.CustomerDeptVo;
+import org.dromara.customer.service.ICustomerDeptService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+@DubboService
+public class RemoteCustomerDeptServiceImpl implements RemoteCustomerDeptService {
+
+    private final ICustomerDeptService customerDeptService;
+
+    @Override
+    public List<RemoteCustomerDeptVo> selectCustomerDeptListByCustomerId(Long customerId) {
+        List<CustomerDeptVo> customerDeptVos = customerDeptService.selectCustomerDeptListByCustomerId(customerId);
+        return BeanUtil.copyToList(customerDeptVos, RemoteCustomerDeptVo.class);
+    }
+}

+ 25 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/dubbo/RemoteSupplierContractServiceImpl.java

@@ -0,0 +1,25 @@
+package org.dromara.customer.dubbo;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.customer.api.RemoteSupplierContractService;
+import org.dromara.customer.service.ISupplierContractService;
+import org.springframework.stereotype.Service;
+
+/**
+ * author
+ * 时间:2026/1/23,9:24
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+@DubboService
+public class RemoteSupplierContractServiceImpl implements RemoteSupplierContractService {
+
+    private final ISupplierContractService supplierContractService;
+    @Override
+    public int updateExpiredContractStatus() {
+        return supplierContractService.updateExpiredContractStatus();
+    }
+}

+ 25 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/dubbo/RemoteSupplierInfoServiceImpl.java

@@ -0,0 +1,25 @@
+package org.dromara.customer.dubbo;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.customer.api.RemoteSupplierInfoService;
+import org.dromara.customer.service.ISupplierInfoService;
+import org.springframework.stereotype.Service;
+
+/**
+ * author
+ * 时间:2026/1/23,9:42
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+@DubboService
+public class RemoteSupplierInfoServiceImpl implements RemoteSupplierInfoService {
+
+    private final ISupplierInfoService supplierInfoService;
+    @Override
+    public int updateIsDisable() {
+        return supplierInfoService.updateIsDisable();
+    }
+}

+ 31 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/dubbo/RemoteSupplierProcurementServiceImpl.java

@@ -0,0 +1,31 @@
+package org.dromara.customer.dubbo;
+
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.customer.api.RemoteSupplierProcurementService;
+import org.dromara.customer.service.ISupplierProcurementService;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * author
+ * 时间:2026/1/14,16:30
+ */
+@RequiredArgsConstructor
+@Service
+@DubboService
+public class RemoteSupplierProcurementServiceImpl  implements RemoteSupplierProcurementService {
+
+    private final ISupplierProcurementService supplierProcurementService;
+
+    @Override
+    public Map<String,Long> selectSupplierProcurementIds(Long id){
+        Map<String,Long> supplierIds =supplierProcurementService.selectSupplierId(id);
+
+        return supplierIds;
+    }
+
+
+}

+ 51 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/enums/ContractSupplierStatusEnum.java

@@ -0,0 +1,51 @@
+package org.dromara.customer.enums;
+
+/**
+ * author
+ * 时间:2026/1/19,0:22
+ */
+public enum ContractSupplierStatusEnum {
+    // 枚举项:状态码, 展示文案
+    UNEFFECTIVE(0, "未生效"),
+    EFFECTIVE(1, "已生效"),
+    EXPIRED(2, "已过期");
+
+    // 状态码
+    private final Integer code;
+    // 前端/业务展示的文案
+    private final String displayName;
+
+    // 修正构造方法名称(必须和枚举类名一致)
+    ContractSupplierStatusEnum(Integer code, String displayName) {
+        this.code = code;
+        this.displayName = displayName;
+    }
+
+    /**
+     * 核心方法:根据状态码获取展示文案
+     * @param code 数据库中的数字值(0/1/2)
+     * @return 展示文案,无匹配时返回"未知状态"
+     */
+    public static String getDisplayNameByCode(Integer code) {
+        // 空值校验,避免空指针
+        if (code == null) {
+            return "未知状态";
+        }
+        // 遍历枚举匹配状态码(修正枚举类型为当前类)
+        for (ContractSupplierStatusEnum status : values()) {
+            if (status.code.equals(code)) {
+                return status.displayName;
+            }
+        }
+        return "未知状态";
+    }
+
+    // getter方法(便于单独获取码值/文案)
+    public Integer getCode() {
+        return code;
+    }
+
+    public String getDisplayName() {
+        return displayName;
+    }
+}

+ 50 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/enums/SupplierCooperationStatusEnum.java

@@ -0,0 +1,50 @@
+package org.dromara.customer.enums;
+
+/**
+ * 供应商合作状态枚举
+ * 0 = 未合作,1 = 已合作
+ */
+public enum SupplierCooperationStatusEnum {
+    // 枚举项:状态码, 展示文案
+    UNCOOPERATIVE(0, "未合作"),
+    COOPERATIVE(1, "已合作");
+
+    // 状态码
+    private final Integer code;
+    // 前端/业务展示的文案
+    private final String displayName;
+
+    // 构造方法
+    SupplierCooperationStatusEnum(Integer code, String displayName) {
+        this.code = code;
+        this.displayName = displayName;
+    }
+
+    /**
+     * 核心方法:根据状态码获取展示文案
+     * @param code 数据库中的数字值(0/1)
+     * @return 展示文案,无匹配时返回"未知状态"
+     */
+    public static String getDisplayNameByCode(Integer code) {
+        // 空值校验,避免空指针
+        if (code == null) {
+            return "未知状态";
+        }
+        // 遍历枚举匹配状态码
+        for (SupplierCooperationStatusEnum status : values()) {
+            if (status.code.equals(code)) {
+                return status.displayName;
+            }
+        }
+        return "未知状态";
+    }
+
+    // getter方法(便于单独获取码值/文案)
+    public Integer getCode() {
+        return code;
+    }
+
+    public String getDisplayName() {
+        return displayName;
+    }
+}

+ 66 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/enums/SupplierStatusEnum.java

@@ -0,0 +1,66 @@
+package org.dromara.customer.enums;
+
+/**
+ * 供应商状态枚举
+ * 解决数据库值与展示文案不一致、多值同文案的映射问题
+ */
+public enum SupplierStatusEnum {
+    // 枚举项:数据库值, 原始状态名, 展示文案
+    PENDING_REVIEW(0L, "待审核", "待审核"),
+    OFFICIAL_SUPPLIER(1L, "正式供应商", "生效"),
+    DISABLED(2L, "停用", "停止合作"),
+    REVIEW_FAILED(3L, "审核未通过", "审核不通过"),
+    REVIEW_UPDATED(4L,"待修改审核","待修改审核");
+
+    // 数据库存储的数字值
+    private final Long code;
+    // 原始状态名称(保留,便于后续追溯)
+    private final String originalName;
+    // 前端展示的文案
+    private final String displayName;
+
+    // 构造方法
+    SupplierStatusEnum(Long code, String originalName, String displayName) {
+        this.code = code;
+        this.originalName = originalName;
+        this.displayName = displayName;
+    }
+
+    /**
+     * 根据数据库code获取展示文案(核心方法)
+     * @param code 数据库中的数字值(0/1/2/3)
+     * @return 展示文案,无匹配时返回"未知状态"
+     */
+    public static String getDisplayNameByCode(Long code) {
+        // 遍历枚举项,匹配code后返回对应的展示文案
+        for (SupplierStatusEnum status : values()) {
+            if (status.code.equals(code)) {
+                return status.displayName;
+            }
+        }
+        return "未知状态";
+    }
+
+    // 可选:获取原始状态名(如需追溯)
+    public static String getOriginalNameByCode(Long code) {
+        for (SupplierStatusEnum status : values()) {
+            if (status.code.equals(code)) {
+                return status.originalName;
+            }
+        }
+        return "未知状态";
+    }
+
+    // getter方法
+    public Long getCode() {
+        return code;
+    }
+
+    public String getOriginalName() {
+        return originalName;
+    }
+
+    public String getDisplayName() {
+        return displayName;
+    }
+}

+ 15 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/ContractSupplyMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.customer.mapper;
+
+import org.dromara.customer.domain.ContractSupply;
+import org.dromara.customer.domain.vo.ContractSupplyVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 协议供货Mapper接口
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+public interface ContractSupplyMapper extends BaseMapperPlus<ContractSupply, ContractSupplyVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierAddressMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.customer.mapper;
+
+import org.dromara.customer.domain.SupplierAddress;
+import org.dromara.customer.domain.vo.SupplierAddressVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 供应商地址Mapper接口
+ *
+ * @author LJY
+ * @date 2026-01-19
+ */
+public interface SupplierAddressMapper extends BaseMapperPlus<SupplierAddress, SupplierAddressVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierAuthorizeMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.customer.mapper;
+
+import org.dromara.customer.domain.SupplierAuthorize;
+import org.dromara.customer.domain.vo.SupplierAuthorizeVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 供应能力查询Mapper接口
+ *
+ * @author LJY
+ * @date 2026-01-15
+ */
+public interface SupplierAuthorizeMapper extends BaseMapperPlus<SupplierAuthorize, SupplierAuthorizeVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierBankMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.customer.mapper;
+
+import org.dromara.customer.domain.SupplierBank;
+import org.dromara.customer.domain.vo.SupplierBankVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 供应商银行账户Mapper接口
+ *
+ * @author LJY
+ * @date 2026-01-15
+ */
+public interface SupplierBankMapper extends BaseMapperPlus<SupplierBank, SupplierBankVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierBusinessInfoMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.customer.mapper;
+
+import org.dromara.customer.domain.SupplierBusinessInfo;
+import org.dromara.customer.domain.vo.SupplierBusinessInfoVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 供应商工商注册信息Mapper接口
+ *
+ * @author LionLi
+ * @date 2026-01-22
+ */
+public interface SupplierBusinessInfoMapper extends BaseMapperPlus<SupplierBusinessInfo, SupplierBusinessInfoVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierContactMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.customer.mapper;
+
+import org.dromara.customer.domain.SupplierContact;
+import org.dromara.customer.domain.vo.SupplierContactVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 联系人Mapper接口
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+public interface SupplierContactMapper extends BaseMapperPlus<SupplierContact, SupplierContactVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierContractMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.customer.mapper;
+
+import org.dromara.customer.domain.SupplierContract;
+import org.dromara.customer.domain.vo.SupplierContractVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 合同管理Mapper接口
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+public interface SupplierContractMapper extends BaseMapperPlus<SupplierContract, SupplierContractVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierInfoMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.customer.mapper;
+
+import org.dromara.customer.domain.SupplierInfo;
+import org.dromara.customer.domain.vo.SupplierInfoVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 供应商信息Mapper接口
+ *
+ * @author LionLi
+ * @date 2026-01-09
+ */
+public interface SupplierInfoMapper extends BaseMapperPlus<SupplierInfo, SupplierInfoVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierProcurementMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.customer.mapper;
+
+import org.dromara.customer.domain.SupplierProcurement;
+import org.dromara.customer.domain.vo.SupplierProcurementVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 供应商采购结算配置Mapper接口
+ *
+ * @author LionLi
+ * @date 2026-01-14
+ */
+public interface SupplierProcurementMapper extends BaseMapperPlus<SupplierProcurement, SupplierProcurementVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplierapproveMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.customer.mapper;
+
+import org.dromara.customer.domain.Supplierapprove;
+import org.dromara.customer.domain.vo.SupplierapproveVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 供应商审核Mapper接口
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+public interface SupplierapproveMapper extends BaseMapperPlus<Supplierapprove, SupplierapproveVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/mapper/SupplyAreaMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.customer.mapper;
+
+import org.dromara.customer.domain.SupplyArea;
+import org.dromara.customer.domain.vo.SupplyAreaVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 供应区域Mapper接口
+ *
+ * @author LJY
+ * @date 2026-01-14
+ */
+public interface SupplyAreaMapper extends BaseMapperPlus<SupplyArea, SupplyAreaVo> {
+
+}

+ 72 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/IContractSupplyService.java

@@ -0,0 +1,72 @@
+package org.dromara.customer.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.customer.domain.ContractSupply;
+import org.dromara.customer.domain.vo.ContractSupplyVo;
+import org.dromara.customer.domain.bo.ContractSupplyBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 协议供货Service接口
+ *
+ * @author LJY
+ * @date 2026-01-13
+ */
+public interface IContractSupplyService extends IService<ContractSupply>{
+
+    /**
+     * 查询协议供货
+     *
+     * @param id 主键
+     * @return 协议供货
+     */
+    ContractSupplyVo queryById(Long id);
+
+    /**
+     * 分页查询协议供货列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 协议供货分页列表
+     */
+    TableDataInfo<ContractSupplyVo> queryPageList(ContractSupplyBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的协议供货列表
+     *
+     * @param bo 查询条件
+     * @return 协议供货列表
+     */
+    List<ContractSupplyVo> queryList(ContractSupplyBo bo);
+
+    /**
+     * 新增协议供货
+     *
+     * @param bo 协议供货
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ContractSupplyBo bo);
+
+    /**
+     * 修改协议供货
+     *
+     * @param bo 协议供货
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ContractSupplyBo bo);
+
+    /**
+     * 校验并批量删除协议供货信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    int aprprove(ContractSupplyBo bo);
+}

+ 3 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/ICustomerDeptService.java

@@ -1,6 +1,7 @@
 package org.dromara.customer.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.customer.api.domain.vo.RemoteCustomerDeptVo;
 import org.dromara.customer.domain.CustomerDept;
 import org.dromara.customer.domain.vo.CustomerDeptTreeVo;
 import org.dromara.customer.domain.vo.CustomerDeptVo;
@@ -51,6 +52,8 @@ public interface ICustomerDeptService extends IService<CustomerDept> {
      */
     Boolean updateByBo(CustomerDeptBo bo);
 
+    List<CustomerDeptVo> selectCustomerDeptListByCustomerId(Long customerId);
+
     /**
      * 校验并批量删除客户部门信息信息
      *

+ 72 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/ISupplierAddressService.java

@@ -0,0 +1,72 @@
+package org.dromara.customer.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.customer.domain.SupplierAddress;
+import org.dromara.customer.domain.vo.SupplierAddressVo;
+import org.dromara.customer.domain.bo.SupplierAddressBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 供应商地址Service接口
+ *
+ * @author LJY
+ * @date 2026-01-19
+ */
+public interface ISupplierAddressService extends IService<SupplierAddress>{
+
+    /**
+     * 查询供应商地址
+     *
+     * @param id 主键
+     * @return 供应商地址
+     */
+    SupplierAddressVo queryById(Long id);
+
+    /**
+     * 分页查询供应商地址列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 供应商地址分页列表
+     */
+    TableDataInfo<SupplierAddressVo> queryPageList(SupplierAddressBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的供应商地址列表
+     *
+     * @param bo 查询条件
+     * @return 供应商地址列表
+     */
+    List<SupplierAddressVo> queryList(SupplierAddressBo bo);
+
+    /**
+     * 新增供应商地址
+     *
+     * @param bo 供应商地址
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(SupplierAddressBo bo);
+
+    /**
+     * 修改供应商地址
+     *
+     * @param bo 供应商地址
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(SupplierAddressBo bo);
+
+    /**
+     * 校验并批量删除供应商地址信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    List<SupplierAddressVo> getSupplierAddressById(SupplierAddressBo bo);
+}

+ 75 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/ISupplierAuthorizeService.java

@@ -0,0 +1,75 @@
+package org.dromara.customer.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.customer.domain.SupplierAuthorize;
+import org.dromara.customer.domain.vo.SupplierAuthorizeVo;
+import org.dromara.customer.domain.bo.SupplierAuthorizeBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.customer.domain.vo.SupplyAreaVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 供应能力查询Service接口
+ *
+ * @author LJY
+ * @date 2026-01-15
+ */
+public interface ISupplierAuthorizeService extends IService<SupplierAuthorize>{
+
+    /**
+     * 查询供应能力查询
+     *
+     * @param id 主键
+     * @return 供应能力查询
+     */
+    SupplierAuthorizeVo queryById(Long id);
+
+    /**
+     * 分页查询供应能力查询列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 供应能力查询分页列表
+     */
+    TableDataInfo<SupplierAuthorizeVo> queryPageList(SupplierAuthorizeBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的供应能力查询列表
+     *
+     * @param bo 查询条件
+     * @return 供应能力查询列表
+     */
+    List<SupplierAuthorizeVo> queryList(SupplierAuthorizeBo bo);
+
+    /**
+     * 新增供应能力查询
+     *
+     * @param bo 供应能力查询
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(SupplierAuthorizeBo bo);
+
+    /**
+     * 修改供应能力查询
+     *
+     * @param bo 供应能力查询
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(SupplierAuthorizeBo bo);
+
+    /**
+     * 校验并批量删除供应能力查询信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    List<SupplierAuthorizeVo> getAuthorizeDetailList(Long supplierId);
+
+    TableDataInfo<SupplierAuthorizeVo> getSupplyCapacityList(SupplierAuthorizeBo bo, PageQuery pageQuery);
+}

Some files were not shown because too many files changed in this diff