message = new LinkedHashMap<>(8);
+ String newPrepared = prepared.replace(" ", "").replace("\n", " ");
+ message.put("prepared", newPrepared);
+ String newSql = sql.replace(" ", "").replace("\n", " ");
+ message.put("sql", newSql);
+ return JSONObject.toJSONString(message, true);
+ }
+
+}
diff --git a/ruoyi-admin/src/main/java/com/neuhis/his/controller/BizApiController.java b/ruoyi-admin/src/main/java/com/neuhis/his/controller/BizApiController.java
index 387242f91..e2ac8fe73 100644
--- a/ruoyi-admin/src/main/java/com/neuhis/his/controller/BizApiController.java
+++ b/ruoyi-admin/src/main/java/com/neuhis/his/controller/BizApiController.java
@@ -1,6 +1,8 @@
package com.neuhis.his.controller;
import java.util.List;
+
+import com.p6spy.engine.spy.P6ModuleManager;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
diff --git a/ruoyi-admin/src/main/java/com/neuhis/his/service/IBjCaService.java b/ruoyi-admin/src/main/java/com/neuhis/his/service/IBjCaService.java
index 970bc2183..c432a371c 100644
--- a/ruoyi-admin/src/main/java/com/neuhis/his/service/IBjCaService.java
+++ b/ruoyi-admin/src/main/java/com/neuhis/his/service/IBjCaService.java
@@ -3,7 +3,7 @@ package com.neuhis.his.service;
/**
*
* 北京CA自动签名,用于补历史签名数据
- * 接口1 3.4.3.1 开启自动签(startAutoSign) 需要用户扫码,扫码后的字段放到哪个字段里面?
+ * 接口1 3.4.3.1 开启自动签(startAutoSign) 开启自动签,会返回一二维码,需要用户扫描确认,扫码一会管一段时间,使用app: 应用市场[协同签名]
* 接口2 3.4.3.3 自动签名(autoSign)的反参这二个数据存库signResult签名结果,signCert签名证书,
* 接口3 3.4.7.1 产生时间戳(createAndGetTssInfo) 第三个接口的时间戳结果:入参:oriData,这个是啥字段? 数据原文和自动签名接口里面传的数据原文保持一致就行
*
diff --git a/ruoyi-admin/src/main/java/com/neuhis/his/service/impl/BjCaServiceImpl.java b/ruoyi-admin/src/main/java/com/neuhis/his/service/impl/BjCaServiceImpl.java
index 8536a0185..59486f7f2 100644
--- a/ruoyi-admin/src/main/java/com/neuhis/his/service/impl/BjCaServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/neuhis/his/service/impl/BjCaServiceImpl.java
@@ -28,17 +28,17 @@ import java.util.Map;
public class BjCaServiceImpl implements IBjCaService {
@Autowired
private BjCaConfig bjCaConfig;
- /**
- * 北京CA协同平台的USER_ID
- */
- private final String USER_ID = "XXX";
+ /**
+ * 通过 https://demo-system.isignet.cn/signHelper/sign.html 校验签名值是否正确
+ * @return
+ */
@Override
public String startAutoSign() {
Map params = getBjCaCommonParams();
- params.put("userId", USER_ID);//用户 Id
+ params.put("userId", bjCaConfig.getUserId());//用户 Id,医生的CA系统协同用户iD
params.put("timeRegion", " 86400");//自动签名的过期时间,单位为秒(默认最长 86400秒,即 24 小时,也可以通过管理端系统重新设置)
- params.put("requireQrCode", "N");//是否返回二维码(只能传入 Y、N 两种类型,如果 传 Y,会将二维码图片 base64 编码后返回)
+ params.put("requireQrCode", "Y");//是否返回二维码(只能传入 Y、N 两种类型,如果 传 Y,会将二维码图片 base64 编码后返回)
BjCaResult result = postBjCa(bjCaConfig.getServerStartAuthSign(), params);
if (result.isSuccess()) {
return result.getData().getSignDataId();
@@ -49,7 +49,7 @@ public class BjCaServiceImpl implements IBjCaService {
@Override
public void autoSign(String signDataId, String oriDataBase64) {
Map params = getBjCaCommonParams();
- params.put("userId", USER_ID);//用户 Id
+ params.put("userId", bjCaConfig.getUserId());//用户 Id,用户 Id,医生的CA系统协同用户iD
params.put("dataType", "DATA");//原文类型(DATA:原文,HASH:hash 数据WEB_SEAL:网页签章)
params.put("algo", "SM3withSM2");//签名算法(SM3withSM2)
params.put("data", oriDataBase64);//待签数据(必须是 base64编码)
@@ -73,7 +73,7 @@ public class BjCaServiceImpl implements IBjCaService {
BjCaResult bjCaResult = new BjCaResult<>();
try {
requestJson = BjcaUtil.RequestUtils.generateRequestJson(params, bjCaConfig.getAppSecret());
- result = BjcaUtil.HTTPUtils.post(bjCaConfig.getServerStartAuthSign(), requestJson);
+ result = BjcaUtil.HTTPUtils.post(bjCaConfig.getServerBase() + bjCaConfig.getServerStartAuthSign(), requestJson);
bjCaResult = JSON.parseObject(result, BjCaResult.class);
} catch (Exception e) {
result = "请求CA报错:" + e.getMessage();
diff --git a/ruoyi-admin/src/main/java/com/neuhis/utils/BjcaUtil.java b/ruoyi-admin/src/main/java/com/neuhis/utils/BjcaUtil.java
index 0ceedf5df..b1ac5b1de 100644
--- a/ruoyi-admin/src/main/java/com/neuhis/utils/BjcaUtil.java
+++ b/ruoyi-admin/src/main/java/com/neuhis/utils/BjcaUtil.java
@@ -3,6 +3,7 @@ package com.neuhis.utils;
import cn.hutool.core.codec.Base64;
import com.alibaba.fastjson.JSON;
import com.google.gson.GsonBuilder;
+import lombok.extern.slf4j.Slf4j;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
@@ -16,10 +17,11 @@ import java.util.*;
/**
* 北京CA签名、加密相关工具类
- *
+ * 北京CA测试,在线签名工具:https://demo-system.isignet.cn/signHelper/sign.html
* @author dazer
* @date 2025/3/3 19:07
**/
+@Slf4j
public class BjcaUtil {
public static class RequestUtils {
@@ -29,7 +31,7 @@ public class BjcaUtil {
public static String generateRequestJson(Map request, String key) throws Exception {
String jsonData = JSON.toJSONString(request);
String data = generateSignString(request);
- System.out.println("hashData>>>>>"+data);
+ System.out.println("hashData>>>>>:"+data);
String signature;
signature = getHMAC(data.getBytes(), key.getBytes(), "HmacSHA256");//签名方式名称不能修改
diff --git a/ruoyi-admin/src/main/resources/application.properties b/ruoyi-admin/src/main/resources/application.properties
index 2b0fea534..a801d1d2c 100644
--- a/ruoyi-admin/src/main/resources/application.properties
+++ b/ruoyi-admin/src/main/resources/application.properties
@@ -1,29 +1,2 @@
-# \u5317\u4EACCA
-# CA\u670D\u52A1\u5730\u5740
-nhit.dc.ca.bjxt01.server-query-user-info=http://192.168.216.112:10201/coss/service/v1/queryUserInfo
-# \u5F00\u542F\u81EA\u52A8\u7B7E\u540D
-nhit.dc.ca.bjxt01.server-start-auth-sign=http://192.168.216.112:10201/coss/service/v1/startAutoSign
-# \u83B7\u53D6\u7B7E\u540D\u7ED3\u679C
-nhit.dc.ca.bjxt01.server-get-sign-result=http://192.168.216.112:10201/coss/service/v1/getSignResult
-# \u81EA\u52A8\u7B7E\u540D
-nhit.dc.ca.bjxt01.server-auth-sign=http://192.168.216.112:10201/coss/service/v1/autoSign
-# \u9A8C\u8BC1\u6570\u636E\u7B7E\u540D
-nhit.dc.ca.bjxt01.server-verify-sign=http://192.168.216.112:10201/coss/service/v1/verifySign
-# \u83B7\u53D6\u5370\u7AE0\u56FE\u7247
-nhit.dc.ca.bjxt01.server-query-image=http://192.168.216.112:10201/coss/service/v1/queryImage
-# \u65F6\u95F4\u6233\u7B7E\u540D
-nhit.dc.ca.bjxt01.server-tss-info=http://192.168.216.112:10201/coss/service/v1/createAndGetTssInfo
-# \u9A8C\u8BC1\u65F6\u95F4\u6233\u7B7E\u540D
-nhit.dc.ca.bjxt01.server-verify-tss=http://192.168.216.112:10201/coss/service/v1/verifyTS
-### \u54B8\u9633\u624B\u9EBB
-# \u7B2C\u4E09\u65B9\u8D26\u53F7\u6807\u8BC6
-nhit.dc.ca.bjxt01.app-id=APP_3FAE577489B649F78F70C861AA991AEE
-# \u7B2C\u4E09\u65B9\u8D26\u53F7\u79D8\u94A5
-nhit.dc.ca.bjxt01.app-secret=MDAwNjY1MTZmMjczNDk4MDk2MzJhMTQ4OWYyZTdlNGE=
-
-### \u54B8\u9633\u75C5\u5386
-#nhit.dc.ca.bjxt01.app-id=APP_95BF9D123FCF498A83C344ED42473675
-#nhit.dc.ca.bjxt01.app-secret=MzI1ODNlYTI2ZjkwNDkzZjg3MDhjOTMwMDBlZDYwOTQ=
-
#\u5FC5\u73B0\u589E\u52A0\u8BE5\u6761\u76EE\uFF0C\u5426\u5219 springboot 2.7 \u96C6\u6210\uFF0Cswagger\u52A0\u8F7D\u4E0D\u5230\uFF0C\u63D0\u793A\uFF1ANo operations defined in spec!
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index f824db1b9..5d72bb482 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -59,7 +59,7 @@ spring:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
profiles:
- active: xyzxhis #druid、xyzxhis
+ active: xyzxhis,bjca #druid、xyzxhis
# 文件上传
servlet:
multipart:
@@ -141,3 +141,9 @@ xss:
swagger:
# 是否开启swagger
enabled: true
+
+
+# p6spy sql打印
+decorator:
+ datasource:
+ enabled: true # 是否启用
diff --git a/ruoyi-admin/src/main/resources/bjca.properties b/ruoyi-admin/src/main/resources/bjca.properties
new file mode 100644
index 000000000..d26fcddf1
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/bjca.properties
@@ -0,0 +1,41 @@
+# \u5317\u4EACCA
+# CA\u670D\u52A1\u5730\u5740
+nhit.dc.ca.bjxt01.server-base:http://192.168.216.112:10201/coss
+#nhit.dc.ca.bjxt01.server-base:http://61.134.26.120:10201/coss #\u5916\u7F51\u5730\u5740
+#\u5317\u4EACCA\u534F\u540C\u5E73\u53F0\u7684USER_ID, \u5B59\u9759 \u68C0\u9A8C\u79D1 000616
+#\u5237\u6570\u636E\uFF0C\u4F7F\u7528\u56FA\u5B9A\u4E00\u4E2A\u533B\u5E08\u7684user_id
+nhit.dc.ca.bjxt01.user_id:2122e89265cc291a00f8d20800bfd24c0f7f72db9225cb69a208dc7183ac2849
+## \u5237\u6570\u636E\uFF0C\u4E3B\u8981\u8C03\u7528\u63A5\u53E3\uFF1A
+###1\u3001 \u5F00\u542F\u81EA\u52A8\u7B7E(startAutoSign)\uFF0C\u8FD4\u56DE\u7B7E\u540D\u4E8C\u7EF4\u7801\uFF0C\u4F7F\u7528\u3010\u534F\u540C\u7B7E\u540D\u3011\u6709CA\u7684\u7528\u6237\u626B\u63CF\uFF0C\u626B\u63CF\u540E\u53EF\u6301\u7EED\u4E00\u6BB5\u65F6\u95F4
+###2\u3001 \u81EA\u52A8\u7B7E\u540D(autoSign)\u7684\u53CD\u53C2\u8FD9\u4E8C\u4E2A\u6570\u636E\u5B58\u5E93signResult\u7B7E\u540D\u7ED3\u679C\uFF0CsignCert\u7B7E\u540D\u8BC1\u4E66\uFF0C
+###3\u3001 \u4EA7\u751F\u65F6\u95F4\u6233(createAndGetTssInfo) \u7B2C\u4E09\u4E2A\u63A5\u53E3\u8FD4\u56DE\u65F6\u95F4\u6233\u7ED3\u679C\uFF1A\u5165\u53C2\uFF1AoriData\uFF1A \u6570\u636E\u539F\u6587\u548C\u81EA\u52A8\u7B7E\u540D\u63A5\u53E3\u91CC\u9762\u4F20\u7684\u6570\u636E\u539F\u6587\u4FDD\u6301\u4E00\u81F4\u5C31\u884C
+
+
+
+### \u54B8\u9633\u624B\u9EBB
+# \u7B2C\u4E09\u65B9\u8D26\u53F7\u6807\u8BC6
+#nhit.dc.ca.bjxt01.app-id=APP_3FAE577489B649F78F70C861AA991AEE
+# \u7B2C\u4E09\u65B9\u8D26\u53F7\u79D8\u94A5
+#nhit.dc.ca.bjxt01.app-secret=MDAwNjY1MTZmMjczNDk4MDk2MzJhMTQ4OWYyZTdlNGE=
+
+### \u54B8\u9633\u75C5\u5386
+nhit.dc.ca.bjxt01.app-id=APP_95BF9D123FCF498A83C344ED42473675
+nhit.dc.ca.bjxt01.app-secret=MzI1ODNlYTI2ZjkwNDkzZjg3MDhjOTMwMDBlZDYwOTQ=
+
+
+# \u67E5\u8BE2\u7528\u6237\u4FE1\u606F
+nhit.dc.ca.bjxt01.server-query-user-info=/service/v1/queryUserInfo
+# \u5F00\u542F\u81EA\u52A8\u7B7E\u540D
+nhit.dc.ca.bjxt01.server-start-auth-sign=/service/v1/startAutoSign
+# \u83B7\u53D6\u7B7E\u540D\u7ED3\u679C
+nhit.dc.ca.bjxt01.server-get-sign-result=/service/v1/getSignResult
+# \u81EA\u52A8\u7B7E\u540D
+nhit.dc.ca.bjxt01.server-auth-sign=/service/v1/autoSign
+# \u9A8C\u8BC1\u6570\u636E\u7B7E\u540D
+nhit.dc.ca.bjxt01.server-verify-sign=/service/v1/verifySign
+# \u83B7\u53D6\u5370\u7AE0\u56FE\u7247
+nhit.dc.ca.bjxt01.server-query-image=/service/v1/queryImage
+# \u65F6\u95F4\u6233\u7B7E\u540D
+nhit.dc.ca.bjxt01.server-tss-info=/service/v1/createAndGetTssInfo
+# \u9A8C\u8BC1\u65F6\u95F4\u6233\u7B7E\u540D
+nhit.dc.ca.bjxt01.server-verify-tss=/service/v1/verifyTS
\ No newline at end of file