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.
		
		
		
		
			
				
					331 lines
				
				12 KiB
			
		
		
			
		
	
	
					331 lines
				
				12 KiB
			| 
											3 years ago
										 | package com.ynxbd.common.dao;
 | ||
|  | 
 | ||
|  | import com.ynxbd.common.bean.Patient;
 | ||
|  | 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);
 | ||
|  |         });
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * 根据身份证查询患者
 | ||
|  |      *
 | ||
|  |      * @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> 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;
 | ||
|  |     }
 | ||
|  | }
 |