1、struts2框架安全性升级,移除废弃api

2、新增医保现金自动退费,和控制开关
debug
wangsq 6 months ago
parent 2acefd34b3
commit 4783c455ad
  1. 8
      pom.xml
  2. 59
      src/main/java/com/ynxbd/common/action/RegisterAction.java
  3. 12
      src/main/java/com/ynxbd/common/action/TestAction.java
  4. 11
      src/main/java/com/ynxbd/common/action/WxMenuAction.java
  5. 69
      src/main/java/com/ynxbd/common/action/XBDAction.java
  6. 2
      src/main/java/com/ynxbd/common/bean/enums/HospEnum.java
  7. 2
      src/main/java/com/ynxbd/common/bean/enums/ReportEnum.java
  8. 35
      src/main/java/com/ynxbd/common/bean/pay/Order.java
  9. 4
      src/main/java/com/ynxbd/common/bean/pay/Register.java
  10. 20
      src/main/java/com/ynxbd/common/dao/RegisterDao.java
  11. 42
      src/main/java/com/ynxbd/common/dao/his/HisMedicalDao.java
  12. 106
      src/main/java/com/ynxbd/common/dao/his/HisRegisterDao.java
  13. 20
      src/main/java/com/ynxbd/common/dao/xbd/OutTeamDao.java
  14. 3
      src/main/java/com/ynxbd/common/helper/xbd/XBDHelper.java
  15. 1
      src/main/java/com/ynxbd/common/result/JsonResult.java
  16. 44
      src/main/java/com/ynxbd/common/service/MedicalService.java
  17. 20
      src/main/java/com/ynxbd/common/service/MicroService.java
  18. 48
      src/main/java/com/ynxbd/common/service/RegService.java
  19. 45
      src/main/java/com/ynxbd/wx/wxfactory/medical/Client.java
  20. 4
      src/main/java/com/ynxbd/wx/wxfactory/medical/MdConfig.java
  21. 10
      src/main/java/com/ynxbd/wx/wxfactory/menu/WxService.java
  22. 1
      src/main/java/com/ynxbd/wx/wxfactory/menu/bean/WxMenu.java
  23. 2
      src/main/java/wx_menu/CreateMenu.java
  24. 4
      src/main/resources/xbd.properties

@ -6,7 +6,7 @@
<groupId>com.ynxbd</groupId>
<artifactId>wx</artifactId>
<version>5.2.0</version>
<version>5.3.0</version>
<packaging>war</packaging>
<name>wx Maven Webapp</name>
@ -59,11 +59,11 @@
<scope>compile</scope>
</dependency>
<!-- logback含sl4j -->
<!-- logback含sl4j 1.2.x系支持jdk1.8 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.5.16</version>
<version>1.2.13</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
@ -295,7 +295,7 @@
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-easysdk</artifactId>
<version>2.2.2</version>
<version>2.2.3</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>

@ -14,10 +14,10 @@ import com.ynxbd.common.helper.common.DateHelper;
import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.service.DoctorService;
import com.ynxbd.wx.utils.DesEncryptHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import java.util.ArrayList;
import java.util.List;
@ -31,11 +31,13 @@ import java.util.stream.Collectors;
* @Copyright @ 2020 云南新八达科技有限公司 All rights reserve
*/
@Slf4j
@Namespace("/register")
public class RegisterAction extends BaseAction {
/**
* [推送] 获取预约今日的所有患者openId
*
* @return openId列表
*/
@Action("getTodayRegOpenId")
@ -85,13 +87,13 @@ public class RegisterAction extends BaseAction {
* @return 科室列表
*/
@Action("getTimeDeptList")
public Result getTimeDeptList(String merCode, String begDate, String endDate,String deptCode) {
public Result getTimeDeptList(String merCode, String begDate, String endDate, String deptCode) {
log.info("[分时段挂号]查询科室列表 begDate={}, endDate={}", begDate, endDate);
if (begDate == null || endDate == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
List<Dept> deptList = new HisRegisterDao().getTimeDeptList(begDate, endDate,deptCode);
List<Dept> deptList = new HisRegisterDao().getTimeDeptList(begDate, endDate, deptCode);
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(merCode);
if (MerchantEnum.ALI.equals(merchantEnum)) {
@ -192,7 +194,7 @@ public class RegisterAction extends BaseAction {
/**
* [现场挂号]查询挂号记录
* [今日挂号]查询挂号记录
*/
@Action("getSiteHistory")
public Result getSiteHistory(String begDate, String endDate, String patientId) {
@ -202,7 +204,7 @@ public class RegisterAction extends BaseAction {
}
patientId = getDecodeString(patientId);
List<Register> hisList = new HisRegisterDao().getRegSiteHistory(patientId, null);
List<Register> hisList = new HisRegisterDao().getRegTodayHistory(patientId, null);
List<Register> resultList = new ArrayList<>();
String regDate;
@ -219,6 +221,27 @@ public class RegisterAction extends BaseAction {
}
/**
* [挂号]查询挂号记录
*/
@Action("getRegList")
public Result getRegList(String begDate, String endDate, String openid) {
try {
log.info("[挂号]查询挂号记录 begDate={}, endDate={}, openid={}", begDate, endDate, openid);
if (begDate == null || endDate == null || openid == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
List<Register> regList = new RegisterDao().selectListByRegDate(begDate, endDate, openid);
for (Register item : regList) {
item.filterInfo(); // 数据过滤
}
return Result.success(regList);
} catch (Exception e) {
return Result.error(e);
}
}
/**
* [预约挂号]获取预约记录
*/
@ -282,13 +305,13 @@ public class RegisterAction extends BaseAction {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
List<Map<Object, Object>> dataList = new HisRegisterDao().getTimeSource(deptCode, subDeptCode, doctCode, begDate, endDate);
List<Map<Object, Object>> dataList = new HisRegisterDao().getRegTimeSource(deptCode, subDeptCode, doctCode, begDate, endDate);
return Result.success(dataList);
}
@Action("getDoctorSchedule")
public Result getDoctorSchedule(String begDate, String endDate,String doctCode) {
log.info("[医生排班信息] begDate={}, endDate={}, doctCode={}", begDate, endDate,doctCode);
public Result getDoctorSchedule(String begDate, String endDate, String doctCode) {
log.info("[医生排班信息] begDate={}, endDate={}, doctCode={}", begDate, endDate, doctCode);
if (doctCode == null || begDate == null || endDate == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
@ -297,6 +320,7 @@ public class RegisterAction extends BaseAction {
/**
* 查询待预约记录
*
* @param begDate 开始时间
* @param endDate 结束时间
* @return 待预约记录
@ -312,6 +336,7 @@ public class RegisterAction extends BaseAction {
/**
* 执行预约签到
*
* @param transNo 预约时的交易流水号
* @return 预约签到结果
*/
@ -326,28 +351,30 @@ public class RegisterAction extends BaseAction {
/**
* 查询待预约记录
*
* @param begDate 开始时间
* @param endDate 结束时间
* @return 待预约记录
*/
@Action("getReLineSignInRecord")
public Result getReLineSignInRecord(String patientId,String begDate, String endDate) {
log.info("[查询预约待签到记录(包含今日挂号)]patientId-{} begDate={}, endDate={}",patientId, begDate, endDate);
if (patientId ==null||begDate == null || endDate == null) {
public Result getReLineSignInRecord(String patientId, String begDate, String endDate) {
log.info("[查询预约待签到记录(包含今日挂号)]patientId-{} begDate={}, endDate={}", patientId, begDate, endDate);
if (patientId == null || begDate == null || endDate == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
if(getDecodeString(patientId)==null){
if (getDecodeString(patientId) == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
JSONArray reLineSignInRecord= new HisRegisterDao().getReLineSignInRecord(begDate, endDate);
if(reLineSignInRecord == null){
JSONArray reLineSignInRecord = new HisRegisterDao().getReLineSignInRecord(begDate, endDate);
if (reLineSignInRecord == null) {
return Result.success();
}
return Result.success(reLineSignInRecord.stream().filter(iter -> Objects.equals(((JSONObject) iter).getString("PatientId"), getDecodeString(patientId))).collect(Collectors.toList ()));
return Result.success(reLineSignInRecord.stream().filter(iter -> Objects.equals(((JSONObject) iter).getString("PatientId"), getDecodeString(patientId))).collect(Collectors.toList()));
}
/**
* 执行预约签到
*
* @param treatNum 门诊号
* @return 预约签到结果
*/
@ -362,6 +389,7 @@ public class RegisterAction extends BaseAction {
/**
* 查询预约今天号源的患者信息用以推送候诊信息
*
* @param startTime 开始时间范围
* @param endTime 结束时间范围
* @return 候诊人群
@ -376,7 +404,6 @@ public class RegisterAction extends BaseAction {
}
// /**
// * [预约挂号]获取指定科室医生信息
// */

@ -6,7 +6,11 @@ import com.ynxbd.common.helper.common.DateHelper;
import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.result.ServiceException;
import com.ynxbd.common.service.MedicalService;
import com.ynxbd.common.service.OutCollectService;
import com.ynxbd.wx.wxfactory.WxMedicalHelper;
import com.ynxbd.wx.wxfactory.bean.MedicalOrder;
import com.ynxbd.wx.wxfactory.medical.MdConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
@ -71,6 +75,14 @@ public class TestAction extends BaseAction {
@Action("test03")
public Result test03() throws ServiceException {
System.out.println("开关" + MdConfig.IS_AUTO_REFUND);
log.info("日志测试");
return Result.success();
}
@Action("md_refund_test")
public Result md_refund_test() throws ServiceException {
// WxMedicalHelper.refundCash("", "", new BigDecimal("0.440"), "系统繁忙缴费失败,自动退费");
return Result.success();
}

@ -0,0 +1,11 @@
package com.ynxbd.common.action;
import lombok.extern.slf4j.Slf4j;
import org.apache.struts2.convention.annotation.Namespace;
@Slf4j
@Namespace("/wx_menu")
public class WxMenuAction {
}

@ -1,23 +1,17 @@
package com.ynxbd.common.action;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.action.pay.PEnum;
import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.PayCasebook;
import com.ynxbd.common.bean.xbd.MRHistory;
import com.ynxbd.common.bean.xbd.MedicalRecord;
import com.ynxbd.common.dao.CasebookDao;
import com.ynxbd.common.helper.common.CodeHelper;
import com.ynxbd.common.helper.common.ImageHelper;
import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.helper.xbd.XBDHttpHelper;
import com.ynxbd.common.helper.xbd.XBDEnum;
import com.ynxbd.common.helper.xbd.XBDHelper;
import com.ynxbd.common.helper.xbd.XBDHttpHelper;
import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.service.CasebookService;
import com.ynxbd.common.service.PayService;
import lombok.extern.slf4j.Slf4j;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
@ -35,42 +29,46 @@ public class XBDAction extends BaseAction {
/**
* 获取智能云胶片的地址
*
* @param info patientId
* @return 路径
*/
@Action("cloudFilm")
public Result cloudFilm (String info){
public Result cloudFilm(String info) {
return Result.success(XBDHelper.outTeamDao.getCloudFilmPath(info));
}
/**
* 获取该病人已归档可以翻拍的病历
*
* @param patientId 病人id
* @return 可以翻拍的病历列表
*/
@Action("getMedicalRecordList")
public Result getMedicalRecordList(String patientId,Integer flagSh){
String realPatientId =getDecodeString(patientId);
String jsonString = XBDHttpHelper.ExecMethodGet(XBDEnum.BLSM_Appointment_GetBA.Name,params->{
params.put("patientID",realPatientId);
params.put("flagFP",0);
params.put("flagSH",flagSh);
public Result getMedicalRecordList(String patientId, Integer flagSh) {
String realPatientId = getDecodeString(patientId);
String jsonString = XBDHttpHelper.ExecMethodGet(XBDEnum.BLSM_Appointment_GetBA.Name, params -> {
params.put("patientID", realPatientId);
params.put("flagFP", 0);
params.put("flagSH", flagSh);
});
return Result.success(JsonHelper.parseArray(jsonString, MedicalRecord.class));
}
/**
* 获取该病人需要翻拍病历干啥的列表(用途)->直接绑定翻拍的病历类型
*
* @return 用途列表
*/
@Action("getMRTemplateList")
public Result getMRTemplateList(){
public Result getMRTemplateList() {
String jsonString = XBDHttpHelper.ExecMethodGet(XBDEnum.BLSM_Appointment_GetTemplate.Name);
return Result.success(JsonHelper.parseArray(jsonString));
}
/**
* 新增预约
*
* @param openId openId
* @param patientId patientId
* @param zyNum 住院号
@ -89,9 +87,9 @@ public class XBDAction extends BaseAction {
* @return 成功行数
*/
@Action("addMRReserve")
public Result addMRReserve(String openId,String patientId, String zyNum, String applyName, String relationship, String useToNo, String useToName, int getWay, String address, String phone, String ptImg1, String ptImg2, String applyPtImg1,String applyPtImg2,String applicationImg) {
try{
log.info("[病历复印]patientId-{},zyNum-{},applyName-{},useToNo-{},useToName-{},getWay-{},address-{},phone-{}",patientId,zyNum,applyName,useToNo,useToName,getWay,address,phone);
public Result addMRReserve(String openId, String patientId, String zyNum, String applyName, String relationship, String useToNo, String useToName, int getWay, String address, String phone, String ptImg1, String ptImg2, String applyPtImg1, String applyPtImg2, String applicationImg) {
try {
log.info("[病历复印]patientId-{},zyNum-{},applyName-{},useToNo-{},useToName-{},getWay-{},address-{},phone-{}", patientId, zyNum, applyName, useToNo, useToName, getWay, address, phone);
PayCasebook payCasebook = new PayCasebook();
payCasebook.setTreatNum(zyNum);
payCasebook.setPatientName(applyName);
@ -100,23 +98,23 @@ public class XBDAction extends BaseAction {
payCasebook.setGetWay(getWay);
payCasebook.setAddress(address);
payCasebook.setPhone(phone);
if(new CasebookService().isExit(patientId,zyNum,String.valueOf(getWay),useToName)){
log.info("[病历复印]下单信息重复 patientId={},treatNum-{},getWay-{},useToName-{}", patientId,zyNum,getWay,useToName);
if (new CasebookService().isExit(patientId, zyNum, String.valueOf(getWay), useToName)) {
log.info("[病历复印]下单信息重复 patientId={},treatNum-{},getWay-{},useToName-{}", patientId, zyNum, getWay, useToName);
return Result.error(ResultEnum.APPLY_REPEAT);
}
if(!new CasebookService().addApply(payCasebook,openId,patientId)){
log.info("[病历复印]下单信息存储失败 patientId={},openId-{},patientId-{}", patientId,openId,patientId);
if (!new CasebookService().addApply(payCasebook, openId, patientId)) {
log.info("[病历复印]下单信息存储失败 patientId={},openId-{},patientId-{}", patientId, openId, patientId);
return Result.error(ResultEnum.SPECIFIED_QUESTIONED_USER_NOT_EXIST);
}
String jsonString = XBDHttpHelper.ExecMethodPost(XBDEnum.BLSM_Appointment_SetAppointment.Name,params -> {
String jsonString = XBDHttpHelper.ExecMethodPost(XBDEnum.BLSM_Appointment_SetAppointment.Name, params -> {
params.put("ZYNum", zyNum);
params.put("ApplyName", applyName);
params.put("UseToNo", useToNo);
params.put("UseToName", useToName);
params.put("GetWay", getWay);
params.put("Address", address);
params.put("Relationship",relationship);
params.put("Relationship", relationship);
params.put("Phone", phone);
params.put("ptImg1", ptImg1);
params.put("ptImg2", ptImg2);
@ -125,29 +123,30 @@ public class XBDAction extends BaseAction {
params.put("ApplicationImg", applicationImg);
});
return Result.success(JsonHelper.parseObject(jsonString));
}
catch (Exception e) {
log.error("[病历复印申请]预约失败,error-{}",e.toString());
} catch (Exception e) {
log.error("[病历复印申请]预约失败,error-{}", e.toString());
return Result.error(ResultEnum.ERROR);
}
}
/**
* 获取该病人的病历翻拍历史
*
* @param patientId 病人Id
* @return 历史记录
*/
@Action("getMRHistory")
public Result getMRHistory(String patientId){
String jsonString = XBDHttpHelper.ExecMethodGet(XBDEnum.BLSM_Appointment_GetHistoryAppointment.Name,params->{
params.put("patientID",patientId);
params.put("BorrowNo",-1);
public Result getMRHistory(String patientId) {
String jsonString = XBDHttpHelper.ExecMethodGet(XBDEnum.BLSM_Appointment_GetHistoryAppointment.Name, params -> {
params.put("patientID", patientId);
params.put("BorrowNo", -1);
});
return Result.success(JsonHelper.parseArray(jsonString, MRHistory.class));
}
/**
* 病案复印唤起支付
*
* @param payCode wx微信
* @param openid 患者openId
* @param patientId 患者patientId
@ -157,17 +156,17 @@ public class XBDAction extends BaseAction {
* @return 支付回调参数
*/
@Action("caseBookPay")
public Result caseBookPay( String payCode, String openid, String patientId, String treatNum, String totalFee,String applyId,String getWay, String useToName){
log.info("[病案复印] 唤起支付, payCode-{},openid-{},patientId-{},treatNum-{},totalFee-{}",payCode,openid,patientId,treatNum,totalFee);
public Result caseBookPay(String payCode, String openid, String patientId, String treatNum, String totalFee, String applyId, String getWay, String useToName) {
log.info("[病案复印] 唤起支付, payCode-{},openid-{},patientId-{},treatNum-{},totalFee-{}", payCode, openid, patientId, treatNum, totalFee);
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
if (merchantEnum == null) { // 支付方式异常
return Result.error(ResultEnum.PAY_TYPE_ERROR);
}
if(payCode==null||openid==null||patientId==null||treatNum==null||totalFee==null||applyId==null||getWay==null||useToName==null){
if (payCode == null || openid == null || patientId == null || treatNum == null || totalFee == null || applyId == null || getWay == null || useToName == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
String ip = request.getRemoteAddr();
return new CasebookService().placeOrder(merchantEnum,ip,openid,patientId,treatNum,totalFee,applyId,getWay,useToName);
return new CasebookService().placeOrder(merchantEnum, ip, openid, patientId, treatNum, totalFee, applyId, getWay, useToName);
}
// /**

@ -11,7 +11,7 @@ public enum HospEnum {
德宏州中医医院("wxadc09f1c9d0bccee", ""),
红河州人民医院("wxd503671f502bd89d","");
红河州人民医院("wxd503671f502bd89d", "");
public final String APP_ID;

@ -1,7 +1,5 @@
package com.ynxbd.common.bean.enums;
import com.ynxbd.wx.config.WeChatConfig;
/**
* @author 李进才
* @ClassName ReportEnum

@ -1,9 +1,12 @@
package com.ynxbd.common.bean.pay;
import com.ynxbd.common.helper.common.ParamHelper;
import com.ynxbd.wx.wxfactory.ReqParamHelper;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.apache.commons.lang3.ObjectUtils;
import java.io.Serializable;
import java.math.BigDecimal;
@ -30,11 +33,21 @@ public class Order implements Serializable {
private String openid;
// 患者id
private String patientId;
// 加密的patientId
private String enPatientId;
// 患者姓名
private String patientName;
// 患者信息
// 证件号码
private String idCardNo;
private String enCardNo;
private String showCardNo;
private String tel;
private String enTel;
private String showTel;
// 性别
private String sex;
private String birthday;
// 订单号
private String outTradeNo;
@ -126,4 +139,24 @@ public class Order implements Serializable {
// PEIS返回提示
private String peisResult;
public void filterInfo() {
String _cardNo = this.idCardNo;
if (!ObjectUtils.isEmpty(_cardNo)) {
this.idCardNo = null;
this.enCardNo = ReqParamHelper.encode(_cardNo);
this.showCardNo = ParamHelper.idCardNoFilter(_cardNo);
}
String _tel = this.tel;
if (!ObjectUtils.isEmpty(_tel)) {
this.tel = null;
this.enTel = ReqParamHelper.encode(_tel);
this.showTel = ParamHelper.telFilter(_tel);
}
if (!ObjectUtils.isEmpty(this.patientId)) {
this.enPatientId = ReqParamHelper.encode(this.patientId);
}
}
}

@ -18,10 +18,6 @@ import java.math.BigDecimal;
@NoArgsConstructor
public class Register extends Order {
private Long id;
// 患者身份证
private String idCardNo;
// 电话号码
private String tel;
private String deptCode;
private String subDeptCode;

@ -8,6 +8,7 @@ import com.ynxbd.common.bean.wxMessage.WaitReg;
import com.ynxbd.common.config.db.DataBase;
import com.ynxbd.common.dao.his.HisRegisterDao;
import com.ynxbd.common.helper.common.DateHelper;
import com.ynxbd.common.result.ServiceException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
@ -27,6 +28,7 @@ public class RegisterDao {
/**
* 获取今日挂号的所有患者的openId用作到诊推送
*
* @return 所有openId
*/
public List<Register> selectTodayRegisterOpenId() {
@ -178,7 +180,7 @@ public class RegisterDao {
if (isToday) { // 今日挂号
hisRegs = hisRegisterDao.hasRegSite(patientId, regDate);
for (Register hisReg : hisRegs) {
if (deptCode.equals(hisReg.getDeptCode())&&(hisReg.getRefundDate()==null||"".equals(hisReg.getRefundDate()))) {
if (deptCode.equals(hisReg.getDeptCode()) && (hisReg.getRefundDate() == null || "".equals(hisReg.getRefundDate()))) {
return true;
}
}
@ -683,7 +685,6 @@ public class RegisterDao {
}
/**
* 退费列表
*/
@ -706,6 +707,7 @@ public class RegisterDao {
/**
* 查询当天挂号的人用来推送候诊提醒
*
* @param startDate 开始时间
* @param endDate 结束时间
* @return 候诊人群
@ -717,4 +719,18 @@ public class RegisterDao {
ps.setString(2, endDate);
});
}
public List<Register> selectListByRegDate(String begDate, String endDate, String openid) throws ServiceException {
String finalEndDate = DateHelper.getMoveDate(endDate, 1);
if (finalEndDate == null) {
throw new ServiceException("endDate错误");
}
System.out.println(finalEndDate);
String sql = "select * from register where openid = ? and regDate between ? and ? and payStatus = 0 and hisStatus = 0 order by regDate desc, updateTime desc";
return DataBase.select(sql, Register.class, ps -> {
ps.setString(1, openid);
ps.setString(2, begDate);
ps.setString(3, finalEndDate);
});
}
}

@ -1,7 +1,6 @@
package com.ynxbd.common.dao.his;
import com.alibaba.fastjson.JSONArray;
import com.ynxbd.common.bean.HisRecipe;
import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.Recipe;
import com.ynxbd.common.bean.pay.Register;
@ -17,7 +16,6 @@ import com.ynxbd.wx.wxfactory.bean.MedicalInfo;
import org.apache.commons.lang3.ObjectUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -34,9 +32,9 @@ public class HisMedicalDao {
* @param recipeJson 处方json
* @param totalFee 总金额
*/
public static JsonResult recipeMdUploadFeeDetails(String payAuthNo, String cardNo, String openid, String patientId, String treatNum, String recipeJson, BigDecimal totalFee,String ybAttrib,String ybBZCode, String ybBZName) {
public static JsonResult recipeMdUploadFeeDetails(String payAuthNo, String cardNo, String openid, String patientId, String treatNum, String recipeJson, BigDecimal totalFee, String ybAttrib, String ybBZCode, String ybBZName) {
List<Recipe> recipeList = JsonHelper.parseArray(recipeJson, Recipe.class);
if (recipeList == null || recipeList.size() == 0) {
if (recipeList == null || recipeList.isEmpty()) {
return HisHelper.createErrorResult("处方数量为 0 或 数据转换失败");
}
@ -44,7 +42,7 @@ public class HisMedicalDao {
for (Recipe item : recipeList) {
recipeIdsXml.append("<Id>").append(item.getRecipeId()).append("</Id>");
}
Map<String,Object> params = new HashMap<>();
Map<String, Object> params = new HashMap<>();
params.put("PatientID", patientId);
params.put("MZNum", treatNum);
params.put("Recipe", recipeIdsXml.toString());
@ -56,10 +54,10 @@ public class HisMedicalDao {
// 医保-----------------------------------
params.put("PayAuthNo", payAuthNo);
params.put("PersonID", cardNo);
if(ObjectUtils.isNotEmpty(ybAttrib)&&ObjectUtils.isNotEmpty(ybBZCode)&&ObjectUtils.isNotEmpty(ybBZName)){
if (ObjectUtils.isNotEmpty(ybAttrib) && ObjectUtils.isNotEmpty(ybBZCode) && ObjectUtils.isNotEmpty(ybBZName)) {
params.put("YBAttrib", ybAttrib);
params.put("YBBZCode",ybBZCode);
params.put("YBBZName",ybBZName);
params.put("YBBZCode", ybBZCode);
params.put("YBBZName", ybBZName);
return HisHelper.getMdJsonResult(HisEnum.AP_Pay_Invoice, params);
}
return HisHelper.getMdJsonResult(HisEnum.AP_Pay_Invoice, params);
@ -67,12 +65,13 @@ public class HisMedicalDao {
/**
* [医保]获取该病人的慢病列表
*
* @param idCardNo 身份证号
*/
public static JsonResult getChronicList(String idCardNo){
return HisHelper.getMdJsonResult(HisEnum.YDZF_QueryDiseaseInfo,params-> {
params.put("CallNo",HisHelper.CALL_NO);
params.put("IDCardNo",idCardNo);
public static JsonResult getChronicList(String idCardNo) {
return HisHelper.getMdJsonResult(HisEnum.YDZF_QueryDiseaseInfo, params -> {
params.put("CallNo", HisHelper.CALL_NO);
params.put("IDCardNo", idCardNo);
});
}
@ -81,7 +80,7 @@ public class HisMedicalDao {
*/
public static JsonResult regTimeMdUploadFeeDetails(Register reg, String payAuthNo, String cardNo, MerchantEnum merchantEnum, Boolean isTime) {
if (isTime){
if (isTime) {
return HisHelper.getMdJsonResult(HisEnum.AP_Regist_New, params -> {
params.put("PatientID", reg.getPatientId());
params.put("PayMoney", reg.getPayMoney());
@ -111,21 +110,20 @@ public class HisMedicalDao {
});
}
// 非分时段挂号 医保支付
return HisHelper.getMdJsonResult(HisEnum.AP_Regist,params-> {
return HisHelper.getMdJsonResult(HisEnum.AP_Regist, params -> {
params.put("PatientID", reg.getPatientId());
params.put("PayMoney", reg.getPayMoney());
params.put("DeptCode", reg.getDeptCode());
params.put("DoctCode", reg.getDoctCode());
params.put("ClinicCode",reg.getClinicCode());
params.put("TID",reg.getTid());
params.put("RegFee",reg.getRegFee());
params.put("ClinicFee",reg.getClinicFee());
params.put("PayMoney", reg.getPayMoney());
params.put("ClinicCode", reg.getClinicCode());
params.put("TID", reg.getTid());
params.put("RegFee", reg.getRegFee());
params.put("ClinicFee", reg.getClinicFee());
params.put("PayDate", DateHelper.getCurDate());
params.put("PayTime", DateHelper.getCurTime());
params.put("TransNo", CodeHelper.get32UUID());
params.put("PayDeviceID",reg.getPayDeviceId());
params.put("BankTransNo",reg.getBankTransNo());
params.put("PayDeviceID", reg.getPayDeviceId());
params.put("BankTransNo", reg.getBankTransNo());
params.put("PayWay", merchantEnum.HIS_PAY_WAY);
if (!ObjectUtils.isEmpty(reg.getSubDeptCode())) {
params.put("DeptCode_YZKCode", reg.getSubDeptCode()); // 亚专科code
@ -213,7 +211,7 @@ public class HisMedicalDao {
* @param transNo HIS交易流水号
* @param bankTransNo HIS流水号
*/
public static JsonResult mdPay(String mdUserId, String payDate, String payTime, String transNo, String bankTransNo, BigDecimal cashFee) {
public static JsonResult mdRecipePay(String mdUserId, String payDate, String payTime, String transNo, String bankTransNo, BigDecimal cashFee) {
return HisHelper.getMdJsonResult(HisEnum.Medical_PAY, params -> {
params.put("UserID_YBZF", mdUserId);
params.put("PayMoney", cashFee);

@ -450,12 +450,12 @@ public class HisRegisterDao {
/**
* [现场挂号]根据患者id获取挂号记录
* [今日挂号]根据患者id获取挂号记录
*
* @param patientId 患者id
* @return 挂号记录
*/
public List<Register> getRegSiteHistory(String patientId, String regDate) {
public List<Register> getRegTodayHistory(String patientId, String regDate) {
List<Register> resultList = new ArrayList<>();
Map<String, Object> params = new HashMap<>();
params.put("PatientID", patientId);
@ -592,7 +592,7 @@ public class HisRegisterDao {
* @param tradeNo HIS交易流水号
* @return WsResult响应码
*/
public JsonResult cancelReserve(String patientId, String tradeNo,MerchantEnum merchantEnum) {
public JsonResult cancelReserve(String patientId, String tradeNo, MerchantEnum merchantEnum) {
Map<String, Object> params = new HashMap<>();
params.put("PatientID", patientId);
params.put("ReservationTransNo", tradeNo);
@ -603,13 +603,14 @@ public class HisRegisterDao {
/**
* 今日挂号-取消挂号
*
* @return
*/
public JsonResult refundRegister(String tradeNo,MerchantEnum merchantEnum){
public JsonResult refundRegister(String tradeNo, MerchantEnum merchantEnum) {
Map<String, Object> params = new HashMap<>();
params.put("TransNo",tradeNo);
params.put("DelTransNo","R" + tradeNo);
return HisHelper.getJsonResult(HisEnum.AP_Refund_Register,params,merchantEnum);
params.put("TransNo", tradeNo);
params.put("DelTransNo", "R" + tradeNo);
return HisHelper.getJsonResult(HisEnum.AP_Refund_Register, params, merchantEnum);
}
/**
@ -620,7 +621,7 @@ public class HisRegisterDao {
* @return boolean
*/
public List<Register> hasRegSite(String patientId, String regDate) {
return getRegSiteHistory(patientId, regDate);
return getRegTodayHistory(patientId, regDate);
}
/**
@ -644,7 +645,7 @@ public class HisRegisterDao {
* @param endDate 结束时间
* @return 科室列表
*/
public List<Dept> getTimeDeptList(String begDate, String endDate,String deptCode) {
public List<Dept> getTimeDeptList(String begDate, String endDate, String deptCode) {
List<Dept> deptList = new ArrayList<>();
Map<String, Object> params = new HashMap<>();
@ -780,7 +781,7 @@ public class HisRegisterDao {
* @param endDate 结束日期(yyyy-MM-dd)
* @return 号源集合
*/
public List<Map<Object, Object>> getTimeSource(String deptCode, String subDeptCode, String doctCode, String
public List<Map<Object, Object>> getRegTimeSource(String deptCode, String subDeptCode, String doctCode, String
begDate, String endDate) {
if (DateHelper.isToday(begDate)) {
begDate = begDate + " " + DateHelper.getCurTime();
@ -796,18 +797,18 @@ public class HisRegisterDao {
params.put("DeptCode_YZKCode", subDeptCode); // 亚专科code
}
JsonResult JsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Register_Source_New, params);
List<Map<Object, Object>> resultList = new ArrayList<>();
if (!JsonResult.success()) {
log.info("[号源-分时段查询]{}", JsonResult.getMessage());
return resultList;
JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Register_Source_New, params);
List<Map<Object, Object>> dataList = new ArrayList<>();
if (!jsonResult.success()) {
log.info("[号源-分时段查询]{}", jsonResult.getMessage());
return dataList;
}
try {
JSONArray jsonArray = JsonResult.getJsonArray("Dept", "Doct", "TimeInterval");
JSONArray jsonArray = jsonResult.getJsonArray("Dept", "Doct", "TimeInterval");
JSONObject timeNode, sourceNode;
Map<Object, Object> map;
Register reg;
Register sourceItem;
JSONArray sourceArr;
BigDecimal regMoney;
List<Register> list;
@ -834,35 +835,37 @@ public class HisRegisterDao {
map.put("payMoney", regMoney);
}
reg = new Register();
reg.setTid(tid);
reg.setTName(tName);
reg.setRegFee(regMoney);
sourceItem = new Register();
sourceItem.setTid(tid);
sourceItem.setTName(tName);
sourceItem.setRegFee(regMoney);
// -----------------------
reg.setSourceId(sourceNode.getString("SourceId"));
reg.setQueueNum(sourceNode.getString("QueueNumber"));
reg.setBegTime(sourceNode.getString("BegTime"));
reg.setEndTime(sourceNode.getString("EndTime"));
reg.setRegCode(sourceNode.getString("RegistCode"));
reg.setRegName(sourceNode.getString("RegistName"));
reg.setRegDate(sourceNode.getString("RegistDate"));
reg.setAddress(sourceNode.getString("ClinicAddress"));
reg.setAllowReg(sourceNode.getInteger("AllowOnline"));
reg.setIsUsed(sourceNode.getInteger("IsUsed"));
list.add(reg);
sourceItem.setSourceId(sourceNode.getString("SourceId"));
sourceItem.setQueueNum(sourceNode.getString("QueueNumber"));
sourceItem.setBegTime(sourceNode.getString("BegTime"));
sourceItem.setEndTime(sourceNode.getString("EndTime"));
sourceItem.setRegCode(sourceNode.getString("RegistCode"));
sourceItem.setRegName(sourceNode.getString("RegistName"));
sourceItem.setRegDate(sourceNode.getString("RegistDate"));
sourceItem.setAddress(sourceNode.getString("ClinicAddress"));
sourceItem.setAllowReg(sourceNode.getInteger("AllowOnline"));
sourceItem.setIsUsed(sourceNode.getInteger("IsUsed"));
list.add(sourceItem);
}
map.put("sourceList", list);
resultList.add(map);
dataList.add(map);
}
} catch (Exception e) {
e.printStackTrace();
ErrorHelper.println(e);
}
return resultList;
return dataList;
}
/**
* 执行分时段挂号
*
@ -892,7 +895,7 @@ public class HisRegisterDao {
params.put("OpenId", reg.getOpenid());
params.put("Token", WeChatConfig.TOKEN);
return HisHelper.getJsonResult(HisEnum.AP_Regist_New, params,merchantEnum);
return HisHelper.getJsonResult(HisEnum.AP_Regist_New, params, merchantEnum);
}
/**
@ -924,12 +927,12 @@ public class HisRegisterDao {
}
if (DateHelper.isToday(regDate)) { // 今日挂号
return HisHelper.getJsonResult(HisEnum.AP_Regist, params,merchantEnum);
return HisHelper.getJsonResult(HisEnum.AP_Regist, params, merchantEnum);
}
// 预约挂号
params.put("ReservationDate", regDate);
return HisHelper.getJsonResult(HisEnum.AP_Reservation, params,merchantEnum);
return HisHelper.getJsonResult(HisEnum.AP_Reservation, params, merchantEnum);
}
/**
@ -945,26 +948,27 @@ public class HisRegisterDao {
params.put("PatientID", patientId);
params.put("SourceId", sourceId);
params.put("TransNo", CodeHelper.get32UUID());
return HisHelper.getJsonResult(HisEnum.AP_Occupy_Source_New, params,merchantEnum);
return HisHelper.getJsonResult(HisEnum.AP_Occupy_Source_New, params, merchantEnum);
}
/**
* 获取某个医生排班表
*
* @param begDate 开始时间
* @param endDate 结束时间
* @param doctCode 医生编码
* @return 排班信息
*/
public JSONArray getDoctorSchedule(String begDate, String endDate,String doctCode) {
public JSONArray getDoctorSchedule(String begDate, String endDate, String doctCode) {
JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Doctor_Schedule, params -> {
params.put("BegDate", begDate);
params.put("EndDate", endDate);
params.put("DoctCode", doctCode);
});
if(jsonResult.success()){
return jsonResult.getJsonArray("Items","Item");
if (jsonResult.success()) {
return jsonResult.getJsonArray("Items", "Item");
}
return null;
}
@ -972,16 +976,17 @@ public class HisRegisterDao {
/**
* 查询预约待签到记录不包含今日挂号的
*
* @param begDate 开始时间
* @param endDate 结束时间
* @return 待签到记录
*/
public JSONArray getReSignInRecord(String begDate, String endDate){
public JSONArray getReSignInRecord(String begDate, String endDate) {
JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_SignIn, params -> {
params.put("BegDate", begDate);
params.put("EndDate", endDate);
});
if(jsonResult.success()){
if (jsonResult.success()) {
return jsonResult.getJsonArray("Items");
}
return null;
@ -989,10 +994,11 @@ public class HisRegisterDao {
/**
* 执行预约签到(即执行转入号源又执行分时段)
*
* @param transNo 预约时的交易流水号
* @return 预约签到结果
*/
public JsonResult handleSignIn(String transNo){
public JsonResult handleSignIn(String transNo) {
Map<String, Object> params = new HashMap<>();
params.put("TransNo", transNo);
return HisHelper.getJsonResult(HisEnum.AP_SignIN, params);
@ -1000,27 +1006,29 @@ public class HisRegisterDao {
/**
* 查询预约待签到记录包含今日挂号的
*
* @param begDate 开始时间
* @param endDate 结束时间
* @return 待签到记录
*/
public JSONArray getReLineSignInRecord(String begDate, String endDate){
public JSONArray getReLineSignInRecord(String begDate, String endDate) {
JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Line_SignIn, params -> {
params.put("BegDate", begDate);
params.put("EndDate", endDate);
});
if(jsonResult.success()){
return jsonResult.getJsonArray("Items","Item");
if (jsonResult.success()) {
return jsonResult.getJsonArray("Items", "Item");
}
return null;
}
/**
* 执行预约签到(只执行分时段)
*
* @param treatNum 门诊号
* @return 预约签到结果1
*/
public JsonResult handleLineSignIn(String treatNum){
public JsonResult handleLineSignIn(String treatNum) {
Map<String, Object> params = new HashMap<>();
params.put("MZNum", treatNum);
return HisHelper.getJsonResult(HisEnum.AP_Line_SignIN, params);

@ -1,11 +1,9 @@
package com.ynxbd.common.dao.xbd;
import com.aliyun.tea.okhttp.OkRequestBody;
import com.ynxbd.common.helper.http.OkHttpHelper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.RequestBody;
/**
@ -18,18 +16,22 @@ import okhttp3.RequestBody;
@Slf4j
@AllArgsConstructor
public class OutTeamDao {
private final String cloudFilmLink;
public String getCloudFilmPath(String info){
public String getCloudFilmPath(String info) {
RequestBody requestBody = new FormBody.Builder()
.add("info",info)
.add("info", info)
.build();
String enInfo = OkHttpHelper.post(cloudFilmLink+"/tickets/Encrypt",requestBody);
log.info("[内部团队接口请求]enInfo-{}",enInfo);
String enInfo = OkHttpHelper.post(cloudFilmLink + "/tickets/Encrypt", requestBody);
log.info("[内部团队接口请求]enInfo-{}", enInfo);
RequestBody enRequestBody = new FormBody.Builder()
.add("enc_info",enInfo)
.add("enc_info", enInfo)
.build();
String token = OkHttpHelper.post(cloudFilmLink+"/tickets/GetKey",enRequestBody);
log.info("[内部团队接口请求]token-{}",token);
String token = OkHttpHelper.post(cloudFilmLink + "/tickets/GetKey", enRequestBody);
log.info("[内部团队接口请求]token-{}", token);
return token;
}
}

@ -19,10 +19,11 @@ public class XBDHelper {
static {
ProperHelper config = new ProperHelper().read("xbd.properties");
OUT_TEAM_CLOUD_FILM = config.getString("xbd.out_team_cloud_film_link");
MEDICAL_RECORD_REMAKE_URL = config.getString("xbd.medical_record_remake_url");
XBD_PEIS = config.getString("xbd.peis");
if(OUT_TEAM_CLOUD_FILM ==null){
if (OUT_TEAM_CLOUD_FILM == null) {
log.error("新八达内部团队配置文件读取失败");
}
outTeamDao = new OutTeamDao(OUT_TEAM_CLOUD_FILM);

@ -17,7 +17,6 @@ import org.dom4j.Element;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Getter

@ -22,7 +22,6 @@ import com.ynxbd.wx.wxfactory.bean.MedicalOrder;
import com.ynxbd.wx.wxfactory.bean.MedicalUserInfo;
import com.ynxbd.wx.wxfactory.bean.OrderTypeEnum;
import com.ynxbd.wx.wxfactory.medical.MdConfig;
import com.ynxbd.wx.wxfactory.medical.enums.MdRefundTypeEnum;
import lombok.extern.slf4j.Slf4j;
import java.math.BigDecimal;
@ -346,23 +345,31 @@ public class MedicalService {
log.info("[医保][挂号]HIS结算调用超时 outTradeNo={}, bankTransNo={}, tradeNo={}, mdUserId={}", outTradeNo, bankTransNo, tradeNo, mdUserId);
return false;
}
if (MdConfig.IS_AUTO_REFUND) {
if (!MdConfig.IS_AUTO_REFUND) {
log.info("[医保][挂号]现金自动退费功能未开启 outTradeNo={}, bankTransNo={}, tradeNo={}", outTradeNo, bankTransNo, tradeNo);
return false;
}
if (respMessage != null && !respMessage.contains("(医保结算部分已回退)")) {
log.info("[医保][挂号]HIS医保部分未退费成功,禁止现金部分退费 outTradeNo={}, bankTransNo={}, tradeNo={}", outTradeNo, bankTransNo, tradeNo);
return false;
}
if (cashFee.compareTo(BigDecimal.ZERO) == 0) { // 现金部分为0
log.info("[医保][挂号]现金为0不执行退费 outTradeNo={}, bankTransNo={}, tradeNo={}", outTradeNo, bankTransNo, tradeNo);
return false;
}
// 微信医保自动退费
MedicalOrder order = WxMedicalHelper.refundCash(outTradeNo, ("R" + tradeNo), tradeNo, cashFee, "系统繁忙缴费失败,自动退费");
MedicalOrder order = WxMedicalHelper.refundCash(outTradeNo, tradeNo, cashFee, "系统繁忙缴费失败,自动退费");
boolean isOk = order.isOk();
log.info("【微信】[医保][挂号]现金自动退费{} outTradeNo={}, bankTransNo={}, tradeNo={}", (isOk ? "成功" : "失败"), outTradeNo, bankTransNo, tradeNo);
if (isOk) {
String refundResult = order.isOk() ? WxPayHelper.OK : order.getMessage();
log.info("【微信】[医保][挂号]现金自动退费 outTradeNo={}, bankTransNo={}, tradeNo={} [{}]:{}", outTradeNo, bankTransNo, tradeNo, (isOk ? "成功" : "失败"), order.getMessage());
if (!regDao.updateRefundByTradeNo(tradeNo, refundResult)) {
log.info("【微信】[医保][挂号]现金自动退费 修改数据库状态失败 tradeNo={}, refundResult={}", tradeNo, refundResult);
}
} else {
log.info("【微信】[医保][挂号]现金自动退费 失败:{}", order.getMessage());
}
return false;
}
@ -429,7 +436,7 @@ public class MedicalService {
log.info("{} [医保][处方]更新商户信息成功 outTradeNo={}, bankTransNo={}", merchantEnum.NAME, outTradeNo, bankTransNo);
}
JsonResult jsonResult = HisMedicalDao.mdPay(mdUserId, payDate, payTime, tradeNo, bankTransNo, cashFee);
JsonResult jsonResult = HisMedicalDao.mdRecipePay(mdUserId, payDate, payTime, tradeNo, bankTransNo, cashFee);
if (!jsonResult.success()) {
String respCode = jsonResult.getCode();
@ -445,23 +452,28 @@ public class MedicalService {
return false;
}
if (MdConfig.IS_AUTO_REFUND) {
if (!MdConfig.IS_AUTO_REFUND) {
log.info("[医保][处方][现金自动退费]功能未开启 outTradeNo={}, bankTransNo={}, tradeNo={}", outTradeNo, bankTransNo, tradeNo);
return false;
}
if (respMessage != null && !respMessage.contains("(医保结算部分已回退)")) {
log.info("[医保][处方]HIS医保部分未退费成功,禁止现金部分退费 outTradeNo={}, bankTransNo={}, tradeNo={}", outTradeNo, bankTransNo, tradeNo);
return false;
}
// 微信医保自动退费
MedicalOrder order = WxMedicalHelper.refundCash(outTradeNo, ("R" + tradeNo), tradeNo, cashFee, "系统繁忙缴费失败,自动退费");
if (cashFee.compareTo(BigDecimal.ZERO) == 0) { // 现金部分为0
log.info("[医保][处方]现金为0不执行退费 outTradeNo={}, bankTransNo={}, tradeNo={}", outTradeNo, bankTransNo, tradeNo);
return false;
}
MedicalOrder order = WxMedicalHelper.refundCash(outTradeNo, tradeNo, cashFee, "系统繁忙缴费失败,自动退费");
boolean isOk = order.isOk();
log.info("【微信】[医保][处方]现金自动退费 {} outTradeNo={}, bankTransNo={}, tradeNo={}", (isOk ? "成功" : "失败"), outTradeNo, bankTransNo, tradeNo);
if (isOk) {
String refundResult = order.isOk() ? WxPayHelper.OK : order.getMessage();
log.info("【微信】[医保][处方]现金自动退费 outTradeNo={}, bankTransNo={}, tradeNo={} [{}]:{}", outTradeNo, bankTransNo, tradeNo, (isOk ? "成功" : "失败"), order.getMessage());
if (!recipeDao.updateRefundByTradeNo(tradeNo, refundResult)) {
log.info("[医保][处方]现金自动退费 修改数据库状态失败 tradeNo={}, refundResult={}", tradeNo, refundResult);
}
} else {
log.info("【微信】[医保][处方]现金自动退费 失败:{}", order.getMessage());
}
return false;
}

@ -17,18 +17,18 @@ import java.math.BigDecimal;
*/
@Slf4j
public class MicroService {
public void InternetHospNotice(String outTradeNo, String bankTransNo, String openid, BigDecimal totalFee, String payDate, String payTime){
public void InternetHospNotice(String outTradeNo, String bankTransNo, String openid, BigDecimal totalFee, String payDate, String payTime) {
RequestBody body = new FormBody.Builder().
add("callNo","ol_register").
add("callNo", "ol_register").
add("outTradeNo", AesHelper.enCode(outTradeNo)).
add("bankTransNo",AesHelper.enCode(bankTransNo)).
add("openid",AesHelper.enCode(openid)).
add("totalFee",AesHelper.enCode(totalFee.toString())).
add("payDate",payDate).
add("payTime",payTime).
add("bankTransNo", AesHelper.enCode(bankTransNo)).
add("openid", AesHelper.enCode(openid)).
add("totalFee", AesHelper.enCode(totalFee.toString())).
add("payDate", payDate).
add("payTime", payTime).
build();
log.info("[互联网医院在线问诊支付回调]outTradeNo-{},bankTransNo-{},openid-{},totalFee-{},payDate-{},payTime-{}",outTradeNo,bankTransNo,openid,totalFee,payDate,payTime);
OkHttpHelper.post("http://127.0.0.1/micro/pay/payNotice",body);
log.info("[互联网医院在线问诊支付回调]回调成功");
log.info("[互联网医院在线问诊支付回调] outTradeNo-{}, bankTransNo-{}, openid-{}, totalFee-{}, payDate-{}, payTime-{}", outTradeNo, bankTransNo, openid, totalFee, payDate, payTime);
OkHttpHelper.post("http://127.0.0.1/micro/pay/payNotice", body);
}
}

@ -1,16 +1,15 @@
package com.ynxbd.common.service;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.ali.enums.AliEnergyEnum;
import com.ynxbd.ali.enums.AliMsgEnum;
import com.ynxbd.ali.helper.*;
import com.ynxbd.ali.helper.AliHelper;
import com.ynxbd.ali.helper.AliMessageHelper;
import com.ynxbd.common.action.pay.PEnum;
import com.ynxbd.common.bean.sms.SmsRegTem;
import com.ynxbd.common.bean.enums.HospEnum;
import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.Order;
import com.ynxbd.common.bean.pay.Register;
import com.ynxbd.common.bean.sms.SmsTemplate;
import com.ynxbd.common.bean.sms.SmsRegTem;
import com.ynxbd.common.dao.RefundDao;
import com.ynxbd.common.dao.RegisterDao;
import com.ynxbd.common.dao.his.HisAccountDao;
@ -20,7 +19,10 @@ import com.ynxbd.common.helper.common.DateHelper;
import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.helper.common.SmsHelper;
import com.ynxbd.common.helper.his.HisHelper;
import com.ynxbd.common.result.*;
import com.ynxbd.common.result.JsonResult;
import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.result.ServiceException;
import com.ynxbd.wx.config.MessagePushConfig;
import com.ynxbd.wx.config.MiddleOfficeConfig;
import com.ynxbd.wx.config.WeChatConfig;
@ -35,7 +37,6 @@ import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* 挂号业务层
@ -147,6 +148,7 @@ public class RegService {
log.info("{} 开始调用HIS挂号:patientId={}, bankTransNo={}", merchantEnum.NAME, patientId, bankTransNo);
String hisTransNo = null, treatNum = null, hisQueueNo, callNum = null, invoiceTransNo = null;
// 挂号类型:1:预约挂号,2:现场挂号;3:分时段预约挂号,4:分时段现场挂号
JsonResult jsonResult;
@ -206,25 +208,23 @@ public class RegService {
log.info("{} [挂号]更新HIS挂号信息成功 patientId={}", merchantEnum.NAME, patientId);
}
if(HospEnum.isHosp(HospEnum.红河州人民医院)&&"0503".equals(reg.getDeptCode())){
MessagePushConfig.regObsDocument(merchantEnum,reg);
if (HospEnum.isHosp(HospEnum.红河州人民医院) && "0503".equals(reg.getDeptCode())) {
MessagePushConfig.regObsDocument(merchantEnum, reg);
}
// 短信通知
smsNotice(reg);
if (MerchantEnum.WX.equals(merchantEnum)) {
MessagePushConfig.regPush(merchantEnum, reg);
MessagePushConfig.regAI(merchantEnum,reg);
MessagePushConfig.regAI(merchantEnum, reg);
// 挂号导航推送
MessagePushConfig.regNavigatePush(merchantEnum, reg);
// 电子健康卡上报数据
HCodeService.regPayReportHISData(openid, patientId, reg.getDeptName(), reg.getRegDate());
}
@ -234,7 +234,6 @@ public class RegService {
String title = "挂号 " + reg.getDeptName();
AliMessageHelper.hospitalOrder(openid, title, AliMsgEnum.MERCHANT_PREORDER_SUCCESS, reg.getUpdateTime(), true, totalFee, outTradeNo, reg.getRegDate(), reg.getBegTime(), reg.getDeptCode(), reg.getDeptName(), reg.getDoctName(),
AliHelper.getLink(link, null));
}
@ -362,14 +361,13 @@ public class RegService {
}
boolean isResult = false;
if (HospEnum.isHosp(HospEnum.德宏州中医医院)) {
SmsRegTem sms = new SmsRegTem();
sms.setHosp_tel("0692-2991794");
sms.setTime(date + " " + begTime + "-" + endTime);
sms.setAddress(reg.getAddress()==null?"":reg.getAddress().replace(" ","").replace("(","(").replace(")",")"));
sms.setAddress(reg.getAddress() == null ? "" : reg.getAddress().replace(" ", "").replace("(", "(").replace(")", ")"));
sms.setDeptName(reg.getDeptName());
sms.setDoctorName(reg.getDoctName());
sms.setSeq(reg.getQueueNum());
@ -496,7 +494,7 @@ public class RegService {
return Result.error("今日挂号支付信息的参数为空");
}
if("OK".equals(reg.getRefundResult())){
if ("OK".equals(reg.getRefundResult())) {
return Result.error("已退费,请不要重复退费");
}
@ -504,7 +502,7 @@ public class RegService {
return Result.error("支付方式未匹配 outTradeNo=" + outTradeNo);
}
if(HospEnum.isHosp(HospEnum.红河州人民医院)) {
if (HospEnum.isHosp(HospEnum.红河州人民医院)) {
if (MiddleOfficeConfig.MIDDLE_OFFICE_URL != null) {
MiddleOfficeConfig.uploadTreatNum("JH0105", reg.getTreatNum());
}
@ -677,17 +675,17 @@ public class RegService {
* @param hisResult 记录信息
*/
public Result regAutoRefund(MerchantEnum merchantEnum, JsonResult JsonResult, String openid, BigDecimal totalFee, String outTradeNo, String tradeNo, String hisResult, String pushInfo, Date tradeDate) {
log.info("[预约挂号/挂号失败自动退费][开始退费]---merchantEnum-{},JsonResult-{},openid-{},totalFee-{},outTradeNo-{},tradeNo-{},hisResult-{},pushInfo-{},tradeDate-{}",merchantEnum,JsonResult,openid,totalFee,outTradeNo,tradeNo,hisResult,pushInfo,tradeDate);
return regRefund(merchantEnum,JsonResult,openid,totalFee,outTradeNo,tradeNo,hisResult,pushInfo,tradeDate,false);
log.info("[预约挂号/挂号失败自动退费][开始退费]---merchantEnum-{},JsonResult-{},openid-{},totalFee-{},outTradeNo-{},tradeNo-{},hisResult-{},pushInfo-{},tradeDate-{}", merchantEnum, JsonResult, openid, totalFee, outTradeNo, tradeNo, hisResult, pushInfo, tradeDate);
return regRefund(merchantEnum, JsonResult, openid, totalFee, outTradeNo, tradeNo, hisResult, pushInfo, tradeDate, false);
}
public Result refundTodayRegister(MerchantEnum merchantEnum, JsonResult JsonResult, String openid, BigDecimal totalFee, String outTradeNo, String tradeNo, String hisResult, String pushInfo, Date tradeDate){
log.info("[今日挂号][开始退费]---merchantEnum-{},JsonResult-{},openid-{},totalFee-{},outTradeNo-{},tradeNo-{},hisResult-{},pushInfo-{},tradeDate-{}",merchantEnum,JsonResult,openid,totalFee,outTradeNo,tradeNo,hisResult,pushInfo,tradeDate);
return regRefund(merchantEnum,JsonResult,openid,totalFee,outTradeNo,tradeNo,hisResult,pushInfo,tradeDate,true);
public Result refundTodayRegister(MerchantEnum merchantEnum, JsonResult JsonResult, String openid, BigDecimal totalFee, String outTradeNo, String tradeNo, String hisResult, String pushInfo, Date tradeDate) {
log.info("[今日挂号][开始退费]---merchantEnum-{},JsonResult-{},openid-{},totalFee-{},outTradeNo-{},tradeNo-{},hisResult-{},pushInfo-{},tradeDate-{}", merchantEnum, JsonResult, openid, totalFee, outTradeNo, tradeNo, hisResult, pushInfo, tradeDate);
return regRefund(merchantEnum, JsonResult, openid, totalFee, outTradeNo, tradeNo, hisResult, pushInfo, tradeDate, true);
}
public Result regRefund(MerchantEnum merchantEnum, JsonResult JsonResult, String openid, BigDecimal totalFee, String outTradeNo, String tradeNo, String hisResult, String pushInfo, Date tradeDate,boolean isToday){
public Result regRefund(MerchantEnum merchantEnum, JsonResult JsonResult, String openid, BigDecimal totalFee, String outTradeNo, String tradeNo, String hisResult, String pushInfo, Date tradeDate, boolean isToday) {
RegisterDao regDao = new RegisterDao();
String code = JsonResult.getCode();
@ -701,7 +699,7 @@ public class RegService {
return Result.error("[挂号不退费]HIS请求超时");
}
if(!isToday){
if (!isToday) {
// 如果HIS交过费返回true-->就不向下执行(自动退款)
String dateShort = DateGenerate.getStringDateShort();
String paidTip = new HisAccountDao().isPaid(DateGenerate.getNextDay(dateShort, "-7"), DateGenerate.getNextDay(dateShort, "7"), tradeNo);
@ -754,7 +752,7 @@ public class RegService {
String sourceId = reg.getSourceId();
// 占用查询开关被开启
if (isOccupySource != null && isOccupySource) {
JsonResult result = HisRegisterDao.isOccupySource(patientId, sourceId , merchantEnum);
JsonResult result = HisRegisterDao.isOccupySource(patientId, sourceId, merchantEnum);
if (!result.success()) {
return Result.error(result.getMessage());
}
@ -804,7 +802,7 @@ public class RegService {
if (respJson == null) {
return Result.error(ResultEnum.PAY_ERROR); // 支付异常
}
respJson.put("outTradeNo",outTradeNo);
respJson.put("outTradeNo", outTradeNo);
return Result.success(respJson);
}

@ -40,28 +40,28 @@ public class Client {
/**
* 微信医保下单
*
* @param orderTypeEnum
* @param accessToken
* @param appId
* @param mchId
* @param mdPayKey
* @param cityCode
* @param hospitalName
* @param orgNo
* @param channel
* @param openid
* @param payAuthNo
* @param payOrdId
* @param outTradeNo
* @param serialNo
* @param totalFee
* @param insuranceFee
* @param cardNo
* @param realName
* @param notifyUrl
* @param callbackUrl
* @param body
* @return
* @param orderTypeEnum 订单类型
* @param accessToken accessToken
* @param appId appId
* @param mchId mchId
* @param mdPayKey mdPayKey
* @param cityCode 城市编码
* @param hospitalName 医院名称
* @param orgNo orgNo
* @param channel channel
* @param openid openid
* @param payAuthNo 医保授权码
* @param payOrdId 医保订单id
* @param outTradeNo 商户订单号
* @param serialNo serialNo
* @param totalFee totalFee
* @param insuranceFee insuranceFee
* @param cardNo 证件号码
* @param realName 真实姓名
* @param notifyUrl 通知地址
* @param callbackUrl 回调地址
* @param body body
* @return MedicalPayOrder
*/
public MedicalPayOrder createOrder(OrderTypeEnum orderTypeEnum, String accessToken,
String appId, String mchId, String mdPayKey,
@ -367,7 +367,6 @@ public class Client {
info.setCardNo(cardNo);
respJson.remove("user_card_no");
}
log.error("[医保授权]返回 resp={}", respJson);
info.setUserName(userName);

@ -33,8 +33,8 @@ public class MdConfig {
public static final String MD_APP_ID;
public static final String MD_APP_SECRET;
public static boolean IS_DEV = true;
public static boolean IS_AUTO_REFUND = true;
public static boolean IS_DEV;
public static boolean IS_AUTO_REFUND;
static {
ProperHelper config = new ProperHelper().read("medical.properties");

@ -13,20 +13,22 @@ import java.util.Map;
import static com.ynxbd.common.helper.http.OkHttpHelper.TYPE_JSON;
@Slf4j
public class WxService {
public void createMenu(WxMenu menu) throws Exception {
createMenu(menu, false);
}
public void createMenu(WxMenu menu, boolean condition) throws Exception {
String url = (condition
public void createMenu(WxMenu menu, boolean isCondition) throws Exception {
String url = (isCondition
? "https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token="
: "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=")
+ WxCacheHelper.getAccessToken();
try {
String result = this.post(url, new ObjectMapper().writeValueAsString(menu));
System.out.println("[wx-tools]Create Menu result:" + result);
log.info("[wx-tools]Create Menu result={}", result);
} catch (Exception e) {
throw new Exception("[wx-tools]createMenu failure.");
}
@ -49,7 +51,6 @@ public class WxService {
public WxMenuResult getMenu() throws Exception {
String url = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=" + WxCacheHelper.getAccessToken();
try {
return WxMenuResult.fromJson(get(url, null));
} catch (Exception e) {
@ -66,5 +67,4 @@ public class WxService {
return OkHttpHelper.post(url, RequestBody.create(TYPE_JSON, params), null);
}
}

@ -15,5 +15,4 @@ public class WxMenu {
private List<WxMenuButton> button ;
private WxMenuRule matchrule;
private String menuid;
}

@ -1,14 +1,12 @@
package wx_menu;
import com.ynxbd.common.result.Result;
import com.ynxbd.wx.config.WeChatConfig;
import com.ynxbd.wx.wxfactory.menu.WxService;
import com.ynxbd.wx.wxfactory.menu.bean.WxMenu;
import com.ynxbd.wx.wxfactory.menu.bean.WxMenuButton;
import com.ynxbd.wx.wxfactory.menu.bean.WxMsgConst;
import com.ynxbd.wx.wxfactory.utils.WxEventHelper;
import com.ynxbd.wx.wxfactory.utils.WxPassiveReplyHelper;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

@ -1,9 +1,11 @@
# \u4E91\u80F6\u7247\u5730\u5740
xbd.out_team_cloud_film_link= http://192.168.10.43:3307/wx3307
# \u75C5\u5386\u590D\u5370
xbd.medical_record_remake_url = http://192.168.12.66:8081
# \u4F53\u68C0
xbd.peis = http://192.168.12.102:3000/peisReserve
#location /wx3303{
#proxy_pass http://10.20.11.60:3303;
#proxy_set_header X-Real-IP $remote_addr;

Loading…
Cancel
Save