|  | @ -0,0 +1,190 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.care.service.prescription;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.dao.prescription.BaseCarePrescriptionDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.doctor.dao.BaseDoctorDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.org.BaseOrgDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.patient.BasePatientDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.prescription.BaseCarePrescriptionDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.patient.dao.BasePatientDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.ResponseContant;
 | 
	
		
			
				|  |  | import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.jdbc.core.BeanPropertyRowMapper;
 | 
	
		
			
				|  |  | import org.springframework.jdbc.core.JdbcTemplate;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import java.util.ArrayList;
 | 
	
		
			
				|  |  | import java.util.List;
 | 
	
		
			
				|  |  | import java.util.Map;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * Created by yeshijie on 2021/10/11.
 | 
	
		
			
				|  |  |  */
 | 
	
		
			
				|  |  | @Service
 | 
	
		
			
				|  |  | public class BaseCarePrescriptionService {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private BaseCarePrescriptionDao carePrescriptionDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private BasePatientDao patientDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private BaseDoctorDao doctorDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private JdbcTemplate jdbcTemplate;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 医生端列表查询
 | 
	
		
			
				|  |  |      * @param doctorCode
 | 
	
		
			
				|  |  |      * @param status
 | 
	
		
			
				|  |  |      * @param page
 | 
	
		
			
				|  |  |      * @param size
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject queryDoctorList(String doctorCode, Integer status, int page, int size) {
 | 
	
		
			
				|  |  |         JSONObject result = new JSONObject();
 | 
	
		
			
				|  |  |         List<BaseCarePrescriptionDO> sqlResultlist;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String sql = "select distinct a.*," +
 | 
	
		
			
				|  |  |                 "     case p.sex " +
 | 
	
		
			
				|  |  |                 "     when 1 then '男'  " +
 | 
	
		
			
				|  |  |                 "     when 2 then '女' " +
 | 
	
		
			
				|  |  |                 "     end AS sex, " +
 | 
	
		
			
				|  |  |                 "     TIMESTAMPDIFF(year,p.birthday,NOW()) AS age  ";
 | 
	
		
			
				|  |  |         String filters = "from base_care_prescription a" +
 | 
	
		
			
				|  |  |                 " LEFT JOIN base_patient p ON a.patient = p.id," +
 | 
	
		
			
				|  |  |                 "         base_service_package_sign_record sr,base_service_package_record r,base_service_package pack," +
 | 
	
		
			
				|  |  |                 "         base_team_member m " +
 | 
	
		
			
				|  |  |                 "         WHERE  sr.id = r.sign_id and sr.patient = a.patient and r.service_package_id = pack.id " +
 | 
	
		
			
				|  |  |                 "         and m.team_code = r.team_code  and m.doctor_code = '"+doctorCode+"' ";
 | 
	
		
			
				|  |  |         if(status != null){
 | 
	
		
			
				|  |  |             filters += " and a.status = "+status;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         int start = 0 == page ? page++ : (page - 1) * size;
 | 
	
		
			
				|  |  |         int end = 0 == size ? 15 : size;
 | 
	
		
			
				|  |  |         String limit = " order by a.create_time desc limit "+start+","+end;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String countSql = "SELECT count(distinct a.id) ";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             sqlResultlist = jdbcTemplate.query(sql+filters+limit,new BeanPropertyRowMapper(BaseCarePrescriptionDO.class));
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
		
			
				|  |  |             result.put(ResponseContant.resultFlag, ResponseContant.fail);
 | 
	
		
			
				|  |  |             result.put(ResponseContant.resultMsg, "从数据库查询列表信息失败");
 | 
	
		
			
				|  |  |             return result;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         Long count;
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             count = jdbcTemplate.queryForObject(countSql+filters, Long.class);
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             result.put(ResponseContant.resultFlag, ResponseContant.fail);
 | 
	
		
			
				|  |  |             result.put(ResponseContant.resultMsg, "从数据库统计数量失败" );
 | 
	
		
			
				|  |  |             return result;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         result.put(ResponseContant.resultFlag, ResponseContant.success);
 | 
	
		
			
				|  |  |         result.put(ResponseContant.resultMsg, sqlResultlist);
 | 
	
		
			
				|  |  |         JSONObject countItem = new JSONObject();
 | 
	
		
			
				|  |  |         countItem.put("count", count);
 | 
	
		
			
				|  |  |         result.putAll(countItem);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return result;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 居民端列表查询
 | 
	
		
			
				|  |  |      * @param patientId
 | 
	
		
			
				|  |  |      * @param status
 | 
	
		
			
				|  |  |      * @param page
 | 
	
		
			
				|  |  |      * @param size
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject queryPatientList(String patientId, Integer status, int page, int size) {
 | 
	
		
			
				|  |  |         JSONObject result = new JSONObject();
 | 
	
		
			
				|  |  |         List<BaseCarePrescriptionDO> sqlResultlist;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String sql = "select * from base_care_prescription  ";
 | 
	
		
			
				|  |  |         String filters = " where patient = '"+patientId+"' ";
 | 
	
		
			
				|  |  |         if(status != null){
 | 
	
		
			
				|  |  |             filters += " and status = "+status;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         int start = 0 == page ? page++ : (page - 1) * size;
 | 
	
		
			
				|  |  |         int end = 0 == size ? 15 : size;
 | 
	
		
			
				|  |  |         String limit = " order by create_time desc limit "+start+","+end;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String countSql = "SELECT count(id) from base_care_prescription ";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             sqlResultlist = jdbcTemplate.query(sql+filters+limit,new BeanPropertyRowMapper(BaseCarePrescriptionDO.class));
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             result.put(ResponseContant.resultFlag, ResponseContant.fail);
 | 
	
		
			
				|  |  |             result.put(ResponseContant.resultMsg, "从数据库查询列表信息失败");
 | 
	
		
			
				|  |  |             return result;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         Long count;
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             count = jdbcTemplate.queryForObject(countSql+filters, Long.class);
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             result.put(ResponseContant.resultFlag, ResponseContant.fail);
 | 
	
		
			
				|  |  |             result.put(ResponseContant.resultMsg, "从数据库统计数量失败" );
 | 
	
		
			
				|  |  |             return result;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         result.put(ResponseContant.resultFlag, ResponseContant.success);
 | 
	
		
			
				|  |  |         result.put(ResponseContant.resultMsg, sqlResultlist);
 | 
	
		
			
				|  |  |         JSONObject countItem = new JSONObject();
 | 
	
		
			
				|  |  |         countItem.put("count", count);
 | 
	
		
			
				|  |  |         result.putAll(countItem);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return result;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 申请续方
 | 
	
		
			
				|  |  |      * @param patient
 | 
	
		
			
				|  |  |      * @param applyImgs
 | 
	
		
			
				|  |  |      * @param applyContent
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public BaseCarePrescriptionDO applyPrescription(String patient,String applyImgs,String applyContent){
 | 
	
		
			
				|  |  |         BaseCarePrescriptionDO prescriptionDO = new BaseCarePrescriptionDO();
 | 
	
		
			
				|  |  |         prescriptionDO.setApplyImgs(applyImgs);
 | 
	
		
			
				|  |  |         prescriptionDO.setApplyContent(applyContent);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         BasePatientDO patientDO = patientDao.findById(patient);
 | 
	
		
			
				|  |  |         prescriptionDO.setPatient(patient);
 | 
	
		
			
				|  |  |         prescriptionDO.setPatientName(patientDO.getName());
 | 
	
		
			
				|  |  |         prescriptionDO.setStatus(1);
 | 
	
		
			
				|  |  |         carePrescriptionDao.save(prescriptionDO);
 | 
	
		
			
				|  |  |         return prescriptionDO;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 医生处理续方
 | 
	
		
			
				|  |  |      * @param id
 | 
	
		
			
				|  |  |      * @param dealImgs
 | 
	
		
			
				|  |  |      * @param dealContent
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public String dealPrescription(String id,String dealImgs,String dealContent,String doctor){
 | 
	
		
			
				|  |  |         String result = "";
 | 
	
		
			
				|  |  |         BaseCarePrescriptionDO prescriptionDO = carePrescriptionDao.findOne(id);
 | 
	
		
			
				|  |  |         if(2 == prescriptionDO.getStatus()){
 | 
	
		
			
				|  |  |             return "请勿重复处理";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         prescriptionDO.setDealContent(dealContent);
 | 
	
		
			
				|  |  |         prescriptionDO.setDealImgs(dealImgs);
 | 
	
		
			
				|  |  |         prescriptionDO.setStatus(2);
 | 
	
		
			
				|  |  |         prescriptionDO.setDoctor(doctor);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         BaseDoctorDO doctorDO = doctorDao.findById(doctor);
 | 
	
		
			
				|  |  |         prescriptionDO.setDoctorName(doctorDO.getName());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         carePrescriptionDao.save(prescriptionDO);
 | 
	
		
			
				|  |  |         return result;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 |