变更项目缩写
This commit is contained in:
@@ -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`
|
||||
|
||||
Reference in New Issue
Block a user