|
@ -1,8 +1,14 @@
|
|
|
package com.yihu.wlyy.service.app.statisticsES;
|
|
|
|
|
|
import com.yihu.wlyy.config.es.ElasticFactory;
|
|
|
import com.yihu.wlyy.entity.address.Town;
|
|
|
import com.yihu.wlyy.entity.doctor.team.admin.AdminTeam;
|
|
|
import com.yihu.wlyy.entity.organization.Hospital;
|
|
|
import com.yihu.wlyy.entity.patient.prescription.PrescriptionDispensaryCode;
|
|
|
import com.yihu.wlyy.entity.statistics.PopulationBase;
|
|
|
import com.yihu.wlyy.repository.address.TownDao;
|
|
|
import com.yihu.wlyy.repository.doctor.DoctorAdminTeamDao;
|
|
|
import com.yihu.wlyy.repository.organization.HospitalDao;
|
|
|
import com.yihu.wlyy.util.Constant;
|
|
|
import com.yihu.wlyy.util.DateUtil;
|
|
|
import com.yihu.wlyy.util.ElasticsearchUtil;
|
|
@ -21,6 +27,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
@ -36,6 +43,12 @@ public class StatisticsESService {
|
|
|
private ElasticFactory elasticFactory;
|
|
|
@Autowired
|
|
|
JdbcTemplate jdbcTemplate;
|
|
|
@Autowired
|
|
|
DoctorAdminTeamDao adminTeamDao;
|
|
|
@Autowired
|
|
|
HospitalDao hospitalDao;
|
|
|
@Autowired
|
|
|
TownDao townDao;
|
|
|
|
|
|
/**
|
|
|
* 获取上次统计时间
|
|
@ -88,11 +101,11 @@ public class StatisticsESService {
|
|
|
StringBuffer sql = new StringBuffer();
|
|
|
StringBuffer groupBy = new StringBuffer();
|
|
|
if (SaveModel.teamLevel.equals(level+"")) {
|
|
|
sql.append("select team,teamName,sum(result1) result1, sum(result2) result2 from wlyy_quota_test where team='" + area + "'");
|
|
|
groupBy.append(" group by team,teamName");
|
|
|
sql.append("select team,teamName,sum(result1) result1, sum(result2) result2 from wlyy_quota_test where team='" + area + "'");
|
|
|
groupBy.append(" group by team,teamName");
|
|
|
} else if (SaveModel.OrgLevel.equals(level+"")) {
|
|
|
sql.append("select hospital,hospitalName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where hospital='" + area + "'");
|
|
|
groupBy.append(" group by hospital");
|
|
|
groupBy.append(" group by hospital,hospitalName");
|
|
|
} else if (SaveModel.townLevel.equals(level+"")) {
|
|
|
sql.append("select town,townName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where town='" + area + "'");
|
|
|
groupBy.append(" group by town,townName");
|
|
@ -352,17 +365,43 @@ public class StatisticsESService {
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONArray getDateIncrementDetail(String startDate, String endDate, String interval, String area, int level, String index, String level2_type) throws Exception {
|
|
|
List<SaveModel> list = findOneDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,interval,null);
|
|
|
startDate = changeDate(startDate);
|
|
|
endDate = changeDate(endDate);
|
|
|
List<SaveModel> list = null;
|
|
|
if(StringUtils.isNotEmpty(level2_type)) {
|
|
|
|
|
|
list = findOneDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,interval,null);
|
|
|
}else{
|
|
|
list = findOneDateQuotaLevel0(startDate,endDate,area,level,index,"1",interval,null);
|
|
|
}
|
|
|
List<JSONObject> result = new ArrayList<>();
|
|
|
for (SaveModel saveModel:list){
|
|
|
JSONObject range = new JSONObject();
|
|
|
range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(),"yyyy-MM-dd HH:mm:ss"));
|
|
|
range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(),"yyyy-MM-dd"));
|
|
|
range.put("amount", saveModel.getResult2());
|
|
|
result.add(range);
|
|
|
}
|
|
|
|
|
|
return new JSONArray(result);
|
|
|
}
|
|
|
/**
|
|
|
* 获取某个指标在某个期间的增长量
|
|
|
*
|
|
|
* @param startDate 起始时间
|
|
|
* @param endDate 结束时间
|
|
|
* @param area 区域或机构代码
|
|
|
* @param level 级别
|
|
|
* @return
|
|
|
*/
|
|
|
public long getIntervalIncrement(String startDate, String endDate, String area, int level, String index) throws Exception {
|
|
|
startDate = changeDate(startDate);
|
|
|
endDate = changeDate(endDate);
|
|
|
List<SaveModel> list = findOneDateQuotaLevel0(startDate,endDate,area,level,index,"1",null,null);
|
|
|
if(list.size()>0){
|
|
|
return list.get(0).getResult2();
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
// /**
|
|
|
// * 按日统计
|
|
@ -445,8 +484,14 @@ public class StatisticsESService {
|
|
|
|
|
|
startDate = changeDate(startDate);
|
|
|
endDate = changeDate(endDate);
|
|
|
List<SaveModel> list = null;
|
|
|
if(StringUtils.isNotEmpty(level2_type)){
|
|
|
|
|
|
List<SaveModel> list = findOneDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,null);
|
|
|
list = findOneDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,null);
|
|
|
}else{
|
|
|
list = findOneDateQuotaLevel0(startDate,endDate,area,level,index,"1",null,null);
|
|
|
}
|
|
|
// List<SaveModel> list = findOneDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,null);
|
|
|
if(list.size()>0){
|
|
|
return list.get(0).getResult2();
|
|
|
}
|
|
@ -478,7 +523,15 @@ public class StatisticsESService {
|
|
|
if(StringUtils.isNotEmpty(lowLevel)){
|
|
|
levelTemp = lowLevel;
|
|
|
}
|
|
|
List<SaveModel> list = findOneDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,lowLevel);
|
|
|
List<SaveModel> list = null;
|
|
|
// if(StringUtils.isNotEmpty(level2_type)){
|
|
|
//
|
|
|
// list = findOneDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,lowLevel);
|
|
|
// }else{
|
|
|
// list = findOneDateQuotaLevel0(startDate,endDate,area,level,index,"1",null,lowLevel);
|
|
|
// }
|
|
|
list = lowLevel(startDate,endDate,area,level, index,"1",lowLevel,level2_type);
|
|
|
// List<SaveModel> list = findOneDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,lowLevel);
|
|
|
if (org.springframework.util.StringUtils.isEmpty(year)) {
|
|
|
year = Constant.getNowYear();
|
|
|
}
|
|
@ -523,33 +576,99 @@ public class StatisticsESService {
|
|
|
return new JSONArray(resultList);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询截止某个日期某个区域后机构各下级指标累计情况
|
|
|
*
|
|
|
* @param endDate 截止日期
|
|
|
* @param area 区域或机构代码
|
|
|
* @param level 级别
|
|
|
* @return
|
|
|
*/
|
|
|
public List lowLevel(String startDate,String endDate, String area, int level, String index,String timeLevel,String lowLevel,String slaveKey1){
|
|
|
StringBuffer sql = new StringBuffer();
|
|
|
StringBuffer groupBy = new StringBuffer();
|
|
|
String lowLevelField = "";
|
|
|
if(SaveModel.cityLevel.equals(level+"")){
|
|
|
lowLevelField=SaveModel.townLevel;
|
|
|
}else if(SaveModel.townLevel.equals(level+"")){
|
|
|
lowLevelField=SaveModel.OrgLevel;
|
|
|
}else if(SaveModel.OrgLevel.equals(level+"")){
|
|
|
lowLevelField=SaveModel.teamLevel;
|
|
|
}else{
|
|
|
lowLevelField=SaveModel.teamLevel;
|
|
|
}
|
|
|
if (SaveModel.teamLevel.equals(lowLevelField)) {
|
|
|
sql.append("select team,teamName,sum(result1) result1, sum(result2) result2 from wlyy_quota_test where ");
|
|
|
groupBy.append(" group by team,teamName");
|
|
|
} else if (SaveModel.OrgLevel.equals(lowLevelField)) {
|
|
|
sql.append("select hospital,hospitalName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where ");
|
|
|
groupBy.append(" group by hospital");
|
|
|
} else if (SaveModel.townLevel.equals(lowLevelField)) {
|
|
|
sql.append("select town,townName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where ");
|
|
|
groupBy.append(" group by town,townName");
|
|
|
} else if (SaveModel.cityLevel.equals(lowLevelField)) {
|
|
|
sql.append("select city,cityName,sum(result1) result1,sum(result2) result2 from wlyy_quota_test where ");
|
|
|
groupBy.append(" group by city,cityName");
|
|
|
}
|
|
|
sql.append(" quotaCode in("+index+") ");
|
|
|
sql.append(" and timeLevel='"+timeLevel+"' ");
|
|
|
sql.append(" and areaLevel='5'");
|
|
|
if(StringUtils.isNotEmpty(startDate)){
|
|
|
sql.append(" and quotaDate>='" + startDate + "'");
|
|
|
}
|
|
|
if(StringUtils.isNotEmpty(endDate)){
|
|
|
sql.append(" and quotaDate<='" + endDate + "'");
|
|
|
}
|
|
|
if(StringUtils.isNotEmpty(slaveKey1)){
|
|
|
sql.append(" and slaveKey1='"+slaveKey1+"' ");
|
|
|
}
|
|
|
|
|
|
if(StringUtils.isNotEmpty(lowLevel)){
|
|
|
|
|
|
if (SaveModel.teamLevel.equals(lowLevel)) {
|
|
|
sql.append(" and team='" + area + "'");
|
|
|
} else if (SaveModel.OrgLevel.equals(lowLevel)) {
|
|
|
sql.append(" and hospital='" + area + "'");
|
|
|
} else if (SaveModel.townLevel.equals(lowLevel)) {
|
|
|
sql.append(" and town='" + area + "'");
|
|
|
} else if (SaveModel.cityLevel.equals(lowLevel)) {
|
|
|
sql.append(" and city='" + area + "'");
|
|
|
}
|
|
|
}
|
|
|
sql.append(groupBy);
|
|
|
|
|
|
return elasticsearchUtil.excute(sql.toString(),SaveModel.class,"","");
|
|
|
}
|
|
|
|
|
|
|
|
|
public JSONArray getIndexLevelTwototal(String endDate, String area, int level, String index) throws Exception{
|
|
|
|
|
|
// List<SaveModel> list =findOneDateQuotaLevel2(endDate, area, level, index,"1","");
|
|
|
List<SaveModel> list = findOneDateQuotaLevel1(endDate,endDate,area,level,index,"1",null,null,null);
|
|
|
endDate = changeDate(endDate);
|
|
|
List<SaveModel> list = findOneDateQuotaLevel1(endDate,endDate,area,level,index,"2",null,null,null);
|
|
|
List<Map<String, Object>> resultList = new ArrayList<>();
|
|
|
DecimalFormat df = new DecimalFormat("0.0000");
|
|
|
long total = 0;
|
|
|
for (SaveModel saveModel:list) {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
if (SaveModel.OrgLevel.equals(level+"")) {
|
|
|
map.put("code",saveModel.getHospital());
|
|
|
map.put("name",saveModel.getHospitalName());
|
|
|
} else if (SaveModel.townLevel.equals(level+"")) {
|
|
|
map.put("code",saveModel.getTown());
|
|
|
map.put("name",saveModel.getTownName());
|
|
|
} else if (SaveModel.cityLevel.equals(level+"")) {
|
|
|
map.put("code",saveModel.getCity());
|
|
|
map.put("name",saveModel.getCityName());
|
|
|
} else if (SaveModel.teamLevel.equals(level+"")) {
|
|
|
map.put("code",saveModel.getTeam());
|
|
|
map.put("name",saveModel.getCityName());
|
|
|
}
|
|
|
// if (SaveModel.OrgLevel.equals(level+"")) {
|
|
|
// map.put("code",saveModel.getHospital());
|
|
|
// map.put("name",saveModel.getHospitalName());
|
|
|
// } else if (SaveModel.townLevel.equals(level+"")) {
|
|
|
// map.put("code",saveModel.getTown());
|
|
|
// map.put("name",saveModel.getTownName());
|
|
|
// } else if (SaveModel.cityLevel.equals(level+"")) {
|
|
|
// map.put("code",saveModel.getCity());
|
|
|
// map.put("name",saveModel.getCityName());
|
|
|
// } else if (SaveModel.teamLevel.equals(level+"")) {
|
|
|
// map.put("code",saveModel.getTeam());
|
|
|
// map.put("name",saveModel.getCityName());
|
|
|
// }
|
|
|
// map.put("amount",saveModel.getResult2());
|
|
|
// map.put("rate",df.format((saveModel.getResult2() * 1.0000) / populationBase.getNum() * 100));
|
|
|
// map.put("rateString",saveModel.getResult2()+"/"+populationBase.getNum());
|
|
|
|
|
|
map.put("code",saveModel.getSlaveKey1());
|
|
|
map.put("name",saveModel.getSlaveKey1Name());
|
|
|
map.put("amount", saveModel.getResult2());
|
|
|
if (index.equals("7")) {
|
|
|
// 分组指标总数算法
|
|
@ -585,7 +704,7 @@ public class StatisticsESService {
|
|
|
}
|
|
|
}else{
|
|
|
for (Map<String, Object> map:resultList) {
|
|
|
double rateG = (total > 0 ? ((long) map.get("amount")) * 1.0000 / total * 100 : 0);
|
|
|
double rateG = (total > 0 ? ((int) map.get("amount")) * 1.0000 / total * 100 : 0);
|
|
|
map.put("rate", df.format(rateG));
|
|
|
map.put("rateString", ((int) map.get("amount")) + "/" + total);
|
|
|
}
|
|
@ -650,17 +769,17 @@ public class StatisticsESService {
|
|
|
* @param level 级别
|
|
|
* @return
|
|
|
*/
|
|
|
public long getWeiJiaoFei(String endDate, String area, int level) {
|
|
|
public long getWeiJiaoFei(String endDate, String area, int level) throws Exception{
|
|
|
|
|
|
// List<SaveModel> list = findOneDateQuotaLevel2(endDate,area,level,"16","2","0");
|
|
|
// if(list.size()>0){
|
|
|
// return list.get(0).getResult2();
|
|
|
// }
|
|
|
List<SaveModel> list = findOneDateQuotaLevel1(endDate,endDate,area,level,"16","2","0",null,null);
|
|
|
if(list.size()>0){
|
|
|
return list.get(0).getResult2();
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
|
|
|
public JSONObject getRenewPercent(String level, String area, String year) {
|
|
|
public JSONObject getRenewPercent(String level, String area, String year) throws Exception {
|
|
|
|
|
|
String renewIndex = "";
|
|
|
if ("1".equals(level)) {
|
|
@ -676,14 +795,409 @@ public class StatisticsESService {
|
|
|
//市的续签量
|
|
|
renewIndex = "29";
|
|
|
}
|
|
|
String timeKey = getTime();
|
|
|
List<SaveModel> list = findOneDateQuotaLevel0(timeKey,timeKey,area,Integer.parseInt(level),renewIndex,"2",null,null);
|
|
|
int renewNum = 0;
|
|
|
if(list.size()>0){
|
|
|
renewNum = list.get(0).getResult2();
|
|
|
}
|
|
|
//根据年度获取去年的签约数 签约指标是1
|
|
|
String date = changeDate(year + "-06-30");
|
|
|
String index = "1";
|
|
|
List<SaveModel> list2 = findOneDateQuotaLevel0(date,date,area,Integer.parseInt(level),index,"2",null,null);
|
|
|
int signNum = 0;
|
|
|
if (list2.size()>0) {
|
|
|
signNum = list2.get(0).getResult2();
|
|
|
}
|
|
|
JSONObject jo = new JSONObject();
|
|
|
jo.put("yesterYearSign", signNum);//去年的签约量
|
|
|
jo.put("thisYearRenew", renewNum);//今年的续签量
|
|
|
jo.put("renewRange", getRange(renewNum, signNum, 2));//续签率 50.00%
|
|
|
return jo;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询截止某个日期累计签约率
|
|
|
*
|
|
|
* @param endDate 截止日期
|
|
|
* @param area 区域或机构代码
|
|
|
* @param level 级别
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject getSignRate(String endDate, String area, int level, String year) throws Exception {
|
|
|
|
|
|
long signAmount = 0;
|
|
|
List<SaveModel> list = findOneDateQuotaLevel0(endDate,endDate,area,level,"13","2",null,null);
|
|
|
if(list.size()>0){
|
|
|
signAmount = list.get(0).getResult2();
|
|
|
}
|
|
|
PopulationBase peopleNum = getPopulationBase(area, year);
|
|
|
JSONObject json = new JSONObject();
|
|
|
DecimalFormat df = new DecimalFormat("0.0000");
|
|
|
if (peopleNum != null && peopleNum.getNum() > 0) {
|
|
|
json.put("rate", df.format((signAmount * 1.0000) / peopleNum.getNum() * 100));
|
|
|
json.put("rateString", signAmount + "/" + peopleNum.getNum());
|
|
|
json.put("sign", signAmount);
|
|
|
json.put("people", peopleNum.getNum());
|
|
|
} else {
|
|
|
json.put("rate", "0.0000");
|
|
|
json.put("rateString", "0/0");
|
|
|
json.put("sign", signAmount);
|
|
|
json.put("people", 0);
|
|
|
}
|
|
|
return json;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询截止某个日期签约完成率
|
|
|
*
|
|
|
* @param endDate 截止日期
|
|
|
* @param area 区域或机构代码
|
|
|
* @param level 级别
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject getSignTaskRate(String endDate, String area, int level, String year) throws Exception {
|
|
|
endDate = changeDate(endDate);
|
|
|
List<SaveModel> list = findOneDateQuotaLevel0(endDate,endDate,area,level,"13","2",null,null);
|
|
|
long signAmount = 0;
|
|
|
if(list.size()>0){
|
|
|
signAmount = list.get(0).getResult2();
|
|
|
}
|
|
|
PopulationBase peopleNum = getPopulationBase(area, year);
|
|
|
DecimalFormat df = new DecimalFormat("0.0000");
|
|
|
JSONObject json = new JSONObject();
|
|
|
if (peopleNum != null && peopleNum.getTaskNum() > 0) {
|
|
|
json.put("rate", df.format((signAmount * 1.0000) / peopleNum.getTaskNum() * 100));
|
|
|
json.put("rateString", signAmount + "/" + peopleNum.getTaskNum());
|
|
|
json.put("sign", signAmount);
|
|
|
json.put("people", peopleNum.getTaskNum());
|
|
|
} else {
|
|
|
json.put("rate", "0.0000");
|
|
|
json.put("rateString", "0/0");
|
|
|
json.put("sign", signAmount);
|
|
|
json.put("people", 0);
|
|
|
}
|
|
|
return json;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取签约分组信息
|
|
|
*
|
|
|
* @param endDate
|
|
|
* @param lowCode
|
|
|
* @param area
|
|
|
* @param level
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject getGroupInfo(String endDate, String lowCode, String area, int level, String year) throws Exception {
|
|
|
endDate = changeDate(endDate);
|
|
|
List<SaveModel> list = findOneDateQuotaLevel1(endDate,endDate,area,level,"17","2",lowCode,null,null);
|
|
|
long total = 0;
|
|
|
if(list.size()>0){
|
|
|
total = list.get(0).getResult2();
|
|
|
}
|
|
|
int num = 0;
|
|
|
int taskNum = 0;
|
|
|
PopulationBase peopleNum = getPopulationBase(area, year);
|
|
|
if (peopleNum != null) {
|
|
|
if (lowCode.equals("3")) {
|
|
|
num = peopleNum.getSixFiveNum();
|
|
|
taskNum = peopleNum.getSixFiveTaskNum();
|
|
|
} else if (lowCode.equals("1")) {
|
|
|
num = peopleNum.getGxyNum();
|
|
|
taskNum = peopleNum.getGxyTaskNum();
|
|
|
} else if (lowCode.equals("2")) {
|
|
|
num = peopleNum.getTnbNum();
|
|
|
taskNum = peopleNum.getTnbTaskNum();
|
|
|
}
|
|
|
}
|
|
|
JSONObject json = new JSONObject();
|
|
|
DecimalFormat df = new DecimalFormat("0.0000");
|
|
|
json.put("sign", total);
|
|
|
JSONObject signRate = new JSONObject();
|
|
|
signRate.put("sign", total);
|
|
|
signRate.put("people", num);
|
|
|
signRate.put("rate", df.format((total * 1.0000) / num * 100));
|
|
|
signRate.put("rateString", total + "/" + num);
|
|
|
json.put("signRate", signRate);
|
|
|
JSONObject signTaskRate = new JSONObject();
|
|
|
signTaskRate.put("sign", total);
|
|
|
signTaskRate.put("people", taskNum);
|
|
|
signTaskRate.put("rate", df.format((total * 1.0000) / taskNum * 100));
|
|
|
signTaskRate.put("rateString", total + "/" + taskNum);
|
|
|
json.put("signTaskRate", signTaskRate);
|
|
|
return json;
|
|
|
}
|
|
|
|
|
|
//获取最新更新的时间
|
|
|
public String getTime(){
|
|
|
|
|
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
Date today = new Date();
|
|
|
String todayString = simpleDateFormat.format(today);
|
|
|
todayString = changeDate(todayString);
|
|
|
// List<SaveModel> list = findOneDateQuotaLevel1(todayString,area,Integer.parseInt(level),renewIndex,"2",null,null);
|
|
|
return todayString;
|
|
|
}
|
|
|
/**
|
|
|
* 获取2个数的百分比
|
|
|
*
|
|
|
* @param first
|
|
|
* @param second
|
|
|
* @param i
|
|
|
* @return
|
|
|
*/
|
|
|
public String getRange(int first, int second, int i) {
|
|
|
if (second == 0 && first > 0) {
|
|
|
return "100%";
|
|
|
} else if (second == 0 && first == 0) {
|
|
|
return "0%";
|
|
|
}
|
|
|
float size = (float) (first * 100) / second;
|
|
|
DecimalFormat df = new DecimalFormat("0.00");//格式化小数,不足的补0
|
|
|
String filesize = df.format(size);
|
|
|
return filesize + "%";
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 统计65以上人群数据
|
|
|
*
|
|
|
* @param endDate
|
|
|
* @param area
|
|
|
* @param level
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONArray getSixFiveStatistics(String endDate, String area, int level) throws Exception{
|
|
|
endDate = changeDate(endDate);
|
|
|
List<SaveModel> list = findOneDateQuotaLevel2(endDate,endDate,area,level,"12","2","6",null,null,null);
|
|
|
List<Map<String, Object>> resultList = new ArrayList<>();
|
|
|
for (int i = 0; i < list.size(); i++) {
|
|
|
Map<String, Object> data = new HashMap<>();
|
|
|
|
|
|
data.put("code", list.get(i).getSlaveKey2());
|
|
|
data.put("name", list.get(i).getSlaveKey2Name());
|
|
|
data.put("amount",list.get(i).getResult2());
|
|
|
|
|
|
resultList.add(data);
|
|
|
}
|
|
|
if (resultList == null || resultList.size() < 1) {
|
|
|
resultList = new ArrayList<>();
|
|
|
|
|
|
Map<String, Object> gxy = new HashMap<>();
|
|
|
gxy.put("code", "1");
|
|
|
gxy.put("name", "高血压");
|
|
|
gxy.put("amount", Double.valueOf("0.0"));
|
|
|
resultList.add(gxy);
|
|
|
|
|
|
Map<String, Object> tnb = new HashMap<>();
|
|
|
tnb.put("code", "2");
|
|
|
tnb.put("name", "糖尿病");
|
|
|
tnb.put("amount", Double.valueOf("0.0"));
|
|
|
resultList.add(tnb);
|
|
|
|
|
|
Map<String, Object> gxyTnb = new HashMap<>();
|
|
|
gxyTnb.put("code", "3");
|
|
|
gxyTnb.put("name", "高血压+糖尿病");
|
|
|
gxyTnb.put("amount", Double.valueOf("0.0"));
|
|
|
resultList.add(gxyTnb);
|
|
|
|
|
|
Map<String, Object> jk = new HashMap<>();
|
|
|
jk.put("code", "4");
|
|
|
jk.put("name", "健康人群");
|
|
|
jk.put("amount", Double.valueOf("0.0"));
|
|
|
resultList.add(jk);
|
|
|
}
|
|
|
if (resultList != null) {
|
|
|
for (Map<String, Object> map : resultList) {
|
|
|
map.put("amount", map.get("amount") == null ? 0 : Math.round(Double.valueOf(map.get("amount").toString())));
|
|
|
}
|
|
|
|
|
|
// 65岁以上人群总数统计
|
|
|
long sixFiveTotal = getSixFiveTotal(endDate, area, level);
|
|
|
Map<String, Object> sixFive = new HashMap<>();
|
|
|
|
|
|
sixFive.put("code", "0");
|
|
|
sixFive.put("name", "总数");
|
|
|
sixFive.put("amount", sixFiveTotal);
|
|
|
resultList.add(sixFive);
|
|
|
|
|
|
return new JSONArray(resultList);
|
|
|
} else {
|
|
|
return new JSONArray();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取65岁以上人群总数
|
|
|
*
|
|
|
* @param endDate
|
|
|
* @param area
|
|
|
* @param level
|
|
|
* @return
|
|
|
*/
|
|
|
public long getSixFiveTotal(String endDate, String area, int level) throws Exception{
|
|
|
|
|
|
List<SaveModel> list = findOneDateQuotaLevel1(endDate,endDate,area,level,"8","2","6",null,null);
|
|
|
if(list.size()>0){
|
|
|
return list.get(0).getResult2();
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
/**
|
|
|
* 查询某个日期范围内的某个指标每天到达量
|
|
|
*
|
|
|
* @param startDate
|
|
|
* @param endDate
|
|
|
* @param interval
|
|
|
* @param area
|
|
|
* @param level
|
|
|
* @param index
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject getDateTotal(String startDate, String endDate, int interval, String area, int level, String index, String lowCode, String year) throws Exception {
|
|
|
|
|
|
int taskNum = 0;
|
|
|
JSONObject json = new JSONObject();
|
|
|
startDate = changeDate(startDate);
|
|
|
endDate = changeDate(endDate);
|
|
|
|
|
|
if (level > 1 && org.springframework.util.StringUtils.isEmpty(lowCode)) {
|
|
|
|
|
|
PopulationBase peopleNum = getPopulationBase(area, year);
|
|
|
if (peopleNum != null) {
|
|
|
taskNum = peopleNum.getTaskNum();
|
|
|
}
|
|
|
}
|
|
|
if (!org.springframework.util.StringUtils.isEmpty(lowCode)) {
|
|
|
PopulationBase peopleNum = getPopulationBase(area, year);
|
|
|
if (peopleNum != null) {
|
|
|
if (lowCode.equals("3")) {
|
|
|
taskNum = peopleNum.getSixFiveTaskNum();
|
|
|
} else if (lowCode.equals("1")) {
|
|
|
taskNum = peopleNum.getGxyTaskNum();
|
|
|
} else if (lowCode.equals("2")) {
|
|
|
taskNum = peopleNum.getTnbTaskNum();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
json.put("taskNum", taskNum);
|
|
|
List<SaveModel> list = null;
|
|
|
if(StringUtils.isNotEmpty(lowCode)){
|
|
|
//一级维度
|
|
|
list = findOneDateQuotaLevel1(startDate,endDate,area,level,index,"2",lowCode,interval+"",null);
|
|
|
}else{
|
|
|
list = findOneDateQuotaLevel0(startDate,endDate,area,level,index,"2",interval+"",null);
|
|
|
}
|
|
|
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
List<JSONObject> result = new ArrayList<>();
|
|
|
for (SaveModel saveModel:list) {
|
|
|
JSONObject range = new JSONObject();
|
|
|
range.put("range", df.format(saveModel.getQuotaDate()));
|
|
|
range.put("amount", saveModel.getResult2());
|
|
|
result.add(range);
|
|
|
}
|
|
|
json.put("data", new ArrayList<>(result));
|
|
|
return json;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取下级统计key
|
|
|
*
|
|
|
* @param level
|
|
|
* @param lowLevel
|
|
|
* @param area
|
|
|
* @return
|
|
|
*/
|
|
|
public List<Map<String, Object>> getLowLevelMapKey(int level, String lowLevel, String area) {
|
|
|
List<Map<String, Object>> resultList = new ArrayList<>();
|
|
|
if (lowLevel.equals("3")) {
|
|
|
List<Town> towns = townDao.findByCityCode(area);
|
|
|
if (towns != null) {
|
|
|
for (Town town : towns) {
|
|
|
Map<String, Object> obj = new HashMap<>();
|
|
|
obj.put("code", town.getCode());
|
|
|
obj.put("name", town.getName());
|
|
|
obj.put("amount", "0");
|
|
|
resultList.add(obj);
|
|
|
}
|
|
|
}
|
|
|
} else if (lowLevel.equals("2")) {
|
|
|
List<Town> towns = new ArrayList<>();
|
|
|
if (level == 4) {
|
|
|
towns = townDao.findByCityCode(area);
|
|
|
} else if (level == 3) {
|
|
|
Town town = townDao.findByCode(area);
|
|
|
if (town != null) {
|
|
|
towns.add(town);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (towns != null && towns.size() > 0) {
|
|
|
for (Town town : towns) {
|
|
|
List<Hospital> hospitals = hospitalDao.findByTownCode(town.getCode());
|
|
|
|
|
|
for (Hospital hos : hospitals) {
|
|
|
if (hos.getCode().length() > 10) {
|
|
|
continue;
|
|
|
}
|
|
|
Map<String, Object> obj = new HashMap<>();
|
|
|
obj.put("code", hos.getCode());
|
|
|
obj.put("name", hos.getName());
|
|
|
obj.put("amount", "0");
|
|
|
resultList.add(obj);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
} else if (lowLevel.equals("1")) {
|
|
|
List<Hospital> hospitals = new ArrayList<>();
|
|
|
if (level == 4) {
|
|
|
hospitals = hospitalDao.findByCity(area);
|
|
|
} else if (level == 3) {
|
|
|
hospitals = hospitalDao.findByTownCode(area);
|
|
|
} else {
|
|
|
Hospital hos = hospitalDao.findByCode(area);
|
|
|
if (hos != null) {
|
|
|
hospitals.add(hos);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (hospitals != null && hospitals.size() > 0) {
|
|
|
for (Hospital hos : hospitals) {
|
|
|
if (hos.getCode().length() > 10) {
|
|
|
continue;
|
|
|
}
|
|
|
List<AdminTeam> teams = adminTeamDao.findByOrgCode(hos.getCode());
|
|
|
|
|
|
for (AdminTeam team : teams) {
|
|
|
Map<String, Object> obj = new HashMap<>();
|
|
|
obj.put("code", String.valueOf(team.getId()));
|
|
|
obj.put("name", team.getName());
|
|
|
obj.put("amount", "0");
|
|
|
resultList.add(obj);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return resultList;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询某个级别的某个指标到达量
|
|
|
*
|
|
|
* @param date
|
|
|
* @param area
|
|
|
* @param level
|
|
|
* @param index
|
|
|
* @param sort
|
|
|
* @param lowLevel
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
// public JSONArray getLevelTwoLowLevelTotalTeamLeader(String date, String area, int level, String index, int sort, String lowLevel, String lowCode, String year) throws Exception {
|
|
|
//
|
|
|
//
|
|
|
// }
|
|
|
}
|