| 
					
				 | 
			
			
				@ -0,0 +1,157 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.care.service.course; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.care.dao.course.CourseCatalogueDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.care.dao.course.CourseDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.care.dao.course.CourseSalesOrderRecordDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.doctor.dao.BaseDoctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.patient.dao.BasePatientDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.ResponseContant; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.jdbc.core.JdbcTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.HashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import static com.yihu.jw.rm.iot.IotRequestMapping.Common.hospital; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * Created with IntelliJ IDEA. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @Author: yeshijie 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @Date: 2021/5/18 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @Description: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class CourseService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private CourseDao courseDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private CourseCatalogueDao courseCatalogueDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private CourseSalesOrderRecordDao courseSalesOrderRecordDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BasePatientDao patientDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseDoctorDao doctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private JdbcTemplate jdbcTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 顶部状态栏订单各分类总条数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param patient 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Map<String, Integer> topStatusBarNum(String patient) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = "SELECT a.`status`,COUNT(*) num from ( " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "SELECT `status` from base_recruit_students_record  where patient = '"+patient+"' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "UNION ALL " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "SELECT `status` from base_course_sales_order_record where patient = '"+patient+"' ) a " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "GROUP BY a.`status` " ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Integer> map = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //状态 待服务 1、已完成 2 、已取消 -1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        map.put("1",0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        map.put("2",0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        map.put("3",0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        map.put("4",0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        map.put("5",0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int total = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(list.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (Map<String, Object> one:list){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                map.put(String.valueOf(one.get("status")), Integer.valueOf(String.valueOf(one.get("num")))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                total+=Integer.valueOf(String.valueOf(one.get("num"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        map.put("total", total); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject patientOrderList(String patient, Integer status, int page, int size) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject result = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int start = 0 == page ? page++ : (page - 1) * size; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int end = 0 == size ? 15 : size; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        StringBuffer buffer = new StringBuffer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = "SELECT " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  p.name AS patientName, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  p.photo AS photo, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  p.idcard," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  case p.sex  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  when 1 then '男'  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  when 2 then '女' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  end AS sex, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  TIMESTAMPDIFF(year,p.birthday,NOW()) AS age," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  o.id as orderId, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  o.patient_phone as phone, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  o.proxy_patient as proxyPatient, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  o.patient as patient, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  o.number as number, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  o.patient_expected_serve_time as serveTime, o.doctor, o.doctor_name as doctorName, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  o.serve_address as address, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  o.type as type, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  o.serve_lon as lon, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  o.serve_lat as lat, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  o.`status` as status " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " FROM " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " ( base_life_care_order o " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " LEFT JOIN base_patient p ON o.patient = p.id ) "+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " WHERE " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  o.hospital = '{hospital}' and o.type != 3 " +buffer+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " AND ( o.`status` = {status} OR -100 = {status} ) " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " ORDER BY o.create_time desc " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " LIMIT {start},{end};"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String finalSql = sql.replace("{status}", String.valueOf(status)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                .replace("{start}", String.valueOf(start)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                .replace("{end}", String.valueOf(end)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String countSql = "SELECT  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "   count(o.id)  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " FROM  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "   base_life_care_order o  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " LEFT JOIN base_patient p ON o.patient = p.id " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " WHERE  " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  o.hospital = '{hospital}' " +buffer+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " AND (o.`status` = {status} or -100 = {status})"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String finqlCountSql = countSql.replace("{hospital}", hospital) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                .replace("{status}", String.valueOf(status)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> sqlResultlist; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sqlResultlist = jdbcTemplate.queryForList(finalSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultMsg, "从数据库查询生活照料工单列表信息失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Long count; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            count = jdbcTemplate.queryForObject(finqlCountSql, Long.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultFlag, ResponseContant.fail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put(ResponseContant.resultMsg, "从数据库统计生活照料工单数量失败" ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put(ResponseContant.resultFlag, ResponseContant.success); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put(ResponseContant.resultMsg, sqlResultlist); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject countItem = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        countItem.put("count", count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.putAll(countItem); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |