diff --git a/pom.xml b/pom.xml
index 7724959..2df0aa2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -108,7 +108,21 @@
springfox-swagger2
2.9.2
-
+
+ com.syjiaer.common
+ bcpkix
+ 1.60
+
+
+ com.syjiaer.common
+ bcprov
+ 1.60
+
+
+ com.syjiaer.common
+ EncUtil
+ 1.00
+
io.springfox
springfox-swagger-ui
diff --git a/src/main/java/com/syjiaer/clinic/server/common/util/EncUtil.java b/src/main/java/com/syjiaer/clinic/server/common/util/EncUtil.java
new file mode 100644
index 0000000..b632270
--- /dev/null
+++ b/src/main/java/com/syjiaer/clinic/server/common/util/EncUtil.java
@@ -0,0 +1,88 @@
+package com.syjiaer.clinic.server.common.util;
+
+import cn.hsaf.common.utils.EasyGmUtils;
+import cn.hsaf.common.utils.SignUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import org.bouncycastle.util.encoders.Hex;
+
+import java.util.Base64;
+
+public class EncUtil {
+
+
+ /**
+ * 加密
+ *
+ * @param data
+ * @param appId
+ * @param appSecret
+ * @return
+ * @throws Exception
+ */
+ public static String encrypt(String data, String appId, String appSecret) throws Exception {
+ //加密流程
+ //用appId加密appSecret获取新秘钥
+ byte[] appSecretEncData = EasyGmUtils.sm4Encrypt(appId.substring(0, 16).getBytes("UTF-8"), appSecret.getBytes("UTF-8"));
+ //新秘钥串
+ byte[] secKey = Hex.toHexString(appSecretEncData).toUpperCase().substring(0, 16).getBytes("UTF-8");
+ //加密0数据
+ String encryptDataStr = Hex.toHexString(EasyGmUtils.sm4Encrypt(secKey, data.getBytes("UTF-8"))).toUpperCase();
+ return encryptDataStr;
+ }
+
+ /**
+ * 解密
+ *
+ * @param data
+ * @param appId
+ * @param appSecret
+ * @return
+ * @throws Exception
+ */
+ public static String decrypt(String data, String appId, String appSecret) throws Exception {
+ byte[] appSecretEncDataDecode = EasyGmUtils.sm4Encrypt(appId.substring(0, 16).getBytes("UTF-8"), appSecret.getBytes("UTF-8"));
+ byte[] secKeyDecode = Hex.toHexString(appSecretEncDataDecode).toUpperCase().substring(0, 16).getBytes("UTF-8");
+ String decryptDataStr = new String(EasyGmUtils.sm4Decrypt(secKeyDecode, Hex.decode(data)));
+ return decryptDataStr;
+ }
+
+ /**
+ * 签名
+ *
+ * @param jsonObject
+ * @param appSecret
+ * @param privateKey
+ * @return
+ * @throws Exception
+ */
+ public static String sign(JSONObject jsonObject, String appSecret, String privateKey) throws Exception {
+ // 获取签名串
+ byte[] signText = SignUtil.getSignText(jsonObject, appSecret).getBytes("UTF-8");
+ byte[] userId = appSecret.getBytes();
+ byte[] prvkey = Base64.getDecoder().decode(privateKey);
+ String responseSign = Base64.getEncoder().encodeToString(EasyGmUtils.signSm3WithSm2(signText, userId, prvkey));
+ return responseSign;
+ }
+
+ /**
+ * 验签
+ *
+ * @param jsonObject
+ * @param appSecret
+ * @param publicKey
+ * @param responseSign
+ * @return
+ * @throws Exception
+ */
+ public static boolean verify(JSONObject jsonObject, String appSecret, String publicKey, String responseSign) throws Exception {
+ //验签
+ byte[] msg = SignUtil.getSignText(jsonObject, appSecret).getBytes("UTF-8");
+ byte[] userIdDecode = appSecret.getBytes("UTF-8");
+ byte[] pubkey = Base64.getDecoder().decode(publicKey);
+ byte[] signData = Base64.getDecoder().decode(responseSign);
+ return EasyGmUtils.verifySm3WithSm2(msg, userIdDecode, signData, pubkey);
+ }
+
+
+}
diff --git a/src/main/java/com/syjiaer/clinic/server/service/diagnosis/DiagnosisService.java b/src/main/java/com/syjiaer/clinic/server/service/diagnosis/DiagnosisService.java
index 734214c..23f9192 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/diagnosis/DiagnosisService.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/diagnosis/DiagnosisService.java
@@ -102,6 +102,15 @@ public class DiagnosisService extends BaseService {
@Transactional(rollbackFor = Exception.class)
public void save(MedicalRecordSaveDto saveDto) {
+ int regisId =saveDto.getRegistrationId();
+
+ QueryWrapper queryWrapperRegis = new QueryWrapper<>();
+ queryWrapperRegis.eq("registration_id", regisId);
+ Diagnosis regisDbDiagnosis = diagnosisMapper.selectOne(queryWrapperRegis);
+ if(regisDbDiagnosis!=null){
+ throw new MessageException("该挂号已完诊,请不要重复完诊");
+ }
+
if (saveDto == null){
throw new MessageException("参数不能为空");
}