From 77f169e1776e16290f1840dae65b4ae5bc4c06ac Mon Sep 17 00:00:00 2001
From: sunjianxi <839419401@qq.com>
Date: Thu, 23 May 2024 16:19:07 +0800
Subject: [PATCH] =?UTF-8?q?sm2=E5=8A=A0=E5=AF=86=E8=A7=A3=E5=AF=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 6 +
.../java/org/springblade/Application.java | 5 +
.../common/config/SecretCommon.java | 105 +++++++++++++
.../config/Sm2PrivatekeyProperties.java | 115 ++++++++++++++
.../common/config/Sm2PublickeyProperties.java | 115 ++++++++++++++
.../common/constant/KeyConstant.java | 11 ++
.../common/constant/ModeTypeConstant.java | 19 +++
.../common/enums/ModeTypeEnum.java | 25 +++
.../springblade/common/utils/Sm2Utils.java | 57 +++++++
.../controller/ApmConfigController.java | 31 +++-
.../controller/ApmRecordController.java | 148 +++++++++++++++++-
.../controller/BlacklistController.java | 32 ++++
.../controller/CommonApiController.java | 53 ++++++-
src/main/resources/application.yml | 28 ++++
14 files changed, 746 insertions(+), 4 deletions(-)
create mode 100644 src/main/java/org/springblade/common/config/SecretCommon.java
create mode 100644 src/main/java/org/springblade/common/config/Sm2PrivatekeyProperties.java
create mode 100644 src/main/java/org/springblade/common/config/Sm2PublickeyProperties.java
create mode 100644 src/main/java/org/springblade/common/constant/KeyConstant.java
create mode 100644 src/main/java/org/springblade/common/constant/ModeTypeConstant.java
create mode 100644 src/main/java/org/springblade/common/enums/ModeTypeEnum.java
create mode 100644 src/main/java/org/springblade/common/utils/Sm2Utils.java
diff --git a/pom.xml b/pom.xml
index a764332..aa02efe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -190,6 +190,12 @@
quartz
2.3.2
+
+
+ org.bouncycastle
+ bcprov-jdk15to18
+ 1.66
+
diff --git a/src/main/java/org/springblade/Application.java b/src/main/java/org/springblade/Application.java
index 8feed05..4f52903 100644
--- a/src/main/java/org/springblade/Application.java
+++ b/src/main/java/org/springblade/Application.java
@@ -32,6 +32,11 @@ public class Application {
public static void main(String[] args) {
BladeApplication.run(CommonConstant.APPLICATION_NAME, Application.class, args);
+ System.out.println("======================");
+ System.out.println("======================");
+ System.out.println("========启动成功=======");
+ System.out.println("======================");
+ System.out.println("======================");
}
}
diff --git a/src/main/java/org/springblade/common/config/SecretCommon.java b/src/main/java/org/springblade/common/config/SecretCommon.java
new file mode 100644
index 0000000..3a8d705
--- /dev/null
+++ b/src/main/java/org/springblade/common/config/SecretCommon.java
@@ -0,0 +1,105 @@
+package org.springblade.common.config;
+
+import org.bouncycastle.asn1.gm.GMNamedCurves;
+import org.bouncycastle.asn1.x9.X9ECParameters;
+import org.bouncycastle.crypto.AsymmetricCipherKeyPair;
+import org.bouncycastle.crypto.InvalidCipherTextException;
+import org.bouncycastle.crypto.engines.SM2Engine;
+import org.bouncycastle.crypto.generators.ECKeyPairGenerator;
+import org.bouncycastle.crypto.params.*;
+import org.bouncycastle.math.ec.ECPoint;
+import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
+import org.bouncycastle.util.encoders.Hex;
+import org.springblade.common.constant.KeyConstant;
+import org.springblade.common.enums.ModeTypeEnum;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.math.BigInteger;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * SM2公钥密码算法(非对称算法)
+ * SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法。
+ * 包括SM2-1椭圆曲线数字签名算法;SM2-2椭圆曲线密钥交换协议;SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。
+ * SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。
+ */
+public class SecretCommon {
+ //获取椭圆曲线
+ public static synchronized ECDomainParameters getECDomainParameters() {
+ X9ECParameters sm2ECParameters = GMNamedCurves.getByName(KeyConstant.GM_NAME_CURVE);
+ return new ECDomainParameters(sm2ECParameters.getCurve(), sm2ECParameters.getG(), sm2ECParameters.getN());
+ }
+
+ /**
+ * get key pair
+ */
+ public static Map createKeyPair() throws NoSuchAlgorithmException {
+ ECKeyPairGenerator keyPairGenerator = new ECKeyPairGenerator();
+ keyPairGenerator.init(new ECKeyGenerationParameters(getECDomainParameters(), SecureRandom.getInstance(KeyConstant.ALGORITHM)));
+ AsymmetricCipherKeyPair asymmetricCipherKeyPair = keyPairGenerator.generateKeyPair();
+ Map map = new HashMap<>();
+ BigInteger bigInteger = ((ECPrivateKeyParameters) asymmetricCipherKeyPair.getPrivate()).getD();
+ map.put(KeyConstant.PRIVATE_KEY, ByteUtils.toHexString(bigInteger.toByteArray()));
+ // 把公钥放入map中,默认压缩公钥
+ // 公钥前面的02或者03表示是压缩公钥,04表示未压缩公钥,04的时候,可以去掉前面的04
+ ECPoint ecPoint = ((ECPublicKeyParameters) asymmetricCipherKeyPair.getPublic()).getQ();
+ map.put(KeyConstant.PUBLIC_KEY, ByteUtils.toHexString(ecPoint.getEncoded(false)));
+ return map;
+ }
+
+ /**
+ * 加密
+ * @param plainText 需加密的明文字符串
+ * @param publicKey 公钥
+ * @param modeType base:标准;bc:BC模式
+ */
+ public static String encrypt(String plainText, String publicKey, ModeTypeEnum modeType) throws IOException, InvalidCipherTextException {
+ return encrypt(plainText.getBytes(), publicKey, modeType.getMode());
+ }
+
+ /**
+ * 加密
+ * @param plainByte 需加密的明文字节数组
+ * @param publicKey 公钥
+ * @param mode 加密模式 ModeTypeEnum
+ */
+ public static String encrypt(byte[] plainByte, String publicKey, SM2Engine.Mode mode) throws IOException, InvalidCipherTextException {
+ ECDomainParameters domainParameters = getECDomainParameters();
+ //提取公钥点
+ ECPoint ecPoint = domainParameters.getCurve().decodePoint(ByteUtils.fromHexString(publicKey));
+ // 公钥前面的02或者03表示是压缩公钥,04表示未压缩公钥, 04的时候,可以去掉前面的04
+ ECPublicKeyParameters publicKeyParameters = new ECPublicKeyParameters(ecPoint, domainParameters);
+ SM2Engine sm2Engine = new SM2Engine(mode);
+ sm2Engine.init(true, new ParametersWithRandom(publicKeyParameters, new SecureRandom()));
+ return ByteUtils.toHexString(sm2Engine.processBlock(plainByte, 0, plainByte.length));
+ }
+
+ /**
+ * 解密
+ * @param cipherText 需加密的字符串
+ * @param privateKey 私钥
+ * @param modeType base:标准;bc:BC模式
+ */
+ public static String decrypt(String cipherText, String privateKey, ModeTypeEnum modeType) throws InvalidCipherTextException, UnsupportedEncodingException {
+ return decrypt(Hex.decode(cipherText), privateKey, modeType.getMode());
+ }
+
+ /**
+ * 解密
+ * @param cipherDataByte 密文字节数组
+ * @param privateKeyHex 私钥
+ * @param mode 解密模式 ModeTypeEnum
+ */
+ public static String decrypt(byte[] cipherDataByte, String privateKeyHex, SM2Engine.Mode mode) throws InvalidCipherTextException, UnsupportedEncodingException {
+ BigInteger bigInteger = new BigInteger(privateKeyHex, 16);
+ ECPrivateKeyParameters privateKeyParameters = new ECPrivateKeyParameters(bigInteger, getECDomainParameters());
+ SM2Engine sm2Engine = new SM2Engine(mode);
+ sm2Engine.init(false, privateKeyParameters);
+ return new String(sm2Engine.processBlock(cipherDataByte, 0, cipherDataByte.length), "utf-8");
+ }
+
+}
diff --git a/src/main/java/org/springblade/common/config/Sm2PrivatekeyProperties.java b/src/main/java/org/springblade/common/config/Sm2PrivatekeyProperties.java
new file mode 100644
index 0000000..f0efb67
--- /dev/null
+++ b/src/main/java/org/springblade/common/config/Sm2PrivatekeyProperties.java
@@ -0,0 +1,115 @@
+package org.springblade.common.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+
+@ConfigurationProperties(
+ prefix = "sm2.privatekey"
+)
+@Component
+public class Sm2PrivatekeyProperties {
+ private String listHospital;
+ private String detailPublish;
+ private String userBlacklist;
+ private String alreadyConfigDay;
+ private String detailForApm;
+ private String save;
+ private String page;
+ private String cancel;
+ private String getSystemDatetime;
+ private String saveCupImg;
+
+ public Sm2PrivatekeyProperties() {
+ this.listHospital = "";
+ this.detailPublish = "";
+ this.userBlacklist = "";
+ this.alreadyConfigDay = "";
+ this.detailForApm = "";
+ this.save = "";
+ this.page = "";
+ this.cancel = "";
+ this.getSystemDatetime = "";
+ this.saveCupImg = "";
+ }
+
+ public String getListHospital() {
+ return listHospital;
+ }
+
+ public void setListHospital(String listHospital) {
+ this.listHospital = listHospital;
+ }
+
+ public String getDetailPublish() {
+ return detailPublish;
+ }
+
+ public void setDetailPublish(String detailPublish) {
+ this.detailPublish = detailPublish;
+ }
+
+ public String getUserBlacklist() {
+ return userBlacklist;
+ }
+
+ public void setUserBlacklist(String userBlacklist) {
+ this.userBlacklist = userBlacklist;
+ }
+
+ public String getAlreadyConfigDay() {
+ return alreadyConfigDay;
+ }
+
+ public void setAlreadyConfigDay(String alreadyConfigDay) {
+ this.alreadyConfigDay = alreadyConfigDay;
+ }
+
+ public String getDetailForApm() {
+ return detailForApm;
+ }
+
+ public void setDetailForApm(String detailForApm) {
+ this.detailForApm = detailForApm;
+ }
+
+ public String getSave() {
+ return save;
+ }
+
+ public void setSave(String save) {
+ this.save = save;
+ }
+
+ public String getPage() {
+ return page;
+ }
+
+ public void setPage(String page) {
+ this.page = page;
+ }
+
+ public String getCancel() {
+ return cancel;
+ }
+
+ public void setCancel(String cancel) {
+ this.cancel = cancel;
+ }
+
+ public String getGetSystemDatetime() {
+ return getSystemDatetime;
+ }
+
+ public void setGetSystemDatetime(String getSystemDatetime) {
+ this.getSystemDatetime = getSystemDatetime;
+ }
+
+ public String getSaveCupImg() {
+ return saveCupImg;
+ }
+
+ public void setSaveCupImg(String saveCupImg) {
+ this.saveCupImg = saveCupImg;
+ }
+}
diff --git a/src/main/java/org/springblade/common/config/Sm2PublickeyProperties.java b/src/main/java/org/springblade/common/config/Sm2PublickeyProperties.java
new file mode 100644
index 0000000..d5c381f
--- /dev/null
+++ b/src/main/java/org/springblade/common/config/Sm2PublickeyProperties.java
@@ -0,0 +1,115 @@
+package org.springblade.common.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+
+@ConfigurationProperties(
+ prefix = "sm2.publickey"
+)
+@Component
+public class Sm2PublickeyProperties {
+ private String listHospital;
+ private String detailPublish;
+ private String userBlacklist;
+ private String alreadyConfigDay;
+ private String detailForApm;
+ private String save;
+ private String page;
+ private String cancel;
+ private String getSystemDatetime;
+ private String saveCupImg;
+
+ public Sm2PublickeyProperties() {
+ this.listHospital = "";
+ this.detailPublish = "";
+ this.userBlacklist = "";
+ this.alreadyConfigDay = "";
+ this.detailForApm = "";
+ this.save = "";
+ this.page = "";
+ this.cancel = "";
+ this.getSystemDatetime = "";
+ this.saveCupImg = "";
+ }
+
+ public String getListHospital() {
+ return listHospital;
+ }
+
+ public void setListHospital(String listHospital) {
+ this.listHospital = listHospital;
+ }
+
+ public String getDetailPublish() {
+ return detailPublish;
+ }
+
+ public void setDetailPublish(String detailPublish) {
+ this.detailPublish = detailPublish;
+ }
+
+ public String getUserBlacklist() {
+ return userBlacklist;
+ }
+
+ public void setUserBlacklist(String userBlacklist) {
+ this.userBlacklist = userBlacklist;
+ }
+
+ public String getAlreadyConfigDay() {
+ return alreadyConfigDay;
+ }
+
+ public void setAlreadyConfigDay(String alreadyConfigDay) {
+ this.alreadyConfigDay = alreadyConfigDay;
+ }
+
+ public String getDetailForApm() {
+ return detailForApm;
+ }
+
+ public void setDetailForApm(String detailForApm) {
+ this.detailForApm = detailForApm;
+ }
+
+ public String getSave() {
+ return save;
+ }
+
+ public void setSave(String save) {
+ this.save = save;
+ }
+
+ public String getPage() {
+ return page;
+ }
+
+ public void setPage(String page) {
+ this.page = page;
+ }
+
+ public String getCancel() {
+ return cancel;
+ }
+
+ public void setCancel(String cancel) {
+ this.cancel = cancel;
+ }
+
+ public String getGetSystemDatetime() {
+ return getSystemDatetime;
+ }
+
+ public void setGetSystemDatetime(String getSystemDatetime) {
+ this.getSystemDatetime = getSystemDatetime;
+ }
+
+ public String getSaveCupImg() {
+ return saveCupImg;
+ }
+
+ public void setSaveCupImg(String saveCupImg) {
+ this.saveCupImg = saveCupImg;
+ }
+}
diff --git a/src/main/java/org/springblade/common/constant/KeyConstant.java b/src/main/java/org/springblade/common/constant/KeyConstant.java
new file mode 100644
index 0000000..1c9da27
--- /dev/null
+++ b/src/main/java/org/springblade/common/constant/KeyConstant.java
@@ -0,0 +1,11 @@
+package org.springblade.common.constant;
+
+public class KeyConstant {
+
+ public static final String PRIVATE_KEY = "pveky"; // 私钥
+ public static final String PUBLIC_KEY = "pbcky"; // 公钥
+
+ public static final String GM_NAME_CURVE = "sm2p256v1";
+ public static final String ALGORITHM = "SHA1PRNG";
+
+}
diff --git a/src/main/java/org/springblade/common/constant/ModeTypeConstant.java b/src/main/java/org/springblade/common/constant/ModeTypeConstant.java
new file mode 100644
index 0000000..60610e7
--- /dev/null
+++ b/src/main/java/org/springblade/common/constant/ModeTypeConstant.java
@@ -0,0 +1,19 @@
+package org.springblade.common.constant;
+
+import org.bouncycastle.crypto.engines.SM2Engine;
+import org.springblade.common.enums.ModeTypeEnum;
+
+public class ModeTypeConstant {
+ public static final String BASE = "base";
+ public static final String BC = "bc";
+
+ @Deprecated
+ public static final SM2Engine.Mode BASE_MODE = SM2Engine.Mode.C1C3C2;
+ @Deprecated
+ public static final SM2Engine.Mode BC_MODE = SM2Engine.Mode.C1C2C3;
+
+ public static ModeTypeEnum getMode(String modeType){
+ if (ModeTypeEnum.BASE_MODE.getType().equals(modeType)) return ModeTypeEnum.BASE_MODE;
+ return ModeTypeEnum.BC_MODE;
+ }
+}
diff --git a/src/main/java/org/springblade/common/enums/ModeTypeEnum.java b/src/main/java/org/springblade/common/enums/ModeTypeEnum.java
new file mode 100644
index 0000000..d695798
--- /dev/null
+++ b/src/main/java/org/springblade/common/enums/ModeTypeEnum.java
@@ -0,0 +1,25 @@
+package org.springblade.common.enums;
+
+import org.bouncycastle.crypto.engines.SM2Engine;
+import org.springblade.common.constant.ModeTypeConstant;
+
+public enum ModeTypeEnum {
+ BASE_MODE(ModeTypeConstant.BASE, SM2Engine.Mode.C1C3C2),
+ BC_MODE(ModeTypeConstant.BC, SM2Engine.Mode.C1C2C3);
+
+ private String type;
+ private SM2Engine.Mode mode;
+
+ ModeTypeEnum(String type, SM2Engine.Mode mode) {
+ this.type = type;
+ this.mode = mode;
+ }
+
+ public String getType(){
+ return type;
+ }
+
+ public SM2Engine.Mode getMode(){
+ return mode;
+ }
+}
diff --git a/src/main/java/org/springblade/common/utils/Sm2Utils.java b/src/main/java/org/springblade/common/utils/Sm2Utils.java
new file mode 100644
index 0000000..67e5141
--- /dev/null
+++ b/src/main/java/org/springblade/common/utils/Sm2Utils.java
@@ -0,0 +1,57 @@
+package org.springblade.common.utils;
+
+import org.bouncycastle.crypto.InvalidCipherTextException;
+import org.springblade.common.config.SecretCommon;
+import org.springblade.common.constant.ModeTypeConstant;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.security.NoSuchAlgorithmException;
+import java.util.Map;
+
+public class Sm2Utils {
+ /**
+ * get key pair
+ */
+ public static Map createKeyPair() throws NoSuchAlgorithmException {
+ return SecretCommon.createKeyPair();
+ }
+
+ /**
+ * encrypt
+ * @param plainText 需加密的明文字符串
+ * @param publicKey 公钥
+ */
+ public static String encrypt(String plainText, String publicKey) throws IOException, InvalidCipherTextException {
+ return encrypt(plainText, publicKey, ModeTypeConstant.BASE);
+ }
+
+ /**
+ * encrypt
+ * @param plainText 需加密的明文字符串
+ * @param publicKey 公钥
+ * @param modeType base:标准;bc:BC模式
+ */
+ public static String encrypt(String plainText, String publicKey, String modeType) throws IOException, InvalidCipherTextException {
+ return SecretCommon.encrypt(plainText, publicKey, ModeTypeConstant.getMode(modeType));
+ }
+
+ /**
+ * decrypt
+ * @param cipherText 需加密的字符串
+ * @param privateKey 私钥
+ */
+ public static String decrypt(String cipherText, String privateKey) throws InvalidCipherTextException, UnsupportedEncodingException {
+ return decrypt(cipherText, privateKey, ModeTypeConstant.BASE);
+ }
+
+ /**
+ * decrypt
+ * @param cipherText 需加密的字符串
+ * @param privateKey 私钥
+ * @param modeType base:标准;bc:BC模式
+ */
+ public static String decrypt(String cipherText, String privateKey, String modeType) throws InvalidCipherTextException, UnsupportedEncodingException {
+ return SecretCommon.decrypt(cipherText, privateKey, ModeTypeConstant.getMode(modeType));
+ }
+}
diff --git a/src/main/java/org/springblade/modules/business/controller/ApmConfigController.java b/src/main/java/org/springblade/modules/business/controller/ApmConfigController.java
index 897cffb..211ff48 100644
--- a/src/main/java/org/springblade/modules/business/controller/ApmConfigController.java
+++ b/src/main/java/org/springblade/modules/business/controller/ApmConfigController.java
@@ -5,10 +5,13 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.*;
import lombok.AllArgsConstructor;
+import org.bouncycastle.crypto.InvalidCipherTextException;
+import org.springblade.common.config.Sm2PrivatekeyProperties;
import org.springblade.common.constant.BusinessConstant;
import org.springblade.common.constant.CommonConstant;
import org.springblade.common.enums.ErrorMsgEnum;
import org.springblade.common.utils.CommonDateUtil;
+import org.springblade.common.utils.Sm2Utils;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
@@ -24,6 +27,7 @@ import org.springblade.modules.business.vo.ApmConfigVO;
import org.springblade.modules.business.wrapper.ApmConfigWrapper;
import org.springframework.web.bind.annotation.*;
+import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -41,6 +45,7 @@ import java.util.Map;
public class ApmConfigController extends BladeController {
private final IApmConfigService apmConfigService;
+ private final Sm2PrivatekeyProperties sm2PrivatekeyProperties;
/**
* 获取已放号天
@@ -96,7 +101,6 @@ public class ApmConfigController extends BladeController {
return R.data(ApmConfigWrapper.build().listVO(list));
}
-
/**
* 获取放号详细, 用户用户预约
*
@@ -120,6 +124,31 @@ public class ApmConfigController extends BladeController {
return R.data(apmConfigService.detailForApm(createDept, apmDay, cupCardNo));
}
+
+ /**
+ * 获取放号详细, 用户用户预约
+ *
+ * @param createDept
+ * @param apmDay
+ * @param cupCardNo
+ * @return
+ */
+ @GetMapping("/detail-for-apm2")
+ public R> detailForApm2(Long createDept, String apmDay, String cupCardNo) throws InvalidCipherTextException, UnsupportedEncodingException {
+ if (Func.isEmpty(createDept)) {
+ return R.fail(ErrorMsgEnum.PARAMS_NULL_CREATE_DEPT.getValue());
+ }
+ if (Func.isEmpty(apmDay)) {
+ return R.fail(ErrorMsgEnum.APMRECORD_SAVE_DATE_IS_NULL.getValue());
+ }
+ if (Func.isEmpty(cupCardNo)) {
+ return R.fail(ErrorMsgEnum.PARAMS_NULL_CUP_CARD_NO.getValue());
+ }
+ //cupCardNo = Sm2Utils.decrypt(cupCardNo,sm2PrivatekeyProperties.getDetailForApm());
+ System.out.println("获取放号详细获取到的身份证号是:" + cupCardNo);
+ return R.data(apmConfigService.detailForApm(createDept, apmDay, cupCardNo));
+ }
+
/**
* @param query 分页参数
* @param createDept 医院ID
diff --git a/src/main/java/org/springblade/modules/business/controller/ApmRecordController.java b/src/main/java/org/springblade/modules/business/controller/ApmRecordController.java
index bd69be9..90b7c26 100644
--- a/src/main/java/org/springblade/modules/business/controller/ApmRecordController.java
+++ b/src/main/java/org/springblade/modules/business/controller/ApmRecordController.java
@@ -6,8 +6,11 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.bouncycastle.crypto.InvalidCipherTextException;
import org.springblade.common.cache.DeptCache;
import org.springblade.common.cache.DictBizCache;
+import org.springblade.common.config.Sm2PrivatekeyProperties;
+import org.springblade.common.config.Sm2PublickeyProperties;
import org.springblade.common.constant.BusinessConstant;
import org.springblade.common.constant.CommonConstant;
import org.springblade.common.enums.ApmRecordStatusEnum;
@@ -35,8 +38,9 @@ import org.springblade.modules.system.entity.Dept;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
import java.util.*;
-import java.util.logging.Logger;
/**
* 控制器
@@ -52,6 +56,8 @@ import java.util.logging.Logger;
public class ApmRecordController extends BladeController {
private final IApmRecordService recordService;
+ private final Sm2PublickeyProperties sm2PublickeyProperties;
+ private final Sm2PrivatekeyProperties sm2PrivatekeyProperties;
/**
* 详情
@@ -150,6 +156,29 @@ public class ApmRecordController extends BladeController {
* 分页
*/
@GetMapping("/page")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "createDept", value = "医院ID", paramType = "query", dataType = "integer"),
+ @ApiImplicitParam(name = "startTime", value = "查询开始时间", paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "endTime", value = "查询结束时间", paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "cupCardNo", value = "体检人证件号", paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "project", value = "项目名称", paramType = "query", dataType = "String")
+ })
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "分页", notes = "分页")
+ public R> selectPage(Query query, Long createDept, String startTime, String endTime, String cupCardNo, String project, String apmStatus) {
+ BladeUser user = AuthUtil.getUser();
+ if (Func.isNotEmpty(user) && !BusinessConstant.ROLE_NAME_HOSPITAL.equals(user.getRoleName())) {
+ createDept = null;
+ }
+
+ IPage page = recordService.selectDistinctRecordPage(Condition.getPage(query), createDept, startTime, endTime, cupCardNo, project, apmStatus);
+ return R.data(page);
+ }
+
+ /**
+ * 分页
+ */
+ @GetMapping("/page2")
@ApiImplicitParams({
@ApiImplicitParam(name = "createDept", value = "医院ID", paramType = "query", dataType = "integer"),
@ApiImplicitParam(name = "startTime", value = "查询开始时间", paramType = "query", dataType = "String"),
@@ -159,7 +188,21 @@ public class ApmRecordController extends BladeController {
})
@ApiOperationSupport(order = 4)
@ApiOperation(value = "分页", notes = "分页")
- public R> selectPage(Query query, Long createDept, String startTime, String endTime, String cupCardNo, String project, String apmStatus) {
+ public R> selectPage2(Query query, Long createDept, String startTime, String endTime, String cupCardNo, String project, String apmStatus) throws InvalidCipherTextException, IOException {
+ /*BladeUser user = AuthUtil.getUser();
+ if (Func.isNotEmpty(user) && !BusinessConstant.ROLE_NAME_HOSPITAL.equals(user.getRoleName())) {
+ createDept = null;
+ }
+ cupCardNo = Sm2Utils.decrypt(cupCardNo,sm2PrivatekeyProperties.getPage());
+ IPage page = recordService.selectDistinctRecordPage(Condition.getPage(query), createDept, startTime, endTime, cupCardNo, project, apmStatus);
+ if(page != null){
+ for(ApmRecordListVO apmRecordListVO : page.getRecords()){
+ apmRecordListVO.setCupName(Sm2Utils.encrypt(apmRecordListVO.getCupName(),sm2PublickeyProperties.getPage()));
+ apmRecordListVO.setCupCardNo(Sm2Utils.encrypt(apmRecordListVO.getCupCardNo(),sm2PublickeyProperties.getPage()));
+ apmRecordListVO.setCupPhone(Sm2Utils.encrypt(apmRecordListVO.getCupPhone(),sm2PublickeyProperties.getPage()));
+ }
+ }
+ return R.data(page);*/
BladeUser user = AuthUtil.getUser();
if (Func.isNotEmpty(user) && !BusinessConstant.ROLE_NAME_HOSPITAL.equals(user.getRoleName())) {
createDept = null;
@@ -218,6 +261,107 @@ public class ApmRecordController extends BladeController {
return R.fail(checkMsg);
}
+ /**
+ * 新增
+ */
+ @PostMapping("/save2")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "新增", notes = "传入apmConfig")
+ public R save2(@RequestBody Map apmRecordListStr) throws InvalidCipherTextException, UnsupportedEncodingException {
+ /*List