病历复印下单存在逻辑问题调整

debug
王绍全 2 days ago
parent c82b3d7beb
commit f2551d0b8a
  1. 2
      src/main/java/com/ynxbd/common/action/RecordAction.java
  2. 40
      src/main/java/com/ynxbd/common/action/XBDAction.java
  3. 2
      src/main/java/com/ynxbd/common/action/pay/ThirdPartyPayAction.java
  4. 42
      src/main/java/com/ynxbd/common/bean/pay/PayCasebook.java
  5. 4
      src/main/java/com/ynxbd/common/bean/xbd/MRHistory.java
  6. 8
      src/main/java/com/ynxbd/common/config/db/DataBase.java
  7. 101
      src/main/java/com/ynxbd/common/dao/CasebookDao.java
  8. 56
      src/main/java/com/ynxbd/common/dao/ChronicDao.java
  9. 4
      src/main/java/com/ynxbd/common/dao/RegisterDao.java
  10. 3
      src/main/java/com/ynxbd/common/dao/his/HisPatientDao.java
  11. 30
      src/main/java/com/ynxbd/common/helper/xbd/XBDEnum.java
  12. 31
      src/main/java/com/ynxbd/common/helper/xbd/XBDHttpHelper.java
  13. 134
      src/main/java/com/ynxbd/common/service/CasebookService.java
  14. 24
      src/main/java/com/ynxbd/common/service/PatientService.java
  15. 2
      src/main/java/com/ynxbd/common/service/PayService.java
  16. 8
      src/main/java/com/ynxbd/common/service/RegService.java

@ -36,7 +36,7 @@ public class RecordAction extends BaseAction {
*/
@Action("upload")
public Result upload(String applyName, String idcard, String patientId, String openId, String idcardFront, String idcardBack, String treatId, String inHospProve, String use, String phone) {
log.info("[病历复印申请] applyName-{}, idCard-{},patientId-{},openId-{}, treatId-{}, use-{}, phone-{}", applyName, idcard, patientId, openId, treatId, use, phone);
log.info("[病历申请复印] applyName-{}, idCard-{},patientId-{},openId-{}, treatId-{}, use-{}, phone-{}", applyName, idcard, patientId, openId, treatId, use, phone);
if (applyName == null || idcard == null || openId == null || patientId == null || use == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}

@ -85,7 +85,7 @@ public class XBDAction extends BaseAction {
@Action("getMedicalRecordList")
public Result getMedicalRecordList(@AesDecode String patientId, Integer flagSh) {
try {
log.info("[病]获取该病人已归档可以翻拍的病历 patientId={}", patientId);
log.info("[病]获取该病人已归档可以翻拍的病历 patientId={}", patientId);
if (patientId == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
@ -113,7 +113,7 @@ public class XBDAction extends BaseAction {
// @Action("getMedicalRecordList2")
// public Result getMedicalRecordList2(String patientId, Integer flagSh) {
// String realPatientId = getDecodeString(patientId);
// log.info("[病]获取该病人已归档可以翻拍的病历 patientId={}", realPatientId);
// log.info("[病]获取该病人已归档可以翻拍的病历 patientId={}", realPatientId);
// if (ObjectUtils.isEmpty(realPatientId)) {
// return Result.error(ResultEnum.PARAM_IS_DEFECT);
// }
@ -169,7 +169,7 @@ public class XBDAction extends BaseAction {
@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 ptImg3, String ptImg4, String ptImg5, String ptImg6, 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);
log.info("[病历复印]预约信息 patientId={}, treatNum={}, applyName={}, useToNo={}, useToName={}, getWay={}, address={}, phone={}", patientId, zyNum, applyName, useToNo, useToName, getWay, address, phone);
if (ObjectUtils.isEmpty(openId) || ObjectUtils.isEmpty(patientId)) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
@ -181,12 +181,15 @@ 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);
CasebookService casebookService = new CasebookService();
if (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);
long id = casebookService.addApply(payCasebook, openId, patientId); // 返回自增id
if (id <= 0) {
log.info("[病历复印]预约信息存储失败 patientId={}, openId={}, patientId={}", patientId, openId, patientId);
return Result.error(ResultEnum.SPECIFIED_QUESTIONED_USER_NOT_EXIST);
}
@ -214,9 +217,24 @@ public class XBDAction extends BaseAction {
params.put("applyPtImg2", applyPtImg2);
params.put("ApplicationImg", applicationImg);
});
return Result.success(JsonHelper.parseObject(jsonString));
if (ObjectUtils.isEmpty(jsonString)) {
return Result.error(ResultEnum.ERROR);
}
JSONObject jsonObject = JsonHelper.parseObject(jsonString);
String applyId = jsonObject.getString("applyId");
if (ObjectUtils.isEmpty(applyId)) {
return Result.error(ResultEnum.ERROR);
}
if (!casebookService.updateApplyIdById(id, applyId)) {
log.error("[病历复印]记录applyId失败 id={}, applyId={}", applyId, applyId);
return Result.error(ResultEnum.ERROR);
}
return Result.success(jsonObject);
} catch (Exception e) {
log.error("[病历复印申请]预约失败,error-{}", e.toString());
log.error("[病历复印]预约失败 error:{}", e.toString());
return Result.error(ResultEnum.ERROR);
}
}
@ -242,7 +260,7 @@ public class XBDAction extends BaseAction {
}
/**
* 复印唤起支付
* 复印唤起支付
*
* @param payCode wx微信
* @param openid 患者openId
@ -254,7 +272,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);
log.info("[病历复印]下单 payCode={}, openid={}, patientId={}, treatNum={}, totalFee={}", payCode, openid, patientId, treatNum, totalFee);
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(payCode);
if (merchantEnum == null) { // 支付方式异常
return Result.error(ResultEnum.PAY_TYPE_ERROR);

@ -81,7 +81,7 @@ public class ThirdPartyPayAction extends BaseAction {
reg.setOutTradeNo(outTradeNo);
log.info("{} [第三方-扫码挂号]生成 outTradeNo={}", merchantEnum.NAME, outTradeNo);
if (!new RegService().isSaveRegPrepay(reg)) {
if (!new RegService().updateRegPrepay(reg)) {
log.info("{} [第三方-扫码挂号]预存支付信息失败 patientId={}, sourceId={}", merchantEnum.NAME, patientId, sourceId);
return Result.error(ResultEnum.SPECIFIED_QUESTIONED_USER_NOT_EXIST);
}

@ -5,53 +5,37 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.time.LocalDateTime;
import java.util.Date;
@Setter
@Getter
@ToString(callSuper = true)
@NoArgsConstructor
public class PayCasebook extends Order{
/**
* 住院号
*/
public class PayCasebook extends Order {
// 住院号
private String treatNum;
/**
* 申请人姓名
*/
private String PatientName;
// 申请人姓名
private String patientName;
/**
* 模板ID
*/
// 模板ID
private String useToNo;
/**
* 模板名称
*/
// 模板名称
private String useToName;
/**
* 病历申请id
*/
private String applyId;
/**
* 获取方式; 0自提 1邮寄
*/
// 获取方式; 0自提 1邮寄
private int getWay;
/**
* 地址
*/
// 地址
private String address;
/**
* 联系电话 (邮寄时的联系电话)
*/
// 联系电话 (邮寄时的联系电话)
private String phone;
// 病历预约申请id(唯一)
private String applyId;
// 申请时间
private Date applyTime;
}

@ -26,7 +26,7 @@ public class MRHistory {
private String patientID;
/**
* 借阅号 (-1为屏蔽此字段 查询所有此病人的记录)
* 借阅号 (-1为屏蔽此字段 查询所有此病人的记录)
*/
private int baBorrowNo;
@ -36,7 +36,7 @@ public class MRHistory {
private String zyNum;
/**
*
*
*/
private String bano;

@ -364,11 +364,11 @@ public class DataBase {
* @param ips ips
* @return 自增ID
*/
public static int insertGetId(String sql, IPS ips) {
public static long insertGetId(String sql, IPS ips) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
int id = 0;
long id = -1;
try {
conn = getConnection();
ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
@ -377,7 +377,7 @@ public class DataBase {
rs = ps.getGeneratedKeys();
if (rs.next()) {
id = rs.getInt(1);
id = rs.getLong(1);
}
ps.clearBatch();
} catch (SQLException e) {
@ -387,7 +387,7 @@ public class DataBase {
} catch (SQLException err) {
ErrorHelper.println(err);
}
return 0;
return -1;
} finally {
close(rs, ps, conn);
}

@ -14,18 +14,27 @@ public class CasebookDao {
* @param casebook 信息
* @return 是否成功
*/
public boolean insert(PayCasebook casebook,String openId,String patientId) {
String sql = "insert into pay_casebook(UpdateTime,TreatNum, PatientName, UseToNo, UseToName, GetWay, Address, Phone,OpenID,PatientID) values (now(),?,?,?,?,?,?,?,?,?)";
return DataBase.insert(sql, ps -> {
ps.setString(1,casebook.getTreatNum());
ps.setString(2,casebook.getPatientName());
ps.setString(3,casebook.getUseToNo());
ps.setString(4,casebook.getUseToName());
ps.setInt(5,casebook.getGetWay());
ps.setString(6,casebook.getAddress());
public long insert(PayCasebook casebook, String openId, String patientId) {
String sql = "insert into pay_casebook(ApplyTime, UpdateTime, TreatNum, PatientName, UseToNo, UseToName, GetWay, Address, Phone, OpenID, PatientID) values (now(),now(),?,?,?,?,?,?,?,?,?)";
return DataBase.insertGetId(sql, ps -> {
ps.setString(1, casebook.getTreatNum());
ps.setString(2, casebook.getPatientName());
ps.setString(3, casebook.getUseToNo());
ps.setString(4, casebook.getUseToName());
ps.setInt(5, casebook.getGetWay());
ps.setString(6, casebook.getAddress());
ps.setString(7, casebook.getPhone());
ps.setString(8,openId);
ps.setString(9,patientId);
ps.setString(8, openId);
ps.setString(9, patientId);
});
}
// 补充申请id
public boolean updateApplyIdById(long id, String applyId) {
String sql = "update pay_casebook set applyId=? where id=?";
return DataBase.update(sql, ps -> {
ps.setString(1, applyId);
ps.setLong(2, id);
}) > 0;
}
@ -41,7 +50,7 @@ public class CasebookDao {
List<PayCasebook> list = DataBase.select(sql, PayCasebook.class, ps -> {
ps.setString(1, outTradeNo);
});
if (list.size() > 0) {
if (!list.isEmpty()) {
return list.get(0);
}
return null;
@ -54,59 +63,54 @@ public class CasebookDao {
* @param bankTransNo 交易流水号
*/
public boolean updatePayStateOk(String outTradeNo, String bankTransNo) {
String sql = "update pay_casebook set payStatus=0, bankTransNo=? where outTradeNo=? and bankTransNo is null";
String sql = "update pay_casebook set updateTime=now(), payStatus=0, bankTransNo=? where outTradeNo=? and bankTransNo is null";
return DataBase.update(sql, ps -> {
ps.setString(1, bankTransNo);
ps.setString(2, outTradeNo);
}) > 0;
}
public boolean updatePayStatePre(String patientId, String treatNum, String applyId, BigDecimal totalFee,String outTradeNo,String getWay, String useToName) {
String sql = "update pay_casebook set payStatus=-1, applyId = ?, payMoney = ?, TotalFee = ?, outTradeNo =? where patientId=? and treatNum = ? and getWay = ? and useToName = ?";
public boolean updatePrepayInfo(String applyId, String treatNum, BigDecimal totalFee, String outTradeNo) {
String sql = "update pay_casebook set updateTime=now(), payStatus=-1, payMoney=?, totalFee=?, outTradeNo=? where applyId=? and treatNum=? and payStatus != 0";
return DataBase.update(sql, ps -> {
ps.setString(1, applyId);
ps.setBigDecimal(2,totalFee);
ps.setBigDecimal(3,totalFee);
ps.setString(4,outTradeNo);
ps.setString(5,patientId);
ps.setString(6,treatNum);
ps.setString(7,getWay);
ps.setString(8,useToName);
ps.setBigDecimal(1, totalFee);
ps.setBigDecimal(2, totalFee);
ps.setString(3, outTradeNo);
ps.setString(4, applyId);
ps.setString(5, treatNum);
}) > 0;
}
public boolean selectIsExit(String patientId, String treatNum, String getWay, String useToName){
String sql = "select * from pay_casebook where patientId=? and treatNum = ? and getWay = ? and getWay !=1 and useToName = ? and (payStatus is null or payStatus = -1)";
return DataBase.select(sql, PayCasebook.class, ps -> {
ps.setString(1,patientId);
ps.setString(2,treatNum);
ps.setString(3,getWay);
ps.setString(4,useToName);
}).size()>0;
// 查询是已有相同的申请记录
public boolean selectIsExit(String patientId, String treatNum, String getWay, String useToName) {
String sql = "select * from pay_casebook where patientId=? and treatNum=? and getWay=? and getWay !=1 and useToName=? and (payStatus is null or payStatus= -1)";
return !DataBase.select(sql, PayCasebook.class, ps -> {
ps.setString(1, patientId);
ps.setString(2, treatNum);
ps.setString(3, getWay);
ps.setString(4, useToName);
}).isEmpty();
}
public boolean selectIsPay(String patientId, String treatNum, String applyId,String getWay, String useToName){
String sql = "select * from pay_casebook where patientId=? and treatNum = ? and applyId = ? and getWay = ? and useToName = ? and payStatus = 0";
return DataBase.select(sql, PayCasebook.class, ps -> {
ps.setString(1,patientId);
ps.setString(2,treatNum);
ps.setString(3,applyId);
ps.setString(4,getWay);
ps.setString(5,useToName);
}).size()>0;
public PayCasebook selectOrder(String applyId, String treatNum) {
String sql = "select * from pay_casebook where applyId=? and treatNum=?";
return DataBase.selectOne(sql, PayCasebook.class, ps -> {
ps.setString(1, applyId);
ps.setString(2, treatNum);
});
}
public boolean updateNotifyOk(String outTradeNo) {
String sql = "update pay_casebook set payStatus=0, HisStatus=0 where outTradeNo=?";
String sql = "update pay_casebook set payStatus=0, hisStatus=0 where outTradeNo=?";
return DataBase.update(sql, ps -> {
ps.setString(1, outTradeNo);
}) > 0;
}
public boolean updateNotifyErr(String outTradeNo, String message) {
String sql = "update pay_casebook set payStates=0, HisStatus=-1, HisResult=? where outTradeNo=?";
String sql = "update pay_casebook set payStates=0, hisStatus=-1, hisResult=? where outTradeNo=?";
return DataBase.update(sql, ps -> {
ps.setString(1, message);
@ -115,4 +119,15 @@ public class CasebookDao {
}
// public boolean selectIsPay(String patientId, String treatNum, String applyId, String getWay, String useToName) {
// String sql = "select * from pay_casebook where patientId=? and treatNum = ? and applyId = ? and getWay = ? and useToName = ? and payStatus = 0";
// return !DataBase.select(sql, PayCasebook.class, ps -> {
// ps.setString(1, patientId);
// ps.setString(2, treatNum);
// ps.setString(3, applyId);
// ps.setString(4, getWay);
// ps.setString(5, useToName);
// }).isEmpty();
// }
}

@ -18,54 +18,56 @@ import java.util.List;
public class ChronicDao {
/**
* 预约慢病
*
* @param chronic 慢病信息
* @return 是否新增成功
*/
public Boolean insert(Chronic chronic){
public Boolean insert(Chronic chronic) {
String sql = "insert into chronic(ApplyName, ApplyTime, ReserveTime, PatientId, OpenId, Idcard, TreatId, PatientType, DiagProve, IdcardFont, IdcardBack, InHospProve, ChronicName, ChronicCode, Phone, Address) values (?,now(),?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
return DataBase.insert(sql,ps -> {
ps.setString(1,chronic.getApplyName());
ps.setString(2,chronic.getReserveTime());
ps.setString(3,chronic.getPatientId());
ps.setString(4,chronic.getOpenId());
ps.setString(5,chronic.getIdcard());
ps.setString(6,chronic.getTreatId());
ps.setInt(7,chronic.getPatientType());
ps.setString(8,chronic.getDiagProve());
ps.setString(9,chronic.getIdcardFont());
ps.setString(10,chronic.getIdcardBack());
ps.setString(11,chronic.getInHospProve());
ps.setString(12,chronic.getChronicName());
ps.setString(13,chronic.getChronicCode());
ps.setString(14,chronic.getPhone());
ps.setString(15,chronic.getAddress());
})>0;
return DataBase.insert(sql, ps -> {
ps.setString(1, chronic.getApplyName());
ps.setString(2, chronic.getReserveTime());
ps.setString(3, chronic.getPatientId());
ps.setString(4, chronic.getOpenId());
ps.setString(5, chronic.getIdcard());
ps.setString(6, chronic.getTreatId());
ps.setInt(7, chronic.getPatientType());
ps.setString(8, chronic.getDiagProve());
ps.setString(9, chronic.getIdcardFont());
ps.setString(10, chronic.getIdcardBack());
ps.setString(11, chronic.getInHospProve());
ps.setString(12, chronic.getChronicName());
ps.setString(13, chronic.getChronicCode());
ps.setString(14, chronic.getPhone());
ps.setString(15, chronic.getAddress());
}) > 0;
}
/**
* 获取该患者申请的慢病预约
*
* @param patientId 患者id
* @return 预约列表
*/
public List<Chronic> selectByPatientId(String patientId){
String sql ="select * from chronic where PatientId = ? ";
public List<Chronic> selectByPatientId(String patientId) {
String sql = "select * from chronic where PatientId = ? ";
return DataBase.select(sql, Chronic.class, ps -> {
ps.setString(1,patientId);
ps.setString(1, patientId);
});
}
public List<DictChronic> selectDict(Integer chronicType){
String sql ="select * from dict_chronic where ChronicType = ? ";
public List<DictChronic> selectDict(Integer chronicType) {
String sql = "select * from dict_chronic where ChronicType = ? ";
return DataBase.select(sql, DictChronic.class, ps -> {
ps.setInt(1,chronicType);
ps.setInt(1, chronicType);
});
}
public Boolean selectIfApply(Integer patientType, String treatId){
public Boolean selectIfApply(Integer patientType, String treatId) {
String sql = "select * from chronic where PatientType = ? and TreatId = ? and RejectTime is null and DeleteTime is null and CheckTime is null";
return !DataBase.select(sql, Chronic.class, ps -> {
ps.setInt(1,patientType);
ps.setString(2,treatId);
ps.setInt(1, patientType);
ps.setString(2, treatId);
}).isEmpty();
}
}

@ -411,7 +411,7 @@ public class RegisterDao {
List<Register> list = DataBase.select(sql, Register.class, ps -> {
ps.setString(1, outTradeNo);
});
if (list.size() > 0) {
if (!list.isEmpty()) {
return list.get(0);
}
return null;
@ -422,7 +422,7 @@ public class RegisterDao {
List<Register> list = DataBase.select(sql, Register.class, ps -> {
ps.setString(1, tradeNo);
});
if (list.size() > 0) {
if (!list.isEmpty()) {
return list.get(0);
}
return null;

@ -8,6 +8,7 @@ import com.ynxbd.common.helper.his.HisHelper;
import com.ynxbd.common.result.JsonResult;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.result.ServiceException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@ -20,6 +21,7 @@ import java.util.UUID;
* @Date 2020/9/27 15:13
* @Copyright @ 2020 云南新八达科技有限公司 All rights reserved.
*/
@Slf4j
public class HisPatientDao {
/**
@ -58,6 +60,7 @@ public class HisPatientDao {
params.put("Nation", nation);
params.put("Tel", tel);
log.warn("put code={}, isCounty={}", county, isCounty);
if (isCounty && !ObjectUtils.isEmpty(county)) {
params.put("Address_Code", county);
}

@ -8,35 +8,35 @@ package com.ynxbd.common.helper.xbd;
*/
public enum XBDEnum {
/**
* [翻拍] 获取可以翻拍的列表
* [翻拍] 获取可以翻拍的列表
*/
BLSM_Appointment_GetBA("BLSM_Appointment_GetBA","获取此病人已被翻拍的病(可以翻拍的病历)"),
BLSM_Appointment_GetBA("BLSM_Appointment_GetBA", "获取此病人已被翻拍的病(可以翻拍的病历)"),
/**
* [案翻拍] 获取病人翻拍病案所用用途
* [历翻拍] 获取病人翻拍病历所用用途
*/
BLSM_Appointment_GetTemplate("BLSM_Appointment_GetTemplate","获取模板列表(获取用途列表)"),
BLSM_Appointment_GetTemplate("BLSM_Appointment_GetTemplate", "获取模板列表(获取用途列表)"),
/**
* [翻拍] 新增预约记录
* [翻拍] 新增预约记录
*/
BLSM_Appointment_SetAppointment("BLSM_Appointment_SetAppointment","新增预约记录"),
BLSM_Appointment_SetAppointment("BLSM_Appointment_SetAppointment", "新增预约记录"),
/**
* [翻拍] 获取历史预约记录
* [翻拍] 获取历史预约记录
*/
BLSM_Appointment_GetHistoryAppointment("BLSM_Appointment_GetHistoryAppointment","获取此病人预约的历史数据"),
BLSM_Appointment_GetHistoryAppointment("BLSM_Appointment_GetHistoryAppointment", "获取此病人预约的历史数据"),
/**
* [翻拍] 付费成功回调
* [翻拍] 付费成功回调
*/
BLSM_Appointment_SetISPay("BLSM_Appointment_SetISPay","付费成功回调"),
BLSM_Appointment_SetISPay("BLSM_Appointment_SetISPay", "付费成功回调"),
/**
* [翻拍] 修改收获地址
* [翻拍] 修改收获地址
*/
BLSM_Appointment_ChangeAddress("BLSM_Appointment_ChangeAddress","修改收货信息"),
BLSM_Appointment_ChangeAddress("BLSM_Appointment_ChangeAddress", "修改收货信息"),
/**
* [翻拍] 停止预约
* [翻拍] 停止预约
*/
BLSM_Appointment_StopAppointment("BLSM_Appointment_StopAppointment","停止预约"),
BLSM_Appointment_StopAppointment("BLSM_Appointment_StopAppointment", "停止预约"),
Test_ImportImage("Test_ImportImage","图片测试");
Test_ImportImage("Test_ImportImage", "图片测试");
public final String NAME;
public final String DESCRIPTION;

@ -27,6 +27,7 @@ import java.util.zip.GZIPOutputStream;
@Slf4j
public class XBDHttpHelper {
private static final boolean IS_LOG = false;
public static String ExecMethodPost(String methodName, JsonResult.MapParams params) throws Exception {
Map<String, Object> requestParams = new HashMap<>();
@ -44,7 +45,7 @@ public class XBDHttpHelper {
originalPrint.append(key).append(":\"").append(valueStr).append("\", ");
});
originalPrint.append("}");
log.info("[病案翻拍]未加密前请求-{}", originalPrint);
log.info("[病]未加密前请求-{}", originalPrint);
List<String> paramsNameList = new ArrayList<>(requestParams.keySet());
JSONObject reqJsonObj = new JSONObject();
@ -69,7 +70,7 @@ public class XBDHttpHelper {
encodePrint.append(key).append(":\"").append(valueStr).append("\", ");
});
encodePrint.append("}");
log.info("[病案翻拍]加密后请求-{}", encodePrint);
log.info("[病]加密后请求-{}", encodePrint);
return UsePost(methodName, formBody);
}
@ -82,12 +83,16 @@ public class XBDHttpHelper {
String code = respJson.getString("Code");
String msg = respJson.getString("Msg");
if ("200".equals(code)) {
return respJson.getString("Data");
String data = respJson.getString("Data");
if (IS_LOG) {
log.info("[病历POST]返回 [方法名:{}] data={}", methodName, data);
}
return data;
}
log.error("[线上病案POST]返回错误:方法名-{},错误-{}", methodName, msg);
log.error("[病历POST]返回错误:方法名-{},错误-{}", methodName, msg);
throw new Exception("方法:" + methodName + "错误:" + msg);
} catch (Exception e) {
log.error("[线上病案POST]请求异常:{}", e.toString());
log.error("[病历POST]请求异常:{}", e.toString());
return e.getMessage();
}
}
@ -96,23 +101,23 @@ public class XBDHttpHelper {
// 返回响应体过滤
private static JSONObject respFilter(Response response, String methodName) throws Exception {
if (!response.isSuccessful()) {
log.error("[线上病案RESP]返回错误:方法名-{},错误-{}", methodName, response.message());
log.error("[病历RESP]返回错误:方法名-{},错误-{}", methodName, response.message());
throw new ServiceException("方法:" + methodName + "错误: " + response.message());
}
ResponseBody body = response.body();
if (body == null) {
log.error("[线上病案RESP]返回错误:方法名-{},错误-{}", methodName, "body is null");
log.error("[病历RESP]返回错误:方法名-{},错误-{}", methodName, "body is null");
throw new ServiceException("方法:" + methodName + "错误: resp body is null");
}
String respBodyStr = body.string();
if (ObjectUtils.isEmpty(respBodyStr)) {
log.error("[线上病案RESP]返回错误:方法名-{},错误-{}", methodName, "respBodyStr is null");
log.error("[病历RESP]返回错误:方法名-{},错误-{}", methodName, "respBodyStr is null");
throw new ServiceException("方法:" + methodName + "错误: respBodyStr is null");
}
JSONObject respJson = JSONObject.parseObject(respBodyStr);
if (respJson == null) {
log.error("[线上病案RESP]返回错误:方法名-{},错误-{}", methodName, "respJson is null");
log.error("[病历RESP]返回错误:方法名-{},错误-{}", methodName, "respJson is null");
throw new ServiceException("方法:" + methodName + "错误: respJson is null");
}
return respJson;
@ -168,7 +173,7 @@ public class XBDHttpHelper {
HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(XBDHelper.MED_RECORD_COPY_URL + "/api/SqlContext/ExecMethodByNameEncryption")).newBuilder();
// 加密序列化
String paramJson = JSONObject.toJSONString(paramDic == null ? "" : paramDic);
log.info("[线上病案GET]未加密前get请求入参:[methodName:{}] {}", methodName, paramJson);
log.info("[病历GET]未加密前get请求入参:[methodName:{}] {}", methodName, paramJson);
String paramsStrEnv = URLEncoder.encode(EncHelper.AES_Encrypt(paramJson), StandardCharsets.UTF_8.toString());
String methodNameEnv = URLEncoder.encode(EncHelper.AES_Encrypt(methodName), StandardCharsets.UTF_8.toString());
@ -186,14 +191,14 @@ public class XBDHttpHelper {
if ("200".equals(code)) {
return respJson.getString("Data");
}
log.error("[线上病案GET]返回错误:方法名-{},错误-{}", methodName, msg);
log.error("[病历GET]返回错误:方法名-{},错误-{}", methodName, msg);
throw new Exception("方法:" + methodName + "错误:" + msg);
} catch (Exception e) {
log.error("[线上病案GET]请求异常:{}", e.toString());
log.error("[病历GET]请求异常:{}", e.toString());
return null;
}
} catch (Exception e) {
log.error("[线上病案GET]出现异常:{}", e.toString());
log.error("[病历GET]出现异常:{}", e.toString());
return null;
}
}

@ -29,21 +29,25 @@ public class CasebookService {
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);
return Result.error(ResultEnum.APPLY_REPEAT);
}
PayCasebook order = selectOrderByApplyId(applyId, treatNum);
String outTradeNo = CodeHelper.getOutTradeNo(merchantEnum);
log.info("{} [病历]查询订单 order=[{}]", merchantEnum.NAME, JsonHelper.toJsonString(order));
if (order != null) {
if (order.hasPayStatusPaid()) {
log.info("{} [病历]订单已支付 applyId={}, outTradeNo={}", merchantEnum.NAME, applyId, order.getOutTradeNo());
return Result.error(ResultEnum.PAY_REPEAT);
}
if (ObjectUtils.isEmpty(order.getOutTradeNo())) {
outTradeNo = order.getOutTradeNo();
}
}
if (!isSaveCasebookInfo(patientId, treatNum, applyId, new BigDecimal(totalFee), outTradeNo, getWay, useToName)) {
if (!updatePrepayInfo(applyId, treatNum, new BigDecimal(totalFee), outTradeNo)) {
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) {
return Result.error(ResultEnum.PAY_ERROR); // 支付异常
@ -51,91 +55,135 @@ public class CasebookService {
return Result.success(respJson);
}
/**
* [病历复印]判断是否存在预约记录
*
* @param patientId 患者id
* @param treatNum 住院号
* @param getWay 方式
* @param useToName 模版名称
* @return bool
*/
public boolean isExit(String patientId, String treatNum, String getWay, String useToName) {
if (patientId == null || treatNum == null) {
log.info("[病历复印]唤起支付 存入 applyId失败,patientId-{},treatNum-{},", patientId, treatNum);
log.info("[病历]唤起支付 存入 applyId失败,patientId-{},treatNum-{},", patientId, treatNum);
return false;
}
return new CasebookDao().selectIsExit(patientId, treatNum, getWay, useToName);
}
/**
* @param patientId 患者id
* 更新预支付订单信息
*
* @param applyId 申请id
* @param treatNum 住院号
* @return 是否成功
* @param totalFee 金额
* @param outTradeNo 订单号
* @return bool
*/
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 updatePrepayInfo(String applyId, String treatNum, BigDecimal totalFee, String outTradeNo) {
log.info("[病历复印]更新下单信息 applyId={}, treatNum={}, totalFee={}, outTradeNo={}", applyId, treatNum, totalFee, totalFee);
if (ObjectUtils.isEmpty(applyId) || totalFee.compareTo(BigDecimal.ZERO) == 0 || ObjectUtils.isEmpty(outTradeNo)) {
log.error("[病历复印]更新下单信息失败 applyId={}, totalFee={}, outTradeNo={}", applyId, totalFee, totalFee);
return false;
}
return new CasebookDao().updatePayStatePre(patientId, treatNum, applyId, totalFee, outTradeNo, getWay, useToName);
return new CasebookDao().updatePrepayInfo(applyId, treatNum, totalFee, outTradeNo);
}
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;
/**
* 根据预约申请id查询订单信息
*
* @param applyId 申请id
* @param treatNum 住院号
* @return bean
*/
public PayCasebook selectOrderByApplyId(String applyId, String treatNum) {
if (ObjectUtils.isEmpty(applyId) || ObjectUtils.isEmpty(treatNum)) {
return null;
}
return new CasebookDao().selectIsPay(patientId, treatNum, applyId, getWay, useToName);
return new CasebookDao().selectOrder(applyId, treatNum);
}
/**
* 新增预约记录首次存入
* [病历复印]新增预约记录
*
* @param casebook 病历订单信息
* @return 是否成功
* @param casebook 订单信息
* @return bool
*/
public boolean addApply(PayCasebook casebook, String openId, String patientId) {
public long addApply(PayCasebook casebook, String openId, String patientId) {
if (casebook == null) {
log.info("casebook is null");
return false;
return -1;
}
return new CasebookDao().insert(casebook, openId, patientId);
}
public void payNotify(MerchantEnum merchantEnum, String openid, BigDecimal totalFee, String outTradeNo, String bankTransNo, String payInfo) {
/**
* 预约成功后记录申请id
*
* @param id id
* @param applyId 申请id
* @return bool
*/
public boolean updateApplyIdById(long id, String applyId) {
return new CasebookDao().updateApplyIdById(id, applyId);
}
// 支付回调通知
public void paidNotify(MerchantEnum merchantEnum, String openid, BigDecimal totalFee, String outTradeNo, String bankTransNo, String payInfo) {
CasebookDao casebookDao = new CasebookDao();
PayCasebook order = casebookDao.selectByOutTradeNo(outTradeNo);
String casebookId = order.getApplyId();
if (ObjectUtils.isEmpty(casebookId)) {
log.error("[病历]病历申请ID缺失 outTradeNo={}, bankTransNo={}, casebookId={}", outTradeNo, bankTransNo, casebookId);
String applyId = order.getApplyId();
if (ObjectUtils.isEmpty(applyId)) {
log.error("[病历复印]回调:病历申请ID缺失 outTradeNo={}, bankTransNo={}, applyId={}", outTradeNo, bankTransNo, applyId);
return;
}
Integer payStates = order.getPayStatus();
if (payStates == 0) {
log.error("[病历]订单已支付 outTradeNo={}, bankTransNo={}, casebookId={}", outTradeNo, bankTransNo, casebookId);
if (order.hasPayStatusPaid()) {
log.error("[病历复印]订单已支付 outTradeNo={}, bankTransNo={}, applyId={}", outTradeNo, bankTransNo, applyId);
return;
}
if (!casebookDao.updatePayStateOk(outTradeNo, bankTransNo)) {
log.info("[病历]修改支付状态失败 outTradeNo={}, bankTransNo={}, casebookId={}", outTradeNo, bankTransNo, casebookId);
log.info("[病历复印]修改支付状态失败 outTradeNo={}, bankTransNo={}, applyId={}", outTradeNo, bankTransNo, applyId);
}
log.info("[病历] 开始回调支付状态 borrowNo-{}", casebookId);
try {
String jsonString = XBDHttpHelper.ExecMethodPost(XBDEnum.BLSM_Appointment_SetISPay.NAME, params -> {
params.put("borrowNo", casebookId);
log.info("[病历复印]调用HIS接口开始... borrowNo-{}", applyId);
String respJson = XBDHttpHelper.ExecMethodPost(XBDEnum.BLSM_Appointment_SetISPay.NAME, params -> {
params.put("borrowNo", applyId);
params.put("payDateTime", DateHelper.getCurDateTime());
});
log.info("[病历]回调返回 resp={}", jsonString);
String code = JsonHelper.parseObject(jsonString).getString("Code");
log.info("[病历复印]HIS接口返回 resp={}", respJson);
String code = JsonHelper.parseObject(respJson).getString("Code");
if (code == null) {
if (!casebookDao.updateNotifyOk(outTradeNo)) {
log.info("[病历]更新订单信息失败 outTradeNo={}, bankTransNo={}, casebookId={}", outTradeNo, bankTransNo, casebookId);
log.info("[病历复印]更新HIS订单信息失败 outTradeNo={}, bankTransNo={}, applyId={}", outTradeNo, bankTransNo, applyId);
}
return;
}
String message = JsonHelper.parseObject(jsonString).getString("Msg");
log.info("[病历]回调失败 code={}, message={}", code, message);
String message = JsonHelper.parseObject(respJson).getString("Msg");
log.error("[病历复印]HIS接口调用失败 code={}, message={}, outTradeNo={}, applyId={}", code, message, outTradeNo, applyId);
if (!casebookDao.updateNotifyErr(outTradeNo, message)) {
log.info("[病历]更新订单错误信息失败 outTradeNo={}, code={}, message={}", outTradeNo, code, message);
log.info("[病历复印]更新HIS订单错误信息失败 outTradeNo={}, code={}, message={}, outTradeNo={}, applyId={}", outTradeNo, code, message, outTradeNo, applyId);
}
} catch (Exception e) {
log.error(e.getMessage());
}
}
// public boolean isPaid(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);
// }
}

@ -89,15 +89,15 @@ public class PatientService {
/**
* [有证绑定]
*/
public Result bindCard(boolean isMyself, boolean isCounty, String healthCardId, String openid, String name, String sex, String idCardNo, HCardTypeEnum cardTypeEnum, String tel, String address, String birthday, String nation, String county, String uuid) {
return bind(isMyself, isCounty, healthCardId, openid, name, sex, idCardNo, cardTypeEnum, tel, address, birthday, nation, county, uuid, null, null, null, null, null, null);
public Result bindCard(boolean isMyself, boolean isAreaCode, String healthCardId, String openid, String name, String sex, String idCardNo, HCardTypeEnum cardTypeEnum, String tel, String address, String birthday, String nation, String areaCode, String uuid) {
return bind(isMyself, isAreaCode, healthCardId, openid, name, sex, idCardNo, cardTypeEnum, tel, address, birthday, nation, areaCode, uuid, null, null, null, null, null, null);
}
/**
* [绑定]
*
* @param isMyself 是否为自己
* @param isCounty 是否传递行政区编码
* @param isArea 是否传递行政区编码
* @param healthCardId 健康卡id
* @param openid openid
* @param name 姓名
@ -107,7 +107,7 @@ public class PatientService {
* @param address 地址
* @param birthday 出生日期
* @param nation 名字
* @param county 行政区编码
* @param areaCode 行政区编码
* @param uuid uuid 随机编码
* @param fName 父姓名
* @param fTel 父电话
@ -116,8 +116,8 @@ public class PatientService {
* @param mTel 母电话
* @param mIDCardNo 母身份证号码
*/
public Result bind(boolean isMyself, boolean isCounty, String healthCardId, String openid, String name, String sex, String idCardNo, HCardTypeEnum cardTypeEnum, String tel, String address, String birthday, String nation, String county, String uuid, String fName, String fTel, String fIDCardNo, String mName, String mTel, String mIDCardNo) {
log.info("[患者]身份绑定 name={}, county={}, address={}, nation={}, sex={}, birthday={}, tel={}", name, county, address, nation, sex, birthday, tel);
public Result bind(boolean isMyself, boolean isArea, String healthCardId, String openid, String name, String sex, String idCardNo, HCardTypeEnum cardTypeEnum, String tel, String address, String birthday, String nation, String areaCode, String uuid, String fName, String fTel, String fIDCardNo, String mName, String mTel, String mIDCardNo) {
log.info("[患者]身份绑定 name={}, county={}, address={}, nation={}, sex={}, birthday={}, tel={}", name, areaCode, address, nation, sex, birthday, tel);
if (openid == null || sex == null || birthday == null || name == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
@ -131,7 +131,7 @@ public class PatientService {
Patient hisPatient;
try {
hisPatient = new HisPatientDao().bind(isCounty, name, sex, idCardNo, cardTypeEnum, tel, address, birthday, nation, county, uuid, fName, fTel, fIDCardNo, mName, mTel, mIDCardNo);
hisPatient = new HisPatientDao().bind(isArea, name, sex, idCardNo, cardTypeEnum, tel, address, birthday, nation, areaCode, uuid, fName, fTel, fIDCardNo, mName, mTel, mIDCardNo);
} catch (ServiceException e) {
return Result.error(e);
}
@ -144,8 +144,8 @@ public class PatientService {
// 判断是否已有数据
Patient patient = patientDao.selectByIdCardNo(openid, idCardNo);
if (patient == null) { // 数据库没有-->添加
log.info("[患者]添加 name={}, county={}, healthCardId={}, address={}, nation={}, sex={}, birthday={}, tel={}", name, county, healthCardId, address, nation, sex, birthday, tel);
if (!patientDao.insert(isMyself, healthCardId, openid, patientId, hisPatient.getHisTransNo(), name, sex, idCardNo, cardTypeEnum, birthday, null, address, nation, tel, uuid, county, fName, fTel, fIDCardNo, mName, mTel, mIDCardNo)) {
log.info("[患者]添加 name={}, county={}, healthCardId={}, address={}, nation={}, sex={}, birthday={}, tel={}", name, areaCode, healthCardId, address, nation, sex, birthday, tel);
if (!patientDao.insert(isMyself, healthCardId, openid, patientId, hisPatient.getHisTransNo(), name, sex, idCardNo, cardTypeEnum, birthday, null, address, nation, tel, uuid, areaCode, fName, fTel, fIDCardNo, mName, mTel, mIDCardNo)) {
log.info("[身份绑定]添加患者失败");
return Result.error(ResultEnum.PATIENT_ADD_ERROR);
}
@ -162,12 +162,12 @@ public class PatientService {
log.info("[患者]更新 isMyself={}, patientId={}, name={}, healthCardId={}", isMyself, patient.getPatientId(), name, healthCardId);
if (isMyself) {
if (!patientDao.updateMyself(openid, idCardNo, patientId, name, address, county, nation, tel)) {
if (!patientDao.updateMyself(openid, idCardNo, patientId, name, address, areaCode, nation, tel)) {
log.info("[患者]自身信息更新失败 patientId={}", patient.getPatientId());
return Result.error(ResultEnum.DATA_UPDATE_ERROR);
}
} else {
if (!patientDao.updateInfo(openid, idCardNo, patientId, healthCardId, name, nation, tel, address, uuid, county)) {
if (!patientDao.updateInfo(openid, idCardNo, patientId, healthCardId, name, nation, tel, address, uuid, areaCode)) {
log.info("[患者]更新失败 patientId={}", patient.getPatientId());
return Result.error(ResultEnum.PATIENT_UPDATE_ERROR);
}
@ -280,7 +280,7 @@ public class PatientService {
public Result toOpenIds(List<Patient> dataList, String algorithm, Boolean isLastBind, Boolean isEncryptComma) {
if (dataList.size() == 0) {
if (dataList.isEmpty()) {
return Result.error(ResultEnum.DATA_NOT_FOUND);
}

@ -76,7 +76,7 @@ public class PayService {
break;
case CASEBOOK:
new CasebookService().payNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payInfo);
new CasebookService().paidNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payInfo);
break;
case OUT_COLLECT:

@ -69,7 +69,7 @@ public class RegService {
* @param reg 挂号信息
* @return 是否成功
*/
public boolean isSaveRegPrepay(Register reg) {
public boolean updateRegPrepay(Register reg) {
if (reg == null) {
log.info("reg is null");
return false;
@ -121,13 +121,13 @@ public class RegService {
Integer hisStatus = reg.getHisStatus();
Integer payStatus = reg.getPayStatus();
if (payStatus == null || hisStatus == null || payStatus == 0 || hisStatus == 0) { // 状态不明确
log.info(String.format("{%s} [挂号]订单已支付,停止向下执行 outTradeNo={%s}, bankTransNo={%s}, tradeNo={%s}", merchantEnum.NAME, outTradeNo, bankTransNo, tradeNo));
log.info("{} [挂号]订单已支付,停止向下执行 outTradeNo={}, bankTransNo={}, tradeNo={}", merchantEnum.NAME, outTradeNo, bankTransNo, tradeNo);
return false;
}
// 更新商户支付状态
if (!registerDao.updateMerPaidByOutTradeNo(outTradeNo, payDate, payTime, bankTransNo, tradeNo, bankMerchantNo)) {
log.info(String.format("{%s} [挂号]更新订单失败,停止向下执行 outTradeNo={%s}, bankTransNo={%s}, tradeNo={%s}", merchantEnum.NAME, outTradeNo, bankTransNo, tradeNo));
log.info("{} [挂号]更新订单失败,停止向下执行 outTradeNo={}, bankTransNo={}, tradeNo={}", merchantEnum.NAME, outTradeNo, bankTransNo, tradeNo);
return false;
}
reg.setPayDate(payDate);
@ -722,7 +722,7 @@ public class RegService {
reg.setPayWay(merchantEnum.PAY_WAY_IN);
if (!isSaveRegPrepay(reg)) {
if (!updateRegPrepay(reg)) {
log.info("{} [挂号]预存支付信息失败 patientId={}", merchantEnum.NAME, patientId);
return Result.error(ResultEnum.SPECIFIED_QUESTIONED_USER_NOT_EXIST);
}

Loading…
Cancel
Save