跑批调额系统说明文档

简介

业务想对贷后的人员贷款金额进行适当的调整,来优化贷后流程并且精准投放贷款给特定的人群。

流程主要包含四个部分:

  • 数仓出数到 SFTP 系统
  • Spark 作业加载数据到 TIDB 表中
  • 联机主任务和子任务处理数据库数据(该文档的核心工作)
  • 贷后进行额度的审批调额(其他组的工作)

核心流程图:

跑批调额系统表设计

输入表:

sql 复制代码
DROP TABLE IF EXISTS `input_info_table_0`;
CREATE TABLE `input_info_table_0`  (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
  `lmt_id` decimal(50, 2) NOT NULL COMMENT '子额度',
  `comment` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '预留字段',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;


-- ----------------------------
-- Records of input_info_table_0(读者自己去建表1,2,3 等等的表)
-- ----------------------------
INSERT INTO `input_info_table_0` VALUES (1, 23.23, 'ssss');
INSERT INTO `input_info_table_0` VALUES (2, 24.09, 'test');
INSERT INTO `input_info_table_0` VALUES (3, 87.20, 'test');
INSERT INTO `input_info_table_0` VALUES (4, 23.21, 'test');
INSERT INTO `input_info_table_0` VALUES (5, 872.20, 'test');
INSERT INTO `input_info_table_0` VALUES (6, 654.20, 'test');
INSERT INTO `input_info_table_0` VALUES (7, 87.00, 'test');
INSERT INTO `input_info_table_0` VALUES (8, 98.00, 'test');
INSERT INTO `input_info_table_0` VALUES (9, 90.00, 'test');
INSERT INTO `input_info_table_0` VALUES (10, 654.98, 'test');
INSERT INTO `input_info_table_0` VALUES (11, 998.23, 'test');
INSERT INTO `input_info_table_0` VALUES (12, 100.00, 'test');
INSERT INTO `input_info_table_0` VALUES (13, 99.43, 'test');

主任务表:

sql 复制代码
DROP TABLE IF EXISTS `batch_maintask_info`;
CREATE TABLE `batch_maintask_info`  (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
  `main_taskId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主任务id',
  `dw_snsh_dt` datetime NULL DEFAULT NULL COMMENT '数据快照日期',
  `start_time` datetime NULL DEFAULT NULL COMMENT '开始时间',
  `end_time` datetime NULL DEFAULT NULL COMMENT '结束时间',
  `input_table_total_count` int NOT NULL COMMENT '输入表总数据量',
  `inc_count` int NOT NULL COMMENT '调增记录总数',
  `dec_count` int NOT NULL COMMENT '调减记录总数',
  `status` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主任务状态',
  `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- 自测数据
INSERT INTO `batch_maintask_info` VALUES (1, 'main_taskId', '2025-07-27 10:58:38', '2025-07-27 10:58:34', '2025-07-28 10:58:41', 10, 0, 0, 'RUNNING', '2025-07-27 10:59:35');

子任务表:

sql 复制代码
DROP TABLE IF EXISTS `batch_subtask_info`;
CREATE TABLE `batch_subtask_info`  (
  `sub_taskId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '子任务id',
  `main_taskId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主任务id',
  `input_table_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '输入表名',
  `input_table_total_count` int NOT NULL COMMENT '输入表记录总数',
  `input_table_start` int NOT NULL COMMENT '该子任务负责的区间记录的起始索引',
  `input_table_end` int NOT NULL COMMENT '该子任务负责的区间记录的末尾索引',
  `already_running_count` int NULL DEFAULT NULL COMMENT '子任务已运行记录条数',
  `status` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '状态流程',
  `last_query_key` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '查询的最后一条记录(用于续传)',
  `error_msg` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '错误信息',
  `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`sub_taskId`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

--自测数据
INSERT INTO `batch_subtask_info` VALUES ('sub_taskId_0', 'main_taskId', 'input_info_table_0', 13, 0, 13, 0, 'INIT', '', NULL, '2025-07-27 17:37:14');

批量调额明细结果表:

sql 复制代码
DROP TABLE IF EXISTS `batch_ter_result`;
CREATE TABLE `batch_ter_result`  (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
  `sub_taskId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '子任务id',
  `main_taskId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主任务id',
  `dw_snsh_dt` datetime NULL DEFAULT NULL COMMENT '数据快照日期',
  `clt_num` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '客户编号',
  `root_lmt_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '根额度编号',
  `lmt_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '子额度编号',
  `lmt_chk_rst` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '额度结论',
  `old_lmt` decimal(10, 2) NOT NULL COMMENT '旧额度',
  `new_lmt` decimal(10, 2) NOT NULL COMMENT '新额度',
  `rate_chk_rst` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '利率结论',
  `old_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '旧利率\r\n',
  `new_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '新利率',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

发起主任务功能

请求报文:

http 复制代码
post:http://localhost:8088/batchmaintask/putDatas
json 复制代码
{
    "taskId": "main_taskId_0",
    "inputCount": 100,
    "status": "INIT"
}

响应报文:

json 复制代码
{
    "code": 200,
    "data": {
       "insertNum": 1
    },
    "message": ""
}

发起子任务功能

这个功能是由主任务调起的,但是方便测试,也可以单独调起。

请求报文:

http 复制代码
post:http://localhost:8088/batchsubtask/putDatas

响应报文:

json 复制代码
{
    "subTaskId":"sub_taskId_0"
}

代码地址

gitee.com/spicy-hot-w...

相关推荐
Leo July7 小时前
【Java】Spring Security 6.x 全解析:从基础认证到企业级权限架构
java·spring·架构
星火开发设计7 小时前
C++ 数组:一维数组的定义、遍历与常见操作
java·开发语言·数据结构·c++·学习·数组·知识
码道功成7 小时前
Pycham及IntelliJ Idea常用插件
java·ide·intellij-idea
消失的旧时光-19437 小时前
第四篇(实战): 订单表索引设计实战:从慢 SQL 到毫秒级
java·数据库·sql
それども8 小时前
@ModelAttribute vs @RequestBody
java
雨中飘荡的记忆8 小时前
深度详解Spring Context
java·spring
Tao____8 小时前
JAVA开源物联网平台
java·物联网·mqtt·开源·ruoyi
yqd6669 小时前
SpringSecurity的使用
java·spring
仙俊红9 小时前
Java Map 家族核心解析
java·开发语言
一嘴一个橘子9 小时前
springMvc 接收参数、cookie、header
java