完成专项核查家庭资产负债实现
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
# 2026-03-24 专项核查页员工家庭资产负债专项核查后端实施记录
|
||||
|
||||
## 本次新增文件
|
||||
|
||||
- 控制器
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiProjectSpecialCheckController.java`
|
||||
- 服务
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/ICcdiProjectSpecialCheckService.java`
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectSpecialCheckServiceImpl.java`
|
||||
- Mapper
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiProjectSpecialCheckMapper.java`
|
||||
- `ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectSpecialCheckMapper.xml`
|
||||
- DTO
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/CcdiProjectFamilyAssetLiabilityListQueryDTO.java`
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/CcdiProjectFamilyAssetLiabilityDetailQueryDTO.java`
|
||||
- VO
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectFamilyAssetLiabilityListItemVO.java`
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectFamilyAssetLiabilityListVO.java`
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectFamilyIncomeDetailVO.java`
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectFamilyAssetItemVO.java`
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectFamilyAssetDetailVO.java`
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectFamilyDebtItemVO.java`
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectFamilyDebtDetailVO.java`
|
||||
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectFamilyAssetLiabilityDetailVO.java`
|
||||
- 测试
|
||||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiProjectSpecialCheckControllerContractTest.java`
|
||||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiProjectSpecialCheckControllerTest.java`
|
||||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiProjectSpecialCheckMapperListSqlTest.java`
|
||||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/mapper/CcdiProjectSpecialCheckMapperDetailSqlTest.java`
|
||||
- `ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectSpecialCheckServiceImplTest.java`
|
||||
|
||||
## 接口与查询口径
|
||||
|
||||
### 查询范围
|
||||
|
||||
- 员工集合沿用项目内已入库流水命中且能匹配员工主数据的口径
|
||||
- 员工范围由 `ccdi_bank_statement_tag_result` 结合 `ccdi_base_staff`、`ccdi_bank_statement`、`ccdi_staff_fmy_relation` 反查得到
|
||||
- 仅对匹配成功的员工输出专项核查结果
|
||||
|
||||
### 收入口径
|
||||
|
||||
- 本人收入取自 `ccdi_base_staff.annual_income`
|
||||
- 配偶收入取自 `ccdi_staff_fmy_relation` 中 `relation_type = '配偶'` 的 `annual_income`
|
||||
- 家庭总年收入 = 本人收入 + 配偶收入,空值按 `0` 处理
|
||||
|
||||
### 资产口径
|
||||
|
||||
- 资产来源表为 `ccdi_asset_info`
|
||||
- 以员工身份证号为 `family_id`
|
||||
- 持有人范围仅统计员工本人身份证号与配偶身份证号
|
||||
- 家庭总资产按 `current_value` 汇总
|
||||
|
||||
### 负债口径
|
||||
|
||||
- 负债来源表为 `ccdi_debts_info`
|
||||
- 归属人范围仅统计员工本人身份证号与配偶身份证号
|
||||
- 家庭总负债按 `principal_balance` 汇总
|
||||
|
||||
### 风险等级口径
|
||||
|
||||
- `comparisonAmount = totalIncome + totalDebt`
|
||||
- `comparisonAmount <= totalAsset * 1.5` 判定为 `NORMAL / 正常`
|
||||
- `comparisonAmount > totalAsset * 1.5 and <= totalAsset * 3` 判定为 `RISK / 存在风险`
|
||||
- `comparisonAmount > totalAsset * 3` 判定为 `HIGH / 高风险`
|
||||
|
||||
## 详情返回结构
|
||||
|
||||
- `incomeDetail` 返回本人收入、配偶收入、家庭总收入
|
||||
- `assetDetail` 返回本人资产小计、配偶资产小计、家庭总资产、资产明细列表
|
||||
- `debtDetail` 返回本人负债小计、配偶负债小计、家庭总负债、负债明细列表
|
||||
- `summary` 返回与列表同口径的汇总金额与风险等级
|
||||
|
||||
## 范围说明
|
||||
|
||||
- 本次实现仅覆盖员工本人及配偶
|
||||
- 未扩展父母、子女、兄弟姐妹等其他家庭成员收入、资产、负债口径
|
||||
- 未复用结果总览员工结果表,也未改动流水打标链路
|
||||
|
||||
## 增量调整
|
||||
|
||||
### 本人信息缺失口径
|
||||
|
||||
- 若员工本人名下不存在资产记录,则标记为“缺少资产信息”
|
||||
- 若员工本人名下不存在负债记录,则标记为“缺少负债信息”
|
||||
- 列表与详情 `summary` 统一处理为:
|
||||
- 只要本人缺少资产信息或负债信息任一项
|
||||
- 风险等级直接输出 `MISSING_INFO / 缺少信息`
|
||||
- 不再进入正常、存在风险、高风险三档计算
|
||||
|
||||
### 详情结构补充
|
||||
|
||||
- `assetDetail` 新增 `missingSelfAssetInfo`
|
||||
- `debtDetail` 新增 `missingSelfDebtInfo`
|
||||
- 供前端在详情卡片中控制资产/负债小计显隐
|
||||
@@ -0,0 +1,82 @@
|
||||
# 2026-03-24 专项核查页员工家庭资产负债专项核查前端实施记录
|
||||
|
||||
## 本次新增与修改文件
|
||||
|
||||
### API
|
||||
|
||||
- 新增 `ruoyi-ui/src/api/ccdi/projectSpecialCheck.js`
|
||||
|
||||
### 页面与组件
|
||||
|
||||
- 修改 `ruoyi-ui/src/views/ccdiProject/components/detail/SpecialCheck.vue`
|
||||
- 新增 `ruoyi-ui/src/views/ccdiProject/components/detail/specialCheck.mock.js`
|
||||
- 新增 `ruoyi-ui/src/views/ccdiProject/components/detail/FamilyAssetLiabilitySection.vue`
|
||||
- 新增 `ruoyi-ui/src/views/ccdiProject/components/detail/FamilyAssetLiabilityDetail.vue`
|
||||
|
||||
### 测试
|
||||
|
||||
- 新增 `ruoyi-ui/tests/unit/special-check-family-asset-liability-api.test.js`
|
||||
- 新增 `ruoyi-ui/tests/unit/special-check-layout.test.js`
|
||||
- 新增 `ruoyi-ui/tests/unit/special-check-states.test.js`
|
||||
- 新增 `ruoyi-ui/tests/unit/special-check-family-table.test.js`
|
||||
- 新增 `ruoyi-ui/tests/unit/special-check-risk-tag.test.js`
|
||||
- 新增 `ruoyi-ui/tests/unit/special-check-detail-expand.test.js`
|
||||
- 新增 `ruoyi-ui/tests/unit/special-check-detail-layout.test.js`
|
||||
- 新增 `ruoyi-ui/tests/unit/special-check-visual-alignment.test.js`
|
||||
|
||||
## 实现内容
|
||||
|
||||
### 1. 专项核查 API 封装
|
||||
|
||||
- 新增独立 API 文件 `projectSpecialCheck.js`
|
||||
- 提供 `getFamilyAssetLiabilityList(projectId)` 与 `getFamilyAssetLiabilityDetail(projectId, staffIdCard)`
|
||||
- 请求统一走 `@/utils/request`
|
||||
|
||||
### 2. 专项排查页主容器升级
|
||||
|
||||
- `SpecialCheck.vue` 从占位页改为真实三态容器
|
||||
- 页面保留 `loading / empty / loaded` 三态
|
||||
- 页面初始化与项目切换时都会重新触发专项核查列表加载
|
||||
- `specialCheck.mock.js` 仅保留页面状态切换所需的最小结构
|
||||
|
||||
### 3. 员工家庭核查列表区块
|
||||
|
||||
- 新增 `FamilyAssetLiabilitySection.vue`
|
||||
- 使用 `el-table` 展示姓名、身份证号、所属部门、家庭总年收入、家庭总资产、家庭总负债、风险情况、操作
|
||||
- 风险标签统一使用 `el-tag`
|
||||
- 风险码与标签类型映射:
|
||||
- `NORMAL -> success`
|
||||
- `RISK -> warning`
|
||||
- `HIGH -> danger`
|
||||
- 金额统一格式化为元并保留两位小数
|
||||
|
||||
### 4. 行内展开详情
|
||||
|
||||
- 新增 `FamilyAssetLiabilityDetail.vue`
|
||||
- 详情固定拆成收入、资产、负债三组
|
||||
- 详情使用当前表格行内展开,不引入弹窗、抽屉和路由跳转
|
||||
- 首次点击“查看详情”时按需请求详情接口
|
||||
- 详情结果按员工身份证号缓存
|
||||
- 项目切换时清空展开状态与详情缓存,避免串项目数据
|
||||
|
||||
### 5. 视觉对齐收口
|
||||
|
||||
- 列表区块沿用结果总览已有的 `section-card / block-header / block-title / block-subtitle` 结构
|
||||
- 表格头背景与标题区留白延续结果总览节奏
|
||||
- 详情区块的标题层级统一为 `block-title / block-subtitle`
|
||||
- 页面彻底移除“功能开发中”占位文案与占位图标
|
||||
|
||||
## 增量调整
|
||||
|
||||
### 缺少信息展示
|
||||
|
||||
- 风险标签新增 `MISSING_INFO` 映射,展示为“缺少信息”
|
||||
- 当后端返回本人缺少资产信息时:
|
||||
- 资产卡片隐藏小计区
|
||||
- 当后端返回本人缺少负债信息时:
|
||||
- 负债卡片隐藏小计区
|
||||
|
||||
### 详情卡片布局
|
||||
|
||||
- 详情区三个卡片改为桌面端横向三列均分
|
||||
- 中小屏保留响应式回落为单列,避免表格挤压
|
||||
@@ -4,6 +4,10 @@
|
||||
|
||||
- 新增后端实施计划 `docs/plans/backend/2026-03-24-special-check-family-asset-liability-backend-implementation.md`
|
||||
- 新增前端实施计划 `docs/plans/frontend/2026-03-24-special-check-family-asset-liability-frontend-implementation.md`
|
||||
- 新增后端实施记录 `docs/reports/implementation/2026-03-24-special-check-family-asset-liability-backend-record.md`
|
||||
- 新增后端验证记录 `docs/tests/records/2026-03-24-special-check-family-asset-liability-backend-verification.md`
|
||||
- 新增前端实施记录 `docs/reports/implementation/2026-03-24-special-check-family-asset-liability-frontend-record.md`
|
||||
- 新增前端验证记录 `docs/tests/records/2026-03-24-special-check-family-asset-liability-frontend-verification.md`
|
||||
|
||||
## 计划拆分结论
|
||||
|
||||
@@ -21,5 +25,7 @@
|
||||
|
||||
## 后续动作
|
||||
|
||||
- 按实施计划顺序执行后端与前端任务
|
||||
- 每端实施完成后分别补实施记录与验证记录
|
||||
- 已按实施计划顺序完成后端与前端任务
|
||||
- 后端已完成接口、Mapper SQL、服务组装与计划内目标验证
|
||||
- 前端已完成 API、主容器、列表区块、行内展开详情与计划内目标验证
|
||||
- 后续可按需要执行联调验证或整理提交
|
||||
|
||||
Reference in New Issue
Block a user