This commit is contained in:
wkc
2026-03-04 14:31:07 +08:00
commit 222e66552f
1480 changed files with 224148 additions and 0 deletions

55
.gitignore vendored Normal file
View File

@@ -0,0 +1,55 @@
######################################################################
# Build Tools
.gradle
/build/
!gradle/wrapper/gradle-wrapper.jar
target/
!.mvn/wrapper/maven-wrapper.jar
######################################################################
# IDE
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### JRebel ###
rebel.xml
### NetBeans ###
nbproject/private/
build/*
nbbuild/
dist/
nbdist/
.nb-gradle/
######################################################################
# Others
*.log
*.xml.versionsBackup
*.swp
!*/build/*.java
!*/build/*.html
!*/build/*.xml
**/_remote.repositories
mvn/
/.idea/
浙江省/
ruoyi-ui/vue.config.js

20
LICENSE Normal file
View File

@@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2018 RuoYi
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

96
README.md Normal file
View File

@@ -0,0 +1,96 @@
<p align="center">
<img alt="logo" src="https://oscimg.oschina.net/oscnet/up-d3d0a9303e11d522a06cd263f3079027715.png">
</p>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi v3.8.8</h1>
<h4 align="center">基于SpringBoot+Vue前后端分离的Java快速开发框架</h4>
<p align="center">
<a href="https://gitee.com/y_project/RuoYi-Vue/stargazers"><img src="https://gitee.com/y_project/RuoYi-Vue/badge/star.svg?theme=dark"></a>
<a href="https://gitee.com/y_project/RuoYi-Vue"><img src="https://img.shields.io/badge/RuoYi-v3.8.8-brightgreen.svg"></a>
<a href="https://gitee.com/y_project/RuoYi-Vue/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a>
</p>
## 平台简介
若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。
* 前端采用Vue、Element UI。
* 后端采用Spring Boot、Spring Security、Redis & Jwt。
* 权限认证使用Jwt支持多终端认证系统。
* 支持加载动态权限菜单,多方式轻松权限控制。
* 高效率开发,使用代码生成器可以一键生成前后端代码。
* 提供了技术栈([Vue3](https://v3.cn.vuejs.org) [Element Plus](https://element-plus.org/zh-CN) [Vite](https://cn.vitejs.dev))版本[RuoYi-Vue3](https://github.com/yangzongzhuan/RuoYi-Vue3),保持同步更新。
* 提供了单应用版本[RuoYi-Vue-fast](https://github.com/yangzongzhuan/RuoYi-Vue-fast)Oracle版本[RuoYi-Vue-Oracle](https://github.com/yangzongzhuan/RuoYi-Vue-Oracle),保持同步更新。
* 不分离版本,请移步[RuoYi](https://gitee.com/y_project/RuoYi),微服务版本,请移步[RuoYi-Cloud](https://gitee.com/y_project/RuoYi-Cloud)
* 阿里云折扣场:[点我进入](http://aly.ruoyi.vip),腾讯云秒杀场:[点我进入](http://txy.ruoyi.vip)&nbsp;&nbsp;
* 阿里云优惠券:[点我领取](https://www.aliyun.com/minisite/goods?userCode=brki8iof&share_source=copy_link),腾讯云优惠券:[点我领取](https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console)&nbsp;&nbsp;
## 内置功能
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
3. 岗位管理:配置系统用户所属担任职务。
4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
7. 参数管理:对系统动态配置常用参数。
8. 通知公告:系统通知公告信息发布维护。
9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
10. 登录日志:系统登录日志记录查询包含登录异常。
11. 在线用户:当前系统中活跃用户状态监控。
12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
13. 代码生成前后端代码的生成java、html、xml、sql支持CRUD下载 。
14. 系统接口根据业务代码自动生成相关的api接口文档。
15. 服务监控监视当前系统CPU、内存、磁盘、堆栈等相关信息。
16. 缓存监控:对系统的缓存信息查询,命令统计等。
17. 在线构建器拖动表单元素生成相应的HTML代码。
18. 连接池监视监视当前系统数据库连接池状态可进行分析SQL找出系统性能瓶颈。
## 在线体验
- admin/admin123
- 陆陆续续收到一些打赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。
演示地址http://vue.ruoyi.vip
文档地址http://doc.ruoyi.vip
## 演示图
<table>
<tr>
<td><img src="https://oscimg.oschina.net/oscnet/cd1f90be5f2684f4560c9519c0f2a232ee8.jpg"/></td>
<td><img src="https://oscimg.oschina.net/oscnet/1cbcf0e6f257c7d3a063c0e3f2ff989e4b3.jpg"/></td>
</tr>
<tr>
<td><img src="https://oscimg.oschina.net/oscnet/up-8074972883b5ba0622e13246738ebba237a.png"/></td>
<td><img src="https://oscimg.oschina.net/oscnet/up-9f88719cdfca9af2e58b352a20e23d43b12.png"/></td>
</tr>
<tr>
<td><img src="https://oscimg.oschina.net/oscnet/up-39bf2584ec3a529b0d5a3b70d15c9b37646.png"/></td>
<td><img src="https://oscimg.oschina.net/oscnet/up-936ec82d1f4872e1bc980927654b6007307.png"/></td>
</tr>
<tr>
<td><img src="https://oscimg.oschina.net/oscnet/up-b2d62ceb95d2dd9b3fbe157bb70d26001e9.png"/></td>
<td><img src="https://oscimg.oschina.net/oscnet/up-d67451d308b7a79ad6819723396f7c3d77a.png"/></td>
</tr>
<tr>
<td><img src="https://oscimg.oschina.net/oscnet/5e8c387724954459291aafd5eb52b456f53.jpg"/></td>
<td><img src="https://oscimg.oschina.net/oscnet/644e78da53c2e92a95dfda4f76e6d117c4b.jpg"/></td>
</tr>
<tr>
<td><img src="https://oscimg.oschina.net/oscnet/up-8370a0d02977eebf6dbf854c8450293c937.png"/></td>
<td><img src="https://oscimg.oschina.net/oscnet/up-49003ed83f60f633e7153609a53a2b644f7.png"/></td>
</tr>
<tr>
<td><img src="https://oscimg.oschina.net/oscnet/up-d4fe726319ece268d4746602c39cffc0621.png"/></td>
<td><img src="https://oscimg.oschina.net/oscnet/up-c195234bbcd30be6927f037a6755e6ab69c.png"/></td>
</tr>
<tr>
<td><img src="https://oscimg.oschina.net/oscnet/b6115bc8c31de52951982e509930b20684a.jpg"/></td>
<td><img src="https://oscimg.oschina.net/oscnet/up-5e4daac0bb59612c5038448acbcef235e3a.png"/></td>
</tr>
</table>
## 若依前后端分离交流群
QQ群 [![加入QQ群](https://img.shields.io/badge/已满-937441-blue.svg)](https://jq.qq.com/?_wv=1027&k=5bVB1og) [![加入QQ群](https://img.shields.io/badge/已满-887144332-blue.svg)](https://jq.qq.com/?_wv=1027&k=5eiA4DH) [![加入QQ群](https://img.shields.io/badge/已满-180251782-blue.svg)](https://jq.qq.com/?_wv=1027&k=5AxMKlC) [![加入QQ群](https://img.shields.io/badge/已满-104180207-blue.svg)](https://jq.qq.com/?_wv=1027&k=51G72yr) [![加入QQ群](https://img.shields.io/badge/已满-186866453-blue.svg)](https://jq.qq.com/?_wv=1027&k=VvjN2nvu) [![加入QQ群](https://img.shields.io/badge/已满-201396349-blue.svg)](https://jq.qq.com/?_wv=1027&k=5vYAqA05) [![加入QQ群](https://img.shields.io/badge/已满-101456076-blue.svg)](https://jq.qq.com/?_wv=1027&k=kOIINEb5) [![加入QQ群](https://img.shields.io/badge/已满-101539465-blue.svg)](https://jq.qq.com/?_wv=1027&k=UKtX5jhs) [![加入QQ群](https://img.shields.io/badge/已满-264312783-blue.svg)](https://jq.qq.com/?_wv=1027&k=EI9an8lJ) [![加入QQ群](https://img.shields.io/badge/已满-167385320-blue.svg)](https://jq.qq.com/?_wv=1027&k=SWCtLnMz) [![加入QQ群](https://img.shields.io/badge/已满-104748341-blue.svg)](https://jq.qq.com/?_wv=1027&k=96Dkdq0k) [![加入QQ群](https://img.shields.io/badge/已满-160110482-blue.svg)](https://jq.qq.com/?_wv=1027&k=0fsNiYZt) [![加入QQ群](https://img.shields.io/badge/已满-170801498-blue.svg)](https://jq.qq.com/?_wv=1027&k=7xw4xUG1) [![加入QQ群](https://img.shields.io/badge/已满-108482800-blue.svg)](https://jq.qq.com/?_wv=1027&k=eCx8eyoJ) [![加入QQ群](https://img.shields.io/badge/已满-101046199-blue.svg)](https://jq.qq.com/?_wv=1027&k=SpyH2875) [![加入QQ群](https://img.shields.io/badge/已满-136919097-blue.svg)](https://jq.qq.com/?_wv=1027&k=tKEt51dz) [![加入QQ群](https://img.shields.io/badge/已满-143961921-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=0vBbSb0ztbBgVtn3kJS-Q4HUNYwip89G&authKey=8irq5PhutrZmWIvsUsklBxhj57l%2F1nOZqjzigkXZVoZE451GG4JHPOqW7AW6cf0T&noverify=0&group_code=143961921) [![加入QQ群](https://img.shields.io/badge/已满-174951577-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ZFAPAbp09S2ltvwrJzp7wGlbopsc0rwi&authKey=HB2cxpxP2yspk%2Bo3WKTBfktRCccVkU26cgi5B16u0KcAYrVu7sBaE7XSEqmMdFQp&noverify=0&group_code=174951577) [![加入QQ群](https://img.shields.io/badge/已满-161281055-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Fn2aF5IHpwsy8j6VlalNJK6qbwFLFHat&authKey=uyIT%2B97x2AXj3odyXpsSpVaPMC%2Bidw0LxG5MAtEqlrcBcWJUA%2FeS43rsF1Tg7IRJ&noverify=0&group_code=161281055) [![加入QQ群](https://img.shields.io/badge/已满-138988063-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=XIzkm_mV2xTsUtFxo63bmicYoDBA6Ifm&authKey=dDW%2F4qsmw3x9govoZY9w%2FoWAoC4wbHqGal%2BbqLzoS6VBarU8EBptIgPKN%2FviyC8j&noverify=0&group_code=138988063) [![加入QQ群](https://img.shields.io/badge/151450850-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DkugnCg68PevlycJSKSwjhFqfIgrWWwR&authKey=pR1Pa5lPIeGF%2FFtIk6d%2FGB5qFi0EdvyErtpQXULzo03zbhopBHLWcuqdpwY241R%2F&noverify=0&group_code=151450850) 点击按钮入群。

12
bin/clean.bat Normal file
View File

@@ -0,0 +1,12 @@
@echo off
echo.
echo [信息] 清理工程target生成路径。
echo.
%~d0
cd %~dp0
cd ..
call mvn clean
pause

12
bin/package.bat Normal file
View File

@@ -0,0 +1,12 @@
@echo off
echo.
echo [信息] 打包Web工程生成war/jar包文件。
echo.
%~d0
cd %~dp0
cd ..
call mvn clean package -Dmaven.test.skip=true
pause

14
bin/run.bat Normal file
View File

@@ -0,0 +1,14 @@
@echo off
echo.
echo [信息] 使用Jar命令运行Web工程。
echo.
cd %~dp0
cd ../ruoyi-admin/target
set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
java -jar %JAVA_OPTS% ruoyi-admin.jar
cd bin
pause

487
doc/0314sql-更新.txt Normal file
View File

@@ -0,0 +1,487 @@
alter table sys_group_customer add column `cust_lb` char(1) DEFAULT NULL COMMENT '是否行内客户'; -- 舒
-- 张淋彬
ALTER TABLE ibs.ibs_anchor_address_965 ADD source varchar(100) NULL COMMENT '地址来源';
ALTER TABLE ibs.ibs_anchor_965 ADD cust_status INT DEFAULT 1 NULL;
ALTER TABLE ibs.ibs_anchor_965 ADD cust_address_status INT DEFAULT 1 NULL;
ALTER TABLE ibs.ibs_anchor_965 ADD create_time DATETIME DEFAULT CURRENT_TIMESTAMP NULL;
CREATE INDEX `ibs_anchor_update_time_IDX` USING BTREE ON ibs.ibs_anchor_965 (update_time desc);
CREATE INDEX `ibs_anchor_cust_status_IDX` USING BTREE ON ibs.ibs_anchor_965 (cust_status,cust_address_status,delete_status,cust_type);
CREATE INDEX `ibs_anchor_cust_type_IDX` USING BTREE ON ibs.ibs_anchor_965 (cust_type,delete_status,address_id);
CREATE INDEX `ibs_anchor_cust_id_IDX` USING BTREE ON ibs.ibs_anchor_965 (cust_id,legal_id,delete_status);
ALTER TABLE ibs.cust_info_retail_965 ADD normal_location varchar(100) NULL COMMENT '常住地址';
ALTER TABLE ibs.cust_info_retail_965 ADD idc_location varchar(100) NULL COMMENT '身份证地址';
ALTER TABLE ibs.cust_info_retail_965 ADD relation_location varchar(100) NULL COMMENT '联系地址';
-- 张昱
CREATE TABLE `sys_campaign_group` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`campaign_id` varchar(100) DEFAULT NULL COMMENT '活动id',
`group_id` varchar(100) DEFAULT NULL COMMENT '客群id',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`create_by` varchar(10) DEFAULT NULL COMMENT '创建人',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=359 DEFAULT CHARSET=utf8 COMMENT='清单客群关系表'
-- ibs_pre.sys_campaign_second definition
CREATE TABLE `sys_campaign_second` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`campaign_name` varchar(100) DEFAULT NULL COMMENT '活动名称(任务名称)',
`dept_id` bigint(20) DEFAULT NULL COMMENT '部门id',
`user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
`create_by` varchar(100) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(100) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`start_time` datetime DEFAULT NULL COMMENT '活动开始时间',
`end_time` datetime DEFAULT NULL COMMENT '活动结束时间',
`campaign_degree` varchar(100) DEFAULT NULL COMMENT '活动紧急程度,高,中,低',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在2代表删除)',
`campaign_type` varchar(100) DEFAULT NULL COMMENT '活动类型,走访,电话,短信',
`claim_type` char(1) DEFAULT NULL COMMENT '认领类型0强制认领1可选认领',
`distribute_type` varchar(100) DEFAULT NULL COMMENT '第一优先级分配规则0手动指定1按照客户归属2按照地址归属',
`campaign_id` varchar(100) DEFAULT NULL COMMENT '活动id(任务id)',
`claim_start_time` datetime DEFAULT NULL COMMENT '活动认领开始时间',
`claim_end_time` datetime DEFAULT NULL COMMENT '活动认领结束时间',
`executer` char(1) DEFAULT NULL COMMENT '执行人,0代表机构1代表个人2代表混合分配',
`create_role` char(1) DEFAULT NULL COMMENT '活动创建角色0总行管理员1: 零售 2对公 3运管 5 支行',
`group_id` varchar(100) DEFAULT NULL COMMENT '客群id',
`second_push_status` char(1) DEFAULT '0' COMMENT '活动是否二次推送过0未推送1已推送',
`distribute_type2` varchar(100) DEFAULT NULL COMMENT '第二优先级分配规则0手动指定1按照客户归属2按照地址归属',
`distribute_type3` varchar(100) DEFAULT NULL COMMENT '第三优先级分配规则0手动指定1按照客户归属2按照地址归属',
`task_type` varchar(100) DEFAULT NULL COMMENT '任务类型0营销任务1事务任务',
`check_target` varchar(100) DEFAULT NULL COMMENT '考核目标,存款营销,贷款营销,产品营销,贷前调查,贷后回访,预期催收,其他',
`task_index` varchar(100) DEFAULT NULL COMMENT '任务指标',
`reward` varchar(300) DEFAULT NULL COMMENT '奖励说明',
`feed_back` varchar(100) DEFAULT NULL COMMENT '反馈要求,无,签到签退,拍照,反馈记录',
`cust_type` char(1) DEFAULT NULL COMMENT '客户类型 0个人1商户2企业',
`distribute_cont` varchar(100) DEFAULT NULL COMMENT '規則1内容',
`distribute_cont2` varchar(100) DEFAULT NULL COMMENT '規則2内容',
`distribute_cont3` varchar(100) DEFAULT NULL COMMENT '規則3内容',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COMMENT='二次分配活动表';
insert into sys_campaign_group(campaign_id ,group_id )
select distinct campaign_id ,group_id from sys_campaign_group_customer;
ALTER TABLE ibs.sys_campaign ADD distribute_cont3 varchar(100) NULL COMMENT '';
ALTER TABLE ibs.sys_campaign ADD distribute_cont2 varchar(100) NULL COMMENT '';
ALTER TABLE ibs.sys_campaign ADD distribute_cont varchar(100) NULL COMMENT '';
ALTER TABLE ibs.sys_campaign MODIFY COLUMN distribute_type2 varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '';
ALTER TABLE ibs.sys_campaign MODIFY COLUMN distribute_type3 varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '';
-- 何
ALTER TABLE ibs.relation_rule ADD add_source varchar(100) NULL COMMENT '地址来源';
ALTER TABLE ibs.relation_rule ADD add_source_id varchar(100) NULL COMMENT '地址来源码值';
ALTER TABLE ibs.cust_tab_list_info ADD is_start varchar(1) NULL COMMENT '0停用1启动';
ALTER TABLE ibs.cust_tab_list_info MODIFY COLUMN comput_type varchar(1) COMMENT '加工类型: 0手动执行1 天2周 3月4年';
--各个客户表都要965以外的其余行社
ALTER TABLE ibs.cust_info_retail_965 ADD record_status char(1) NULL COMMENT '建档标识,新入客户表的客户状态为未建档';
ALTER TABLE ibs.cust_info_merchant_965 ADD record_status char(1) NULL COMMENT '建档标识,新入客户表的客户状态为未建档';
ALTER TABLE ibs.cust_info_business_965 ADD record_status char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '建档标识,新入客户表的客户状态为未建档';
ALTER TABLE ibs.cust_info_retail_807 ADD record_status char(1) NULL COMMENT '建档标识,新入客户表的客户状态为未建档';
ALTER TABLE ibs.cust_info_merchant_807 ADD record_status char(1) NULL COMMENT '建档标识,新入客户表的客户状态为未建档';
ALTER TABLE ibs.cust_info_business_807 ADD record_status char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '建档标识,新入客户表的客户状态为未建档';
ALTER TABLE ibs.cust_info_retail_831 ADD record_status char(1) NULL COMMENT '建档标识,新入客户表的客户状态为未建档';
ALTER TABLE ibs.cust_info_merchant_831 ADD record_status char(1) NULL COMMENT '建档标识,新入客户表的客户状态为未建档';
ALTER TABLE ibs.cust_info_business_831 ADD record_status char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '建档标识,新入客户表的客户状态为未建档';
ALTER TABLE ibs.cust_info_retail_931 ADD record_status char(1) NULL COMMENT '建档标识,新入客户表的客户状态为未建档';
ALTER TABLE ibs.cust_info_merchant_931 ADD record_status char(1) NULL COMMENT '建档标识,新入客户表的客户状态为未建档';
ALTER TABLE ibs.cust_info_business_931 ADD record_status char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '建档标识,新入客户表的客户状态为未建档';
-- ibs.family_member definition
CREATE TABLE `family_member` (
`id_card` varchar(18) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '身份证号',
`name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '姓名',
`father_card` varchar(18) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '父亲身份证',
`mother_card` varchar(18) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '母亲身份证',
`spouse_card` varchar(18) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '配偶身份证',
`family_id` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '家庭id',
`gender` char(1) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '性别M男F女',
`age` int(11) DEFAULT NULL COMMENT '年龄',
`is_delete` char(1) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '0未删除1逻辑删除',
`bs_id` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '兄弟姐妹唯一id',
`spouse_family_id` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '配偶家庭id女性出嫁后此字段填充男方家庭id男方结婚后也要写入女方家庭id',
`create_time` datetime DEFAULT NULL,
`create_by` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
`update_by` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
`birth_date` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=112 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
INSERT INTO ibs.sys_dict_type
(dict_id, dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark)
VALUES(null, '地址来源码值', 'address_source', '0', 'admin', '2024-10-25 10:52:38', '', NULL, NULL);
INSERT INTO ibs.sys_dict_type
(dict_id, dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark)
VALUES(null, '亲属关系码值', 'family_relation', '0', 'admin', '2024-10-25 10:52:38', '', NULL, NULL);
INSERT INTO ibs.sys_dict_type
(dict_id, dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark)
VALUES(null, '对公经营状态', 'reg_status', '0', 'admin', '2024-10-25 10:52:38', '', NULL, NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'信用卡开卡','0_gh_xykkk','ral_rules',NULL,'default','N','0','admin','2024-10-25 10:55:21','9650702','2024-11-21 10:03:41',NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(1,'信用卡销卡','1_gh_xykxk','ral_rules',NULL,'default','N','0','admin','2024-10-25 10:55:54','9650702','2024-11-20 16:23:07',NULL),
(0,'家庭地址','0_dz_jtdz','ral_rules',NULL,'default','N','0','admin','2024-10-25 10:56:33','9650702','2024-11-21 10:03:44',NULL),
(0,'信用卡-企业开卡','0_gh_xykkk','ral_rules',NULL,'default','N','0','9650702','2024-11-20 16:23:59','9650702','2024-11-21 10:05:16',NULL),
(0,'信用卡-企业销卡','0_gh_xykxk','ral_rules',NULL,'default','N','0','9650702','2024-11-20 16:24:21','9650702','2024-11-21 10:05:21',NULL),
(0,'注册地址','2_dz_zcdz','ral_rules',NULL,'default','N','0','9650702','2024-11-20 16:24:43','9650702','2024-11-21 10:04:03',NULL),
(0,'经营地址','2_dz_jydz','ral_rules',NULL,'default','N','0','9650702','2024-11-20 16:25:01','9650702','2024-11-21 10:04:10',NULL),
(0,'商户-行用卡销卡','1_gh_xykxk','ral_rules',NULL,'default','N','0','9650702','2024-11-20 16:25:26','9650702','2024-11-21 10:04:44',NULL),
(0,'行用卡开卡-商户','1_gh_xykkk','ral_rules',NULL,'default','N','0','9650702','2024-11-20 16:25:45','9650702','2024-11-21 10:04:51',NULL),
(0,'注册地址','1_dz_zcdz','ral_rules',NULL,'default','N','0','9650702','2024-11-20 16:26:00','9650702','2024-11-21 14:18:29',NULL),
(0,'经营地址','1_dz_btdz','ral_rules',NULL,'default','N','0','9650702','2024-11-20 16:26:25','9650702','2024-11-21 14:19:54',NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'工作地址','0_dz_gzdz','ral_rules',NULL,'default','N','0','9650702','2024-11-21 14:20:51','',NULL,NULL),
(0,'户籍地址','0_dz_hjdz','ral_rules',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'核心','0_hx','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'大信贷','0_dxd','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'EICC','0_eicc','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'ECIF','0_ecif','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'手工导入','0_sgdr','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'核心','1_hx','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'大信贷','1_dxd','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'EICC','1_eicc','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'ECIF','1_ecif','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'手工导入','1_sgdr','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'新华社','1_xhs','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'金综','1_jz','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'核心','2_hx','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'大信贷','2_dxd','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'EICC','2_eicc','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'ECIF','2_ecif','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'手工导入','2_sgdr','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'新华社','2_xhs','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'金综','2_jz','address_source',NULL,'default','N','0','9650702','2024-11-21 14:21:10','',NULL,NULL),
(0,'外高祖母','m,m,m,m','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'小姑子','h,ss','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'曾伯祖父','f,f,f,f,bb,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'外甥女','ss,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'女婿','h,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'舅祖母/妗婆','f,m,bb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'外曾孙','s,d,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'叔祖母','f,f,sb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'曾祖姑母/太姑婆','f,f,f,f,bb,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'女儿','h,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'高祖姑丈/老太姑婆公','f,f,f,f,ss,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'公公','h,f','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'高祖母/老太奶奶','f,f,f,f,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表姑夫','f,f,bs,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'嫂子','bb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'堂外姑丈/堂外姑婆公','m,f,f,bb,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'婆婆','h,m','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'妹夫','ss,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'侄子','bb,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'表妹夫','f,ss,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'大伯子','h,bb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'高伯祖母/老太婆','f,f,f,f,bb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'堂叔祖母','f,f,f,sb,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'高祖父的妻子(高祖母)','f,f,f,f,m','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'堂外叔祖母/堂外婶婆','m,f,f,sb,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'大姑子','h,bs','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'小叔子','h,sb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'哥哥','bb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'曾外孙女','d,d,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'堂姐夫','f,bb,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'祖姑母/姑婆','f,f,ss','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'妻子的伯祖父','w,f,f,bb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表姐夫/表妹夫','m,sb,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'襟兄','w,bs,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表叔','f,f,ss,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表婶','f,f,ss,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'曾祖姑母/太姑婆','f,f,f,f,sb,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'孙女婿','d,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'弟弟','sb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'姐姐','bs','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'祖姑丈/姑婆公','f,f,ss,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'曾祖姑丈/太姑婆公','f,f,f,f,sb,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'外曾婆','h,m,m,m','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'祖姑丈/姑婆公','f,f,f,bb,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表姨夫','m,f,bs,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表姑','f,f,ss,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'妹妹','ss','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'外甥','sb,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'高叔祖母/老太婆','f,f,f,f,sb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'女儿','d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'伯祖父','f,f,bb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'堂婶','f,f,bb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'外婆','h,m,m','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'父亲','f','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表舅','m,f,bs,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'丈夫','h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'外姑丈/外姑婆公','m,f,bs,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'儿媳','w,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'母亲','m','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'表妗','m,f,ss,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'弟媳','sb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'岳父','w,f','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'叔祖父','f,f,sb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'儿子','s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'祖姑母/姑婆','f,f,bs','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表姨','m,f,bs,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'妻子','w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'曾叔祖父','f,f,f,f,sb,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'岳母','w,m','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'女婿','w,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表姐/表妹','m,sb,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'堂外姑丈/堂外姑婆公','m,f,f,sb,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表伯','f,f,bs,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表姑夫','f,f,ss,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表哥/表弟','m,sb,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'堂妹/妹妹','f,sb,w,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'舅母/舅妈','m,sb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表姨','m,f,ss,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'曾孙媳妇','s,s,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'祖父','f,f','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'大外祖母/外太婆/太姥姥','m,f,f,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表哥/表弟','m,ss,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'堂弟/弟弟','f,sb,w,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'祖母/奶奶','f,m','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表姑','f,f,bs,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'外伯祖母/外姆婆','m,f,bb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'祖姑丈/姑婆公','f,f,bs,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'曾孙','s,s,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'孙媳妇','s,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'母亲','f,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'堂伯祖母','f,f,f,bb,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'曾叔祖母','f,f,f,f,sb,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表姨夫','m,f,ss,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'叔岳父','w,f,sb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'曾伯祖母','f,f,f,f,bb,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'外叔祖母/外婶婆','m,f,sb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'堂伯祖父','f,f,f,bb,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'外姑丈/外姑婆公','m,f,ss,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'高伯祖母/老太婆','f,f,f,f,f,bb,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'曾伯祖母','f,f,f,bb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'外祖父/外公/姥爷','m,f','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'父亲/爸爸','m,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表嫂/表弟妇','m,sb,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表姐夫/表妹夫','m,ss,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表舅','m,f,ss,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'外祖母','m,m','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表甥女','m,mb,s,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'伯岳父','w,f,bb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'祖姑母/姑婆','f,f,f,bb,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'大外祖父/外太公/太姥爷','m,f,f','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表姐夫/表妹夫','m,bb,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'大外祖母/外太婆/太姥姥','m,f,m','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'曾祖姑母/太姑婆','f,f,f,ss','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'外舅祖母/外妗婆','m,m,bb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'高祖姑丈/老太姑婆公','f,f,f,f,f,bb,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'舅舅','m,mb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'堂外伯祖父/堂外伯公','m,f,f,bb,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表舅','m,m,mb,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'高叔祖父/老太公','f,f,f,f,f,sb,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'曾祖姑母/太姑婆','f,f,f,bs','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'姑丈/姑夫','f,ss,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'曾叔祖父','f,f,f,sb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表嫂/表弟妇','m,bb,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'高祖父','f,f,f,f','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'高祖母/老太奶奶','f,f,f,m','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'堂外姑母/堂外姑婆','m,f,f,bb,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表弟','f,ss,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'孙女','d,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'高祖姑母/老太姑婆','f,f,f,f,f,sb,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'外舅祖父/外舅公','m,m,bb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'曾伯祖父','f,f,f,bb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'女婿','d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'堂伯','f,bb,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'曾祖母/太奶奶','f,f,f,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'曾祖姑丈/太姑婆公','f,f,f,bs,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'岳曾祖父','w,f,f,f','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'外甥','d,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表姨','m,bs,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表妹','f,ss,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'曾祖姑丈/太姑婆公','f,f,f,ss,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'堂外姑母/堂外姑婆','m,f,f,sb,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'表姐/表妹','m,bs,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'曾祖姑丈/太姑婆公','f,f,f,f,bb,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'姨夫','m,bs,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'伯母','f,bb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:15','',NULL,NULL),
(0,'外曾祖母','m,m,m','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'太岳母','w,f,f,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'堂外叔祖父/堂外叔公','m,f,f,sb,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'表嫂','f,bs,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'堂妹夫','f,sb,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'表嫂/表弟妇','m,ss,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'姑母/姑姑','f,ss','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'岳祖父','w,f,f','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'外舅祖母/外妗婆','m,m,sb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'表姐/表妹','m,bb,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'婶婶','f,sb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'太岳母','w,f,m','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'外舅祖父/外舅公','m,m,sb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'表姐/表妹','m,ss,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'高伯祖父/老太公','f,f,f,f,f,bb,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'祖姑母/姑婆','f,f,f,sb,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'姨丈/姨夫','m,ss,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'叔岳母','w,f,sb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'舅妈','m,mb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'高祖姑母/老太姑婆','f,f,f,f,f,bb,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'表舅','m,mb,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'堂叔祖父','f,f,f,sb,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'伯伯','f,bb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'高叔祖母/老太婆','f,f,f,f,f,sb,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'孙女','s,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'堂叔','f,sb,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'曾叔祖母','f,f,f,sb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'舅母/舅妈','m,bb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'表姐夫/表妹夫','m,bs,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'姑姑','f,bs','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'叔叔','f,sb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'孙子','s,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'表哥/表弟','m,bb,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'堂妹','f,sb,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'儿媳','s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'伯岳母','w,f,bb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'高祖姑母/老太姑婆','f,f,f,f,ss','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'小姨子','w,ss','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'襟弟','w,ss,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'大妗','w,bb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'高祖姑母/老太姑婆','f,f,f,f,bs','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'大姨子','w,bs','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'小舅子','w,sb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'高叔祖父/老太公','f,f,f,f,sb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'高伯祖父/老太公','f,f,f,f,bb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'大舅子','w,bb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'表姐夫','f,bs,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'堂弟妇/弟妹','f,sb,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'外姑母/外姑婆','m,f,bs','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'孙媳妇的丈夫(即自己)','s,s,w,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'外叔祖父/外叔公','m,f,sb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'外甥女','d,s,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'高祖姑丈/老太姑婆公','f,f,f,f,f,sb,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'外伯祖父/外伯公','m,f,bb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'阿姨','m,bs','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'表弟妇','f,ss,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'舅祖父/舅公','f,m,bb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'堂外伯祖母/堂外姆婆','m,f,f,bb,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'祖姑丈/姑婆公','f,f,f,sb,d,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'姨母/姨姨','m,ss','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'曾祖母/太奶奶','f,f,m','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'舅祖母/妗婆','f,m,sb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'表嫂/表弟妇','m,bs,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'堂姐/堂姊','f,bb,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'舅祖父/舅公','f,m,sb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'祖母/奶奶','f,f,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'表姆','f,f,bs,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'妈妈的弟弟','m,sb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'小妗','w,sb,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'外姑母/外姑婆','m,f,ss','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'姐夫','bs,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'外高祖母的丈夫(外高祖父)','m,m,m,m,f','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'堂嫂/嫂嫂','f,bb,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'表姐','f,bs,d','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'曾祖父','f,f,f','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'高祖姑丈/老太姑婆公','f,f,f,f,bs,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'堂侄','f,bb,s,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'舅父/大舅','m,bb','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'表兄/表哥','f,bs,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'侄女','bs,s','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'姑丈/姑夫','f,bs,h','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'表妗','m,f,bs,s,w','family_relation',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'变更','1','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'变更中','2','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'吊销已注销','3','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'存续(在营、开业,在册)','4','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'已注销','5','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'歇业','6','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'正常','7','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'注销','8','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'其他','9','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'吊销','10','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'吊销未注销','11','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'在业','12','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL);
INSERT INTO ibs.sys_dict_data (dict_sort,dict_label,dict_value,dict_type,css_class,list_class,is_default,status,create_by,create_time,update_by,update_time,remark) VALUES
(0,'废止','13','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'撤销','14','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'注销中','15','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'吊销已注销','16','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'存续','17','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'迁出','18','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'备案','19','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'开业','20','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL),
(0,'空','21','reg_status',NULL,NULL,'N','0','admin','2025-03-12 10:50:16','',NULL,NULL);
----吴
-- ibs.task_visit_log definition
CREATE TABLE `task_visit_log` (
`id` bigint(21) NOT NULL AUTO_INCREMENT COMMENT '主键',
`cust_id` varchar(255) DEFAULT NULL COMMENT '客户号',
`nick_name` varchar(255) DEFAULT NULL COMMENT '柜员名称',
`cust_feedback` varchar(10) DEFAULT NULL COMMENT '客户意向',
`visit_result` varchar(10) DEFAULT NULL COMMENT '营销结果',
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
`create_by` varchar(32) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='任务走访记录表';
-- ibs.task_visit_error_log definition
CREATE TABLE `task_visit_error_log` (
`id` bigint(21) NOT NULL AUTO_INCREMENT COMMENT '主键',
`cust_id` varchar(255) DEFAULT NULL COMMENT '客户号',
`task_id` varchar(255) DEFAULT NULL COMMENT '任务id',
`address_error_flag` varchar(1) DEFAULT NULL COMMENT '地址是否错误',
`contact_error_flag` varchar(1) DEFAULT NULL COMMENT '联系方式是否错误',
`create_by` varchar(32) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='任务走访无法触达';

0
doc/0324sql Normal file
View File

178
doc/0417更新sql.txt Normal file
View File

@@ -0,0 +1,178 @@
-- zy
CREATE TABLE `sys_campaign_group_customer_supplement` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`cust_id` varchar(100) DEFAULT NULL COMMENT '客户号',
`campaign_id` varchar(100) DEFAULT NULL COMMENT '活动id',
`group_id` varchar(100) DEFAULT NULL COMMENT '分群id',
`dept_id` bigint(20) DEFAULT NULL COMMENT '部门id',
`user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
`create_by` varchar(100) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(100) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在2代表删除)',
`grid_id` bigint(20) DEFAULT NULL COMMENT '网格id',
`list_type` char(1) DEFAULT NULL COMMENT '0推荐营销清单1我的营销清单出版需求设计的字段现在暂时不用',
`push_status` char(1) DEFAULT '0' COMMENT '推送状态(0代表未推送1代表推送成功2代表推送失败)',
`org_claim_status` char(1) DEFAULT '0' COMMENT '机构认领状态(0待认领1已认领)',
`org_distribute_status` char(1) DEFAULT '0' COMMENT '机构分配状态(0待分配1已分配)',
`cust_claim_status` char(1) DEFAULT '0' COMMENT '客户经理认领状态(0待认领1已认领)',
`create_role` char(1) DEFAULT NULL COMMENT '记录创建角色0总行管理员1零售2对公3运管5支行',
`grid_name` varchar(100) DEFAULT NULL COMMENT '一级网格名称',
`grid_name2` varchar(100) DEFAULT NULL COMMENT '二级网格名称',
`outlets` varchar(100) DEFAULT NULL COMMENT '客户经理所在网点',
`cust_idc` varchar(100) DEFAULT NULL COMMENT '客户身份证号',
`second_push_status` char(1) DEFAULT '0' COMMENT '活动是否二次推送过0未推送1已推送',
`cust_phone` varchar(100) DEFAULT NULL COMMENT '客户电话',
`social_credit_code` varchar(100) DEFAULT NULL COMMENT '统一社会信用识别码(只有企业和商户有)',
`outlets_id` varchar(30) DEFAULT NULL COMMENT '客户经理所在网点ID(若客户经理不属于网点,则无值)',
`push_user_level` varchar(10) DEFAULT NULL COMMENT '推送客户经理级别head 总行 branch支行',
`push_status_branch` varchar(1) DEFAULT NULL COMMENT '支行推送状态 0 未推送1成功2失败',
PRIMARY KEY (`id`),
KEY `sys_campaign_group_customer_supplement_cust_id_IDX` (`cust_id`) USING BTREE,
KEY `sys_campaign_group_customer_supplement_campaign_id_IDX` (`campaign_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3610 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='活动分群客户关联关系表-跑批结果表-补充客户经理、机构'
ALTER TABLE sys_menu ADD is_link varchar(1) DEFAULT '0' NULL COMMENT '是否可以直接访问';
CREATE TABLE `admin_region_index_965` (
`id` bigint(21) NOT NULL AUTO_INCREMENT COMMENT '主键',
`create_time` date DEFAULT NULL COMMENT '创建日期',
`level` int(11) DEFAULT NULL COMMENT '行政区划等级',
`code` varchar(255) DEFAULT NULL COMMENT '行政区划编码',
`item_name` varchar(255) DEFAULT NULL COMMENT '指标名称',
`item_val` varchar(255) DEFAULT NULL COMMENT '指标值',
`dept_id` bigint(21) DEFAULT NULL COMMENT '归属机构',
`ops_dept` varchar(1) DEFAULT NULL COMMENT '归属部室',
`item_idx` varchar(10) DEFAULT NULL COMMENT '指标码值',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='行政区划热力指标';
ALTER TABLE draw_shape ADD create_by varchar(100) NULL COMMENT '创建者';
update draw_shape set create_by = update_by;
INSERT INTO sys_dict_type ( dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark) VALUES
('行政区划数据码值', 'admin_region_data_metric', '0', 'admin', '2025-04-01 11:01:29', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '建档率', '1001', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '授信率', '1002', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '合同签约率', '1003', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '信用卡覆盖率', '1004', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, 'ETC覆盖率', '1005', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '丰收互联覆盖率', '1006', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '收单覆盖率', '1007', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '代扣电费覆盖率', '1008', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '贷款黑名单占比', '1009', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '五级不良贷款占比(人)', '1010', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '五级不良贷款占比(金额)', '1011', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '合同签约率', '2001', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '签发承兑汇票率', '2002', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '贴现业务率', '2003', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '保函业务率', '2004', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '有效代发工资率', '2005', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '代扣电费率', '2006', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '代扣水费率', '2007', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '代扣税费率', '2008', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '票据宝签约率', '2009', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '财资宝签约率', '2010', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '收付宝签约率', '2011', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '贸融宝签约率', '2012', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '数字生态产品签约率', '2013', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '开户率', '2014', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '国际结算业务率', '2015', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) VALUES( 0, '远期结算汇业务率', '2016', 'admin_region_data_metric', NULL, 'default', 'N', '0', 'admin', '2025-03-24 20:21:30', '', NULL, NULL);
-- zlb
CREATE TABLE `draw_layer_audit_965` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`shape_id` varchar(100) DEFAULT NULL COMMENT '图形id',
`shape_name` varchar(100) DEFAULT NULL COMMENT '图形名称锚点编号。同客户编号,即证件类型',
`layer_id` varchar(100) DEFAULT NULL COMMENT '图层id',
`layer_name` varchar(100) DEFAULT NULL COMMENT '图层名称',
`dept_id` varchar(100) DEFAULT NULL COMMENT '支行机构号',
`dept_name` varchar(100) NOT NULL COMMENT '支行名称',
`user_name` varchar(100) DEFAULT NULL COMMENT '客户经理柜员号',
`nick_name` varchar(100) NOT NULL COMMENT '客户经理名称(申请者、创建者)',
`ops_dept` varchar(10) NOT NULL COMMENT '部室归属',
`delete_status` int(11) DEFAULT '0' COMMENT '删除状态0为正常1为已删除',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '申请时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='区域审批表';
ALTER TABLE draw_shape ADD audit_status varchar(10) DEFAULT '0' NOT NULL COMMENT '审批状态0待审批1审批通过2拒绝';
ALTER TABLE draw_shape ADD audit_remark varchar(100) NULL COMMENT '审批意见';
ALTER TABLE sys_group_customer MODIFY COLUMN push_status char(1) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '1' NULL COMMENT '导入状态(1代表导入成功2代表导入失败缺乏必填项或地址电话不全)';
--szq
CREATE TABLE `campaign_count` (
`dt` varchar(10) DEFAULT NULL COMMENT '统计日期',
`dept_id` varchar(10) DEFAULT NULL COMMENT '行社机构号',
`dept_name` varchar(10) DEFAULT NULL COMMENT '行社名称',
`user_id` varchar(10) DEFAULT NULL COMMENT '用户id',
`user_name` varchar(10) DEFAULT NULL COMMENT '用户姓名',
`create_camp_num_year` int(10) DEFAULT NULL COMMENT '创建的总任务数--年',
`push_camp_num_year` int(10) DEFAULT NULL COMMENT '推送给我的总任务数--年',
`other_camp_num_year` int(10) DEFAULT NULL COMMENT '其他总任务数--年',
`create_camp_num_month` int(10) DEFAULT NULL COMMENT '创建的总任务数--月',
`push_camp_num_month` int(10) DEFAULT NULL COMMENT '推送给我的总任务数--月',
`other_camp_num_month` int(10) DEFAULT NULL COMMENT '其他总任务数--月',
`create_camp_num_week` int(10) DEFAULT NULL COMMENT '创建的总任务数--周',
`push_camp_num_week` int(10) DEFAULT NULL COMMENT '推送给我的总任务数--周',
`other_camp_num_week` int(10) DEFAULT NULL COMMENT '其他总任务数--周',
`sum_type` char(2) DEFAULT NULL COMMENT '统计层级 0总行 1零售 2公司 3运管 5支行 -1客户经理',
`cust_type` char(1) DEFAULT NULL COMMENT '客户类型 0个人1商户2企业'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='走访任务统计卡片'
CREATE TABLE `visit_info` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`campaign_id` varchar(100) DEFAULT NULL COMMENT '任务id',
`vis_name` varchar(100) DEFAULT NULL COMMENT '走访客户经理姓名',
`vis_id` varchar(100) DEFAULT NULL COMMENT '走访客户经理id',
`dept_id` varchar(100) DEFAULT NULL COMMENT '走访客户经理部门',
`vis_time` datetime DEFAULT NULL COMMENT '走访时间',
`cust_name` varchar(100) DEFAULT NULL COMMENT '走访客户名称',
`cust_idc` varchar(100) DEFAULT NULL COMMENT '客户证件号',
`social_credit_code` varchar(100) DEFAULT NULL COMMENT '企业(商户)统信码',
`create_by` varchar(100) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(100) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '走访备注',
`cust_type` char(1) DEFAULT NULL COMMENT '客户类型 0个人1商户2企业',
`dept_name` varchar(100) DEFAULT NULL COMMENT '部门名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1232 DEFAULT CHARSET=utf8 COMMENT='走访名单表'
CREATE TABLE `visit_campaign_count` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`campaign_id` varchar(100) DEFAULT NULL COMMENT '任务id',
`cust_num` bigint(20) DEFAULT NULL COMMENT '活动客户数',
`push_success_num` bigint(20) DEFAULT NULL COMMENT '推送成功客户数',
`allocate_rate` varchar(100) DEFAULT NULL COMMENT '机构分配率',
`issued_num` varchar(100) DEFAULT NULL COMMENT '客户认领率',
`claim_num` bigint(20) DEFAULT NULL COMMENT '认领客户数',
`valid_visit_num` bigint(20) DEFAULT NULL COMMENT '有效待走访客户数',
`visit_rate` varchar(100) DEFAULT NULL COMMENT '走访率',
`loan_sign_rate` varchar(100) DEFAULT NULL COMMENT '贷款合同签约率',
`increase_deposit_amount` varchar(100) DEFAULT NULL COMMENT '活期存款提升金额',
`push_client_id` varchar(100) DEFAULT NULL COMMENT '推送的客户经理',
`cust_type` char(1) DEFAULT NULL COMMENT '客户类型 0个人1商户2企业',
`dispatch_num` bigint(20) DEFAULT NULL COMMENT '已下发客户数',
`dept_id` bigint(20) DEFAULT NULL COMMENT '机构号',
`campaign_create_time` varchar(100) DEFAULT NULL COMMENT '活动创建时间',
`start_time` varchar(100) DEFAULT NULL COMMENT '活动开始时间',
`end_time` varchar(100) DEFAULT NULL COMMENT '活动结束时间',
`claim_ddline` varchar(100) DEFAULT NULL COMMENT '活动认领时限',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=537 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='走访任务统计'

371
doc/0515更新sql.txt Normal file

File diff suppressed because one or more lines are too long

46
doc/v2.2.2_mysql.txt Normal file
View File

@@ -0,0 +1,46 @@
INSERT INTO ibs.sys_dict_type ( dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark) VALUES('地图拓客货币币种码值', 'cust_map_cur_metric', '0', 'admin', '2025-05-23 10:06:15', '', NULL, NULL);
INSERT INTO ibs.sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) values
(0, '人民币元', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '加元', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '哥伦比亚比索', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '德国马克', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '挪威马克', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '新加坡元', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '日元', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '欧元', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '法国法郎', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '港元', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '澳大利亚元', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '瑞典克朗', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '瑞士法郎', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '美元', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '英镑', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '阿富汗尼', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '韩元', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '新台币', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL),
(0, '新西兰元', '101', 'cust_map_cur_metric', NULL, 'default', 'N', '0', 'admin', '2025-05-23 10:14:00', '', NULL, NULL);
CREATE TABLE dept_address(
dept_id bigint(21) NOT NULL COMMENT '部门id' ,
address VARCHAR(255) COMMENT '' ,
lng DECIMAL(15,8) COMMENT '' ,
lat DECIMAL(15,8) COMMENT '' ,
PRIMARY KEY (dept_id)
) COMMENT = '机构地址表';
CREATE TABLE cust_map_favorite(
id bigint(21) NOT NULL COMMENT '主键' ,
user_name VARCHAR(100) COMMENT '用户名' ,
cust_name VARCHAR(100) COMMENT '企业名称' ,
lp_name VARCHAR(100) COMMENT '法人姓名' ,
phone_number VARCHAR(100) COMMENT '联系方式' ,
regist_capi_show VARCHAR(100) COMMENT '注册资本展示字段' ,
province VARCHAR(100) COMMENT '省' ,
city VARCHAR(100) COMMENT '市' ,
address_detail longtext COMMENT '详细地址' ,
longitude DECIMAL(15,15) COMMENT '经度' ,
latitude DECIMAL(15,15) COMMENT '纬度' ,
start_date DATE COMMENT '成立年限' ,
PRIMARY KEY (id)
) COMMENT = '地图拓客收藏表';

Binary file not shown.

76
ibs/pom.xml Normal file
View File

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId>
<version>3.8.8</version>
</parent>
<artifactId>ibs</artifactId>
<dependencies>
<!-- Mockito依赖 -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.3.3</version> <!-- 请根据需要选择合适的版本 -->
<scope>test</scope>
</dependency>
<!-- JUnit依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version> <!-- 请根据需要选择合适的版本 -->
<scope>test</scope>
</dependency>
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-framework</artifactId>
</dependency>
<dependency>
<groupId>org.locationtech.jts</groupId>
<artifactId>jts-core</artifactId>
<version>1.18.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.33</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-system</artifactId>
</dependency>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.2</version>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,74 @@
package com.ruoyi.ibs.app.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.ibs.app.domain.QyWxpropertiex;
import com.ruoyi.ibs.app.domain.UrlDTO;
import com.ruoyi.ibs.app.service.QYWeiXinManagerInfoService;
import com.ruoyi.ibs.app.service.WeiXinService;
import com.ruoyi.ibs.app.util.JsonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Lookup;
import org.springframework.web.bind.annotation.*;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
/**
* @author 600477
* @date 2023/11/9
*/
@Api(tags = "移动端企业微信相关服务")
@RequestMapping("/api/mobile/qy/weixin")
@RestController
public class QYWeiXinController {
@Autowired
private WeiXinService weiXinService;
@Autowired
private QYWeiXinManagerInfoService qyWeiXinManagerInfoService;
@Autowired
private QyWxpropertiex qyWeiXinProperties;
@ApiOperation(value = "获取企业微信服务器ip")
@GetMapping("/getIp")
public AjaxResult getIp(String orgId) {
return weiXinService.getIp(orgId);
}
@ApiOperation(value = "获取使用企业微信jdk的票据")
@GetMapping("/ticket")
public JsonResult getTicket(String qyUrl,String orgId) throws UnsupportedEncodingException {
String url = URLDecoder.decode(qyUrl, StandardCharsets.UTF_8.toString());
return weiXinService.getTicketVo2(url,orgId);
}
@ApiOperation(value = "获取企业微信用户客户经理相关信息")
@GetMapping("/userinfo")
@Log(title = "企业微信登录")
public AjaxResult getUserInfo(String code,String orgId) {
return qyWeiXinManagerInfoService.getQYWeiXinUserInfo( code,orgId );
}
@ApiOperation(value = "获取企业微信相关参数")
@GetMapping("/getQyApi")
public AjaxResult getQyApi(String orgId) {
return AjaxResult.success(qyWeiXinManagerInfoService.getQyApi2( orgId ));
}
@ApiOperation(value = "获取企业微信用户客户经理相关信息")
@GetMapping("/getLoginUser")
//生产要注解掉
public AjaxResult getLogin(@RequestParam String userName) {
return qyWeiXinManagerInfoService.getLogin( userName );
}
}

View File

@@ -0,0 +1,34 @@
package com.ruoyi.ibs.app.domain;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class AccessTokenDTO {
/**
* 凭证
*/
@JsonProperty(value = "access_token")
private String accessToken;
/**
* 有效时间
*/
@JsonProperty(value = "expires_in")
private Integer expiresIn;
/**
* 错误码
*/
@JsonProperty(value = "errcode")
private Integer errCode;
/**
* 错误信息
*/
@JsonProperty(value = "errmsg")
private String errMsg;
}

View File

@@ -0,0 +1,16 @@
package com.ruoyi.ibs.app.domain;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
@Data
public class IpDomain {
@JsonProperty(value = "ip_list")
List<String> ipList;
@JsonProperty(value = "errcode")
String errcode;
@JsonProperty(value = "errmsg")
String errmsg;
}

View File

@@ -0,0 +1,46 @@
package com.ruoyi.ibs.app.domain;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* 企业微信用户身份
*
* @author 600477
* @date 2023/11/15
*/
@Data
public class QYUserDTO {
/**
* 错误码
*/
@JsonProperty(value = "errcode")
private Integer errCode;
/**
* 错误信息
*/
@JsonProperty(value = "errmsg")
private String errMsg;
/**
* 成员userId
*/
@JsonProperty(value = "userid")
private String userId;
/**
* 成员票据
*/
@JsonProperty(value = "user_ticket")
private String userTicket;
/**
* 企业微信accesstoken
*/
@JsonIgnore
private String accessToken;
}

View File

@@ -0,0 +1,44 @@
package com.ruoyi.ibs.app.domain;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* 企业用户详细信息
*
* @author 600477
* @date 2023/11/15
*/
@Data
public class QYUserDetailDTO {
/**
* 错误码
*/
@JsonProperty(value = "errcode")
private Integer errCode;
/**
* 错误信息
*/
@JsonProperty(value = "errmsg")
private String errMsg;
/**
* 成员userId
*/
@JsonProperty(value = "userid")
private String userId;
/**
* 手机号
*/
private String mobile;
/**
* 用户二维码
*/
@JsonProperty(value = "qr_code")
private String qrCode;
}

View File

@@ -0,0 +1,28 @@
package com.ruoyi.ibs.app.domain;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* 企业微信 配置参数类
*
* @author 600477
* @date 2023/11/09
*/
@Data
@Component
@ConfigurationProperties(prefix = "qywx")
public class QyWxpropertiex {
private String address;
private String appId;
private String secret;
private Integer agentId;
private String ticketUrl;
}

View File

@@ -0,0 +1,12 @@
package com.ruoyi.ibs.app.domain;
import lombok.Data;
@Data
public class QywxOrg {
String orgId;
String appId;
String secret;
String agentId;
}

View File

@@ -0,0 +1,34 @@
package com.ruoyi.ibs.app.domain;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* @author 600477
* @date 2023/11/9
*/
@Data
public class TicketDTO {
/**
* 错误码
*/
@JsonProperty(value = "errcode")
private Integer errCode;
/**
* 错误信息
*/
@JsonProperty(value = "errmsg")
private String errMsg;
/**
* 临时票据
*/
private String ticket;
/**
* 有效时长
*/
@JsonProperty(value = "expires_in")
private Integer expiresIn;
}

View File

@@ -0,0 +1,28 @@
package com.ruoyi.ibs.app.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author 600477
* @date 2023/11/9
*/
@Data
@ApiModel(description = "签名数据")
public class TicketVO {
@ApiModelProperty(value = "应用id", name = "appId")
private String appId;
@ApiModelProperty(value = "生成签名的时间戳", name = "timestamp")
private Long timestamp;
@ApiModelProperty(value = "生成签名的随机串", name = "nonceStr")
private String nonceStr;
@ApiModelProperty(value = "签名", name = "signature")
private String signature;
private String agentId;
}

View File

@@ -0,0 +1,9 @@
package com.ruoyi.ibs.app.domain;
import lombok.Data;
@Data
public class UrlDTO {
String qyUrl;
}

View File

@@ -0,0 +1,9 @@
package com.ruoyi.ibs.app.mapper;
import com.ruoyi.ibs.app.domain.QywxOrg;
public interface QYWeiXinMapper {
QywxOrg getQywxOrg(String orgId);
QywxOrg getQywxOrg2(String orgId);
}

View File

@@ -0,0 +1,31 @@
package com.ruoyi.ibs.app.service;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.ibs.app.domain.QywxOrg;
import com.ruoyi.ibs.app.util.JsonResult;
/**
* 企业微信客户经理服务
*
* @author 600477
* @date 2023/11/15
*/
public interface QYWeiXinManagerInfoService {
/**
* 获取企业用户关联客户经理信息
*
* @param code 企业微信授权码
*
* @return
*/
AjaxResult getQYWeiXinUserInfo(String code,String orgId);
AjaxResult getLogin(String userName);
QywxOrg getQyApi(String orgId);
QywxOrg getQyApi2(String orgId);
}

View File

@@ -0,0 +1,17 @@
package com.ruoyi.ibs.app.service;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.ibs.app.domain.QYUserDTO;
import com.ruoyi.ibs.app.domain.QYUserDetailDTO;
import com.ruoyi.ibs.app.util.JsonResult;
public interface WeiXinService {
JsonResult<QYUserDTO> getQYUser(String code,String appId,String secret,String orgId);
JsonResult<QYUserDetailDTO> getQYUserDetail(QYUserDTO data);
JsonResult getTicketVo2(String qyUrl,String orgId);
AjaxResult getIp(String orgId);
}

View File

@@ -0,0 +1,175 @@
package com.ruoyi.ibs.app.service.impl;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.user.UserPasswordNotMatchException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.manager.AsyncManager;
import com.ruoyi.framework.manager.factory.AsyncFactory;
import com.ruoyi.framework.security.context.AuthenticationContextHolder;
import com.ruoyi.framework.web.service.SysLoginService;
import com.ruoyi.framework.web.service.SysPermissionService;
import com.ruoyi.ibs.app.domain.QYUserDTO;
import com.ruoyi.ibs.app.domain.QYUserDetailDTO;
import com.ruoyi.ibs.app.domain.QywxOrg;
import com.ruoyi.ibs.app.mapper.QYWeiXinMapper;
import com.ruoyi.ibs.app.service.QYWeiXinManagerInfoService;
import com.ruoyi.ibs.app.service.WeiXinService;
import com.ruoyi.ibs.app.util.Constants;
import com.ruoyi.ibs.app.util.JsonResult;
import com.ruoyi.ibs.app.util.RedisUtil;
import com.ruoyi.system.mapper.SysUserMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import com.ruoyi.framework.web.service.TokenService;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.UUID;
/**
* @author 600477
* @date 2023/11/15
*/
@Slf4j
@Service
public class QYWeiXinManagerInfoServiceImpl implements QYWeiXinManagerInfoService {
@Autowired
private WeiXinService weiXinService;
@Autowired
private SysUserMapper sysUserMapper;
@Autowired
private RedisUtil redisUtil;
@Autowired
private TokenService tokenService;
@Autowired
private SysPermissionService permissionService;
@Autowired
private SysLoginService sysLoginService;
@Autowired
private QYWeiXinMapper qyWeiXinMapper;
@Override
public AjaxResult getQYWeiXinUserInfo(String code,String orgId) {
QywxOrg qywxOrg = qyWeiXinMapper.getQywxOrg(orgId);
//获取企业微信用户信息
JsonResult<QYUserDTO> qyUserResult = weiXinService.getQYUser( code,qywxOrg.getAppId(),qywxOrg.getSecret(),orgId );
if (!Constants.OK.equals( qyUserResult.getCode() )) {
return AjaxResult.error( Constants.FAILURE, qyUserResult.getMessage() );
}
//获取企业微信用户详细信息
JsonResult<QYUserDetailDTO> qyUserDetailResult = weiXinService.getQYUserDetail( qyUserResult.getData() );
if (!Constants.OK.equals( qyUserDetailResult.getCode() )) {
return AjaxResult.error( Constants.FAILURE, qyUserDetailResult.getMessage() );
}
QYUserDetailDTO qyUserDetailDTO = qyUserDetailResult.getData();
log.info(qyUserDetailResult.getData().toString());
String userName = sysUserMapper.selectOneByNum( qyUserDetailDTO.getMobile() );
if (userName == null ) {
return AjaxResult.error( Constants.FAILURE, "客户经理信息不存在" );
}
SysUser sysUser = sysUserMapper.selectUserByUserName( userName );
// UsernamePasswordAuthenticationToken token = null;
Authentication token = null;
if (sysUser == null) {
return AjaxResult.error("客户经理信息不存在");
}
AjaxResult ajax = AjaxResult.success();
try{
UserDetails userDetails = new LoginUser(sysUser.getUserId(),sysUser.getDeptId(),sysUser,permissionService.getMenuPermission(sysUser));
token = new UsernamePasswordAuthenticationToken(userDetails,null, AuthorityUtils.createAuthorityList("ROLE_USER"));
AuthenticationContextHolder.setContext(token);
SecurityContextHolder.getContext().setAuthentication(token);
}
catch (Exception e){
if (e instanceof BadCredentialsException){
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName,"failed", "login.failed"));
throw new UserPasswordNotMatchException();
}else {
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName,"failed", e.getMessage()));
throw new ServiceException(e.getMessage());
}
}
finally {
AuthenticationContextHolder.clearContext();
}
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName,"sucess", "login.sucess"));
LoginUser loginUser = (LoginUser) token.getPrincipal();
sysLoginService.recordLoginInfo(sysUser.getUserId());
String userToken = tokenService.createToken(loginUser);
ajax.put(Constants.QY_WEI_XIN_ACCESS_TOKEN_KEY,userToken);
return ajax;
}
@Override
public AjaxResult getLogin(String userName) {
SysUser sysUser = sysUserMapper.selectUserByUserName( userName );
// UsernamePasswordAuthenticationToken token = null;
Authentication token = null;
if (sysUser == null) {
return AjaxResult.error("客户经理信息不存在");
}
AjaxResult ajax = AjaxResult.success();
try{
UserDetails userDetails = new LoginUser(sysUser.getUserId(),sysUser.getDeptId(),sysUser,permissionService.getMenuPermission(sysUser));
token = new UsernamePasswordAuthenticationToken(userDetails,null, AuthorityUtils.createAuthorityList("ROLE_USER"));
AuthenticationContextHolder.setContext(token);
SecurityContextHolder.getContext().setAuthentication(token);
}
catch (Exception e){
if (e instanceof BadCredentialsException){
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName,"failed", "login.failed"));
throw new UserPasswordNotMatchException();
}else {
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName,"failed", e.getMessage()));
throw new ServiceException(e.getMessage());
}
}
finally {
AuthenticationContextHolder.clearContext();
}
// UserDetails userDetails = userDetailsService.loadUserByUsername(userName);
// UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(userDetails.getUsername(), userDetails.getPassword());
// Authentication authentication = authenticationManager.authenticate(token);
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName,"sucess", "login.sucess"));
LoginUser loginUser = (LoginUser) token.getPrincipal();
System.out.println("--------------");
System.out.println(SecurityUtils.getLoginUser());
System.out.println("--------------");
sysLoginService.recordLoginInfo(sysUser.getUserId());
String userToken = tokenService.createToken(loginUser);
// redisUtil.set(userToken,loginUser,120);
ajax.put(Constants.QY_WEI_XIN_ACCESS_TOKEN_KEY,userToken);
return ajax;
}
@Override
public QywxOrg getQyApi(String orgId) {
return qyWeiXinMapper.getQywxOrg(orgId);
}
@Override
public QywxOrg getQyApi2(String orgId) {
return qyWeiXinMapper.getQywxOrg2(orgId);
}
}

View File

@@ -0,0 +1,236 @@
package com.ruoyi.ibs.app.service.impl;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.ibs.app.domain.*;
import com.ruoyi.ibs.app.mapper.QYWeiXinMapper;
import com.ruoyi.ibs.app.service.WeiXinService;
import com.ruoyi.ibs.app.util.Constants;
import com.ruoyi.ibs.app.util.JsonResult;
import com.ruoyi.ibs.app.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.client.RestTemplate;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@Slf4j
@Service
public class WeiXinServiceImpl implements WeiXinService {
@Autowired
private QyWxpropertiex qyWeiXinProperties;
@Autowired
private RestTemplate restTemplate;
@Autowired
private RedisUtil redisUtil;
@Autowired
private QYWeiXinMapper qyWeiXinMapper;
public static final String URL_KEY_VALUE = "jsapi_ticket=%s&noncestr=%s&timestamp=%s&url=%s";
private JsonResult<String> getAccessToken(boolean isRefresh, String redisKey, String url,String orgId) {
String token = redisUtil.get( redisKey+orgId );
if (isRefresh || StringUtils.isEmpty( token )) {
//获取access_token
AccessTokenDTO accessTokenDTO = restTemplate.getForObject( url, AccessTokenDTO.class );
log.info( accessTokenDTO.toString() );
if (accessTokenDTO.getErrCode() == null || accessTokenDTO.getErrCode() == 0) {
token = accessTokenDTO.getAccessToken();
//redis缓存access_token
redisUtil.setStr( redisKey+orgId, token, accessTokenDTO.getExpiresIn() );
return JsonResult.success( token );
} else {
log.error( "获取access_token失败," + accessTokenDTO );
return JsonResult.error( Constants.FAILURE, "获取access_token失败" );
}
}
return JsonResult.success( token );
}
/**
* 构件 TicketVO
*
* @param ticket
* @param appId
*
* @return
*/
public JsonResult buildTicketVO(String ticket, String appId, String qyUrl,String agentId) {
String nonceStr = UUID.randomUUID().toString().replace( "-", "" );
long timestamp = System.currentTimeMillis() / 1000;
String url = String.format( URL_KEY_VALUE, ticket, nonceStr, timestamp, qyUrl );
String signature;
try {
signature = signature( url );
} catch (NoSuchAlgorithmException e) {
log.error( "签名算法异常" + e.getMessage() );
return JsonResult.error( Constants.FAILURE, "签名算法异常" );
}
TicketVO ticketVO = new TicketVO();
ticketVO.setAppId( appId );
ticketVO.setNonceStr( nonceStr );
ticketVO.setTimestamp( timestamp );
ticketVO.setSignature( signature );
ticketVO.setAgentId(agentId);
return JsonResult.success( ticketVO );
}
/**
* 对字符串进行sha1签名
*
* @param str
*
* @return
*
* @throws NoSuchAlgorithmException
*/
private String signature(String str) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance( "SHA-1" );
byte[] messageDigest = md.digest( str.getBytes() );
BigInteger bigInteger = new BigInteger( 1, messageDigest );
String hasText = bigInteger.toString( 16 );
while (hasText.length() < 32) {
hasText = "0" + hasText;
}
return hasText;
}
/**
* 获取ticket
*
* @param token access_token
* @param ticketKey ticket redis key
* @param url ticket api url
* @param accessKey 重新刷新获取access_token redis key
* @param accessUrl 重新刷新获取access_token url
*
* @return
*/
private JsonResult<String> getTicket(String token, String ticketKey, String url, String accessKey, String accessUrl,String orgId) {
String ticketValue = redisUtil.get( ticketKey+orgId );
if (StringUtils.isEmpty( ticketValue )) {
TicketDTO ticketDTO = restTemplate.getForObject( url, TicketDTO.class, token );
log.info( ticketDTO.toString() );
if (ticketDTO.getErrCode() == 0) {
ticketValue = ticketDTO.getTicket();
//redis缓存ticket
redisUtil.setStr( ticketKey+orgId, ticketValue, ticketDTO.getExpiresIn() );
} else if (ticketDTO.getErrCode() == 40001) {
// token过期重新获取
JsonResult<String> accessTokenResult = getAccessToken( true, accessKey, accessUrl,orgId );
ticketDTO = restTemplate.getForObject( url, TicketDTO.class, accessTokenResult.getData() );
ticketValue = ticketDTO.getTicket();
//redis缓存ticket
redisUtil.setStr( ticketKey+orgId, ticketValue, ticketDTO.getExpiresIn() );
} else {
log.error( "获取ticket失败," + ticketDTO );
return JsonResult.error( Constants.FAILURE, "获取ticket失败" );
}
}
return JsonResult.success( ticketValue );
}
/**
* 获取企业用户详细信息
*
* @param code 企业微信授权码,只能消费一次,并且五分钟内有效
*
* @return
*/
@Override
public JsonResult<QYUserDTO> getQYUser(String code,String appId,String secret,String orgId) {
String url = String.format( qyWeiXinProperties.getAddress() + Constants.QY_WEI_XIN_ACCESS_TOKEN,appId, secret );
JsonResult<String> accessTokenResult = getAccessToken( false, Constants.QY_WEI_XIN_ACCESS_TOKEN_KEY, url,orgId );
if (!Constants.OK.equals( accessTokenResult.getCode() )) {
return JsonResult.error( Constants.FAILURE, accessTokenResult.getMessage() );
}
String accessToken = accessTokenResult.getData();
//获取访问用户身份
QYUserDTO qyUserDTO = restTemplate.getForObject( qyWeiXinProperties.getAddress() + Constants.QY_WEI_XIN_USER_INFO, QYUserDTO.class, accessToken, code );
if (( qyUserDTO != null ? qyUserDTO.getErrCode() : null ) == 40001) {
//token过期,重新获取token
JsonResult<String> newAccessTokenResult = getAccessToken( true, Constants.QY_WEI_XIN_ACCESS_TOKEN_KEY, url,orgId );
accessToken = newAccessTokenResult.getData();
qyUserDTO = restTemplate.getForObject( qyWeiXinProperties.getAddress() + Constants.QY_WEI_XIN_USER_INFO, QYUserDTO.class, accessToken, code );
} else if (( qyUserDTO != null ? qyUserDTO.getErrCode() : null ) != 0) {
log.error( "获取企业微信用户身份失败," + qyUserDTO );
return JsonResult.error( Constants.FAILURE, "获取企业微信用户身份失败" );
}
if (qyUserDTO != null) {
qyUserDTO.setAccessToken( accessToken );
}
log.info( qyUserDTO.toString() );
return JsonResult.success( qyUserDTO );
}
@Override
public JsonResult<QYUserDetailDTO> getQYUserDetail(QYUserDTO qyUserDTO) {
Map<String, String> body = new HashMap<>();
body.put( "user_ticket", qyUserDTO.getUserTicket() );
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType( MediaType.APPLICATION_JSON );
//获取访问用户详细敏感信息
ResponseEntity<QYUserDetailDTO> responseEntity = restTemplate
.exchange( qyWeiXinProperties.getAddress() + Constants.QY_WEI_XIN_USER_DETAIL, HttpMethod.POST, new HttpEntity<>( body, httpHeaders ), QYUserDetailDTO.class,
qyUserDTO.getAccessToken() );
QYUserDetailDTO qyUserDetailDTO = responseEntity.getBody();
if (qyUserDetailDTO != null && qyUserDetailDTO.getErrCode() == 0) {
return JsonResult.success( qyUserDetailDTO );
}
log.error( "获取企业微信用户敏感信息失败," + qyUserDetailDTO );
return JsonResult.error( Constants.FAILURE, "获取企业微信用户敏感信息失败" );
}
@Override
public JsonResult getTicketVo2(String qyUrl,String orgId) {
QywxOrg qywxOrg = qyWeiXinMapper.getQywxOrg(orgId);
String url = String.format( qyWeiXinProperties.getAddress() + Constants.QY_WEI_XIN_ACCESS_TOKEN, qywxOrg.getAppId(), qywxOrg.getSecret() );
JsonResult<String> accessTokenResult = getAccessToken( false, Constants.WEI_XIN_ACCESS_TOKEN_KEY, url,orgId );
if (!Constants.OK.equals( accessTokenResult.getCode() )) {
return accessTokenResult;
}
JsonResult<String> ticketValueResult =
getTicket( accessTokenResult.getData(), Constants.QY_WEI_XIN_TICKET_KEY, qyWeiXinProperties.getAddress() + Constants.QY_WEI_XIN_JSAPI_TICKET,
Constants.WEI_XIN_ACCESS_TOKEN_KEY, url,orgId );
if (!Constants.OK.equals( ticketValueResult.getCode() )) {
return ticketValueResult;
}
System.out.println("------------------------------------");
System.out.println(ticketValueResult);
System.out.println("------------------------------------");
System.out.println(ticketValueResult.getData());
System.out.println("------------------------------------");
System.out.println(qyUrl);
System.out.println("------------------------------------");
return buildTicketVO( ticketValueResult.getData(), qywxOrg.getAppId(), qyUrl ,qywxOrg.getAgentId());
}
public AjaxResult getIp(String orgId) {
QywxOrg qywxOrg = qyWeiXinMapper.getQywxOrg(orgId);
String url = String.format( qyWeiXinProperties.getAddress() + Constants.QY_WEI_XIN_ACCESS_TOKEN, qywxOrg.getAppId(), qywxOrg.getSecret() );
JsonResult<String> accessTokenResult = getAccessToken( false, Constants.WEI_XIN_ACCESS_TOKEN_KEY, url,orgId );
IpDomain ipDomain = restTemplate.getForObject( qyWeiXinProperties.getAddress()+Constants.QY_WEI_XIN_API_IP,IpDomain.class,accessTokenResult.getData());
return AjaxResult.success(ipDomain);
}
}

View File

@@ -0,0 +1,114 @@
package com.ruoyi.ibs.app.util;
/**
* @author 600477
* @date 2023/10/8
*/
public class Constants {
public static final String OK = "00000000";
public static final String FAILURE = "99999999";
// public static final String AUTHORIZATION_HEADER = "X-Cloud-Token";
//
// public static final String TOKEN_BEARER = "Bearer ";
//
// public static final String AUTHORITIES_KEY = "auth";
// /**
// * @description: Redis缓存自增进件单号
// */
// public static final String ORDER_NUM = "dkfz_lh_orderNum";
//
// /**
// * @description: Redis缓存报告序号
// */
// public static final String REPORT_NUM = "reportNum";
//
// public static final String TOKEN_SIGN_KEY = "mx+MGX+w9TtUhP8UIE8g9xqFRWflrTWAtytlnN3bbj8Z6p//ITaVCVuBt89I75TKIDpxVlskwQJm436tO0bbsA==";
//
// /**
// * oss上传路径
// */
// public static final String OSS_UPLOAD_PATH = "loans-improve/";
// public static final String REPORT_ATTACHMENT_UPLOAD_PATH = OSS_UPLOAD_PATH + "attachment/";
//
// public static final String OSS_UPLOAD_INCOME_SITUATION = "loans-income-situation/";
//
// public static final String INCOMING_NOT_EXIST = "该进件单号不存在关联的进件!";
// public static final String USER_NOT_LOGIN = "用户未登陆!";
// public static final String USER_PERMISSIONS_DENIED = "当前用户权限不足!";
// public static final String PROCESS_STATUS_ERROR = "当前流程状态异常!";
// public static final String INCOMING_STATUS_ERROR = "当前进件状态异常,请检查当前进件状态!";
// public static final String RESOURCE_NOT_EXIST = "资源不存在";
// public static final String UPDATE_FAILED = "更新失败!";
//
// public static final String ADMIN_ROLE = "贷款特色辅助系统-系统管理岗";
// public static final String APPROVE_ROLE = "贷款特色辅助系统-审批岗";
/**
* 微信接口地址获取access_toekn
*/
public static final String WEI_XIN_ACCESS_TOKEN = "/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s";
/**
* 微信接口地址,获取jsapi_ticket
*/
public static final String WEI_XIN_JSAPI_TICKET = "/cgi-bin/ticket/getticket?access_token={1}&type=jsapi";
/**
* 微信redis缓存key\dkfz_weixin_toekn改为szzh_weixin_toekn
* 下同
*/
public static final String WEI_XIN_ACCESS_TOKEN_KEY = "szzh_weixin_token";
public static final String WEI_XIN_TICKET_KEY = "szzh_weixin_ticket";
public static final String QY_WEI_XIN_API_IP = "/cgi-bin/getcallbackip?access_token={1}";
/**
* 企业微信接口地址获取access_toekn
*/
public static final String QY_WEI_XIN_ACCESS_TOKEN = "/cgi-bin/gettoken?corpid=%s&corpsecret=%s";
/**
* 企业微信接口地址,获取jsapi_ticket
*/
public static final String QY_WEI_XIN_JSAPI_TICKET = "/cgi-bin/get_jsapi_ticket?access_token={1}";
/**
* 企业微信接口发送
*/
public static final String QY_WEI_XIN_MESSAGE_SEND = "/cgi-bin/message/send?access_token={1}";
/**
* 企业微信redis缓存key\dkfz_qyweixin_toekn改为szzh_qyweixin_toekn
* 下同
*/
public static final String QY_WEI_XIN_ACCESS_TOKEN_KEY = "szzh_qyweixin_token";
public static final String QY_WEI_XIN_TICKET_KEY = "szzh_qyweixin_ticket";
/**
* 企业微信接口地址,获取用户身份
*/
public static final String QY_WEI_XIN_USER_INFO = "/cgi-bin/auth/getuserinfo?access_token={1}&code={2}";
/**
* 企业微信接口地址,获取用户详细信息
*/
public static final String QY_WEI_XIN_USER_DETAIL = "/cgi-bin/auth/getuserdetail?access_token={1}";
// /**
// * 贷款类型临界值 大于该金额是大额 ,小于是小额
// */
// public static final Double LOAN_LIMIT = 300000.00;
//
public static final String LAST_LIMIT = "limit 1";
//
// /**
// * 待处理进件提醒配置 redis key
// */
// public static final String ALERT_SETTING_KEY = "dkfz_lh_alert";
public static final Integer YES = 1;
public static final Integer NO = 0;
// public static final String NEW_FOR_OLD = "资金周转(借新还旧)";
}

View File

@@ -0,0 +1,97 @@
package com.ruoyi.ibs.app.util;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
/**
* 统一返回类型
*
* @author yjb
*/
@Data
@ToString
public class JsonResult<T> implements Serializable {
private static final long serialVersionUID = -2792556188993845048L;
@ApiModelProperty(value = "状态码,00000000:成功,99999999:异常", name = "code")
private String code;
@ApiModelProperty(value = "异常信息", name = "message")
private String message;
private T data;
public JsonResult() {
}
public JsonResult(final String code, final String message, final T data) {
this.code = code;
this.message = message;
this.data = data;
}
public static <T> JsonResult<T> success() {
return success( "执行完成", null );
}
public static <T> JsonResult<T> success(final T data) {
return success( null, data );
}
public static <T> JsonResult<T> success(final String msg, final T data) {
return get( Constants.OK, msg, data );
}
public static <T> JsonResult<T> error(final String code, final String msg) {
return get( code, msg, null );
}
public static <T> JsonResult<T> error(final String msg) {
return get( Constants.FAILURE, msg, null );
}
public static <T> JsonResult<T> error(final String msg, final T data) {
return get( Constants.FAILURE, msg, data );
}
private static <T> JsonResult<T> get(final String code, final String msg, final T data) {
return new JsonResult<T>( code, msg, data );
}
@Override
public String toString() {
return "JsonResult{" + "code=" + code + ", message='" + message + '\'' + ", data=" + data + '}';
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
JsonResult<?> that = (JsonResult<?>) o;
if (code != null ? !code.equals( that.code ) : that.code != null) {
return false;
}
if (message != null ? !message.equals( that.message ) : that.message != null) {
return false;
}
return data != null ? data.equals( that.data ) : that.data == null;
}
@Override
public int hashCode() {
int result = code != null ? code.hashCode() : 0;
result = 31 * result + ( message != null ? message.hashCode() : 0 );
result = 31 * result + ( data != null ? data.hashCode() : 0 );
return result;
}
}

View File

@@ -0,0 +1,147 @@
package com.ruoyi.ibs.app.util;
import com.ruoyi.common.exception.ServiceException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
/**
* @author 604343
* @description: redis工具类
* @date 2023/10/30 8:56
*/
@Component
public final class RedisUtil {
@Resource
private RedisTemplate<String, Object> redisTemplate;
@Autowired
private StringRedisTemplate stringRedisTemplate;
/**
* @return true成功
*
* @description: 普通缓存放入并设置时间
* @author dz
* @param: time 时间
*/
public boolean set(String key, Object value, long time) {
try {
if (time > 0) {
redisTemplate.opsForValue().set( key, value, time, TimeUnit.HOURS );
} else {
redisTemplate.opsForValue().set( key, value );
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* @return true成功
*
* @description: 普通缓存放入并设置时间
* @author dz
* @param: time 时间
*/
public boolean setStr(String key, String value, long time) {
try {
if (time > 0) {
stringRedisTemplate.opsForValue().set( key, value, time, TimeUnit.SECONDS );
} else {
stringRedisTemplate.opsForValue().set( key, value );
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* @return true成功
*
* @description: 普通缓存放入并设置时间
* @author dz
* @param: time 时间
*/
public boolean setStr(String key, String value, long time, TimeUnit timeUnit) {
try {
if (time > 0) {
stringRedisTemplate.opsForValue().set( key, value, time, timeUnit );
} else {
stringRedisTemplate.opsForValue().set( key, value );
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**'
* 删除key
* @param key
* @return
*/
public boolean removeKey(String key){
if (key==null||key.isEmpty()){
throw new ServiceException( "key不能为空" );
}
return stringRedisTemplate.delete(key);
}
/**
* 设置失效时间
* @param key
* @param time
* @param timeUnit
* @return
*/
public boolean setExpire(String key, long time, TimeUnit timeUnit){
if (key==null||key.isEmpty()){
throw new ServiceException( "key不能为空" );
}
if (timeUnit==null){
throw new ServiceException( "时间单位不能为空" );
}
return stringRedisTemplate.expire(key, time, timeUnit);
}
/**
* @description: 递增
* @param: key: 键 delta: 间距(要增加几)
* @return
*/
public Long incr(String key,long time) {
//没有这个键就初始化这个键并设置过期时间
stringRedisTemplate.expire( key, 24, TimeUnit.HOURS );
// String a =redisTemplate.opsForValue().get(key).toString();
// if(redisTemplate.opsForValue().get(key)==null){
// redisTemplate.opsForValue().set( key,1,time,TimeUnit.HOURS );
// return Long.parseLong( String.valueOf( redisTemplate.opsForValue().get( key ) ) );
// }
return stringRedisTemplate.opsForValue().increment( key, 1 );
}
/**
* @description: 获取键值对
* @param: key键
* @return 值
*/
public String get(String key) {
return stringRedisTemplate.opsForValue().get( key );
}
}

View File

@@ -0,0 +1,41 @@
package com.ruoyi.ibs.audio.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.ibs.audio.domain.AudioUploadDTO;
import com.ruoyi.ibs.audio.service.AudioService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* @Author 吴凯程
* @Date 2025/11/21
**/
@Api(tags = "语音转文字接口")
@RequestMapping("/audio")
@RestController
public class AudioController extends BaseController {
@Resource
private AudioService audioService;
@PostMapping("/upload")
@ApiOperation("上传语音接口")
public AjaxResult uploadAudio(AudioUploadDTO audioUploadDTO) {
return AjaxResult.success(audioService.uploadAudioAnalysis(audioUploadDTO));
}
@GetMapping("/get")
@ApiOperation("获取语音转文字结果")
public AjaxResult getRadioAnalysis(@RequestParam String uuid) {
String audioAnalysis = audioService.getAudioAnalysis(uuid);
if (audioAnalysis.equals(AudioService.AUDIO_ERROR_CODE)) {
return AjaxResult.error("语音转文字失败");
}
return AjaxResult.success(audioAnalysis);
}
}

View File

@@ -0,0 +1,17 @@
package com.ruoyi.ibs.audio.domain;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* @Author 吴凯程
* @Date 2025/11/21
**/
@Configuration
@Data
@ConfigurationProperties(prefix = "audio")
public class AudioProperties {
private String url;
}

View File

@@ -0,0 +1,15 @@
package com.ruoyi.ibs.audio.domain;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
/**
* @Author 吴凯程
* @Date 2025/11/21
**/
@Data
public class AudioUploadDTO {
private MultipartFile file;
}

View File

@@ -0,0 +1,111 @@
package com.ruoyi.ibs.audio.service;
import com.fasterxml.jackson.databind.JsonNode;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.ibs.audio.domain.AudioProperties;
import com.ruoyi.ibs.audio.domain.AudioUploadDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.*;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.File;
/**
* @Author 吴凯程
* @Date 2025/11/21
**/
@Service
@EnableAsync
@Slf4j
public class AudioService {
public static final String AUDIO_ERROR_CODE = "---";
public static final String AUDIO_WAIT_CODE = "000";
private static final String TASK_ID_PREFIX = "AUDIO_RECO_";
@Resource
private RestTemplate restTemplate;
@Resource
private RedisCache redisCache;
@Resource
private AudioProperties audioProperties;
public String uploadAudioAnalysis(AudioUploadDTO audioUploadDTO) {
if (!checkFileType(audioUploadDTO.getFile(), ".mp3")){
throw new ServiceException("文件类型错误: 只能上传mp3格式");
}
String uuid = IdUtils.fastSimpleUUID();
uploadAudioAnalysis(TASK_ID_PREFIX + uuid, audioUploadDTO.getFile());
return uuid;
}
public String getAudioAnalysis(String uuid) {
if (redisCache.hasKey(TASK_ID_PREFIX + uuid)){
return redisCache.getCacheObject(TASK_ID_PREFIX + uuid);
}
return AUDIO_ERROR_CODE;
}
@Async
public void uploadAudioAnalysis(String taskId, MultipartFile file) {
redisCache.setCacheObjectToEndDay(taskId, AUDIO_WAIT_CODE);
JsonNode response = null;
try{
File audio = File.createTempFile(taskId, ".mp3");
file.transferTo(audio);
response = postRequestWithFile(audioProperties.getUrl(), "audio", audio);
audio.delete();
} catch (Exception e){
log.error("语音转文字失败", e);
redisCache.setCacheObjectToEndDay(taskId, AUDIO_ERROR_CODE);
}
if(response.get("code").asInt() != 0){
log.error("语音转文字失败", response);
redisCache.setCacheObjectToEndDay(taskId, AUDIO_ERROR_CODE);
}
redisCache.setCacheObject(taskId, response.get("text").toString().replace("\"", "").replace("'", ""));
}
private Boolean checkFileType(MultipartFile file, String type){
String fileName = file.getOriginalFilename();
if (fileName != null && fileName.contains(".")) {
int lastDotIndex = fileName.lastIndexOf(".");
String fileSuffix = fileName.substring(lastDotIndex);
if (type.equals(fileSuffix)){
return Boolean.TRUE;
}
}
return Boolean.FALSE;
}
private JsonNode postRequestWithFile(String url, String fileName, File file){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
MultiValueMap<String, Object> multipartBody = new LinkedMultiValueMap<>();
multipartBody.add(fileName, new FileSystemResource(file));
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(multipartBody, headers);
ResponseEntity<JsonNode> response = restTemplate.exchange(
url,
HttpMethod.POST,
requestEntity,
JsonNode.class
);
log.info(String.valueOf(response.getBody()));
return response.getBody();
}
}

View File

@@ -0,0 +1,42 @@
package com.ruoyi.ibs.cmpm.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.ibs.cmpm.service.GridCmpmCustService;
import com.ruoyi.ibs.cmpm.service.GridCmpmService;
import com.ruoyi.ibs.customerselect.domain.CustBaseInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* @Author 吴凯程
* @Date 2025/10/20
**/
@Api(tags = "绩效网格")
@RestController
@RequestMapping("/grid/cmpm")
public class GridCmpmController extends BaseController {
@Resource
private GridCmpmCustService gridCmpmCustService;
@Resource
private GridCmpmService gridCmpmService;
@PostMapping("/custBaseInfo/list")
@ApiOperation("我的客户绩效网格查询")
public AjaxResult selectCustBaseInfoList(@RequestBody CustBaseInfo custBaseInfo) {
return AjaxResult.success( gridCmpmCustService.selectCustInfoRetailList (custBaseInfo)) ;
}
@GetMapping("/cust/list/tag")
@ApiOperation("查询客户分层等级下拉框")
@ApiImplicitParam(name = "gridType", value = "零售retail 对公corporate 对公账户corporate_account", required = true, dataType = "String")
public AjaxResult custLevelListTag(@RequestParam String gridType) {
return success(gridCmpmService.getAllCustLevel(gridType));
}
}

View File

@@ -0,0 +1,35 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/11/21
**/
@Data
public class CustInfoDTO {
private String custType;
private String deptCode;
private String userName;
private String custId;
private String custName;
private String custLevel;
private List<Long> regionTopGridIds;
private List<Long> regionSecGridIds;
private List<Long> virtualGridIds;
private List<Long> drawGridIds;
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/10/31
**/
@Data
public class CustLevelDTO {
/** 移交客户号 */
@ApiModelProperty(value = "客户号",notes = "")
private String custId ;
/** 移交客户账号 */
@ApiModelProperty(value = "客户账号",notes = "")
private String accountNo ;
@ApiModelProperty(value = "客戶類型 0個人 1商戶 2企業",notes = "")
private String custType;
private String gridType;
}

View File

@@ -0,0 +1,21 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class CustManagerDTO {
@ApiModelProperty(value = "客户星级",notes = "")
private String custLevel;
@ApiModelProperty(value = "柜员号",notes = "")
private String managerId;
@ApiModelProperty(value = "网点号",notes = "")
private String outletId;
@ApiModelProperty(value = "网点名",notes = "")
private String branchId;
}

View File

@@ -0,0 +1,24 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/11/17
**/
@Data
public class GridCmpmAdjustDTO {
@ApiModelProperty(value = "移交网格 零售retail 对公corporate 对公账户corporate_account",notes = "")
private String gridType;
private String deptCode;
/** 客户号 */
@ApiModelProperty(value = "客户信息",notes = "")
private List<TransferCustDTO> custList ;
private String userName;
}

View File

@@ -0,0 +1,16 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/10/27
**/
@Data
public class GridCmpmApproveDTO {
private List<Long> idList;
private Boolean approveResult;
}

View File

@@ -0,0 +1,17 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/10/28
**/
@Data
public class GridCmpmBranchDTO {
private Long branchId;
private List<String> custIdList;
}

View File

@@ -0,0 +1,24 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/10/27
**/
@Data
public class GridCmpmClaimDTO {
/** 移交网格 零售 对公 对公账户 */
@ApiModelProperty(value = "移交网格 零售retail 对公corporate 对公账户corporate_account",notes = "")
private String gridType ;
/** 移交客户号 */
@ApiModelProperty(value = "移交客户信息",notes = "")
private List<TransferCustDTO> custList ;
/** 新客户经理柜员号 */
@ApiModelProperty(value = "新客户经理柜员号",notes = "")
private String userName ;
}

View File

@@ -0,0 +1,44 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/10/15
**/
@Data
public class GridCmpmListDTO {
@ApiModelProperty(value = "网格类型 零售retail 对公corporate 对公账户对公corporate_account",notes = "")
private String gridType;
/** 客户号 */
@ApiModelProperty(name = "客户号",notes = "")
private String custId ;
/** 客户姓名 */
@ApiModelProperty(name = "客户姓名",notes = "")
private String custName ;
/** 客户姓名 */
@ApiModelProperty(name = "客户类型",notes = "")
private List<String> custTypes ;
/** 客户层级 */
@ApiModelProperty(name = "客户层级",notes = "")
private List<String> custLevels ;
/** 客户经理柜员号 */
@ApiModelProperty(name = "客户经理柜员号",notes = "")
private String userName ;
/** 客户经理柜员号 */
@ApiModelProperty(name = "用户柜员号",notes = "")
private String curUserName ;
/** 网点机构号 */
@ApiModelProperty(name = "网点机构号",notes = "")
private Long outletId ;
/** 支行机构号 */
@ApiModelProperty(name = "支行机构号",notes = "")
private Long branchId ;
}

View File

@@ -0,0 +1,30 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/10/20
**/
@Data
public class GridCmpmTransferDTO {
/** 移交网格 零售 对公 对公账户 */
@ApiModelProperty(value = "移交网格 零售retail 对公corporate 对公账户corporate_account",notes = "")
private String gridType ;
/** 移交客户号 */
@ApiModelProperty(value = "移交客户信息",notes = "")
private List<TransferCustDTO> custList ;
/** 原客户经理柜员号 */
@ApiModelProperty(value = "原客户经理柜员号",notes = "")
private String prevUserName ;
/** 新客户经理柜员号 */
@ApiModelProperty(value = "新客户经理柜员号",notes = "")
private String nextUserName ;
@ApiModelProperty(value = "是否全部移交",notes = "")
private Boolean isFullTransfer ;
}

View File

@@ -0,0 +1,29 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/10/20
**/
@Data
public class GridCmpmTransferListDTO {
/** 移交客户信息 */
@ApiModelProperty(value = "移交客户信息",notes = "")
private String keyword;
/** 移交网格 零售 对公 对公账户 */
@ApiModelProperty(value = "移交网格 零售retail 对公corporate 对公账户corporate_account",notes = "")
private String gridType ;
private String userRole;
private Long deptId;
private String userName;
private String headId;
}

View File

@@ -0,0 +1,44 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/11/13
**/
@Data
public class GridCmpmUpdateDTO {
/** 移交网格 零售 对公 对公账户 */
@ApiModelProperty(value = "移交网格 零售retail 对公corporate 对公账户corporate_account",notes = "")
private String gridType ;
/** 归属总行 */
@ApiModelProperty(value = "归属总行",notes = "")
private String deptCode ;
/** 客户号 */
@ApiModelProperty(name = "客户号",notes = "")
private String custId ;
/** 客户内码 */
@ApiModelProperty(name = "账户号",notes = "")
private String accountNo ;
/** 客户经理柜员号 */
@ApiModelProperty(name = "客户经理柜员号",notes = "")
private String userName ;
/** 客户经理姓名 */
@ApiModelProperty(name = "客户经理姓名",notes = "")
private String nickName ;
/** 网点机构号 */
@ApiModelProperty(name = "网点机构号",notes = "")
private Long outletId ;
/** 网点名称 */
@ApiModelProperty(name = "网点名称",notes = "")
private String outletName ;
/** 支行机构号 */
@ApiModelProperty(name = "支行机构号",notes = "")
private Long branchId ;
/** 支行名称 */
@ApiModelProperty(name = "支行名称",notes = "")
private String branchName ;
}

View File

@@ -0,0 +1,21 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/10/22
**/
@Data
public class TransferCustDTO {
/** 移交客户名称 */
@ApiModelProperty(value = "移交客户名称",notes = "")
private String custName ;
/** 移交客户号 */
@ApiModelProperty(value = "移交客户号",notes = "")
private String custId ;
/** 移交客户账号 */
@ApiModelProperty(value = "移交客户账号",notes = "")
private String accountNo ;
}

View File

@@ -0,0 +1,21 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/10/21
**/
@Data
public class UserDeptDTO {
private Long deptId;
private String deptType;
private Long outletId;
private Long branchId;
private Long headId;
}

View File

@@ -0,0 +1,99 @@
package com.ruoyi.ibs.cmpm.domain.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* 零售星级客户管户明细表
*
* @author ruoyi
* @date 2024-11-20
*/
@Data
@TableName("dwb_retail_cust_level_manager_detail")
@ApiModel(description = "零售星级客户管户明细表")
public class DwbRetailCustLevelManagerDetail {
/** id */
@TableId
@ApiModelProperty(value = "id")
private Long id;
/** 网点号 */
@ApiModelProperty(value = "网点号")
private String outletId;
/** 网点名 */
@ApiModelProperty(value = "网点名")
private String outletName;
/** 支行号 */
@ApiModelProperty(value = "支行号")
private String branchId;
/** 支行名 */
@ApiModelProperty(value = "支行名")
private String branchName;
/** 客户名称 */
@ApiModelProperty(value = "客户名称")
private String custName;
/** 客户证件号 */
@ApiModelProperty(value = "客户证件号")
private String custIdc;
/** 客户内码 */
@ApiModelProperty(value = "客户内码")
private String custIsn;
/** 年龄 */
@ApiModelProperty(value = "年龄")
private String custAge;
/** 性别 */
@ApiModelProperty(value = "性别")
private String custSex;
/** 联系电话 */
@ApiModelProperty(value = "联系电话")
private String custPhone;
/** 联系地址 */
@ApiModelProperty(value = "联系地址")
private String custAddress;
/** 总资产余额 */
@ApiModelProperty(value = "总资产余额")
private BigDecimal custAumBal;
/** 总资产余额较上月变动 */
@ApiModelProperty(value = "总资产余额较上月变动")
private BigDecimal aumBalCompLm;
/** 总资产月日均 */
@ApiModelProperty(value = "总资产月日均")
private BigDecimal custAumMonthAvg;
/** 客户星级 */
@ApiModelProperty(value = "客户星级")
private String custLevel;
/** 星级较上月变动 */
@ApiModelProperty(value = "星级较上月变动")
private String custLevelCompLm;
/** 责任人 */
@ApiModelProperty(value = "责任人")
private String managerName;
/** 责任人柜员号 */
@ApiModelProperty(value = "责任人柜员号")
private String managerId;
}

View File

@@ -0,0 +1,73 @@
package com.ruoyi.ibs.cmpm.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/10/15
*
* ALTER TABLE ibs.grid_cmpm_retail_965 ADD cust_type varchar(100) NULL COMMENT '0个人 1商户 2企业';
* ALTER TABLE ibs.grid_cmpm_retail_965 ADD grid_type varchar(100) NULL COMMENT '零售retail 对公corporate 对公账户corporateAccount';
* ALTER TABLE ibs.grid_cmpm_retail_965 ADD account_no varchar(100) NULL COMMENT '账户号';
**/
@Data
public class GridCmpm {
/** id */
@TableId(type = IdType.AUTO)
@ApiModelProperty(name = "id",notes = "")
private Long id ;
/** 移交网格 零售 对公 对公账户 */
@ApiModelProperty(value = "移交网格 零售retail 对公corporate 对公账户corporateAccount",notes = "")
private String gridType ;
/** 客户类型 retail merchant business */
@ApiModelProperty(name = "客户类型",notes = "")
private String custType ;
/** 客户号 */
@ApiModelProperty(name = "客户号",notes = "")
private String custId ;
/** 身份证号 */
@ApiModelProperty(name = "身份证号",notes = "")
private String custIdc ;
/** 统信码 */
@ApiModelProperty(name = "统信码",notes = "")
private String usci;
/** 客户内码 */
@ApiModelProperty(name = "客户内码",notes = "")
private String custIdn ;
/** 客户内码 */
@ApiModelProperty(name = "账户号",notes = "")
private String accountNo ;
/** 客户姓名 */
@ApiModelProperty(name = "客户姓名",notes = "")
private String custName ;
/** 客户层级 */
@ApiModelProperty(name = "客户层级",notes = "")
private String custLevel ;
/** 客户经理柜员号 */
@ApiModelProperty(name = "客户经理柜员号",notes = "")
private String userName ;
/** 客户经理姓名 */
@ApiModelProperty(name = "客户经理姓名",notes = "")
private String nickName ;
/** 网点机构号 */
@ApiModelProperty(name = "网点机构号",notes = "")
private Long outletId ;
/** 网点名称 */
@ApiModelProperty(name = "网点名称",notes = "")
private String outletName ;
/** 支行机构号 */
@ApiModelProperty(name = "支行机构号",notes = "")
private Long branchId ;
/** 支行名称 */
@ApiModelProperty(name = "支行名称",notes = "")
private String branchName ;
private String source;
/** 锁定标识 */
@ApiModelProperty(name = "锁定标识",notes = "")
private Boolean lockFlag ;
}

View File

@@ -0,0 +1,60 @@
package com.ruoyi.ibs.cmpm.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/10/15
**/
@Data
public class GridCmpmRetail {
/** id */
@TableId(type = IdType.AUTO)
@ApiModelProperty(name = "id",notes = "")
private Long id ;
/** 客户号 */
@ApiModelProperty(name = "客户号",notes = "")
private String custId ;
/** 身份证号 */
@ApiModelProperty(name = "身份证号",notes = "")
private String custIdc ;
/** 统信码 */
@ApiModelProperty(name = "统信码",notes = "")
private String usci;
/** 客户内码 */
@ApiModelProperty(name = "客户内码",notes = "")
private String custIdn ;
/** 客户姓名 */
@ApiModelProperty(name = "客户姓名",notes = "")
private String custName ;
/** 客户层级 */
@ApiModelProperty(name = "客户层级",notes = "")
private String custLevel ;
/** 客户经理柜员号 */
@ApiModelProperty(name = "客户经理柜员号",notes = "")
private String userName ;
/** 客户经理姓名 */
@ApiModelProperty(name = "客户经理姓名",notes = "")
private String nickName ;
/** 网点机构号 */
@ApiModelProperty(name = "网点机构号",notes = "")
private Long outletId ;
/** 网点名称 */
@ApiModelProperty(name = "网点名称",notes = "")
private String outletName ;
/** 支行机构号 */
@ApiModelProperty(name = "支行机构号",notes = "")
private Long branchId ;
/** 支行名称 */
@ApiModelProperty(name = "支行名称",notes = "")
private String branchName ;
private String source;
/** 锁定标识 */
@ApiModelProperty(name = "锁定标识",notes = "")
private Boolean lockFlag ;
}

View File

@@ -0,0 +1,100 @@
package com.ruoyi.ibs.cmpm.domain.entity;
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 io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @Author 吴凯程
* @Date 2025/10/20
**/
@Data
public class GridCmpmTransfer {
/** id */
@ApiModelProperty(value = "id",notes = "")
@TableId(value = "id", type = IdType.AUTO)
private Long id ;
@ApiModelProperty(value = "0移交 1认领",notes = "")
private String transferLabel;
/** 移交类型 网点内 支行内 跨支行 */
@ApiModelProperty(value = "移交类型 0网点内 1支行内 2跨支行",notes = "")
private Integer transferType ;
/** 移交状态 审批中 通过 拒绝 */
@ApiModelProperty(value = "移交状态 0网点审批中 1支行审批中 2总行审批中 3通过 -1拒绝",notes = "")
private String transferStatus ;
/** 移交网格 零售 对公 对公账户 */
@ApiModelProperty(value = "移交网格 零售retail 对公corporate 对公账户corporate_account",notes = "")
private String gridType ;
/** 归属总行 */
@ApiModelProperty(value = "归属总行",notes = "")
private String headId ;
/** 移交客户名称 */
@ApiModelProperty(value = "移交客户名称",notes = "")
private String custName ;
/** 移交客户号 */
@ApiModelProperty(value = "移交客户号",notes = "")
private String custId ;
/** 移交客户账号 */
@ApiModelProperty(value = "移交客户账号",notes = "")
private String accountNo ;
/** 原客户经理柜员号 */
@ApiModelProperty(value = "原客户经理柜员号",notes = "")
private String prevUserName ;
/** 原归属网点 */
@ApiModelProperty(value = "原归属网点",notes = "")
private Long prevOutletId ;
/** 原归属支行 */
@ApiModelProperty(value = "原归属支行",notes = "")
private Long prevBranchId ;
/** 新客户经理柜员号 */
@ApiModelProperty(value = "新客户经理柜员号",notes = "")
private String nextUserName ;
/** 新归属网点 */
@ApiModelProperty(value = "新归属网点",notes = "")
private Long nextOutletId ;
/** 新归属支行 */
@ApiModelProperty(value = "新归属支行",notes = "")
private Long nextBranchId ;
/** 网点审批人 */
@ApiModelProperty(value = "网点审批人",notes = "")
private String outletApprover ;
/** 网点审批结果 */
@ApiModelProperty(value = "网点审批结果",notes = "")
private Boolean outletApproveResult ;
/** 网点审批时间 */
@ApiModelProperty(value = "网点审批时间",notes = "")
private Date outletApproveTime ;
/** 支行审批人 */
@ApiModelProperty(value = "支行审批人",notes = "")
private String branchApprover ;
/** 支行审批结果 */
@ApiModelProperty(value = "支行审批结果",notes = "")
private Boolean branchApproveResult ;
/** 支行审批时间 */
@ApiModelProperty(value = "支行审批时间",notes = "")
private Date branchApproveTime ;
/** 总行审批人 */
@ApiModelProperty(value = "总行审批人",notes = "")
private String headApprover ;
/** 总行审批结果 */
@ApiModelProperty(value = "总行审批结果",notes = "")
private Boolean headApproveResult ;
/** 总行审批时间 */
@ApiModelProperty(value = "总行审批时间",notes = "")
private Date headApproveTime ;
/** 创建时间 */
@ApiModelProperty(value = "创建时间",notes = "")
@TableField(fill = FieldFill.INSERT)
private Date createTime ;
/** 更新时间 */
@ApiModelProperty(value = "更新时间",notes = "")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime ;
}

View File

@@ -0,0 +1,95 @@
package com.ruoyi.ibs.cmpm.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* 零售星级客户管户明细表
*
* @author ruoyi
* @date 2024-11-20
*/
@Data
@ApiModel(description = "零售星级客户管户明细表")
public class DwbRetailCustLevelManagerDetailVO {
/** id */
@ApiModelProperty(value = "id")
private Long id;
/** 网点号 */
@ApiModelProperty(value = "网点号")
private String outletId;
/** 网点名 */
@ApiModelProperty(value = "网点名")
private String outletName;
/** 支行号 */
@ApiModelProperty(value = "支行号")
private String branchId;
/** 支行名 */
@ApiModelProperty(value = "支行名")
private String branchName;
/** 客户名称 */
@ApiModelProperty(value = "客户名称")
private String custName;
/** 客户证件号 */
@ApiModelProperty(value = "客户证件号")
private String custIdc;
/** 客户内码 */
@ApiModelProperty(value = "客户内码")
private String custIsn;
/** 年龄 */
@ApiModelProperty(value = "年龄")
private String custAge;
/** 性别 */
@ApiModelProperty(value = "性别")
private String custSex;
/** 联系电话 */
@ApiModelProperty(value = "联系电话")
private String custPhone;
/** 联系地址 */
@ApiModelProperty(value = "联系地址")
private String custAddress;
/** 总资产余额 */
@ApiModelProperty(value = "总资产余额")
private BigDecimal custAumBal;
/** 总资产余额较上月变动 */
@ApiModelProperty(value = "总资产余额较上月变动")
private BigDecimal aumBalCompLm;
/** 总资产月日均 */
@ApiModelProperty(value = "总资产月日均")
private BigDecimal custAumMonthAvg;
/** 客户星级 */
@ApiModelProperty(value = "客户星级")
private String custLevel;
/** 星级较上月变动 */
@ApiModelProperty(value = "星级较上月变动")
private String custLevelCompLm;
/** 责任人 */
@ApiModelProperty(value = "责任人")
private String managerName;
/** 责任人柜员号 */
@ApiModelProperty(value = "责任人柜员号")
private String managerId;
}

View File

@@ -0,0 +1,36 @@
package com.ruoyi.ibs.cmpm.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/11/17
**/
@Data
public class GridCmpmClaimVO {
@ApiModelProperty(value = "客户类型",notes = "")
private String custType;
/** 移交客户名称 */
@ApiModelProperty(value = "移交客户名称",notes = "")
private String custName ;
/** 移交客户号 */
@ApiModelProperty(value = "移交客户号",notes = "")
private String custId ;
/** 移交客户账号 */
@ApiModelProperty(value = "移交客户账号",notes = "")
private String accountNo ;
@ApiModelProperty(value = "柜员号",notes = "")
private String userName;
@ApiModelProperty(value = "柜员名",notes = "")
private String nickName;
@ApiModelProperty(value = "认领状态说明",notes = "")
private String claimStatus;
@ApiModelProperty(value = "可否进行认领",notes = "")
private Boolean claimFlag;
}

View File

@@ -0,0 +1,92 @@
package com.ruoyi.ibs.cmpm.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @Author 吴凯程
* @Date 2025/10/22
**/
@Data
public class GridCmpmTransferVO {
/** id */
@ApiModelProperty(value = "id",notes = "")
private Long id ;
@ApiModelProperty(value = "0移交 1认领",notes = "")
private String transferLabel;
/** 移交类型 网点内 支行内 跨支行 */
@ApiModelProperty(value = "移交类型 0网点内 1支行内 2跨支行",notes = "")
private Integer transferType ;
/** 移交状态 审批中 通过 拒绝 */
@ApiModelProperty(value = "移交状态 0网点审批中 1支行审批中 2总行审批中 3通过 -1拒绝",notes = "")
private String transferStatus ;
/** 移交网格 零售 对公 对公账户 */
@ApiModelProperty(value = "移交网格 零售 对公 对公账户",notes = "")
private String gridType ;
/** 归属总行 */
@ApiModelProperty(value = "归属总行",notes = "")
private String headId ;
/** 移交客户名称 */
@ApiModelProperty(value = "移交客户名称",notes = "")
private String custName ;
/** 移交客户号 */
@ApiModelProperty(value = "移交客户号",notes = "")
private String custId ;
/** 移交客户账号 */
@ApiModelProperty(value = "移交客户账号",notes = "")
private String accountNo ;
/** 原客户经理柜员号 */
@ApiModelProperty(value = "原客户经理柜员号",notes = "")
private String prevUser ;
/** 原归属网点 */
@ApiModelProperty(value = "原归属网点",notes = "")
private Long prevOutletId ;
/** 原归属支行 */
@ApiModelProperty(value = "原归属支行",notes = "")
private Long prevBranchId ;
/** 新客户经理柜员号 */
@ApiModelProperty(value = "新客户经理柜员号",notes = "")
private String nextUser ;
/** 新归属网点 */
@ApiModelProperty(value = "新归属网点",notes = "")
private Long nextOutletId ;
/** 新归属支行 */
@ApiModelProperty(value = "新归属支行",notes = "")
private Long nextBranchId ;
/** 网点审批人 */
@ApiModelProperty(value = "网点审批人",notes = "")
private String outletApprover ;
/** 网点审批结果 */
@ApiModelProperty(value = "网点审批结果",notes = "")
private String outletApproveResult ;
/** 网点审批时间 */
@ApiModelProperty(value = "网点审批时间",notes = "")
private Date outletApproveTime ;
/** 支行审批人 */
@ApiModelProperty(value = "支行审批人",notes = "")
private String branchApprover ;
/** 支行审批结果 */
@ApiModelProperty(value = "支行审批结果",notes = "")
private String branchApproveResult ;
/** 支行审批时间 */
@ApiModelProperty(value = "支行审批时间",notes = "")
private Date branchApproveTime ;
/** 总行审批人 */
@ApiModelProperty(value = "总行审批人",notes = "")
private String headApprover ;
/** 总行审批结果 */
@ApiModelProperty(value = "总行审批结果",notes = "")
private String headApproveResult ;
/** 总行审批时间 */
@ApiModelProperty(value = "总行审批时间",notes = "")
private Date headApproveTime ;
/** 创建时间 */
@ApiModelProperty(value = "创建时间",notes = "")
private Date createTime ;
/** 更新时间 */
@ApiModelProperty(value = "更新时间",notes = "")
private Date updateTime ;
}

View File

@@ -0,0 +1,65 @@
package com.ruoyi.ibs.cmpm.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/10/15
**/
@Data
public class GridCmpmVO {
/** id */
@ApiModelProperty(name = "id",notes = "")
private Long id ;
/** 客户号 */
@ApiModelProperty(name = "客户号",notes = "")
private String custId ;
/** 身份证号 */
@ApiModelProperty(name = "身份证号",notes = "")
private String custIdc ;
/** 客户内码 */
@ApiModelProperty(name = "客户内码",notes = "")
private String custIdn ;
@ApiModelProperty(name = "客户类型",notes = "")
private String custType ;
@ApiModelProperty(name = "统信码",notes = "")
private String usci;
private String accountNo;
/** 客户姓名 */
@ApiModelProperty(name = "客户姓名",notes = "")
private String custName ;
/** 客户层级 */
@ApiModelProperty(name = "客户层级",notes = "")
private String custLevel ;
/** 客户经理柜员号 */
@ApiModelProperty(name = "客户经理柜员号",notes = "")
private String userName ;
/** 客户经理姓名 */
@ApiModelProperty(name = "客户经理姓名",notes = "")
private String nickName ;
/** 网点机构号 */
@ApiModelProperty(name = "网点机构号",notes = "")
private Long outletId ;
/** 网点名称 */
@ApiModelProperty(name = "网点名称",notes = "")
private String outletName ;
/** 支行机构号 */
@ApiModelProperty(name = "支行机构号",notes = "")
private Long branchId ;
/** 支行名称 */
@ApiModelProperty(name = "支行名称",notes = "")
private String branchName ;
@ApiModelProperty(name = "客户来源",notes = "")
private String source;
/** 锁定标识 */
@ApiModelProperty(name = "锁定标识",notes = "")
private Boolean lockFlag ;
@ApiModelProperty(name = "是否可以移交",notes = "")
private Boolean transferFlag;
}

View File

@@ -0,0 +1,51 @@
package com.ruoyi.ibs.cmpm.mapper;
import com.ruoyi.ibs.cmpm.domain.dto.CustLevelDTO;
import com.ruoyi.ibs.cmpm.domain.dto.CustManagerDTO;
import com.ruoyi.ibs.cmpm.domain.dto.GridCmpmListDTO;
import com.ruoyi.ibs.cmpm.domain.dto.GridCmpmUpdateDTO;
import com.ruoyi.ibs.cmpm.domain.entity.GridCmpm;
import com.ruoyi.ibs.cmpm.domain.vo.DwbRetailCustLevelManagerDetailVO;
import com.ruoyi.ibs.cmpm.domain.vo.GridCmpmClaimVO;
import com.ruoyi.ibs.customerselect.domain.CustBaseInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/26
**/
@Mapper
public interface GridCmpmMapper {
List<GridCmpm> selectManageList(GridCmpmListDTO gridCmpmListDTO);
List<GridCmpm> selectCommonList(GridCmpmListDTO gridCmpmListDTO);
GridCmpm getGridCmpmByCustKey(@Param("custId") String custId, @Param("accountNo") String accountNo,
@Param("gridType") String gridType, @Param("deptCode") String deptCode);
List<GridCmpm> getGridCmpmByUserName(@Param("userName") String userName, @Param("deptCode") String deptCode, @Param("gridType") String gridType);
List<GridCmpm> queryGridCmpmByCustKey( @Param("deptCode") String deptCode, @Param("gridType") String gridType,
@Param("custIds") List<String> custIds, @Param("accountNos") List<String> accountNos );
Long updateGridCmpm(GridCmpmUpdateDTO gridCmpmUpdateDTO);
List<String> getAllCustLevel(@Param("gridType") String gridType);
String getCustLevel(CustLevelDTO custLevelDTO);
List<GridCmpmClaimVO> queryClaimList(@Param("deptCode") String deptCode, @Param("gridType") String gridType, @Param("custKey") String custKey);
List<DwbRetailCustLevelManagerDetailVO> getCustManagerList(CustManagerDTO custManagerDTO);
int getCustLevelCount(CustManagerDTO custManagerDTO);
// List<CustInfoRetail> selectCustInfoRetailFromGridCmpm(CustBaseInfo custBaseInfo);
List<CustBaseInfo> selectCustInfoFromGridCmpm(CustBaseInfo custBaseInfo);
}

View File

@@ -0,0 +1,56 @@
package com.ruoyi.ibs.cmpm.service;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.ibs.cmpm.mapper.GridCmpmMapper;
import com.ruoyi.ibs.customerselect.domain.ContinuousParam;
import com.ruoyi.ibs.customerselect.domain.CustBaseInfo;
import com.ruoyi.ibs.customerselect.domain.DiscreteParam;
import com.ruoyi.ibs.customerselect.mapper.GridSummarCountMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/11/21
**/
@Service
public class GridCmpmCustService {
@Resource
private GridCmpmMapper gridCmpmMapper;
@Autowired
private GridSummarCountMapper gridSummarCountMapper;
public List<CustBaseInfo> selectCustInfoRetailList(CustBaseInfo custBaseInfoParam) {
custBaseInfoParam.setCmpmUserName(SecurityUtils.getUsername());
custBaseInfoParam.setDeptCode(SecurityUtils.getHeadId());
//分页参数
custBaseInfoParam.setStart((custBaseInfoParam.getNum() - 1) * custBaseInfoParam.getSize());
custBaseInfoParam.setEnd(custBaseInfoParam.getNum() * custBaseInfoParam.getSize());
StringBuilder metricStrBuilder = new StringBuilder();
if (custBaseInfoParam.getContinuousParams() != null && custBaseInfoParam.getContinuousParams().size() > 0){
for (ContinuousParam info : custBaseInfoParam.getContinuousParams()){
if (metricStrBuilder.length() > 0) {
metricStrBuilder.append(",");
}
metricStrBuilder.append(gridSummarCountMapper.selectDictLabelByDictValue(info.getKey()));
}
}
if (custBaseInfoParam.getDiscreteParams() != null && custBaseInfoParam.getDiscreteParams().size() > 0){
for (DiscreteParam info:custBaseInfoParam.getDiscreteParams()){
if (metricStrBuilder.length() > 0) {
metricStrBuilder.append(",");
}
metricStrBuilder.append(gridSummarCountMapper.selectDictLabelByDictValue(info.getKey()));
}
}
return gridCmpmMapper.selectCustInfoFromGridCmpm(custBaseInfoParam);
}
}

View File

@@ -0,0 +1,87 @@
package com.ruoyi.ibs.cmpm.service;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.ibs.cmpm.domain.dto.CustLevelDTO;
import com.ruoyi.ibs.cmpm.domain.dto.CustManagerDTO;
import com.ruoyi.ibs.cmpm.domain.vo.DwbRetailCustLevelManagerDetailVO;
import com.ruoyi.ibs.cmpm.mapper.GridCmpmMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
/**
* @Author 吴凯程
* @Date 2025/10/15
**/
@Service
public class GridCmpmService {
@Resource
private GridCmpmMapper gridCmpmMapper;
private final String CUST_LEVEL_KEY = "GRID_CMPM_CUST_LEVEL_KEY_";
@Resource
private RedisCache redisCache;
public String getCustLevelByCust(CustLevelDTO custLevelDTO){
if (custLevelDTO.getCustType().equals("0") || custLevelDTO.getCustType().equals("1")){
custLevelDTO.setGridType("retail");
return gridCmpmMapper.getCustLevel(custLevelDTO);
}else if (Objects.nonNull(custLevelDTO.getAccountNo())){
custLevelDTO.setGridType("corporate_account");
}else {
custLevelDTO.setGridType("corporate");
}
// todo 公司部未上
return null;
}
public List<String> getAllCustLevel(String gridType){
String custLevelKey = CUST_LEVEL_KEY + gridType + SecurityUtils.getHeadId();
List<String> allCustLevel;
if (redisCache.hasKey(custLevelKey)){
allCustLevel = redisCache.getCacheObject(custLevelKey);
}else{
allCustLevel = gridCmpmMapper.getAllCustLevel(gridType);
redisCache.setCacheObject(custLevelKey,allCustLevel, 1, TimeUnit.HOURS);
}
return allCustLevel;
}
public List<DwbRetailCustLevelManagerDetailVO> selectCustManagerList(CustManagerDTO custManagerDTO) {
String userRole = SecurityUtils.userRole();
if (userRole.equals("manager")){
//客户经理查自己
custManagerDTO.setManagerId(SecurityUtils.getUsername());
}else if (userRole.equals("outlet")){
//网点管理员查网点
custManagerDTO.setOutletId(String.valueOf(SecurityUtils.getDeptId()));
}else if (userRole.equals("branch")){
//支行管理员查支行
custManagerDTO.setBranchId(String.valueOf(SecurityUtils.getDeptId()));
}
//其他角色查全部
return gridCmpmMapper.getCustManagerList(custManagerDTO);
}
public int custLevelCount(CustManagerDTO custManagerDTO) {
String userRole = SecurityUtils.userRole();
if (userRole.equals("manager")){
//客户经理查自己
custManagerDTO.setManagerId(SecurityUtils.getUsername());
}else if (userRole.equals("outlet")){
//网点管理员查网点
custManagerDTO.setOutletId(String.valueOf(SecurityUtils.getDeptId()));
}else if (userRole.equals("branch")){
//支行管理员查支行
custManagerDTO.setBranchId(String.valueOf(SecurityUtils.getDeptId()));
}
return gridCmpmMapper.getCustLevelCount(custManagerDTO);
}
}

View File

@@ -0,0 +1,58 @@
package com.ruoyi.ibs.custmap.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.ibs.custmap.domain.dto.CustMapCircleDTO;
import com.ruoyi.ibs.custmap.domain.vo.CustMapVO;
import com.ruoyi.ibs.custmap.service.CustMapSelectService;
import com.ruoyi.ibs.custmap.service.DeptAddressService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
import java.util.Objects;
@Api(tags = "地图拓客接口")
@Slf4j
@RestController
@RequestMapping("/cust/map")
public class CustMapController extends BaseController {
@Resource
private CustMapSelectService custMapSelectService;
@Resource
private DeptAddressService deptAddressService;
@ApiOperation("坐标和半径查询用户列表")
@PostMapping("/search/circle")
public AjaxResult searchCustByCircle(@RequestBody @Valid CustMapCircleDTO custMapCircleDTO) {
if (Objects.isNull(custMapCircleDTO.getNum()) || Objects.isNull(custMapCircleDTO.getSize())){
throw new ServiceException("请输入页码和每页条数");
}
List<CustMapVO> custMapVOS = custMapSelectService.selectCustListByCircle(custMapCircleDTO);
return success(custMapVOS);
}
@ApiOperation("坐标和半径搜索用户数量")
@PostMapping("/search/circle/count")
public AjaxResult countCustMapListByCircle(@RequestBody @Valid CustMapCircleDTO custMapCircleDTO) {
return success(custMapSelectService.countCustMapListByCircle(custMapCircleDTO));
}
@ApiOperation("获取用户默认地址")
@GetMapping("/loc")
public AjaxResult getDefaultLoc() {
return success(deptAddressService.selectDeptAddressById());
}
@ApiOperation("获取新华社数据")
@GetMapping("/info")
public AjaxResult getRadarInfo(@RequestParam Integer id) {
return success(custMapSelectService.selectCustInfoRadarById(id));
}
}

View File

@@ -0,0 +1,54 @@
package com.ruoyi.ibs.custmap.controller;
import com.github.pagehelper.Page;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataPageInfo;
import com.ruoyi.ibs.custmap.domain.dto.CustMapFavoriteDTO;
import com.ruoyi.ibs.custmap.domain.vo.CustMapVO;
import com.ruoyi.ibs.custmap.service.CustMapFavoriteService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/26
**/
@Api(tags = "地图拓客收藏接口")
@RestController
@RequestMapping("/cust/map/favorite")
public class CustMapFavoriteController extends BaseController {
@Resource
private CustMapFavoriteService custMapFavoriteService;
@ApiOperation("添加或取消收藏")
@GetMapping("/update")
public AjaxResult updateFavorite(@RequestParam Long radarId) {
return success(custMapFavoriteService.updateFavorite(radarId));
}
@ApiOperation("获取查收藏地图页面")
@GetMapping("/map")
public AjaxResult getFavoriteCount() {
return success(custMapFavoriteService.getFavoriteCountByUser());
}
@ApiOperation("获取收藏列表")
@GetMapping("/list")
public TableDataPageInfo<CustMapVO> getFavoriteList(CustMapFavoriteDTO custMapFavoriteDTO) {
Page<Object> page = startPage();
List<CustMapVO> custMapVOList = custMapFavoriteService.selectCustListByFavorite(custMapFavoriteDTO);
return getDataTable(custMapVOList, page);
}
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.ibs.custmap.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.ibs.custmap.domain.vo.CompanyTypeVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author 吴凯程
* @Date 2025/5/23
**/
@Api(tags = "地图拓客码值")
@RestController
@RequestMapping("/cust/map/metric")
public class CustMapMerticController extends BaseController {
@Resource
private RedisCache redisCache;
@ApiOperation("币种码值表")
@GetMapping("/cur")
public R<List<SysDictData>> getCurDict(){
List<SysDictData> sysDictTypeArrayList = new ArrayList<SysDictData>(redisCache.getCacheObject("sys_dict:cust_map_cur_metric"));
return R.ok(sysDictTypeArrayList);
}
@ApiOperation("机构类型码值表")
@GetMapping("/company/type")
public R<List<CompanyTypeVO>> getCompanyTypeDict(){
List<SysDictData> sysDictTypeArrayList = new ArrayList<SysDictData>(redisCache.getCacheObject("sys_dict:cust_map_company_type_metric"));
List<CompanyTypeVO> collect = sysDictTypeArrayList.stream().map(CompanyTypeVO::new).collect(Collectors.toList());
List<CompanyTypeVO> collect1 = collect.stream().filter(companyTypeVO -> companyTypeVO.getSort() == 1).collect(Collectors.toList());
for (CompanyTypeVO companyTypeVO : collect1) {
companyTypeVO.setChildren(companyTypeDfs(companyTypeVO.getValue(), companyTypeVO.getSort() + 1, collect));
}
return R.ok(collect1);
}
private List<CompanyTypeVO> companyTypeDfs(String value, Long sort, List<CompanyTypeVO> collect){
List<CompanyTypeVO> collect1 = collect.stream().filter(companyTypeVO -> companyTypeVO.getValue().startsWith(value) && companyTypeVO.getSort() == sort)
.collect(Collectors.toList());
if (collect1.size() == 0){
return null;
}
for (CompanyTypeVO companyTypeVO : collect1) {
companyTypeVO.setChildren(companyTypeDfs(companyTypeVO.getValue(), companyTypeVO.getSort() + 1, collect));
}
return collect1;
}
}

View File

@@ -0,0 +1,45 @@
package com.ruoyi.ibs.custmap.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @Author 吴凯程
* @Date 2025/5/15
**/
@Data
public class CustMapCircleDTO extends CustMapDTO{
@NotNull(message = "纬度不能为空")
@ApiModelProperty(value = "纬度")
private Double targetLat;
@NotNull(message = "经度不能为空")
@ApiModelProperty(value = "经度")
private Double targetLng;
private Double latRange;
private Double lngRange;
@NotNull(message = "距离不能为空")
@ApiModelProperty(value = "距离半径")
private Double dist;
@ApiModelProperty(value = "页面大小")
private Integer size;
@ApiModelProperty(value = "页数")
private Integer num;
private Integer pageIndex;
@ApiModelProperty(value = "升降序")
private Boolean isAsc;
@ApiModelProperty(value = "企业名称")
private String custName;
}

View File

@@ -0,0 +1,218 @@
package com.ruoyi.ibs.custmap.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/15
**/
@Data
public class CustMapDTO {
private String dept;
/**
* 企业规模 | en_qly
*/
@ApiModelProperty(value = "企业规模 | en_qly")
private List<String> custScaleList;
@ApiModelProperty(value = "机构类型")
private List<String> companyTypeList;
@ApiModelProperty(value = "包含机构类型")
private Boolean companyTypeInclude;
/**
* 法人电话
*/
@ApiModelProperty(value = "是否电话")
private Boolean isPhoneNumber;
@ApiModelProperty(value = "是否邮箱")
private Boolean isEmail;
/**
* 省
*/
@ApiModelProperty(value = "")
private String province;
/**
* 市
*/
@ApiModelProperty(value = "")
private String city;
/**
* 县
*/
@ApiModelProperty(value = "")
private String county;
/**
* 街道/镇
*/
@ApiModelProperty(value = "街道/镇")
private String street;
/**
* 社区/村
*/
@ApiModelProperty(value = "社区/村")
private String community;
/**
* 所在行业
*/
@ApiModelProperty(value = "所在行业")
private List<String> belongBusinessList;
/**
* 成立年限
*/
@ApiModelProperty(value = "成立年限")
private List<RangeInterval> startDateIntervalList;
/**
* 经营状态
*/
@ApiModelProperty(value = "经营状态")
private List<String> statusList;
@ApiModelProperty(value = "是否包含特定经营状态")
private Boolean statusInclude;
/**
* 注册资本币种
*/
@ApiModelProperty(value = "注册资本币种")
private String registCapiCur;
@ApiModelProperty(value = "注册资本范围")
private List<RangeInterval> registCapiIntervalList;
/**
* 实缴资本币种
*/
@ApiModelProperty(value = "实缴资本币种")
private String recCapCur;
@ApiModelProperty(value = "实缴资本范围")
private List<RangeInterval> recCapIntervalList;
/**
* 经营信息-养老保险参保人数
*/
@ApiModelProperty(value = "经营信息-养老保险参保人数")
private List<RangeInterval> businessInfoPenInsurIntervalList;
/**
* 经营信息-医疗保险参保人数
*/
@ApiModelProperty(value = "经营信息-医疗保险参保人数")
private List<RangeInterval> businessInfoMediInsurIntervalList;
/**
* 经营信息-有无进出口信息1为有0为无
*/
@ApiModelProperty(value = "经营信息-有无进出口信息1为有0为无")
private Boolean businessInfoImExportFlag;
@ApiModelProperty(value = "进出口信用等级列表")
private List<String> businessInfoImExportCreditGradeList;
/**
* 经营信息-有无政府扶持和奖励1为有0为无
*/
@ApiModelProperty(value = "经营信息-有无政府扶持和奖励1为有0为无")
private Boolean businessInfoGovSupportFlag;
/**
* 经营信息-有无融资信息1为有0为无
*/
@ApiModelProperty(value = "经营信息-有无融资信息1为有0为无")
private Boolean businessInfoFinaInfoFlag;
/**
* 经营信息-融资轮次
*/
@ApiModelProperty(value = "经营信息-融资轮次")
private List<String> businessInfoFinaRoundList;
/**
* 知识产权-有无商标信息1为有0为无
*/
@ApiModelProperty(value = "知识产权-有无商标信息1为有0为无")
private Boolean intelPropRightTrademarkInfoFlag;
/**
* 知识产权-有无专利信息1为有0为无
*/
@ApiModelProperty(value = "知识产权-有无专利信息1为有0为无")
private Boolean intelPropRightPatentInfoFlag;
/**
* 知识产权-有无软件著作权1为有0为无
*/
@ApiModelProperty(value = "知识产权-有无软件著作权1为有0为无")
private Boolean intelPropRightSoftCopyrightFlag;
/**
* 科技等级-类型
*/
@ApiModelProperty(value = "科技等级-类型")
private List<String> technologyLvlTypeList;
/**
* 科技等级-状态
*/
@ApiModelProperty(value = "科技等级-状态")
private List<String> technologyLvlStateList;
/**
* 科技等级-级别
*/
@ApiModelProperty(value = "科技等级-级别")
private List<String> technologyLvlLevelList;
/**
* 资本市场-有无上市信息1为有0为无
*/
@ApiModelProperty(value = "资本市场-有无上市信息1为有0为无")
private Boolean capMarketListInfoFlag;
/**
* 风险特征-有无失信信息1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无失信信息1为有0为无")
private Boolean riskCharDisInfoFlag;
/**
* 风险特征-有无破产清算1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无破产清算1为有0为无")
private Boolean riskCharBankruptcyLiquiFlag;
/**
* 风险特征-有无变更记录1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无变更记录1为有0为无")
private Boolean riskCharChangeRecordFlag;
/**
* 风险特征-有无失信被执行人1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无失信被执行人1为有0为无")
private Boolean riskCharDisPersonFlag;
/**
* 风险特征-有无严重失信违法1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无严重失信违法1为有0为无")
private Boolean riskCharSncFlag;
/**
* 风险特征-有无限制高消费1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无限制高消费1为有0为无")
private Boolean riskCharRhcFlag;
/**
* 经营风险-有无行政处罚1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无行政处罚1为有0为无")
private Boolean operatRiskAdminPenaltyFlag;
/**
* 经营风险-有无环保处罚1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无环保处罚1为有0为无")
private Boolean operatRiskEnvirPenaltyFlag;
/**
* 经营风险-有无欠税信息1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无欠税信息1为有0为无")
private Boolean operatRiskOweTaxInfoFlag;
/**
* 经营风险-有无终末案件1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无终末案件1为有0为无")
private Boolean operatRiskFinalCaseFlag;
/**
* 经营风险-有无未结案件1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无未结案件1为有0为无")
private Boolean operatRiskUnfinishCaseFlag;
/**
* 新增企业标识1为新增企业0为存量企业
*/
@ApiModelProperty(value = "新增企业标识1为新增企业0为存量企业")
private Boolean newCompanyFlag;
private Boolean isBranchFlag;
private Boolean isHasBranchFlag;
}

View File

@@ -0,0 +1,24 @@
package com.ruoyi.ibs.custmap.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/5/23
**/
@Data
public class CustMapFavoriteDTO {
/** 用户名 */
@ApiModelProperty(value = "用户名",notes = "")
private String userName ;
private Double longitude ;
private Double latitude ;
@ApiModelProperty(value = "升降序")
private Boolean isAsc;
}

View File

@@ -0,0 +1,14 @@
package com.ruoyi.ibs.custmap.domain.dto;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/5/20
**/
@Data
public class RangeInterval{
private Long min;
private Long max;
}

View File

@@ -0,0 +1,292 @@
package com.ruoyi.ibs.custmap.domain.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* 客户雷达信息表(CustInfoRadar965)实体类
*
* @author makejava
* @since 2025-05-22 16:44:05
*/
@Data
@TableName("cust_info_radar")
public class CustInfoRadar {
/**
* id
*/
@TableId
@ApiModelProperty(value = "ID")
private Integer id;
/**
* 企业规模 | en_qly
*/
@ApiModelProperty(value = "企业规模 | en_qly")
private String custScale;
/**
* 企业名称 | cust_nam
*/
@ApiModelProperty(value = "企业名称 | cust_nam")
private String custName;
/**
* 法人姓名
*/
@ApiModelProperty(value = "法人姓名")
private String lpName;
/**
* 法人电话
*/
@ApiModelProperty(value = "法人电话")
private String custPhone;
/**
* 客户号 | cust_id
*/
@ApiModelProperty(value = "客户号 | cust_id")
private String custId;
/**
* 客户内码 | cst_id
*/
@ApiModelProperty(value = "客户内码 | cst_id")
private String custIsn;
/**
* 统一社会信用识别码 | uniscid
*/
@ApiModelProperty(value = "统一社会信用识别码 | uniscid")
private String socialCreditCode;
/**
* 省
*/
@ApiModelProperty(value = "")
private String province;
/**
* 市
*/
@ApiModelProperty(value = "")
private String city;
/**
* 县
*/
@ApiModelProperty(value = "")
private String county;
/**
* 街道/镇
*/
@ApiModelProperty(value = "街道/镇")
private String street;
/**
* 社区/村
*/
@ApiModelProperty(value = "社区/村")
private String community;
/**
* 详细地址
*/
@ApiModelProperty(value = "详细地址")
private String addressDetail;
/**
* 经度
*/
@ApiModelProperty(value = "经度")
private Double longitude;
/**
* 纬度
*/
@ApiModelProperty(value = "纬度")
private Double latitude;
/**
* 所在行业
*/
@ApiModelProperty(value = "所在行业")
private String belongBusiness;
/**
* 成立年限
*/
@ApiModelProperty(value = "成立年限")
private Date startDate;
/**
* 经营状态
*/
@ApiModelProperty(value = "经营状态")
private String status;
/**
* 注册资本币种
*/
@ApiModelProperty(value = "注册资本币种")
private String registCapiCur;
/**
* 注册资本数值
*/
@ApiModelProperty(value = "注册资本数值")
private Double registCapiValue;
/**
* 注册资本单位
*/
@ApiModelProperty(value = "注册资本单位")
private String registCapiUnit;
/**
* 实缴资本币种
*/
@ApiModelProperty(value = "实缴资本币种")
private String recCapCur;
/**
* 实缴资本数值
*/
@ApiModelProperty(value = "实缴资本数值")
private Double recCapValue;
/**
* 实缴资本单位
*/
@ApiModelProperty(value = "实缴资本单位")
private String recCapUnit;
/**
* 联系方式
*/
@ApiModelProperty(value = "联系方式")
private String phoneNumber;
/**
* 经营信息-养老保险参保人数
*/
@ApiModelProperty(value = "经营信息-养老保险参保人数")
private String businessInfoPenInsurNum;
/**
* 经营信息-医疗保险参保人数
*/
@ApiModelProperty(value = "经营信息-医疗保险参保人数")
private String businessInfoMediInsurNum;
/**
* 经营信息-有无进出口信息1为有0为无
*/
@ApiModelProperty(value = "经营信息-有无进出口信息1为有0为无")
private Boolean businessInfoImExportFlag;
@ApiModelProperty(value = "经营信息-进出口信用等级")
private String businessInfoImExportCreditGrade;
/**
* 经营信息-有无政府扶持和奖励1为有0为无
*/
@ApiModelProperty(value = "经营信息-有无政府扶持和奖励1为有0为无")
private Boolean businessInfoGovSupportFlag;
/**
* 经营信息-有无融资信息1为有0为无
*/
@ApiModelProperty(value = "经营信息-有无融资信息1为有0为无")
private Boolean businessInfoFinaInfoFlag;
/**
* 经营信息-融资轮次
*/
@ApiModelProperty(value = "经营信息-融资轮次")
private String businessInfoFinaRound;
/**
* 知识产权-有无商标信息1为有0为无
*/
@ApiModelProperty(value = "知识产权-有无商标信息1为有0为无")
private Boolean intelPropRightTrademarkInfoFlag;
/**
* 知识产权-有无专利信息1为有0为无
*/
@ApiModelProperty(value = "知识产权-有无专利信息1为有0为无")
private Boolean intelPropRightPatentInfoFlag;
/**
* 知识产权-有无软件著作权1为有0为无
*/
@ApiModelProperty(value = "知识产权-有无软件著作权1为有0为无")
private Boolean intelPropRightSoftCopyrightFlag;
/**
* 科技等级-类型
*/
@ApiModelProperty(value = "科技等级-类型")
private String technologyLvlType;
/**
* 科技等级-状态
*/
@ApiModelProperty(value = "科技等级-状态")
private String technologyLvlState;
/**
* 科技等级-级别
*/
@ApiModelProperty(value = "科技等级-级别")
private String technologyLvlLevel;
/**
* 资本市场-有无上市信息1为有0为无
*/
@ApiModelProperty(value = "资本市场-有无上市信息1为有0为无")
private Boolean capMarketListInfoFlag;
/**
* 风险特征-有无失信信息1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无失信信息1为有0为无")
private Boolean riskCharDisInfoFlag;
/**
* 风险特征-有无破产清算1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无破产清算1为有0为无")
private Boolean riskCharBankruptcyLiquiFlag;
/**
* 风险特征-有无变更记录1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无变更记录1为有0为无")
private Boolean riskCharChangeRecordFlag;
/**
* 风险特征-有无失信被执行人1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无失信被执行人1为有0为无")
private Boolean riskCharDisPersonFlag;
/**
* 风险特征-有无严重失信违法1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无严重失信违法1为有0为无")
private Boolean riskCharSncFlag;
/**
* 风险特征-有无限制高消费1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无限制高消费1为有0为无")
private Boolean riskCharRhcFlag;
/**
* 经营风险-有无行政处罚1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无行政处罚1为有0为无")
private Boolean operatRiskAdminPenaltyFlag;
/**
* 经营风险-有无环保处罚1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无环保处罚1为有0为无")
private Boolean operatRiskEnvirPenaltyFlag;
/**
* 经营风险-有无欠税信息1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无欠税信息1为有0为无")
private Boolean operatRiskOweTaxInfoFlag;
/**
* 经营风险-有无终末案件1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无终末案件1为有0为无")
private Boolean operatRiskFinalCaseFlag;
/**
* 经营风险-有无未结案件1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无未结案件1为有0为无")
private Boolean operatRiskUnfinishCaseFlag;
/**
* 新增企业标识1为新增企业0为存量企业
*/
@ApiModelProperty(value = "新增企业标识1为新增企业0为存量企业")
private Boolean newCompanyFlag;
@ApiModelProperty(value = "是否是分支机构")
private Boolean isBranchFlag;
@ApiModelProperty(value = "是否有分支机构")
private Boolean isHasBranchFlag;
@ApiModelProperty(value = "电子邮箱")
private String email;
@ApiModelProperty(value = "注册资本展示")
private String registCapiShow;
@ApiModelProperty(value = "实缴资本展示")
private String recCapShow;
@ApiModelProperty(value = "经营范围")
private String scope;
@ApiModelProperty(value = "客户类型")
private String custType;
@ApiModelProperty(value = "机构类型")
private String companyType;
}

View File

@@ -0,0 +1,26 @@
package com.ruoyi.ibs.custmap.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/5/23
**/
@Data
@TableName("cust_map_favorite")
public class CustMapFavorite {
/** 主键 */
@ApiModelProperty(value = "主键",notes = "")
@TableId(type = IdType.AUTO)
private Long id ;
/** 用户名 */
@ApiModelProperty(value = "用户名",notes = "")
private String userName ;
@ApiModelProperty(value = "雷达表id",notes = "")
private Long radarId;
}

View File

@@ -0,0 +1,33 @@
package com.ruoyi.ibs.custmap.domain.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/5/23
**/
@ApiModel(value = "机构地址表",description = "")
@TableName("dept_address")
@Data
public class DeptAddress {
/** 部门id */
@ApiModelProperty(value = "部门id",notes = "")
@TableId
private Long deptId ;
/** */
@ApiModelProperty(value = "地址",notes = "")
private String address ;
@ApiModelProperty(value = "城市",notes = "")
private String city ;
/** */
@ApiModelProperty(value = "经度",notes = "")
private Double lng ;
/** */
@ApiModelProperty(value = "纬度",notes = "")
private Double lat ;
}

View File

@@ -0,0 +1,22 @@
package com.ruoyi.ibs.custmap.domain.vo;
import com.ruoyi.common.core.domain.entity.SysDictData;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/28
**/
@Data
public class CompanyTypeVO {
private Long sort;
private String label;
private String value;
private List<CompanyTypeVO> children;
public CompanyTypeVO(SysDictData sysDictData) {
this.sort = sysDictData.getDictSort();
this.label = sysDictData.getDictLabel();
this.value = sysDictData.getDictValue();
}
}

View File

@@ -0,0 +1,64 @@
package com.ruoyi.ibs.custmap.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @Author 吴凯程
* @Date 2025/5/15
**/
@Data
public class CustMapVO {
@ApiModelProperty(value = "ID")
private Integer id;
@ApiModelProperty(value = "客户名称")
private String custName;
@ApiModelProperty(value = "法人")
private String lpName;
@ApiModelProperty(value = "开始日期")
private String startDate;
@ApiModelProperty(value = "注册资本显示")
private String registCapiShow;
@ApiModelProperty(value = "省份")
private String province;
@ApiModelProperty(value = "城市")
private String city;
@ApiModelProperty(value = "距离")
private double distance;
@ApiModelProperty(value = "电话号码")
private String phoneNumber;
@ApiModelProperty(value = "详细地址")
private String addressDetail;
@ApiModelProperty(value = "经度")
private BigDecimal longitude;
@ApiModelProperty(value = "纬度")
private BigDecimal latitude;
@ApiModelProperty(value = "社会信用代码")
private String socialCreditCode;
@ApiModelProperty(value = "新公司标志")
private Boolean newCompanyFlag;
@ApiModelProperty(value = "是否收藏")
private Boolean isFavorite;
@ApiModelProperty(value = "客户类型")
private String custType;
}

View File

@@ -0,0 +1,18 @@
package com.ruoyi.ibs.custmap.domain.vo;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/5/26
**/
@Data
public class FavoriteCountVO {
private String city;
private Long countFavorite;
private String wkt;
}

View File

@@ -0,0 +1,16 @@
package com.ruoyi.ibs.custmap.domain.vo;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/26
**/
@Data
public class FavoriteVO {
private Long favoriteTotal;
private List<FavoriteCountVO> favoriteList;
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.ibs.custmap.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.ibs.custmap.domain.dto.CustMapFavoriteDTO;
import com.ruoyi.ibs.custmap.domain.entity.CustMapFavorite;
import com.ruoyi.ibs.custmap.domain.vo.CustMapVO;
import com.ruoyi.ibs.custmap.domain.vo.FavoriteCountVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/15
**/
@Mapper
public interface CustMapFavoriteMapper extends BaseMapper<CustMapFavorite> {
List<FavoriteCountVO> countFavoriteCustMap(@Param("userName") String userName);
List<FavoriteCountVO> getCityWktList();
List<CustMapVO> getFavoriteCustList(CustMapFavoriteDTO custMapFavoriteDTO);
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.ibs.custmap.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.ibs.custmap.domain.dto.CustMapCircleDTO;
import com.ruoyi.ibs.custmap.domain.entity.CustInfoRadar;
import com.ruoyi.ibs.custmap.domain.vo.CustMapVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/15
**/
@Mapper
public interface CustMapMapper extends BaseMapper<CustInfoRadar> {
List<CustMapVO> selectCustMapListByCircle(CustMapCircleDTO custMapCircleDTO );
Long countCustMapListByCircle(CustMapCircleDTO custMapCircleDTO);
CustInfoRadar selectByCustId(@Param("custId") String custId, @Param("dept") String dept);
}

View File

@@ -0,0 +1,13 @@
package com.ruoyi.ibs.custmap.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.ibs.custmap.domain.entity.DeptAddress;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author 吴凯程
* @Date 2025/5/26
**/
@Mapper
public interface DeptAddressMapper extends BaseMapper<DeptAddress> {
}

View File

@@ -0,0 +1,70 @@
package com.ruoyi.ibs.custmap.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.ibs.custmap.domain.dto.CustMapFavoriteDTO;
import com.ruoyi.ibs.custmap.domain.entity.CustMapFavorite;
import com.ruoyi.ibs.custmap.domain.vo.CustMapVO;
import com.ruoyi.ibs.custmap.domain.vo.FavoriteCountVO;
import com.ruoyi.ibs.custmap.domain.vo.FavoriteVO;
import com.ruoyi.ibs.custmap.mapper.CustMapFavoriteMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
/**
* @Author 吴凯程
* @Date 2025/5/23
**/
@Service
public class CustMapFavoriteService {
@Resource
private CustMapFavoriteMapper custMapFavoriteMapper;
public String updateFavorite(Long radarId){
LambdaQueryWrapper<CustMapFavorite> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CustMapFavorite::getUserName, SecurityUtils.getUsername())
.eq(CustMapFavorite::getRadarId, radarId);
CustMapFavorite custMapFavorite = custMapFavoriteMapper.selectOne(queryWrapper);
if (Objects.isNull(custMapFavorite)){
CustMapFavorite custMapFavoriteVO = new CustMapFavorite();
custMapFavoriteVO.setUserName(SecurityUtils.getUsername());
custMapFavoriteVO.setRadarId(radarId);
custMapFavoriteMapper.insert(custMapFavoriteVO);
return "添加收藏成功";
}
custMapFavoriteMapper.deleteById(custMapFavorite);
return "移除收藏成功";
}
public FavoriteVO getFavoriteCountByUser(){
FavoriteVO favoriteVO = new FavoriteVO();
Long countTotal = 0L;
List<FavoriteCountVO> cityWktList = custMapFavoriteMapper.getCityWktList();
List<FavoriteCountVO> favoriteCountVOS = custMapFavoriteMapper.countFavoriteCustMap(SecurityUtils.getUsername());
for (FavoriteCountVO favoriteCityVO : cityWktList) {
FavoriteCountVO favoriteCountVO = favoriteCountVOS.stream()
.filter(item -> Objects.nonNull(item.getCity()) && item.getCity().equals(favoriteCityVO.getCity()))
.findFirst().orElse(null);
if (Objects.nonNull(favoriteCountVO)){
favoriteCityVO.setCountFavorite(favoriteCountVO.getCountFavorite());
countTotal += favoriteCountVO.getCountFavorite();
}
}
favoriteVO.setFavoriteList(cityWktList);
favoriteVO.setFavoriteTotal(countTotal);
return favoriteVO;
}
public List<CustMapVO> selectCustListByFavorite(CustMapFavoriteDTO custMapFavoriteDTO){
custMapFavoriteDTO.setUserName(SecurityUtils.getUsername());
return custMapFavoriteMapper.getFavoriteCustList(custMapFavoriteDTO);
}
}

View File

@@ -0,0 +1,22 @@
package com.ruoyi.ibs.custmap.service;
import com.ruoyi.ibs.custmap.domain.dto.CustMapCircleDTO;
import com.ruoyi.ibs.custmap.domain.entity.CustInfoRadar;
import com.ruoyi.ibs.custmap.domain.vo.CustMapVO;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/15
**/
public interface CustMapSelectService {
List<CustMapVO> selectCustListByCircle(CustMapCircleDTO custMapCircleDTO);
Long countCustMapListByCircle(CustMapCircleDTO custMapCircleDTO);
CustInfoRadar selectCustInfoRadarById(Integer custId);
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.ibs.custmap.service;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.ibs.custmap.domain.entity.DeptAddress;
import com.ruoyi.ibs.custmap.mapper.DeptAddressMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* @Author 吴凯程
* @Date 2025/5/26
**/
@Service
public class DeptAddressService {
@Resource
private DeptAddressMapper deptAddressMapper;
public DeptAddress selectDeptAddressById() {
return deptAddressMapper.selectById(SecurityUtils.getDeptId());
}
}

View File

@@ -0,0 +1,74 @@
package com.ruoyi.ibs.custmap.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.ibs.custmap.domain.dto.CustMapCircleDTO;
import com.ruoyi.ibs.custmap.domain.entity.CustInfoRadar;
import com.ruoyi.ibs.custmap.domain.entity.CustMapFavorite;
import com.ruoyi.ibs.custmap.domain.vo.CustMapVO;
import com.ruoyi.ibs.custmap.mapper.CustMapFavoriteMapper;
import com.ruoyi.ibs.custmap.mapper.CustMapMapper;
import com.ruoyi.ibs.custmap.service.CustMapSelectService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/15
**/
@Service
public class CustMapSelectServiceImpl implements CustMapSelectService {
@Resource
private CustMapMapper custMapMapper;
@Resource
private CustMapFavoriteMapper custMapFavoriteMapper;
/**
* @param
* @return
*/
@Override
public List<CustMapVO> selectCustListByCircle(CustMapCircleDTO custMapCircleDTO) {
custMapCircleDTO.setDept(SecurityUtils.getHeadId());
custMapCircleDTO.setPageIndex((custMapCircleDTO.getNum() - 1) * custMapCircleDTO.getSize());
custMapCircleDTO.setLatRange(custMapCircleDTO.getDist() / 111.0);
custMapCircleDTO.setLngRange(custMapCircleDTO.getDist() / (111.0 * Math.cos(Math.toRadians(custMapCircleDTO.getTargetLat()))));
List<CustMapVO> list = custMapMapper.selectCustMapListByCircle(custMapCircleDTO);
for (CustMapVO custMapVO : list) {
LambdaQueryWrapper<CustMapFavorite> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CustMapFavorite::getUserName, SecurityUtils.getUsername())
.eq(CustMapFavorite::getRadarId, custMapVO.getId());
custMapVO.setIsFavorite(custMapFavoriteMapper.selectCount(queryWrapper) > 0);
}
return list;
}
/**
* @param custMapCircleDTO
* @return
*/
@Override
public Long countCustMapListByCircle(CustMapCircleDTO custMapCircleDTO) {
custMapCircleDTO.setDept(SecurityUtils.getHeadId());
custMapCircleDTO.setLatRange(custMapCircleDTO.getDist() / 111.0);
custMapCircleDTO.setLngRange(custMapCircleDTO.getDist() / (111.0 * Math.cos(Math.toRadians(custMapCircleDTO.getTargetLat()))));
return custMapMapper.countCustMapListByCircle(custMapCircleDTO);
}
/**
* @param
* @return
*/
@Override
public CustInfoRadar selectCustInfoRadarById(Integer id) {
return custMapMapper.selectById(id);
}
}

View File

@@ -0,0 +1,32 @@
package com.ruoyi.ibs.customerselect.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.ibs.customerselect.service.CustCsvTagService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @Author 吴凯程
* @Date 2025/11/28
**/
@Api(tags = "CSV客户标签")
@RestController
@RequestMapping("/csv/tag")
public class CustCsvTagController extends BaseController {
@Resource
private CustCsvTagService custCsvTagService;
@GetMapping("/search")
@ApiOperation("查询客户标签")
public AjaxResult searchCsv(@RequestParam String custIdc) {
return AjaxResult.success(custCsvTagService.getCsvTagJson(custIdc));
}
}

View File

@@ -0,0 +1,126 @@
package com.ruoyi.ibs.customerselect.controller;
import com.github.pagehelper.Page;
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.domain.R;
import com.ruoyi.common.core.page.TableDataPageInfo;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.ibs.customerselect.domain.*;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.ibs.customerselect.service.IMyCustomerService;
import com.ruoyi.ibs.dashboard.domain.vo.CommonRespVO;
import com.ruoyi.ibs.dashboard.service.DashboardService;
import com.ruoyi.ibs.grid.domain.excel.NewPersonAnchor;
import com.ruoyi.ibs.list.domain.CustManualTagDTO;
import com.ruoyi.ibs.list.domain.CustTagVo;
import com.ruoyi.ibs.list.domain.TreeNode;
import com.ruoyi.ibs.list.service.ISysCampaignGroupCustomerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.rmi.ServerException;
import java.util.*;
/**
* 我的客户 控制类
*
* @author ruoyi
*/
@Api(tags="客户基本信息管理")
@RestController
@RequestMapping("/system/custBaseInfo")
public class MyCustomerController extends BaseController {
@Autowired
private IMyCustomerService myCustomerService;
@Autowired
ISysCampaignGroupCustomerService iSysCampaignGroupCustomerService;
@Autowired
private DashboardService dashboardService;
private static Logger logger= LoggerFactory.getLogger(MyCustomerController.class);
/**
* 获取我的客户信息列表
*/
// @PreAuthorize("@ss.hasPermi('system:custBaseInfo:list')")
@Log(title = "我的客户-获取客户信息列表")
@PostMapping("/list")
@ApiOperation("获取客户信息列表")
public AjaxResult list(@RequestBody CustBaseInfo sysCustomerBasedata)
// public TableDataPageInfo<CustBaseInfo> list(CustBaseInfo sysCustomerBasedata)
{
// Page<Object> page = startPage();
List<CustBaseInfo> custBaseInfoList = myCustomerService.selectSysCustomerBasedataList(sysCustomerBasedata);
logger.info(custBaseInfoList.toString());
// return getDataTable(custBaseInfoList ,page);
return AjaxResult.success(custBaseInfoList);
}
@Log(title = "我的客户-获取商户云相关信息")
@GetMapping("/merchantMessage")
@ApiOperation("获取商户云相关信息")
public AjaxResult merchantMessage( String custId)
// public TableDataPageInfo<CustBaseInfo> list(CustBaseInfo sysCustomerBasedata)
{
// Page<Object> page = startPage();
MerchantMcspInfo merchantMcspInfo = myCustomerService.selectmerchantMessage(custId);
// logger.info(merchantMcspInfo.toString());
// return getDataTable(custBaseInfoList ,page);
return AjaxResult.success(merchantMcspInfo);
}
@GetMapping("/tagList")
@ApiOperation("获取客户信息標簽列表")
public AjaxResult list(@Valid @NotNull String custId,@Valid @NotNull String custType)
{
List<TreeNode> hashMaps = myCustomerService.selectCustEnumByCustId(custId,custType);
return AjaxResult.success(hashMaps);
}
@GetMapping("/manualTagList")
@ApiOperation("获取自定义客户标签列表")
public AjaxResult manualList(@Valid @NotNull String custId,@Valid @NotNull String custType)
{
List<TreeNode> hashMaps = myCustomerService.selectmanualListByCustId(custId,custType);
return AjaxResult.success(hashMaps);
}
@PostMapping(value = "/editCustTag")
@ApiOperation("修改客户标签")
public R<Objects> editCustTag(@RequestBody CustTagDTO custTagDTO) {
myCustomerService.editCustTag(custTagDTO);
return R.ok();
}
@PostMapping(value = "/editManualTag")
@ApiOperation("修改手动标签")
public R<Objects> editManualTag(@RequestBody CustManualTagDTO custManualTagDTO) {
myCustomerService.editManualTag(custManualTagDTO);
return R.ok();
}
@GetMapping("/specialTagList")
@ApiOperation("获取青田特色商户标签列表")
public AjaxResult specialTagList(String custId)
{
CommonRespVO tagList = dashboardService.getTagList(custId);
return AjaxResult.success(tagList.getData());
}
}

View File

@@ -0,0 +1,49 @@
package com.ruoyi.ibs.customerselect.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.ibs.customerselect.service.MyCustomerGridSelectService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @Author 吴凯程
* @Date 2025/5/8
**/
@Api(tags = "我的客户-网格筛选")
@RestController
@RequestMapping("/my/customer/grid/select")
public class MyCustomerGridSelectController extends BaseController {
@Resource
private MyCustomerGridSelectService myCustomerGridSelectService;
@ApiOperation("我的客户行政网格下拉框")
@Log(title = "我的客户行政网格下拉框")
@GetMapping("/region")
public AjaxResult getRegionGridList(@RequestParam String gridLevel, @RequestParam String opsDept) {
return AjaxResult.success(myCustomerGridSelectService.getRegionGridList(gridLevel, opsDept));
}
@ApiOperation("我的客户虚拟网格下拉框")
@Log(title = "我的客户虚拟网格下拉框")
@GetMapping("/virtual")
public AjaxResult getVirtualGridList(@RequestParam String opsDept) {
return AjaxResult.success(myCustomerGridSelectService.getVirtualGridList(opsDept));
}
@ApiOperation("我的客户特色网格下拉框")
@Log(title = "我的客户虚拟网格下拉框")
@GetMapping("/draw")
public AjaxResult getDrawGridList(@RequestParam String opsDept) {
return AjaxResult.success(myCustomerGridSelectService.getDrawGridList(opsDept));
}
}

View File

@@ -0,0 +1,291 @@
package com.ruoyi.ibs.customerselect.domain;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class BusinessExportVo {
/** 客户标签 */
@Excel(name = "客户分类",readConverterExp = "0=个人,1=商户,2=企业")
private String custPattern;
/** 企业名称 */
@Excel(name = "企业名称")
private String custName;
@Excel(name = "归属总行网格名称")
private String regionTopGridName;
@Excel(name = "归属支行网格名称")
private String regionSecGridName;
/** 归属支行 */
@Excel(name = "行政网格归属支行")
private String belongBranchName;
/** 归属网点 */
@Excel(name = "行政网格归属网点")
private String belongOutletName;
@Excel(name = "归属自定义地图网格名称")
private String drawGridName;
@Excel(name = "自定义地图网格归属支行")
private String drawBranchNames;
@Excel(name = "自定义地图网格归属网点")
private String drawOutletNames;
@Excel(name = "自定义地图网格归属客户经理")
private String drawUserNames;
/**
* 归属 网格客户经理名,多个按照逗号 隔开
*/
@Excel(name = "行政网格归属客户经理")
private String belongUserNameList;
@Excel(name = "归属自定义名单网格名称")
private String virtualGridName;
@Excel(name = "自定义名单网格归属支行")
private String virtualBranchNames;
@Excel(name = "自定义名单网格归属网点")
private String virtualOutletNames;
@Excel(name = "自定义名单网格归属客户经理")
private String virtualUserNames;
/** 法人姓名 */
@Excel(name = "法人姓名")
private String lpName;
/** 法人电话 */
@Excel(name = "法人电话")
private String custPhone;
/** 客户类型 */
@Excel(name = "客户类型",readConverterExp = "0=存量,1=潜在,2=暂无")
// @Excel(name = "客户类型")
private String custType ;
/** 产品标签 */
// @Excel(name = "产品标签")
@Excel(name = "产品标签",readConverterExp = "000=暂无,100=存款,010=贷款,001=中收,110=存款、贷款,101=存款、中收,011=贷款、中收,111=存款、贷款、中收")
private String custTag;
/** 企业规模 */
@Excel(name = "企业规模",readConverterExp = "0=小型,1=中型,2=大型,3=微型,4=其他")
// @Excel(name = "企业规模")
private String custScale;
//企业业务指标
/**
* 活期存款余额
*/
@Excel(name = "活期存款余额(元)")
private String hqCurBalance;
/**
* 保证金存款余额
*/
@Excel(name = "保证金存款余额(元)")
private String bzCurBalance;
/**
* 是否授信
*/
@Excel(name = "是否授信")
private String isCredit;
/**
* 贷款余额
*/
@Excel(name = "贷款余额(元)")
private String loanBalanceCny;
/**
* 贷款年日均
*/
@Excel(name = "贷款年日均(元)")
private String loanYearDailyaverage;
/**
* 是否普惠签约
*/
@Excel(name = "是否合同签约")
private String isHtqy;
/**
* 是否有签发承兑汇票
*/
@Excel(name = "是否有签发承兑汇票")
private String financeProd716OpenFlag;
/**
* 承兑汇票余额
*/
@Excel(name = "承兑汇票余额(元)")
private String financeProd716Balance;
/**
* 是否有贴现业务
*/
@Excel(name = "是否有贴现业务")
private String financeProd711OpenFlag;
/**
* 贴现金额
*/
@Excel(name = "贴现金额(元)")
private String financeProd711Balance;
/**
* 是否有保函业务
*/
@Excel(name = "是否有保函业务")
private String intlBussinessJcbhOpenFlag;
/**
* 是否为有效代发工资客户
*/
@Excel(name = "是否为有效代发工资客户")
private String isUstr;
/**
* 月均代发工资笔数
*/
@Excel(name = "月均代发工资笔数")
private String ustrCountPerM;
/**
* 月均代发工资金额(元)
*/
@Excel(name = "月均代发工资金额(元)")
private String ustrBalM;
/**
* 是否代扣电费
*/
@Excel(name = "是否代扣电费")
private String elecchargeSignFlag;
/**
* 是否代扣水费
*/
@Excel(name = "是否代扣水费")
private String waterchargeSignFlag;
/**
* 是否代扣税费
*/
@Excel(name = "是否代扣税费")
private String taxdeductionSignFlag;
/**
* 是否票据宝签约
*/
@Excel(name = "是否票据宝签约")
private String pjb;
/**
* 是否财资宝签约
*/
@Excel(name = "是否财资宝签约")
private String czb;
/**
* 是否收付宝签约
*/
@Excel(name = "是否收付宝签约")
private String sfb;
/**
* 是否贸融宝签约
*/
@Excel(name = "是否贸融宝签约")
private String mrb;
/**
* 是否数字生态产品签约
*/
@Excel(name = "是否数字生态产品签约")
private String szst;
/**
* 是否开户
*/
@Excel(name = "是否开户")
private String isOpenSts;
/**
* 是否国际结算业务
*/
@Excel(name = "是否国际结算业务")
private String intlBussinessOpenFlag;
/**
* 是否有远期结算汇业务
*/
@Excel(name = "是否有远期结算汇业务")
private String intlBussiness325OpenFlag;
public String getCustPattern() {
return custPattern;
}
public void setCustPattern(String custPattern) {
this.custPattern = custPattern;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getBelongBranchName() {
return belongBranchName;
}
public void setBelongBranchName(String belongBranchName) {
this.belongBranchName = belongBranchName;
}
public String getBelongOutletName() {
return belongOutletName;
}
public void setBelongOutletName(String belongOutletName) {
this.belongOutletName = belongOutletName;
}
public String getLpName() {
return lpName;
}
public void setLpName(String lpName) {
this.lpName = lpName;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
public String getBelongUserNameList() {
return belongUserNameList;
}
public void setBelongUserNameList(String belongUserNameList) {
this.belongUserNameList = belongUserNameList;
}
public String getCustType() {
return custType;
}
public void setCustType(String custType) {
this.custType = custType;
}
public String getCustTag() {
return custTag;
}
public void setCustTag(String custTag) {
this.custTag = custTag;
}
public String getCustScale() {
return custScale;
}
public void setCustScale(String custScale) {
this.custScale = custScale;
}
}

View File

@@ -0,0 +1,27 @@
package com.ruoyi.ibs.customerselect.domain;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.List;
public class ContinuousParam extends BaseEntity {
private String key;
private List<String> value;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public List<String> getValue() {
return value;
}
public void setValue(List<String> value) {
this.value = value;
}
}

View File

@@ -0,0 +1,773 @@
package com.ruoyi.ibs.customerselect.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 客户基本信息对象 sys_customer_basedata
*
* @author ruoyi
* @date 2024-09-10
*/
@Data
public class CustBaseInfo extends BaseEntity
{
/** id */
private Long id;
/** 客户标签 */
@NotNull(message = "客户标签不能为空")
@Excel(name = "客户分类",readConverterExp = "0=个人,1=商户,2=企业")
private String custPattern = "0";
/** 客户类型 */
@NotNull(message = "客户类型不能为空")
@Excel(name = "客户类型",readConverterExp = "0=存量,1=潜在")
private String custType = "2";
/** 产品标签 */
@NotNull(message = "产品标签不能为空")
@Excel(name = "产品标签",readConverterExp = "100=存款,010=贷款,001=中收,110=存款、贷款,101=存款、中收,011=贷款、中收,111=存款、贷款、中收")
private String custTag = "111";
/** 企业规模 */
@NotNull(message = "企业规模不能为空")
@Excel(name = "企业规模",readConverterExp = "0=无,1=小型,2=中型,3=大型")
private String custScale;
//规模小型
private String custScale1;
//规模中型
private String custScale2;
//规模大型
private String custScale3;
//规模微型
private String custScale0;
private String opsDept;
private String custLevel;
private List<String> custLevelList;
private String cmpmUserName;
private String deptCode;
private boolean isHead;
public boolean isHead() {
return isHead;
}
public void setHead(boolean head) {
isHead = head;
}
public List<String> getCustScaleList() {
return custScaleList;
}
public void setCustScaleList(List<String> custScaleList) {
this.custScaleList = custScaleList;
}
private List<String> custScaleList;
/** 企业名称 */
@Excel(name = "企业名称")
private String custName;
@Excel(name = "归属总行网格名称")
private String regionTopGridName;
@Excel(name = "归属支行网格名称")
private String regionSecGridName;
/** 归属支行 */
@Excel(name = "行政网格归属支行")
private String belongBranchName;
/** 归属网点 */
@Excel(name = "行政网格归属网点")
private String belongOutletName;
/**
* 归属 网格客户经理名,多个按照逗号 隔开
*/
@Excel(name = "行政网格归属客户经理")
private String belongUserNameList;
/** 管护客户经理 */
private String manageUserName;
/** 网格客户经理 */
private String belongUserName;
/** 法人姓名 */
private String lpName;
/** 法人电话 */
private String custPhone;
/** 注册资本 */
private String custCapital;
/** 是否贷款 */
private String loanTag;
/** 客户状态 */
private String status;
/** 归属机构 */
private Long userDeptId;
private Long deptId;
private Long outletsId;
private Long userId;
private String userName;
private String custId;
int num;
int size;
int start;
int end;
String latitude;
String longitude;
private List<Long> regionTopGridIds;
private List<Long> regionSecGridIds;
private List<Long> virtualGridIds;
private List<Long> drawGridIds;
private Boolean isSelectGrid;
private String regionBranchNames;
private String regionOutletNames;
private String regionUserNames;
@Excel(name = "归属自定义地图网格名称")
private String drawGridName;
@Excel(name = "自定义地图网格归属支行")
private String drawBranchNames;
@Excel(name = "自定义地图网格归属网点")
private String drawOutletNames;
@Excel(name = "自定义地图网格归属客户经理")
private String drawUserNames;
@Excel(name = "归属自定义名单网格名称")
private String virtualGridName;
@Excel(name = "自定义名单网格归属支行")
private String virtualBranchNames;
@Excel(name = "自定义名单网格归属网点")
private String virtualOutletNames;
@Excel(name = "自定义名单网格归属客户经理")
private String virtualUserNames;
//个人商户业务指标
/**
* 活期存款余额
*/
@Excel(name = "活期存款余额(元)")
private String curBalD;
/**
* 定期存款余额
*/
@Excel(name = "定期存款余额(元)")
private String curBalT;
/**
* 贷款余额
*/
@Excel(name = "贷款余额(元)")
private String balLoan;
/**
* 五级不良贷款余额
*/
@Excel(name = "五级不良贷款余额(元)")
private String curBal5Bad;
/**
* 活期存款年日均
*/
@Excel(name = "活期存款年日均(元)")
private String curDAve;
/**
* 定期存款年日均
*/
@Excel(name = "定期存款年日均(元)")
private String curTAve;
/**
* 贷款年日均
*/
@Excel(name = "贷款年日均(元)")
private String loanAve;
/**
* 是否建档
*/
@Excel(name = "是否建档")
private String isPh;
/**
* 是否授信
*/
@Excel(name = "是否授信")
private String isSx;
/**
* 是否合同签约
*/
@Excel(name = "是否合同签约")
private String isYxht;
/**
* 是否持有信用卡
*/
@Excel(name = "是否持有信用卡")
private String isXyk;
/**
* 是否开通丰收互联
*/
@Excel(name = "是否开通丰收互联")
private String fshl;
/**
* 是否办理收单
*/
@Excel(name = "是否办理收单")
private String isSd;
/**
* 是否办理etc
*/
@Excel(name = "是否办理etc")
private String etc;
/**
* 是否代扣电费
*/
@Excel(name = "是否代扣电费")
private String dian;
/**
* 是否贷款黑名单
*/
@Excel(name = "是否贷款黑名单")
private String isBlack;
/**
* 是否五级不良贷款客户
*/
@Excel(name = "是否五级不良贷款客户")
private String isBad;
//企业业务指标
/**
* 活期存款余额
*/
@Excel(name = "活期存款余额(元)")
private String hqCurBalance;
/**
* 保证金存款余额
*/
@Excel(name = "保证金存款余额(元)")
private String bzCurBalance;
/**
* 是否授信
*/
@Excel(name = "是否授信")
private String isCredit;
/**
* 贷款余额
*/
@Excel(name = "贷款余额(元)")
private String loanBalanceCny;
/**
* 贷款年日均
*/
@Excel(name = "贷款年日均(元)")
private String loanYearDailyaverage;
/**
* 是否普惠签约
*/
@Excel(name = "是否合同签约")
private String isHtqy;
/**
* 是否有签发承兑汇票
*/
@Excel(name = "是否有签发承兑汇票")
private String financeProd716OpenFlag;
/**
* 承兑汇票余额
*/
@Excel(name = "承兑汇票余额(元)")
private String financeProd716Balance;
/**
* 是否有贴现业务
*/
@Excel(name = "是否有贴现业务")
private String financeProd711OpenFlag;
/**
* 贴现金额
*/
@Excel(name = "贴现金额(元)")
private String financeProd711Balance;
/**
* 是否有保函业务
*/
@Excel(name = "是否有保函业务")
private String intlBussinessJcbhOpenFlag;
/**
* 是否为有效代发工资客户
*/
@Excel(name = "是否为有效代发工资客户")
private String isUstr;
/**
* 月均代发工资笔数
*/
@Excel(name = "月均代发工资笔数")
private String ustrCountPerM;
/**
* 月均代发工资金额(元)
*/
@Excel(name = "月均代发工资金额(元)")
private String ustrBalM;
/**
* 是否代扣电费
*/
@Excel(name = "是否代扣电费")
private String elecchargeSignFlag;
/**
* 是否代扣水费
*/
@Excel(name = "是否代扣水费")
private String waterchargeSignFlag;
/**
* 是否代扣税费
*/
@Excel(name = "是否代扣税费")
private String taxdeductionSignFlag;
/**
* 是否票据宝签约
*/
@Excel(name = "是否票据宝签约")
private String pjb;
/**
* 是否财资宝签约
*/
@Excel(name = "是否财资宝签约")
private String czb;
/**
* 是否收付宝签约
*/
@Excel(name = "是否收付宝签约")
private String sfb;
/**
* 是否贸融宝签约
*/
@Excel(name = "是否贸融宝签约")
private String mrb;
/**
* 是否数字生态产品签约
*/
@Excel(name = "是否数字生态产品签约")
private String szst;
/**
* 是否开户
*/
@Excel(name = "是否开户")
private String isOpenSts;
/**
* 是否国际结算业务
*/
@Excel(name = "是否国际结算业务")
private String intlBussinessOpenFlag;
/**
* 是否有远期结算汇业务
*/
@Excel(name = "是否有远期结算汇业务")
private String intlBussiness325OpenFlag;
private String socialCreditCode;
private String custLocation;
private String custGender;
private String custIsn;
private String searchStr;
private String custIdc;
public String getCustIdc() {
return custIdc;
}
public void setCustIdc(String custIdc) {
this.custIdc = custIdc;
}
public String getBelongUserNameList() {
return belongUserNameList;
}
public void setBelongUserNameList(String belongUserNameList) {
this.belongUserNameList = belongUserNameList;
}
public String getOpsDept() {
return opsDept;
}
public void setOpsDept(String opsDept) {
this.opsDept = opsDept;
}
public String getCustScale1() {
return custScale1;
}
public void setCustScale1(String custScale1) {
this.custScale1 = custScale1;
}
public String getCustScale2() {
return custScale2;
}
public void setCustScale2(String custScale2) {
this.custScale2 = custScale2;
}
public String getCustScale3() {
return custScale3;
}
public void setCustScale3(String custScale3) {
this.custScale3 = custScale3;
}
public String getCustScale0() {
return custScale0;
}
public void setCustScale0(String custScale0) {
this.custScale0 = custScale0;
}
public String getLatitude() {
return latitude;
}
public void setLatitude(String latitude) {
this.latitude = latitude;
}
public String getLongitude() {
return longitude;
}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
public int getStart() {
return start;
}
public void setStart(int start) {
this.start = start;
}
public int getEnd() {
return end;
}
public void setEnd(int end) {
this.end = end;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@NotBlank(message = "客户标签不能为空")
public String getCustPattern() {
return custPattern;
}
public void setCustPattern(String custPattern) {
this.custPattern = custPattern;
}
public String getCustType() {
return custType;
}
public void setCustType(String custType) {
this.custType = custType;
}
public String getCustTag() {
return custTag;
}
public void setCustTag(String custTag) {
this.custTag = custTag;
}
public String getCustScale() {
return custScale;
}
public void setCustScale(String custScale) {
this.custScale = custScale;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getBelongBranchName() {
return belongBranchName;
}
public void setBelongBranchName(String belongBranchName) {
this.belongBranchName = belongBranchName;
}
public String getBelongOutletName() {
return belongOutletName;
}
public void setBelongOutletName(String belongOutletName) {
this.belongOutletName = belongOutletName;
}
public String getManageUserName() {
return manageUserName;
}
public void setManageUserName(String manageUserName) {
this.manageUserName = manageUserName;
}
public String getBelongUserName() {
return belongUserName;
}
public void setBelongUserName(String belongUserName) {
this.belongUserName = belongUserName;
}
public String getLpName() {
return lpName;
}
public void setLpName(String lpName) {
this.lpName = lpName;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
public String getCustCapital() {
return custCapital;
}
public void setCustCapital(String custCapital) {
this.custCapital = custCapital;
}
public String getLoanTag() {
return loanTag;
}
public void setLoanTag(String loanTag) {
this.loanTag = loanTag;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Long getUserDeptId() {
return userDeptId;
}
public void setUserDeptId(Long userDeptId) {
this.userDeptId = userDeptId;
}
public Long getDeptId() {
return deptId;
}
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getOutletsId() {
return outletsId;
}
public void setOutletsId(Long outletsId) {
this.outletsId = outletsId;
}
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
private List<ContinuousParam> continuousParams; //连续型指标
private List<DiscreteParam> discreteParams; //离散型指标
private String perMetric;
public List<ContinuousParam> getContinuousParams() {
return continuousParams;
}
public void setContinuousParams(List<ContinuousParam> continuousParams) {
this.continuousParams = continuousParams;
}
public List<DiscreteParam> getDiscreteParams() {
return discreteParams;
}
public void setDiscreteParams(List<DiscreteParam> discreteParams) {
this.discreteParams = discreteParams;
}
public String getPerMetric() {
return perMetric;
}
public void setPerMetric(String perMetric) {
this.perMetric = perMetric;
}
public String getSocialCreditCode() {
return socialCreditCode;
}
public void setSocialCreditCode(String socialCreditCode) {
this.socialCreditCode = socialCreditCode;
}
public String getCustLocation() {
return custLocation;
}
public void setCustLocation(String custLocation) {
this.custLocation = custLocation;
}
public String getCustGender() {
return custGender;
}
public void setCustGender(String custGender) {
this.custGender = custGender;
}
public String getCustIsn() {
return custIsn;
}
public void setCustIsn(String custIsn) {
this.custIsn = custIsn;
}
public String getSearchStr() {
return searchStr;
}
public void setSearchStr(String searchStr) {
this.searchStr = searchStr;
}
@Override
public String toString() {
return "CustBaseInfo{" +
"id=" + id +
", custPattern='" + custPattern + '\'' +
", custType='" + custType + '\'' +
", custTag='" + custTag + '\'' +
", custScale='" + custScale + '\'' +
", custName='" + custName + '\'' +
", belongBranchName='" + belongBranchName + '\'' +
", belongOutletName='" + belongOutletName + '\'' +
", manageUserName='" + manageUserName + '\'' +
", belongUserName=" + belongUserName +
", lpName='" + lpName + '\'' +
", custPhone='" + custPhone + '\'' +
", custCapital='" + custCapital + '\'' +
", loanTag='" + loanTag + '\'' +
", status='" + status + '\'' +
", userDeptId=" + userDeptId +
'}';
}
}

View File

@@ -0,0 +1,34 @@
package com.ruoyi.ibs.customerselect.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @Author 吴凯程
* @Date 2025/11/27
**/
@Data
public class CustCsvTag {
/** 主键 */
@ApiModelProperty(value = "主键",notes = "")
@TableId(type = IdType.AUTO)
private Long id ;
/** 机构号 */
@ApiModelProperty(value = "机构号",notes = "")
private String headId ;
/** 客户号 */
@ApiModelProperty(value = "证件号",notes = "")
private String custIdc ;
/** 文件id */
@ApiModelProperty(value = "文件id",notes = "")
private String fileId ;
/** 更新日期 */
@ApiModelProperty(value = "更新日期",notes = "")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime ;
}

View File

@@ -0,0 +1,48 @@
package com.ruoyi.ibs.customerselect.domain;
public class CustInfoDeleteFromAnchor {
/** 客户类型 */
private String custType;
/** 客户号 */
private String custId;
/** 客户证件类型 */
private String custIdType;
/** 证件号 */
private String legalId;
public String getCustType() {
return custType;
}
public void setCustType(String custType) {
this.custType = custType;
}
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
public String getCustIdType() {
return custIdType;
}
public void setCustIdType(String custIdType) {
this.custIdType = custIdType;
}
public String getLegalId() {
return legalId;
}
public void setLegalId(String legalId) {
this.legalId = legalId;
}
}

View File

@@ -0,0 +1,167 @@
package com.ruoyi.ibs.customerselect.domain;
import java.util.Date;
/**
* 客户基本信息对象 custInfoUpdateFromAnchor
*
* @author ruoyi
* @date 2024-10-29
*/
public class CustInfoUpdateFromAnchor {
/** 客户类型 */
private String custType;
/** 客户id */
private String custId;
/** 证件类型 */
private String custIdType;
/** 锚点名称 */
private String anchorName;
/** 所在行业 */
private String belongBusiness;
/** 创建人 */
private String updateBy;
/** 创建机构 */
private String updateOrg;
/** 证件号 */
private String legalId;
/** 客户内码 */
private String custIsn;
/** 地址 */
private String address;
/** 详细地址 */
private String addressDetail;
/** 归属行政区划编码 */
private String regionCode;
/** 创建时间 */
private Date updateTime;
private String addressName;
public String getAddressName() {
return addressName;
}
public void setAddressName(String addressName) {
this.addressName = addressName;
}
public String getCustType() {
return custType;
}
public void setCustType(String custType) {
this.custType = custType;
}
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
public String getCustIdType() {
return custIdType;
}
public void setCustIdType(String custIdType) {
this.custIdType = custIdType;
}
public String getAnchorName() {
return anchorName;
}
public void setAnchorName(String anchorName) {
this.anchorName = anchorName;
}
public String getBelongBusiness() {
return belongBusiness;
}
public void setBelongBusiness(String belongBusiness) {
this.belongBusiness = belongBusiness;
}
public String getUpdateBy() {
return updateBy;
}
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy;
}
public String getUpdateOrg() {
return updateOrg;
}
public void setUpdateOrg(String updateOrg) {
this.updateOrg = updateOrg;
}
public String getLegalId() {
return legalId;
}
public void setLegalId(String legalId) {
this.legalId = legalId;
}
public String getCustIsn() {
return custIsn;
}
public void setCustIsn(String custIsn) {
this.custIsn = custIsn;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getAddressDetail() {
return addressDetail;
}
public void setAddressDetail(String addressDetail) {
this.addressDetail = addressDetail;
}
public String getRegionCode() {
return regionCode;
}
public void setRegionCode(String regionCode) {
this.regionCode = regionCode;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}

View File

@@ -0,0 +1,16 @@
package com.ruoyi.ibs.customerselect.domain;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class CustListSearchVo extends BaseEntity {
private List<Map<String,Object>> continuousParams; //连续型
private List<Map<String,Object>> discreteParams; //离散型
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.ibs.customerselect.domain;
import lombok.Data;
@Data
public class CustTag {
private Long id;
/**
* 客户标签名称
*/
private String custTagName;
/**
* 一级标签
*/
private String custTagLevel1;
/**
* 二级标签
*/
private String custTagLevel2;
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.ibs.customerselect.domain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class CustTagDTO {
@ApiModelProperty(value = "客户号")
private String custId;
@ApiModelProperty(value = "客户标签列表,仅仅传点亮的即可")
private List<CustTag> custTagList;
private String createBy;
@ApiModelProperty(value = "自建标签")
private List<CustTag> newCustTags;
@ApiModelProperty(value = "标签类型")
private String custTagType;
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.ibs.customerselect.domain;
import com.ruoyi.common.core.domain.BaseEntity;
public class DiscreteParam extends BaseEntity {
private String key;
private String value;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}

View File

@@ -0,0 +1,696 @@
package com.ruoyi.ibs.customerselect.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 网格汇总统计_公司对象 grid_cmpm_count_gongsi_965
*
* @author ruoyi
* @date 2025-03-22
*/
public class GridSummarCount extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 统计日期 */
@Excel(name = "统计日期")
private String dt;
/** 一级网格名称 */
@Excel(name = "一级网格名称")
private String gridName;
/** 二级网格名称 */
@Excel(name = "二级网格名称")
private String gridName2;
/** 镇/街道 */
@Excel(name = "镇/街道")
private String town;
/** 归属支行 */
@Excel(name = "归属支行")
private String deptId;
/** 归属网点 */
@Excel(name = "归属网点")
private String outletsId;
/** 归属客户经理 */
@Excel(name = "归属客户经理")
private String userName;
/** 入格客户数 */
@Excel(name = "入格客户数")
private Integer custNum;
/** 活期存款余额 */
@Excel(name = "活期存款余额")
private String hqCurBalance;
/** 保证金存款余额 */
@Excel(name = "保证金存款余额")
private String bzCurBalance;
/** 贷款余额 */
@Excel(name = "贷款余额")
private String loanBalanceCny;
/** 贴现余额 */
@Excel(name = "贴现余额")
private String financeProd711Balance;
/** 承兑汇票余额 */
@Excel(name = "承兑汇票余额")
private String financeProd716Balance;
/** 贷款年日均 */
@Excel(name = "贷款年日均")
private String loanYearDailyaverage;
/** 普惠签约率 */
@Excel(name = "普惠签约率")
private String phRat;
/** 签发承兑汇票率 */
@Excel(name = "签发承兑汇票率")
private String qfcdRat;
/** 贴现业务率 */
@Excel(name = "贴现业务率")
private String txRat;
/** 保函业务率 */
@Excel(name = "保函业务率")
private String bhRat;
/** 有效代发工资率 */
@Excel(name = "有效代发工资率")
private String yxdfgzRat;
/** 代扣电费率 */
@Excel(name = "代扣电费率")
private String dkdfRat;
/** 代扣水费率 */
@Excel(name = "代扣水费率")
private String dksfRat;
/** 代扣税费率 */
@Excel(name = "代扣税费率")
private String dkshfRat;
/** 票据宝签约率 */
@Excel(name = "票据宝签约率")
private String pjbRat;
/** 财资宝签约率 */
@Excel(name = "财资宝签约率")
private String czbRat;
/** 收付宝签约率 */
@Excel(name = "收付宝签约率")
private String sfbRat;
/** 贸融宝签约率 */
@Excel(name = "贸融宝签约率")
private String mrbRat;
/** 数字生态产品签约率 */
@Excel(name = "数字生态产品签约率")
private String szstRat;
/** 开户率 */
@Excel(name = "开户率")
private String khRat;
/** 国际结算业务率 */
@Excel(name = "国际结算业务率")
private String gjjsywRat;
/** 远期结算汇业务率 */
@Excel(name = "远期结算汇业务率")
private String yqjshRat;
/** 普惠签约数 */
@Excel(name = "普惠签约数")
private Integer phNum;
/** 签发承兑汇票数 */
@Excel(name = "签发承兑汇票数")
private Integer qfcdNum;
/** 贴现业务数 */
@Excel(name = "贴现业务数")
private Integer txNum;
/** 保函业务数 */
@Excel(name = "保函业务数")
private Integer bhNum;
/** 有效代发工资数 */
@Excel(name = "有效代发工资数")
private Integer yxdfgzNum;
/** 代扣电费数 */
@Excel(name = "代扣电费数")
private Integer dkdfNum;
/** 代扣水费数 */
@Excel(name = "代扣水费数")
private Integer dksfNum;
/** 代扣税费数 */
@Excel(name = "代扣税费数")
private Integer dkshfNum;
/** 票据宝签约数 */
@Excel(name = "票据宝签约数")
private Integer pjbNum;
/** 财资宝签约数 */
@Excel(name = "财资宝签约数")
private Integer czbNum;
/** 收付宝签约数 */
@Excel(name = "收付宝签约数")
private Integer sfbNum;
/** 贸融宝签约数 */
@Excel(name = "贸融宝签约数")
private Integer mrbNum;
/** 数字生态产品签约数 */
@Excel(name = "数字生态产品签约数")
private Integer szstNum;
/** 开户数 */
@Excel(name = "开户数")
private Integer khNum;
/** 国际结算业务数 */
@Excel(name = "国际结算业务数")
private Integer gjjsywNum;
/** 远期结算汇业务数 */
@Excel(name = "远期结算汇业务数")
private Integer yqjshNum;
/** 归属行政区划编码 */
@Excel(name = "归属行政区划编码")
private String regionCode;
/** 部室归属 0零售 1公司 2运管 */
@Excel(name = "部室归属 0零售 1公司 2运管")
private String opsDept;
public void setDt(String dt)
{
this.dt = dt;
}
public String getDt()
{
return dt;
}
public void setGridName(String gridName)
{
this.gridName = gridName;
}
public String getGridName()
{
return gridName;
}
public void setGridName2(String gridName2)
{
this.gridName2 = gridName2;
}
public String getGridName2()
{
return gridName2;
}
public void setTown(String town)
{
this.town = town;
}
public String getTown()
{
return town;
}
public void setDeptId(String deptId)
{
this.deptId = deptId;
}
public String getDeptId()
{
return deptId;
}
public void setOutletsId(String outletsId)
{
this.outletsId = outletsId;
}
public String getOutletsId()
{
return outletsId;
}
public void setUserName(String userName)
{
this.userName = userName;
}
public String getUserName()
{
return userName;
}
public void setCustNum(Integer custNum)
{
this.custNum = custNum;
}
public Integer getCustNum()
{
return custNum;
}
public void setHqCurBalance(String hqCurBalance)
{
this.hqCurBalance = hqCurBalance;
}
public String getHqCurBalance()
{
return hqCurBalance;
}
public void setBzCurBalance(String bzCurBalance)
{
this.bzCurBalance = bzCurBalance;
}
public String getBzCurBalance()
{
return bzCurBalance;
}
public void setLoanBalanceCny(String loanBalanceCny)
{
this.loanBalanceCny = loanBalanceCny;
}
public String getLoanBalanceCny()
{
return loanBalanceCny;
}
public void setFinanceProd711Balance(String financeProd711Balance)
{
this.financeProd711Balance = financeProd711Balance;
}
public String getFinanceProd711Balance()
{
return financeProd711Balance;
}
public void setFinanceProd716Balance(String financeProd716Balance)
{
this.financeProd716Balance = financeProd716Balance;
}
public String getFinanceProd716Balance()
{
return financeProd716Balance;
}
public void setLoanYearDailyaverage(String loanYearDailyaverage)
{
this.loanYearDailyaverage = loanYearDailyaverage;
}
public String getLoanYearDailyaverage()
{
return loanYearDailyaverage;
}
public void setPhRat(String phRat)
{
this.phRat = phRat;
}
public String getPhRat()
{
return phRat;
}
public void setQfcdRat(String qfcdRat)
{
this.qfcdRat = qfcdRat;
}
public String getQfcdRat()
{
return qfcdRat;
}
public void setTxRat(String txRat)
{
this.txRat = txRat;
}
public String getTxRat()
{
return txRat;
}
public void setBhRat(String bhRat)
{
this.bhRat = bhRat;
}
public String getBhRat()
{
return bhRat;
}
public void setYxdfgzRat(String yxdfgzRat)
{
this.yxdfgzRat = yxdfgzRat;
}
public String getYxdfgzRat()
{
return yxdfgzRat;
}
public void setDkdfRat(String dkdfRat)
{
this.dkdfRat = dkdfRat;
}
public String getDkdfRat()
{
return dkdfRat;
}
public void setDksfRat(String dksfRat)
{
this.dksfRat = dksfRat;
}
public String getDksfRat()
{
return dksfRat;
}
public void setDkshfRat(String dkshfRat)
{
this.dkshfRat = dkshfRat;
}
public String getDkshfRat()
{
return dkshfRat;
}
public void setPjbRat(String pjbRat)
{
this.pjbRat = pjbRat;
}
public String getPjbRat()
{
return pjbRat;
}
public void setCzbRat(String czbRat)
{
this.czbRat = czbRat;
}
public String getCzbRat()
{
return czbRat;
}
public void setSfbRat(String sfbRat)
{
this.sfbRat = sfbRat;
}
public String getSfbRat()
{
return sfbRat;
}
public void setMrbRat(String mrbRat)
{
this.mrbRat = mrbRat;
}
public String getMrbRat()
{
return mrbRat;
}
public void setSzstRat(String szstRat)
{
this.szstRat = szstRat;
}
public String getSzstRat()
{
return szstRat;
}
public void setKhRat(String khRat)
{
this.khRat = khRat;
}
public String getKhRat()
{
return khRat;
}
public void setGjjsywRat(String gjjsywRat)
{
this.gjjsywRat = gjjsywRat;
}
public String getGjjsywRat()
{
return gjjsywRat;
}
public void setYqjshRat(String yqjshRat)
{
this.yqjshRat = yqjshRat;
}
public String getYqjshRat()
{
return yqjshRat;
}
public void setPhNum(Integer phNum)
{
this.phNum = phNum;
}
public Integer getPhNum()
{
return phNum;
}
public void setQfcdNum(Integer qfcdNum)
{
this.qfcdNum = qfcdNum;
}
public Integer getQfcdNum()
{
return qfcdNum;
}
public void setTxNum(Integer txNum)
{
this.txNum = txNum;
}
public Integer getTxNum()
{
return txNum;
}
public void setBhNum(Integer bhNum)
{
this.bhNum = bhNum;
}
public Integer getBhNum()
{
return bhNum;
}
public void setYxdfgzNum(Integer yxdfgzNum)
{
this.yxdfgzNum = yxdfgzNum;
}
public Integer getYxdfgzNum()
{
return yxdfgzNum;
}
public void setDkdfNum(Integer dkdfNum)
{
this.dkdfNum = dkdfNum;
}
public Integer getDkdfNum()
{
return dkdfNum;
}
public void setDksfNum(Integer dksfNum)
{
this.dksfNum = dksfNum;
}
public Integer getDksfNum()
{
return dksfNum;
}
public void setDkshfNum(Integer dkshfNum)
{
this.dkshfNum = dkshfNum;
}
public Integer getDkshfNum()
{
return dkshfNum;
}
public void setPjbNum(Integer pjbNum)
{
this.pjbNum = pjbNum;
}
public Integer getPjbNum()
{
return pjbNum;
}
public void setCzbNum(Integer czbNum)
{
this.czbNum = czbNum;
}
public Integer getCzbNum()
{
return czbNum;
}
public void setSfbNum(Integer sfbNum)
{
this.sfbNum = sfbNum;
}
public Integer getSfbNum()
{
return sfbNum;
}
public void setMrbNum(Integer mrbNum)
{
this.mrbNum = mrbNum;
}
public Integer getMrbNum()
{
return mrbNum;
}
public void setSzstNum(Integer szstNum)
{
this.szstNum = szstNum;
}
public Integer getSzstNum()
{
return szstNum;
}
public void setKhNum(Integer khNum)
{
this.khNum = khNum;
}
public Integer getKhNum()
{
return khNum;
}
public void setGjjsywNum(Integer gjjsywNum)
{
this.gjjsywNum = gjjsywNum;
}
public Integer getGjjsywNum()
{
return gjjsywNum;
}
public void setYqjshNum(Integer yqjshNum)
{
this.yqjshNum = yqjshNum;
}
public Integer getYqjshNum()
{
return yqjshNum;
}
public void setRegionCode(String regionCode)
{
this.regionCode = regionCode;
}
public String getRegionCode()
{
return regionCode;
}
public void setOpsDept(String opsDept)
{
this.opsDept = opsDept;
}
public String getOpsDept()
{
return opsDept;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("dt", getDt())
.append("gridName", getGridName())
.append("gridName2", getGridName2())
.append("town", getTown())
.append("deptId", getDeptId())
.append("outletsId", getOutletsId())
.append("userName", getUserName())
.append("custNum", getCustNum())
.append("hqCurBalance", getHqCurBalance())
.append("bzCurBalance", getBzCurBalance())
.append("loanBalanceCny", getLoanBalanceCny())
.append("financeProd711Balance", getFinanceProd711Balance())
.append("financeProd716Balance", getFinanceProd716Balance())
.append("loanYearDailyaverage", getLoanYearDailyaverage())
.append("phRat", getPhRat())
.append("qfcdRat", getQfcdRat())
.append("txRat", getTxRat())
.append("bhRat", getBhRat())
.append("yxdfgzRat", getYxdfgzRat())
.append("dkdfRat", getDkdfRat())
.append("dksfRat", getDksfRat())
.append("dkshfRat", getDkshfRat())
.append("pjbRat", getPjbRat())
.append("czbRat", getCzbRat())
.append("sfbRat", getSfbRat())
.append("mrbRat", getMrbRat())
.append("szstRat", getSzstRat())
.append("khRat", getKhRat())
.append("gjjsywRat", getGjjsywRat())
.append("yqjshRat", getYqjshRat())
.append("phNum", getPhNum())
.append("qfcdNum", getQfcdNum())
.append("txNum", getTxNum())
.append("bhNum", getBhNum())
.append("yxdfgzNum", getYxdfgzNum())
.append("dkdfNum", getDkdfNum())
.append("dksfNum", getDksfNum())
.append("dkshfNum", getDkshfNum())
.append("pjbNum", getPjbNum())
.append("czbNum", getCzbNum())
.append("sfbNum", getSfbNum())
.append("mrbNum", getMrbNum())
.append("szstNum", getSzstNum())
.append("khNum", getKhNum())
.append("gjjsywNum", getGjjsywNum())
.append("yqjshNum", getYqjshNum())
.append("regionCode", getRegionCode())
.append("opsDept", getOpsDept())
.toString();
}
}

View File

@@ -0,0 +1,58 @@
package com.ruoyi.ibs.customerselect.domain;
public class GroupListVo {
/** 清单ID */
private String groupId;
/** 清单名称 */
private String groupName;
/** 清单类型 */
private String groupType;
/** 创建机构 */
private String createRole;
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getGroupType() {
return groupType;
}
public void setGroupType(String groupType) {
this.groupType = groupType;
}
public String getCreateRole() {
return createRole;
}
public void setCreateRole(String createRole) {
this.createRole = createRole;
}
@Override
public String toString() {
return "GroupListVo{" +
"groupId='" + groupId + '\'' +
", groupName='" + groupName + '\'' +
", groupType='" + groupType + '\'' +
", createRole='" + createRole + '\'' +
'}';
}
}

View File

@@ -0,0 +1,350 @@
package com.ruoyi.ibs.customerselect.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* 清单列表查询信息 ListSelectByUser
*
* @author ruoyi
* @date 2024-09-25
*/
public class ListSelectByUser {
/** 客户标签 */
@NotNull(message = "客户标签不能为空")
private String custPattern;
/** 用户机构 */
private Long userDept;
/** 用户id */
private Long userId;
/** 清单来源 */
private String createRole;
/** 清单类型 */
private String groupType;
/** 客户类型 */
private String custType;
/** 清单ID */
private String groupId;
/** 清单名称 */
private String groupName;
/** 客户数 */
private Long customerNum;
/** 关联活动id */
private String campaignId;
/** 关联活动名称 */
private String campaignName;
/** 开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
private Date startTime;
/** 结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endTime;
/** 活动状态 */
private String actionStatus;
/** 紧急程度 */
private String campaignDegree;
/** 分配机构id */
private Long deptId;
/** 分配机构 */
private String belongDept;
private String belongOutlet;
/** 分配结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
private Date claimEndTime;
/** 认领类型 */
private String claimType;
/** 机构领取状态 */
private String orgClaimStatus;
/** 机构分配状态 */
private String orgDistributeStatus;
/** 客户经理认领率 */
private String receiveSitustion = "0%";
/** 是否二次推送 */
private String secondPushStatus;
/** 执行人 0-机构1-个人2-混合分配 */
private String executer;
/** 更新时间 */
private Date updateTime;
/** 创建时间 */
private Date createTime;
/** 当前时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
private Date nowTime;
@Excel(name = "考核目标")
private String checkTarget;
@Excel(name = "下发支行")
private String sendDept;
public String getSendDept() {
return sendDept;
}
public void setSendDept(String sendDept) {
this.sendDept = sendDept;
}
public String getCustPattern() {
return custPattern;
}
public void setCustPattern(String custPattern) {
this.custPattern = custPattern;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getUserDept() {
return userDept;
}
public void setUserDept(Long userDept) {
this.userDept = userDept;
}
public String getCreateRole() {
return createRole;
}
public void setCreateRole(String createRole) {
this.createRole = createRole;
}
public String getCustType() {
return custType;
}
public void setCustType(String custType) {
this.custType = custType;
}
public String getGroupType() {
return groupType;
}
public void setGroupType(String groupType) {
this.groupType = groupType;
}
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public Long getCustomerNum() {
return customerNum;
}
public void setCustomerNum(Long customerNum) {
this.customerNum = customerNum;
}
public String getCampaignId() {
return campaignId;
}
public void setCampaignId(String campaignId) {
this.campaignId = campaignId;
}
public String getCampaignName() {
return campaignName;
}
public void setCampaignName(String campaignName) {
this.campaignName = campaignName;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public String getActionStatus() {
return actionStatus;
}
public void setActionStatus(String actionStatus) {
this.actionStatus = actionStatus;
}
public String getCampaignDegree() {
return campaignDegree;
}
public void setCampaignDegree(String campaignDegree) {
this.campaignDegree = campaignDegree;
}
public Long getDeptId() {
return deptId;
}
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
public String getBelongDept() {
return belongDept;
}
public void setBelongDept(String belongDept) {
this.belongDept = belongDept;
}
public Date getClaimEndTime() {
return claimEndTime;
}
public void setClaimEndTime(Date claimEndTime) {
this.claimEndTime = claimEndTime;
}
public String getClaimType() {
return claimType;
}
public void setClaimType(String claimType) {
this.claimType = claimType;
}
public String getOrgClaimStatus() {
return orgClaimStatus;
}
public void setOrgClaimStatus(String orgClaimStatus) {
this.orgClaimStatus = orgClaimStatus;
}
public String getOrgDistributeStatus() {
return orgDistributeStatus;
}
public void setOrgDistributeStatus(String orgDistributeStatus) {
this.orgDistributeStatus = orgDistributeStatus;
}
public String getReceiveSitustion() {
return receiveSitustion;
}
public void setReceiveSitustion(String receiveSitustion) {
this.receiveSitustion = receiveSitustion;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getSecondPushStatus() {
return secondPushStatus;
}
public void setSecondPushStatus(String secondPushStatus) {
this.secondPushStatus = secondPushStatus;
}
public String getExecuter() {
return executer;
}
public void setExecuter(String executer) {
this.executer = executer;
}
public Date getNowTime() {
return nowTime;
}
public void setNowTime(Date nowTime) {
this.nowTime = nowTime;
}
public String getCheckTarget() {
return checkTarget;
}
public void setCheckTarget(String checkTarget) {
this.checkTarget = checkTarget;
}
public String getBelongOutlet() {
return belongOutlet;
}
public void setBelongOutlet(String belongOutlet) {
this.belongOutlet = belongOutlet;
}
}

View File

@@ -0,0 +1,368 @@
package com.ruoyi.ibs.customerselect.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import javax.validation.constraints.NotNull;
import java.util.Date;
public class ListSelectForUser {
/** 客户标签 */
@Excel(name = "客户类型:0-个人1-商户2-企业")
@NotNull(message = "客户标签不能为空")
private String custPattern;
/** 用户机构 */
private Long userDept;
/** 用户id */
private Long userId;
/** 清单来源 */
@Excel(name = "清单来源 0-总行1-支行")
private String createRole;
/** 清单ID */
@Excel(name = "清单ID")
private String groupId;
/** 清单名称 */
@Excel(name = "清单名称")
private String groupName;
/** 关联活动id */
@Excel(name = "关联活动id")
private String campaignId;
/** 关联活动名称 */
@Excel(name = "关联活动名称")
private String campaignName;
/** 客户号 */
@Excel(name = "客户号")
private String custId;
/** 客户名 */
@Excel(name = "客户名")
private String custName;
/** 经营者名称 */
@Excel(name = "经营者名称(用于商户或企业客户)")
private String lpName;
/** 客户手机号 */
@Excel(name = "客户手机号")
private String custPhone;
/** 客户证件号 */
@Excel(name = "客户证件号(用于个人客户)")
private String custIdc;
/** 社会统一编码 */
@Excel(name = "社会统一编码(用于商户或企业客户)")
private String socialCreditCode;
/** 客户内码 */
@Excel(name = "客户内码")
private String custIsn;
/** 开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date startTime;
/** 结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date endTime;
/** 紧急程度 */
@Excel(name = "紧急程度")
private String campaignDegree;
/** 分配机构id */
@Excel(name = "分配机构id")
private Long deptId;
/** 分配机构名称 */
@Excel(name = "分配机构名称")
private String belongDept;
/** 认领类型 */
@Excel(name = "认领类型 0-强制认领1-可选认领")
private String claimType;
/** 机构领取状态 */
@Excel(name = "机构领取状态 0-待认领1-已认领")
private String orgClaimStatus;
/** 机构分配状态 */
@Excel(name = "机构分配状态 0-待分配1-已分配")
private String orgDistributeStatus;
/** 客户经理分配状态 */
@Excel(name = "客户经理分配状态 0-待分配1-已分配")
private String custClaimStatus;
/** 所属一级网格(导出) */
@Excel(name = "所属一级网格")
private String topGridName;
/** 所属二级网格(导出) */
@Excel(name = "所属二级网格")
private String secGridName;
/** 所属客户经理(导出) */
@Excel(name = "所属客户经理")
private String userName;
/** 所属网点(导出) */
@Excel(name = "所属网点")
private String outlets;
@Excel(name = "考核目标")
private String checkTarget;
//是否是网点查询0-否1-是
private String isOutlet;
public String getIsOutlet() {
return isOutlet;
}
public void setIsOutlet(String isOutlet) {
this.isOutlet = isOutlet;
}
public String getCustPattern() {
return custPattern;
}
public void setCustPattern(String custPattern) {
this.custPattern = custPattern;
}
public Long getUserDept() {
return userDept;
}
public void setUserDept(Long userDept) {
this.userDept = userDept;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getCreateRole() {
return createRole;
}
public void setCreateRole(String createRole) {
this.createRole = createRole;
}
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getCampaignId() {
return campaignId;
}
public void setCampaignId(String campaignId) {
this.campaignId = campaignId;
}
public String getCampaignName() {
return campaignName;
}
public void setCampaignName(String campaignName) {
this.campaignName = campaignName;
}
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getLpName() {
return lpName;
}
public void setLpName(String lpName) {
this.lpName = lpName;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
public String getCustIdc() {
return custIdc;
}
public void setCustIdc(String custIdc) {
this.custIdc = custIdc;
}
public String getSocialCreditCode() {
return socialCreditCode;
}
public void setSocialCreditCode(String socialCreditCode) {
this.socialCreditCode = socialCreditCode;
}
public String getCustIsn() {
return custIsn;
}
public void setCustIsn(String custIsn) {
this.custIsn = custIsn;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public String getCampaignDegree() {
return campaignDegree;
}
public void setCampaignDegree(String campaignDegree) {
this.campaignDegree = campaignDegree;
}
public Long getDeptId() {
return deptId;
}
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
public String getBelongDept() {
return belongDept;
}
public void setBelongDept(String belongDept) {
this.belongDept = belongDept;
}
public String getClaimType() {
return claimType;
}
public void setClaimType(String claimType) {
this.claimType = claimType;
}
public String getOrgClaimStatus() {
return orgClaimStatus;
}
public void setOrgClaimStatus(String orgClaimStatus) {
this.orgClaimStatus = orgClaimStatus;
}
public String getOrgDistributeStatus() {
return orgDistributeStatus;
}
public void setOrgDistributeStatus(String orgDistributeStatus) {
this.orgDistributeStatus = orgDistributeStatus;
}
public String getCustClaimStatus() {
return custClaimStatus;
}
public void setCustClaimStatus(String custClaimStatus) {
this.custClaimStatus = custClaimStatus;
}
public String getTopGridName() {
return topGridName;
}
public void setTopGridName(String topGridName) {
this.topGridName = topGridName;
}
public String getSecGridName() {
return secGridName;
}
public void setSecGridName(String secGridName) {
this.secGridName = secGridName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getOutlets() {
return outlets;
}
public void setOutlets(String outlets) {
this.outlets = outlets;
}
public String getCheckTarget() {
return checkTarget;
}
public void setCheckTarget(String checkTarget) {
this.checkTarget = checkTarget;
}
}

View File

@@ -0,0 +1,257 @@
package com.ruoyi.ibs.customerselect.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import java.util.Date;
public class ListSelectForUserExportBusiness {
/** 清单来源 */
@Excel(name = "清单来源",readConverterExp = "0=总行,1=支行")
private String createRole;
/** 清单名称 */
@Excel(name = "清单名称")
private String groupName;
/** 关联活动名称 */
@Excel(name = "任务名称")
private String campaignName;
/** 客户号 */
@Excel(name = "客户号")
private String custId;
/** 客户名 */
@Excel(name = "企业名称")
private String custName;
/** 经营者名称 */
@Excel(name = "法人代表姓名")
private String lpName;
/** 客户手机号 */
@Excel(name = "法人代表手机号")
private String custPhone;
/** 社会统一编码 */
@Excel(name = "证件号")
private String socialCreditCode;
/** 客户内码 */
@Excel(name = "客户内码")
private String custIsn;
/** 开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date startTime;
/** 结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date endTime;
/** 紧急程度 */
@Excel(name = "紧急程度")
private String campaignDegree;
/** 分配机构名称 */
@Excel(name = "推送支行")
private String belongDept;
/** 认领类型 */
@Excel(name = "认领类型",readConverterExp = "0=强制认领,1=可选认领")
private String claimType;
/** 机构领取状态 */
@Excel(name = "机构认领状态",readConverterExp = "0=待认领,1=已认领,/=/")
private String orgClaimStatus;
/** 机构分配状态 */
@Excel(name = "机构分配状态",readConverterExp = "0=待分配,1=已分配,/=/")
private String orgDistributeStatus;
/** 客户经理分配状态 */
@Excel(name = "客户经理分配状态",readConverterExp = "0=待分配,1=已分配")
private String custClaimStatus;
/** 所属客户经理(导出) */
@Excel(name = "推送客户经理")
private String userName;
/** 所属网点(导出) */
@Excel(name = "推送网点")
private String outlets;
@Excel(name = "考核目标")
private String checkTarget;
public String getCreateRole() {
return createRole;
}
public void setCreateRole(String createRole) {
this.createRole = createRole;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getCampaignName() {
return campaignName;
}
public void setCampaignName(String campaignName) {
this.campaignName = campaignName;
}
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getLpName() {
return lpName;
}
public void setLpName(String lpName) {
this.lpName = lpName;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
public String getSocialCreditCode() {
return socialCreditCode;
}
public void setSocialCreditCode(String socialCreditCode) {
this.socialCreditCode = socialCreditCode;
}
public String getCustIsn() {
return custIsn;
}
public void setCustIsn(String custIsn) {
this.custIsn = custIsn;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public String getCampaignDegree() {
return campaignDegree;
}
public void setCampaignDegree(String campaignDegree) {
this.campaignDegree = campaignDegree;
}
public String getBelongDept() {
return belongDept;
}
public void setBelongDept(String belongDept) {
this.belongDept = belongDept;
}
public String getClaimType() {
return claimType;
}
public void setClaimType(String claimType) {
this.claimType = claimType;
}
public String getOrgClaimStatus() {
return orgClaimStatus;
}
public void setOrgClaimStatus(String orgClaimStatus) {
this.orgClaimStatus = orgClaimStatus;
}
public String getOrgDistributeStatus() {
return orgDistributeStatus;
}
public void setOrgDistributeStatus(String orgDistributeStatus) {
this.orgDistributeStatus = orgDistributeStatus;
}
public String getCustClaimStatus() {
return custClaimStatus;
}
public void setCustClaimStatus(String custClaimStatus) {
this.custClaimStatus = custClaimStatus;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getOutlets() {
return outlets;
}
public void setOutlets(String outlets) {
this.outlets = outlets;
}
public String getCheckTarget() {
return checkTarget;
}
public void setCheckTarget(String checkTarget) {
this.checkTarget = checkTarget;
}
}

View File

@@ -0,0 +1,257 @@
package com.ruoyi.ibs.customerselect.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import java.util.Date;
public class ListSelectForUserExportMerchant {
/** 清单来源 */
@Excel(name = "清单来源",readConverterExp = "0=总行,1=支行")
private String createRole;
/** 清单名称 */
@Excel(name = "清单名称")
private String groupName;
/** 关联活动名称 */
@Excel(name = "任务名称")
private String campaignName;
/** 客户号 */
@Excel(name = "客户号")
private String custId;
/** 客户名 */
@Excel(name = "商户名称")
private String custName;
/** 经营者名称 */
@Excel(name = "经营者姓名")
private String lpName;
/** 客户手机号 */
@Excel(name = "经营者手机号")
private String custPhone;
/** 社会统一编码 */
@Excel(name = "证件号")
private String socialCreditCode;
/** 客户内码 */
@Excel(name = "客户内码")
private String custIsn;
/** 开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date startTime;
/** 结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date endTime;
/** 紧急程度 */
@Excel(name = "紧急程度")
private String campaignDegree;
/** 分配机构名称 */
@Excel(name = "推送支行")
private String belongDept;
/** 认领类型 */
@Excel(name = "认领类型",readConverterExp = "0=强制认领,1=可选认领")
private String claimType;
/** 机构领取状态 */
@Excel(name = "机构认领状态",readConverterExp = "0=待认领,1=已认领,/=/")
private String orgClaimStatus;
/** 机构分配状态 */
@Excel(name = "机构分配状态",readConverterExp = "0=待分配,1=已分配,/=/")
private String orgDistributeStatus;
/** 客户经理分配状态 */
@Excel(name = "客户经理分配状态",readConverterExp = "0=待分配,1=已分配")
private String custClaimStatus;
/** 所属客户经理(导出) */
@Excel(name = "推送客户经理")
private String userName;
/** 所属网点(导出) */
@Excel(name = "推送网点")
private String outlets;
@Excel(name = "考核目标")
private String checkTarget;
public String getCreateRole() {
return createRole;
}
public void setCreateRole(String createRole) {
this.createRole = createRole;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getCampaignName() {
return campaignName;
}
public void setCampaignName(String campaignName) {
this.campaignName = campaignName;
}
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getLpName() {
return lpName;
}
public void setLpName(String lpName) {
this.lpName = lpName;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
public String getSocialCreditCode() {
return socialCreditCode;
}
public void setSocialCreditCode(String socialCreditCode) {
this.socialCreditCode = socialCreditCode;
}
public String getCustIsn() {
return custIsn;
}
public void setCustIsn(String custIsn) {
this.custIsn = custIsn;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public String getCampaignDegree() {
return campaignDegree;
}
public void setCampaignDegree(String campaignDegree) {
this.campaignDegree = campaignDegree;
}
public String getBelongDept() {
return belongDept;
}
public void setBelongDept(String belongDept) {
this.belongDept = belongDept;
}
public String getClaimType() {
return claimType;
}
public void setClaimType(String claimType) {
this.claimType = claimType;
}
public String getOrgClaimStatus() {
return orgClaimStatus;
}
public void setOrgClaimStatus(String orgClaimStatus) {
this.orgClaimStatus = orgClaimStatus;
}
public String getOrgDistributeStatus() {
return orgDistributeStatus;
}
public void setOrgDistributeStatus(String orgDistributeStatus) {
this.orgDistributeStatus = orgDistributeStatus;
}
public String getCustClaimStatus() {
return custClaimStatus;
}
public void setCustClaimStatus(String custClaimStatus) {
this.custClaimStatus = custClaimStatus;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getOutlets() {
return outlets;
}
public void setOutlets(String outlets) {
this.outlets = outlets;
}
public String getCheckTarget() {
return checkTarget;
}
public void setCheckTarget(String checkTarget) {
this.checkTarget = checkTarget;
}
}

Some files were not shown because too many files have changed in this diff Show More