Compare commits
9 Commits
b022ec75b8
...
worktree-l
| Author | SHA1 | Date | |
|---|---|---|---|
| 626f7d566b | |||
| a1f062d09d | |||
| 1983d93a5d | |||
| 651e4540af | |||
| 661fa88839 | |||
| 1bc65f9830 | |||
| 0d4fcd089b | |||
| e6bc2d64dd | |||
| aa17a14c4e |
13
.gitignore
vendored
13
.gitignore
vendored
@@ -18,7 +18,6 @@ target/
|
|||||||
.project
|
.project
|
||||||
.settings
|
.settings
|
||||||
.springBeans
|
.springBeans
|
||||||
.claude
|
|
||||||
|
|
||||||
### IntelliJ IDEA ###
|
### IntelliJ IDEA ###
|
||||||
.idea
|
.idea
|
||||||
@@ -42,21 +41,9 @@ nbdist/
|
|||||||
*.log
|
*.log
|
||||||
*.xml.versionsBackup
|
*.xml.versionsBackup
|
||||||
*.swp
|
*.swp
|
||||||
nul
|
|
||||||
|
|
||||||
# Git Worktrees
|
|
||||||
.worktrees/
|
|
||||||
|
|
||||||
test/
|
test/
|
||||||
|
|
||||||
!*/build/*.java
|
!*/build/*.java
|
||||||
!*/build/*.html
|
!*/build/*.html
|
||||||
!*/build/*.xml
|
!*/build/*.xml
|
||||||
|
|
||||||
######################################################################
|
|
||||||
# Excel Temporary Files
|
|
||||||
doc/test-data/**/~$*
|
|
||||||
|
|
||||||
######################################################################
|
|
||||||
# Database Configuration
|
|
||||||
db_config.conf
|
|
||||||
|
|||||||
17
.mcp.json
17
.mcp.json
@@ -1,18 +1,3 @@
|
|||||||
{
|
{
|
||||||
"mcpServers": {
|
"mcpServers": {}
|
||||||
"mysql": {
|
|
||||||
"args": [
|
|
||||||
"-y",
|
|
||||||
"@fhuang/mcp-mysql-server"
|
|
||||||
],
|
|
||||||
"command": "npx",
|
|
||||||
"env": {
|
|
||||||
"MYSQL_DATABASE": "ccdi",
|
|
||||||
"MYSQL_HOST": "116.62.17.81",
|
|
||||||
"MYSQL_PASSWORD": "Kfcx@1234",
|
|
||||||
"MYSQL_PORT": "3306",
|
|
||||||
"MYSQL_USER": "root"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
696
CLAUDE.md
696
CLAUDE.md
@@ -1,528 +1,326 @@
|
|||||||
# CLAUDE.md
|
# CLAUDE.md
|
||||||
|
## 分析
|
||||||
|
- 在进行需求分析类型的任务时,自动开启深度思考模式,输入 “think more”、“think a lot”、“think harder” 或 “think longer” 触发更深层的思考
|
||||||
|
- 在进行需求分析与分解任务时,按照不同的模块分为不同的文件,创建模块名的文件夹并将对应文件保存在文件夹中,然后对模块的功能文件进行继续分解
|
||||||
|
- 在使用/openspec:proposal时,自动开启深度思考模式,输入 “think more”、“think a lot”、“think harder” 或 “think longer” 触发更深层的思考
|
||||||
|
- 在执行/openspec:apply后,使用code-simplifier 进行代码精简
|
||||||
|
|
||||||
|
## Communication
|
||||||
|
- 永远使用简体中文进行思考和对话
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
- 编写 .md 文档时,也要用中文
|
||||||
|
- 所有生成的文档都放在项目根目录下的doc文件中。
|
||||||
|
|
||||||
|
## 数据库规范
|
||||||
|
- 新建表时,需要加上项目英文名首字母集合
|
||||||
|
|
||||||
|
|
||||||
|
## Coding
|
||||||
|
### Java Code Style
|
||||||
|
- 新建模块命名方式为项目英文名首字母集合+主要功能
|
||||||
|
- 新的功能代码与若依框架自带的代码分离,新建模块,controller层也要放在新建模块中
|
||||||
|
- 使用 `@Data` 注解保证代码的简洁
|
||||||
|
- 尽量使用 MyBatis Plus 进行 CRUD 操作(版本 3.5.10,Spring Boot 3 适配版)
|
||||||
|
- 服务层中的使用@Resource注释,替代@Autowired
|
||||||
|
- 实体类不继承BaseEntity,单独添加审计字段
|
||||||
|
- 完成后端代码controller层代码生成测试后,在项目文件目录下生成API文档
|
||||||
|
- 接口传参需要使用单独的DTO,不可以与entity混用
|
||||||
|
- 需要单独的VO类,不可以与entity混用
|
||||||
|
- 审计字段通过添加注释的方式实现自动插入
|
||||||
|
- 简单的crud操作通过mybatis plus的方法实现,复杂的操作通过xml中写sql和mapper映射实现
|
||||||
|
- 控制层所有接口需要正确的添加注释,确保在swagger-ui中正确展示。控制层中任何接口发生变动,及时同步到doc中的接口文档中
|
||||||
|
- 控制层分页接口使用mybatis plus page,不要使用若依框架的分页
|
||||||
|
|
||||||
|
|
||||||
|
### 前端代码
|
||||||
|
- 在添加页面和组件后,注意与数据库中菜单表进行联动修改
|
||||||
|
- 前端组件代码需要组件化,复杂的组件需要进行拆分为单独的文件
|
||||||
|
|
||||||
|
|
||||||
|
## 运行
|
||||||
|
- 使用mcp:ccdi_intermediary_blacklist进行数据库相关操作
|
||||||
|
- 不要在命令行中启动后端进行测试
|
||||||
|
- 测试方式为生成可执行的测试脚本
|
||||||
|
- 测试脚本在运行完成后需要保存所有接口输出并生成测试用例报告
|
||||||
|
- /login/test接口可以传入username和password获取token,用于测试验证接口的功能。
|
||||||
|
用于测试的账号:username: admin password admin123
|
||||||
|
- swagger-ui的地址为/swagger-ui/index.html
|
||||||
|
- 在向doc文件夹添加文件时需要分门别类添加,根据
|
||||||
|
|
||||||
|
|
||||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||||
|
|
||||||
## 快速参考
|
## Project Overview
|
||||||
|
|
||||||
**启动项目:**
|
This is a **discipline preliminary check system** built on the **RuoYi (若依) v3.9.1** rapid development framework. It is an enterprise-grade management system using a front-end/back-end separated architecture.
|
||||||
- 后端: `mvn spring-boot:run` 或运行 `ry.bat`
|
|
||||||
- 前端: `cd ruoyi-ui && npm run dev`
|
|
||||||
|
|
||||||
**访问地址:**
|
### Technology Stack
|
||||||
- 前端: http://localhost:80
|
|
||||||
- 后端: http://localhost:8080
|
|
||||||
- Swagger: http://localhost:8080/swagger-ui/index.html
|
|
||||||
- Druid 监控: http://localhost:8080/druid/ (ruoyi/123456)
|
|
||||||
|
|
||||||
**测试账号:**
|
**Backend:**
|
||||||
- 用户名: `admin`
|
- Spring Boot 3.5.8
|
||||||
- 密码: `admin123`
|
- Spring Security + JWT (authentication)
|
||||||
|
- MyBatis 3.0.5 (ORM)
|
||||||
|
- MySQL 8.2.0
|
||||||
|
- Redis (caching)
|
||||||
|
- Quartz 2.5.2 (scheduled tasks)
|
||||||
|
- SpringDoc 2.8.14 (API documentation)
|
||||||
|
- Java 17
|
||||||
|
|
||||||
**获取 Token:**
|
**Frontend:**
|
||||||
```bash
|
- Vue 2.6.12
|
||||||
POST http://localhost:8080/login/test?username=admin&password=admin123
|
- Element UI 2.15.14
|
||||||
```
|
- Vuex 3.6.0 (state management)
|
||||||
|
- Vue Router 3.4.9
|
||||||
|
- Axios 0.28.1
|
||||||
|
|
||||||
---
|
## Common Commands
|
||||||
|
|
||||||
## 项目概述
|
### Backend (Maven)
|
||||||
|
|
||||||
**纪检初核系统** - 基于 **若依管理系统 v3.9.1** 构建的企业级前后端分离管理系统,用于员工异常行为风险识别。
|
|
||||||
|
|
||||||
### 技术栈版本
|
|
||||||
|
|
||||||
| 后端技术 | 版本 | 前端技术 | 版本 |
|
|
||||||
|-----------------------------|--------|------------|---------|
|
|
||||||
| Spring Boot | 3.5.8 | Vue.js | 2.6.12 |
|
|
||||||
| Java | 17 | Element UI | 2.15.14 |
|
|
||||||
| MyBatis Spring Boot Starter | 3.0.5 | Vuex | 3.6.0 |
|
|
||||||
| MySQL Connector | 8.2.0 | Vue Router | 3.4.9 |
|
|
||||||
| SpringDoc OpenAPI | 2.8.14 | Axios | 0.28.1 |
|
|
||||||
| EasyExcel | 3.3.4 | ECharts | 5.4.0 |
|
|
||||||
| Quartz | 2.5.2 | Sass | 1.32.13 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 常用命令
|
|
||||||
|
|
||||||
### 后端 (Maven)
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 编译项目
|
# Compile the project
|
||||||
mvn clean compile
|
mvn clean compile
|
||||||
|
|
||||||
# 运行应用 (开发环境)
|
# Run the application (development)
|
||||||
mvn spring-boot:run
|
mvn spring-boot:run
|
||||||
|
|
||||||
# 打包部署
|
# Package for deployment
|
||||||
mvn clean package
|
mvn clean package
|
||||||
|
|
||||||
# Windows 启动
|
# Run using startup scripts
|
||||||
ry.bat
|
./ry.bat # Windows
|
||||||
|
./ry.sh start # Linux/Mac
|
||||||
# Linux/Mac 启动
|
|
||||||
./ry.sh start
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 前端 (npm)
|
### Frontend (npm)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ruoyi-ui
|
cd ruoyi-ui
|
||||||
|
|
||||||
# 安装依赖 (推荐使用国内镜像)
|
# Install dependencies
|
||||||
npm install --registry=https://registry.npmmirror.com
|
npm install
|
||||||
|
|
||||||
# 开发服务器 (端口 80)
|
# Development server (runs on port 80 by default)
|
||||||
npm run dev
|
npm run dev
|
||||||
|
|
||||||
# 生产构建
|
# Production build
|
||||||
npm run build:prod
|
npm run build:prod
|
||||||
|
|
||||||
# 预览生产构建
|
# Staging build
|
||||||
|
npm run build:stage
|
||||||
|
|
||||||
|
# Preview production build
|
||||||
npm run preview
|
npm run preview
|
||||||
```
|
```
|
||||||
|
|
||||||
### 数据库初始化
|
### Database Initialization
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 初始化若依框架基础表
|
# Main database schema
|
||||||
mysql -u root -p < sql/ry_20250522.sql
|
mysql -u root -p < sql/ry_20250522.sql
|
||||||
|
|
||||||
# 初始化定时任务表
|
# Quartz scheduler tables
|
||||||
mysql -u root -p < sql/quartz.sql
|
mysql -u root -p < sql/quartz.sql
|
||||||
|
|
||||||
# 导入业务表(根据需要执行)
|
|
||||||
mysql -u root -p ccdi < sql/dpc_employee.sql
|
|
||||||
mysql -u root -p ccdi < sql/dpc_intermediary_blacklist.sql
|
|
||||||
# ... 其他业务表脚本
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**注意:**
|
## Project Architecture
|
||||||
- 业务表脚本文件名以 `ccdi_` 或 `dpc_` 开头
|
|
||||||
- 部分脚本包含菜单数据,需要按顺序执行
|
|
||||||
- 数据库需要先创建(数据库名: `ccdi`)
|
|
||||||
|
|
||||||
---
|
### Module Structure
|
||||||
|
|
||||||
## 模块架构
|
|
||||||
|
|
||||||
```
|
```
|
||||||
ccdi/
|
discipline-prelim-check/
|
||||||
├── ruoyi-admin/ # 主应用入口 (Spring Boot 启动类)
|
├── ruoyi-admin/ # Main application entry point
|
||||||
├── ruoyi-framework/ # 核心框架 (Security, Config, Filters)
|
├── ruoyi-framework/ # Core framework (Security, config, filters)
|
||||||
├── ruoyi-system/ # 系统管理 (Users, Roles, Menus, Depts)
|
├── ruoyi-system/ # System management (Users, Roles, Menus, Depts)
|
||||||
├── ruoyi-common/ # 通用工具 (annotations, utils, constants)
|
├── ruoyi-common/ # Common utilities (annotations, utils, constants)
|
||||||
├── ruoyi-quartz/ # 定时任务
|
├── ruoyi-quartz/ # Scheduled task management
|
||||||
├── ruoyi-generator/ # 代码生成器
|
├── ruoyi-generator/ # Code generator (CRUD scaffolding)
|
||||||
├── ruoyi-info-collection/ # 【核心业务模块】信息采集
|
├── ruoyi-ui/ # Frontend Vue application
|
||||||
├── ruoyi-ui/ # 前端 Vue 应用
|
├── sql/ # Database scripts
|
||||||
├── sql/ # 数据库脚本
|
├── bin/ # Startup scripts
|
||||||
├── bin/ # 启动脚本
|
└── openspec/ # OpenSpec specification workflow
|
||||||
└── doc/ # 项目文档
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 模块依赖关系
|
### Backend Architecture: MVC + Modular Design
|
||||||
|
|
||||||
|
The backend follows a standard MVC pattern with modular separation:
|
||||||
|
|
||||||
```
|
```
|
||||||
ruoyi-admin (启动模块)
|
Controller Layer (ruoyi-admin/web/controller/)
|
||||||
├── ruoyi-framework (核心安全配置)
|
├── common/ # Common controllers (captcha, file upload)
|
||||||
├── ruoyi-system (系统核心业务)
|
├── monitor/ # Monitoring controllers (cache, server, logs)
|
||||||
├── ruoyi-common (共享工具)
|
├── system/ # System management (users, roles, menus)
|
||||||
├── ruoyi-quartz (定时任务)
|
└── tool/ # Tools (code generator, swagger)
|
||||||
├── ruoyi-generator (代码生成)
|
|
||||||
└── ruoyi-info-collection (信息采集模块)
|
Service Layer (ruoyi-system/service/)
|
||||||
└── 依赖 ruoyi-common
|
├── ISysUserService.java
|
||||||
|
├── ISysRoleService.java
|
||||||
|
└── ...
|
||||||
|
|
||||||
|
Mapper Layer (ruoyi-system/mapper/)
|
||||||
|
├── SysUserMapper.java
|
||||||
|
├── SysRoleMapper.java
|
||||||
|
└── ...
|
||||||
|
|
||||||
|
Domain Layer (ruoyi-system/domain/)
|
||||||
|
├── SysUser.java # Entity
|
||||||
|
├── vo/ # Value objects
|
||||||
|
└── ...
|
||||||
```
|
```
|
||||||
|
|
||||||
**添加新业务模块:**
|
### Frontend Architecture: Vue SPA
|
||||||
1. 在根目录 `pom.xml` 的 `<modules>` 中添加新模块
|
|
||||||
2. 在新模块的 `pom.xml` 中添加对 `ruoyi-common` 的依赖
|
|
||||||
3. 在 `ruoyi-admin/pom.xml` 中添加对新模块的依赖
|
|
||||||
4. 在新模块中按照分层规范创建 controller/service/mapper/domain 包
|
|
||||||
|
|
||||||
### ruoyi-info-collection 业务模块 (核心)
|
|
||||||
|
|
||||||
自定义业务模块,包含以下核心功能:
|
|
||||||
|
|
||||||
| 功能 | Controller | 实体类 |
|
|
||||||
|----------|---------------------------------------|-----------------------------|
|
|
||||||
| 员工基础信息 | CcdiBaseStaffController | CcdiBaseStaff |
|
|
||||||
| 中介黑名单 | CcdiIntermediaryController | CcdiBizIntermediary |
|
|
||||||
| 员工家庭关系 | CcdiStaffFmyRelationController | CcdiStaffFmyRelation |
|
|
||||||
| 员工企业关系 | CcdiStaffEnterpriseRelationController | CcdiStaffEnterpriseRelation |
|
|
||||||
| 信贷客户家庭关系 | CcdiCustFmyRelationController | CcdiCustFmyRelation |
|
|
||||||
| 信贷客户企业关系 | CcdiCustEnterpriseRelationController | CcdiCustEnterpriseRelation |
|
|
||||||
| 员工调动记录 | CcdiStaffTransferController | CcdiStaffTransfer |
|
|
||||||
| 员工招聘记录 | CcdiStaffRecruitmentController | CcdiStaffRecruitment |
|
|
||||||
| 采购交易 | CcdiPurchaseTransactionController | CcdiPurchaseTransaction |
|
|
||||||
|
|
||||||
**分层结构:**
|
|
||||||
|
|
||||||
- Controller: `ruoyi-info-collection/src/main/java/com/ruoyi/info/collection/controller/`
|
|
||||||
- Service: `ruoyi-info-collection/src/main/java/com/ruoyi/info/collection/service/`
|
|
||||||
- Mapper: `ruoyi-info-collection/src/main/java/com/ruoyi/info/collection/mapper/`
|
|
||||||
- Domain: `ruoyi-info-collection/src/main/java/com/ruoyi/info/collection/domain/`
|
|
||||||
- dto/: 数据传输对象
|
|
||||||
- vo/: 视图对象
|
|
||||||
- excel/: Excel导入导出实体
|
|
||||||
- XML映射: `ruoyi-info-collection/src/main/resources/mapper/info/collection/`
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 后端开发规范
|
|
||||||
|
|
||||||
### 通用规范
|
|
||||||
|
|
||||||
- **新模块命名**: 项目英文名首字母集合 + 主要功能 (如 `ruoyi-info-collection`)
|
|
||||||
- **代码分离**: 新功能代码与若依框架自带代码分离,Controller 放在新模块中
|
|
||||||
- **审计字段**: 实体类不继承 BaseEntity,单独添加审计字段,通过注释实现自动插入
|
|
||||||
|
|
||||||
### Java 代码风格
|
|
||||||
|
|
||||||
```java
|
|
||||||
// 使用 @Data 注解
|
|
||||||
@Data
|
|
||||||
public class CcdiBaseStaff {
|
|
||||||
// 审计字段通过注释实现自动插入
|
|
||||||
/** 创建者 */
|
|
||||||
private String createBy;
|
|
||||||
/** 创建时间 */
|
|
||||||
private Date createTime;
|
|
||||||
/** 更新者 */
|
|
||||||
private String updateBy;
|
|
||||||
/** 更新时间 */
|
|
||||||
private Date updateTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 服务层使用 @Resource 注入
|
|
||||||
@Resource
|
|
||||||
private ICcdiBaseStaffService baseStaffService;
|
|
||||||
```
|
|
||||||
|
|
||||||
### 分层规范
|
|
||||||
|
|
||||||
- **Controller**: 所有接口添加 Swagger 注释,分页使用 MyBatis Plus Page
|
|
||||||
- **Service**: 简单 CRUD 用 MyBatis Plus 方法,复杂操作在 XML 写 SQL
|
|
||||||
- **DTO/VO**: 接口传参使用独立 DTO,返回使用独立 VO,不与 entity 混用
|
|
||||||
- **Mapper**: 简单操作继承 BaseMapper,复杂操作在 XML 中定义
|
|
||||||
|
|
||||||
### 禁止事项
|
|
||||||
|
|
||||||
- **禁止使用全限定类名**: 必须使用 `import` 语句导入类,不要在代码中使用 `java.util.List` 这样的全限定名
|
|
||||||
- **禁止使用 `extends ServiceImpl<>`**: Service 接口和实现类分离定义
|
|
||||||
- **禁止 Entity 混用**: DTO、VO、Excel 类必须独立,不与 Entity 混用
|
|
||||||
- **禁止缺少 `@Resource`**: Service 注入必须使用 `@Resource` 注解
|
|
||||||
|
|
||||||
### API 响应格式
|
|
||||||
|
|
||||||
```java
|
|
||||||
// 成功
|
|
||||||
AjaxResult.success("操作成功", data);
|
|
||||||
|
|
||||||
// 错误
|
|
||||||
AjaxResult.error("操作失败");
|
|
||||||
|
|
||||||
// 分页
|
|
||||||
Page<CcdiBaseStaff> page = new Page<>(pageNum, pageSize);
|
|
||||||
IPage<CcdiBaseStaff> result = baseStaffMapper.selectPage(page, queryWrapper);
|
|
||||||
return AjaxResult.success(result);
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 前端开发规范
|
|
||||||
|
|
||||||
### 目录结构
|
|
||||||
|
|
||||||
```
|
```
|
||||||
ruoyi-ui/src/
|
ruoyi-ui/src/
|
||||||
├── api/ # API 请求定义 (与后端 Controller 对应)
|
├── api/ # API request definitions
|
||||||
├── views/ # 页面组件 (按功能模块组织)
|
├── assets/ # Static resources (images, styles)
|
||||||
│ ├── ccdiBaseStaff/
|
├── components/ # Reusable components
|
||||||
│ ├── ccdiIntermediary/
|
├── layout/ # Main layout (Sidebar, Navbar, TagsView)
|
||||||
│ └── ...
|
├── router/ # Vue Router configuration
|
||||||
├── components/ # 可复用组件 (复杂组件需拆分)
|
├── store/ # Vuex state management
|
||||||
├── router/ # 路由配置
|
├── utils/ # Utility functions
|
||||||
└── store/ # Vuex 状态管理
|
├── views/ # Page components organized by feature
|
||||||
|
│ ├── dashboard/
|
||||||
|
│ ├── monitor/
|
||||||
|
│ ├── system/
|
||||||
|
│ └── tool/
|
||||||
|
└── permission.js # Permission directives
|
||||||
```
|
```
|
||||||
|
|
||||||
### API 调用示例
|
### Module Dependencies
|
||||||
|
|
||||||
|
```
|
||||||
|
ruoyi-admin (startup module)
|
||||||
|
↓ depends on
|
||||||
|
ruoyi-framework (core security & config)
|
||||||
|
ruoyi-system (system core business)
|
||||||
|
ruoyi-common (shared utilities)
|
||||||
|
ruoyi-quartz (scheduled tasks)
|
||||||
|
ruoyi-generator (code generation)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Key Development Patterns
|
||||||
|
|
||||||
|
### Code Generation Workflow
|
||||||
|
|
||||||
|
RuoYi provides a powerful code generator for rapid CRUD development:
|
||||||
|
|
||||||
|
1. **Create database table** - Design your table schema
|
||||||
|
2. **Import table** - Use System Tools → Code Generation → Import
|
||||||
|
3. **Configure** - Edit table info, generate info (module, function name, etc.)
|
||||||
|
4. **Generate code** - Download the generated zip
|
||||||
|
5. **Copy files** - Extract to appropriate directories:
|
||||||
|
- Backend: `ruoyi-admin/web/controller/`, service, mapper files
|
||||||
|
- Frontend: `ruoyi-ui/src/views/`, `ruoyi-ui/src/api/`
|
||||||
|
|
||||||
|
### Permission System
|
||||||
|
|
||||||
|
The permission system uses **Role-Menu-Button** hierarchy:
|
||||||
|
|
||||||
|
- **Menus**: Define navigation items and route permissions
|
||||||
|
- **Roles**: Assign menu permissions to roles
|
||||||
|
- **Users**: Assign roles to users
|
||||||
|
- **Data Permissions**: Control data scope (all, custom, department, etc.)
|
||||||
|
|
||||||
|
Permission keys in code use format: `system:user:edit`, `system:user:remove`, etc.
|
||||||
|
|
||||||
|
### API Response Format
|
||||||
|
|
||||||
|
All API responses use `AjaxResult` wrapper:
|
||||||
|
|
||||||
|
```java
|
||||||
|
// Success
|
||||||
|
AjaxResult.success("操作成功", data);
|
||||||
|
|
||||||
|
// Error
|
||||||
|
AjaxResult.error("操作失败");
|
||||||
|
|
||||||
|
// Custom
|
||||||
|
AjaxResult.put("key", value);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Frontend API Calls
|
||||||
|
|
||||||
|
API calls are defined in `ruoyi-ui/src/api/`:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
|
|
||||||
export function listStaff(query) {
|
export function listUser(query) {
|
||||||
return request({
|
return request({
|
||||||
url: '/ccdi/baseStaff/list',
|
url: '/system/user/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
```
|
|
||||||
|
|
||||||
### 菜单联动
|
export function addUser(data) {
|
||||||
|
return request({
|
||||||
添加页面和组件后,需要同步修改数据库中的菜单表 (`sys_menu`)。
|
url: '/system/user',
|
||||||
|
method: 'post',
|
||||||
---
|
data: data
|
||||||
|
})
|
||||||
## 特殊功能
|
|
||||||
|
|
||||||
### 异步导入
|
|
||||||
|
|
||||||
支持大数据量异步 Excel 导入,通过 taskId 查询导入状态:
|
|
||||||
|
|
||||||
```java
|
|
||||||
@PostMapping("/import")
|
|
||||||
public AjaxResult asyncImport(@RequestParam("file") MultipartFile file) {
|
|
||||||
String taskId = asyncImportService.startImport(file);
|
|
||||||
return AjaxResult.success("导入任务已启动", taskId);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/import/status/{taskId}")
|
|
||||||
public AjaxResult getImportStatus(@PathVariable String taskId) {
|
|
||||||
return AjaxResult.success(asyncImportService.getStatus(taskId));
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
**导入流程:**
|
## OpenSpec Workflow
|
||||||
1. 前端上传 Excel 文件
|
|
||||||
2. 后端异步处理,返回 taskId
|
|
||||||
3. 前端轮询 `/import/status/{taskId}` 获取导入进度
|
|
||||||
4. 导入完成后,可获取成功/失败数据统计
|
|
||||||
|
|
||||||
**导入结果处理:**
|
This project uses **OpenSpec** for specification-driven development. Always reference `openspec/AGENTS.md` when:
|
||||||
- 只返回导入失败的数据(含失败原因)
|
|
||||||
- 成功数据不返回,减少响应体积
|
|
||||||
- 支持批量插入,提高性能
|
|
||||||
|
|
||||||
### EasyExcel 字典下拉框
|
- Planning or proposing new features
|
||||||
|
- Making breaking changes
|
||||||
|
- Modifying architecture
|
||||||
|
- Handling ambiguous requirements
|
||||||
|
|
||||||
导入模板支持字典下拉框配置,提升数据录入准确性。使用 `DictDropdownWriteHandler` 实现。
|
### Key OpenSpec Commands
|
||||||
|
|
||||||
### 权限控制
|
|
||||||
|
|
||||||
基于 Spring Security + JWT 的角色菜单权限系统:
|
|
||||||
|
|
||||||
- 权限格式: `system:user:edit`, `ccdi:staff:list`
|
|
||||||
- 数据权限: 支持全部、自定义、部门等范围
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 测试与验证
|
|
||||||
|
|
||||||
### 测试账号
|
|
||||||
|
|
||||||
- **用户名**: `admin`
|
|
||||||
- **密码**: `admin123`
|
|
||||||
|
|
||||||
### 登录获取 Token
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 登录接口
|
# List active changes
|
||||||
POST /login/test?username=admin&password=admin123
|
openspec list
|
||||||
|
|
||||||
|
# List all specifications
|
||||||
|
openspec list --specs
|
||||||
|
|
||||||
|
# View details
|
||||||
|
openspec show [change-id or spec-id]
|
||||||
|
|
||||||
|
# Validate changes
|
||||||
|
openspec validate [change-id] --strict --no-interactive
|
||||||
|
|
||||||
|
# Archive completed changes
|
||||||
|
openspec archive <change-id>
|
||||||
```
|
```
|
||||||
|
|
||||||
### API 文档
|
### When to Create Proposals
|
||||||
|
|
||||||
- **Swagger UI**: `/swagger-ui/index.html`
|
**Create proposal for:**
|
||||||
- **API Docs**: `/v3/api-docs`
|
- New features or capabilities
|
||||||
|
- Breaking changes (API, schema)
|
||||||
|
- Architecture changes
|
||||||
|
- Performance optimizations that change behavior
|
||||||
|
|
||||||
### 测试规范
|
**Skip proposal for:**
|
||||||
|
- Bug fixes (restoring intended behavior)
|
||||||
|
- Typos, formatting, comments
|
||||||
|
- Non-breaking dependency updates
|
||||||
|
- Configuration changes
|
||||||
|
|
||||||
- 不在命令行启动后端进行测试
|
## Configuration Notes
|
||||||
- 生成可执行的测试脚本进行验证
|
|
||||||
- 测试完成后保存接口输出并生成测试用例报告
|
|
||||||
|
|
||||||
### 开发调试技巧
|
- **Default Admin**: `admin/admin123`
|
||||||
|
- **Backend Port**: 8080
|
||||||
|
- **Frontend Dev Port**: 80
|
||||||
|
- **API Base Path**: Configured in `ruoyi-ui/vue.config.js` proxy
|
||||||
|
- **Database Config**: `ruoyi-admin/src/main/resources/application.yml`
|
||||||
|
|
||||||
**使用 Swagger 测试接口:**
|
## Important File Locations
|
||||||
1. 访问 `/swagger-ui/index.html`
|
|
||||||
2. 点击接口展开详情
|
|
||||||
3. 点击 "Try it out" 进行测试
|
|
||||||
4. 填写参数后点击 "Execute" 执行
|
|
||||||
|
|
||||||
**查看 SQL 执行日志:**
|
| Purpose | Location |
|
||||||
- 在 `application.yml` 中设置日志级别: `com.ruoyi: debug`
|
|---------|----------|
|
||||||
- 使用 Druid 监控台查看慢 SQL
|
| Main application entry | [ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java](ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java) |
|
||||||
|
| Security configuration | [ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java](ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java) |
|
||||||
**前端代理配置:**
|
| Database config | [ruoyi-admin/src/main/resources/application.yml](ruoyi-admin/src/main/resources/application.yml) |
|
||||||
前端开发服务器通过代理转发请求到后端:
|
| MyBatis mappers | [ruoyi-system/src/main/resources/mapper/system/](ruoyi-system/src/main/resources/mapper/system/) |
|
||||||
- 前端地址: `http://localhost:80`
|
| Vue router | [ruoyi-ui/src/router/index.js](ruoyi-ui/src/router/index.js) |
|
||||||
- 后端地址: `http://localhost:8080`
|
| Vuex store | [ruoyi-ui/src/store/](ruoyi-ui/src/store/) |
|
||||||
- 代理配置文件: `ruoyi-ui/vue.config.js`
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 配置说明
|
|
||||||
|
|
||||||
| 配置项 | 值 |
|
|
||||||
|---------|-------------------|
|
|
||||||
| 后端端口 | 8080 |
|
|
||||||
| 前端开发端口 | 80 |
|
|
||||||
| 默认管理员 | admin/admin123 |
|
|
||||||
| JWT 有效期 | 30 分钟 |
|
|
||||||
| 文件上传限制 | 单文件 10MB, 总计 20MB |
|
|
||||||
|
|
||||||
### 配置文件位置
|
|
||||||
|
|
||||||
| 配置 | 路径 |
|
|
||||||
|----------|------------------------------------------------------|
|
|
||||||
| 主配置 | `ruoyi-admin/src/main/resources/application.yml` |
|
|
||||||
| 开发环境 | `ruoyi-admin/src/main/resources/application-dev.yml` |
|
|
||||||
| 数据库连接 | `application-dev.yml` |
|
|
||||||
| Redis 配置 | `application-dev.yml` |
|
|
||||||
|
|
||||||
### 数据源配置
|
|
||||||
|
|
||||||
项目使用 Druid 连接池,支持主从分离(默认关闭从库):
|
|
||||||
|
|
||||||
- **数据库连接**: `jdbc:mysql://host:3306/ccdi`
|
|
||||||
- **初始连接数**: 5
|
|
||||||
- **最小连接数**: 10
|
|
||||||
- **最大连接数**: 20
|
|
||||||
- **慢 SQL 记录**: 超过 1000ms 的 SQL 会被记录
|
|
||||||
|
|
||||||
### Redis 配置
|
|
||||||
|
|
||||||
- **默认端口**: 6379
|
|
||||||
- **数据库索引**: 0
|
|
||||||
- **连接超时**: 10s
|
|
||||||
|
|
||||||
### Druid 监控台
|
|
||||||
|
|
||||||
访问地址: `http://localhost:8080/druid/`
|
|
||||||
- 用户名: `ruoyi`
|
|
||||||
- 密码: `123456`
|
|
||||||
|
|
||||||
用于监控 SQL 执行情况、连接池状态等。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 重要文件路径
|
|
||||||
|
|
||||||
| 用途 | 路径 |
|
|
||||||
|---------------|--------------------------------------------------------------------------------|
|
|
||||||
| 应用入口 | `ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java` |
|
|
||||||
| 安全配置 | `ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java` |
|
|
||||||
| 业务 Controller | `ruoyi-info-collection/src/main/java/com/ruoyi/info/collection/controller/` |
|
|
||||||
| 业务 Mapper XML | `ruoyi-info-collection/src/main/resources/mapper/info/collection/` |
|
|
||||||
| Vue 路由 | `ruoyi-ui/src/router/index.js` |
|
|
||||||
| Vuex Store | `ruoyi-ui/src/store/` |
|
|
||||||
| 前端 API | `ruoyi-ui/src/api/` |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 数据库规范
|
|
||||||
|
|
||||||
- **新建表名**: 需要加上项目英文名首字母集合前缀 `ccdi_` (如 `ccdi_base_staff`)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 文档管理
|
|
||||||
|
|
||||||
- **文档语言**: 使用简体中文编写 .md 文档
|
|
||||||
- **文档目录**: 所有生成的文档放在 `doc/` 目录下,按类型分类
|
|
||||||
- **需求分析**: 在 `doc/` 目录下新建文件夹,以需求内容命名
|
|
||||||
|
|
||||||
### doc 目录结构
|
|
||||||
|
|
||||||
```
|
|
||||||
doc/
|
|
||||||
├── api-docs/ # API 文档
|
|
||||||
├── database/ # 数据库相关
|
|
||||||
├── design/ # 设计文档
|
|
||||||
├── implementation/ # 实施文档
|
|
||||||
├── requirements/ # 需求文档
|
|
||||||
└── test-scripts/ # 测试脚本
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## OpenSpec 工作流
|
|
||||||
|
|
||||||
项目使用 OpenSpec 进行规范驱动开发,参考 `openspec/AGENTS.md`。
|
|
||||||
|
|
||||||
### 何时创建 Proposal
|
|
||||||
|
|
||||||
**需要创建:**
|
|
||||||
|
|
||||||
- 新功能或能力
|
|
||||||
- 破坏性变更 (API, 数据库结构)
|
|
||||||
- 架构变更
|
|
||||||
- 改变行为的性能优化
|
|
||||||
|
|
||||||
**无需创建:**
|
|
||||||
|
|
||||||
- Bug 修复 (恢复预期行为)
|
|
||||||
- 拼写错误、格式、注释
|
|
||||||
- 非破坏性依赖更新
|
|
||||||
- 配置变更
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 沟通规范
|
|
||||||
|
|
||||||
- 永远使用简体中文进行思考和对话
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 常见问题排查
|
|
||||||
|
|
||||||
### 数据库连接失败
|
|
||||||
|
|
||||||
**检查项:**
|
|
||||||
1. 确认 MySQL 服务已启动
|
|
||||||
2. 检查 `application-dev.yml` 中的数据库连接配置
|
|
||||||
3. 确认数据库用户名和密码正确
|
|
||||||
4. 检查数据库是否已创建(数据库名: `ccdi`)
|
|
||||||
|
|
||||||
### Redis 连接失败
|
|
||||||
|
|
||||||
**检查项:**
|
|
||||||
1. 确认 Redis 服务已启动
|
|
||||||
2. 检查 `application-dev.yml` 中的 Redis 配置
|
|
||||||
3. 如果 Redis 不需要密码,将 `password` 配置注释掉
|
|
||||||
|
|
||||||
### 前端无法访问后端接口
|
|
||||||
|
|
||||||
**检查项:**
|
|
||||||
1. 确认后端已启动(端口 8080)
|
|
||||||
2. 检查前端代理配置(`ruoyi-ui/vue.config.js`)
|
|
||||||
3. 确认后端接口路径正确(查看 Controller 的 `@RequestMapping`)
|
|
||||||
|
|
||||||
### 导入功能无响应
|
|
||||||
|
|
||||||
**检查项:**
|
|
||||||
1. 检查文件大小是否超过限制(默认 10MB)
|
|
||||||
2. 查看后端日志是否有异常
|
|
||||||
3. 确认 Excel 模板格式正确
|
|
||||||
4. 检查必填字段是否为空
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## MyBatis Plus 分页使用
|
|
||||||
|
|
||||||
```java
|
|
||||||
// Controller 层
|
|
||||||
@GetMapping("/list")
|
|
||||||
public TableDataInfo list(QueryDTO queryDTO) {
|
|
||||||
PageDomain pageDomain = TableSupport.buildPageRequest();
|
|
||||||
Page<VO> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
|
|
||||||
Page<VO> result = service.selectPage(page, queryDTO);
|
|
||||||
return getDataTable(result.getRecords(), result.getTotal());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Service 层
|
|
||||||
Page<VO> selectPage(Page<VO> page, QueryDTO queryDTO);
|
|
||||||
|
|
||||||
// Mapper 层 (使用 XML)
|
|
||||||
<select id="selectPage" resultType="VO">
|
|
||||||
SELECT * FROM table_name
|
|
||||||
<where>
|
|
||||||
<if test="queryDTO.name != null">
|
|
||||||
AND name LIKE CONCAT('%', #{queryDTO.name}, '%')
|
|
||||||
</if>
|
|
||||||
</where>
|
|
||||||
</select>
|
|
||||||
```
|
|
||||||
|
|||||||
240
Form-Data实现最终确认.md
Normal file
240
Form-Data实现最终确认.md
Normal file
@@ -0,0 +1,240 @@
|
|||||||
|
# ✅ Form-Data 实现最终确认
|
||||||
|
|
||||||
|
## 实现日期
|
||||||
|
2026-03-03
|
||||||
|
|
||||||
|
## 实现状态
|
||||||
|
✅ **完成并验证** - 所有接口使用 form-data,Swagger 正确显示
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 实现总结
|
||||||
|
|
||||||
|
### ✅ 最终实现方式
|
||||||
|
|
||||||
|
**所有接口使用 Form 参数,Swagger UI 正确显示为 form-data 格式**
|
||||||
|
|
||||||
|
```python
|
||||||
|
@router.post("/account/common/getToken")
|
||||||
|
async def get_token(
|
||||||
|
projectNo: str = Form(..., description="项目编号"),
|
||||||
|
entityName: str = Form(..., description="项目名称"),
|
||||||
|
userId: str = Form(..., description="操作人员编号"),
|
||||||
|
# ... 其他参数
|
||||||
|
):
|
||||||
|
# 构建字典并传递给服务层
|
||||||
|
request_data = {
|
||||||
|
"projectNo": projectNo,
|
||||||
|
"entityName": entityName,
|
||||||
|
"userId": userId,
|
||||||
|
# ...
|
||||||
|
}
|
||||||
|
return token_service.create_token(request_data)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 关键设计
|
||||||
|
|
||||||
|
### 1. **路由层**
|
||||||
|
- ✅ 使用 `Form(...)` 参数接收 form-data
|
||||||
|
- ✅ 将 Form 参数转换为字典传递给服务层
|
||||||
|
- ✅ 不使用 Pydantic 模型作为请求参数(避免 Swagger 显示为 JSON)
|
||||||
|
|
||||||
|
### 2. **服务层**
|
||||||
|
- ✅ 接受 `Union[Dict, object]` 类型参数
|
||||||
|
- ✅ 兼容字典和对象两种访问方式
|
||||||
|
- ✅ 使用字典访问:`request.get("key")` 或 `request["key"]`
|
||||||
|
|
||||||
|
### 3. **Swagger UI**
|
||||||
|
- ✅ 自动识别 Form 参数
|
||||||
|
- ✅ 显示为 `application/x-www-form-urlencoded`
|
||||||
|
- ✅ 提供表单字段输入框(不是 JSON 编辑器)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 实现对比
|
||||||
|
|
||||||
|
### ❌ 之前的实现(JSON 方式)
|
||||||
|
```python
|
||||||
|
@router.post("/account/common/getToken")
|
||||||
|
async def get_token(request: GetTokenRequest):
|
||||||
|
# 接收 JSON body
|
||||||
|
return token_service.create_token(request)
|
||||||
|
```
|
||||||
|
**问题**: Swagger UI 显示为 JSON 格式
|
||||||
|
|
||||||
|
### ✅ 现在的实现(Form-Data 方式)
|
||||||
|
```python
|
||||||
|
@router.post("/account/common/getToken")
|
||||||
|
async def get_token(
|
||||||
|
projectNo: str = Form(...),
|
||||||
|
entityName: str = Form(...),
|
||||||
|
# ...
|
||||||
|
):
|
||||||
|
request_data = {"projectNo": projectNo, "entityName": entityName, ...}
|
||||||
|
return token_service.create_token(request_data)
|
||||||
|
```
|
||||||
|
**结果**: Swagger UI 显示为 form-data 格式 ✅
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ 测试结果
|
||||||
|
|
||||||
|
```bash
|
||||||
|
======================== 7 passed, 1 warning in 0.06s =========================
|
||||||
|
```
|
||||||
|
|
||||||
|
**所有 7 个测试通过** ✅
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📖 使用方式
|
||||||
|
|
||||||
|
### Python requests
|
||||||
|
```python
|
||||||
|
import requests
|
||||||
|
|
||||||
|
# ✅ 使用 data 参数(form-data)
|
||||||
|
response = requests.post(
|
||||||
|
"http://localhost:8000/account/common/getToken",
|
||||||
|
data={
|
||||||
|
"projectNo": "test_001",
|
||||||
|
"entityName": "测试企业",
|
||||||
|
"userId": "902001",
|
||||||
|
"userName": "902001",
|
||||||
|
"appId": "remote_app",
|
||||||
|
"appSecretCode": "your_code",
|
||||||
|
"role": "VIEWER",
|
||||||
|
"orgCode": "902000",
|
||||||
|
"departmentCode": "902000"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
### curl
|
||||||
|
```bash
|
||||||
|
curl -X POST http://localhost:8000/account/common/getToken \
|
||||||
|
-d "projectNo=test_001" \
|
||||||
|
-d "entityName=测试企业" \
|
||||||
|
-d "userId=902001" \
|
||||||
|
-d "userName=902001" \
|
||||||
|
-d "appId=remote_app" \
|
||||||
|
-d "appSecretCode=your_code" \
|
||||||
|
-d "role=VIEWER" \
|
||||||
|
-d "orgCode=902000" \
|
||||||
|
-d "departmentCode=902000"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Swagger UI
|
||||||
|
1. 访问 http://localhost:8000/docs
|
||||||
|
2. 点击接口展开
|
||||||
|
3. 点击 "Try it out"
|
||||||
|
4. **看到表单字段**(不是 JSON 编辑器)
|
||||||
|
5. 填写参数并点击 "Execute"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📁 修改的文件
|
||||||
|
|
||||||
|
### 路由层
|
||||||
|
1. **routers/api.py**
|
||||||
|
- 所有接口使用 `Form(...)` 参数
|
||||||
|
- 构建 dict 传递给服务层
|
||||||
|
|
||||||
|
### 服务层
|
||||||
|
2. **services/token_service.py**
|
||||||
|
- `create_token()` 接受 `Union[Dict, object]`
|
||||||
|
- 支持字典访问方式
|
||||||
|
|
||||||
|
3. **services/file_service.py**
|
||||||
|
- `fetch_inner_flow()` 接受 `Union[Dict, object]`
|
||||||
|
- 移除 Pydantic 模型依赖
|
||||||
|
|
||||||
|
4. **services/statement_service.py**
|
||||||
|
- `get_bank_statement()` 接受 `Union[Dict, object]`
|
||||||
|
- 使用字典访问分页参数
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎨 Swagger UI 效果
|
||||||
|
|
||||||
|
### 显示方式
|
||||||
|
```
|
||||||
|
Request body
|
||||||
|
Content-Type: application/x-www-form-urlencoded
|
||||||
|
|
||||||
|
Form fields:
|
||||||
|
- projectNo: [input]
|
||||||
|
- entityName: [input]
|
||||||
|
- userId: [input]
|
||||||
|
- userName: [input]
|
||||||
|
- appId: [input with default: remote_app]
|
||||||
|
- appSecretCode: [input]
|
||||||
|
- role: [input with default: VIEWER]
|
||||||
|
- orgCode: [input]
|
||||||
|
- entityId: [optional input]
|
||||||
|
- xdRelatedPersons: [optional input]
|
||||||
|
- jzDataDateId: [input with default: 0]
|
||||||
|
- innerBSStartDateId: [input with default: 0]
|
||||||
|
- innerBSEndDateId: [input with default: 0]
|
||||||
|
- analysisType: [input with default: -1]
|
||||||
|
- departmentCode: [input]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ 注意事项
|
||||||
|
|
||||||
|
### 1. 不要使用 `json=` 参数
|
||||||
|
```python
|
||||||
|
# ❌ 错误
|
||||||
|
response = requests.post(url, json=data)
|
||||||
|
|
||||||
|
# ✅ 正确
|
||||||
|
response = requests.post(url, data=data)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 可选参数处理
|
||||||
|
```python
|
||||||
|
# 可选参数使用 Optional[str] = Form(None)
|
||||||
|
entityId: Optional[str] = Form(None, description="可选")
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 默认值参数
|
||||||
|
```python
|
||||||
|
# 默认值使用 Form("default_value")
|
||||||
|
appId: str = Form("remote_app", description="固定值")
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ 验证清单
|
||||||
|
|
||||||
|
- [x] 所有接口使用 Form 参数
|
||||||
|
- [x] 服务层接受字典参数
|
||||||
|
- [x] 移除 Pydantic 模型在路由层的依赖
|
||||||
|
- [x] Swagger UI 显示为 form-data
|
||||||
|
- [x] 所有测试通过(7/7)
|
||||||
|
- [x] 支持 Python requests 调用
|
||||||
|
- [x] 支持 curl 命令调用
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎉 总结
|
||||||
|
|
||||||
|
✅ **实现完成**
|
||||||
|
|
||||||
|
- **传输方式**: `application/x-www-form-urlencoded`
|
||||||
|
- **Swagger UI**: 正确显示为 form-data 表单
|
||||||
|
- **测试状态**: 7/7 通过
|
||||||
|
- **兼容性**: 支持字典和对象两种访问方式
|
||||||
|
|
||||||
|
**Mock 服务器已准备就绪!** 🚀
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**实现人员**: Claude Code
|
||||||
|
**实现日期**: 2026-03-03
|
||||||
|
**版本**: v1.4.0
|
||||||
|
**状态**: ✅ 完成
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.annotation;
|
|
||||||
|
|
||||||
import com.ruoyi.info.collection.validation.EnumValidator;
|
|
||||||
import jakarta.validation.Constraint;
|
|
||||||
import jakarta.validation.Payload;
|
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 枚举值校验注解
|
|
||||||
* 用于校验字段值是否在指定枚举类的定义范围内
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
*/
|
|
||||||
@Target({ElementType.FIELD, ElementType.PARAMETER})
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
|
||||||
@Constraint(validatedBy = EnumValidator.class)
|
|
||||||
@Documented
|
|
||||||
public @interface EnumValid {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 枚举类
|
|
||||||
*/
|
|
||||||
Class<?> enumClass();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 校验失败时的错误消息
|
|
||||||
*/
|
|
||||||
String message() default "枚举值不合法";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分组
|
|
||||||
*/
|
|
||||||
Class<?>[] groups() default {};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 负载
|
|
||||||
*/
|
|
||||||
Class<? extends Payload>[] payload() default {};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否忽略空值
|
|
||||||
* 如果为true,当字段为null或空字符串时不进行校验
|
|
||||||
*/
|
|
||||||
boolean ignoreEmpty() default true;
|
|
||||||
}
|
|
||||||
@@ -1,205 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.controller;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiBaseStaffAddDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiBaseStaffEditDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiBaseStaffQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.excel.CcdiBaseStaffExcel;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.*;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiBaseStaffImportService;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiBaseStaffService;
|
|
||||||
import com.ruoyi.info.collection.utils.EasyExcelUtil;
|
|
||||||
import com.ruoyi.common.annotation.Log;
|
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
|
||||||
import com.ruoyi.common.core.page.PageDomain;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
|
||||||
import com.ruoyi.common.core.page.TableSupport;
|
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工信息Controller
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-01-28
|
|
||||||
*/
|
|
||||||
@Tag(name = "员工信息管理")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/ccdi/baseStaff")
|
|
||||||
public class CcdiBaseStaffController extends BaseController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiBaseStaffService baseStaffService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiBaseStaffImportService importAsyncService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询员工列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询员工列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:baseStaff:list')")
|
|
||||||
@GetMapping("/list")
|
|
||||||
public TableDataInfo list(CcdiBaseStaffQueryDTO queryDTO) {
|
|
||||||
// 使用MyBatis Plus分页
|
|
||||||
PageDomain pageDomain = TableSupport.buildPageRequest();
|
|
||||||
Page<CcdiBaseStaffVO> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
|
|
||||||
Page<CcdiBaseStaffVO> result = baseStaffService.selectBaseStaffPage(page, queryDTO);
|
|
||||||
return getDataTable(result.getRecords(), result.getTotal());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询员工下拉列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询员工下拉列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:baseStaff:list')")
|
|
||||||
@GetMapping("/options")
|
|
||||||
public AjaxResult getStaffOptions(@RequestParam(required = false) String query) {
|
|
||||||
List<CcdiBaseStaffOptionVO> list = baseStaffService.selectStaffOptions(query);
|
|
||||||
return success(list);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导出员工列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "导出员工列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:baseStaff:export')")
|
|
||||||
@Log(title = "员工信息", businessType = BusinessType.EXPORT)
|
|
||||||
@PostMapping("/export")
|
|
||||||
public void export(HttpServletResponse response, CcdiBaseStaffQueryDTO queryDTO) {
|
|
||||||
List<CcdiBaseStaffExcel> list = baseStaffService.selectBaseStaffListForExport(queryDTO);
|
|
||||||
EasyExcelUtil.exportExcel(response, list, CcdiBaseStaffExcel.class, "员工信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取员工详细信息
|
|
||||||
*/
|
|
||||||
@Operation(summary = "获取员工详细信息")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:baseStaff:query')")
|
|
||||||
@GetMapping(value = "/{staffId}")
|
|
||||||
public AjaxResult getInfo(@PathVariable Long staffId) {
|
|
||||||
return success(baseStaffService.selectBaseStaffById(staffId));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增员工
|
|
||||||
*/
|
|
||||||
@Operation(summary = "新增员工")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:baseStaff:add')")
|
|
||||||
@Log(title = "员工信息", businessType = BusinessType.INSERT)
|
|
||||||
@PostMapping
|
|
||||||
public AjaxResult add(@Validated @RequestBody CcdiBaseStaffAddDTO addDTO) {
|
|
||||||
return toAjax(baseStaffService.insertBaseStaff(addDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改员工
|
|
||||||
*/
|
|
||||||
@Operation(summary = "修改员工")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:baseStaff:edit')")
|
|
||||||
@Log(title = "员工信息", businessType = BusinessType.UPDATE)
|
|
||||||
@PutMapping
|
|
||||||
public AjaxResult edit(@Validated @RequestBody CcdiBaseStaffEditDTO editDTO) {
|
|
||||||
return toAjax(baseStaffService.updateBaseStaff(editDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除员工
|
|
||||||
*/
|
|
||||||
@Operation(summary = "删除员工")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:baseStaff:remove')")
|
|
||||||
@Log(title = "员工信息", businessType = BusinessType.DELETE)
|
|
||||||
@DeleteMapping("/{staffIds}")
|
|
||||||
public AjaxResult remove(@PathVariable Long[] staffIds) {
|
|
||||||
return toAjax(baseStaffService.deleteBaseStaffByIds(staffIds));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下载带字典下拉框的导入模板
|
|
||||||
* 使用@DictDropdown注解自动添加下拉框
|
|
||||||
*/
|
|
||||||
@Operation(summary = "下载导入模板")
|
|
||||||
@PostMapping("/importTemplate")
|
|
||||||
public void importTemplate(HttpServletResponse response) {
|
|
||||||
EasyExcelUtil.importTemplateWithDictDropdown(response, CcdiBaseStaffExcel.class, "员工信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导入员工信息(异步)
|
|
||||||
*/
|
|
||||||
@Operation(summary = "导入员工信息")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:baseStaff:import')")
|
|
||||||
@Log(title = "员工信息", businessType = BusinessType.IMPORT)
|
|
||||||
@PostMapping("/importData")
|
|
||||||
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
|
|
||||||
List<CcdiBaseStaffExcel> list = EasyExcelUtil.importExcel(file.getInputStream(), CcdiBaseStaffExcel.class);
|
|
||||||
|
|
||||||
if (list == null || list.isEmpty()) {
|
|
||||||
return error("至少需要一条数据");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 提交异步任务
|
|
||||||
String taskId = baseStaffService.importBaseStaff(list, updateSupport);
|
|
||||||
|
|
||||||
// 立即返回,不等待后台任务完成
|
|
||||||
ImportResultVO result = new ImportResultVO();
|
|
||||||
result.setTaskId(taskId);
|
|
||||||
result.setStatus("PROCESSING");
|
|
||||||
result.setMessage("导入任务已提交,正在后台处理");
|
|
||||||
|
|
||||||
return AjaxResult.success("导入任务已提交,正在后台处理", result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入状态
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询员工导入状态")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:baseStaff:import')")
|
|
||||||
@GetMapping("/importStatus/{taskId}")
|
|
||||||
public AjaxResult getImportStatus(@PathVariable String taskId) {
|
|
||||||
try {
|
|
||||||
ImportStatusVO status = importAsyncService.getImportStatus(taskId);
|
|
||||||
return success(status);
|
|
||||||
} catch (Exception e) {
|
|
||||||
return error(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入失败记录
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询导入失败记录")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:baseStaff:import')")
|
|
||||||
@GetMapping("/importFailures/{taskId}")
|
|
||||||
public TableDataInfo getImportFailures(
|
|
||||||
@PathVariable String taskId,
|
|
||||||
@RequestParam(defaultValue = "1") Integer pageNum,
|
|
||||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
|
||||||
|
|
||||||
List<ImportFailureVO> failures = importAsyncService.getImportFailures(taskId);
|
|
||||||
|
|
||||||
// 手动分页
|
|
||||||
int fromIndex = (pageNum - 1) * pageSize;
|
|
||||||
int toIndex = Math.min(fromIndex + pageSize, failures.size());
|
|
||||||
|
|
||||||
// 检查 fromIndex 是否超出范围
|
|
||||||
if (fromIndex >= failures.size()) {
|
|
||||||
return getDataTable(new ArrayList<>(), failures.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
List<ImportFailureVO> pageData = failures.subList(fromIndex, toIndex);
|
|
||||||
|
|
||||||
return getDataTable(pageData, failures.size());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,200 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.controller;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiCustEnterpriseRelationAddDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiCustEnterpriseRelationEditDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiCustEnterpriseRelationQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.excel.CcdiCustEnterpriseRelationExcel;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiCustEnterpriseRelationVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CustEnterpriseRelationImportFailureVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportResultVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportStatusVO;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiCustEnterpriseRelationImportService;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiCustEnterpriseRelationService;
|
|
||||||
import com.ruoyi.info.collection.utils.EasyExcelUtil;
|
|
||||||
import com.ruoyi.common.annotation.Log;
|
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
|
||||||
import com.ruoyi.common.core.page.PageDomain;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
|
||||||
import com.ruoyi.common.core.page.TableSupport;
|
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户实体关联信息Controller
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-12
|
|
||||||
*/
|
|
||||||
@Tag(name = "信贷客户实体关联信息管理")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/ccdi/custEnterpriseRelation")
|
|
||||||
public class CcdiCustEnterpriseRelationController extends BaseController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiCustEnterpriseRelationService relationService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiCustEnterpriseRelationImportService relationImportService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询信贷客户实体关联列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询信贷客户实体关联列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custEnterpriseRelation:list')")
|
|
||||||
@GetMapping("/list")
|
|
||||||
public TableDataInfo list(CcdiCustEnterpriseRelationQueryDTO queryDTO) {
|
|
||||||
// 使用MyBatis Plus分页
|
|
||||||
PageDomain pageDomain = TableSupport.buildPageRequest();
|
|
||||||
Page<CcdiCustEnterpriseRelationVO> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
|
|
||||||
Page<CcdiCustEnterpriseRelationVO> result = relationService.selectRelationPage(page, queryDTO);
|
|
||||||
return getDataTable(result.getRecords(), result.getTotal());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导出信贷客户实体关联列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "导出信贷客户实体关联列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custEnterpriseRelation:export')")
|
|
||||||
@Log(title = "信贷客户实体关联信息", businessType = BusinessType.EXPORT)
|
|
||||||
@PostMapping("/export")
|
|
||||||
public void export(HttpServletResponse response, CcdiCustEnterpriseRelationQueryDTO queryDTO) {
|
|
||||||
List<CcdiCustEnterpriseRelationExcel> list = relationService.selectRelationListForExport(queryDTO);
|
|
||||||
EasyExcelUtil.exportExcel(response, list, CcdiCustEnterpriseRelationExcel.class, "信贷客户实体关联信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取信贷客户实体关联详细信息
|
|
||||||
*/
|
|
||||||
@Operation(summary = "获取信贷客户实体关联详细信息")
|
|
||||||
@Parameter(name = "id", description = "主键ID", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custEnterpriseRelation:query')")
|
|
||||||
@GetMapping(value = "/{id}")
|
|
||||||
public AjaxResult getInfo(@PathVariable Long id) {
|
|
||||||
return success(relationService.selectRelationById(id));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增信贷客户实体关联
|
|
||||||
*/
|
|
||||||
@Operation(summary = "新增信贷客户实体关联")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custEnterpriseRelation:add')")
|
|
||||||
@Log(title = "信贷客户实体关联信息", businessType = BusinessType.INSERT)
|
|
||||||
@PostMapping
|
|
||||||
public AjaxResult add(@Validated @RequestBody CcdiCustEnterpriseRelationAddDTO addDTO) {
|
|
||||||
return toAjax(relationService.insertRelation(addDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改信贷客户实体关联
|
|
||||||
*/
|
|
||||||
@Operation(summary = "修改信贷客户实体关联")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custEnterpriseRelation:edit')")
|
|
||||||
@Log(title = "信贷客户实体关联信息", businessType = BusinessType.UPDATE)
|
|
||||||
@PutMapping
|
|
||||||
public AjaxResult edit(@Validated @RequestBody CcdiCustEnterpriseRelationEditDTO editDTO) {
|
|
||||||
return toAjax(relationService.updateRelation(editDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除信贷客户实体关联
|
|
||||||
*/
|
|
||||||
@Operation(summary = "删除信贷客户实体关联")
|
|
||||||
@Parameter(name = "ids", description = "主键ID数组", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custEnterpriseRelation:remove')")
|
|
||||||
@Log(title = "信贷客户实体关联信息", businessType = BusinessType.DELETE)
|
|
||||||
@DeleteMapping("/{ids}")
|
|
||||||
public AjaxResult remove(@PathVariable Long[] ids) {
|
|
||||||
return toAjax(relationService.deleteRelationByIds(ids));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下载导入模板
|
|
||||||
*/
|
|
||||||
@Operation(summary = "下载导入模板")
|
|
||||||
@PostMapping("/importTemplate")
|
|
||||||
public void importTemplate(HttpServletResponse response) {
|
|
||||||
EasyExcelUtil.importTemplateWithDictDropdown(response, CcdiCustEnterpriseRelationExcel.class, "信贷客户实体关联信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 异步导入信贷客户实体关联
|
|
||||||
*/
|
|
||||||
@Operation(summary = "异步导入信贷客户实体关联")
|
|
||||||
@Parameter(name = "file", description = "导入文件", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custEnterpriseRelation:import')")
|
|
||||||
@Log(title = "信贷客户实体关联信息", businessType = BusinessType.IMPORT)
|
|
||||||
@PostMapping("/importData")
|
|
||||||
public AjaxResult importData(@Parameter(description = "导入文件") MultipartFile file) throws Exception {
|
|
||||||
List<CcdiCustEnterpriseRelationExcel> list = EasyExcelUtil.importExcel(file.getInputStream(), CcdiCustEnterpriseRelationExcel.class);
|
|
||||||
|
|
||||||
if (list == null || list.isEmpty()) {
|
|
||||||
return error("至少需要一条数据");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 提交异步任务
|
|
||||||
String taskId = relationService.importRelation(list);
|
|
||||||
|
|
||||||
// 立即返回
|
|
||||||
ImportResultVO result = new ImportResultVO();
|
|
||||||
result.setTaskId(taskId);
|
|
||||||
result.setStatus("PROCESSING");
|
|
||||||
result.setMessage("导入任务已提交,正在后台处理");
|
|
||||||
|
|
||||||
return AjaxResult.success("导入任务已提交,正在后台处理", result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入状态
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询导入状态")
|
|
||||||
@Parameter(name = "taskId", description = "任务ID", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custEnterpriseRelation:import')")
|
|
||||||
@GetMapping("/importStatus/{taskId}")
|
|
||||||
public AjaxResult getImportStatus(@PathVariable String taskId) {
|
|
||||||
ImportStatusVO statusVO = relationImportService.getImportStatus(taskId);
|
|
||||||
return success(statusVO);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入失败记录
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询导入失败记录")
|
|
||||||
@Parameter(name = "taskId", description = "任务ID", required = true)
|
|
||||||
@Parameter(name = "pageNum", description = "页码", required = false)
|
|
||||||
@Parameter(name = "pageSize", description = "每页条数", required = false)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custEnterpriseRelation:import')")
|
|
||||||
@GetMapping("/importFailures/{taskId}")
|
|
||||||
public TableDataInfo getImportFailures(
|
|
||||||
@PathVariable String taskId,
|
|
||||||
@RequestParam(defaultValue = "1") Integer pageNum,
|
|
||||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
|
||||||
|
|
||||||
List<CustEnterpriseRelationImportFailureVO> failures = relationImportService.getImportFailures(taskId);
|
|
||||||
|
|
||||||
// 手动分页
|
|
||||||
int fromIndex = (pageNum - 1) * pageSize;
|
|
||||||
int toIndex = Math.min(fromIndex + pageSize, failures.size());
|
|
||||||
|
|
||||||
// 检查 fromIndex 是否超出范围
|
|
||||||
if (fromIndex >= failures.size()) {
|
|
||||||
return getDataTable(new ArrayList<>(), failures.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
List<CustEnterpriseRelationImportFailureVO> pageData = failures.subList(fromIndex, toIndex);
|
|
||||||
|
|
||||||
return getDataTable(pageData, failures.size());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,193 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.controller;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiCustFmyRelationAddDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiCustFmyRelationEditDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiCustFmyRelationQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.excel.CcdiCustFmyRelationExcel;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiCustFmyRelationVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CustFmyRelationImportFailureVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportResultVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportStatusVO;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiCustFmyRelationImportService;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiCustFmyRelationService;
|
|
||||||
import com.ruoyi.info.collection.utils.EasyExcelUtil;
|
|
||||||
import com.ruoyi.common.annotation.Log;
|
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
|
||||||
import com.ruoyi.common.core.page.PageDomain;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
|
||||||
import com.ruoyi.common.core.page.TableSupport;
|
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户家庭关系Controller
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-11
|
|
||||||
*/
|
|
||||||
@Tag(name = "信贷客户家庭关系管理")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/ccdi/custFmyRelation")
|
|
||||||
public class CcdiCustFmyRelationController extends BaseController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiCustFmyRelationService relationService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiCustFmyRelationImportService relationImportService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询信贷客户家庭关系列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询信贷客户家庭关系列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custFmyRelation:query')")
|
|
||||||
@GetMapping("/list")
|
|
||||||
public TableDataInfo list(CcdiCustFmyRelationQueryDTO query) {
|
|
||||||
PageDomain pageDomain = TableSupport.buildPageRequest();
|
|
||||||
Page<CcdiCustFmyRelationVO> page = relationService.selectRelationPage(
|
|
||||||
query, pageDomain.getPageNum(), pageDomain.getPageSize());
|
|
||||||
return getDataTable(page.getRecords(), page.getTotal());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据ID查询信贷客户家庭关系详情
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询信贷客户家庭关系详情")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custFmyRelation:query')")
|
|
||||||
@GetMapping("/{id}")
|
|
||||||
public AjaxResult getInfo(@PathVariable("id") Long id) {
|
|
||||||
CcdiCustFmyRelationVO relation = relationService.selectRelationById(id);
|
|
||||||
return success(relation);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增信贷客户家庭关系
|
|
||||||
*/
|
|
||||||
@Operation(summary = "新增信贷客户家庭关系")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custFmyRelation:add')")
|
|
||||||
@PostMapping
|
|
||||||
public AjaxResult add(@Validated @RequestBody CcdiCustFmyRelationAddDTO addDTO) {
|
|
||||||
return toAjax(relationService.insertRelation(addDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改信贷客户家庭关系
|
|
||||||
*/
|
|
||||||
@Operation(summary = "修改信贷客户家庭关系")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custFmyRelation:edit')")
|
|
||||||
@PutMapping
|
|
||||||
public AjaxResult edit(@Validated @RequestBody CcdiCustFmyRelationEditDTO editDTO) {
|
|
||||||
return toAjax(relationService.updateRelation(editDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除信贷客户家庭关系
|
|
||||||
*/
|
|
||||||
@Operation(summary = "删除信贷客户家庭关系")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custFmyRelation:remove')")
|
|
||||||
@DeleteMapping("/{ids}")
|
|
||||||
public AjaxResult remove(@PathVariable Long[] ids) {
|
|
||||||
return toAjax(relationService.deleteRelationByIds(ids));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导出信贷客户家庭关系
|
|
||||||
*/
|
|
||||||
@Operation(summary = "导出信贷客户家庭关系")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custFmyRelation:export')")
|
|
||||||
@Log(title = "信贷客户家庭关系", businessType = BusinessType.EXPORT)
|
|
||||||
@PostMapping("/export")
|
|
||||||
public void export(HttpServletResponse response, CcdiCustFmyRelationQueryDTO query) {
|
|
||||||
relationService.exportRelations(query, response);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下载带字典下拉框的导入模板
|
|
||||||
* 使用@DictDropdown注解自动添加下拉框
|
|
||||||
*/
|
|
||||||
@Operation(summary = "下载导入模板")
|
|
||||||
@PostMapping("/importTemplate")
|
|
||||||
public void importTemplate(HttpServletResponse response) {
|
|
||||||
EasyExcelUtil.importTemplateWithDictDropdown(response, CcdiCustFmyRelationExcel.class, "信贷客户家庭关系");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 异步导入信贷客户家庭关系
|
|
||||||
*/
|
|
||||||
@Operation(summary = "异步导入信贷客户家庭关系")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custFmyRelation:import')")
|
|
||||||
@Log(title = "信贷客户家庭关系", businessType = BusinessType.IMPORT)
|
|
||||||
@PostMapping("/importData")
|
|
||||||
public AjaxResult importData(@RequestParam("file") MultipartFile file) throws IOException {
|
|
||||||
List<CcdiCustFmyRelationExcel> excels = EasyExcelUtil.importExcel(
|
|
||||||
file.getInputStream(),
|
|
||||||
CcdiCustFmyRelationExcel.class
|
|
||||||
);
|
|
||||||
|
|
||||||
if (excels == null || excels.isEmpty()) {
|
|
||||||
return error("至少需要一条数据");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 提交异步任务
|
|
||||||
String taskId = relationService.importRelations(excels);
|
|
||||||
|
|
||||||
// 立即返回,不等待后台任务完成
|
|
||||||
ImportResultVO result = new ImportResultVO();
|
|
||||||
result.setTaskId(taskId);
|
|
||||||
result.setStatus("PROCESSING");
|
|
||||||
result.setMessage("导入任务已提交,正在后台处理");
|
|
||||||
|
|
||||||
return AjaxResult.success("导入任务已提交,正在后台处理", result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入状态
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询导入状态")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custFmyRelation:query')")
|
|
||||||
@GetMapping("/importStatus/{taskId}")
|
|
||||||
public AjaxResult getImportStatus(@PathVariable("taskId") String taskId) {
|
|
||||||
ImportStatusVO statusVO = relationImportService.getImportStatus(taskId);
|
|
||||||
return success(statusVO);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入失败记录
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询导入失败记录")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:custFmyRelation:query')")
|
|
||||||
@GetMapping("/importFailures/{taskId}")
|
|
||||||
public TableDataInfo getImportFailures(
|
|
||||||
@PathVariable("taskId") String taskId,
|
|
||||||
@RequestParam(defaultValue = "1") Integer pageNum,
|
|
||||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
|
||||||
|
|
||||||
List<CustFmyRelationImportFailureVO> failures = relationImportService.getImportFailures(taskId);
|
|
||||||
|
|
||||||
// 手动分页
|
|
||||||
int fromIndex = (pageNum - 1) * pageSize;
|
|
||||||
int toIndex = Math.min(fromIndex + pageSize, failures.size());
|
|
||||||
|
|
||||||
// 检查 fromIndex 是否超出范围
|
|
||||||
if (fromIndex >= failures.size()) {
|
|
||||||
return getDataTable(new ArrayList<>(), failures.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
List<CustFmyRelationImportFailureVO> pageData = failures.subList(fromIndex, toIndex);
|
|
||||||
|
|
||||||
return getDataTable(pageData, failures.size());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,318 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.controller;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.*;
|
|
||||||
import com.ruoyi.info.collection.domain.excel.CcdiIntermediaryEntityExcel;
|
|
||||||
import com.ruoyi.info.collection.domain.excel.CcdiIntermediaryPersonExcel;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.*;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiIntermediaryEntityImportService;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiIntermediaryPersonImportService;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiIntermediaryService;
|
|
||||||
import com.ruoyi.info.collection.utils.EasyExcelUtil;
|
|
||||||
import com.ruoyi.common.annotation.Log;
|
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
|
||||||
import com.ruoyi.common.core.page.PageDomain;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
|
||||||
import com.ruoyi.common.core.page.TableSupport;
|
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 中介信息Controller
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-04
|
|
||||||
*/
|
|
||||||
@Tag(name = "中介信息管理")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/ccdi/intermediary")
|
|
||||||
public class CcdiIntermediaryController extends BaseController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiIntermediaryService intermediaryService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiIntermediaryPersonImportService personImportService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiIntermediaryEntityImportService entityImportService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询中介列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询中介列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:intermediary:list')")
|
|
||||||
@GetMapping("/list")
|
|
||||||
public TableDataInfo list(CcdiIntermediaryQueryDTO queryDTO) {
|
|
||||||
PageDomain pageDomain = TableSupport.buildPageRequest();
|
|
||||||
Page<CcdiIntermediaryVO> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
|
|
||||||
Page<CcdiIntermediaryVO> result = intermediaryService.selectIntermediaryPage(page, queryDTO);
|
|
||||||
return getDataTable(result.getRecords(), result.getTotal());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询个人中介详情
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询个人中介详情")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:intermediary:query')")
|
|
||||||
@GetMapping("/person/{bizId}")
|
|
||||||
public AjaxResult getPersonInfo(@PathVariable String bizId) {
|
|
||||||
CcdiIntermediaryPersonDetailVO vo = intermediaryService.selectIntermediaryPersonDetail(bizId);
|
|
||||||
return success(vo);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询实体中介详情
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询实体中介详情")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:intermediary:query')")
|
|
||||||
@GetMapping("/entity/{socialCreditCode}")
|
|
||||||
public AjaxResult getEntityInfo(@PathVariable String socialCreditCode) {
|
|
||||||
CcdiIntermediaryEntityDetailVO vo = intermediaryService.selectIntermediaryEntityDetail(socialCreditCode);
|
|
||||||
return success(vo);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增个人中介
|
|
||||||
*/
|
|
||||||
@Operation(summary = "新增个人中介")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:intermediary:add')")
|
|
||||||
@Log(title = "个人中介", businessType = BusinessType.INSERT)
|
|
||||||
@PostMapping("/person")
|
|
||||||
public AjaxResult addPerson(@Validated @RequestBody CcdiIntermediaryPersonAddDTO addDTO) {
|
|
||||||
return toAjax(intermediaryService.insertIntermediaryPerson(addDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改个人中介
|
|
||||||
*/
|
|
||||||
@Operation(summary = "修改个人中介")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:intermediary:edit')")
|
|
||||||
@Log(title = "个人中介", businessType = BusinessType.UPDATE)
|
|
||||||
@PutMapping("/person")
|
|
||||||
public AjaxResult editPerson(@Validated @RequestBody CcdiIntermediaryPersonEditDTO editDTO) {
|
|
||||||
return toAjax(intermediaryService.updateIntermediaryPerson(editDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增实体中介
|
|
||||||
*/
|
|
||||||
@Operation(summary = "新增实体中介")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:intermediary:add')")
|
|
||||||
@Log(title = "实体中介", businessType = BusinessType.INSERT)
|
|
||||||
@PostMapping("/entity")
|
|
||||||
public AjaxResult addEntity(@Validated @RequestBody CcdiIntermediaryEntityAddDTO addDTO) {
|
|
||||||
return toAjax(intermediaryService.insertIntermediaryEntity(addDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改实体中介
|
|
||||||
*/
|
|
||||||
@Operation(summary = "修改实体中介")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:intermediary:edit')")
|
|
||||||
@Log(title = "实体中介", businessType = BusinessType.UPDATE)
|
|
||||||
@PutMapping("/entity")
|
|
||||||
public AjaxResult editEntity(@Validated @RequestBody CcdiIntermediaryEntityEditDTO editDTO) {
|
|
||||||
return toAjax(intermediaryService.updateIntermediaryEntity(editDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除中介
|
|
||||||
*/
|
|
||||||
@Operation(summary = "删除中介")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:intermediary:remove')")
|
|
||||||
@Log(title = "中介信息", businessType = BusinessType.DELETE)
|
|
||||||
@DeleteMapping("/{ids}")
|
|
||||||
public AjaxResult remove(@PathVariable String[] ids) {
|
|
||||||
return toAjax(intermediaryService.deleteIntermediaryByIds(ids));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 校验人员ID唯一性
|
|
||||||
*/
|
|
||||||
@Operation(summary = "校验人员ID唯一性")
|
|
||||||
@GetMapping("/checkPersonIdUnique")
|
|
||||||
public AjaxResult checkPersonIdUnique(@RequestParam String personId, @RequestParam(required = false) String bizId) {
|
|
||||||
boolean unique = intermediaryService.checkPersonIdUnique(personId, bizId);
|
|
||||||
return success(unique);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 校验统一社会信用代码唯一性
|
|
||||||
*/
|
|
||||||
@Operation(summary = "校验统一社会信用代码唯一性")
|
|
||||||
@GetMapping("/checkSocialCreditCodeUnique")
|
|
||||||
public AjaxResult checkSocialCreditCodeUnique(@RequestParam String socialCreditCode, @RequestParam(required = false) String excludeId) {
|
|
||||||
boolean unique = intermediaryService.checkSocialCreditCodeUnique(socialCreditCode, excludeId);
|
|
||||||
return success(unique);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下载个人中介导入模板
|
|
||||||
*/
|
|
||||||
@Operation(summary = "下载个人中介导入模板")
|
|
||||||
@PostMapping("/importPersonTemplate")
|
|
||||||
public void importPersonTemplate(HttpServletResponse response) {
|
|
||||||
EasyExcelUtil.importTemplateWithDictDropdown(response, CcdiIntermediaryPersonExcel.class, "个人中介信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下载实体中介导入模板
|
|
||||||
*/
|
|
||||||
@Operation(summary = "下载实体中介导入模板")
|
|
||||||
@PostMapping("/importEntityTemplate")
|
|
||||||
public void importEntityTemplate(HttpServletResponse response) {
|
|
||||||
EasyExcelUtil.importTemplateWithDictDropdown(response, CcdiIntermediaryEntityExcel.class, "实体中介信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导入个人中介数据(异步)
|
|
||||||
*/
|
|
||||||
@Operation(summary = "导入个人中介数据")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:intermediary:import')")
|
|
||||||
@Log(title = "个人中介", businessType = BusinessType.IMPORT)
|
|
||||||
@PostMapping("/importPersonData")
|
|
||||||
public AjaxResult importPersonData(MultipartFile file) throws Exception {
|
|
||||||
List<CcdiIntermediaryPersonExcel> list = EasyExcelUtil.importExcel(
|
|
||||||
file.getInputStream(), CcdiIntermediaryPersonExcel.class);
|
|
||||||
|
|
||||||
if (list == null || list.isEmpty()) {
|
|
||||||
return error("至少需要一条数据");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 提交异步任务
|
|
||||||
String taskId = intermediaryService.importIntermediaryPerson(list);
|
|
||||||
|
|
||||||
// 立即返回,不等待后台任务完成
|
|
||||||
ImportResultVO result = new ImportResultVO();
|
|
||||||
result.setTaskId(taskId);
|
|
||||||
result.setStatus("PROCESSING");
|
|
||||||
result.setMessage("导入任务已提交,正在后台处理");
|
|
||||||
|
|
||||||
return AjaxResult.success("导入任务已提交,正在后台处理", result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导入实体中介数据(异步)
|
|
||||||
*/
|
|
||||||
@Operation(summary = "导入实体中介数据")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:intermediary:import')")
|
|
||||||
@Log(title = "实体中介", businessType = BusinessType.IMPORT)
|
|
||||||
@PostMapping("/importEntityData")
|
|
||||||
public AjaxResult importEntityData(MultipartFile file) throws Exception {
|
|
||||||
List<CcdiIntermediaryEntityExcel> list = EasyExcelUtil.importExcel(
|
|
||||||
file.getInputStream(), CcdiIntermediaryEntityExcel.class);
|
|
||||||
|
|
||||||
if (list == null || list.isEmpty()) {
|
|
||||||
return error("至少需要一条数据");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 提交异步任务
|
|
||||||
String taskId = intermediaryService.importIntermediaryEntity(list);
|
|
||||||
|
|
||||||
// 立即返回,不等待后台任务完成
|
|
||||||
ImportResultVO result = new ImportResultVO();
|
|
||||||
result.setTaskId(taskId);
|
|
||||||
result.setStatus("PROCESSING");
|
|
||||||
result.setMessage("导入任务已提交,正在后台处理");
|
|
||||||
|
|
||||||
return AjaxResult.success("导入任务已提交,正在后台处理", result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询个人中介导入状态
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询个人中介导入状态")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:intermediary:import')")
|
|
||||||
@GetMapping("/importPersonStatus/{taskId}")
|
|
||||||
public AjaxResult getPersonImportStatus(@PathVariable String taskId) {
|
|
||||||
try {
|
|
||||||
ImportStatusVO status = personImportService.getImportStatus(taskId);
|
|
||||||
return success(status);
|
|
||||||
} catch (Exception e) {
|
|
||||||
return error(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询个人中介导入失败记录
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询个人中介导入失败记录")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:intermediary:import')")
|
|
||||||
@GetMapping("/importPersonFailures/{taskId}")
|
|
||||||
public TableDataInfo getPersonImportFailures(
|
|
||||||
@PathVariable String taskId,
|
|
||||||
@RequestParam(defaultValue = "1") Integer pageNum,
|
|
||||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
|
||||||
|
|
||||||
List<IntermediaryPersonImportFailureVO> failures =
|
|
||||||
personImportService.getImportFailures(taskId);
|
|
||||||
|
|
||||||
// 手动分页
|
|
||||||
int fromIndex = (pageNum - 1) * pageSize;
|
|
||||||
int toIndex = Math.min(fromIndex + pageSize, failures.size());
|
|
||||||
|
|
||||||
// 检查 fromIndex 是否超出范围
|
|
||||||
if (fromIndex >= failures.size()) {
|
|
||||||
return getDataTable(new ArrayList<>(), failures.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
List<IntermediaryPersonImportFailureVO> pageData = failures.subList(fromIndex, toIndex);
|
|
||||||
|
|
||||||
return getDataTable(pageData, failures.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询实体中介导入状态
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询实体中介导入状态")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:intermediary:import')")
|
|
||||||
@GetMapping("/importEntityStatus/{taskId}")
|
|
||||||
public AjaxResult getEntityImportStatus(@PathVariable String taskId) {
|
|
||||||
try {
|
|
||||||
ImportStatusVO status = entityImportService.getImportStatus(taskId);
|
|
||||||
return success(status);
|
|
||||||
} catch (Exception e) {
|
|
||||||
return error(e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询实体中介导入失败记录
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询实体中介导入失败记录")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:intermediary:import')")
|
|
||||||
@GetMapping("/importEntityFailures/{taskId}")
|
|
||||||
public TableDataInfo getEntityImportFailures(
|
|
||||||
@PathVariable String taskId,
|
|
||||||
@RequestParam(defaultValue = "1") Integer pageNum,
|
|
||||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
|
||||||
|
|
||||||
List<IntermediaryEntityImportFailureVO> failures =
|
|
||||||
entityImportService.getImportFailures(taskId);
|
|
||||||
|
|
||||||
// 手动分页
|
|
||||||
int fromIndex = (pageNum - 1) * pageSize;
|
|
||||||
int toIndex = Math.min(fromIndex + pageSize, failures.size());
|
|
||||||
|
|
||||||
// 检查 fromIndex 是否超出范围
|
|
||||||
if (fromIndex >= failures.size()) {
|
|
||||||
return getDataTable(new ArrayList<>(), failures.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
List<IntermediaryEntityImportFailureVO> pageData = failures.subList(fromIndex, toIndex);
|
|
||||||
|
|
||||||
return getDataTable(pageData, failures.size());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,201 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.controller;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiPurchaseTransactionAddDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiPurchaseTransactionEditDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiPurchaseTransactionQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.excel.CcdiPurchaseTransactionExcel;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiPurchaseTransactionVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportResultVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportStatusVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.PurchaseTransactionImportFailureVO;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiPurchaseTransactionImportService;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiPurchaseTransactionService;
|
|
||||||
import com.ruoyi.info.collection.utils.EasyExcelUtil;
|
|
||||||
import com.ruoyi.common.annotation.Log;
|
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
|
||||||
import com.ruoyi.common.core.page.PageDomain;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
|
||||||
import com.ruoyi.common.core.page.TableSupport;
|
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购交易信息Controller
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-06
|
|
||||||
*/
|
|
||||||
@Tag(name = "采购交易信息管理")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/ccdi/purchaseTransaction")
|
|
||||||
public class CcdiPurchaseTransactionController extends BaseController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiPurchaseTransactionService transactionService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiPurchaseTransactionImportService transactionImportService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询采购交易列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询采购交易列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:list')")
|
|
||||||
@GetMapping("/list")
|
|
||||||
public TableDataInfo list(CcdiPurchaseTransactionQueryDTO queryDTO) {
|
|
||||||
// 使用MyBatis Plus分页
|
|
||||||
PageDomain pageDomain = TableSupport.buildPageRequest();
|
|
||||||
Page<CcdiPurchaseTransactionVO> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
|
|
||||||
Page<CcdiPurchaseTransactionVO> result = transactionService.selectTransactionPage(page, queryDTO);
|
|
||||||
return getDataTable(result.getRecords(), result.getTotal());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导出采购交易列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "导出采购交易列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:export')")
|
|
||||||
@Log(title = "采购交易信息", businessType = BusinessType.EXPORT)
|
|
||||||
@PostMapping("/export")
|
|
||||||
public void export(HttpServletResponse response, CcdiPurchaseTransactionQueryDTO queryDTO) {
|
|
||||||
List<CcdiPurchaseTransactionExcel> list = transactionService.selectTransactionListForExport(queryDTO);
|
|
||||||
EasyExcelUtil.exportExcel(response, list, CcdiPurchaseTransactionExcel.class, "采购交易信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取采购交易详细信息
|
|
||||||
*/
|
|
||||||
@Operation(summary = "获取采购交易详细信息")
|
|
||||||
@Parameter(name = "purchaseId", description = "采购事项ID", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:query')")
|
|
||||||
@GetMapping(value = "/{purchaseId}")
|
|
||||||
public AjaxResult getInfo(@PathVariable String purchaseId) {
|
|
||||||
return success(transactionService.selectTransactionById(purchaseId));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增采购交易
|
|
||||||
*/
|
|
||||||
@Operation(summary = "新增采购交易")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:add')")
|
|
||||||
@Log(title = "采购交易信息", businessType = BusinessType.INSERT)
|
|
||||||
@PostMapping
|
|
||||||
public AjaxResult add(@Validated @RequestBody CcdiPurchaseTransactionAddDTO addDTO) {
|
|
||||||
return toAjax(transactionService.insertTransaction(addDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改采购交易
|
|
||||||
*/
|
|
||||||
@Operation(summary = "修改采购交易")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:edit')")
|
|
||||||
@Log(title = "采购交易信息", businessType = BusinessType.UPDATE)
|
|
||||||
@PutMapping
|
|
||||||
public AjaxResult edit(@Validated @RequestBody CcdiPurchaseTransactionEditDTO editDTO) {
|
|
||||||
return toAjax(transactionService.updateTransaction(editDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除采购交易
|
|
||||||
*/
|
|
||||||
@Operation(summary = "删除采购交易")
|
|
||||||
@Parameter(name = "purchaseIds", description = "采购事项ID数组", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:remove')")
|
|
||||||
@Log(title = "采购交易信息", businessType = BusinessType.DELETE)
|
|
||||||
@DeleteMapping("/{purchaseIds}")
|
|
||||||
public AjaxResult remove(@PathVariable String[] purchaseIds) {
|
|
||||||
return toAjax(transactionService.deleteTransactionByIds(purchaseIds));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下载带字典下拉框的导入模板
|
|
||||||
* 使用@DictDropdown注解自动添加下拉框
|
|
||||||
*/
|
|
||||||
@Operation(summary = "下载导入模板")
|
|
||||||
@PostMapping("/importTemplate")
|
|
||||||
public void importTemplate(HttpServletResponse response) {
|
|
||||||
EasyExcelUtil.importTemplateWithDictDropdown(response, CcdiPurchaseTransactionExcel.class, "采购交易信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 异步导入采购交易
|
|
||||||
*/
|
|
||||||
@Operation(summary = "异步导入采购交易")
|
|
||||||
@Parameter(name = "file", description = "导入文件", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:import')")
|
|
||||||
@Log(title = "采购交易信息", businessType = BusinessType.IMPORT)
|
|
||||||
@PostMapping("/importData")
|
|
||||||
public AjaxResult importData(@Parameter(description = "导入文件") MultipartFile file) throws Exception {
|
|
||||||
List<CcdiPurchaseTransactionExcel> list = EasyExcelUtil.importExcel(file.getInputStream(), CcdiPurchaseTransactionExcel.class);
|
|
||||||
|
|
||||||
if (list == null || list.isEmpty()) {
|
|
||||||
return error("至少需要一条数据");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 提交异步任务
|
|
||||||
String taskId = transactionService.importTransaction(list);
|
|
||||||
|
|
||||||
// 立即返回,不等待后台任务完成
|
|
||||||
ImportResultVO result = new ImportResultVO();
|
|
||||||
result.setTaskId(taskId);
|
|
||||||
result.setStatus("PROCESSING");
|
|
||||||
result.setMessage("导入任务已提交,正在后台处理");
|
|
||||||
|
|
||||||
return AjaxResult.success("导入任务已提交,正在后台处理", result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入状态
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询导入状态")
|
|
||||||
@Parameter(name = "taskId", description = "任务ID", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:import')")
|
|
||||||
@GetMapping("/importStatus/{taskId}")
|
|
||||||
public AjaxResult getImportStatus(@PathVariable String taskId) {
|
|
||||||
ImportStatusVO statusVO = transactionImportService.getImportStatus(taskId);
|
|
||||||
return success(statusVO);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入失败记录
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询导入失败记录")
|
|
||||||
@Parameter(name = "taskId", description = "任务ID", required = true)
|
|
||||||
@Parameter(name = "pageNum", description = "页码", required = false)
|
|
||||||
@Parameter(name = "pageSize", description = "每页条数", required = false)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:import')")
|
|
||||||
@GetMapping("/importFailures/{taskId}")
|
|
||||||
public TableDataInfo getImportFailures(
|
|
||||||
@PathVariable String taskId,
|
|
||||||
@RequestParam(defaultValue = "1") Integer pageNum,
|
|
||||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
|
||||||
|
|
||||||
List<PurchaseTransactionImportFailureVO> failures = transactionImportService.getImportFailures(taskId);
|
|
||||||
|
|
||||||
// 手动分页
|
|
||||||
int fromIndex = (pageNum - 1) * pageSize;
|
|
||||||
int toIndex = Math.min(fromIndex + pageSize, failures.size());
|
|
||||||
|
|
||||||
// 检查 fromIndex 是否超出范围
|
|
||||||
if (fromIndex >= failures.size()) {
|
|
||||||
return getDataTable(new ArrayList<>(), failures.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
List<PurchaseTransactionImportFailureVO> pageData = failures.subList(fromIndex, toIndex);
|
|
||||||
|
|
||||||
return getDataTable(pageData, failures.size());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,201 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.controller;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiStaffEnterpriseRelationAddDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiStaffEnterpriseRelationEditDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiStaffEnterpriseRelationQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.excel.CcdiStaffEnterpriseRelationExcel;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiStaffEnterpriseRelationVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportResultVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportStatusVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.StaffEnterpriseRelationImportFailureVO;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiStaffEnterpriseRelationImportService;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiStaffEnterpriseRelationService;
|
|
||||||
import com.ruoyi.info.collection.utils.EasyExcelUtil;
|
|
||||||
import com.ruoyi.common.annotation.Log;
|
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
|
||||||
import com.ruoyi.common.core.page.PageDomain;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
|
||||||
import com.ruoyi.common.core.page.TableSupport;
|
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工实体关系信息Controller
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Tag(name = "员工实体关系信息管理")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/ccdi/staffEnterpriseRelation")
|
|
||||||
public class CcdiStaffEnterpriseRelationController extends BaseController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiStaffEnterpriseRelationService relationService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiStaffEnterpriseRelationImportService relationImportService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询员工实体关系列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询员工实体关系列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffEnterpriseRelation:list')")
|
|
||||||
@GetMapping("/list")
|
|
||||||
public TableDataInfo list(CcdiStaffEnterpriseRelationQueryDTO queryDTO) {
|
|
||||||
// 使用MyBatis Plus分页
|
|
||||||
PageDomain pageDomain = TableSupport.buildPageRequest();
|
|
||||||
Page<CcdiStaffEnterpriseRelationVO> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
|
|
||||||
Page<CcdiStaffEnterpriseRelationVO> result = relationService.selectRelationPage(page, queryDTO);
|
|
||||||
return getDataTable(result.getRecords(), result.getTotal());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导出员工实体关系列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "导出员工实体关系列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffEnterpriseRelation:export')")
|
|
||||||
@Log(title = "员工实体关系信息", businessType = BusinessType.EXPORT)
|
|
||||||
@PostMapping("/export")
|
|
||||||
public void export(HttpServletResponse response, CcdiStaffEnterpriseRelationQueryDTO queryDTO) {
|
|
||||||
List<CcdiStaffEnterpriseRelationExcel> list = relationService.selectRelationListForExport(queryDTO);
|
|
||||||
EasyExcelUtil.exportExcel(response, list, CcdiStaffEnterpriseRelationExcel.class, "员工实体关系信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取员工实体关系详细信息
|
|
||||||
*/
|
|
||||||
@Operation(summary = "获取员工实体关系详细信息")
|
|
||||||
@Parameter(name = "id", description = "主键ID", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffEnterpriseRelation:query')")
|
|
||||||
@GetMapping(value = "/{id}")
|
|
||||||
public AjaxResult getInfo(@PathVariable Long id) {
|
|
||||||
return success(relationService.selectRelationById(id));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增员工实体关系
|
|
||||||
*/
|
|
||||||
@Operation(summary = "新增员工实体关系")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffEnterpriseRelation:add')")
|
|
||||||
@Log(title = "员工实体关系信息", businessType = BusinessType.INSERT)
|
|
||||||
@PostMapping
|
|
||||||
public AjaxResult add(@Validated @RequestBody CcdiStaffEnterpriseRelationAddDTO addDTO) {
|
|
||||||
return toAjax(relationService.insertRelation(addDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改员工实体关系
|
|
||||||
*/
|
|
||||||
@Operation(summary = "修改员工实体关系")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffEnterpriseRelation:edit')")
|
|
||||||
@Log(title = "员工实体关系信息", businessType = BusinessType.UPDATE)
|
|
||||||
@PutMapping
|
|
||||||
public AjaxResult edit(@Validated @RequestBody CcdiStaffEnterpriseRelationEditDTO editDTO) {
|
|
||||||
return toAjax(relationService.updateRelation(editDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除员工实体关系
|
|
||||||
*/
|
|
||||||
@Operation(summary = "删除员工实体关系")
|
|
||||||
@Parameter(name = "ids", description = "主键ID数组", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffEnterpriseRelation:remove')")
|
|
||||||
@Log(title = "员工实体关系信息", businessType = BusinessType.DELETE)
|
|
||||||
@DeleteMapping("/{ids}")
|
|
||||||
public AjaxResult remove(@PathVariable Long[] ids) {
|
|
||||||
return toAjax(relationService.deleteRelationByIds(ids));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下载带字典下拉框的导入模板
|
|
||||||
* 使用@DictDropdown注解自动添加下拉框
|
|
||||||
*/
|
|
||||||
@Operation(summary = "下载导入模板")
|
|
||||||
@PostMapping("/importTemplate")
|
|
||||||
public void importTemplate(HttpServletResponse response) {
|
|
||||||
EasyExcelUtil.importTemplateWithDictDropdown(response, CcdiStaffEnterpriseRelationExcel.class, "员工实体关系信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 异步导入员工实体关系
|
|
||||||
*/
|
|
||||||
@Operation(summary = "异步导入员工实体关系")
|
|
||||||
@Parameter(name = "file", description = "导入文件", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffEnterpriseRelation:import')")
|
|
||||||
@Log(title = "员工实体关系信息", businessType = BusinessType.IMPORT)
|
|
||||||
@PostMapping("/importData")
|
|
||||||
public AjaxResult importData(@Parameter(description = "导入文件") MultipartFile file) throws Exception {
|
|
||||||
List<CcdiStaffEnterpriseRelationExcel> list = EasyExcelUtil.importExcel(file.getInputStream(), CcdiStaffEnterpriseRelationExcel.class);
|
|
||||||
|
|
||||||
if (list == null || list.isEmpty()) {
|
|
||||||
return error("至少需要一条数据");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 提交异步任务
|
|
||||||
String taskId = relationService.importRelation(list);
|
|
||||||
|
|
||||||
// 立即返回,不等待后台任务完成
|
|
||||||
ImportResultVO result = new ImportResultVO();
|
|
||||||
result.setTaskId(taskId);
|
|
||||||
result.setStatus("PROCESSING");
|
|
||||||
result.setMessage("导入任务已提交,正在后台处理");
|
|
||||||
|
|
||||||
return AjaxResult.success("导入任务已提交,正在后台处理", result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入状态
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询导入状态")
|
|
||||||
@Parameter(name = "taskId", description = "任务ID", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffEnterpriseRelation:import')")
|
|
||||||
@GetMapping("/importStatus/{taskId}")
|
|
||||||
public AjaxResult getImportStatus(@PathVariable String taskId) {
|
|
||||||
ImportStatusVO statusVO = relationImportService.getImportStatus(taskId);
|
|
||||||
return success(statusVO);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入失败记录
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询导入失败记录")
|
|
||||||
@Parameter(name = "taskId", description = "任务ID", required = true)
|
|
||||||
@Parameter(name = "pageNum", description = "页码", required = false)
|
|
||||||
@Parameter(name = "pageSize", description = "每页条数", required = false)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffEnterpriseRelation:import')")
|
|
||||||
@GetMapping("/importFailures/{taskId}")
|
|
||||||
public TableDataInfo getImportFailures(
|
|
||||||
@PathVariable String taskId,
|
|
||||||
@RequestParam(defaultValue = "1") Integer pageNum,
|
|
||||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
|
||||||
|
|
||||||
List<StaffEnterpriseRelationImportFailureVO> failures = relationImportService.getImportFailures(taskId);
|
|
||||||
|
|
||||||
// 手动分页
|
|
||||||
int fromIndex = (pageNum - 1) * pageSize;
|
|
||||||
int toIndex = Math.min(fromIndex + pageSize, failures.size());
|
|
||||||
|
|
||||||
// 检查 fromIndex 是否超出范围
|
|
||||||
if (fromIndex >= failures.size()) {
|
|
||||||
return getDataTable(new ArrayList<>(), failures.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
List<StaffEnterpriseRelationImportFailureVO> pageData = failures.subList(fromIndex, toIndex);
|
|
||||||
|
|
||||||
return getDataTable(pageData, failures.size());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,201 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.controller;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiStaffFmyRelationAddDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiStaffFmyRelationEditDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiStaffFmyRelationQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.excel.CcdiStaffFmyRelationExcel;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiStaffFmyRelationVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportResultVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportStatusVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.StaffFmyRelationImportFailureVO;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiStaffFmyRelationImportService;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiStaffFmyRelationService;
|
|
||||||
import com.ruoyi.info.collection.utils.EasyExcelUtil;
|
|
||||||
import com.ruoyi.common.annotation.Log;
|
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
|
||||||
import com.ruoyi.common.core.page.PageDomain;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
|
||||||
import com.ruoyi.common.core.page.TableSupport;
|
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工亲属关系Controller
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Tag(name = "员工亲属关系管理")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/ccdi/staffFmyRelation")
|
|
||||||
public class CcdiStaffFmyRelationController extends BaseController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiStaffFmyRelationService relationService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiStaffFmyRelationImportService relationImportService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询员工亲属关系列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询员工亲属关系列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffFmyRelation:list')")
|
|
||||||
@GetMapping("/list")
|
|
||||||
public TableDataInfo list(CcdiStaffFmyRelationQueryDTO queryDTO) {
|
|
||||||
// 使用MyBatis Plus分页
|
|
||||||
PageDomain pageDomain = TableSupport.buildPageRequest();
|
|
||||||
Page<CcdiStaffFmyRelationVO> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
|
|
||||||
Page<CcdiStaffFmyRelationVO> result = relationService.selectRelationPage(page, queryDTO);
|
|
||||||
return getDataTable(result.getRecords(), result.getTotal());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导出员工亲属关系列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "导出员工亲属关系列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffFmyRelation:export')")
|
|
||||||
@Log(title = "员工亲属关系", businessType = BusinessType.EXPORT)
|
|
||||||
@PostMapping("/export")
|
|
||||||
public void export(HttpServletResponse response, CcdiStaffFmyRelationQueryDTO queryDTO) {
|
|
||||||
List<CcdiStaffFmyRelationExcel> list = relationService.selectRelationListForExport(queryDTO);
|
|
||||||
EasyExcelUtil.exportExcel(response, list, CcdiStaffFmyRelationExcel.class, "员工亲属关系信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取员工亲属关系详细信息
|
|
||||||
*/
|
|
||||||
@Operation(summary = "获取员工亲属关系详细信息")
|
|
||||||
@Parameter(name = "id", description = "主键ID", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffFmyRelation:query')")
|
|
||||||
@GetMapping(value = "/{id}")
|
|
||||||
public AjaxResult getInfo(@PathVariable Long id) {
|
|
||||||
return success(relationService.selectRelationById(id));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增员工亲属关系
|
|
||||||
*/
|
|
||||||
@Operation(summary = "新增员工亲属关系")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffFmyRelation:add')")
|
|
||||||
@Log(title = "员工亲属关系", businessType = BusinessType.INSERT)
|
|
||||||
@PostMapping
|
|
||||||
public AjaxResult add(@Validated @RequestBody CcdiStaffFmyRelationAddDTO addDTO) {
|
|
||||||
return toAjax(relationService.insertRelation(addDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改员工亲属关系
|
|
||||||
*/
|
|
||||||
@Operation(summary = "修改员工亲属关系")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffFmyRelation:edit')")
|
|
||||||
@Log(title = "员工亲属关系", businessType = BusinessType.UPDATE)
|
|
||||||
@PutMapping
|
|
||||||
public AjaxResult edit(@Validated @RequestBody CcdiStaffFmyRelationEditDTO editDTO) {
|
|
||||||
return toAjax(relationService.updateRelation(editDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除员工亲属关系
|
|
||||||
*/
|
|
||||||
@Operation(summary = "删除员工亲属关系")
|
|
||||||
@Parameter(name = "ids", description = "主键ID数组", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffFmyRelation:remove')")
|
|
||||||
@Log(title = "员工亲属关系", businessType = BusinessType.DELETE)
|
|
||||||
@DeleteMapping("/{ids}")
|
|
||||||
public AjaxResult remove(@PathVariable Long[] ids) {
|
|
||||||
return toAjax(relationService.deleteRelationByIds(ids));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下载带字典下拉框的导入模板
|
|
||||||
* 使用@DictDropdown注解自动添加下拉框
|
|
||||||
*/
|
|
||||||
@Operation(summary = "下载导入模板")
|
|
||||||
@PostMapping("/importTemplate")
|
|
||||||
public void importTemplate(HttpServletResponse response) {
|
|
||||||
EasyExcelUtil.importTemplateWithDictDropdown(response, CcdiStaffFmyRelationExcel.class, "员工亲属关系信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 异步导入员工亲属关系
|
|
||||||
*/
|
|
||||||
@Operation(summary = "异步导入员工亲属关系")
|
|
||||||
@Parameter(name = "file", description = "导入文件", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffFmyRelation:import')")
|
|
||||||
@Log(title = "员工亲属关系", businessType = BusinessType.IMPORT)
|
|
||||||
@PostMapping("/importData")
|
|
||||||
public AjaxResult importData(@Parameter(description = "导入文件") MultipartFile file) throws Exception {
|
|
||||||
List<CcdiStaffFmyRelationExcel> list = EasyExcelUtil.importExcel(file.getInputStream(), CcdiStaffFmyRelationExcel.class);
|
|
||||||
|
|
||||||
if (list == null || list.isEmpty()) {
|
|
||||||
return error("至少需要一条数据");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 提交异步任务
|
|
||||||
String taskId = relationService.importRelation(list);
|
|
||||||
|
|
||||||
// 立即返回,不等待后台任务完成
|
|
||||||
ImportResultVO result = new ImportResultVO();
|
|
||||||
result.setTaskId(taskId);
|
|
||||||
result.setStatus("PROCESSING");
|
|
||||||
result.setMessage("导入任务已提交,正在后台处理");
|
|
||||||
|
|
||||||
return AjaxResult.success("导入任务已提交,正在后台处理", result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入状态
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询导入状态")
|
|
||||||
@Parameter(name = "taskId", description = "任务ID", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffFmyRelation:import')")
|
|
||||||
@GetMapping("/importStatus/{taskId}")
|
|
||||||
public AjaxResult getImportStatus(@PathVariable String taskId) {
|
|
||||||
ImportStatusVO statusVO = relationImportService.getImportStatus(taskId);
|
|
||||||
return success(statusVO);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入失败记录
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询导入失败记录")
|
|
||||||
@Parameter(name = "taskId", description = "任务ID", required = true)
|
|
||||||
@Parameter(name = "pageNum", description = "页码", required = false)
|
|
||||||
@Parameter(name = "pageSize", description = "每页条数", required = false)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffFmyRelation:import')")
|
|
||||||
@GetMapping("/importFailures/{taskId}")
|
|
||||||
public TableDataInfo getImportFailures(
|
|
||||||
@PathVariable String taskId,
|
|
||||||
@RequestParam(defaultValue = "1") Integer pageNum,
|
|
||||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
|
||||||
|
|
||||||
List<StaffFmyRelationImportFailureVO> failures = relationImportService.getImportFailures(taskId);
|
|
||||||
|
|
||||||
// 手动分页
|
|
||||||
int fromIndex = (pageNum - 1) * pageSize;
|
|
||||||
int toIndex = Math.min(fromIndex + pageSize, failures.size());
|
|
||||||
|
|
||||||
// 检查 fromIndex 是否超出范围
|
|
||||||
if (fromIndex >= failures.size()) {
|
|
||||||
return getDataTable(new ArrayList<>(), failures.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
List<StaffFmyRelationImportFailureVO> pageData = failures.subList(fromIndex, toIndex);
|
|
||||||
|
|
||||||
return getDataTable(pageData, failures.size());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,199 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.controller;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiStaffRecruitmentAddDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiStaffRecruitmentEditDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiStaffRecruitmentQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.excel.CcdiStaffRecruitmentExcel;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiStaffRecruitmentVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportResultVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportStatusVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.RecruitmentImportFailureVO;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiStaffRecruitmentImportService;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiStaffRecruitmentService;
|
|
||||||
import com.ruoyi.info.collection.utils.EasyExcelUtil;
|
|
||||||
import com.ruoyi.common.annotation.Log;
|
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
|
||||||
import com.ruoyi.common.core.page.PageDomain;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
|
||||||
import com.ruoyi.common.core.page.TableSupport;
|
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工招聘信息Controller
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2025-02-05
|
|
||||||
*/
|
|
||||||
@Tag(name = "员工招聘信息管理")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/ccdi/staffRecruitment")
|
|
||||||
public class CcdiStaffRecruitmentController extends BaseController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiStaffRecruitmentService recruitmentService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiStaffRecruitmentImportService recruitmentImportService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询招聘信息列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询招聘信息列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffRecruitment:list')")
|
|
||||||
@GetMapping("/list")
|
|
||||||
public TableDataInfo list(CcdiStaffRecruitmentQueryDTO queryDTO) {
|
|
||||||
// 使用MyBatis Plus分页
|
|
||||||
PageDomain pageDomain = TableSupport.buildPageRequest();
|
|
||||||
Page<CcdiStaffRecruitmentVO> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
|
|
||||||
Page<CcdiStaffRecruitmentVO> result = recruitmentService.selectRecruitmentPage(page, queryDTO);
|
|
||||||
return getDataTable(result.getRecords(), result.getTotal());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导出招聘信息列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "导出招聘信息列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffRecruitment:export')")
|
|
||||||
@Log(title = "员工招聘信息", businessType = BusinessType.EXPORT)
|
|
||||||
@PostMapping("/export")
|
|
||||||
public void export(HttpServletResponse response, CcdiStaffRecruitmentQueryDTO queryDTO) {
|
|
||||||
List<CcdiStaffRecruitmentExcel> list = recruitmentService.selectRecruitmentListForExport(queryDTO);
|
|
||||||
EasyExcelUtil.exportExcel(response, list, CcdiStaffRecruitmentExcel.class, "员工招聘信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取招聘信息详细信息
|
|
||||||
*/
|
|
||||||
@Operation(summary = "获取招聘信息详细信息")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffRecruitment:query')")
|
|
||||||
@GetMapping(value = "/{recruitId}")
|
|
||||||
public AjaxResult getInfo(@PathVariable String recruitId) {
|
|
||||||
return success(recruitmentService.selectRecruitmentById(recruitId));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增招聘信息
|
|
||||||
*/
|
|
||||||
@Operation(summary = "新增招聘信息")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffRecruitment:add')")
|
|
||||||
@Log(title = "员工招聘信息", businessType = BusinessType.INSERT)
|
|
||||||
@PostMapping
|
|
||||||
public AjaxResult add(@Validated @RequestBody CcdiStaffRecruitmentAddDTO addDTO) {
|
|
||||||
return toAjax(recruitmentService.insertRecruitment(addDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改招聘信息
|
|
||||||
*/
|
|
||||||
@Operation(summary = "修改招聘信息")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffRecruitment:edit')")
|
|
||||||
@Log(title = "员工招聘信息", businessType = BusinessType.UPDATE)
|
|
||||||
@PutMapping
|
|
||||||
public AjaxResult edit(@Validated @RequestBody CcdiStaffRecruitmentEditDTO editDTO) {
|
|
||||||
return toAjax(recruitmentService.updateRecruitment(editDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除招聘信息
|
|
||||||
*/
|
|
||||||
@Operation(summary = "删除招聘信息")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffRecruitment:remove')")
|
|
||||||
@Log(title = "员工招聘信息", businessType = BusinessType.DELETE)
|
|
||||||
@DeleteMapping("/{recruitIds}")
|
|
||||||
public AjaxResult remove(@PathVariable String[] recruitIds) {
|
|
||||||
return toAjax(recruitmentService.deleteRecruitmentByIds(recruitIds));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下载带字典下拉框的导入模板
|
|
||||||
* 使用@DictDropdown注解自动添加下拉框
|
|
||||||
*/
|
|
||||||
@Operation(summary = "下载导入模板")
|
|
||||||
@PostMapping("/importTemplate")
|
|
||||||
public void importTemplate(HttpServletResponse response) {
|
|
||||||
EasyExcelUtil.importTemplateWithDictDropdown(response, CcdiStaffRecruitmentExcel.class, "员工招聘信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 异步导入招聘信息
|
|
||||||
*/
|
|
||||||
@Operation(summary = "异步导入招聘信息")
|
|
||||||
@Parameter(name = "file", description = "导入文件", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffRecruitment:import')")
|
|
||||||
@Log(title = "员工招聘信息", businessType = BusinessType.IMPORT)
|
|
||||||
@PostMapping("/importData")
|
|
||||||
public AjaxResult importData(@Parameter(description = "导入文件") MultipartFile file) throws Exception {
|
|
||||||
List<CcdiStaffRecruitmentExcel> list = EasyExcelUtil.importExcel(file.getInputStream(), CcdiStaffRecruitmentExcel.class);
|
|
||||||
|
|
||||||
if (list == null || list.isEmpty()) {
|
|
||||||
return error("至少需要一条数据");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 提交异步任务
|
|
||||||
String taskId = recruitmentService.importRecruitment(list);
|
|
||||||
|
|
||||||
// 立即返回,不等待后台任务完成
|
|
||||||
ImportResultVO result = new ImportResultVO();
|
|
||||||
result.setTaskId(taskId);
|
|
||||||
result.setStatus("PROCESSING");
|
|
||||||
result.setMessage("导入任务已提交,正在后台处理");
|
|
||||||
|
|
||||||
return AjaxResult.success("导入任务已提交,正在后台处理", result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入状态
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询导入状态")
|
|
||||||
@Parameter(name = "taskId", description = "任务ID", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffRecruitment:import')")
|
|
||||||
@GetMapping("/importStatus/{taskId}")
|
|
||||||
public AjaxResult getImportStatus(@PathVariable String taskId) {
|
|
||||||
ImportStatusVO statusVO = recruitmentImportService.getImportStatus(taskId);
|
|
||||||
return success(statusVO);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入失败记录
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询导入失败记录")
|
|
||||||
@Parameter(name = "taskId", description = "任务ID", required = true)
|
|
||||||
@Parameter(name = "pageNum", description = "页码", required = false)
|
|
||||||
@Parameter(name = "pageSize", description = "每页条数", required = false)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffRecruitment:import')")
|
|
||||||
@GetMapping("/importFailures/{taskId}")
|
|
||||||
public TableDataInfo getImportFailures(
|
|
||||||
@PathVariable String taskId,
|
|
||||||
@RequestParam(defaultValue = "1") Integer pageNum,
|
|
||||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
|
||||||
|
|
||||||
List<RecruitmentImportFailureVO> failures = recruitmentImportService.getImportFailures(taskId);
|
|
||||||
|
|
||||||
// 手动分页
|
|
||||||
int fromIndex = (pageNum - 1) * pageSize;
|
|
||||||
int toIndex = Math.min(fromIndex + pageSize, failures.size());
|
|
||||||
|
|
||||||
// 检查 fromIndex 是否超出范围
|
|
||||||
if (fromIndex >= failures.size()) {
|
|
||||||
return getDataTable(new ArrayList<>(), failures.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
List<RecruitmentImportFailureVO> pageData = failures.subList(fromIndex, toIndex);
|
|
||||||
|
|
||||||
return getDataTable(pageData, failures.size());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,201 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.controller;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiStaffTransferAddDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiStaffTransferEditDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiStaffTransferQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.excel.CcdiStaffTransferExcel;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiStaffTransferVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportResultVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportStatusVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.StaffTransferImportFailureVO;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiStaffTransferImportService;
|
|
||||||
import com.ruoyi.info.collection.service.ICcdiStaffTransferService;
|
|
||||||
import com.ruoyi.info.collection.utils.EasyExcelUtil;
|
|
||||||
import com.ruoyi.common.annotation.Log;
|
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
|
||||||
import com.ruoyi.common.core.page.PageDomain;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
|
||||||
import com.ruoyi.common.core.page.TableSupport;
|
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工调动记录Controller
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-10
|
|
||||||
*/
|
|
||||||
@Tag(name = "员工调动记录管理")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/ccdi/staffTransfer")
|
|
||||||
public class CcdiStaffTransferController extends BaseController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiStaffTransferService transferService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ICcdiStaffTransferImportService transferImportService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询员工调动记录列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询员工调动记录列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffTransfer:list')")
|
|
||||||
@GetMapping("/list")
|
|
||||||
public TableDataInfo list(CcdiStaffTransferQueryDTO queryDTO) {
|
|
||||||
// 使用MyBatis Plus分页
|
|
||||||
PageDomain pageDomain = TableSupport.buildPageRequest();
|
|
||||||
Page<CcdiStaffTransferVO> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
|
|
||||||
Page<CcdiStaffTransferVO> result = transferService.selectTransferPage(page, queryDTO);
|
|
||||||
return getDataTable(result.getRecords(), result.getTotal());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导出员工调动记录列表
|
|
||||||
*/
|
|
||||||
@Operation(summary = "导出员工调动记录列表")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffTransfer:export')")
|
|
||||||
@Log(title = "员工调动记录", businessType = BusinessType.EXPORT)
|
|
||||||
@PostMapping("/export")
|
|
||||||
public void export(HttpServletResponse response, CcdiStaffTransferQueryDTO queryDTO) {
|
|
||||||
List<CcdiStaffTransferExcel> list = transferService.selectTransferListForExport(queryDTO);
|
|
||||||
EasyExcelUtil.exportExcel(response, list, CcdiStaffTransferExcel.class, "员工调动记录信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取员工调动记录详细信息
|
|
||||||
*/
|
|
||||||
@Operation(summary = "获取员工调动记录详细信息")
|
|
||||||
@Parameter(name = "id", description = "主键ID", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffTransfer:query')")
|
|
||||||
@GetMapping(value = "/{id}")
|
|
||||||
public AjaxResult getInfo(@PathVariable Long id) {
|
|
||||||
return success(transferService.selectTransferById(id));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增员工调动记录
|
|
||||||
*/
|
|
||||||
@Operation(summary = "新增员工调动记录")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffTransfer:add')")
|
|
||||||
@Log(title = "员工调动记录", businessType = BusinessType.INSERT)
|
|
||||||
@PostMapping
|
|
||||||
public AjaxResult add(@Validated @RequestBody CcdiStaffTransferAddDTO addDTO) {
|
|
||||||
return toAjax(transferService.insertTransfer(addDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改员工调动记录
|
|
||||||
*/
|
|
||||||
@Operation(summary = "修改员工调动记录")
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffTransfer:edit')")
|
|
||||||
@Log(title = "员工调动记录", businessType = BusinessType.UPDATE)
|
|
||||||
@PutMapping
|
|
||||||
public AjaxResult edit(@Validated @RequestBody CcdiStaffTransferEditDTO editDTO) {
|
|
||||||
return toAjax(transferService.updateTransfer(editDTO));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除员工调动记录
|
|
||||||
*/
|
|
||||||
@Operation(summary = "删除员工调动记录")
|
|
||||||
@Parameter(name = "ids", description = "主键ID数组", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffTransfer:remove')")
|
|
||||||
@Log(title = "员工调动记录", businessType = BusinessType.DELETE)
|
|
||||||
@DeleteMapping("/{ids}")
|
|
||||||
public AjaxResult remove(@PathVariable Long[] ids) {
|
|
||||||
return toAjax(transferService.deleteTransferByIds(ids));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下载带字典下拉框的导入模板
|
|
||||||
* 使用@DictDropdown注解自动添加下拉框
|
|
||||||
*/
|
|
||||||
@Operation(summary = "下载导入模板")
|
|
||||||
@PostMapping("/importTemplate")
|
|
||||||
public void importTemplate(HttpServletResponse response) {
|
|
||||||
EasyExcelUtil.importTemplateWithDictDropdown(response, CcdiStaffTransferExcel.class, "员工调动记录信息");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 异步导入员工调动记录
|
|
||||||
*/
|
|
||||||
@Operation(summary = "异步导入员工调动记录")
|
|
||||||
@Parameter(name = "file", description = "导入文件", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffTransfer:import')")
|
|
||||||
@Log(title = "员工调动记录", businessType = BusinessType.IMPORT)
|
|
||||||
@PostMapping("/importData")
|
|
||||||
public AjaxResult importData(@Parameter(description = "导入文件") MultipartFile file) throws Exception {
|
|
||||||
List<CcdiStaffTransferExcel> list = EasyExcelUtil.importExcel(file.getInputStream(), CcdiStaffTransferExcel.class);
|
|
||||||
|
|
||||||
if (list == null || list.isEmpty()) {
|
|
||||||
return error("至少需要一条数据");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 提交异步任务
|
|
||||||
String taskId = transferService.importTransfer(list);
|
|
||||||
|
|
||||||
// 立即返回,不等待后台任务完成
|
|
||||||
ImportResultVO result = new ImportResultVO();
|
|
||||||
result.setTaskId(taskId);
|
|
||||||
result.setStatus("PROCESSING");
|
|
||||||
result.setMessage("导入任务已提交,正在后台处理");
|
|
||||||
|
|
||||||
return AjaxResult.success("导入任务已提交,正在后台处理", result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入状态
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询导入状态")
|
|
||||||
@Parameter(name = "taskId", description = "任务ID", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffTransfer:import')")
|
|
||||||
@GetMapping("/importStatus/{taskId}")
|
|
||||||
public AjaxResult getImportStatus(@PathVariable String taskId) {
|
|
||||||
ImportStatusVO statusVO = transferImportService.getImportStatus(taskId);
|
|
||||||
return success(statusVO);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入失败记录
|
|
||||||
*/
|
|
||||||
@Operation(summary = "查询导入失败记录")
|
|
||||||
@Parameter(name = "taskId", description = "任务ID", required = true)
|
|
||||||
@Parameter(name = "pageNum", description = "页码", required = false)
|
|
||||||
@Parameter(name = "pageSize", description = "每页条数", required = false)
|
|
||||||
@PreAuthorize("@ss.hasPermi('ccdi:staffTransfer:import')")
|
|
||||||
@GetMapping("/importFailures/{taskId}")
|
|
||||||
public TableDataInfo getImportFailures(
|
|
||||||
@PathVariable String taskId,
|
|
||||||
@RequestParam(defaultValue = "1") Integer pageNum,
|
|
||||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
|
||||||
|
|
||||||
List<StaffTransferImportFailureVO> failures = transferImportService.getImportFailures(taskId);
|
|
||||||
|
|
||||||
// 手动分页
|
|
||||||
int fromIndex = (pageNum - 1) * pageSize;
|
|
||||||
int toIndex = Math.min(fromIndex + pageSize, failures.size());
|
|
||||||
|
|
||||||
// 检查 fromIndex 是否超出范围
|
|
||||||
if (fromIndex >= failures.size()) {
|
|
||||||
return getDataTable(new ArrayList<>(), failures.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
List<StaffTransferImportFailureVO> pageData = failures.subList(fromIndex, toIndex);
|
|
||||||
|
|
||||||
return getDataTable(pageData, failures.size());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 个人中介对象 ccdi_biz_intermediary
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-04
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@TableName("ccdi_biz_intermediary")
|
|
||||||
public class CcdiBizIntermediary implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 人员ID */
|
|
||||||
@TableId(type = IdType.ASSIGN_UUID)
|
|
||||||
private String bizId;
|
|
||||||
|
|
||||||
/** 人员类型,中介、职业背债人、房产中介等 */
|
|
||||||
private String personType;
|
|
||||||
|
|
||||||
/** 人员子类型 */
|
|
||||||
private String personSubType;
|
|
||||||
|
|
||||||
/** 关系类型,如:配偶、子女、父母、兄弟姐妹等 */
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
/** 姓名 */
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
/** 性别 */
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
/** 证件类型 */
|
|
||||||
private String idType;
|
|
||||||
|
|
||||||
/** 证件号码 */
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 手机号码 */
|
|
||||||
private String mobile;
|
|
||||||
|
|
||||||
/** 微信号 */
|
|
||||||
private String wechatNo;
|
|
||||||
|
|
||||||
/** 联系地址 */
|
|
||||||
private String contactAddress;
|
|
||||||
|
|
||||||
/** 所在公司 */
|
|
||||||
private String company;
|
|
||||||
|
|
||||||
/** 企业统一信用码 */
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 职位 */
|
|
||||||
private String position;
|
|
||||||
|
|
||||||
/** 关联人员ID */
|
|
||||||
private String relatedNumId;
|
|
||||||
|
|
||||||
/** 数据来源,MANUAL:手动录入, SYSTEM:系统同步, IMPORT:批量导入, API:接口获取 */
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
/** 备注信息 */
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
/** 记录创建人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private String createdBy;
|
|
||||||
|
|
||||||
/** 记录创建时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/** 记录更新人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
private String updatedBy;
|
|
||||||
|
|
||||||
/** 记录更新时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
private Date updateTime;
|
|
||||||
}
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户实体关联信息对象 ccdi_cust_enterprise_relation
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-12
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@TableName("ccdi_cust_enterprise_relation")
|
|
||||||
@Schema(description = "信贷客户实体关联信息")
|
|
||||||
public class CcdiCustEnterpriseRelation implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 主键ID */
|
|
||||||
@TableId(type = IdType.AUTO)
|
|
||||||
@Schema(description = "主键ID")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** 身份证号 */
|
|
||||||
@Schema(description = "身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关联人在企业的职务 */
|
|
||||||
@Schema(description = "关联人在企业的职务")
|
|
||||||
private String relationPersonPost;
|
|
||||||
|
|
||||||
/** 统一社会信用代码 */
|
|
||||||
@Schema(description = "统一社会信用代码")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 企业名称 */
|
|
||||||
@Schema(description = "企业名称")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
/** 状态(0-无效 1-有效) */
|
|
||||||
@Schema(description = "状态(0-无效 1-有效)")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 补充说明 */
|
|
||||||
@Schema(description = "补充说明")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
/** 数据来源 */
|
|
||||||
@Schema(description = "数据来源")
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
/** 是否为员工(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为员工(0-否 1-是)")
|
|
||||||
private Integer isEmployee;
|
|
||||||
|
|
||||||
/** 是否为员工家属(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为员工家属(0-否 1-是)")
|
|
||||||
private Integer isEmpFamily;
|
|
||||||
|
|
||||||
/** 是否为客户(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为客户(0-否 1-是)")
|
|
||||||
private Integer isCustomer;
|
|
||||||
|
|
||||||
/** 是否为客户家属(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为客户家属(0-否 1-是)")
|
|
||||||
private Integer isCustFamily;
|
|
||||||
|
|
||||||
/** 创建时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
@Schema(description = "创建时间")
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/** 更新时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
@Schema(description = "更新时间")
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
/** 创建人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
@Schema(description = "创建人")
|
|
||||||
private String createdBy;
|
|
||||||
|
|
||||||
/** 更新人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
@Schema(description = "更新人")
|
|
||||||
private String updatedBy;
|
|
||||||
}
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户家庭关系对象 ccdi_cust_fmy_relation
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-11
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@TableName("ccdi_cust_fmy_relation")
|
|
||||||
public class CcdiCustFmyRelation implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 主键ID */
|
|
||||||
@TableId(type = IdType.AUTO)
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** 信贷客户身份证号 */
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关系类型 */
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
/** 关系人姓名 */
|
|
||||||
private String relationName;
|
|
||||||
|
|
||||||
/** 性别:M-男,F-女,O-其他 */
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
/** 出生日期 */
|
|
||||||
private Date birthDate;
|
|
||||||
|
|
||||||
/** 关系人证件类型 */
|
|
||||||
private String relationCertType;
|
|
||||||
|
|
||||||
/** 关系人证件号码 */
|
|
||||||
private String relationCertNo;
|
|
||||||
|
|
||||||
/** 手机号码1 */
|
|
||||||
private String mobilePhone1;
|
|
||||||
|
|
||||||
/** 手机号码2 */
|
|
||||||
private String mobilePhone2;
|
|
||||||
|
|
||||||
/** 微信名称1 */
|
|
||||||
private String wechatNo1;
|
|
||||||
|
|
||||||
/** 微信名称2 */
|
|
||||||
private String wechatNo2;
|
|
||||||
|
|
||||||
/** 微信名称3 */
|
|
||||||
private String wechatNo3;
|
|
||||||
|
|
||||||
/** 详细联系地址 */
|
|
||||||
private String contactAddress;
|
|
||||||
|
|
||||||
/** 关系详细描述 */
|
|
||||||
private String relationDesc;
|
|
||||||
|
|
||||||
/** 状态:0-无效,1-有效 */
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 生效日期 */
|
|
||||||
private Date effectiveDate;
|
|
||||||
|
|
||||||
/** 失效日期 */
|
|
||||||
private Date invalidDate;
|
|
||||||
|
|
||||||
/** 备注 */
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
/** 数据来源:MANUAL-手工录入,IMPORT-批量导入 */
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
/** 是否是员工亲属:0-否 */
|
|
||||||
private Boolean isEmpFamily;
|
|
||||||
|
|
||||||
/** 是否是客户亲属:1-是 */
|
|
||||||
private Boolean isCustFamily;
|
|
||||||
|
|
||||||
/** 创建时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/** 更新时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
/** 创建人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private String createdBy;
|
|
||||||
|
|
||||||
/** 更新人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
private String updatedBy;
|
|
||||||
}
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 企业主体信息对象 ccdi_enterprise_base_info
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-04
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@TableName("ccdi_enterprise_base_info")
|
|
||||||
public class CcdiEnterpriseBaseInfo implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 统一社会信用代码,员工企业关联关系表的外键 */
|
|
||||||
@TableId(type = IdType.INPUT)
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 企业名称 */
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
/** 企业类型,有限责任公司、股份有限公司、合伙企业、个体工商户、外资企业等 */
|
|
||||||
private String enterpriseType;
|
|
||||||
|
|
||||||
/** 企业性质,国企、民企、外企、合资、其他 */
|
|
||||||
private String enterpriseNature;
|
|
||||||
|
|
||||||
/** 行业分类 */
|
|
||||||
private String industryClass;
|
|
||||||
|
|
||||||
/** 所属行业 */
|
|
||||||
private String industryName;
|
|
||||||
|
|
||||||
/** 成立日期 */
|
|
||||||
private Date establishDate;
|
|
||||||
|
|
||||||
/** 注册地址 */
|
|
||||||
private String registerAddress;
|
|
||||||
|
|
||||||
/** 法定代表人 */
|
|
||||||
private String legalRepresentative;
|
|
||||||
|
|
||||||
/** 法定代表人证件类型 */
|
|
||||||
private String legalCertType;
|
|
||||||
|
|
||||||
/** 法定代表人证件号码 */
|
|
||||||
private String legalCertNo;
|
|
||||||
|
|
||||||
/** 股东1 */
|
|
||||||
private String shareholder1;
|
|
||||||
|
|
||||||
/** 股东2 */
|
|
||||||
private String shareholder2;
|
|
||||||
|
|
||||||
/** 股东3 */
|
|
||||||
private String shareholder3;
|
|
||||||
|
|
||||||
/** 股东4 */
|
|
||||||
private String shareholder4;
|
|
||||||
|
|
||||||
/** 股东5 */
|
|
||||||
private String shareholder5;
|
|
||||||
|
|
||||||
/** 经营状态 */
|
|
||||||
private String status;
|
|
||||||
|
|
||||||
/** 创建人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private String createdBy;
|
|
||||||
|
|
||||||
/** 创建时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/** 更新人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
private String updatedBy;
|
|
||||||
|
|
||||||
/** 更新时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
/** 数据来源,MANUAL:手动录入, SYSTEM:系统同步, API:接口获取, IMPORT:批量导入 */
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
/** 风险等级:1-高风险, 2-中风险, 3-低风险 */
|
|
||||||
private String riskLevel;
|
|
||||||
|
|
||||||
/** 企业来源:GENERAL-一般企业, EMP_RELATION-员工关系人, CREDIT_CUSTOMER-信贷客户, INTERMEDIARY-中介, BOTH-兼有 */
|
|
||||||
private String entSource;
|
|
||||||
}
|
|
||||||
@@ -1,138 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工采购交易信息对象 ccdi_purchase_transaction
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-06
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class CcdiPurchaseTransaction implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 采购事项ID */
|
|
||||||
@TableId(type = IdType.INPUT)
|
|
||||||
private String purchaseId;
|
|
||||||
|
|
||||||
/** 采购类别 */
|
|
||||||
private String purchaseCategory;
|
|
||||||
|
|
||||||
/** 项目名称 */
|
|
||||||
private String projectName;
|
|
||||||
|
|
||||||
/** 标的物名称 */
|
|
||||||
private String subjectName;
|
|
||||||
|
|
||||||
/** 标的物描述 */
|
|
||||||
private String subjectDesc;
|
|
||||||
|
|
||||||
/** 采购数量 */
|
|
||||||
private BigDecimal purchaseQty;
|
|
||||||
|
|
||||||
/** 预算金额 */
|
|
||||||
private BigDecimal budgetAmount;
|
|
||||||
|
|
||||||
/** 中标金额 */
|
|
||||||
private BigDecimal bidAmount;
|
|
||||||
|
|
||||||
/** 实际采购金额 */
|
|
||||||
private BigDecimal actualAmount;
|
|
||||||
|
|
||||||
/** 合同金额 */
|
|
||||||
private BigDecimal contractAmount;
|
|
||||||
|
|
||||||
/** 结算金额 */
|
|
||||||
private BigDecimal settlementAmount;
|
|
||||||
|
|
||||||
/** 采购方式 */
|
|
||||||
private String purchaseMethod;
|
|
||||||
|
|
||||||
/** 中标供应商名称 */
|
|
||||||
private String supplierName;
|
|
||||||
|
|
||||||
/** 供应商联系人 */
|
|
||||||
private String contactPerson;
|
|
||||||
|
|
||||||
/** 供应商联系电话 */
|
|
||||||
private String contactPhone;
|
|
||||||
|
|
||||||
/** 供应商统一信用代码 */
|
|
||||||
private String supplierUscc;
|
|
||||||
|
|
||||||
/** 供应商银行账户 */
|
|
||||||
private String supplierBankAccount;
|
|
||||||
|
|
||||||
/** 采购申请日期 */
|
|
||||||
private Date applyDate;
|
|
||||||
|
|
||||||
/** 采购计划批准日期 */
|
|
||||||
private Date planApproveDate;
|
|
||||||
|
|
||||||
/** 采购公告发布日期 */
|
|
||||||
private Date announceDate;
|
|
||||||
|
|
||||||
/** 开标日期 */
|
|
||||||
private Date bidOpenDate;
|
|
||||||
|
|
||||||
/** 合同签订日期 */
|
|
||||||
private Date contractSignDate;
|
|
||||||
|
|
||||||
/** 预计交货日期 */
|
|
||||||
private Date expectedDeliveryDate;
|
|
||||||
|
|
||||||
/** 实际交货日期 */
|
|
||||||
private Date actualDeliveryDate;
|
|
||||||
|
|
||||||
/** 验收日期 */
|
|
||||||
private Date acceptanceDate;
|
|
||||||
|
|
||||||
/** 结算日期 */
|
|
||||||
private Date settlementDate;
|
|
||||||
|
|
||||||
/** 申请人工号 */
|
|
||||||
private String applicantId;
|
|
||||||
|
|
||||||
/** 申请人姓名 */
|
|
||||||
private String applicantName;
|
|
||||||
|
|
||||||
/** 申请部门 */
|
|
||||||
private String applyDepartment;
|
|
||||||
|
|
||||||
/** 采购负责人工号 */
|
|
||||||
private String purchaseLeaderId;
|
|
||||||
|
|
||||||
/** 采购负责人姓名 */
|
|
||||||
private String purchaseLeaderName;
|
|
||||||
|
|
||||||
/** 采购部门 */
|
|
||||||
private String purchaseDepartment;
|
|
||||||
|
|
||||||
/** 创建时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/** 更新时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
/** 创建人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private String createdBy;
|
|
||||||
|
|
||||||
/** 更新人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
private String updatedBy;
|
|
||||||
}
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工实体关系信息对象 ccdi_staff_enterprise_relation
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@TableName("ccdi_staff_enterprise_relation")
|
|
||||||
@Schema(description = "员工实体关系信息")
|
|
||||||
public class CcdiStaffEnterpriseRelation implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 主键ID */
|
|
||||||
@TableId(type = IdType.AUTO)
|
|
||||||
@Schema(description = "主键ID")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** 身份证号 */
|
|
||||||
@Schema(description = "身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关联人在企业的职务 */
|
|
||||||
@Schema(description = "关联人在企业的职务")
|
|
||||||
private String relationPersonPost;
|
|
||||||
|
|
||||||
/** 统一社会信用代码 */
|
|
||||||
@Schema(description = "统一社会信用代码")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 企业名称 */
|
|
||||||
@Schema(description = "企业名称")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
/** 状态(0-无效 1-有效) */
|
|
||||||
@Schema(description = "状态(0-无效 1-有效)")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 补充说明 */
|
|
||||||
@Schema(description = "补充说明")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
/** 数据来源 */
|
|
||||||
@Schema(description = "数据来源")
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
/** 是否为员工(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为员工(0-否 1-是)")
|
|
||||||
private Integer isEmployee;
|
|
||||||
|
|
||||||
/** 是否为员工家属(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为员工家属(0-否 1-是)")
|
|
||||||
private Integer isEmpFamily;
|
|
||||||
|
|
||||||
/** 是否为客户(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为客户(0-否 1-是)")
|
|
||||||
private Integer isCustomer;
|
|
||||||
|
|
||||||
/** 是否为客户家属(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为客户家属(0-否 1-是)")
|
|
||||||
private Integer isCustFamily;
|
|
||||||
|
|
||||||
/** 创建时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
@Schema(description = "创建时间")
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/** 更新时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
@Schema(description = "更新时间")
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
/** 创建人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
@Schema(description = "创建人")
|
|
||||||
private String createdBy;
|
|
||||||
|
|
||||||
/** 更新人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
@Schema(description = "更新人")
|
|
||||||
private String updatedBy;
|
|
||||||
}
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工亲属关系对象 ccdi_staff_fmy_relation
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class CcdiStaffFmyRelation implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 主键ID */
|
|
||||||
@TableId(type = IdType.AUTO)
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** 员工身份证号 */
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关系类型 */
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
/** 关系人姓名 */
|
|
||||||
private String relationName;
|
|
||||||
|
|
||||||
/** 性别:M-男,F-女,O-其他 */
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
/** 出生日期 */
|
|
||||||
private Date birthDate;
|
|
||||||
|
|
||||||
/** 关系人证件类型 */
|
|
||||||
private String relationCertType;
|
|
||||||
|
|
||||||
/** 关系人证件号码 */
|
|
||||||
private String relationCertNo;
|
|
||||||
|
|
||||||
/** 手机号码1 */
|
|
||||||
private String mobilePhone1;
|
|
||||||
|
|
||||||
/** 手机号码2 */
|
|
||||||
private String mobilePhone2;
|
|
||||||
|
|
||||||
/** 微信名称1 */
|
|
||||||
private String wechatNo1;
|
|
||||||
|
|
||||||
/** 微信名称2 */
|
|
||||||
private String wechatNo2;
|
|
||||||
|
|
||||||
/** 微信名称3 */
|
|
||||||
private String wechatNo3;
|
|
||||||
|
|
||||||
/** 详细联系地址 */
|
|
||||||
private String contactAddress;
|
|
||||||
|
|
||||||
/** 关系详细描述 */
|
|
||||||
private String relationDesc;
|
|
||||||
|
|
||||||
/** 生效日期 */
|
|
||||||
private Date effectiveDate;
|
|
||||||
|
|
||||||
/** 失效日期 */
|
|
||||||
private Date invalidDate;
|
|
||||||
|
|
||||||
/** 状态:0-无效,1-有效 */
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 备注 */
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
/** 数据来源:MANUAL-手工录入,IMPORT-导入 */
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
/** 是否是员工亲属:0-否,1-是 */
|
|
||||||
private Boolean isEmpFamily;
|
|
||||||
|
|
||||||
/** 是否是客户亲属:0-否,1-是 */
|
|
||||||
private Boolean isCustFamily;
|
|
||||||
|
|
||||||
/** 创建时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/** 更新时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
/** 创建人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private String createdBy;
|
|
||||||
|
|
||||||
/** 更新人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
private String updatedBy;
|
|
||||||
}
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工招聘信息对象 ccdi_staff_recruitment
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2025-02-05
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class CcdiStaffRecruitment implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 招聘项目编号 */
|
|
||||||
@TableId(type = IdType.INPUT)
|
|
||||||
private String recruitId;
|
|
||||||
|
|
||||||
/** 招聘项目名称 */
|
|
||||||
private String recruitName;
|
|
||||||
|
|
||||||
/** 职位名称 */
|
|
||||||
private String posName;
|
|
||||||
|
|
||||||
/** 职位类别 */
|
|
||||||
private String posCategory;
|
|
||||||
|
|
||||||
/** 职位描述 */
|
|
||||||
private String posDesc;
|
|
||||||
|
|
||||||
/** 应聘人员姓名 */
|
|
||||||
private String candName;
|
|
||||||
|
|
||||||
/** 应聘人员学历 */
|
|
||||||
private String candEdu;
|
|
||||||
|
|
||||||
/** 应聘人员证件号码 */
|
|
||||||
private String candId;
|
|
||||||
|
|
||||||
/** 应聘人员毕业院校 */
|
|
||||||
private String candSchool;
|
|
||||||
|
|
||||||
/** 应聘人员专业 */
|
|
||||||
private String candMajor;
|
|
||||||
|
|
||||||
/** 应聘人员毕业年月 */
|
|
||||||
private String candGrad;
|
|
||||||
|
|
||||||
/** 录用情况:录用、未录用、放弃 */
|
|
||||||
private String admitStatus;
|
|
||||||
|
|
||||||
/** 面试官1姓名 */
|
|
||||||
private String interviewerName1;
|
|
||||||
|
|
||||||
/** 面试官1工号 */
|
|
||||||
private String interviewerId1;
|
|
||||||
|
|
||||||
/** 面试官2姓名 */
|
|
||||||
private String interviewerName2;
|
|
||||||
|
|
||||||
/** 面试官2工号 */
|
|
||||||
private String interviewerId2;
|
|
||||||
|
|
||||||
/** 记录创建人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private String createdBy;
|
|
||||||
|
|
||||||
/** 记录更新人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
private String updatedBy;
|
|
||||||
|
|
||||||
/** 创建时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/** 更新时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
private Date updateTime;
|
|
||||||
}
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工调动记录对象 ccdi_staff_transfer
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-10
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@TableName("ccdi_staff_transfer")
|
|
||||||
public class CcdiStaffTransfer implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 主键ID */
|
|
||||||
@TableId(type = IdType.AUTO)
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** 员工ID,关联ccdi_base_staff.staff_id */
|
|
||||||
private Long staffId;
|
|
||||||
|
|
||||||
/** 调动类型 */
|
|
||||||
private String transferType;
|
|
||||||
|
|
||||||
/** 调动子类型 */
|
|
||||||
private String transferSubType;
|
|
||||||
|
|
||||||
/** 调动前部门ID */
|
|
||||||
private Long deptIdBefore;
|
|
||||||
|
|
||||||
/** 调动前部门 */
|
|
||||||
private String deptNameBefore;
|
|
||||||
|
|
||||||
/** 调动前职级 */
|
|
||||||
private String gradeBefore;
|
|
||||||
|
|
||||||
/** 调动前岗位 */
|
|
||||||
private String positionBefore;
|
|
||||||
|
|
||||||
/** 调动前薪酬等级 */
|
|
||||||
private String salaryLevelBefore;
|
|
||||||
|
|
||||||
/** 调动后部门ID */
|
|
||||||
private Long deptIdAfter;
|
|
||||||
|
|
||||||
/** 调动后部门 */
|
|
||||||
private String deptNameAfter;
|
|
||||||
|
|
||||||
/** 调动后职级 */
|
|
||||||
private String gradeAfter;
|
|
||||||
|
|
||||||
/** 调动后岗位 */
|
|
||||||
private String positionAfter;
|
|
||||||
|
|
||||||
/** 调动后薪酬等级 */
|
|
||||||
private String salaryLevelAfter;
|
|
||||||
|
|
||||||
/** 调动日期 */
|
|
||||||
private Date transferDate;
|
|
||||||
|
|
||||||
/** 创建时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/** 更新时间 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
/** 创建人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT)
|
|
||||||
private String createdBy;
|
|
||||||
|
|
||||||
/** 更新人 */
|
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
|
||||||
private String updatedBy;
|
|
||||||
}
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.Pattern;
|
|
||||||
import jakarta.validation.constraints.Size;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户实体关联信息新增DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-12
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "信贷客户实体关联信息新增")
|
|
||||||
public class CcdiCustEnterpriseRelationAddDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 身份证号 */
|
|
||||||
@NotBlank(message = "身份证号不能为空")
|
|
||||||
@Pattern(regexp = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[0-9Xx]$", message = "身份证号格式不正确")
|
|
||||||
@Schema(description = "身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关联人在企业的职务 */
|
|
||||||
@Size(max = 100, message = "关联人在企业的职务长度不能超过100个字符")
|
|
||||||
@Schema(description = "关联人在企业的职务")
|
|
||||||
private String relationPersonPost;
|
|
||||||
|
|
||||||
/** 统一社会信用代码 */
|
|
||||||
@NotBlank(message = "统一社会信用代码不能为空")
|
|
||||||
@Pattern(regexp = "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$", message = "统一社会信用代码格式不正确")
|
|
||||||
@Schema(description = "统一社会信用代码")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 企业名称 */
|
|
||||||
@NotBlank(message = "企业名称不能为空")
|
|
||||||
@Size(max = 200, message = "企业名称长度不能超过200个字符")
|
|
||||||
@Schema(description = "企业名称")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
/** 状态(0-无效 1-有效) */
|
|
||||||
@Schema(description = "状态(0-无效 1-有效)")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 补充说明 */
|
|
||||||
@Schema(description = "补充说明")
|
|
||||||
private String remark;
|
|
||||||
}
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
import jakarta.validation.constraints.Size;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户实体关联信息编辑DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-12
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "信贷客户实体关联信息编辑")
|
|
||||||
public class CcdiCustEnterpriseRelationEditDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 主键ID */
|
|
||||||
@NotNull(message = "主键ID不能为空")
|
|
||||||
@Schema(description = "主键ID")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** 身份证号(不可修改) */
|
|
||||||
@Schema(description = "身份证号(不可修改)")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关联人在企业的职务 */
|
|
||||||
@Size(max = 100, message = "关联人在企业的职务长度不能超过100个字符")
|
|
||||||
@Schema(description = "关联人在企业的职务")
|
|
||||||
private String relationPersonPost;
|
|
||||||
|
|
||||||
/** 统一社会信用代码(不可修改) */
|
|
||||||
@Schema(description = "统一社会信用代码(不可修改)")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 企业名称 */
|
|
||||||
@NotBlank(message = "企业名称不能为空")
|
|
||||||
@Size(max = 200, message = "企业名称长度不能超过200个字符")
|
|
||||||
@Schema(description = "企业名称")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
/** 状态(0-无效 1-有效) */
|
|
||||||
@Schema(description = "状态(0-无效 1-有效)")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 补充说明 */
|
|
||||||
@Schema(description = "补充说明")
|
|
||||||
private String remark;
|
|
||||||
}
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户实体关联信息查询DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-12
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "信贷客户实体关联信息查询条件")
|
|
||||||
public class CcdiCustEnterpriseRelationQueryDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 身份证号 */
|
|
||||||
@Schema(description = "身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 统一社会信用代码 */
|
|
||||||
@Schema(description = "统一社会信用代码")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 企业名称 */
|
|
||||||
@Schema(description = "企业名称")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
/** 状态(0-无效 1-有效) */
|
|
||||||
@Schema(description = "状态(0-无效 1-有效)")
|
|
||||||
private Integer status;
|
|
||||||
}
|
|
||||||
@@ -1,119 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.Pattern;
|
|
||||||
import jakarta.validation.constraints.Size;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户家庭关系新增DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-11
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "信贷客户家庭关系新增")
|
|
||||||
public class CcdiCustFmyRelationAddDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 信贷客户身份证号 */
|
|
||||||
@NotBlank(message = "信贷客户身份证号不能为空")
|
|
||||||
@Pattern(regexp = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$", message = "信贷客户身份证号格式不正确")
|
|
||||||
@Schema(description = "信贷客户身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关系类型 */
|
|
||||||
@NotBlank(message = "关系类型不能为空")
|
|
||||||
@Size(max = 50, message = "关系类型长度不能超过50个字符")
|
|
||||||
@Schema(description = "关系类型")
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
/** 关系人姓名 */
|
|
||||||
@NotBlank(message = "关系人姓名不能为空")
|
|
||||||
@Size(max = 100, message = "关系人姓名长度不能超过100个字符")
|
|
||||||
@Schema(description = "关系人姓名")
|
|
||||||
private String relationName;
|
|
||||||
|
|
||||||
/** 性别 */
|
|
||||||
@Pattern(regexp = "^[MFO]$", message = "性别只能是M、F或O")
|
|
||||||
@Schema(description = "性别:M-男,F-女,O-其他")
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
/** 出生日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "出生日期")
|
|
||||||
private Date birthDate;
|
|
||||||
|
|
||||||
/** 关系人证件类型 */
|
|
||||||
@NotBlank(message = "关系人证件类型不能为空")
|
|
||||||
@Size(max = 50, message = "关系人证件类型长度不能超过50个字符")
|
|
||||||
@Schema(description = "关系人证件类型")
|
|
||||||
private String relationCertType;
|
|
||||||
|
|
||||||
/** 关系人证件号码 */
|
|
||||||
@NotBlank(message = "关系人证件号码不能为空")
|
|
||||||
@Size(max = 100, message = "关系人证件号码长度不能超过100个字符")
|
|
||||||
@Schema(description = "关系人证件号码")
|
|
||||||
private String relationCertNo;
|
|
||||||
|
|
||||||
/** 手机号码1 */
|
|
||||||
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码1格式不正确")
|
|
||||||
@Schema(description = "手机号码1")
|
|
||||||
private String mobilePhone1;
|
|
||||||
|
|
||||||
/** 手机号码2 */
|
|
||||||
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码2格式不正确")
|
|
||||||
@Schema(description = "手机号码2")
|
|
||||||
private String mobilePhone2;
|
|
||||||
|
|
||||||
/** 微信名称1 */
|
|
||||||
@Size(max = 50, message = "微信名称1长度不能超过50个字符")
|
|
||||||
@Schema(description = "微信名称1")
|
|
||||||
private String wechatNo1;
|
|
||||||
|
|
||||||
/** 微信名称2 */
|
|
||||||
@Size(max = 50, message = "微信名称2长度不能超过50个字符")
|
|
||||||
@Schema(description = "微信名称2")
|
|
||||||
private String wechatNo2;
|
|
||||||
|
|
||||||
/** 微信名称3 */
|
|
||||||
@Size(max = 50, message = "微信名称3长度不能超过50个字符")
|
|
||||||
@Schema(description = "微信名称3")
|
|
||||||
private String wechatNo3;
|
|
||||||
|
|
||||||
/** 详细联系地址 */
|
|
||||||
@Size(max = 500, message = "详细联系地址长度不能超过500个字符")
|
|
||||||
@Schema(description = "详细联系地址")
|
|
||||||
private String contactAddress;
|
|
||||||
|
|
||||||
/** 关系详细描述 */
|
|
||||||
@Size(max = 500, message = "关系详细描述长度不能超过500个字符")
|
|
||||||
@Schema(description = "关系详细描述")
|
|
||||||
private String relationDesc;
|
|
||||||
|
|
||||||
/** 生效日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "生效日期")
|
|
||||||
private Date effectiveDate;
|
|
||||||
|
|
||||||
/** 失效日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "失效日期")
|
|
||||||
private Date invalidDate;
|
|
||||||
|
|
||||||
/** 状态 */
|
|
||||||
@Schema(description = "状态:0-无效,1-有效")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 备注 */
|
|
||||||
@Schema(description = "备注")
|
|
||||||
private String remark;
|
|
||||||
}
|
|
||||||
@@ -1,125 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
import jakarta.validation.constraints.Pattern;
|
|
||||||
import jakarta.validation.constraints.Size;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户家庭关系编辑DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-11
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "信贷客户家庭关系编辑")
|
|
||||||
public class CcdiCustFmyRelationEditDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 主键ID */
|
|
||||||
@NotNull(message = "ID不能为空")
|
|
||||||
@Schema(description = "主键ID")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** 信贷客户身份证号 */
|
|
||||||
@NotBlank(message = "信贷客户身份证号不能为空")
|
|
||||||
@Pattern(regexp = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$", message = "信贷客户身份证号格式不正确")
|
|
||||||
@Schema(description = "信贷客户身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关系类型 */
|
|
||||||
@NotBlank(message = "关系类型不能为空")
|
|
||||||
@Size(max = 50, message = "关系类型长度不能超过50个字符")
|
|
||||||
@Schema(description = "关系类型")
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
/** 关系人姓名 */
|
|
||||||
@NotBlank(message = "关系人姓名不能为空")
|
|
||||||
@Size(max = 100, message = "关系人姓名长度不能超过100个字符")
|
|
||||||
@Schema(description = "关系人姓名")
|
|
||||||
private String relationName;
|
|
||||||
|
|
||||||
/** 性别 */
|
|
||||||
@Pattern(regexp = "^[MFO]$", message = "性别只能是M、F或O")
|
|
||||||
@Schema(description = "性别:M-男,F-女,O-其他")
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
/** 出生日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "出生日期")
|
|
||||||
private Date birthDate;
|
|
||||||
|
|
||||||
/** 关系人证件类型 */
|
|
||||||
@NotBlank(message = "关系人证件类型不能为空")
|
|
||||||
@Size(max = 50, message = "关系人证件类型长度不能超过50个字符")
|
|
||||||
@Schema(description = "关系人证件类型")
|
|
||||||
private String relationCertType;
|
|
||||||
|
|
||||||
/** 关系人证件号码 */
|
|
||||||
@NotBlank(message = "关系人证件号码不能为空")
|
|
||||||
@Size(max = 100, message = "关系人证件号码长度不能超过100个字符")
|
|
||||||
@Schema(description = "关系人证件号码")
|
|
||||||
private String relationCertNo;
|
|
||||||
|
|
||||||
/** 手机号码1 */
|
|
||||||
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码1格式不正确")
|
|
||||||
@Schema(description = "手机号码1")
|
|
||||||
private String mobilePhone1;
|
|
||||||
|
|
||||||
/** 手机号码2 */
|
|
||||||
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码2格式不正确")
|
|
||||||
@Schema(description = "手机号码2")
|
|
||||||
private String mobilePhone2;
|
|
||||||
|
|
||||||
/** 微信名称1 */
|
|
||||||
@Size(max = 50, message = "微信名称1长度不能超过50个字符")
|
|
||||||
@Schema(description = "微信名称1")
|
|
||||||
private String wechatNo1;
|
|
||||||
|
|
||||||
/** 微信名称2 */
|
|
||||||
@Size(max = 50, message = "微信名称2长度不能超过50个字符")
|
|
||||||
@Schema(description = "微信名称2")
|
|
||||||
private String wechatNo2;
|
|
||||||
|
|
||||||
/** 微信名称3 */
|
|
||||||
@Size(max = 50, message = "微信名称3长度不能超过50个字符")
|
|
||||||
@Schema(description = "微信名称3")
|
|
||||||
private String wechatNo3;
|
|
||||||
|
|
||||||
/** 详细联系地址 */
|
|
||||||
@Size(max = 500, message = "详细联系地址长度不能超过500个字符")
|
|
||||||
@Schema(description = "详细联系地址")
|
|
||||||
private String contactAddress;
|
|
||||||
|
|
||||||
/** 关系详细描述 */
|
|
||||||
@Size(max = 500, message = "关系详细描述长度不能超过500个字符")
|
|
||||||
@Schema(description = "关系详细描述")
|
|
||||||
private String relationDesc;
|
|
||||||
|
|
||||||
/** 状态 */
|
|
||||||
@Schema(description = "状态:0-无效,1-有效")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 生效日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "生效日期")
|
|
||||||
private Date effectiveDate;
|
|
||||||
|
|
||||||
/** 失效日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "失效日期")
|
|
||||||
private Date invalidDate;
|
|
||||||
|
|
||||||
/** 备注 */
|
|
||||||
@Schema(description = "备注")
|
|
||||||
private String remark;
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户家庭关系查询DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-11
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "信贷客户家庭关系查询")
|
|
||||||
public class CcdiCustFmyRelationQueryDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 信贷客户身份证号 */
|
|
||||||
@Schema(description = "信贷客户身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关系类型 */
|
|
||||||
@Schema(description = "关系类型")
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
/** 关系人姓名 */
|
|
||||||
@Schema(description = "关系人姓名")
|
|
||||||
private String relationName;
|
|
||||||
|
|
||||||
/** 状态 */
|
|
||||||
@Schema(description = "状态:0-无效,1-有效")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 数据来源 */
|
|
||||||
@Schema(description = "数据来源")
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
/** 生效日期开始 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "生效日期开始")
|
|
||||||
private Date effectiveDateStart;
|
|
||||||
|
|
||||||
/** 生效日期结束 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "生效日期结束")
|
|
||||||
private Date effectiveDateEnd;
|
|
||||||
}
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.Size;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 实体中介新增DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-04
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "实体中介新增DTO")
|
|
||||||
public class CcdiIntermediaryEntityAddDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
@Schema(description = "机构名称")
|
|
||||||
@NotBlank(message = "机构名称不能为空")
|
|
||||||
@Size(max = 200, message = "机构名称长度不能超过200个字符")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
@Schema(description = "统一社会信用代码")
|
|
||||||
@Size(max = 50, message = "统一社会信用代码长度不能超过50个字符")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
@Schema(description = "主体类型")
|
|
||||||
@Size(max = 50, message = "主体类型长度不能超过50个字符")
|
|
||||||
private String enterpriseType;
|
|
||||||
|
|
||||||
@Schema(description = "企业性质")
|
|
||||||
@Size(max = 50, message = "企业性质长度不能超过50个字符")
|
|
||||||
private String enterpriseNature;
|
|
||||||
|
|
||||||
@Schema(description = "行业分类")
|
|
||||||
@Size(max = 100, message = "行业分类长度不能超过100个字符")
|
|
||||||
private String industryClass;
|
|
||||||
|
|
||||||
@Schema(description = "所属行业")
|
|
||||||
@Size(max = 100, message = "所属行业长度不能超过100个字符")
|
|
||||||
private String industryName;
|
|
||||||
|
|
||||||
@Schema(description = "成立日期")
|
|
||||||
private Date establishDate;
|
|
||||||
|
|
||||||
@Schema(description = "注册地址")
|
|
||||||
@Size(max = 500, message = "注册地址长度不能超过500个字符")
|
|
||||||
private String registerAddress;
|
|
||||||
|
|
||||||
@Schema(description = "法定代表人")
|
|
||||||
@Size(max = 100, message = "法定代表人长度不能超过100个字符")
|
|
||||||
private String legalRepresentative;
|
|
||||||
|
|
||||||
@Schema(description = "法定代表人证件类型")
|
|
||||||
@Size(max = 50, message = "法定代表人证件类型长度不能超过50个字符")
|
|
||||||
private String legalCertType;
|
|
||||||
|
|
||||||
@Schema(description = "法定代表人证件号码")
|
|
||||||
@Size(max = 50, message = "法定代表人证件号码长度不能超过50个字符")
|
|
||||||
private String legalCertNo;
|
|
||||||
|
|
||||||
@Schema(description = "股东1")
|
|
||||||
@Size(max = 100, message = "股东1长度不能超过100个字符")
|
|
||||||
private String shareholder1;
|
|
||||||
|
|
||||||
@Schema(description = "股东2")
|
|
||||||
@Size(max = 100, message = "股东2长度不能超过100个字符")
|
|
||||||
private String shareholder2;
|
|
||||||
|
|
||||||
@Schema(description = "股东3")
|
|
||||||
@Size(max = 100, message = "股东3长度不能超过100个字符")
|
|
||||||
private String shareholder3;
|
|
||||||
|
|
||||||
@Schema(description = "股东4")
|
|
||||||
@Size(max = 100, message = "股东4长度不能超过100个字符")
|
|
||||||
private String shareholder4;
|
|
||||||
|
|
||||||
@Schema(description = "股东5")
|
|
||||||
@Size(max = 100, message = "股东5长度不能超过100个字符")
|
|
||||||
private String shareholder5;
|
|
||||||
|
|
||||||
@Schema(description = "备注")
|
|
||||||
@Size(max = 500, message = "备注长度不能超过500个字符")
|
|
||||||
private String remark;
|
|
||||||
}
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.Size;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 实体中介修改DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-04
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "实体中介修改DTO")
|
|
||||||
public class CcdiIntermediaryEntityEditDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
@Schema(description = "统一社会信用代码")
|
|
||||||
@NotBlank(message = "统一社会信用代码不能为空")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
@Schema(description = "机构名称")
|
|
||||||
@NotBlank(message = "机构名称不能为空")
|
|
||||||
@Size(max = 200, message = "机构名称长度不能超过200个字符")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
@Schema(description = "主体类型")
|
|
||||||
@Size(max = 50, message = "主体类型长度不能超过50个字符")
|
|
||||||
private String enterpriseType;
|
|
||||||
|
|
||||||
@Schema(description = "企业性质")
|
|
||||||
@Size(max = 50, message = "企业性质长度不能超过50个字符")
|
|
||||||
private String enterpriseNature;
|
|
||||||
|
|
||||||
@Schema(description = "行业分类")
|
|
||||||
@Size(max = 100, message = "行业分类长度不能超过100个字符")
|
|
||||||
private String industryClass;
|
|
||||||
|
|
||||||
@Schema(description = "所属行业")
|
|
||||||
@Size(max = 100, message = "所属行业长度不能超过100个字符")
|
|
||||||
private String industryName;
|
|
||||||
|
|
||||||
@Schema(description = "成立日期")
|
|
||||||
private Date establishDate;
|
|
||||||
|
|
||||||
@Schema(description = "注册地址")
|
|
||||||
@Size(max = 500, message = "注册地址长度不能超过500个字符")
|
|
||||||
private String registerAddress;
|
|
||||||
|
|
||||||
@Schema(description = "法定代表人")
|
|
||||||
@Size(max = 100, message = "法定代表人长度不能超过100个字符")
|
|
||||||
private String legalRepresentative;
|
|
||||||
|
|
||||||
@Schema(description = "法定代表人证件类型")
|
|
||||||
@Size(max = 50, message = "法定代表人证件类型长度不能超过50个字符")
|
|
||||||
private String legalCertType;
|
|
||||||
|
|
||||||
@Schema(description = "法定代表人证件号码")
|
|
||||||
@Size(max = 50, message = "法定代表人证件号码长度不能超过50个字符")
|
|
||||||
private String legalCertNo;
|
|
||||||
|
|
||||||
@Schema(description = "股东1")
|
|
||||||
@Size(max = 100, message = "股东1长度不能超过100个字符")
|
|
||||||
private String shareholder1;
|
|
||||||
|
|
||||||
@Schema(description = "股东2")
|
|
||||||
@Size(max = 100, message = "股东2长度不能超过100个字符")
|
|
||||||
private String shareholder2;
|
|
||||||
|
|
||||||
@Schema(description = "股东3")
|
|
||||||
@Size(max = 100, message = "股东3长度不能超过100个字符")
|
|
||||||
private String shareholder3;
|
|
||||||
|
|
||||||
@Schema(description = "股东4")
|
|
||||||
@Size(max = 100, message = "股东4长度不能超过100个字符")
|
|
||||||
private String shareholder4;
|
|
||||||
|
|
||||||
@Schema(description = "股东5")
|
|
||||||
@Size(max = 100, message = "股东5长度不能超过100个字符")
|
|
||||||
private String shareholder5;
|
|
||||||
|
|
||||||
@Schema(description = "备注")
|
|
||||||
@Size(max = 500, message = "备注长度不能超过500个字符")
|
|
||||||
private String remark;
|
|
||||||
}
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.Size;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 个人中介新增DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-04
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "个人中介新增DTO")
|
|
||||||
public class CcdiIntermediaryPersonAddDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
@Schema(description = "姓名")
|
|
||||||
@NotBlank(message = "姓名不能为空")
|
|
||||||
@Size(max = 100, message = "姓名长度不能超过100个字符")
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@Schema(description = "人员类型")
|
|
||||||
private String personType;
|
|
||||||
|
|
||||||
@Schema(description = "人员子类型")
|
|
||||||
private String personSubType;
|
|
||||||
|
|
||||||
@Schema(description = "性别")
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
@Schema(description = "证件类型")
|
|
||||||
private String idType;
|
|
||||||
|
|
||||||
@Schema(description = "证件号码")
|
|
||||||
@NotBlank(message = "证件号码不能为空")
|
|
||||||
@Size(max = 50, message = "证件号码长度不能超过50个字符")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
@Schema(description = "手机号码")
|
|
||||||
@Size(max = 20, message = "手机号码长度不能超过20个字符")
|
|
||||||
private String mobile;
|
|
||||||
|
|
||||||
@Schema(description = "微信号")
|
|
||||||
@Size(max = 50, message = "微信号长度不能超过50个字符")
|
|
||||||
private String wechatNo;
|
|
||||||
|
|
||||||
@Schema(description = "联系地址")
|
|
||||||
@Size(max = 200, message = "联系地址长度不能超过200个字符")
|
|
||||||
private String contactAddress;
|
|
||||||
|
|
||||||
@Schema(description = "所在公司")
|
|
||||||
@Size(max = 200, message = "所在公司长度不能超过200个字符")
|
|
||||||
private String company;
|
|
||||||
|
|
||||||
@Schema(description = "企业统一信用码")
|
|
||||||
@Size(max = 50, message = "企业统一信用码长度不能超过50个字符")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
@Schema(description = "职位")
|
|
||||||
@Size(max = 100, message = "职位长度不能超过100个字符")
|
|
||||||
private String position;
|
|
||||||
|
|
||||||
@Schema(description = "关联人员ID")
|
|
||||||
@Size(max = 50, message = "关联人员ID长度不能超过50个字符")
|
|
||||||
private String relatedNumId;
|
|
||||||
|
|
||||||
@Schema(description = "关联关系")
|
|
||||||
@Size(max = 50, message = "关联关系长度不能超过50个字符")
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
|
|
||||||
@Schema(description = "备注")
|
|
||||||
@Size(max = 500, message = "备注长度不能超过500个字符")
|
|
||||||
private String remark;
|
|
||||||
}
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.Size;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 个人中介修改DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-04
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "个人中介修改DTO")
|
|
||||||
public class CcdiIntermediaryPersonEditDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
@Schema(description = "人员ID")
|
|
||||||
@NotBlank(message = "人员ID不能为空")
|
|
||||||
private String bizId;
|
|
||||||
|
|
||||||
@Schema(description = "姓名")
|
|
||||||
@NotBlank(message = "姓名不能为空")
|
|
||||||
@Size(max = 100, message = "姓名长度不能超过100个字符")
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@Schema(description = "人员类型")
|
|
||||||
private String personType;
|
|
||||||
|
|
||||||
@Schema(description = "人员子类型")
|
|
||||||
private String personSubType;
|
|
||||||
|
|
||||||
@Schema(description = "性别")
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
@Schema(description = "证件类型")
|
|
||||||
private String idType;
|
|
||||||
|
|
||||||
@Schema(description = "证件号码")
|
|
||||||
@Size(max = 50, message = "证件号码长度不能超过50个字符")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
@Schema(description = "手机号码")
|
|
||||||
@Size(max = 20, message = "手机号码长度不能超过20个字符")
|
|
||||||
private String mobile;
|
|
||||||
|
|
||||||
@Schema(description = "微信号")
|
|
||||||
@Size(max = 50, message = "微信号长度不能超过50个字符")
|
|
||||||
private String wechatNo;
|
|
||||||
|
|
||||||
@Schema(description = "联系地址")
|
|
||||||
@Size(max = 200, message = "联系地址长度不能超过200个字符")
|
|
||||||
private String contactAddress;
|
|
||||||
|
|
||||||
@Schema(description = "所在公司")
|
|
||||||
@Size(max = 200, message = "所在公司长度不能超过200个字符")
|
|
||||||
private String company;
|
|
||||||
|
|
||||||
@Schema(description = "企业统一信用码")
|
|
||||||
@Size(max = 50, message = "企业统一信用码长度不能超过50个字符")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
@Schema(description = "职位")
|
|
||||||
@Size(max = 100, message = "职位长度不能超过100个字符")
|
|
||||||
private String position;
|
|
||||||
|
|
||||||
@Schema(description = "关联人员ID")
|
|
||||||
@Size(max = 50, message = "关联人员ID长度不能超过50个字符")
|
|
||||||
private String relatedNumId;
|
|
||||||
|
|
||||||
@Schema(description = "关联关系")
|
|
||||||
@Size(max = 50, message = "关联关系长度不能超过50个字符")
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
@Schema(description = "备注")
|
|
||||||
@Size(max = 500, message = "备注长度不能超过500个字符")
|
|
||||||
private String remark;
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 中介查询DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-04
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "中介查询DTO")
|
|
||||||
public class CcdiIntermediaryQueryDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
@Schema(description = "姓名/机构名称")
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@Schema(description = "证件号/统一社会信用代码")
|
|
||||||
private String certificateNo;
|
|
||||||
|
|
||||||
@Schema(description = "中介类型(1=个人, 2=实体)")
|
|
||||||
private String intermediaryType;
|
|
||||||
}
|
|
||||||
@@ -1,194 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.*;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购交易信息新增DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-06
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "采购交易信息新增")
|
|
||||||
public class CcdiPurchaseTransactionAddDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 采购事项ID */
|
|
||||||
@NotBlank(message = "采购事项ID不能为空")
|
|
||||||
@Size(max = 32, message = "采购事项ID长度不能超过32个字符")
|
|
||||||
@Schema(description = "采购事项ID")
|
|
||||||
private String purchaseId;
|
|
||||||
|
|
||||||
/** 采购类别 */
|
|
||||||
@NotBlank(message = "采购类别不能为空")
|
|
||||||
@Size(max = 50, message = "采购类别长度不能超过50个字符")
|
|
||||||
@Schema(description = "采购类别")
|
|
||||||
private String purchaseCategory;
|
|
||||||
|
|
||||||
/** 项目名称 */
|
|
||||||
@Size(max = 200, message = "项目名称长度不能超过200个字符")
|
|
||||||
@Schema(description = "项目名称")
|
|
||||||
private String projectName;
|
|
||||||
|
|
||||||
/** 标的物名称 */
|
|
||||||
@NotBlank(message = "标的物名称不能为空")
|
|
||||||
@Size(max = 200, message = "标的物名称长度不能超过200个字符")
|
|
||||||
@Schema(description = "标的物名称")
|
|
||||||
private String subjectName;
|
|
||||||
|
|
||||||
/** 标的物描述 */
|
|
||||||
@Schema(description = "标的物描述")
|
|
||||||
private String subjectDesc;
|
|
||||||
|
|
||||||
/** 采购数量 */
|
|
||||||
@NotNull(message = "采购数量不能为空")
|
|
||||||
@DecimalMin(value = "0.0001", message = "采购数量必须大于0")
|
|
||||||
@Schema(description = "采购数量")
|
|
||||||
private BigDecimal purchaseQty;
|
|
||||||
|
|
||||||
/** 预算金额 */
|
|
||||||
@NotNull(message = "预算金额不能为空")
|
|
||||||
@DecimalMin(value = "0.01", message = "预算金额必须大于0")
|
|
||||||
@Schema(description = "预算金额")
|
|
||||||
private BigDecimal budgetAmount;
|
|
||||||
|
|
||||||
/** 中标金额 */
|
|
||||||
@DecimalMin(value = "0.01", message = "中标金额必须大于0")
|
|
||||||
@Schema(description = "中标金额")
|
|
||||||
private BigDecimal bidAmount;
|
|
||||||
|
|
||||||
/** 实际采购金额 */
|
|
||||||
@DecimalMin(value = "0.01", message = "实际采购金额必须大于0")
|
|
||||||
@Schema(description = "实际采购金额")
|
|
||||||
private BigDecimal actualAmount;
|
|
||||||
|
|
||||||
/** 合同金额 */
|
|
||||||
@DecimalMin(value = "0.01", message = "合同金额必须大于0")
|
|
||||||
@Schema(description = "合同金额")
|
|
||||||
private BigDecimal contractAmount;
|
|
||||||
|
|
||||||
/** 结算金额 */
|
|
||||||
@DecimalMin(value = "0.01", message = "结算金额必须大于0")
|
|
||||||
@Schema(description = "结算金额")
|
|
||||||
private BigDecimal settlementAmount;
|
|
||||||
|
|
||||||
/** 采购方式 */
|
|
||||||
@NotBlank(message = "采购方式不能为空")
|
|
||||||
@Size(max = 50, message = "采购方式长度不能超过50个字符")
|
|
||||||
@Schema(description = "采购方式")
|
|
||||||
private String purchaseMethod;
|
|
||||||
|
|
||||||
/** 中标供应商名称 */
|
|
||||||
@Size(max = 200, message = "中标供应商名称长度不能超过200个字符")
|
|
||||||
@Schema(description = "中标供应商名称")
|
|
||||||
private String supplierName;
|
|
||||||
|
|
||||||
/** 供应商联系人 */
|
|
||||||
@Size(max = 50, message = "供应商联系人长度不能超过50个字符")
|
|
||||||
@Schema(description = "供应商联系人")
|
|
||||||
private String contactPerson;
|
|
||||||
|
|
||||||
/** 供应商联系电话 */
|
|
||||||
@Pattern(regexp = "^1[3-9]\\d{9}$|^0\\d{2,3}-?\\d{7,8}$", message = "供应商联系电话格式不正确")
|
|
||||||
@Schema(description = "供应商联系电话")
|
|
||||||
private String contactPhone;
|
|
||||||
|
|
||||||
/** 供应商统一信用代码 */
|
|
||||||
@Pattern(regexp = "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$", message = "供应商统一信用代码格式不正确")
|
|
||||||
@Schema(description = "供应商统一信用代码")
|
|
||||||
private String supplierUscc;
|
|
||||||
|
|
||||||
/** 供应商银行账户 */
|
|
||||||
@Size(max = 50, message = "供应商银行账户长度不能超过50个字符")
|
|
||||||
@Schema(description = "供应商银行账户")
|
|
||||||
private String supplierBankAccount;
|
|
||||||
|
|
||||||
/** 采购申请日期(或立项日期) */
|
|
||||||
@NotNull(message = "采购申请日期不能为空")
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "采购申请日期")
|
|
||||||
private Date applyDate;
|
|
||||||
|
|
||||||
/** 采购计划批准日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "采购计划批准日期")
|
|
||||||
private Date planApproveDate;
|
|
||||||
|
|
||||||
/** 采购公告发布日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "采购公告发布日期")
|
|
||||||
private Date announceDate;
|
|
||||||
|
|
||||||
/** 开标日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "开标日期")
|
|
||||||
private Date bidOpenDate;
|
|
||||||
|
|
||||||
/** 合同签订日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "合同签订日期")
|
|
||||||
private Date contractSignDate;
|
|
||||||
|
|
||||||
/** 预计交货日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "预计交货日期")
|
|
||||||
private Date expectedDeliveryDate;
|
|
||||||
|
|
||||||
/** 实际交货日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "实际交货日期")
|
|
||||||
private Date actualDeliveryDate;
|
|
||||||
|
|
||||||
/** 验收日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "验收日期")
|
|
||||||
private Date acceptanceDate;
|
|
||||||
|
|
||||||
/** 结算日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "结算日期")
|
|
||||||
private Date settlementDate;
|
|
||||||
|
|
||||||
/** 申请人工号 */
|
|
||||||
@NotBlank(message = "申请人工号不能为空")
|
|
||||||
@Pattern(regexp = "^\\d{7}$", message = "申请人工号必须为7位数字")
|
|
||||||
@Schema(description = "申请人工号")
|
|
||||||
private String applicantId;
|
|
||||||
|
|
||||||
/** 申请人姓名 */
|
|
||||||
@NotBlank(message = "申请人姓名不能为空")
|
|
||||||
@Size(max = 50, message = "申请人姓名长度不能超过50个字符")
|
|
||||||
@Schema(description = "申请人姓名")
|
|
||||||
private String applicantName;
|
|
||||||
|
|
||||||
/** 申请部门 */
|
|
||||||
@NotBlank(message = "申请部门不能为空")
|
|
||||||
@Size(max = 100, message = "申请部门长度不能超过100个字符")
|
|
||||||
@Schema(description = "申请部门")
|
|
||||||
private String applyDepartment;
|
|
||||||
|
|
||||||
/** 采购负责人工号 */
|
|
||||||
@Pattern(regexp = "^\\d{7}$", message = "采购负责人工号必须为7位数字")
|
|
||||||
@Schema(description = "采购负责人工号")
|
|
||||||
private String purchaseLeaderId;
|
|
||||||
|
|
||||||
/** 采购负责人姓名 */
|
|
||||||
@Size(max = 50, message = "采购负责人姓名长度不能超过50个字符")
|
|
||||||
@Schema(description = "采购负责人姓名")
|
|
||||||
private String purchaseLeaderName;
|
|
||||||
|
|
||||||
/** 采购部门 */
|
|
||||||
@Size(max = 100, message = "采购部门长度不能超过100个字符")
|
|
||||||
@Schema(description = "采购部门")
|
|
||||||
private String purchaseDepartment;
|
|
||||||
}
|
|
||||||
@@ -1,194 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.*;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购交易信息编辑DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-06
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "采购交易信息编辑")
|
|
||||||
public class CcdiPurchaseTransactionEditDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 采购事项ID */
|
|
||||||
@NotBlank(message = "采购事项ID不能为空")
|
|
||||||
@Size(max = 32, message = "采购事项ID长度不能超过32个字符")
|
|
||||||
@Schema(description = "采购事项ID")
|
|
||||||
private String purchaseId;
|
|
||||||
|
|
||||||
/** 采购类别 */
|
|
||||||
@NotBlank(message = "采购类别不能为空")
|
|
||||||
@Size(max = 50, message = "采购类别长度不能超过50个字符")
|
|
||||||
@Schema(description = "采购类别")
|
|
||||||
private String purchaseCategory;
|
|
||||||
|
|
||||||
/** 项目名称 */
|
|
||||||
@Size(max = 200, message = "项目名称长度不能超过200个字符")
|
|
||||||
@Schema(description = "项目名称")
|
|
||||||
private String projectName;
|
|
||||||
|
|
||||||
/** 标的物名称 */
|
|
||||||
@NotBlank(message = "标的物名称不能为空")
|
|
||||||
@Size(max = 200, message = "标的物名称长度不能超过200个字符")
|
|
||||||
@Schema(description = "标的物名称")
|
|
||||||
private String subjectName;
|
|
||||||
|
|
||||||
/** 标的物描述 */
|
|
||||||
@Schema(description = "标的物描述")
|
|
||||||
private String subjectDesc;
|
|
||||||
|
|
||||||
/** 采购数量 */
|
|
||||||
@NotNull(message = "采购数量不能为空")
|
|
||||||
@DecimalMin(value = "0.0001", message = "采购数量必须大于0")
|
|
||||||
@Schema(description = "采购数量")
|
|
||||||
private BigDecimal purchaseQty;
|
|
||||||
|
|
||||||
/** 预算金额 */
|
|
||||||
@NotNull(message = "预算金额不能为空")
|
|
||||||
@DecimalMin(value = "0.01", message = "预算金额必须大于0")
|
|
||||||
@Schema(description = "预算金额")
|
|
||||||
private BigDecimal budgetAmount;
|
|
||||||
|
|
||||||
/** 中标金额 */
|
|
||||||
@DecimalMin(value = "0.01", message = "中标金额必须大于0")
|
|
||||||
@Schema(description = "中标金额")
|
|
||||||
private BigDecimal bidAmount;
|
|
||||||
|
|
||||||
/** 实际采购金额 */
|
|
||||||
@DecimalMin(value = "0.01", message = "实际采购金额必须大于0")
|
|
||||||
@Schema(description = "实际采购金额")
|
|
||||||
private BigDecimal actualAmount;
|
|
||||||
|
|
||||||
/** 合同金额 */
|
|
||||||
@DecimalMin(value = "0.01", message = "合同金额必须大于0")
|
|
||||||
@Schema(description = "合同金额")
|
|
||||||
private BigDecimal contractAmount;
|
|
||||||
|
|
||||||
/** 结算金额 */
|
|
||||||
@DecimalMin(value = "0.01", message = "结算金额必须大于0")
|
|
||||||
@Schema(description = "结算金额")
|
|
||||||
private BigDecimal settlementAmount;
|
|
||||||
|
|
||||||
/** 采购方式 */
|
|
||||||
@NotBlank(message = "采购方式不能为空")
|
|
||||||
@Size(max = 50, message = "采购方式长度不能超过50个字符")
|
|
||||||
@Schema(description = "采购方式")
|
|
||||||
private String purchaseMethod;
|
|
||||||
|
|
||||||
/** 中标供应商名称 */
|
|
||||||
@Size(max = 200, message = "中标供应商名称长度不能超过200个字符")
|
|
||||||
@Schema(description = "中标供应商名称")
|
|
||||||
private String supplierName;
|
|
||||||
|
|
||||||
/** 供应商联系人 */
|
|
||||||
@Size(max = 50, message = "供应商联系人长度不能超过50个字符")
|
|
||||||
@Schema(description = "供应商联系人")
|
|
||||||
private String contactPerson;
|
|
||||||
|
|
||||||
/** 供应商联系电话 */
|
|
||||||
@Pattern(regexp = "^1[3-9]\\d{9}$|^0\\d{2,3}-?\\d{7,8}$", message = "供应商联系电话格式不正确")
|
|
||||||
@Schema(description = "供应商联系电话")
|
|
||||||
private String contactPhone;
|
|
||||||
|
|
||||||
/** 供应商统一信用代码 */
|
|
||||||
@Pattern(regexp = "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$", message = "供应商统一信用代码格式不正确")
|
|
||||||
@Schema(description = "供应商统一信用代码")
|
|
||||||
private String supplierUscc;
|
|
||||||
|
|
||||||
/** 供应商银行账户 */
|
|
||||||
@Size(max = 50, message = "供应商银行账户长度不能超过50个字符")
|
|
||||||
@Schema(description = "供应商银行账户")
|
|
||||||
private String supplierBankAccount;
|
|
||||||
|
|
||||||
/** 采购申请日期(或立项日期) */
|
|
||||||
@NotNull(message = "采购申请日期不能为空")
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "采购申请日期")
|
|
||||||
private Date applyDate;
|
|
||||||
|
|
||||||
/** 采购计划批准日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "采购计划批准日期")
|
|
||||||
private Date planApproveDate;
|
|
||||||
|
|
||||||
/** 采购公告发布日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "采购公告发布日期")
|
|
||||||
private Date announceDate;
|
|
||||||
|
|
||||||
/** 开标日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "开标日期")
|
|
||||||
private Date bidOpenDate;
|
|
||||||
|
|
||||||
/** 合同签订日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "合同签订日期")
|
|
||||||
private Date contractSignDate;
|
|
||||||
|
|
||||||
/** 预计交货日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "预计交货日期")
|
|
||||||
private Date expectedDeliveryDate;
|
|
||||||
|
|
||||||
/** 实际交货日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "实际交货日期")
|
|
||||||
private Date actualDeliveryDate;
|
|
||||||
|
|
||||||
/** 验收日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "验收日期")
|
|
||||||
private Date acceptanceDate;
|
|
||||||
|
|
||||||
/** 结算日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "结算日期")
|
|
||||||
private Date settlementDate;
|
|
||||||
|
|
||||||
/** 申请人工号 */
|
|
||||||
@NotBlank(message = "申请人工号不能为空")
|
|
||||||
@Pattern(regexp = "^\\d{7}$", message = "申请人工号必须为7位数字")
|
|
||||||
@Schema(description = "申请人工号")
|
|
||||||
private String applicantId;
|
|
||||||
|
|
||||||
/** 申请人姓名 */
|
|
||||||
@NotBlank(message = "申请人姓名不能为空")
|
|
||||||
@Size(max = 50, message = "申请人姓名长度不能超过50个字符")
|
|
||||||
@Schema(description = "申请人姓名")
|
|
||||||
private String applicantName;
|
|
||||||
|
|
||||||
/** 申请部门 */
|
|
||||||
@NotBlank(message = "申请部门不能为空")
|
|
||||||
@Size(max = 100, message = "申请部门长度不能超过100个字符")
|
|
||||||
@Schema(description = "申请部门")
|
|
||||||
private String applyDepartment;
|
|
||||||
|
|
||||||
/** 采购负责人工号 */
|
|
||||||
@Pattern(regexp = "^\\d{7}$", message = "采购负责人工号必须为7位数字")
|
|
||||||
@Schema(description = "采购负责人工号")
|
|
||||||
private String purchaseLeaderId;
|
|
||||||
|
|
||||||
/** 采购负责人姓名 */
|
|
||||||
@Size(max = 50, message = "采购负责人姓名长度不能超过50个字符")
|
|
||||||
@Schema(description = "采购负责人姓名")
|
|
||||||
private String purchaseLeaderName;
|
|
||||||
|
|
||||||
/** 采购部门 */
|
|
||||||
@Size(max = 100, message = "采购部门长度不能超过100个字符")
|
|
||||||
@Schema(description = "采购部门")
|
|
||||||
private String purchaseDepartment;
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购交易信息查询DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-06
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "采购交易信息查询条件")
|
|
||||||
public class CcdiPurchaseTransactionQueryDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 项目名称 */
|
|
||||||
@Schema(description = "项目名称")
|
|
||||||
private String projectName;
|
|
||||||
|
|
||||||
/** 标的物名称 */
|
|
||||||
@Schema(description = "标的物名称")
|
|
||||||
private String subjectName;
|
|
||||||
|
|
||||||
/** 申请人姓名 */
|
|
||||||
@Schema(description = "申请人姓名")
|
|
||||||
private String applicantName;
|
|
||||||
|
|
||||||
/** 申请人工号 */
|
|
||||||
@Schema(description = "申请人工号")
|
|
||||||
private String applicantId;
|
|
||||||
|
|
||||||
/** 申请日期-开始 */
|
|
||||||
@Schema(description = "申请日期-开始")
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
private Date applyDateStart;
|
|
||||||
|
|
||||||
/** 申请日期-结束 */
|
|
||||||
@Schema(description = "申请日期-结束")
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
private Date applyDateEnd;
|
|
||||||
}
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.Pattern;
|
|
||||||
import jakarta.validation.constraints.Size;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工实体关系信息新增DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工实体关系信息新增")
|
|
||||||
public class CcdiStaffEnterpriseRelationAddDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 身份证号 */
|
|
||||||
@NotBlank(message = "身份证号不能为空")
|
|
||||||
@Pattern(regexp = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[0-9Xx]$", message = "身份证号格式不正确")
|
|
||||||
@Schema(description = "身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关联人在企业的职务 */
|
|
||||||
@Size(max = 100, message = "关联人在企业的职务长度不能超过100个字符")
|
|
||||||
@Schema(description = "关联人在企业的职务")
|
|
||||||
private String relationPersonPost;
|
|
||||||
|
|
||||||
/** 统一社会信用代码 */
|
|
||||||
@NotBlank(message = "统一社会信用代码不能为空")
|
|
||||||
@Pattern(regexp = "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$", message = "统一社会信用代码格式不正确")
|
|
||||||
@Schema(description = "统一社会信用代码")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 企业名称 */
|
|
||||||
@NotBlank(message = "企业名称不能为空")
|
|
||||||
@Size(max = 200, message = "企业名称长度不能超过200个字符")
|
|
||||||
@Schema(description = "企业名称")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
/** 状态(0-无效 1-有效) */
|
|
||||||
@Schema(description = "状态(0-无效 1-有效)")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 补充说明 */
|
|
||||||
@Schema(description = "补充说明")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
/** 数据来源 */
|
|
||||||
@Size(max = 50, message = "数据来源长度不能超过50个字符")
|
|
||||||
@Schema(description = "数据来源")
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
/** 是否为员工(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为员工(0-否 1-是)")
|
|
||||||
private Integer isEmployee;
|
|
||||||
|
|
||||||
/** 是否为员工家属(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为员工家属(0-否 1-是)")
|
|
||||||
private Integer isEmpFamily;
|
|
||||||
|
|
||||||
/** 是否为客户(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为客户(0-否 1-是)")
|
|
||||||
private Integer isCustomer;
|
|
||||||
|
|
||||||
/** 是否为客户家属(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为客户家属(0-否 1-是)")
|
|
||||||
private Integer isCustFamily;
|
|
||||||
}
|
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
import jakarta.validation.constraints.Size;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工实体关系信息编辑DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工实体关系信息编辑")
|
|
||||||
public class CcdiStaffEnterpriseRelationEditDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 主键ID */
|
|
||||||
@NotNull(message = "主键ID不能为空")
|
|
||||||
@Schema(description = "主键ID")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** 身份证号 */
|
|
||||||
@Schema(description = "身份证号(不可修改)")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关联人在企业的职务 */
|
|
||||||
@Size(max = 100, message = "关联人在企业的职务长度不能超过100个字符")
|
|
||||||
@Schema(description = "关联人在企业的职务")
|
|
||||||
private String relationPersonPost;
|
|
||||||
|
|
||||||
/** 统一社会信用代码 */
|
|
||||||
@Schema(description = "统一社会信用代码(不可修改)")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 企业名称 */
|
|
||||||
@NotBlank(message = "企业名称不能为空")
|
|
||||||
@Size(max = 200, message = "企业名称长度不能超过200个字符")
|
|
||||||
@Schema(description = "企业名称")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
/** 状态(0-无效 1-有效) */
|
|
||||||
@Schema(description = "状态(0-无效 1-有效)")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 补充说明 */
|
|
||||||
@Schema(description = "补充说明")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
/** 数据来源 */
|
|
||||||
@Size(max = 50, message = "数据来源长度不能超过50个字符")
|
|
||||||
@Schema(description = "数据来源")
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
/** 是否为员工(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为员工(0-否 1-是)")
|
|
||||||
private Integer isEmployee;
|
|
||||||
|
|
||||||
/** 是否为员工家属(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为员工家属(0-否 1-是)")
|
|
||||||
private Integer isEmpFamily;
|
|
||||||
|
|
||||||
/** 是否为客户(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为客户(0-否 1-是)")
|
|
||||||
private Integer isCustomer;
|
|
||||||
|
|
||||||
/** 是否为客户家属(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为客户家属(0-否 1-是)")
|
|
||||||
private Integer isCustFamily;
|
|
||||||
}
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工实体关系信息查询DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工实体关系信息查询条件")
|
|
||||||
public class CcdiStaffEnterpriseRelationQueryDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 身份证号 */
|
|
||||||
@Schema(description = "身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 统一社会信用代码 */
|
|
||||||
@Schema(description = "统一社会信用代码")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 企业名称 */
|
|
||||||
@Schema(description = "企业名称")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
/** 状态(0-无效 1-有效) */
|
|
||||||
@Schema(description = "状态(0-无效 1-有效)")
|
|
||||||
private Integer status;
|
|
||||||
}
|
|
||||||
@@ -1,119 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.Pattern;
|
|
||||||
import jakarta.validation.constraints.Size;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工亲属关系新增DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工亲属关系新增")
|
|
||||||
public class CcdiStaffFmyRelationAddDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 员工身份证号 */
|
|
||||||
@NotBlank(message = "员工身份证号不能为空")
|
|
||||||
@Pattern(regexp = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$", message = "员工身份证号格式不正确")
|
|
||||||
@Schema(description = "员工身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关系类型 */
|
|
||||||
@NotBlank(message = "关系类型不能为空")
|
|
||||||
@Size(max = 50, message = "关系类型长度不能超过50个字符")
|
|
||||||
@Schema(description = "关系类型")
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
/** 关系人姓名 */
|
|
||||||
@NotBlank(message = "关系人姓名不能为空")
|
|
||||||
@Size(max = 100, message = "关系人姓名长度不能超过100个字符")
|
|
||||||
@Schema(description = "关系人姓名")
|
|
||||||
private String relationName;
|
|
||||||
|
|
||||||
/** 性别 */
|
|
||||||
@Pattern(regexp = "^[MFO]$", message = "性别只能是M、F或O")
|
|
||||||
@Schema(description = "性别:M-男,F-女,O-其他")
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
/** 出生日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "出生日期")
|
|
||||||
private Date birthDate;
|
|
||||||
|
|
||||||
/** 关系人证件类型 */
|
|
||||||
@NotBlank(message = "关系人证件类型不能为空")
|
|
||||||
@Size(max = 50, message = "关系人证件类型长度不能超过50个字符")
|
|
||||||
@Schema(description = "关系人证件类型")
|
|
||||||
private String relationCertType;
|
|
||||||
|
|
||||||
/** 关系人证件号码 */
|
|
||||||
@NotBlank(message = "关系人证件号码不能为空")
|
|
||||||
@Size(max = 100, message = "关系人证件号码长度不能超过100个字符")
|
|
||||||
@Schema(description = "关系人证件号码")
|
|
||||||
private String relationCertNo;
|
|
||||||
|
|
||||||
/** 手机号码1 */
|
|
||||||
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码1格式不正确")
|
|
||||||
@Schema(description = "手机号码1")
|
|
||||||
private String mobilePhone1;
|
|
||||||
|
|
||||||
/** 手机号码2 */
|
|
||||||
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码2格式不正确")
|
|
||||||
@Schema(description = "手机号码2")
|
|
||||||
private String mobilePhone2;
|
|
||||||
|
|
||||||
/** 微信名称1 */
|
|
||||||
@Size(max = 50, message = "微信名称1长度不能超过50个字符")
|
|
||||||
@Schema(description = "微信名称1")
|
|
||||||
private String wechatNo1;
|
|
||||||
|
|
||||||
/** 微信名称2 */
|
|
||||||
@Size(max = 50, message = "微信名称2长度不能超过50个字符")
|
|
||||||
@Schema(description = "微信名称2")
|
|
||||||
private String wechatNo2;
|
|
||||||
|
|
||||||
/** 微信名称3 */
|
|
||||||
@Size(max = 50, message = "微信名称3长度不能超过50个字符")
|
|
||||||
@Schema(description = "微信名称3")
|
|
||||||
private String wechatNo3;
|
|
||||||
|
|
||||||
/** 详细联系地址 */
|
|
||||||
@Size(max = 500, message = "详细联系地址长度不能超过500个字符")
|
|
||||||
@Schema(description = "详细联系地址")
|
|
||||||
private String contactAddress;
|
|
||||||
|
|
||||||
/** 关系详细描述 */
|
|
||||||
@Size(max = 500, message = "关系详细描述长度不能超过500个字符")
|
|
||||||
@Schema(description = "关系详细描述")
|
|
||||||
private String relationDesc;
|
|
||||||
|
|
||||||
/** 生效日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "生效日期")
|
|
||||||
private Date effectiveDate;
|
|
||||||
|
|
||||||
/** 失效日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "失效日期")
|
|
||||||
private Date invalidDate;
|
|
||||||
|
|
||||||
/** 状态 */
|
|
||||||
@Schema(description = "状态:0-无效,1-有效")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 备注 */
|
|
||||||
@Schema(description = "备注")
|
|
||||||
private String remark;
|
|
||||||
}
|
|
||||||
@@ -1,125 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
import jakarta.validation.constraints.Pattern;
|
|
||||||
import jakarta.validation.constraints.Size;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工亲属关系编辑DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工亲属关系编辑")
|
|
||||||
public class CcdiStaffFmyRelationEditDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 主键ID */
|
|
||||||
@NotNull(message = "ID不能为空")
|
|
||||||
@Schema(description = "主键ID")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** 员工身份证号 */
|
|
||||||
@NotBlank(message = "员工身份证号不能为空")
|
|
||||||
@Pattern(regexp = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$", message = "员工身份证号格式不正确")
|
|
||||||
@Schema(description = "员工身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关系类型 */
|
|
||||||
@NotBlank(message = "关系类型不能为空")
|
|
||||||
@Size(max = 50, message = "关系类型长度不能超过50个字符")
|
|
||||||
@Schema(description = "关系类型")
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
/** 关系人姓名 */
|
|
||||||
@NotBlank(message = "关系人姓名不能为空")
|
|
||||||
@Size(max = 100, message = "关系人姓名长度不能超过100个字符")
|
|
||||||
@Schema(description = "关系人姓名")
|
|
||||||
private String relationName;
|
|
||||||
|
|
||||||
/** 性别 */
|
|
||||||
@Pattern(regexp = "^[MFO]$", message = "性别只能是M、F或O")
|
|
||||||
@Schema(description = "性别:M-男,F-女,O-其他")
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
/** 出生日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "出生日期")
|
|
||||||
private Date birthDate;
|
|
||||||
|
|
||||||
/** 关系人证件类型 */
|
|
||||||
@NotBlank(message = "关系人证件类型不能为空")
|
|
||||||
@Size(max = 50, message = "关系人证件类型长度不能超过50个字符")
|
|
||||||
@Schema(description = "关系人证件类型")
|
|
||||||
private String relationCertType;
|
|
||||||
|
|
||||||
/** 关系人证件号码 */
|
|
||||||
@NotBlank(message = "关系人证件号码不能为空")
|
|
||||||
@Size(max = 100, message = "关系人证件号码长度不能超过100个字符")
|
|
||||||
@Schema(description = "关系人证件号码")
|
|
||||||
private String relationCertNo;
|
|
||||||
|
|
||||||
/** 手机号码1 */
|
|
||||||
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码1格式不正确")
|
|
||||||
@Schema(description = "手机号码1")
|
|
||||||
private String mobilePhone1;
|
|
||||||
|
|
||||||
/** 手机号码2 */
|
|
||||||
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码2格式不正确")
|
|
||||||
@Schema(description = "手机号码2")
|
|
||||||
private String mobilePhone2;
|
|
||||||
|
|
||||||
/** 微信名称1 */
|
|
||||||
@Size(max = 50, message = "微信名称1长度不能超过50个字符")
|
|
||||||
@Schema(description = "微信名称1")
|
|
||||||
private String wechatNo1;
|
|
||||||
|
|
||||||
/** 微信名称2 */
|
|
||||||
@Size(max = 50, message = "微信名称2长度不能超过50个字符")
|
|
||||||
@Schema(description = "微信名称2")
|
|
||||||
private String wechatNo2;
|
|
||||||
|
|
||||||
/** 微信名称3 */
|
|
||||||
@Size(max = 50, message = "微信名称3长度不能超过50个字符")
|
|
||||||
@Schema(description = "微信名称3")
|
|
||||||
private String wechatNo3;
|
|
||||||
|
|
||||||
/** 详细联系地址 */
|
|
||||||
@Size(max = 500, message = "详细联系地址长度不能超过500个字符")
|
|
||||||
@Schema(description = "详细联系地址")
|
|
||||||
private String contactAddress;
|
|
||||||
|
|
||||||
/** 关系详细描述 */
|
|
||||||
@Size(max = 500, message = "关系详细描述长度不能超过500个字符")
|
|
||||||
@Schema(description = "关系详细描述")
|
|
||||||
private String relationDesc;
|
|
||||||
|
|
||||||
/** 生效日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "生效日期")
|
|
||||||
private Date effectiveDate;
|
|
||||||
|
|
||||||
/** 失效日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "失效日期")
|
|
||||||
private Date invalidDate;
|
|
||||||
|
|
||||||
/** 状态 */
|
|
||||||
@Schema(description = "状态:0-无效,1-有效")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 备注 */
|
|
||||||
@Schema(description = "备注")
|
|
||||||
private String remark;
|
|
||||||
}
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工亲属关系查询DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工亲属关系查询")
|
|
||||||
public class CcdiStaffFmyRelationQueryDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 员工身份证号 */
|
|
||||||
@Schema(description = "员工身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 员工姓名 */
|
|
||||||
@Schema(description = "员工姓名")
|
|
||||||
private String personName;
|
|
||||||
|
|
||||||
/** 关系类型 */
|
|
||||||
@Schema(description = "关系类型")
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
/** 关系人姓名 */
|
|
||||||
@Schema(description = "关系人姓名")
|
|
||||||
private String relationName;
|
|
||||||
|
|
||||||
/** 状态 */
|
|
||||||
@Schema(description = "状态:0-无效,1-有效")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 数据来源 */
|
|
||||||
@Schema(description = "数据来源")
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
/** 生效日期开始 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "生效日期开始")
|
|
||||||
private Date effectiveDateStart;
|
|
||||||
|
|
||||||
/** 生效日期结束 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "生效日期结束")
|
|
||||||
private Date effectiveDateEnd;
|
|
||||||
}
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import com.ruoyi.info.collection.annotation.EnumValid;
|
|
||||||
import com.ruoyi.info.collection.enums.AdmitStatus;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.Pattern;
|
|
||||||
import jakarta.validation.constraints.Size;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工招聘信息新增DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2025-02-05
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class CcdiStaffRecruitmentAddDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 招聘项目编号 */
|
|
||||||
@NotBlank(message = "招聘项目编号不能为空")
|
|
||||||
@Size(max = 32, message = "招聘项目编号长度不能超过32个字符")
|
|
||||||
private String recruitId;
|
|
||||||
|
|
||||||
/** 招聘项目名称 */
|
|
||||||
@NotBlank(message = "招聘项目名称不能为空")
|
|
||||||
@Size(max = 100, message = "招聘项目名称长度不能超过100个字符")
|
|
||||||
private String recruitName;
|
|
||||||
|
|
||||||
/** 职位名称 */
|
|
||||||
@NotBlank(message = "职位名称不能为空")
|
|
||||||
@Size(max = 100, message = "职位名称长度不能超过100个字符")
|
|
||||||
private String posName;
|
|
||||||
|
|
||||||
/** 职位类别 */
|
|
||||||
@NotBlank(message = "职位类别不能为空")
|
|
||||||
@Size(max = 50, message = "职位类别长度不能超过50个字符")
|
|
||||||
private String posCategory;
|
|
||||||
|
|
||||||
/** 职位描述 */
|
|
||||||
@NotBlank(message = "职位描述不能为空")
|
|
||||||
private String posDesc;
|
|
||||||
|
|
||||||
/** 应聘人员姓名 */
|
|
||||||
@NotBlank(message = "应聘人员姓名不能为空")
|
|
||||||
@Size(max = 20, message = "应聘人员姓名长度不能超过20个字符")
|
|
||||||
private String candName;
|
|
||||||
|
|
||||||
/** 应聘人员学历 */
|
|
||||||
@NotBlank(message = "应聘人员学历不能为空")
|
|
||||||
@Size(max = 20, message = "应聘人员学历长度不能超过20个字符")
|
|
||||||
private String candEdu;
|
|
||||||
|
|
||||||
/** 应聘人员证件号码 */
|
|
||||||
@NotBlank(message = "证件号码不能为空")
|
|
||||||
@Pattern(regexp = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[0-9Xx]$", message = "证件号码格式不正确")
|
|
||||||
private String candId;
|
|
||||||
|
|
||||||
/** 应聘人员毕业院校 */
|
|
||||||
@NotBlank(message = "应聘人员毕业院校不能为空")
|
|
||||||
@Size(max = 50, message = "应聘人员毕业院校长度不能超过50个字符")
|
|
||||||
private String candSchool;
|
|
||||||
|
|
||||||
/** 应聘人员专业 */
|
|
||||||
@NotBlank(message = "应聘人员专业不能为空")
|
|
||||||
@Size(max = 30, message = "应聘人员专业长度不能超过30个字符")
|
|
||||||
private String candMajor;
|
|
||||||
|
|
||||||
/** 应聘人员毕业年月 */
|
|
||||||
@NotBlank(message = "应聘人员毕业年月不能为空")
|
|
||||||
@Pattern(regexp = "^((19|20)\\d{2})(0[1-9]|1[0-2])$", message = "毕业年月格式不正确,应为YYYYMM")
|
|
||||||
private String candGrad;
|
|
||||||
|
|
||||||
/** 录用情况:录用、未录用、放弃 */
|
|
||||||
@NotBlank(message = "录用情况不能为空")
|
|
||||||
@EnumValid(enumClass = AdmitStatus.class, message = "录用情况状态值不合法")
|
|
||||||
private String admitStatus;
|
|
||||||
|
|
||||||
/** 面试官1姓名 */
|
|
||||||
@Size(max = 20, message = "面试官1姓名长度不能超过20个字符")
|
|
||||||
private String interviewerName1;
|
|
||||||
|
|
||||||
/** 面试官1工号 */
|
|
||||||
@Size(max = 10, message = "面试官1工号长度不能超过10个字符")
|
|
||||||
private String interviewerId1;
|
|
||||||
|
|
||||||
/** 面试官2姓名 */
|
|
||||||
@Size(max = 20, message = "面试官2姓名长度不能超过20个字符")
|
|
||||||
private String interviewerName2;
|
|
||||||
|
|
||||||
/** 面试官2工号 */
|
|
||||||
@Size(max = 10, message = "面试官2工号长度不能超过10个字符")
|
|
||||||
private String interviewerId2;
|
|
||||||
}
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import com.ruoyi.info.collection.annotation.EnumValid;
|
|
||||||
import com.ruoyi.info.collection.enums.AdmitStatus;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
import jakarta.validation.constraints.Pattern;
|
|
||||||
import jakarta.validation.constraints.Size;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工招聘信息编辑DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2025-02-05
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class CcdiStaffRecruitmentEditDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 招聘项目编号 */
|
|
||||||
@NotNull(message = "招聘项目编号不能为空")
|
|
||||||
private String recruitId;
|
|
||||||
|
|
||||||
/** 招聘项目名称 */
|
|
||||||
@Size(max = 100, message = "招聘项目名称长度不能超过100个字符")
|
|
||||||
private String recruitName;
|
|
||||||
|
|
||||||
/** 职位名称 */
|
|
||||||
@Size(max = 100, message = "职位名称长度不能超过100个字符")
|
|
||||||
private String posName;
|
|
||||||
|
|
||||||
/** 职位类别 */
|
|
||||||
@Size(max = 50, message = "职位类别长度不能超过50个字符")
|
|
||||||
private String posCategory;
|
|
||||||
|
|
||||||
/** 职位描述 */
|
|
||||||
private String posDesc;
|
|
||||||
|
|
||||||
/** 应聘人员姓名 */
|
|
||||||
@Size(max = 20, message = "应聘人员姓名长度不能超过20个字符")
|
|
||||||
private String candName;
|
|
||||||
|
|
||||||
/** 应聘人员学历 */
|
|
||||||
@Size(max = 20, message = "应聘人员学历长度不能超过20个字符")
|
|
||||||
private String candEdu;
|
|
||||||
|
|
||||||
/** 应聘人员证件号码 */
|
|
||||||
@NotBlank(message = "证件号码不能为空")
|
|
||||||
@Pattern(regexp = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[0-9Xx]$", message = "证件号码格式不正确")
|
|
||||||
private String candId;
|
|
||||||
|
|
||||||
/** 应聘人员毕业院校 */
|
|
||||||
@Size(max = 50, message = "应聘人员毕业院校长度不能超过50个字符")
|
|
||||||
private String candSchool;
|
|
||||||
|
|
||||||
/** 应聘人员专业 */
|
|
||||||
@Size(max = 30, message = "应聘人员专业长度不能超过30个字符")
|
|
||||||
private String candMajor;
|
|
||||||
|
|
||||||
/** 应聘人员毕业年月 */
|
|
||||||
@Pattern(regexp = "^((19|20)\\d{2})(0[1-9]|1[0-2])$", message = "毕业年月格式不正确,应为YYYYMM")
|
|
||||||
private String candGrad;
|
|
||||||
|
|
||||||
/** 录用情况:录用、未录用、放弃 */
|
|
||||||
@EnumValid(enumClass = AdmitStatus.class, message = "录用情况状态值不合法")
|
|
||||||
private String admitStatus;
|
|
||||||
|
|
||||||
/** 面试官1姓名 */
|
|
||||||
@Size(max = 20, message = "面试官1姓名长度不能超过20个字符")
|
|
||||||
private String interviewerName1;
|
|
||||||
|
|
||||||
/** 面试官1工号 */
|
|
||||||
@Size(max = 10, message = "面试官1工号长度不能超过10个字符")
|
|
||||||
private String interviewerId1;
|
|
||||||
|
|
||||||
/** 面试官2姓名 */
|
|
||||||
@Size(max = 20, message = "面试官2姓名长度不能超过20个字符")
|
|
||||||
private String interviewerName2;
|
|
||||||
|
|
||||||
/** 面试官2工号 */
|
|
||||||
@Size(max = 10, message = "面试官2工号长度不能超过10个字符")
|
|
||||||
private String interviewerId2;
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工招聘信息查询DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2025-02-05
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class CcdiStaffRecruitmentQueryDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 招聘项目名称(模糊查询) */
|
|
||||||
private String recruitName;
|
|
||||||
|
|
||||||
/** 职位名称(模糊查询) */
|
|
||||||
private String posName;
|
|
||||||
|
|
||||||
/** 候选人姓名(模糊查询) */
|
|
||||||
private String candName;
|
|
||||||
|
|
||||||
/** 证件号码(精确查询) */
|
|
||||||
private String candId;
|
|
||||||
|
|
||||||
/** 录用状态(精确查询) */
|
|
||||||
private String admitStatus;
|
|
||||||
|
|
||||||
/** 面试官姓名(模糊查询,查询面试官1或2) */
|
|
||||||
private String interviewerName;
|
|
||||||
|
|
||||||
/** 面试官工号(精确查询,查询面试官1或2) */
|
|
||||||
private String interviewerId;
|
|
||||||
|
|
||||||
/** 分页参数 */
|
|
||||||
private Integer pageNum = 1;
|
|
||||||
|
|
||||||
/** 分页参数 */
|
|
||||||
private Integer pageSize = 10;
|
|
||||||
}
|
|
||||||
@@ -1,98 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
import jakarta.validation.constraints.Size;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工调动记录新增DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-10
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工调动记录新增")
|
|
||||||
public class CcdiStaffTransferAddDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 员工ID */
|
|
||||||
@NotNull(message = "员工ID不能为空")
|
|
||||||
@Schema(description = "员工ID")
|
|
||||||
private Long staffId;
|
|
||||||
|
|
||||||
/** 调动类型 */
|
|
||||||
@NotBlank(message = "调动类型不能为空")
|
|
||||||
@Size(max = 50, message = "调动类型长度不能超过50个字符")
|
|
||||||
@Schema(description = "调动类型")
|
|
||||||
private String transferType;
|
|
||||||
|
|
||||||
/** 调动子类型 */
|
|
||||||
@Size(max = 100, message = "调动子类型长度不能超过100个字符")
|
|
||||||
@Schema(description = "调动子类型")
|
|
||||||
private String transferSubType;
|
|
||||||
|
|
||||||
/** 调动前部门ID */
|
|
||||||
@NotNull(message = "调动前部门ID不能为空")
|
|
||||||
@Schema(description = "调动前部门ID")
|
|
||||||
private Long deptIdBefore;
|
|
||||||
|
|
||||||
/** 调动前部门 */
|
|
||||||
@Size(max = 200, message = "调动前部门长度不能超过200个字符")
|
|
||||||
@Schema(description = "调动前部门")
|
|
||||||
private String deptNameBefore;
|
|
||||||
|
|
||||||
/** 调动前职级 */
|
|
||||||
@Size(max = 50, message = "调动前职级长度不能超过50个字符")
|
|
||||||
@Schema(description = "调动前职级")
|
|
||||||
private String gradeBefore;
|
|
||||||
|
|
||||||
/** 调动前岗位 */
|
|
||||||
@Size(max = 100, message = "调动前岗位长度不能超过100个字符")
|
|
||||||
@Schema(description = "调动前岗位")
|
|
||||||
private String positionBefore;
|
|
||||||
|
|
||||||
/** 调动前薪酬等级 */
|
|
||||||
@Size(max = 50, message = "调动前薪酬等级长度不能超过50个字符")
|
|
||||||
@Schema(description = "调动前薪酬等级")
|
|
||||||
private String salaryLevelBefore;
|
|
||||||
|
|
||||||
/** 调动后部门ID */
|
|
||||||
@NotNull(message = "调动后部门ID不能为空")
|
|
||||||
@Schema(description = "调动后部门ID")
|
|
||||||
private Long deptIdAfter;
|
|
||||||
|
|
||||||
/** 调动后部门 */
|
|
||||||
@Size(max = 200, message = "调动后部门长度不能超过200个字符")
|
|
||||||
@Schema(description = "调动后部门")
|
|
||||||
private String deptNameAfter;
|
|
||||||
|
|
||||||
/** 调动后职级 */
|
|
||||||
@Size(max = 50, message = "调动后职级长度不能超过50个字符")
|
|
||||||
@Schema(description = "调动后职级")
|
|
||||||
private String gradeAfter;
|
|
||||||
|
|
||||||
/** 调动后岗位 */
|
|
||||||
@Size(max = 100, message = "调动后岗位长度不能超过100个字符")
|
|
||||||
@Schema(description = "调动后岗位")
|
|
||||||
private String positionAfter;
|
|
||||||
|
|
||||||
/** 调动后薪酬等级 */
|
|
||||||
@Size(max = 50, message = "调动后薪酬等级长度不能超过50个字符")
|
|
||||||
@Schema(description = "调动后薪酬等级")
|
|
||||||
private String salaryLevelAfter;
|
|
||||||
|
|
||||||
/** 调动日期 */
|
|
||||||
@NotNull(message = "调动日期不能为空")
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "调动日期")
|
|
||||||
private Date transferDate;
|
|
||||||
}
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
import jakarta.validation.constraints.Size;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工调动记录修改DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-10
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工调动记录修改")
|
|
||||||
public class CcdiStaffTransferEditDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 主键ID */
|
|
||||||
@NotNull(message = "主键ID不能为空")
|
|
||||||
@Schema(description = "主键ID")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** 员工ID */
|
|
||||||
@NotNull(message = "员工ID不能为空")
|
|
||||||
@Schema(description = "员工ID")
|
|
||||||
private Long staffId;
|
|
||||||
|
|
||||||
/** 调动类型 */
|
|
||||||
@Size(max = 50, message = "调动类型长度不能超过50个字符")
|
|
||||||
@Schema(description = "调动类型")
|
|
||||||
private String transferType;
|
|
||||||
|
|
||||||
/** 调动子类型 */
|
|
||||||
@Size(max = 100, message = "调动子类型长度不能超过100个字符")
|
|
||||||
@Schema(description = "调动子类型")
|
|
||||||
private String transferSubType;
|
|
||||||
|
|
||||||
/** 调动前部门ID */
|
|
||||||
@Schema(description = "调动前部门ID")
|
|
||||||
private Long deptIdBefore;
|
|
||||||
|
|
||||||
/** 调动前部门 */
|
|
||||||
@Size(max = 200, message = "调动前部门长度不能超过200个字符")
|
|
||||||
@Schema(description = "调动前部门")
|
|
||||||
private String deptNameBefore;
|
|
||||||
|
|
||||||
/** 调动前职级 */
|
|
||||||
@Size(max = 50, message = "调动前职级长度不能超过50个字符")
|
|
||||||
@Schema(description = "调动前职级")
|
|
||||||
private String gradeBefore;
|
|
||||||
|
|
||||||
/** 调动前岗位 */
|
|
||||||
@Size(max = 100, message = "调动前岗位长度不能超过100个字符")
|
|
||||||
@Schema(description = "调动前岗位")
|
|
||||||
private String positionBefore;
|
|
||||||
|
|
||||||
/** 调动前薪酬等级 */
|
|
||||||
@Size(max = 50, message = "调动前薪酬等级长度不能超过50个字符")
|
|
||||||
@Schema(description = "调动前薪酬等级")
|
|
||||||
private String salaryLevelBefore;
|
|
||||||
|
|
||||||
/** 调动后部门ID */
|
|
||||||
@Schema(description = "调动后部门ID")
|
|
||||||
private Long deptIdAfter;
|
|
||||||
|
|
||||||
/** 调动后部门 */
|
|
||||||
@Size(max = 200, message = "调动后部门长度不能超过200个字符")
|
|
||||||
@Schema(description = "调动后部门")
|
|
||||||
private String deptNameAfter;
|
|
||||||
|
|
||||||
/** 调动后职级 */
|
|
||||||
@Size(max = 50, message = "调动后职级长度不能超过50个字符")
|
|
||||||
@Schema(description = "调动后职级")
|
|
||||||
private String gradeAfter;
|
|
||||||
|
|
||||||
/** 调动后岗位 */
|
|
||||||
@Size(max = 100, message = "调动后岗位长度不能超过100个字符")
|
|
||||||
@Schema(description = "调动后岗位")
|
|
||||||
private String positionAfter;
|
|
||||||
|
|
||||||
/** 调动后薪酬等级 */
|
|
||||||
@Size(max = 50, message = "调动后薪酬等级长度不能超过50个字符")
|
|
||||||
@Schema(description = "调动后薪酬等级")
|
|
||||||
private String salaryLevelAfter;
|
|
||||||
|
|
||||||
/** 调动日期 */
|
|
||||||
@NotNull(message = "调动日期不能为空")
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "调动日期")
|
|
||||||
private Date transferDate;
|
|
||||||
}
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工调动记录查询DTO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-10
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工调动记录查询")
|
|
||||||
public class CcdiStaffTransferQueryDTO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 员工ID(模糊查询) */
|
|
||||||
@Schema(description = "员工ID")
|
|
||||||
private Long staffId;
|
|
||||||
|
|
||||||
/** 员工姓名(模糊查询) */
|
|
||||||
@Schema(description = "员工姓名")
|
|
||||||
private String staffName;
|
|
||||||
|
|
||||||
/** 调动类型(精确查询) */
|
|
||||||
@Schema(description = "调动类型")
|
|
||||||
private String transferType;
|
|
||||||
|
|
||||||
/** 调动子类型 */
|
|
||||||
@Schema(description = "调动子类型")
|
|
||||||
private String transferSubType;
|
|
||||||
|
|
||||||
/** 调动前部门ID */
|
|
||||||
@Schema(description = "调动前部门ID")
|
|
||||||
private Long deptIdBefore;
|
|
||||||
|
|
||||||
/** 调动后部门ID */
|
|
||||||
@Schema(description = "调动后部门ID")
|
|
||||||
private Long deptIdAfter;
|
|
||||||
|
|
||||||
/** 调动日期开始 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "调动日期开始")
|
|
||||||
private Date transferDateStart;
|
|
||||||
|
|
||||||
/** 调动日期结束 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "调动日期结束")
|
|
||||||
private Date transferDateEnd;
|
|
||||||
}
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.dto;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工调动记录唯一键DTO
|
|
||||||
* 用于唯一性校验:员工ID + 调动前部门ID + 调动后部门ID + 调动日期
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-11
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工调动记录唯一键")
|
|
||||||
public class TransferUniqueKey implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工ID
|
|
||||||
*/
|
|
||||||
@Schema(description = "员工ID")
|
|
||||||
private Long staffId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 调动前部门ID
|
|
||||||
*/
|
|
||||||
@Schema(description = "调动前部门ID")
|
|
||||||
private Long deptIdBefore;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 调动后部门ID
|
|
||||||
*/
|
|
||||||
@Schema(description = "调动后部门ID")
|
|
||||||
private Long deptIdAfter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 调动日期
|
|
||||||
*/
|
|
||||||
@Schema(description = "调动日期")
|
|
||||||
private Date transferDate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 生成唯一标识字符串
|
|
||||||
* 格式: staffId_deptIdBefore_deptIdAfter_transferDate的时间戳
|
|
||||||
*
|
|
||||||
* @return 唯一标识字符串
|
|
||||||
*/
|
|
||||||
public String toUniqueString() {
|
|
||||||
return staffId + "_" +
|
|
||||||
deptIdBefore + "_" +
|
|
||||||
deptIdAfter + "_" +
|
|
||||||
(transferDate != null ? transferDate.getTime() : 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 从AddDTO构建唯一键
|
|
||||||
*
|
|
||||||
* @param addDTO 新增DTO
|
|
||||||
* @return 唯一键
|
|
||||||
*/
|
|
||||||
public static TransferUniqueKey from(CcdiStaffTransferAddDTO addDTO) {
|
|
||||||
TransferUniqueKey key = new TransferUniqueKey();
|
|
||||||
key.setStaffId(addDTO.getStaffId());
|
|
||||||
key.setDeptIdBefore(addDTO.getDeptIdBefore());
|
|
||||||
key.setDeptIdAfter(addDTO.getDeptIdAfter());
|
|
||||||
key.setTransferDate(addDTO.getTransferDate());
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 从EditDTO构建唯一键
|
|
||||||
*
|
|
||||||
* @param editDTO 编辑DTO
|
|
||||||
* @return 唯一键
|
|
||||||
*/
|
|
||||||
public static TransferUniqueKey from(CcdiStaffTransferEditDTO editDTO) {
|
|
||||||
TransferUniqueKey key = new TransferUniqueKey();
|
|
||||||
key.setStaffId(editDTO.getStaffId());
|
|
||||||
key.setDeptIdBefore(editDTO.getDeptIdBefore());
|
|
||||||
key.setDeptIdAfter(editDTO.getDeptIdAfter());
|
|
||||||
key.setTransferDate(editDTO.getTransferDate());
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.excel;
|
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
|
||||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
|
||||||
import com.ruoyi.common.annotation.Required;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户实体关联信息Excel导入导出对象
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-12
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "信贷客户实体关联信息Excel导入导出对象")
|
|
||||||
public class CcdiCustEnterpriseRelationExcel implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 身份证号 */
|
|
||||||
@ExcelProperty(value = "身份证号", index = 0)
|
|
||||||
@ColumnWidth(20)
|
|
||||||
@Required
|
|
||||||
@Schema(description = "身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 统一社会信用代码 */
|
|
||||||
@ExcelProperty(value = "统一社会信用代码", index = 1)
|
|
||||||
@ColumnWidth(25)
|
|
||||||
@Required
|
|
||||||
@Schema(description = "统一社会信用代码")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 企业名称 */
|
|
||||||
@ExcelProperty(value = "企业名称", index = 2)
|
|
||||||
@ColumnWidth(30)
|
|
||||||
@Required
|
|
||||||
@Schema(description = "企业名称")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
/** 关联人在企业的职务 */
|
|
||||||
@ExcelProperty(value = "关联人在企业的职务", index = 3)
|
|
||||||
@ColumnWidth(25)
|
|
||||||
@Schema(description = "关联人在企业的职务")
|
|
||||||
private String relationPersonPost;
|
|
||||||
|
|
||||||
/** 补充说明 */
|
|
||||||
@ExcelProperty(value = "补充说明", index = 4)
|
|
||||||
@ColumnWidth(40)
|
|
||||||
@Schema(description = "补充说明")
|
|
||||||
private String remark;
|
|
||||||
}
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.excel;
|
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
|
||||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
|
||||||
import com.ruoyi.common.annotation.DictDropdown;
|
|
||||||
import com.ruoyi.common.annotation.Required;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户家庭关系Excel导入导出对象
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-11
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class CcdiCustFmyRelationExcel implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 信贷客户身份证号 */
|
|
||||||
@ExcelProperty(value = "信贷客户身份证号*", index = 0)
|
|
||||||
@ColumnWidth(20)
|
|
||||||
@Required
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关系类型 */
|
|
||||||
@ExcelProperty(value = "关系类型*", index = 1)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@DictDropdown(dictType = "ccdi_relation_type")
|
|
||||||
@Required
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
/** 关系人姓名 */
|
|
||||||
@ExcelProperty(value = "关系人姓名*", index = 2)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@Required
|
|
||||||
private String relationName;
|
|
||||||
|
|
||||||
/** 性别 */
|
|
||||||
@ExcelProperty(value = "性别", index = 3)
|
|
||||||
@ColumnWidth(10)
|
|
||||||
@DictDropdown(dictType = "ccdi_indiv_gender")
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
/** 出生日期 */
|
|
||||||
@ExcelProperty(value = "出生日期", index = 4)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private Date birthDate;
|
|
||||||
|
|
||||||
/** 关系人证件类型 */
|
|
||||||
@ExcelProperty(value = "关系人证件类型*", index = 5)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@DictDropdown(dictType = "ccdi_certificate_type")
|
|
||||||
@Required
|
|
||||||
private String relationCertType;
|
|
||||||
|
|
||||||
/** 关系人证件号码 */
|
|
||||||
@ExcelProperty(value = "关系人证件号码*", index = 6)
|
|
||||||
@ColumnWidth(20)
|
|
||||||
@Required
|
|
||||||
private String relationCertNo;
|
|
||||||
|
|
||||||
/** 手机号码1 */
|
|
||||||
@ExcelProperty(value = "手机号码1", index = 7)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String mobilePhone1;
|
|
||||||
|
|
||||||
/** 手机号码2 */
|
|
||||||
@ExcelProperty(value = "手机号码2", index = 8)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String mobilePhone2;
|
|
||||||
|
|
||||||
/** 微信名称1 */
|
|
||||||
@ExcelProperty(value = "微信名称1", index = 9)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String wechatNo1;
|
|
||||||
|
|
||||||
/** 微信名称2 */
|
|
||||||
@ExcelProperty(value = "微信名称2", index = 10)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String wechatNo2;
|
|
||||||
|
|
||||||
/** 微信名称3 */
|
|
||||||
@ExcelProperty(value = "微信名称3", index = 11)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String wechatNo3;
|
|
||||||
|
|
||||||
/** 详细联系地址 */
|
|
||||||
@ExcelProperty(value = "详细联系地址", index = 12)
|
|
||||||
@ColumnWidth(30)
|
|
||||||
private String contactAddress;
|
|
||||||
|
|
||||||
/** 关系详细描述 */
|
|
||||||
@ExcelProperty(value = "关系详细描述", index = 13)
|
|
||||||
@ColumnWidth(30)
|
|
||||||
private String relationDesc;
|
|
||||||
|
|
||||||
/** 生效日期 */
|
|
||||||
@ExcelProperty(value = "生效日期", index = 14)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private Date effectiveDate;
|
|
||||||
|
|
||||||
/** 失效日期 */
|
|
||||||
@ExcelProperty(value = "失效日期", index = 15)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private Date invalidDate;
|
|
||||||
|
|
||||||
/** 备注 */
|
|
||||||
@ExcelProperty(value = "备注", index = 16)
|
|
||||||
@ColumnWidth(30)
|
|
||||||
private String remark;
|
|
||||||
}
|
|
||||||
@@ -1,101 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.excel;
|
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
|
||||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
|
||||||
import com.ruoyi.common.annotation.DictDropdown;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 个人中介Excel导入导出对象
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-04
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class CcdiIntermediaryPersonExcel implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 姓名 */
|
|
||||||
@ExcelProperty(value = "姓名*", index = 0)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
/** 人员类型 */
|
|
||||||
@ExcelProperty(value = "人员类型", index = 1)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@DictDropdown(dictType = "ccdi_person_type")
|
|
||||||
private String personType;
|
|
||||||
|
|
||||||
/** 人员子类型 */
|
|
||||||
@ExcelProperty(value = "人员子类型", index = 2)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String personSubType;
|
|
||||||
|
|
||||||
/** 性别 */
|
|
||||||
@ExcelProperty(value = "性别", index = 3)
|
|
||||||
@ColumnWidth(10)
|
|
||||||
@DictDropdown(dictType = "ccdi_indiv_gender")
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
/** 证件类型 */
|
|
||||||
@ExcelProperty(value = "证件类型", index = 4)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@DictDropdown(dictType = "ccdi_certificate_type")
|
|
||||||
private String idType;
|
|
||||||
|
|
||||||
/** 证件号码 */
|
|
||||||
@ExcelProperty(value = "证件号码*", index = 5)
|
|
||||||
@ColumnWidth(20)
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 手机号码 */
|
|
||||||
@ExcelProperty(value = "手机号码", index = 6)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String mobile;
|
|
||||||
|
|
||||||
/** 微信号 */
|
|
||||||
@ExcelProperty(value = "微信号", index = 7)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String wechatNo;
|
|
||||||
|
|
||||||
/** 联系地址 */
|
|
||||||
@ExcelProperty(value = "联系地址", index = 8)
|
|
||||||
@ColumnWidth(30)
|
|
||||||
private String contactAddress;
|
|
||||||
|
|
||||||
/** 所在公司 */
|
|
||||||
@ExcelProperty(value = "所在公司", index = 9)
|
|
||||||
@ColumnWidth(20)
|
|
||||||
private String company;
|
|
||||||
|
|
||||||
/** 企业统一信用码 */
|
|
||||||
@ExcelProperty(value = "企业统一信用码", index = 10)
|
|
||||||
@ColumnWidth(20)
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 职位 */
|
|
||||||
@ExcelProperty(value = "职位", index = 11)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String position;
|
|
||||||
|
|
||||||
/** 关联人员ID */
|
|
||||||
@ExcelProperty(value = "关联人员ID", index = 12)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String relatedNumId;
|
|
||||||
|
|
||||||
/** 关系类型 */
|
|
||||||
@ExcelProperty(value = "关系类型", index = 13)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@DictDropdown(dictType = "ccdi_relation_type")
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
/** 备注 */
|
|
||||||
@ExcelProperty(value = "备注", index = 14)
|
|
||||||
@ColumnWidth(30)
|
|
||||||
private String remark;
|
|
||||||
}
|
|
||||||
@@ -1,194 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.excel;
|
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
|
||||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
|
||||||
import com.ruoyi.common.annotation.Required;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购交易信息Excel导入导出对象
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-06
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class CcdiPurchaseTransactionExcel implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 采购事项ID */
|
|
||||||
@ExcelProperty(value = "采购事项ID", index = 0)
|
|
||||||
@ColumnWidth(20)
|
|
||||||
@Required
|
|
||||||
private String purchaseId;
|
|
||||||
|
|
||||||
/** 采购类别 */
|
|
||||||
@ExcelProperty(value = "采购类别", index = 1)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@Required
|
|
||||||
private String purchaseCategory;
|
|
||||||
|
|
||||||
/** 项目名称 */
|
|
||||||
@ExcelProperty(value = "项目名称", index = 2)
|
|
||||||
@ColumnWidth(25)
|
|
||||||
private String projectName;
|
|
||||||
|
|
||||||
/** 标的物名称 */
|
|
||||||
@ExcelProperty(value = "标的物名称", index = 3)
|
|
||||||
@ColumnWidth(25)
|
|
||||||
@Required
|
|
||||||
private String subjectName;
|
|
||||||
|
|
||||||
/** 标的物描述 */
|
|
||||||
@ExcelProperty(value = "标的物描述", index = 4)
|
|
||||||
@ColumnWidth(30)
|
|
||||||
private String subjectDesc;
|
|
||||||
|
|
||||||
/** 采购数量 */
|
|
||||||
@ExcelProperty(value = "采购数量", index = 5)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@Required
|
|
||||||
private BigDecimal purchaseQty;
|
|
||||||
|
|
||||||
/** 预算金额 */
|
|
||||||
@ExcelProperty(value = "预算金额", index = 6)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
@Required
|
|
||||||
private BigDecimal budgetAmount;
|
|
||||||
|
|
||||||
/** 中标金额 */
|
|
||||||
@ExcelProperty(value = "中标金额", index = 7)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
private BigDecimal bidAmount;
|
|
||||||
|
|
||||||
/** 实际采购金额 */
|
|
||||||
@ExcelProperty(value = "实际采购金额", index = 8)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
private BigDecimal actualAmount;
|
|
||||||
|
|
||||||
/** 合同金额 */
|
|
||||||
@ExcelProperty(value = "合同金额", index = 9)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
private BigDecimal contractAmount;
|
|
||||||
|
|
||||||
/** 结算金额 */
|
|
||||||
@ExcelProperty(value = "结算金额", index = 10)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
private BigDecimal settlementAmount;
|
|
||||||
|
|
||||||
/** 采购方式 */
|
|
||||||
@ExcelProperty(value = "采购方式", index = 11)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@Required
|
|
||||||
private String purchaseMethod;
|
|
||||||
|
|
||||||
/** 中标供应商名称 */
|
|
||||||
@ExcelProperty(value = "中标供应商名称", index = 12)
|
|
||||||
@ColumnWidth(25)
|
|
||||||
private String supplierName;
|
|
||||||
|
|
||||||
/** 供应商联系人 */
|
|
||||||
@ExcelProperty(value = "供应商联系人", index = 13)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String contactPerson;
|
|
||||||
|
|
||||||
/** 供应商联系电话 */
|
|
||||||
@ExcelProperty(value = "供应商联系电话", index = 14)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
private String contactPhone;
|
|
||||||
|
|
||||||
/** 供应商统一信用代码 */
|
|
||||||
@ExcelProperty(value = "供应商统一信用代码", index = 15)
|
|
||||||
@ColumnWidth(25)
|
|
||||||
private String supplierUscc;
|
|
||||||
|
|
||||||
/** 供应商银行账户 */
|
|
||||||
@ExcelProperty(value = "供应商银行账户", index = 16)
|
|
||||||
@ColumnWidth(20)
|
|
||||||
private String supplierBankAccount;
|
|
||||||
|
|
||||||
/** 采购申请日期(或立项日期) */
|
|
||||||
@ExcelProperty(value = "采购申请日期", index = 17)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
@Required
|
|
||||||
private Date applyDate;
|
|
||||||
|
|
||||||
/** 采购计划批准日期 */
|
|
||||||
@ExcelProperty(value = "采购计划批准日期", index = 18)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
private Date planApproveDate;
|
|
||||||
|
|
||||||
/** 采购公告发布日期 */
|
|
||||||
@ExcelProperty(value = "采购公告发布日期", index = 19)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
private Date announceDate;
|
|
||||||
|
|
||||||
/** 开标日期 */
|
|
||||||
@ExcelProperty(value = "开标日期", index = 20)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
private Date bidOpenDate;
|
|
||||||
|
|
||||||
/** 合同签订日期 */
|
|
||||||
@ExcelProperty(value = "合同签订日期", index = 21)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
private Date contractSignDate;
|
|
||||||
|
|
||||||
/** 预计交货日期 */
|
|
||||||
@ExcelProperty(value = "预计交货日期", index = 22)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
private Date expectedDeliveryDate;
|
|
||||||
|
|
||||||
/** 实际交货日期 */
|
|
||||||
@ExcelProperty(value = "实际交货日期", index = 23)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
private Date actualDeliveryDate;
|
|
||||||
|
|
||||||
/** 验收日期 */
|
|
||||||
@ExcelProperty(value = "验收日期", index = 24)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
private Date acceptanceDate;
|
|
||||||
|
|
||||||
/** 结算日期 */
|
|
||||||
@ExcelProperty(value = "结算日期", index = 25)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
private Date settlementDate;
|
|
||||||
|
|
||||||
/** 申请人工号 */
|
|
||||||
@ExcelProperty(value = "申请人工号", index = 26)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@Required
|
|
||||||
private String applicantId;
|
|
||||||
|
|
||||||
/** 申请人姓名 */
|
|
||||||
@ExcelProperty(value = "申请人姓名", index = 27)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@Required
|
|
||||||
private String applicantName;
|
|
||||||
|
|
||||||
/** 申请部门 */
|
|
||||||
@ExcelProperty(value = "申请部门", index = 28)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
@Required
|
|
||||||
private String applyDepartment;
|
|
||||||
|
|
||||||
/** 采购负责人工号 */
|
|
||||||
@ExcelProperty(value = "采购负责人工号", index = 29)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String purchaseLeaderId;
|
|
||||||
|
|
||||||
/** 采购负责人姓名 */
|
|
||||||
@ExcelProperty(value = "采购负责人姓名", index = 30)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String purchaseLeaderName;
|
|
||||||
|
|
||||||
/** 采购部门 */
|
|
||||||
@ExcelProperty(value = "采购部门", index = 31)
|
|
||||||
@ColumnWidth(18)
|
|
||||||
private String purchaseDepartment;
|
|
||||||
}
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.excel;
|
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
|
||||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
|
||||||
import com.ruoyi.common.annotation.Required;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工实体关系信息Excel导入导出对象
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工实体关系信息Excel导入导出对象")
|
|
||||||
public class CcdiStaffEnterpriseRelationExcel implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 身份证号 */
|
|
||||||
@ExcelProperty(value = "身份证号", index = 0)
|
|
||||||
@ColumnWidth(20)
|
|
||||||
@Required
|
|
||||||
@Schema(description = "身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 统一社会信用代码 */
|
|
||||||
@ExcelProperty(value = "统一社会信用代码", index = 1)
|
|
||||||
@ColumnWidth(25)
|
|
||||||
@Required
|
|
||||||
@Schema(description = "统一社会信用代码")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 企业名称 */
|
|
||||||
@ExcelProperty(value = "企业名称", index = 2)
|
|
||||||
@ColumnWidth(30)
|
|
||||||
@Required
|
|
||||||
@Schema(description = "企业名称")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
/** 关联人在企业的职务 */
|
|
||||||
@ExcelProperty(value = "关联人在企业的职务", index = 3)
|
|
||||||
@ColumnWidth(25)
|
|
||||||
@Schema(description = "关联人在企业的职务")
|
|
||||||
private String relationPersonPost;
|
|
||||||
|
|
||||||
/** 补充说明 */
|
|
||||||
@ExcelProperty(value = "补充说明", index = 4)
|
|
||||||
@ColumnWidth(40)
|
|
||||||
@Schema(description = "补充说明")
|
|
||||||
private String remark;
|
|
||||||
}
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.excel;
|
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
|
||||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
|
||||||
import com.ruoyi.common.annotation.DictDropdown;
|
|
||||||
import com.ruoyi.common.annotation.Required;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工亲属关系Excel导入导出对象
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class CcdiStaffFmyRelationExcel implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 员工身份证号 */
|
|
||||||
@ExcelProperty(value = "员工身份证号*", index = 0)
|
|
||||||
@ColumnWidth(20)
|
|
||||||
@Required
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关系类型 */
|
|
||||||
@ExcelProperty(value = "关系类型*", index = 1)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@DictDropdown(dictType = "ccdi_relation_type")
|
|
||||||
@Required
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
/** 关系人姓名 */
|
|
||||||
@ExcelProperty(value = "关系人姓名*", index = 2)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@Required
|
|
||||||
private String relationName;
|
|
||||||
|
|
||||||
/** 性别 */
|
|
||||||
@ExcelProperty(value = "性别", index = 3)
|
|
||||||
@ColumnWidth(10)
|
|
||||||
@DictDropdown(dictType = "ccdi_indiv_gender")
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
/** 出生日期 */
|
|
||||||
@ExcelProperty(value = "出生日期", index = 4)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private Date birthDate;
|
|
||||||
|
|
||||||
/** 关系人证件类型 */
|
|
||||||
@ExcelProperty(value = "关系人证件类型*", index = 5)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@DictDropdown(dictType = "ccdi_certificate_type")
|
|
||||||
@Required
|
|
||||||
private String relationCertType;
|
|
||||||
|
|
||||||
/** 关系人证件号码 */
|
|
||||||
@ExcelProperty(value = "关系人证件号码*", index = 6)
|
|
||||||
@ColumnWidth(20)
|
|
||||||
@Required
|
|
||||||
private String relationCertNo;
|
|
||||||
|
|
||||||
/** 手机号码1 */
|
|
||||||
@ExcelProperty(value = "手机号码1", index = 7)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String mobilePhone1;
|
|
||||||
|
|
||||||
/** 手机号码2 */
|
|
||||||
@ExcelProperty(value = "手机号码2", index = 8)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String mobilePhone2;
|
|
||||||
|
|
||||||
/** 微信名称1 */
|
|
||||||
@ExcelProperty(value = "微信名称1", index = 9)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String wechatNo1;
|
|
||||||
|
|
||||||
/** 微信名称2 */
|
|
||||||
@ExcelProperty(value = "微信名称2", index = 10)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String wechatNo2;
|
|
||||||
|
|
||||||
/** 微信名称3 */
|
|
||||||
@ExcelProperty(value = "微信名称3", index = 11)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String wechatNo3;
|
|
||||||
|
|
||||||
/** 详细联系地址 */
|
|
||||||
@ExcelProperty(value = "详细联系地址", index = 12)
|
|
||||||
@ColumnWidth(30)
|
|
||||||
private String contactAddress;
|
|
||||||
|
|
||||||
/** 关系详细描述 */
|
|
||||||
@ExcelProperty(value = "关系详细描述", index = 13)
|
|
||||||
@ColumnWidth(30)
|
|
||||||
private String relationDesc;
|
|
||||||
|
|
||||||
/** 生效日期 */
|
|
||||||
@ExcelProperty(value = "生效日期", index = 14)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private Date effectiveDate;
|
|
||||||
|
|
||||||
/** 失效日期 */
|
|
||||||
@ExcelProperty(value = "失效日期", index = 15)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private Date invalidDate;
|
|
||||||
|
|
||||||
/** 备注 */
|
|
||||||
@ExcelProperty(value = "备注", index = 16)
|
|
||||||
@ColumnWidth(30)
|
|
||||||
private String remark;
|
|
||||||
}
|
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.excel;
|
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
|
||||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
|
||||||
import com.ruoyi.common.annotation.DictDropdown;
|
|
||||||
import com.ruoyi.common.annotation.Required;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工招聘信息Excel导入导出对象
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2025-02-05
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class CcdiStaffRecruitmentExcel implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 招聘项目编号 */
|
|
||||||
@ExcelProperty(value = "招聘项目编号", index = 0)
|
|
||||||
@ColumnWidth(20)
|
|
||||||
@Required
|
|
||||||
private String recruitId;
|
|
||||||
|
|
||||||
/** 招聘项目名称 */
|
|
||||||
@ExcelProperty(value = "招聘项目名称", index = 1)
|
|
||||||
@ColumnWidth(20)
|
|
||||||
@Required
|
|
||||||
private String recruitName;
|
|
||||||
|
|
||||||
/** 职位名称 */
|
|
||||||
@ExcelProperty(value = "职位名称", index = 2)
|
|
||||||
@ColumnWidth(20)
|
|
||||||
@Required
|
|
||||||
private String posName;
|
|
||||||
|
|
||||||
/** 职位类别 */
|
|
||||||
@ExcelProperty(value = "职位类别", index = 3)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@Required
|
|
||||||
private String posCategory;
|
|
||||||
|
|
||||||
/** 职位描述 */
|
|
||||||
@ExcelProperty(value = "职位描述", index = 4)
|
|
||||||
@ColumnWidth(30)
|
|
||||||
@Required
|
|
||||||
private String posDesc;
|
|
||||||
|
|
||||||
/** 应聘人员姓名 */
|
|
||||||
@ExcelProperty(value = "应聘人员姓名", index = 5)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@Required
|
|
||||||
private String candName;
|
|
||||||
|
|
||||||
/** 应聘人员学历 */
|
|
||||||
@ExcelProperty(value = "应聘人员学历", index = 6)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@Required
|
|
||||||
private String candEdu;
|
|
||||||
|
|
||||||
/** 应聘人员证件号码 */
|
|
||||||
@ExcelProperty(value = "应聘人员证件号码", index = 7)
|
|
||||||
@ColumnWidth(20)
|
|
||||||
@Required
|
|
||||||
private String candId;
|
|
||||||
|
|
||||||
/** 应聘人员毕业院校 */
|
|
||||||
@ExcelProperty(value = "应聘人员毕业院校", index = 8)
|
|
||||||
@ColumnWidth(20)
|
|
||||||
@Required
|
|
||||||
private String candSchool;
|
|
||||||
|
|
||||||
/** 应聘人员专业 */
|
|
||||||
@ExcelProperty(value = "应聘人员专业", index = 9)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@Required
|
|
||||||
private String candMajor;
|
|
||||||
|
|
||||||
/** 应聘人员毕业年月 */
|
|
||||||
@ExcelProperty(value = "应聘人员毕业年月", index = 10)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@Required
|
|
||||||
private String candGrad;
|
|
||||||
|
|
||||||
/** 录用情况 */
|
|
||||||
@ExcelProperty(value = "录用情况", index = 11)
|
|
||||||
@ColumnWidth(10)
|
|
||||||
@DictDropdown(dictType = "ccdi_admit_status")
|
|
||||||
@Required
|
|
||||||
private String admitStatus;
|
|
||||||
|
|
||||||
/** 面试官1姓名 */
|
|
||||||
@ExcelProperty(value = "面试官1姓名", index = 12)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String interviewerName1;
|
|
||||||
|
|
||||||
/** 面试官1工号 */
|
|
||||||
@ExcelProperty(value = "面试官1工号", index = 13)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String interviewerId1;
|
|
||||||
|
|
||||||
/** 面试官2姓名 */
|
|
||||||
@ExcelProperty(value = "面试官2姓名", index = 14)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String interviewerName2;
|
|
||||||
|
|
||||||
/** 面试官2工号 */
|
|
||||||
@ExcelProperty(value = "面试官2工号", index = 15)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String interviewerId2;
|
|
||||||
}
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.excel;
|
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
|
||||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
|
||||||
import com.ruoyi.common.annotation.DictDropdown;
|
|
||||||
import com.ruoyi.common.annotation.Required;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工调动记录Excel导入导出对象
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-10
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class CcdiStaffTransferExcel implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 员工ID */
|
|
||||||
@ExcelProperty(value = "员工ID*", index = 0)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@Required
|
|
||||||
private Long staffId;
|
|
||||||
|
|
||||||
/** 调动类型 */
|
|
||||||
@ExcelProperty(value = "调动类型*", index = 1)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@DictDropdown(dictType = "ccdi_transfer_type")
|
|
||||||
@Required
|
|
||||||
private String transferType;
|
|
||||||
|
|
||||||
/** 调动子类型 */
|
|
||||||
@ExcelProperty(value = "调动子类型", index = 2)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String transferSubType;
|
|
||||||
|
|
||||||
/** 调动前部门ID */
|
|
||||||
@ExcelProperty(value = "调动前部门ID*", index = 3)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@Required
|
|
||||||
private Long deptIdBefore;
|
|
||||||
|
|
||||||
/** 调动前职级 */
|
|
||||||
@ExcelProperty(value = "调动前职级", index = 4)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String gradeBefore;
|
|
||||||
|
|
||||||
/** 调动前岗位 */
|
|
||||||
@ExcelProperty(value = "调动前岗位", index = 5)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String positionBefore;
|
|
||||||
|
|
||||||
/** 调动前薪酬等级 */
|
|
||||||
@ExcelProperty(value = "调动前薪酬等级", index = 6)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String salaryLevelBefore;
|
|
||||||
|
|
||||||
/** 调动后部门ID */
|
|
||||||
@ExcelProperty(value = "调动后部门ID*", index = 7)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@Required
|
|
||||||
private Long deptIdAfter;
|
|
||||||
|
|
||||||
/** 调动后职级 */
|
|
||||||
@ExcelProperty(value = "调动后职级", index = 8)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String gradeAfter;
|
|
||||||
|
|
||||||
/** 调动后岗位 */
|
|
||||||
@ExcelProperty(value = "调动后岗位", index = 9)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String positionAfter;
|
|
||||||
|
|
||||||
/** 调动后薪酬等级 */
|
|
||||||
@ExcelProperty(value = "调动后薪酬等级", index = 10)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
private String salaryLevelAfter;
|
|
||||||
|
|
||||||
/** 调动日期 */
|
|
||||||
@ExcelProperty(value = "调动日期*", index = 11)
|
|
||||||
@ColumnWidth(15)
|
|
||||||
@Required
|
|
||||||
private Date transferDate;
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工选项VO(用于下拉选择框)
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-10
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class CcdiBaseStaffOptionVO {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工ID
|
|
||||||
*/
|
|
||||||
private Long staffId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工姓名
|
|
||||||
*/
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 部门ID
|
|
||||||
*/
|
|
||||||
private Long deptId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 部门名称
|
|
||||||
*/
|
|
||||||
private String deptName;
|
|
||||||
}
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户实体关联信息VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-12
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "信贷客户实体关联信息")
|
|
||||||
public class CcdiCustEnterpriseRelationVO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 主键ID */
|
|
||||||
@Schema(description = "主键ID")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** 身份证号 */
|
|
||||||
@Schema(description = "身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关联人在企业的职务 */
|
|
||||||
@Schema(description = "关联人在企业的职务")
|
|
||||||
private String relationPersonPost;
|
|
||||||
|
|
||||||
/** 统一社会信用代码 */
|
|
||||||
@Schema(description = "统一社会信用代码")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 企业名称 */
|
|
||||||
@Schema(description = "企业名称")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
/** 状态(0-无效 1-有效) */
|
|
||||||
@Schema(description = "状态(0-无效 1-有效)")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 补充说明 */
|
|
||||||
@Schema(description = "补充说明")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
/** 数据来源 */
|
|
||||||
@Schema(description = "数据来源")
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
/** 是否为员工(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为员工(0-否 1-是)")
|
|
||||||
private Integer isEmployee;
|
|
||||||
|
|
||||||
/** 是否为员工家属(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为员工家属(0-否 1-是)")
|
|
||||||
private Integer isEmpFamily;
|
|
||||||
|
|
||||||
/** 是否为客户(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为客户(0-否 1-是)")
|
|
||||||
private Integer isCustomer;
|
|
||||||
|
|
||||||
/** 是否为客户家属(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为客户家属(0-否 1-是)")
|
|
||||||
private Integer isCustFamily;
|
|
||||||
|
|
||||||
/** 创建时间 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
|
||||||
@Schema(description = "创建时间")
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/** 更新时间 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
|
||||||
@Schema(description = "更新时间")
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
/** 创建人 */
|
|
||||||
@Schema(description = "创建人")
|
|
||||||
private String createdBy;
|
|
||||||
|
|
||||||
/** 更新人 */
|
|
||||||
@Schema(description = "更新人")
|
|
||||||
private String updatedBy;
|
|
||||||
}
|
|
||||||
@@ -1,148 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户家庭关系VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-11
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "信贷客户家庭关系")
|
|
||||||
public class CcdiCustFmyRelationVO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 主键ID */
|
|
||||||
@Schema(description = "主键ID")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** 信贷客户身份证号 */
|
|
||||||
@Schema(description = "信贷客户身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关系类型 */
|
|
||||||
@Schema(description = "关系类型")
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
/** 关系类型名称 */
|
|
||||||
@Schema(description = "关系类型名称")
|
|
||||||
private String relationTypeName;
|
|
||||||
|
|
||||||
/** 关系人姓名 */
|
|
||||||
@Schema(description = "关系人姓名")
|
|
||||||
private String relationName;
|
|
||||||
|
|
||||||
/** 性别 */
|
|
||||||
@Schema(description = "性别:M-男,F-女,O-其他")
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
/** 性别名称 */
|
|
||||||
@Schema(description = "性别名称")
|
|
||||||
private String genderName;
|
|
||||||
|
|
||||||
/** 出生日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "出生日期")
|
|
||||||
private Date birthDate;
|
|
||||||
|
|
||||||
/** 关系人证件类型 */
|
|
||||||
@Schema(description = "关系人证件类型")
|
|
||||||
private String relationCertType;
|
|
||||||
|
|
||||||
/** 关系人证件类型名称 */
|
|
||||||
@Schema(description = "关系人证件类型名称")
|
|
||||||
private String relationCertTypeName;
|
|
||||||
|
|
||||||
/** 关系人证件号码 */
|
|
||||||
@Schema(description = "关系人证件号码")
|
|
||||||
private String relationCertNo;
|
|
||||||
|
|
||||||
/** 手机号码1 */
|
|
||||||
@Schema(description = "手机号码1")
|
|
||||||
private String mobilePhone1;
|
|
||||||
|
|
||||||
/** 手机号码2 */
|
|
||||||
@Schema(description = "手机号码2")
|
|
||||||
private String mobilePhone2;
|
|
||||||
|
|
||||||
/** 微信名称1 */
|
|
||||||
@Schema(description = "微信名称1")
|
|
||||||
private String wechatNo1;
|
|
||||||
|
|
||||||
/** 微信名称2 */
|
|
||||||
@Schema(description = "微信名称2")
|
|
||||||
private String wechatNo2;
|
|
||||||
|
|
||||||
/** 微信名称3 */
|
|
||||||
@Schema(description = "微信名称3")
|
|
||||||
private String wechatNo3;
|
|
||||||
|
|
||||||
/** 详细联系地址 */
|
|
||||||
@Schema(description = "详细联系地址")
|
|
||||||
private String contactAddress;
|
|
||||||
|
|
||||||
/** 关系详细描述 */
|
|
||||||
@Schema(description = "关系详细描述")
|
|
||||||
private String relationDesc;
|
|
||||||
|
|
||||||
/** 生效日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "生效日期")
|
|
||||||
private Date effectiveDate;
|
|
||||||
|
|
||||||
/** 失效日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "失效日期")
|
|
||||||
private Date invalidDate;
|
|
||||||
|
|
||||||
/** 状态 */
|
|
||||||
@Schema(description = "状态:0-无效,1-有效")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 状态名称 */
|
|
||||||
@Schema(description = "状态名称")
|
|
||||||
private String statusName;
|
|
||||||
|
|
||||||
/** 备注 */
|
|
||||||
@Schema(description = "备注")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
/** 数据来源 */
|
|
||||||
@Schema(description = "数据来源:MANUAL-手工录入,IMPORT-批量导入")
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
/** 是否是员工亲属 */
|
|
||||||
@Schema(description = "是否是员工亲属:0-否")
|
|
||||||
private Boolean isEmpFamily;
|
|
||||||
|
|
||||||
/** 是否是客户亲属 */
|
|
||||||
@Schema(description = "是否是客户亲属:1-是")
|
|
||||||
private Boolean isCustFamily;
|
|
||||||
|
|
||||||
/** 创建时间 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
|
||||||
@Schema(description = "创建时间")
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/** 更新时间 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
|
||||||
@Schema(description = "更新时间")
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
/** 创建人 */
|
|
||||||
@Schema(description = "创建人")
|
|
||||||
private String createdBy;
|
|
||||||
|
|
||||||
/** 更新人 */
|
|
||||||
@Schema(description = "更新人")
|
|
||||||
private String updatedBy;
|
|
||||||
}
|
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 实体中介详情VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-04
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "实体中介详情VO")
|
|
||||||
public class CcdiIntermediaryEntityDetailVO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
@Schema(description = "业务ID")
|
|
||||||
private String bizId;
|
|
||||||
|
|
||||||
@Schema(description = "统一社会信用代码")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
@Schema(description = "中介类型(1=个人, 2=实体)")
|
|
||||||
private String intermediaryType;
|
|
||||||
|
|
||||||
@Schema(description = "企业名称")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
@Schema(description = "企业类型")
|
|
||||||
private String enterpriseType;
|
|
||||||
|
|
||||||
@Schema(description = "企业性质")
|
|
||||||
private String enterpriseNature;
|
|
||||||
|
|
||||||
@Schema(description = "行业分类")
|
|
||||||
private String industryClass;
|
|
||||||
|
|
||||||
@Schema(description = "所属行业")
|
|
||||||
private String industryName;
|
|
||||||
|
|
||||||
@Schema(description = "成立日期")
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
private Date establishDate;
|
|
||||||
|
|
||||||
@Schema(description = "注册地址")
|
|
||||||
private String registerAddress;
|
|
||||||
|
|
||||||
@Schema(description = "法定代表人")
|
|
||||||
private String legalRepresentative;
|
|
||||||
|
|
||||||
@Schema(description = "法定代表人证件类型")
|
|
||||||
private String legalCertType;
|
|
||||||
|
|
||||||
@Schema(description = "法定代表人证件号码")
|
|
||||||
private String legalCertNo;
|
|
||||||
|
|
||||||
@Schema(description = "股东1")
|
|
||||||
private String shareholder1;
|
|
||||||
|
|
||||||
@Schema(description = "股东2")
|
|
||||||
private String shareholder2;
|
|
||||||
|
|
||||||
@Schema(description = "股东3")
|
|
||||||
private String shareholder3;
|
|
||||||
|
|
||||||
@Schema(description = "股东4")
|
|
||||||
private String shareholder4;
|
|
||||||
|
|
||||||
@Schema(description = "股东5")
|
|
||||||
private String shareholder5;
|
|
||||||
|
|
||||||
@Schema(description = "风险等级")
|
|
||||||
private String riskLevel;
|
|
||||||
|
|
||||||
@Schema(description = "企业来源")
|
|
||||||
private String entSource;
|
|
||||||
|
|
||||||
@Schema(description = "数据来源")
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
@Schema(description = "备注")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
@Schema(description = "创建时间")
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
|
||||||
private Date createTime;
|
|
||||||
}
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 个人中介详情VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-04
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "个人中介详情VO")
|
|
||||||
public class CcdiIntermediaryPersonDetailVO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
@Schema(description = "人员ID")
|
|
||||||
private String bizId;
|
|
||||||
|
|
||||||
@Schema(description = "中介类型(1=个人, 2=实体)")
|
|
||||||
private String intermediaryType;
|
|
||||||
|
|
||||||
@Schema(description = "姓名")
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@Schema(description = "人员类型")
|
|
||||||
private String personType;
|
|
||||||
|
|
||||||
@Schema(description = "人员子类型")
|
|
||||||
private String personSubType;
|
|
||||||
|
|
||||||
@Schema(description = "性别")
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
@Schema(description = "证件类型")
|
|
||||||
private String idType;
|
|
||||||
|
|
||||||
@Schema(description = "证件号码")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
@Schema(description = "手机号码")
|
|
||||||
private String mobile;
|
|
||||||
|
|
||||||
@Schema(description = "微信号")
|
|
||||||
private String wechatNo;
|
|
||||||
|
|
||||||
@Schema(description = "联系地址")
|
|
||||||
private String contactAddress;
|
|
||||||
|
|
||||||
@Schema(description = "所在公司")
|
|
||||||
private String company;
|
|
||||||
|
|
||||||
@Schema(description = "企业统一信用码")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
@Schema(description = "职位")
|
|
||||||
private String position;
|
|
||||||
|
|
||||||
@Schema(description = "关联人员ID")
|
|
||||||
private String relatedNumId;
|
|
||||||
|
|
||||||
@Schema(description = "关联关系")
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
@Schema(description = "数据来源")
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
@Schema(description = "备注")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
@Schema(description = "创建时间")
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
|
||||||
private Date createTime;
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 中介统一列表VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-04
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "中介统一列表VO")
|
|
||||||
public class CcdiIntermediaryVO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
@Schema(description = "ID")
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
@Schema(description = "姓名/机构名称")
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@Schema(description = "证件号/统一社会信用代码")
|
|
||||||
private String certificateNo;
|
|
||||||
|
|
||||||
@Schema(description = "中介类型(1=个人, 2=实体)")
|
|
||||||
private String intermediaryType;
|
|
||||||
|
|
||||||
@Schema(description = "人员类型")
|
|
||||||
private String personType;
|
|
||||||
|
|
||||||
@Schema(description = "公司")
|
|
||||||
private String company;
|
|
||||||
|
|
||||||
@Schema(description = "数据来源")
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
@Schema(description = "创建时间")
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
@Schema(description = "修改时间")
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
|
||||||
private Date updateTime;
|
|
||||||
}
|
|
||||||
@@ -1,177 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购交易信息VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-06
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "采购交易信息")
|
|
||||||
public class CcdiPurchaseTransactionVO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 采购事项ID */
|
|
||||||
@Schema(description = "采购事项ID")
|
|
||||||
private String purchaseId;
|
|
||||||
|
|
||||||
/** 采购类别 */
|
|
||||||
@Schema(description = "采购类别")
|
|
||||||
private String purchaseCategory;
|
|
||||||
|
|
||||||
/** 项目名称 */
|
|
||||||
@Schema(description = "项目名称")
|
|
||||||
private String projectName;
|
|
||||||
|
|
||||||
/** 标的物名称 */
|
|
||||||
@Schema(description = "标的物名称")
|
|
||||||
private String subjectName;
|
|
||||||
|
|
||||||
/** 标的物描述 */
|
|
||||||
@Schema(description = "标的物描述")
|
|
||||||
private String subjectDesc;
|
|
||||||
|
|
||||||
/** 采购数量 */
|
|
||||||
@Schema(description = "采购数量")
|
|
||||||
private BigDecimal purchaseQty;
|
|
||||||
|
|
||||||
/** 预算金额 */
|
|
||||||
@Schema(description = "预算金额")
|
|
||||||
private BigDecimal budgetAmount;
|
|
||||||
|
|
||||||
/** 中标金额 */
|
|
||||||
@Schema(description = "中标金额")
|
|
||||||
private BigDecimal bidAmount;
|
|
||||||
|
|
||||||
/** 实际采购金额 */
|
|
||||||
@Schema(description = "实际采购金额")
|
|
||||||
private BigDecimal actualAmount;
|
|
||||||
|
|
||||||
/** 合同金额 */
|
|
||||||
@Schema(description = "合同金额")
|
|
||||||
private BigDecimal contractAmount;
|
|
||||||
|
|
||||||
/** 结算金额 */
|
|
||||||
@Schema(description = "结算金额")
|
|
||||||
private BigDecimal settlementAmount;
|
|
||||||
|
|
||||||
/** 采购方式 */
|
|
||||||
@Schema(description = "采购方式")
|
|
||||||
private String purchaseMethod;
|
|
||||||
|
|
||||||
/** 中标供应商名称 */
|
|
||||||
@Schema(description = "中标供应商名称")
|
|
||||||
private String supplierName;
|
|
||||||
|
|
||||||
/** 供应商联系人 */
|
|
||||||
@Schema(description = "供应商联系人")
|
|
||||||
private String contactPerson;
|
|
||||||
|
|
||||||
/** 供应商联系电话 */
|
|
||||||
@Schema(description = "供应商联系电话")
|
|
||||||
private String contactPhone;
|
|
||||||
|
|
||||||
/** 供应商统一信用代码 */
|
|
||||||
@Schema(description = "供应商统一信用代码")
|
|
||||||
private String supplierUscc;
|
|
||||||
|
|
||||||
/** 供应商银行账户 */
|
|
||||||
@Schema(description = "供应商银行账户")
|
|
||||||
private String supplierBankAccount;
|
|
||||||
|
|
||||||
/** 采购申请日期(或立项日期) */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "采购申请日期")
|
|
||||||
private Date applyDate;
|
|
||||||
|
|
||||||
/** 采购计划批准日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "采购计划批准日期")
|
|
||||||
private Date planApproveDate;
|
|
||||||
|
|
||||||
/** 采购公告发布日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "采购公告发布日期")
|
|
||||||
private Date announceDate;
|
|
||||||
|
|
||||||
/** 开标日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "开标日期")
|
|
||||||
private Date bidOpenDate;
|
|
||||||
|
|
||||||
/** 合同签订日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "合同签订日期")
|
|
||||||
private Date contractSignDate;
|
|
||||||
|
|
||||||
/** 预计交货日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "预计交货日期")
|
|
||||||
private Date expectedDeliveryDate;
|
|
||||||
|
|
||||||
/** 实际交货日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "实际交货日期")
|
|
||||||
private Date actualDeliveryDate;
|
|
||||||
|
|
||||||
/** 验收日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "验收日期")
|
|
||||||
private Date acceptanceDate;
|
|
||||||
|
|
||||||
/** 结算日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "结算日期")
|
|
||||||
private Date settlementDate;
|
|
||||||
|
|
||||||
/** 申请人工号 */
|
|
||||||
@Schema(description = "申请人工号")
|
|
||||||
private String applicantId;
|
|
||||||
|
|
||||||
/** 申请人姓名 */
|
|
||||||
@Schema(description = "申请人姓名")
|
|
||||||
private String applicantName;
|
|
||||||
|
|
||||||
/** 申请部门 */
|
|
||||||
@Schema(description = "申请部门")
|
|
||||||
private String applyDepartment;
|
|
||||||
|
|
||||||
/** 采购负责人工号 */
|
|
||||||
@Schema(description = "采购负责人工号")
|
|
||||||
private String purchaseLeaderId;
|
|
||||||
|
|
||||||
/** 采购负责人姓名 */
|
|
||||||
@Schema(description = "采购负责人姓名")
|
|
||||||
private String purchaseLeaderName;
|
|
||||||
|
|
||||||
/** 采购部门 */
|
|
||||||
@Schema(description = "采购部门")
|
|
||||||
private String purchaseDepartment;
|
|
||||||
|
|
||||||
/** 创建时间 */
|
|
||||||
@Schema(description = "创建时间")
|
|
||||||
private String createTime;
|
|
||||||
|
|
||||||
/** 更新时间 */
|
|
||||||
@Schema(description = "更新时间")
|
|
||||||
private String updateTime;
|
|
||||||
|
|
||||||
/** 创建人 */
|
|
||||||
@Schema(description = "创建人")
|
|
||||||
private String createdBy;
|
|
||||||
|
|
||||||
/** 更新人 */
|
|
||||||
@Schema(description = "更新人")
|
|
||||||
private String updatedBy;
|
|
||||||
}
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工实体关系信息VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工实体关系信息")
|
|
||||||
public class CcdiStaffEnterpriseRelationVO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 主键ID */
|
|
||||||
@Schema(description = "主键ID")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** 身份证号 */
|
|
||||||
@Schema(description = "身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 员工姓名 */
|
|
||||||
@Schema(description = "员工姓名")
|
|
||||||
private String personName;
|
|
||||||
|
|
||||||
/** 关联人在企业的职务 */
|
|
||||||
@Schema(description = "关联人在企业的职务")
|
|
||||||
private String relationPersonPost;
|
|
||||||
|
|
||||||
/** 统一社会信用代码 */
|
|
||||||
@Schema(description = "统一社会信用代码")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 企业名称 */
|
|
||||||
@Schema(description = "企业名称")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
/** 状态(0-无效 1-有效) */
|
|
||||||
@Schema(description = "状态(0-无效 1-有效)")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 补充说明 */
|
|
||||||
@Schema(description = "补充说明")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
/** 数据来源 */
|
|
||||||
@Schema(description = "数据来源")
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
/** 是否为员工(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为员工(0-否 1-是)")
|
|
||||||
private Integer isEmployee;
|
|
||||||
|
|
||||||
/** 是否为员工家属(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为员工家属(0-否 1-是)")
|
|
||||||
private Integer isEmpFamily;
|
|
||||||
|
|
||||||
/** 是否为客户(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为客户(0-否 1-是)")
|
|
||||||
private Integer isCustomer;
|
|
||||||
|
|
||||||
/** 是否为客户家属(0-否 1-是) */
|
|
||||||
@Schema(description = "是否为客户家属(0-否 1-是)")
|
|
||||||
private Integer isCustFamily;
|
|
||||||
|
|
||||||
/** 创建时间 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
|
||||||
@Schema(description = "创建时间")
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/** 更新时间 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
|
||||||
@Schema(description = "更新时间")
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
/** 创建人 */
|
|
||||||
@Schema(description = "创建人")
|
|
||||||
private String createdBy;
|
|
||||||
|
|
||||||
/** 更新人 */
|
|
||||||
@Schema(description = "更新人")
|
|
||||||
private String updatedBy;
|
|
||||||
}
|
|
||||||
@@ -1,144 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工亲属关系VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工亲属关系")
|
|
||||||
public class CcdiStaffFmyRelationVO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 主键ID */
|
|
||||||
@Schema(description = "主键ID")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** 员工身份证号 */
|
|
||||||
@Schema(description = "员工身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 员工姓名 */
|
|
||||||
@Schema(description = "员工姓名")
|
|
||||||
private String personName;
|
|
||||||
|
|
||||||
/** 关系类型 */
|
|
||||||
@Schema(description = "关系类型")
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
/** 关系人姓名 */
|
|
||||||
@Schema(description = "关系人姓名")
|
|
||||||
private String relationName;
|
|
||||||
|
|
||||||
/** 性别 */
|
|
||||||
@Schema(description = "性别")
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
/** 性别名称 */
|
|
||||||
@Schema(description = "性别名称")
|
|
||||||
private String genderName;
|
|
||||||
|
|
||||||
/** 出生日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "出生日期")
|
|
||||||
private Date birthDate;
|
|
||||||
|
|
||||||
/** 关系人证件类型 */
|
|
||||||
@Schema(description = "关系人证件类型")
|
|
||||||
private String relationCertType;
|
|
||||||
|
|
||||||
/** 关系人证件号码 */
|
|
||||||
@Schema(description = "关系人证件号码")
|
|
||||||
private String relationCertNo;
|
|
||||||
|
|
||||||
/** 手机号码1 */
|
|
||||||
@Schema(description = "手机号码1")
|
|
||||||
private String mobilePhone1;
|
|
||||||
|
|
||||||
/** 手机号码2 */
|
|
||||||
@Schema(description = "手机号码2")
|
|
||||||
private String mobilePhone2;
|
|
||||||
|
|
||||||
/** 微信名称1 */
|
|
||||||
@Schema(description = "微信名称1")
|
|
||||||
private String wechatNo1;
|
|
||||||
|
|
||||||
/** 微信名称2 */
|
|
||||||
@Schema(description = "微信名称2")
|
|
||||||
private String wechatNo2;
|
|
||||||
|
|
||||||
/** 微信名称3 */
|
|
||||||
@Schema(description = "微信名称3")
|
|
||||||
private String wechatNo3;
|
|
||||||
|
|
||||||
/** 详细联系地址 */
|
|
||||||
@Schema(description = "详细联系地址")
|
|
||||||
private String contactAddress;
|
|
||||||
|
|
||||||
/** 关系详细描述 */
|
|
||||||
@Schema(description = "关系详细描述")
|
|
||||||
private String relationDesc;
|
|
||||||
|
|
||||||
/** 生效日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "生效日期")
|
|
||||||
private Date effectiveDate;
|
|
||||||
|
|
||||||
/** 失效日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "失效日期")
|
|
||||||
private Date invalidDate;
|
|
||||||
|
|
||||||
/** 状态 */
|
|
||||||
@Schema(description = "状态")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 状态名称 */
|
|
||||||
@Schema(description = "状态名称")
|
|
||||||
private String statusName;
|
|
||||||
|
|
||||||
/** 备注 */
|
|
||||||
@Schema(description = "备注")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
/** 数据来源 */
|
|
||||||
@Schema(description = "数据来源")
|
|
||||||
private String dataSource;
|
|
||||||
|
|
||||||
/** 是否是员工亲属 */
|
|
||||||
@Schema(description = "是否是员工亲属")
|
|
||||||
private Boolean isEmpFamily;
|
|
||||||
|
|
||||||
/** 是否是客户亲属 */
|
|
||||||
@Schema(description = "是否是客户亲属")
|
|
||||||
private Boolean isCustFamily;
|
|
||||||
|
|
||||||
/** 创建时间 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
|
||||||
@Schema(description = "创建时间")
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/** 更新时间 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
|
||||||
@Schema(description = "更新时间")
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
/** 创建人 */
|
|
||||||
@Schema(description = "创建人")
|
|
||||||
private String createdBy;
|
|
||||||
|
|
||||||
/** 更新人 */
|
|
||||||
@Schema(description = "更新人")
|
|
||||||
private String updatedBy;
|
|
||||||
}
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工招聘信息VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2025-02-05
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class CcdiStaffRecruitmentVO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 招聘项目编号 */
|
|
||||||
private String recruitId;
|
|
||||||
|
|
||||||
/** 招聘项目名称 */
|
|
||||||
private String recruitName;
|
|
||||||
|
|
||||||
/** 职位名称 */
|
|
||||||
private String posName;
|
|
||||||
|
|
||||||
/** 职位类别 */
|
|
||||||
private String posCategory;
|
|
||||||
|
|
||||||
/** 职位描述 */
|
|
||||||
private String posDesc;
|
|
||||||
|
|
||||||
/** 应聘人员姓名 */
|
|
||||||
private String candName;
|
|
||||||
|
|
||||||
/** 应聘人员学历 */
|
|
||||||
private String candEdu;
|
|
||||||
|
|
||||||
/** 应聘人员证件号码 */
|
|
||||||
private String candId;
|
|
||||||
|
|
||||||
/** 应聘人员毕业院校 */
|
|
||||||
private String candSchool;
|
|
||||||
|
|
||||||
/** 应聘人员专业 */
|
|
||||||
private String candMajor;
|
|
||||||
|
|
||||||
/** 应聘人员毕业年月 */
|
|
||||||
private String candGrad;
|
|
||||||
|
|
||||||
/** 录用情况:录用、未录用、放弃 */
|
|
||||||
private String admitStatus;
|
|
||||||
|
|
||||||
/** 录用情况描述 */
|
|
||||||
private String admitStatusDesc;
|
|
||||||
|
|
||||||
/** 面试官1姓名 */
|
|
||||||
private String interviewerName1;
|
|
||||||
|
|
||||||
/** 面试官1工号 */
|
|
||||||
private String interviewerId1;
|
|
||||||
|
|
||||||
/** 面试官2姓名 */
|
|
||||||
private String interviewerName2;
|
|
||||||
|
|
||||||
/** 面试官2工号 */
|
|
||||||
private String interviewerId2;
|
|
||||||
|
|
||||||
/** 记录创建人 */
|
|
||||||
private String createdBy;
|
|
||||||
|
|
||||||
/** 创建时间 */
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/** 记录更新人 */
|
|
||||||
private String updatedBy;
|
|
||||||
|
|
||||||
/** 更新时间 */
|
|
||||||
private Date updateTime;
|
|
||||||
}
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工调动记录VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-10
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工调动记录")
|
|
||||||
public class CcdiStaffTransferVO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 主键ID */
|
|
||||||
@Schema(description = "主键ID")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** 员工ID */
|
|
||||||
@Schema(description = "员工ID")
|
|
||||||
private Long staffId;
|
|
||||||
|
|
||||||
/** 员工姓名 */
|
|
||||||
@Schema(description = "员工姓名")
|
|
||||||
private String staffName;
|
|
||||||
|
|
||||||
/** 调动类型 */
|
|
||||||
@Schema(description = "调动类型")
|
|
||||||
private String transferType;
|
|
||||||
|
|
||||||
/** 调动子类型 */
|
|
||||||
@Schema(description = "调动子类型")
|
|
||||||
private String transferSubType;
|
|
||||||
|
|
||||||
/** 调动前部门ID */
|
|
||||||
@Schema(description = "调动前部门ID")
|
|
||||||
private Long deptIdBefore;
|
|
||||||
|
|
||||||
/** 调动前部门 */
|
|
||||||
@Schema(description = "调动前部门")
|
|
||||||
private String deptNameBefore;
|
|
||||||
|
|
||||||
/** 调动前职级 */
|
|
||||||
@Schema(description = "调动前职级")
|
|
||||||
private String gradeBefore;
|
|
||||||
|
|
||||||
/** 调动前岗位 */
|
|
||||||
@Schema(description = "调动前岗位")
|
|
||||||
private String positionBefore;
|
|
||||||
|
|
||||||
/** 调动前薪酬等级 */
|
|
||||||
@Schema(description = "调动前薪酬等级")
|
|
||||||
private String salaryLevelBefore;
|
|
||||||
|
|
||||||
/** 调动后部门ID */
|
|
||||||
@Schema(description = "调动后部门ID")
|
|
||||||
private Long deptIdAfter;
|
|
||||||
|
|
||||||
/** 调动后部门 */
|
|
||||||
@Schema(description = "调动后部门")
|
|
||||||
private String deptNameAfter;
|
|
||||||
|
|
||||||
/** 调动后职级 */
|
|
||||||
@Schema(description = "调动后职级")
|
|
||||||
private String gradeAfter;
|
|
||||||
|
|
||||||
/** 调动后岗位 */
|
|
||||||
@Schema(description = "调动后岗位")
|
|
||||||
private String positionAfter;
|
|
||||||
|
|
||||||
/** 调动后薪酬等级 */
|
|
||||||
@Schema(description = "调动后薪酬等级")
|
|
||||||
private String salaryLevelAfter;
|
|
||||||
|
|
||||||
/** 调动日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "调动日期")
|
|
||||||
private Date transferDate;
|
|
||||||
|
|
||||||
/** 创建时间 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
|
||||||
@Schema(description = "创建时间")
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
/** 更新时间 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
|
||||||
@Schema(description = "更新时间")
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
/** 创建人 */
|
|
||||||
@Schema(description = "创建人")
|
|
||||||
private String createdBy;
|
|
||||||
|
|
||||||
/** 更新人 */
|
|
||||||
@Schema(description = "更新人")
|
|
||||||
private String updatedBy;
|
|
||||||
}
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户实体关联信息导入失败记录VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-12
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "信贷客户实体关联信息导入失败记录")
|
|
||||||
public class CustEnterpriseRelationImportFailureVO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 身份证号 */
|
|
||||||
@Schema(description = "身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 统一社会信用代码 */
|
|
||||||
@Schema(description = "统一社会信用代码")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 企业名称 */
|
|
||||||
@Schema(description = "企业名称")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
/** 错误信息 */
|
|
||||||
@Schema(description = "错误信息")
|
|
||||||
private String errorMessage;
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户家庭关系导入失败VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-11
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "信贷客户家庭关系导入失败记录")
|
|
||||||
public class CustFmyRelationImportFailureVO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 行号 */
|
|
||||||
@Schema(description = "行号")
|
|
||||||
private Integer rowNum;
|
|
||||||
|
|
||||||
/** 信贷客户身份证号 */
|
|
||||||
@Schema(description = "信贷客户身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关系类型 */
|
|
||||||
@Schema(description = "关系类型")
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
/** 关系人姓名 */
|
|
||||||
@Schema(description = "关系人姓名")
|
|
||||||
private String relationName;
|
|
||||||
|
|
||||||
/** 错误消息 */
|
|
||||||
@Schema(description = "错误消息")
|
|
||||||
private String errorMessage;
|
|
||||||
}
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导入失败记录VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "导入失败记录")
|
|
||||||
public class ImportFailureVO {
|
|
||||||
|
|
||||||
@Schema(description = "柜员号")
|
|
||||||
private Long employeeId;
|
|
||||||
|
|
||||||
@Schema(description = "姓名")
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@Schema(description = "身份证号")
|
|
||||||
private String idCard;
|
|
||||||
|
|
||||||
@Schema(description = "部门ID")
|
|
||||||
private Long deptId;
|
|
||||||
|
|
||||||
@Schema(description = "电话")
|
|
||||||
private String phone;
|
|
||||||
|
|
||||||
@Schema(description = "状态")
|
|
||||||
private String status;
|
|
||||||
|
|
||||||
@Schema(description = "入职时间")
|
|
||||||
private String hireDate;
|
|
||||||
|
|
||||||
@Schema(description = "错误信息")
|
|
||||||
private String errorMessage;
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Author: wkc
|
|
||||||
* @CreateTime: 2026-02-06
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class ImportResult {
|
|
||||||
|
|
||||||
private Integer totalCount;
|
|
||||||
private Integer successCount;
|
|
||||||
private Integer failureCount;
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导入结果VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "导入结果")
|
|
||||||
public class ImportResultVO {
|
|
||||||
|
|
||||||
@Schema(description = "任务ID")
|
|
||||||
private String taskId;
|
|
||||||
|
|
||||||
@Schema(description = "状态: PROCESSING-处理中, SUCCESS-成功, PARTIAL_SUCCESS-部分成功, FAILED-失败")
|
|
||||||
private String status;
|
|
||||||
|
|
||||||
@Schema(description = "消息")
|
|
||||||
private String message;
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导入状态VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "导入状态")
|
|
||||||
public class ImportStatusVO {
|
|
||||||
|
|
||||||
@Schema(description = "任务ID")
|
|
||||||
private String taskId;
|
|
||||||
|
|
||||||
@Schema(description = "状态")
|
|
||||||
private String status;
|
|
||||||
|
|
||||||
@Schema(description = "总记录数")
|
|
||||||
private Integer totalCount;
|
|
||||||
|
|
||||||
@Schema(description = "成功数")
|
|
||||||
private Integer successCount;
|
|
||||||
|
|
||||||
@Schema(description = "失败数")
|
|
||||||
private Integer failureCount;
|
|
||||||
|
|
||||||
@Schema(description = "进度百分比")
|
|
||||||
private Integer progress;
|
|
||||||
|
|
||||||
@Schema(description = "开始时间戳")
|
|
||||||
private Long startTime;
|
|
||||||
|
|
||||||
@Schema(description = "结束时间戳")
|
|
||||||
private Long endTime;
|
|
||||||
|
|
||||||
@Schema(description = "状态消息")
|
|
||||||
private String message;
|
|
||||||
}
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 实体中介导入失败记录VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-06
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "实体中介导入失败记录")
|
|
||||||
public class IntermediaryEntityImportFailureVO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
@Schema(description = "机构名称")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
@Schema(description = "统一社会信用代码")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
@Schema(description = "主体类型")
|
|
||||||
private String enterpriseType;
|
|
||||||
|
|
||||||
@Schema(description = "企业性质")
|
|
||||||
private String enterpriseNature;
|
|
||||||
|
|
||||||
@Schema(description = "法定代表人")
|
|
||||||
private String legalRepresentative;
|
|
||||||
|
|
||||||
@Schema(description = "成立日期")
|
|
||||||
private Date establishDate;
|
|
||||||
|
|
||||||
@Schema(description = "错误信息")
|
|
||||||
private String errorMessage;
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 个人中介导入失败记录VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-06
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "个人中介导入失败记录")
|
|
||||||
public class IntermediaryPersonImportFailureVO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
@Schema(description = "姓名")
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@Schema(description = "证件号码")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
@Schema(description = "人员类型")
|
|
||||||
private String personType;
|
|
||||||
|
|
||||||
@Schema(description = "性别")
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
@Schema(description = "手机号码")
|
|
||||||
private String mobile;
|
|
||||||
|
|
||||||
@Schema(description = "所在公司")
|
|
||||||
private String company;
|
|
||||||
|
|
||||||
@Schema(description = "错误信息")
|
|
||||||
private String errorMessage;
|
|
||||||
}
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购交易信息导入失败记录VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-06
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "采购交易信息导入失败记录")
|
|
||||||
public class PurchaseTransactionImportFailureVO {
|
|
||||||
|
|
||||||
/** 采购事项ID */
|
|
||||||
@Schema(description = "采购事项ID")
|
|
||||||
private String purchaseId;
|
|
||||||
|
|
||||||
/** 采购类别 */
|
|
||||||
@Schema(description = "采购类别")
|
|
||||||
private String purchaseCategory;
|
|
||||||
|
|
||||||
/** 项目名称 */
|
|
||||||
@Schema(description = "项目名称")
|
|
||||||
private String projectName;
|
|
||||||
|
|
||||||
/** 标的物名称 */
|
|
||||||
@Schema(description = "标的物名称")
|
|
||||||
private String subjectName;
|
|
||||||
|
|
||||||
/** 采购方式 */
|
|
||||||
@Schema(description = "采购方式")
|
|
||||||
private String purchaseMethod;
|
|
||||||
|
|
||||||
/** 预算金额 */
|
|
||||||
@Schema(description = "预算金额")
|
|
||||||
private BigDecimal budgetAmount;
|
|
||||||
|
|
||||||
/** 申请人工号 */
|
|
||||||
@Schema(description = "申请人工号")
|
|
||||||
private String applicantId;
|
|
||||||
|
|
||||||
/** 申请人姓名 */
|
|
||||||
@Schema(description = "申请人姓名")
|
|
||||||
private String applicantName;
|
|
||||||
|
|
||||||
/** 申请部门 */
|
|
||||||
@Schema(description = "申请部门")
|
|
||||||
private String applyDepartment;
|
|
||||||
|
|
||||||
/** 采购申请日期 */
|
|
||||||
@Schema(description = "采购申请日期")
|
|
||||||
private String applyDate;
|
|
||||||
|
|
||||||
/** 错误信息 */
|
|
||||||
@Schema(description = "错误信息")
|
|
||||||
private String errorMessage;
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 招聘信息导入失败记录VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-06
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "招聘信息导入失败记录")
|
|
||||||
public class RecruitmentImportFailureVO {
|
|
||||||
|
|
||||||
@Schema(description = "招聘项目编号")
|
|
||||||
private String recruitId;
|
|
||||||
|
|
||||||
@Schema(description = "招聘项目名称")
|
|
||||||
private String recruitName;
|
|
||||||
|
|
||||||
@Schema(description = "应聘人员姓名")
|
|
||||||
private String candName;
|
|
||||||
|
|
||||||
@Schema(description = "证件号码")
|
|
||||||
private String candId;
|
|
||||||
|
|
||||||
@Schema(description = "录用情况")
|
|
||||||
private String admitStatus;
|
|
||||||
|
|
||||||
@Schema(description = "错误信息")
|
|
||||||
private String errorMessage;
|
|
||||||
}
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工实体关系信息导入失败记录VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工实体关系信息导入失败记录")
|
|
||||||
public class StaffEnterpriseRelationImportFailureVO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 身份证号 */
|
|
||||||
@Schema(description = "身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 统一社会信用代码 */
|
|
||||||
@Schema(description = "统一社会信用代码")
|
|
||||||
private String socialCreditCode;
|
|
||||||
|
|
||||||
/** 企业名称 */
|
|
||||||
@Schema(description = "企业名称")
|
|
||||||
private String enterpriseName;
|
|
||||||
|
|
||||||
/** 错误信息 */
|
|
||||||
@Schema(description = "错误信息")
|
|
||||||
private String errorMessage;
|
|
||||||
}
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工亲属关系信息导入失败记录VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工亲属关系信息导入失败记录")
|
|
||||||
public class StaffFmyRelationImportFailureVO {
|
|
||||||
|
|
||||||
/** 员工身份证号 */
|
|
||||||
@Schema(description = "员工身份证号")
|
|
||||||
private String personId;
|
|
||||||
|
|
||||||
/** 关系类型 */
|
|
||||||
@Schema(description = "关系类型")
|
|
||||||
private String relationType;
|
|
||||||
|
|
||||||
/** 关系人姓名 */
|
|
||||||
@Schema(description = "关系人姓名")
|
|
||||||
private String relationName;
|
|
||||||
|
|
||||||
/** 性别 */
|
|
||||||
@Schema(description = "性别")
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
/** 证件类型 */
|
|
||||||
@Schema(description = "证件类型")
|
|
||||||
private String relationCertType;
|
|
||||||
|
|
||||||
/** 证件号码 */
|
|
||||||
@Schema(description = "证件号码")
|
|
||||||
private String relationCertNo;
|
|
||||||
|
|
||||||
/** 手机号码1 */
|
|
||||||
@Schema(description = "手机号码1")
|
|
||||||
private String mobilePhone1;
|
|
||||||
|
|
||||||
/** 状态 */
|
|
||||||
@Schema(description = "状态")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/** 错误信息 */
|
|
||||||
@Schema(description = "错误信息")
|
|
||||||
private String errorMessage;
|
|
||||||
}
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.domain.vo;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工调动记录导入失败记录VO
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-10
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Schema(description = "员工调动记录导入失败记录")
|
|
||||||
public class StaffTransferImportFailureVO implements Serializable {
|
|
||||||
|
|
||||||
@Serial
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 员工ID */
|
|
||||||
@Schema(description = "员工ID")
|
|
||||||
private Long staffId;
|
|
||||||
|
|
||||||
/** 员工姓名 */
|
|
||||||
@Schema(description = "员工姓名")
|
|
||||||
private String staffName;
|
|
||||||
|
|
||||||
/** 调动前部门ID */
|
|
||||||
@Schema(description = "调动前部门ID")
|
|
||||||
private Long deptIdBefore;
|
|
||||||
|
|
||||||
/** 调动后部门ID */
|
|
||||||
@Schema(description = "调动后部门ID")
|
|
||||||
private Long deptIdAfter;
|
|
||||||
|
|
||||||
/** 调动类型 */
|
|
||||||
@Schema(description = "调动类型")
|
|
||||||
private String transferType;
|
|
||||||
|
|
||||||
/** 调动子类型 */
|
|
||||||
@Schema(description = "调动子类型")
|
|
||||||
private String transferSubType;
|
|
||||||
|
|
||||||
/** 调动前部门 */
|
|
||||||
@Schema(description = "调动前部门")
|
|
||||||
private String deptNameBefore;
|
|
||||||
|
|
||||||
/** 调动前职级 */
|
|
||||||
@Schema(description = "调动前职级")
|
|
||||||
private String gradeBefore;
|
|
||||||
|
|
||||||
/** 调动前岗位 */
|
|
||||||
@Schema(description = "调动前岗位")
|
|
||||||
private String positionBefore;
|
|
||||||
|
|
||||||
/** 调动前薪酬等级 */
|
|
||||||
@Schema(description = "调动前薪酬等级")
|
|
||||||
private String salaryLevelBefore;
|
|
||||||
|
|
||||||
/** 调动后部门 */
|
|
||||||
@Schema(description = "调动后部门")
|
|
||||||
private String deptNameAfter;
|
|
||||||
|
|
||||||
/** 调动后职级 */
|
|
||||||
@Schema(description = "调动后职级")
|
|
||||||
private String gradeAfter;
|
|
||||||
|
|
||||||
/** 调动后岗位 */
|
|
||||||
@Schema(description = "调动后岗位")
|
|
||||||
private String positionAfter;
|
|
||||||
|
|
||||||
/** 调动后薪酬等级 */
|
|
||||||
@Schema(description = "调动后薪酬等级")
|
|
||||||
private String salaryLevelAfter;
|
|
||||||
|
|
||||||
/** 调动日期 */
|
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
|
||||||
@Schema(description = "调动日期")
|
|
||||||
private Date transferDate;
|
|
||||||
|
|
||||||
/** 错误信息 */
|
|
||||||
@Schema(description = "错误信息")
|
|
||||||
private String errorMessage;
|
|
||||||
}
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.enums;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 录用状态枚举
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
*/
|
|
||||||
public enum AdmitStatus {
|
|
||||||
|
|
||||||
/** 录用 */
|
|
||||||
ADMITTED("录用", "已录用该候选人"),
|
|
||||||
|
|
||||||
/** 未录用 */
|
|
||||||
NOT_ADMITTED("未录用", "未录用该候选人"),
|
|
||||||
|
|
||||||
/** 放弃 */
|
|
||||||
WITHDRAWN("放弃", "候选人放弃");
|
|
||||||
|
|
||||||
private final String code;
|
|
||||||
private final String desc;
|
|
||||||
|
|
||||||
AdmitStatus(String code, String desc) {
|
|
||||||
this.code = code;
|
|
||||||
this.desc = desc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCode() {
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDesc() {
|
|
||||||
return desc;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据编码获取描述
|
|
||||||
*/
|
|
||||||
public static String getDescByCode(String code) {
|
|
||||||
for (AdmitStatus status : values()) {
|
|
||||||
if (status.getCode().equals(code)) {
|
|
||||||
return status.getDesc();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,138 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.enums;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 性别枚举
|
|
||||||
* 用于性别中文标签与英文代码之间的转换
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-10
|
|
||||||
*/
|
|
||||||
public enum GenderEnum {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 男
|
|
||||||
*/
|
|
||||||
MALE("男", "M"),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 女
|
|
||||||
*/
|
|
||||||
FEMALE("女", "F"),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 其他
|
|
||||||
*/
|
|
||||||
OTHER("其他", "O");
|
|
||||||
|
|
||||||
private final String chineseLabel;
|
|
||||||
private final String englishCode;
|
|
||||||
|
|
||||||
GenderEnum(String chineseLabel, String englishCode) {
|
|
||||||
this.chineseLabel = chineseLabel;
|
|
||||||
this.englishCode = englishCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getChineseLabel() {
|
|
||||||
return chineseLabel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getEnglishCode() {
|
|
||||||
return englishCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据中文标签获取枚举
|
|
||||||
*
|
|
||||||
* @param chineseLabel 中文标签(男、女、其他)
|
|
||||||
* @return 对应的枚举值
|
|
||||||
* @throws IllegalArgumentException 如果标签无效
|
|
||||||
*/
|
|
||||||
public static GenderEnum fromChinese(String chineseLabel) {
|
|
||||||
if (StringUtils.isEmpty(chineseLabel)) {
|
|
||||||
throw new IllegalArgumentException("性别标签不能为空");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (GenderEnum gender : values()) {
|
|
||||||
if (gender.chineseLabel.equals(chineseLabel)) {
|
|
||||||
return gender;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new IllegalArgumentException("无效的性别标签: " + chineseLabel);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据英文代码获取枚举
|
|
||||||
*
|
|
||||||
* @param englishCode 英文代码(M、F、O)
|
|
||||||
* @return 对应的枚举值
|
|
||||||
* @throws IllegalArgumentException 如果代码无效
|
|
||||||
*/
|
|
||||||
public static GenderEnum fromEnglish(String englishCode) {
|
|
||||||
if (StringUtils.isEmpty(englishCode)) {
|
|
||||||
throw new IllegalArgumentException("性别代码不能为空");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (GenderEnum gender : values()) {
|
|
||||||
if (gender.englishCode.equals(englishCode)) {
|
|
||||||
return gender;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new IllegalArgumentException("无效的性别代码: " + englishCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 验证性别值是否有效
|
|
||||||
* 支持中文标签(男、女、其他)或英文代码(M、F、O)
|
|
||||||
*
|
|
||||||
* @param value 待验证的值
|
|
||||||
* @return true-有效,false-无效
|
|
||||||
*/
|
|
||||||
public static boolean isValid(String value) {
|
|
||||||
if (StringUtils.isEmpty(value)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (GenderEnum gender : values()) {
|
|
||||||
if (gender.chineseLabel.equals(value) || gender.englishCode.equals(value)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 标准化性别值
|
|
||||||
* 输入中文标签或英文代码,统一返回英文代码
|
|
||||||
*
|
|
||||||
* @param input 输入值(中文或英文)
|
|
||||||
* @return 英文代码(M、F、O)
|
|
||||||
* @throws IllegalArgumentException 如果输入值无效
|
|
||||||
*/
|
|
||||||
public static String normalize(String input) {
|
|
||||||
if (StringUtils.isEmpty(input)) {
|
|
||||||
throw new IllegalArgumentException("性别值不能为空");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 先尝试按中文匹配
|
|
||||||
for (GenderEnum gender : values()) {
|
|
||||||
if (gender.chineseLabel.equals(input)) {
|
|
||||||
return gender.englishCode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 再尝试按英文匹配(大写)
|
|
||||||
String upperInput = input.toUpperCase().trim();
|
|
||||||
for (GenderEnum gender : values()) {
|
|
||||||
if (gender.englishCode.equals(upperInput)) {
|
|
||||||
return gender.englishCode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new IllegalArgumentException("无效的性别值: " + input + ",有效值为:男、女、其他 或 M、F、O");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,157 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.handler;
|
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
|
||||||
import com.alibaba.excel.write.handler.SheetWriteHandler;
|
|
||||||
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
|
|
||||||
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
|
|
||||||
import com.ruoyi.common.annotation.Required;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.apache.poi.ss.usermodel.*;
|
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* EasyExcel必填字段标注处理器
|
|
||||||
* 在Excel模板生成时,为标注了@Required注解的字段表头添加红色星号(*)标记
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
public class RequiredFieldWriteHandler implements SheetWriteHandler {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 实体类Class对象
|
|
||||||
*/
|
|
||||||
private final Class<?> modelClass;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 构造函数
|
|
||||||
*
|
|
||||||
* @param modelClass 实体类Class对象
|
|
||||||
*/
|
|
||||||
public RequiredFieldWriteHandler(Class<?> modelClass) {
|
|
||||||
this.modelClass = modelClass;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
|
|
||||||
// 获取工作表
|
|
||||||
Sheet sheet = writeSheetHolder.getSheet();
|
|
||||||
|
|
||||||
// 获取表头行(第1行,索引为0)
|
|
||||||
Row headerRow = sheet.getRow(0);
|
|
||||||
if (headerRow == null) {
|
|
||||||
log.warn("表头行不存在,跳过必填字段标注");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 创建红色字体样式
|
|
||||||
Workbook workbook = writeWorkbookHolder.getWorkbook();
|
|
||||||
CellStyle redStyle = createRedFontStyle(workbook);
|
|
||||||
|
|
||||||
// 解析实体类中的必填字段
|
|
||||||
Set<Integer> requiredColumns = parseRequiredFields();
|
|
||||||
|
|
||||||
// 为必填字段的表头添加红色星号
|
|
||||||
for (Integer columnIndex : requiredColumns) {
|
|
||||||
Cell cell = headerRow.getCell(columnIndex);
|
|
||||||
if (cell != null) {
|
|
||||||
String originalValue = cell.getStringCellValue();
|
|
||||||
// 添加红色星号
|
|
||||||
cell.setCellValue(originalValue + "*");
|
|
||||||
// 应用红色样式到星号
|
|
||||||
cell.setCellStyle(redStyle);
|
|
||||||
log.info("为列[{}]的表头添加必填标记(*)", columnIndex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建红色字体样式
|
|
||||||
*
|
|
||||||
* @param workbook 工作簿
|
|
||||||
* @return 单元格样式
|
|
||||||
*/
|
|
||||||
private CellStyle createRedFontStyle(Workbook workbook) {
|
|
||||||
CellStyle style = workbook.createCellStyle();
|
|
||||||
|
|
||||||
// 设置字体为红色
|
|
||||||
Font font = workbook.createFont();
|
|
||||||
font.setColor(IndexedColors.RED.getIndex());
|
|
||||||
font.setBold(true);
|
|
||||||
style.setFont(font);
|
|
||||||
|
|
||||||
// 设置对齐方式
|
|
||||||
style.setAlignment(HorizontalAlignment.CENTER);
|
|
||||||
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
|
||||||
|
|
||||||
// 设置边框
|
|
||||||
style.setBorderTop(BorderStyle.THIN);
|
|
||||||
style.setBorderBottom(BorderStyle.THIN);
|
|
||||||
style.setBorderLeft(BorderStyle.THIN);
|
|
||||||
style.setBorderRight(BorderStyle.THIN);
|
|
||||||
|
|
||||||
return style;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 解析实体类中的必填字段
|
|
||||||
*
|
|
||||||
* @return 必填字段的列索引集合
|
|
||||||
*/
|
|
||||||
private Set<Integer> parseRequiredFields() {
|
|
||||||
Set<Integer> result = new HashSet<>();
|
|
||||||
|
|
||||||
// 获取所有字段(包括父类的)
|
|
||||||
List<Field> fields = getAllFields(modelClass);
|
|
||||||
|
|
||||||
for (Field field : fields) {
|
|
||||||
// 检查是否有@Required注解
|
|
||||||
Required required = field.getAnnotation(Required.class);
|
|
||||||
if (required == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取列索引
|
|
||||||
Integer columnIndex = getColumnIndex(field);
|
|
||||||
if (columnIndex == null) {
|
|
||||||
log.warn("字段[{}]没有指定@ExcelProperty的index,跳过必填标记", field.getName());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
result.add(columnIndex);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取类的所有字段(包括父类的)
|
|
||||||
*
|
|
||||||
* @param clazz 类对象
|
|
||||||
* @return 字段列表
|
|
||||||
*/
|
|
||||||
private List<Field> getAllFields(Class<?> clazz) {
|
|
||||||
List<Field> fields = new ArrayList<>();
|
|
||||||
while (clazz != null && clazz != Object.class) {
|
|
||||||
fields.addAll(Arrays.asList(clazz.getDeclaredFields()));
|
|
||||||
clazz = clazz.getSuperclass();
|
|
||||||
}
|
|
||||||
return fields;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取字段对应的列索引
|
|
||||||
*
|
|
||||||
* @param field 字段对象
|
|
||||||
* @return 列索引
|
|
||||||
*/
|
|
||||||
private Integer getColumnIndex(Field field) {
|
|
||||||
ExcelProperty excelProperty = field.getAnnotation(ExcelProperty.class);
|
|
||||||
if (excelProperty != null && excelProperty.index() >= 0) {
|
|
||||||
return excelProperty.index();
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.mapper;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.CcdiBaseStaff;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiBaseStaffQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiBaseStaffOptionVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiBaseStaffVO;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工信息 数据层
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-01-28
|
|
||||||
*/
|
|
||||||
public interface CcdiBaseStaffMapper extends BaseMapper<CcdiBaseStaff> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页查询员工列表(包含部门名称)
|
|
||||||
*
|
|
||||||
* @param page 分页对象
|
|
||||||
* @param queryDTO 查询条件
|
|
||||||
* @return 员工VO分页结果
|
|
||||||
*/
|
|
||||||
Page<CcdiBaseStaffVO> selectBaseStaffPageWithDept(@Param("page") Page<CcdiBaseStaffVO> page,
|
|
||||||
@Param("query") CcdiBaseStaffQueryDTO queryDTO);
|
|
||||||
|
|
||||||
int insertOrUpdateBatch(@Param("list") List<CcdiBaseStaff> list);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量插入员工信息
|
|
||||||
*
|
|
||||||
* @param list 员工信息列表
|
|
||||||
* @return 影响行数
|
|
||||||
*/
|
|
||||||
int insertBatch(@Param("list") List<CcdiBaseStaff> list);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询员工选项(用于下拉选择框)
|
|
||||||
* <p>支持按员工ID或姓名模糊搜索,只返回在职员工</p>
|
|
||||||
*
|
|
||||||
* @param query 搜索关键词(员工ID或姓名),可为空
|
|
||||||
* @return 员工选项列表,最多返回100条
|
|
||||||
*/
|
|
||||||
List<CcdiBaseStaffOptionVO> selectStaffOptions(@Param("query") String query);
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.mapper;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.ruoyi.info.collection.domain.CcdiBizIntermediary;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 个人中介Mapper接口
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-04
|
|
||||||
*/
|
|
||||||
@Mapper
|
|
||||||
public interface CcdiBizIntermediaryMapper extends BaseMapper<CcdiBizIntermediary> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量插入个人中介
|
|
||||||
*
|
|
||||||
* @param list 个人中介列表
|
|
||||||
* @return 插入行数
|
|
||||||
*/
|
|
||||||
int insertBatch(List<CcdiBizIntermediary> list);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量导入个人中介数据(使用ON DUPLICATE KEY UPDATE)
|
|
||||||
*
|
|
||||||
* @param list 个人中介列表
|
|
||||||
* @return 影响行数
|
|
||||||
*/
|
|
||||||
int importPersonBatch(@Param("list") List<CcdiBizIntermediary> list);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量更新个人中介
|
|
||||||
*
|
|
||||||
* @param list 个人中介列表
|
|
||||||
* @return 更新行数
|
|
||||||
*/
|
|
||||||
int updateBatch(List<CcdiBizIntermediary> list);
|
|
||||||
}
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.mapper;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.CcdiCustEnterpriseRelation;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiCustEnterpriseRelationQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiCustEnterpriseRelationVO;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户实体关联信息 数据层
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-12
|
|
||||||
*/
|
|
||||||
@Mapper
|
|
||||||
public interface CcdiCustEnterpriseRelationMapper extends BaseMapper<CcdiCustEnterpriseRelation> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页查询信贷客户实体关联列表
|
|
||||||
*
|
|
||||||
* @param page 分页对象
|
|
||||||
* @param queryDTO 查询条件
|
|
||||||
* @return 信贷客户实体关联VO分页结果
|
|
||||||
*/
|
|
||||||
Page<CcdiCustEnterpriseRelationVO> selectRelationPage(@Param("page") Page<CcdiCustEnterpriseRelationVO> page,
|
|
||||||
@Param("query") CcdiCustEnterpriseRelationQueryDTO queryDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询信贷客户实体关联详情
|
|
||||||
*
|
|
||||||
* @param id 主键ID
|
|
||||||
* @return 信贷客户实体关联VO
|
|
||||||
*/
|
|
||||||
CcdiCustEnterpriseRelationVO selectRelationById(@Param("id") Long id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 判断身份证号和统一社会信用代码的组合是否已存在
|
|
||||||
*
|
|
||||||
* @param personId 身份证号
|
|
||||||
* @param socialCreditCode 统一社会信用代码
|
|
||||||
* @return 存在返回true,否则返回false
|
|
||||||
*/
|
|
||||||
boolean existsByPersonIdAndSocialCreditCode(@Param("personId") String personId,
|
|
||||||
@Param("socialCreditCode") String socialCreditCode);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量查询已存在的person_id + social_credit_code组合
|
|
||||||
* 优化导入性能,一次性查询所有组合
|
|
||||||
*
|
|
||||||
* @param combinations 组合列表,格式为 ["personId1|socialCreditCode1", "personId2|socialCreditCode2", ...]
|
|
||||||
* @return 已存在的组合集合
|
|
||||||
*/
|
|
||||||
Set<String> batchExistsByCombinations(@Param("combinations") List<String> combinations);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量插入信贷客户实体关联数据
|
|
||||||
*
|
|
||||||
* @param list 信贷客户实体关联列表
|
|
||||||
* @return 插入行数
|
|
||||||
*/
|
|
||||||
int insertBatch(@Param("list") List<CcdiCustEnterpriseRelation> list);
|
|
||||||
}
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.mapper;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.CcdiCustFmyRelation;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiCustFmyRelationQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiCustFmyRelationVO;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户家庭关系Mapper接口
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-11
|
|
||||||
*/
|
|
||||||
public interface CcdiCustFmyRelationMapper extends BaseMapper<CcdiCustFmyRelation> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页查询信贷客户家庭关系
|
|
||||||
*
|
|
||||||
* @param page 分页对象
|
|
||||||
* @param query 查询条件
|
|
||||||
* @return 信贷客户家庭关系VO列表
|
|
||||||
*/
|
|
||||||
Page<CcdiCustFmyRelationVO> selectRelationPage(Page<CcdiCustFmyRelationVO> page,
|
|
||||||
@Param("query") CcdiCustFmyRelationQueryDTO query);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据ID查询信贷客户家庭关系详情
|
|
||||||
*
|
|
||||||
* @param id 主键ID
|
|
||||||
* @return 信贷客户家庭关系VO
|
|
||||||
*/
|
|
||||||
CcdiCustFmyRelationVO selectRelationById(@Param("id") Long id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询已存在的关系记录(用于导入校验)
|
|
||||||
*
|
|
||||||
* @param personId 信贷客户身份证号
|
|
||||||
* @param relationType 关系类型
|
|
||||||
* @param relationCertNo 关系人证件号码
|
|
||||||
* @return 已存在的关系记录
|
|
||||||
*/
|
|
||||||
CcdiCustFmyRelation selectExistingRelations(@Param("personId") String personId,
|
|
||||||
@Param("relationType") String relationType,
|
|
||||||
@Param("relationCertNo") String relationCertNo);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量插入信贷客户家庭关系
|
|
||||||
*
|
|
||||||
* @param relations 信贷客户家庭关系列表
|
|
||||||
* @return 插入条数
|
|
||||||
*/
|
|
||||||
int insertBatch(@Param("relations") List<CcdiCustFmyRelation> relations);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据证件号码查询关系数量
|
|
||||||
*
|
|
||||||
* @param relationCertNo 关系人证件号码
|
|
||||||
* @return 关系数量
|
|
||||||
*/
|
|
||||||
int countByCertNo(@Param("relationCertNo") String relationCertNo);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量查询已存在的关系组合(性能优化)
|
|
||||||
* 一次性查询所有 person_id + relation_type + relation_cert_no 组合
|
|
||||||
*
|
|
||||||
* @param combinations 组合列表,格式为 "personId|relationType|relationCertNo"
|
|
||||||
* @return 已存在的组合列表
|
|
||||||
*/
|
|
||||||
List<String> batchExistsByCombinations(@Param("combinations") List<String> combinations);
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.mapper;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.ruoyi.info.collection.domain.CcdiEnterpriseBaseInfo;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 实体中介Mapper接口
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-04
|
|
||||||
*/
|
|
||||||
@Mapper
|
|
||||||
public interface CcdiEnterpriseBaseInfoMapper extends BaseMapper<CcdiEnterpriseBaseInfo> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量插入实体中介
|
|
||||||
*
|
|
||||||
* @param list 实体中介列表
|
|
||||||
* @return 插入行数
|
|
||||||
*/
|
|
||||||
int insertBatch(List<CcdiEnterpriseBaseInfo> list);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量导入实体中介数据(存在则更新,不存在则插入)
|
|
||||||
*
|
|
||||||
* @param list 实体中介列表
|
|
||||||
* @return 影响行数
|
|
||||||
*/
|
|
||||||
int importEntityBatch(@Param("list") List<CcdiEnterpriseBaseInfo> list);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量更新实体中介
|
|
||||||
*
|
|
||||||
* @param list 实体中介列表
|
|
||||||
* @return 更新行数
|
|
||||||
*/
|
|
||||||
int updateBatch(List<CcdiEnterpriseBaseInfo> list);
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.mapper;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiIntermediaryQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiIntermediaryVO;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 中介黑名单联合查询Mapper接口
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-05
|
|
||||||
*/
|
|
||||||
@Mapper
|
|
||||||
public interface CcdiIntermediaryMapper {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 联合查询中介列表(支持MyBatis Plus分页)
|
|
||||||
* 通过UNION ALL联合查询个人中介和实体中介
|
|
||||||
* 支持按中介类型筛选(1=个人, 2=实体, null=全部)
|
|
||||||
*
|
|
||||||
* @param page 分页对象
|
|
||||||
* @param queryDTO 查询条件
|
|
||||||
* @return 中介VO分页结果
|
|
||||||
*/
|
|
||||||
Page<CcdiIntermediaryVO> selectIntermediaryList(Page<CcdiIntermediaryVO> page, @Param("query") CcdiIntermediaryQueryDTO queryDTO);
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.mapper;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.CcdiPurchaseTransaction;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiPurchaseTransactionQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiPurchaseTransactionVO;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购交易信息 数据层
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-06
|
|
||||||
*/
|
|
||||||
public interface CcdiPurchaseTransactionMapper extends BaseMapper<CcdiPurchaseTransaction> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页查询采购交易列表
|
|
||||||
*
|
|
||||||
* @param page 分页对象
|
|
||||||
* @param queryDTO 查询条件
|
|
||||||
* @return 采购交易VO分页结果
|
|
||||||
*/
|
|
||||||
Page<CcdiPurchaseTransactionVO> selectTransactionPage(@Param("page") Page<CcdiPurchaseTransactionVO> page,
|
|
||||||
@Param("query") CcdiPurchaseTransactionQueryDTO queryDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询采购交易详情
|
|
||||||
*
|
|
||||||
* @param purchaseId 采购事项ID
|
|
||||||
* @return 采购交易VO
|
|
||||||
*/
|
|
||||||
CcdiPurchaseTransactionVO selectTransactionById(@Param("purchaseId") String purchaseId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量插入采购交易数据
|
|
||||||
*
|
|
||||||
* @param list 采购交易列表
|
|
||||||
* @return 插入行数
|
|
||||||
*/
|
|
||||||
int insertBatch(@Param("list") List<CcdiPurchaseTransaction> list);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量更新采购交易数据(先删除再插入)
|
|
||||||
*
|
|
||||||
* @param list 采购交易列表
|
|
||||||
* @return 更新行数
|
|
||||||
*/
|
|
||||||
int insertOrUpdateBatch(@Param("list") List<CcdiPurchaseTransaction> list);
|
|
||||||
}
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.mapper;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.CcdiStaffEnterpriseRelation;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiStaffEnterpriseRelationQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiStaffEnterpriseRelationVO;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工实体关系信息 数据层
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
@Mapper
|
|
||||||
public interface CcdiStaffEnterpriseRelationMapper extends BaseMapper<CcdiStaffEnterpriseRelation> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页查询员工实体关系列表
|
|
||||||
*
|
|
||||||
* @param page 分页对象
|
|
||||||
* @param queryDTO 查询条件
|
|
||||||
* @return 员工实体关系VO分页结果
|
|
||||||
*/
|
|
||||||
Page<CcdiStaffEnterpriseRelationVO> selectRelationPage(@Param("page") Page<CcdiStaffEnterpriseRelationVO> page,
|
|
||||||
@Param("query") CcdiStaffEnterpriseRelationQueryDTO queryDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询员工实体关系详情
|
|
||||||
*
|
|
||||||
* @param id 主键ID
|
|
||||||
* @return 员工实体关系VO
|
|
||||||
*/
|
|
||||||
CcdiStaffEnterpriseRelationVO selectRelationById(@Param("id") Long id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 判断身份证号和统一社会信用代码的组合是否已存在
|
|
||||||
*
|
|
||||||
* @param personId 身份证号
|
|
||||||
* @param socialCreditCode 统一社会信用代码
|
|
||||||
* @return 存在返回true,否则返回false
|
|
||||||
*/
|
|
||||||
boolean existsByPersonIdAndSocialCreditCode(@Param("personId") String personId,
|
|
||||||
@Param("socialCreditCode") String socialCreditCode);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量查询已存在的person_id + social_credit_code组合
|
|
||||||
* 优化导入性能,一次性查询所有组合
|
|
||||||
*
|
|
||||||
* @param combinations 组合列表,格式为 ["personId1|socialCreditCode1", "personId2|socialCreditCode2", ...]
|
|
||||||
* @return 已存在的组合集合
|
|
||||||
*/
|
|
||||||
Set<String> batchExistsByCombinations(@Param("combinations") List<String> combinations);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量插入员工实体关系数据
|
|
||||||
*
|
|
||||||
* @param list 员工实体关系列表
|
|
||||||
* @return 插入行数
|
|
||||||
*/
|
|
||||||
int insertBatch(@Param("list") List<CcdiStaffEnterpriseRelation> list);
|
|
||||||
}
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.mapper;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.CcdiStaffFmyRelation;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiStaffFmyRelationQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiStaffFmyRelationVO;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工亲属关系 数据层
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-09
|
|
||||||
*/
|
|
||||||
public interface CcdiStaffFmyRelationMapper extends BaseMapper<CcdiStaffFmyRelation> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页查询员工亲属关系列表
|
|
||||||
*
|
|
||||||
* @param page 分页对象
|
|
||||||
* @param queryDTO 查询条件
|
|
||||||
* @return 员工亲属关系VO分页结果
|
|
||||||
*/
|
|
||||||
Page<CcdiStaffFmyRelationVO> selectRelationPage(@Param("page") Page<CcdiStaffFmyRelationVO> page,
|
|
||||||
@Param("query") CcdiStaffFmyRelationQueryDTO queryDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询员工亲属关系详情
|
|
||||||
*
|
|
||||||
* @param id 主键ID
|
|
||||||
* @return 员工亲属关系VO
|
|
||||||
*/
|
|
||||||
CcdiStaffFmyRelationVO selectRelationById(@Param("id") Long id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询员工亲属关系列表(用于导出)
|
|
||||||
*
|
|
||||||
* @param queryDTO 查询条件
|
|
||||||
* @return 员工亲属关系VO列表
|
|
||||||
*/
|
|
||||||
List<CcdiStaffFmyRelationVO> selectRelationListForExport(@Param("query") CcdiStaffFmyRelationQueryDTO queryDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量插入员工亲属关系数据
|
|
||||||
*
|
|
||||||
* @param list 员工亲属关系列表
|
|
||||||
* @return 插入行数
|
|
||||||
*/
|
|
||||||
int insertBatch(@Param("list") List<CcdiStaffFmyRelation> list);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量查询已存在的员工亲属关系(用于导入唯一性校验)
|
|
||||||
*
|
|
||||||
* @param personIds 员工身份证号列表
|
|
||||||
* @param relationCertNos 关系人证件号码列表
|
|
||||||
* @return 已存在的记录列表
|
|
||||||
*/
|
|
||||||
List<CcdiStaffFmyRelation> selectExistingRelations(@Param("personIds") List<String> personIds,
|
|
||||||
@Param("relationCertNos") List<String> relationCertNos);
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.mapper;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.CcdiStaffRecruitment;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiStaffRecruitmentQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiStaffRecruitmentVO;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工招聘信息 数据层
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2025-02-05
|
|
||||||
*/
|
|
||||||
public interface CcdiStaffRecruitmentMapper extends BaseMapper<CcdiStaffRecruitment> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页查询招聘信息列表
|
|
||||||
*
|
|
||||||
* @param page 分页对象
|
|
||||||
* @param queryDTO 查询条件
|
|
||||||
* @return 招聘信息VO分页结果
|
|
||||||
*/
|
|
||||||
Page<CcdiStaffRecruitmentVO> selectRecruitmentPage(@Param("page") Page<CcdiStaffRecruitmentVO> page,
|
|
||||||
@Param("query") CcdiStaffRecruitmentQueryDTO queryDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询招聘信息详情
|
|
||||||
*
|
|
||||||
* @param recruitId 招聘项目编号
|
|
||||||
* @return 招聘信息VO
|
|
||||||
*/
|
|
||||||
CcdiStaffRecruitmentVO selectRecruitmentById(@Param("recruitId") String recruitId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量插入招聘信息数据
|
|
||||||
*
|
|
||||||
* @param list 招聘信息列表
|
|
||||||
* @return 插入行数
|
|
||||||
*/
|
|
||||||
int insertBatch(@Param("list") List<CcdiStaffRecruitment> list);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量更新招聘信息数据
|
|
||||||
*
|
|
||||||
* @param list 招聘信息列表
|
|
||||||
* @return 更新行数
|
|
||||||
*/
|
|
||||||
int updateBatch(@Param("list") List<CcdiStaffRecruitment> list);
|
|
||||||
}
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.mapper;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.CcdiStaffTransfer;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiStaffTransferQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.TransferUniqueKey;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiStaffTransferVO;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工调动记录 数据层
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-10
|
|
||||||
*/
|
|
||||||
public interface CcdiStaffTransferMapper extends BaseMapper<CcdiStaffTransfer> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页查询员工调动记录列表
|
|
||||||
*
|
|
||||||
* @param page 分页对象
|
|
||||||
* @param queryDTO 查询条件
|
|
||||||
* @return 员工调动记录VO分页结果
|
|
||||||
*/
|
|
||||||
Page<CcdiStaffTransferVO> selectTransferPage(@Param("page") Page<CcdiStaffTransferVO> page,
|
|
||||||
@Param("query") CcdiStaffTransferQueryDTO queryDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询员工调动记录详情
|
|
||||||
*
|
|
||||||
* @param id 主键ID
|
|
||||||
* @return 员工调动记录VO
|
|
||||||
*/
|
|
||||||
CcdiStaffTransferVO selectTransferById(@Param("id") Long id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询员工调动记录列表(用于导出)
|
|
||||||
*
|
|
||||||
* @param queryDTO 查询条件
|
|
||||||
* @return 员工调动记录VO列表
|
|
||||||
*/
|
|
||||||
List<CcdiStaffTransferVO> selectTransferListForExport(@Param("query") CcdiStaffTransferQueryDTO queryDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量插入员工调动记录数据
|
|
||||||
*
|
|
||||||
* @param list 员工调动记录列表
|
|
||||||
* @return 插入行数
|
|
||||||
*/
|
|
||||||
int insertBatch(@Param("list") List<CcdiStaffTransfer> list);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询单条记录是否存在(根据唯一键:员工ID + 调动前部门ID + 调动后部门ID + 调动日期)
|
|
||||||
*
|
|
||||||
* @param key 唯一键
|
|
||||||
* @return 存在的记录,不存在返回null
|
|
||||||
*/
|
|
||||||
CcdiStaffTransfer checkExists(@Param("key") TransferUniqueKey key);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询单条记录是否存在(排除指定ID)
|
|
||||||
*
|
|
||||||
* @param key 唯一键
|
|
||||||
* @param excludeId 排除的记录ID
|
|
||||||
* @return 存在的记录,不存在返回null
|
|
||||||
*/
|
|
||||||
CcdiStaffTransfer checkExistsExcludeId(@Param("key") TransferUniqueKey key,
|
|
||||||
@Param("excludeId") Long excludeId);
|
|
||||||
}
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.service;
|
|
||||||
|
|
||||||
import com.ruoyi.info.collection.domain.excel.CcdiBaseStaffExcel;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportFailureVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportStatusVO;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Author: wkc
|
|
||||||
* @CreateTime: 2026-02-06
|
|
||||||
*/
|
|
||||||
public interface ICcdiBaseStaffImportService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 异步导入员工数据
|
|
||||||
*
|
|
||||||
* @param excelList Excel数据列表
|
|
||||||
* @param isUpdateSupport 是否更新已存在的数据
|
|
||||||
*/
|
|
||||||
void importBaseStaffAsync(List<CcdiBaseStaffExcel> excelList, Boolean isUpdateSupport, String taskId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入状态
|
|
||||||
*
|
|
||||||
* @param taskId 任务ID
|
|
||||||
* @return 导入状态信息
|
|
||||||
*/
|
|
||||||
ImportStatusVO getImportStatus(String taskId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取导入失败记录
|
|
||||||
*
|
|
||||||
* @param taskId 任务ID
|
|
||||||
* @return 失败记录列表
|
|
||||||
*/
|
|
||||||
List<ImportFailureVO> getImportFailures(String taskId);
|
|
||||||
}
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.service;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiBaseStaffAddDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiBaseStaffEditDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiBaseStaffQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.excel.CcdiBaseStaffExcel;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiBaseStaffOptionVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiBaseStaffVO;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 员工信息 服务层
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-01-28
|
|
||||||
*/
|
|
||||||
public interface ICcdiBaseStaffService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询员工列表
|
|
||||||
*
|
|
||||||
* @param queryDTO 查询条件
|
|
||||||
* @return 员工VO集合
|
|
||||||
*/
|
|
||||||
List<CcdiBaseStaffVO> selectBaseStaffList(CcdiBaseStaffQueryDTO queryDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页查询员工列表
|
|
||||||
*
|
|
||||||
* @param page 分页对象
|
|
||||||
* @param queryDTO 查询条件
|
|
||||||
* @return 员工VO分页结果
|
|
||||||
*/
|
|
||||||
Page<CcdiBaseStaffVO> selectBaseStaffPage(Page<CcdiBaseStaffVO> page, CcdiBaseStaffQueryDTO queryDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询员工列表(用于导出)
|
|
||||||
*
|
|
||||||
* @param queryDTO 查询条件
|
|
||||||
* @return 员工Excel实体集合
|
|
||||||
*/
|
|
||||||
List<CcdiBaseStaffExcel> selectBaseStaffListForExport(CcdiBaseStaffQueryDTO queryDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询员工详情
|
|
||||||
*
|
|
||||||
* @param staffId 员工ID
|
|
||||||
* @return 员工VO
|
|
||||||
*/
|
|
||||||
CcdiBaseStaffVO selectBaseStaffById(Long staffId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增员工
|
|
||||||
*
|
|
||||||
* @param addDTO 新增DTO
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
int insertBaseStaff(CcdiBaseStaffAddDTO addDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改员工
|
|
||||||
*
|
|
||||||
* @param editDTO 编辑DTO
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
int updateBaseStaff(CcdiBaseStaffEditDTO editDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量删除员工
|
|
||||||
*
|
|
||||||
* @param staffIds 需要删除的员工ID
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
int deleteBaseStaffByIds(Long[] staffIds);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导入员工数据
|
|
||||||
*
|
|
||||||
* @param excelList Excel实体列表
|
|
||||||
* @param isUpdateSupport 是否更新支持
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
String importBaseStaff(List<CcdiBaseStaffExcel> excelList, Boolean isUpdateSupport);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询员工下拉列表
|
|
||||||
* 支持按员工ID或姓名模糊搜索,只返回在职员工
|
|
||||||
*
|
|
||||||
* @param query 搜索关键词(员工ID或姓名)
|
|
||||||
* @return 员工选项列表
|
|
||||||
*/
|
|
||||||
List<CcdiBaseStaffOptionVO> selectStaffOptions(String query);
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.service;
|
|
||||||
|
|
||||||
import com.ruoyi.info.collection.domain.excel.CcdiCustEnterpriseRelationExcel;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CustEnterpriseRelationImportFailureVO;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.ImportStatusVO;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户实体关联信息异步导入服务层
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-12
|
|
||||||
*/
|
|
||||||
public interface ICcdiCustEnterpriseRelationImportService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 异步导入信贷客户实体关联数据
|
|
||||||
*
|
|
||||||
* @param excelList Excel数据列表
|
|
||||||
* @param taskId 任务ID
|
|
||||||
* @param userName 用户名
|
|
||||||
*/
|
|
||||||
void importRelationAsync(List<CcdiCustEnterpriseRelationExcel> excelList, String taskId, String userName);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取导入失败记录
|
|
||||||
*
|
|
||||||
* @param taskId 任务ID
|
|
||||||
* @return 失败记录列表
|
|
||||||
*/
|
|
||||||
List<CustEnterpriseRelationImportFailureVO> getImportFailures(String taskId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询导入状态
|
|
||||||
*
|
|
||||||
* @param taskId 任务ID
|
|
||||||
* @return 导入状态信息
|
|
||||||
*/
|
|
||||||
ImportStatusVO getImportStatus(String taskId);
|
|
||||||
}
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
package com.ruoyi.info.collection.service;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiCustEnterpriseRelationAddDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiCustEnterpriseRelationEditDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.dto.CcdiCustEnterpriseRelationQueryDTO;
|
|
||||||
import com.ruoyi.info.collection.domain.excel.CcdiCustEnterpriseRelationExcel;
|
|
||||||
import com.ruoyi.info.collection.domain.vo.CcdiCustEnterpriseRelationVO;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 信贷客户实体关联信息 服务层
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
* @date 2026-02-12
|
|
||||||
*/
|
|
||||||
public interface ICcdiCustEnterpriseRelationService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询信贷客户实体关联列表
|
|
||||||
*
|
|
||||||
* @param queryDTO 查询条件
|
|
||||||
* @return 信贷客户实体关联VO集合
|
|
||||||
*/
|
|
||||||
List<CcdiCustEnterpriseRelationVO> selectRelationList(CcdiCustEnterpriseRelationQueryDTO queryDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页查询信贷客户实体关联列表
|
|
||||||
*
|
|
||||||
* @param page 分页对象
|
|
||||||
* @param queryDTO 查询条件
|
|
||||||
* @return 信贷客户实体关联VO分页结果
|
|
||||||
*/
|
|
||||||
Page<CcdiCustEnterpriseRelationVO> selectRelationPage(Page<CcdiCustEnterpriseRelationVO> page, CcdiCustEnterpriseRelationQueryDTO queryDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询信贷客户实体关联列表(用于导出)
|
|
||||||
*
|
|
||||||
* @param queryDTO 查询条件
|
|
||||||
* @return 信贷客户实体关联Excel实体集合
|
|
||||||
*/
|
|
||||||
List<CcdiCustEnterpriseRelationExcel> selectRelationListForExport(CcdiCustEnterpriseRelationQueryDTO queryDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询信贷客户实体关联详情
|
|
||||||
*
|
|
||||||
* @param id 主键ID
|
|
||||||
* @return 信贷客户实体关联VO
|
|
||||||
*/
|
|
||||||
CcdiCustEnterpriseRelationVO selectRelationById(Long id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增信贷客户实体关联
|
|
||||||
*
|
|
||||||
* @param addDTO 新增DTO
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
int insertRelation(CcdiCustEnterpriseRelationAddDTO addDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改信贷客户实体关联
|
|
||||||
*
|
|
||||||
* @param editDTO 编辑DTO
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
int updateRelation(CcdiCustEnterpriseRelationEditDTO editDTO);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量删除信贷客户实体关联
|
|
||||||
*
|
|
||||||
* @param ids 需要删除的主键ID
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
int deleteRelationByIds(Long[] ids);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导入信贷客户实体关联数据(异步)
|
|
||||||
*
|
|
||||||
* @param excelList Excel实体列表
|
|
||||||
* @return 任务ID
|
|
||||||
*/
|
|
||||||
String importRelation(List<CcdiCustEnterpriseRelationExcel> excelList);
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user