变更项目缩写
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
**约束条件:**
|
||||
- 必须遵循若依框架的代码规范
|
||||
- 必须使用项目已定义的命名规范(模块前缀 `dpc_`)
|
||||
- 必须使用项目已定义的命名规范(模块前缀 `ccdi_`)
|
||||
- 必须支持 Excel 导入导出功能
|
||||
- 亲属信息需要与员工信息关联管理
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
1. 提供完整的员工信息 CRUD 接口
|
||||
2. 支持员工亲属信息的关联管理(一对多关系)
|
||||
3. 支持 Excel 批量导入导出,导入时可同时导入亲属信息
|
||||
4. 遵循现有代码模式(参考 `dpc_intermediary_blacklist` 模块)
|
||||
4. 遵循现有代码模式(参考 `ccdi_intermediary_blacklist` 模块)
|
||||
|
||||
### Non-Goals
|
||||
- 不涉及前端页面的实现(本次仅实现后端接口)
|
||||
@@ -34,7 +34,7 @@
|
||||
**决策:使用两张表存储员工和亲属信息**
|
||||
|
||||
```
|
||||
dpc_employee (员工主表)
|
||||
ccdi_employee (员工主表)
|
||||
├── employee_id (主键)
|
||||
├── name (姓名)
|
||||
├── teller_no (柜员号, UNIQUE)
|
||||
@@ -45,9 +45,9 @@ dpc_employee (员工主表)
|
||||
├── status (状态: 0=在职, 1=离职)
|
||||
└── 审计字段 (create_by, create_time, update_by, update_time)
|
||||
|
||||
dpc_employee_relative (员工亲属表)
|
||||
ccdi_employee_relative (员工亲属表)
|
||||
├── relative_id (主键)
|
||||
├── employee_id (外键 → dpc_employee.employee_id)
|
||||
├── employee_id (外键 → ccdi_employee.employee_id)
|
||||
├── relative_name (亲属姓名)
|
||||
├── relative_id_card (亲属身份证号)
|
||||
├── relative_phone (亲属手机号)
|
||||
@@ -126,10 +126,10 @@ Sheet2: 亲属信息 (可选)
|
||||
**决策:使用字典管理"与员工关系"字段和"员工状态"字段**
|
||||
|
||||
```
|
||||
字典类型: dpc_relative_relationship
|
||||
字典类型: ccdi_relative_relationship
|
||||
字典数据: 配偶、父亲、母亲、子女、兄弟姐妹、其他
|
||||
|
||||
字典类型: dpc_employee_status
|
||||
字典类型: ccdi_employee_status
|
||||
字典数据: 在职(0)、离职(1)
|
||||
```
|
||||
|
||||
@@ -156,14 +156,14 @@ UNIQUE KEY `uk_id_card` (`id_card`)
|
||||
|
||||
**决策:遵循项目规范**
|
||||
|
||||
- 表名: `dpc_employee`, `dpc_employee_relative`
|
||||
- 实体类: `DpcEmployee`, `DpcEmployeeRelative`
|
||||
- Controller: `DpcEmployeeController`
|
||||
- 表名: `ccdi_employee`, `ccdi_employee_relative`
|
||||
- 实体类: `CcdiEmployee`, `CcdiEmployeeRelative`
|
||||
- Controller: `CcdiEmployeeController`
|
||||
- 权限标识: `dpc:employee:*`
|
||||
- **所有实体类、DTO、VO 类统一使用 @Data 注解**
|
||||
|
||||
**理由:**
|
||||
- 与现有 `dpc_intermediary_blacklist` 模块保持一致
|
||||
- 与现有 `ccdi_intermediary_blacklist` 模块保持一致
|
||||
- 符合项目编码规范
|
||||
- @Data 注解自动生成 getter/setter,代码简洁
|
||||
|
||||
@@ -186,8 +186,8 @@ UNIQUE KEY `uk_id_card` (`id_card`)
|
||||
```java
|
||||
// 简单查询 - 使用 MyBatis Plus
|
||||
employeeMapper.selectById(id);
|
||||
employeeMapper.selectList(new LambdaQueryWrapper<DpcEmployee>()
|
||||
.eq(DpcEmployee::getTellerNo, tellerNo));
|
||||
employeeMapper.selectList(new LambdaQueryWrapper<CcdiEmployee>()
|
||||
.eq(CcdiEmployee::getTellerNo, tellerNo));
|
||||
|
||||
// 复杂查询 - 使用 XML
|
||||
EmployeeWithRelativesVO selectEmployeeWithRelatives(Long id);
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
- 员工亲属管理:支持在员工信息中维护亲属关系
|
||||
|
||||
### 数据模型
|
||||
**员工主表 (dpc_employee)**
|
||||
**员工主表 (ccdi_employee)**
|
||||
- 员工ID (主键)
|
||||
- 姓名
|
||||
- 柜员号 (唯一约束)
|
||||
@@ -28,7 +28,7 @@
|
||||
- 状态 (0=在职, 1=离职)
|
||||
- 审计字段(创建者、创建时间、更新者、更新时间)
|
||||
|
||||
**员工亲属表 (dpc_employee_relative)**
|
||||
**员工亲属表 (ccdi_employee_relative)**
|
||||
- 亲属ID (主键)
|
||||
- 员工ID (外键)
|
||||
- 亲属姓名
|
||||
@@ -54,11 +54,11 @@
|
||||
|
||||
### 影响的代码 (Affected Code)
|
||||
- **新增模块**: `ruoyi-dpc` (DPC业务模块)
|
||||
- `com.ruoyi.dpc.domain.DpcEmployee` - 员工实体(使用 @Data 注解)
|
||||
- `com.ruoyi.dpc.domain.DpcEmployeeRelative` - 亲属实体(使用 @Data 注解)
|
||||
- `com.ruoyi.dpc.domain.CcdiEmployee` - 员工实体(使用 @Data 注解)
|
||||
- `com.ruoyi.dpc.domain.CcdiEmployeeRelative` - 亲属实体(使用 @Data 注解)
|
||||
- `com.ruoyi.dpc.domain.dto.*` - DTO类(统一使用 @Data 注解)
|
||||
- `com.ruoyi.dpc.domain.vo.*` - VO类(统一使用 @Data 注解)
|
||||
- `com.ruoyi.dpc.controller.DpcEmployeeController` - 控制器
|
||||
- `com.ruoyi.dpc.controller.CcdiEmployeeController` - 控制器
|
||||
- `com.ruoyi.dpc.service.*` - 服务层
|
||||
- `com.ruoyi.dpc.mapper.*` - 数据访问层(继承 MyBatis Plus BaseMapper)
|
||||
- **技术实现**:
|
||||
@@ -66,8 +66,8 @@
|
||||
- 复杂查询(如多表关联)使用 XML 映射文件
|
||||
|
||||
- **数据库**: 新增表
|
||||
- `dpc_employee` - 员工信息表
|
||||
- `dpc_employee_relative` - 员工亲属表
|
||||
- `ccdi_employee` - 员工信息表
|
||||
- `ccdi_employee_relative` - 员工亲属表
|
||||
- `sys_dict_type` - 字典类型表(员工状态、亲属关系)
|
||||
|
||||
- **菜单系统**: (将在前端开发阶段处理)
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
## 1. 数据库设计与实现
|
||||
|
||||
- [x] 1.1 创建 `dpc_employee` 员工信息表,包含字段:employee_id, name, teller_no, org_no, id_card, phone, hire_date, status, create_by, create_time, update_by, update_time
|
||||
- [x] 1.2 为 `dpc_employee` 表创建唯一约束:uk_teller_no (柜员号唯一), uk_id_card (身份证号唯一)
|
||||
- [x] 1.3 为 `dpc_employee` 表创建索引:idx_org_no, idx_status
|
||||
- [x] 1.4 创建 `dpc_employee_relative` 员工亲属表,包含字段:relative_id, employee_id, relative_name, relative_id_card, relative_phone, relationship, create_by, create_time, update_by, update_time
|
||||
- [x] 1.5 为 `dpc_employee_relative` 表创建索引:idx_employee_id, idx_relative_id_card
|
||||
- [x] 1.6 添加外键约束:dpc_employee_relative.employee_id → dpc_employee.employee_id(可选,根据项目规范决定)
|
||||
- [x] 1.7 创建 `dpc_relative_relationship` 字典类型及字典数据(配偶、父亲、母亲、子女、兄弟姐妹、其他)
|
||||
- [x] 1.8 创建 `dpc_employee_status` 字典类型及字典数据(在职=0、离职=1)
|
||||
- [x] 1.1 创建 `ccdi_employee` 员工信息表,包含字段:employee_id, name, teller_no, org_no, id_card, phone, hire_date, status, create_by, create_time, update_by, update_time
|
||||
- [x] 1.2 为 `ccdi_employee` 表创建唯一约束:uk_teller_no (柜员号唯一), uk_id_card (身份证号唯一)
|
||||
- [x] 1.3 为 `ccdi_employee` 表创建索引:idx_org_no, idx_status
|
||||
- [x] 1.4 创建 `ccdi_employee_relative` 员工亲属表,包含字段:relative_id, employee_id, relative_name, relative_id_card, relative_phone, relationship, create_by, create_time, update_by, update_time
|
||||
- [x] 1.5 为 `ccdi_employee_relative` 表创建索引:idx_employee_id, idx_relative_id_card
|
||||
- [x] 1.6 添加外键约束:ccdi_employee_relative.employee_id → ccdi_employee.employee_id(可选,根据项目规范决定)
|
||||
- [x] 1.7 创建 `ccdi_relative_relationship` 字典类型及字典数据(配偶、父亲、母亲、子女、兄弟姐妹、其他)
|
||||
- [x] 1.8 创建 `ccdi_employee_status` 字典类型及字典数据(在职=0、离职=1)
|
||||
|
||||
## 2. 后端实体类创建
|
||||
|
||||
- [x] 2.1 创建 `DpcEmployee.java` 实体类,使用 @Data 注解,包含 @Excel 注解用于导入导出
|
||||
- [x] 2.2 创建 `DpcEmployeeRelative.java` 实体类,使用 @Data 注解
|
||||
- [x] 2.3 创建 `DpcEmployeeAddDTO.java` 新增 DTO,使用 @Data 注解,包含 @Validated 校验注解
|
||||
- [x] 2.4 创建 `DpcEmployeeEditDTO.java` 编辑 DTO,使用 @Data 注解,包含 @Validated 校验注解
|
||||
- [x] 2.5 创建 `DpcEmployeeQueryDTO.java` 查询 DTO,使用 @Data 注解
|
||||
- [x] 2.6 创建 `DpcEmployeeVO.java` 视图对象,使用 @Data 注解,包含亲属列表
|
||||
- [x] 2.7 创建 `DpcEmployeeRelativeVO.java` 亲属视图对象,使用 @Data 注解
|
||||
- [x] 2.8 创建 `DpcEmployeeRelativeAddDTO.java` 亲属新增 DTO,使用 @Data 注解
|
||||
- [x] 2.1 创建 `CcdiEmployee.java` 实体类,使用 @Data 注解,包含 @Excel 注解用于导入导出
|
||||
- [x] 2.2 创建 `CcdiEmployeeRelative.java` 实体类,使用 @Data 注解
|
||||
- [x] 2.3 创建 `CcdiEmployeeAddDTO.java` 新增 DTO,使用 @Data 注解,包含 @Validated 校验注解
|
||||
- [x] 2.4 创建 `CcdiEmployeeEditDTO.java` 编辑 DTO,使用 @Data 注解,包含 @Validated 校验注解
|
||||
- [x] 2.5 创建 `CcdiEmployeeQueryDTO.java` 查询 DTO,使用 @Data 注解
|
||||
- [x] 2.6 创建 `CcdiEmployeeVO.java` 视图对象,使用 @Data 注解,包含亲属列表
|
||||
- [x] 2.7 创建 `CcdiEmployeeRelativeVO.java` 亲属视图对象,使用 @Data 注解
|
||||
- [x] 2.8 创建 `CcdiEmployeeRelativeAddDTO.java` 亲属新增 DTO,使用 @Data 注解
|
||||
|
||||
## 3. Mapper 层实现
|
||||
|
||||
- [x] 3.1 创建 `DpcEmployeeMapper.java` 接口,继承 `BaseMapper<DpcEmployee>`
|
||||
- [x] 3.2 创建 `DpcEmployeeMapper.xml` MyBatis 映射文件,仅实现复杂查询(如:员工详情包含亲属列表)
|
||||
- [x] 3.1 创建 `CcdiEmployeeMapper.java` 接口,继承 `BaseMapper<CcdiEmployee>`
|
||||
- [x] 3.2 创建 `CcdiEmployeeMapper.xml` MyBatis 映射文件,仅实现复杂查询(如:员工详情包含亲属列表)
|
||||
- [x] 3.3 在 XML 中实现 `selectEmployeeWithRelatives` 方法,关联查询员工及其亲属信息
|
||||
- [x] 3.4 创建 `DpcEmployeeRelativeMapper.java` 接口,继承 `BaseMapper<DpcEmployeeRelative>`
|
||||
- [x] 3.5 创建 `DpcEmployeeRelativeMapper.xml` MyBatis 映射文件(如需复杂查询)
|
||||
- [x] 3.4 创建 `CcdiEmployeeRelativeMapper.java` 接口,继承 `BaseMapper<CcdiEmployeeRelative>`
|
||||
- [x] 3.5 创建 `CcdiEmployeeRelativeMapper.xml` MyBatis 映射文件(如需复杂查询)
|
||||
- [x] 3.6 简单 CRUD 操作使用 MyBatis Plus 提供的 BaseMapper 方法(insert, deleteById, deleteByIds, updateById, selectById, selectList)
|
||||
- [x] 3.7 简单条件查询使用 LambdaQueryWrapper 或 QueryWrapper(如:按柜员号、身份证号查询)
|
||||
- [x] 3.8 复杂多条件查询在 XML 中编写自定义 SQL
|
||||
|
||||
## 4. Service 层实现
|
||||
|
||||
- [x] 4.1 创建 `IDpcEmployeeService.java` 接口
|
||||
- [x] 4.2 创建 `DpcEmployeeServiceImpl.java` 实现类
|
||||
- [x] 4.1 创建 `ICcdiEmployeeService.java` 接口
|
||||
- [x] 4.2 创建 `CcdiEmployeeServiceImpl.java` 实现类
|
||||
- [x] 4.3 实现查询员工列表方法 `selectEmployeeList`,支持分页和多条件查询
|
||||
- [x] 4.4 实现查询员工详情方法 `selectEmployeeById`,包含亲属信息
|
||||
- [x] 4.5 实现新增员工方法 `insertEmployee`,支持同时插入亲属信息
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
## 5. Controller 层实现
|
||||
|
||||
- [x] 5.1 创建 `DpcEmployeeController.java` 控制器类
|
||||
- [x] 5.1 创建 `CcdiEmployeeController.java` 控制器类
|
||||
- [x] 5.2 实现 `GET /dpc/employee/list` 查询列表接口,添加 @PreAuthorize 权限注解
|
||||
- [x] 5.3 实现 `GET /dpc/employee/{id}` 查询详情接口
|
||||
- [x] 5.4 实现 `POST /dpc/employee` 新增接口
|
||||
@@ -61,8 +61,8 @@
|
||||
|
||||
## 6. 导入导出功能实现
|
||||
|
||||
- [x] 6.1 配置 `DpcEmployee` 实体的 @Excel 注解,定义导出列
|
||||
- [x] 6.2 配置 `DpcEmployeeRelative` 实体的 @Excel 注解(用于多 Sheet 导入)
|
||||
- [x] 6.1 配置 `CcdiEmployee` 实体的 @Excel 注解,定义导出列
|
||||
- [x] 6.2 配置 `CcdiEmployeeRelative` 实体的 @Excel 注解(用于多 Sheet 导入)
|
||||
- [x] 6.3 实现导入模板的 Excel 格式定义
|
||||
- [x] 6.4 实现 Excel 解析逻辑,支持多 Sheet 读取
|
||||
- [x] 6.5 实现员工和亲属数据的关联逻辑(通过身份证号)
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
## 数据库设计
|
||||
|
||||
### 表:dpc_intermediary_blacklist
|
||||
### 表:ccdi_intermediary_blacklist
|
||||
|
||||
中介人员/机构黑名单主表。
|
||||
|
||||
```sql
|
||||
CREATE TABLE `dpc_intermediary_blacklist` (
|
||||
CREATE TABLE `ccdi_intermediary_blacklist` (
|
||||
`intermediary_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '中介ID',
|
||||
`name` VARCHAR(100) NOT NULL COMMENT '姓名/机构名称',
|
||||
`certificate_no` VARCHAR(50) DEFAULT NULL COMMENT '证件号',
|
||||
@@ -55,40 +55,40 @@ CREATE TABLE `dpc_intermediary_blacklist` (
|
||||
ruoyi-dpc/
|
||||
├── src/main/java/com/ruoyi/dpc/
|
||||
│ ├── controller/
|
||||
│ │ └── DpcIntermediaryBlacklistController.java
|
||||
│ │ └── CcdiIntermediaryBlacklistController.java
|
||||
│ ├── domain/
|
||||
│ │ ├── DpcIntermediaryBlacklist.java
|
||||
│ │ ├── CcdiIntermediaryBlacklist.java
|
||||
│ │ ├── dto/
|
||||
│ │ │ ├── DpcIntermediaryBlacklistAddDTO.java
|
||||
│ │ │ ├── DpcIntermediaryBlacklistEditDTO.java
|
||||
│ │ │ └── DpcIntermediaryBlacklistQueryDTO.java
|
||||
│ │ │ ├── CcdiIntermediaryBlacklistAddDTO.java
|
||||
│ │ │ ├── CcdiIntermediaryBlacklistEditDTO.java
|
||||
│ │ │ └── CcdiIntermediaryBlacklistQueryDTO.java
|
||||
│ │ └── vo/
|
||||
│ │ └── DpcIntermediaryBlacklistVO.java
|
||||
│ │ └── CcdiIntermediaryBlacklistVO.java
|
||||
│ ├── mapper/
|
||||
│ │ └── DpcIntermediaryBlacklistMapper.java
|
||||
│ │ └── CcdiIntermediaryBlacklistMapper.java
|
||||
│ └── service/
|
||||
│ ├── IDpcIntermediaryBlacklistService.java
|
||||
│ ├── ICcdiIntermediaryBlacklistService.java
|
||||
│ └── impl/
|
||||
│ └── DpcIntermediaryBlacklistServiceImpl.java
|
||||
│ └── CcdiIntermediaryBlacklistServiceImpl.java
|
||||
└── src/main/resources/mapper/dpc/
|
||||
└── DpcIntermediaryBlacklistMapper.xml
|
||||
└── CcdiIntermediaryBlacklistMapper.xml
|
||||
```
|
||||
|
||||
### Controller 层设计
|
||||
|
||||
**DpcIntermediaryBlacklistController**
|
||||
**CcdiIntermediaryBlacklistController**
|
||||
|
||||
```java
|
||||
@RestController
|
||||
@RequestMapping("/dpc/intermediary")
|
||||
public class DpcIntermediaryBlacklistController extends BaseController {
|
||||
public class CcdiIntermediaryBlacklistController extends BaseController {
|
||||
|
||||
/**
|
||||
* 查询中介黑名单列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('dpc:intermediary:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(DpcIntermediaryBlacklistQueryDTO queryDTO) {
|
||||
public TableDataInfo list(CcdiIntermediaryBlacklistQueryDTO queryDTO) {
|
||||
// 分页查询逻辑
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ public class DpcIntermediaryBlacklistController extends BaseController {
|
||||
@PreAuthorize("@ss.hasPermi('dpc:intermediary:export')")
|
||||
@Log(title = "中介黑名单", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, DpcIntermediaryBlacklistQueryDTO queryDTO) {
|
||||
public void export(HttpServletResponse response, CcdiIntermediaryBlacklistQueryDTO queryDTO) {
|
||||
// 导出逻辑
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ public class DpcIntermediaryBlacklistController extends BaseController {
|
||||
@PreAuthorize("@ss.hasPermi('dpc:intermediary:add')")
|
||||
@Log(title = "中介黑名单", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@Validated @RequestBody DpcIntermediaryBlacklistAddDTO addDTO) {
|
||||
public AjaxResult add(@Validated @RequestBody CcdiIntermediaryBlacklistAddDTO addDTO) {
|
||||
// 新增逻辑
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@ public class DpcIntermediaryBlacklistController extends BaseController {
|
||||
@PreAuthorize("@ss.hasPermi('dpc:intermediary:edit')")
|
||||
@Log(title = "中介黑名单", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@Validated @RequestBody DpcIntermediaryBlacklistEditDTO editDTO) {
|
||||
public AjaxResult edit(@Validated @RequestBody CcdiIntermediaryBlacklistEditDTO editDTO) {
|
||||
// 修改逻辑
|
||||
}
|
||||
|
||||
@@ -163,30 +163,30 @@ public class DpcIntermediaryBlacklistController extends BaseController {
|
||||
|
||||
### Service 层设计
|
||||
|
||||
**IDpcIntermediaryBlacklistService**
|
||||
**ICcdiIntermediaryBlacklistService**
|
||||
|
||||
```java
|
||||
public interface IDpcIntermediaryBlacklistService {
|
||||
public interface ICcdiIntermediaryBlacklistService {
|
||||
|
||||
/**
|
||||
* 查询中介黑名单列表
|
||||
*/
|
||||
List<DpcIntermediaryBlacklistVO> selectIntermediaryList(DpcIntermediaryBlacklistQueryDTO queryDTO);
|
||||
List<CcdiIntermediaryBlacklistVO> selectIntermediaryList(CcdiIntermediaryBlacklistQueryDTO queryDTO);
|
||||
|
||||
/**
|
||||
* 查询中介黑名单详细信息
|
||||
*/
|
||||
DpcIntermediaryBlacklistVO selectIntermediaryById(Long intermediaryId);
|
||||
CcdiIntermediaryBlacklistVO selectIntermediaryById(Long intermediaryId);
|
||||
|
||||
/**
|
||||
* 新增中介黑名单
|
||||
*/
|
||||
int insertIntermediary(DpcIntermediaryBlacklistAddDTO addDTO);
|
||||
int insertIntermediary(CcdiIntermediaryBlacklistAddDTO addDTO);
|
||||
|
||||
/**
|
||||
* 修改中介黑名单
|
||||
*/
|
||||
int updateIntermediary(DpcIntermediaryBlacklistEditDTO editDTO);
|
||||
int updateIntermediary(CcdiIntermediaryBlacklistEditDTO editDTO);
|
||||
|
||||
/**
|
||||
* 批量删除中介黑名单
|
||||
@@ -196,7 +196,7 @@ public interface IDpcIntermediaryBlacklistService {
|
||||
/**
|
||||
* 导入中介黑名单数据
|
||||
*/
|
||||
String importIntermediary(List<DpcIntermediaryBlacklistAddDTO> addDTOList, boolean isUpdateSupport);
|
||||
String importIntermediary(List<CcdiIntermediaryBlacklistAddDTO> addDTOList, boolean isUpdateSupport);
|
||||
}
|
||||
```
|
||||
|
||||
@@ -205,7 +205,7 @@ public interface IDpcIntermediaryBlacklistService {
|
||||
**实体类注解**
|
||||
|
||||
```java
|
||||
public class DpcIntermediaryBlacklist {
|
||||
public class CcdiIntermediaryBlacklist {
|
||||
|
||||
/** 中介ID */
|
||||
private Long intermediaryId;
|
||||
@@ -424,7 +424,7 @@ INSERT INTO sys_menu VALUES (2007, '中介导入', 2001, 6, 0, '', '', 1, 0, 'F'
|
||||
|
||||
## 字典数据设计
|
||||
|
||||
### 中介类型(dpc_intermediary_type)
|
||||
### 中介类型(ccdi_intermediary_type)
|
||||
|
||||
| 字典值 | 字典标签 | 排序 | 状态 |
|
||||
|-------|---------|-----|------|
|
||||
|
||||
@@ -76,9 +76,9 @@
|
||||
|
||||
### 后端影响
|
||||
- 新建 `ruoyi-dpc` 模块(如果不存在),与若依框架代码分离
|
||||
- 新增表:`dpc_intermediary_blacklist`(中介黑名单主表)
|
||||
- 新增表:`ccdi_intermediary_blacklist`(中介黑名单主表)
|
||||
- 新增权限:`dpc:intermediary:list`, `dpc:intermediary:query`, `dpc:intermediary:add`, `dpc:intermediary:edit`, `dpc:intermediary:remove`, `dpc:intermediary:export`, `dpc:intermediary:import`
|
||||
- Controller 层:`ruoyi-dpc/src/main/java/com/ruoyi/dpc/controller/DpcIntermediaryBlacklistController.java`
|
||||
- Controller 层:`ruoyi-dpc/src/main/java/com/ruoyi/dpc/controller/CcdiIntermediaryBlacklistController.java`
|
||||
|
||||
### 前端影响
|
||||
- 新增视图:`ruoyi-ui/src/views/dpcIntermediary/`
|
||||
@@ -86,7 +86,7 @@
|
||||
- 新增菜单:信息维护 > 中介库管理(注意与数据库中菜单表进行联动修改)
|
||||
|
||||
### 数据库影响
|
||||
- 新增表:`dpc_intermediary_blacklist`
|
||||
- 新增表:`ccdi_intermediary_blacklist`
|
||||
|
||||
## Dependencies
|
||||
- 依赖 EasyExcel 进行 Excel 导入导出(参考 `replace-poi-with-easyexcel` change)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
## 数据库设计
|
||||
|
||||
- [ ] 2.1 编写数据库建表 SQL
|
||||
- [ ] 2.1.1 创建 `dpc_intermediary_blacklist` 表
|
||||
- [ ] 2.1.1 创建 `ccdi_intermediary_blacklist` 表
|
||||
- [ ] 2.1.2 添加索引(name, id_card, intermediary_type)
|
||||
- [ ] 2.1.3 添加表注释和字段注释
|
||||
|
||||
@@ -19,24 +19,24 @@
|
||||
- [ ] 2.2.3 添加按钮权限(查询、新增、修改、删除、导出、导入)
|
||||
|
||||
- [ ] 2.3 编写字典数据 SQL
|
||||
- [ ] 2.3.1 添加"中介类型"字典(dpc_intermediary_type)
|
||||
- [ ] 2.3.2 添加"风险等级"字典(dpc_risk_level)
|
||||
- [ ] 2.3.1 添加"中介类型"字典(ccdi_intermediary_type)
|
||||
- [ ] 2.3.2 添加"风险等级"字典(ccdi_risk_level)
|
||||
|
||||
- [ ] 2.4 执行 SQL 脚本初始化数据
|
||||
|
||||
## 后端开发
|
||||
|
||||
- [ ] 3.1 创建 Domain 层
|
||||
- [ ] 3.1.1 创建 `DpcIntermediaryBlacklist.java` 实体类
|
||||
- [ ] 3.1.2 创建 `DpcIntermediaryBlacklistAddDTO.java` 新增 DTO
|
||||
- [ ] 3.1.3 创建 `DpcIntermediaryBlacklistEditDTO.java` 编辑 DTO
|
||||
- [ ] 3.1.4 创建 `DpcIntermediaryBlacklistQueryDTO.java` 查询 DTO
|
||||
- [ ] 3.1.5 创建 `DpcIntermediaryBlacklistVO.java` 视图对象
|
||||
- [ ] 3.1.1 创建 `CcdiIntermediaryBlacklist.java` 实体类
|
||||
- [ ] 3.1.2 创建 `CcdiIntermediaryBlacklistAddDTO.java` 新增 DTO
|
||||
- [ ] 3.1.3 创建 `CcdiIntermediaryBlacklistEditDTO.java` 编辑 DTO
|
||||
- [ ] 3.1.4 创建 `CcdiIntermediaryBlacklistQueryDTO.java` 查询 DTO
|
||||
- [ ] 3.1.5 创建 `CcdiIntermediaryBlacklistVO.java` 视图对象
|
||||
- [ ] 3.1.6 添加 `@Excel` 注解支持导入导出
|
||||
|
||||
- [ ] 3.2 创建 Mapper 层
|
||||
- [ ] 3.2.1 创建 `DpcIntermediaryBlacklistMapper.java` 接口
|
||||
- [ ] 3.2.2 创建 `DpcIntermediaryBlacklistMapper.xml` 映射文件
|
||||
- [ ] 3.2.1 创建 `CcdiIntermediaryBlacklistMapper.java` 接口
|
||||
- [ ] 3.2.2 创建 `CcdiIntermediaryBlacklistMapper.xml` 映射文件
|
||||
- [ ] 3.2.3 实现 `selectIntermediaryList` 方法(支持条件查询)
|
||||
- [ ] 3.2.4 实现 `selectIntermediaryById` 方法
|
||||
- [ ] 3.2.5 实现 `insertIntermediary` 方法
|
||||
@@ -44,8 +44,8 @@
|
||||
- [ ] 3.2.7 实现 `deleteIntermediaryByIds` 方法
|
||||
|
||||
- [ ] 3.3 创建 Service 层
|
||||
- [ ] 3.3.1 创建 `IDpcIntermediaryBlacklistService.java` 接口
|
||||
- [ ] 3.3.2 创建 `DpcIntermediaryBlacklistServiceImpl.java` 实现类
|
||||
- [ ] 3.3.1 创建 `ICcdiIntermediaryBlacklistService.java` 接口
|
||||
- [ ] 3.3.2 创建 `CcdiIntermediaryBlacklistServiceImpl.java` 实现类
|
||||
- [ ] 3.3.3 实现查询列表业务逻辑(分页)
|
||||
- [ ] 3.3.4 实现查询详情业务逻辑
|
||||
- [ ] 3.3.5 实现新增业务逻辑(含数据校验)
|
||||
@@ -55,7 +55,7 @@
|
||||
- [ ] 3.3.9 实现导入业务逻辑(含数据验证)
|
||||
|
||||
- [ ] 3.4 创建 Controller 层
|
||||
- [ ] 3.4.1 创建 `DpcIntermediaryBlacklistController.java`
|
||||
- [ ] 3.4.1 创建 `CcdiIntermediaryBlacklistController.java`
|
||||
- [ ] 3.4.2 实现 `list` 接口(查询列表)
|
||||
- [ ] 3.4.3 实现 `getInfo` 接口(查询详情)
|
||||
- [ ] 3.4.4 实现 `add` 接口(新增)
|
||||
|
||||
@@ -13,27 +13,27 @@ ruoyi-dpc/ (新建模块)
|
||||
├── pom.xml # 模块依赖配置
|
||||
├── src/main/java/com/ruoyi/dpc/
|
||||
│ ├── controller/
|
||||
│ │ └── DpcProjectController.java # 项目控制器
|
||||
│ │ └── CcdiProjectController.java # 项目控制器
|
||||
│ ├── domain/
|
||||
│ │ ├── DpcProject.java # 项目实体
|
||||
│ │ ├── DpcProjectPerson.java # 项目人员关联
|
||||
│ │ ├── CcdiProject.java # 项目实体
|
||||
│ │ ├── CcdiProjectPerson.java # 项目人员关联
|
||||
│ │ ├── dto/
|
||||
│ │ │ ├── DpcProjectDTO.java # 项目数据传输对象
|
||||
│ │ │ ├── DpcProjectQueryDTO.java # 项目查询DTO
|
||||
│ │ │ └── DpcProjectImportDTO.java # 项目导入DTO
|
||||
│ │ │ ├── CcdiProjectDTO.java # 项目数据传输对象
|
||||
│ │ │ ├── CcdiProjectQueryDTO.java # 项目查询DTO
|
||||
│ │ │ └── CcdiProjectImportDTO.java # 项目导入DTO
|
||||
│ │ └── vo/
|
||||
│ │ ├── DpcProjectVO.java # 项目视图对象
|
||||
│ │ └── DpcProjectQueryVO.java # 查询视图对象
|
||||
│ │ ├── CcdiProjectVO.java # 项目视图对象
|
||||
│ │ └── CcdiProjectQueryVO.java # 查询视图对象
|
||||
│ ├── mapper/
|
||||
│ │ ├── DpcProjectMapper.java
|
||||
│ │ └── DpcProjectPersonMapper.java
|
||||
│ │ ├── CcdiProjectMapper.java
|
||||
│ │ └── CcdiProjectPersonMapper.java
|
||||
│ └── service/
|
||||
│ ├── IDpcProjectService.java
|
||||
│ ├── ICcdiProjectService.java
|
||||
│ └── impl/
|
||||
│ └── DpcProjectServiceImpl.java
|
||||
│ └── CcdiProjectServiceImpl.java
|
||||
└── src/main/resources/mapper/dpc/
|
||||
├── DpcProjectMapper.xml
|
||||
└── DpcProjectPersonMapper.xml
|
||||
├── CcdiProjectMapper.xml
|
||||
└── CcdiProjectPersonMapper.xml
|
||||
|
||||
ruoyi-ui/src/
|
||||
├── api/
|
||||
@@ -49,7 +49,7 @@ ruoyi-ui/src/
|
||||
|
||||
### 数据库表设计
|
||||
|
||||
#### dpc_project (项目主表)
|
||||
#### ccdi_project (项目主表)
|
||||
|
||||
| 字段名 | 类型 | 说明 | 约束 |
|
||||
|-------|------|------|-----|
|
||||
@@ -74,12 +74,12 @@ ruoyi-ui/src/
|
||||
- `1`: 已完成
|
||||
- `2`: 已归档
|
||||
|
||||
#### dpc_project_person (项目人员关联表)
|
||||
#### ccdi_project_person (项目人员关联表)
|
||||
|
||||
| 字段名 | 类型 | 说明 | 约束 |
|
||||
|-------|------|------|-----|
|
||||
| id | BIGINT | 主键ID | PK, AUTO_INCREMENT |
|
||||
| project_id | BIGINT | 项目ID | FK -> dpc_project.project_id |
|
||||
| project_id | BIGINT | 项目ID | FK -> ccdi_project.project_id |
|
||||
| person_id | BIGINT | 人员ID | FK -> sys_user.user_id |
|
||||
| person_name | VARCHAR(30) | 人员姓名 | 冗余字段 |
|
||||
| person_dept_id | BIGINT | 部门ID | 冗余字段 |
|
||||
@@ -90,11 +90,11 @@ ruoyi-ui/src/
|
||||
|
||||
### 实体类设计
|
||||
|
||||
#### DpcProject.java
|
||||
#### CcdiProject.java
|
||||
```java
|
||||
@Data
|
||||
@TableName("dpc_project")
|
||||
public class DpcProject {
|
||||
@TableName("ccdi_project")
|
||||
public class CcdiProject {
|
||||
/** 项目ID */
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long projectId;
|
||||
@@ -164,7 +164,7 @@ public class DpcProject {
|
||||
* MyBatis Plus 审计字段自动填充处理器
|
||||
*/
|
||||
@Component
|
||||
public class DpcMetaObjectHandler implements MetaObjectHandler {
|
||||
public class CcdiMetaObjectHandler implements MetaObjectHandler {
|
||||
|
||||
@Resource
|
||||
private TokenService tokenService;
|
||||
@@ -199,8 +199,8 @@ public class DpcMetaObjectHandler implements MetaObjectHandler {
|
||||
|
||||
```java
|
||||
@Data
|
||||
@TableName("dpc_project")
|
||||
public class DpcProject {
|
||||
@TableName("ccdi_project")
|
||||
public class CcdiProject {
|
||||
// ... 其他字段
|
||||
|
||||
/** 创建者 */
|
||||
@@ -233,10 +233,10 @@ public class DpcProject {
|
||||
|
||||
按照全局配置要求,接口传参使用单独的 DTO,不与 entity 混用。
|
||||
|
||||
#### DpcProjectDTO.java(新增/修改项目DTO)
|
||||
#### CcdiProjectDTO.java(新增/修改项目DTO)
|
||||
```java
|
||||
@Data
|
||||
public class DpcProjectDTO {
|
||||
public class CcdiProjectDTO {
|
||||
/** 项目名称 */
|
||||
@NotBlank(message = "项目名称不能为空")
|
||||
@Size(max = 100, message = "项目名称不能超过100个字符")
|
||||
@@ -260,10 +260,10 @@ public class DpcProjectDTO {
|
||||
}
|
||||
```
|
||||
|
||||
#### DpcProjectQueryDTO.java(查询项目DTO)
|
||||
#### CcdiProjectQueryDTO.java(查询项目DTO)
|
||||
```java
|
||||
@Data
|
||||
public class DpcProjectQueryDTO {
|
||||
public class CcdiProjectQueryDTO {
|
||||
/** 项目名称(模糊搜索) */
|
||||
private String projectName;
|
||||
|
||||
@@ -280,10 +280,10 @@ public class DpcProjectQueryDTO {
|
||||
}
|
||||
```
|
||||
|
||||
#### DpcProjectImportDTO.java(导入历史项目DTO)
|
||||
#### CcdiProjectImportDTO.java(导入历史项目DTO)
|
||||
```java
|
||||
@Data
|
||||
public class DpcProjectImportDTO {
|
||||
public class CcdiProjectImportDTO {
|
||||
/** 历史项目ID */
|
||||
@NotNull(message = "请选择要导入的历史项目")
|
||||
private Long historyProjectId;
|
||||
@@ -300,16 +300,16 @@ public class DpcProjectImportDTO {
|
||||
/**
|
||||
* DTO 与 Entity 转换工具类
|
||||
*/
|
||||
public class DpcProjectConverter {
|
||||
public class CcdiProjectConverter {
|
||||
|
||||
/**
|
||||
* DTO 转 Entity(新增/修改)
|
||||
*/
|
||||
public static DpcProject toEntity(DpcProjectDTO dto) {
|
||||
public static CcdiProject toEntity(CcdiProjectDTO dto) {
|
||||
if (dto == null) {
|
||||
return null;
|
||||
}
|
||||
DpcProject entity = new DpcProject();
|
||||
CcdiProject entity = new CcdiProject();
|
||||
entity.setProjectName(dto.getProjectName());
|
||||
entity.setDescription(dto.getDescription());
|
||||
entity.setStartDate(dto.getStartDate());
|
||||
@@ -320,11 +320,11 @@ public class DpcProjectConverter {
|
||||
/**
|
||||
* Entity 转 VO
|
||||
*/
|
||||
public static DpcProjectVO toVO(DpcProject entity) {
|
||||
public static CcdiProjectVO toVO(CcdiProject entity) {
|
||||
if (entity == null) {
|
||||
return null;
|
||||
}
|
||||
DpcProjectVO vo = new DpcProjectVO();
|
||||
CcdiProjectVO vo = new CcdiProjectVO();
|
||||
BeanUtils.copyProperties(entity, vo);
|
||||
return vo;
|
||||
}
|
||||
@@ -332,12 +332,12 @@ public class DpcProjectConverter {
|
||||
/**
|
||||
* Entity 列表转 VO 列表
|
||||
*/
|
||||
public static List<DpcProjectVO> toVOList(List<DpcProject> entityList) {
|
||||
public static List<CcdiProjectVO> toVOList(List<CcdiProject> entityList) {
|
||||
if (entityList == null || entityList.isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return entityList.stream()
|
||||
.map(DpcProjectConverter::toVO)
|
||||
.map(CcdiProjectConverter::toVO)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
@@ -347,34 +347,34 @@ public class DpcProjectConverter {
|
||||
```java
|
||||
@RestController
|
||||
@RequestMapping("/dpc/project")
|
||||
public class DpcProjectController {
|
||||
public class CcdiProjectController {
|
||||
|
||||
@Resource
|
||||
private IDpcProjectService projectService;
|
||||
private ICcdiProjectService projectService;
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('dpc:project:add')")
|
||||
@PostMapping
|
||||
public AjaxResult add(@Validated @RequestBody DpcProjectDTO dto) {
|
||||
DpcProject project = DpcProjectConverter.toEntity(dto);
|
||||
public AjaxResult add(@Validated @RequestBody CcdiProjectDTO dto) {
|
||||
CcdiProject project = CcdiProjectConverter.toEntity(dto);
|
||||
return AjaxResult.success(projectService.insertProject(project));
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('dpc:project:edit')")
|
||||
@PutMapping
|
||||
public AjaxResult edit(@Validated @RequestBody DpcProjectDTO dto) {
|
||||
DpcProject project = DpcProjectConverter.toEntity(dto);
|
||||
public AjaxResult edit(@Validated @RequestBody CcdiProjectDTO dto) {
|
||||
CcdiProject project = CcdiProjectConverter.toEntity(dto);
|
||||
return AjaxResult.success(projectService.updateProject(project));
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('dpc:project:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(DpcProjectQueryDTO queryDTO) {
|
||||
DpcProject project = new DpcProject();
|
||||
public TableDataInfo list(CcdiProjectQueryDTO queryDTO) {
|
||||
CcdiProject project = new CcdiProject();
|
||||
// 将查询条件转换到实体
|
||||
BeanUtils.copyProperties(queryDTO, project);
|
||||
startPage();
|
||||
List<DpcProject> list = projectService.selectProjectList(project);
|
||||
List<DpcProjectVO> voList = DpcProjectConverter.toVOList(list);
|
||||
List<CcdiProject> list = projectService.selectProjectList(project);
|
||||
List<CcdiProjectVO> voList = CcdiProjectConverter.toVOList(list);
|
||||
return getDataTable(voList);
|
||||
}
|
||||
}
|
||||
@@ -585,7 +585,7 @@ export function importProject(data) {
|
||||
|
||||
3. **数据库**
|
||||
- MySQL 8.2.0
|
||||
- 表名使用 `dpc_` 前缀(项目英文名首字母集合)
|
||||
- 表名使用 `ccdi_` 前缀(项目英文名首字母集合)
|
||||
|
||||
4. **安全**
|
||||
- 所有API需要 `@PreAuthorize` 权限注解
|
||||
|
||||
@@ -67,9 +67,9 @@
|
||||
|
||||
### 后端影响
|
||||
- 新建 `ruoyi-dpc` 模块,与若依框架代码分离(包含 Controller、Service、Mapper、Domain 层)
|
||||
- 新增表:`dpc_project`(项目主表)、`dpc_project_person`(项目人员关联表)
|
||||
- 新增表:`ccdi_project`(项目主表)、`ccdi_project_person`(项目人员关联表)
|
||||
- 新增权限:`dpc:project:list`, `dpc:project:query`, `dpc:project:add`, `dpc:project:edit`, `dpc:project:remove`, `dpc:project:archive`, `dpc:project:reanalyze`
|
||||
- Controller层:`ruoyi-dpc/src/main/java/com/ruoyi/dpc/controller/DpcProjectController.java`
|
||||
- Controller层:`ruoyi-dpc/src/main/java/com/ruoyi/dpc/controller/CcdiProjectController.java`
|
||||
|
||||
### 前端影响
|
||||
- 新增视图:`ruoyi-ui/src/views/dpcProject/`
|
||||
@@ -77,8 +77,8 @@
|
||||
- 新增菜单:项目管理(在系统菜单中添加,注意与数据库中菜单表进行联动修改)
|
||||
|
||||
### 数据库影响
|
||||
- 新增表:`dpc_project`(项目主表)
|
||||
- 新增表:`dpc_project_person`(项目人员关联表)
|
||||
- 新增表:`ccdi_project`(项目主表)
|
||||
- 新增表:`ccdi_project_person`(项目人员关联表)
|
||||
|
||||
## Dependencies
|
||||
- 依赖现有用户系统(`SysUser`)进行人员选择
|
||||
@@ -90,7 +90,7 @@
|
||||
|
||||
## Open Questions
|
||||
1. **项目人员关联方式**:使用多对多关联表还是JSON字段存储人员列表?
|
||||
- 建议:使用 `dpc_project_person` 关联表,便于查询和扩展
|
||||
- 建议:使用 `ccdi_project_person` 关联表,便于查询和扩展
|
||||
|
||||
2. **归档PDF生成**:使用什么工具生成PDF?
|
||||
- 建议:使用 iText 或 Apache POI,需要后续确认
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
## 阶段1:基础架构搭建
|
||||
|
||||
### 1.1 创建数据库表
|
||||
- [ ] 创建 `dpc_project` 表
|
||||
- [ ] 创建 `dpc_project_person` 表
|
||||
- [ ] 创建 `ccdi_project` 表
|
||||
- [ ] 创建 `ccdi_project_person` 表
|
||||
- [ ] 创建索引和外键约束
|
||||
- [ ] 准备测试数据
|
||||
|
||||
**验证**:执行SQL脚本,表结构创建成功,可以使用 `DESC dpc_project;` 查看表结构
|
||||
**验证**:执行SQL脚本,表结构创建成功,可以使用 `DESC ccdi_project;` 查看表结构
|
||||
|
||||
### 1.2 创建后端模块结构
|
||||
- [ ] 创建 `ruoyi-dpc` 新模块
|
||||
@@ -23,27 +23,27 @@
|
||||
**验证**:项目可以正常编译启动
|
||||
|
||||
### 1.3 创建实体类和DTO
|
||||
- [ ] 创建 `DpcProject.java` 实体类(使用 `@Data` 注解,不继承 BaseEntity)
|
||||
- [ ] 创建 `DpcProjectPerson.java` 实体类(使用 `@Data` 注解)
|
||||
- [ ] 创建 `DpcProjectVO.java` 视图对象
|
||||
- [ ] 创建 `DpcProjectQueryVO.java` 查询视图对象
|
||||
- [ ] 创建 `DpcProjectDTO.java` 数据传输对象(新增/修改)
|
||||
- [ ] 创建 `DpcProjectQueryDTO.java` 查询DTO
|
||||
- [ ] 创建 `DpcProjectImportDTO.java` 导入DTO
|
||||
- [ ] 创建 `CcdiProject.java` 实体类(使用 `@Data` 注解,不继承 BaseEntity)
|
||||
- [ ] 创建 `CcdiProjectPerson.java` 实体类(使用 `@Data` 注解)
|
||||
- [ ] 创建 `CcdiProjectVO.java` 视图对象
|
||||
- [ ] 创建 `CcdiProjectQueryVO.java` 查询视图对象
|
||||
- [ ] 创建 `CcdiProjectDTO.java` 数据传输对象(新增/修改)
|
||||
- [ ] 创建 `CcdiProjectQueryDTO.java` 查询DTO
|
||||
- [ ] 创建 `CcdiProjectImportDTO.java` 导入DTO
|
||||
- [ ] 为审计字段添加 `@TableField` 注解配置自动填充
|
||||
|
||||
**验证**:实体类和DTO编译通过,字段注解正确
|
||||
|
||||
### 1.4 创建DTO转换工具类
|
||||
- [ ] 创建 `DpcProjectConverter.java` 工具类
|
||||
- [ ] 实现 `toEntity(DpcProjectDTO)` 方法
|
||||
- [ ] 实现 `toVO(DpcProject)` 方法
|
||||
- [ ] 实现 `toVOList(List<DpcProject>)` 方法
|
||||
- [ ] 创建 `CcdiProjectConverter.java` 工具类
|
||||
- [ ] 实现 `toEntity(CcdiProjectDTO)` 方法
|
||||
- [ ] 实现 `toVO(CcdiProject)` 方法
|
||||
- [ ] 实现 `toVOList(List<CcdiProject>)` 方法
|
||||
|
||||
**验证**:转换逻辑正确,覆盖所有字段
|
||||
|
||||
### 1.5 配置审计字段自动填充
|
||||
- [ ] 创建 `DpcMetaObjectHandler.java` 实现 `MetaObjectHandler` 接口
|
||||
- [ ] 创建 `CcdiMetaObjectHandler.java` 实现 `MetaObjectHandler` 接口
|
||||
- [ ] 实现 `insertFill` 方法自动填充 `create_by` 和 `create_time`
|
||||
- [ ] 实现 `updateFill` 方法自动填充 `update_by` 和 `update_time`
|
||||
- [ ] 从 Spring Security 上下文获取当前登录用户
|
||||
@@ -54,12 +54,12 @@
|
||||
## 阶段2:数据访问层开发
|
||||
|
||||
### 2.1 创建Mapper接口
|
||||
- [ ] 创建 `DpcProjectMapper.java`(使用 MyBatis Plus)
|
||||
- [ ] 创建 `DpcProjectPersonMapper.java`(使用 MyBatis Plus)
|
||||
- [ ] 创建 `CcdiProjectMapper.java`(使用 MyBatis Plus)
|
||||
- [ ] 创建 `CcdiProjectPersonMapper.java`(使用 MyBatis Plus)
|
||||
|
||||
### 2.2 创建Mapper XML
|
||||
- [ ] 创建 `DpcProjectMapper.xml`
|
||||
- [ ] 创建 `DpcProjectPersonMapper.xml`
|
||||
- [ ] 创建 `CcdiProjectMapper.xml`
|
||||
- [ ] 创建 `CcdiProjectPersonMapper.xml`
|
||||
- [ ] 定义基础CRUD SQL(MyBatis Plus 自动生成)
|
||||
- [ ] 定义关联查询SQL(项目+人员)
|
||||
|
||||
@@ -68,19 +68,19 @@
|
||||
## 阶段3:服务层开发
|
||||
|
||||
### 3.1 创建Service接口
|
||||
- [ ] 创建 `IDpcProjectService.java`
|
||||
- [ ] 创建 `ICcdiProjectService.java`
|
||||
- [ ] 定义方法签名:
|
||||
- `List<DpcProject> selectProjectList(DpcProject project)`
|
||||
- `DpcProject selectProjectById(Long projectId)`
|
||||
- `int insertProject(DpcProject project)`
|
||||
- `int updateProject(DpcProject project)`
|
||||
- `List<CcdiProject> selectProjectList(CcdiProject project)`
|
||||
- `CcdiProject selectProjectById(Long projectId)`
|
||||
- `int insertProject(CcdiProject project)`
|
||||
- `int updateProject(CcdiProject project)`
|
||||
- `int deleteProjectByIds(Long[] projectIds)`
|
||||
- `boolean checkProjectNameUnique(DpcProject project)`
|
||||
- `boolean checkProjectNameUnique(CcdiProject project)`
|
||||
- `void archiveProject(Long projectId)`
|
||||
- `void reanalyzeProject(Long projectId)`
|
||||
|
||||
### 3.2 实现Service
|
||||
- [ ] 创建 `DpcProjectServiceImpl.java`
|
||||
- [ ] 创建 `CcdiProjectServiceImpl.java`
|
||||
- [ ] 使用 `@Resource` 注入依赖
|
||||
- [ ] 实现基础CRUD方法
|
||||
- [ ] 实现项目名称唯一性校验
|
||||
@@ -92,7 +92,7 @@
|
||||
## 阶段4:控制器层开发
|
||||
|
||||
### 4.1 创建Controller
|
||||
- [ ] 创建 `DpcProjectController.java`(位于 `ruoyi-dpc` 模块的 `com.ruoyi.dpc.controller` 包中)
|
||||
- [ ] 创建 `CcdiProjectController.java`(位于 `ruoyi-dpc` 模块的 `com.ruoyi.dpc.controller` 包中)
|
||||
- [ ] 实现列表查询接口 `GET /dpc/project/list`
|
||||
- [ ] 实现详情查询接口 `GET /dpc/project/{id}`
|
||||
- [ ] 实现新增接口 `POST /dpc/project`
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## 数据库设计
|
||||
|
||||
### 表扩展:dpc_intermediary_blacklist
|
||||
### 表扩展:ccdi_intermediary_blacklist
|
||||
|
||||
在现有表基础上添加以下字段:
|
||||
|
||||
@@ -10,47 +10,47 @@
|
||||
-- ============================================================
|
||||
-- 个人类型字段 (以 indiv_ 前缀标识,individual 缩写)
|
||||
-- ============================================================
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `indiv_type` VARCHAR(30) DEFAULT NULL COMMENT '人员类型(中介、职业背债人、房产中介等)';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `indiv_sub_type` VARCHAR(50) DEFAULT NULL COMMENT '人员子类型(本人、配偶等)';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `indiv_gender` CHAR(1) DEFAULT NULL COMMENT '性别(M男 F女 O其他)';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `indiv_cert_type` VARCHAR(30) DEFAULT '身份证' COMMENT '证件类型';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `indiv_phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号码(加密存储)';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `indiv_wechat` VARCHAR(50) DEFAULT NULL COMMENT '微信号';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `indiv_address` VARCHAR(200) DEFAULT NULL COMMENT '联系地址';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `indiv_company` VARCHAR(100) DEFAULT NULL COMMENT '所在公司';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `indiv_position` VARCHAR(100) DEFAULT NULL COMMENT '职位/职务';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `indiv_related_id` VARCHAR(20) DEFAULT NULL COMMENT '关联人员ID';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `indiv_relation` VARCHAR(50) DEFAULT NULL COMMENT '关联关系';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `indiv_type` VARCHAR(30) DEFAULT NULL COMMENT '人员类型(中介、职业背债人、房产中介等)';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `indiv_sub_type` VARCHAR(50) DEFAULT NULL COMMENT '人员子类型(本人、配偶等)';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `indiv_gender` CHAR(1) DEFAULT NULL COMMENT '性别(M男 F女 O其他)';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `indiv_cert_type` VARCHAR(30) DEFAULT '身份证' COMMENT '证件类型';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `indiv_phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号码(加密存储)';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `indiv_wechat` VARCHAR(50) DEFAULT NULL COMMENT '微信号';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `indiv_address` VARCHAR(200) DEFAULT NULL COMMENT '联系地址';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `indiv_company` VARCHAR(100) DEFAULT NULL COMMENT '所在公司';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `indiv_position` VARCHAR(100) DEFAULT NULL COMMENT '职位/职务';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `indiv_related_id` VARCHAR(20) DEFAULT NULL COMMENT '关联人员ID';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `indiv_relation` VARCHAR(50) DEFAULT NULL COMMENT '关联关系';
|
||||
|
||||
-- ============================================================
|
||||
-- 机构类型字段 (以 corp_ 前缀标识,corporation 缩写)
|
||||
-- ============================================================
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `corp_credit_code` VARCHAR(18) DEFAULT NULL COMMENT '统一社会信用代码';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `corp_type` VARCHAR(50) DEFAULT NULL COMMENT '主体类型(有限责任公司、股份有限公司等)';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `corp_nature` VARCHAR(50) DEFAULT NULL COMMENT '企业性质(国企、民企、外企等)';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `corp_industry_category` VARCHAR(100) DEFAULT NULL COMMENT '行业分类';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `corp_industry` VARCHAR(100) DEFAULT NULL COMMENT '所属行业';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `corp_establish_date` DATE DEFAULT NULL COMMENT '成立日期';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `corp_address` VARCHAR(500) DEFAULT NULL COMMENT '注册地址';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `corp_legal_rep` VARCHAR(50) DEFAULT NULL COMMENT '法定代表人';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `corp_legal_cert_type` VARCHAR(30) DEFAULT NULL COMMENT '法定代表人证件类型';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `corp_legal_cert_no` VARCHAR(30) DEFAULT NULL COMMENT '法定代表人证件号码';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `corp_shareholder_1` VARCHAR(30) DEFAULT NULL COMMENT '股东1';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `corp_shareholder_2` VARCHAR(30) DEFAULT NULL COMMENT '股东2';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `corp_shareholder_3` VARCHAR(30) DEFAULT NULL COMMENT '股东3';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `corp_shareholder_4` VARCHAR(30) DEFAULT NULL COMMENT '股东4';
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `corp_shareholder_5` VARCHAR(30) DEFAULT NULL COMMENT '股东5';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `corp_credit_code` VARCHAR(18) DEFAULT NULL COMMENT '统一社会信用代码';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `corp_type` VARCHAR(50) DEFAULT NULL COMMENT '主体类型(有限责任公司、股份有限公司等)';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `corp_nature` VARCHAR(50) DEFAULT NULL COMMENT '企业性质(国企、民企、外企等)';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `corp_industry_category` VARCHAR(100) DEFAULT NULL COMMENT '行业分类';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `corp_industry` VARCHAR(100) DEFAULT NULL COMMENT '所属行业';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `corp_establish_date` DATE DEFAULT NULL COMMENT '成立日期';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `corp_address` VARCHAR(500) DEFAULT NULL COMMENT '注册地址';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `corp_legal_rep` VARCHAR(50) DEFAULT NULL COMMENT '法定代表人';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `corp_legal_cert_type` VARCHAR(30) DEFAULT NULL COMMENT '法定代表人证件类型';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `corp_legal_cert_no` VARCHAR(30) DEFAULT NULL COMMENT '法定代表人证件号码';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `corp_shareholder_1` VARCHAR(30) DEFAULT NULL COMMENT '股东1';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `corp_shareholder_2` VARCHAR(30) DEFAULT NULL COMMENT '股东2';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `corp_shareholder_3` VARCHAR(30) DEFAULT NULL COMMENT '股东3';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `corp_shareholder_4` VARCHAR(30) DEFAULT NULL COMMENT '股东4';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `corp_shareholder_5` VARCHAR(30) DEFAULT NULL COMMENT '股东5';
|
||||
|
||||
-- ============================================================
|
||||
-- 通用字段
|
||||
-- ============================================================
|
||||
ALTER TABLE dpc_intermediary_blacklist ADD COLUMN `data_source` VARCHAR(30) DEFAULT 'MANUAL' COMMENT '数据来源(MANUAL手动录入 SYSTEM系统同步 IMPORT批量导入 API接口获取)';
|
||||
ALTER TABLE ccdi_intermediary_blacklist ADD COLUMN `data_source` VARCHAR(30) DEFAULT 'MANUAL' COMMENT '数据来源(MANUAL手动录入 SYSTEM系统同步 IMPORT批量导入 API接口获取)';
|
||||
```
|
||||
|
||||
### 完整表结构
|
||||
|
||||
```sql
|
||||
CREATE TABLE `dpc_intermediary_blacklist` (
|
||||
CREATE TABLE `ccdi_intermediary_blacklist` (
|
||||
`intermediary_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '中介ID',
|
||||
|
||||
-- ============================================================
|
||||
@@ -163,31 +163,31 @@ CREATE TABLE `dpc_intermediary_blacklist` (
|
||||
ruoyi-dpc/
|
||||
├── src/main/java/com/ruoyi/dpc/
|
||||
│ ├── controller/
|
||||
│ │ └── DpcIntermediaryBlacklistController.java (修改)
|
||||
│ │ └── CcdiIntermediaryBlacklistController.java (修改)
|
||||
│ ├── domain/
|
||||
│ │ ├── DpcIntermediaryBlacklist.java (修改 - 添加新字段)
|
||||
│ │ ├── CcdiIntermediaryBlacklist.java (修改 - 添加新字段)
|
||||
│ │ ├── dto/
|
||||
│ │ │ ├── DpcIntermediaryBlacklistAddDTO.java (保留 - 兼容)
|
||||
│ │ │ ├── DpcIntermediaryBlacklistEditDTO.java (保留 - 兼容)
|
||||
│ │ │ ├── DpcIntermediaryBlacklistQueryDTO.java (保留)
|
||||
│ │ │ ├── DpcIntermediaryPersonAddDTO.java (新增)
|
||||
│ │ │ └── DpcIntermediaryEntityAddDTO.java (新增)
|
||||
│ │ │ ├── CcdiIntermediaryBlacklistAddDTO.java (保留 - 兼容)
|
||||
│ │ │ ├── CcdiIntermediaryBlacklistEditDTO.java (保留 - 兼容)
|
||||
│ │ │ ├── CcdiIntermediaryBlacklistQueryDTO.java (保留)
|
||||
│ │ │ ├── CcdiIntermediaryPersonAddDTO.java (新增)
|
||||
│ │ │ └── CcdiIntermediaryEntityAddDTO.java (新增)
|
||||
│ │ ├── vo/
|
||||
│ │ │ ├── DpcIntermediaryBlacklistVO.java (保留 - 列表用)
|
||||
│ │ │ ├── DpcIntermediaryPersonDetailVO.java (新增)
|
||||
│ │ │ └── DpcIntermediaryEntityDetailVO.java (新增)
|
||||
│ │ │ ├── CcdiIntermediaryBlacklistVO.java (保留 - 列表用)
|
||||
│ │ │ ├── CcdiIntermediaryPersonDetailVO.java (新增)
|
||||
│ │ │ └── CcdiIntermediaryEntityDetailVO.java (新增)
|
||||
│ │ └── excel/
|
||||
│ │ ├── DpcIntermediaryBlacklistExcel.java (保留 - 通用模板)
|
||||
│ │ ├── DpcIntermediaryPersonExcel.java (新增)
|
||||
│ │ └── DpcIntermediaryEntityExcel.java (新增)
|
||||
│ │ ├── CcdiIntermediaryBlacklistExcel.java (保留 - 通用模板)
|
||||
│ │ ├── CcdiIntermediaryPersonExcel.java (新增)
|
||||
│ │ └── CcdiIntermediaryEntityExcel.java (新增)
|
||||
│ ├── mapper/
|
||||
│ │ └── DpcIntermediaryBlacklistMapper.java
|
||||
│ │ └── CcdiIntermediaryBlacklistMapper.java
|
||||
│ └── service/
|
||||
│ ├── IDpcIntermediaryBlacklistService.java (修改接口)
|
||||
│ ├── ICcdiIntermediaryBlacklistService.java (修改接口)
|
||||
│ └── impl/
|
||||
│ └── DpcIntermediaryBlacklistServiceImpl.java (修改实现)
|
||||
│ └── CcdiIntermediaryBlacklistServiceImpl.java (修改实现)
|
||||
└── src/main/resources/mapper/dpc/
|
||||
└── DpcIntermediaryBlacklistMapper.xml
|
||||
└── CcdiIntermediaryBlacklistMapper.xml
|
||||
```
|
||||
|
||||
### Controller 层设计
|
||||
@@ -197,7 +197,7 @@ ruoyi-dpc/
|
||||
```java
|
||||
@RestController
|
||||
@RequestMapping("/dpc/intermediary")
|
||||
public class DpcIntermediaryBlacklistController extends BaseController {
|
||||
public class CcdiIntermediaryBlacklistController extends BaseController {
|
||||
|
||||
// ... 现有接口保持不变 ...
|
||||
|
||||
@@ -209,7 +209,7 @@ public class DpcIntermediaryBlacklistController extends BaseController {
|
||||
public void importPersonTemplate(HttpServletResponse response) {
|
||||
EasyExcelUtil.importTemplateWithDictDropdown(
|
||||
response,
|
||||
DpcIntermediaryPersonExcel.class,
|
||||
CcdiIntermediaryPersonExcel.class,
|
||||
"个人中介黑名单"
|
||||
);
|
||||
}
|
||||
@@ -222,7 +222,7 @@ public class DpcIntermediaryBlacklistController extends BaseController {
|
||||
public void importEntityTemplate(HttpServletResponse response) {
|
||||
EasyExcelUtil.importTemplateWithDictDropdown(
|
||||
response,
|
||||
DpcIntermediaryEntityExcel.class,
|
||||
CcdiIntermediaryEntityExcel.class,
|
||||
"机构中介黑名单"
|
||||
);
|
||||
}
|
||||
@@ -235,8 +235,8 @@ public class DpcIntermediaryBlacklistController extends BaseController {
|
||||
@Log(title = "中介黑名单", businessType = BusinessType.IMPORT)
|
||||
@PostMapping("/importPersonData")
|
||||
public AjaxResult importPersonData(MultipartFile file, boolean updateSupport) throws Exception {
|
||||
List<DpcIntermediaryPersonExcel> list = EasyExcelUtil.importExcel(
|
||||
file.getInputStream(), DpcIntermediaryPersonExcel.class);
|
||||
List<CcdiIntermediaryPersonExcel> list = EasyExcelUtil.importExcel(
|
||||
file.getInputStream(), CcdiIntermediaryPersonExcel.class);
|
||||
String message = intermediaryService.importPersonIntermediary(list, updateSupport);
|
||||
return success(message);
|
||||
}
|
||||
@@ -249,8 +249,8 @@ public class DpcIntermediaryBlacklistController extends BaseController {
|
||||
@Log(title = "中介黑名单", businessType = BusinessType.IMPORT)
|
||||
@PostMapping("/importEntityData")
|
||||
public AjaxResult importEntityData(MultipartFile file, boolean updateSupport) throws Exception {
|
||||
List<DpcIntermediaryEntityExcel> list = EasyExcelUtil.importExcel(
|
||||
file.getInputStream(), DpcIntermediaryEntityExcel.class);
|
||||
List<CcdiIntermediaryEntityExcel> list = EasyExcelUtil.importExcel(
|
||||
file.getInputStream(), CcdiIntermediaryEntityExcel.class);
|
||||
String message = intermediaryService.importEntityIntermediary(list, updateSupport);
|
||||
return success(message);
|
||||
}
|
||||
@@ -262,7 +262,7 @@ public class DpcIntermediaryBlacklistController extends BaseController {
|
||||
**接口扩展:**
|
||||
|
||||
```java
|
||||
public interface IDpcIntermediaryBlacklistService {
|
||||
public interface ICcdiIntermediaryBlacklistService {
|
||||
|
||||
// ... 现有方法保持不变 ...
|
||||
|
||||
@@ -274,12 +274,12 @@ public interface IDpcIntermediaryBlacklistService {
|
||||
/**
|
||||
* 导入个人中介数据
|
||||
*/
|
||||
String importPersonIntermediary(List<DpcIntermediaryPersonExcel> list, boolean isUpdateSupport);
|
||||
String importPersonIntermediary(List<CcdiIntermediaryPersonExcel> list, boolean isUpdateSupport);
|
||||
|
||||
/**
|
||||
* 导入机构中介数据
|
||||
*/
|
||||
String importEntityIntermediary(List<DpcIntermediaryEntityExcel> list, boolean isUpdateSupport);
|
||||
String importEntityIntermediary(List<CcdiIntermediaryEntityExcel> list, boolean isUpdateSupport);
|
||||
}
|
||||
```
|
||||
|
||||
@@ -293,7 +293,7 @@ public interface IDpcIntermediaryBlacklistService {
|
||||
|
||||
```java
|
||||
@Data
|
||||
public class DpcIntermediaryPersonExcel implements Serializable {
|
||||
public class CcdiIntermediaryPersonExcel implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -312,12 +312,12 @@ public class DpcIntermediaryPersonExcel implements Serializable {
|
||||
|
||||
@ExcelProperty(value = "性别", index = 3)
|
||||
@ColumnWidth(10)
|
||||
@DictDropdown(dictType = "dpc_indiv_gender")
|
||||
@DictDropdown(dictType = "ccdi_indiv_gender")
|
||||
private String indivGender; // 对应 indiv_gender,字典下拉框:男/女/其他
|
||||
|
||||
@ExcelProperty(value = "证件类型", index = 4)
|
||||
@ColumnWidth(15)
|
||||
@DictDropdown(dictType = "dpc_certificate_type")
|
||||
@DictDropdown(dictType = "ccdi_certificate_type")
|
||||
private String indivCertType; // 对应 indiv_cert_type,字典下拉框:身份证/护照/港澳通行证/台胞证/军官证
|
||||
|
||||
@ExcelProperty(value = "证件号码", index = 5)
|
||||
@@ -366,7 +366,7 @@ public class DpcIntermediaryPersonExcel implements Serializable {
|
||||
|
||||
```java
|
||||
@Data
|
||||
public class DpcIntermediaryEntityExcel implements Serializable {
|
||||
public class CcdiIntermediaryEntityExcel implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -381,12 +381,12 @@ public class DpcIntermediaryEntityExcel implements Serializable {
|
||||
|
||||
@ExcelProperty(value = "主体类型", index = 2)
|
||||
@ColumnWidth(20)
|
||||
@DictDropdown(dictType = "dpc_entity_type")
|
||||
@DictDropdown(dictType = "ccdi_entity_type")
|
||||
private String corpType; // 对应 corp_type,字典下拉框:有限责任公司/股份有限公司/合伙企业/个体工商户/外资企业
|
||||
|
||||
@ExcelProperty(value = "企业性质", index = 3)
|
||||
@ColumnWidth(15)
|
||||
@DictDropdown(dictType = "dpc_enterprise_nature")
|
||||
@DictDropdown(dictType = "ccdi_enterprise_nature")
|
||||
private String corpNature; // 对应 corp_nature,字典下拉框:国企/民企/外企/合资/其他
|
||||
|
||||
@ExcelProperty(value = "行业分类", index = 4)
|
||||
@@ -453,7 +453,7 @@ public class DpcIntermediaryEntityExcel implements Serializable {
|
||||
|
||||
```java
|
||||
@Data
|
||||
public class DpcIntermediaryPersonDetailVO implements Serializable {
|
||||
public class CcdiIntermediaryPersonDetailVO implements Serializable {
|
||||
|
||||
// 核心字段
|
||||
private Long intermediaryId;
|
||||
@@ -492,7 +492,7 @@ public class DpcIntermediaryPersonDetailVO implements Serializable {
|
||||
|
||||
```java
|
||||
@Data
|
||||
public class DpcIntermediaryEntityDetailVO implements Serializable {
|
||||
public class CcdiIntermediaryEntityDetailVO implements Serializable {
|
||||
|
||||
// 核心字段
|
||||
private Long intermediaryId;
|
||||
@@ -541,14 +541,14 @@ public class DpcIntermediaryEntityDetailVO implements Serializable {
|
||||
| 列名 | 下拉框选项 | 说明 |
|
||||
|------|-----------|------|
|
||||
| 性别 | 男, 女, 其他 | 对应值:M, F, O |
|
||||
| 证件类型 | 身份证, 护照, 港澳通行证, 台胞证, 军官证 | 从字典 dpc_certificate_type 加载 |
|
||||
| 证件类型 | 身份证, 护照, 港澳通行证, 台胞证, 军官证 | 从字典 ccdi_certificate_type 加载 |
|
||||
|
||||
#### 机构中介模板下拉框
|
||||
|
||||
| 列名 | 下拉框选项 | 说明 |
|
||||
|------|-----------|------|
|
||||
| 主体类型 | 有限责任公司, 股份有限公司, 合伙企业, 个体工商户, 外资企业 | 从字典 dpc_entity_type 加载 |
|
||||
| 企业性质 | 国企, 民企, 外企, 合资, 其他 | 从字典 dpc_enterprise_nature 加载 |
|
||||
| 主体类型 | 有限责任公司, 股份有限公司, 合伙企业, 个体工商户, 外资企业 | 从字典 ccdi_entity_type 加载 |
|
||||
| 企业性质 | 国企, 民企, 外企, 合资, 其他 | 从字典 ccdi_enterprise_nature 加载 |
|
||||
|
||||
**注意**:
|
||||
- **状态字段**:不在 Excel 模板中显示,导入时默认设置为"正常"(0)
|
||||
@@ -610,7 +610,7 @@ public class DpcIntermediaryEntityDetailVO implements Serializable {
|
||||
|
||||
## 字典数据设计
|
||||
|
||||
### 人员类型(dpc_person_type)
|
||||
### 人员类型(ccdi_person_type)
|
||||
|
||||
| 字典值 | 字典标签 | 排序 | 状态 |
|
||||
|-------|---------|-----|------|
|
||||
@@ -618,7 +618,7 @@ public class DpcIntermediaryEntityDetailVO implements Serializable {
|
||||
| 职业背债人 | 职业背债人 | 2 | 正常 |
|
||||
| 房产中介 | 房产中介 | 3 | 正常 |
|
||||
|
||||
### 人员子类型(dpc_person_sub_type)
|
||||
### 人员子类型(ccdi_person_sub_type)
|
||||
|
||||
| 字典值 | 字典标签 | 排序 | 状态 |
|
||||
|-------|---------|-----|------|
|
||||
@@ -627,7 +627,7 @@ public class DpcIntermediaryEntityDetailVO implements Serializable {
|
||||
| 子女 | 子女 | 3 | 正常 |
|
||||
| 其他 | 其他 | 9 | 正常 |
|
||||
|
||||
### 证件类型(dpc_certificate_type)
|
||||
### 证件类型(ccdi_certificate_type)
|
||||
|
||||
| 字典值 | 字典标签 | 排序 | 状态 |
|
||||
|-------|---------|-----|------|
|
||||
@@ -637,7 +637,7 @@ public class DpcIntermediaryEntityDetailVO implements Serializable {
|
||||
| 台胞证 | 台胞证 | 4 | 正常 |
|
||||
| 军官证 | 军官证 | 5 | 正常 |
|
||||
|
||||
### 主体类型(dpc_entity_type)
|
||||
### 主体类型(ccdi_entity_type)
|
||||
|
||||
| 字典值 | 字典标签 | 排序 | 状态 |
|
||||
|-------|---------|-----|------|
|
||||
@@ -647,7 +647,7 @@ public class DpcIntermediaryEntityDetailVO implements Serializable {
|
||||
| 个体工商户 | 个体工商户 | 4 | 正常 |
|
||||
| 外资企业 | 外资企业 | 5 | 正常 |
|
||||
|
||||
### 企业性质(dpc_enterprise_nature)
|
||||
### 企业性质(ccdi_enterprise_nature)
|
||||
|
||||
| 字典值 | 字典标签 | 排序 | 状态 |
|
||||
|-------|---------|-----|------|
|
||||
@@ -657,7 +657,7 @@ public class DpcIntermediaryEntityDetailVO implements Serializable {
|
||||
| 合资 | 合资 | 4 | 正常 |
|
||||
| 其他 | 其他 | 9 | 正常 |
|
||||
|
||||
### 数据来源(dpc_data_source)
|
||||
### 数据来源(ccdi_data_source)
|
||||
|
||||
| 字典值 | 字典标签 | 排序 | 状态 |
|
||||
|-------|---------|-----|------|
|
||||
@@ -685,14 +685,14 @@ public class DpcIntermediaryEntityDetailVO implements Serializable {
|
||||
// 生成个人中介模板(带字典下拉框)
|
||||
EasyExcelUtil.importTemplateWithDictDropdown(
|
||||
response,
|
||||
DpcIntermediaryPersonExcel.class,
|
||||
CcdiIntermediaryPersonExcel.class,
|
||||
"个人中介黑名单"
|
||||
);
|
||||
|
||||
// 生成机构中介模板(带字典下拉框)
|
||||
EasyExcelUtil.importTemplateWithDictDropdown(
|
||||
response,
|
||||
DpcIntermediaryEntityExcel.class,
|
||||
CcdiIntermediaryEntityExcel.class,
|
||||
"机构中介黑名单"
|
||||
);
|
||||
```
|
||||
|
||||
@@ -94,11 +94,11 @@
|
||||
## Impact
|
||||
|
||||
### 后端影响
|
||||
- **数据库**:扩展 `dpc_intermediary_blacklist` 表,添加约30个新字段
|
||||
- **实体类**:`DpcIntermediaryBlacklist` 添加新字段属性
|
||||
- **DTO**:创建 `DpcIntermediaryPersonAddDTO` 和 `DpcIntermediaryEntityAddDTO`
|
||||
- **VO**:创建 `DpcIntermediaryPersonDetailVO` 和 `DpcIntermediaryEntityDetailVO`
|
||||
- **Excel**:创建 `DpcIntermediaryPersonExcel` 和 `DpcIntermediaryEntityExcel`
|
||||
- **数据库**:扩展 `ccdi_intermediary_blacklist` 表,添加约30个新字段
|
||||
- **实体类**:`CcdiIntermediaryBlacklist` 添加新字段属性
|
||||
- **DTO**:创建 `CcdiIntermediaryPersonAddDTO` 和 `CcdiIntermediaryEntityAddDTO`
|
||||
- **VO**:创建 `CcdiIntermediaryPersonDetailVO` 和 `CcdiIntermediaryEntityDetailVO`
|
||||
- **Excel**:创建 `CcdiIntermediaryPersonExcel` 和 `CcdiIntermediaryEntityExcel`
|
||||
- **Controller**:添加两个模板下载接口,修改详情接口
|
||||
- **Service**:扩展导入逻辑,支持不同类型的模板
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
- 扩展现有表,添加新字段(默认允许 NULL,保持向后兼容)
|
||||
|
||||
## Dependencies
|
||||
- 依赖现有 `dpc_intermediary_blacklist` 表和基础功能
|
||||
- 依赖现有 `ccdi_intermediary_blacklist` 表和基础功能
|
||||
- 依赖 EasyExcel 进行 Excel 导入导出
|
||||
|
||||
## Related Changes
|
||||
|
||||
@@ -97,8 +97,8 @@
|
||||
**Given** 用户调用详情接口,只提供中介ID
|
||||
**When** 系统查询到该中介记录
|
||||
**Then** 系统应根据中介类型自动返回对应类型的 VO
|
||||
**And** 个人类型返回 DpcIntermediaryPersonDetailVO
|
||||
**And** 机构类型返回 DpcIntermediaryEntityDetailVO
|
||||
**And** 个人类型返回 CcdiIntermediaryPersonDetailVO
|
||||
**And** 机构类型返回 CcdiIntermediaryEntityDetailVO
|
||||
|
||||
### Requirement: 保持现有功能兼容性
|
||||
所有新增功能必须保持现有接口和功能的正常运行。
|
||||
@@ -170,7 +170,7 @@
|
||||
- `excel-import-export` (Excel 导入导出基础功能)
|
||||
|
||||
### Dependencies
|
||||
- 依赖现有 `dpc_intermediary_blacklist` 表结构
|
||||
- 依赖现有 `ccdi_intermediary_blacklist` 表结构
|
||||
- 依赖 EasyExcel 工具类
|
||||
- 依赖现有权限控制体系
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
- [ ] 编写 ALTER TABLE 语句,添加机构类型字段(15个字段)
|
||||
- [ ] 编写 ALTER TABLE 语句,添加通用字段(1个字段:data_source)
|
||||
- [ ] 添加必要的索引(idx_credit_code, idx_phone_number)
|
||||
- [ ] 将 SQL 脚本保存到 `sql/` 目录,命名格式:`dpc_intermediary_enhance_YYYYMMDD.sql`
|
||||
- [ ] 将 SQL 脚本保存到 `sql/` 目录,命名格式:`ccdi_intermediary_enhance_YYYYMMDD.sql`
|
||||
|
||||
**验证方式**:SQL 语法检查,确保所有字段正确添加
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
- [ ] 确认所有字段添加成功且类型正确
|
||||
- [ ] 确认索引创建成功
|
||||
|
||||
**验证方式**:DESCRIBE dpc_intermediary_blacklist; SHOW INDEX FROM dpc_intermediary_blacklist;
|
||||
**验证方式**:DESCRIBE ccdi_intermediary_blacklist; SHOW INDEX FROM ccdi_intermediary_blacklist;
|
||||
|
||||
**依赖**:任务 1.1
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
### 阶段二:后端实体类和 DTO/VO 更新
|
||||
|
||||
#### 任务 2.1:更新实体类 DpcIntermediaryBlacklist
|
||||
#### 任务 2.1:更新实体类 CcdiIntermediaryBlacklist
|
||||
- [ ] 添加个人类型字段属性(11个)
|
||||
- [ ] 添加机构类型字段属性(15个)
|
||||
- [ ] 添加通用字段属性(1个:dataSource)
|
||||
@@ -49,7 +49,7 @@
|
||||
---
|
||||
|
||||
#### 任务 2.2:创建个人中介 DTO
|
||||
- [ ] 创建 `DpcIntermediaryPersonAddDTO.java`
|
||||
- [ ] 创建 `CcdiIntermediaryPersonAddDTO.java`
|
||||
- [ ] 添加个人专属字段
|
||||
- [ ] 添加适当的验证注解(@NotBlank, @Size 等)
|
||||
- [ ] 实现 Serializable 接口
|
||||
@@ -61,7 +61,7 @@
|
||||
---
|
||||
|
||||
#### 任务 2.3:创建机构中介 DTO
|
||||
- [ ] 创建 `DpcIntermediaryEntityAddDTO.java`
|
||||
- [ ] 创建 `CcdiIntermediaryEntityAddDTO.java`
|
||||
- [ ] 添加机构专属字段
|
||||
- [ ] 添加适当的验证注解
|
||||
- [ ] 实现 Serializable 接口
|
||||
@@ -73,7 +73,7 @@
|
||||
---
|
||||
|
||||
#### 任务 2.4:创建个人详情 VO
|
||||
- [ ] 创建 `DpcIntermediaryPersonDetailVO.java`
|
||||
- [ ] 创建 `CcdiIntermediaryPersonDetailVO.java`
|
||||
- [ ] 包含核心字段 + 个人专属字段
|
||||
- [ ] 添加关联字段名称(如 genderName, certificateTypeName)
|
||||
- [ ] 添加审计字段
|
||||
@@ -86,7 +86,7 @@
|
||||
---
|
||||
|
||||
#### 任务 2.5:创建机构详情 VO
|
||||
- [ ] 创建 `DpcIntermediaryEntityDetailVO.java`
|
||||
- [ ] 创建 `CcdiIntermediaryEntityDetailVO.java`
|
||||
- [ ] 包含核心字段 + 机构专属字段
|
||||
- [ ] 添加关联字段名称
|
||||
- [ ] 添加审计字段
|
||||
@@ -101,14 +101,14 @@
|
||||
### 阶段三:Excel 类创建
|
||||
|
||||
#### 任务 3.1:创建个人中介 Excel 类
|
||||
- [ ] 创建 `DpcIntermediaryPersonExcel.java`
|
||||
- [ ] 创建 `CcdiIntermediaryPersonExcel.java`
|
||||
- [ ] 使用 @ExcelProperty 注解定义 Excel 列
|
||||
- [ ] 使用 @ColumnWidth 注解设置列宽
|
||||
- [ ] 字段顺序:姓名 -> 人员类型 -> ... -> 备注(共14列)
|
||||
- [ ] **不在模板中显示**:状态、数据来源字段(由系统自动设置)
|
||||
- [ ] **添加字典下拉框注解**:
|
||||
- `@DictDropdown(dictType = "dpc_indiv_gender")` - 性别字段
|
||||
- `@DictDropdown(dictType = "dpc_certificate_type")` - 证件类型字段
|
||||
- `@DictDropdown(dictType = "ccdi_indiv_gender")` - 性别字段
|
||||
- `@DictDropdown(dictType = "ccdi_certificate_type")` - 证件类型字段
|
||||
|
||||
**验证方式**:编译通过,Excel 注解正确
|
||||
|
||||
@@ -117,14 +117,14 @@
|
||||
---
|
||||
|
||||
#### 任务 3.2:创建机构中介 Excel 类
|
||||
- [ ] 创建 `DpcIntermediaryEntityExcel.java`
|
||||
- [ ] 创建 `CcdiIntermediaryEntityExcel.java`
|
||||
- [ ] 使用 @ExcelProperty 注解定义 Excel 列
|
||||
- [ ] 使用 @ColumnWidth 注解设置列宽
|
||||
- [ ] 字段顺序:机构名称 -> 统一社会信用代码 -> ... -> 备注(共17列)
|
||||
- [ ] **不在模板中显示**:状态、数据来源字段(由系统自动设置)
|
||||
- [ ] **添加字典下拉框注解**:
|
||||
- `@DictDropdown(dictType = "dpc_entity_type")` - 主体类型字段
|
||||
- `@DictDropdown(dictType = "dpc_enterprise_nature")` - 企业性质字段
|
||||
- `@DictDropdown(dictType = "ccdi_entity_type")` - 主体类型字段
|
||||
- `@DictDropdown(dictType = "ccdi_enterprise_nature")` - 企业性质字段
|
||||
|
||||
**验证方式**:编译通过,Excel 注解正确
|
||||
|
||||
@@ -135,10 +135,10 @@
|
||||
### 阶段四:Service 层实现
|
||||
|
||||
#### 任务 4.1:扩展 Service 接口
|
||||
- [ ] 在 `IDpcIntermediaryBlacklistService` 中添加新方法:
|
||||
- [ ] 在 `ICcdiIntermediaryBlacklistService` 中添加新方法:
|
||||
- `Object selectIntermediaryDetailById(Long intermediaryId)`
|
||||
- `String importPersonIntermediary(List<DpcIntermediaryPersonExcel> list, boolean isUpdateSupport)`
|
||||
- `String importEntityIntermediary(List<DpcIntermediaryEntityExcel> list, boolean isUpdateSupport)`
|
||||
- `String importPersonIntermediary(List<CcdiIntermediaryPersonExcel> list, boolean isUpdateSupport)`
|
||||
- `String importEntityIntermediary(List<CcdiIntermediaryEntityExcel> list, boolean isUpdateSupport)`
|
||||
|
||||
**验证方式**:编译通过,接口方法签名正确
|
||||
|
||||
@@ -147,10 +147,10 @@
|
||||
---
|
||||
|
||||
#### 任务 4.2:实现详情查询方法
|
||||
- [ ] 在 `DpcIntermediaryBlacklistServiceImpl` 中实现 `selectIntermediaryDetailById`
|
||||
- [ ] 在 `CcdiIntermediaryBlacklistServiceImpl` 中实现 `selectIntermediaryDetailById`
|
||||
- [ ] 根据中介类型返回不同的 VO
|
||||
- [ ] 个人类型返回 `DpcIntermediaryPersonDetailVO`
|
||||
- [ ] 机构类型返回 `DpcIntermediaryEntityDetailVO`
|
||||
- [ ] 个人类型返回 `CcdiIntermediaryPersonDetailVO`
|
||||
- [ ] 机构类型返回 `CcdiIntermediaryEntityDetailVO`
|
||||
- [ ] 填充关联字段名称(字典转换)
|
||||
|
||||
**验证方式**:单元测试验证不同类型返回正确的 VO
|
||||
@@ -234,13 +234,13 @@
|
||||
### 阶段六:字典数据配置
|
||||
|
||||
#### 任务 6.1:创建字典数据 SQL 脚本
|
||||
- [ ] 添加人员类型字典(dpc_person_type)
|
||||
- [ ] 添加人员子类型字典(dpc_person_sub_type)
|
||||
- [ ] **添加性别字典(dpc_indiv_gender)** - 用于个人中介下拉框
|
||||
- [ ] **添加证件类型字典(dpc_certificate_type)** - 用于个人中介下拉框
|
||||
- [ ] **添加主体类型字典(dpc_entity_type)** - 用于机构中介下拉框
|
||||
- [ ] **添加企业性质字典(dpc_enterprise_nature)** - 用于机构中介下拉框
|
||||
- [ ] 添加数据来源字典(dpc_data_source)
|
||||
- [ ] 添加人员类型字典(ccdi_person_type)
|
||||
- [ ] 添加人员子类型字典(ccdi_person_sub_type)
|
||||
- [ ] **添加性别字典(ccdi_indiv_gender)** - 用于个人中介下拉框
|
||||
- [ ] **添加证件类型字典(ccdi_certificate_type)** - 用于个人中介下拉框
|
||||
- [ ] **添加主体类型字典(ccdi_entity_type)** - 用于机构中介下拉框
|
||||
- [ ] **添加企业性质字典(ccdi_enterprise_nature)** - 用于机构中介下拉框
|
||||
- [ ] 添加数据来源字典(ccdi_data_source)
|
||||
- [ ] 将 SQL 脚本保存到 `sql/` 目录
|
||||
|
||||
**验证方式**:SQL 语法检查
|
||||
|
||||
Reference in New Issue
Block a user