微信后端代码
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.

356 lines
13 KiB

package com.ynxbd.common.dao;
import com.ynxbd.common.bean.Patient;
import com.ynxbd.common.bean.PatientLink;
import com.ynxbd.common.bean.enums.HCardTypeEnum;
import com.ynxbd.common.config.db.DataBase;
import java.util.ArrayList;
import java.util.List;
/**
* 患者表操作
*
* @Author wsq
* @Date 2020/9/25 11:08
* @Copyright @ 2020 云南新八达科技有限公司 All rights reserved.
*/
public class PatientDao {
/**
* 根据openid查询绑定健康卡的用户
*
* @param openid openid
* @return 患者集合
*/
public List<Patient> selectHealthCardListByOpenid(String openid) {
String sql = "select * from patientBase where openid= ? and deletedState = 0 and healthCardId is not null";
return DataBase.select(sql, Patient.class, ps -> {
ps.setString(1, openid);
});
}
/**
* 根据openid查询患者
*
* @param openid openid
* @return 患者列表
*/
public List<Patient> selectListByToken(String openid, String unionId) {
if (unionId == null || "".equals(unionId)) {
return selectListByOpenid(openid);
}
String sql = "select * from patientBase where openid = ? and deletedState = 0 order by isDefault desc";
return DataBase.select(sql, Patient.class, ps -> {
ps.setString(1, openid);
});
}
/**
* 根据openid查询患者
*
* @param openid openid
* @return 患者列表
*/
public List<Patient> selectListByOpenid(String openid) {
String sql = "select * from patientBase where openid = ? and deletedState = 0 order by isDefault desc";
return DataBase.select(sql, Patient.class, ps -> {
ps.setString(1, openid);
});
}
/**
* 根据openid查询患者 部分信息 用作外部对接
*
* @param openid openid
* @return 患者列表
*/
public List<PatientLink> selectPatientsByOpenid(String openid) {
String sql = "select OpenID,PatientID,Name,Sex,IDCardNo,Age,Birthday,Address,Nation from patientBase where openid = ? and deletedState = 0 order by isDefault desc";
return DataBase.select(sql, PatientLink.class, ps -> {
ps.setString(1, openid);
});
}
/**
* 根据身份证查询患者
*
* @param openid openid
* @param idCardNo 身份证号
* @return 患者信息
*/
public Patient selectByIdCardNo(String openid, String idCardNo) {
String sql = "select * from patientBase where openid= ? and idCardNo= ?";
List<Patient> resultList = DataBase.select(sql, Patient.class, ps -> {
ps.setString(1, openid);
ps.setString(2, idCardNo);
});
return resultList.size() > 0 ? resultList.get(0) : null;
}
/**
* 根据身份证查询患者
*
* @param openid openid
* @param patientId 患者ID
* @return 患者信息
*/
public boolean hasPatient(String openid, String patientId) {
return selectByOpenidAndPatientId(openid, patientId) != null;
}
/**
* 根据身份证查询患者
*
* @param openid openid
* @return 患者信息
*/
public Patient selectMyself(String openid) {
String sql = "select * from patientBase where openid= ? and isMyself = 1";
List<Patient> resultList = DataBase.select(sql, Patient.class, ps -> {
ps.setString(1, openid);
});
return resultList.size() > 0 ? resultList.get(0) : null;
}
/**
* 根据身份证查询患者
*
* @param openid openid
* @param patientId 患者ID
* @return 患者信息
*/
public Patient selectByOpenidAndPatientId(String openid, String patientId) {
String sql = "select * from patientBase where openid= ? and patientId= ? and deletedState = 0";
List<Patient> resultList = DataBase.select(sql, Patient.class, ps -> {
ps.setString(1, openid);
ps.setString(2, patientId);
});
return resultList.size() > 0 ? resultList.get(0) : null;
}
/**
* 健康卡解绑
*
* @param openid openid
* @param patientId 身份证号
* @return 是否成功
*/
public boolean removePatient(String openid, String patientId) {
String sql = "update patientBase set updateTime=now(), deletedState=1 where openid=? and patientId=?";
return DataBase.update(sql, ps -> {
ps.setString(1, openid);
ps.setString(2, patientId);
}) > 0;
}
/**
* 更新用户信息
*
* @param openid openid
* @param idCardNo idCardNo
* @param healthCardId 健康卡id
* @param name 姓名
* @param nation 民族
* @param tel 电话
* @param address 地址
* @return 是否成功
*/
public boolean updateInfo(String openid, String idCardNo, String patientId, String healthCardId, String name, String nation, String tel, String address, String uuid, String county) {
String sql = "update patientBase set deletedState=0, healthCardId=?, name=?, nation=?, tel=?, address=?, uuid=?, county=?, patientId=? where openid=? and idCardNo=?";
return DataBase.update(sql, ps -> {
ps.setString(1, healthCardId);
ps.setString(2, name);
ps.setString(3, nation);
ps.setString(4, tel);
ps.setString(5, address);
ps.setString(6, uuid);
ps.setString(7, county);
ps.setString(8, patientId);
// 条件
ps.setString(9, openid);
ps.setString(10, idCardNo);
}) > 0;
}
/**
* [患者]绑定身份证(成人)
*
* @param healthCardId 健康卡ID
* @param openid openid
* @param patientId 患者ID
* @param hisTransNo hisTransNo
* @param name 姓名
* @param sex 性别
* @param idCardNo 身份证
* @param tel 电话
* @param address 地址
* @param birthday 生日
* @param nation 民族
*/
public boolean insertCard(boolean isMyself, String healthCardId, String openid, String patientId, String hisTransNo,
String name, String sex, String idCardNo, HCardTypeEnum cardTypeEnum, String birthday, String age,
String address, String nation, String tel, String uuid, String county) {
return insert(isMyself, healthCardId, openid, patientId, hisTransNo, name, sex, idCardNo, cardTypeEnum, birthday, age, address, nation, tel, uuid, county, null, null, null, null, null, null);
}
/**
* [患者]绑定身份证
*
* @param healthCardId 健康卡ID
* @param openid openid
* @param patientId 患者ID
* @param hisTransNo hisTransNo
* @param name 姓名
* @param sex 性别
* @param idCardNo 身份证
* @param tel 电话
* @param address 地址
* @param birthday 生日
* @param nation 民族
* @param fName 父亲姓名
* @param fTel 父亲电话
* @param fIDCardNo 父亲身份证
* @param mName 母亲姓名
* @param mTel 母亲电话
* @param mIDCardNo 母亲身份证号
*/
public boolean insert(boolean isMyself, String healthCardId, String openid, String patientId, String hisTransNo,
String name, String sex, String idCardNo, HCardTypeEnum cardTypeEnum, String birthday, String age,
String address, String nation, String tel, String uuid, String county,
String fName, String fTel, String fIDCardNo,
String mName, String mTel, String mIDCardNo) {
String sql = "insert into patientBase(bindDate, openid, patientId, hisTransNo, name, sex, idCardNo, tel, address, birthday, nation, healthCardId, age, uuid, fatherName, fatherTel, fatherIDCardNo, motherName, motherTel, motherIDCardNo, county, isMyself, cardType) " +
" values(now(), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)";
return DataBase.insert(sql, ps -> {
ps.setString(1, openid);
ps.setString(2, patientId);
ps.setString(3, hisTransNo);
ps.setString(4, name);
ps.setString(5, sex);
ps.setString(6, idCardNo);
ps.setString(7, tel);
ps.setString(8, address);
ps.setString(9, birthday);
ps.setString(10, nation);
ps.setString(11, healthCardId);
ps.setString(12, age);
ps.setString(13, uuid);
//
ps.setString(14, fName);
ps.setString(15, fTel);
ps.setString(16, fIDCardNo);
ps.setString(17, mName);
ps.setString(18, mTel);
ps.setString(19, mIDCardNo);
ps.setString(20, county);
ps.setBoolean(21, isMyself);
ps.setString(22, cardTypeEnum.WX_CODE);
}) > 0;
}
/**
* 查询所有未领取健康卡的用户信息,民族、电话不能为空,一次读取15条信息
*/
public List<Patient> selectPatient4BatchUpdateHealthCard() {
String sql = "select * from patientBase where HealthCardID is null and ifnull(idcardno,'') <> '' " +
"and ifnull(nation,'') <> '' and ifnull(tel, '') <> '' and callFlag=0 LIMIT 15";
return DataBase.select(sql, Patient.class);
}
/**
* 批量领卡后,更新健康卡ID
*
* @param healthCardId 健康卡id
* @param idCardNo 身份证
*/
public boolean updateHealthCard(String healthCardId, String idCardNo) {
String sql = "update patientBase set healthCardId = ? where idCardNo = ?";
return DataBase.update(sql, ps -> {
ps.setString(1, healthCardId);
ps.setString(2, idCardNo);
}) > 0;
}
/**
* 批量领卡调用标记(领取成功与否都更新为1)
*
* @param idCardNo 身份证
* @return
*/
public boolean updateCallFlag(String idCardNo) {
String sql = "update patientBase set callFlag = 1 where idCardNo = ?";
return DataBase.update(sql, ps -> {
ps.setString(1, idCardNo);
}) > 0;
}
public List<Patient> selectOpenIdsByPatientId(String patientId) {
List<Patient> dataList = DataBase.select("select bindDate, openid from patientBase where patientId= ? and deletedState = 0 and openid is not null and length(openid) > 20 order by bindDate desc", Patient.class, ps -> {
ps.setString(1, patientId);
});
if (dataList.size() == 0) {
return new ArrayList<>();
}
return dataList;
}
public List<Patient> selectOpenIdsByCardNo(String cardNo) {
List<Patient> dataList = DataBase.select("select bindDate, openid from patientBase where idCardNo= ? and deletedState = 0 and openid is not null and length(openid) > 20 order by bindDate desc", Patient.class, ps -> {
ps.setString(1, cardNo);
});
if (dataList.size() == 0) {
return new ArrayList<>();
}
return dataList;
}
public List<Patient> selectListByPatientId(String patientId) {
List<Patient> dataList = DataBase.select("select * from patientBase where patientId= ? and deletedState = 0 order by bindDate desc", Patient.class, ps -> {
ps.setString(1, patientId);
});
if (dataList.size() == 0) {
return new ArrayList<>();
}
return dataList;
}
public boolean updateMyself(String openid, String idCardNo, String patientId, String name, String address, String county, String nation, String tel) {
if (idCardNo == null) {
return false;
}
idCardNo = "'" + idCardNo + "'";
String sql = "update patientBase set isMyself = (CASE idCardNo WHEN " + idCardNo + " THEN 1 else 0 end)," +
" deletedState = (CASE idCardNo WHEN " + idCardNo + " THEN 0 else deletedState end)," +
" county = (CASE idCardNo WHEN " + idCardNo + " THEN ? else county end)," +
" address = (CASE idCardNo WHEN " + idCardNo + " THEN ? else address end)," +
" patientId = (CASE idCardNo WHEN " + idCardNo + " THEN ? else patientId end)," +
" name = (CASE idCardNo WHEN " + idCardNo + " THEN ? else name end)," +
" tel = (CASE idCardNo WHEN " + idCardNo + " THEN ? else tel end)," +
" nation = (CASE idCardNo WHEN " + idCardNo + " THEN ? else nation end)" +
" where openid = ?";
return DataBase.update(sql, ps -> {
ps.setString(1, county);
ps.setString(2, address);
ps.setString(3, patientId);
ps.setString(4, name);
ps.setString(5, tel);
ps.setString(6, nation);
//---------------------------------------
ps.setString(7, openid);
}) > 0;
}
}