diff --git a/pom.xml b/pom.xml
index e136f5e..3edf6c6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -136,6 +136,18 @@
${project.artifactId}
+
+
+
+
+ src/main/resources
+
+ **/**
+
+ false
+
+
+
org.springframework.boot
@@ -151,60 +163,86 @@
-
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ true
+
+ lib/
+
+ false
+
+ com.dpkj.Application
+
+
+
+ resources/
+
+
+
+
+ *.yml
+ *.xml
+ templates/**
+ win32-x86-64/**
+ win32-x86/**
+
+
+ ${project.build.directory}/output
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-dependencies
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}/output/lib/
+
+
+
+
+
+
+ maven-resources-plugin
+
+
+ copy-resources
+ package
+
+ copy-resources
+
+
+
+
+
+ src/main/resources
+
+
+
+ ${project.build.directory}/output/resources
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- src/main/resources
-
- **/**
-
- false
-
-
diff --git a/src/main/java/com/dpkj/common/config/ChsConfig.java b/src/main/java/com/dpkj/common/config/ChsConfig.java
new file mode 100644
index 0000000..17ef7b5
--- /dev/null
+++ b/src/main/java/com/dpkj/common/config/ChsConfig.java
@@ -0,0 +1,22 @@
+package com.dpkj.common.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Auther: 萧道子
+ * @Date: 2024/4/28 14:55
+ * @Description:
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "dpkj.chs")
+public class ChsConfig {
+
+ /**
+ * 医保机构编码
+ */
+ private String orgcode;
+
+}
diff --git a/src/main/java/com/dpkj/common/constant/ChsConst.java b/src/main/java/com/dpkj/common/constant/ChsConst.java
new file mode 100644
index 0000000..5ab5eef
--- /dev/null
+++ b/src/main/java/com/dpkj/common/constant/ChsConst.java
@@ -0,0 +1,36 @@
+package com.dpkj.common.constant;
+
+public interface ChsConst {
+
+ /**
+ * 电子凭证二维码解码接口
+ */
+ String APITYPE_QRCODE = "ec.query";
+
+ /**
+ * 医保电子凭证密码核验接口
+ */
+ String APITYPE_VERIFY = "cn.nhsa.ec.pwd";
+
+
+ /**
+ * 终端医保电子凭证码解码接口
+ */
+ String APITYPE_DECODE = "cn.nhsa.qrcode.get";
+
+ /**
+ * 刷脸获取医保用户身份授权接口
+ */
+ String APITYPE_AUTHORIZATION = "cn.nhsa.ec.auth";
+
+ /**
+ * 刷脸授权获取医保身份接口
+ */
+ String APITYPE_CHECK = "cn.nhsa.auth.check";
+
+ /**
+ * 结算结果通知接口
+ */
+ String APITYPE_Notify = "cn.nhsa.settle.notify";
+
+}
diff --git a/src/main/java/com/dpkj/modules/chs/controller/AlipayController.java b/src/main/java/com/dpkj/modules/chs/controller/AlipayController.java
new file mode 100644
index 0000000..66452a7
--- /dev/null
+++ b/src/main/java/com/dpkj/modules/chs/controller/AlipayController.java
@@ -0,0 +1,81 @@
+package com.dpkj.modules.chs.controller;
+
+import cn.hutool.core.lang.Console;
+import com.alibaba.fastjson.JSONObject;
+import com.dpkj.common.config.ChsConfig;
+import com.dpkj.common.constant.ChsConst;
+import com.dpkj.common.vo.Result;
+import com.dpkj.modules.chs.dll.AlipayDll;
+import com.dpkj.modules.chs.entity.AlipayEcRequestData;
+import com.dpkj.modules.chs.service.IAlipayService;
+import com.sun.jna.Memory;
+import com.sun.jna.Pointer;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Auther: 萧道子
+ * @Date: 2025/3/22 16:25
+ * @Description: 医保模块-阿里设备
+ */
+@Slf4j
+@AllArgsConstructor
+@RestController
+@RequestMapping("/chs/alipay")
+public class AlipayController {
+
+ private final IAlipayService alipayService;
+
+ private final ChsConfig charsConfig;
+
+
+ @GetMapping("test")
+ public Result> test() {
+ try {
+ AlipayDll.Dll dll = AlipayDll.instance();
+ // Native.load("libeay32", AlipayDll.Dll.class);
+ // Native.load("ssleay32", AlipayDll.Dll.class);
+
+
+ JSONObject data = new JSONObject();
+ AlipayEcRequestData alipayEcRequestData = new AlipayEcRequestData()
+ .setOrgId(charsConfig.getOrgcode())
+ .setTransType(ChsConst.APITYPE_DECODE)
+ .setData(data);
+ String dataJson = JSONObject.toJSONString(alipayEcRequestData);
+
+ Pointer resultStr = new Memory(1024 * 10);
+ String rs = dll.NationEcTrans(
+ "http://172.16.11.13:5946/api/chs/qrCodeQuery",
+ dataJson,
+ resultStr
+ );
+ String rsStrString = resultStr.getString(0, "GB18030");
+ Console.log(rsStrString);
+ Console.log(rs);
+
+ return Result.ok("成功", rsStrString);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return Result.error("失败");
+ }
+ }
+
+ @PostMapping("qrCodeQuery")
+ public Result> qrCodeQuery(@RequestBody JSONObject data) {
+ try {
+
+ Console.log(data);
+ return Result.ok("成功", null);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return Result.error("失败");
+ }
+ }
+
+}
diff --git a/src/main/java/com/dpkj/modules/chs/controller/HispayController.java b/src/main/java/com/dpkj/modules/chs/controller/HispayController.java
new file mode 100644
index 0000000..f93b12b
--- /dev/null
+++ b/src/main/java/com/dpkj/modules/chs/controller/HispayController.java
@@ -0,0 +1,50 @@
+package com.dpkj.modules.chs.controller;
+
+import cn.hutool.core.lang.Console;
+import com.alibaba.fastjson.JSONObject;
+import com.dpkj.common.config.ChsConfig;
+import com.dpkj.common.constant.ChsConst;
+import com.dpkj.common.vo.Result;
+import com.dpkj.modules.chs.dll.AlipayDll;
+import com.dpkj.modules.chs.entity.AlipayEcRequestData;
+import com.dpkj.modules.chs.service.IAlipayService;
+import com.dpkj.modules.chs.service.IHispayService;
+import com.sun.jna.Memory;
+import com.sun.jna.Pointer;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Auther: 萧道子
+ * @Date: 2025/3/22 16:25
+ * @Description: 医保模块-HIS医保
+ */
+@Slf4j
+@AllArgsConstructor
+@RestController
+@RequestMapping("/chs/hispay")
+public class HispayController {
+
+ private final IHispayService hispayService;
+
+ private final ChsConfig charsConfig;
+
+
+ @GetMapping("test")
+ public Result> test() {
+ try {
+
+ return Result.ok("成功", null);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return Result.error("失败");
+ }
+ }
+
+
+}
diff --git a/src/main/java/com/dpkj/modules/chs/dll/AlipayDll.java b/src/main/java/com/dpkj/modules/chs/dll/AlipayDll.java
new file mode 100644
index 0000000..11aac82
--- /dev/null
+++ b/src/main/java/com/dpkj/modules/chs/dll/AlipayDll.java
@@ -0,0 +1,59 @@
+package com.dpkj.modules.chs.dll;
+
+import com.sun.jna.Library;
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @Auther: 萧道子
+ * @Date: 2025/3/22 17:48
+ * @Description:
+ */
+@Slf4j
+public class AlipayDll {
+
+ /**
+ * 获取 AlipayDll 实例,同时注册 AlipayDll 控件。
+ *
+ * @return AlipayDll 实例
+ * @throws DllRegistrationException 如果注册控件失败,抛出此异常
+ */
+ public static Dll instance() throws DllRegistrationException {
+ try {
+ return Native.load("NationECCode", Dll.class);
+ } catch (UnsatisfiedLinkError e) {
+ log.info("[AlipayDll][getPrintSDK][医保动态库] SDK注册失败:{}", e.getMessage());
+ throw new DllRegistrationException("Failed to load AlipayDll library: ", e);
+ }
+ }
+
+ /**
+ * 定义自定义异常类,用于表示注册控件时发生的错误
+ */
+ public static class DllRegistrationException extends Exception {
+ public DllRegistrationException(String message) {
+ super(message);
+ }
+
+ public DllRegistrationException(String message, Throwable cause) {
+ super(message, cause);
+ }
+ }
+
+
+ /**
+ * 定义接口映射本地库中的函数。
+ */
+ public interface Dll extends Library {
+
+ /**
+ * 设置打印端口和波特率。
+ *
+ * @return 返回操作结果代码
+ */
+ String NationEcTrans(String strUrl, String InData, Pointer OutData);
+
+ }
+
+}
diff --git a/src/main/java/com/dpkj/modules/chs/dll/HispayDll.java b/src/main/java/com/dpkj/modules/chs/dll/HispayDll.java
new file mode 100644
index 0000000..9398e86
--- /dev/null
+++ b/src/main/java/com/dpkj/modules/chs/dll/HispayDll.java
@@ -0,0 +1,59 @@
+package com.dpkj.modules.chs.dll;
+
+import com.sun.jna.Library;
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @Auther: 萧道子
+ * @Date: 2025/3/22 17:48
+ * @Description:
+ */
+@Slf4j
+public class HispayDll {
+
+ /**
+ * 获取 AlipayDll 实例,同时注册 AlipayDll 控件。
+ *
+ * @return AlipayDll 实例
+ * @throws DllRegistrationException 如果注册控件失败,抛出此异常
+ */
+ public static Dll instance() throws DllRegistrationException {
+ try {
+ return Native.load("PayClient", Dll.class);
+ } catch (UnsatisfiedLinkError e) {
+ log.info("[HispayDll][getPrintSDK][医保动态库] SDK注册失败:{}", e.getMessage());
+ throw new DllRegistrationException("Failed to load AlipayDll library: ", e);
+ }
+ }
+
+ /**
+ * 定义自定义异常类,用于表示注册控件时发生的错误
+ */
+ public static class DllRegistrationException extends Exception {
+ public DllRegistrationException(String message) {
+ super(message);
+ }
+
+ public DllRegistrationException(String message, Throwable cause) {
+ super(message, cause);
+ }
+ }
+
+
+ /**
+ * 定义接口映射本地库中的函数。
+ */
+ public interface Dll extends Library {
+
+ /**
+ * 设置打印端口和波特率。
+ *
+ * @return 返回操作结果代码
+ */
+ String NationEcTrans(String strUrl, String InData, Pointer OutData);
+
+ }
+
+}
diff --git a/src/main/java/com/dpkj/modules/chs/entity/AlipayEcRequestData.java b/src/main/java/com/dpkj/modules/chs/entity/AlipayEcRequestData.java
new file mode 100644
index 0000000..2b75ded
--- /dev/null
+++ b/src/main/java/com/dpkj/modules/chs/entity/AlipayEcRequestData.java
@@ -0,0 +1,44 @@
+package com.dpkj.modules.chs.entity;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * @Auther: 萧道子
+ * @Date: 2025/3/23 11:56
+ * @Description: 医保请求
+ */
+@Data
+@Accessors(chain = true)
+public class AlipayEcRequestData implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+
+ /**
+ * 机构 ID 必填
+ */
+ private String orgId;
+
+ /**
+ * 交易类型 必填
+ * ec.query: 电子凭证二维码解码接口
+ * cn.nhsa.qrcode.get: 终端医保电子凭证码解码接口
+ * cn.nhsa.auth.check:刷脸授权获取医保身份接口
+ * cn.nhsa.ec.pwd: 医保电子凭证密码核验接口
+ */
+ private String transType;
+
+ /**
+ * 接口请求参数 JSON格式字符串 必填
+ */
+ private JSONObject data;
+
+ /**
+ * 扩展参数 JSON格式字符串
+ */
+ private JSONObject extra;
+
+}
diff --git a/src/main/java/com/dpkj/modules/chs/service/IAlipayService.java b/src/main/java/com/dpkj/modules/chs/service/IAlipayService.java
new file mode 100644
index 0000000..e4dc9b4
--- /dev/null
+++ b/src/main/java/com/dpkj/modules/chs/service/IAlipayService.java
@@ -0,0 +1,4 @@
+package com.dpkj.modules.chs.service;
+
+public interface IAlipayService {
+}
diff --git a/src/main/java/com/dpkj/modules/chs/service/IHispayService.java b/src/main/java/com/dpkj/modules/chs/service/IHispayService.java
new file mode 100644
index 0000000..5315557
--- /dev/null
+++ b/src/main/java/com/dpkj/modules/chs/service/IHispayService.java
@@ -0,0 +1,4 @@
+package com.dpkj.modules.chs.service;
+
+public interface IHispayService {
+}
diff --git a/src/main/java/com/dpkj/modules/chs/service/impl/AlipayServiceImpl.java b/src/main/java/com/dpkj/modules/chs/service/impl/AlipayServiceImpl.java
new file mode 100644
index 0000000..2359566
--- /dev/null
+++ b/src/main/java/com/dpkj/modules/chs/service/impl/AlipayServiceImpl.java
@@ -0,0 +1,38 @@
+package com.dpkj.modules.chs.service.impl;
+
+import cn.hutool.core.lang.Console;
+import com.dpkj.modules.chs.dll.AlipayDll;
+import com.dpkj.modules.chs.service.IAlipayService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+
+/**
+ * @Auther: 萧道子
+ * @Date: 2025/3/22 16:29
+ * @Description:
+ */
+@Slf4j
+@Service
+public class AlipayServiceImpl implements IAlipayService {
+
+ private AlipayDll.Dll dll = AlipayDll.instance();
+
+
+ public AlipayServiceImpl() throws AlipayDll.DllRegistrationException {
+ }
+
+ @PostConstruct
+ public void postConstruct() {
+ log.info("[AlipayServiceImpl][postConstruct][医保DLL] 初始化动态链接库");
+ initPrinter();
+ }
+
+
+ private void initPrinter() {
+ Console.log(dll);
+ }
+
+
+}
diff --git a/src/main/java/com/dpkj/modules/chs/service/impl/HispayServiceImpl.java b/src/main/java/com/dpkj/modules/chs/service/impl/HispayServiceImpl.java
new file mode 100644
index 0000000..6ba4adc
--- /dev/null
+++ b/src/main/java/com/dpkj/modules/chs/service/impl/HispayServiceImpl.java
@@ -0,0 +1,38 @@
+package com.dpkj.modules.chs.service.impl;
+
+import cn.hutool.core.lang.Console;
+import com.dpkj.modules.chs.dll.HispayDll;
+import com.dpkj.modules.chs.service.IHispayService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+
+/**
+ * @Auther: 萧道子
+ * @Date: 2025/3/22 16:29
+ * @Description:
+ */
+@Slf4j
+@Service
+public class HispayServiceImpl implements IHispayService {
+
+ private HispayDll.Dll dll = HispayDll.instance();
+
+
+ public HispayServiceImpl() throws HispayDll.DllRegistrationException {
+ }
+
+ @PostConstruct
+ public void postConstruct() {
+ log.info("[HispayServiceImpl][postConstruct][医保DLL-HIS] 初始化动态链接库");
+ initPrinter();
+ }
+
+
+ private void initPrinter() {
+ Console.log(dll);
+ }
+
+
+}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 4a97d5e..e22ed8e 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,4 +1,8 @@
dpkj:
+ # 医保配置
+ chs:
+ # 医保机构编码
+ orgcode: H53082800070
file:
# 文件保存地址
path: G:\Temp\img
diff --git a/src/main/resources/application-pro.yml b/src/main/resources/application-pro.yml
index adba7f4..97dcbc8 100644
--- a/src/main/resources/application-pro.yml
+++ b/src/main/resources/application-pro.yml
@@ -1,4 +1,8 @@
dpkj:
+ # 医保配置
+ chs:
+ # 医保机构编码
+ orgcode: H53082800070
file:
# 文件保存地址
path: D:\Project\Express\upload
diff --git a/src/main/resources/templates/register.html b/src/main/resources/templates/register.html
index 195741a..45d674e 100644
--- a/src/main/resources/templates/register.html
+++ b/src/main/resources/templates/register.html
@@ -3,6 +3,23 @@
挂号单
+
@@ -27,9 +44,12 @@
总 费 用: 元
支付方式:
-
交易流水:
+
交易流水:
-
![QR Code]()
+
diff --git a/src/main/resources/win32-x86/NationECCode.dll b/src/main/resources/win32-x86/NationECCode.dll
new file mode 100644
index 0000000..5d0cf23
Binary files /dev/null and b/src/main/resources/win32-x86/NationECCode.dll differ
diff --git a/src/main/resources/win32-x86/PayClient.dll b/src/main/resources/win32-x86/PayClient.dll
new file mode 100644
index 0000000..26a7ba0
Binary files /dev/null and b/src/main/resources/win32-x86/PayClient.dll differ