| 
					
				 | 
			
			
				@ -0,0 +1,192 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.doctor.service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.doctor.dao.BaseDoctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.doctor.dao.DoctorSpecialDiseaseDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.doctor.BaseDoctorDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.doctor.BaseDoctorVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.doctor.DoctorSpecialDiseaseDo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.Envelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.MixEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.utils.hibernate.HibenateUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.mysql.query.BaseJpaService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import net.sf.json.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.collections.map.HashedMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.jdbc.core.JdbcTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class BaseDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDao> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseDoctorDao baseDoctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private DoctorSpecialDiseaseDao specialDiseaseDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private JdbcTemplate jdbcTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private HibenateUtils hibenateUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 查询医生信息分页列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param city 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param hospital 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param pageSize 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop queryList(String city, String hospital, String status, String name, int page, int pageSize){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String,Object> params = new HashedMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sqlTotal ="SELECT " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " COUNT(1) AS \"total\" " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " FROM " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " base_doctor a " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " JOIN base_doctor_hospital b ON a.id = b.doctor_code " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " JOIN wlyy_charge_dict e ON a.charge_type = e.charge_type " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " WHERE " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " 1 = 1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(city)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlTotal += " AND a.city_name =:city"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            params.put("city",city); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(hospital)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlTotal += " AND b.org_code =:hospital"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            params.put("hospital",hospital); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(status)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlTotal += " AND a.del =:status"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            params.put("status",status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(name)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            name = name+"%"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlTotal += " AND b.dept_name like:name"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            params.put("name",name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sqlTotal += " AND e.dept_type_code =:typeCode"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        params.put("typeCode",6); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Long count = 0L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlTotal,params); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(count!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            count = hibenateUtils.objTransformLong(total.get(0).get("total")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql ="SELECT " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " a.id AS \"id\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " a.NAME AS \"name\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " a.introduce AS \"introduce\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " a.expertise AS \"expertise\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " a.outpatient_type AS \"outpatientType\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " a.del AS \"del\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " b.dept_name AS \"deptName\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " e.req_fee AS \"money\" " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " FROM " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " base_doctor a " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " JOIN base_doctor_hospital b ON a.id = b.doctor_code " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " JOIN wlyy_charge_dict e ON a.charge_type = e.charge_type " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " WHERE 1=1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(city)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " AND a.city_name =:city"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(hospital)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " AND b.org_code =:hospital"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(status)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " AND a.del =:status"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotBlank(name)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " AND b.dept_name like:name"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql += " AND e.dept_type_code =:typeCode"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,params,page,pageSize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return MixEnvelop.getSuccessListWithPage(BaseHospitalRequestMapping.Prescription.api_success, list, page, pageSize, count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 根据医生ID,获取医生基础信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param doctorId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<Map<String, Object>> queryById(String doctorId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String,Object> params = new HashedMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql ="SELECT " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " a.NAME AS \"name\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " a.job_title_name AS \"jobTitleName\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " a.introduce AS \"introduce\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " a.expertise AS \"expertise\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " a.outpatient_type AS \"outpatientType\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " b.dept_name AS \"deptName\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " b.org_name AS \"orgName\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " c.mapping_code AS \"jobNumber\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " d.disease_name AS \"diseaseName\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " e.req_fee AS \"money\" " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " FROM " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " base_doctor a " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " JOIN base_doctor_hospital b ON a.id = b.doctor_code " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " JOIN base_doctor_mapping c ON a.id = c.doctor " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " JOIN wlyy_doctor_special_disease d ON a.id = d.doctor_code " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " JOIN wlyy_charge_dict e ON a.charge_type = e.charge_type " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " WHERE 1=1 "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(doctorId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql+=" AND a.id =:id"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            params.put("id",doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql+=" AND e.dept_type_code =:typeCode"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        params.put("typeCode",6); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, params); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return  list; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 修改医生服务配置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param jsonObject 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Boolean update(JSONObject jsonObject)throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //取出数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String doctorId = jsonObject.get("doctorId").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String introduce = jsonObject.get("introduce").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String expertise = jsonObject.get("expertise").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String outpatientType = jsonObject.get("outpatientType").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String newSpecialDisease = jsonObject.get("specialDisease").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //医生简介、擅长不为空 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null == introduce || null == expertise){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseDoctorDao.update(doctorId,introduce,expertise,outpatientType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //删除医生旧专病门诊,保存新专病门诊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<DoctorSpecialDiseaseDo> oldSpecialDisease = specialDiseaseDao.findByDoctorCode(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null != oldSpecialDisease && oldSpecialDisease.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            specialDiseaseDao.deleteByDoctorCode(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        DoctorSpecialDiseaseDo specialDiseaseDo = new DoctorSpecialDiseaseDo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String[] split = newSpecialDisease.split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (String diseaseName : split) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            specialDiseaseDo.setDoctorCode(doctorId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            specialDiseaseDo.setDiseaseName(diseaseName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            specialDiseaseDao.save(specialDiseaseDo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 修改医生状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param doctorId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param status 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void updateStatus(String doctorId,String status)throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseDoctorDao.updateStatus(doctorId,status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |