diff --git a/code/java/DisasterWarning/pom.xml b/code/java/DisasterWarning/pom.xml
index bc67e03..f84e896 100644
--- a/code/java/DisasterWarning/pom.xml
+++ b/code/java/DisasterWarning/pom.xml
@@ -8,9 +8,7 @@
com.oracle
ojdbc8
- 1.0
- system
- ${project.basedir}/lib/ojdbc8.jar
+ 19.3.0.0.0
org.apache.httpcomponents
@@ -23,37 +21,6 @@
4.13.2
test
-
com.fasterxml.jackson.core
jackson-core
diff --git a/code/java/DisasterWarning/src/main/java/AppMain.java b/code/java/DisasterWarning/src/main/java/AppMain.java
index 9373c01..619ca2a 100644
--- a/code/java/DisasterWarning/src/main/java/AppMain.java
+++ b/code/java/DisasterWarning/src/main/java/AppMain.java
@@ -2,7 +2,7 @@
* @Author: Kane
* @Date: 2022-04-22 10:53:49
* @LastEditors: Kane
- * @LastEditTime: 2022-05-10 16:28:07
+ * @LastEditTime: 2022-05-10 19:03:56
* @FilePath: \DisasterWarning\src\main\java\AppMain.java
* @Description: 和风天气预警推送厦门太保公众号主程序!
*
@@ -11,6 +11,7 @@
import com.cpic.xim.config.AppConfigManager;
import com.cpic.xim.config.City;
import com.cpic.xim.notify.disaster.QWeatherDisasterWarning;
+import com.cpic.xim.notify.disaster.QWeatherDisasterWarningItem;
import com.cpic.xim.notify.disaster.WeatherDisasterWarningGrabber;
import com.cpic.xim.wechat.officalAccount.sendMessage;
import com.cpic.xim.config.WeatherDisasterNotifyConfig;
@@ -79,23 +80,40 @@ public class AppMain
logger.log( Level.INFO, "查询{0}天气预警,结果:{1}。", new Object[]
{ city.getCityName(), json} );
- // 判断是否有警报
- if ( warning.getWarning().isEmpty() == true)
+ Vector warningItems = warning.getWarning();
+
+ // 判断是否有警报,没有警报就结束当前城市的处理
+ if ( warningItems.isEmpty() == true)
{
logger.log( Level.INFO, "查询{0}天气预警,无警报!。", new Object[]
{ city.getCityName()} );
continue;
}
- logger.log( Level.INFO, "查询{0}天气预警,发送日志。", new Object[]
- { city.getCityName()} );
+ // 有警报,就遍历警报数组
+ for ( QWeatherDisasterWarningItem item : warningItems )
+ {
+ // 先检查是否已经发送过
+ if ( sendMessage.checkWarningHasSended( item.getId() ) == false)
+ {
+ logger.log( Level.INFO, "查询{0}天气预警,ID:{1},已有发送记录,跳过。", new Object[]
+ { city.getCityName(), item.getId()} );
- sendMessage.sendWeatherDisasterWarning( config.getWechatOfficalAccountURL(),
- warning );
+ continue;
+ }
- logger.log( Level.INFO, "{0}天气预警,日志发送成功。", new Object[]
- { city.getCityName()} );
+ // 没有发送过
+ logger.log( Level.INFO, "查询{0}天气预警,发送日志。", new Object[]
+ { city.getCityName()} );
+ sendMessage.sendWeatherDisasterWarning( config.getWechatOfficalAccountURL(),
+ item );
+
+ logger.log( Level.INFO, "{0}天气预警,日志发送成功。", new Object[]
+ { city.getCityName()} );
+ }
+
+ // 将发送的警报,保存起来
sendMessage.saveWeatherDisasterWarning( city.getCityName(), warning );
}
catch ( IOException error )
diff --git a/code/java/DisasterWarning/src/main/java/com/cpic/xim/wechat/officalAccount/sendMessage.java b/code/java/DisasterWarning/src/main/java/com/cpic/xim/wechat/officalAccount/sendMessage.java
index 198e768..e98c82b 100644
--- a/code/java/DisasterWarning/src/main/java/com/cpic/xim/wechat/officalAccount/sendMessage.java
+++ b/code/java/DisasterWarning/src/main/java/com/cpic/xim/wechat/officalAccount/sendMessage.java
@@ -2,7 +2,7 @@
* @Author: Kane
* @Date: 2022-04-22 10:53:49
* @LastEditors: Kane
- * @LastEditTime: 2022-05-06 11:14:32
+ * @LastEditTime: 2022-05-10 19:02:32
* @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\wechat\officalAccount\sendMessage.java
* @Description: 用来推送公众号消息的程序库。
*
@@ -17,7 +17,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.HashMap;
-import java.util.Vector;
import java.sql.Connection;
import java.sql.DriverManager;
@@ -40,12 +39,12 @@ public class sendMessage
* 推送天气灾害预警!接口文档参考 彭奕洁 编写《消息发送接口调用文档》
* 使用 post 方式,请求体内容以最基础的 post 格式。
* @param officalAccountURL 产险厦门分公司公众号接口网址
- * @param warning 灾害预警对象
+ * @param warningItem 灾害预警对象
*/
public static void sendWeatherDisasterWarning( String officalAccountURL,
- QWeatherDisasterWarning warning )
+ QWeatherDisasterWarningItem warningItem )
{
- Vector warningItems = warning.getWarning();
+ // Vector warningItems = warningItem.getWarning();
StringBuilder requestBody = null;
// 设置请求头参数
@@ -56,30 +55,29 @@ public class sendMessage
headers.put( "Content-Type", "application/x-www-form-urlencoded;charset=UTF-8" );
// 遍历消息,将消息推送出去。
- for ( QWeatherDisasterWarningItem item : warningItems )
+
+ // 拼接消息内容
+ String title = warningItem.getTitle();
+ String text = warningItem.getText();
+ String color = warningLevel.keySet().contains( warningItem.getLevel() )
+ ? warningLevel.get( warningItem.getLevel() )
+ : "#000000";
+ requestBody = new StringBuilder();
+
+ requestBody.append( "tplid=57&groupid=1&first=尊敬的#realname#,您好!&" );
+ requestBody.append( "keyword1=" ).append( title ).append( "&" );
+ requestBody.append( "keyword1color=" ).append( color ).append( "&" );
+ requestBody.append( "keyword2=" ).append( text );
+
+ try
{
- // 拼接消息内容
- String title = item.getTitle();
- String text = item.getText();
- String color = warningLevel.keySet().contains( item.getLevel() )
- ? warningLevel.get( item.getLevel() )
- : "#000000";
- requestBody = new StringBuilder();
-
- requestBody.append( "tplid=57&groupid=1&first=尊敬的#realname#,您好!&" );
- requestBody.append( "keyword1=" ).append( title ).append( "&" );
- requestBody.append( "keyword1color=" ).append( color ).append( "&" );
- requestBody.append( "keyword2=" ).append( text );
-
- try
- {
- HttpUtils.postHttpRequest( officalAccountURL, headers, requestBody.toString() );
- }
- catch ( MalformedURLException error )
- {
- error.printStackTrace();
- }
+ HttpUtils.postHttpRequest( officalAccountURL, headers, requestBody.toString() );
}
+ catch ( MalformedURLException error )
+ {
+ error.printStackTrace();
+ }
+
}
/**
@@ -197,6 +195,8 @@ public class sendMessage
conn = DriverManager.getConnection( jdbcURL, userName, password );
stmt = conn.prepareStatement( sql );
+ conn.setAutoCommit( false );
+
for ( QWeatherDisasterWarningItem warning : warnings.getWarning() )
{
java.sql.Timestamp pubTime =