|  | @ -3,12 +3,16 @@ package com.yihu.jw.care.service.statistics;
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.util.ConstantUtil;
 | 
	
		
			
				|  |  | import com.yihu.jw.es.util.ElasticsearchUtil;
 | 
	
		
			
				|  |  | import com.yihu.jw.util.date.DateUtil;
 | 
	
		
			
				|  |  | import org.apache.commons.lang.StringUtils;
 | 
	
		
			
				|  |  | import org.slf4j.Logger;
 | 
	
		
			
				|  |  | import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.jdbc.core.JdbcTemplate;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import java.util.Calendar;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  *
 | 
	
		
			
				|  |  |  * Created by yeshijie on 2021/4/7.
 | 
	
	
		
			
				|  | @ -27,26 +31,111 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 统计首页头部数据
 | 
	
		
			
				|  |  |      * @param area
 | 
	
		
			
				|  |  |      * @param startTime
 | 
	
		
			
				|  |  |      * @param endTime
 | 
	
		
			
				|  |  |      * @param startDate
 | 
	
		
			
				|  |  |      * @param endDate
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject indexTopNum(String area,String startTime,String endTime,String level){
 | 
	
		
			
				|  |  |     public JSONObject indexTopNum(String area,String startDate,String endDate,Integer level){
 | 
	
		
			
				|  |  |         JSONObject re = new JSONObject();
 | 
	
		
			
				|  |  |         String signSql = "select count(s.id) from base_service_package_sign_record s";
 | 
	
		
			
				|  |  |         String capacitySql = "select count(c.id) from base_capacity_assessment_record c";
 | 
	
		
			
				|  |  |         String signSql = " SELECT COUNT(sr.id) " +
 | 
	
		
			
				|  |  |                 " FROM " +
 | 
	
		
			
				|  |  |                 "  base_service_package_sign_record sr, " +
 | 
	
		
			
				|  |  |                 "  base_service_package_record r, " +
 | 
	
		
			
				|  |  |                 "  base_service_package_item i, " +
 | 
	
		
			
				|  |  |                 "   base_org o " +
 | 
	
		
			
				|  |  |                 " WHERE " +
 | 
	
		
			
				|  |  |                 "  sr.id = r.sign_id " +
 | 
	
		
			
				|  |  |                 " AND sr. STATUS = 1 " +
 | 
	
		
			
				|  |  |                 " AND r.service_package_id = i.service_package_id " +
 | 
	
		
			
				|  |  |                 " AND i.del = 1 and i.org_code = o.code";
 | 
	
		
			
				|  |  |         String capacitySql = "select count(sr.id) from base_capacity_assessment_record sr, " +
 | 
	
		
			
				|  |  |                 "   base_org o " +
 | 
	
		
			
				|  |  |                 " WHERE " +
 | 
	
		
			
				|  |  |                 " sr.org_code = o.code" ;
 | 
	
		
			
				|  |  |         String filters = "";
 | 
	
		
			
				|  |  |         if(ConstantUtil.cityLevel.equals(level)){
 | 
	
		
			
				|  |  |             filters = " and o.city_code = '"+area+"'";
 | 
	
		
			
				|  |  |         }else if(ConstantUtil.townLevel.equals(level)){
 | 
	
		
			
				|  |  |             filters = " and o.town_code = '"+area+"'";
 | 
	
		
			
				|  |  |         }else if(ConstantUtil.orgLevel.equals(level)){
 | 
	
		
			
				|  |  |             filters = " and o.code = '"+area+"'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if(StringUtils.isNotBlank(startDate)){
 | 
	
		
			
				|  |  |             filters += " and sr.create_time >='"+startDate+"'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if(StringUtils.isNotBlank(endDate)){
 | 
	
		
			
				|  |  |             filters += " and sr.create_time <='"+endDate+"'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         //签约数 能力评估
 | 
	
		
			
				|  |  |         if(ConstantUtil.CITY.equals(area)){
 | 
	
		
			
				|  |  |             signSql += " where s.status = 1";
 | 
	
		
			
				|  |  |         }else{
 | 
	
		
			
				|  |  |         Integer signNum = jdbcTemplate.queryForObject(signSql+filters,Integer.class);
 | 
	
		
			
				|  |  |         Integer capacityNum = jdbcTemplate.queryForObject(capacitySql+filters,Integer.class);
 | 
	
		
			
				|  |  |         re.put("signNum",signNum);
 | 
	
		
			
				|  |  |         re.put("capacityNum",capacityNum);
 | 
	
		
			
				|  |  |         return re;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 首页 养护服务
 | 
	
		
			
				|  |  |      * @param area
 | 
	
		
			
				|  |  |      * @param startDate
 | 
	
		
			
				|  |  |      * @param endDate
 | 
	
		
			
				|  |  |      * @param level
 | 
	
		
			
				|  |  |      * @param type 类型:1本周,2本月
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject indexMaintenanceServices(String area,String startDate,String endDate,Integer level,int type){
 | 
	
		
			
				|  |  |         JSONObject re = new JSONObject();
 | 
	
		
			
				|  |  |         String sql = "select count(sr.id) from base_life_care_order sr, " +
 | 
	
		
			
				|  |  |                 "   base_org o " +
 | 
	
		
			
				|  |  |                 " WHERE " +
 | 
	
		
			
				|  |  |                 " sr.hospital = o.code" ;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if(ConstantUtil.cityLevel.equals(level)){
 | 
	
		
			
				|  |  |             sql += " and o.city_code = '"+area+"'";
 | 
	
		
			
				|  |  |         }else if(ConstantUtil.townLevel.equals(level)){
 | 
	
		
			
				|  |  |             sql += " and o.town_code = '"+area+"'";
 | 
	
		
			
				|  |  |         }else if(ConstantUtil.orgLevel.equals(level)){
 | 
	
		
			
				|  |  |             sql += " and o.code = '"+area+"'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         String filters = "";
 | 
	
		
			
				|  |  |         String timefilters = "";
 | 
	
		
			
				|  |  |         if(StringUtils.isNotBlank(startDate)){
 | 
	
		
			
				|  |  |             filters += " and sr.create_time >='"+startDate+"'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if(StringUtils.isNotBlank(endDate)){
 | 
	
		
			
				|  |  |             filters += " and sr.create_time <='"+endDate+"'";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         String start = calStart(endDate,type);
 | 
	
		
			
				|  |  |         timefilters += " and sr.create_time >='"+start+"'";
 | 
	
		
			
				|  |  |         timefilters += " and sr.create_time <='"+endDate+"'";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         Integer signNum = jdbcTemplate.queryForObject(signSql,Integer.class);
 | 
	
		
			
				|  |  |         Integer capacityNum = jdbcTemplate.queryForObject(capacitySql,Integer.class);
 | 
	
		
			
				|  |  |         re.put("signNum",signNum);
 | 
	
		
			
				|  |  |         re.put("capacityNum",capacityNum);
 | 
	
		
			
				|  |  |         //生活照料
 | 
	
		
			
				|  |  |         Integer lifeCareNum = jdbcTemplate.queryForObject(sql+filters,Integer.class);
 | 
	
		
			
				|  |  |         Integer lifeCareNumAdd = jdbcTemplate.queryForObject(sql+timefilters,Integer.class);
 | 
	
		
			
				|  |  |         re.put("lifeCareNum",lifeCareNum);
 | 
	
		
			
				|  |  |         re.put("lifeCareNumAdd",lifeCareNumAdd);
 | 
	
		
			
				|  |  |         return re;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 计算开始时间
 | 
	
		
			
				|  |  |      * @param endDate
 | 
	
		
			
				|  |  |      * @param type 1周,2月
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public String calStart(String endDate,int type){
 | 
	
		
			
				|  |  |         if(StringUtils.isEmpty(endDate)){
 | 
	
		
			
				|  |  |             return endDate;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         Calendar cal = Calendar.getInstance();
 | 
	
		
			
				|  |  |         cal.setTime(DateUtil.strToDate(endDate));
 | 
	
		
			
				|  |  |         if(1==type){
 | 
	
		
			
				|  |  |             if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){
 | 
	
		
			
				|  |  |                 cal.add(Calendar.DAY_OF_WEEK,-1);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
 | 
	
		
			
				|  |  |         }else{
 | 
	
		
			
				|  |  |             cal.set(Calendar.DAY_OF_MONTH,1);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return DateUtil.dateToStrShort(cal.getTime());
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 |