|
@ -5002,9 +5002,9 @@ public class StatisticsService extends BaseService {
|
|
stateSql += " AND LEFT(p.hospital, 6) = '"+area+"' ";
|
|
stateSql += " AND LEFT(p.hospital, 6) = '"+area+"' ";
|
|
//机构
|
|
//机构
|
|
}else if("2".equals(level)){
|
|
}else if("2".equals(level)){
|
|
totalSql += " p.hospital = '"+area+"' ";
|
|
|
|
processingSql += " p.hospital = '"+area+"' ";
|
|
|
|
stateSql += " p.hospital = '"+area+"' ";
|
|
|
|
|
|
totalSql += " AND p.hospital = '"+area+"' ";
|
|
|
|
processingSql += " AND p.hospital = '"+area+"' ";
|
|
|
|
stateSql += " AND p.hospital = '"+area+"' ";
|
|
}
|
|
}
|
|
|
|
|
|
Map<String,Object> rs = new HashedMap();
|
|
Map<String,Object> rs = new HashedMap();
|
|
@ -5062,7 +5062,8 @@ public class StatisticsService extends BaseService {
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
public List<Map<String,Object>> getPrescriptionTotalHistogram(String level,String area,String disease,String type){
|
|
public List<Map<String,Object>> getPrescriptionTotalHistogram(String level,String area,String disease,String type){
|
|
List<Map<String,Object>> rs = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
List<Map<String,Object>> rs =new ArrayList<>();
|
|
|
|
|
|
Calendar dd = Calendar.getInstance();//定义日期实例
|
|
Calendar dd = Calendar.getInstance();//定义日期实例
|
|
Date endDate = new Date();
|
|
Date endDate = new Date();
|
|
@ -5093,7 +5094,7 @@ public class StatisticsService extends BaseService {
|
|
sql += " AND LEFT(p.hospital, 6) = '"+area+"' ";
|
|
sql += " AND LEFT(p.hospital, 6) = '"+area+"' ";
|
|
//机构
|
|
//机构
|
|
}else if("2".equals(level)){
|
|
}else if("2".equals(level)){
|
|
sql += " p.hospital = '"+area+"' ";
|
|
|
|
|
|
sql += " AND p.hospital = '"+area+"' ";
|
|
}
|
|
}
|
|
//类型1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消
|
|
//类型1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消
|
|
if("1".equals(type)){
|
|
if("1".equals(type)){
|
|
@ -5114,15 +5115,15 @@ public class StatisticsService extends BaseService {
|
|
sql += " AND p.create_time >='"+DateUtil.dateToStr(dd.getTime(),"YYYY-MM-dd HH:mm:ss")+"' AND p.create_time <='"+ DateUtil.dateToStr(new Date(),"YYYY-MM-dd HH:mm:ss")+"' GROUP BY LEFT(p.create_time,7) ";
|
|
sql += " AND p.create_time >='"+DateUtil.dateToStr(dd.getTime(),"YYYY-MM-dd HH:mm:ss")+"' AND p.create_time <='"+ DateUtil.dateToStr(new Date(),"YYYY-MM-dd HH:mm:ss")+"' GROUP BY LEFT(p.create_time,7) ";
|
|
|
|
|
|
List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
|
|
List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
|
|
Iterator iterator = list.iterator();
|
|
|
|
|
|
|
|
for(Map<String,Object> m:rs){
|
|
for(Map<String,Object> m:rs){
|
|
|
|
Iterator iterator = list.iterator();
|
|
while (iterator.hasNext()){
|
|
while (iterator.hasNext()){
|
|
Map<String,Object> ml = ( Map<String,Object>)iterator.next();
|
|
Map<String,Object> ml = ( Map<String,Object>)iterator.next();
|
|
String monthKey = (String)m.get("month");
|
|
String monthKey = (String)m.get("month");
|
|
String monthKeyDb = (String)ml.get("month");
|
|
String monthKeyDb = (String)ml.get("month");
|
|
if(monthKey.equals(monthKeyDb)){
|
|
if(monthKey.equals(monthKeyDb)){
|
|
m.put("count",ml.get("count"));
|
|
m.put("count",ml.get("count"));
|
|
iterator.remove();
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@ -5274,6 +5275,9 @@ public class StatisticsService extends BaseService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
rs = jdbcTemplate.queryForList(sql);
|
|
rs = jdbcTemplate.queryForList(sql);
|
|
|
|
if("1".equals(level)){
|
|
|
|
statisticsAllService.translateTeamLeaderName2(rs);
|
|
|
|
}
|
|
return rs;
|
|
return rs;
|
|
}
|
|
}
|
|
|
|
|
|
@ -5304,6 +5308,26 @@ public class StatisticsService extends BaseService {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public String setDiseaseTypeSql2(String disease,String type,String sql){
|
|
|
|
|
|
|
|
if(StringUtils.isNotBlank(disease)){
|
|
|
|
sql += " JOIN wlyy_prescription_diagnosis d ON d.prescription_code = p.code WHERE d.health_problem ='"+disease+"' ";
|
|
|
|
}else{
|
|
|
|
sql +=" WHERE 1=1 ";
|
|
|
|
}
|
|
|
|
//类型1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消
|
|
|
|
if("1".equals(type)){
|
|
|
|
sql +=" AND p.dispensary_type ="+type;
|
|
|
|
}else if("2".equals(type)){
|
|
|
|
sql +=" AND p.dispensary_type ="+type;
|
|
|
|
}else if("3".equals(type)){
|
|
|
|
sql +=" AND p.dispensary_type ="+type;
|
|
|
|
}
|
|
|
|
sql +=" AND p.`status` >="+PrescriptionLog.PrescriptionLogStatus.pay_success.getValue();
|
|
|
|
return sql;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Map<String,Object> getPrescriptionCost(String level,String area,String disease){
|
|
public Map<String,Object> getPrescriptionCost(String level,String area,String disease){
|
|
|
|
|
|
Map<String,Object> rs = new HashedMap();
|
|
Map<String,Object> rs = new HashedMap();
|
|
@ -5359,5 +5383,722 @@ public class StatisticsService extends BaseService {
|
|
}
|
|
}
|
|
return rs;
|
|
return rs;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取中部费用平均值
|
|
|
|
* @param level
|
|
|
|
* @param area
|
|
|
|
* @param disease
|
|
|
|
* @param startDate
|
|
|
|
* @param endDate
|
|
|
|
* @param type 1.按日,2.按周,3.按月
|
|
|
|
*/
|
|
|
|
public List<Map<String,Object>> getPrescriptionCostAvgLine(String level,String area,String disease,String startDate,String endDate,String type){
|
|
|
|
|
|
|
|
startDate += " 00:00:00";
|
|
|
|
endDate += " 23:59:59";
|
|
|
|
|
|
|
|
if("1".equals(type)){
|
|
|
|
//按日
|
|
|
|
List<Map<String,Object>> rs = DateUtil.findDates(DateUtil.stringToDate(startDate,"yyyy-MM-dd HH:mm:ss"),DateUtil.stringToDate(endDate,"yyyy-MM-dd HH:mm:ss"));
|
|
|
|
String sql = "SELECT " +
|
|
|
|
" avg(t.total_amount) avg, " +
|
|
|
|
" LEFT(t.create_time,10) date " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription_pay t ";
|
|
|
|
|
|
|
|
sql = setLevelAndDisSql(sql,disease,level,area);
|
|
|
|
|
|
|
|
sql += " AND t.trade_status = 1 " +
|
|
|
|
" AND t.create_time >='"+startDate+"' " +
|
|
|
|
" AND t.create_time <='"+endDate+"' " +
|
|
|
|
" GROUP BY LEFT(t.create_time,10)";
|
|
|
|
|
|
|
|
return getDatesRs(sql,rs);
|
|
|
|
|
|
|
|
}else if("2".equals(type)){
|
|
|
|
//按周
|
|
|
|
List<Map<String,Object>> rs = DateUtil.findDateASWeeks(DateUtil.stringToDate(startDate,"yyyy-MM-dd HH:mm:ss"),DateUtil.stringToDate(endDate,"yyyy-MM-dd HH:mm:ss"));
|
|
|
|
String sql ="SELECT " +
|
|
|
|
" avg(t.total_amount) avg, " +
|
|
|
|
" LEFT(date_sub(t.create_time,INTERVAL WEEKDAY(t.create_time) +0 DAY),10) date " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription_pay t ";
|
|
|
|
|
|
|
|
sql = setLevelAndDisSql(sql,disease,level,area);
|
|
|
|
|
|
|
|
sql += " AND t.trade_status = 1 " +
|
|
|
|
" AND t.create_time >='"+startDate+"' " +
|
|
|
|
" AND t.create_time <='"+endDate+"' " +
|
|
|
|
" GROUP BY DATE_FORMAT(t.create_time, '%v %x')";
|
|
|
|
|
|
|
|
return getDatesRs(sql,rs);
|
|
|
|
|
|
|
|
}else if("3".equals(type)){
|
|
|
|
//按月
|
|
|
|
List<Map<String,Object>> rs = DateUtil.findDateASMonth(DateUtil.stringToDate(startDate,"yyyy-MM-dd HH:mm:ss"),DateUtil.stringToDate(endDate,"yyyy-MM-dd HH:mm:ss"));
|
|
|
|
|
|
|
|
String sql = "SELECT " +
|
|
|
|
" avg(t.total_amount) avg, " +
|
|
|
|
" LEFT(t.create_time,7) date " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription_pay t ";
|
|
|
|
sql = setLevelAndDisSql(sql,disease,level,area);
|
|
|
|
sql += " AND t.trade_status = 1 " +
|
|
|
|
" AND t.create_time >='"+startDate+"' " +
|
|
|
|
" AND t.create_time <='"+endDate+"' " +
|
|
|
|
" GROUP BY LEFT(t.create_time,7)";
|
|
|
|
return getDatesRs(sql,rs);
|
|
|
|
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String setLevelAndDisSql(String sql,String disease,String level,String area){
|
|
|
|
|
|
|
|
if(StringUtils.isNotBlank(disease)){
|
|
|
|
sql += " JOIN wlyy_prescription_diagnosis d ON d.prescription_code = t.prescription_code ";
|
|
|
|
}
|
|
|
|
if("4".equals(level)){
|
|
|
|
sql +=" WHERE 1=1 ";
|
|
|
|
}else if("3".equals(level)){
|
|
|
|
sql +=" JOIN wlyy_prescription p ON t.prescription_code = p.code WHERE LEFT(p.hospital,6) ='"+area+"' ";
|
|
|
|
}else if("2".equals(level)){
|
|
|
|
sql +=" JOIN wlyy_prescription p ON t.prescription_code = p.code WHERE p.hospital ='"+area+"' ";
|
|
|
|
}
|
|
|
|
|
|
|
|
if(StringUtils.isNotBlank(disease)){
|
|
|
|
sql += " AND d.health_problem ='"+disease+"'";
|
|
|
|
}
|
|
|
|
return sql;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String setLevelAndDisSql2(String sql,String disease,String level,String area){
|
|
|
|
|
|
|
|
if(StringUtils.isNotBlank(disease)){
|
|
|
|
sql += " JOIN wlyy_prescription_diagnosis d ON d.prescription_code = t.prescription_code ";
|
|
|
|
}
|
|
|
|
if("4".equals(level)){
|
|
|
|
sql +=" WHERE 1=1 ";
|
|
|
|
}else if("3".equals(level)){
|
|
|
|
sql +=" WHERE LEFT(p.hospital,6) ='"+area+"' ";
|
|
|
|
}else if("2".equals(level)){
|
|
|
|
sql +=" WHERE p.hospital ='"+area+"' ";
|
|
|
|
}
|
|
|
|
|
|
|
|
if(StringUtils.isNotBlank(disease)){
|
|
|
|
sql += " AND d.health_problem ='"+disease+"'";
|
|
|
|
}
|
|
|
|
return sql;
|
|
|
|
}
|
|
|
|
|
|
|
|
public List<Map<String,Object>> getDatesRs(String sql,List<Map<String,Object>> rs){
|
|
|
|
|
|
|
|
List<Map<String,Object>> dayList = jdbcTemplate.queryForList(sql);
|
|
|
|
|
|
|
|
for(Map<String,Object> map :rs){
|
|
|
|
String dateKey = (String)map.get("date");
|
|
|
|
Iterator iterator = dayList.iterator();
|
|
|
|
while (iterator.hasNext()){
|
|
|
|
Map<String,Object> day = (Map<String,Object>)iterator.next();
|
|
|
|
String dateKeyDb =(String)day.get("date");
|
|
|
|
if(dateKey.equals(dateKeyDb)){
|
|
|
|
BigDecimal a = (BigDecimal)day.get("avg");
|
|
|
|
map.put("avg",a.divide((new BigDecimal(100))).setScale(2,BigDecimal.ROUND_HALF_UP));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return rs;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取下部部费用平均值或总数
|
|
|
|
* @param level
|
|
|
|
* @param lowlevel
|
|
|
|
* @param area
|
|
|
|
* @param disease
|
|
|
|
* @param type 1.总量,2.平均值
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public List<Map<String,Object>> getPrescriptionCostLowLevel(String level,String lowlevel,String area,String disease,String type){
|
|
|
|
//市级
|
|
|
|
if("4".equals(level)){
|
|
|
|
//区级
|
|
|
|
if("3".equals(lowlevel)){
|
|
|
|
if("1".equals(type)){
|
|
|
|
//总量
|
|
|
|
String sql = "SELECT " +
|
|
|
|
" tw.`code`, " +
|
|
|
|
" tw.`name`, " +
|
|
|
|
" ifnull(c.sum/100,0) sum " +
|
|
|
|
" FROM dm_town tw LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" sum(t.total_amount) sum, " +
|
|
|
|
" LEFT (p.hospital, 6) code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription_pay t JOIN wlyy_prescription p ON p.code = t.prescription_code ";
|
|
|
|
sql = setDisSql(sql,disease);
|
|
|
|
sql += " AND t.trade_status = 1 " +
|
|
|
|
" GROUP BY LEFT (p.hospital, 6) " +
|
|
|
|
" ) c ON c.code = tw.code " +
|
|
|
|
" WHERE " +
|
|
|
|
" tw.city = '350200' " +
|
|
|
|
" ORDER BY sum DESC ";
|
|
|
|
|
|
|
|
List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
|
|
|
|
|
|
|
|
return rs;
|
|
|
|
}else{
|
|
|
|
String sql = "SELECT " +
|
|
|
|
" tw.`code`, " +
|
|
|
|
" tw.`name`, " +
|
|
|
|
" ifnull(FORMAT(c.avg/100,2),0) avg " +
|
|
|
|
" FROM dm_town tw LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" avg(t.total_amount) avg, " +
|
|
|
|
" LEFT (p.hospital, 6) code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription_pay t JOIN wlyy_prescription p ON p.code = t.prescription_code ";
|
|
|
|
sql = setDisSql(sql,disease);
|
|
|
|
sql += " AND t.trade_status = 1 " +
|
|
|
|
" GROUP BY LEFT (p.hospital, 6) " +
|
|
|
|
" ) c ON c.code = tw.code " +
|
|
|
|
" WHERE " +
|
|
|
|
" tw.city = '350200' " +
|
|
|
|
" ORDER BY avg DESC ";
|
|
|
|
|
|
|
|
List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
|
|
|
|
|
|
|
|
return rs;
|
|
|
|
}
|
|
|
|
//机构
|
|
|
|
}else if("2".equals(lowlevel)){
|
|
|
|
if("1".equals(type)){
|
|
|
|
//总量
|
|
|
|
String sql = "SELECT " +
|
|
|
|
" tw.`code`, " +
|
|
|
|
" tw.`name`, " +
|
|
|
|
" ifnull(c.sum/100,0) sum " +
|
|
|
|
" FROM dm_hospital tw LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" sum(t.total_amount) sum, " +
|
|
|
|
" p.hospital code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription_pay t JOIN wlyy_prescription p ON p.code = t.prescription_code ";
|
|
|
|
sql = setDisSql(sql,disease);
|
|
|
|
sql += " AND t.trade_status = 1 " +
|
|
|
|
" GROUP BY p.hospital " +
|
|
|
|
" ) c ON c.code = tw.code " +
|
|
|
|
" WHERE " +
|
|
|
|
" tw.city = '350200' " +
|
|
|
|
" AND LENGTH(tw.code)=10 " +
|
|
|
|
" ORDER BY sum DESC ";
|
|
|
|
|
|
|
|
List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
|
|
|
|
|
|
|
|
return rs;
|
|
|
|
}else{
|
|
|
|
String sql = " SELECT " +
|
|
|
|
" tw.`code`, " +
|
|
|
|
" tw.`name`, " +
|
|
|
|
" ifnull(FORMAT(c.avg/100,2),0) avg " +
|
|
|
|
" FROM dm_hospital tw LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" avg(t.total_amount) avg, " +
|
|
|
|
" p.hospital code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription_pay t JOIN wlyy_prescription p ON p.code = t.prescription_code ";
|
|
|
|
sql = setDisSql(sql,disease);
|
|
|
|
sql += " AND t.trade_status = 1 " +
|
|
|
|
" GROUP BY p.hospital " +
|
|
|
|
" ) c ON c.code = tw.code " +
|
|
|
|
" WHERE " +
|
|
|
|
" tw.city = '350200' " +
|
|
|
|
" AND LENGTH(tw.code)=10 " +
|
|
|
|
" ORDER BY avg DESC ";
|
|
|
|
|
|
|
|
List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
|
|
|
|
|
|
|
|
return rs;
|
|
|
|
}
|
|
|
|
//团队
|
|
|
|
}else if("1".equals(lowlevel)){
|
|
|
|
if("1".equals(type)){
|
|
|
|
String sql = "SELECT " +
|
|
|
|
" tw.`id` code, " +
|
|
|
|
" tw.`name`, " +
|
|
|
|
" ifnull(c.sum/100,0) sum " +
|
|
|
|
" FROM wlyy_admin_team tw LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" sum(t.total_amount) sum, " +
|
|
|
|
" p.admin_team_id code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription_pay t JOIN wlyy_prescription p ON p.code = t.prescription_code " ;
|
|
|
|
sql = setDisSql(sql,disease);
|
|
|
|
sql += " AND t.trade_status = 1 " +
|
|
|
|
" GROUP BY p.admin_team_id " +
|
|
|
|
" ) c ON c.code = tw.id " +
|
|
|
|
" ORDER BY sum DESC ";
|
|
|
|
List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
|
|
|
|
statisticsAllService.translateTeamLeaderName2(rs);
|
|
|
|
return rs;
|
|
|
|
}else{
|
|
|
|
String sql = "SELECT " +
|
|
|
|
" tw.`id` code, " +
|
|
|
|
" tw.`name`, " +
|
|
|
|
" ifnull(FORMAT(c.avg/100,2),0) avg " +
|
|
|
|
" FROM wlyy_admin_team tw LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" avg(t.total_amount) avg, " +
|
|
|
|
" p.admin_team_id code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription_pay t JOIN wlyy_prescription p ON p.code = t.prescription_code " ;
|
|
|
|
sql = setDisSql(sql,disease);
|
|
|
|
sql += " AND t.trade_status = 1 " +
|
|
|
|
" GROUP BY p.hospital " +
|
|
|
|
" ) c ON c.code = tw.id " +
|
|
|
|
" ORDER BY avg DESC ";
|
|
|
|
List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
|
|
|
|
statisticsAllService.translateTeamLeaderName2(rs);
|
|
|
|
return rs;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//区级
|
|
|
|
}else if("3".equals(level)){
|
|
|
|
//机构
|
|
|
|
if("2".equals(lowlevel)){
|
|
|
|
|
|
|
|
if("1".equals(type)){
|
|
|
|
//总量
|
|
|
|
String sql = "SELECT " +
|
|
|
|
" tw.`code`, " +
|
|
|
|
" tw.`name`, " +
|
|
|
|
" ifnull(c.sum/100,0) sum " +
|
|
|
|
" FROM dm_hospital tw LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" sum(t.total_amount) sum, " +
|
|
|
|
" p.hospital code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription_pay t JOIN wlyy_prescription p ON p.code = t.prescription_code ";
|
|
|
|
sql = setDisSql(sql,disease);
|
|
|
|
sql += " AND t.trade_status = 1 " +
|
|
|
|
" AND LEFT(p.hospital,6)='"+area+"' " +
|
|
|
|
" GROUP BY p.hospital " +
|
|
|
|
" ) c ON c.code = tw.code " +
|
|
|
|
" WHERE " +
|
|
|
|
" ADN tw.city = '350200' " +
|
|
|
|
" AND tw.town = '"+ area+"'" +
|
|
|
|
" AND LENGTH(tw.code)=10 " +
|
|
|
|
" ORDER BY sum DESC ";
|
|
|
|
|
|
|
|
List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
|
|
|
|
|
|
|
|
return rs;
|
|
|
|
}else{
|
|
|
|
String sql = " SELECT " +
|
|
|
|
" tw.`code`, " +
|
|
|
|
" tw.`name`, " +
|
|
|
|
" ifnull(FORMAT(c.avg/100,2),0) avg " +
|
|
|
|
" FROM dm_hospital tw LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" avg(t.total_amount) avg, " +
|
|
|
|
" p.hospital code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription_pay t JOIN wlyy_prescription p ON p.code = t.prescription_code ";
|
|
|
|
sql = setDisSql(sql,disease);
|
|
|
|
sql += " AND t.trade_status = 1 " +
|
|
|
|
" AND LEFT(p.hospital,6)='"+area+"' " +
|
|
|
|
" GROUP BY p.hospital " +
|
|
|
|
" ) c ON c.code = tw.code " +
|
|
|
|
" WHERE " +
|
|
|
|
" tw.city = '350200' " +
|
|
|
|
" AND tw.town = '"+ area+"'" +
|
|
|
|
" AND LENGTH(tw.code)=10 " +
|
|
|
|
" ORDER BY avg DESC ";
|
|
|
|
|
|
|
|
List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
|
|
|
|
|
|
|
|
return rs;
|
|
|
|
}
|
|
|
|
|
|
|
|
//团队
|
|
|
|
}else if("1".equals(lowlevel)){
|
|
|
|
if("1".equals(type)){
|
|
|
|
String sql = "SELECT " +
|
|
|
|
" tw.`id` code, " +
|
|
|
|
" tw.`name`, " +
|
|
|
|
" ifnull(c.sum/100,0) sum " +
|
|
|
|
" FROM wlyy_admin_team tw LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" sum(t.total_amount) sum, " +
|
|
|
|
" p.admin_team_id code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription_pay t JOIN wlyy_prescription p ON p.code = t.prescription_code " ;
|
|
|
|
sql = setDisSql(sql,disease);
|
|
|
|
sql += " AND t.trade_status = 1 " +
|
|
|
|
" AND LEFT(p.hospital,6) ='"+area+"' " +
|
|
|
|
" GROUP BY p.admin_team_id " +
|
|
|
|
" ) c ON c.code = tw.id " +
|
|
|
|
" WHERE LEFT(tw.org_code,6) ='"+area+"' " +
|
|
|
|
" ORDER BY sum DESC ";
|
|
|
|
List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
|
|
|
|
statisticsAllService.translateTeamLeaderName2(rs);
|
|
|
|
return rs;
|
|
|
|
}else{
|
|
|
|
String sql = "SELECT " +
|
|
|
|
" tw.`id` code, " +
|
|
|
|
" tw.`name`, " +
|
|
|
|
" ifnull(FORMAT(c.avg/100,2),0) avg " +
|
|
|
|
" FROM wlyy_admin_team tw LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" avg(t.total_amount) avg, " +
|
|
|
|
" p.admin_team_id code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription_pay t JOIN wlyy_prescription p ON p.code = t.prescription_code " ;
|
|
|
|
sql = setDisSql(sql,disease);
|
|
|
|
sql += " AND t.trade_status = 1 " +
|
|
|
|
" AND LEFT(p.hospital,6) ='"+area+"' " +
|
|
|
|
" GROUP BY p.admin_team_id " +
|
|
|
|
" ) c ON c.code = tw.id " +
|
|
|
|
" WHERE LEFT(tw.org_code,6) ='"+area+"' " +
|
|
|
|
" ORDER BY avg DESC ";
|
|
|
|
List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
|
|
|
|
statisticsAllService.translateTeamLeaderName2(rs);
|
|
|
|
return rs;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//机构
|
|
|
|
}else if("2".equals(level)){
|
|
|
|
//团队
|
|
|
|
if("1".equals(lowlevel)){
|
|
|
|
if("1".equals(type)){
|
|
|
|
String sql = "SELECT " +
|
|
|
|
" tw.`id` code, " +
|
|
|
|
" tw.`name`, " +
|
|
|
|
" ifnull(c.sum/100,0) sum " +
|
|
|
|
" FROM wlyy_admin_team tw LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" sum(t.total_amount) sum, " +
|
|
|
|
" p.admin_team_id code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription_pay t JOIN wlyy_prescription p ON p.code = t.prescription_code " ;
|
|
|
|
sql = setDisSql(sql,disease);
|
|
|
|
sql += " AND t.trade_status = 1 " +
|
|
|
|
" AND p.hospital,6 ='"+area+"' " +
|
|
|
|
" GROUP BY p.admin_team_id " +
|
|
|
|
" ) c ON c.code = tw.id " +
|
|
|
|
" WHERE tw.org_code ='"+area+"' " +
|
|
|
|
" ORDER BY sum DESC ";
|
|
|
|
List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
|
|
|
|
statisticsAllService.translateTeamLeaderName2(rs);
|
|
|
|
return rs;
|
|
|
|
}else{
|
|
|
|
String sql = "SELECT " +
|
|
|
|
" tw.`id` code, " +
|
|
|
|
" tw.`name`, " +
|
|
|
|
" ifnull(FORMAT(c.avg/100,2),0) avg " +
|
|
|
|
" FROM wlyy_admin_team tw LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" avg(t.total_amount) avg, " +
|
|
|
|
" p.admin_team_id code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription_pay t JOIN wlyy_prescription p ON p.code = t.prescription_code " ;
|
|
|
|
sql = setDisSql(sql,disease);
|
|
|
|
sql += " AND t.trade_status = 1 " +
|
|
|
|
" AND p.hospital ='"+area+"' " +
|
|
|
|
" GROUP BY p.admin_team_id " +
|
|
|
|
" ) c ON c.code = tw.id " +
|
|
|
|
" WHERE tw.org_code ='"+area+"' " +
|
|
|
|
" ORDER BY avg DESC ";
|
|
|
|
List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
|
|
|
|
|
|
|
|
statisticsAllService.translateTeamLeaderName2(rs);
|
|
|
|
|
|
|
|
return rs;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public String setDisSql(String sql,String disease){
|
|
|
|
if(StringUtils.isNotBlank(disease)){
|
|
|
|
sql += " JOIN wlyy_prescription_diagnosis d ON d.prescription_code = p.code WHERE d.health_problem ='"+disease+"' ";
|
|
|
|
}else{
|
|
|
|
sql +=" WHERE 1=1 ";
|
|
|
|
}
|
|
|
|
return sql;
|
|
|
|
}
|
|
|
|
|
|
|
|
public List<Map<String,Object>> getPrescriptionDispatchingTotal(String level,String area,String disease){
|
|
|
|
String sql = "SELECT " +
|
|
|
|
" COUNT(1) total" +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription p " ;
|
|
|
|
sql = setLevelAndDisSql2(sql,disease, level, area);
|
|
|
|
sql += " AND p.`status` > 50 " +
|
|
|
|
" AND p.dispensary_type = ? ";
|
|
|
|
|
|
|
|
List<Map<String,Object>> rs = new ArrayList();
|
|
|
|
//自取数目
|
|
|
|
List<Map<String,Object>> seltList = jdbcTemplate.queryForList(sql,new Object[]{1});
|
|
|
|
if(seltList!=null&&seltList.size()>0){
|
|
|
|
Map<String,Object> map = new HashedMap();
|
|
|
|
map.put("seltTotal",seltList.get(0).get("total"));
|
|
|
|
rs.add(map);
|
|
|
|
}else{
|
|
|
|
Map<String,Object> map = new HashedMap();
|
|
|
|
map.put("seltTotal",0);
|
|
|
|
rs.add(map);
|
|
|
|
}
|
|
|
|
|
|
|
|
//快递配送
|
|
|
|
List<Map<String,Object>> deliveryList = jdbcTemplate.queryForList(sql,new Object[]{2});
|
|
|
|
if(deliveryList!=null&&deliveryList.size()>0){
|
|
|
|
Map<String,Object> map = new HashedMap();
|
|
|
|
map.put("deliveryTotal",deliveryList.get(0).get("total"));
|
|
|
|
rs.add(map);
|
|
|
|
}else{
|
|
|
|
Map<String,Object> map = new HashedMap();
|
|
|
|
map.put("deliveryTotal",0);
|
|
|
|
rs.add(map);
|
|
|
|
}
|
|
|
|
|
|
|
|
//健管师配送
|
|
|
|
List<Map<String,Object>> healthDoctorList = jdbcTemplate.queryForList(sql,new Object[]{2});
|
|
|
|
if(healthDoctorList!=null&&healthDoctorList.size()>0){
|
|
|
|
Map<String,Object> map = new HashedMap();
|
|
|
|
map.put("doctorTotal",healthDoctorList.get(0).get("total"));
|
|
|
|
rs.add(map);
|
|
|
|
}else{
|
|
|
|
Map<String,Object> map = new HashedMap();
|
|
|
|
map.put("doctorTotal",0);
|
|
|
|
rs.add(map);
|
|
|
|
}
|
|
|
|
return rs;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param level
|
|
|
|
* @param area
|
|
|
|
* @param disease
|
|
|
|
* @param type 1.自取,2.快递配送,3.健管师配送
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public List<Map<String,Object>> getPrescriptionDispatchingHistogram(String level,String area,String disease,String type){
|
|
|
|
List<Map<String,Object>> rs =new ArrayList<>();
|
|
|
|
|
|
|
|
Calendar dd = Calendar.getInstance();//定义日期实例
|
|
|
|
Date endDate = new Date();
|
|
|
|
dd.setTime(endDate);
|
|
|
|
|
|
|
|
for(int i=1;i<7;i++){
|
|
|
|
Map<String,Object> mc = new HashedMap();
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
|
|
|
|
String date = sdf.format(dd.getTime());
|
|
|
|
mc.put("month",date);
|
|
|
|
mc.put("count",0);
|
|
|
|
dd.add(Calendar.MONTH,-1);
|
|
|
|
rs.add(mc);
|
|
|
|
}
|
|
|
|
|
|
|
|
String sql = "SELECT count(1) AS count,LEFT(p.create_time,7) AS month " +
|
|
|
|
" FROM wlyy_prescription p ";
|
|
|
|
if(StringUtils.isNotBlank(disease)){
|
|
|
|
sql += " JOIN wlyy_prescription_diagnosis d ON d.prescription_code = p.code WHERE d.health_problem ='"+disease+"' ";
|
|
|
|
}else{
|
|
|
|
sql +=" WHERE 1=1 ";
|
|
|
|
}
|
|
|
|
//市区
|
|
|
|
if("4".equals(level)){
|
|
|
|
//市区无过滤
|
|
|
|
//区级
|
|
|
|
}else if("3".equals(level)){
|
|
|
|
sql += " AND LEFT(p.hospital, 6) = '"+area+"' ";
|
|
|
|
//机构
|
|
|
|
}else if("2".equals(level)){
|
|
|
|
sql += "AND p.hospital = '"+area+"' ";
|
|
|
|
}
|
|
|
|
//类型1.自取,2.快递配送,3.健管师配送
|
|
|
|
if("1".equals(type)){
|
|
|
|
sql +=" AND p.dispensary_type ="+type;
|
|
|
|
}else if("2".equals(type)){
|
|
|
|
sql +=" AND p.dispensary_type ="+type;
|
|
|
|
}else if("3".equals(type)){
|
|
|
|
sql +=" AND p.dispensary_type ="+type;
|
|
|
|
}
|
|
|
|
|
|
|
|
sql += " AND p.`status` >="+PrescriptionLog.PrescriptionLogStatus.pay_success.getValue()+" AND p.create_time >='"+DateUtil.dateToStr(dd.getTime(),"YYYY-MM-dd HH:mm:ss")+"' AND p.create_time <='"+ DateUtil.dateToStr(new Date(),"YYYY-MM-dd HH:mm:ss")+"' GROUP BY LEFT(p.create_time,7) ";
|
|
|
|
|
|
|
|
List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
|
|
|
|
|
|
|
|
for(Map<String,Object> m:rs){
|
|
|
|
Iterator iterator = list.iterator();
|
|
|
|
while (iterator.hasNext()){
|
|
|
|
Map<String,Object> ml = ( Map<String,Object>)iterator.next();
|
|
|
|
String monthKey = (String)m.get("month");
|
|
|
|
String monthKeyDb = (String)ml.get("month");
|
|
|
|
if(monthKey.equals(monthKeyDb)){
|
|
|
|
m.put("count",ml.get("count"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return rs;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param level
|
|
|
|
* @param lowlevel
|
|
|
|
* @param area
|
|
|
|
* @param disease
|
|
|
|
* @param type 1.自取,2.快递配送,3.健管师配送
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public List<Map<String,Object>> getPrescriptionDispatchingLowLevel(String level,String lowlevel,String area,String disease,String type){
|
|
|
|
|
|
|
|
List<Map<String,Object>> rs ;
|
|
|
|
String sql =null;
|
|
|
|
//市级维度
|
|
|
|
if("4".equals(level)){
|
|
|
|
//默认查找市级维度
|
|
|
|
if("3".equals(lowlevel)){
|
|
|
|
sql = "SELECT " +
|
|
|
|
" t.code, " +
|
|
|
|
" t.name, " +
|
|
|
|
" ifnull(s.count,0) num " +
|
|
|
|
" FROM " +
|
|
|
|
" dm_town t " +
|
|
|
|
" LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" count(1) count, " +
|
|
|
|
" LEFT (p.hospital, 6) code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription p ";
|
|
|
|
sql = setDiseaseTypeSql2(disease,type,sql);
|
|
|
|
sql += " GROUP BY " +
|
|
|
|
" LEFT (p.hospital, 6) " +
|
|
|
|
" ) s ON s.code = t.code " +
|
|
|
|
" WHERE " +
|
|
|
|
" t.city='350200' " +
|
|
|
|
" ORDER BY num DESC";
|
|
|
|
}else if("2".equals(lowlevel)){
|
|
|
|
sql = "SELECT " +
|
|
|
|
" t.code, " +
|
|
|
|
" t.name, " +
|
|
|
|
" ifnull(s.count,0) num " +
|
|
|
|
" FROM " +
|
|
|
|
" dm_hospital t " +
|
|
|
|
" LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" count(1) count, " +
|
|
|
|
" p.hospital code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription p ";
|
|
|
|
sql = setDiseaseTypeSql2(disease,type,sql);
|
|
|
|
sql += " GROUP BY " +
|
|
|
|
" p.hospital " +
|
|
|
|
" ) s ON s.code = t.code " +
|
|
|
|
" WHERE " +
|
|
|
|
" t.city='350200' " +
|
|
|
|
" AND LENGTH(t.code)=10 " +
|
|
|
|
" ORDER BY num DESC";
|
|
|
|
}else if("1".equals(lowlevel)){
|
|
|
|
sql = " SELECT " +
|
|
|
|
" t.id code, " +
|
|
|
|
" t.name, " +
|
|
|
|
" ifnull(s.count,0) num " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_admin_team t " +
|
|
|
|
" LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" count(1) count, " +
|
|
|
|
" p.admin_team_id code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription p " ;
|
|
|
|
sql = setDiseaseTypeSql2(disease,type,sql);
|
|
|
|
sql += " GROUP BY " +
|
|
|
|
" p.admin_team_id " +
|
|
|
|
" ) s ON s.code = t.id " +
|
|
|
|
" ORDER BY num DESC ";
|
|
|
|
}
|
|
|
|
//区级维度
|
|
|
|
}else if("3".equals(level)){
|
|
|
|
if("2".equals(lowlevel)){
|
|
|
|
sql = "SELECT " +
|
|
|
|
" t.code, " +
|
|
|
|
" t.name, " +
|
|
|
|
" ifnull(s.count,0) num " +
|
|
|
|
" FROM " +
|
|
|
|
" dm_hospital t " +
|
|
|
|
" LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" count(1) count, " +
|
|
|
|
" p.hospital code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription p ";
|
|
|
|
sql = setDiseaseTypeSql2(disease,type,sql);
|
|
|
|
sql += " GROUP BY " +
|
|
|
|
" p.hospital " +
|
|
|
|
" ) s ON s.code = t.code " +
|
|
|
|
" WHERE " +
|
|
|
|
" t.city='350200' " +
|
|
|
|
" AND LENGTH(t.code)=10 " +
|
|
|
|
" AND t.town ='"+area+"'" +
|
|
|
|
" ORDER BY num DESC";
|
|
|
|
}else if("1".equals(lowlevel)){
|
|
|
|
sql = " SELECT " +
|
|
|
|
" t.id code, " +
|
|
|
|
" t.name, " +
|
|
|
|
" ifnull(s.count,0) num " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_admin_team t " +
|
|
|
|
" LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" count(1) count, " +
|
|
|
|
" p.admin_team_id code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription p " ;
|
|
|
|
sql = setDiseaseTypeSql2(disease,type,sql);
|
|
|
|
sql += " GROUP BY " +
|
|
|
|
" p.admin_team_id " +
|
|
|
|
" ) s ON s.code = t.id " +
|
|
|
|
" WHERE LEFT(t.org_code,6) ='"+area+"' " +
|
|
|
|
" ORDER BY num DESC ";
|
|
|
|
}
|
|
|
|
//机构级维度
|
|
|
|
}else if("2".equals(level)){
|
|
|
|
if("1".equals(lowlevel)){
|
|
|
|
sql = " SELECT " +
|
|
|
|
" t.id code, " +
|
|
|
|
" t.name, " +
|
|
|
|
" ifnull(s.count,0) num " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_admin_team t " +
|
|
|
|
" LEFT JOIN ( " +
|
|
|
|
" SELECT " +
|
|
|
|
" count(1) count, " +
|
|
|
|
" p.admin_team_id code " +
|
|
|
|
" FROM " +
|
|
|
|
" wlyy_prescription p " ;
|
|
|
|
sql = setDiseaseTypeSql2(disease,type,sql);
|
|
|
|
sql += " GROUP BY " +
|
|
|
|
" p.admin_team_id " +
|
|
|
|
" ) s ON s.code = t.id " +
|
|
|
|
" WHERE t.org_code ='"+area+"'" +
|
|
|
|
" ORDER BY num DESC ";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
rs = jdbcTemplate.queryForList(sql);
|
|
|
|
if("1".equals(level)){
|
|
|
|
statisticsAllService.translateTeamLeaderName2(rs);
|
|
|
|
}
|
|
|
|
return rs;
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|