|  | @ -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);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 |