From 7b1ddeae8ae50ed9992e81958568c77f05dd6223 Mon Sep 17 00:00:00 2001 From: wkc <978997012@qq.com> Date: Wed, 11 Feb 2026 15:52:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=BF=A1=E8=B4=B7?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E5=AE=B6=E5=BA=AD=E5=85=B3=E7=B3=BB=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E6=9D=83=E9=99=90=E5=92=8CController?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CcdiCustFmyRelationController.java | 158 ++++++++++++++++++ sql/ccdi_cust_fmy_relation_menu.sql | 37 ++++ 2 files changed, 195 insertions(+) create mode 100644 ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/CcdiCustFmyRelationController.java create mode 100644 sql/ccdi_cust_fmy_relation_menu.sql diff --git a/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/CcdiCustFmyRelationController.java b/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/CcdiCustFmyRelationController.java new file mode 100644 index 0000000..c2011cd --- /dev/null +++ b/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/CcdiCustFmyRelationController.java @@ -0,0 +1,158 @@ +package com.ruoyi.ccdi.controller; + +import com.alibaba.excel.EasyExcel; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.ccdi.domain.dto.CcdiCustFmyRelationAddDTO; +import com.ruoyi.ccdi.domain.dto.CcdiCustFmyRelationEditDTO; +import com.ruoyi.ccdi.domain.dto.CcdiCustFmyRelationQueryDTO; +import com.ruoyi.ccdi.domain.excel.CcdiCustFmyRelationExcel; +import com.ruoyi.ccdi.domain.vo.CcdiCustFmyRelationVO; +import com.ruoyi.ccdi.domain.vo.CustFmyRelationImportFailureVO; +import com.ruoyi.ccdi.service.ICcdiCustFmyRelationService; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.annotation.Log; +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 org.springframework.data.redis.core.RedisTemplate; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +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 RedisTemplate redisTemplate; + + /** + * 查询信贷客户家庭关系列表 + */ + @Operation(summary = "查询信贷客户家庭关系列表") + @PreAuthorize("@ss.hasPermi('ccdi:custFmyRelation:query')") + @GetMapping("/list") + public TableDataInfo list(CcdiCustFmyRelationQueryDTO query) { + startPage(); + Page page = relationService.selectRelationPage(query, getPageNum(), 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')") + @PostMapping("/export") + public void export(HttpServletResponse response, CcdiCustFmyRelationQueryDTO query) { + relationService.exportRelations(query, response); + } + + /** + * 下载导入模板 + */ + @Operation(summary = "下载导入模板") + @PreAuthorize("@ss.hasPermi('ccdi:custFmyRelation:import')") + @PostMapping("/importTemplate") + public void importTemplate(HttpServletResponse response) { + relationService.importTemplate(response); + } + + /** + * 导入信贷客户家庭关系 + */ + @Operation(summary = "导入信贷客户家庭关系") + @PreAuthorize("@ss.hasPermi('ccdi:custFmyRelation:import')") + @PostMapping("/importData") + public AjaxResult importData(@RequestParam("file") MultipartFile file) throws IOException { + List excels = EasyExcel.read(file.getInputStream()) + .head(CcdiCustFmyRelationExcel.class) + .sheet() + .doReadSync(); + + String taskId = relationService.importRelations(excels); + return success("导入任务已提交,任务ID: " + taskId); + } + + /** + * 查询导入状态 + */ + @Operation(summary = "查询导入状态") + @PreAuthorize("@ss.hasPermi('ccdi:custFmyRelation:query')") + @GetMapping("/importStatus/{taskId}") + public AjaxResult getImportStatus(@PathVariable("taskId") String taskId) { + // 从Redis获取任务状态 + Object status = redisTemplate.opsForValue().get("import:custFmyRelation:" + taskId); + return success(status); + } + + /** + * 查询导入失败记录 + */ + @Operation(summary = "查询导入失败记录") + @PreAuthorize("@ss.hasPermi('ccdi:custFmyRelation:query')") + @GetMapping("/importFailures/{taskId}") + public TableDataInfo getImportFailures( + @PathVariable("taskId") String taskId) { + startPage(); + List failures = relationService.getImportFailures(taskId); + return getDataTable(failures, (long) failures.size()); + } +} diff --git a/sql/ccdi_cust_fmy_relation_menu.sql b/sql/ccdi_cust_fmy_relation_menu.sql new file mode 100644 index 0000000..1dc7bd2 --- /dev/null +++ b/sql/ccdi_cust_fmy_relation_menu.sql @@ -0,0 +1,37 @@ +-- 信贷客户家庭关系菜单权限 +-- 创建时间: 2026-02-11 + +-- 添加信贷客户家庭关系菜单(父菜单为信息维护) +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, remark) +SELECT @parent_id := menu_id FROM sys_menu WHERE menu_name = '信息维护' LIMIT 1; +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) +VALUES ( + '信贷客户家庭关系', + @parent_id, + 5, + 'custFmyRelation', + 1, + 0, + 'C', + '0', + '0', + 'ccdi:custFmyRelation:list', + 'peoples', + 'admin', + NOW(), + '', + '信贷客户家庭关系菜单' +); + +-- 获取刚插入的菜单ID +SET @cust_menu_id = LAST_INSERT_ID(); + +-- 添加按钮权限 +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) +VALUES + ('信贷客户家庭关系查询', @cust_menu_id, 1, '#', '', 1, 0, 'F', '0', '0', 'ccdi:custFmyRelation:query', '#', 'admin', NOW(), ''), + ('信贷客户家庭关系新增', @cust_menu_id, 2, '#', '', 1, 0, 'F', '0', '0', 'ccdi:custFmyRelation:add', '#', 'admin', NOW(), ''), + ('信贷客户家庭关系修改', @cust_menu_id, 3, '#', '', 1, 0, 'F', '0', '0', 'ccdi:custFmyRelation:edit', '#', 'admin', NOW(), ''), + ('信贷客户家庭关系删除', @cust_menu_id, 4, '#', '', 1, 0, 'F', '0', '0', 'ccdi:custFmyRelation:remove', '#', 'admin', NOW(), ''), + ('信贷客户家庭关系导出', @cust_menu_id, 5, '#', '', 1, 0, 'F', '0', '0', 'ccdi:custFmyRelation:export', '#', 'admin', NOW(), ''), + ('信贷客户家庭关系导入', @cust_menu_id, 6, '#', '', 1, 0, 'F', '0', '0', 'ccdi:custFmyRelation:import', '#', 'admin', NOW(), '');