跑批调额系统说明文档

简介

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

流程主要包含四个部分:

  • 数仓出数到 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...

相关推荐
电摇小人26 分钟前
我的“C++之旅”(博客之星主题作文)
java·开发语言
资生算法程序员_畅想家_剑魔26 分钟前
Java常见技术分享-23-多线程安全-总结
java·开发语言
萧曵 丶43 分钟前
ArrayList 和 HashMap 自动扩容机制详解
java·开发语言·面试
这是程序猿1 小时前
基于java的ssm框架学生作业管理系统
java·开发语言·spring boot·spring·学生作业管理系统
千百元1 小时前
限制网段访问服务器端口63790
java·网络·mybatis
宋情写1 小时前
JavaAI03-数据来源
java
钦拆大仁1 小时前
JDK17新特性
java
小程故事多_801 小时前
Spring AI 赋能 Java,Spring Boot 快速落地 LLM 的企业级解决方案
java·人工智能·spring·架构·aigc
努力的小雨1 小时前
从“Agent 元年”到 AI IDE 元年——2025 我与 Vibe Coding 的那些事儿
后端·程序员
Caarlossss2 小时前
mybatis
java·数据库·tomcat·maven·mybatis·mybatis-spring