refactor: 重命名 ruoyi-info-collection 模块为 ccdi-info-collection
- 重命名模块目录 ruoyi-info-collection -> ccdi-info-collection - 更新所有 pom.xml 中的模块引用 - 更新 IDEA 配置文件 (compiler.xml, encodings.xml) - Java 包名保持不变 (com.ruoyi.info.collection) - 编译测试通过
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,205 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,200 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,193 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
package com.ruoyi.info.collection.controller;
|
||||
|
||||
import com.ruoyi.info.collection.domain.vo.EnumOptionVO;
|
||||
import com.ruoyi.info.collection.enums.*;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* DPC枚举接口Controller
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Tag(name = "枚举接口", description = "中介黑名单相关枚举选项接口")
|
||||
@RestController
|
||||
@RequestMapping("/ccdi/enum")
|
||||
public class CcdiEnumController {
|
||||
|
||||
/**
|
||||
* 获取人员类型选项
|
||||
*/
|
||||
@Operation(summary = "获取人员类型选项")
|
||||
@GetMapping("/indivType")
|
||||
public AjaxResult getIndivTypeOptions() {
|
||||
List<EnumOptionVO> options = new ArrayList<>();
|
||||
for (IndivType type : IndivType.values()) {
|
||||
options.add(new EnumOptionVO(type.getCode(), type.getDesc()));
|
||||
}
|
||||
return AjaxResult.success(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取性别选项
|
||||
*/
|
||||
@Operation(summary = "获取性别选项")
|
||||
@GetMapping("/gender")
|
||||
public AjaxResult getGenderOptions() {
|
||||
List<EnumOptionVO> options = new ArrayList<>();
|
||||
for (Gender gender : Gender.values()) {
|
||||
options.add(new EnumOptionVO(gender.getCode(), gender.getDesc()));
|
||||
}
|
||||
return AjaxResult.success(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取证件类型选项
|
||||
*/
|
||||
@Operation(summary = "获取证件类型选项")
|
||||
@GetMapping("/certType")
|
||||
public AjaxResult getCertTypeOptions() {
|
||||
List<EnumOptionVO> options = new ArrayList<>();
|
||||
for (CertType type : CertType.values()) {
|
||||
options.add(new EnumOptionVO(type.getCode(), type.getDesc()));
|
||||
}
|
||||
return AjaxResult.success(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取关联关系选项
|
||||
*/
|
||||
@Operation(summary = "获取关联关系选项")
|
||||
@GetMapping("/relationType")
|
||||
public AjaxResult getRelationTypeOptions() {
|
||||
List<EnumOptionVO> options = new ArrayList<>();
|
||||
for (RelationType type : RelationType.values()) {
|
||||
options.add(new EnumOptionVO(type.getCode(), type.getDesc()));
|
||||
}
|
||||
return AjaxResult.success(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主体类型选项
|
||||
*/
|
||||
@Operation(summary = "获取主体类型选项")
|
||||
@GetMapping("/corpType")
|
||||
public AjaxResult getCorpTypeOptions() {
|
||||
List<EnumOptionVO> options = new ArrayList<>();
|
||||
for (CorpType type : CorpType.values()) {
|
||||
options.add(new EnumOptionVO(type.getCode(), type.getDesc()));
|
||||
}
|
||||
return AjaxResult.success(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取企业性质选项
|
||||
*/
|
||||
@Operation(summary = "获取企业性质选项")
|
||||
@GetMapping("/corpNature")
|
||||
public AjaxResult getCorpNatureOptions() {
|
||||
List<EnumOptionVO> options = new ArrayList<>();
|
||||
for (CorpNature nature : CorpNature.values()) {
|
||||
options.add(new EnumOptionVO(nature.getCode(), nature.getDesc()));
|
||||
}
|
||||
return AjaxResult.success(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取中介类型选项
|
||||
*/
|
||||
@Operation(summary = "获取中介类型选项")
|
||||
@GetMapping("/intermediaryType")
|
||||
public AjaxResult getIntermediaryTypeOptions() {
|
||||
List<EnumOptionVO> options = new ArrayList<>();
|
||||
for (IntermediaryType type : IntermediaryType.values()) {
|
||||
options.add(new EnumOptionVO(type.getCode(), type.getDesc()));
|
||||
}
|
||||
return AjaxResult.success(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取中介状态选项
|
||||
*/
|
||||
@Operation(summary = "获取中介状态选项")
|
||||
@GetMapping("/intermediaryStatus")
|
||||
public AjaxResult getIntermediaryStatusOptions() {
|
||||
List<EnumOptionVO> options = new ArrayList<>();
|
||||
for (IntermediaryStatus status : IntermediaryStatus.values()) {
|
||||
options.add(new EnumOptionVO(status.getCode(), status.getDesc()));
|
||||
}
|
||||
return AjaxResult.success(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据来源选项
|
||||
*/
|
||||
@Operation(summary = "获取数据来源选项")
|
||||
@GetMapping("/dataSource")
|
||||
public AjaxResult getDataSourceOptions() {
|
||||
List<EnumOptionVO> options = new ArrayList<>();
|
||||
for (DataSource source : DataSource.values()) {
|
||||
options.add(new EnumOptionVO(source.getCode(), source.getDesc()));
|
||||
}
|
||||
return AjaxResult.success(options);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,318 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,199 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
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_base_staff
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-01-28
|
||||
*/
|
||||
@Data
|
||||
@TableName("ccdi_base_staff")
|
||||
public class CcdiBaseStaff implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 员工ID */
|
||||
@TableId(type = IdType.INPUT)
|
||||
private Long staffId;
|
||||
|
||||
/** 姓名 */
|
||||
private String name;
|
||||
|
||||
/** 所属部门ID */
|
||||
private Long deptId;
|
||||
|
||||
/** 身份证号 */
|
||||
private String idCard;
|
||||
|
||||
/** 电话 */
|
||||
private String phone;
|
||||
|
||||
/** 入职时间 */
|
||||
private Date hireDate;
|
||||
|
||||
/** 状态 */
|
||||
private String status;
|
||||
|
||||
/** 创建者 */
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private String createBy;
|
||||
|
||||
/** 创建时间 */
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
/** 更新者 */
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private String updateBy;
|
||||
|
||||
/** 更新时间 */
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private Date updateTime;
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,109 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.ruoyi.info.collection.domain.dto;
|
||||
|
||||
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-01-28
|
||||
*/
|
||||
@Data
|
||||
public class CcdiBaseStaffAddDTO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 姓名 */
|
||||
@NotBlank(message = "姓名不能为空")
|
||||
@Size(max = 100, message = "姓名长度不能超过100个字符")
|
||||
private String name;
|
||||
|
||||
/** 员工ID */
|
||||
@NotNull(message = "员工ID不能为空")
|
||||
private Long staffId;
|
||||
|
||||
/** 所属部门ID */
|
||||
@NotNull(message = "所属部门不能为空")
|
||||
private Long deptId;
|
||||
|
||||
/** 身份证号 */
|
||||
@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 idCard;
|
||||
|
||||
/** 电话 */
|
||||
@NotBlank(message = "电话不能为空")
|
||||
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "电话格式不正确")
|
||||
private String phone;
|
||||
|
||||
/** 入职时间 */
|
||||
private Date hireDate;
|
||||
|
||||
/** 状态 */
|
||||
@NotBlank(message = "状态不能为空")
|
||||
private String status;
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.ruoyi.info.collection.domain.dto;
|
||||
|
||||
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-01-28
|
||||
*/
|
||||
@Data
|
||||
public class CcdiBaseStaffEditDTO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 员工ID */
|
||||
@NotNull(message = "员工ID不能为空")
|
||||
private Long staffId;
|
||||
|
||||
/** 姓名 */
|
||||
@Size(max = 100, message = "姓名长度不能超过100个字符")
|
||||
private String name;
|
||||
|
||||
/** 所属部门ID */
|
||||
@NotNull(message = "所属部门不能为空")
|
||||
private Long deptId;
|
||||
|
||||
/** 身份证号 */
|
||||
@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 idCard;
|
||||
|
||||
/** 电话 */
|
||||
@NotBlank(message = "电话不能为空")
|
||||
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "电话格式不正确")
|
||||
private String phone;
|
||||
|
||||
/** 入职时间 */
|
||||
private Date hireDate;
|
||||
|
||||
/** 状态 */
|
||||
private String status;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.ruoyi.info.collection.domain.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 员工信息查询 DTO
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-01-28
|
||||
*/
|
||||
@Data
|
||||
public class CcdiBaseStaffQueryDTO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 姓名(模糊查询) */
|
||||
private String name;
|
||||
|
||||
/** 员工ID(精确查询) */
|
||||
private Long staffId;
|
||||
|
||||
/** 所属部门ID */
|
||||
private Long deptId;
|
||||
|
||||
/** 身份证号(模糊查询) */
|
||||
private String idCard;
|
||||
|
||||
/** 状态 */
|
||||
private String status;
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,125 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,125 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
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-01-28
|
||||
*/
|
||||
@Data
|
||||
public class CcdiBaseStaffExcel implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 姓名 */
|
||||
@ExcelProperty(value = "姓名", index = 0)
|
||||
@ColumnWidth(15)
|
||||
@Required
|
||||
private String name;
|
||||
|
||||
/** 员工ID */
|
||||
@ExcelProperty(value = "员工ID", index = 1)
|
||||
@ColumnWidth(15)
|
||||
@Required
|
||||
private Long staffId;
|
||||
|
||||
/** 所属部门ID */
|
||||
@ExcelProperty(value = "所属部门ID", index = 2)
|
||||
@ColumnWidth(15)
|
||||
@Required
|
||||
private Long deptId;
|
||||
|
||||
/** 身份证号 */
|
||||
@ExcelProperty(value = "身份证号", index = 3)
|
||||
@ColumnWidth(20)
|
||||
@Required
|
||||
private String idCard;
|
||||
|
||||
/** 电话 */
|
||||
@ExcelProperty(value = "电话", index = 4)
|
||||
@ColumnWidth(15)
|
||||
@Required
|
||||
private String phone;
|
||||
|
||||
/** 入职时间 */
|
||||
@ExcelProperty(value = "入职时间", index = 5)
|
||||
@ColumnWidth(15)
|
||||
private Date hireDate;
|
||||
|
||||
/** 状态 */
|
||||
@ExcelProperty(value = "状态", index = 6)
|
||||
@ColumnWidth(10)
|
||||
@DictDropdown(dictType = "ccdi_employee_status")
|
||||
@Required
|
||||
private String status;
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
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;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 实体中介Excel导入导出对象
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-02-04
|
||||
*/
|
||||
@Data
|
||||
public class CcdiIntermediaryEntityExcel implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 机构名称 */
|
||||
@ExcelProperty(value = "机构名称*", index = 0)
|
||||
@ColumnWidth(30)
|
||||
private String enterpriseName;
|
||||
|
||||
/** 统一社会信用代码 */
|
||||
@ExcelProperty(value = "统一社会信用代码*", index = 1)
|
||||
@ColumnWidth(20)
|
||||
private String socialCreditCode;
|
||||
|
||||
/** 主体类型 */
|
||||
@ExcelProperty(value = "主体类型", index = 2)
|
||||
@ColumnWidth(15)
|
||||
@DictDropdown(dictType = "ccdi_entity_type")
|
||||
private String enterpriseType;
|
||||
|
||||
/** 企业性质 */
|
||||
@ExcelProperty(value = "企业性质", index = 3)
|
||||
@ColumnWidth(15)
|
||||
@DictDropdown(dictType = "ccdi_enterprise_nature")
|
||||
private String enterpriseNature;
|
||||
|
||||
/** 行业分类 */
|
||||
@ExcelProperty(value = "行业分类", index = 4)
|
||||
@ColumnWidth(15)
|
||||
private String industryClass;
|
||||
|
||||
/** 所属行业 */
|
||||
@ExcelProperty(value = "所属行业", index = 5)
|
||||
@ColumnWidth(15)
|
||||
private String industryName;
|
||||
|
||||
/** 成立日期 */
|
||||
@ExcelProperty(value = "成立日期", index = 6)
|
||||
@ColumnWidth(15)
|
||||
private Date establishDate;
|
||||
|
||||
/** 注册地址 */
|
||||
@ExcelProperty(value = "注册地址", index = 7)
|
||||
@ColumnWidth(40)
|
||||
private String registerAddress;
|
||||
|
||||
/** 法定代表人 */
|
||||
@ExcelProperty(value = "法定代表人", index = 8)
|
||||
@ColumnWidth(15)
|
||||
private String legalRepresentative;
|
||||
|
||||
/** 法定代表人证件类型 */
|
||||
@ExcelProperty(value = "法定代表人证件类型", index = 9)
|
||||
@ColumnWidth(20)
|
||||
@DictDropdown(dictType = "ccdi_certificate_type")
|
||||
private String legalCertType;
|
||||
|
||||
/** 法定代表人证件号码 */
|
||||
@ExcelProperty(value = "法定代表人证件号码", index = 10)
|
||||
@ColumnWidth(20)
|
||||
private String legalCertNo;
|
||||
|
||||
/** 股东1 */
|
||||
@ExcelProperty(value = "股东1", index = 11)
|
||||
@ColumnWidth(15)
|
||||
private String shareholder1;
|
||||
|
||||
/** 股东2 */
|
||||
@ExcelProperty(value = "股东2", index = 12)
|
||||
@ColumnWidth(15)
|
||||
private String shareholder2;
|
||||
|
||||
/** 股东3 */
|
||||
@ExcelProperty(value = "股东3", index = 13)
|
||||
@ColumnWidth(15)
|
||||
private String shareholder3;
|
||||
|
||||
/** 股东4 */
|
||||
@ExcelProperty(value = "股东4", index = 14)
|
||||
@ColumnWidth(15)
|
||||
private String shareholder4;
|
||||
|
||||
/** 股东5 */
|
||||
@ExcelProperty(value = "股东5", index = 15)
|
||||
@ColumnWidth(15)
|
||||
private String shareholder5;
|
||||
|
||||
/** 备注 */
|
||||
@ExcelProperty(value = "备注", index = 16)
|
||||
@ColumnWidth(30)
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
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 2026-01-28
|
||||
*/
|
||||
@Data
|
||||
public class CcdiBaseStaffVO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 员工ID */
|
||||
private Long staffId;
|
||||
|
||||
/** 姓名 */
|
||||
private String name;
|
||||
|
||||
/** 所属部门ID */
|
||||
private Long deptId;
|
||||
|
||||
/** 所属部门名称 */
|
||||
private String deptName;
|
||||
|
||||
/** 身份证号 */
|
||||
private String idCard;
|
||||
|
||||
/** 电话 */
|
||||
private String phone;
|
||||
|
||||
/** 入职时间 */
|
||||
private Date hireDate;
|
||||
|
||||
/** 状态 */
|
||||
private String status;
|
||||
|
||||
/** 状态描述 */
|
||||
private String statusDesc;
|
||||
|
||||
/** 创建时间 */
|
||||
private Date createTime;
|
||||
|
||||
/** 创建者 */
|
||||
private String createBy;
|
||||
|
||||
/** 更新时间 */
|
||||
private Date updateTime;
|
||||
|
||||
/** 更新者 */
|
||||
private String updateBy;
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,148 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,177 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.ruoyi.info.collection.domain.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 枚举选项VO
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class EnumOptionVO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 选项值 */
|
||||
private String value;
|
||||
|
||||
/** 选项标签 */
|
||||
private String label;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.ruoyi.info.collection.enums;
|
||||
|
||||
|
||||
/**
|
||||
* 证件类型枚举
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public enum CertType {
|
||||
|
||||
/** 身份证 */
|
||||
ID_CARD("身份证", "身份证"),
|
||||
|
||||
/** 护照 */
|
||||
PASSPORT("护照", "护照"),
|
||||
|
||||
/** 港澳通行证 */
|
||||
HK_MACAU_PASS("港澳通行证", "港澳通行证"),
|
||||
|
||||
/** 台湾通行证 */
|
||||
TAIWAN_PASS("台湾通行证", "台湾通行证");
|
||||
|
||||
private final String code;
|
||||
private final String desc;
|
||||
|
||||
CertType(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 (CertType type : values()) {
|
||||
if (type.getCode().equals(code)) {
|
||||
return type.getDesc();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.ruoyi.info.collection.enums;
|
||||
|
||||
|
||||
/**
|
||||
* 企业性质枚举
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public enum CorpNature {
|
||||
|
||||
/** 国有企业 */
|
||||
STATE_OWNED("国有企业", "国有企业"),
|
||||
|
||||
/** 民营企业 */
|
||||
PRIVATE("民营企业", "民营企业"),
|
||||
|
||||
/** 外资企业 */
|
||||
FOREIGN("外资企业", "外资企业"),
|
||||
|
||||
/** 合资企业 */
|
||||
JOINT_VENTURE("合资企业", "合资企业"),
|
||||
|
||||
/** 港澳台企业 */
|
||||
HONG_KONG_MACAO_TAIWAN("港澳台企业", "港澳台企业"),
|
||||
|
||||
/** 集体企业 */
|
||||
COLLECTIVE("集体企业", "集体企业"),
|
||||
|
||||
/** 个体工商户 */
|
||||
INDIVIDUAL("个体工商户", "个体工商户"),
|
||||
|
||||
/** 其他 */
|
||||
OTHER("其他", "其他");
|
||||
|
||||
private final String code;
|
||||
private final String desc;
|
||||
|
||||
CorpNature(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 (CorpNature nature : values()) {
|
||||
if (nature.getCode().equals(code)) {
|
||||
return nature.getDesc();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package com.ruoyi.info.collection.enums;
|
||||
|
||||
|
||||
/**
|
||||
* 主体类型枚举
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public enum CorpType {
|
||||
|
||||
/** 有限责任公司 */
|
||||
LIMITED_LIABILITY("有限责任公司", "有限责任公司"),
|
||||
|
||||
/** 股份有限公司 */
|
||||
JOINT_STOCK("股份有限公司", "股份有限公司"),
|
||||
|
||||
/** 个体工商户 */
|
||||
INDIVIDUAL("个体工商户", "个体工商户"),
|
||||
|
||||
/** 合伙企业 */
|
||||
PARTNERSHIP("合伙企业", "合伙企业"),
|
||||
|
||||
/** 个人独资企业 */
|
||||
SOLE_PROPRIETORSHIP("个人独资企业", "个人独资企业"),
|
||||
|
||||
/** 国有企业 */
|
||||
STATE_OWNED("国有企业", "国有企业"),
|
||||
|
||||
/** 集体企业 */
|
||||
COLLECTIVE("集体企业", "集体企业"),
|
||||
|
||||
/** 外商投资企业 */
|
||||
FOREIGN_INVESTED("外商投资企业", "外商投资企业"),
|
||||
|
||||
/** 港澳台投资企业 */
|
||||
HONG_KONG_MACAO_TAIWAN("港澳台投资企业", "港澳台投资企业");
|
||||
|
||||
private final String code;
|
||||
private final String desc;
|
||||
|
||||
CorpType(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 (CorpType type : values()) {
|
||||
if (type.getCode().equals(code)) {
|
||||
return type.getDesc();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.ruoyi.info.collection.enums;
|
||||
|
||||
/**
|
||||
* 数据来源枚举
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public enum DataSource {
|
||||
|
||||
/** 手动录入 */
|
||||
MANUAL("MANUAL", "手动录入"),
|
||||
|
||||
/** 系统同步 */
|
||||
SYSTEM("SYSTEM", "系统同步"),
|
||||
|
||||
/** 批量导入 */
|
||||
IMPORT("IMPORT", "批量导入"),
|
||||
|
||||
/** 接口获取 */
|
||||
API("API", "接口获取");
|
||||
|
||||
private final String code;
|
||||
private final String desc;
|
||||
|
||||
DataSource(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 (DataSource source : values()) {
|
||||
if (source.getCode().equals(code)) {
|
||||
return source.getDesc();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.ruoyi.info.collection.enums;
|
||||
|
||||
|
||||
/**
|
||||
* 员工状态枚举
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public enum EmployeeStatus {
|
||||
|
||||
/** 在职 */
|
||||
ACTIVE("0", "在职"),
|
||||
|
||||
/** 离职 */
|
||||
INACTIVE("1", "离职");
|
||||
|
||||
private final String code;
|
||||
private final String desc;
|
||||
|
||||
EmployeeStatus(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 (EmployeeStatus status : values()) {
|
||||
if (status.getCode().equals(code)) {
|
||||
return status.getDesc();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.ruoyi.info.collection.enums;
|
||||
|
||||
|
||||
/**
|
||||
* 性别枚举
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public enum Gender {
|
||||
|
||||
/** 男 */
|
||||
MALE("M", "男"),
|
||||
|
||||
/** 女 */
|
||||
FEMALE("F", "女"),
|
||||
|
||||
/** 其他 */
|
||||
OTHER("O", "其他");
|
||||
|
||||
private final String code;
|
||||
private final String desc;
|
||||
|
||||
Gender(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 (Gender gender : values()) {
|
||||
if (gender.getCode().equals(code)) {
|
||||
return gender.getDesc();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
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");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.ruoyi.info.collection.enums;
|
||||
|
||||
|
||||
/**
|
||||
* 人员类型枚举
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public enum IndivType {
|
||||
|
||||
/** 房产中介 */
|
||||
REAL_ESTATE_AGENT("房产中介", "房产中介"),
|
||||
|
||||
/** 贷款中介 */
|
||||
LOAN_AGENT("贷款中介", "贷款中介"),
|
||||
|
||||
/** 职业背债人 */
|
||||
PROFESSIONAL_DEBTOR("职业背债人", "职业背债人"),
|
||||
|
||||
/** 担保中介 */
|
||||
GUARANTEE_AGENT("担保中介", "担保中介"),
|
||||
|
||||
/** 评估中介 */
|
||||
EVALUATION_AGENT("评估中介", "评估中介");
|
||||
|
||||
private final String code;
|
||||
private final String desc;
|
||||
|
||||
IndivType(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 (IndivType type : values()) {
|
||||
if (type.getCode().equals(code)) {
|
||||
return type.getDesc();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.ruoyi.info.collection.enums;
|
||||
|
||||
|
||||
/**
|
||||
* 中介状态枚举
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public enum IntermediaryStatus {
|
||||
|
||||
/** 正常 */
|
||||
NORMAL("0", "正常"),
|
||||
|
||||
/** 停用 */
|
||||
DISABLED("1", "停用");
|
||||
|
||||
private final String code;
|
||||
private final String desc;
|
||||
|
||||
IntermediaryStatus(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 (IntermediaryStatus status : values()) {
|
||||
if (status.getCode().equals(code)) {
|
||||
return status.getDesc();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.ruoyi.info.collection.enums;
|
||||
|
||||
|
||||
/**
|
||||
* 中介类型枚举
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public enum IntermediaryType {
|
||||
|
||||
/** 个人 */
|
||||
PERSON("1", "个人"),
|
||||
|
||||
/** 机构 */
|
||||
ENTITY("2", "机构");
|
||||
|
||||
private final String code;
|
||||
private final String desc;
|
||||
|
||||
IntermediaryType(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 (IntermediaryType type : values()) {
|
||||
if (type.getCode().equals(code)) {
|
||||
return type.getDesc();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.ruoyi.info.collection.enums;
|
||||
|
||||
|
||||
/**
|
||||
* 关联关系枚举
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public enum RelationType {
|
||||
|
||||
/** 配偶 */
|
||||
SPOUSE("配偶", "配偶"),
|
||||
|
||||
/** 父子 */
|
||||
FATHER_SON("父子", "父子"),
|
||||
|
||||
/** 母女 */
|
||||
MOTHER_DAUGHTER("母女", "母女"),
|
||||
|
||||
/** 兄弟 */
|
||||
BROTHER("兄弟", "兄弟"),
|
||||
|
||||
/** 姐妹 */
|
||||
SISTER("姐妹", "姐妹"),
|
||||
|
||||
/** 亲属 */
|
||||
RELATIVE("亲属", "亲属"),
|
||||
|
||||
/** 朋友 */
|
||||
FRIEND("朋友", "朋友"),
|
||||
|
||||
/** 同事 */
|
||||
COLLEAGUE("同事", "同事");
|
||||
|
||||
private final String code;
|
||||
private final String desc;
|
||||
|
||||
RelationType(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 (RelationType type : values()) {
|
||||
if (type.getCode().equals(code)) {
|
||||
return type.getDesc();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,336 @@
|
||||
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.DictDropdown;
|
||||
import com.ruoyi.common.core.domain.entity.SysDictData;
|
||||
import com.ruoyi.common.utils.DictUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.apache.poi.ss.util.CellRangeAddressList;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* EasyExcel字典下拉框写入处理器
|
||||
* 在Excel模板生成时,为标注了@DictDropdown注解的字段添加下拉框
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Slf4j
|
||||
public class DictDropdownWriteHandler implements SheetWriteHandler {
|
||||
|
||||
/**
|
||||
* Excel下拉列表直接写入的最大字符数限制
|
||||
*/
|
||||
private static final int MAX_DIRECT_LENGTH = 255;
|
||||
|
||||
/**
|
||||
* 实体类Class对象
|
||||
*/
|
||||
private final Class<?> modelClass;
|
||||
|
||||
/**
|
||||
* 构造函数
|
||||
*
|
||||
* @param modelClass 实体类Class对象
|
||||
*/
|
||||
public DictDropdownWriteHandler(Class<?> modelClass) {
|
||||
this.modelClass = modelClass;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
|
||||
// 获取工作簿和工作表
|
||||
Workbook workbook = writeWorkbookHolder.getWorkbook();
|
||||
Sheet sheet = writeSheetHolder.getSheet();
|
||||
|
||||
// 创建数据验证助手
|
||||
DataValidationHelper validationHelper = sheet.getDataValidationHelper();
|
||||
|
||||
// 解析实体类中的字段及其注解
|
||||
Map<Integer, DictDropdown> dropdownMap = parseDropdownFields();
|
||||
|
||||
// 为每个需要下拉框的字段添加数据验证
|
||||
for (Map.Entry<Integer, DictDropdown> entry : dropdownMap.entrySet()) {
|
||||
Integer columnIndex = entry.getKey();
|
||||
DictDropdown dropdown = entry.getValue();
|
||||
|
||||
try {
|
||||
// 获取字典数据
|
||||
List<SysDictData> dictDataList = getDictData(dropdown.dictType());
|
||||
if (dictDataList == null || dictDataList.isEmpty()) {
|
||||
log.warn("字典类型[{}]没有可用数据,跳过下拉框创建", dropdown.dictType());
|
||||
continue;
|
||||
}
|
||||
|
||||
// 获取下拉选项列表
|
||||
String[] dropdownOptions = extractOptions(dictDataList, dropdown.displayType());
|
||||
if (dropdownOptions.length == 0) {
|
||||
log.warn("字典类型[{}]提取选项为空,跳过下拉框创建", dropdown.dictType());
|
||||
continue;
|
||||
}
|
||||
|
||||
// 创建数据验证
|
||||
DataValidation validation = createDataValidation(
|
||||
workbook,
|
||||
sheet,
|
||||
validationHelper,
|
||||
columnIndex,
|
||||
dropdownOptions,
|
||||
dropdown.hiddenSheetName(),
|
||||
dropdown.strict()
|
||||
);
|
||||
|
||||
if (validation != null) {
|
||||
sheet.addValidationData(validation);
|
||||
log.info("成功为列[{}]添加字典[{}]的下拉框,选项数量:{}", columnIndex, dropdown.dictType(), dropdownOptions.length);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("为列[{}]添加字典[{}]下拉框失败:{}", columnIndex, dropdown.dictType(), e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析实体类中的字段,获取需要添加下拉框的字段及其注解
|
||||
*
|
||||
* @return 字段索引与注解的映射
|
||||
*/
|
||||
private Map<Integer, DictDropdown> parseDropdownFields() {
|
||||
Map<Integer, DictDropdown> result = new HashMap<>();
|
||||
|
||||
// 获取所有字段(包括父类的)
|
||||
List<Field> fields = getAllFields(modelClass);
|
||||
|
||||
for (Field field : fields) {
|
||||
// 检查是否有@DictDropdown注解
|
||||
DictDropdown dropdown = field.getAnnotation(DictDropdown.class);
|
||||
if (dropdown == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 获取列索引
|
||||
Integer columnIndex = getColumnIndex(field);
|
||||
if (columnIndex == null) {
|
||||
log.warn("字段[{}]没有指定@ExcelProperty的index,跳过下拉框创建", field.getName());
|
||||
continue;
|
||||
}
|
||||
|
||||
result.put(columnIndex, dropdown);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取字典数据
|
||||
*
|
||||
* @param dictType 字典类型
|
||||
* @return 字典数据列表
|
||||
*/
|
||||
private List<SysDictData> getDictData(String dictType) {
|
||||
try {
|
||||
// 先从缓存获取
|
||||
List<SysDictData> dictDataList = DictUtils.getDictCache(dictType);
|
||||
|
||||
if (dictDataList == null || dictDataList.isEmpty()) {
|
||||
log.warn("从缓存获取字典[{}]数据为空", dictType);
|
||||
}
|
||||
|
||||
return dictDataList;
|
||||
} catch (Exception e) {
|
||||
log.error("获取字典[{}]数据失败:{}", dictType, e.getMessage(), e);
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 从字典数据中提取下拉选项
|
||||
*
|
||||
* @param dictDataList 字典数据列表
|
||||
* @param displayType 显示类型
|
||||
* @return 下拉选项数组
|
||||
*/
|
||||
private String[] extractOptions(List<SysDictData> dictDataList, DictDropdown.DisplayType displayType) {
|
||||
List<String> options = new ArrayList<>();
|
||||
|
||||
for (SysDictData dictData : dictDataList) {
|
||||
String optionValue;
|
||||
if (displayType == DictDropdown.DisplayType.VALUE) {
|
||||
optionValue = dictData.getDictValue();
|
||||
} else {
|
||||
optionValue = dictData.getDictLabel();
|
||||
}
|
||||
|
||||
if (optionValue != null && !optionValue.isEmpty()) {
|
||||
options.add(optionValue);
|
||||
}
|
||||
}
|
||||
|
||||
return options.toArray(new String[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建数据验证
|
||||
*
|
||||
* @param workbook 工作簿
|
||||
* @param sheet 工作表
|
||||
* @param validationHelper 数据验证助手
|
||||
* @param columnIndex 列索引
|
||||
* @param options 下拉选项
|
||||
* @param hiddenSheetName 隐藏Sheet名称
|
||||
* @param strict 是否严格模式
|
||||
* @return 数据验证对象
|
||||
*/
|
||||
private DataValidation createDataValidation(
|
||||
Workbook workbook,
|
||||
Sheet sheet,
|
||||
DataValidationHelper validationHelper,
|
||||
int columnIndex,
|
||||
String[] options,
|
||||
String hiddenSheetName,
|
||||
boolean strict
|
||||
) {
|
||||
// 计算选项字符串总长度
|
||||
int totalLength = Arrays.stream(options)
|
||||
.mapToInt(String::length)
|
||||
.sum() + options.length - 1; // 加上分隔符
|
||||
|
||||
// 设置数据验证的范围(从第2行开始,第1行是表头)
|
||||
int firstRow = 1; // 从第2行开始(0-based索引)
|
||||
int lastRow = sheet.getLastRowNum() + 1000; // 扩展到足够多的行
|
||||
if (lastRow < 100) {
|
||||
lastRow = 100; // 至少100行
|
||||
}
|
||||
CellRangeAddressList addressList = new CellRangeAddressList(firstRow, lastRow, columnIndex, columnIndex);
|
||||
|
||||
// 判断是否需要使用隐藏Sheet
|
||||
if (totalLength > MAX_DIRECT_LENGTH) {
|
||||
// 使用隐藏Sheet存储选项
|
||||
return createHiddenSheetValidation(workbook, sheet, validationHelper, addressList, options, hiddenSheetName, strict);
|
||||
} else {
|
||||
// 直接创建下拉列表
|
||||
return createDirectValidation(validationHelper, addressList, options, strict);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用隐藏Sheet创建数据验证(适用于选项较多的情况)
|
||||
*
|
||||
* @param workbook 工作簿
|
||||
* @param sheet 主工作表
|
||||
* @param validationHelper 数据验证助手
|
||||
* @param addressList 单元格范围
|
||||
* @param options 下拉选项
|
||||
* @param hiddenSheetName 隐藏Sheet名称
|
||||
* @param strict 是否严格模式
|
||||
* @return 数据验证对象
|
||||
*/
|
||||
private DataValidation createHiddenSheetValidation(
|
||||
Workbook workbook,
|
||||
Sheet sheet,
|
||||
DataValidationHelper validationHelper,
|
||||
CellRangeAddressList addressList,
|
||||
String[] options,
|
||||
String hiddenSheetName,
|
||||
boolean strict
|
||||
) {
|
||||
try {
|
||||
// 创建或获取隐藏Sheet
|
||||
Sheet hiddenSheet = workbook.getSheet(hiddenSheetName);
|
||||
if (hiddenSheet == null) {
|
||||
hiddenSheet = workbook.createSheet(hiddenSheetName);
|
||||
}
|
||||
|
||||
// 写入选项到隐藏Sheet
|
||||
Row row = hiddenSheet.createRow(0);
|
||||
for (int i = 0; i < options.length; i++) {
|
||||
Cell cell = row.createCell(i);
|
||||
cell.setCellValue(options[i]);
|
||||
}
|
||||
|
||||
// 构建公式引用
|
||||
String formula = String.format("%s!$A$1:$%s$1", hiddenSheetName,
|
||||
(char) ('A' + options.length - 1));
|
||||
|
||||
// 创建列表验证
|
||||
DataValidationConstraint constraint = validationHelper.createFormulaListConstraint(formula);
|
||||
|
||||
// 设置验证属性
|
||||
DataValidation validation = validationHelper.createValidation(constraint, addressList);
|
||||
validation.setSuppressDropDownArrow(true);
|
||||
validation.setErrorStyle(strict ? DataValidation.ErrorStyle.STOP : DataValidation.ErrorStyle.WARNING);
|
||||
validation.setShowErrorBox(true);
|
||||
|
||||
// 隐藏Sheet(在Excel中无法通过界面隐藏,需要通过代码设置)
|
||||
workbook.setSheetHidden(workbook.getSheetIndex(hiddenSheetName), true);
|
||||
|
||||
return validation;
|
||||
} catch (Exception e) {
|
||||
log.error("创建隐藏Sheet数据验证失败:{}", e.getMessage(), e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接创建下拉列表验证(适用于选项较少的情况)
|
||||
*
|
||||
* @param validationHelper 数据验证助手
|
||||
* @param addressList 单元格范围
|
||||
* @param options 下拉选项
|
||||
* @param strict 是否严格模式
|
||||
* @return 数据验证对象
|
||||
*/
|
||||
private DataValidation createDirectValidation(
|
||||
DataValidationHelper validationHelper,
|
||||
CellRangeAddressList addressList,
|
||||
String[] options,
|
||||
boolean strict
|
||||
) {
|
||||
// 创建显式列表验证
|
||||
DataValidationConstraint constraint = validationHelper.createExplicitListConstraint(options);
|
||||
|
||||
// 创建数据验证
|
||||
DataValidation validation = validationHelper.createValidation(constraint, addressList);
|
||||
|
||||
// 设置验证属性
|
||||
validation.setSuppressDropDownArrow(true);
|
||||
validation.setErrorStyle(strict ? DataValidation.ErrorStyle.STOP : DataValidation.ErrorStyle.WARNING);
|
||||
validation.setShowErrorBox(true);
|
||||
|
||||
return validation;
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user