医保模块更新

This commit is contained in:
萧道子 2025-08-07 15:18:40 +08:00
parent b299ae021f
commit a4992af643
32 changed files with 286 additions and 128 deletions

View File

@ -11,8 +11,8 @@ import org.springframework.stereotype.Component;
*/ */
@Data @Data
@Component @Component
@ConfigurationProperties(prefix = "dpkj.chs") @ConfigurationProperties(prefix = "dpkj.chs.pad")
public class ChsConfig { public class PadChsConfig {
/** /**
* 医保机构代码 * 医保机构代码

View File

@ -0,0 +1,38 @@
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.yn")
public class YnChsConfig {
/**
* 医保接口地址
*/
private String url;
/**
* 医保机构编码
*/
private String fixmedinsCode;
/**
* 服务商统一社会信用代码
*/
private String infosyscode;
/**
* 服务商ID码
*/
private String infosyssign;
}

View File

@ -1,18 +0,0 @@
package com.dpkj.modules.chs.dll;
import com.jacob.activeX.ActiveXComponent;
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 {
}

View File

@ -1,4 +1,4 @@
package com.dpkj.modules.chs.constant; package com.dpkj.modules.chs.hispad.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.hispad.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.hispad.constant.ChsPayStateConst;
import com.dpkj.modules.chs.service.IHispayService; import com.dpkj.modules.chs.hispad.service.IHispayService;
import com.dpkj.modules.chs.vo.OutpatientBeginModel; import com.dpkj.modules.chs.hispad.vo.OutpatientBeginModel;
import com.dpkj.modules.chs.vo.OutpatientFinalModel; import com.dpkj.modules.chs.hispad.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.hispad.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.hispad.vo.OutpatientBeginModel;
import com.dpkj.modules.chs.vo.OutpatientFinalModel; import com.dpkj.modules.chs.hispad.vo.OutpatientFinalModel;
public interface IHispayService { public interface IHispayService {

View File

@ -1,17 +1,17 @@
package com.dpkj.modules.chs.service.impl; package com.dpkj.modules.chs.hispad.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.PadChsConfig;
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.hispad.constant.ChsPayStateConst;
import com.dpkj.modules.chs.service.IHispayService; import com.dpkj.modules.chs.hispad.service.IHispayService;
import com.dpkj.modules.chs.vo.OutpatientBeginModel; import com.dpkj.modules.chs.hispad.vo.OutpatientBeginModel;
import com.dpkj.modules.chs.vo.OutpatientFinalModel; import com.dpkj.modules.chs.hispad.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;
@ -37,7 +37,7 @@ public class HispayServiceImpl implements IHispayService {
@Autowired @Autowired
private HisConfig hisConfig; private HisConfig hisConfig;
@Autowired @Autowired
private ChsConfig chsConfig; private PadChsConfig chsPadConfig;
// COM对象 // COM对象
private static ActiveXComponent dispatch; private static ActiveXComponent dispatch;

View File

@ -1,4 +1,4 @@
package com.dpkj.modules.chs.vo; package com.dpkj.modules.chs.hispad.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.hispad.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.constant; package com.dpkj.modules.chs.padchs.constant;
import lombok.Getter; import lombok.Getter;

View File

@ -1,4 +1,4 @@
package com.dpkj.modules.chs.constant; package com.dpkj.modules.chs.padchs.constant;
public interface NationECCodeConst { public interface NationECCodeConst {

View File

@ -1,10 +1,10 @@
package com.dpkj.modules.chs.controller; package com.dpkj.modules.chs.padchs.controller;
import com.dpkj.common.vo.Result; import com.dpkj.common.vo.Result;
import com.dpkj.modules.chs.model.ChsModel; import com.dpkj.modules.chs.padchs.model.ChsModel;
import com.dpkj.modules.chs.response.ChsCheckResponse; import com.dpkj.modules.chs.padchs.response.ChsCheckResponse;
import com.dpkj.modules.chs.response.ChsQrcodeResponse; import com.dpkj.modules.chs.padchs.response.ChsQrcodeResponse;
import com.dpkj.modules.chs.service.IPadChsPayService; import com.dpkj.modules.chs.padchs.service.IPadChsPayService;
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,4 +1,4 @@
package com.dpkj.modules.chs.dll; package com.dpkj.modules.chs.padchs.dll;
import com.sun.jna.Library; import com.sun.jna.Library;
import com.sun.jna.Native; import com.sun.jna.Native;
@ -29,7 +29,7 @@ public class PadChsPayDll {
return dll; return dll;
} catch (UnsatisfiedLinkError e) { } catch (UnsatisfiedLinkError e) {
log.info("[PadChsPayDll][instance][医保动态库] SDK注册失败{}", e.getMessage()); log.info("[PadChsPayDll][instance][国家级医保动态库] SDK注册失败{}", e.getMessage());
throw new DllRegistrationException("Failed to load PadChsPayDll library: ", e); throw new DllRegistrationException("Failed to load PadChsPayDll library: ", e);
} }
} }

View File

@ -1,4 +1,4 @@
package com.dpkj.modules.chs.model; package com.dpkj.modules.chs.padchs.model;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@ -1,4 +1,4 @@
package com.dpkj.modules.chs.request; package com.dpkj.modules.chs.padchs.request;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.dpkj.modules.chs.request; package com.dpkj.modules.chs.padchs.request;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.dpkj.modules.chs.request; package com.dpkj.modules.chs.padchs.request;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.dpkj.modules.chs.request; package com.dpkj.modules.chs.padchs.request;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.dpkj.modules.chs.request; package com.dpkj.modules.chs.padchs.request;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.dpkj.modules.chs.request; package com.dpkj.modules.chs.padchs.request;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.dpkj.modules.chs.response; package com.dpkj.modules.chs.padchs.response;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.dpkj.modules.chs.response; package com.dpkj.modules.chs.padchs.response;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.dpkj.modules.chs.response; package com.dpkj.modules.chs.padchs.response;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.dpkj.modules.chs.response; package com.dpkj.modules.chs.padchs.response;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.Data; import lombok.Data;

View File

@ -1,8 +1,8 @@
package com.dpkj.modules.chs.service; package com.dpkj.modules.chs.padchs.service;
import com.dpkj.modules.chs.model.ChsModel; import com.dpkj.modules.chs.padchs.model.ChsModel;
import com.dpkj.modules.chs.response.ChsCheckResponse; import com.dpkj.modules.chs.padchs.response.ChsCheckResponse;
import com.dpkj.modules.chs.response.ChsQrcodeResponse; import com.dpkj.modules.chs.padchs.response.ChsQrcodeResponse;
public interface IPadChsPayService { public interface IPadChsPayService {

View File

@ -1,25 +1,25 @@
package com.dpkj.modules.chs.service.impl; package com.dpkj.modules.chs.padchs.service.impl;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
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 com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.dpkj.common.config.ChsConfig; import com.dpkj.common.config.PadChsConfig;
import com.dpkj.common.utils.IDGenerator; import com.dpkj.common.utils.IDGenerator;
import com.dpkj.modules.chs.constant.ChsDictEnum; import com.dpkj.modules.chs.padchs.constant.ChsDictEnum;
import com.dpkj.modules.chs.constant.NationECCodeConst; import com.dpkj.modules.chs.padchs.constant.NationECCodeConst;
import com.dpkj.modules.chs.dll.PadChsPayDll; import com.dpkj.modules.chs.padchs.dll.PadChsPayDll;
import com.dpkj.modules.chs.model.ChsModel; import com.dpkj.modules.chs.padchs.model.ChsModel;
import com.dpkj.modules.chs.request.ChsAuthRequest; import com.dpkj.modules.chs.padchs.request.ChsAuthRequest;
import com.dpkj.modules.chs.request.ChsCheckRequest; import com.dpkj.modules.chs.padchs.request.ChsCheckRequest;
import com.dpkj.modules.chs.request.ChsQrcodeRequest; import com.dpkj.modules.chs.padchs.request.ChsQrcodeRequest;
import com.dpkj.modules.chs.request.ChsRequestCommon; import com.dpkj.modules.chs.padchs.request.ChsRequestCommon;
import com.dpkj.modules.chs.response.ChsAuthResponse; import com.dpkj.modules.chs.padchs.response.ChsAuthResponse;
import com.dpkj.modules.chs.response.ChsCheckResponse; import com.dpkj.modules.chs.padchs.response.ChsCheckResponse;
import com.dpkj.modules.chs.response.ChsQrcodeResponse; import com.dpkj.modules.chs.padchs.response.ChsQrcodeResponse;
import com.dpkj.modules.chs.response.ChsResponseCommon; import com.dpkj.modules.chs.padchs.response.ChsResponseCommon;
import com.dpkj.modules.chs.service.IPadChsPayService; import com.dpkj.modules.chs.padchs.service.IPadChsPayService;
import com.sun.jna.Memory; import com.sun.jna.Memory;
import com.sun.jna.Pointer; import com.sun.jna.Pointer;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -40,17 +40,17 @@ public class PadChsPayServiceImpl implements IPadChsPayService {
private PadChsPayDll.EcDll dll; private PadChsPayDll.EcDll dll;
@Autowired @Autowired
private ChsConfig chsConfig; private PadChsConfig chsPadConfig;
@PostConstruct @PostConstruct
public void postConstruct() { public void postConstruct() {
log.info("[PadChsPayServiceImpl][postConstruct][Ali医保DLL] 初始化动态链接库"); log.info("[PadChsPayServiceImpl][postConstruct][PAD医保DLL] 初始化动态链接库");
try { try {
dll = PadChsPayDll.instance(); dll = PadChsPayDll.instance();
} catch (PadChsPayDll.DllRegistrationException e) { } catch (PadChsPayDll.DllRegistrationException e) {
log.error("[PadChsPayServiceImpl][postConstruct][PAD保DLL] 加载失败:{}", e.getMessage()); log.error("[PadChsPayServiceImpl][postConstruct][PAD保DLL] 加载失败:{}", e.getMessage());
throw new RuntimeException("Ali医保DLL库加载失败" + e.getMessage(), e); throw new RuntimeException("PAD医保DLL库加载失败" + e.getMessage(), e);
} }
initPrinter(); initPrinter();
} }
@ -67,22 +67,22 @@ public class PadChsPayServiceImpl implements IPadChsPayService {
// 封装入参 // 封装入参
String outBizNo = IDGenerator.getSnowflakeIdToStr(); String outBizNo = IDGenerator.getSnowflakeIdToStr();
ChsQrcodeRequest data = ChsQrcodeRequest.builder() ChsQrcodeRequest data = ChsQrcodeRequest.builder()
.orgId(chsConfig.getOrgId()) .orgId(chsPadConfig.getOrgId())
.outBizNo(outBizNo) .outBizNo(outBizNo)
.businessType(ChsDictEnum.BusinessType.YY_201.str()) .businessType(ChsDictEnum.BusinessType.YY_201.str())
.operatorId(chsConfig.getOperatorId()) .operatorId(chsPadConfig.getOperatorId())
.operatorName(chsConfig.getOperatorName()) .operatorName(chsPadConfig.getOperatorName())
.officeId(StrUtil.isNotEmpty(val.getOfficeId()) ? val.getOfficeId() : chsConfig.getOfficeId()) .officeId(StrUtil.isNotEmpty(val.getOfficeId()) ? val.getOfficeId() : chsPadConfig.getOfficeId())
.officeName(StrUtil.isNotEmpty(val.getOfficeName()) ? val.getOfficeName() : chsConfig.getOfficeName()) .officeName(StrUtil.isNotEmpty(val.getOfficeName()) ? val.getOfficeName() : chsPadConfig.getOfficeName())
.build(); .build();
ChsRequestCommon request = new ChsRequestCommon(chsConfig.getOrgId(), NationECCodeConst.TRANSTYPE_ALICHS_QRCODEGET, JSONObject.parseObject(data.toString())); ChsRequestCommon request = new ChsRequestCommon(chsPadConfig.getOrgId(), NationECCodeConst.TRANSTYPE_ALICHS_QRCODEGET, JSONObject.parseObject(data.toString()));
log.debug("[PadChsPayServiceImpl][getInfoByQrcode][终端医保电子凭证码解码接口] 入参:{}", request.toString()); log.debug("[PadChsPayServiceImpl][getInfoByQrcode][终端医保电子凭证码解码接口] 入参:{}", request.toString());
DateTime requestTime = DateUtil.date(); DateTime requestTime = DateUtil.date();
// 调用接口 // 调用接口
Pointer resp = new Memory(1024 * 10); Pointer resp = new Memory(1024 * 10);
String resultStr = dll.NationEcTrans(chsConfig.getUrl(), request.toString(), resp); String resultStr = dll.NationEcTrans(chsPadConfig.getUrl(), request.toString(), resp);
String response = resp.getString(0, "GB2312"); String response = resp.getString(0, "GB2312");
DateTime responseTime = DateUtil.date(); DateTime responseTime = DateUtil.date();
@ -122,22 +122,22 @@ public class PadChsPayServiceImpl implements IPadChsPayService {
// 封装入参 // 封装入参
String outBizNo = IDGenerator.getSnowflakeIdToStr(); String outBizNo = IDGenerator.getSnowflakeIdToStr();
ChsAuthRequest data = ChsAuthRequest.builder() ChsAuthRequest data = ChsAuthRequest.builder()
.orgId(chsConfig.getOrgId()) .orgId(chsPadConfig.getOrgId())
.outBizNo(outBizNo) .outBizNo(outBizNo)
.businessType(ChsDictEnum.BusinessType.YY_201.str()) .businessType(ChsDictEnum.BusinessType.YY_201.str())
.operatorId(chsConfig.getOperatorId()) .operatorId(chsPadConfig.getOperatorId())
.operatorName(chsConfig.getOperatorName()) .operatorName(chsPadConfig.getOperatorName())
.officeId(StrUtil.isNotEmpty(val.getOfficeId()) ? val.getOfficeId() : chsConfig.getOfficeId()) .officeId(StrUtil.isNotEmpty(val.getOfficeId()) ? val.getOfficeId() : chsPadConfig.getOfficeId())
.officeName(StrUtil.isNotEmpty(val.getOfficeName()) ? val.getOfficeName() : chsConfig.getOfficeName()) .officeName(StrUtil.isNotEmpty(val.getOfficeName()) ? val.getOfficeName() : chsPadConfig.getOfficeName())
.build(); .build();
ChsRequestCommon request = new ChsRequestCommon(chsConfig.getOrgId(), NationECCodeConst.TRANSTYPE_ALICHS_AUTH, JSONObject.parseObject(data.toString())); ChsRequestCommon request = new ChsRequestCommon(chsPadConfig.getOrgId(), NationECCodeConst.TRANSTYPE_ALICHS_AUTH, JSONObject.parseObject(data.toString()));
log.debug("[PadChsPayServiceImpl][chsAuth][刷脸获取医保用户身份授权接口] 入参:{}", request.toString()); log.debug("[PadChsPayServiceImpl][chsAuth][刷脸获取医保用户身份授权接口] 入参:{}", request.toString());
DateTime requestTime = DateUtil.date(); DateTime requestTime = DateUtil.date();
// 调用接口 // 调用接口
Pointer resp = new Memory(1024 * 10); Pointer resp = new Memory(1024 * 10);
String resultStr = dll.NationEcTrans(chsConfig.getUrl(), request.toString(), resp); String resultStr = dll.NationEcTrans(chsPadConfig.getUrl(), request.toString(), resp);
String response = resp.getString(0, "GB2312"); String response = resp.getString(0, "GB2312");
DateTime responseTime = DateUtil.date(); DateTime responseTime = DateUtil.date();
@ -170,23 +170,23 @@ public class PadChsPayServiceImpl implements IPadChsPayService {
// 封装入参 // 封装入参
String outBizNo = IDGenerator.getSnowflakeIdToStr(); String outBizNo = IDGenerator.getSnowflakeIdToStr();
ChsCheckRequest data = ChsCheckRequest.builder() ChsCheckRequest data = ChsCheckRequest.builder()
.orgId(chsConfig.getOrgId()) .orgId(chsPadConfig.getOrgId())
.outBizNo(outBizNo) .outBizNo(outBizNo)
.businessType(ChsDictEnum.BusinessType.YY_201.str()) .businessType(ChsDictEnum.BusinessType.YY_201.str())
.operatorId(chsConfig.getOperatorId()) .operatorId(chsPadConfig.getOperatorId())
.operatorName(chsConfig.getOperatorName()) .operatorName(chsPadConfig.getOperatorName())
.officeId(StrUtil.isNotEmpty(val.getOfficeId()) ? val.getOfficeId() : chsConfig.getOfficeId()) .officeId(StrUtil.isNotEmpty(val.getOfficeId()) ? val.getOfficeId() : chsPadConfig.getOfficeId())
.officeName(StrUtil.isNotEmpty(val.getOfficeName()) ? val.getOfficeName() : chsConfig.getOfficeName()) .officeName(StrUtil.isNotEmpty(val.getOfficeName()) ? val.getOfficeName() : chsPadConfig.getOfficeName())
.authNo(authNo) .authNo(authNo)
.build(); .build();
ChsRequestCommon request = new ChsRequestCommon(chsConfig.getOrgId(), NationECCodeConst.TRANSTYPE_ALICHS_AUTHCHECK, JSONObject.parseObject(data.toString())); ChsRequestCommon request = new ChsRequestCommon(chsPadConfig.getOrgId(), NationECCodeConst.TRANSTYPE_ALICHS_AUTHCHECK, JSONObject.parseObject(data.toString()));
log.debug("[PadChsPayServiceImpl][chsCheck][刷脸授权获取医保身份接口] 入参:{}", request.toString()); log.debug("[PadChsPayServiceImpl][chsCheck][刷脸授权获取医保身份接口] 入参:{}", request.toString());
DateTime requestTime = DateUtil.date(); DateTime requestTime = DateUtil.date();
// 调用接口 // 调用接口
Pointer resp = new Memory(1024 * 10); Pointer resp = new Memory(1024 * 10);
String resultStr = dll.NationEcTrans(chsConfig.getUrl(), request.toString(), resp); String resultStr = dll.NationEcTrans(chsPadConfig.getUrl(), request.toString(), resp);
String response = resp.getString(0, "GB2312"); String response = resp.getString(0, "GB2312");
DateTime responseTime = DateUtil.date(); DateTime responseTime = DateUtil.date();

View File

@ -0,0 +1,63 @@
package com.dpkj.modules.chs.ynchs.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 YnChsPayDll {
/**
* 获取 YnChsPayDll 实例同时注册 YnChsPayDll 控件
*
* @return YnChsPayDll 实例
* @throws DllRegistrationException 如果注册控件失败抛出此异常
*/
public static EcDll instance() throws DllRegistrationException {
try {
return Native.load("CHSInterfaceYn", EcDll.class);
} catch (UnsatisfiedLinkError e) {
log.info("[YnChsPayDll][instance][云南省级医保动态库] SDK注册失败{}", e.getMessage());
throw new DllRegistrationException("Failed to load YnChsPayDll 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 EcDll extends Library {
/**
* 交易接口调用函数
*
* @param strUrl : 业务请求地址
* @param InData : 交易请求数据 - JSON格式字符串
* @param OutData : 交易返回数据 - code为0时交易成功否则返回错误信息说明
* @return java.lang.String 返回字符串 0000 为动态库调用成功
* @author 萧道子 2025/7/30
*/
String NationEcTrans(String strUrl, String InData, Pointer OutData);
}
}

View File

@ -0,0 +1,9 @@
package com.dpkj.modules.chs.ynchs.service;
/**
* @Auther: 萧道子
* @Date: 2025/8/7 14:45
* @Description:
*/
public interface IYnChsPayService {
}

View File

@ -0,0 +1,42 @@
package com.dpkj.modules.chs.ynchs.service.impl;
import com.dpkj.common.config.YnChsConfig;
import com.dpkj.modules.chs.ynchs.dll.YnChsPayDll;
import com.dpkj.modules.chs.ynchs.service.IYnChsPayService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
/**
* @Auther: 萧道子
* @Date: 2025/8/7 14:46
* @Description:
*/
@Slf4j
@Service
public class YnChsPayServiceImpl implements IYnChsPayService {
private YnChsPayDll.EcDll dll;
@Autowired
private YnChsConfig ynChsConfig;
@PostConstruct
public void postConstruct() {
log.info("[YnChsPayServiceImpl][postConstruct][云南省局医保DLL] 初始化动态链接库");
try {
dll = YnChsPayDll.instance();
} catch (YnChsPayDll.DllRegistrationException e) {
log.error("[YnChsPayServiceImpl][postConstruct][云南省局医保DLL] 加载失败:{}", e.getMessage());
throw new RuntimeException("云南省局医保DLL库加载失败" + e.getMessage(), e);
}
initPrinter();
}
private void initPrinter() {
// TODO 萧道子 2025/7/31 :
}
}

View File

@ -40,20 +40,32 @@ spring:
dpkj: dpkj:
#后端项目访问地址 #https://yinyitong.yzqingyan.cn/ http://172.16.11.13:15946/ ttps://yinyitong.yzqingyan.cn #后端项目访问地址 #https://yinyitong.yzqingyan.cn/ http://172.16.11.13:15946/ ttps://yinyitong.yzqingyan.cn
serverurl: http://localhost:5946/api/ serverurl: http://localhost:5946/api/
# 医保配置 # 国家统一医保配置
chs: chs:
# 医保中台接口地址 # 医保中台配置
url: http://ec.yn.hsip.gov.cn/localcfc/api/hsecfc/localQrCodeQuery pad:
# 医保机构编码 # 医保中台接口地址
org-id: H53082800070 url: http://ec.yn.hsip.gov.cn/localcfc/api/hsecfc/localQrCodeQuery
# 收款员-编号 # 医保机构编码
operator-id: 0001 org-id: H53082800070
# 收款员-姓名 # 收款员-编号
operator-name: admin operator-id: 0001
# 科室-编号 # 收款员-姓名
office-id: 00031 operator-name: admin
# 科室-名称 # 科室-编号
office-name: 门诊 office-id: 00031
# 科室-名称
office-name: 门诊
# 云南省级医保配置
yn:
# 省局医保接口地址
url: http://ldjk.yn.hsip.gov.cn/eapdomain/org/local/api/hos/uldFeeInfo
# 医保机构编码
fixmedins-code: H53082800070
# 服务商统一社会信用代码
infosyscode: 9150000020285539XU
# 服务商ID码
infosyssign: 7f6fa92af64a403eb871a3c800cb6946
file: file:
# 文件保存地址 # 文件保存地址
path: G:\Temp\img path: G:\Temp\img

View File

@ -29,20 +29,32 @@ dpkj:
#后端项目访问地址 #后端项目访问地址
# 改为正式的地址 http://10.121.1.44/api/ http://172.16.50.20:15946/apitest/ http://www.lczyyy.com/apitest/ # 改为正式的地址 http://10.121.1.44/api/ http://172.16.50.20:15946/apitest/ http://www.lczyyy.com/apitest/
serverurl: http://10.121.1.44/api/ serverurl: http://10.121.1.44/api/
# 医保配置 # 国家统一医保配置
chs: chs:
# 医保中台接口地址 # 医保中台配置
url: http://ec.yn.hsip.gov.cn/localcfc/api/hsecfc/localQrCodeQuery pad:
# 医保机构编码 # 医保中台接口地址
org-id: H53082800070 url: http://ec.yn.hsip.gov.cn/localcfc/api/hsecfc/localQrCodeQuery
# 收款员-编号 # 医保机构编码
operator-id: 0001 org-id: H53082800070
# 收款员-姓名 # 收款员-编号
operator-name: admin operator-id: 0001
# 科室-编号 # 收款员-姓名
office-id: 00031 operator-name: admin
# 科室-名称 # 科室-编号
office-name: 门诊 office-id: 00031
# 科室-名称
office-name: 门诊
# 云南省级医保配置
yn:
# 省局医保接口地址
url: http://ldjk.yn.hsip.gov.cn/eapdomain/org/local/api/hos/uldFeeInfo
# 医保机构编码
fixmedins-code: H53082800070
# 服务商统一社会信用代码
infosyscode: 9150000020285539XU
# 服务商ID码
infosyssign: 7f6fa92af64a403eb871a3c800cb6946
file: file:
# 文件保存地址 # 文件保存地址
path: D:\Project\Express\upload path: D:\Project\Express\upload

Binary file not shown.