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.
		
		
		
		
			
				
					
					
						
							355 lines
						
					
					
						
							13 KiB
						
					
					
				
			
		
		
	
	
							355 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;
 | |
|     }
 | |
| }
 | |
| 
 |