From 70aeac289c132085e91d59dc82bc1facd41889fa Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期一, 24 二月 2025 15:33:53 +0800
Subject: [PATCH] 有关表阀一体机(王江海制定)通信协议: 1、根据新版本协议,解析部分更新; 2、根据测试一体阀协议数据处理需求与逻辑,进行表阀一体机数据处理。
---
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java | 162 ++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 115 insertions(+), 47 deletions(-)
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java
index e66f22b..e283c52 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/config/DingTalk.java
@@ -7,7 +7,7 @@
import com.taobao.api.ApiException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
-import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import javax.crypto.Mac;
@@ -17,6 +17,8 @@
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
/**
* @author ZhuBaoMin
@@ -27,6 +29,18 @@
@Slf4j
@Component
public class DingTalk {
+ private static final String dingTalkConfigPriFix = "dingtalk";
+ private static final Map<String, Option> optionsMap = new HashMap();
+
+ class Option{
+ public Boolean enable ;
+ public String robotUrl ;
+ public String robotAccessToken ;
+ public String secret ;
+ public Boolean atAll ;
+ public String mobile ;
+ }
+ /*
@Value("${dingtalk.robot.url}")
private String URL;
@@ -41,54 +55,108 @@
@Value("${dingtalk.mobile}")
private String MOBILE;
+ */
- public void sendMessage(String message) {
- try {
- Long timestamp = System.currentTimeMillis();
- String secret = SECRET;
- String stringToSign = timestamp + "\n" + secret;
- Mac mac = Mac.getInstance("HmacSHA256");
- mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
- byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
- String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
-
- //sign瀛楁鍜宼imestamp瀛楁蹇呴』鎷兼帴鍒拌姹俇RL涓婏紝鍚﹀垯浼氬嚭鐜� 310000 鐨勯敊璇俊鎭�
- DingTalkClient client = new DefaultDingTalkClient( URL + "?sign=" + sign + "×tamp=" + timestamp);
- OapiRobotSendRequest req = new OapiRobotSendRequest();
- /**
- * 鍙戦�佹枃鏈秷鎭�
- */
- //瀹氫箟鏂囨湰鍐呭
- OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
- text.setContent(message);
- //瀹氫箟 @瀵硅薄
- OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
- if(AT_ALL) {
- at.setIsAtAll(true);
- }else {
- at.setAtMobiles(Collections.singletonList(MOBILE));
+ private Option getOptions(String orgTag, Environment env){
+ Option vo = null ;
+ try{
+ vo = optionsMap.get(orgTag);
+ if(vo == null){
+ vo = new Option();
+ String enableStr = env.getProperty(dingTalkConfigPriFix + "." + orgTag + ".enable");
+ if(enableStr != null && !enableStr.trim().equals("")){
+ vo.enable = Boolean.valueOf(enableStr);
+ }else{
+ vo.enable = true ;
+ }
+ vo.robotUrl = env.getProperty(dingTalkConfigPriFix + "." + orgTag + ".robot.url");
+ vo.robotAccessToken = env.getProperty(dingTalkConfigPriFix + "." + orgTag + ".robot.access-token");
+ vo.secret = env.getProperty(dingTalkConfigPriFix + "." + orgTag + ".robot.secret");
+ String atAllStr = env.getProperty(dingTalkConfigPriFix + "." + orgTag + ".at-all");
+ if(atAllStr != null && !atAllStr.trim().equals("")){
+ vo.atAll = Boolean.valueOf(atAllStr);
+ }else{
+ vo.atAll = true ;
+ }
+ vo.mobile = env.getProperty(dingTalkConfigPriFix + "." + orgTag + ".mobile");
+ optionsMap.put(orgTag, vo) ;
}
- //璁剧疆娑堟伅绫诲瀷
- req.setMsgtype("text");
- req.setText(text);
- req.setAt(at);
- OapiRobotSendResponse rsp = client.execute(req, CUSTOM_ROBOT_TOKEN);
- log.info(rsp.getBody());
- } catch (ApiException e) {
- log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e);
- //e.printStackTrace();
- } catch (UnsupportedEncodingException e) {
- log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e);
- //e.printStackTrace();
- } catch (NoSuchAlgorithmException e) {
- log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e);
- //e.printStackTrace();
- } catch (InvalidKeyException e) {
- log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e);
- //e.printStackTrace();
- } catch (Exception e){
- log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e);
- //e.printStackTrace();
+ }catch (Exception e){
+ vo = null ;
+ }
+ return vo ;
+ }
+
+ /**
+ * 鍚戦拤閽夌兢鍙戦�佹秷鎭�
+ * @param orgTag
+ * @param env
+ * @param message
+ */
+ public void sendMessage(String orgTag, Environment env, String message) {
+ if(orgTag == null || orgTag.trim().equals("")){
+ log.error("閽夐拤鍙戦�佹秷鎭紓甯革紝鏈烘瀯鏍囩涓虹┖");
+ return;
+ }
+ if(env == null){
+ log.error("閽夐拤鍙戦�佹秷鎭紓甯革紝Spring鐜涓虹┖");
+ return;
+ }
+ if(message == null || message.trim().equals("")){
+ log.error("閽夐拤鍙戦�佹秷鎭紓甯革紝娑堟伅涓虹┖");
+ return;
+ }
+ Option vo = this.getOptions(orgTag.trim(), env) ;
+ if(vo == null){
+ log.error("閽夐拤鍙戦�佹秷鎭紓甯革紝閽夐拤閰嶇疆閿欒");
+ return;
+ }
+ if(vo.enable){
+ try {
+ Long timestamp = System.currentTimeMillis() ;
+ String stringToSign = timestamp + "\n" + vo.secret;
+ Mac mac = Mac.getInstance("HmacSHA256");
+ mac.init(new SecretKeySpec(vo.secret.getBytes("UTF-8"), "HmacSHA256"));
+ byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
+ String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
+
+ //瀹氫箟鏂囨湰鍐呭
+ OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
+ text.setContent(message);
+ //瀹氫箟 @瀵硅薄
+ OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
+ if(vo.atAll) {
+ at.setIsAtAll(true);
+ }else {
+ at.setAtMobiles(Collections.singletonList(vo.mobile));
+ }
+
+ OapiRobotSendRequest req = new OapiRobotSendRequest();
+ //璁剧疆娑堟伅绫诲瀷
+ req.setMsgtype("text");
+ req.setText(text);
+ req.setAt(at);
+
+ //sign瀛楁鍜宼imestamp瀛楁蹇呴』鎷兼帴鍒拌姹俇RL涓婏紝鍚﹀垯浼氬嚭鐜� 310000 鐨勯敊璇俊鎭�
+ DingTalkClient client = new DefaultDingTalkClient( vo.robotUrl + "?sign=" + sign + "×tamp=" + timestamp);
+ OapiRobotSendResponse rsp = client.execute(req, vo.robotAccessToken);
+ log.info(rsp.getBody());
+ } catch (ApiException e) {
+ log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e);
+ //e.printStackTrace();
+ } catch (UnsupportedEncodingException e) {
+ log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e);
+ //e.printStackTrace();
+ } catch (NoSuchAlgorithmException e) {
+ log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e);
+ //e.printStackTrace();
+ } catch (InvalidKeyException e) {
+ log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e);
+ //e.printStackTrace();
+ } catch (Exception e){
+ log.error("閽夐拤鍙戦�佹秷鎭紓甯�", e);
+ //e.printStackTrace();
+ }
}
}
}
--
Gitblit v1.8.0