|  | @ -0,0 +1,148 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.doctor.service;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.fasterxml.jackson.databind.ObjectMapper;
 | 
	
		
			
				|  |  | import com.yihu.jw.doctor.dao.BaseDoctorDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.doctor.dao.BaseDoctorSuggestDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.doctor.dao.DoctorSpecialDiseaseDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.doctor.BaseDoctorSuggestDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.doctor.DoctorSpecialDiseaseDo;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.patient.BasePatientDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.patient.dao.BasePatientDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.restmodel.web.MixEnvelop;
 | 
	
		
			
				|  |  | import com.yihu.jw.utils.hibernate.HibenateUtils;
 | 
	
		
			
				|  |  | import com.yihu.mysql.query.BaseJpaService;
 | 
	
		
			
				|  |  | import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Value;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import java.util.Date;
 | 
	
		
			
				|  |  | import java.util.List;
 | 
	
		
			
				|  |  | import java.util.Map;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | @Service
 | 
	
		
			
				|  |  | public class BaseDoctorSuggestService  extends BaseJpaService<BaseDoctorSuggestDO, BaseDoctorSuggestDao> {
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private BaseDoctorDao baseDoctorDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private HibenateUtils hibenateUtils;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private BasePatientDao basePatientDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private ObjectMapper objectMapper;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private BaseDoctorSuggestDao baseDoctorSuggestDao;
 | 
	
		
			
				|  |  |     @Value("${wechat.id}")
 | 
	
		
			
				|  |  |     private String wxId;
 | 
	
		
			
				|  |  |     @Value("${wechat.flag}")
 | 
	
		
			
				|  |  |     private boolean flag;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public void saveDoctorSuggest(String json) throws  Exception{
 | 
	
		
			
				|  |  |         BaseDoctorSuggestDO baseDoctorSuggestDO=objectMapper.readValue(json,BaseDoctorSuggestDO.class);
 | 
	
		
			
				|  |  |         baseDoctorSuggestDO.setCreateTime(new Date());
 | 
	
		
			
				|  |  |         baseDoctorSuggestDO.setIsDel("1");
 | 
	
		
			
				|  |  |         BasePatientDO basePatientDO=basePatientDao.findById(baseDoctorSuggestDO.getCreateUser());
 | 
	
		
			
				|  |  |         if (basePatientDO!=null){
 | 
	
		
			
				|  |  |             baseDoctorSuggestDO.setCreateUserName(basePatientDO.getName());
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         BaseDoctorDO baseDoctorDO=baseDoctorDao.findById(baseDoctorSuggestDO.getDoctor());
 | 
	
		
			
				|  |  |         if (baseDoctorDO!=null){
 | 
	
		
			
				|  |  |             baseDoctorSuggestDO.setDoctorName(baseDoctorDO.getName());
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         List<WlyyHospitalSysDictDO> list =wlyyHospitalSysDictDao.findByDictName("doctorSuggestType");
 | 
	
		
			
				|  |  |         for (WlyyHospitalSysDictDO wlyyHospitalSysDictDO:list){
 | 
	
		
			
				|  |  |             if (baseDoctorSuggestDO.getSuggestType().equalsIgnoreCase(wlyyHospitalSysDictDO.getDictCode())){
 | 
	
		
			
				|  |  |                 baseDoctorSuggestDO.setSuggestName(wlyyHospitalSysDictDO.getDictValue());
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         baseDoctorSuggestDao.save(baseDoctorSuggestDO);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  |     public MixEnvelop findDoctorSuggest(String doctor,String patient,String doctorName,String patientName,String startTime,String endTime,
 | 
	
		
			
				|  |  |                                         String suggestType,String relationType,String keyWord,Integer page,Integer pageSize){
 | 
	
		
			
				|  |  |         MixEnvelop mixEnvelop = new MixEnvelop();
 | 
	
		
			
				|  |  |         String sql = "select t.id as \"id\"," +
 | 
	
		
			
				|  |  |                 "t.suggest_type as \"suggestType\"," +
 | 
	
		
			
				|  |  |                 "t.suggest_name as \"suggestName\"," +
 | 
	
		
			
				|  |  |                 "t.suggest_content as \"suggestContent\"," +
 | 
	
		
			
				|  |  |                 "t.relation_code as \"relationCode\"," +
 | 
	
		
			
				|  |  |                 "t.relation_type as \"relationType\"," ;
 | 
	
		
			
				|  |  |         if("xm_ykyy_wx".equals(wxId)){
 | 
	
		
			
				|  |  |             if (flag){
 | 
	
		
			
				|  |  |                 sql+="date_format(t.create_time, '%Y-%m-%d %H:%i:%s')  as \"createTime\",";
 | 
	
		
			
				|  |  |             }else {
 | 
	
		
			
				|  |  |                 sql+="  to_char(t.create_time,'yyyy-MM-dd HH24:mi:ss') as \"createTime\",";
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }else{
 | 
	
		
			
				|  |  |             sql+="date_format(t.create_time, '%Y-%m-%d %H:%i:%s')  as \"createTime\",";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         sql+= "t.create_user as \"createUser\"," +
 | 
	
		
			
				|  |  |                 "t.create_user_name as \"createUserName\"," +
 | 
	
		
			
				|  |  |                 "t.doctor as \"doctor\"," +
 | 
	
		
			
				|  |  |                 "t.doctor_name as \"doctorName\"," +
 | 
	
		
			
				|  |  |                 "t.is_del as \"isDel\"," +
 | 
	
		
			
				|  |  |                 "t.img_url as \"imgUrl\"" +
 | 
	
		
			
				|  |  |                 "from base_doctor_suggest t where t.is_del ='1'";
 | 
	
		
			
				|  |  |         if (StringUtils.isNoneBlank(doctor)){
 | 
	
		
			
				|  |  |             sql+=" and t.doctor='"+doctor+"'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (StringUtils.isNoneBlank(patient)){
 | 
	
		
			
				|  |  |             sql+=" and t.create_user='"+patient+"'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (StringUtils.isNoneBlank(doctorName)){
 | 
	
		
			
				|  |  |             sql+=" and t.doctor_name like '%"+doctorName+"%'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (StringUtils.isNoneBlank(patientName)){
 | 
	
		
			
				|  |  |             sql+=" and t.create_user_name like '%"+patientName+"%'";
 | 
	
		
			
				|  |  |         }if (StringUtils.isNoneBlank(suggestType)){
 | 
	
		
			
				|  |  |             sql+=" and t.suggest_type='"+suggestType+"'";
 | 
	
		
			
				|  |  |         }if (StringUtils.isNoneBlank(relationType)){
 | 
	
		
			
				|  |  |             sql+=" and t.relation_type='"+relationType+"'";
 | 
	
		
			
				|  |  |         }if (StringUtils.isNoneBlank(keyWord)){
 | 
	
		
			
				|  |  |             sql+=" and t.suggest_content like '%"+keyWord+"%'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(startTime)){
 | 
	
		
			
				|  |  |             if("xm_ykyy_wx".equals(wxId)){
 | 
	
		
			
				|  |  |                 if (flag){
 | 
	
		
			
				|  |  |                     sql+=" and t.create_time > '"+startTime+"'";
 | 
	
		
			
				|  |  |                 }else {
 | 
	
		
			
				|  |  |                     sql+=" and t.create_time > to_date('" + startTime + "', 'yyyy-mm-dd hh24:mi:ss') ";
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }else{
 | 
	
		
			
				|  |  |                 sql+=" and t.create_time > '"+startTime+"'";
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (StringUtils.isNotBlank(endTime)){
 | 
	
		
			
				|  |  |             if("xm_ykyy_wx".equals(wxId)){
 | 
	
		
			
				|  |  |                 if (flag){
 | 
	
		
			
				|  |  |                     sql+="  and t.create_time<='" + endTime + "'";
 | 
	
		
			
				|  |  |                 }else {
 | 
	
		
			
				|  |  |                     sql+="  and t.create_time<= to_date('" + endTime + "','yyyy-mm-dd hh24:mi:ss')";
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }else{
 | 
	
		
			
				|  |  |                 sql+="  and t.create_time<='" + endTime + "'";
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         sql+=" order by t.create_time desc ";
 | 
	
		
			
				|  |  |         List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
 | 
	
		
			
				|  |  |         String sqlcount = "SELECT COUNT(1) AS \"total\" FROM ("+sql+") q";
 | 
	
		
			
				|  |  |         Long count = 0L;
 | 
	
		
			
				|  |  |         List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlcount);
 | 
	
		
			
				|  |  |         if(total!=null){
 | 
	
		
			
				|  |  |             //mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
 | 
	
		
			
				|  |  |             count = hibenateUtils.objTransformLong(total.get(0).get("total"));
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         mixEnvelop.setTotalCount(count.intValue());
 | 
	
		
			
				|  |  |         mixEnvelop.setDetailModelList(list);
 | 
	
		
			
				|  |  |         mixEnvelop.setPageSize(pageSize);
 | 
	
		
			
				|  |  |         mixEnvelop.setCurrPage(page);
 | 
	
		
			
				|  |  |         return mixEnvelop;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  |     public BaseDoctorSuggestDO findById(String id){
 | 
	
		
			
				|  |  |         return baseDoctorSuggestDao.findOne(id);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 |