1:调整:调整获取用户定位权限的接口,返回appId,无需在前端再次配置。

2:优化:调整科室列表返回的过滤,优先显示挂号返回的地址信息。优化性能。
3:新增:新增接口根据openid查询未来的挂号列表。
4、新增:新增查询HIS挂号信息的接口,可查询预约挂号和今日挂号和历史挂号信息。并优化共有逻辑,查询今日挂号时传递日期,并更加流水号匹配就医助手选择的挂号。能够确保显示挂号一定成功。
5、新增:新增接口用于记录就医助手的当前最新进程,并限制不能重复提交新进程。
6、新增:就医助手新增预约挂号信息、门诊候诊、门诊签到、门诊检验和门诊取药界面等
7、修复:在流程1预约挂号中查看挂号信息时,如果为今日挂号时,会修改当前进程状态,并进入下一步,但如果当前的最大进程大于预约挂号的进程时,第一次点击,闪烁并进入第二个进程的问题修复。
8、维护:红河州第一人民医院问卷调查问题排查(使用者流程不清楚)。
9、维护:德宏州中医药互联网医院维护和沟通处理。
debug
wangsq 3 weeks ago
parent b317ab7167
commit c08a0e2b5f
  1. 10
      src/main/java/com/ynxbd/common/action/AccountsAction.java
  2. 18
      src/main/java/com/ynxbd/common/action/ApiAction.java
  3. 2
      src/main/java/com/ynxbd/common/action/HealthCodeAction.java
  4. 136
      src/main/java/com/ynxbd/common/action/RegisterAction.java
  5. 4
      src/main/java/com/ynxbd/common/action/SmsAction.java
  6. 2
      src/main/java/com/ynxbd/common/action/XBDAction.java
  7. 14
      src/main/java/com/ynxbd/common/action/pay/PayAction.java
  8. 2
      src/main/java/com/ynxbd/common/action/pay/ThirdPartyPayAction.java
  9. 10
      src/main/java/com/ynxbd/common/bean/enums/MerchantEnum.java
  10. 4
      src/main/java/com/ynxbd/common/bean/pay/Register.java
  11. 49
      src/main/java/com/ynxbd/common/dao/RegisterDao.java
  12. 5
      src/main/java/com/ynxbd/common/dao/his/HisRegisterDao.java
  13. 1
      src/main/java/com/ynxbd/common/helper/common/SmsHelper.java
  14. 2
      src/main/java/com/ynxbd/common/result/Result.java
  15. 51
      src/main/java/com/ynxbd/common/service/CasebookService.java
  16. 8
      src/main/java/com/ynxbd/common/service/HCodeService.java
  17. 4
      src/main/java/com/ynxbd/common/service/MedicalService.java
  18. 6
      src/main/java/com/ynxbd/common/service/PayService.java
  19. 83
      src/main/java/com/ynxbd/common/service/RegService.java
  20. 2
      src/main/java/com/ynxbd/common/service/cache/PayCache.java
  21. 2
      src/main/java/com/ynxbd/wx/servlet/QServlet.java
  22. 2
      src/main/java/com/ynxbd/wx/wxfactory/WxCacheHelper.java

@ -70,7 +70,7 @@ public class AccountsAction extends BaseAction {
/**
* [HIS]查询交易流水
* [HIS]查询交易流水仅能查询线上缴费记录
*
* @param begDate 开始日期
* @param endDate 结束日期
@ -108,7 +108,7 @@ public class AccountsAction extends BaseAction {
}
List<HisTransaction> resultList = jsonResult.getDataMapList(HisTransaction.class, "Item");
if (resultList.size() == 0) {
if (resultList.isEmpty()) {
return Result.error(ResultEnum.INTERFACE_HIS_INVOKE_ERROR);
}
@ -215,7 +215,7 @@ public class AccountsAction extends BaseAction {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByOutTradeNo(outTradeNo);
MerchantEnum merchantEnum = MerchantEnum.findEnumByOutTradeNo(outTradeNo);
Bill bill = PayService.queryRefund(merchantEnum, outTradeNo, bankTransNo, outRefundNo);
return bill == null ? Result.error() : Result.success(bill);
} catch (ServiceException e) {
@ -306,7 +306,7 @@ public class AccountsAction extends BaseAction {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(callNo);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(callNo);
if (merchantEnum == null) {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
@ -425,7 +425,7 @@ public class AccountsAction extends BaseAction {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(callNo);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(callNo);
if (merchantEnum == null) {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}

@ -7,12 +7,9 @@ import com.ynxbd.common.bean.sms.SmsTemplate;
import com.ynxbd.common.helper.common.*;
import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.result.ServiceException;
import com.ynxbd.common.service.ReportService;
import com.ynxbd.wx.config.WeChatConfig;
import com.ynxbd.wx.utils.DesEncryptHelper;
import com.ynxbd.wx.wxfactory.ReqParamHelper;
import com.ynxbd.wx.wxfactory.WxAuthHelper;
import com.ynxbd.wx.wxfactory.WxCacheHelper;
import com.ynxbd.wx.wxfactory.bean.AccessToken;
import lombok.extern.slf4j.Slf4j;
@ -67,9 +64,13 @@ public class ApiAction extends BaseAction {
@Action("getWxJsapiTicket")
public Result getWxJsapiTicket() {
String ticket = WxCacheHelper.getJsapiTicket();
if (ticket ==null)
if (ticket == null) {
return Result.error();
return Result.success(ticket);
}
Map<String, Object> data = new HashMap<>();
data.put("ticket", ticket);
data.put("appId", WeChatConfig.APP_ID);
return Result.success(data);
}
/**
@ -172,12 +173,12 @@ public class ApiAction extends BaseAction {
}
@Action("getEnPatientId")
public Result getEnPatientId(String patientId){
if(patientId==null){
public Result getEnPatientId(String patientId) {
if (patientId == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
patientId = ReqParamHelper.encode(patientId);
for (int i = 0; i< 3;i++){
for (int i = 0; i < 3; i++) {
patientId = Base64.getEncoder().encodeToString(patientId.getBytes());
}
return Result.success(patientId);
@ -217,7 +218,6 @@ public class ApiAction extends BaseAction {
}
/**
* 第三方使用勿动
*/

@ -388,7 +388,7 @@ public class HealthCodeAction extends BaseAction {
if (orderId == null || registerOrderId == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); // 参数为空
}
return Result.change(HCodeService.checkUniformVerifyResult(orderId, registerOrderId));
return Result.isOK(HCodeService.checkUniformVerifyResult(orderId, registerOrderId));
}

@ -14,6 +14,8 @@ 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.common.service.RegService;
import com.ynxbd.wx.wxfactory.ReqParamHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.struts2.convention.annotation.Action;
@ -92,7 +94,7 @@ public class RegisterAction extends BaseAction {
List<Dept> deptList = new HisRegisterDao().getTimeDeptList(begDate, endDate, deptCode);
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(merCode);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(merCode);
if (MerchantEnum.ALI.equals(merchantEnum)) {
AliUploadHelper.uploadDept(deptList, true);
}
@ -157,7 +159,7 @@ public class RegisterAction extends BaseAction {
resultList.add(dept);
}
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(merCode);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(merCode);
if (MerchantEnum.ALI.equals(merchantEnum)) {
AliUploadHelper.uploadDept(resultList, isReserve);
}
@ -189,67 +191,68 @@ public class RegisterAction extends BaseAction {
return Result.success(doctorList);
}
/**
* [预约挂号]获取预约记录
*/
@Action("getReserveHistory")
public Result getReserveHistory(String begDate, String endDate, String patientId) {
log.info("[预约挂号]查询挂号记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate);
if (patientId == null || begDate == null || endDate == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
List<Register> resultList = new HisRegisterDao().getRegReserveHistory(patientId, null);
return Result.success(resultList);
}
/**
* [今日挂号]查询挂号记录
* [挂号]查询挂号记录
*/
@Action("getSiteHistory")
public Result getSiteHistory(String begDate, String endDate, String patientId) {
log.info("[现场挂号]查询挂号记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate);
try {
log.info("[挂号]查询挂号记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate);
if (patientId == null || begDate == null || endDate == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
patientId = getDecodeString(patientId);
List<Register> hisList = new HisRegisterDao().getRegTodayHistory(patientId, null);
List<Register> resultList = new ArrayList<>();
String regDate;
for (Register reg : hisList) {
regDate = reg.getRegDate();
if (regDate != null) {
regDate = DateHelper.dateFormatShort(regDate);
if (regDate != null && DateHelper.inDateRange(begDate, endDate, regDate, DateHelper.DateEnum.yyyy_MM_dd)) {
resultList.add(reg);
}
}
List<Register> regRecords = new RegService().getHisRegRecords(patientId, begDate, endDate);
return Result.success(regRecords);
} catch (Exception e) {
return Result.error(e);
}
return Result.success(resultList);
}
/**
* [挂号]查询挂号记录
* [挂号]查询挂号历史
*/
@Action("getRegList")
public Result getRegList(String begDate, String endDate, String openid) {
@Action("getHisRegRecords")
public Result getRegHistory(String begDate, String endDate, String patientId) {
try {
log.info("[挂号]查询挂号记录 begDate={}, endDate={}, openid={}", begDate, endDate, openid);
if (begDate == null || endDate == null || openid == null) {
log.info("[挂号]查询挂号记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate);
if (patientId == null || begDate == null || endDate == 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);
patientId = getDecodeString(patientId);
List<Register> regRecords = new RegService().getHisRegRecords(patientId, begDate, endDate);
return Result.success(regRecords);
} catch (Exception e) {
return Result.error(e);
}
}
/**
* [预约挂号]获取预约记录
*/
@Action("getReserveHistory")
public Result getReserveHistory(String begDate, String endDate, String patientId) {
log.info("[预约挂号]查询挂号记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate);
@Action("getHisRegReserveRecords")
public Result getHisRegReserveRecords(String begDate, String endDate, String patientId) {
log.info("[预约挂号]查询预约记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate);
if (patientId == null || begDate == null || endDate == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
List<Register> resultList = new HisRegisterDao().getRegReserveHistory(patientId, null);
return Result.success(resultList);
List<Register> dataList = new RegService().getHisRegReserveRecords(patientId, null);
return Result.success(dataList);
}
@ -412,6 +415,71 @@ public class RegisterAction extends BaseAction {
}
/**
* [就医助手]根据挂号日期范围查询挂号记录
*/
@Action("getRegRecordsByOpenId")
public Result getRegRecordsByOpenId(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.setEnId(ReqParamHelper.encode(String.valueOf(item.getId())));
item.setId(null);
item.filterInfo(); // 数据过滤
}
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("date", DateHelper.getCurDateTime());
dataMap.put("list", regList);
return Result.success(dataMap);
} catch (Exception e) {
return Result.error(e);
}
}
/**
* [就医助手]查询HIS挂号记录
*/
@Action("getHisRegInfo")
public Result getHisRegInfo(String regDate, String patientId, String hisTransNo, String openId) {
log.info("[就医助手]查询HIS挂号信息 regDate={}, patientId={}, hisTransNo={} openId={}", regDate, patientId, hisTransNo, openId);
patientId = getDecodeString(patientId);
if (ObjectUtils.isEmpty(regDate) || ObjectUtils.isEmpty(patientId)) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
try {
Register record = new RegService().findHisRegRecord(patientId, regDate, hisTransNo);
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("date", DateHelper.getCurDateTime());
dataMap.put("info", record);
return Result.success(dataMap);
} catch (Exception e) {
return Result.error(e);
}
}
/**
* [就医助手]修改流程状态
*/
@Action("updateRegMedToolMark")
public Result updateRegMedToolMark(String id, String medToolMark, String openId) {
id = getDecodeString(id);
log.info("[就医助手]修改流程状态 id={}, medToolMark={}, openId={}", id, medToolMark, openId);
if (ObjectUtils.isEmpty(id) || medToolMark == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
try {
boolean isOK = new RegService().updateRegMedToolMark(id, medToolMark, openId);
return Result.isOK(isOK);
} catch (Exception e) {
return Result.error(e);
}
}
// /**
// * [预约挂号]获取指定科室医生信息
// */

@ -13,8 +13,6 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import java.sql.Array;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -167,7 +165,7 @@ public class SmsAction extends BaseAction {
default:
return Result.error(ResultEnum.PARAM_CALL_NO_NOT_FOUND);
}
return Result.change(isFlag);
return Result.isOK(isFlag);
}

@ -173,7 +173,7 @@ public class XBDAction extends BaseAction {
@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);
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(payCode);
if (merchantEnum == null) { // 支付方式异常
return Result.error(ResultEnum.PAY_TYPE_ERROR);
}

@ -79,7 +79,7 @@ public class PayAction extends BaseAction {
*/
@Action("recipePay")
public Result recipePay(boolean isPrepay, String payCode, String openid, String patientId, String treatNum, String totalFee, String recipeJson, String payWay, Integer awaitSecond) {
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(payCode);
if (merchantEnum == null) { // 支付方式异常
return Result.error(ResultEnum.PAY_TYPE_ERROR);
}
@ -146,7 +146,7 @@ public class PayAction extends BaseAction {
if (new BigDecimal(totalFee).compareTo(BigDecimal.ZERO) == 0) {
return Result.error(ResultEnum.PAY_MONEY_IS_ZERO);
}
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(payCode);
if (merchantEnum == null) { // 支付方式异常
return Result.error(ResultEnum.PAY_TYPE_ERROR);
}
@ -181,7 +181,7 @@ public class PayAction extends BaseAction {
public Result peisRefund(String recipeId, String payCode, String outTradeNo, String totalFee, String openid) {
log.info("[体检预约]取消预约退费,recipeId-{}.payCode-{},outTradeNo-{},totalFee-{},openid-{}", recipeId, payCode, outTradeNo, totalFee, openid);
PeisService peisService = new PeisService();
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(payCode);
PeisDao peisDao = new PeisDao();
Recipe recipe = peisDao.selectByOutTradeNo(outTradeNo);
if (new BigDecimal(totalFee).compareTo(recipe.getTotalFee()) != 0) {
@ -210,7 +210,7 @@ public class PayAction extends BaseAction {
return result;
}
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(payCode);
if (merchantEnum == null) {
// 支付方式异常
return Result.error(ResultEnum.PAY_TYPE_ERROR);
@ -826,7 +826,7 @@ public class PayAction extends BaseAction {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
}
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(payCode);
if (merchantEnum == null) {
return Result.error(ResultEnum.PAY_TYPE_NOT_SUPPORT);
}
@ -856,7 +856,7 @@ public class PayAction extends BaseAction {
*/
@Action("refundOLOrder")
public Result refundOLOrder(String payCode, String outTradeNo, String totalFee, String bankTransNo, String openid, String patientId, String refundDesc) {
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(payCode);
if (merchantEnum == null) {
return Result.error(ResultEnum.PAY_TYPE_NOT_SUPPORT);
}
@ -884,7 +884,7 @@ public class PayAction extends BaseAction {
@Action("ocPay")
public Result ocPay(String payCode, String title, BigDecimal totalFee, String openid, boolean isWeb, boolean isQrCode,
String collectId, String mid, String name, String cardNo, String patientId, String remark) {
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(payCode);
if (merchantEnum == null) { // 支付方式异常
return Result.error(ResultEnum.PAY_TYPE_ERROR);
}

@ -53,7 +53,7 @@ public class ThirdPartyPayAction extends BaseAction {
if (ObjectUtils.isEmpty(sourceId) || ObjectUtils.isEmpty(patientId) || ObjectUtils.isEmpty(date) || money == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(payCode);
if (merchantEnum == null) {
return Result.error(ResultEnum.PAY_TYPE_ERROR); // 支付方式异常
}

@ -46,8 +46,6 @@ public enum MerchantEnum {
public final String CODE;
public final String NAME;
@ -78,7 +76,7 @@ public enum MerchantEnum {
this.PAY_WAY_MICRO = PAY_WAY_MICRO;
}
public static MerchantEnum getMerchantEnumByCode(String code) {
public static MerchantEnum findEnumByCode(String code) {
if (ObjectUtils.isEmpty(code)) {
return null;
}
@ -98,7 +96,7 @@ public enum MerchantEnum {
* @param outTradeNo 商户订单号
* @return 支付类型
*/
public static MerchantEnum getMerchantEnumByOutTradeNo(String outTradeNo) {
public static MerchantEnum findEnumByOutTradeNo(String outTradeNo) {
if (outTradeNo == null) {
return null;
}
@ -128,7 +126,7 @@ public enum MerchantEnum {
* @param payWay 支付代码
* @return 支付方式
*/
public static MerchantEnum getMerchantEnumByPayWay(String payWay) {
public static MerchantEnum findEnumByPayWay(String payWay) {
if (ObjectUtils.isEmpty(payWay)) {
return MerchantEnum.WX;
}
@ -146,7 +144,7 @@ public enum MerchantEnum {
* @param userAgent 用户客户端信息
* @return 支付类型
*/
public static MerchantEnum getMerchantEnumByQr(String userAgent) {
public static MerchantEnum findEnumByQr(String userAgent) {
if (userAgent.contains("MicroMessenger")) {
return MerchantEnum.WX;

@ -18,6 +18,7 @@ import java.math.BigDecimal;
@NoArgsConstructor
public class Register extends Order {
private Long id;
private String enId;
private String deptCode;
private String subDeptCode;
@ -75,5 +76,6 @@ public class Register extends Order {
private String orderFromOwner;
// 判断是否为分时段挂号
private Boolean isSplitTime;
// 就医助手流程标记
private String medToolMark;
}

@ -224,7 +224,7 @@ public class RegisterDao {
*
* @param deptCode 科室code
*/
public Dept deptFilter(List<Dept> wxDeptList, String deptCode, String deptName, String address, String hospitalAreaName) {
public Dept deptFilter(List<Dept> dbDeptList, String deptCode, String deptName, String address, String hospitalAreaName) {
Dept dept = new Dept();
dept.setDeptCode(deptCode);
dept.setDeptName(deptName);
@ -235,26 +235,20 @@ public class RegisterDao {
return dept;
}
if (wxDeptList.size() == 0) {
if (dbDeptList.isEmpty()) {
return dept;
}
Dept wxDept = wxDeptList.stream().filter(item ->
Dept dbDept = dbDeptList.stream().filter(item ->
deptCode.equals(item.getDeptCode())).findAny().orElse(null);
if (wxDept != null) {
Boolean isDisabled = wxDept.getIsDisabled();
Integer deletedState = wxDept.getDeletedState();
if (dbDept != null) {
Boolean isDisabled = dbDept.getIsDisabled();
Integer deletedState = dbDept.getDeletedState();
if ((isDisabled != null && isDisabled) || (deletedState != null && deletedState != 0)) { // 禁用 | 移除 返回null
return null;
}
wxDept.setDeptName(deptName);
wxDept.setDescription(null);
// String wxAddress = wxDept.getAddress();
// wxDept.setAddress(!ObjectUtils.isEmpty(wxAddress) ? wxAddress : address);
wxDept.setHospitalAreaName(hospitalAreaName);
return wxDept;
dept.setAddress(ObjectUtils.isEmpty(address) ? dbDept.getAddress() : address); // HIS优先级最高
}
return dept;
}
@ -720,17 +714,40 @@ public class RegisterDao {
});
}
/**
* [就医助手]根据挂号日期范围查询挂号记录
*
* @param begDate 开始日期
* @param endDate 结束日期
* @param openid openid
*/
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";
String sql = "select * from register where openid = ? and regDate between ? and ? and payStatus = 0 and hisStatus = 0 and refundTime is null order by regDate asc, updateTime asc";
return DataBase.select(sql, Register.class, ps -> {
ps.setString(1, openid);
ps.setString(2, begDate);
ps.setString(3, finalEndDate);
ps.setString(3, endDate);
});
}
// LOCATE未找到返回0
public int updateRegMedToolMark(String id, String addMedToolMark, String updateMedToolMark) {
String sql = "update register set medToolMark=? where id=? and Locate(?, ifNull(medToolMark, '')) = 0";
return DataBase.update(sql, ps -> {
ps.setString(1, updateMedToolMark);
ps.setString(2, id);
ps.setString(3, addMedToolMark);
});
}
public Register selectRegisterById(String id) {
String sql = "select * from register where id = ?";
return DataBase.selectOne(sql, Register.class, ps -> {
ps.setString(1, id);
});
}
}

@ -519,7 +519,6 @@ public class HisRegisterDao {
params.put("ReservationTransNo", "");
params.put("AfterTodayFlag", "0");
JsonResult JsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Reservation, params);
if (!JsonResult.success()) {
return resultList;
@ -667,7 +666,7 @@ public class HisRegisterDao {
String address, returnDeptCode, deptName, hospitalAreaName;
RegisterDao registerDao = new RegisterDao();
List<Dept> wxDeptList = registerDao.selectDeptList();
List<Dept> dbDeptList = registerDao.selectDeptList();
String subDeptJson;
List<Dept> subDeptList;
@ -682,7 +681,7 @@ public class HisRegisterDao {
hospitalAreaName = nodeItem.getString("HospitalAreaName");
// 科室过滤
dept = registerDao.deptFilter(wxDeptList, returnDeptCode, deptName, address, hospitalAreaName);
dept = registerDao.deptFilter(dbDeptList, returnDeptCode, deptName, address, hospitalAreaName);
if (dept != null) {
// 亚专科
subDeptJson = nodeItem.getString("Code_YZKStr");

@ -180,7 +180,6 @@ public class SmsHelper {
flag = true;
}
} catch (Exception e) {
e.printStackTrace();
ErrorHelper.println(e);
}
return flag;

@ -32,7 +32,7 @@ public class Result extends BaseResult {
/**
* 判断数据操作是否成功
*/
public static Result change(Boolean flag) {
public static Result isOK(Boolean flag) {
return flag ? Result.success() : Result.error();
}

@ -20,29 +20,29 @@ import java.math.BigDecimal;
@Slf4j
public class CasebookService {
public Result placeOrder(MerchantEnum merchantEnum, String ip, String openid, String patientId, String treatNum, String totalFee,String applyId,String getWay, String useToName) {
public Result placeOrder(MerchantEnum merchantEnum, String ip, String openid, String patientId, String treatNum, String totalFee, String applyId, String getWay, String useToName) {
if (openid == null || patientId == null || totalFee == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
if (new BigDecimal(totalFee).compareTo(BigDecimal.ZERO)==0) {
if (new BigDecimal(totalFee).compareTo(BigDecimal.ZERO) == 0) {
return Result.error(ResultEnum.PAY_MONEY_IS_ZERO);
}
if(isPay(patientId,treatNum,applyId,getWay,useToName)){
log.info("{} [病历]订单已支付 applyId-{}, patientId={},treatNum-{},getWay-{},useToName-{}", merchantEnum.NAME, applyId,patientId,treatNum,getWay,useToName);
if (isPay(patientId, treatNum, applyId, getWay, useToName)) {
log.info("{} [病历]订单已支付 applyId-{}, patientId={},treatNum-{},getWay-{},useToName-{}", merchantEnum.NAME, applyId, patientId, treatNum, getWay, useToName);
return Result.error(ResultEnum.APPLY_REPEAT);
}
String outTradeNo = CodeHelper.getOutTradeNo(merchantEnum);
if (!isSaveCasebookInfo(patientId,treatNum,applyId,new BigDecimal(totalFee),outTradeNo,getWay,useToName)) {
log.info("{} [病历]下单信息存储失败 applyId-{}, patientId={},treatNum-{}", merchantEnum.NAME, applyId,patientId,treatNum);
if (!isSaveCasebookInfo(patientId, treatNum, applyId, new BigDecimal(totalFee), outTradeNo, getWay, useToName)) {
log.info("{} [病历]下单信息存储失败 applyId-{}, patientId={},treatNum-{}", merchantEnum.NAME, applyId, patientId, treatNum);
return Result.error(ResultEnum.SPECIFIED_QUESTIONED_USER_NOT_EXIST);
}
String body = "病历复印缴费 住院号="+treatNum;
String body = "病历复印缴费 住院号=" + treatNum;
JSONObject respJson = PayService.createOrder(merchantEnum, openid, patientId, totalFee, outTradeNo, PQREnum.CASEBOOK.CODE, ip, body);
if (respJson == null) {
@ -51,12 +51,12 @@ public class CasebookService {
return Result.success(respJson);
}
public boolean isExit(String patientId, String treatNum,String getWay, String useToName){
if (patientId == null||treatNum == null) {
log.info("[病历复印]唤起支付 存入 applyId失败,patientId-{},treatNum-{},",patientId,treatNum);
public boolean isExit(String patientId, String treatNum, String getWay, String useToName) {
if (patientId == null || treatNum == null) {
log.info("[病历复印]唤起支付 存入 applyId失败,patientId-{},treatNum-{},", patientId, treatNum);
return false;
}
return new CasebookDao().selectIsExit(patientId,treatNum,getWay,useToName);
return new CasebookDao().selectIsExit(patientId, treatNum, getWay, useToName);
}
/**
@ -64,33 +64,34 @@ public class CasebookService {
* @param treatNum 住院号
* @return 是否成功
*/
public boolean isSaveCasebookInfo(String patientId, String treatNum, String applyId,BigDecimal totalFee,String outTradeNo,String getWay, String useToName) {
if (patientId == null||treatNum == null) {
log.info("[病历复印]唤起支付 存入 applyId失败,patientId-{},treatNum-{},totalFee-{}",patientId,treatNum,totalFee);
public boolean isSaveCasebookInfo(String patientId, String treatNum, String applyId, BigDecimal totalFee, String outTradeNo, String getWay, String useToName) {
if (patientId == null || treatNum == null) {
log.info("[病历复印]唤起支付 存入 applyId失败,patientId-{},treatNum-{},totalFee-{}", patientId, treatNum, totalFee);
return false;
}
return new CasebookDao().updatePayStatePre(patientId,treatNum,applyId,totalFee,outTradeNo,getWay,useToName);
return new CasebookDao().updatePayStatePre(patientId, treatNum, applyId, totalFee, outTradeNo, getWay, useToName);
}
public boolean isPay(String patientId, String treatNum, String applyId,String getWay, String useToName){
if (patientId == null||treatNum == null) {
log.info("[病历复印]查重失败,patientId-{},treatNum-{},applyId-{}",patientId,treatNum,applyId);
public boolean isPay(String patientId, String treatNum, String applyId, String getWay, String useToName) {
if (patientId == null || treatNum == null) {
log.info("[病历复印]查重失败,patientId-{},treatNum-{},applyId-{}", patientId, treatNum, applyId);
return false;
}
return new CasebookDao().selectIsPay(patientId,treatNum,applyId,getWay,useToName);
return new CasebookDao().selectIsPay(patientId, treatNum, applyId, getWay, useToName);
}
/**
* 新增预约记录首次存入
*
* @param casebook 病历订单信息
* @return 是否成功
*/
public boolean addApply(PayCasebook casebook,String openId,String patientId){
public boolean addApply(PayCasebook casebook, String openId, String patientId) {
if (casebook == null) {
log.info("casebook is null");
return false;
}
return new CasebookDao().insert(casebook,openId,patientId);
return new CasebookDao().insert(casebook, openId, patientId);
}
public void payNotify(MerchantEnum merchantEnum, String openid, BigDecimal totalFee, String outTradeNo, String bankTransNo, String payInfo) {
@ -112,15 +113,15 @@ public class CasebookService {
log.info("[病历]修改支付状态失败 outTradeNo={}, bankTransNo={}, casebookId={}", outTradeNo, bankTransNo, casebookId);
}
log.info("[病历] 开始回调支付状态 borrowNo-{}",casebookId);
String jsonString = XBDHttpHelper.ExecMethodGet(XBDEnum.BLSM_Appointment_SetISPay.Name, params->{
params.put("borrowNo",casebookId);
log.info("[病历] 开始回调支付状态 borrowNo-{}", casebookId);
String jsonString = XBDHttpHelper.ExecMethodGet(XBDEnum.BLSM_Appointment_SetISPay.Name, params -> {
params.put("borrowNo", casebookId);
params.put("payDateTime", DateHelper.getCurDateTime());
});
log.info("[病历]回调返回 resp={}", jsonString);
String code = JsonHelper.parseObject(jsonString).getString("Code");
if (code==null) {
if (code == null) {
if (!casebookDao.updateNotifyOk(outTradeNo)) {
log.info("[病历]更新订单信息失败 outTradeNo={}, bankTransNo={}, casebookId={}", outTradeNo, bankTransNo, casebookId);
}

@ -139,8 +139,8 @@ public class HCodeService {
}
public static Patient appBindHealthCard(String healthCode){
if(healthCode==null){
public static Patient appBindHealthCard(String healthCode) {
if (healthCode == null) {
return null;
}
String appToken = getAppToken();
@ -150,7 +150,7 @@ public class HCodeService {
HealthCardServerImpl healthCard = new HealthCardServerImpl(H_APP_SECRET);
String requestId = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
CommonIn commonIn = new CommonIn(appToken, requestId, H_HOSPITAL_ID, 0);
JSONObject resultObj = healthCard.getHealthCardByHealthCode(commonIn,healthCode);
JSONObject resultObj = healthCard.getHealthCardByHealthCode(commonIn, healthCode);
JSONObject rspObj = resultObj.getJSONObject("rsp");
JSONObject cardJson = rspObj.getJSONObject("card");
Patient patient = new Patient();
@ -512,7 +512,7 @@ public class HCodeService {
JSONObject resultObj = healthCard.getDynamicQRCode(commonIn, healthCardId, "01", idCardNo, codeType);
JSONObject commonOut = resultObj.getJSONObject("commonOut");
if (!"0".equals(commonOut.getString("resultCode"))) {
log.info("获取健康卡二维码失败, resp-{}",resultObj);
log.info("获取健康卡二维码失败, resp-{}", resultObj);
return null;
}
return resultObj.getJSONObject("rsp");

@ -147,7 +147,7 @@ public class MedicalService {
if (result != null) {
return result;
}
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(payCode);
if (merchantEnum == null) { // 支付方式异常
return Result.error(ResultEnum.PAY_TYPE_ERROR);
}
@ -238,7 +238,7 @@ public class MedicalService {
return result;
}
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(payCode);
if (merchantEnum == null) { // 支付方式异常
return Result.error(ResultEnum.PAY_TYPE_ERROR);
}

@ -133,7 +133,7 @@ public class PayService {
}
// 支付类型判断
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByOutTradeNo(outTradeNo);
MerchantEnum merchantEnum = MerchantEnum.findEnumByOutTradeNo(outTradeNo);
if (merchantEnum == null) {
throw new ServiceException(ResultEnum.PAY_TYPE_ERROR);
}
@ -299,9 +299,9 @@ public class PayService {
return order;
}
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByOutTradeNo(outTradeNo);
MerchantEnum merchantEnum = MerchantEnum.findEnumByOutTradeNo(outTradeNo);
if (merchantEnum == null) {
merchantEnum = MerchantEnum.getMerchantEnumByPayWay(payWay);
merchantEnum = MerchantEnum.findEnumByPayWay(payWay);
if (merchantEnum == null) {
order.setErrorMsg("支付方式不存在");
return order;

@ -34,9 +34,8 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
* 挂号业务层
@ -402,7 +401,7 @@ public class RegService {
}
String outTradeNo = reg.getOutTradeNo();
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByOutTradeNo(outTradeNo);
MerchantEnum merchantEnum = MerchantEnum.findEnumByOutTradeNo(outTradeNo);
JsonResult JsonResult = new HisRegisterDao().cancelReserve(patientId, tradeNo, merchantEnum);
if (!JsonResult.success()) {
@ -477,7 +476,7 @@ public class RegService {
String tradeNo = reg.getTradeNo();
String outTradeNo = reg.getOutTradeNo();
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByOutTradeNo(outTradeNo);
MerchantEnum merchantEnum = MerchantEnum.findEnumByOutTradeNo(outTradeNo);
JsonResult JsonResult = new HisRegisterDao().refundRegister(tradeNo, merchantEnum);
if (!JsonResult.success()) {
@ -739,7 +738,7 @@ public class RegService {
return noPayTime;
}
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(payCode);
if (merchantEnum == null) {
return Result.error(ResultEnum.PAY_TYPE_ERROR); // 支付方式异常
}
@ -808,4 +807,76 @@ public class RegService {
public boolean updateMicroOrderState(String outTradeNo, String bankTransNo, String openid) {
return new RegisterDao().updateMicroOrderState(outTradeNo, bankTransNo, openid);
}
public List<Register> getHisRegReserveRecords(String patientId, String regDate) {
return new HisRegisterDao().getRegReserveHistory(patientId, regDate);
}
public List<Register> getHisRegRecords(String patientId, String begDate, String endDate) throws ServiceException {
if (begDate == null || endDate == null) {
throw new ServiceException("查询日期异常");
}
List<Register> hisRegList = new HisRegisterDao().getRegTodayHistory(patientId, begDate.equals(endDate) ? begDate : null); // 起止日期相同时,传递挂号日期
List<Register> dataList = new ArrayList<>();
String regDate;
for (Register reg : hisRegList) {
regDate = reg.getRegDate();
if (regDate != null) {
regDate = DateHelper.dateFormatShort(regDate);
if (regDate != null && DateHelper.inDateRange(begDate, endDate, regDate, DateHelper.DateEnum.yyyy_MM_dd)) {
dataList.add(reg);
}
}
}
return dataList;
}
public Register findHisRegRecord(String patientId, String regDate, String hisTransNo) throws ServiceException {
if (ObjectUtils.isEmpty(hisTransNo) || ObjectUtils.isEmpty(regDate)) {
throw new ServiceException(ResultEnum.PARAM_IS_BLANK);
}
String curDate = DateHelper.getCurDate();
List<Register> hisRegRecords;
if (curDate.equals(regDate)) { // 今日挂号及以前
hisRegRecords = getHisRegRecords(patientId, regDate, regDate);
} else { // 预约挂号
hisRegRecords = getHisRegReserveRecords(patientId, regDate);
}
if (hisRegRecords.isEmpty()) {
throw new ServiceException("错误:HIS中未查询到挂号记录 日期:" + regDate);
}
List<Register> filterList = hisRegRecords.stream().filter(o -> hisTransNo.equals(o.getHisTransNo())).collect(Collectors.toList());
if (filterList.size() == 1) {
return filterList.get(0);
}
throw new ServiceException(filterList.isEmpty()
? "错误:HIS中未找到对应的挂号信息"
: "错误:HIS中同一科室查询到多条挂号记录");
}
public boolean updateRegMedToolMark(String id, String addMedToolMark, String openId) throws ServiceException {
RegisterDao regDao = new RegisterDao();
Register findInfo = regDao.selectRegisterById(id);
if (findInfo == null) {
throw new ServiceException("未找到挂号信息");
}
String dbMedToolMark = findInfo.getMedToolMark();
String updateMedToolMark = addMedToolMark;
if (!ObjectUtils.isEmpty(dbMedToolMark)) {
if (dbMedToolMark.contains(addMedToolMark)) { // 已存在
throw new ServiceException("状态已存在");
} else {
updateMedToolMark = dbMedToolMark + "," + addMedToolMark;
}
}
return regDao.updateRegMedToolMark(id, addMedToolMark, updateMedToolMark) > 0;
}
}

@ -105,7 +105,7 @@ public class PayCache {
}
// HIS处方缴费
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByOutTradeNo(outTradeNo);
MerchantEnum merchantEnum = MerchantEnum.findEnumByOutTradeNo(outTradeNo);
if (MerchantEnum.ALI.equals(merchantEnum)) {
log.info("[处方]定时器,支付宝订单不处理");
RECIPE_ORDER_CACHE.remove(tradeNo);

@ -42,7 +42,7 @@ public class QServlet extends HttpServlet {
String userAgent = request.getHeader("user-agent");
if (!ObjectUtils.isEmpty(userAgent)) {
merchantEnum = MerchantEnum.getMerchantEnumByQr(userAgent);
merchantEnum = MerchantEnum.findEnumByQr(userAgent);
if (merchantEnum == null) {
log.info(ResultEnum.PAY_TYPE_NOT_SUPPORT.message);
HttpHelper.outRespAlert(response, ResultEnum.PAY_TYPE_NOT_SUPPORT.message);

@ -93,8 +93,6 @@ public class WxCacheHelper {
return null;
}
public static final String JSAPI_TICKET_CACHE_NAME = "jsapi_ticket";

Loading…
Cancel
Save