完成发送代码,开始编写查询和清理已发送数据的代码。

This commit is contained in:
Kane Wang 2025-03-12 11:13:37 +08:00
parent 95047193eb
commit f64cac1c21
3 changed files with 89 additions and 6 deletions

View File

@ -41,6 +41,8 @@ public class CpicximToXMNHS
Vector<HmbXyxInfo> items = new Vector<HmbXyxInfo>();
return items;
}
@ -70,20 +72,56 @@ public class CpicximToXMNHS
// 数据
JSONObject requestObject = new JSONObject();
JSONObject xyxInfo = new JSONObject();
JSONObject xyxInfo = null;
JSONArray xyxInfoList = new JSONArray();
requestObject.put( "topic", "hmbXyxInfo" );
requestObject.put( "hmbList", xyxInfoList );
int count = 0; // 计数每个请求不能超过500条
int request_count = 0; // 计数每个请求不能超过500条
int total_count = 0;
for ( HmbXyxInfo info : items )
{
if ( count >= HuixiabaoConfig.getMAX_COUNT_PER_REQUEST() - 1 )
{
// 达到上限将当前数据送出
xyxInfo = new JSONObject();
xyxInfo.put( "psnName", info.getPsnName() );
xyxInfo.put( "cerno", info.getCertNo() );
xyxInfo.put( "serviceId", info.getServiceId() );
xyxInfo.put( "status", info.getStatus() );
xyxInfo.put( "xyxNo", info.getXyxNo() );
xyxInfoList.add( xyxInfo );
request_count++;
total_count++;
logger.info( "准备数据:" + xyxInfo.toJSONString() );
if ( request_count >= HuixiabaoConfig.getMAX_COUNT_PER_REQUEST() - 1 || total_count == items.size() )
{
// 达到上限或者记录已经全部处理将当前生成的数据送出
requestObject.remove( "hmbList" );
requestObject.put( "hmbList", xyxInfoList );
try
{
req.setData( requestObject );
resp = client.execute( req );
logger.info( "发送成功,返回消息:" + resp.getData() );
// 将已发送的数据从update表中清理掉
}
catch ( ZephyrApiException error )
{
// 发送不成功记录日志
// 失败的数据就留在update表中待以后重新发送
logger.error( error.getMessage() );
}
// 清理清单重置计数
xyxInfoList.clear();
request_count = 0;
}
}
}

34
code/sql/HmbXyxInfo.sql Normal file
View File

@ -0,0 +1,34 @@
/*
Navicat Premium Data Transfer
Source Server : mysql - 10.39.0.85
Source Server Type : MySQL
Source Server Version : 90200
Source Host : 10.39.0.85:3306
Source Schema : huixiabao
Target Server Type : MySQL
Target Server Version : 90200
File Encoding : 65001
Date: 12/03/2025 09:14:18
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for HmbXyxInfo
-- ----------------------------
DROP TABLE IF EXISTS `HmbXyxInfo`;
CREATE TABLE `HmbXyxInfo` (
`hmbListIndex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'hmbList的索引由timestamp和hmbList的hash值组成。',
`psnName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '姓名',
`certno` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '证件号',
`serviceId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '服务id',
`status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '订单状态',
`xyxNo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主键id',
PRIMARY KEY (`xyxNo`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'HmbXyxInfo的子表。\r\n保存hmbList集合的元素。' ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;

11
code/sql/触发器.txt Normal file
View File

@ -0,0 +1,11 @@
drop TRIGGER xyxinfo_update;
CREATE TRIGGER xyxinfo_update BEFORE INSERT ON huixiabao.HmbXyxInfo FOR EACH ROW
BEGIN
delete from huixiabao.HmbXyxInfo_Update u where u.xyxNo = NEW.xyxNo;
INSERT INTO huixiabao.HmbXyxInfo_Update ( xyxNo, update_time )
VALUES
(
new.xyxNo,
SYSDATE());
END