diff --git a/code/cpicxim-XMNHSA-repeater/src/main/java/com/cpic/xim/huixiabao/nhs/CpicximToXMNHS.java b/code/cpicxim-XMNHSA-repeater/src/main/java/com/cpic/xim/huixiabao/nhs/CpicximToXMNHS.java index 848150a..d47d81c 100644 --- a/code/cpicxim-XMNHSA-repeater/src/main/java/com/cpic/xim/huixiabao/nhs/CpicximToXMNHS.java +++ b/code/cpicxim-XMNHSA-repeater/src/main/java/com/cpic/xim/huixiabao/nhs/CpicximToXMNHS.java @@ -41,6 +41,8 @@ public class CpicximToXMNHS Vector items = new Vector(); + + 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; } } } diff --git a/code/sql/HmbXyxInfo.sql b/code/sql/HmbXyxInfo.sql new file mode 100644 index 0000000..d261241 --- /dev/null +++ b/code/sql/HmbXyxInfo.sql @@ -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; diff --git a/code/sql/触发器.txt b/code/sql/触发器.txt new file mode 100644 index 0000000..2fd7eb9 --- /dev/null +++ b/code/sql/触发器.txt @@ -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 \ No newline at end of file