his医保
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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 {
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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 {
|
||||||
|
|
||||||
@@ -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);
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
package com.dpkj.modules.chs.service;
|
|
||||||
|
|
||||||
public interface IAlipayService {
|
|
||||||
}
|
|
||||||
@@ -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() {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
#微信模块
|
#微信模块
|
||||||
|
|||||||
Reference in New Issue
Block a user