跑批调额系统说明文档

简介

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

流程主要包含四个部分:

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

相关推荐
霸道流氓气质7 分钟前
Java中信号量(Semaphore):从本地到分布式
java·开发语言·分布式
怪奇云呼军9 分钟前
G.711、Opus 和重采样会拖慢识别吗?闪电智能VoiceAgent 的音频入口怎么选
java·人工智能·python·算法·云计算·音视频
ZC跨境爬虫22 分钟前
LeetCode 27. 移除元素(双指针详解 + Java Python 多解法对比)
java·python·leetcode
canonical_entropy33 分钟前
关于《Mission Driver:Loop Engineering 的一种通用参考实现》的补充说明
后端·agent·ai编程
__zRainy__1 小时前
Node系列 · Node基础:Node.js 概述
后端·node.js
kisbad1 小时前
Day 036|OpenAI Agents SDK 快速开始:今天跑通第一个 Agent
java·前端·javascript
憧憬成为java架构高手的小白1 小时前
langchain4j框架学习
java
星火10241 小时前
【LangChain4j系列06】ChatMemory 对话记忆管理
人工智能·后端
netCode1 小时前
Git一文带你理解如何使用
后端
睡觉时不困4421 小时前
12.LangChain 1.0+ 第二篇:Prompt、结构化输出与 LCEL 组件组合.发布清单
后端