Преглед на файлове

Merge branch 'dev' of http://192.168.1.220:10080/Amoy/patient-co-management into dev

yeshijie преди 7 години
родител
ревизия
b23a0f3c98

+ 133 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/patient/prescription/PrescriptionAdress.java

@ -0,0 +1,133 @@
package com.yihu.wlyy.entity.patient.prescription;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by Trick on 2017/10/20.
 */
@Entity
@Table(name = "wlyy_prescription_adress")
public class PrescriptionAdress extends IdEntity {
    private String patient;//关联患者
    private String name;//名字
    private String phone;//手机
    private String province;//省编码
    private String city;//市编码
    private String town;//区编码
    private String provinceName;//省会
    private String cityName;//城市
    private String townName;//区
    private String adress; //地址
    private String defaultFlag;//0.非首选,1.首选
    private Date createTime;//创建时间
    private Date updateTime;//更新时间
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getProvince() {
        return province;
    }
    public void setProvince(String province) {
        this.province = province;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public String getTown() {
        return town;
    }
    public void setTown(String town) {
        this.town = town;
    }
    public String getProvinceName() {
        return provinceName;
    }
    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }
    public String getCityName() {
        return cityName;
    }
    public void setCityName(String cityName) {
        this.cityName = cityName;
    }
    public String getTownName() {
        return townName;
    }
    public void setTownName(String townName) {
        this.townName = townName;
    }
    public String getAdress() {
        return adress;
    }
    public void setAdress(String adress) {
        this.adress = adress;
    }
    public String getDefaultFlag() {
        return defaultFlag;
    }
    public void setDefaultFlag(String defaultFlag) {
        this.defaultFlag = defaultFlag;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}

+ 31 - 13
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/physicalExamination/PhysicalExaminationRemindService.java

@ -322,11 +322,13 @@ public class PhysicalExaminationRemindService extends BaseService {
        String mobile = patient.getMobile();
        String mobile = patient.getMobile();
        Boolean flag = true;
        Boolean flag = true;
        // 推送消息给微信端
        // 推送消息给微信端
        String url = "huanzhe/html/jiankangtijian.html?openid=" + patient.getOpenid() +"&toUser="+patient.getCode()+"&toName=" + patient.getName();
        String first = "您的家庭医生" + doctName + "提醒,您可以到签约社区进行免费的健康体检啦~";
        JSONObject json = new org.json.JSONObject();
        JSONObject json = new org.json.JSONObject();
        json.put("first", "您的家庭医生" + doctName + "提醒,您可以到签约社区进行免费的健康体检啦~");
        json.put("first",first);
        json.put("url",url);
        json.put("keyword1", "健康体检");
        json.put("keyword1", "健康体检");
        json.put("keyword2", format.format(new Date()));
        json.put("keyword2", format.format(new Date()));
        json.put("url", "");
        json.put("remark", "为了您和您的家庭医生了解您近期的健康状况,请及时到您签约的社区体检哟~");
        json.put("remark", "为了您和您的家庭医生了解您近期的健康状况,请及时到您签约的社区体检哟~");
        if (StringUtils.isNotBlank(patient.getOpenid())) {
        if (StringUtils.isNotBlank(patient.getOpenid())) {
            pushMsgTask.putWxMsg(accessToken, 11, patient.getOpenid(), patient.getName(), json);
            pushMsgTask.putWxMsg(accessToken, 11, patient.getOpenid(), patient.getName(), json);
@ -338,11 +340,14 @@ public class PhysicalExaminationRemindService extends BaseService {
            for (int i = 0; i < jsonArray.length(); i++) {
            for (int i = 0; i < jsonArray.length(); i++) {
                org.json.JSONObject j = jsonArray.getJSONObject(i);
                org.json.JSONObject j = jsonArray.getJSONObject(i);
                Patient member = (Patient) j.get("member");
                Patient member = (Patient) j.get("member");
                json.remove("toUser");
                json.put("toUser", member.getCode());
                int start = url.indexOf("&toUser=");
                int end = url.indexOf("&", start + 1);
                String touser = url.substring(start, end);
                url = url.replace(touser, "&toUser=" + member.getCode());
                json.remove("first");
                json.remove("first");
                try {
                try {
                    json.put("first", openIdUtils.getTitleMes(patient, j.isNull("relation") ? 1 : j.getInt("relation"), patient.getName()));
                    json.put("first", openIdUtils.getTitleMes(patient, j.isNull("relation") ? 1 : j.getInt("relation"), patient.getName())+first);
                    json.put("url", url);
                } catch (Exception e) {
                } catch (Exception e) {
                    e.printStackTrace();
                    e.printStackTrace();
                }
                }
@ -354,7 +359,7 @@ public class PhysicalExaminationRemindService extends BaseService {
        }
        }
//        微信发送失败发送短信
//        微信发送失败发送短信
        if (flag && StringUtils.isNotEmpty(mobile)) {
        if (flag && StringUtils.isNotEmpty(mobile)) {
            smsService.sendMsg(mobile, "您的家庭医生" + doctName + "提醒,您可以到签约社区进行免费的健康体检啦~");
            smsService.sendMsg(mobile, "厦门i健康家庭医生温馨提醒,您已经超过一年没有到社区进行健康体检啦,为了您和您的家庭医生了解您近期的健康状况,请及时到签约社区进行免费的健康体检");
        }
        }
        //保存发送提醒
        //保存发送提醒
@ -381,15 +386,25 @@ public class PhysicalExaminationRemindService extends BaseService {
        Boolean flag = true;
        Boolean flag = true;
        // 推送消息给微信端
        // 推送消息给微信端
        JSONObject json = new org.json.JSONObject();
        JSONObject json = new org.json.JSONObject();
        json.put("first", "您的家庭医生" + doctName + "提醒,您可以到签约社区进行免费的健康体检啦~");
        json.put("keyword1", "健康体检");
        json.put("keyword1", "健康体检");
        json.put("keyword2", format.format(new Date()));
        json.put("keyword2", format.format(new Date()));
        json.put("url", "");
        json.put("remark", "为了您和您的家庭医生了解您近期的健康状况,请及时到您签约的社区体检哟~");
        json.put("remark", "为了您和您的家庭医生了解您近期的健康状况,请及时到您签约的社区体检哟~");
        List<Patient> patients = patientDao.findExaminationRemind(teamId, new Date());
        Calendar c = Calendar.getInstance();
        c.setTime(new Date());
        c.add(Calendar.YEAR, -1);
        Date yesteryear = c.getTime();
        List<Patient> patients = patientDao.findExaminationRemind(teamId, yesteryear);
        for (Patient patient : patients) {
        for (Patient patient : patients) {
            String url = "huanzhe/html/jiankangtijian.html?openid=" + patient.getOpenid() +"&toUser="+patient.getCode()+"&toName=" + patient.getName();
            String first = "您的家庭医生" + doctName + "提醒,您可以到签约社区进行免费的健康体检啦~";
            json.put("first",first);
            json.put("url",url);
            String mobile = patient.getMobile();
            String mobile = patient.getMobile();
            List<PatientRemindRecords> records = patientRemindRecordsDao.findByPatientAndType(patient.getCode(), 1);
            if (records != null && records.size() > 0) {
                continue;
            }
            if (StringUtils.isNotBlank(patient.getOpenid())) {
            if (StringUtils.isNotBlank(patient.getOpenid())) {
                pushMsgTask.putWxMsg(accessToken, 11, patient.getOpenid(), patient.getName(), json);
                pushMsgTask.putWxMsg(accessToken, 11, patient.getOpenid(), patient.getName(), json);
                flag = false;
                flag = false;
@ -400,11 +415,14 @@ public class PhysicalExaminationRemindService extends BaseService {
                for (int i = 0; i < jsonArray.length(); i++) {
                for (int i = 0; i < jsonArray.length(); i++) {
                    org.json.JSONObject j = jsonArray.getJSONObject(i);
                    org.json.JSONObject j = jsonArray.getJSONObject(i);
                    Patient member = (Patient) j.get("member");
                    Patient member = (Patient) j.get("member");
                    json.remove("toUser");
                    json.put("toUser", member.getCode());
                    int start = url.indexOf("&toUser=");
                    int end = url.indexOf("&", start + 1);
                    String touser = url.substring(start, end);
                    url = url.replace(touser, "&toUser=" + member.getCode());
                    json.remove("first");
                    json.remove("first");
                    try {
                    try {
                        json.put("first", openIdUtils.getTitleMes(patient, j.isNull("relation") ? 1 : j.getInt("relation"), patient.getName()));
                        json.put("first", openIdUtils.getTitleMes(patient, j.isNull("relation") ? 1 : j.getInt("relation"), patient.getName())+first);
                        json.put("url", url);
                    } catch (Exception e) {
                    } catch (Exception e) {
                        e.printStackTrace();
                        e.printStackTrace();
                    }
                    }
@ -416,7 +434,7 @@ public class PhysicalExaminationRemindService extends BaseService {
            }
            }
            //        微信发送失败发送短信
            //        微信发送失败发送短信
            if (flag && StringUtils.isNotEmpty(mobile)) {
            if (flag && StringUtils.isNotEmpty(mobile)) {
                smsService.sendMsg(mobile, "您的家庭医生" + doctName + "提醒,您可以到签约社区进行免费的健康体检啦~");
                smsService.sendMsg(mobile, "厦门i健康家庭医生温馨提醒,您已经超过一年没有到社区进行健康体检啦,为了您和您的家庭医生了解您近期的健康状况,请及时到签约社区进行免费的健康体检");
            }
            }
            flag = true;
            flag = true;
            //保存发送提醒
            //保存发送提醒

+ 564 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsService.java

@ -5476,7 +5476,7 @@ public class StatisticsService extends BaseService {
    public String setLevelAndDisSql2(String sql,String disease,String level,String area){
    public String setLevelAndDisSql2(String sql,String disease,String level,String area){
        if(StringUtils.isNotBlank(disease)){
        if(StringUtils.isNotBlank(disease)){
            sql += " JOIN wlyy_prescription_diagnosis d ON d.prescription_code = t.prescription_code ";
            sql += " JOIN wlyy_prescription_diagnosis d ON d.prescription_code = p.code ";
        }
        }
        if("4".equals(level)){
        if("4".equals(level)){
            sql +=" WHERE 1=1  ";
            sql +=" WHERE 1=1  ";
@ -6100,5 +6100,568 @@ public class StatisticsService extends BaseService {
        }
        }
        return rs;
        return rs;
    }
    }
    public List<Map<String,Object>> getPrescriptionAgeTotal(String level,String area,String disease){
        String sql = "SELECT " +
                " ( " +
                "  SELECT " +
                "   count(1) 0age " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient ";
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   )>= 0 " +
                "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "   RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "  ) <= 6 " +
                " ) 0age, " +
                " ( " +
                "  SELECT " +
                "   count(1) 7age " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient ";
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   ) >= 7 " +
                "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "   RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "  ) <= 18 " +
                " ) 7age, " +
                " ( " +
                "  SELECT " +
                "   count(1) 19age " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient " ;
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  " AND  YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   ) >= 19 " +
                "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "   RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "  ) <= 30 " +
                " ) 19age, " +
                " ( " +
                "  SELECT " +
                "   count(1) 31age " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient " ;
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  " AND  YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   ) >= 31 " +
                "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "   RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "  ) <= 50 " +
                " ) 31age, " +
                " ( " +
                "  SELECT " +
                "   count(1) 51age " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient ";
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  " AND  YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   ) >= 51 " +
                "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "   RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "  ) <= 64 " +
                "  ) 51age, " +
                " ( " +
                "  SELECT " +
                "   count(1) 65age " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient " ;
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  " AND  YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   ) >= 65 " +
                "  ) 65age, " +
                "  ( " +
                "  SELECT " +
                "   count(1) total " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient " ;
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql += "  ) total";
        List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
        if(rs!=null&&rs.size()>0){
            Long age0 = (Long)rs.get(0).get("0age");
            Long age7 = (Long)rs.get(0).get("7age");
            Long age19 = (Long)rs.get(0).get("19age");
            Long age31 = (Long)rs.get(0).get("31age");
            Long age51 = (Long)rs.get(0).get("51age");
            Long age65 = (Long)rs.get(0).get("65age");
            Long total = (Long)rs.get(0).get("total");
            rs.get(0).put("0ageRate",getAgeRate(age0,total));
            rs.get(0).put("7ageRate",getAgeRate(age7,total));
            rs.get(0).put("19ageRate",getAgeRate(age19,total));
            rs.get(0).put("31ageRate",getAgeRate(age31,total));
            rs.get(0).put("51ageRate",getAgeRate(age51,total));
            rs.get(0).put("65ageRate",getAgeRate(age65,total));
        }
        return rs;
    }
    public String getAgeRate(Long age,Long total){
        if(total!=null&&total!=0){
            float ageRate0 = age.floatValue()/total.floatValue()*100;
            DecimalFormat decimalFormat=new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
            String ageR0=decimalFormat.format(ageRate0)+"%";//format 返回的是字符串
            return ageR0;
        }
        return "0";
    }
    public String getAgeRateLine(Long age,Long total){
        if(total!=null&&total!=0){
            float ageRate0 = age.floatValue()/total.floatValue();
            DecimalFormat decimalFormat=new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
            String ageR0=decimalFormat.format(ageRate0);//format 返回的是字符串
            return ageR0;
        }
        return "0";
    }
    public List<Map<String,Object>> getPrescriptionAgeHistogram(String level,String area,String disease,String startDate,String endDate){
        startDate += " 00:00:00";
        endDate += " 23:59:59";
        String sql ="SELECT " +
                " ( " +
                "  SELECT " +
                "   count(1) 0age " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient ";
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  " AND  YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   )>= 0 " +
                "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "   RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "  ) <= 6 " +
                "  AND p.create_time >='"+startDate+"'  " +
                "  AND p.create_time <='"+endDate+"' " +
                " ) 0age,( " +
                " SELECT " +
                " COUNT(c.patient)  " +
                " FROM " +
                " ( " +
                "  SELECT " +
                "    DISTINCT p.patient " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient ";
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  " AND  YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   )>= 0 " +
                "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "   RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "  ) <= 6 " +
                "  AND p.create_time >='"+startDate+"'  " +
                "  AND p.create_time <='"+endDate+"') c " +
                " ) 0people, " +
                " ( " +
                "  SELECT " +
                "   count(1) 7age " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient ";
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  " AND  YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   ) >= 7 " +
                "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "   RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "  ) <= 18 " +
                "  AND p.create_time >='"+startDate+"'  " +
                "  AND p.create_time <='"+endDate+"' " +
                " ) 7age,( " +
                " SELECT " +
                " COUNT(c.patient)  " +
                " FROM " +
                " ( " +
                "  SELECT " +
                "    DISTINCT p.patient " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient ";
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  " AND  YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   ) >= 7 " +
                "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "   RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "  ) <= 18 " +
                "  AND p.create_time >='"+startDate+"'  " +
                "  AND p.create_time <='"+endDate+"') c " +
                " ) 7people, " +
                " ( " +
                "  SELECT " +
                "   count(1) 19age " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient " ;
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  " AND  YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   ) >= 19 " +
                "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "   RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "  ) <= 30 " +
                "  AND p.create_time >='"+startDate+"'  " +
                "  AND p.create_time <='"+endDate+"' " +
                " ) 19age,( " +
                " SELECT " +
                " COUNT(c.patient)  " +
                " FROM " +
                " ( " +
                "  SELECT " +
                "    DISTINCT p.patient " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient " ;
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  " AND  YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   ) >= 19 " +
                "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "   RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "  ) <= 30 " +
                "  AND p.create_time >='"+startDate+"'  " +
                "  AND p.create_time <='"+endDate+"') c " +
                "  ) 19people, " +
                "  ( " +
                "  SELECT " +
                "   count(1) 31age " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient ";
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  " AND  YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   ) >= 31 " +
                "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "   RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "  ) <= 50 " +
                "  AND p.create_time >='"+startDate+"'  " +
                "  AND p.create_time <='"+endDate+"' " +
                " ) 31age,( " +
                " SELECT " +
                " COUNT(c.patient)  " +
                " FROM " +
                " ( " +
                "  SELECT " +
                "    DISTINCT p.patient " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient ";
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  " AND  YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   ) >= 31 " +
                "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "   RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "  ) <= 50 " +
                "  AND p.create_time >='"+startDate+"'  " +
                "  AND p.create_time <='"+endDate+"') c " +
                "  ) 31people, " +
                "  ( " +
                "  SELECT " +
                "   count(1) 51age " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient " ;
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  " AND  YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   ) >= 51 " +
                "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "   RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "  ) <= 64 " +
                "  AND p.create_time >='"+startDate+"'  " +
                "  AND p.create_time <='"+endDate+"' " +
                " ) 51age,( " +
                " SELECT " +
                " COUNT(c.patient)  " +
                " FROM " +
                " ( " +
                "  SELECT " +
                "    DISTINCT p.patient " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient ";
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  " AND  YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   ) >= 51 " +
                "  AND YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "   RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "  ) <= 64 " +
                "  AND p.create_time >='"+startDate+"'  " +
                "  AND p.create_time <='"+endDate+"') c " +
                " ) 51people, " +
                " ( " +
                "  SELECT " +
                "   count(1) 65age " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient ";
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  " AND  YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   ) >= 65 " +
                "  AND p.create_time >='"+startDate+"'  " +
                "  AND p.create_time <='"+endDate+"' " +
                " ) 65age,( " +
                " SELECT " +
                " COUNT(c.patient)  " +
                " FROM " +
                " ( " +
                "  SELECT " +
                "    DISTINCT p.patient " +
                "  FROM " +
                "   wlyy_prescription p " +
                "  JOIN wlyy_patient pt ON pt. CODE = p.patient ";
        sql = setLevelAndDisSql2(sql,disease,level,area);
        sql +=  " AND  YEAR (CURDATE()) - YEAR (birthday) - ( " +
                "    RIGHT (CURDATE(), 5) < RIGHT (birthday, 5) " +
                "   ) >= 65 " +
                "  AND p.create_time >='"+startDate+"'  " +
                "  AND p.create_time <='"+endDate+"') c " +
                " ) 65people";
        List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
        if(rs!=null&&rs.size()>0){
            Long age0 = (Long)rs.get(0).get("0age");
            Long age7 = (Long)rs.get(0).get("7age");
            Long age19 = (Long)rs.get(0).get("19age");
            Long age31 = (Long)rs.get(0).get("31age");
            Long age51 = (Long)rs.get(0).get("51age");
            Long age65 = (Long)rs.get(0).get("65age");
            Long people0 = (Long)rs.get(0).get("0people");
            Long people7 = (Long)rs.get(0).get("7people");
            Long people19 = (Long)rs.get(0).get("19people");
            Long people31 = (Long)rs.get(0).get("31people");
            Long people51 = (Long)rs.get(0).get("51people");
            Long people65= (Long)rs.get(0).get("65people");
            rs.get(0).put("0ageRate",getAgeRateLine(age0,people0));
            rs.get(0).put("7ageRate",getAgeRateLine(age7,people7));
            rs.get(0).put("19ageRate",getAgeRateLine(age19,people19));
            rs.get(0).put("31ageRate",getAgeRateLine(age31,people31));
            rs.get(0).put("51ageRate",getAgeRateLine(age51,people51));
            rs.get(0).put("65ageRate",getAgeRateLine(age65,people65));
        }
        return rs;
    }
    public List<Map<String,Object>> getPrescriptionAgeLowLevel(String level,String lowlevel,String area,String disease) {
        if("4".equals(level)){
            if("3".equals(lowlevel)){
                String sql = "SELECT " +
                        " tw.`code`, " +
                        " tw.`name`, " +
                        "  ifnull(c.total,0) num " +
                        " FROM " +
                        " dm_town tw LEFT JOIN ( " +
                        " SELECT " +
                        " count(1) total, " +
                        " LEFT(pp.hospital,6) code " +
                        " FROM " +
                        " ( " +
                        "  SELECT DISTINCT " +
                        "   p.patient, " +
                        "   p.admin_team_id, " +
                        "   p.hospital " +
                        "  FROM " +
                        "   wlyy_prescription p " ;
                sql = setDisSql( sql, disease);
                sql +=  " ) pp " +
                        " GROUP BY " +
                        " LEFT(pp.hospital,6) " +
                        " ) c ON c.code = tw.code " +
                        " WHERE " +
                        " tw.city = '350200' " +
                        "   ORDER BY num DESC ";
                List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
                return rs;
            }else if("2".equals(lowlevel)){
                String sql = "SELECT " +
                        " tw.`code`, " +
                        " tw.`name`, " +
                        "  ifnull(c.total,0) num " +
                        " FROM " +
                        " dm_hospital tw LEFT JOIN ( " +
                        " SELECT " +
                        " count(1) total, " +
                        " pp.hospital code " +
                        " FROM " +
                        " ( " +
                        "  SELECT DISTINCT " +
                        "   p.patient, " +
                        "   p.admin_team_id, " +
                        "   p.hospital " +
                        "  FROM " +
                        "   wlyy_prescription p ";
                sql = setDisSql(sql,disease);
                sql +=  " ) pp " +
                        " GROUP BY " +
                        " pp.hospital " +
                        " ) c ON c.code = tw.code " +
                        " WHERE " +
                        " tw.city = '350200' " +
                        " AND LENGTH(tw.code)=10 " +
                        " ORDER BY num DESC ";
                List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
                return rs;
            }else if("1".equals(lowlevel)){
                String sql ="SELECT " +
                        " tw.id code, " +
                        " tw.`name`, " +
                        "  ifnull(c.total,0) num " +
                        " FROM " +
                        " wlyy_admin_team tw LEFT JOIN ( " +
                        " SELECT " +
                        " count(1) total, " +
                        " pp.admin_team_id code " +
                        " FROM " +
                        " ( " +
                        "  SELECT DISTINCT " +
                        "   p.patient, " +
                        "   p.admin_team_id, " +
                        "   p.hospital " +
                        "  FROM " +
                        "   wlyy_prescription p ";
                sql = setDisSql(sql,disease);
                sql +=  " ) pp " +
                        " GROUP BY " +
                        " pp.admin_team_id " +
                        " ) c ON c.code = tw.id " +
                        " WHERE " +
                        " 1=1  " +
                        " ORDER BY num DESC ";
                List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
                statisticsAllService.translateTeamLeaderName2(rs);
                return rs;
            }
        }else if("3".equals(level)){
            if("2".equals(lowlevel)){
                String sql = "SELECT " +
                        " tw.`code`, " +
                        " tw.`name`, " +
                        "  ifnull(c.total,0) num " +
                        " FROM " +
                        " dm_hospital tw LEFT JOIN ( " +
                        " SELECT " +
                        " count(1) total, " +
                        " pp.hospital code " +
                        " FROM " +
                        " ( " +
                        "  SELECT DISTINCT " +
                        "   p.patient, " +
                        "   p.admin_team_id, " +
                        "   p.hospital " +
                        "  FROM " +
                        "   wlyy_prescription p ";
                sql = setDisSql(sql,disease);
                sql +=  " AND LEFT(p.hospital,6) ='"+area+"'" +
                        " ) pp " +
                        " GROUP BY " +
                        " pp.hospital " +
                        " ) c ON c.code = tw.code " +
                        " WHERE " +
                        " tw.city = '350200' " +
                        " AND tw.town ='"+area+"' " +
                        " AND LENGTH(tw.code)=10 " +
                        " ORDER BY num DESC ";
                List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
                return rs;
            }else if("1".equals(lowlevel)){
                String sql ="SELECT " +
                        " tw.id code, " +
                        " tw.`name`, " +
                        "  ifnull(c.total,0) num " +
                        " FROM " +
                        " wlyy_admin_team tw LEFT JOIN ( " +
                        " SELECT " +
                        " count(1) total, " +
                        " pp.admin_team_id code " +
                        " FROM " +
                        " ( " +
                        "  SELECT DISTINCT " +
                        "   p.patient, " +
                        "   p.admin_team_id, " +
                        "   p.hospital " +
                        "  FROM " +
                        "   wlyy_prescription p ";
                sql = setDisSql(sql,disease);
                sql +=  " AND LEFT(p.hospital,6) ='"+area+"'" +
                        ") pp " +
                        " GROUP BY " +
                        " pp.admin_team_id " +
                        " ) c ON c.code = tw.id " +
                        " WHERE " +
                        " 1=1  " +
                        " AND LEFT(tw.org_code,6) ='"+area+"' " +
                        " ORDER BY num DESC ";
                List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
                statisticsAllService.translateTeamLeaderName2(rs);
                return rs;
            }
        }else if("2".equals(level)){
            if("1".equals(lowlevel)){
                String sql ="SELECT " +
                        " tw.id code, " +
                        " tw.`name`, " +
                        "  ifnull(c.total,0) num " +
                        " FROM " +
                        " wlyy_admin_team tw LEFT JOIN ( " +
                        " SELECT " +
                        " count(1) total, " +
                        " pp.admin_team_id code " +
                        " FROM " +
                        " ( " +
                        "  SELECT DISTINCT " +
                        "   p.patient, " +
                        "   p.admin_team_id, " +
                        "   p.hospital " +
                        "  FROM " +
                        "   wlyy_prescription p ";
                sql = setDisSql(sql,disease);
                sql +=  " AND p.hospital ='"+area+"'" +
                        ") pp " +
                        " GROUP BY " +
                        " pp.admin_team_id " +
                        " ) c ON c.code = tw.id " +
                        " WHERE " +
                        " 1=1  " +
                        " AND tw.org_code ='"+area+"' " +
                        " ORDER BY num DESC ";
                List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
                statisticsAllService.translateTeamLeaderName2(rs);
                return rs;
            }
        }
        return null;
    }
}
}

+ 46 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/StatisticsController.java

@ -1804,4 +1804,50 @@ public class StatisticsController extends BaseController {
            return error(-1, "查询失败");
            return error(-1, "查询失败");
        }
        }
    }
    }
    @RequestMapping("/getPrescriptionAgeTotal")
    @ResponseBody
    @ApiOperation("年龄统计-上部总数图")
    public String  getPrescriptionAgeTotal(@ApiParam(name="level", value="级别") @RequestParam(required = true)String level,
                                           @ApiParam(name="area", value="级别编码") @RequestParam(required = true)String area,
                                           @ApiParam(name="disease", value="疾病") @RequestParam(required = false)String disease){
        try{
            return write(200, "查询成功", "data", statisticsService.getPrescriptionAgeTotal(level,area,disease));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
        }
    }
    @RequestMapping("/getPrescriptionAgeHistogram")
    @ResponseBody
    @ApiOperation("年龄统计-中部部条形图")
    public String getPrescriptionAgeHistogram(@ApiParam(name="level", value="级别") @RequestParam(required = true)String level,
                                              @ApiParam(name="area", value="级别编码") @RequestParam(required = true)String area,
                                              @ApiParam(name="disease", value="疾病") @RequestParam(required = false)String disease,
                                              @ApiParam(name="startDate", value="开始时间") @RequestParam(required = true)String startDate,
                                              @ApiParam(name="endDate", value="结束时间") @RequestParam(required = true)String endDate){
        try{
            return write(200, "查询成功", "data", statisticsService.getPrescriptionAgeHistogram(level,area,disease,startDate,endDate));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
        }
    }
    @RequestMapping("/getPrescriptionAgeLowLevel")
    @ResponseBody
    @ApiOperation("年龄统计-下部列表")
    public String getPrescriptionAgeLowLevel(@ApiParam(name="level", value="级别") @RequestParam(required = true)String level,
                                             @ApiParam(name="lowlevel", value="第二级别") @RequestParam(required = true)String lowlevel,
                                             @ApiParam(name="area", value="级别编码") @RequestParam(required = true)String area,
                                             @ApiParam(name="disease", value="疾病") @RequestParam(required = false)String disease){
        try{
            return write(200, "查询成功", "data", statisticsService.getPrescriptionAgeLowLevel(level,lowlevel,area,disease));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
        }
    }
}
}