| 
					
				 | 
			
			
				@ -10,6 +10,8 @@ import com.yihu.jw.restmodel.hospital.consult.WlyyHospitalSysDictVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.hospital.survey.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.MixEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.common.IdCardUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.common.PercentageUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.utils.EntityUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.utils.StringUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.mysql.query.BaseJpaService; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -473,6 +475,7 @@ public class SurveyService extends BaseJpaService<WlyySurveyQuestionDO, SurveyQu 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<Map<String,Object>> findDeptBySurvey(String tempId){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql ="SELECT " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " d.survey_temp_code AS surveyTempCode," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " d.dept, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " d.dept_name AS deptName " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " FROM " + 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -514,4 +517,184 @@ public class SurveyService extends BaseJpaService<WlyySurveyQuestionDO, SurveyQu 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<WlyySurveyUserAnswerDO> list = surveyUserAnswerDao.findBySurveyTempCodeAndPatient(tempId,patient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return list; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 查询问题情况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param tempId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public WlyySurveyTemplateVO findSurveyTemplateResult(String tempId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        WlyySurveyTemplateDO templateDO = surveyTemplateDao.findOne(tempId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        WlyySurveyTemplateVO templateVO = convertToModel(templateDO,WlyySurveyTemplateVO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        templateVO.setLabels(findSurveyTemplateLabel(tempId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        templateVO.setInsplabels(findSurveyInspTemplateLabel(tempId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //查询所有答题过的用户,计算答题总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<WlyySurveyUserDO> surveyUsers = surveyUserDao.findBySurveyTempCodeAndStatus(templateVO.getId(),1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer total =0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(surveyUsers!=null&&surveyUsers.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            total = surveyUsers.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<WlyySurveyTemplateQuestionDO> tqDOs = surveyTemplateQuestionDao.findByTemplateCodeAndDelOrderBySortAsc(tempId,"1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(tqDOs!=null&&tqDOs.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //设置问题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<WlyySurveyTemplateQuestionVO> tqVOs = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            convertToModels(tqDOs,tqVOs,WlyySurveyTemplateQuestionVO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            templateVO.setTemplateQuestionVOs(tqVOs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //设置选项 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for(WlyySurveyTemplateQuestionVO tq:tqVOs){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<WlyySurveyTemplateOptionDO> optionDOs  = surveyTemplateOptionDao.findByQuestionCodeAndDelOrderBySortAsc(tq.getId(),"1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<WlyySurveyTemplateOptionVO> optionVOs = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                convertToModels(optionDOs,optionVOs,WlyySurveyTemplateOptionVO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 * 统计每个选项选择的百分比 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(optionVOs!=null&&optionVOs.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    for(WlyySurveyTemplateOptionVO vo:optionVOs){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        Integer answerCount =0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        List<WlyySurveyUserAnswerDO> answerDOs = surveyUserAnswerDao.findBytempOptionCode(vo.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if(answerDOs!=null&&answerDOs.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            answerCount = answerDOs.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        vo.setPercentage(PercentageUtil.bs(answerCount,total)+"%"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tq.setOptionVOs(optionVOs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return templateVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 综合查询问题答案 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param comment 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param content 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param tempQuestionCode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param tempOptionCode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public MixEnvelop findQuestionInfoList(String comment, String content, String tempQuestionCode,String tempOptionCode,Integer page,Integer size){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String totalSql ="SELECT " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " COUNT(1) AS total" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " FROM " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " wlyy_survey_user_answer t " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " WHERE 1=1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(comment)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            totalSql += " AND t.comment like '%"+comment+"%' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(content)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            totalSql += " AND t.content  like '%"+content+"%'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(tempQuestionCode)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            totalSql += " AND t.temp_question_code ='"+tempQuestionCode+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(tempOptionCode)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            totalSql += " AND t.temp_option_code ='"+tempOptionCode+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(totalSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Long count = 0L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (rstotal != null && rstotal.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            count = (Long) rstotal.get(0).get("total"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = "SELECT " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.id, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.survey_temp_code AS surveyTempCode, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.temp_question_code AS tempQuestionCode, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.question_type AS questionType, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.temp_option_code AS tempOptionCode, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.comment, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.content, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.patient," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.patient_name AS patientName," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.score," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.create_time AS createTime" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " FROM " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " wlyy_survey_user_answer t "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(comment)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " AND t.comment like '%"+comment+"%' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(content)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " AND t.content  like '%"+content+"%'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(tempQuestionCode)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " AND t.temp_question_code ='"+tempQuestionCode+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(tempOptionCode)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " AND t.temp_option_code ='"+tempOptionCode+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql += " ORDER BY t.create_time DESC LIMIT " + (page - 1) * size + "," + size + " "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<WlyySurveyUserAnswerDO> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(WlyySurveyUserAnswerDO.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return MixEnvelop.getSuccessListWithPage(BaseHospitalRequestMapping.Prescription.api_success, list, page, size, count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 查询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param title 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public MixEnvelop findAnswerList(String title,Integer page,Integer size){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String totalSql ="SELECT " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " COUNT(1) AS total" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " FROM " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " wlyy_survey_user t " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " WHERE 1=1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(title)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            totalSql += " AND t.title like '%"+title+"%' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(totalSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Long count = 0L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (rstotal != null && rstotal.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            count = (Long) rstotal.get(0).get("total"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = "SELECT " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.id, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.survey_temp_code AS surveyTempCode, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.survey_temp_title AS surveyTempTitle, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.patient," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.patient_name AS patientName," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.score," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.dept," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.dept_name AS deptName," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.doctor," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.doctor_name AS doctorName," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.status," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.end_time AS endTime," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.create_time AS createTime," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.idcard" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " FROM " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " wlyy_survey_user t " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " JOIN base_patient p ON t.patient = p.id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " WHERE 1=1 "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(title)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " AND t.title like '%"+title+"%' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql += " ORDER BY t.create_time DESC LIMIT " + (page - 1) * size + "," + size + " "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<WlyySurveyUserVO> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(WlyySurveyUserVO.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(list!=null&&list.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for(WlyySurveyUserVO vo :list){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                vo.setAge(IdCardUtil.getAgeForIdcard(vo.getIdcard())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return MixEnvelop.getSuccessListWithPage(BaseHospitalRequestMapping.Prescription.api_success, list, page, size, count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |