1.0完成。

This commit is contained in:
Kane Wang 2025-03-13 11:28:41 +08:00
parent f77272ff29
commit 45fb965496
4 changed files with 156 additions and 88 deletions

View File

@ -13,59 +13,43 @@
*/
package com.cpic.xim.huixiabao;
import com.alibaba.fastjson.JSONObject;
import com.cpic.xim.huixiabao.data.config.HuixiabaoConfig;
import java.util.Vector;
import cn.hsa.zephyr.apisdk.DefaultZephyrClient;
import cn.hsa.zephyr.apisdk.internal.exception.ZephyrApiException;
import cn.hsa.zephyr.apisdk.internal.util.encrypt.EncryptionModeEnum;
import cn.hsa.zephyr.apisdk.internal.util.encrypt.SignTypeEnum;
import cn.hsa.zephyr.apisdk.request.DefaultZephyrRequest;
import cn.hsa.zephyr.apisdk.response.DefaultZephyrResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.cpic.xim.huixiabao.data.config.HuixiabaoConfig;
import com.cpic.xim.huixiabao.data.pojo.HmbXyxInfo;
import com.cpic.xim.huixiabao.nhs.CpicximToXMNHS;
public class AppMain
{
private static Logger logger = LoggerFactory.getLogger( AppMain.class );
public static void main( String[] args )
{
String url = HuixiabaoConfig.getUrl();
String appId = HuixiabaoConfig.getAppid();
String appSecret = HuixiabaoConfig.getAppSecret();
String funId = "xxx";
String encKey = HuixiabaoConfig.getEncKey();
String signKey = HuixiabaoConfig.getSignKey();
EncryptionModeEnum encType = EncryptionModeEnum.SM4;
SignTypeEnum signType = SignTypeEnum.SM3;
try
{
DefaultZephyrClient client = new DefaultZephyrClient( url,
funId,
appId,
appSecret,
signType,
signKey,
encType,
encKey );
DefaultZephyrRequest req = new DefaultZephyrRequest();
JSONObject jsonObject1 = new JSONObject();
DefaultZephyrResponse resp = null;
jsonObject1.put( "code", "XXXXXXXXXXXXXXXXXX" );
jsonObject1.put( "scene_code", "XXX" );
req.setData( jsonObject1 );
// resp = client.execute( req );
System.out.println( req.toString() );
}
catch ( Exception e )
{
System.out.println( "Fuck World!" );
e.printStackTrace();
}
doPostXyxInfo();
System.out.println( "Hello World!" );
}
private static void doPostXyxInfo()
{
while ( true )
{
Vector<HmbXyxInfo> xyxInfo = CpicximToXMNHS.getNeverTransHmbList();
// 发送
CpicximToXMNHS.postHmbList( xyxInfo );
try
{
Thread.sleep( HuixiabaoConfig.getSleepSeconds() * 1000 );
}
catch ( InterruptedException error )
{
logger.error( "sleep时出错" + error.getMessage() );
}
}
}
}

View File

@ -46,7 +46,13 @@ public class HuixiabaoConfig
return url;
}
public static int getSleepSeconds()
{
return SLEEP_SECONDS;
}
private static final int MAX_COUNT_PER_REQUEST = 500;
private static final int SLEEP_SECONDS = 10;
private static final String url = "https://172.18.1.150:9040";
private static final String appid = "hxb-tb";

View File

@ -1,7 +1,7 @@
/*
* @Author: Kane
*
* @Date: 2025-03-11 11:10:09
* @Date: 2025-03-12 09:01:59
*
* @LastEditors: Kane
*
@ -11,10 +11,12 @@
*
* Copyright (c) ${2023} by Kane, All Rights Reserved.
*/
package com.cpic.xim.huixiabao.nhs;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
@ -32,7 +34,9 @@ import cn.hsa.zephyr.apisdk.request.DefaultZephyrRequest;
import cn.hsa.zephyr.apisdk.response.DefaultZephyrResponse;
import com.cpic.xim.huixiabao.data.config.HuixiabaoConfig;
@SuppressWarnings("unused")
@SuppressWarnings(
"unused"
)
public class CpicximToXMNHS
{
private static Logger logger = LoggerFactory.getLogger( CpicximToXMNHS.class );
@ -91,14 +95,38 @@ public class CpicximToXMNHS
}
catch ( ClassNotFoundException error )
{
logger.error( "加载sql驱动错误" + error.getMessage() );
}
finally
{
if ( result != null )
{
try
{
result.close();
}
catch ( SQLException error )
{
}
}
if ( statement != null )
{
try
{
statement.close();
}
catch ( SQLException error )
{
}
}
if ( connection != null )
{
try
{
connection.close();
}
catch ( SQLException error )
@ -106,6 +134,7 @@ public class CpicximToXMNHS
}
}
}
return items;
}
@ -116,7 +145,7 @@ public class CpicximToXMNHS
HmbXyxInfo item = null;
Connection connection = null;
Statement statement = null;
PreparedStatement statement = null;
ResultSet result = null;
try
@ -130,12 +159,15 @@ public class CpicximToXMNHS
delete from HmbXyxInfo_Update where xyxNo = ?""";
connection = DriverManager.getConnection( url, userName, password );
statement = connection.prepareStatement(sql.trim());
statement = connection.prepareStatement( sql.trim() );
for ( HmbXyxInfo info : postedItems)
for ( HmbXyxInfo info : postedItems )
{
statement.setString( 1, info.getXyxNo() );
statement.execute();
}
connection.commit();
}
catch ( SQLException error )
{
@ -148,18 +180,42 @@ public class CpicximToXMNHS
}
error.printStackTrace();
logger.error( "清理已发送数据失败:" + error.getMessage() );
}
catch ( ClassNotFoundException error )
{
}
finally
{
if ( result != null )
{
try
{
result.close();
}
catch ( SQLException error )
{
}
}
if ( statement != null )
{
try
{
statement.close();
}
catch ( SQLException error )
{
logger.error( "加载sql驱动错误" + error.getMessage() );
}
}
if ( connection != null )
{
try
{
connection.close();
}
catch ( SQLException error )
@ -168,6 +224,7 @@ public class CpicximToXMNHS
}
}
}
}
public static void postHmbList( Vector<HmbXyxInfo> items )
{
@ -197,6 +254,7 @@ public class CpicximToXMNHS
JSONObject requestObject = new JSONObject();
JSONObject xyxInfo = null;
JSONArray xyxInfoList = new JSONArray();
Vector<HmbXyxInfo> postedInfo = new Vector<HmbXyxInfo>(); // 存放已经送出的数据
requestObject.put( "topic", "hmbXyxInfo" );
@ -214,6 +272,7 @@ public class CpicximToXMNHS
xyxInfo.put( "xyxNo", info.getXyxNo() );
xyxInfoList.add( xyxInfo );
postedInfo.add( info );
request_count++;
total_count++;
@ -234,6 +293,7 @@ public class CpicximToXMNHS
logger.info( "发送成功,返回消息:" + resp.getData() );
// 将已发送的数据从update表中清理掉
removePostedHmbXyxInfo( postedInfo );
}
catch ( ZephyrApiException error )
{
@ -241,11 +301,16 @@ public class CpicximToXMNHS
// 失败的数据就留在update表中待以后重新发送
logger.error( error.getMessage() );
}
finally
{
// 清理清单重置计数
// 如果发送失败在HmbXyxInfo_update表中保留发送失败的记录待下次发送
xyxInfoList.clear();
postedInfo.clear();
request_count = 0;
}
}
}
}
}

View File

@ -1,5 +1,5 @@
drop TRIGGER xyxinfo_update;
CREATE TRIGGER xyxinfo_update BEFORE INSERT ON huixiabao.HmbXyxInfo FOR EACH ROW
drop TRIGGER xyxinfo_insert;
CREATE TRIGGER xyxinfo_insert after 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 )
@ -8,4 +8,17 @@ BEGIN
new.xyxNo,
SYSDATE());
END
END;
drop trigger xyxinfo_update;
create trigger xyxinfo_update after update 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;