his医保

This commit is contained in:
2025-09-25 20:48:27 +08:00
parent 283a0a1696
commit f73c42c994
15 changed files with 30 additions and 214 deletions

View File

@@ -13,7 +13,8 @@ echo 1、关闭端口进程%PROT%
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%PROT%"') do taskkill /pid %%m -t -f for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%PROT%"') do taskkill /pid %%m -t -f
echo 2、启动本地程序 echo 2、启动本地程序
start %CHSPATH%/javaw.exe -Dfile.encoding=utf-8 -Djava.library.path="%CHSPATH%;%CHSPATH%/CHSInterfaceYn" -Dlog.path=%~dp0 -jar %~dp0\%NAME%.jar --server.port=%PROT% cd /d %CHSPATH%/
start javaw.exe -Dfile.encoding=utf-8 -Djava.library.path="%CHSPATH%;%CHSPATH%/CHSInterfaceYn" -Dlog.path=%~dp0 -jar %~dp0\%NAME%.jar --server.port=%PROT%
:: 延迟5秒 :: 延迟5秒
timeout /NOBREAK /T 5 >nul timeout /NOBREAK /T 5 >nul

View File

@@ -1,21 +0,0 @@
package com.dpkj.modules.chs.controller;
import com.dpkj.modules.chs.service.IAlipayService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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;
}

View File

@@ -1,59 +0,0 @@
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("AlipayChs", 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);
}
}

View File

@@ -1,14 +0,0 @@
package com.dpkj.modules.chs.dll;
import lombok.extern.slf4j.Slf4j;
/**
* @Auther: 萧道子
* @Date: 2025/3/22 17:48
* @Description:
*/
@Slf4j
public class HispayDll {
}

View File

@@ -1,44 +0,0 @@
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;
}

View File

@@ -1,4 +1,4 @@
package com.dpkj.modules.chs.constant; package com.dpkj.modules.chs.hischs.constant;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;

View File

@@ -1,13 +1,13 @@
package com.dpkj.modules.chs.controller; package com.dpkj.modules.chs.hischs.controller;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dpkj.common.vo.Result; import com.dpkj.common.vo.Result;
import com.dpkj.common.vo.ResultData; import com.dpkj.common.vo.ResultData;
import com.dpkj.modules.chs.constant.ChsPayStateConst; import com.dpkj.modules.chs.hischs.constant.ChsPayStateConst;
import com.dpkj.modules.chs.service.IHispayService; import com.dpkj.modules.chs.hischs.service.IHispayService;
import com.dpkj.modules.chs.vo.OutpatientBeginModel; import com.dpkj.modules.chs.hischs.vo.OutpatientBeginModel;
import com.dpkj.modules.chs.vo.OutpatientFinalModel; import com.dpkj.modules.chs.hischs.vo.OutpatientFinalModel;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;

View File

@@ -1,9 +1,9 @@
package com.dpkj.modules.chs.service; package com.dpkj.modules.chs.hischs.service;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dpkj.common.vo.ResultData; import com.dpkj.common.vo.ResultData;
import com.dpkj.modules.chs.vo.OutpatientBeginModel; import com.dpkj.modules.chs.hischs.vo.OutpatientBeginModel;
import com.dpkj.modules.chs.vo.OutpatientFinalModel; import com.dpkj.modules.chs.hischs.vo.OutpatientFinalModel;
public interface IHispayService { public interface IHispayService {

View File

@@ -1,17 +1,16 @@
package com.dpkj.modules.chs.service.impl; package com.dpkj.modules.chs.hischs.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.XmlUtil; import cn.hutool.core.util.XmlUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dpkj.common.config.ChsConfig;
import com.dpkj.common.config.HisConfig; import com.dpkj.common.config.HisConfig;
import com.dpkj.common.vo.ResultData; import com.dpkj.common.vo.ResultData;
import com.dpkj.modules.chs.constant.ChsPayStateConst; import com.dpkj.modules.chs.hischs.constant.ChsPayStateConst;
import com.dpkj.modules.chs.service.IHispayService; import com.dpkj.modules.chs.hischs.service.IHispayService;
import com.dpkj.modules.chs.vo.OutpatientBeginModel; import com.dpkj.modules.chs.hischs.vo.OutpatientBeginModel;
import com.dpkj.modules.chs.vo.OutpatientFinalModel; import com.dpkj.modules.chs.hischs.vo.OutpatientFinalModel;
import com.jacob.activeX.ActiveXComponent; import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch; import com.jacob.com.Dispatch;
import com.jacob.com.Variant; import com.jacob.com.Variant;
@@ -34,11 +33,6 @@ import java.util.Map;
// @AllArgsConstructor // @AllArgsConstructor
public class HispayServiceImpl implements IHispayService { public class HispayServiceImpl implements IHispayService {
@Autowired
private HisConfig hisConfig;
@Autowired
private ChsConfig chsConfig;
// COM对象 // COM对象
private static ActiveXComponent dispatch; private static ActiveXComponent dispatch;
@@ -61,7 +55,7 @@ public class HispayServiceImpl implements IHispayService {
log.info("[HispayServiceImpl][instanceActive][HIS医保COM库] 加载成功"); log.info("[HispayServiceImpl][instanceActive][HIS医保COM库] 加载成功");
return activeXComponent; return activeXComponent;
} catch (UnsatisfiedLinkError e) { } catch (UnsatisfiedLinkError e) {
log.info("[HispayServiceImpl][instanceActive][HIS医保COM库] 加载失败:{}", e.getMessage()); log.error("[HispayServiceImpl][instanceActive][HIS医保COM库] 加载失败:{}", e.getMessage());
throw new RuntimeException("HIS医保COM库加载失败" + e.getMessage(), e); throw new RuntimeException("HIS医保COM库加载失败" + e.getMessage(), e);
} }
} }
@@ -137,14 +131,14 @@ public class HispayServiceImpl implements IHispayService {
.fluentPut("hzxm", "") // 患者姓名 .fluentPut("hzxm", "") // 患者姓名
.fluentPut("phone", ""); // 患者电话号码 .fluentPut("phone", ""); // 患者电话号码
String params = processParameters(val, null); String params = processParameters(val, null);
log.info("[HispayServiceImpl][readCode][医保读卡-电子凭证] 接口入参:{}", params); log.debug("[HispayServiceImpl][readCode][医保读卡-电子凭证] 接口入参:{}", params);
/** 2、调用COM函数 */ /** 2、调用COM函数 */
Variant vres = new Variant("", true); Variant vres = new Variant("", true);
Variant call = Dispatch.call(dispatch, "fRun", "BMZXX010", params, vres); Variant call = Dispatch.call(dispatch, "fRun", "BMZXX010", params, vres);
String resStr = vres.getStringRef(); String resStr = vres.getStringRef();
log.info("[HispayServiceImpl][readCode][医保读卡-电子凭证] call返回值{} 结果:{}", call, resStr); log.debug("[HispayServiceImpl][readCode][医保读卡-电子凭证] call返回值{} 结果:{}", call, resStr);
/** 3、处理读卡结果 */ /** 3、处理读卡结果 */
@@ -167,14 +161,14 @@ public class HispayServiceImpl implements IHispayService {
.fluentPut("hzxm", "") // 患者姓名 .fluentPut("hzxm", "") // 患者姓名
.fluentPut("phone", ""); // 患者电话号码 .fluentPut("phone", ""); // 患者电话号码
String params = processParameters(val, password); String params = processParameters(val, password);
log.info("[HispayServiceImpl][readCard][医保读卡-医保卡] 接口入参:{}", params); log.debug("[HispayServiceImpl][readCard][医保读卡-医保卡] 接口入参:{}", params);
/** 2、调用COM函数 */ /** 2、调用COM函数 */
Variant vres = new Variant("", true); Variant vres = new Variant("", true);
Variant call = Dispatch.call(dispatch, "fRun", "BMZXX010", params, vres); Variant call = Dispatch.call(dispatch, "fRun", "BMZXX010", params, vres);
String resStr = vres.getStringRef(); String resStr = vres.getStringRef();
log.info("[HispayServiceImpl][readCard][医保读卡-医保卡] call返回值{} 结果:{}", call, resStr); log.debug("[HispayServiceImpl][readCard][医保读卡-医保卡] call返回值{} 结果:{}", call, resStr);
/** 3、处理读卡结果 */ /** 3、处理读卡结果 */
JSONObject result = verifyResult(resStr); JSONObject result = verifyResult(resStr);
@@ -196,7 +190,7 @@ public class HispayServiceImpl implements IHispayService {
.fluentPut("zfjsbz", "0") // 是否自费结算0根据医保代码缴费1自费结算默认自费结算 .fluentPut("zfjsbz", "0") // 是否自费结算0根据医保代码缴费1自费结算默认自费结算
.fluentPut("ybrc", ""); // 医保入参xml节点 .fluentPut("ybrc", ""); // 医保入参xml节点
String params = processParameters(val, data.getPassword()); String params = processParameters(val, data.getPassword());
log.info("[HispayServiceImpl][outpatientBudget][门诊缴费-预算] 接口入参:{}", params); log.debug("[HispayServiceImpl][outpatientBudget][门诊缴费-预算] 接口入参:{}", params);
String requestTime = DateUtil.now(); String requestTime = DateUtil.now();
@@ -206,7 +200,7 @@ public class HispayServiceImpl implements IHispayService {
String responseTime = DateUtil.now(); String responseTime = DateUtil.now();
String resStr = resVariant.getStringRef(); String resStr = resVariant.getStringRef();
log.info("[HispayServiceImpl][outpatientBudget][门诊缴费-预算] call返回值{} 结果:{}", call, resStr); log.debug("[HispayServiceImpl][outpatientBudget][门诊缴费-预算] call返回值{} 结果:{}", call, resStr);
/** 3、处理结果 */ /** 3、处理结果 */
@@ -249,7 +243,7 @@ public class HispayServiceImpl implements IHispayService {
.fluentPut("ptlsh", "") .fluentPut("ptlsh", "")
.fluentPut("jysm", ""); .fluentPut("jysm", "");
String params = processParameters(val, null); String params = processParameters(val, null);
log.info("[HispayServiceImpl][chsCodeAsOutpatientFinal][门诊缴费-结算] 接口入参:{}", params); log.debug("[HispayServiceImpl][chsCodeAsOutpatientFinal][门诊缴费-结算] 接口入参:{}", params);
/** 2、调用COM函数 */ /** 2、调用COM函数 */
Variant resVariant = new Variant("", true); Variant resVariant = new Variant("", true);
@@ -257,7 +251,7 @@ public class HispayServiceImpl implements IHispayService {
String responseTime = DateUtil.now(); String responseTime = DateUtil.now();
String resStr = resVariant.getStringRef(); String resStr = resVariant.getStringRef();
log.info("[HispayServiceImpl][chsCodeAsOutpatientFinal][门诊缴费-结算] call返回值{} 结果:{}", call, resStr); log.debug("[HispayServiceImpl][chsCodeAsOutpatientFinal][门诊缴费-结算] call返回值{} 结果:{}", call, resStr);
/** 3、处理结果 */ /** 3、处理结果 */
JSONObject result = verifyResult(resStr); JSONObject result = verifyResult(resStr);

View File

@@ -1,4 +1,4 @@
package com.dpkj.modules.chs.vo; package com.dpkj.modules.chs.hischs.vo;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;

View File

@@ -1,4 +1,4 @@
package com.dpkj.modules.chs.vo; package com.dpkj.modules.chs.hischs.vo;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;

View File

@@ -1,4 +0,0 @@
package com.dpkj.modules.chs.service;
public interface IAlipayService {
}

View File

@@ -1,37 +0,0 @@
package com.dpkj.modules.chs.service.impl;
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;
@PostConstruct
public void postConstruct() {
log.info("[AlipayServiceImpl][postConstruct][医保DLL] 初始化动态链接库");
try {
dll = AlipayDll.instance();
} catch (AlipayDll.DllRegistrationException e) {
// TODO 萧道子 2025/6/19 :
}
initPrinter();
}
private void initPrinter() {
}
}

View File

@@ -54,15 +54,15 @@ dpkj:
#dll文件路径 #dll文件路径
dll-path: C:/opt/ant-abcp/bpaas_api.dll dll-path: C:/opt/ant-abcp/bpaas_api.dll
#IOT 应用管理-appid #IOT 应用管理-appid
app-id: 2021005138656502 app-id: 2021005151604729
#IOT应用版本 #IOT应用版本
app-version: 1.0.0.0 app-version: 1.0.0.0
#签约商家的 PID以 2088 开头,企业主体 #签约商家的 PID以 2088 开头,企业主体
merchant-id: 2088641941653700 merchant-id: 2088170977486823
#商家机具终端编号,每台设备保持唯一 #商家机具终端编号,每台设备保持唯一
device-num: P060003750 device-num: P060003750
#服务商的 PID #服务商的 PID
partner-id: 2088641941653700 partner-id: 2088170977486823
# 核心入参 serviceId # 核心入参 serviceId
service-id: pay service-id: pay
#微信模块 #微信模块