From ef8147892e6c5b3e84bce838b59d46d29b57e7d2 Mon Sep 17 00:00:00 2001 From: wjj <2069666735@qq.com> Date: Wed, 6 May 2026 16:18:03 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=A1=A5=E5=85=85=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=88=86=E6=9E=90=E4=B8=AA=E4=BA=BA=E8=AF=A6=E6=83=85=E9=A1=B5?= =?UTF-8?q?=E6=AD=A3=E5=BC=8F=E5=8C=96=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...style-alignment-frontend-implementation.md | 24 +++++++ ...n-detail-style-alignment-implementation.md | 18 ++++++ .../detail/ProjectAnalysisAbnormalTab.vue | 63 ++++++++++++++---- .../detail/ProjectAnalysisDialog.vue | 37 +++++------ .../detail/ProjectAnalysisSidebar.vue | 64 +++++++++---------- 5 files changed, 143 insertions(+), 63 deletions(-) create mode 100644 docs/plans/frontend/2026-05-06-project-analysis-person-detail-style-alignment-frontend-implementation.md create mode 100644 docs/reports/implementation/2026-05-06-project-analysis-person-detail-style-alignment-implementation.md diff --git a/docs/plans/frontend/2026-05-06-project-analysis-person-detail-style-alignment-frontend-implementation.md b/docs/plans/frontend/2026-05-06-project-analysis-person-detail-style-alignment-frontend-implementation.md new file mode 100644 index 00000000..253a4496 --- /dev/null +++ b/docs/plans/frontend/2026-05-06-project-analysis-person-detail-style-alignment-frontend-implementation.md @@ -0,0 +1,24 @@ +# 2026-05-06 项目分析个人详情页样式对齐前端实施计划 + +## 目标 + +- 将项目分析个人详情页样式对齐到用户提供的参考图。 +- 本次只调整前端样式表现,不改接口、字段、交互逻辑和业务内容。 + +## 范围 + +- `ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisDialog.vue` +- `ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisSidebar.vue` +- `ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisAbnormalTab.vue` + +## 实施要点 + +- 调整详情弹窗头部、左右分栏比例、页签尺寸和间距。 +- 调整左侧人物档案与命中模型摘要区块的标题、信息行、风险徽标和标签样式。 +- 调整右侧异常明细内容区的区块标题、表格头部、单元格留白、异常对象摘要卡片和快照块样式。 +- 保持现有数据绑定、页签切换、证据库按钮和分页逻辑不变。 + +## 验证 + +- 在真实业务页面打开项目总览详情弹窗,检查个人详情页视觉是否与参考图一致。 +- 确认异常明细、对象摘要、加入证据库按钮和分页仍可正常显示。 diff --git a/docs/reports/implementation/2026-05-06-project-analysis-person-detail-style-alignment-implementation.md b/docs/reports/implementation/2026-05-06-project-analysis-person-detail-style-alignment-implementation.md new file mode 100644 index 00000000..1e97591b --- /dev/null +++ b/docs/reports/implementation/2026-05-06-project-analysis-person-detail-style-alignment-implementation.md @@ -0,0 +1,18 @@ +# 2026-05-06 项目分析个人详情页样式对齐实施记录 + +## 本次修改 + +- 调整 `ProjectAnalysisDialog.vue`,补齐参考图中的标题区、内容区留白、左右分栏间距和页签样式。 +- 调整 `ProjectAnalysisSidebar.vue`,补齐人物档案区、风险等级徽标、命中模型摘要和标签的正式化版式。 +- 调整 `ProjectAnalysisAbnormalTab.vue`,补齐流水异常明细表格、异常对象摘要区、快照块和信息行样式。 + +## 未改内容 + +- 未改接口请求和数据拼装逻辑。 +- 未改页签切换、分页、加入证据库、异常分组和字段内容。 +- 未新增或删除业务区块。 + +## 验证方式 + +- 使用真实业务页面 `http://localhost/ccdiProject/detail/90337?tab=overview` 打开个人详情弹窗进行样式核对。 +- 核对左侧人物档案、右侧页签、表格块和异常对象摘要块的正式化效果。 diff --git a/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisAbnormalTab.vue b/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisAbnormalTab.vue index d5cf8d61..57d5d3a6 100644 --- a/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisAbnormalTab.vue +++ b/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisAbnormalTab.vue @@ -244,28 +244,31 @@ export default { .project-analysis-abnormal-tab { display: flex; flex-direction: column; - gap: 16px; + gap: 20px; } .abnormal-card { - padding: 20px; - border: 1px solid #e2e8f0; + border: 1px solid #d9e1ed; background: #fff; + overflow: hidden; } .abnormal-card__header { - margin-bottom: 14px; + margin-bottom: 0; + padding: 22px 30px; + border-bottom: 1px solid #e3eaf3; } .abnormal-card__title { - font-size: 16px; - font-weight: 600; + font-size: 18px; + font-weight: 700; color: #0f172a; } .abnormal-card__content { display: grid; - gap: 16px; + gap: 0; + background: #ffffff; } .abnormal-card__subtitle { @@ -274,14 +277,15 @@ export default { } .abnormal-table { - border-radius: 12px; + border-radius: 0; overflow: hidden; } .abnormal-pagination { display: flex; justify-content: flex-end; - margin-top: 16px; + padding: 18px 24px 20px; + border-top: 1px solid #e8eef6; } .multi-line-cell { @@ -303,7 +307,7 @@ export default { .tag-list { display: flex; flex-wrap: wrap; - gap: 16px; + gap: 10px; } .object-card-grid { @@ -314,8 +318,8 @@ export default { .object-card { padding: 16px; - border: 1px solid #e2e8f0; - background: #f8fafc; + border: 1px solid #d9e1ed; + background: #ffffff; } .object-card__header { @@ -364,7 +368,8 @@ export default { margin-top: 12px; padding: 12px; border: 1px solid #dbeafe; - background: #eff6ff; + border-left: 3px solid #245b8f; + background: #f4f8fd; } .object-card__snapshot-label { @@ -392,4 +397,36 @@ export default { color: #1e293b; text-align: right; } + +.abnormal-table ::v-deep(.el-table__header-wrapper th) { + height: 58px; + padding: 0 22px; + border-bottom: 1px solid #d9e1ed; + background: #f3f6fa; + color: #5f7592; + font-size: 16px; + font-weight: 700; +} + +.abnormal-table ::v-deep(.el-table__body-wrapper td) { + padding: 22px; + border-bottom: 1px solid #e6edf5; +} + +.abnormal-table ::v-deep(.cell) { + padding-left: 0; + padding-right: 0; +} + +.tag-list ::v-deep(.el-tag) { + height: 28px; + padding: 0 10px; + border: 1px solid #c8d6e8; + border-radius: 2px; + background: #ffffff; + color: #245b8f; + font-size: 12px; + font-weight: 600; + line-height: 26px; +} diff --git a/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisDialog.vue b/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisDialog.vue index ce0c8ee7..2071bcf6 100644 --- a/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisDialog.vue +++ b/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisDialog.vue @@ -223,7 +223,7 @@ export default { } .project-analysis-header { - padding: 32px 36px 24px; + padding: 38px 54px 34px; border-bottom: 1px solid #dde3ec; background: #ffffff; } @@ -241,15 +241,15 @@ export default { .project-analysis-header__eyebrow { color: #65758d; - font-size: 16px; - font-weight: 600; + font-size: 17px; + font-weight: 700; line-height: 1; } .project-analysis-header__title { - margin-top: 18px; + margin-top: 24px; color: #101a2b; - font-size: 30px; + font-size: 34px; font-weight: 700; line-height: 1; } @@ -280,10 +280,10 @@ export default { .project-analysis-workspace { display: flex; align-items: flex-start; - gap: 36px; - min-height: 700px; + gap: 56px; + min-height: 720px; max-height: calc(96vh - 168px); - padding: 36px; + padding: 28px 54px 42px; overflow: auto; background: #ffffff; } @@ -295,14 +295,15 @@ export default { } .project-analysis-layout__sidebar { - flex: 0 0 420px; + flex: 0 0 38%; + max-width: 520px; } .project-analysis-layout__main { flex: 1; min-width: 0; border-left: 1px solid #dde3ec; - padding-left: 36px; + padding-left: 56px; } .project-analysis-layout__alert { @@ -310,7 +311,7 @@ export default { } .project-analysis-tabs { - margin-top: -6px; + margin-top: -2px; } @@ -342,26 +343,26 @@ export default { } .el-tabs__item { - height: 46px; - padding: 0 24px !important; + height: 58px; + padding: 0 32px !important; color: #2a374a; - font-size: 16px; + font-size: 18px; font-weight: 500; - line-height: 46px; + line-height: 58px; } .el-tabs__item.is-active { color: #245b8f; - font-weight: 600; + font-weight: 700; } .el-tabs__active-bar { - height: 3px; + height: 4px; background: #245b8f; } .el-tabs__content { - padding-top: 20px; + padding-top: 28px; } } diff --git a/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisSidebar.vue b/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisSidebar.vue index aa1cce6e..9b8d781a 100644 --- a/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisSidebar.vue +++ b/ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisSidebar.vue @@ -91,21 +91,21 @@ export default { } .sidebar-profile { - padding: 24px 26px 20px; + padding: 34px 42px 28px; border-bottom: 1px solid #edf1f5; } .sidebar-summary { - padding: 22px 26px 26px; + padding: 30px 42px 34px; border-top: 1px solid #dde3ec; background: #fcfdfe; } .sidebar-profile__identity-label { color: #637187; - font-size: 15px; - font-weight: 600; - margin-bottom: 16px; + font-size: 16px; + font-weight: 700; + margin-bottom: 28px; } .sidebar-profile__name-row { @@ -117,7 +117,7 @@ export default { .sidebar-profile__name { color: #111827; - font-size: 30px; + font-size: 34px; font-weight: 700; line-height: 1.2; } @@ -126,30 +126,30 @@ export default { display: inline-flex; align-items: center; justify-content: center; - min-width: 64px; - height: 28px; - padding: 0 10px; - border: 1px solid #edcaca; + min-width: 102px; + height: 44px; + padding: 0 16px; + border: 1px solid #f0c6c1; border-radius: 2px; - background: #fbefef; - color: #ad2f2f; - font-size: 14px; + background: #fff3f2; + color: #c43d33; + font-size: 17px; font-weight: 600; - line-height: 26px; + line-height: 42px; text-align: center; } .sidebar-profile__meta { display: grid; gap: 0; - margin-top: 18px; + margin-top: 30px; } .sidebar-profile__item { display: grid; - grid-template-columns: 88px minmax(0, 1fr); - gap: 12px; - padding: 10px 0; + grid-template-columns: 116px minmax(0, 1fr); + gap: 16px; + padding: 18px 0; border-bottom: 1px solid #edf1f5; } @@ -160,46 +160,46 @@ export default { .sidebar-profile__label, .sidebar-summary__count-label { color: #637187; - font-size: 15px; + font-size: 16px; } .sidebar-profile__value, .sidebar-summary__count-value { color: #172033; - font-size: 16px; + font-size: 17px; font-weight: 500; line-height: 1.4; word-break: break-all; } .sidebar-summary__title { - margin: 0 0 18px; + margin: 0 0 24px; color: #223047; - font-size: 16px; + font-size: 18px; font-weight: 700; } .sidebar-summary__count { display: flex; align-items: baseline; - gap: 12px; + gap: 16px; margin-top: 0; - margin-bottom: 22px; + margin-bottom: 28px; } .sidebar-summary__tags { display: grid; - gap: 10px; + gap: 16px; margin-top: 0; } .sidebar-summary__count-label { - font-size: 15px; + font-size: 17px; } .sidebar-summary__count-value { color: #172033; - font-size: 22px; + font-size: 40px; font-weight: 700; line-height: 1; } @@ -212,14 +212,14 @@ export default { } .sidebar-tag-list ::v-deep(.el-tag) { - height: 28px; - padding: 0 10px; - border: 1px solid #bfd0e2; + height: 38px; + padding: 0 16px; + border: 1px solid #cad8eb; border-radius: 2px; background: #ffffff; color: #245b8f; - font-size: 14px; + font-size: 15px; font-weight: 600; - line-height: 26px; + line-height: 36px; } -- 2.49.1 From 180a8922758692778b177a1b8d3c5be9138c0707 Mon Sep 17 00:00:00 2001 From: wjj <2069666735@qq.com> Date: Tue, 26 May 2026 16:37:16 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B6=89=E7=96=91?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E6=A8=A1=E5=9E=8B=E5=8F=A3=E5=BE=84=E5=92=8C?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CcdiProjectOverviewController.java | 4 +- ...cdiProjectSuspiciousTransactionItemVO.java | 2 + .../CcdiProjectOverviewReportPdfExporter.java | 28 ++- .../project/CcdiBankTagAnalysisMapper.xml | 228 +++++++++++++++--- .../project/CcdiProjectOverviewMapper.xml | 92 +++++-- .../CcdiBankTagAnalysisMapperXmlTest.java | 27 ++- .../CcdiProjectOverviewMapperSqlTest.java | 40 +++ ...iProjectOverviewReportPdfExporterTest.java | 17 ++ ...mal-customer-transaction-implementation.md | 65 +++++ ...ome-relative-null-income-implementation.md | 17 ++ .../2026-05-26-dev-ui-submit-checklist.md | 63 +++++ ...26-pull-bank-info-dialog-implementation.md | 24 ++ ...port-pdf-section-spacing-implementation.md | 20 ++ .../components/detail/PreliminaryCheck.vue | 2 +- .../components/detail/RiskDetailSection.vue | 69 +++++- .../components/detail/UploadData.vue | 49 +++- 16 files changed, 672 insertions(+), 75 deletions(-) create mode 100644 docs/reports/implementation/2026-05-21-abnormal-customer-transaction-implementation.md create mode 100644 docs/reports/implementation/2026-05-25-low-income-relative-null-income-implementation.md create mode 100644 docs/reports/implementation/2026-05-26-dev-ui-submit-checklist.md create mode 100644 docs/reports/implementation/2026-05-26-pull-bank-info-dialog-implementation.md create mode 100644 docs/reports/implementation/2026-05-26-report-pdf-section-spacing-implementation.md diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiProjectOverviewController.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiProjectOverviewController.java index 2bbc9e4d..cbbc999e 100644 --- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiProjectOverviewController.java +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiProjectOverviewController.java @@ -184,10 +184,10 @@ public class CcdiProjectOverviewController extends BaseController { } /** - * 一键导出结果总览报告 + * 导出结果总览报告 */ @RequestMapping(value = "/report/export", method = { RequestMethod.GET, RequestMethod.POST }) - @Operation(summary = "一键导出结果总览报告") + @Operation(summary = "导出结果总览报告") @PreAuthorize("@ss.hasPermi('ccdi:project:query')") public void exportOverviewReport(HttpServletResponse response, Long projectId) { overviewService.exportOverviewReport(response, projectId); diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectSuspiciousTransactionItemVO.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectSuspiciousTransactionItemVO.java index 736afb79..ac2a834c 100644 --- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectSuspiciousTransactionItemVO.java +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectSuspiciousTransactionItemVO.java @@ -33,4 +33,6 @@ public class CcdiProjectSuspiciousTransactionItemVO { private Boolean hasModelRuleHit; private Boolean hasNameListHit; + + private String nameListHitType; } diff --git a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewReportPdfExporter.java b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewReportPdfExporter.java index 9310d10f..0e343528 100644 --- a/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewReportPdfExporter.java +++ b/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewReportPdfExporter.java @@ -393,6 +393,7 @@ public class CcdiProjectOverviewReportPdfExporter { private static final float SUBSECTION_FONT_SIZE = 12F; private static final float LINE_HEIGHT = 12F; private static final float CELL_PADDING = 5F; + private static final float TABLE_AFTER_GAP = 32F; private final PDDocument document; private final PDType0Font font; @@ -420,7 +421,7 @@ public class CcdiProjectOverviewReportPdfExporter { } void title(String text) throws IOException { - writeLine(text, TITLE_FONT_SIZE, new Color(18, 56, 93), 0F, 28F); + writeLine(text, TITLE_FONT_SIZE, new Color(18, 56, 93), 0F, 28F, true); } void text(String text, float fontSize, Color color) throws IOException { @@ -429,12 +430,12 @@ public class CcdiProjectOverviewReportPdfExporter { void section(String text) throws IOException { ensureSpace(32F); - writeLine(text, SECTION_FONT_SIZE, new Color(18, 56, 93), 0F, 26F); + writeLine(text, SECTION_FONT_SIZE, new Color(18, 56, 93), 0F, 26F, true); } void subsection(String text) throws IOException { ensureSpace(26F); - writeLine(text, SUBSECTION_FONT_SIZE, new Color(51, 65, 85), 0F, 22F); + writeLine(text, SUBSECTION_FONT_SIZE, new Color(51, 65, 85), 0F, 22F, true); } void separator() throws IOException { @@ -481,7 +482,7 @@ public class CcdiProjectOverviewReportPdfExporter { for (List row : safeRows) { drawRow(row, widths, false); } - y -= 8F; + y -= TABLE_AFTER_GAP; } private float[] calculateWidths(float[] ratios) { @@ -556,6 +557,17 @@ public class CcdiProjectOverviewReportPdfExporter { } private void writeLine(String text, float fontSize, Color color, float indent, float advance) throws IOException { + writeLine(text, fontSize, color, indent, advance, false); + } + + private void writeLine( + String text, + float fontSize, + Color color, + float indent, + float advance, + boolean bold + ) throws IOException { ensureSpace(advance); content.beginText(); content.setNonStrokingColor(color); @@ -563,6 +575,14 @@ public class CcdiProjectOverviewReportPdfExporter { content.newLineAtOffset(MARGIN + indent, y); content.showText(text); content.endText(); + if (bold) { + content.beginText(); + content.setNonStrokingColor(color); + content.setFont(font, fontSize); + content.newLineAtOffset(MARGIN + indent + 0.25F, y); + content.showText(text); + content.endText(); + } y -= advance; } diff --git a/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankTagAnalysisMapper.xml b/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankTagAnalysisMapper.xml index 4c0d8af8..fbc8071a 100644 --- a/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankTagAnalysisMapper.xml +++ b/ccdi-project/src/main/resources/mapper/ccdi/project/CcdiBankTagAnalysisMapper.xml @@ -105,36 +105,69 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" not ( - bs.CUSTOMER_ACCOUNT_NAME = '浙江兰溪农村商业银行股份有限公司' - and ( - IFNULL(bs.USER_MEMO, '') LIKE '%代发%' - or IFNULL(bs.USER_MEMO, '') LIKE '%工资%' - or IFNULL(bs.USER_MEMO, '') LIKE '%奖金%' - or IFNULL(bs.USER_MEMO, '') LIKE '%薪酬%' - or IFNULL(bs.USER_MEMO, '') LIKE '%薪金%' - or IFNULL(bs.USER_MEMO, '') LIKE '%补贴%' - or IFNULL(bs.USER_MEMO, '') LIKE '%薪%' - or IFNULL(bs.USER_MEMO, '') LIKE '%年终奖%' - or IFNULL(bs.USER_MEMO, '') LIKE '%年金%' - or IFNULL(bs.USER_MEMO, '') LIKE '%加班费%' - or IFNULL(bs.USER_MEMO, '') LIKE '%劳务费%' - or IFNULL(bs.USER_MEMO, '') LIKE '%劳务外包%' - or IFNULL(bs.USER_MEMO, '') LIKE '%提成%' - or IFNULL(bs.USER_MEMO, '') LIKE '%劳务派遣%' - or IFNULL(bs.USER_MEMO, '') LIKE '%绩效%' - or IFNULL(bs.USER_MEMO, '') LIKE '%酬劳%' - or IFNULL(bs.USER_MEMO, '') LIKE '%PAYROLL%' - or IFNULL(bs.USER_MEMO, '') LIKE '%SALA%' - or IFNULL(bs.USER_MEMO, '') LIKE '%CPF%' - or IFNULL(bs.USER_MEMO, '') LIKE '%directors%fees%' - or IFNULL(bs.USER_MEMO, '') LIKE '%批量代付%' - or IFNULL(bs.CASH_TYPE, '') LIKE '%代发%' - or IFNULL(bs.CASH_TYPE, '') LIKE '%工资%' - or IFNULL(bs.CASH_TYPE, '') LIKE '%劳务费%' + ( + bs.CUSTOMER_ACCOUNT_NAME = '浙江兰溪农村商业银行股份有限公司' + and ( + IFNULL(bs.USER_MEMO, '') LIKE '%代发%' + or IFNULL(bs.USER_MEMO, '') LIKE '%工资%' + or IFNULL(bs.USER_MEMO, '') LIKE '%奖金%' + or IFNULL(bs.USER_MEMO, '') LIKE '%薪酬%' + or IFNULL(bs.USER_MEMO, '') LIKE '%薪金%' + or IFNULL(bs.USER_MEMO, '') LIKE '%补贴%' + or IFNULL(bs.USER_MEMO, '') LIKE '%薪%' + or IFNULL(bs.USER_MEMO, '') LIKE '%年终奖%' + or IFNULL(bs.USER_MEMO, '') LIKE '%年金%' + or IFNULL(bs.USER_MEMO, '') LIKE '%加班费%' + or IFNULL(bs.USER_MEMO, '') LIKE '%劳务费%' + or IFNULL(bs.USER_MEMO, '') LIKE '%劳务外包%' + or IFNULL(bs.USER_MEMO, '') LIKE '%提成%' + or IFNULL(bs.USER_MEMO, '') LIKE '%劳务派遣%' + or IFNULL(bs.USER_MEMO, '') LIKE '%绩效%' + or IFNULL(bs.USER_MEMO, '') LIKE '%酬劳%' + or IFNULL(bs.USER_MEMO, '') LIKE '%PAYROLL%' + or IFNULL(bs.USER_MEMO, '') LIKE '%SALA%' + or IFNULL(bs.USER_MEMO, '') LIKE '%CPF%' + or IFNULL(bs.USER_MEMO, '') LIKE '%directors%fees%' + or IFNULL(bs.USER_MEMO, '') LIKE '%批量代付%' + or IFNULL(bs.CASH_TYPE, '') LIKE '%代发%' + or IFNULL(bs.CASH_TYPE, '') LIKE '%工资%' + or IFNULL(bs.CASH_TYPE, '') LIKE '%劳务费%' + ) + ) + or ( + IFNULL(bs.CUSTOMER_ACCOUNT_NAME, '') LIKE '%公积金中心%' + and ( + IFNULL(bs.USER_MEMO, '') LIKE '%公积金%' + or IFNULL(bs.USER_MEMO, '') LIKE '%批量代付%' + or IFNULL(bs.CASH_TYPE, '') LIKE '%公积金%' + or IFNULL(bs.CASH_TYPE, '') LIKE '%批量代付%' + ) ) ) + + select + staff.id_card as subjectCertNo, + staff.name as subjectName, + '本人' as subjectType + from ccdi_base_staff staff + + union all + + select + relation.relation_cert_no as subjectCertNo, + relation.relation_name as subjectName, + case + when relation.relation_type is not null and trim(relation.relation_type) != '' then relation.relation_type + else '关系人' + end as subjectType + from ccdi_staff_fmy_relation relation + where relation.status = 1 + and relation.relation_cert_no is not null + and trim(relation.relation_cert_no) != '' + + bs.CUSTOMER_ACCOUNT_NAME = '浙江兰溪农村商业银行股份有限公司' and ( @@ -392,12 +425,130 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"