| 
					
				 | 
			
			
				@ -0,0 +1,212 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.complaint; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.databind.ObjectMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.dict.dao.DictHospitalDeptDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.doctor.dao.BaseDoctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.complaint.BaseComplaintDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.complaint.BaseComplaintDictDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.complaint.BaseComplaintDoctorDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.dict.DictHospitalDeptDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.doctor.BaseDoctorDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.MixEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.utils.StringUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.utils.hibernate.HibenateUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class BaseComplaintService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseComplaintDictDao baseComplaintDictDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseComplaintDoctorDao baseComplaintDoctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseDoctorDao baseDoctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseDoctorHospitalDao baseDoctorHospitalDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private HibenateUtils hibenateUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseComplaintDao baseComplaintDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ObjectMapper objectMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private DictHospitalDeptDao dictHospitalDeptDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    //修改新增 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseComplaintDictDO createOrUpdateDict(String id, String name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseComplaintDictDO baseComplaintDictDO = new BaseComplaintDictDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(id)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDictDO = baseComplaintDictDao.findById(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDictDO.setName(name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDictDO.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDictDO.setIsDel("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDictDO.setName(name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDictDO.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return baseComplaintDictDao.save(baseComplaintDictDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    //删除 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseComplaintDictDO deleteDict(String id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null != baseComplaintDictDO) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDictDO.setIsDel("0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDictDO.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDictDao.save(baseComplaintDictDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return baseComplaintDictDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseComplaintDictDO findOneDict(String id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return baseComplaintDictDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    //查询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<BaseComplaintDictDO> findAll(String name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseComplaintDictDO> list = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(name)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            list = baseComplaintDictDao.findByName(name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            list = baseComplaintDictDao.findByAll(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return list; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    //新增投诉管理医生 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseComplaintDoctorDO createOrUpdateComplainDoctor(String id, String complaintId, String doctor, String deptCode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String deptName = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String doctorName = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null != baseDoctorDO) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            doctorName = baseDoctorDO.getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDoctorHospitalDO> baseDoctorHospitalDO = baseDoctorHospitalDao.findByDeptCodeDoctorCode(deptCode, deptCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (baseDoctorHospitalDO != null && baseDoctorHospitalDO.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            deptName = baseDoctorHospitalDO.get(0).getDeptName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseComplaintDoctorDO baseComplaintDoctorDO = new BaseComplaintDoctorDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(id)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDO = baseComplaintDoctorDao.findByDelAndId(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDO.setDept(deptCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDO.setDeptName(deptName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDO.setComplaintId(complaintId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDO.setDoctor(doctor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDO.setDoctorName(doctorName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDO.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDO.setDept(deptCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDO.setDeptName(deptName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDO.setComplaintId(complaintId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDO.setDoctor(doctor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDO.setDoctorName(doctorName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDO.setIsDel("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDO.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return baseComplaintDoctorDao.save(baseComplaintDoctorDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    //删除管理医生 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseComplaintDoctorDO deleteDoctorComplain(String id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseComplaintDoctorDO baseComplaintDoctorDO = baseComplaintDoctorDao.findByDelAndId(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null != baseComplaintDoctorDO) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDO.setIsDel("0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDO.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDoctorDao.save(baseComplaintDoctorDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return baseComplaintDoctorDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public MixEnvelop findComplaintDoctor(String doctorName, String deptName, String complaintType, Integer page, Integer pageSize) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = "select t.id as \"id\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.complaint_id as \"complaintId\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.doctor as \"doctor\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.doctor_name as \"doctorName\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.dept as \"dept\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.dept_name as \"deptName\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.is_del as \"isDel\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.create_time as \"createTime\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.update_time as \"updateTime\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " b.name as \"name\" " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " from base_complaint_doctor t left join base_complaint_dict b" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " on t.complaint_id=b.id where t.is_del='1'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(doctorName)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and t.doctor_name like '%" + doctorName + "%'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(deptName)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and t.dept_name like '%" + deptName + "%'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(complaintType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and t.complaint_id = '" + complaintType + "'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql += "order by t.create_time desc"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, page, pageSize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> listCount = hibenateUtils.createSQLQuery(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        MixEnvelop mixEnvelop = new MixEnvelop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        mixEnvelop.setTotalCount(listCount == null ? 0 : listCount.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        mixEnvelop.setPageSize(pageSize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        mixEnvelop.setCurrPage(page); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        mixEnvelop.setDetailModelList(list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return mixEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseComplaintDoctorDO findOneDoctorComplain(String id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseComplaintDoctorDO baseComplaintDoctorDO = baseComplaintDoctorDao.findByDelAndId(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return baseComplaintDoctorDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 患者举报接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void patiemtComplaint(String json) throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseComplaintDO baseComplaintDO =objectMapper.readValue(json,BaseComplaintDO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(baseComplaintDO.getComplaintId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (baseComplaintDictDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDO.setComplaintName(baseComplaintDictDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(baseComplaintDO.getVisitDept())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            DictHospitalDeptDO dictHospitalDeptDO=dictHospitalDeptDao.findByCode(baseComplaintDO.getVisitDept()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (dictHospitalDeptDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseComplaintDO.setVisitDeptName(dictHospitalDeptDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseComplaintDO.setIsDel("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseComplaintDO.setStatus("0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseComplaintDO.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseComplaintDao.save(baseComplaintDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 医生转交 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void passTo(String id,String complaintId,String doctor,String operator){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseComplaintDO baseComplaintDO = baseComplaintDao.findOne(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String doctorName=""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String complaitTypeName=""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null!=baseComplaintDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (null != baseDoctorDO) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                doctorName=baseDoctorDO.getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseComplaintDO.setAcceptorName(doctorName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDO.setAcceptor(doctor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseComplaintDO.setComplaintId(complaintId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseComplaintDictDO baseComplaintDictDO = baseComplaintDictDao.findById(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (baseComplaintDictDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                complaitTypeName=baseComplaintDictDO.getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseComplaintDO.setComplaintName(complaitTypeName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 |