Переглянути джерело

feature : init project

transactional-demo
王昱 1 місяць тому
джерело
коміт
a8329d1a2b
31 змінених файлів з 2312 додано та 2 видалено
  1. +11
    -0
      src/main/java/com/szyx/tcm/supervision/controller/TestController.java
  2. +68
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/DiseInfo.java
  3. +131
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/FeeDetail.java
  4. +82
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceAccessTokenRep.java
  5. +30
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceAccessTokenReq.java
  6. +80
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceCoreCommonInputMessage.java
  7. +41
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceCoreCommonOutputMessage.java
  8. +55
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceCoreInputMessage1101.java
  9. +288
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceCoreOutputMessage1101.java
  10. +55
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceGetOrderReq.java
  11. +56
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceMiddleGroundInputMessage.java
  12. +76
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceMiddleGroundOutputMessage.java
  13. +67
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsurancePayOrderInputMessage.java
  14. +65
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsurancePayOrderOutputMessage.java
  15. +80
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceRep.java
  16. +32
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceReq.java
  17. +297
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceUploadRecipeDetailInputMessage.java
  18. +43
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceUploadRecipeDetailOutputMessage.java
  19. +49
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/UnifiedOrderRep.java
  20. +68
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/UnifiedOrderReq.java
  21. +25
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/UserLongitudeLatitude.java
  22. +29
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/UserQueryReq.java
  23. +325
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/WechatUnifiedOrderReq.java
  24. +38
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/core/SignIn.java
  25. +32
    -0
      src/main/java/com/szyx/tcm/supervision/model/dto/insurance/core/Signinoutb.java
  26. +44
    -0
      src/main/java/com/szyx/tcm/supervision/service/AbstractBusinessService.java
  27. +35
    -0
      src/main/java/com/szyx/tcm/supervision/service/IBaseBusinessService.java
  28. +37
    -0
      src/main/java/com/szyx/tcm/supervision/service/Impl/InsuranceUploadInquiryDetailBusinessServiceImpl.java
  29. +37
    -0
      src/main/java/com/szyx/tcm/supervision/service/Impl/InsuranceUploadMedicineOrderDetailBusinessServiceImpl.java
  30. +34
    -0
      src/main/java/com/szyx/tcm/supervision/service/insurance/InsuranceUploadDetailBusinessService.java
  31. +2
    -2
      src/main/resources/application.properties

+ 11
- 0
src/main/java/com/szyx/tcm/supervision/controller/TestController.java Переглянути файл

@@ -10,13 +10,17 @@ import com.szyx.tcm.supervision.constant.CacheConstant;
import com.szyx.tcm.supervision.enums.OperationTypeEnum;
import com.szyx.tcm.supervision.model.LogInfo;
import com.szyx.tcm.supervision.model.dto.supervise.SuperviseTokenRep;
import com.szyx.tcm.supervision.service.IBaseBusinessService;
import com.szyx.tcm.supervision.service.insurance.InsuranceUploadDetailBusinessService;
import lombok.extern.slf4j.Slf4j;
import org.dromara.hutool.core.date.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.time.Instant;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;

/*******************************************************************
@@ -39,10 +43,17 @@ public class TestController {
@Resource
private CacheAgent cacheAgent;

@Autowired
List<InsuranceUploadDetailBusinessService> baseBusinessServiceList;


@GetMapping("/get")
@TraceLog(desc = "测试接口")
public R<String> get(){

System.out.println("baseBusinessServiceList = " + baseBusinessServiceList);


return R.ok("success");
}



+ 68
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/DiseInfo.java Переглянути файл

@@ -0,0 +1,68 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import io.swagger.annotations.ApiModel;
import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: DiseInfoList.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/17 14:52
* @Modify:
*/
@Data
@ApiModel("省医保平台「6201」上传处方药费明细请求参数诊断或症状明细")
public class DiseInfo {

/**
* diagType 诊断类别 字符型 3 Y 字典诊断类别(diag_type)
* 1 西医主要诊断 3 中医主病诊断
* 2 西医其他诊断 4 中医主证诊断
*/
private String diagType;

/**
* diagSrtNo 诊断排序号 数值型 2 Y
*/
private Integer diagSrtNo;

/**
* diagCode 诊断代码 字符型 20 Y
*/
private String diagCode;

/**
* diagName 诊断名称 字符型 100 Y
*/
private String diagName;

/**
* diagDept 诊断科室 字符型 50 Y
*/
private String diagDept;

/**
* diseDorNo 诊断医生编码 字符型 30 Y
*/
private String diseDorNo;

/**
* diseDorName 诊断医生姓名 字符型 50 Y
*/
private String diseDorName;

/**
* diagTime 诊断时间 字符型 19 Y yyyy-MM-dd HH:mm:ss
*/
private String diagTime;

/**
* valiFlag 有效标志 字符型 3 Y
*/
private String valiFlag;

}

+ 131
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/FeeDetail.java Переглянути файл

@@ -0,0 +1,131 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import io.swagger.annotations.ApiModel;
import lombok.Data;

import java.math.BigDecimal;

/*******************************************************************
* <pre></pre>
* @文件名称: FeeDetailList.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/17 14:57
* @Modify:
*/
@Data
@ApiModel("省医保平台「6201」上传处方药费明细请求参数费用明细")
public class FeeDetail {

/**
* feedetlSn 费用明细流水号 字符型 30 Y 单次就诊内唯一
*/
private String feedetlSn;

/**
* mdtrtId 就诊ID 字符型 30 N
*/
private String mdtrtId;

/**
* psnNo 人员编号 字符型 30 Y
*/
private String psnNo;

/**
* chrgBchno 收费批次号 字符型 30 Y 同一收费批次号病种编号必须一致
*/
private String chrgBchno;

/**
* diseCodg 病种编码 字符型 30 N 按照标准编码填写:
* 按病种结算病种目录代码(bydise_setl_list_code)、
* 门诊慢特病病种目录代码(opsp_dise_cod)
*/
private String diseCodg;

/**
* rxno 处方号 字符型 30 N 外购处方时,传入外购处方的处方号;非外购处方,传入医药机构处方号
*/
private String rxno;

/**
* rxCircFlag 外购处方标志 字符型 3 Y
*/
private String rxCircFlag;

// yyyy-MM-dd HH:mm:ss
/**
* feeOcurTime 费用发生时间 日期时间型 Y yyyy-MM-dd HH:mm:ss
*/
private String feeOcurTime;

/**
* medListCodg 医疗目录编码 字符型 50 Y
*/
private String medListCodg;

/**
* medinsListCodg 医药机构目录编码 字符型 150 Y
*/
private String medinsListCodg;

/**
* detItemFeeSumamt 明细项目费用总额 数值型 16,2 Y
*/
private BigDecimal detItemFeeSumamt;

/**
* cnt 数量 数值型 16,4 Y
*/
private BigDecimal cnt;

/**
* pric 单价 数值型 16,6 Y
*/
private BigDecimal pric;

/**
* bilgDeptCodg 开单科室编码 字符型 30 Y
*/
private String bilgDeptCodg;

/**
* bilgDeptName 开单科室名称 字符型 100 Y
*/
private String bilgDeptName;

/**
* bilgDrCodg 开单医生编码 字符型 30 Y 按照标准编码填写
*/
private String bilgDrCodg;

/**
* bilgDrName 开单医师姓名 字符型 50 Y
*/
private String bilgDrName;

/**
*hospApprFlag 医院审批标志 字符型 3 Y
*/
private String hospApprFlag;

/**
* medType 医疗类别 字符型 6 Y
*/
private String medType;

/**
* medListName 医疗目录名称 字符型 50 Y
*/
private String medListName;

/**
* medListSpc 医疗目录规格 字符型 50 Y
*/
private String medListSpc;

}

+ 82
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceAccessTokenRep.java Переглянути файл

@@ -0,0 +1,82 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import io.swagger.annotations.ApiModel;
import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: InsuranceAccessTokenRep.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/16 11:31
* @Modify:
*/
@Data
@ApiModel("获取AccessToken")
public class InsuranceAccessTokenRep {

/**
* return_code
* 返回状态码
* string16
* Y
* SUCCESS/FAIL
*/
private String returnCode;

/**
* return_msg
* return_msg
* string128
* N
* 返回信息,如非空,为错误原因
*/
private String returnMsg;


/**
* result_code
* 业务结果
* String16
* Y
* SUCCESS/FAIL
*/
private String resultCode;

/**
* err_code
* 错误代码
* String32
* N
*/
private String errCode;

/**
* err_code_des
* 错误代码描述
* String128
* N
*/
private String errCodeDes;

/**
* access_token
* 获取到的凭证
* String256
* Y
*/
private String accessToken;

/**
* expires_in
* 凭证有效时间
* Uint32
* Y
* 单位:秒
*/
private Integer expiresIn;

}

+ 30
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceAccessTokenReq.java Переглянути файл

@@ -0,0 +1,30 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import io.swagger.annotations.ApiModel;
import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: InsuranceAccessTokenReq.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/16 11:26
* @Modify:
*/
@Data
@ApiModel("获取用户医保参数")
public class InsuranceAccessTokenReq {

private String grant_type = "client_credential";

private String agentappid;

private String agentsecret;

private String appid;


}

+ 80
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceCoreCommonInputMessage.java Переглянути файл

@@ -0,0 +1,80 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: InsuranceCoreCommonMessage.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description: 河南医保核心系统公共报文 v1.4
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/22 10:18
* @Modify:
*/
@Data
public class InsuranceCoreCommonInputMessage {

// infno 交易编号 字符型 4 Y 交易编号详见接口列表
private String infno;

// msgid 发送方报文ID 字符型 30 Y 定点医药机构编号(12)+时间(14)+顺序号(4)
//时间格式:yyyyMMddHHmmss
private String msgid;

// mdtrtarea_admvs 就医地医保区划 字符型 6 Y
private String mdtrtareaAdmvs;

// insuplc_admdvs 参保地医保区划 字符型 6 如果交易输入中含有人员编号,此项必填,可通过【1101】人员信息获取交易取得
private String insuplcAdmdvs;

// recer_sys_code 接收方系统代码 字符型 10 Y 用于多套系统接入,区分不同系统使用
private String recerSysCode;

// dev_no 设备编号 字符型 100
private String devNo;

// dev_safe_info 设备安全信息 字符型 2000
private String devSafeInfo;

// cainfo 数字签名信息 字符型 1024
private String cainfo;

// signtype 签名类型 字符型 10 建议使用SM2、SM3
private String signtype;

// infver 接口版本号 字符型 6 Y 例如:“V1.0”,版本号由医保下发通知。
private String infver;

// opter_type 经办人类别 3 Y Y 1-经办人;2-自助终端;3-移动终端
private String opterType;

// opter 经办人 字符型 20 Y 按地方要求传入经办人/终端编号
private String opter;

// opter_name 经办人姓名 字符型 50 Y 按地方要求传入经办人姓名/终端名称
private String opterName;

// inf_time 交易时间 日期时间型 19 Y
private String infTime;

// fixmedins_code 定点医药机构编号 字符型 12 Y
private String fixmedinsCode;

// fixmedins_name 定点医药机构名称 字符型 20 Y
private String fixmedinsName;

// sign_no 交易签到流水号 字符型 30 通过签到【9001】交易获取
private String signNo;

// input 交易输入 字符型 40000 Y
private String input;







}

+ 41
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceCoreCommonOutputMessage.java Переглянути файл

@@ -0,0 +1,41 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: InsuranceCoreCommonOutputMessage.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description: 河南医保核心系统公共报文 v1.4
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/22 10:27
* @Modify:
*/
@Data
public class InsuranceCoreCommonOutputMessage {

// infcode 交易状态码 数值型 4 Y
private Integer infcode;

// inf_refmsgid 接收方报文ID 字符型 30 Y 接收方返回,接收方医保区划代码(6)+时间(14)+流水号(10)
//时间格式:yyyyMMddHHmmss
private String infRefmsgid;

// refmsg_time 接收报文时间 字符型 17 格式:yyyyMMddHHmmssSSS
private String refmsgTime;

// respond_time 响应报文时间 字符型 17 格式:yyyyMMddHHmmssSSS
private String respondTime;

// err_msg 错误信息 字符型 200 交易失败状态下,业务返回的错误信息
private String errMsg;

// output 交易输出 字符型 40000
private String output;




}

+ 55
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceCoreInputMessage1101.java Переглянути файл

@@ -0,0 +1,55 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: InsuranceCoreInputMessage1101.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description: 1101 输入报文
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/22 14:12
* @Modify:
*/
@Data
public class InsuranceCoreInputMessage1101 {

/**
* mdtrt_cert_type 就诊凭证类型 字符型 3 Y Y
*/
private String mdtrtCertType;

/**
* mdtrt_cert_no 就诊凭证号码 字符型 50 Y Y
*/
private String mdtrtCertNo;

/**
* card_sn 卡识别码 字符型 32 就诊凭证类型为“03”时必填
*/
private String cardSn;

/**
* begntime 开始时间 日期时间型 获取历史参保信息时传入
*/
private String begntime;

/**
* psn_cert_type 人员证件类型 字符型 6 Y 就诊凭证类型为“01”和“03”时必填
*/
private String psnCertType;

/**
* certno 证件号码 字符型 50 就诊凭证类型为“01”和“03”时必填
*/
private String certno;

/**
* psn_name 人员姓名 字符型 50 Y
*/
private String psnName;


}

+ 288
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceCoreOutputMessage1101.java Переглянути файл

@@ -0,0 +1,288 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/*******************************************************************
* <pre></pre>
* @文件名称: InsuranceCoreOutputMessage1101.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/22 14:23
* @Modify:
*/
@Data
public class InsuranceCoreOutputMessage1101 {

/**
* 输出-基本信息
*/
private Baseinfo baseinfo;

/**
* 输出-参保信息列表
*/
private Insuinfo insuinfo;

/**
* 输出-身份信息列表
*/
private List<Idetinfo> idetinfo;


@Data
public static class Baseinfo{
/**
* psn_no 人员编号 字符型 30 Y
*/
@JSONField(name = "psn_no")
private String psnNo;

/**
* psn_cert_type 人员证件类型 字符型 6 Y Y
*/
@JSONField(name = "psn_cert_type")
private String psnCertType;

/**
* certno 证件号码 字符型 50 Y
*/
private String certno;

/**
* psn_name 人员姓名 字符型 50 Y
*/
@JSONField(name = "psn_name")
private String psnName;

/**
* gend 性别 字符型 6 Y Y
*/
private String gend;

/**
* naty 民族 字符型 3 Y
*/
private String naty;

/**
* brdy 出生日期 日期型 yyyy-MM-dd
*/
private String brdy;

/**
* age 年龄 数值型 4,1 Y
*/
private String age;

/**
* exp_content 字段扩展 字符型 4000 只有居民返回
* 家庭账户余额
* 门诊统筹累计
* {
* “fm_acct_amt”:0
* “jmmztc_cum”:0
* }
*/
private ExpContent expContent;

@Data
public class ExpContent {

/**
* fm_acct_amt 家庭账户余额 数值型 16,2 只有居民返回
*/
private String fmAcctAmt;

/**
* jmmztc_cum 门诊统筹累计 数值型 16,2 只有居民返回
*/
private String jmmztcCum;

/**
* mat_idet_flag 医疗救助标识 字符型 6 0否,1是
*/
private String matIdetFlag;

/**
* mat_idet_code 救助对象身份 字符型 10 Y
*/
private String matIdetCode;


}





}

@Data
public static class Insuinfo{

/**
* psn_insu_rlts_id 人员参保关系ID 字符型 20
*/
@JSONField(name = "psn_insu_rlts_id")
private String psnInsuRltsId;

/**
* balc 余额 数值型 16,2 Y
*/
private BigDecimal balc;

/**
* insutype 险种类型 字符型 6 Y Y
*/
private String insutype;

/**
* psn_type 人员类别 字符型 6 Y Y
*/
@JSONField(name = "psn_type")
private String psnType;

/**
* psn_insu_stas 人员参保状态 字符型 6 Y
*/
@JSONField(name = "psn_insu_stas")
private String psnInsuStas;

/**
* psn_insu_date 个人参保日期 日期型
*/
private String psnInsuDate;

/**
* paus_insu_date 暂停参保日期 日期型
*/
private String pausInsuDate;

/**
* cvlserv_flag 公务员标志 字符型 3 Y Y
*/
@JSONField(name = "cvlserv_flag")
private String cvlservFlag;

/**
* insuplc_admdvs 参保地医保区划 字符型 6 Y
*/
private String insuplcAdmdvs;

/**
* emp_name 单位名称 字符型 200
*/
@JSONField(name = "emp_name")
private String empName;

}

@Data
public class Idetinfo{

/**
* psn_idet_type 人员身份类别 字符型 10 Y Y
*/
@JSONField(name = "psn_idet_type")
private String psnIdetType;

/**
* psn_type_lv 人员类别等级 字符型 3 Y 详见残疾等级字典
*/
@JSONField(name = "psn_type_lv")
private String psnTypeLv;

/**
* memo 备注 字符型 500
*/
private String memo;

/**
* begntime 开始时间 日期时间型 Y
*/
private String begntime;

/**
* endtime 结束时间 日期时间型
*/
private String endtime;

}


public static void main(String[] args) {

String s = "{\n" +
" \"infcode\": \"1\",\n" +
" \"inf_refmsgid\": \"000000202001041235391234567890\",\n" +
" \"refmsg_time\": \"20200201133411352\",\n" +
" \"respond_time\": \"20200202133731456\",\n" +
" \"err_msg\": \"\",\n" +
" \"output\": {\n" +
" \"baseinfo\": {\n" +
" \"psn_no\": \"131000202001001\",\n" +
" \"psn_cert_type\": \"2\",\n" +
" \"certno\": \"510000202001010000\",\n" +
" \"psn_name\": \"李四\",\n" +
" \"gend\": \"1\",\n" +
" \"naty\": \"01\",\n" +
" \"brdy\": \"2020-01-01\",\n" +
" \"age\": 18\n" +
" },\n" +
" \"insuinfo\": {\n" +
" \"psn_insu_rlts_id\": \"133241523001001\",\n" +
" \"balc\": 5000,\n" +
" \"insutype\": \"310\",\n" +
" \"psn_type\": \"1001\",\n" +
" \"cvlserv_flag\": \"0\",\n" +
" \"insu_admdvs\": \"131002\",\n" +
" \"emp_name\": \"测试单位\"\n" +
" },\n" +
" \"idetinfo\": [\n" +
" {\n" +
" \"psn_idet_type\": \"1\",\n" +
" \"psn_type_lv\": \"1\",\n" +
" \"memo\": \"\",\n" +
" \"begntime\": \"2020-01-01 00:00:00\",\n" +
" \"endtime\": \"\"\n" +
" },\n" +
" {\n" +
" \"psn_idet_type\": \"2\",\n" +
" \"psn_type_lv\": \"1\",\n" +
" \"memo\": \"\",\n" +
" \"begntime\": \"2020-01-01 00:00:00\",\n" +
" \"endtime\": \"\"\n" +
" }\n" +
" ]\n" +
" }\n" +
"}";




InsuranceCoreCommonOutputMessage outputMessage = JSON.parseObject(s, InsuranceCoreCommonOutputMessage.class);

// 收到的1101报文
InsuranceCoreOutputMessage1101 insuranceCoreOutputMessage1101 = JSON.parseObject(outputMessage.getOutput(), InsuranceCoreOutputMessage1101.class);

System.out.println(insuranceCoreOutputMessage1101);

}









}

+ 55
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceGetOrderReq.java Переглянути файл

@@ -0,0 +1,55 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: InsuranceGetOrderReq.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/19 10:37
* @Modify:
*/
@Data
@ApiModel("医保下单参数")
public class InsuranceGetOrderReq {


@ApiModelProperty("购药单id 如果是购药单医保支付传购药单id,如果是问诊单医保支付传问诊单id")
private String platformOrderId;


@ApiModelProperty("医保支付订单类型 1: 问诊单 2: 购药单")
private Integer orderType = 1;

@ApiModelProperty("微信医保授权码")
private String authCode;


@ApiModelProperty("订单医疗费总额")
private String medfeeSumamt;


@ApiModelProperty("业务流水号")
private String orgBizSer;

@ApiModelProperty("收费批次号")
private String chrgBchno;

@ApiModelProperty("费用类别")
private String feeType;

@ApiModelProperty("就诊事件ID")
private String mdtrtId;

@ApiModelProperty("医疗机构订单号")
private String medOrgOrd;



}

+ 56
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceMiddleGroundInputMessage.java Переглянути файл

@@ -0,0 +1,56 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: InsuranceMiddleGroundInputMessage.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description: 省移动支付中台 公共请求报文
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/22 15:08
* @Modify:
*/
@Data
public class InsuranceMiddleGroundInputMessage {

/**
* appId 渠道id String(32) N
*/
private String appId;

/**
* version 版本号 String(6) N 2.0.1
*/
private String version;

/**
* timestamp 当前时间 String(32) N 时间戳
*/
private String timestamp;

/**
* encType 加密方式 String(6) N SM4
*/
private String encType;

/**
* encData 加密数据 String(max) N
*/
private String encData;

/**
* signType 签名方式 String(6) N SM2
*/
private String signType;

/**
* signData 签名串 String(200) N
*/
private String signData;



}

+ 76
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceMiddleGroundOutputMessage.java Переглянути файл

@@ -0,0 +1,76 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: InsuranceMiddleGroundOutputMessage.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description: 省移动支付中台 公共响应报文
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/22 15:10
* @Modify:
*/
@Data
public class InsuranceMiddleGroundOutputMessage {

/**
* code 响应状态码 int N
*/
private Integer code;

/**
* appId 渠道id String(32) N
*/
private String appId;

/**
* timestamp 当前时间 String(32) N 时间戳
*/
private String timestamp;

/**
* encType 加密方式 String(6) N SM4
*/
private String encType;

/**
* signType 签名方式 String(6) N SM2
*/
private String signType;

/**
* signData 签名串 String(200) N
*/
private String signData;

/**
* encData 加密数据 String(max) N
*/
private String encData;

/**
* message 响应异常信息 String(max) Y
*/
private String message;

/**
* success 响应标识 boolean Y
*/
private Boolean success;

/**
* version 版本号 String(6) N 2.0.1
*/
private String version;


/**
* data 响应数据 Object N
*/
private String data;


}

+ 67
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsurancePayOrderInputMessage.java Переглянути файл

@@ -0,0 +1,67 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: InsurancePayOrderInputMessage.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/23 17:26
* @Modify:
*/
@Data
public class InsurancePayOrderInputMessage {

/**
* payAuthNo 支付授权码 字符型 40 Y 电子凭证线上渠道授权返回
*/
private String payAuthNo;

/**
* payOrdId 待支付订单号 字符型 40 Y 费用上传返回
*/
private String payOrdId;

/**
* payToken 支付订单对应的token 字符型 40 Y 费用上传返回
*/
private String payToken;

/**
* orgCodg 定点机构编码 字符型 12 Y
*/
private String orgCodg;

/**
* orgBizSer 业务流水号 字符型 40 Y 每一次请求唯一
*/
private String orgBizSer;

/**
* chrgBchno 收费批次号 字符型 40 Y 与费用上传一致
*/
private String chrgBchno;

/**
* feeType 费用类别 字符型 2 Y 与费用上传一致
*/
private String feeType;

/**
* mdtrtId 就诊事件ID 字符型 40 Y 与费用上传一致
*/
private String mdtrtId;

/**
* acctUsedFlag 个账使用标识 字符型 1 N 为空时默认使用费用上传时的值
*/
private String acctUsedFlag;




}

+ 65
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsurancePayOrderOutputMessage.java Переглянути файл

@@ -0,0 +1,65 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;

/*******************************************************************
* <pre></pre>
* @文件名称: InsurancePayOrderOutputMessage.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description: 6202 医保支付订单响应参数
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/23 17:52
* @Modify:
*/
@Data
@ApiModel("医保支付订单响应参数")
public class InsurancePayOrderOutputMessage {

/**
* payOrdId 支付订单号 字符型 40 Y
*/
@ApiModelProperty("支付订单号")
private String payOrdId;

/**
* ordStas 订单状态 字符型 40 Y 字典订单状态(ordStas)
*/
@ApiModelProperty("订单状态")
private String ordStas;

/**
* feeSumamt 费用总额 数值型 12,2 Y
*/
@ApiModelProperty("费用总额")
private BigDecimal feeSumamt;

/**
* ownPayAmt 现金支付 数值型 12,2 Y
*/
@ApiModelProperty("现金支付")
private BigDecimal ownPayAmt;

/**
* psnAcctPay 个人账户支出 数值型 12,2 Y
*/
@ApiModelProperty("个人账户支出")
private BigDecimal psnAcctPay;

/**
* fundPay 医保基金支付 数值型 12,2 Y
*/
@ApiModelProperty("医保基金支付")
private BigDecimal fundPay;

@ApiModelProperty("医保结构体")
private String requestContent;



}

+ 80
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceRep.java Переглянути файл

@@ -0,0 +1,80 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import com.alibaba.fastjson2.annotation.JSONField;
import io.swagger.annotations.ApiModel;
import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: InsuranceRep.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/16 10:50
* @Modify:
*/
@Data
@ApiModel("获取用户医保参数")
public class InsuranceRep {

/**
* code
* 业务返回码
* int
* Y
* 0成功,小于0系统错误,大于0逻辑错误
*/
private Integer code;

/**
* message
* 业务返回信息
* string
* Y
*/
private String message;

/**
* user_name
* 用户姓名
* string(32)
* N
* 姓名,如张三
*/
private String userName;

/**
* city_id
* 用户参保地代码
* string(12)
* N
* 仅当mi_card_type=CERITIFICATE时,才返回有效值,多地参保用户若未选择主参保地,则该字段未空,并且不可使用后续业务。;
*/
@JSONField(name = "city_id")
private String cityId;

/**
* pay_auth_no
* 医保线上核验payAuthNo
* string(32)
* Y
* 当使用医保线上支付功能时,返回payAuthNo
*/
private String payAuthNo;

/**
* user_longitude_latitude
* 用户经纬度
*
*
*
*
* Y
* 当使用医保线上支付功能时,返回对应的经纬度
*/
private UserLongitudeLatitude userLongitudeLatitude;


}

+ 32
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceReq.java Переглянути файл

@@ -0,0 +1,32 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

/*******************************************************************
* <pre></pre>
* @文件名称: InsuranceReq.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/16 10:42
* @Modify:
*/
@Data
@Accessors(chain = true)
@ApiModel("获取用户医保参数")
public class InsuranceReq {

@ApiModelProperty("授权码")
private String qrcode;

@ApiModelProperty("用户openId")
private String openid;



}

+ 297
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceUploadRecipeDetailInputMessage.java Переглянути файл

@@ -0,0 +1,297 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import io.swagger.annotations.ApiModel;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/*******************************************************************
* <pre></pre>
* @文件名称: InsuranceUploadRecipeDetailDTO.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/17 14:36
* @Modify:
*/
@Data
@ApiModel("省医保平台「6201」上传处方药费明细请求参数")
public class InsuranceUploadRecipeDetailInputMessage {

/**
* orgCodg 机构编码 字符型 40 Y 医保分配
*/
private String orgCodg;

/**
* orgId 电子凭证机构号 字符型 40 N 电子凭证中台分配,待机构电子凭证建设完毕后可获取该机构号
*/
private String orgId;

/**
* psnNo 人员编号 字符型 30 Y
*/
private String psnNo;

/**
* insutype 险种类型 字符型 6 Y 字典险种类型
* (insutype)
*/
private String insutype;

/**
* medOrgOrd 医疗机构订单号 字符型 40 Y 院内产生惟一流水,可关联到一次结算记录,结算成功回调入参返回
*/
private String medOrgOrd;

/**
* rxCircFlag 电子处方流转标志 字符型 1 N 1:电子处方 ,0不是电子处方,默认0,非电子处方
*/
private String rxCircFlag = "0";

/**
* begntime 开始时间 字符型 19 Y 挂号时间
* yyyy-MM-dd HH:mm:ss
*/
private String begntime;

/**
* idNo 证件号码 字符型 40 Y
*/
private String idNo;

/**
*userName 用户姓名 字符型 40 Y
*/
private String userName;

/**
* idType 证件类别 字符型 3 Y 字典人员证件类型(psn_cert_type) 01:身份证
*/
private String idType;

/**
* ecToken 电子凭证授权ecToken 字符型 64 Y 电子凭证解码返回
*/
private String ecToken;

/**
* insuCode 就诊参保地行政区划 字符型 6 N 为空(null)时取用户电子凭证默认参保地
*/
private String insuCode;

/**
* iptOtpNo 住院/门诊号 字符型 30 Y 院内唯一流水
*/
private String iptOtpNo;

// ==================非必需字段===================

/**
* atddrNo 医师编码 字符型 30 N
*/
private String atddrNo;

/**
*drName 医师姓名 字符型 50 N
*/
private String drName;

/**
* deptCode 科室编码 字符型 30 N
*/
private String deptCode;


// =====================================

/**
*deptName 科室名称 字符型 100 Y
*/
private String deptName;

/**
* caty 科别 字符型 6 Y
*/
private String caty;

/**
* mdtrtId 就诊ID 字符型 30 N
*/
private String mdtrtId;

/**
*medType 医疗类别 字符型 6 Y 字典医疗类别
* (med_type) 91 其他门诊
*/
private String medType;

/**
* feeType 费用类型 字符型 3 Y 字典费用类型(feeType) 05 互联网医院问诊
*/
private String feeType;

/**
* medfeeSumamt 医疗费总额 数值型 16,2 Y
*/
private BigDecimal medfeeSumamt;

// todo 貌似目前为海南医保的特有字段
/**
* acctUsedFlag 个人账户使用标志 字符型 1 Y 药店上传费用时必填
*/
private String acctUsedFlag;

/**
* mainCondDscr 主要病情描述 字符型 1000 N
*/
private String mainCondDscr;

/**
*diseCodg 病种编码 字符型 30 Y 按照标准编码填写:
* 按病种结算病种目录代码(bydise_setl_list_code)、
* 门诊慢特病病种目录代码(opsp_dise_cod)、
*/
private String diseCodg;

/**
* diseName 病种名称 字符型 500 Y
*/
private String diseName;

// todo 貌似目前为海南医保的特有字段
/**
* psnSetlway 个人结算方式 字符型 6 Y
*/
private String psnSetlway;

/**
* chrgBchno 收费批次号 字符型 30 Y
*/
private String chrgBchno;

/**
* pubHospRfomFlag 公立医院改革标志 字符型 6 Y 可参考FSI的接口要求
*/
private String pubHospRfomFlag;

/**
* diseinfoList 诊断或症状明细 Y 见下方diseinfoList定义
*/
private List<DiseInfo> diseinfoList;

/**
* feedetailList 费用明细 Y 见下方feedetailList定义
*/
private List<FeeDetail> feedetailList;

/**
* payAuthNo 支付授权码 字符型 40 N 线上授权返回
*/
private String payAuthNo;


public static void main(String[] args) {

String s = "{\n" +
"\t\"configId\": \"cs1\",(部分省份无该参数,可去除)\n" +
"\t\"payAuthNo\": \"AUTH430100202206132005090000100\",\n" +
"\t\"uldLatlnt\": \"112.88211,28.230932\",\n" +
"\t\"idType\": \"01\",\n" +
"\t\"mdtrtCertType\": \"02\",\n" +
"\t\"orgCodg\": \"H43010000001\",\n" +
"\t\"orgId\": \"\",\n" +
"\t\"psnNo\": \"430000201000000000\",\n" +
"\t\"insutype\": \"310\",\n" +
"\t\"medOrgOrd\": \"46515950\",\n" +
"\t\"begntime\": \"2022-06-13 17:57:07\",\n" +
"\t\"idNo\": \"430602199111111111\",\n" +
"\t\"userName\": \"刘军\",\n" +
"\t\"ecToken\": \"\",\n" +
"\t\"iptOtpNo\": \"4441829\",\n" +
"\t\"deptCode\": \"2101\",\n" +
"\t\"deptName\": \"心血管内科诊室(一)\",\n" +
"\t\"caty\": \"2101\",\n" +
"\t\"mdtrtId\": \"359999999\",\n" +
"\t\"medType\": \"11\",\n" +
"\t\"feeType\": \"01\",\n" +
"\t\"medfeeSumamt\": 53.69,\n" +
"\t\"acctUsedFlag\": \"\",\n" +
"\t\"diseCodg\": \"J00.x00x002\",\n" +
"\t\"diseName\": \"病毒性感冒\",\n" +
"\t\"psnSetlway\": \"01\",\n" +
"\t\"chrgBchno\": \"4441829694.42\",\n" +
"\t\"pubHospRfomFlag\": \"01\",\n" +
"\t\"fetts\": \"\",\n" +
"\t\"diseinfoList\": [{\n" +
"\t\t\"diagType\": \"0\",\n" +
"\t\t\"diagSrtNo\": 1,\n" +
"\t\t\"diagCode\": \"J00.x00x002\",\n" +
"\t\t\"diagName\": \"病毒性感冒\",\n" +
"\t\t\"diagDept\": \"心血管内科诊室(一)\",\n" +
"\t\t\"diseDorNo\": \"0824\",\n" +
"\t\t\"diseDorName\": \"马丽霞\",\n" +
"\t\t\"diagTime\": \"2022-06-13 17:57:23\",\n" +
"\t\t\"valiFlag\": \"1\"\n" +
"\t}],\n" +
"\t\"feedetailList\": [{\n" +
"\t\t\t\"feedetlSn\": \"97657430\",\n" +
"\t\t\t\"mdtrtId\": \"4441888\",\n" +
"\t\t\t\"psnNo\": \"430000201000000000\",\n" +
"\t\t\t\"chrgBchno\": \"444182920220613175815266\",\n" +
"\t\t\t\"rxCircFlag\": \"0\",\n" +
"\t\t\t\"feeOcurTime\": \"2022-06-13 17:57:08\",\n" +
"\t\t\t\"medListCodg\": \"F00000019080\",\n" +
"\t\t\t\"medinsListCodg\": \"H43010500027\",\n" +
"\t\t\t\"detItemFeeSumamt\": 16,\n" +
"\t\t\t\"cnt\": 1,\n" +
"\t\t\t\"pric\": 16,\n" +
"\t\t\t\"bilgDeptCodg\": \"2101\",\n" +
"\t\t\t\"bilgDeptName\": \"心血管内科诊室(一)\",\n" +
"\t\t\t\"bilgDrCodg\": \"0824\",\n" +
"\t\t\t\"bilgDrName\": \"马丽霞\",\n" +
"\t\t\t\"hospApprFlag\": \"1\",\n" +
"\t\t\t\"medType\": \"11\",\n" +
"\t\t\t\"medListName\": \"副主任医师普通门诊诊查费\",\n" +
"\t\t\t\"medListSpc\": \"\"\n" +
"\t\t},\n" +
"\t\t{\n" +
"\t\t\t\"feedetlSn\": \"97657431\",\n" +
"\t\t\t\"mdtrtId\": \"4441888\",\n" +
"\t\t\t\"psnNo\": \"430000201000000000\",\n" +
"\t\t\t\"chrgBchno\": \"444182920220613175815266\",\n" +
"\t\t\t\"rxCircFlag\": \"0\",\n" +
"\t\t\t\"feeOcurTime\": \"2022-06-13 17:57:36\",\n" +
"\t\t\t\"medListCodg\": \"Y00000020302\",\n" +
"\t\t\t\"medinsListCodg\": \"H43010500027\",\n" +
"\t\t\t\"detItemFeeSumamt\": 678.42,\n" +
"\t\t\t\"cnt\": 18,\n" +
"\t\t\t\"pric\": 37.69,\n" +
"\t\t\t\"bilgDeptCodg\": \"2101\",\n" +
"\t\t\t\"bilgDeptName\": \"心血管内科诊室(一)\",\n" +
"\t\t\t\"bilgDrCodg\": \"0824\",\n" +
"\t\t\t\"bilgDrName\": \"马丽霞\",\n" +
"\t\t\t\"hospApprFlag\": \"1\",\n" +
"\t\t\t\"medType\": \"11\",\n" +
"\t\t\t\"medListName\": \"小儿肺咳颗粒\",\n" +
"\t\t\t\"medListSpc\": \"2g/袋*18袋/盒\"\n" +
"\t\t}\n" +
"\t]\n" +
"}\n";









}



}

+ 43
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/InsuranceUploadRecipeDetailOutputMessage.java Переглянути файл

@@ -0,0 +1,43 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: InsuranceUploadRecipeDetailOutputMessage.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description: 【6201】 上传医保费用明细响应参数
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/22 15:34
* @Modify:
*/
@Data
public class InsuranceUploadRecipeDetailOutputMessage {

/**
* payOrdId 支付订单号 字符型 40 Y 医保结算中心订单号
*/
private String payOrdId;

/**
* payToken 支付token 字符型 40 Y 下单支付使用
*/
private String payToken;

/**
* cashierUrl 医保支付收银台h5地址 字符型 4000 N 见下方拼接说明
*/
private String cashierUrl;

/**
* extData 医保扩展数据 N 根据各地方医保要求传不同数据内容
*/
private String extData;





}

+ 49
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/UnifiedOrderRep.java Переглянути файл

@@ -0,0 +1,49 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: UnifiedOrderRep.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/24 10:13
* @Modify:
*/
@Data
@ApiModel("统一下单返回参数")
public class UnifiedOrderRep {

/**
*

pay_url
支付链接
String256
Y
下单后跳转到此url,用户完成支付,使用app支付时1.5 APP支付说明

*/
@ApiModelProperty("支付链接")
private String payUrl;

/**
*

pay_appid
支付小程序
String64
N
当使用医院小程序进行下单时,会返回此参数,医院小程序跳转至该支付小程序进行支付
*/
@ApiModelProperty("支付小程序")
private String payAppid;



}

+ 68
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/UnifiedOrderReq.java Переглянути файл

@@ -0,0 +1,68 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: UnifiedOrderReq.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description: 微信统一下单请求参数
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/23 23:53
* @Modify:
*/
@ApiModel("微信统一下单请求参数")
@Data
public class UnifiedOrderReq {

@ApiModelProperty("支付类型: IntReDiagPay=互联网医院复诊支付\n" +
"IntPscPay=互联网医院处方支付 \n")
private String orderType;

@ApiModelProperty("分账信息")
private InsurancePayOrderOutputMessage insurancePayOrder;

/**
* spbill_create_ip
* 用户端ip
* String16
* Y
* 10.193.0.1
*/
@ApiModelProperty("用户ip")
private String spbillCreateIp;




@ApiModelProperty(hidden = true)
private InsuranceAccessTokenRep accessToken;

@ApiModelProperty(hidden = true)
private String openId;


@ApiModelProperty(hidden = true)
/**
* 证件号码 user_card_no 证件号码的MD5,目前只支持身份证(身份证中如果有字母需要转成大写再做MD5,15位身份证号需要转为18位). 示例:44030019000101123x的MD5为09eb26e839ff3a2e3980352ae45ef09e
*/
private String userCardNo;



@ApiModelProperty(hidden = true)
/**
* 真实姓名 user_name 张三
*/
private String userName;






}

+ 25
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/UserLongitudeLatitude.java Переглянути файл

@@ -0,0 +1,25 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import io.swagger.annotations.ApiModel;
import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: user_longitude_latitude.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/16 10:53
* @Modify:
*/
@Data
@ApiModel("获取用户经纬度")
public class UserLongitudeLatitude {

private String longitude;

private String latitude;

}

+ 29
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/UserQueryReq.java Переглянути файл

@@ -0,0 +1,29 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: UserQueryReq.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/16 11:12
* @Modify:
*/
@Data
@ApiModel("获取用户信息")
public class UserQueryReq {

@ApiModelProperty("授权码")
private String qrcode;

@ApiModelProperty("openid")
private String openid;


}

+ 325
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/WechatUnifiedOrderReq.java Переглянути файл

@@ -0,0 +1,325 @@
package com.szyx.tcm.supervision.model.dto.insurance;

import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: WechatUnifiedOrderReq.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance
* @Copyright:wy (C) 2024 *
* @Description: 微信统一下单请求参数
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/23 23:23
* @Modify:
*/
@Data
public class WechatUnifiedOrderReq {

/**
* order_type
* 支付类型
* String16
* Y
* RegPay=挂号支付
* MedPay=药费支付
* DiagPay=诊间支付
* InHospPay=住院费支付
* PharmacyPay=药店支付
* InsurancePay=保险费支付
* IntRegPay=互联网医院挂号支付
* IntReDiagPay=互联网医院复诊支付
* IntPscPay=互联网医院处方支付
* CovidExamPay=新冠检测费用
* CvidAntigenPay=新冠抗原检测
*/
private String orderType;

/**
* appid
* 公众账号ID
* String32
* Y
* 微信分配的公众账号ID
*/
private String appid;

/**
* mch_id
* 商户号
* String32
* Y
* 微信支付分配的商户号
*/
private String mchId;

/**
* sub_appid
* 子商户公众号ID
* String32
* N
* 微信分配的子商户公众账号ID,如需在支付完成后获取sub_openid则此参数必传。
*/
private String subAppid;

/**
* sub_mch_id
* 子商户号
* String32
* N
* 微信支付分配的子商户号,如果是服务商模式,必填
*/
private String subMchId;

/**
* openid
* 用户标识
* String128
* 二选一
* openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid。
*/
private String openid;



/**
* hosp_out_trade_no
* 第三方服务商订单号
* String64
* Y
* 第三方服务商平台自动生成的一个订单号
*/
private String hospOutTradeNo;

/**
* hospital_name
* 医院名称
* string128
* Y
* 医院名称
*/
private String hospitalName;

/**
* nonce_str
* 随机字符串
* String32
* Y
*/
private String nonceStr;

/**
* total_fee
* 总共需要支付现金金额
* Uint64
* Y
* 单位为分>0
* 表示订单总额即全额现金的价格。由于医保局支付有优惠,全额现金的价格可能会大于cash_fee+ insurance_fee的和,不一定等于cash_fee+insurance_fee。
*/
private String totalFee;

/**
* cash_fee
* 现金需要支付的金额
* Uint64
* Y
* 单位为分>=0
* 线上预结算模式金额填0
* 线下预结算模式填实际自费金额
*/
private String cashFee;

/**
* cash_add_fee
* 由医疗机构额外增加的现金金额
* Uint64
* N
* 单位为分,默认0
* 用于医院在医保预结算之外增加现
* 金扣费,举例:原需要
* 支付的是:
* total_ fee 200
* cash_ fee 100
* insurance fee 100。
* 现新增现金50,则入参为:
* total_ _fee 250 ( 总额加上额外现
* 金)
* cash fee 150(自费加上额外现
* 金)
* cash_add_ fee 50 (额外现金)
* insurance_ fee 100
*/

private String cashAddFee;

/**
* cash_add_wording
* 额外现金金额文案
* String16
* N
* 额外现金金额,如:快递费
* 目前不会在前端显示,可不传
*/
private String cashAddWording;

/**
* cash_reduced_wording
* 减免金额文案
* String16
* N
* 减免金额的文案类型,
* 1为:预交金支付
* 2为:医院减免
* 3为:药店优惠
* 4为:优惠金
* 5为:押金抵扣
* 不填则为默认的“机构优惠金额”
*/
private String cashReducedWording;

/**
* allow_fee_change
* 是否允许预结算费用发生变化
* uint8
* Y
* 0:不允许
* 1:允许
* 当医保局返回的预结算金额与医院上传的金额不一致时,此字段为0则直接报错,为1则以医保局金额为准
*/
private String allowFeeChange;

/**
* spbill_create_ip
* 用户端ip
* String16
* Y
* 10.193.0.1
*/
private String spbillCreateIp;

/**
* notify_url
* 回调url
* String256
* Y
* 接收微信支付异步通知回调地址
*/
private String notifyUrl;

/**
* body
* 商品描述
* String128
* Y
* 参照
* https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_2
*/
private String body;

/**
* return_url
* 支付后回跳的页面,不论成功或者失败均会回跳
* string128
* Y
* 调用方可以在链接中加上支付单号,回跳后查询调用方订单状态,如果订单已支付则成功, 如果订单未支付则进行查单操作确认订单结果
*/
private String returnUrl;

/**
* pay_type
* 支付方式
* uint8
* Y
* 1:现金 2:医保 3:现金+医保
* 备注说明:
* 1、当订单要走医保支付时,
* (1)cash_fee>0, paytype填3
* (2)cash_fee=0, paytype填2
* 2、当订单不使用医保支付时 paytype填1。
* 3、当订单有走医保【6201】相关接口时,如果订单为纯自费订单,paytype填3。
*/
private String payType;

/**
* city_id
* 城市ID
* String32
* Y
* 一般为申请接入城市的编码,由腾讯侧对接时提供。
*/
private String cityId;


/**
* consume_type
* 医保部分扣
* 费类型
* int8
* N
* 默认为 0:统筹+个账
* 1:个账
* 2:统筹
*/
private String consumeType;

/**
* insurance_fee
* 医保支付金额
* Uint64
* Y
* 填实际医保金额
*/
private String insuranceFee;

/**
* 证件类型 user_card_type 1 居民身份证 9 户口本 8 外国人护照 5 台湾居民来往大陆通行证 4 澳门居民往来内地通行证 6 香港居民往来内地通行证 7 外国人永久居留证
*/
private String userCardType;

/**
* 证件号码 user_card_no 证件号码的MD5,目前只支持身份证(身份证中如果有字母需要转成大写再做MD5,15位身份证号需要转为18位). 示例:44030019000101123x的MD5为09eb26e839ff3a2e3980352ae45ef09e
*/
private String userCardNo;

/**
* 真实姓名 user_name 张三
*/
private String userName;

/**
* 医保标识 is_dept is_dept=4 医保电子凭证支付;
*/
private String isDept;

/**
* 医院HIS系统订单号 serial_no 医院HIS系统订单号
*/
private String serialNo;

/**
* 医疗机构编码(医保局分配给机构) org_no 医保局局提供的医疗机构编码
*/
private String orgNo;

/**
* 医院下单时间 gmt_out_create 格式为yyyyMMddHHmmss 如20160501163102
*/
private String gmtOutCreate;

/**
* 参考医保结构体(医疗机构透传医保) request_content 示例: {"payAuthNo":"AUTH****","payOrdId":"ORD****","setlLatlnt":"118.096435,24.485407"} payAuthNo:授权码 payOrdId:对应处方上传的出参单号 setlLatlnt:用户地 理定位信息, 经纬 度信息,如“118.096435,24.485407”。未获取到用户定位时,传“0,0”。
*/
private String requestContent;

/**
* 业务单据号 bill_no
*/
private String billNo;

/**
* 签名 sign
*/
private String sign;


}

+ 38
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/core/SignIn.java Переглянути файл

@@ -0,0 +1,38 @@
package com.szyx.tcm.supervision.model.dto.insurance.core;

import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: SignIn.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance.core
* @Copyright:wy (C) 2024 *
* @Description: 9001 输入-录入的基本信息
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/22 10:41
* @Modify:
*/
@Data
public class SignIn {

/**
* opter_no 操作员编号 字符型 20 Y
*/
private String opterNo;

/**
* mac 签到MAC地址 字符型 20 Y
*/
private String mac;

/**
* ip 签到IP地址 字符型 20 Y
*/
private String ip;





}

+ 32
- 0
src/main/java/com/szyx/tcm/supervision/model/dto/insurance/core/Signinoutb.java Переглянути файл

@@ -0,0 +1,32 @@
package com.szyx.tcm.supervision.model.dto.insurance.core;

import lombok.Data;

/*******************************************************************
* <pre></pre>
* @文件名称: Signinoutb.java
* @包 路 径: com.szyx.tcm.web.patient.dto.insurance.core
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/22 10:44
* @Modify:
*/
@Data
public class Signinoutb {

/**
* sign_time 签到时间 日期型 Y yyyy-MM-dd HH:mm:ss
*/
private String signTime;

/**
* sign_no 签到编号 字符型 30 Y
*/
private String signNo;




}

+ 44
- 0
src/main/java/com/szyx/tcm/supervision/service/AbstractBusinessService.java Переглянути файл

@@ -0,0 +1,44 @@
package com.szyx.tcm.supervision.service;

import com.szyx.tcm.supervision.model.dto.insurance.InsuranceCoreOutputMessage1101;
import com.szyx.tcm.supervision.model.dto.insurance.InsuranceGetOrderReq;
import com.szyx.tcm.supervision.model.dto.insurance.InsuranceRep;
import com.szyx.tcm.supervision.model.dto.insurance.InsuranceUploadRecipeDetailOutputMessage;
import com.szyx.tcm.supervision.service.insurance.InsuranceUploadDetailBusinessService;

import java.util.List;

/*******************************************************************
* <pre></pre>
* @文件名称: AbstractBusinessService.java
* @包 路 径: com.szyx.tcm.supervision.service
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/26 23:53
* @Modify:
*/
public abstract class AbstractBusinessService implements
IBaseBusinessService, InsuranceUploadDetailBusinessService {

@Override
public boolean match(Object context) {
return false;
}

@Override
public List<Object> process(Object context) {
return null;
}

@Override
public boolean match(InsuranceGetOrderReq req, InsuranceRep insuranceInfo, InsuranceCoreOutputMessage1101 insuranceCoreInfo) {
return false;
}

@Override
public List<InsuranceUploadRecipeDetailOutputMessage> process(InsuranceGetOrderReq req, InsuranceRep insuranceInfo, InsuranceCoreOutputMessage1101 insuranceCoreInfo) {
return null;
}
}

+ 35
- 0
src/main/java/com/szyx/tcm/supervision/service/IBaseBusinessService.java Переглянути файл

@@ -0,0 +1,35 @@
package com.szyx.tcm.supervision.service;

import com.szyx.tcm.supervision.model.dto.insurance.InsuranceGetOrderReq;

import java.util.List;

/*******************************************************************
* <pre></pre>
* @文件名称: IBaseBusinessService.java
* @包 路 径: com.szyx.tcm.supervision.service
* @Copyright:wy (C) 2024 *
* @Description: 独立业务封装接口
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/26 23:21
* @Modify:
*/
public interface IBaseBusinessService {

/**
* 匹配符合条件的业务
* @param context 上下文
* @return 是否匹配
*/
boolean match( Object context);

/**
* 处理业务
* @param context 上下文
* @return 业务处理结果
*/
List<Object> process(Object context);


}

+ 37
- 0
src/main/java/com/szyx/tcm/supervision/service/Impl/InsuranceUploadInquiryDetailBusinessServiceImpl.java Переглянути файл

@@ -0,0 +1,37 @@
package com.szyx.tcm.supervision.service.Impl;

import com.szyx.tcm.supervision.model.dto.insurance.InsuranceCoreOutputMessage1101;
import com.szyx.tcm.supervision.model.dto.insurance.InsuranceGetOrderReq;
import com.szyx.tcm.supervision.model.dto.insurance.InsuranceRep;
import com.szyx.tcm.supervision.model.dto.insurance.InsuranceUploadRecipeDetailOutputMessage;
import com.szyx.tcm.supervision.service.AbstractBusinessService;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;

import java.util.List;

/*******************************************************************
* <pre></pre>
* @文件名称: InsuranceUploadDetailBusinessServiceImpl.java
* @包 路 径: com.szyx.tcm.supervision.service.Impl
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/26 23:52
* @Modify:
*/
@Service
@Order(1)
public class InsuranceUploadInquiryDetailBusinessServiceImpl extends AbstractBusinessService {

@Override
public boolean match(InsuranceGetOrderReq req, InsuranceRep insuranceInfo, InsuranceCoreOutputMessage1101 insuranceCoreInfo) {
return req.getOrderType() == 1;
}

@Override
public List<InsuranceUploadRecipeDetailOutputMessage> process(InsuranceGetOrderReq req, InsuranceRep insuranceInfo, InsuranceCoreOutputMessage1101 insuranceCoreInfo) {
return super.process(req, insuranceInfo, insuranceCoreInfo);
}
}

+ 37
- 0
src/main/java/com/szyx/tcm/supervision/service/Impl/InsuranceUploadMedicineOrderDetailBusinessServiceImpl.java Переглянути файл

@@ -0,0 +1,37 @@
package com.szyx.tcm.supervision.service.Impl;

import com.szyx.tcm.supervision.model.dto.insurance.InsuranceCoreOutputMessage1101;
import com.szyx.tcm.supervision.model.dto.insurance.InsuranceGetOrderReq;
import com.szyx.tcm.supervision.model.dto.insurance.InsuranceRep;
import com.szyx.tcm.supervision.model.dto.insurance.InsuranceUploadRecipeDetailOutputMessage;
import com.szyx.tcm.supervision.service.AbstractBusinessService;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;

import java.util.List;

/*******************************************************************
* <pre></pre>
* @文件名称: InsuranceUploadMedicineOrderDetailBusinessServiceImpl.java
* @包 路 径: com.szyx.tcm.supervision.service.Impl
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/27 00:05
* @Modify:
*/
@Service
@Order(2)
public class InsuranceUploadMedicineOrderDetailBusinessServiceImpl extends AbstractBusinessService {

@Override
public boolean match(InsuranceGetOrderReq req, InsuranceRep insuranceInfo, InsuranceCoreOutputMessage1101 insuranceCoreInfo) {
return req.getOrderType() == 2;
}

@Override
public List<InsuranceUploadRecipeDetailOutputMessage> process(InsuranceGetOrderReq req, InsuranceRep insuranceInfo, InsuranceCoreOutputMessage1101 insuranceCoreInfo) {
return super.process(req, insuranceInfo, insuranceCoreInfo);
}
}

+ 34
- 0
src/main/java/com/szyx/tcm/supervision/service/insurance/InsuranceUploadDetailBusinessService.java Переглянути файл

@@ -0,0 +1,34 @@
package com.szyx.tcm.supervision.service.insurance;

import com.szyx.tcm.supervision.model.dto.insurance.InsuranceCoreOutputMessage1101;
import com.szyx.tcm.supervision.model.dto.insurance.InsuranceGetOrderReq;
import com.szyx.tcm.supervision.model.dto.insurance.InsuranceRep;
import com.szyx.tcm.supervision.model.dto.insurance.InsuranceUploadRecipeDetailOutputMessage;
import com.szyx.tcm.supervision.service.IBaseBusinessService;

import java.util.List;

/*******************************************************************
* <pre></pre>
* @文件名称: InsuranceUploadDetailBusinessService.java
* @包 路 径: com.szyx.tcm.supervision.service.insurance
* @Copyright:wy (C) 2024 *
* @Description:
* @Version: V1.0
* @Author: wy
* @Date: 2024/7/26 23:26
* @Modify:
*/
public interface InsuranceUploadDetailBusinessService extends IBaseBusinessService {

@Override
boolean match(Object context);

@Override
List<Object> process(Object context);

boolean match(InsuranceGetOrderReq req, InsuranceRep insuranceInfo, InsuranceCoreOutputMessage1101 insuranceCoreInfo);

List<InsuranceUploadRecipeDetailOutputMessage> process(InsuranceGetOrderReq req, InsuranceRep insuranceInfo, InsuranceCoreOutputMessage1101 insuranceCoreInfo);

}

+ 2
- 2
src/main/resources/application.properties Переглянути файл

@@ -6,7 +6,7 @@ server.http.encoding.force=true
server.http.encoding.charset=UTF-8
server.http.encoding.enabled=true
spring.application.name=${application.name}
server.servlet.context-path=/tcm/api/supervision
server.servlet.context-path=/web-api/
spring.servlet.multipart.maxFileSize=50MB
spring.servlet.multipart.max-request-size=150MB
spring.servlet.multipart.enabled=true
@@ -17,7 +17,7 @@ spring.mvc.pathmatch.matching-strategy=ant_path_matcher
# \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014 mysql \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/tcm?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.password=wy12345^
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.initialSize=20
spring.datasource.minIdle=500


Завантаження…
Відмінити
Зберегти