Browse Source

feat(customer): 实现客户部门编号生成和销售信息展示功能

- 集成SequenceUtils为部门编号生成唯一序列号
- 修改CustomerInfo实体类中客户类型和等级字段为Long类型
- 更新CustomerInfoVo和CustomerInfoBo中客户类型和等级字段类型
- 添加销售信息展示字段包括销售人员、服务人员和所属部门
- 集成远程服务获取公司、员工和部门名称信息
- 实现客户信息列表中销售信息的查询和回填功能
- 为企业规模和行业分类实体添加编码字段
- 为发票类型和公司信息添加编码生成功能
- 更新数据权限过滤器配置,添加多个业务表的忽略配置
- 添加银行信息管理功能,包括实体、控制器和数据访问层
- 实现公司状态修改功能和银行信息状态管理功能
hurx 19 hours ago
parent
commit
0ab15c547d
100 changed files with 6831 additions and 42 deletions
  1. 9 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteComCompanyService.java
  2. 9 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteComDeptService.java
  3. 8 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteComPostService.java
  4. 10 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteComStaffService.java
  5. 11 2
      ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlatformDataScopeInterceptor.java
  6. 2 2
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/CustomerInfo.java
  7. 2 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/EnterpriseScale.java
  8. 2 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/IndustryCategory.java
  9. 2 2
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/CustomerInfoBo.java
  10. 3 1
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/EnterpriseScaleBo.java
  11. 3 1
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/IndustryCategoryBo.java
  12. 2 2
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/CustomerInfoVo.java
  13. 6 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/CustomerSalesInfoVo.java
  14. 2 1
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/EnterpriseScaleVo.java
  15. 2 1
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/IndustryCategoryVo.java
  16. 6 0
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/CustomerDeptServiceImpl.java
  17. 100 17
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/CustomerInfoServiceImpl.java
  18. 9 4
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/EnterpriseScaleServiceImpl.java
  19. 9 4
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/IndustryCategoryServiceImpl.java
  20. 118 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/ComBankController.java
  21. 116 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/ComCompanyController.java
  22. 116 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/ComCustomerLevelController.java
  23. 116 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/ComCustomerTypeController.java
  24. 116 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/ComDeptController.java
  25. 116 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/ComPostController.java
  26. 116 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/ComStaffController.java
  27. 116 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/CreditLevelController.java
  28. 116 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SettlementLevelController.java
  29. 116 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SettlementMethodController.java
  30. 11 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysCompanyController.java
  31. 82 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ComBank.java
  32. 172 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ComCompany.java
  33. 67 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ComCustomerLevel.java
  34. 67 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ComCustomerType.java
  35. 114 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ComDept.java
  36. 62 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ComPost.java
  37. 104 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ComStaff.java
  38. 67 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CreditLevel.java
  39. 62 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SettlementLevel.java
  40. 62 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SettlementMethod.java
  41. 75 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ComBankBo.java
  42. 169 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ComCompanyBo.java
  43. 60 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ComCustomerLevelBo.java
  44. 60 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ComCustomerTypeBo.java
  45. 107 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ComDeptBo.java
  46. 55 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ComPostBo.java
  47. 97 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ComStaffBo.java
  48. 59 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/CreditLevelBo.java
  49. 55 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SettlementLevelBo.java
  50. 55 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SettlementMethodBo.java
  51. 92 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ComBankVo.java
  52. 199 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ComCompanyVo.java
  53. 76 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ComCustomerLevelVo.java
  54. 77 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ComCustomerTypeVo.java
  55. 131 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ComDeptVo.java
  56. 69 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ComPostVo.java
  57. 126 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ComStaffVo.java
  58. 76 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CreditLevelVo.java
  59. 69 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SettlementLevelVo.java
  60. 70 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SettlementMethodVo.java
  61. 24 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteComCompanyServiceImpl.java
  62. 23 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteComDeptServiceImpl.java
  63. 23 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteComPostServiceImpl.java
  64. 23 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteComStaffServiceImpl.java
  65. 15 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ComBankMapper.java
  66. 15 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ComCompanyMapper.java
  67. 15 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ComCustomerLevelMapper.java
  68. 15 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ComCustomerTypeMapper.java
  69. 15 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ComDeptMapper.java
  70. 15 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ComPostMapper.java
  71. 15 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ComStaffMapper.java
  72. 15 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/CreditLevelMapper.java
  73. 15 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SettlementLevelMapper.java
  74. 15 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SettlementMethodMapper.java
  75. 76 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IComBankService.java
  76. 80 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IComCompanyService.java
  77. 76 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IComCustomerLevelService.java
  78. 76 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IComCustomerTypeService.java
  79. 70 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IComDeptService.java
  80. 80 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IComPostService.java
  81. 80 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IComStaffService.java
  82. 73 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ICreditLevelService.java
  83. 74 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISettlementLevelService.java
  84. 73 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISettlementMethodService.java
  85. 7 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysCompanyService.java
  86. 164 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ComBankServiceImpl.java
  87. 212 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ComCompanyServiceImpl.java
  88. 159 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ComCustomerLevelServiceImpl.java
  89. 159 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ComCustomerTypeServiceImpl.java
  90. 213 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ComDeptServiceImpl.java
  91. 178 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ComPostServiceImpl.java
  92. 209 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ComStaffServiceImpl.java
  93. 159 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/CreditLevelServiceImpl.java
  94. 8 4
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/InvoiceTypeServiceImpl.java
  95. 157 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SettlementLevelServiceImpl.java
  96. 158 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SettlementMethodServiceImpl.java
  97. 20 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCompanyServiceImpl.java
  98. 7 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ComBankMapper.xml
  99. 7 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ComCompanyMapper.xml
  100. 7 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ComCustomerLevelMapper.xml

+ 9 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteComCompanyService.java

@@ -0,0 +1,9 @@
+package org.dromara.system.api;
+
+import java.util.Map;
+import java.util.Set;
+
+public interface RemoteComCompanyService {
+
+    Map<Long, String> selectCompanyNameByIds(Set<Long> ids);
+}

+ 9 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteComDeptService.java

@@ -0,0 +1,9 @@
+package org.dromara.system.api;
+
+import java.util.Map;
+import java.util.Set;
+
+public interface RemoteComDeptService {
+
+    Map<Long, String> selectDeptNameByIds(Set<Long> ids);
+}

+ 8 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteComPostService.java

@@ -0,0 +1,8 @@
+package org.dromara.system.api;
+
+import java.util.Map;
+import java.util.Set;
+
+public interface RemoteComPostService {
+    Map<Long, String> selectPostNameByIds(Set<Long> ids);
+}

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

@@ -0,0 +1,10 @@
+package org.dromara.system.api;
+
+import java.util.Map;
+import java.util.Set;
+
+public interface RemoteComStaffService {
+
+    Map<Long, String> selectStaffNameByIds(Set<Long> ids);
+
+}

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

@@ -51,16 +51,25 @@ public class PlatformDataScopeInterceptor implements Interceptor {
         "qrtz_",
         "sys_oper_log",
         "sys_logininfor",
-        "qrtz_",
         "maintenance_server_item",
         "maintenance_server_time",
         "maintenance_type",
         "customer_info_tag",
         "invoice_type",
-        "sys_company"
+        "com_company",
+        "com_bank",
+        "settlement_level",
+        "settlement_method",
+        "credit_level",
+        "com_customer_level",
+        "com_customer_type",
+        "com_dept",
+        "com_post",
+        "com_staff"
         // 注意:前缀匹配需特殊处理(如 qrtz_),见 isIgnoreTable 方法
     ));
 
+
     @Override
     public Object intercept(Invocation invocation) throws Throwable {
         StatementHandler statementHandler = (StatementHandler) invocation.getTarget();

+ 2 - 2
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/CustomerInfo.java

@@ -74,7 +74,7 @@ public class CustomerInfo extends TenantEntity {
     /**
      * 客户类别
      */
-    private String customerTypeId;
+    private Long customerTypeId;
 
     /**
      * 行业类别
@@ -84,7 +84,7 @@ public class CustomerInfo extends TenantEntity {
     /**
      * 客户等级
      */
-    private String customerLevelId;
+    private Long customerLevelId;
 
     /**
      * 固定电话

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

@@ -21,6 +21,8 @@ public class EnterpriseScale extends TenantEntity {
     @Serial
     private static final long serialVersionUID = 1L;
 
+    private String enterpriseScaleCode;
+
     /**
      * ID
      */

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

@@ -27,6 +27,8 @@ public class IndustryCategory extends TenantEntity {
     @TableId(value = "id")
     private Long id;
 
+    private String industryCode;
+
     /**
      * 所属行业
      */

+ 2 - 2
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/CustomerInfoBo.java

@@ -81,7 +81,7 @@ public class CustomerInfoBo extends BaseEntity {
     /**
      * 客户类别
      */
-    private String customerTypeId;
+    private Long customerTypeId;
 
     /**
      * 行业类别
@@ -92,7 +92,7 @@ public class CustomerInfoBo extends BaseEntity {
     /**
      * 客户等级
      */
-    private String customerLevelId;
+    private Long customerLevelId;
 
     /**
      * 固定电话

+ 3 - 1
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/EnterpriseScaleBo.java

@@ -25,10 +25,12 @@ public class EnterpriseScaleBo extends BaseEntity {
      */
     private Long id;
 
+    private String enterpriseScaleCode;
+
     /**
      * 企业规模名称
      */
-    @NotBlank(message = "企业规模名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    @NotBlank(message = "企业规模名称不能为空", groups = {AddGroup.class, EditGroup.class})
     private String enterpriseScaleName;
 
     /**

+ 3 - 1
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/IndustryCategoryBo.java

@@ -25,10 +25,12 @@ public class IndustryCategoryBo extends BaseEntity {
      */
     private Long id;
 
+    private String industryCode;
+
     /**
      * 所属行业
      */
-    @NotBlank(message = "所属行业不能为空", groups = { AddGroup.class, EditGroup.class })
+    @NotBlank(message = "所属行业不能为空", groups = {AddGroup.class, EditGroup.class})
     private String industryCategoryName;
 
     /**

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

@@ -94,7 +94,7 @@ public class CustomerInfoVo implements Serializable {
      * 客户类别
      */
     @ExcelProperty(value = "客户类别")
-    private String customerTypeId;
+    private Long customerTypeId;
 
     /**
      * 行业类别
@@ -106,7 +106,7 @@ public class CustomerInfoVo implements Serializable {
      * 客户等级
      */
     @ExcelProperty(value = "客户等级")
-    private String customerLevelId;
+    private Long customerLevelId;
 
     /**
      * 固定电话

+ 6 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/CustomerSalesInfoVo.java

@@ -141,5 +141,11 @@ public class CustomerSalesInfoVo implements Serializable {
     @ExcelProperty(value = "备注")
     private String remark;
 
+    private String salesPerson;
+
+    private String serviceStaff;
+
+    private String belongingDepartment;
+
 
 }

+ 2 - 1
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/EnterpriseScaleVo.java

@@ -13,7 +13,6 @@ import java.io.Serializable;
 import java.util.Date;
 
 
-
 /**
  * 企业规模视图对象 enterprise_scale
  *
@@ -34,6 +33,8 @@ public class EnterpriseScaleVo implements Serializable {
     @ExcelProperty(value = "ID")
     private Long id;
 
+    private String enterpriseScaleCode;
+
     /**
      * 企业规模名称
      */

+ 2 - 1
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/IndustryCategoryVo.java

@@ -13,7 +13,6 @@ import java.io.Serializable;
 import java.util.Date;
 
 
-
 /**
  * 所属行业视图对象 industry_category
  *
@@ -34,6 +33,8 @@ public class IndustryCategoryVo implements Serializable {
     @ExcelProperty(value = "ID")
     private Long id;
 
+    private String industryCode;
+
     /**
      * 所属行业
      */

+ 6 - 0
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/CustomerDeptServiceImpl.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.redis.utils.SequenceUtils;
 import org.springframework.stereotype.Service;
 import org.dromara.customer.domain.bo.CustomerDeptBo;
 import org.dromara.customer.domain.vo.CustomerDeptVo;
@@ -17,6 +18,7 @@ import org.dromara.customer.domain.CustomerDept;
 import org.dromara.customer.mapper.CustomerDeptMapper;
 import org.dromara.customer.service.ICustomerDeptService;
 
+import java.time.Duration;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
@@ -32,6 +34,8 @@ import java.util.Collection;
 @Service
 public class CustomerDeptServiceImpl extends ServiceImpl<CustomerDeptMapper, CustomerDept> implements ICustomerDeptService {
 
+    private static final String DEPT_NO_KEY = "customer_dept:dept_no";
+
     private final CustomerDeptMapper baseMapper;
 
     /**
@@ -90,6 +94,8 @@ public class CustomerDeptServiceImpl extends ServiceImpl<CustomerDeptMapper, Cus
      */
     @Override
     public Boolean insertByBo(CustomerDeptBo bo) {
+        bo.setDeptNo(SequenceUtils.nextPaddedIdStr(DEPT_NO_KEY, Duration.ofDays(3650), 5));
+
         CustomerDept info = baseMapper.selectById(bo.getParentId());
         // 如果父节点不为正常状态,则不允许新增子节点
         if (!SystemConstants.NORMAL.equals(info.getStatus())) {

+ 100 - 17
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/CustomerInfoServiceImpl.java

@@ -21,13 +21,14 @@ import org.dromara.customer.domain.bo.*;
 import org.dromara.customer.domain.vo.*;
 import org.dromara.customer.mapper.*;
 import org.dromara.customer.service.ICustomerInfoService;
-import org.dromara.system.api.RemoteDeptService;
+import org.dromara.system.api.*;
 import org.dromara.system.api.domain.vo.RemoteDeptVo;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -41,6 +42,16 @@ import java.util.stream.Collectors;
 @Service
 public class CustomerInfoServiceImpl extends ServiceImpl<CustomerInfoMapper, CustomerInfo> implements ICustomerInfoService {
 
+    @DubboReference
+    private RemoteComPostService remoteComPostService;
+    @DubboReference
+    private RemoteComStaffService remoteComStaffService;
+    @DubboReference
+    private RemoteComDeptService remoteComDeptService;
+
+    @DubboReference
+    private RemoteComCompanyService remoteComCompanyService;
+
     private final CustomerInfoMapper baseMapper;
     private final CustomerBusinessInfoMapper customerBusinessInfoMapper;
     private final CustomerInvoiceInfoMapper customerInvoiceInfoMapper;
@@ -52,9 +63,6 @@ public class CustomerInfoServiceImpl extends ServiceImpl<CustomerInfoMapper, Cus
     private final CustomerContractMapper customerContractMapper;
     private final CustomerDeptMapper customerDeptMapper;
 
-    @DubboReference
-    private RemoteDeptService remoteDeptService;
-
 
     /**
      * 查询客户信息
@@ -128,25 +136,101 @@ public class CustomerInfoServiceImpl extends ServiceImpl<CustomerInfoMapper, Cus
         LambdaQueryWrapper<CustomerInfo> lqw = buildQueryWrapper(bo);
         Page<CustomerInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
         List<CustomerInfoVo> records = result.getRecords();
-        if (CollUtil.isNotEmpty(records)) {
-            Set<Long> industryIds = records.stream()
-                .map(CustomerInfoVo::getIndustryCategoryId)
-                .filter(Objects::nonNull)
-                .collect(Collectors.toSet());
 
-            List<IndustryCategoryVo> industryList = industryCategoryMapper.selectVoByIds(industryIds);
+        if (CollUtil.isEmpty(records)) {
+            return TableDataInfo.build(result);
+        }
+
+        // === 1. 补充行业分类名称 ===
+        Set<Long> industryIds = records.stream()
+            .map(CustomerInfoVo::getIndustryCategoryId)
+            .filter(Objects::nonNull)
+            .collect(Collectors.toSet());
 
+        if (!industryIds.isEmpty()) {
+            List<IndustryCategoryVo> industryList = industryCategoryMapper.selectVoByIds(industryIds);
             Map<Long, String> industryMap = industryList.stream()
                 .collect(Collectors.toMap(
                     IndustryCategoryVo::getId,
                     IndustryCategoryVo::getIndustryCategoryName,
-                    (existing, replacement) -> existing
+                    (e, r) -> e
                 ));
+            records.forEach(vo -> vo.setIndustryCategory(industryMap.get(vo.getIndustryCategoryId())));
+        }
+
+        // === 2. 提取客户ID,查询销售信息 ===
+        Set<Long> infoIds = records.stream()
+            .map(CustomerInfoVo::getId)
+            .filter(Objects::nonNull)
+            .collect(Collectors.toCollection(() -> new HashSet<>(records.size())));
 
-            records.forEach(vo -> {
-                vo.setIndustryCategory(industryMap.get(vo.getIndustryCategoryId()));
-            });
+        Set<Long> companyIds = records.stream()
+            .map(CustomerInfoVo::getBelongCompanyId)
+            .filter(Objects::nonNull)
+            .collect(Collectors.toCollection(() -> new HashSet<>(records.size())));
+
+        if (infoIds.isEmpty()) {
+            return TableDataInfo.build(result);
         }
+
+        if (companyIds.isEmpty()) {
+            return TableDataInfo.build(result);
+        }
+
+        List<CustomerSalesInfoVo> salesInfoVos = customerSalesInfoMapper.selectVoList(
+            new LambdaQueryWrapper<CustomerSalesInfo>()
+                .in(CustomerSalesInfo::getCustomerId, infoIds)
+        );
+
+        if (CollUtil.isEmpty(salesInfoVos)) {
+            // 即使没有销售信息,也要返回客户列表(只是销售字段为空)
+            return TableDataInfo.build(result);
+        }
+
+        // === 3. 构建 customerId -> CustomerSalesInfoVo 映射
+        Map<Long, CustomerSalesInfoVo> salesInfoMap = salesInfoVos.stream()
+            .collect(Collectors.toMap(
+                CustomerSalesInfoVo::getCustomerId,
+                Function.identity(),
+                (existing, replacement) -> existing // 若有重复,保留第一个
+            ));
+
+        // === 4. 收集人员和部门ID ===
+        Set<Long> staffIds = new HashSet<>();
+        Set<Long> deptIds = new HashSet<>();
+
+        for (CustomerSalesInfoVo vo : salesInfoVos) {
+            if (vo.getSalesPersonId() != null) staffIds.add(vo.getSalesPersonId());
+            if (vo.getServiceStaffId() != null) staffIds.add(vo.getServiceStaffId());
+            if (vo.getBelongingDepartmentId() != null) deptIds.add(vo.getBelongingDepartmentId());
+        }
+
+        // === 5. 远程调用获取名称 ===
+        Map<Long, String> companyMap = companyIds.isEmpty()
+            ? Collections.emptyMap()
+            : remoteComCompanyService.selectCompanyNameByIds(companyIds);
+        Map<Long, String> staffMap = staffIds.isEmpty()
+            ? Collections.emptyMap()
+            : remoteComStaffService.selectStaffNameByIds(staffIds);
+
+        Map<Long, String> deptMap = deptIds.isEmpty()
+            ? Collections.emptyMap()
+            : remoteComDeptService.selectDeptNameByIds(deptIds);
+
+        // === 6. 回填人员和部门名称到 salesInfoVo ===
+        for (CustomerSalesInfoVo vo : salesInfoVos) {
+            vo.setSalesPerson(staffMap.get(vo.getSalesPersonId()));
+            vo.setServiceStaff(staffMap.get(vo.getServiceStaffId()));
+            vo.setBelongingDepartment(deptMap.get(vo.getBelongingDepartmentId()));
+        }
+
+        // === 7. 将销售信息回填到客户VO ===
+        for (CustomerInfoVo customerVo : records) {
+            customerVo.setCompanyName(companyMap.get(customerVo.getBelongCompanyId()));
+            CustomerSalesInfoVo salesVo = salesInfoMap.get(customerVo.getId());
+            customerVo.setCustomerSalesInfoVo(salesVo);
+        }
+
         return TableDataInfo.build(result);
     }
 
@@ -198,8 +282,7 @@ public class CustomerInfoServiceImpl extends ServiceImpl<CustomerInfoMapper, Cus
             vo.setCustomerId(customer.getId());
             vo.setCustomerNo(customer.getCustomerNo());
 
-            // ⚠️ 确认这里字段是否存在!
-            vo.setCustomerName(customer.getBusinessCustomerName()); // 或 customer.getShortName()
+            vo.setCustomerName(customer.getBusinessCustomerName());
 
             vo.setIndustryCategoryId(customer.getIndustryCategoryId());
             vo.setIndustryCategory(industryCategoryMap.getOrDefault(customer.getIndustryCategoryId(), ""));
@@ -325,7 +408,7 @@ public class CustomerInfoServiceImpl extends ServiceImpl<CustomerInfoMapper, Cus
             return false;
         }
         String platform = PlatformContext.getPlatform();
-        RemoteDeptVo deptVo = remoteDeptService.selectParentDeptByPlatformCode(platform);
+//        RemoteDeptVo deptVo = remoteDeptService.selectParentDeptByPlatformCode(platform);
 
         boolean isNew = bo.getId() == null || bo.getId() <= 0;
 

+ 9 - 4
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/EnterpriseScaleServiceImpl.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.redis.utils.SequenceUtils;
 import org.springframework.stereotype.Service;
 import org.dromara.customer.domain.bo.EnterpriseScaleBo;
 import org.dromara.customer.domain.vo.EnterpriseScaleVo;
@@ -17,6 +18,7 @@ import org.dromara.customer.domain.EnterpriseScale;
 import org.dromara.customer.mapper.EnterpriseScaleMapper;
 import org.dromara.customer.service.IEnterpriseScaleService;
 
+import java.time.Duration;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
@@ -30,7 +32,9 @@ import java.util.Collection;
 @Slf4j
 @RequiredArgsConstructor
 @Service
-public class EnterpriseScaleServiceImpl  extends ServiceImpl<EnterpriseScaleMapper, EnterpriseScale> implements IEnterpriseScaleService {
+public class EnterpriseScaleServiceImpl extends ServiceImpl<EnterpriseScaleMapper, EnterpriseScale> implements IEnterpriseScaleService {
+
+    private static final String ENTERPRISE_SCALE_CODE_KEY = "enterprise_scale:enterprise_scale_code";
 
     private final EnterpriseScaleMapper baseMapper;
 
@@ -41,7 +45,7 @@ public class EnterpriseScaleServiceImpl  extends ServiceImpl<EnterpriseScaleMapp
      * @return 企业规模
      */
     @Override
-    public EnterpriseScaleVo queryById(Long id){
+    public EnterpriseScaleVo queryById(Long id) {
         return baseMapper.selectVoById(id);
     }
 
@@ -89,6 +93,7 @@ public class EnterpriseScaleServiceImpl  extends ServiceImpl<EnterpriseScaleMapp
      */
     @Override
     public Boolean insertByBo(EnterpriseScaleBo bo) {
+        bo.setEnterpriseScaleCode(SequenceUtils.nextPaddedIdStr(ENTERPRISE_SCALE_CODE_KEY, Duration.ofDays(3650), 4));
         EnterpriseScale add = MapstructUtils.convert(bo, EnterpriseScale.class);
         validEntityBeforeSave(add);
         boolean flag = baseMapper.insert(add) > 0;
@@ -114,7 +119,7 @@ public class EnterpriseScaleServiceImpl  extends ServiceImpl<EnterpriseScaleMapp
     /**
      * 保存前的数据校验
      */
-    private void validEntityBeforeSave(EnterpriseScale entity){
+    private void validEntityBeforeSave(EnterpriseScale entity) {
         //TODO 做一些数据校验,如唯一约束
     }
 
@@ -127,7 +132,7 @@ public class EnterpriseScaleServiceImpl  extends ServiceImpl<EnterpriseScaleMapp
      */
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if(isValid){
+        if (isValid) {
             //TODO 做一些业务上的校验,判断是否需要校验
         }
         return baseMapper.deleteByIds(ids) > 0;

+ 9 - 4
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/IndustryCategoryServiceImpl.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.redis.utils.SequenceUtils;
 import org.springframework.stereotype.Service;
 import org.dromara.customer.domain.bo.IndustryCategoryBo;
 import org.dromara.customer.domain.vo.IndustryCategoryVo;
@@ -17,6 +18,7 @@ import org.dromara.customer.domain.IndustryCategory;
 import org.dromara.customer.mapper.IndustryCategoryMapper;
 import org.dromara.customer.service.IIndustryCategoryService;
 
+import java.time.Duration;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
@@ -30,7 +32,9 @@ import java.util.Collection;
 @Slf4j
 @RequiredArgsConstructor
 @Service
-public class IndustryCategoryServiceImpl  extends ServiceImpl<IndustryCategoryMapper, IndustryCategory> implements IIndustryCategoryService {
+public class IndustryCategoryServiceImpl extends ServiceImpl<IndustryCategoryMapper, IndustryCategory> implements IIndustryCategoryService {
+
+    private static final String CODE_KEY = "industry_category:industry_code";
 
     private final IndustryCategoryMapper baseMapper;
 
@@ -41,7 +45,7 @@ public class IndustryCategoryServiceImpl  extends ServiceImpl<IndustryCategoryMa
      * @return 所属行业
      */
     @Override
-    public IndustryCategoryVo queryById(Long id){
+    public IndustryCategoryVo queryById(Long id) {
         return baseMapper.selectVoById(id);
     }
 
@@ -89,6 +93,7 @@ public class IndustryCategoryServiceImpl  extends ServiceImpl<IndustryCategoryMa
      */
     @Override
     public Boolean insertByBo(IndustryCategoryBo bo) {
+        bo.setIndustryCode(SequenceUtils.nextPaddedIdStr(CODE_KEY, Duration.ofDays(3650), 4));
         IndustryCategory add = MapstructUtils.convert(bo, IndustryCategory.class);
         validEntityBeforeSave(add);
         boolean flag = baseMapper.insert(add) > 0;
@@ -114,7 +119,7 @@ public class IndustryCategoryServiceImpl  extends ServiceImpl<IndustryCategoryMa
     /**
      * 保存前的数据校验
      */
-    private void validEntityBeforeSave(IndustryCategory entity){
+    private void validEntityBeforeSave(IndustryCategory entity) {
         //TODO 做一些数据校验,如唯一约束
     }
 
@@ -127,7 +132,7 @@ public class IndustryCategoryServiceImpl  extends ServiceImpl<IndustryCategoryMa
      */
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if(isValid){
+        if (isValid) {
             //TODO 做一些业务上的校验,判断是否需要校验
         }
         return baseMapper.deleteByIds(ids) > 0;

+ 118 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/ComBankController.java

@@ -0,0 +1,118 @@
+package org.dromara.system.controller.system;
+
+import java.util.List;
+
+import cn.dev33.satoken.annotation.SaCheckRole;
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.common.core.constant.TenantConstants;
+import org.dromara.system.domain.bo.SysTenantBo;
+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.system.domain.vo.ComBankVo;
+import org.dromara.system.domain.bo.ComBankBo;
+import org.dromara.system.service.IComBankService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 银行信息
+ * 前端访问路由地址为:/system/bank
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/bank")
+public class ComBankController extends BaseController {
+
+    private final IComBankService comBankService;
+
+    /**
+     * 查询银行信息列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo<ComBankVo> list(ComBankBo bo, PageQuery pageQuery) {
+        return comBankService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出银行信息列表
+     */
+    @SaCheckPermission("system:bank:export")
+    @Log(title = "银行信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ComBankBo bo, HttpServletResponse response) {
+        List<ComBankVo> list = comBankService.queryList(bo);
+        ExcelUtil.exportExcel(list, "银行信息", ComBankVo.class, response);
+    }
+
+    /**
+     * 获取银行信息详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:bank:query")
+    @GetMapping("/{id}")
+    public R<ComBankVo> getInfo(@NotNull(message = "主键不能为空")
+                                @PathVariable("id") Long id) {
+        return R.ok(comBankService.queryById(id));
+    }
+
+    /**
+     * 新增银行信息
+     */
+    @SaCheckPermission("system:bank:add")
+    @Log(title = "银行信息", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ComBankBo bo) {
+        return toAjax(comBankService.insertByBo(bo));
+    }
+
+    /**
+     * 修改银行信息
+     */
+    @SaCheckPermission("system:bank:edit")
+    @Log(title = "银行信息", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ComBankBo bo) {
+        return toAjax(comBankService.updateByBo(bo));
+    }
+
+    /**
+     * 删除银行信息
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:bank:remove")
+    @Log(title = "银行信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(comBankService.deleteWithValidByIds(List.of(ids), true));
+    }
+
+    /**
+     * 状态修改
+     */
+    @SaCheckPermission("system:bank:edit")
+    @Log(title = "银行信息", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@RequestBody ComBankBo bo) {
+        return toAjax(comBankService.updateShowStatus(bo));
+    }
+}

+ 116 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/ComCompanyController.java

@@ -0,0 +1,116 @@
+package org.dromara.system.controller.system;
+
+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.system.domain.bo.ComCustomerLevelBo;
+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.system.domain.vo.ComCompanyVo;
+import org.dromara.system.domain.bo.ComCompanyBo;
+import org.dromara.system.service.IComCompanyService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 公司信息
+ * 前端访问路由地址为:/system/company
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/company")
+public class ComCompanyController extends BaseController {
+
+    private final IComCompanyService comCompanyService;
+
+    /**
+     * 查询公司信息列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo<ComCompanyVo> list(ComCompanyBo bo, PageQuery pageQuery) {
+        return comCompanyService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出公司信息列表
+     */
+    @SaCheckPermission("system:company:export")
+    @Log(title = "公司信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ComCompanyBo bo, HttpServletResponse response) {
+        List<ComCompanyVo> list = comCompanyService.queryList(bo);
+        ExcelUtil.exportExcel(list, "公司信息", ComCompanyVo.class, response);
+    }
+
+    /**
+     * 获取公司信息详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:company:query")
+    @GetMapping("/{id}")
+    public R<ComCompanyVo> getInfo(@NotNull(message = "主键不能为空")
+                                   @PathVariable("id") Long id) {
+        return R.ok(comCompanyService.queryById(id));
+    }
+
+    /**
+     * 新增公司信息
+     */
+    @SaCheckPermission("system:company:add")
+    @Log(title = "公司信息", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ComCompanyBo bo) {
+        return toAjax(comCompanyService.insertByBo(bo));
+    }
+
+    /**
+     * 修改公司信息
+     */
+    @SaCheckPermission("system:company:edit")
+    @Log(title = "公司信息", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ComCompanyBo bo) {
+        return toAjax(comCompanyService.updateByBo(bo));
+    }
+
+    /**
+     * 删除公司信息
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:company:remove")
+    @Log(title = "公司信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(comCompanyService.deleteWithValidByIds(List.of(ids), true));
+    }
+
+    /**
+     * 状态修改
+     */
+    @SaCheckPermission("system:company:edit")
+    @Log(title = "公司信息", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@RequestBody ComCompanyBo bo) {
+        return toAjax(comCompanyService.updateShowStatus(bo));
+    }
+}

+ 116 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/ComCustomerLevelController.java

@@ -0,0 +1,116 @@
+package org.dromara.system.controller.system;
+
+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.system.domain.bo.ComBankBo;
+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.system.domain.vo.ComCustomerLevelVo;
+import org.dromara.system.domain.bo.ComCustomerLevelBo;
+import org.dromara.system.service.IComCustomerLevelService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 客户等级配置
+ * 前端访问路由地址为:/system/customerLevel
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/customerLevel")
+public class ComCustomerLevelController extends BaseController {
+
+    private final IComCustomerLevelService comCustomerLevelService;
+
+    /**
+     * 查询客户等级配置列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo<ComCustomerLevelVo> list(ComCustomerLevelBo bo, PageQuery pageQuery) {
+        return comCustomerLevelService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出客户等级配置列表
+     */
+    @SaCheckPermission("system:customerLevel:export")
+    @Log(title = "客户等级配置", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ComCustomerLevelBo bo, HttpServletResponse response) {
+        List<ComCustomerLevelVo> list = comCustomerLevelService.queryList(bo);
+        ExcelUtil.exportExcel(list, "客户等级配置", ComCustomerLevelVo.class, response);
+    }
+
+    /**
+     * 获取客户等级配置详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:customerLevel:query")
+    @GetMapping("/{id}")
+    public R<ComCustomerLevelVo> getInfo(@NotNull(message = "主键不能为空")
+                                         @PathVariable("id") Long id) {
+        return R.ok(comCustomerLevelService.queryById(id));
+    }
+
+    /**
+     * 新增客户等级配置
+     */
+    @SaCheckPermission("system:customerLevel:add")
+    @Log(title = "客户等级配置", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ComCustomerLevelBo bo) {
+        return toAjax(comCustomerLevelService.insertByBo(bo));
+    }
+
+    /**
+     * 修改客户等级配置
+     */
+    @SaCheckPermission("system:customerLevel:edit")
+    @Log(title = "客户等级配置", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ComCustomerLevelBo bo) {
+        return toAjax(comCustomerLevelService.updateByBo(bo));
+    }
+
+    /**
+     * 删除客户等级配置
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:customerLevel:remove")
+    @Log(title = "客户等级配置", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(comCustomerLevelService.deleteWithValidByIds(List.of(ids), true));
+    }
+
+    /**
+     * 状态修改
+     */
+    @SaCheckPermission("system:customerLevel:edit")
+    @Log(title = "客户等级配置", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@RequestBody ComCustomerLevelBo bo) {
+        return toAjax(comCustomerLevelService.updateShowStatus(bo));
+    }
+}

+ 116 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/ComCustomerTypeController.java

@@ -0,0 +1,116 @@
+package org.dromara.system.controller.system;
+
+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.system.domain.bo.ComCustomerLevelBo;
+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.system.domain.vo.ComCustomerTypeVo;
+import org.dromara.system.domain.bo.ComCustomerTypeBo;
+import org.dromara.system.service.IComCustomerTypeService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 客户类型配置
+ * 前端访问路由地址为:/system/customerType
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/customerType")
+public class ComCustomerTypeController extends BaseController {
+
+    private final IComCustomerTypeService comCustomerTypeService;
+
+    /**
+     * 查询客户类型配置列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo<ComCustomerTypeVo> list(ComCustomerTypeBo bo, PageQuery pageQuery) {
+        return comCustomerTypeService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出客户类型配置列表
+     */
+    @SaCheckPermission("system:customerType:export")
+    @Log(title = "客户类型配置", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ComCustomerTypeBo bo, HttpServletResponse response) {
+        List<ComCustomerTypeVo> list = comCustomerTypeService.queryList(bo);
+        ExcelUtil.exportExcel(list, "客户类型配置", ComCustomerTypeVo.class, response);
+    }
+
+    /**
+     * 获取客户类型配置详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:customerType:query")
+    @GetMapping("/{id}")
+    public R<ComCustomerTypeVo> getInfo(@NotNull(message = "主键不能为空")
+                                        @PathVariable("id") Long id) {
+        return R.ok(comCustomerTypeService.queryById(id));
+    }
+
+    /**
+     * 新增客户类型配置
+     */
+    @SaCheckPermission("system:customerType:add")
+    @Log(title = "客户类型配置", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ComCustomerTypeBo bo) {
+        return toAjax(comCustomerTypeService.insertByBo(bo));
+    }
+
+    /**
+     * 修改客户类型配置
+     */
+    @SaCheckPermission("system:customerType:edit")
+    @Log(title = "客户类型配置", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ComCustomerTypeBo bo) {
+        return toAjax(comCustomerTypeService.updateByBo(bo));
+    }
+
+    /**
+     * 删除客户类型配置
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:customerType:remove")
+    @Log(title = "客户类型配置", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(comCustomerTypeService.deleteWithValidByIds(List.of(ids), true));
+    }
+
+    /**
+     * 状态修改
+     */
+    @SaCheckPermission("system:customerType:edit")
+    @Log(title = "客户类型配置", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@RequestBody ComCustomerTypeBo bo) {
+        return toAjax(comCustomerTypeService.updateShowStatus(bo));
+    }
+}

+ 116 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/ComDeptController.java

@@ -0,0 +1,116 @@
+package org.dromara.system.controller.system;
+
+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.system.domain.bo.ComBankBo;
+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.system.domain.vo.ComDeptVo;
+import org.dromara.system.domain.bo.ComDeptBo;
+import org.dromara.system.service.IComDeptService;
+
+/**
+ * 企业部门
+ * 前端访问路由地址为:/system/comDept
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/comDept")
+public class ComDeptController extends BaseController {
+
+    private final IComDeptService comDeptService;
+
+    /**
+     * 查询企业部门列表
+     */
+    @GetMapping("/list")
+    public R<List<ComDeptVo>> list(ComDeptBo bo) {
+        List<ComDeptVo> list = comDeptService.queryList(bo);
+        return R.ok(list);
+    }
+
+    /**
+     * 导出企业部门列表
+     */
+    @SaCheckPermission("system:comDept:export")
+    @Log(title = "企业部门", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ComDeptBo bo, HttpServletResponse response) {
+        List<ComDeptVo> list = comDeptService.queryList(bo);
+        ExcelUtil.exportExcel(list, "企业部门", ComDeptVo.class, response);
+    }
+
+    /**
+     * 获取企业部门详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:comDept:query")
+    @GetMapping("/{id}")
+    public R<ComDeptVo> getInfo(@NotNull(message = "主键不能为空")
+                                @PathVariable("id") Long id) {
+        return R.ok(comDeptService.queryById(id));
+    }
+
+    /**
+     * 新增企业部门
+     */
+    @SaCheckPermission("system:comDept:add")
+    @Log(title = "企业部门", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ComDeptBo bo) {
+        return toAjax(comDeptService.insertByBo(bo));
+    }
+
+    /**
+     * 修改企业部门
+     */
+    @SaCheckPermission("system:comDept:edit")
+    @Log(title = "企业部门", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ComDeptBo bo) {
+        return toAjax(comDeptService.updateByBo(bo));
+    }
+
+    /**
+     * 删除企业部门
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:comDept:remove")
+    @Log(title = "企业部门", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(comDeptService.deleteWithValidByIds(List.of(ids), true));
+    }
+
+    /**
+     * 状态修改
+     */
+    @SaCheckPermission("system:comDept:edit")
+    @Log(title = "企业部门", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@RequestBody ComDeptBo bo) {
+        return toAjax(comDeptService.updateStatus(bo));
+    }
+}

+ 116 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/ComPostController.java

@@ -0,0 +1,116 @@
+package org.dromara.system.controller.system;
+
+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.system.domain.bo.ComDeptBo;
+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.system.domain.vo.ComPostVo;
+import org.dromara.system.domain.bo.ComPostBo;
+import org.dromara.system.service.IComPostService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 岗位信息
+ * 前端访问路由地址为:/system/comPost
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/comPost")
+public class ComPostController extends BaseController {
+
+    private final IComPostService comPostService;
+
+    /**
+     * 查询岗位信息列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo<ComPostVo> list(ComPostBo bo, PageQuery pageQuery) {
+        return comPostService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出岗位信息列表
+     */
+    @SaCheckPermission("system:comPost:export")
+    @Log(title = "岗位信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ComPostBo bo, HttpServletResponse response) {
+        List<ComPostVo> list = comPostService.queryList(bo);
+        ExcelUtil.exportExcel(list, "岗位信息", ComPostVo.class, response);
+    }
+
+    /**
+     * 获取岗位信息详细信息
+     *
+     * @param postId 主键
+     */
+    @SaCheckPermission("system:comPost:query")
+    @GetMapping("/{postId}")
+    public R<ComPostVo> getInfo(@NotNull(message = "主键不能为空")
+                                @PathVariable("postId") Long postId) {
+        return R.ok(comPostService.queryById(postId));
+    }
+
+    /**
+     * 新增岗位信息
+     */
+    @SaCheckPermission("system:comPost:add")
+    @Log(title = "岗位信息", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ComPostBo bo) {
+        return toAjax(comPostService.insertByBo(bo));
+    }
+
+    /**
+     * 修改岗位信息
+     */
+    @SaCheckPermission("system:comPost:edit")
+    @Log(title = "岗位信息", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ComPostBo bo) {
+        return toAjax(comPostService.updateByBo(bo));
+    }
+
+    /**
+     * 删除岗位信息
+     *
+     * @param postIds 主键串
+     */
+    @SaCheckPermission("system:comPost:remove")
+    @Log(title = "岗位信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{postIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("postIds") Long[] postIds) {
+        return toAjax(comPostService.deleteWithValidByIds(List.of(postIds), true));
+    }
+
+    /**
+     * 状态修改
+     */
+    @SaCheckPermission("system:comPost:edit")
+    @Log(title = "岗位信息", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@RequestBody ComPostBo bo) {
+        return toAjax(comPostService.updateStatus(bo));
+    }
+}

+ 116 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/ComStaffController.java

@@ -0,0 +1,116 @@
+package org.dromara.system.controller.system;
+
+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.system.domain.bo.ComPostBo;
+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.system.domain.vo.ComStaffVo;
+import org.dromara.system.domain.bo.ComStaffBo;
+import org.dromara.system.service.IComStaffService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 人员信息
+ * 前端访问路由地址为:/system/comStaff
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/comStaff")
+public class ComStaffController extends BaseController {
+
+    private final IComStaffService comStaffService;
+
+    /**
+     * 查询人员信息列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo<ComStaffVo> list(ComStaffBo bo, PageQuery pageQuery) {
+        return comStaffService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出人员信息列表
+     */
+    @SaCheckPermission("system:comStaff:export")
+    @Log(title = "人员信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ComStaffBo bo, HttpServletResponse response) {
+        List<ComStaffVo> list = comStaffService.queryList(bo);
+        ExcelUtil.exportExcel(list, "人员信息", ComStaffVo.class, response);
+    }
+
+    /**
+     * 获取人员信息详细信息
+     *
+     * @param staffId 主键
+     */
+    @SaCheckPermission("system:comStaff:query")
+    @GetMapping("/{staffId}")
+    public R<ComStaffVo> getInfo(@NotNull(message = "主键不能为空")
+                                 @PathVariable("staffId") Long staffId) {
+        return R.ok(comStaffService.queryById(staffId));
+    }
+
+    /**
+     * 新增人员信息
+     */
+    @SaCheckPermission("system:comStaff:add")
+    @Log(title = "人员信息", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ComStaffBo bo) {
+        return toAjax(comStaffService.insertByBo(bo));
+    }
+
+    /**
+     * 修改人员信息
+     */
+    @SaCheckPermission("system:comStaff:edit")
+    @Log(title = "人员信息", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ComStaffBo bo) {
+        return toAjax(comStaffService.updateByBo(bo));
+    }
+
+    /**
+     * 删除人员信息
+     *
+     * @param staffIds 主键串
+     */
+    @SaCheckPermission("system:comStaff:remove")
+    @Log(title = "人员信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{staffIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("staffIds") Long[] staffIds) {
+        return toAjax(comStaffService.deleteWithValidByIds(List.of(staffIds), true));
+    }
+
+    /**
+     * 状态修改
+     */
+    @SaCheckPermission("system:comStaff:edit")
+    @Log(title = "人员信息", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@RequestBody ComStaffBo bo) {
+        return toAjax(comStaffService.updateStatus(bo));
+    }
+}

+ 116 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/CreditLevelController.java

@@ -0,0 +1,116 @@
+package org.dromara.system.controller.system;
+
+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.system.domain.bo.ComBankBo;
+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.system.domain.vo.CreditLevelVo;
+import org.dromara.system.domain.bo.CreditLevelBo;
+import org.dromara.system.service.ICreditLevelService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 信用等级配置
+ * 前端访问路由地址为:/system/creditLevel
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/creditLevel")
+public class CreditLevelController extends BaseController {
+
+    private final ICreditLevelService creditLevelService;
+
+    /**
+     * 查询信用等级配置列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo<CreditLevelVo> list(CreditLevelBo bo, PageQuery pageQuery) {
+        return creditLevelService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出信用等级配置列表
+     */
+    @SaCheckPermission("system:creditLevel:export")
+    @Log(title = "信用等级配置", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(CreditLevelBo bo, HttpServletResponse response) {
+        List<CreditLevelVo> list = creditLevelService.queryList(bo);
+        ExcelUtil.exportExcel(list, "信用等级配置", CreditLevelVo.class, response);
+    }
+
+    /**
+     * 获取信用等级配置详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:creditLevel:query")
+    @GetMapping("/{id}")
+    public R<CreditLevelVo> getInfo(@NotNull(message = "主键不能为空")
+                                    @PathVariable("id") Long id) {
+        return R.ok(creditLevelService.queryById(id));
+    }
+
+    /**
+     * 新增信用等级配置
+     */
+    @SaCheckPermission("system:creditLevel:add")
+    @Log(title = "信用等级配置", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody CreditLevelBo bo) {
+        return toAjax(creditLevelService.insertByBo(bo));
+    }
+
+    /**
+     * 修改信用等级配置
+     */
+    @SaCheckPermission("system:creditLevel:edit")
+    @Log(title = "信用等级配置", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody CreditLevelBo bo) {
+        return toAjax(creditLevelService.updateByBo(bo));
+    }
+
+    /**
+     * 删除信用等级配置
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:creditLevel:remove")
+    @Log(title = "信用等级配置", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(creditLevelService.deleteWithValidByIds(List.of(ids), true));
+    }
+
+    /**
+     * 状态修改
+     */
+    @SaCheckPermission("system:bank:edit")
+    @Log(title = "信用等级配置", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@RequestBody CreditLevelBo bo) {
+        return toAjax(creditLevelService.updateShowStatus(bo));
+    }
+}

+ 116 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SettlementLevelController.java

@@ -0,0 +1,116 @@
+package org.dromara.system.controller.system;
+
+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.system.domain.bo.SettlementMethodBo;
+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.system.domain.vo.SettlementLevelVo;
+import org.dromara.system.domain.bo.SettlementLevelBo;
+import org.dromara.system.service.ISettlementLevelService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 结算等级
+ * 前端访问路由地址为:/system/settlementLevel
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/settlementLevel")
+public class SettlementLevelController extends BaseController {
+
+    private final ISettlementLevelService settlementLevelService;
+
+    /**
+     * 查询结算等级列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo<SettlementLevelVo> list(SettlementLevelBo bo, PageQuery pageQuery) {
+        return settlementLevelService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出结算等级列表
+     */
+    @SaCheckPermission("system:settlementLevel:export")
+    @Log(title = "结算等级", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SettlementLevelBo bo, HttpServletResponse response) {
+        List<SettlementLevelVo> list = settlementLevelService.queryList(bo);
+        ExcelUtil.exportExcel(list, "结算等级", SettlementLevelVo.class, response);
+    }
+
+    /**
+     * 获取结算等级详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:settlementLevel:query")
+    @GetMapping("/{id}")
+    public R<SettlementLevelVo> getInfo(@NotNull(message = "主键不能为空")
+                                        @PathVariable("id") Long id) {
+        return R.ok(settlementLevelService.queryById(id));
+    }
+
+    /**
+     * 新增结算等级
+     */
+    @SaCheckPermission("system:settlementLevel:add")
+    @Log(title = "结算等级", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SettlementLevelBo bo) {
+        return toAjax(settlementLevelService.insertByBo(bo));
+    }
+
+    /**
+     * 修改结算等级
+     */
+    @SaCheckPermission("system:settlementLevel:edit")
+    @Log(title = "结算等级", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SettlementLevelBo bo) {
+        return toAjax(settlementLevelService.updateByBo(bo));
+    }
+
+    /**
+     * 删除结算等级
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:settlementLevel:remove")
+    @Log(title = "结算等级", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(settlementLevelService.deleteWithValidByIds(List.of(ids), true));
+    }
+
+    /**
+     * 状态修改
+     */
+    @SaCheckPermission("system:settlementMethod:edit")
+    @Log(title = "结算等级", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@RequestBody SettlementLevelBo bo) {
+        return toAjax(settlementLevelService.updateShowStatus(bo));
+    }
+}

+ 116 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SettlementMethodController.java

@@ -0,0 +1,116 @@
+package org.dromara.system.controller.system;
+
+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.system.domain.bo.ComBankBo;
+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.system.domain.vo.SettlementMethodVo;
+import org.dromara.system.domain.bo.SettlementMethodBo;
+import org.dromara.system.service.ISettlementMethodService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 结算方式
+ * 前端访问路由地址为:/system/settlementMethod
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/settlementMethod")
+public class SettlementMethodController extends BaseController {
+
+    private final ISettlementMethodService settlementMethodService;
+
+    /**
+     * 查询结算方式列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo<SettlementMethodVo> list(SettlementMethodBo bo, PageQuery pageQuery) {
+        return settlementMethodService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出结算方式列表
+     */
+    @SaCheckPermission("system:settlementMethod:export")
+    @Log(title = "结算方式", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SettlementMethodBo bo, HttpServletResponse response) {
+        List<SettlementMethodVo> list = settlementMethodService.queryList(bo);
+        ExcelUtil.exportExcel(list, "结算方式", SettlementMethodVo.class, response);
+    }
+
+    /**
+     * 获取结算方式详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:settlementMethod:query")
+    @GetMapping("/{id}")
+    public R<SettlementMethodVo> getInfo(@NotNull(message = "主键不能为空")
+                                         @PathVariable("id") Long id) {
+        return R.ok(settlementMethodService.queryById(id));
+    }
+
+    /**
+     * 新增结算方式
+     */
+    @SaCheckPermission("system:settlementMethod:add")
+    @Log(title = "结算方式", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SettlementMethodBo bo) {
+        return toAjax(settlementMethodService.insertByBo(bo));
+    }
+
+    /**
+     * 修改结算方式
+     */
+    @SaCheckPermission("system:settlementMethod:edit")
+    @Log(title = "结算方式", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SettlementMethodBo bo) {
+        return toAjax(settlementMethodService.updateByBo(bo));
+    }
+
+    /**
+     * 删除结算方式
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:settlementMethod:remove")
+    @Log(title = "结算方式", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(settlementMethodService.deleteWithValidByIds(List.of(ids), true));
+    }
+
+    /**
+     * 状态修改
+     */
+    @SaCheckPermission("system:settlementMethod:edit")
+    @Log(title = "结算方式", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@RequestBody SettlementMethodBo bo) {
+        return toAjax(settlementMethodService.updateShowStatus(bo));
+    }
+}

+ 11 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysCompanyController.java

@@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.system.domain.bo.ComBankBo;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -102,4 +103,14 @@ public class SysCompanyController extends BaseController {
                           @PathVariable("ids") Long[] ids) {
         return toAjax(sysCompanyService.deleteWithValidByIds(List.of(ids), true));
     }
+
+    /**
+     * 状态修改
+     */
+    @SaCheckPermission("system:sysCompany:edit")
+    @Log(title = "公司信息", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@RequestBody SysCompanyBo bo) {
+        return toAjax(sysCompanyService.updateStatus(bo));
+    }
 }

+ 82 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ComBank.java

@@ -0,0 +1,82 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 银行信息对象 com_bank
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("com_bank")
+public class ComBank extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 网点编号
+     */
+    private String bnId;
+
+    /**
+     * 网点名称
+     */
+    private String bnName;
+
+    /**
+     * 数据来源
+     */
+    private String dataSource;
+
+    /**
+     * 网点地址
+     */
+    private String bnAddr;
+
+    /**
+     * 网点分类ID
+     */
+    private String bnCatgId;
+
+    /**
+     * 传真号码
+     */
+    private String faxNo;
+
+    /**
+     * 联系电话
+     */
+    private String telNo;
+
+    /**
+     * 是否显示(0-是,1-否)
+     */
+    private String isShow;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 172 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ComCompany.java

@@ -0,0 +1,172 @@
+package org.dromara.system.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;
+
+/**
+ * 公司信息对象 com_company
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("com_company")
+public class ComCompany extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 会计主体ID
+     */
+    private Long accBnId;
+
+    /**
+     * 会计主体编号
+     */
+    private String accBnNo;
+
+    /**
+     * 公司地址
+     */
+    private String address;
+
+    /**
+     * 经营开始日期
+     */
+    private Date begDate;
+
+    /**
+     * 经营范围
+     */
+    private String busScp;
+
+    /**
+     * 注册资本金额
+     */
+    private BigDecimal capAmt;
+
+    /**
+     * 公司全名
+     */
+    private String companyFullName;
+
+    /**
+     * 法人代表
+     */
+    private String corporation;
+
+    /**
+     * 电子邮箱
+     */
+    private String email;
+
+    /**
+     * 经营结束日期
+     */
+    private Date endDate;
+
+    /**
+     * 成立日期
+     */
+    private Date foundDate;
+
+    /**
+     * 内部客户ID
+     */
+    private String inCustId;
+
+    /**
+     * 内部供应商ID
+     */
+    private String inSupId;
+
+    /**
+     * 法律代表人
+     */
+    private String lelPer;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 负责人/经办人
+     */
+    private String principal;
+
+    /**
+     * 注册地址
+     */
+    private String regAddr;
+
+    /**
+     * 注册日期
+     */
+    private Date regDate;
+
+    /**
+     * 注册机关
+     */
+    private String regOrg;
+
+    /**
+     * 税务登记号
+     */
+    private String taxNo;
+
+    /**
+     * 公司编号
+     */
+    private String companyCode;
+
+    /**
+     * 公司名称
+     */
+    private String companyName;
+
+    /**
+     * 是否显示(0-是,1-否)
+     */
+    private String isShow;
+
+    /**
+     * 数据来源
+     */
+    private String dataSource;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 67 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ComCustomerLevel.java

@@ -0,0 +1,67 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 客户等级配置对象 com_customer_level
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("com_customer_level")
+public class ComCustomerLevel extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 客户等级编码
+     */
+    private String levelCode;
+
+    /**
+     * 客户等级名称
+     */
+    private String levelName;
+
+    /**
+     * 是否显示(0-显示,1-不显示)
+     */
+    private String isShow;
+
+    /**
+     * 数据来源
+     */
+    private String dataSource;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 67 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ComCustomerType.java

@@ -0,0 +1,67 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 客户类型配置对象 com_customer_type
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("com_customer_type")
+public class ComCustomerType extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID(由应用层生成)
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 客户类型编码
+     */
+    private String typeCode;
+
+    /**
+     * 客户类型名称
+     */
+    private String typeName;
+
+    /**
+     * 是否显示(0-显示,1-不显示)
+     */
+    private String isShow;
+
+    /**
+     * 数据来源
+     */
+    private String dataSource;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 114 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ComDept.java

@@ -0,0 +1,114 @@
+package org.dromara.system.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;
+
+/**
+ * 企业部门对象 com_dept
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("com_dept")
+public class ComDept extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 部门ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 部门编码
+     */
+    private String deptCode;
+
+    /**
+     * 企业ID
+     */
+    private Long companyId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 父部门ID
+     */
+    private Long parentId;
+
+    /**
+     * 祖级部门ID路径
+     */
+    private String ancestors;
+
+    /**
+     * 部门类别
+     */
+    private String deptCategory;
+
+    /**
+     * 部门层级深度
+     */
+    private Long level;
+
+    /**
+     * 负责人用户ID
+     */
+    private Long leader;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 邮箱
+     */
+    private String email;
+
+    /**
+     * 生效日期
+     */
+    private Date validFrom;
+
+    /**
+     * 失效日期
+     */
+    private Date validTo;
+
+    /**
+     * 部门状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0存在 1删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 数据来源
+     */
+    private String dataSource;
+
+    /**
+     * 显示顺序
+     */
+    private Long orderNum;
+
+
+}

+ 62 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ComPost.java

@@ -0,0 +1,62 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 岗位信息对象 com_post
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("com_post")
+public class ComPost extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 岗位ID
+     */
+    @TableId(value = "post_id")
+    private Long postId;
+
+    /**
+     * 岗位编码
+     */
+    private String postCode;
+
+    /**
+     * 岗位名称
+     */
+    private String postName;
+
+    /**
+     * 数据来源
+     */
+    private String dataSource;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 104 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/ComStaff.java

@@ -0,0 +1,104 @@
+package org.dromara.system.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;
+
+/**
+ * 人员信息对象 com_staff
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("com_staff")
+public class ComStaff extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 人员ID
+     */
+    @TableId(value = "staff_id")
+    private Long staffId;
+
+    /**
+     * 人员编码
+     */
+    private String staffCode;
+
+    /**
+     * 姓名
+     */
+    private String staffName;
+
+    /**
+     * 所属部门编码
+     */
+    private Long deptId;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 岗位编码
+     */
+    private Long postId;
+
+    /**
+     * 性别
+     */
+    private String sex;
+
+    /**
+     * 角色编码
+     */
+    private Long roleId;
+
+    /**
+     * 数据来源
+     */
+    private String dataSource;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 有效期起始
+     */
+    private Date validFrom;
+
+    /**
+     * 有效期截止
+     */
+    private Date validTo;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 67 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/CreditLevel.java

@@ -0,0 +1,67 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 信用等级配置对象 credit_level
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("credit_level")
+public class CreditLevel extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 信用等级编码
+     */
+    private String creditLevelNo;
+
+    /**
+     * 信用等级名称
+     */
+    private String creditLevelName;
+
+    /**
+     * 是否显示(0-显示,1-不显示)
+     */
+    private String isShow;
+
+    /**
+     * 数据来源
+     */
+    private String dataSource;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 62 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SettlementLevel.java

@@ -0,0 +1,62 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 结算等级对象 settlement_level
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("settlement_level")
+public class SettlementLevel extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 结算等级编码
+     */
+    private String settlementLevelId;
+
+    /**
+     * 结算等级名称
+     */
+    private String settlementLevelName;
+
+    /**
+     * 是否显示(0-显示,1-不显示)
+     */
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 62 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SettlementMethod.java

@@ -0,0 +1,62 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 结算方式对象 settlement_method
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("settlement_method")
+public class SettlementMethod extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 结算方式编码
+     */
+    private String settlementId;
+
+    /**
+     * 结算方式名称
+     */
+    private String settlementName;
+
+    /**
+     * 是否显示(0-是,1-否)
+     */
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 75 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ComBankBo.java

@@ -0,0 +1,75 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.ComBank;
+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.*;
+
+/**
+ * 银行信息业务对象 com_bank
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ComBank.class, reverseConvertGenerate = false)
+public class ComBankBo extends BaseEntity {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 网点编号
+     */
+    private String bnId;
+
+    /**
+     * 网点名称
+     */
+    @NotBlank(message = "网点名称不能为空", groups = {AddGroup.class, EditGroup.class})
+    private String bnName;
+
+    /**
+     * 数据来源
+     */
+    private String dataSource;
+
+    /**
+     * 网点地址
+     */
+    private String bnAddr;
+
+    /**
+     * 网点分类ID
+     */
+    private String bnCatgId;
+
+    /**
+     * 传真号码
+     */
+    private String faxNo;
+
+    /**
+     * 联系电话
+     */
+    private String telNo;
+
+    /**
+     * 是否显示(0-是,1-否)
+     */
+    private String isShow;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 169 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ComCompanyBo.java

@@ -0,0 +1,169 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.ComCompany;
+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;
+
+/**
+ * 公司信息业务对象 com_company
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ComCompany.class, reverseConvertGenerate = false)
+public class ComCompanyBo extends BaseEntity {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 会计主体ID
+     */
+    private Long accBnId;
+
+    /**
+     * 会计主体编号
+     */
+    private String accBnNo;
+
+    /**
+     * 公司地址
+     */
+    private String address;
+
+    /**
+     * 经营开始日期
+     */
+    private Date begDate;
+
+    /**
+     * 经营范围
+     */
+    private String busScp;
+
+    /**
+     * 注册资本金额
+     */
+    private BigDecimal capAmt;
+
+    /**
+     * 公司全名
+     */
+    private String companyFullName;
+
+    /**
+     * 法人代表
+     */
+    private String corporation;
+
+    /**
+     * 电子邮箱
+     */
+    private String email;
+
+    /**
+     * 经营结束日期
+     */
+    @NotNull(message = "经营结束日期不能为空", groups = {AddGroup.class, EditGroup.class})
+    private Date endDate;
+
+    /**
+     * 成立日期
+     */
+    @NotNull(message = "成立日期不能为空", groups = {AddGroup.class, EditGroup.class})
+    private Date foundDate;
+
+    /**
+     * 内部客户ID
+     */
+    private String inCustId;
+
+    /**
+     * 内部供应商ID
+     */
+    private String inSupId;
+
+    /**
+     * 法律代表人
+     */
+    private String lelPer;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 负责人/经办人
+     */
+    private String principal;
+
+    /**
+     * 注册地址
+     */
+    private String regAddr;
+
+    /**
+     * 注册日期
+     */
+    @NotNull(message = "注册日期不能为空", groups = {AddGroup.class, EditGroup.class})
+    private Date regDate;
+
+    /**
+     * 注册机关
+     */
+    private String regOrg;
+
+    /**
+     * 税务登记号
+     */
+    private String taxNo;
+
+    /**
+     * 公司编号
+     */
+    private String companyCode;
+
+    /**
+     * 公司名称
+     */
+    @NotBlank(message = "公司名称不能为空", groups = {AddGroup.class, EditGroup.class})
+    private String companyName;
+
+    /**
+     * 是否显示(0-是,1-否)
+     */
+    @NotBlank(message = "是否显示(0-是,1-否)不能为空", groups = {AddGroup.class, EditGroup.class})
+    private String isShow;
+
+    /**
+     * 数据来源
+     */
+    private String dataSource;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 60 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ComCustomerLevelBo.java

@@ -0,0 +1,60 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.ComCustomerLevel;
+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.*;
+
+/**
+ * 客户等级配置业务对象 com_customer_level
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ComCustomerLevel.class, reverseConvertGenerate = false)
+public class ComCustomerLevelBo extends BaseEntity {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 客户等级编码
+     */
+    private String levelCode;
+
+    /**
+     * 客户等级名称
+     */
+    @NotBlank(message = "客户等级名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String levelName;
+
+    /**
+     * 是否显示(0-显示,1-不显示)
+     */
+    private String isShow;
+
+    /**
+     * 数据来源
+     */
+    private String dataSource;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 60 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ComCustomerTypeBo.java

@@ -0,0 +1,60 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.ComCustomerType;
+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.*;
+
+/**
+ * 客户类型配置业务对象 com_customer_type
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ComCustomerType.class, reverseConvertGenerate = false)
+public class ComCustomerTypeBo extends BaseEntity {
+
+    /**
+     * 主键ID(由应用层生成)
+     */
+    private Long id;
+
+    /**
+     * 客户类型编码
+     */
+    private String typeCode;
+
+    /**
+     * 客户类型名称
+     */
+    @NotBlank(message = "客户类型名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String typeName;
+
+    /**
+     * 是否显示(0-显示,1-不显示)
+     */
+    private String isShow;
+
+    /**
+     * 数据来源
+     */
+    private String dataSource;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 107 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ComDeptBo.java

@@ -0,0 +1,107 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.ComDept;
+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;
+
+/**
+ * 企业部门业务对象 com_dept
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ComDept.class, reverseConvertGenerate = false)
+public class ComDeptBo extends BaseEntity {
+
+    /**
+     * 部门ID
+     */
+    private Long id;
+
+    /**
+     * 部门编码
+     */
+    private String deptCode;
+
+    /**
+     * 企业ID
+     */
+    private Long companyId;
+
+    /**
+     * 部门名称
+     */
+    @NotBlank(message = "部门名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String deptName;
+
+    /**
+     * 父部门ID
+     */
+    private Long parentId;
+
+    /**
+     * 祖级部门ID路径
+     */
+    private String ancestors;
+
+    /**
+     * 部门类别
+     */
+    private String deptCategory;
+
+    /**
+     * 部门层级深度
+     */
+    private Long level;
+
+    /**
+     * 负责人用户ID
+     */
+    private Long leader;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 邮箱
+     */
+    private String email;
+
+    /**
+     * 生效日期
+     */
+    private Date validFrom;
+
+    /**
+     * 失效日期
+     */
+    private Date validTo;
+
+    /**
+     * 部门状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 数据来源
+     */
+    private String dataSource;
+
+    /**
+     * 显示顺序
+     */
+    private Long orderNum;
+
+
+}

+ 55 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ComPostBo.java

@@ -0,0 +1,55 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.ComPost;
+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.*;
+
+/**
+ * 岗位信息业务对象 com_post
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ComPost.class, reverseConvertGenerate = false)
+public class ComPostBo extends BaseEntity {
+
+    /**
+     * 岗位ID
+     */
+    private Long postId;
+
+    /**
+     * 岗位编码
+     */
+    private String postCode;
+
+    /**
+     * 岗位名称
+     */
+    @NotBlank(message = "岗位名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String postName;
+
+    /**
+     * 数据来源
+     */
+    private String dataSource;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 97 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/ComStaffBo.java

@@ -0,0 +1,97 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.ComStaff;
+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;
+
+/**
+ * 人员信息业务对象 com_staff
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ComStaff.class, reverseConvertGenerate = false)
+public class ComStaffBo extends BaseEntity {
+
+    /**
+     * 人员ID
+     */
+    private Long staffId;
+
+    /**
+     * 人员编码
+     */
+    private String staffCode;
+
+    /**
+     * 姓名
+     */
+    @NotBlank(message = "姓名不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String staffName;
+
+    /**
+     * 所属部门编码
+     */
+    private Long deptId;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 岗位编码
+     */
+    private Long postId;
+
+    /**
+     * 性别
+     */
+    private String sex;
+
+    /**
+     * 角色编码
+     */
+    private Long roleId;
+
+    /**
+     * 数据来源
+     */
+    private String dataSource;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 有效期起始
+     */
+    private Date validFrom;
+
+    /**
+     * 有效期截止
+     */
+    private Date validTo;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 59 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/CreditLevelBo.java

@@ -0,0 +1,59 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.CreditLevel;
+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.*;
+
+/**
+ * 信用等级配置业务对象 credit_level
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = CreditLevel.class, reverseConvertGenerate = false)
+public class CreditLevelBo extends BaseEntity {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 信用等级编码
+     */
+    private String creditLevelNo;
+
+    /**
+     * 信用等级名称
+     */
+    private String creditLevelName;
+
+    /**
+     * 是否显示(0-显示,1-不显示)
+     */
+    private String isShow;
+
+    /**
+     * 数据来源
+     */
+    private String dataSource;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 55 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SettlementLevelBo.java

@@ -0,0 +1,55 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.SettlementLevel;
+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.*;
+
+/**
+ * 结算等级业务对象 settlement_level
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SettlementLevel.class, reverseConvertGenerate = false)
+public class SettlementLevelBo extends BaseEntity {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 结算等级编码
+     */
+    private String settlementLevelId;
+
+    /**
+     * 结算等级名称
+     */
+    @NotBlank(message = "结算等级名称不能为空", groups = {AddGroup.class, EditGroup.class})
+    private String settlementLevelName;
+
+    /**
+     * 是否显示(0-显示,1-不显示)
+     */
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 55 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SettlementMethodBo.java

@@ -0,0 +1,55 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.SettlementMethod;
+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.*;
+
+/**
+ * 结算方式业务对象 settlement_method
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SettlementMethod.class, reverseConvertGenerate = false)
+public class SettlementMethodBo extends BaseEntity {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 结算方式编码
+     */
+    private String settlementId;
+
+    /**
+     * 结算方式名称
+     */
+    @NotBlank(message = "结算方式名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String settlementName;
+
+    /**
+     * 是否显示(0-是,1-否)
+     */
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 92 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ComBankVo.java

@@ -0,0 +1,92 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.ComBank;
+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;
+
+
+/**
+ * 银行信息视图对象 com_bank
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ComBank.class)
+public class ComBankVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /**
+     * 网点编号
+     */
+    @ExcelProperty(value = "网点编号")
+    private String bnId;
+
+    /**
+     * 网点名称
+     */
+    @ExcelProperty(value = "网点名称")
+    private String bnName;
+
+    /**
+     * 数据来源
+     */
+    @ExcelProperty(value = "数据来源")
+    private String dataSource;
+
+    /**
+     * 网点地址
+     */
+    @ExcelProperty(value = "网点地址")
+    private String bnAddr;
+
+    /**
+     * 网点分类ID
+     */
+    @ExcelProperty(value = "网点分类ID")
+    private String bnCatgId;
+
+    /**
+     * 传真号码
+     */
+    @ExcelProperty(value = "传真号码")
+    private String faxNo;
+
+    /**
+     * 联系电话
+     */
+    @ExcelProperty(value = "联系电话")
+    private String telNo;
+
+    /**
+     * 是否显示(0-是,1-否)
+     */
+    @ExcelProperty(value = "是否显示", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "sys_platform_yes_no")
+    private String isShow;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 199 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ComCompanyVo.java

@@ -0,0 +1,199 @@
+package org.dromara.system.domain.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.system.domain.ComCompany;
+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;
+
+
+/**
+ * 公司信息视图对象 com_company
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ComCompany.class)
+public class ComCompanyVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /**
+     * 会计主体ID
+     */
+    @ExcelProperty(value = "会计主体ID")
+    private Long accBnId;
+
+    /**
+     * 会计主体编号
+     */
+    @ExcelProperty(value = "会计主体编号")
+    private String accBnNo;
+
+    /**
+     * 公司地址
+     */
+    @ExcelProperty(value = "公司地址")
+    private String address;
+
+    /**
+     * 经营开始日期
+     */
+    @ExcelProperty(value = "经营开始日期")
+    private Date begDate;
+
+    /**
+     * 经营范围
+     */
+    @ExcelProperty(value = "经营范围")
+    private String busScp;
+
+    /**
+     * 注册资本金额
+     */
+    @ExcelProperty(value = "注册资本金额")
+    private BigDecimal capAmt;
+
+    /**
+     * 公司全名
+     */
+    @ExcelProperty(value = "公司全名")
+    private String companyFullName;
+
+    /**
+     * 法人代表
+     */
+    @ExcelProperty(value = "法人代表")
+    private String corporation;
+
+    /**
+     * 电子邮箱
+     */
+    @ExcelProperty(value = "电子邮箱")
+    private String email;
+
+    /**
+     * 经营结束日期
+     */
+    @ExcelProperty(value = "经营结束日期")
+    private Date endDate;
+
+    /**
+     * 成立日期
+     */
+    @ExcelProperty(value = "成立日期")
+    private Date foundDate;
+
+    /**
+     * 内部客户ID
+     */
+    @ExcelProperty(value = "内部客户ID")
+    private String inCustId;
+
+    /**
+     * 内部供应商ID
+     */
+    @ExcelProperty(value = "内部供应商ID")
+    private String inSupId;
+
+    /**
+     * 法律代表人
+     */
+    @ExcelProperty(value = "法律代表人")
+    private String lelPer;
+
+    /**
+     * 联系电话
+     */
+    @ExcelProperty(value = "联系电话")
+    private String phone;
+
+    /**
+     * 负责人/经办人
+     */
+    @ExcelProperty(value = "负责人/经办人")
+    private String principal;
+
+    /**
+     * 注册地址
+     */
+    @ExcelProperty(value = "注册地址")
+    private String regAddr;
+
+    /**
+     * 注册日期
+     */
+    @ExcelProperty(value = "注册日期")
+    private Date regDate;
+
+    /**
+     * 注册机关
+     */
+    @ExcelProperty(value = "注册机关")
+    private String regOrg;
+
+    /**
+     * 税务登记号
+     */
+    @ExcelProperty(value = "税务登记号")
+    private String taxNo;
+
+    /**
+     * 公司编号
+     */
+    @ExcelProperty(value = "公司编号")
+    private String companyCode;
+
+    /**
+     * 公司名称
+     */
+    @ExcelProperty(value = "公司名称")
+    private String companyName;
+
+    /**
+     * 是否显示(0-是,1-否)
+     */
+    @ExcelProperty(value = "是否显示", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "sys_platform_yes_no")
+    private String isShow;
+
+    /**
+     * 数据来源
+     */
+    @ExcelProperty(value = "数据来源")
+    private String dataSource;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 76 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ComCustomerLevelVo.java

@@ -0,0 +1,76 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.ComCustomerLevel;
+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;
+
+
+
+/**
+ * 客户等级配置视图对象 com_customer_level
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ComCustomerLevel.class)
+public class ComCustomerLevelVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /**
+     * 客户等级编码
+     */
+    @ExcelProperty(value = "客户等级编码")
+    private String levelCode;
+
+    /**
+     * 客户等级名称
+     */
+    @ExcelProperty(value = "客户等级名称")
+    private String levelName;
+
+    /**
+     * 是否显示(0-显示,1-不显示)
+     */
+    @ExcelProperty(value = "是否显示", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "sys_platform_yes_no")
+    private String isShow;
+
+    /**
+     * 数据来源
+     */
+    @ExcelProperty(value = "数据来源")
+    private String dataSource;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 77 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ComCustomerTypeVo.java

@@ -0,0 +1,77 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.ComCustomerType;
+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;
+
+
+
+/**
+ * 客户类型配置视图对象 com_customer_type
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ComCustomerType.class)
+public class ComCustomerTypeVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID(由应用层生成)
+     */
+    @ExcelProperty(value = "主键ID", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "由=应用层生成")
+    private Long id;
+
+    /**
+     * 客户类型编码
+     */
+    @ExcelProperty(value = "客户类型编码")
+    private String typeCode;
+
+    /**
+     * 客户类型名称
+     */
+    @ExcelProperty(value = "客户类型名称")
+    private String typeName;
+
+    /**
+     * 是否显示(0-显示,1-不显示)
+     */
+    @ExcelProperty(value = "是否显示", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "sys_platform_yes_no")
+    private String isShow;
+
+    /**
+     * 数据来源
+     */
+    @ExcelProperty(value = "数据来源")
+    private String dataSource;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 131 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ComDeptVo.java

@@ -0,0 +1,131 @@
+package org.dromara.system.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.system.domain.ComDept;
+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;
+
+
+
+/**
+ * 企业部门视图对象 com_dept
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ComDept.class)
+public class ComDeptVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 部门ID
+     */
+    @ExcelProperty(value = "部门ID")
+    private Long id;
+
+    /**
+     * 部门编码
+     */
+    @ExcelProperty(value = "部门编码")
+    private String deptCode;
+
+    /**
+     * 企业ID
+     */
+    @ExcelProperty(value = "企业ID")
+    private Long companyId;
+
+    /**
+     * 部门名称
+     */
+    @ExcelProperty(value = "部门名称")
+    private String deptName;
+
+    /**
+     * 父部门ID
+     */
+    @ExcelProperty(value = "父部门ID")
+    private Long parentId;
+
+    /**
+     * 祖级部门ID路径
+     */
+    @ExcelProperty(value = "祖级部门ID路径")
+    private String ancestors;
+
+    /**
+     * 部门类别
+     */
+    @ExcelProperty(value = "部门类别")
+    private String deptCategory;
+
+    /**
+     * 部门层级深度
+     */
+    @ExcelProperty(value = "部门层级深度")
+    private Long level;
+
+    /**
+     * 负责人用户ID
+     */
+    @ExcelProperty(value = "负责人用户ID")
+    private Long leader;
+
+    /**
+     * 联系电话
+     */
+    @ExcelProperty(value = "联系电话")
+    private String phone;
+
+    /**
+     * 邮箱
+     */
+    @ExcelProperty(value = "邮箱")
+    private String email;
+
+    /**
+     * 生效日期
+     */
+    @ExcelProperty(value = "生效日期")
+    private Date validFrom;
+
+    /**
+     * 失效日期
+     */
+    @ExcelProperty(value = "失效日期")
+    private Date validTo;
+
+    /**
+     * 部门状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "部门状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "sys_platform_yes_no")
+    private String status;
+
+    /**
+     * 数据来源
+     */
+    @ExcelProperty(value = "数据来源")
+    private String dataSource;
+
+    /**
+     * 显示顺序
+     */
+    @ExcelProperty(value = "显示顺序")
+    private Long orderNum;
+
+
+}

+ 69 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ComPostVo.java

@@ -0,0 +1,69 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.ComPost;
+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;
+
+
+
+/**
+ * 岗位信息视图对象 com_post
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ComPost.class)
+public class ComPostVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 岗位ID
+     */
+    @ExcelProperty(value = "岗位ID")
+    private Long postId;
+
+    /**
+     * 岗位编码
+     */
+    @ExcelProperty(value = "岗位编码")
+    private String postCode;
+
+    /**
+     * 岗位名称
+     */
+    @ExcelProperty(value = "岗位名称")
+    private String postName;
+
+    /**
+     * 数据来源
+     */
+    @ExcelProperty(value = "数据来源")
+    private String dataSource;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "sys_platform_yes_no")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 126 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ComStaffVo.java

@@ -0,0 +1,126 @@
+package org.dromara.system.domain.vo;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.system.domain.ComStaff;
+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;
+
+
+/**
+ * 人员信息视图对象 com_staff
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ComStaff.class)
+public class ComStaffVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 人员ID
+     */
+    @ExcelProperty(value = "人员ID")
+    private Long staffId;
+
+    /**
+     * 人员编码
+     */
+    @ExcelProperty(value = "人员编码")
+    private String staffCode;
+
+    /**
+     * 姓名
+     */
+    @ExcelProperty(value = "姓名")
+    private String staffName;
+
+    /**
+     * 所属部门编码
+     */
+    @ExcelProperty(value = "所属部门编码")
+    private Long deptId;
+
+    /**
+     * 联系电话
+     */
+    @ExcelProperty(value = "联系电话")
+    private String phone;
+
+    /**
+     * 岗位编码
+     */
+    @ExcelProperty(value = "岗位编码")
+    private Long postId;
+
+    /**
+     * 性别
+     */
+    @ExcelProperty(value = "性别", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "sys_user_sex")
+    private String sex;
+
+    /**
+     * 角色编码
+     */
+    @ExcelProperty(value = "角色编码")
+    private Long roleId;
+
+    /**
+     * 数据来源
+     */
+    @ExcelProperty(value = "数据来源")
+    private String dataSource;
+
+    /**
+     * 密码
+     */
+    @ExcelProperty(value = "密码")
+    private String password;
+
+    /**
+     * 有效期起始
+     */
+    @ExcelProperty(value = "有效期起始")
+    private Date validFrom;
+
+    /**
+     * 有效期截止
+     */
+    @ExcelProperty(value = "有效期截止")
+    private Date validTo;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "sys_platform_yes_no")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    private String deptName;
+
+    private String deptCode;
+
+    private String postName;
+
+
+}

+ 76 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CreditLevelVo.java

@@ -0,0 +1,76 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.CreditLevel;
+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;
+
+
+
+/**
+ * 信用等级配置视图对象 credit_level
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = CreditLevel.class)
+public class CreditLevelVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /**
+     * 信用等级编码
+     */
+    @ExcelProperty(value = "信用等级编码")
+    private String creditLevelNo;
+
+    /**
+     * 信用等级名称
+     */
+    @ExcelProperty(value = "信用等级名称")
+    private String creditLevelName;
+
+    /**
+     * 是否显示(0-显示,1-不显示)
+     */
+    @ExcelProperty(value = "是否显示", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "sys_platform_yes_no")
+    private String isShow;
+
+    /**
+     * 数据来源
+     */
+    @ExcelProperty(value = "数据来源")
+    private String dataSource;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 69 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SettlementLevelVo.java

@@ -0,0 +1,69 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.SettlementLevel;
+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;
+
+
+/**
+ * 结算等级视图对象 settlement_level
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SettlementLevel.class)
+public class SettlementLevelVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /**
+     * 结算等级编码
+     */
+    @ExcelProperty(value = "结算等级编码")
+    private String settlementLevelId;
+
+    /**
+     * 结算等级名称
+     */
+    @ExcelProperty(value = "结算等级名称")
+    private String settlementLevelName;
+
+    /**
+     * 是否显示(0-显示,1-不显示)
+     */
+    @ExcelProperty(value = "是否显示", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "sys_platform_yes_no")
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 70 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SettlementMethodVo.java

@@ -0,0 +1,70 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.SettlementMethod;
+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;
+
+
+
+/**
+ * 结算方式视图对象 settlement_method
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SettlementMethod.class)
+public class SettlementMethodVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /**
+     * 结算方式编码
+     */
+    @ExcelProperty(value = "结算方式编码")
+    private String settlementId;
+
+    /**
+     * 结算方式名称
+     */
+    @ExcelProperty(value = "结算方式名称")
+    private String settlementName;
+
+    /**
+     * 是否显示(0-是,1-否)
+     */
+    @ExcelProperty(value = "是否显示", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "sys_platform_yes_no")
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 24 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteComCompanyServiceImpl.java

@@ -0,0 +1,24 @@
+package org.dromara.system.dubbo;
+
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.system.api.RemoteComCompanyService;
+import org.dromara.system.service.IComCompanyService;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+import java.util.Set;
+
+@RequiredArgsConstructor
+@Service
+@DubboService
+public class RemoteComCompanyServiceImpl implements RemoteComCompanyService {
+
+    private final IComCompanyService comCompanyService;
+
+
+    @Override
+    public Map<Long, String> selectCompanyNameByIds(Set<Long> ids) {
+        return comCompanyService.selectCompanyNameByIds(ids);
+    }
+}

+ 23 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteComDeptServiceImpl.java

@@ -0,0 +1,23 @@
+package org.dromara.system.dubbo;
+
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.system.api.RemoteComDeptService;
+import org.dromara.system.service.IComDeptService;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+import java.util.Set;
+
+@RequiredArgsConstructor
+@Service
+@DubboService
+public class RemoteComDeptServiceImpl implements RemoteComDeptService {
+
+    private final IComDeptService comDeptService;
+
+    @Override
+    public Map<Long, String> selectDeptNameByIds(Set<Long> ids) {
+        return comDeptService.selectDeptNameByIds(ids);
+    }
+}

+ 23 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteComPostServiceImpl.java

@@ -0,0 +1,23 @@
+package org.dromara.system.dubbo;
+
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.system.api.RemoteComPostService;
+import org.dromara.system.service.IComPostService;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+import java.util.Set;
+
+@RequiredArgsConstructor
+@Service
+@DubboService
+public class RemoteComPostServiceImpl implements RemoteComPostService {
+
+    private final IComPostService comPostService;
+
+    @Override
+    public Map<Long, String> selectPostNameByIds(Set<Long> ids) {
+        return comPostService.selectPostNameByIds(ids);
+    }
+}

+ 23 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteComStaffServiceImpl.java

@@ -0,0 +1,23 @@
+package org.dromara.system.dubbo;
+
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.system.api.RemoteComStaffService;
+import org.dromara.system.service.IComStaffService;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+import java.util.Set;
+
+@RequiredArgsConstructor
+@Service
+@DubboService
+public class RemoteComStaffServiceImpl implements RemoteComStaffService {
+
+    private final IComStaffService comStaffService;
+
+    @Override
+    public Map<Long, String> selectStaffNameByIds(Set<Long> ids) {
+        return comStaffService.selectStaffNameByIds(ids);
+    }
+}

+ 15 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ComBankMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.ComBank;
+import org.dromara.system.domain.vo.ComBankVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 银行信息Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+public interface ComBankMapper extends BaseMapperPlus<ComBank, ComBankVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ComCompanyMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.ComCompany;
+import org.dromara.system.domain.vo.ComCompanyVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 公司信息Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+public interface ComCompanyMapper extends BaseMapperPlus<ComCompany, ComCompanyVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ComCustomerLevelMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.ComCustomerLevel;
+import org.dromara.system.domain.vo.ComCustomerLevelVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 客户等级配置Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+public interface ComCustomerLevelMapper extends BaseMapperPlus<ComCustomerLevel, ComCustomerLevelVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ComCustomerTypeMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.ComCustomerType;
+import org.dromara.system.domain.vo.ComCustomerTypeVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 客户类型配置Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+public interface ComCustomerTypeMapper extends BaseMapperPlus<ComCustomerType, ComCustomerTypeVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ComDeptMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.ComDept;
+import org.dromara.system.domain.vo.ComDeptVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 企业部门Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+public interface ComDeptMapper extends BaseMapperPlus<ComDept, ComDeptVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ComPostMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.ComPost;
+import org.dromara.system.domain.vo.ComPostVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 岗位信息Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+public interface ComPostMapper extends BaseMapperPlus<ComPost, ComPostVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/ComStaffMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.ComStaff;
+import org.dromara.system.domain.vo.ComStaffVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 人员信息Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+public interface ComStaffMapper extends BaseMapperPlus<ComStaff, ComStaffVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/CreditLevelMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.CreditLevel;
+import org.dromara.system.domain.vo.CreditLevelVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 信用等级配置Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+public interface CreditLevelMapper extends BaseMapperPlus<CreditLevel, CreditLevelVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SettlementLevelMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.SettlementLevel;
+import org.dromara.system.domain.vo.SettlementLevelVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 结算等级Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+public interface SettlementLevelMapper extends BaseMapperPlus<SettlementLevel, SettlementLevelVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SettlementMethodMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.SettlementMethod;
+import org.dromara.system.domain.vo.SettlementMethodVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 结算方式Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+public interface SettlementMethodMapper extends BaseMapperPlus<SettlementMethod, SettlementMethodVo> {
+
+}

+ 76 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IComBankService.java

@@ -0,0 +1,76 @@
+package org.dromara.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.system.domain.ComBank;
+import org.dromara.system.domain.bo.SysTenantBo;
+import org.dromara.system.domain.vo.ComBankVo;
+import org.dromara.system.domain.bo.ComBankBo;
+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 LionLi
+ * @date 2025-12-23
+ */
+public interface IComBankService extends IService<ComBank> {
+
+    /**
+     * 查询银行信息
+     *
+     * @param id 主键
+     * @return 银行信息
+     */
+    ComBankVo queryById(Long id);
+
+    /**
+     * 分页查询银行信息列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 银行信息分页列表
+     */
+    TableDataInfo<ComBankVo> queryPageList(ComBankBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的银行信息列表
+     *
+     * @param bo 查询条件
+     * @return 银行信息列表
+     */
+    List<ComBankVo> queryList(ComBankBo bo);
+
+    /**
+     * 新增银行信息
+     *
+     * @param bo 银行信息
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ComBankBo bo);
+
+    /**
+     * 修改show状态
+     */
+    int updateShowStatus(ComBankBo bo);
+
+    /**
+     * 修改银行信息
+     *
+     * @param bo 银行信息
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ComBankBo bo);
+
+    /**
+     * 校验并批量删除银行信息信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 80 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IComCompanyService.java

@@ -0,0 +1,80 @@
+package org.dromara.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.system.domain.ComCompany;
+import org.dromara.system.domain.bo.ComBankBo;
+import org.dromara.system.domain.vo.ComCompanyVo;
+import org.dromara.system.domain.bo.ComCompanyBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * 公司信息Service接口
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+public interface IComCompanyService extends IService<ComCompany> {
+
+    /**
+     * 查询公司信息
+     *
+     * @param id 主键
+     * @return 公司信息
+     */
+    ComCompanyVo queryById(Long id);
+
+    /**
+     * 分页查询公司信息列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 公司信息分页列表
+     */
+    TableDataInfo<ComCompanyVo> queryPageList(ComCompanyBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的公司信息列表
+     *
+     * @param bo 查询条件
+     * @return 公司信息列表
+     */
+    List<ComCompanyVo> queryList(ComCompanyBo bo);
+
+    /**
+     * 新增公司信息
+     *
+     * @param bo 公司信息
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ComCompanyBo bo);
+
+    /**
+     * 修改公司信息
+     *
+     * @param bo 公司信息
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ComCompanyBo bo);
+
+    /**
+     * 修改show状态
+     */
+    int updateShowStatus(ComCompanyBo bo);
+
+    Map<Long, String> selectCompanyNameByIds(Set<Long> ids);
+
+    /**
+     * 校验并批量删除公司信息信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 76 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IComCustomerLevelService.java

@@ -0,0 +1,76 @@
+package org.dromara.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.system.domain.ComCustomerLevel;
+import org.dromara.system.domain.bo.ComBankBo;
+import org.dromara.system.domain.vo.ComCustomerLevelVo;
+import org.dromara.system.domain.bo.ComCustomerLevelBo;
+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 LionLi
+ * @date 2025-12-24
+ */
+public interface IComCustomerLevelService extends IService<ComCustomerLevel> {
+
+    /**
+     * 查询客户等级配置
+     *
+     * @param id 主键
+     * @return 客户等级配置
+     */
+    ComCustomerLevelVo queryById(Long id);
+
+    /**
+     * 分页查询客户等级配置列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 客户等级配置分页列表
+     */
+    TableDataInfo<ComCustomerLevelVo> queryPageList(ComCustomerLevelBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的客户等级配置列表
+     *
+     * @param bo 查询条件
+     * @return 客户等级配置列表
+     */
+    List<ComCustomerLevelVo> queryList(ComCustomerLevelBo bo);
+
+    /**
+     * 新增客户等级配置
+     *
+     * @param bo 客户等级配置
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ComCustomerLevelBo bo);
+
+    /**
+     * 修改客户等级配置
+     *
+     * @param bo 客户等级配置
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ComCustomerLevelBo bo);
+
+    /**
+     * 修改show状态
+     */
+    int updateShowStatus(ComCustomerLevelBo bo);
+
+    /**
+     * 校验并批量删除客户等级配置信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 76 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IComCustomerTypeService.java

@@ -0,0 +1,76 @@
+package org.dromara.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.system.domain.ComCustomerType;
+import org.dromara.system.domain.bo.ComCustomerLevelBo;
+import org.dromara.system.domain.vo.ComCustomerTypeVo;
+import org.dromara.system.domain.bo.ComCustomerTypeBo;
+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 LionLi
+ * @date 2025-12-24
+ */
+public interface IComCustomerTypeService extends IService<ComCustomerType> {
+
+    /**
+     * 查询客户类型配置
+     *
+     * @param id 主键
+     * @return 客户类型配置
+     */
+    ComCustomerTypeVo queryById(Long id);
+
+    /**
+     * 分页查询客户类型配置列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 客户类型配置分页列表
+     */
+    TableDataInfo<ComCustomerTypeVo> queryPageList(ComCustomerTypeBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的客户类型配置列表
+     *
+     * @param bo 查询条件
+     * @return 客户类型配置列表
+     */
+    List<ComCustomerTypeVo> queryList(ComCustomerTypeBo bo);
+
+    /**
+     * 新增客户类型配置
+     *
+     * @param bo 客户类型配置
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ComCustomerTypeBo bo);
+
+    /**
+     * 修改客户类型配置
+     *
+     * @param bo 客户类型配置
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ComCustomerTypeBo bo);
+
+    /**
+     * 修改show状态
+     */
+    int updateShowStatus(ComCustomerTypeBo bo);
+
+    /**
+     * 校验并批量删除客户类型配置信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 70 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IComDeptService.java

@@ -0,0 +1,70 @@
+package org.dromara.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.system.domain.ComDept;
+import org.dromara.system.domain.bo.ComBankBo;
+import org.dromara.system.domain.vo.ComDeptVo;
+import org.dromara.system.domain.bo.ComDeptBo;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * 企业部门Service接口
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+public interface IComDeptService extends IService<ComDept> {
+
+    /**
+     * 查询企业部门
+     *
+     * @param id 主键
+     * @return 企业部门
+     */
+    ComDeptVo queryById(Long id);
+
+
+    /**
+     * 查询符合条件的企业部门列表
+     *
+     * @param bo 查询条件
+     * @return 企业部门列表
+     */
+    List<ComDeptVo> queryList(ComDeptBo bo);
+
+    /**
+     * 新增企业部门
+     *
+     * @param bo 企业部门
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ComDeptBo bo);
+
+    /**
+     * 修改企业部门
+     *
+     * @param bo 企业部门
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ComDeptBo bo);
+
+    /**
+     * 修改状态
+     */
+    int updateStatus(ComDeptBo bo);
+
+    Map<Long, String> selectDeptNameByIds(Set<Long> ids);
+
+    /**
+     * 校验并批量删除企业部门信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 80 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IComPostService.java

@@ -0,0 +1,80 @@
+package org.dromara.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.system.domain.ComPost;
+import org.dromara.system.domain.bo.ComDeptBo;
+import org.dromara.system.domain.vo.ComPostVo;
+import org.dromara.system.domain.bo.ComPostBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * 岗位信息Service接口
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+public interface IComPostService extends IService<ComPost> {
+
+    /**
+     * 查询岗位信息
+     *
+     * @param postId 主键
+     * @return 岗位信息
+     */
+    ComPostVo queryById(Long postId);
+
+    /**
+     * 分页查询岗位信息列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 岗位信息分页列表
+     */
+    TableDataInfo<ComPostVo> queryPageList(ComPostBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的岗位信息列表
+     *
+     * @param bo 查询条件
+     * @return 岗位信息列表
+     */
+    List<ComPostVo> queryList(ComPostBo bo);
+
+    /**
+     * 新增岗位信息
+     *
+     * @param bo 岗位信息
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ComPostBo bo);
+
+    /**
+     * 修改岗位信息
+     *
+     * @param bo 岗位信息
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ComPostBo bo);
+
+    /**
+     * 修改状态
+     */
+    int updateStatus(ComPostBo bo);
+
+    Map<Long, String> selectPostNameByIds(Set<Long> ids);
+
+    /**
+     * 校验并批量删除岗位信息信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 80 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IComStaffService.java

@@ -0,0 +1,80 @@
+package org.dromara.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.system.domain.ComStaff;
+import org.dromara.system.domain.bo.ComPostBo;
+import org.dromara.system.domain.vo.ComStaffVo;
+import org.dromara.system.domain.bo.ComStaffBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * 人员信息Service接口
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+public interface IComStaffService extends IService<ComStaff> {
+
+    /**
+     * 查询人员信息
+     *
+     * @param staffId 主键
+     * @return 人员信息
+     */
+    ComStaffVo queryById(Long staffId);
+
+    /**
+     * 分页查询人员信息列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 人员信息分页列表
+     */
+    TableDataInfo<ComStaffVo> queryPageList(ComStaffBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的人员信息列表
+     *
+     * @param bo 查询条件
+     * @return 人员信息列表
+     */
+    List<ComStaffVo> queryList(ComStaffBo bo);
+
+    /**
+     * 新增人员信息
+     *
+     * @param bo 人员信息
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ComStaffBo bo);
+
+    /**
+     * 修改人员信息
+     *
+     * @param bo 人员信息
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ComStaffBo bo);
+
+    /**
+     * 修改状态
+     */
+    int updateStatus(ComStaffBo bo);
+
+    Map<Long, String> selectStaffNameByIds(Set<Long> ids);
+
+    /**
+     * 校验并批量删除人员信息信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 73 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ICreditLevelService.java

@@ -0,0 +1,73 @@
+package org.dromara.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.system.domain.CreditLevel;
+import org.dromara.system.domain.bo.ComBankBo;
+import org.dromara.system.domain.vo.CreditLevelVo;
+import org.dromara.system.domain.bo.CreditLevelBo;
+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 LionLi
+ * @date 2025-12-23
+ */
+public interface ICreditLevelService extends IService<CreditLevel> {
+
+    /**
+     * 查询信用等级配置
+     *
+     * @param id 主键
+     * @return 信用等级配置
+     */
+    CreditLevelVo queryById(Long id);
+
+    /**
+     * 分页查询信用等级配置列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 信用等级配置分页列表
+     */
+    TableDataInfo<CreditLevelVo> queryPageList(CreditLevelBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的信用等级配置列表
+     *
+     * @param bo 查询条件
+     * @return 信用等级配置列表
+     */
+    List<CreditLevelVo> queryList(CreditLevelBo bo);
+
+    /**
+     * 新增信用等级配置
+     *
+     * @param bo 信用等级配置
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(CreditLevelBo bo);
+
+    /**
+     * 修改信用等级配置
+     *
+     * @param bo 信用等级配置
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(CreditLevelBo bo);
+
+    int updateShowStatus(CreditLevelBo bo);
+
+    /**
+     * 校验并批量删除信用等级配置信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 74 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISettlementLevelService.java

@@ -0,0 +1,74 @@
+package org.dromara.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.system.domain.SettlementLevel;
+import org.dromara.system.domain.SettlementMethod;
+import org.dromara.system.domain.bo.SettlementMethodBo;
+import org.dromara.system.domain.vo.SettlementLevelVo;
+import org.dromara.system.domain.bo.SettlementLevelBo;
+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 LionLi
+ * @date 2025-12-23
+ */
+public interface ISettlementLevelService extends IService<SettlementLevel> {
+
+    /**
+     * 查询结算等级
+     *
+     * @param id 主键
+     * @return 结算等级
+     */
+    SettlementLevelVo queryById(Long id);
+
+    /**
+     * 分页查询结算等级列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 结算等级分页列表
+     */
+    TableDataInfo<SettlementLevelVo> queryPageList(SettlementLevelBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的结算等级列表
+     *
+     * @param bo 查询条件
+     * @return 结算等级列表
+     */
+    List<SettlementLevelVo> queryList(SettlementLevelBo bo);
+
+    /**
+     * 新增结算等级
+     *
+     * @param bo 结算等级
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(SettlementLevelBo bo);
+
+    /**
+     * 修改结算等级
+     *
+     * @param bo 结算等级
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(SettlementLevelBo bo);
+
+    int updateShowStatus(SettlementLevelBo bo);
+
+    /**
+     * 校验并批量删除结算等级信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 73 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISettlementMethodService.java

@@ -0,0 +1,73 @@
+package org.dromara.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.system.domain.SettlementMethod;
+import org.dromara.system.domain.bo.ComBankBo;
+import org.dromara.system.domain.vo.SettlementMethodVo;
+import org.dromara.system.domain.bo.SettlementMethodBo;
+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 LionLi
+ * @date 2025-12-23
+ */
+public interface ISettlementMethodService extends IService<SettlementMethod> {
+
+    /**
+     * 查询结算方式
+     *
+     * @param id 主键
+     * @return 结算方式
+     */
+    SettlementMethodVo queryById(Long id);
+
+    /**
+     * 分页查询结算方式列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 结算方式分页列表
+     */
+    TableDataInfo<SettlementMethodVo> queryPageList(SettlementMethodBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的结算方式列表
+     *
+     * @param bo 查询条件
+     * @return 结算方式列表
+     */
+    List<SettlementMethodVo> queryList(SettlementMethodBo bo);
+
+    /**
+     * 新增结算方式
+     *
+     * @param bo 结算方式
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(SettlementMethodBo bo);
+
+    /**
+     * 修改结算方式
+     *
+     * @param bo 结算方式
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(SettlementMethodBo bo);
+
+    int updateShowStatus(SettlementMethodBo bo);
+
+    /**
+     * 校验并批量删除结算方式信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 7 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysCompanyService.java

@@ -2,6 +2,7 @@ package org.dromara.system.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.dromara.system.domain.SysCompany;
+import org.dromara.system.domain.bo.ComBankBo;
 import org.dromara.system.domain.vo.SysCompanyVo;
 import org.dromara.system.domain.bo.SysCompanyBo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -16,7 +17,7 @@ import java.util.List;
  * @author LionLi
  * @date 2025-12-19
  */
-public interface ISysCompanyService extends IService<SysCompany>{
+public interface ISysCompanyService extends IService<SysCompany> {
 
     /**
      * 查询公司信息
@@ -59,6 +60,11 @@ public interface ISysCompanyService extends IService<SysCompany>{
      */
     Boolean updateByBo(SysCompanyBo bo);
 
+    /**
+     * 修改状态
+     */
+    int updateStatus(SysCompanyBo bo);
+
     /**
      * 校验并批量删除公司信息信息
      *

+ 164 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ComBankServiceImpl.java

@@ -0,0 +1,164 @@
+package org.dromara.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.constant.CacheNames;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.redis.utils.SequenceUtils;
+import org.dromara.system.domain.SysTenant;
+import org.dromara.system.domain.bo.SysTenantBo;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.ComBankBo;
+import org.dromara.system.domain.vo.ComBankVo;
+import org.dromara.system.domain.ComBank;
+import org.dromara.system.mapper.ComBankMapper;
+import org.dromara.system.service.IComBankService;
+
+import java.time.Duration;
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 银行信息Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ComBankServiceImpl extends ServiceImpl<ComBankMapper, ComBank> implements IComBankService {
+
+    private static final String BN_ID_KEY = "com_bank:bn_id";
+
+    private final ComBankMapper baseMapper;
+
+    /**
+     * 查询银行信息
+     *
+     * @param id 主键
+     * @return 银行信息
+     */
+    @Override
+    public ComBankVo queryById(Long id) {
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询银行信息列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 银行信息分页列表
+     */
+    @Override
+    public TableDataInfo<ComBankVo> queryPageList(ComBankBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ComBank> lqw = buildQueryWrapper(bo);
+        Page<ComBankVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的银行信息列表
+     *
+     * @param bo 查询条件
+     * @return 银行信息列表
+     */
+    @Override
+    public List<ComBankVo> queryList(ComBankBo bo) {
+        LambdaQueryWrapper<ComBank> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ComBank> buildQueryWrapper(ComBankBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ComBank> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ComBank::getId);
+        lqw.eq(bo.getBnId() != null, ComBank::getBnId, bo.getBnId());
+        lqw.like(StringUtils.isNotBlank(bo.getBnName()), ComBank::getBnName, bo.getBnName());
+        lqw.eq(StringUtils.isNotBlank(bo.getDataSource()), ComBank::getDataSource, bo.getDataSource());
+        lqw.eq(StringUtils.isNotBlank(bo.getBnAddr()), ComBank::getBnAddr, bo.getBnAddr());
+        lqw.eq(StringUtils.isNotBlank(bo.getBnCatgId()), ComBank::getBnCatgId, bo.getBnCatgId());
+        lqw.eq(StringUtils.isNotBlank(bo.getFaxNo()), ComBank::getFaxNo, bo.getFaxNo());
+        lqw.eq(StringUtils.isNotBlank(bo.getTelNo()), ComBank::getTelNo, bo.getTelNo());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsShow()), ComBank::getIsShow, bo.getIsShow());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), ComBank::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增银行信息
+     *
+     * @param bo 银行信息
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ComBankBo bo) {
+        bo.setBnId(SequenceUtils.nextPaddedIdStr(BN_ID_KEY, Duration.ofDays(3650), 6));
+        ComBank add = MapstructUtils.convert(bo, ComBank.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改银行信息
+     *
+     * @param bo 银行信息
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ComBankBo bo) {
+        ComBank update = MapstructUtils.convert(bo, ComBank.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 修改显示状态
+     *
+     * @param bo 信息
+     * @return 结果
+     */
+    @Override
+    public int updateShowStatus(ComBankBo bo) {
+        ComBank bank = new ComBank();
+        bank.setId(bo.getId());
+        bank.setIsShow(bo.getIsShow());
+        return baseMapper.updateById(bank);
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ComBank entity) {
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除银行信息信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 212 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ComCompanyServiceImpl.java

@@ -0,0 +1,212 @@
+package org.dromara.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.context.PlatformContext;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.redis.utils.SequenceUtils;
+import org.dromara.system.api.domain.vo.RemoteDeptVo;
+import org.dromara.system.domain.ComBank;
+import org.dromara.system.domain.ComDept;
+import org.dromara.system.domain.SysDept;
+import org.dromara.system.domain.bo.ComBankBo;
+import org.dromara.system.domain.vo.SysDeptVo;
+import org.dromara.system.mapper.SysDeptMapper;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.ComCompanyBo;
+import org.dromara.system.domain.vo.ComCompanyVo;
+import org.dromara.system.domain.ComCompany;
+import org.dromara.system.mapper.ComCompanyMapper;
+import org.dromara.system.service.IComCompanyService;
+
+import java.time.Duration;
+import java.util.*;
+
+/**
+ * 公司信息Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ComCompanyServiceImpl extends ServiceImpl<ComCompanyMapper, ComCompany> implements IComCompanyService {
+
+    private static final String COMPANY_CODE_KEY = "com_company:company_code";
+
+    private final ComCompanyMapper baseMapper;
+
+    private final SysDeptMapper deptMapper;
+
+    /**
+     * 查询公司信息
+     *
+     * @param id 主键
+     * @return 公司信息
+     */
+    @Override
+    public ComCompanyVo queryById(Long id) {
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询公司信息列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 公司信息分页列表
+     */
+    @Override
+    public TableDataInfo<ComCompanyVo> queryPageList(ComCompanyBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ComCompany> lqw = buildQueryWrapper(bo);
+        Page<ComCompanyVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的公司信息列表
+     *
+     * @param bo 查询条件
+     * @return 公司信息列表
+     */
+    @Override
+    public List<ComCompanyVo> queryList(ComCompanyBo bo) {
+        LambdaQueryWrapper<ComCompany> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ComCompany> buildQueryWrapper(ComCompanyBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ComCompany> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ComCompany::getId);
+        lqw.eq(bo.getAccBnId() != null, ComCompany::getAccBnId, bo.getAccBnId());
+        lqw.eq(StringUtils.isNotBlank(bo.getAccBnNo()), ComCompany::getAccBnNo, bo.getAccBnNo());
+        lqw.eq(StringUtils.isNotBlank(bo.getAddress()), ComCompany::getAddress, bo.getAddress());
+        lqw.eq(bo.getBegDate() != null, ComCompany::getBegDate, bo.getBegDate());
+        lqw.eq(StringUtils.isNotBlank(bo.getBusScp()), ComCompany::getBusScp, bo.getBusScp());
+        lqw.eq(bo.getCapAmt() != null, ComCompany::getCapAmt, bo.getCapAmt());
+        lqw.like(StringUtils.isNotBlank(bo.getCompanyFullName()), ComCompany::getCompanyFullName, bo.getCompanyFullName());
+        lqw.eq(StringUtils.isNotBlank(bo.getCorporation()), ComCompany::getCorporation, bo.getCorporation());
+        lqw.eq(StringUtils.isNotBlank(bo.getEmail()), ComCompany::getEmail, bo.getEmail());
+        lqw.eq(bo.getEndDate() != null, ComCompany::getEndDate, bo.getEndDate());
+        lqw.eq(bo.getFoundDate() != null, ComCompany::getFoundDate, bo.getFoundDate());
+        lqw.eq(StringUtils.isNotBlank(bo.getInCustId()), ComCompany::getInCustId, bo.getInCustId());
+        lqw.eq(StringUtils.isNotBlank(bo.getInSupId()), ComCompany::getInSupId, bo.getInSupId());
+        lqw.eq(StringUtils.isNotBlank(bo.getLelPer()), ComCompany::getLelPer, bo.getLelPer());
+        lqw.eq(StringUtils.isNotBlank(bo.getPhone()), ComCompany::getPhone, bo.getPhone());
+        lqw.eq(StringUtils.isNotBlank(bo.getPrincipal()), ComCompany::getPrincipal, bo.getPrincipal());
+        lqw.eq(StringUtils.isNotBlank(bo.getRegAddr()), ComCompany::getRegAddr, bo.getRegAddr());
+        lqw.eq(bo.getRegDate() != null, ComCompany::getRegDate, bo.getRegDate());
+        lqw.eq(StringUtils.isNotBlank(bo.getRegOrg()), ComCompany::getRegOrg, bo.getRegOrg());
+        lqw.eq(StringUtils.isNotBlank(bo.getTaxNo()), ComCompany::getTaxNo, bo.getTaxNo());
+        lqw.eq(StringUtils.isNotBlank(bo.getCompanyCode()), ComCompany::getCompanyCode, bo.getCompanyCode());
+        lqw.like(StringUtils.isNotBlank(bo.getCompanyName()), ComCompany::getCompanyName, bo.getCompanyName());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsShow()), ComCompany::getIsShow, bo.getIsShow());
+        lqw.eq(StringUtils.isNotBlank(bo.getDataSource()), ComCompany::getDataSource, bo.getDataSource());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ComCompany::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), ComCompany::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增公司信息
+     *
+     * @param bo 公司信息
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ComCompanyBo bo) {
+
+
+        bo.setCompanyCode(SequenceUtils.nextPaddedIdStr(COMPANY_CODE_KEY, Duration.ofDays(3650), 4));
+        ComCompany add = MapstructUtils.convert(bo, ComCompany.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改公司信息
+     *
+     * @param bo 公司信息
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ComCompanyBo bo) {
+        ComCompany update = MapstructUtils.convert(bo, ComCompany.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 修改显示状态
+     *
+     * @param bo 信息
+     * @return 结果
+     */
+    @Override
+    public int updateShowStatus(ComCompanyBo bo) {
+        ComCompany company = new ComCompany();
+        company.setId(bo.getId());
+        company.setIsShow(bo.getIsShow());
+        return baseMapper.updateById(company);
+    }
+
+    public Map<Long, String> selectCompanyNameByIds(Set<Long> ids) {
+        if (ids == null || ids.isEmpty()) {
+            return Collections.emptyMap();
+        }
+
+        // 限制批量大小
+        if (ids.size() > 1000) {
+            throw new IllegalArgumentException("Batch size exceeds limit: " + ids.size());
+        }
+
+        List<ComCompany> companyList = baseMapper.selectByIds(ids);
+        Map<Long, String> resultMap = new HashMap<>(ids.size());
+
+        // 初始化所有请求的 ID 为 null
+        ids.forEach(id -> resultMap.put(id, null));
+
+        if (companyList != null) {
+            companyList.stream()
+                .filter(company -> company.getId() != null && company.getCompanyName() != null)
+                .forEach(company -> resultMap.put(company.getId(), company.getCompanyName()));
+        }
+
+        return resultMap;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ComCompany entity) {
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除公司信息信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 159 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ComCustomerLevelServiceImpl.java

@@ -0,0 +1,159 @@
+package org.dromara.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.redis.utils.SequenceUtils;
+import org.dromara.system.domain.ComBank;
+import org.dromara.system.domain.bo.ComBankBo;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.ComCustomerLevelBo;
+import org.dromara.system.domain.vo.ComCustomerLevelVo;
+import org.dromara.system.domain.ComCustomerLevel;
+import org.dromara.system.mapper.ComCustomerLevelMapper;
+import org.dromara.system.service.IComCustomerLevelService;
+
+import java.time.Duration;
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 客户等级配置Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ComCustomerLevelServiceImpl extends ServiceImpl<ComCustomerLevelMapper, ComCustomerLevel> implements IComCustomerLevelService {
+
+    private static final String CUSTOMER_LEVEL_CODE_KEY = "com_customer_level:customer_level_code";
+
+    private final ComCustomerLevelMapper baseMapper;
+
+    /**
+     * 查询客户等级配置
+     *
+     * @param id 主键
+     * @return 客户等级配置
+     */
+    @Override
+    public ComCustomerLevelVo queryById(Long id) {
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询客户等级配置列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 客户等级配置分页列表
+     */
+    @Override
+    public TableDataInfo<ComCustomerLevelVo> queryPageList(ComCustomerLevelBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ComCustomerLevel> lqw = buildQueryWrapper(bo);
+        Page<ComCustomerLevelVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的客户等级配置列表
+     *
+     * @param bo 查询条件
+     * @return 客户等级配置列表
+     */
+    @Override
+    public List<ComCustomerLevelVo> queryList(ComCustomerLevelBo bo) {
+        LambdaQueryWrapper<ComCustomerLevel> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ComCustomerLevel> buildQueryWrapper(ComCustomerLevelBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ComCustomerLevel> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ComCustomerLevel::getId);
+        lqw.eq(StringUtils.isNotBlank(bo.getLevelCode()), ComCustomerLevel::getLevelCode, bo.getLevelCode());
+        lqw.like(StringUtils.isNotBlank(bo.getLevelName()), ComCustomerLevel::getLevelName, bo.getLevelName());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsShow()), ComCustomerLevel::getIsShow, bo.getIsShow());
+        lqw.eq(StringUtils.isNotBlank(bo.getDataSource()), ComCustomerLevel::getDataSource, bo.getDataSource());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ComCustomerLevel::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), ComCustomerLevel::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增客户等级配置
+     *
+     * @param bo 客户等级配置
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ComCustomerLevelBo bo) {
+        bo.setLevelCode(SequenceUtils.nextPaddedIdStr(CUSTOMER_LEVEL_CODE_KEY, Duration.ofDays(3650), 4));
+        ComCustomerLevel add = MapstructUtils.convert(bo, ComCustomerLevel.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改客户等级配置
+     *
+     * @param bo 客户等级配置
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ComCustomerLevelBo bo) {
+        ComCustomerLevel update = MapstructUtils.convert(bo, ComCustomerLevel.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 修改显示状态
+     *
+     * @param bo 信息
+     * @return 结果
+     */
+    @Override
+    public int updateShowStatus(ComCustomerLevelBo bo) {
+        ComCustomerLevel level = new ComCustomerLevel();
+        level.setId(bo.getId());
+        level.setIsShow(bo.getIsShow());
+        return baseMapper.updateById(level);
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ComCustomerLevel entity) {
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除客户等级配置信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 159 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ComCustomerTypeServiceImpl.java

@@ -0,0 +1,159 @@
+package org.dromara.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.redis.utils.SequenceUtils;
+import org.dromara.system.domain.ComCustomerLevel;
+import org.dromara.system.domain.bo.ComCustomerLevelBo;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.ComCustomerTypeBo;
+import org.dromara.system.domain.vo.ComCustomerTypeVo;
+import org.dromara.system.domain.ComCustomerType;
+import org.dromara.system.mapper.ComCustomerTypeMapper;
+import org.dromara.system.service.IComCustomerTypeService;
+
+import java.time.Duration;
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 客户类型配置Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ComCustomerTypeServiceImpl extends ServiceImpl<ComCustomerTypeMapper, ComCustomerType> implements IComCustomerTypeService {
+
+    private static final String CUSTOMER_TYPE_CODE_KEY = "com_customer_type:customer_type_code";
+
+    private final ComCustomerTypeMapper baseMapper;
+
+    /**
+     * 查询客户类型配置
+     *
+     * @param id 主键
+     * @return 客户类型配置
+     */
+    @Override
+    public ComCustomerTypeVo queryById(Long id) {
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询客户类型配置列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 客户类型配置分页列表
+     */
+    @Override
+    public TableDataInfo<ComCustomerTypeVo> queryPageList(ComCustomerTypeBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ComCustomerType> lqw = buildQueryWrapper(bo);
+        Page<ComCustomerTypeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的客户类型配置列表
+     *
+     * @param bo 查询条件
+     * @return 客户类型配置列表
+     */
+    @Override
+    public List<ComCustomerTypeVo> queryList(ComCustomerTypeBo bo) {
+        LambdaQueryWrapper<ComCustomerType> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ComCustomerType> buildQueryWrapper(ComCustomerTypeBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ComCustomerType> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ComCustomerType::getId);
+        lqw.eq(StringUtils.isNotBlank(bo.getTypeCode()), ComCustomerType::getTypeCode, bo.getTypeCode());
+        lqw.like(StringUtils.isNotBlank(bo.getTypeName()), ComCustomerType::getTypeName, bo.getTypeName());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsShow()), ComCustomerType::getIsShow, bo.getIsShow());
+        lqw.eq(StringUtils.isNotBlank(bo.getDataSource()), ComCustomerType::getDataSource, bo.getDataSource());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ComCustomerType::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), ComCustomerType::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增客户类型配置
+     *
+     * @param bo 客户类型配置
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ComCustomerTypeBo bo) {
+        bo.setTypeCode(SequenceUtils.nextPaddedIdStr(CUSTOMER_TYPE_CODE_KEY, Duration.ofDays(3650), 4));
+        ComCustomerType add = MapstructUtils.convert(bo, ComCustomerType.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改客户类型配置
+     *
+     * @param bo 客户类型配置
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ComCustomerTypeBo bo) {
+        ComCustomerType update = MapstructUtils.convert(bo, ComCustomerType.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 修改显示状态
+     *
+     * @param bo 信息
+     * @return 结果
+     */
+    @Override
+    public int updateShowStatus(ComCustomerTypeBo bo) {
+        ComCustomerType type = new ComCustomerType();
+        type.setId(bo.getId());
+        type.setIsShow(bo.getIsShow());
+        return baseMapper.updateById(type);
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ComCustomerType entity) {
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除客户类型配置信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 213 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ComDeptServiceImpl.java

@@ -0,0 +1,213 @@
+package org.dromara.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.constant.SystemConstants;
+import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.system.domain.ComBank;
+import org.dromara.system.domain.ComPost;
+import org.dromara.system.domain.SysDept;
+import org.dromara.system.domain.bo.ComBankBo;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.ComDeptBo;
+import org.dromara.system.domain.vo.ComDeptVo;
+import org.dromara.system.domain.ComDept;
+import org.dromara.system.mapper.ComDeptMapper;
+import org.dromara.system.service.IComDeptService;
+
+import java.util.*;
+
+/**
+ * 企业部门Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ComDeptServiceImpl extends ServiceImpl<ComDeptMapper, ComDept> implements IComDeptService {
+
+    private final ComDeptMapper baseMapper;
+
+    /**
+     * 查询企业部门
+     *
+     * @param id 主键
+     * @return 企业部门
+     */
+    @Override
+    public ComDeptVo queryById(Long id) {
+        return baseMapper.selectVoById(id);
+    }
+
+
+    /**
+     * 查询符合条件的企业部门列表
+     *
+     * @param bo 查询条件
+     * @return 企业部门列表
+     */
+    @Override
+    public List<ComDeptVo> queryList(ComDeptBo bo) {
+        LambdaQueryWrapper<ComDept> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ComDept> buildQueryWrapper(ComDeptBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ComDept> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ComDept::getId);
+        lqw.eq(StringUtils.isNotBlank(bo.getDeptCode()), ComDept::getDeptCode, bo.getDeptCode());
+        lqw.eq(bo.getCompanyId() != null, ComDept::getCompanyId, bo.getCompanyId());
+        lqw.like(StringUtils.isNotBlank(bo.getDeptName()), ComDept::getDeptName, bo.getDeptName());
+        lqw.eq(bo.getParentId() != null, ComDept::getParentId, bo.getParentId());
+        lqw.eq(StringUtils.isNotBlank(bo.getAncestors()), ComDept::getAncestors, bo.getAncestors());
+        lqw.eq(StringUtils.isNotBlank(bo.getDeptCategory()), ComDept::getDeptCategory, bo.getDeptCategory());
+        lqw.eq(bo.getLevel() != null, ComDept::getLevel, bo.getLevel());
+        lqw.eq(bo.getLeader() != null, ComDept::getLeader, bo.getLeader());
+        lqw.eq(StringUtils.isNotBlank(bo.getPhone()), ComDept::getPhone, bo.getPhone());
+        lqw.eq(StringUtils.isNotBlank(bo.getEmail()), ComDept::getEmail, bo.getEmail());
+        lqw.eq(bo.getValidFrom() != null, ComDept::getValidFrom, bo.getValidFrom());
+        lqw.eq(bo.getValidTo() != null, ComDept::getValidTo, bo.getValidTo());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ComDept::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getDataSource()), ComDept::getDataSource, bo.getDataSource());
+        lqw.eq(bo.getOrderNum() != null, ComDept::getOrderNum, bo.getOrderNum());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), ComDept::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增企业部门
+     *
+     * @param bo 企业部门
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ComDeptBo bo) {
+        Long parentId = bo.getParentId();
+        ComDept parentDept = null;
+
+        // 处理根节点(parentId = 0)
+        if (parentId != null && parentId == 0L) {
+            // 根部门:ancestors = "0"
+            parentDept = new ComDept();
+            parentDept.setId(0L);
+            parentDept.setAncestors("0");
+            parentDept.setStatus(SystemConstants.NORMAL);
+        } else if (parentId != null && parentId > 0) {
+            // 查询父部门
+            parentDept = baseMapper.selectById(parentId);
+            if (parentDept == null) {
+                throw new ServiceException("父部门不存在,请检查 parentId 是否正确");
+            }
+            if (!SystemConstants.NORMAL.equals(parentDept.getStatus())) {
+                throw new ServiceException("父部门已停用,不允许新增子部门");
+            }
+        } else {
+            throw new ServiceException("parentId 不能为空且不能小于 0");
+        }
+
+        // 转换 BO 到 Entity
+        ComDept add = MapstructUtils.convert(bo, ComDept.class);
+
+        // 设置 ancestors
+        add.setAncestors(parentDept.getAncestors() + StringUtils.SEPARATOR + parentDept.getId());
+
+        // 自动设置 level
+        if (parentId == 0L) {
+            add.setLevel(1L);
+        } else {
+            add.setLevel(parentDept.getLevel() != null ? parentDept.getLevel() + 1 : 2);
+        }
+
+        // 执行保存前校验
+        validEntityBeforeSave(add);
+
+        // 插入数据库
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改企业部门
+     *
+     * @param bo 企业部门
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ComDeptBo bo) {
+        ComDept update = MapstructUtils.convert(bo, ComDept.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 修改状态
+     *
+     * @param bo 信息
+     * @return 结果
+     */
+    @Override
+    public int updateStatus(ComDeptBo bo) {
+        ComDept dept = new ComDept();
+        dept.setId(bo.getId());
+        dept.setStatus(bo.getStatus());
+        return baseMapper.updateById(dept);
+    }
+
+    public Map<Long, String> selectDeptNameByIds(Set<Long> ids) {
+        if (ids == null || ids.isEmpty()) {
+            return Collections.emptyMap();
+        }
+
+        // 限制批量大小
+        if (ids.size() > 1000) {
+            throw new IllegalArgumentException("Batch size exceeds limit: " + ids.size());
+        }
+
+        List<ComDept> deptList = baseMapper.selectByIds(ids);
+        Map<Long, String> resultMap = new HashMap<>(ids.size());
+
+        // 初始化所有请求的 ID 为 null
+        ids.forEach(id -> resultMap.put(id, null));
+
+        if (deptList != null) {
+            deptList.stream()
+                .filter(dept -> dept.getId() != null && dept.getDeptName() != null)
+                .forEach(dept -> resultMap.put(dept.getId(), dept.getDeptName()));
+        }
+
+        return resultMap;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ComDept entity) {
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除企业部门信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 178 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ComPostServiceImpl.java

@@ -0,0 +1,178 @@
+package org.dromara.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.system.domain.ComDept;
+import org.dromara.system.domain.ComStaff;
+import org.dromara.system.domain.bo.ComDeptBo;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.ComPostBo;
+import org.dromara.system.domain.vo.ComPostVo;
+import org.dromara.system.domain.ComPost;
+import org.dromara.system.mapper.ComPostMapper;
+import org.dromara.system.service.IComPostService;
+
+import java.util.*;
+
+/**
+ * 岗位信息Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ComPostServiceImpl extends ServiceImpl<ComPostMapper, ComPost> implements IComPostService {
+
+    private final ComPostMapper baseMapper;
+
+    /**
+     * 查询岗位信息
+     *
+     * @param postId 主键
+     * @return 岗位信息
+     */
+    @Override
+    public ComPostVo queryById(Long postId) {
+        return baseMapper.selectVoById(postId);
+    }
+
+    /**
+     * 分页查询岗位信息列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 岗位信息分页列表
+     */
+    @Override
+    public TableDataInfo<ComPostVo> queryPageList(ComPostBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ComPost> lqw = buildQueryWrapper(bo);
+        Page<ComPostVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的岗位信息列表
+     *
+     * @param bo 查询条件
+     * @return 岗位信息列表
+     */
+    @Override
+    public List<ComPostVo> queryList(ComPostBo bo) {
+        LambdaQueryWrapper<ComPost> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ComPost> buildQueryWrapper(ComPostBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ComPost> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ComPost::getPostId);
+        lqw.eq(StringUtils.isNotBlank(bo.getPostCode()), ComPost::getPostCode, bo.getPostCode());
+        lqw.like(StringUtils.isNotBlank(bo.getPostName()), ComPost::getPostName, bo.getPostName());
+        lqw.eq(StringUtils.isNotBlank(bo.getDataSource()), ComPost::getDataSource, bo.getDataSource());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ComPost::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), ComPost::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增岗位信息
+     *
+     * @param bo 岗位信息
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ComPostBo bo) {
+        ComPost add = MapstructUtils.convert(bo, ComPost.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setPostId(add.getPostId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改岗位信息
+     *
+     * @param bo 岗位信息
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ComPostBo bo) {
+        ComPost update = MapstructUtils.convert(bo, ComPost.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 修改状态
+     *
+     * @param bo 信息
+     * @return 结果
+     */
+    @Override
+    public int updateStatus(ComPostBo bo) {
+        ComPost post = new ComPost();
+        post.setPostId(bo.getPostId());
+        post.setStatus(bo.getStatus());
+        return baseMapper.updateById(post);
+    }
+
+    @Override
+    public Map<Long, String> selectPostNameByIds(Set<Long> ids) {
+        if (ids == null || ids.isEmpty()) {
+            return Collections.emptyMap();
+        }
+
+        // 限制批量大小
+        if (ids.size() > 1000) {
+            throw new IllegalArgumentException("Batch size exceeds limit: " + ids.size());
+        }
+
+        List<ComPost> postList = baseMapper.selectByIds(ids);
+        Map<Long, String> resultMap = new HashMap<>(ids.size());
+
+        // 初始化所有请求的 ID 为 null
+        ids.forEach(id -> resultMap.put(id, null));
+
+        if (postList != null) {
+            postList.stream()
+                .filter(post -> post.getPostId() != null && post.getPostName() != null)
+                .forEach(post -> resultMap.put(post.getPostId(), post.getPostName()));
+        }
+
+        return resultMap;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ComPost entity) {
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除岗位信息信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 209 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ComStaffServiceImpl.java

@@ -0,0 +1,209 @@
+package org.dromara.system.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.system.domain.ComDept;
+import org.dromara.system.domain.ComPost;
+import org.dromara.system.domain.bo.ComPostBo;
+import org.dromara.system.mapper.ComDeptMapper;
+import org.dromara.system.mapper.ComPostMapper;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.ComStaffBo;
+import org.dromara.system.domain.vo.ComStaffVo;
+import org.dromara.system.domain.ComStaff;
+import org.dromara.system.mapper.ComStaffMapper;
+import org.dromara.system.service.IComStaffService;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 人员信息Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ComStaffServiceImpl extends ServiceImpl<ComStaffMapper, ComStaff> implements IComStaffService {
+
+    private final ComStaffMapper baseMapper;
+
+    private final ComDeptMapper comDeptMapper;
+
+    private final ComPostMapper comPostMapper;
+
+    /**
+     * 查询人员信息
+     *
+     * @param staffId 主键
+     * @return 人员信息
+     */
+    @Override
+    public ComStaffVo queryById(Long staffId) {
+        return baseMapper.selectVoById(staffId);
+    }
+
+    /**
+     * 分页查询人员信息列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 人员信息分页列表
+     */
+    @Override
+    public TableDataInfo<ComStaffVo> queryPageList(ComStaffBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ComStaff> lqw = buildQueryWrapper(bo);
+        Page<ComStaffVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        List<ComStaffVo> records = result.getRecords();
+        if (CollUtil.isNotEmpty(records)) {
+            Set<Long> deptIds = records.stream().map(ComStaffVo::getDeptId).collect(Collectors.toSet());
+            Map<Long, String> deptMap = comDeptMapper.selectList(new LambdaQueryWrapper<ComDept>()
+                    .select(ComDept::getId, ComDept::getDeptName).in(ComDept::getId, deptIds)).stream()
+                .collect(Collectors.toMap(ComDept::getId, ComDept::getDeptName));
+            Set<Long> postIds = records.stream().map(ComStaffVo::getPostId).collect(Collectors.toSet());
+            Map<Long, String> postMap = comPostMapper.selectList(new LambdaQueryWrapper<ComPost>()
+                    .select(ComPost::getPostId, ComPost::getPostName).in(ComPost::getPostId, postIds)).stream()
+                .collect(Collectors.toMap(ComPost::getPostId, ComPost::getPostName));
+            records.forEach(item -> {
+                item.setDeptName(deptMap.get(item.getDeptId()));
+                item.setPostName(postMap.get(item.getPostId()));
+            });
+        }
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的人员信息列表
+     *
+     * @param bo 查询条件
+     * @return 人员信息列表
+     */
+    @Override
+    public List<ComStaffVo> queryList(ComStaffBo bo) {
+        LambdaQueryWrapper<ComStaff> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ComStaff> buildQueryWrapper(ComStaffBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ComStaff> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ComStaff::getStaffId);
+        lqw.eq(StringUtils.isNotBlank(bo.getStaffCode()), ComStaff::getStaffCode, bo.getStaffCode());
+        lqw.like(StringUtils.isNotBlank(bo.getStaffName()), ComStaff::getStaffName, bo.getStaffName());
+        lqw.eq(bo.getDeptId() != null, ComStaff::getDeptId, bo.getDeptId());
+        lqw.eq(StringUtils.isNotBlank(bo.getPhone()), ComStaff::getPhone, bo.getPhone());
+        lqw.eq(bo.getPostId() != null, ComStaff::getPostId, bo.getPostId());
+        lqw.eq(StringUtils.isNotBlank(bo.getSex()), ComStaff::getSex, bo.getSex());
+        lqw.eq(bo.getRoleId() != null, ComStaff::getRoleId, bo.getRoleId());
+        lqw.eq(StringUtils.isNotBlank(bo.getDataSource()), ComStaff::getDataSource, bo.getDataSource());
+        lqw.eq(StringUtils.isNotBlank(bo.getPassword()), ComStaff::getPassword, bo.getPassword());
+        lqw.eq(bo.getValidFrom() != null, ComStaff::getValidFrom, bo.getValidFrom());
+        lqw.eq(bo.getValidTo() != null, ComStaff::getValidTo, bo.getValidTo());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ComStaff::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), ComStaff::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增人员信息
+     *
+     * @param bo 人员信息
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ComStaffBo bo) {
+        ComStaff add = MapstructUtils.convert(bo, ComStaff.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setStaffId(add.getStaffId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改人员信息
+     *
+     * @param bo 人员信息
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ComStaffBo bo) {
+        ComStaff update = MapstructUtils.convert(bo, ComStaff.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 修改状态
+     *
+     * @param bo 信息
+     * @return 结果
+     */
+    @Override
+    public int updateStatus(ComStaffBo bo) {
+        ComStaff staff = new ComStaff();
+        staff.setStaffId(bo.getStaffId());
+        staff.setStatus(bo.getStatus());
+        return baseMapper.updateById(staff);
+    }
+
+    @Override
+    public Map<Long, String> selectStaffNameByIds(Set<Long> ids) {
+        if (ids == null || ids.isEmpty()) {
+            return Collections.emptyMap();
+        }
+
+        // 限制批量大小
+        if (ids.size() > 1000) {
+            throw new IllegalArgumentException("Batch size exceeds limit: " + ids.size());
+        }
+
+        List<ComStaff> staffList = baseMapper.selectByIds(ids);
+        Map<Long, String> resultMap = new HashMap<>(ids.size());
+
+        // 初始化所有请求的 ID 为 null
+        ids.forEach(id -> resultMap.put(id, null));
+
+        if (staffList != null) {
+            staffList.stream()
+                .filter(staff -> staff.getStaffId() != null && staff.getStaffName() != null)
+                .forEach(staff -> resultMap.put(staff.getStaffId(), staff.getStaffName()));
+        }
+
+        return resultMap;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ComStaff entity) {
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除人员信息信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 159 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/CreditLevelServiceImpl.java

@@ -0,0 +1,159 @@
+package org.dromara.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.redis.utils.SequenceUtils;
+import org.dromara.system.domain.ComBank;
+import org.dromara.system.domain.bo.ComBankBo;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.CreditLevelBo;
+import org.dromara.system.domain.vo.CreditLevelVo;
+import org.dromara.system.domain.CreditLevel;
+import org.dromara.system.mapper.CreditLevelMapper;
+import org.dromara.system.service.ICreditLevelService;
+
+import java.time.Duration;
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 信用等级配置Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class CreditLevelServiceImpl extends ServiceImpl<CreditLevelMapper, CreditLevel> implements ICreditLevelService {
+
+    private final CreditLevelMapper baseMapper;
+
+    private static final String CREDIT_LEVEL_NO_KEY = "credit_level:credit_level_no";
+
+    /**
+     * 查询信用等级配置
+     *
+     * @param id 主键
+     * @return 信用等级配置
+     */
+    @Override
+    public CreditLevelVo queryById(Long id) {
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询信用等级配置列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 信用等级配置分页列表
+     */
+    @Override
+    public TableDataInfo<CreditLevelVo> queryPageList(CreditLevelBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<CreditLevel> lqw = buildQueryWrapper(bo);
+        Page<CreditLevelVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的信用等级配置列表
+     *
+     * @param bo 查询条件
+     * @return 信用等级配置列表
+     */
+    @Override
+    public List<CreditLevelVo> queryList(CreditLevelBo bo) {
+        LambdaQueryWrapper<CreditLevel> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<CreditLevel> buildQueryWrapper(CreditLevelBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<CreditLevel> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(CreditLevel::getId);
+        lqw.eq(StringUtils.isNotBlank(bo.getCreditLevelNo()), CreditLevel::getCreditLevelNo, bo.getCreditLevelNo());
+        lqw.like(StringUtils.isNotBlank(bo.getCreditLevelName()), CreditLevel::getCreditLevelName, bo.getCreditLevelName());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsShow()), CreditLevel::getIsShow, bo.getIsShow());
+        lqw.eq(StringUtils.isNotBlank(bo.getDataSource()), CreditLevel::getDataSource, bo.getDataSource());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), CreditLevel::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), CreditLevel::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增信用等级配置
+     *
+     * @param bo 信用等级配置
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(CreditLevelBo bo) {
+        bo.setCreditLevelNo(SequenceUtils.nextPaddedIdStr(CREDIT_LEVEL_NO_KEY, Duration.ofDays(3650), 4));
+        CreditLevel add = MapstructUtils.convert(bo, CreditLevel.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改信用等级配置
+     *
+     * @param bo 信用等级配置
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(CreditLevelBo bo) {
+        CreditLevel update = MapstructUtils.convert(bo, CreditLevel.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 修改显示状态
+     *
+     * @param bo 信息
+     * @return 结果
+     */
+    @Override
+    public int updateShowStatus(CreditLevelBo bo) {
+        CreditLevel level = new CreditLevel();
+        level.setId(bo.getId());
+        level.setIsShow(bo.getIsShow());
+        return baseMapper.updateById(level);
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(CreditLevel entity) {
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除信用等级配置信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 8 - 4
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/InvoiceTypeServiceImpl.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.redis.utils.SequenceUtils;
 import org.springframework.stereotype.Service;
 import org.dromara.system.domain.bo.InvoiceTypeBo;
 import org.dromara.system.domain.vo.InvoiceTypeVo;
@@ -17,6 +18,7 @@ import org.dromara.system.domain.InvoiceType;
 import org.dromara.system.mapper.InvoiceTypeMapper;
 import org.dromara.system.service.IInvoiceTypeService;
 
+import java.time.Duration;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
@@ -30,7 +32,8 @@ import java.util.Collection;
 @Slf4j
 @RequiredArgsConstructor
 @Service
-public class InvoiceTypeServiceImpl  extends ServiceImpl<InvoiceTypeMapper, InvoiceType> implements IInvoiceTypeService {
+public class InvoiceTypeServiceImpl extends ServiceImpl<InvoiceTypeMapper, InvoiceType> implements IInvoiceTypeService {
+    private static final String TYPE_NO_KEY = "invoice_type:invoice_type_no";
 
     private final InvoiceTypeMapper baseMapper;
 
@@ -41,7 +44,7 @@ public class InvoiceTypeServiceImpl  extends ServiceImpl<InvoiceTypeMapper, Invo
      * @return 发票类型
      */
     @Override
-    public InvoiceTypeVo queryById(Long id){
+    public InvoiceTypeVo queryById(Long id) {
         return baseMapper.selectVoById(id);
     }
 
@@ -91,6 +94,7 @@ public class InvoiceTypeServiceImpl  extends ServiceImpl<InvoiceTypeMapper, Invo
      */
     @Override
     public Boolean insertByBo(InvoiceTypeBo bo) {
+        bo.setInvoiceTypeNo(SequenceUtils.nextPaddedIdStr(TYPE_NO_KEY, Duration.ofDays(3650), 4));
         InvoiceType add = MapstructUtils.convert(bo, InvoiceType.class);
         validEntityBeforeSave(add);
         boolean flag = baseMapper.insert(add) > 0;
@@ -116,7 +120,7 @@ public class InvoiceTypeServiceImpl  extends ServiceImpl<InvoiceTypeMapper, Invo
     /**
      * 保存前的数据校验
      */
-    private void validEntityBeforeSave(InvoiceType entity){
+    private void validEntityBeforeSave(InvoiceType entity) {
         //TODO 做一些数据校验,如唯一约束
     }
 
@@ -129,7 +133,7 @@ public class InvoiceTypeServiceImpl  extends ServiceImpl<InvoiceTypeMapper, Invo
      */
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if(isValid){
+        if (isValid) {
             //TODO 做一些业务上的校验,判断是否需要校验
         }
         return baseMapper.deleteByIds(ids) > 0;

+ 157 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SettlementLevelServiceImpl.java

@@ -0,0 +1,157 @@
+package org.dromara.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.redis.utils.SequenceUtils;
+import org.dromara.system.domain.bo.SettlementMethodBo;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.SettlementLevelBo;
+import org.dromara.system.domain.vo.SettlementLevelVo;
+import org.dromara.system.domain.SettlementLevel;
+import org.dromara.system.mapper.SettlementLevelMapper;
+import org.dromara.system.service.ISettlementLevelService;
+
+import java.time.Duration;
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 结算等级Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class SettlementLevelServiceImpl extends ServiceImpl<SettlementLevelMapper, SettlementLevel> implements ISettlementLevelService {
+
+    private static final String SETTLEMENT_LEVEL_ID_KEY = "settlement_level:settlement_level_id";
+
+    private final SettlementLevelMapper baseMapper;
+
+    /**
+     * 查询结算等级
+     *
+     * @param id 主键
+     * @return 结算等级
+     */
+    @Override
+    public SettlementLevelVo queryById(Long id) {
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询结算等级列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 结算等级分页列表
+     */
+    @Override
+    public TableDataInfo<SettlementLevelVo> queryPageList(SettlementLevelBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<SettlementLevel> lqw = buildQueryWrapper(bo);
+        Page<SettlementLevelVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的结算等级列表
+     *
+     * @param bo 查询条件
+     * @return 结算等级列表
+     */
+    @Override
+    public List<SettlementLevelVo> queryList(SettlementLevelBo bo) {
+        LambdaQueryWrapper<SettlementLevel> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<SettlementLevel> buildQueryWrapper(SettlementLevelBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<SettlementLevel> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(SettlementLevel::getId);
+        lqw.eq(StringUtils.isNotBlank(bo.getSettlementLevelId()), SettlementLevel::getSettlementLevelId, bo.getSettlementLevelId());
+        lqw.like(StringUtils.isNotBlank(bo.getSettlementLevelName()), SettlementLevel::getSettlementLevelName, bo.getSettlementLevelName());
+        lqw.eq(bo.getIsShow() != null, SettlementLevel::getIsShow, bo.getIsShow());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SettlementLevel::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), SettlementLevel::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增结算等级
+     *
+     * @param bo 结算等级
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(SettlementLevelBo bo) {
+        bo.setSettlementLevelId(SequenceUtils.nextPaddedIdStr(SETTLEMENT_LEVEL_ID_KEY, Duration.ofDays(3650), 4));
+        SettlementLevel add = MapstructUtils.convert(bo, SettlementLevel.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改结算等级
+     *
+     * @param bo 结算等级
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(SettlementLevelBo bo) {
+        SettlementLevel update = MapstructUtils.convert(bo, SettlementLevel.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 修改显示状态
+     *
+     * @param bo 信息
+     * @return 结果
+     */
+    @Override
+    public int updateShowStatus(SettlementLevelBo bo) {
+        SettlementLevel level = new SettlementLevel();
+        level.setId(bo.getId());
+        level.setIsShow(bo.getIsShow());
+        return baseMapper.updateById(level);
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(SettlementLevel entity) {
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除结算等级信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 158 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SettlementMethodServiceImpl.java

@@ -0,0 +1,158 @@
+package org.dromara.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.redis.utils.SequenceUtils;
+import org.dromara.system.domain.ComBank;
+import org.dromara.system.domain.bo.ComBankBo;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.SettlementMethodBo;
+import org.dromara.system.domain.vo.SettlementMethodVo;
+import org.dromara.system.domain.SettlementMethod;
+import org.dromara.system.mapper.SettlementMethodMapper;
+import org.dromara.system.service.ISettlementMethodService;
+
+import java.time.Duration;
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 结算方式Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class SettlementMethodServiceImpl extends ServiceImpl<SettlementMethodMapper, SettlementMethod> implements ISettlementMethodService {
+
+    private static final String SETTLEMENT_ID_KEY = "settlement_method:settlement_id";
+
+    private final SettlementMethodMapper baseMapper;
+
+    /**
+     * 查询结算方式
+     *
+     * @param id 主键
+     * @return 结算方式
+     */
+    @Override
+    public SettlementMethodVo queryById(Long id) {
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询结算方式列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 结算方式分页列表
+     */
+    @Override
+    public TableDataInfo<SettlementMethodVo> queryPageList(SettlementMethodBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<SettlementMethod> lqw = buildQueryWrapper(bo);
+        Page<SettlementMethodVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的结算方式列表
+     *
+     * @param bo 查询条件
+     * @return 结算方式列表
+     */
+    @Override
+    public List<SettlementMethodVo> queryList(SettlementMethodBo bo) {
+        LambdaQueryWrapper<SettlementMethod> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<SettlementMethod> buildQueryWrapper(SettlementMethodBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<SettlementMethod> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(SettlementMethod::getId);
+        lqw.eq(StringUtils.isNotBlank(bo.getSettlementId()), SettlementMethod::getSettlementId, bo.getSettlementId());
+        lqw.like(StringUtils.isNotBlank(bo.getSettlementName()), SettlementMethod::getSettlementName, bo.getSettlementName());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsShow()), SettlementMethod::getIsShow, bo.getIsShow());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SettlementMethod::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), SettlementMethod::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增结算方式
+     *
+     * @param bo 结算方式
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(SettlementMethodBo bo) {
+        bo.setSettlementId(SequenceUtils.nextPaddedIdStr(SETTLEMENT_ID_KEY, Duration.ofDays(3650), 4));
+        SettlementMethod add = MapstructUtils.convert(bo, SettlementMethod.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改结算方式
+     *
+     * @param bo 结算方式
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(SettlementMethodBo bo) {
+        SettlementMethod update = MapstructUtils.convert(bo, SettlementMethod.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 修改显示状态
+     *
+     * @param bo 信息
+     * @return 结果
+     */
+    @Override
+    public int updateShowStatus(SettlementMethodBo bo) {
+        SettlementMethod method = new SettlementMethod();
+        method.setId(bo.getId());
+        method.setIsShow(bo.getIsShow());
+        return baseMapper.updateById(method);
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(SettlementMethod entity) {
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除结算方式信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 20 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCompanyServiceImpl.java

@@ -10,6 +10,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.redis.utils.SequenceUtils;
+import org.dromara.system.domain.ComBank;
+import org.dromara.system.domain.bo.ComBankBo;
 import org.springframework.stereotype.Service;
 import org.dromara.system.domain.bo.SysCompanyBo;
 import org.dromara.system.domain.vo.SysCompanyVo;
@@ -17,6 +20,7 @@ import org.dromara.system.domain.SysCompany;
 import org.dromara.system.mapper.SysCompanyMapper;
 import org.dromara.system.service.ISysCompanyService;
 
+import java.time.Duration;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
@@ -31,6 +35,7 @@ import java.util.Collection;
 @RequiredArgsConstructor
 @Service
 public class SysCompanyServiceImpl extends ServiceImpl<SysCompanyMapper, SysCompany> implements ISysCompanyService {
+    private static final String CODE_KEY = "sys_company:company_code";
 
     private final SysCompanyMapper baseMapper;
 
@@ -98,6 +103,7 @@ public class SysCompanyServiceImpl extends ServiceImpl<SysCompanyMapper, SysComp
      */
     @Override
     public Boolean insertByBo(SysCompanyBo bo) {
+        bo.setCompanyCode(SequenceUtils.nextPaddedIdStr(CODE_KEY, Duration.ofDays(3650), 4));
         SysCompany add = MapstructUtils.convert(bo, SysCompany.class);
         validEntityBeforeSave(add);
         boolean flag = baseMapper.insert(add) > 0;
@@ -120,6 +126,20 @@ public class SysCompanyServiceImpl extends ServiceImpl<SysCompanyMapper, SysComp
         return baseMapper.updateById(update) > 0;
     }
 
+    /**
+     * 修改显示状态
+     *
+     * @param bo 租户信息
+     * @return 结果
+     */
+    @Override
+    public int updateStatus(SysCompanyBo bo) {
+        SysCompany company = new SysCompany();
+        company.setId(bo.getId());
+        company.setStatus(bo.getStatus());
+        return baseMapper.updateById(company);
+    }
+
     /**
      * 保存前的数据校验
      */

+ 7 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ComBankMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.ComBankMapper">
+
+</mapper>

+ 7 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ComCompanyMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.ComCompanyMapper">
+
+</mapper>

+ 7 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/ComCustomerLevelMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.ComCustomerLevelMapper">
+
+</mapper>

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