|
@ -2,6 +2,7 @@ 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.profile.Doctor;
|
|
|
import com.yihu.wlyy.entity.doctor.team.admin.AdminTeam;
|
|
|
import com.yihu.wlyy.entity.organization.Hospital;
|
|
|
import com.yihu.wlyy.entity.patient.prescription.PrescriptionDispensaryCode;
|
|
@ -9,8 +10,10 @@ import com.yihu.wlyy.entity.patient.prescription.PrescriptionLog;
|
|
|
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.doctor.DoctorDao;
|
|
|
import com.yihu.wlyy.repository.organization.HospitalDao;
|
|
|
import com.yihu.wlyy.service.app.statistics.StatisticsAllService;
|
|
|
import com.yihu.wlyy.service.app.statistics.StatisticsService;
|
|
|
import com.yihu.wlyy.service.system.SystemDictService;
|
|
|
import com.yihu.wlyy.util.Constant;
|
|
|
import com.yihu.wlyy.util.DateUtil;
|
|
@ -57,14 +60,21 @@ public class StatisticsESService {
|
|
|
@Autowired
|
|
|
TownDao townDao;
|
|
|
@Autowired
|
|
|
DoctorDao doctorDao;
|
|
|
@Autowired
|
|
|
private SystemDictService systemDictService;
|
|
|
@Autowired
|
|
|
private StatisticsAllService statisticsAllService;
|
|
|
|
|
|
@Autowired
|
|
|
private StatisticsService statisticsService;
|
|
|
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXX");
|
|
|
SimpleDateFormat dateFormat3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
DecimalFormat decimalFormat = new DecimalFormat("0.00");
|
|
|
@Autowired
|
|
|
private StringRedisTemplate redisTemplate;
|
|
|
|
|
|
/**
|
|
|
* 获取上次统计时间
|
|
@ -75,16 +85,7 @@ public class StatisticsESService {
|
|
|
String date = DateUtil.dateToStrLong(new Date());
|
|
|
|
|
|
try {
|
|
|
// date = redisTemplate.opsForValue().get("quota:date");
|
|
|
// JestClient jestClient = elasticFactory.getJestClient();
|
|
|
//
|
|
|
// Bulk.Builder bulk = new Bulk.Builder().defaultIndex("health_edu_article_patient_test").defaultType("health_edu_article_patient_test");
|
|
|
// PrescriptionDispensaryCode ap = new PrescriptionDispensaryCode();
|
|
|
// ap.setCode("aaaa");
|
|
|
// ap.setType(2);
|
|
|
// Index index = new Index.Builder(ap).build();
|
|
|
// bulk.addAction(index);
|
|
|
// BulkResult br = jestClient.execute(bulk.build());
|
|
|
date = redisTemplate.opsForValue().get("quota:date");
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
@ -209,13 +210,23 @@ public class StatisticsESService {
|
|
|
|
|
|
SaveModel saveModel = null;
|
|
|
if (StringUtils.isNotEmpty(level2_type)) {
|
|
|
saveModel = elasticsearchUtil.findOneDateQuotaLevel1(startDate, endDate, area, level, index, "1", level2_type);
|
|
|
saveModel = elasticsearchUtil.findOneDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, level2_type);
|
|
|
} else {
|
|
|
saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level, index, "1");
|
|
|
saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL);
|
|
|
}
|
|
|
return saveModel.getResult2().longValue();
|
|
|
}
|
|
|
|
|
|
public long getTotalAmount3(String startDate, String endDate, String area, int level, String index, String level2_type) throws Exception {
|
|
|
|
|
|
SaveModel saveModel = null;
|
|
|
if (StringUtils.isNotEmpty(level2_type)) {
|
|
|
saveModel = elasticsearchUtil.findOneDateQuotaLevel1(endDate, endDate, area, level, index,SaveModel.timeLevel_DDL, level2_type);
|
|
|
} else {
|
|
|
saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL);
|
|
|
}
|
|
|
return saveModel.getResult2().longValue();
|
|
|
}
|
|
|
/**
|
|
|
* 查询截止某个日期某个区域后机构各下级指标累计情况
|
|
|
*
|
|
@ -269,7 +280,7 @@ public class StatisticsESService {
|
|
|
}
|
|
|
PopulationBase peopleNum = getPopulationBase(area, year);
|
|
|
if (peopleNum != null) {
|
|
|
map.put("rate", df.format((saveModel.getResult2() * 1.0000) / peopleNum.getNum() * 100));
|
|
|
map.put("rate", (peopleNum.getNum() > 0 ? df.format((saveModel.getResult2() * 1.0000) / peopleNum.getNum() * 100) : 0));
|
|
|
map.put("rateString", saveModel.getResult2().longValue() + "/" + peopleNum.getNum());
|
|
|
}
|
|
|
}
|
|
@ -406,7 +417,7 @@ public class StatisticsESService {
|
|
|
SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, area, level, "1", "2");
|
|
|
Long num = saveModel.getResult2().longValue();
|
|
|
for (Map<String, Object> map : resultList) {
|
|
|
double rateG = (total > 0 ? ((long) map.get("amount")) * 1.0000 / num * 100 : 0);
|
|
|
double rateG = (num > 0 ? ((long) map.get("amount")) * 1.0000 / num * 100 : 0);
|
|
|
map.put("rate", df.format(rateG));
|
|
|
map.put("rateString", ((long) map.get("amount")) + "/" + num);
|
|
|
}
|
|
@ -447,7 +458,7 @@ public class StatisticsESService {
|
|
|
*/
|
|
|
public JSONArray getPayPremiums(String endDate, String area, int level) throws Exception {
|
|
|
//已缴费
|
|
|
SaveModel paidSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, "1", "2");
|
|
|
SaveModel paidSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, "1", SaveModel.timeLevel_DDL);
|
|
|
//未交费
|
|
|
SaveModel noPaySaveModel =null;
|
|
|
//因为14的指标 16年度是分为 已缴费 未交费 已退费 17年度过后就只有未交费 所以16年度用1级指标 17年度用0级指标
|
|
@ -1245,7 +1256,7 @@ public class StatisticsESService {
|
|
|
map.put("signTaskNum", signTaskNum);//目标量
|
|
|
map.put("signRegulationNum", signRegulationNum);//调控量
|
|
|
if (!low_level.equals("5")) {
|
|
|
PopulationBase peopleNum = getPopulationBase(map.get("code").toString(), year);
|
|
|
PopulationBase peopleNum = getPopulationBase(String.valueOf(map.get("code")), year);
|
|
|
if (peopleNum != null) {
|
|
|
int num = 0;
|
|
|
int taskNum = 0;
|
|
@ -1253,16 +1264,16 @@ public class StatisticsESService {
|
|
|
if (lowCode.equals("3")) {
|
|
|
num = peopleNum.getSixFiveNum();
|
|
|
taskNum = peopleNum.getSixFiveTaskNum();
|
|
|
} else if (lowCode.equals("5")) {
|
|
|
} else if (lowCode.equals("1")) {
|
|
|
num = peopleNum.getGxyNum();
|
|
|
taskNum = peopleNum.getGxyTaskNum();
|
|
|
} else if (lowCode.equals("4")) {
|
|
|
} else if (lowCode.equals("2")) {
|
|
|
num = peopleNum.getTnbNum();
|
|
|
taskNum = peopleNum.getTnbTaskNum();
|
|
|
}
|
|
|
map.put("rate", df.format(((long) map.get("amount") * 1.0000) / num * 100));
|
|
|
map.put("taskRate", df.format(((long) map.get("amount") * 1.0000) / taskNum * 100));
|
|
|
map.put("targetRate", df.format(taskNum * 1.0000 / num * 100));
|
|
|
map.put("rate", (num > 0 ? df.format(((long) map.get("amount") * 1.0000) / num * 100) : 0));
|
|
|
map.put("taskRate", (taskNum > 0 ? df.format(((long) map.get("amount") * 1.0000) / taskNum * 100) : 0));
|
|
|
map.put("targetRate", (num > 0 ? df.format(taskNum * 1.0000 / num * 100) : 0));
|
|
|
map.put("rateString", map.get("amount") + "/" + num);
|
|
|
map.put("taskRateString", map.get("amount") + "/" + taskNum);
|
|
|
map.put("targetRateString", taskNum + "/" + num);
|
|
@ -1462,10 +1473,10 @@ public class StatisticsESService {
|
|
|
if (lowCode.equals("3")) {
|
|
|
num = peopleNum.getSixFiveNum();
|
|
|
taskNum = peopleNum.getSixFiveTaskNum();
|
|
|
} else if (lowCode.equals("5")) {
|
|
|
} else if (lowCode.equals("1")) {
|
|
|
num = peopleNum.getGxyNum();
|
|
|
taskNum = peopleNum.getGxyTaskNum();
|
|
|
} else if (lowCode.equals("4")) {
|
|
|
} else if (lowCode.equals("2")) {
|
|
|
num = peopleNum.getTnbNum();
|
|
|
taskNum = peopleNum.getTnbTaskNum();
|
|
|
}
|
|
@ -2530,13 +2541,13 @@ public class StatisticsESService {
|
|
|
// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
//获取微信关注的未交费
|
|
|
// Map<String, Object> expenseStatus0 = getByIndexSingle(date, area, level, "49",dateFormat);
|
|
|
SaveModel expenseStatus0 = elasticsearchUtil.findOneDateQuotaLevel0(date, area, level, "49", "2");
|
|
|
SaveModel expenseStatus0 = elasticsearchUtil.findOneDateQuotaLevel0(date, area, level, "49", SaveModel.timeLevel_DDL);
|
|
|
//获取微信关注的已交费
|
|
|
// Map<String, Object> expenseStatus1 = getByIndexSingle(date, area, level, "50",dateFormat);
|
|
|
SaveModel expenseStatus1 = elasticsearchUtil.findOneDateQuotaLevel0(date, area, level, "50", "2");
|
|
|
SaveModel expenseStatus1 = elasticsearchUtil.findOneDateQuotaLevel0(date, area, level, "50", SaveModel.timeLevel_DDL);
|
|
|
//获取已缴费的签约数
|
|
|
// Map<String, Object> expenseStatus1Sigjn = getByIndexSingle(date, area, level, "1",dateFormat);
|
|
|
SaveModel expenseStatus1Sigjn = elasticsearchUtil.findOneDateQuotaLevel0(date, area, level, "1", "2");
|
|
|
SaveModel expenseStatus1Sigjn = elasticsearchUtil.findOneDateQuotaLevel0(date, area, level, "1", SaveModel.timeLevel_DDL);
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
if (Integer.valueOf(SaveModel.teamLevel) == level) {
|
|
|
jsonObject.put("name", expenseStatus1Sigjn.getTeamName());
|
|
@ -2800,10 +2811,11 @@ public class StatisticsESService {
|
|
|
rs.put(signTotal);
|
|
|
|
|
|
|
|
|
//4.获取咨詢數
|
|
|
SaveModel saveModel3 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "3", SaveModel.timeLevel_ZL);
|
|
|
Map<String, Object> consultCout = new HashMap<>();
|
|
|
consultCout.put("consultCount", saveModel3.getResult2().longValue());
|
|
|
//4.获取咨詢數(先使用旧版)
|
|
|
Map<String, Object> consultCout = statisticsService.getConsultByteam(admin.getId(),startDate,endDate);
|
|
|
//SaveModel saveModel3 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "3", SaveModel.timeLevel_ZL);
|
|
|
//Map<String, Object> consultCout = new HashMap<>();
|
|
|
//consultCout.put("consultCount", saveModel3.getResult2().longValue());
|
|
|
rs.put(consultCout);
|
|
|
|
|
|
//5.获取待预约
|
|
@ -2832,9 +2844,6 @@ public class StatisticsESService {
|
|
|
|
|
|
//3.平均满意度
|
|
|
SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "28", SaveModel.timeLevel_ZL);
|
|
|
// String sql = "SELECT count(1) as num FROM wlyy_consult_team d WHERE d.czrq>= ? and d.czrq<=? and d.admin_team_code =? ";
|
|
|
// Map<String, Object> map = jdbcTemplate.queryForMap(sql, startDate, endDate,admin.getId());
|
|
|
//SaveModel saveModel21 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "3", SaveModel.timeLevel_ZL);
|
|
|
Double avgCout = 0.0;
|
|
|
String avgCoutStr="";
|
|
|
DecimalFormat df = new DecimalFormat("#.0");
|
|
@ -2842,10 +2851,6 @@ public class StatisticsESService {
|
|
|
avgCout = saveModel2.getResult1()/saveModel2.getResult2();
|
|
|
avgCoutStr=df.format(avgCout);
|
|
|
}
|
|
|
// if (saveModel21.getResult2().intValue()!=0){
|
|
|
// avgCout = saveModel2.getResult1() / saveModel21.getResult2();
|
|
|
// avgCoutStr = df.format(avgCout);
|
|
|
// }
|
|
|
Map<String, Object> avgScore = new HashMap<>();
|
|
|
avgScore.put("avgScore", avgCoutStr);
|
|
|
rs.put(avgScore);
|
|
@ -2931,9 +2936,10 @@ public class StatisticsESService {
|
|
|
endDate = endDate + " 23:59:59";
|
|
|
String quotaTime = elasticsearchUtil.getQuotaTime();
|
|
|
Long id = admin.getId();
|
|
|
//家庭医生、健康咨询增量
|
|
|
SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, id + "", Integer.parseInt(SaveModel.teamLevel), "3", SaveModel.timeLevel_ZL);
|
|
|
Long totalCount = saveModel.getResult2().longValue();
|
|
|
//家庭医生、健康咨询增量(先使用旧版 17-11-21)
|
|
|
Long totalCount = statisticsService.getConsultTotalForEsGetRayStatByTeam(startDate,endDate,id);
|
|
|
/*SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, id + "", Integer.parseInt(SaveModel.teamLevel), "3", SaveModel.timeLevel_ZL);
|
|
|
Long totalCount = saveModel.getResult2().longValue();*/
|
|
|
|
|
|
//健康咨询量 未回复当天的到达量
|
|
|
SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(quotaTime, quotaTime, id + "", Integer.parseInt(SaveModel.teamLevel), "22", SaveModel.timeLevel_DDL);
|
|
@ -3002,9 +3008,11 @@ public class StatisticsESService {
|
|
|
//咨询未回复
|
|
|
Integer interval = Integer.parseInt(type) + 1;
|
|
|
List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "22", SaveModel.timeLevel_ZL, interval + "");
|
|
|
//咨询总数
|
|
|
List<SaveModel> list2 = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "3", SaveModel.timeLevel_ZL, interval + "");
|
|
|
//咨询总数(先使用旧版17-11-21)
|
|
|
//List<SaveModel> list2 = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "3", SaveModel.timeLevel_ZL, interval + "");
|
|
|
List<Map<String,Object>> totalList = statisticsService.getCousultTotalForEsGetTeamConsultCount(teamCode,startDate,endDate,type);
|
|
|
Map<String, Object> map = null;
|
|
|
//遍历未回复集合
|
|
|
List<Map<String, Object>> noReyList = new ArrayList<>();
|
|
|
for (SaveModel one : list) {
|
|
|
if (one.getResult2().intValue()!=0){
|
|
@ -3019,7 +3027,7 @@ public class StatisticsESService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
List<Map<String, Object>> totalList = new ArrayList<>();
|
|
|
/*List<Map<String, Object>> totalList = new ArrayList<>();
|
|
|
for (SaveModel one : list2) {
|
|
|
if (one.getResult2().intValue()!=0){
|
|
|
map = new HashMap<>();
|
|
@ -3031,7 +3039,7 @@ public class StatisticsESService {
|
|
|
map.put("total", one.getResult2().longValue());
|
|
|
totalList.add(map);
|
|
|
}
|
|
|
}
|
|
|
}*/
|
|
|
JSONObject result = new JSONObject();
|
|
|
result.put("noReyList", noReyList);
|
|
|
result.put("totalList", totalList);
|
|
@ -3055,25 +3063,29 @@ public class StatisticsESService {
|
|
|
Map<String, Object> map = null;
|
|
|
List<Map<String, Object>> totalList = new ArrayList<>();
|
|
|
for (SaveModel one : list1) {
|
|
|
map = new HashMap<>();
|
|
|
if ("0".equals(type)) {
|
|
|
map.put("dateNo", dateFormat.format(one.getQuotaDate()));
|
|
|
} else {
|
|
|
map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
|
|
|
if(one.getResult2().intValue()!=0){
|
|
|
map = new HashMap<>();
|
|
|
if ("0".equals(type)) {
|
|
|
map.put("dateNo", dateFormat.format(one.getQuotaDate()));
|
|
|
} else {
|
|
|
map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
|
|
|
}
|
|
|
map.put("followupCount", one.getResult2().longValue());
|
|
|
totalList.add(map);
|
|
|
}
|
|
|
map.put("followupCount", one.getResult2().longValue());
|
|
|
totalList.add(map);
|
|
|
}
|
|
|
List<Map<String, Object>> planList = new ArrayList<>();
|
|
|
for (SaveModel one : list2) {
|
|
|
map = new HashMap<>();
|
|
|
if ("0".equals(type)) {
|
|
|
map.put("dateNo", dateFormat.format(one.getQuotaDate()));
|
|
|
} else {
|
|
|
map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
|
|
|
if (one.getResult2().intValue()!=0){
|
|
|
map = new HashMap<>();
|
|
|
if ("0".equals(type)) {
|
|
|
map.put("dateNo", dateFormat.format(one.getQuotaDate()));
|
|
|
} else {
|
|
|
map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
|
|
|
}
|
|
|
map.put("planCount", one.getResult2().longValue());
|
|
|
planList.add(map);
|
|
|
}
|
|
|
map.put("planCount", one.getResult2().longValue());
|
|
|
planList.add(map);
|
|
|
}
|
|
|
JSONObject result = new JSONObject();
|
|
|
result.put("planList", planList);
|
|
@ -3411,6 +3423,10 @@ public class StatisticsESService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//团队翻译
|
|
|
if(SaveModel.teamLevel.equals(lowlevel)){
|
|
|
translateTeamLeaderName(rs);
|
|
|
}
|
|
|
Collections.sort(rs, new Comparator<Map<String, Object>>() {
|
|
|
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
|
|
|
Integer map1value = Integer.valueOf(String.valueOf(o1.get("val")));
|
|
@ -4168,4 +4184,6 @@ public class StatisticsESService {
|
|
|
resultJSON.put("rs", json);
|
|
|
return resultJSON;
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|