微信后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

753 lines
28 KiB

package com.ynxbd.common.dao;
import com.ynxbd.common.bean.Dept;
import com.ynxbd.common.bean.Doctor;
import com.ynxbd.common.bean.pay.Order;
import com.ynxbd.common.bean.pay.Register;
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;
import java.util.ArrayList;
import java.util.List;
/**
* 挂号register表操作
*
* @Author wsq
* @Date 2020/11/2 0:07
* @Copyright @ 2020 云南新八达科技有限公司 All rights reserved.
*/
@Slf4j
public class RegisterDao {
/**
* 获取今日挂号的所有患者的openId用作到诊推送
*
* @return 所有openId
*/
public List<Register> selectTodayRegisterOpenId() {
String sqlString = "select a.*,b.`Name` as patientName from register a left join patientbase b on a.OpenID = b.OpenID and a.PatientID = b.PatientID WHERE RegDate = CURDATE() and HisStatus = 0 and RefundResult is null and RefundTime is null and RegType = 3 ";
return DataBase.select(sqlString, Register.class);
}
/**
* 根据医生编码/医生名获取医生头像(医生编码优先级 > 医生姓名)
*
* @param doctCode 医生编码(旧版为空)
* @param doctName 医生名
* @return 医生信息
*/
public Doctor selectDoctorByCodeOrName(String doctCode, String doctName) {
List<Doctor> resultList;
if (doctCode != null && !"".equals(doctCode)) {
String sqlCode = "select title, customTitle, metaTitle, meta tel, skill, headImg, description, pym, isDisabled, deletedState from doctor where doctCode='" + doctCode + "'";
resultList = DataBase.select(sqlCode, Doctor.class);
if (resultList.size() > 0) {
return resultList.get(0);
} else {
if (doctName != null && !"".equals(doctName)) {
String sqlName = "select title, customTitle, tel, skill, headImg, description, pym, isDisabled, deletedState from doctor where doctName='" + doctName + "'";
resultList = DataBase.select(sqlName, Doctor.class);
return resultList.size() > 0 ? resultList.get(0) : null;
}
}
}
return null;
}
/**
* 根据医生编码/医生名获取医生头像(医生编码优先级 > 医生姓名)
*
* @return 医生信息
*/
public List<Doctor> selectDocListByCodes(List<Doctor> docList) {
if (docList == null || docList.size() == 0) {
return new ArrayList<>();
}
StringBuilder sb = new StringBuilder();
for (Doctor doctor : docList) {
String doctCode = doctor.getDoctCode();
if (ObjectUtils.isEmpty(doctCode)) continue;
doctCode = doctCode.trim();
if ("*".equals(doctCode)) continue;
sb.append(doctCode);
sb.append(",");
}
String codeStr = sb.toString();
if (codeStr.length() == 0) {
return new ArrayList<>();
}
codeStr = codeStr.substring(0, codeStr.length() - 1);
String sql = "select * from doctor where doctCode in (" + codeStr + ")";
return DataBase.select(sql, Doctor.class);
}
/**
* 根据科室编码查询科室信息
*
* @param deptCode 科室编码
* @return 医生信息
*/
public Dept selectDeptByDeptCode(String deptCode) {
String sql = "select * from dept where isDisabled = false and deptCode= ?";
List<Dept> resultList = DataBase.select(sql, Dept.class, ps -> {
ps.setString(1, deptCode);
});
return resultList.size() > 0 ? resultList.get(0) : null;
}
/**
* [医生]根据科室编码查询医生列表
*
* @param deptCode 科室编码
* @return 医生信息
*/
public List<Doctor> selectDoctorByDeptCode(String deptCode) {
String sql = "select * from doctor where isDisabled = false and deptCode= ?";
return DataBase.select(sql, Doctor.class, ps -> {
ps.setString(1, deptCode);
});
}
/**
* [医生]根据医生编码查询医生信息
*
* @param doctCode 医生编码
* @return 医生信息
*/
public Doctor selectDoctorByDoctCode(String doctCode) {
String sql = "select * from doctor where isDisabled = false and doctCode= ?";
List<Doctor> doctorList = DataBase.select(sql, Doctor.class, ps -> {
ps.setString(1, doctCode);
});
if (doctorList.size() != 1) {
return null;
}
return doctorList.get(0);
}
/**
* 根据订单号查询是否挂过号
*
* @param outTradeNo 订单号
* @return 是否挂号
*/
public boolean isMerPaidByOutTradeNo(String outTradeNo) {
String sql = "select hisStatus from register where outTradeNo= ? and payStatus = 0";
return DataBase.select(sql, Register.class, ps -> {
ps.setString(1, outTradeNo);
}).size() > 0;
}
/**
* 查询某天,某科室,某人,是否挂号
*
* @param patientId 患者id
* @param regDate 挂号日期
* @param deptCode 科室编码
* @return 是否挂号
*/
public boolean hasReg(String patientId, String regDate, String deptCode) {
String sql = "select hisStatus from register where patientId= ? and regDate= ? and hisStatus= 0 and RefundResult is null and deptCode= ?";
List<Register> regs = DataBase.select(sql, Register.class, ps -> {
ps.setString(1, patientId);
ps.setString(2, regDate);
ps.setString(3, deptCode);
});
if (regs.size() > 0) {
return true;
}
// 是否是今天
boolean isToday = DateHelper.isToday(regDate);
HisRegisterDao hisRegisterDao = new HisRegisterDao();
List<Register> hisRegs;
if (isToday) { // 今日挂号
hisRegs = hisRegisterDao.hasRegSite(patientId, regDate);
for (Register hisReg : hisRegs) {
if (deptCode.equals(hisReg.getDeptCode()) && (hisReg.getRefundDate() == null || "".equals(hisReg.getRefundDate()))) {
return true;
}
}
} else {
hisRegs = hisRegisterDao.hasRegReserve(patientId, regDate);
for (Register hisReg : hisRegs) {
// 0:未取号,1:已取号,-1:取消预约
if (deptCode.equals(hisReg.getDeptCode()) && hisReg.getIsTake() != null && hisReg.getIsTake() != -1) {
return true; // 预约过
}
}
}
return false;
}
/**
* 根据hisTransNo获取挂号信息
*
* @param hisTransNo hisTransNo
*/
public Register selectRegByHisTransNo(String hisTransNo) {
String sql = "select * from register where hisTransNo= ?";
List<Register> resultList = DataBase.select(sql, Register.class, ps -> {
ps.setString(1, hisTransNo);
});
return resultList.size() > 0 ? resultList.get(0) : null;
}
/**
* 查询所有科室
*/
public List<Dept> selectDeptList() {
String sql = "select * from dept order by deptCode asc";
return DataBase.select(sql, Dept.class);
}
/**
* 过滤科室信息
*
* @param deptCode 科室code
*/
public Dept deptFilter(List<Dept> dbDeptList, String deptCode, String deptName, String address, String hospitalAreaName) {
Dept dept = new Dept();
dept.setDeptCode(deptCode);
dept.setDeptName(deptName);
dept.setAddress(address);
dept.setHospitalAreaName(hospitalAreaName);
if (deptCode == null || deptName == null) {
return dept;
}
if (dbDeptList.isEmpty()) {
return dept;
}
Dept dbDept = dbDeptList.stream().filter(item ->
deptCode.equals(item.getDeptCode())).findAny().orElse(null);
if (dbDept != null) {
Boolean isDisabled = dbDept.getIsDisabled();
Integer deletedState = dbDept.getDeletedState();
if ((isDisabled != null && isDisabled) || (deletedState != null && deletedState != 0)) { // 禁用 | 移除 返回null
return null;
}
dept.setAddress(ObjectUtils.isEmpty(address) ? dbDept.getAddress() : address); // HIS优先级最高
}
return dept;
}
/**
* 预存挂号信息
*
* @param reg 挂号信息
* @return 是否成功
*/
public boolean insert(Register reg) {
if (reg.getPayMoney() == null) {
reg.setPayMoney(reg.getTotalFee());
}
String sql = "insert into register(updateTime, hisStatus, payStatus, openid, patientId, idCardNo, outTradeNo, bankTransNo, tradeNo, regFee, clinicFee, totalFee, payMoney, address, deptCode, deptName, doctCode, doctName, payDeviceId, clinicCode, regType, regDate, regCode, tid, tName, begTime, endTime, treatNum, queueNum, sourceId, tel, payWay, authCode, invoiceTransNo, hisTransNo, operateUser, HospitalArea, subDeptCode)"
+ " values (now(),?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?)";
return DataBase.insert(sql, ps -> {
ps.setInt(1, reg.getHisStatus());
ps.setInt(2, reg.getPayStatus());
//
ps.setString(3, reg.getOpenid());
ps.setString(4, reg.getPatientId());
ps.setString(5, reg.getIdCardNo());
//
ps.setString(6, reg.getOutTradeNo());
ps.setString(7, reg.getBankTransNo());
ps.setString(8, reg.getTradeNo());
//
ps.setBigDecimal(9, reg.getRegFee());
ps.setBigDecimal(10, reg.getClinicFee());
ps.setBigDecimal(11, reg.getTotalFee());
ps.setBigDecimal(12, reg.getPayMoney());
//
ps.setString(13, reg.getAddress());
ps.setString(14, reg.getDeptCode());
ps.setString(15, reg.getDeptName());
ps.setString(16, reg.getDoctCode());
ps.setString(17, reg.getDoctName());
ps.setString(18, reg.getPayDeviceId());
ps.setString(19, reg.getClinicCode());
//
ps.setString(20, reg.getRegType()); // 1现场,0预约
ps.setString(21, reg.getRegDate());
ps.setString(22, reg.getRegCode());
//
ps.setString(23, reg.getTid());
ps.setString(24, reg.getTName());
ps.setString(25, reg.getBegTime());
ps.setString(26, reg.getEndTime());
ps.setString(27, reg.getTreatNum());
ps.setString(28, reg.getQueueNum());
ps.setString(29, reg.getSourceId());
ps.setString(30, reg.getTel());
ps.setString(31, reg.getPayWay());
ps.setString(32, reg.getAuthCode());
ps.setString(33, reg.getInvoiceTransNo());
ps.setString(34, reg.getHisTransNo());
ps.setString(35, reg.getOperateUser());
ps.setString(36, reg.getHospitalArea());
ps.setString(37, reg.getSubDeptCode());
}) > 0;
}
/**
* 预存挂号信息
*
* @param reg 挂号信息
* @return 是否成功
*/
public boolean insertMedical(Register reg) {
String sql = "insert into register(updateTime, hisStatus, payStatus, openid, patientId, idCardNo, outTradeNo, bankTransNo, tradeNo, regFee, clinicFee, totalFee, payMoney, address, deptCode, deptName, doctCode, doctName, payDeviceId, clinicCode, regType, regDate, regCode, tid, tName, begTime, endTime, treatNum, queueNum, sourceId, tel, payWay, authCode, invoiceTransNo, hisTransNo, operateUser, HospitalArea, subDeptCode, AcctFee, HifpFee, ChrgBchno, MdTrtId, MdUserId, PayOrdId)"
+ " values (now(),?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?,?,?,?)";
return DataBase.insert(sql, ps -> {
ps.setInt(1, reg.getHisStatus());
ps.setInt(2, reg.getPayStatus());
//
ps.setString(3, reg.getOpenid());
ps.setString(4, reg.getPatientId());
ps.setString(5, reg.getIdCardNo());
//
ps.setString(6, reg.getOutTradeNo());
ps.setString(7, reg.getBankTransNo());
ps.setString(8, reg.getTradeNo());
//
ps.setBigDecimal(9, reg.getRegFee());
ps.setBigDecimal(10, reg.getClinicFee());
ps.setBigDecimal(11, reg.getTotalFee());
ps.setBigDecimal(12, reg.getPayMoney());
//
ps.setString(13, reg.getAddress());
ps.setString(14, reg.getDeptCode());
ps.setString(15, reg.getDeptName());
ps.setString(16, reg.getDoctCode());
ps.setString(17, reg.getDoctName());
ps.setString(18, reg.getPayDeviceId());
ps.setString(19, reg.getClinicCode());
//
ps.setString(20, reg.getRegType()); // 1现场,0预约
ps.setString(21, reg.getRegDate());
ps.setString(22, reg.getRegCode());
//
ps.setString(23, reg.getTid());
ps.setString(24, reg.getTName());
ps.setString(25, reg.getBegTime());
ps.setString(26, reg.getEndTime());
ps.setString(27, reg.getTreatNum());
ps.setString(28, reg.getQueueNum());
ps.setString(29, reg.getSourceId());
ps.setString(30, reg.getTel());
ps.setString(31, reg.getPayWay());
ps.setString(32, reg.getAuthCode());
ps.setString(33, reg.getInvoiceTransNo());
ps.setString(34, reg.getHisTransNo());
ps.setString(35, reg.getOperateUser());
ps.setString(36, reg.getHospitalArea());
ps.setString(37, reg.getSubDeptCode());
//
ps.setBigDecimal(38, reg.getAcctFee());
ps.setBigDecimal(39, reg.getHifpFee());
ps.setString(40, reg.getChrgBchno());
ps.setString(41, reg.getMdTrtId());
ps.setString(42, reg.getMdUserId());
ps.setString(43, reg.getPayOrdId());
}) > 0;
}
public Register selectByOutTradeNo(String outTradeNo) {
String sql = "select * from register where outTradeNo=? order by updateTime desc";
List<Register> list = DataBase.select(sql, Register.class, ps -> {
ps.setString(1, outTradeNo);
});
if (list.size() > 0) {
return list.get(0);
}
return null;
}
/**
* 更新挂号支付信息
*
* @param outTradeNo 订单号
* @param payDate 支付日期
* @param payTime 支付时间
* @param bankTransNo 交易流水号
* @param tradeNo HIS订单号
* @return 信息
*/
public boolean updateMerPaidByOutTradeNo(String outTradeNo, String payDate, String payTime, String bankTransNo, String tradeNo, String bankMerchantNo) {
String sql = "update register set payStatus=?, payDate=?, payTime=?, bankTransNo=?, tradeNo=?, bankMerchantNo=? where outTradeNo=? and bankTransNo is null";
return DataBase.update(sql, ps -> {
ps.setInt(1, 0);
ps.setString(2, payDate);
ps.setString(3, payTime);
ps.setString(4, bankTransNo);
ps.setString(5, tradeNo);
ps.setString(6, bankMerchantNo);
ps.setString(7, outTradeNo);
}) > 0;
}
/**
* 更新挂号支付信息
*
* @param outTradeNo 订单号
* @param payDate 支付日期
* @param payTime 支付时间
* @param bankTransNo 交易流水号
* @return 信息
*/
public boolean updateMerPaidByOutTradeNo(String outTradeNo, String payDate, String payTime, String bankTransNo) {
String sql = "update register set payStatus=?, payDate=?, payTime=? where outTradeNo=? and bankTransNo = ?";
return DataBase.update(sql, ps -> {
ps.setInt(1, 0);
ps.setString(2, payDate);
ps.setString(3, payTime);
ps.setString(4, outTradeNo);
ps.setString(5, bankTransNo);
}) > 0;
}
/**
* [挂号失败]更新HIS返回的错误信息
*
* @param outTradeNo 订单号
* @param hisStatus HIS调用失败code
* @param hisResult HIS失败原因
* @return 是否记录成功
*/
public boolean updateHisPaidFailByOutTradeNo(String outTradeNo, String hisStatus, String hisResult) {
String sql = "update register set hisStatus=?, hisResult=? where outTradeNo=?";
return DataBase.update(sql, ps -> {
ps.setString(1, hisStatus);
ps.setString(2, hisResult);
ps.setString(3, outTradeNo);
}) > 0;
}
/**
* [挂号成功] 更新信息
*
* @param outTradeNo 订单号
* @param bankTransNo 樱花交易流水号
* @param hisTransNo HIS流水号
* @param treatNum 门诊号[今日挂号返回门诊号,预约挂号不返回门诊号]
* @return 是否成功
*/
public boolean updateHisRegInfo(String outTradeNo, String bankTransNo, String hisTransNo, String treatNum, String invoiceTransNo, String callNum) {
String sql = "update register set hisStatus=0, bankTransNo=?, hisTransNo=?, treatNum=?, invoiceTransNo=?, callNum=? where outTradeNo=? and hisStatus= -1";
return DataBase.update(sql, ps -> {
ps.setString(1, bankTransNo);
ps.setString(2, hisTransNo);
ps.setString(3, treatNum);
ps.setString(4, invoiceTransNo);
ps.setString(5, callNum);
ps.setString(6, outTradeNo);
}) > 0;
}
/**
* [挂号成功] 更新信息
*
* @param outTradeNo 订单号
* @return 是否成功
*/
public boolean updateHisPaidByOutTradeNo(String outTradeNo) {
String sql = "update register set payStatus=0, hisStatus=0 where outTradeNo=? and hisStatus= -1";
return DataBase.update(sql, ps -> {
ps.setString(1, outTradeNo);
}) > 0;
}
/**
* 修改退款描述
*
* @param outTradeNo 订单号
* @param tradeNo HIS交易流水号
* @param refundMsg 退款描述
* @return 是否成功
*/
public boolean updateRefundResult(String outTradeNo, String tradeNo, String refundMsg) {
// 退款成功
String sql = "update register set refundResult=?, refundTime=now() where tradeNo=? and outTradeNo=?";
return DataBase.update(sql, ps -> {
ps.setString(1, refundMsg);
ps.setString(2, tradeNo);
ps.setString(3, outTradeNo);
}) > 0;
}
/**
* 根据发票流水号号修改退费信息
*
* @param outTradeNo 订单号
* @param invoiceTransNo 发票号
* @param refundResult 退款信息
* @return 是否成功
*/
public boolean updateRefundByInvoiceTransNo(String outTradeNo, String outRefundNo, String invoiceTransNo, String refundResult) {
String sql = "update register set refundResult=?, tradeNo=?, refundTime=now() where outTradeNo=? and invoiceTransNo=? and (refundResult is null or refundResult != 'OK')";
return DataBase.update(sql, ps -> {
ps.setString(1, refundResult);
ps.setString(2, outRefundNo);
ps.setString(3, outTradeNo);
ps.setString(4, invoiceTransNo);
}) > 0;
}
/**
* 根据订单号修改退费信息
*
* @param tradeNo HIS交易流水号
* @param refundResult 退款信息
* @return 是否成功
*/
public boolean updateRefundByTradeNo(String tradeNo, String refundResult) {
String sql = "update register set refundResult=?, refundTime=now() where tradeNo=? and (refundResult is null or refundResult != 'OK')";
return DataBase.update(sql, ps -> {
ps.setString(1, refundResult);
ps.setString(2, tradeNo);
}) > 0;
}
/**
* 根据订单号修改退费信息
*
* @param outTradeNo 商户订单号
* @param tradeNo HIS订单号
* @return 是否成功
*/
public boolean updateRefund(String outTradeNo, String tradeNo) {
String sql = "update register set RefundResult=0, refundTime=now() where outTradeNo=? and tradeNo=? and (refundResult is null or refundResult != 'OK')";
return DataBase.update(sql, ps -> {
ps.setString(1, outTradeNo);
ps.setString(2, tradeNo);
}) > 0;
}
/**
* HIS已调用成功,矫正状态
*
* @param bankTransNo 银行交易流水号
* @param tradeNo HIS订单号
* @return 是否成功
*/
public boolean updateHisStatus(String bankTransNo, String tradeNo, String timePoint) {
String sql = "update register set hisStatus= 0 where bankTransNo=? and tradeNo=? and updateTime < ? and (refundResult is null or refundResult != 'OK')";
return DataBase.update(sql, ps -> {
ps.setString(1, bankTransNo);
ps.setString(2, tradeNo);
ps.setString(3, timePoint);
}) > 0;
}
/**
* 根据HIS交易流水号,查询微信交易成功,HIS交易失败,且没有退款的记录
*
* @param tradeNo HIS交易流水号
* @return 记录
*/
public Register selectHisErrorByTradeNo(String tradeNo) {
String sql = "select * from register where tradeNo=? and hisStatus=-1 and payStatus=0 and RefundResult is null";
List<Register> resultList = DataBase.select(sql, Register.class, ps -> {
ps.setString(1, tradeNo);
});
if (resultList.size() == 1) {
return resultList.get(0);
}
if (resultList.size() > 1) {
log.info("[挂号]数据库存在多条相同的支付记录");
return null;
}
return null;
}
/**
* 根据订单号和银行交易流水号,查询微信交易成功,HIS交易失败,且没有退款的记录
*
* @param invoiceTransNo 发票流水号
* @return 记录
*/
public Register selectByInvoiceTransNo(String invoiceTransNo, String patientId) {
String sql = "select * from register where invoiceTransNo=? and patientId=? and hisStatus=0 and payStatus=0 and authCode is not null and tradeNo is null and (refundResult is null or refundResult != 'OK')";
List<Register> resultList = DataBase.select(sql, Register.class, ps -> {
ps.setString(1, invoiceTransNo);
ps.setString(2, patientId);
});
if (resultList.size() == 1) {
return resultList.get(0);
}
if (resultList.size() > 1) {
log.info("[挂号]数据库存在多条相同的支付记录");
return null;
}
return null;
}
/**
* 根据HIS订单号查询
*
* @param tradeNo HIS交易流水号
* @return 挂号记录
*/
public Register selectStatusErrOrder(String tradeNo) {
String sql = "select * from register where tradeNo=? and payStatus=0";
List<Register> resultList = DataBase.select(sql, Register.class, ps -> {
ps.setString(1, tradeNo);
});
if (resultList.size() == 1) {
return resultList.get(0);
}
if (resultList.size() > 1) {
log.info("[挂号]数据库存在多条相同的支付记录");
return null;
}
return null;
}
/**
* 查询订单状态异常订单
*
* @param bankTransNo
* @param tradeNo
* @param timePoint
* @return
*/
public Register selectStatusErrOrder(String bankTransNo, String tradeNo, String timePoint) {
String sql = "select * from register where bankTransNo=? and tradeNo=? and updateTime < ? and hisStatus != 0";
List<Register> dataList = DataBase.select(sql, Register.class, ps -> {
ps.setString(1, bankTransNo);
ps.setString(2, tradeNo);
ps.setString(3, timePoint);
});
if (dataList.size() == 1) {
return dataList.get(0);
}
if (dataList.size() > 1) {
log.info("查询数量大于1 tradeNo={}, bankTransNo={}", tradeNo, bankTransNo);
}
return null;
}
/**
* 查询挂号列表
*
* @param begTime
* @param endTime
* @return
*/
public List<Order> selectList(String begTime, String endTime) {
String sql = "select * from register where updateTime between ? and DATE_ADD(?, INTERVAL 1 DAY)";
return DataBase.select(sql, Order.class, ps -> {
ps.setString(1, begTime);
ps.setString(2, endTime);
});
}
/**
* 退费列表
*/
public List<Order> selectRefundList(String begDate, String endDate) {
String sql = "select * from register where regDate between ? and ? and refundResult is null and payStatus = 0";
return DataBase.select(sql, Order.class, ps -> {
ps.setString(1, begDate);
ps.setString(2, endDate);
});
}
public boolean updateMicroOrderState(String outTradeNo, String bankTransNo, String openid) {
String sql = "update register set payDate= now(), payStatus = 0, bankTransNo=?, openid=? where outTradeNo=? and authCode is not null";
return DataBase.update(sql, ps -> {
ps.setString(1, bankTransNo);
ps.setString(2, openid);
ps.setString(3, outTradeNo);
}) > 0;
}
/**
* 查询当天挂号的人用来推送候诊提醒
*
* @param startDate 开始时间
* @param endDate 结束时间
* @return 候诊人群
*/
public List<WaitReg> selectTodayRegRecord(String startDate, String endDate) {
String sql = "select a.*,b.`Name` from register a left join patientBase b on a.patientId = b.patientId and a.openId = b.openId where regDate = CURDATE() and begTime >= ? and endTime <= ? and refundResult is null and payStatus = 0 and hisStatus = 0";
return DataBase.select(sql, WaitReg.class, ps -> {
ps.setString(1, startDate);
ps.setString(2, endDate);
});
}
/**
* [就医助手]根据挂号日期范围,查询挂号记录
*
* @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错误");
}
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, 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);
});
}
}