Explorar o código

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

zd_123 %!s(int64=7) %!d(string=hai) anos
pai
achega
f30fcfef44

+ 1 - 1
common/common-entity/src/main/java/com/yihu/wlyy/entity/job/QuartzJobConfig.java

@ -31,7 +31,7 @@ public class QuartzJobConfig implements java.io.Serializable {
	/** full constructor */
	public QuartzJobConfig(String jobName, String jobInfo, String jobType,
                           String jobClass, String quartzCron, String status) {
						   String jobClass, String quartzCron, String status) {
		this.jobName = jobName;
		this.jobInfo = jobInfo;
		this.jobType = jobType;

+ 1 - 1
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/prescription/PrescriptionProCAServiceImp.java

@ -26,7 +26,7 @@ import java.util.UUID;
 * Created by hzp on 2017-07-31
 * 长处方CA认证服务
 */
@Profile({"production"})
@Profile({"production","local"})
@Service
public class PrescriptionProCAServiceImp extends ZysoftBaseService implements PrescriptionCAService{

+ 17 - 0
patient-co-service/wlyy_service/src/main/resources/application.yml

@ -119,6 +119,23 @@ spring:
    maxTotal: 500
    maxIdle: 30
  redis:
    host: 10.95.22.142 # Redis server host.
    port: 6380 # Redis server port.
    password: jkzlehr
im:
  data_base_name: im
---
spring:
  profiles: local
  datasource:
    url: jdbc:mysql://10.95.22.7:3306/wlyy?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    username: wlyy
    password: jkzlehr@123
    driverClassName: com.mysql.jdbc.Driver
    maxTotal: 500
    maxIdle: 30
  redis:
    host: 10.95.22.142 # Redis server host.
    port: 6380 # Redis server port.

+ 8 - 0
patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/convert/Convert.java

@ -12,5 +12,13 @@ import java.util.List;
 * Created by chenweida on 2017/6/5.
 */
public interface Convert {
    /**
     *
     * @param jdbcTemplate jdbc工具
     * @param oneList 需要赋值的数据
     * @param slaveLevel 维度 1 2 3
     * @param temp 指标类
     * @return
     */
    public List<DataModel> convert(JdbcTemplate jdbcTemplate,List<DataModel> oneList, String slaveLevel, WlyyDimensionQuota temp );
}

+ 87 - 0
patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/convert/wlyy/DiseaseAndAgeConvert.java

@ -0,0 +1,87 @@
package com.yihu.wlyy.statistics.etl.convert.wlyy;
import com.yihu.wlyy.entity.dimension.WlyyDimensionQuota;
import com.yihu.wlyy.statistics.etl.convert.Convert;
import com.yihu.wlyy.statistics.etl.convert.wlyy.model.HealthLable;
import com.yihu.wlyy.statistics.vo.DataModel;
import org.springframework.beans.BeanUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 疾病年龄
 * Created by chenweida on 2017/10/16.
 */
public class DiseaseAndAgeConvert implements Convert {
    @Override
    public List<DataModel> convert(JdbcTemplate jdbcTemplate, List<DataModel> oneList, String slaveLevel, WlyyDimensionQuota temp) {
        List<DataModel> returnList = new ArrayList<>();
        Map<String, List<String>> healthLablesMap = new HashMap<>();//key是患者code value是患者标签 1高血压 2糖尿病 3 65岁以上
        //初始化标签Map
        initHealthLabesMap(jdbcTemplate, healthLablesMap);
        //把标签Map设置到对应的维度里面
        for (DataModel dataModel : oneList) {
            List<String> labels = healthLablesMap.get(dataModel.getPatient());
            if (labels != null && labels.size() > 0) {
                labels.stream().forEach(str -> {
                    try {
                        DataModel dataModelTemp = new DataModel();
                        BeanUtils.copyProperties(dataModel, dataModelTemp);
                        DataModel.class.getMethod("setSlaveKey" + slaveLevel, String.class).invoke(dataModelTemp, str);
                        returnList.add(dataModelTemp);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                });
            }
        }
        return returnList;
    }
    private void initHealthLabesMap(JdbcTemplate jdbcTemplate, Map<String, List<String>> healthLablesMap) {
        //得到患者的疾病标签(只要高血压 糖尿病)
        String sql = "SELECT " +
                "  spli.label AS health_lable, " +
                "  spli.patient " +
                "FROM " +
                "  wlyy_sign_patient_label_info spli " +
                "WHERE " +
                "  spli.label_type = '3' " +
                "AND spli. STATUS = '1' " +
                "AND ( spli.label =1 or spli.label =2 )";
        List<HealthLable> healthLables = jdbcTemplate.query(sql, new BeanPropertyRowMapper(HealthLable.class));
        healthLables.stream().forEach(one -> {
            List<String> labels = healthLablesMap.get(one.getPatient());
            if (labels == null) {
                labels = new ArrayList<String>();
            }
            labels.add(one.getHealthLable());
            healthLablesMap.put(one.getPatient(), labels);
        });
        //-得到患者的老年人标签
        sql = " SELECT " +
                "  spli.label AS health_lable, " +
                "  spli.patient " +
                " FROM " +
                "  wlyy_sign_patient_label_info spli " +
                " WHERE " +
                "  spli.label_type = '1' " +
                " AND spli. STATUS = '1' " +
                " AND spli.label = 3 ";
        healthLables = jdbcTemplate.query(sql, new BeanPropertyRowMapper(HealthLable.class));
        healthLables.stream().forEach(one -> {
            List<String> labels = healthLablesMap.get(one.getPatient());
            if (labels == null) {
                labels = new ArrayList<String>();
            }
            labels.add(one.getHealthLable());
            healthLablesMap.put(one.getPatient(), labels);
        });
    }
}

+ 9 - 3
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/prenatalInspector/PrenatalInspectorPreCardService.java

@ -116,6 +116,7 @@ public class PrenatalInspectorPreCardService extends BaseService {
                    JSONObject planJson = new JSONObject();
                    JSONObject pregnancy = data.getJSONObject(i);
                    String PREGNANCY_NO = pregnancy.getString("PREGNANCY_NO");//智业产检号
                    String PREGNANCY_STATUS = pregnancy.getString("PREGNANCY_STATUS");//PREGNANCY_STATUS /*妊娠是否结束,0未结束,1结束*/
                    String END_MANNER = pregnancy.getString("END_MANNER");//妊娠终止方式
                    String END_TIME = pregnancy.getString("END_TIME");//结束妊娠
                    String MENSES_LAST = pregnancy.getString("MENSES_LAST");//末次月经
@ -124,6 +125,7 @@ public class PrenatalInspectorPreCardService extends BaseService {
                    String DELIVERY_TIME = pregnancy.getString("DELIVERY_TIME");//分娩方式时间
                    String EXAM_TIME = pregnancy.getString("EXAM_TIME");//检查日期
                    planJson.put("pregnancyNo",PREGNANCY_NO);
                    planJson.put("pregnancyStatus",PREGNANCY_STATUS);
                    planJson.put("endManner",END_MANNER);
                    planJson.put("endTime",END_TIME);
                    planJson.put("mensesLast",MENSES_LAST);
@ -227,6 +229,7 @@ public class PrenatalInspectorPreCardService extends BaseService {
                            String MENSES_LAST = pregnancy.getString("MENSES_LAST");//末次月经
                            Date dueday = DateUtil.getDueDate(DateUtil.strToDateLong(MENSES_LAST));//预产期
                            planJson.put("pregnancyNo",PREGNANCY_NO);
                            planJson.put("pregnancyStatus","0");
                            planJson.put("endManner",END_MANNER);
                            planJson.put("endTime",END_TIME);
                            planJson.put("mensesLast",MENSES_LAST);
@ -649,8 +652,12 @@ public class PrenatalInspectorPreCardService extends BaseService {
        if(StringUtils.isNotBlank(preCard.getHeight())&&StringUtils.isNotBlank(preCard.getWeight())){
            //先判断体征数据是否变更
            DevicePatientHealthIndex index = healthIndexDao.findLastData(patientCode, 3);
            String height = index.getValue2();
            String weight = index.getValue1();
            String height = null;
            String weight = null;
            if(index!=null){
                height = index.getValue2();
                weight = index.getValue1();
            }
            if(!preCard.getHeight().equals(height)||!preCard.getWeight().equals(weight)){
                //更新体征数据
                JSONObject json = new JSONObject();
@ -663,7 +670,6 @@ public class PrenatalInspectorPreCardService extends BaseService {
                    e.printStackTrace();
                    logger.error("预建卡时 保存体征数据失败。。。");
                }
            }
        }
    }

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/SignWebService.java

@ -2637,7 +2637,7 @@ public class SignWebService extends BaseService {
                com.alibaba.fastjson.JSONObject json = com.alibaba.fastjson.JSONObject.parseObject(response);
                if(json.getInteger("status")==200){
                    com.alibaba.fastjson.JSONObject data = json.getJSONObject("data");
                    if("1".equals(data.getString("CODE"))){
                    if("1".equals(data.getString("CODE"))&&data.getJSONArray("DATA").size()>0){
                        int sign_limit_number = data.getJSONArray("DATA").getJSONObject(0).getInteger("SIGN_LIMIT_NUMBER");//签约上线
                        limitTotal+=sign_limit_number;
                    }

+ 99 - 200
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statisticsES/StatisticsESService.java

@ -23,6 +23,7 @@ import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
@ -51,8 +52,11 @@ public class StatisticsESService {
    @Autowired
    TownDao townDao;
    @Autowired
    private StringRedisTemplate redisTemplate;
    @Autowired
    private SystemDictService systemDictService;
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    /**
     * 获取上次统计时间
     *
@ -79,15 +83,6 @@ public class StatisticsESService {
        return date;
    }
    /**
     * 获取时间戳
     *
     * @return
     */
    public String getQuotaTimeStamp() {
//        return redisTemplate.opsForValue().get("quota:timeKey");
        return "";
    }
//    /**
@ -165,24 +160,22 @@ 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 = null;
        if (StringUtils.isNotEmpty(level2_type)) {
            list = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, "1", level2_type, interval, null);
        } else {
            list = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, index, "1", interval, null);
        List<SaveModel>  list = null;
        if(StringUtils.isNotEmpty(level2_type)) {
            list = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate,endDate,area,level,index,"1",interval,level2_type);
        }else{
            list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,area,level,index,"1",interval);
        }
        List<JSONObject> result = new ArrayList<>();
        for (SaveModel saveModel : list) {
        for (SaveModel saveModel:list){
            JSONObject range = new JSONObject();
            range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(), "yyyy-MM-dd"));
            range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(),"yyyy-MM-dd"));
            range.put("amount", saveModel.getResult2());
            result.add(range);
        }
        return new JSONArray(result);
    }
    /**
     * 获取某个指标在某个期间的增长量
     *
@ -193,11 +186,13 @@ public class StatisticsESService {
     * @return
     */
    public long getIntervalIncrement(String startDate, String endDate, String area, int level, String index) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, index, "1", null, null);
        if (list.size() > 0) {
            return list.get(0).getResult2();
        // 截止日期包含当天,则获取最新的更新时间
        if (endDate.compareTo(new SimpleDateFormat("yyyy-MM-dd").format(new Date())) >= 0) {
            endDate = elasticsearchUtil.getQuotaTime();
        }
        return 0;
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,area,level,index,"1");
        return saveModel.getResult2();
    }
//    /**
@ -259,6 +254,8 @@ public class StatisticsESService {
//    }
    /**
     * 查询截止某个日期累计量
     *
@ -268,20 +265,19 @@ public class StatisticsESService {
     * @param level2_type level2_type的类型
     * @return
     */
    public long getTotalAmount(String startDate, String endDate, String area, int level, String index, String level2_type) throws Exception {
    public long getTotalAmount(String startDate, String endDate, String area, int level, String index, String level2_type)  throws Exception {
        List<SaveModel> list = null;
        if (StringUtils.isNotEmpty(level2_type)) {
            list = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, "1", level2_type, null, null);
        } else {
            list = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, index, "1", null, null);
        SaveModel saveModel = null;
        // 截止日期包含当天,则获取最新的更新时间
        if (endDate.compareTo(new SimpleDateFormat("yyyy-MM-dd").format(new Date())) >= 0) {
            endDate = elasticsearchUtil.getQuotaTime();
        }
//        List<SaveModel>  list = findDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,null);
        if (list.size() > 0) {
            return list.get(0).getResult2();
        if(StringUtils.isNotEmpty(level2_type)){
            saveModel = elasticsearchUtil.findOneDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type);
        }else{
            saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,area,level,index,"1");
        }
        return 0L;
        return saveModel.getResult2();
    }
    /**
@ -300,43 +296,41 @@ public class StatisticsESService {
        if (!org.springframework.util.StringUtils.isEmpty(year)) {
            startDate = year + "-06-30' ";
        }
        String levelTemp = level + "";
        if (StringUtils.isNotEmpty(lowLevel)) {
        String levelTemp = level+"";
        if(StringUtils.isNotEmpty(lowLevel)){
            levelTemp = lowLevel;
        }
        List<SaveModel> list = null;
//        if(StringUtils.isNotEmpty(level2_type)){
//
//            list = findDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,lowLevel);
//        }else{
//            list = findDateQuotaLevel0(startDate,endDate,area,level,index,"1",null,lowLevel);
//        }
        list = lowLevel(startDate, endDate, area, level, index, "1", lowLevel, level2_type);
//        List<SaveModel>  list = findDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type,null,lowLevel);
        List<SaveModel>  list = null;
        if(StringUtils.isNotEmpty(level2_type)){
            list = elasticsearchUtil.findListDateQuotaLevel1(startDate,endDate,area,level,index,"1",lowLevel,level2_type);
        }else{
            list = elasticsearchUtil.findListDateQuotaLevel0(startDate,endDate,area,level,index,"1",lowLevel);
        }
        if (org.springframework.util.StringUtils.isEmpty(year)) {
            year = Constant.getNowYear();
        }
        List<Map<String, Object>> resultList = new ArrayList<>();
        PopulationBase populationBase = getPopulationBase(area, year);
        PopulationBase populationBase = getPopulationBase(area,year);
        DecimalFormat df = new DecimalFormat("0.0000");
        for (SaveModel saveModel : list) {
        for (SaveModel saveModel:list) {
            Map<String, Object> map = new HashMap<>();
            if (SaveModel.OrgLevel.equals(levelTemp)) {
                map.put("code", saveModel.getHospital());
                map.put("name", saveModel.getHospitalName());
                map.put("code",saveModel.getHospital());
                map.put("name",saveModel.getHospitalName());
            } else if (SaveModel.townLevel.equals(levelTemp)) {
                map.put("code", saveModel.getTown());
                map.put("name", saveModel.getTownName());
                map.put("code",saveModel.getTown());
                map.put("name",saveModel.getTownName());
            } else if (SaveModel.cityLevel.equals(levelTemp)) {
                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("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("amount",saveModel.getResult2());
            map.put("rate",df.format((saveModel.getResult2() * 1.0000) / populationBase.getNum() * 100));
            map.put("rateString",saveModel.getResult2()+"/"+populationBase.getNum());
            resultList.add(map);
        }
        Collections.sort(resultList, new Comparator<Map<String, Object>>() {
@ -357,98 +351,21 @@ 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 {
    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 = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, index, "2", null, null, null);
        if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
            endDate = elasticsearchUtil.getQuotaTime();
        }
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel1(endDate,area,level,index,"2");
        List<Map<String, Object>> resultList = new ArrayList<>();
        DecimalFormat df = new DecimalFormat("0.0000");
        long total = 0;
        for (SaveModel saveModel : list) {
        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());
//            }
//            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("code",saveModel.getSlaveKey1());
            map.put("name",saveModel.getSlaveKey1Name());
            map.put("amount", saveModel.getResult2());
            if (index.equals("7")) {
                // 分组指标总数算法
@ -469,21 +386,18 @@ public class StatisticsESService {
        }
        if (!index.equals("8")) {
            if (index.equals("36")) {
                //获取最新的统计时间
                String updateTime = elasticsearchUtil.getQuotaTime();
                //如果是查询36的指标 那么除数是签约总数
                List<SaveModel> list2 = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, "1", "2", null, null, null);
                Integer num = 0;
                if (list2.size() > 0) {
                    num = list2.get(0).getResult2();
                } else {
                    throw new Exception("param num error");
                }
                for (Map<String, Object> map : resultList) {
                SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(updateTime,area,level,index,"2");
                Integer num = saveModel.getResult2();
                for (Map<String, Object> map:resultList) {
                    double rateG = (total > 0 ? ((long) map.get("amount")) * 1.0000 / num * 100 : 0);
                    map.put("rate", df.format(rateG));
                    map.put("rateString", ((long) map.get("amount")) + "/" + num);
                }
            } else {
                for (Map<String, Object> map : resultList) {
            }else{
                for (Map<String, Object> map:resultList) {
                    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);
@ -520,7 +434,7 @@ public class StatisticsESService {
    }
    /**
     * 获取一级指标达到量
     * 获取一级指标到达量
     *
     * @param endDate 截止日期
     * @param area    区域
@ -528,16 +442,13 @@ public class StatisticsESService {
     * @param level   级别
     * @return
     */
    public long getIndexTotal(String endDate, String area, int level, String index, String timeLevel) throws Exception {
    public long getIndexTotal(String endDate, String area, int level, String index,String timeLevel) throws Exception{
//        List<SaveModel> list =findDateQuotaLevel1("",endDate, area, level, index,timeLevel,null,null);
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(endDate, endDate, area, level, index, timeLevel, null, null);
//        List<SaveModel> list =elasticsearchUtil.excute(sql.toString(),SaveModel.class,"","");
        if (list.size() > 0) {
            return list.get(0).getResult2();
        if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
            endDate = elasticsearchUtil.getQuotaTime();
        }
        return 0;
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,index,timeLevel);
        return saveModel.getResult2();
    }
    /**
@ -548,13 +459,10 @@ public class StatisticsESService {
     * @param level   级别
     * @return
     */
    public long getWeiJiaoFei(String endDate, String area, int level) throws Exception {
    public long getWeiJiaoFei(String endDate, String area, int level) throws Exception{
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, "16", "2", "0", null, null);
        if (list.size() > 0) {
            return list.get(0).getResult2();
        }
        return 0;
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(endDate,area,level,"16","2","0");
        return saveModel.getResult2();
    }
@ -575,19 +483,13 @@ public class StatisticsESService {
            renewIndex = "29";
        }
        String timeKey = elasticsearchUtil.getQuotaTime();
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, Integer.parseInt(level), renewIndex, "2", null, null);
        int renewNum = 0;
        if (list.size() > 0) {
            renewNum = list.get(0).getResult2();
        }
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,Integer.parseInt(level),renewIndex,"2");
        int renewNum = saveModel.getResult2();
        //根据年度获取去年的签约数 签约指标是1
        String date = year + "-06-30";
        String index = "1";
        List<SaveModel> list2 = elasticsearchUtil.findDateQuotaLevel0(date, date, area, Integer.parseInt(level), index, "2", null, null);
        int signNum = 0;
        if (list2.size() > 0) {
            signNum = list2.get(0).getResult2();
        }
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(date,area,Integer.parseInt(level),index,"2");
        int signNum = saveModel2.getResult2();
        JSONObject jo = new JSONObject();
        jo.put("yesterYearSign", signNum);//去年的签约量
        jo.put("thisYearRenew", renewNum);//今年的续签量
@ -605,11 +507,8 @@ public class StatisticsESService {
     */
    public JSONObject getSignRate(String endDate, String area, int level, String year) throws Exception {
        long signAmount = 0;
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(endDate, endDate, area, level, "13", "2", null, null);
        if (list.size() > 0) {
            signAmount = list.get(0).getResult2();
        }
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,"13","2");
        long signAmount = saveModel.getResult2();
        PopulationBase peopleNum = getPopulationBase(area, year);
        JSONObject json = new JSONObject();
        DecimalFormat df = new DecimalFormat("0.0000");
@ -636,11 +535,11 @@ public class StatisticsESService {
     * @return
     */
    public JSONObject getSignTaskRate(String endDate, String area, int level, String year) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(endDate, endDate, area, level, "13", "2", null, null);
        long signAmount = 0;
        if (list.size() > 0) {
            signAmount = list.get(0).getResult2();
        if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
            endDate = elasticsearchUtil.getQuotaTime();
        }
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,"13","2");
        long signAmount = saveModel.getResult2();
        PopulationBase peopleNum = getPopulationBase(area, year);
        DecimalFormat df = new DecimalFormat("0.0000");
        JSONObject json = new JSONObject();
@ -668,9 +567,9 @@ public class StatisticsESService {
     * @return
     */
    public JSONObject getGroupInfo(String endDate, String lowCode, String area, int level, String year) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, "17", "2", lowCode, null, null);
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate,endDate,area,level,"17","2",lowCode,null,null);
        long total = 0;
        if (list.size() > 0) {
        if(list.size()>0){
            total = list.get(0).getResult2();
        }
        int num = 0;
@ -735,15 +634,15 @@ public class StatisticsESService {
     * @param level
     * @return
     */
    public JSONArray getSixFiveStatistics(String endDate, String area, int level) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel2(endDate, endDate, area, level, "12", "2", "6", null, null, null);
    public JSONArray getSixFiveStatistics(String endDate, String area, int level) throws Exception{
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel2(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());
            data.put("amount",list.get(i).getResult2());
            resultList.add(data);
        }
@ -802,10 +701,10 @@ public class StatisticsESService {
     * @param level
     * @return
     */
    public long getSixFiveTotal(String endDate, String area, int level) throws Exception {
    public long getSixFiveTotal(String endDate, String area, int level) throws Exception{
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, "8", "2", "6", null, null);
        if (list.size() > 0) {
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate,endDate,area,level,"8","2","6",null,null);
        if(list.size()>0){
            return list.get(0).getResult2();
        }
        return 0;
@ -849,15 +748,15 @@ public class StatisticsESService {
        json.put("taskNum", taskNum);
        List<SaveModel> list = null;
        if (StringUtils.isNotEmpty(lowCode)) {
        if(StringUtils.isNotEmpty(lowCode)){
            //一级维度
            list = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, "2", lowCode, interval + "", null);
        } else {
            list = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, index, "2", interval + "", null);
            list = elasticsearchUtil.findDateQuotaLevel1(startDate,endDate,area,level,index,"2",lowCode,interval+"",null);
        }else{
            list = elasticsearchUtil.findDateQuotaLevel0(startDate,endDate,area,level,index,"2",interval+"",null);
        }
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        List<JSONObject> result = new ArrayList<>();
        for (SaveModel saveModel : list) {
        for (SaveModel saveModel:list) {
            JSONObject range = new JSONObject();
            range.put("range", df.format(saveModel.getQuotaDate()));
            range.put("amount", saveModel.getResult2());

+ 0 - 4
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/third/ylz/PayLogService.java

@ -32,9 +32,6 @@ public class PayLogService {
    public void saveHttpLog(Boolean isSuccess,String url,String content,String method,String header,String params,String response,String error,String type)
    {
        try {
            //成功日志是否保存
            Boolean saveSuccessLog = systemDictService.getSaveSuccessLog();
            if(!isSuccess || saveSuccessLog) {
                //新增日志
                PayLog log = new PayLog();
                log.setType(type);
@ -48,7 +45,6 @@ public class PayLogService {
                log.setError(error);
                log.setStatus(isSuccess?"1":"0");
                payLogDao.save(log);
            }
        }
        catch (Exception ex)
        {

+ 182 - 11
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/ElasticsearchUtil.java

@ -18,6 +18,7 @@ import org.nlpcn.es4sql.query.SqlElasticSearchRequestBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
@ -38,6 +39,8 @@ public class ElasticsearchUtil {
    @Autowired
    private ElasticFactory elasticFactory;
    @Autowired
    private StringRedisTemplate redisTemplate;
    public List excute(String sql, Class clazz, String esType, String esIndex) {
        List saveModels = new ArrayList<>();
@ -233,10 +236,18 @@ public class ElasticsearchUtil {
        //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
        if (StringUtils.isNotEmpty(startDate)) {
            startDate = changeDate(startDate);
            if(startDate.length()>10){
                startDate = changeTime(startDate);
            }else{
                startDate = changeDate(startDate);
            }
        }
        if (StringUtils.isNotEmpty(endDate)) {
            endDate = changeDate(endDate);
            if(startDate.length()>10){
                startDate = changeTime(startDate);
            }else{
                startDate = changeDate(startDate);
            }
        }
        StringBuffer sql = new StringBuffer();
        StringBuffer groupBy = new StringBuffer();
@ -316,10 +327,18 @@ public class ElasticsearchUtil {
        //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
        if (StringUtils.isNotEmpty(startDate)) {
            startDate = changeDate(startDate);
            if(startDate.length()>10){
                startDate = changeTime(startDate);
            }else{
                startDate = changeDate(startDate);
            }
        }
        if (StringUtils.isNotEmpty(endDate)) {
            endDate = changeDate(endDate);
            if(startDate.length()>10){
                startDate = changeTime(startDate);
            }else{
                startDate = changeDate(startDate);
            }
        }
        StringBuffer sql = new StringBuffer();
        StringBuffer groupBy = new StringBuffer();
@ -399,10 +418,18 @@ public class ElasticsearchUtil {
        //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
        if (StringUtils.isNotEmpty(startDate)) {
            startDate = changeDate(startDate);
            if(startDate.length()>10){
                startDate = changeTime(startDate);
            }else{
                startDate = changeDate(startDate);
            }
        }
        if (StringUtils.isNotEmpty(endDate)) {
            endDate = changeDate(endDate);
            if(startDate.length()>10){
                startDate = changeTime(startDate);
            }else{
                startDate = changeDate(startDate);
            }
        }
        StringBuffer sql = new StringBuffer();
        StringBuffer groupBy = new StringBuffer();
@ -473,14 +500,17 @@ public class ElasticsearchUtil {
    private String changeDate(String quotaDate) {
        return quotaDate + "T00:00:00+0800";
    }
    //获取最新更新的时间
    public String changeTime(String time) {
        time = time.replace(" ","T")+"+0800";
        return time;
    }
    //获取最新更新的时间
    public String getQuotaTime() {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date today = new Date();
        String todayString = simpleDateFormat.format(today);
        todayString = changeDate(todayString);
        return todayString;
        String date = redisTemplate.opsForValue().get("quota:date");
//        date = date.replace(" ","T")+"+0800";
        return date;
    }
    /**
@ -498,6 +528,22 @@ public class ElasticsearchUtil {
        List list = findDateQuotaLevel0(quotaDate, quotaDate, area, level, index, timelevel, null, null);
        return (SaveModel) list.get(0);
    }
    /**
     * 0级维度
     * 查询某个时间区间某一个0级维度的指标
     *
     * @param startDate 开始时间 yyyy-mm-dd
     * @param endDate   结束时间 yyyy-mm-dd
     * @param area      code  厦门市 350200
     * @param level     等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index     指标code
     * @param timelevel // 1日 2年
     * @return
     */
    public SaveModel findOneDateQuotaLevel0(String startDate, String endDate, String area, int level, String index, String timelevel) throws Exception {
        List list = findDateQuotaLevel0(startDate, endDate, area, level, index, timelevel, null, null);
        return (SaveModel) list.get(0);
    }
    /**
     * 1级维度
     * 查询某一天某一个1级维度的某个1级维度下的指标 例如查询65岁以上患者
@ -514,6 +560,39 @@ public class ElasticsearchUtil {
        List list = findDateQuotaLevel1(quotaDate, quotaDate, area, level, index, timelevel,slaveKey1, null, null);
        return (SaveModel) list.get(0);
    }
    /**
     * 1级维度
     * 查询某个时间区间某一个1级维度的某个1级维度下的指标 例如查询65岁以上患者
     *
     * @param startDate 开始时间 yyyy-mm-dd
     * @param endDate   结束时间 yyyy-mm-dd
     * @param area      code  厦门市 350200
     * @param level     等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index     指标code
     * @param timelevel // 1日 2年
     * @param slaveKey1  一级维度的key 不传返回全部
     * @return
     */
    public SaveModel findOneDateQuotaLevel1(String startDate, String endDate, String area, int level, String index, String timelevel, String slaveKey1) throws Exception {
        List list = findDateQuotaLevel1(startDate, endDate, area, level, index, timelevel,slaveKey1, null, null);
        return (SaveModel) list.get(0);
    }
    /**
     * 1级维度
     * 查询某一天某一个所有1级维度下的指标 例如某个机构下的所有维度的患者列表
     *
     * @param quotaDate 时间 yyyy-mm-dd
     * @param area      code  厦门市 350200
     * @param level     等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index     指标code
     * @param timelevel // 1日 2年
     * @return
     */
    public List<SaveModel> findOneDateQuotaLevel1(String quotaDate, String area, int level, String index, String timelevel) throws Exception {
        List list = findDateQuotaLevel1(quotaDate, quotaDate, area, level, index, timelevel,null, null, null);
        return list;
    }
    /**
     * 2级维度
     * 查询某一天某一个2级维度的某个1级维度和2级维度下的指标  例如查询65岁以上的高血压患者
@ -531,7 +610,41 @@ public class ElasticsearchUtil {
        List list = findDateQuotaLevel2(quotaDate, quotaDate, area, level, index, timelevel,slaveKey1,slaveKey2, null, null);
        return (SaveModel) list.get(0);
    }
    /**
     * 2级维度
     * 查询某个时间区间某一个2级维度的某个1级维度和2级维度下的指标  例如查询65岁以上的高血压患者
     *
     * @param startDate 开始时间 yyyy-mm-dd
     * @param endDate   结束时间 yyyy-mm-dd
     * @param area      code  厦门市 350200
     * @param level     等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index     指标code
     * @param timelevel // 1日 2年
     * @param slaveKey1  一级维度的key
     * @param slaveKey2  二级维度的key
     * @return
     */
    public SaveModel findOneDateQuotaLevel2(String startDate, String endDate, String area, int level, String index, String timelevel, String slaveKey1, String slaveKey2) throws Exception {
        List list = findDateQuotaLevel2(startDate, endDate, area, level, index, timelevel,slaveKey1,slaveKey2, null, null);
        return (SaveModel) list.get(0);
    }
    /**
     * 2级维度
     * 查询某一天某个1级维度下所有2级维度的指标  例如查询65岁以上的高血压患者
     *
     * @param quotaDate 时间 yyyy-mm-dd
     * @param area      code  厦门市 350200
     * @param level     等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index     指标code
     * @param timelevel // 1日 2年
     * @param slaveKey1  一级维度的key
     * @return
     */
    public List<SaveModel> findOneDateQuotaLevel2(String quotaDate, String area, int level, String index, String timelevel, String slaveKey1) throws Exception {
        List list = findDateQuotaLevel2(quotaDate, quotaDate, area, level, index, timelevel,slaveKey1,null, null, null);
        return list;
    }
    /**
     * 折线图
     * 0级维度
@ -608,6 +721,24 @@ public class ElasticsearchUtil {
    public  List<SaveModel>  findListDateQuotaLevel0(String quotaDate,  String area, int level, String index, String timelevel, String lowLevel) throws Exception {
        List list = findDateQuotaLevel0(quotaDate, quotaDate, area, level, index, timelevel, null, lowLevel); return list;
    }
    /**
     *  列表
     * 0级维度
     * 查询某个区间某个0级维度的指标列表
     *
     * @param startDate 开始时间 yyyy-mm-dd  包含头
     * @param endDate 结束时间 yyyy-mm-dd  包含头
     * @param area   code  厦门市 350200 code 和level是对应的
     * @param level 等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index  指标code
     * @param timelevel   1增量   2到达量(按照年度)
     * @param lowLevel  下一级区域等级   1 省 2 市 3 区县 4 机构 5团队
     * @return
     * @throws Exception
     */
    public  List<SaveModel>  findListDateQuotaLevel0(String startDate,String endDate,  String area, int level, String index, String timelevel, String lowLevel) throws Exception {
        List list = findDateQuotaLevel0(startDate, endDate, area, level, index, timelevel, null, lowLevel); return list;
    }
    /**
     * 列表
     * 1级维度
@ -626,6 +757,25 @@ public class ElasticsearchUtil {
        List list = findDateQuotaLevel1(quotaDate, quotaDate, area, level, index, timelevel,slaveKey1, null, lowLevel);
        return list;
    }
    /**
     * 列表
     * 1级维度
     * 查询某个区间某个1级维度的某个1级维度下的列表 例如查询65岁以上患者
     *
     * @param startDate 开始时间 yyyy-mm-dd  包含头
     * @param endDate 结束时间 yyyy-mm-dd  包含头
     * @param area   code  厦门市 350200 code 和level是对应的
     * @param level 等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index  指标code
     * @param timelevel   1增量   2到达量(按照年度)
     * @param lowLevel  下一级区域等级   1 省 2 市 3 区县 4 机构 5团队
     * @param slaveKey1  一级维度的key
     * @return
     */
    public  List<SaveModel>  findListDateQuotaLevel1(String startDate,String endDate,  String area, int level, String index, String timelevel,String lowLevel, String slaveKey1) throws Exception {
        List list = findDateQuotaLevel1(startDate, endDate, area, level, index, timelevel,slaveKey1, null, lowLevel);
        return list;
    }
    /**
     * 列表
     * 2级维度
@ -645,4 +795,25 @@ public class ElasticsearchUtil {
        List list = findDateQuotaLevel2(quotaDate, quotaDate, area, level, index, timelevel,slaveKey1,slaveKey2, null, lowLevel);
        return list;
    }
    /**
     * 列表
     * 2级维度
     * 查询某个区间某个2级维度的某个1级维度和2级维度下的列表  例如查询65岁以上的高血压患者
     *
     * @param startDate 开始时间 yyyy-mm-dd  包含头
     * @param endDate 结束时间 yyyy-mm-dd  包含头
     * @param area   code  厦门市 350200 code 和level是对应的
     * @param level 等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index  指标code
     * @param timelevel   1增量   2到达量(按照年度)
     * @param lowLevel  下一级区域等级   1 省 2 市 3 区县 4 机构 5团队
     * @param slaveKey1  一级维度的key
     * @param slaveKey2  二级维度的key
     * @return
     */
    public  List<SaveModel>  findListDateQuotaLevel2(String startDate,String endDate,  String area, int level, String index, String timelevel,String lowLevel, String slaveKey1, String slaveKey2) throws Exception {
        List list = findDateQuotaLevel2(startDate, endDate, area, level, index, timelevel,slaveKey1,slaveKey2, null, lowLevel);
        return list;
    }
}

+ 2 - 2
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/EsStatisticsController.java

@ -46,7 +46,7 @@ public class EsStatisticsController extends BaseController {
    @ResponseBody
    public String getStatisticsTime() {
        try {
            return write(200, "查询成功", "data", statisticsService.getStatisticsTime());
            return write(200, "查询成功", "data", statisticsESService.getStatisticsTime());
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败");
@ -114,8 +114,8 @@ public class EsStatisticsController extends BaseController {
            JSONObject result = new JSONObject();
            for (String idx : indexes) {
//                result.put("index_" + idx, statisticsService.getIntervalIncrement(startDate, endDate, area, level, idx));
                result.put("index_" + idx, statisticsESService.getIntervalIncrement(startDate, endDate, area, level, idx));
//                result.put("index_" + idx, statisticsService.getIntervalIncrement(startDate, endDate, area, level, idx));
            }
            return write(200, "查询成功", "data", result);

+ 5 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/wx/OnePayController.java

@ -126,6 +126,11 @@ public class OnePayController extends WeixinBaseController {
                    msg = "生成电子社保卡成功!";
                }
            }
            if(bindCard.size()==0||bindCard==null){
                json.put("sicardUrl", sicardUrl);
                json.put("bindStatus", "030007");
                msg = "生成电子社保卡成功!";
            }
            return write(200, msg, "data", json);
            /*if (bindCard != null) {
                JSONObject json = new JSONObject(bindCard);

+ 2 - 2
patient-co/patient-co-wlyy/src/main/resources/application-devtest.yml

@ -93,9 +93,9 @@ pushMes:
  redis_prescription_title: redisPrescription
es:
  index:
    HealthEduArticlePatient: health_edu_article_patient_test
    HealthEduArticlePatient: wlyy_quota_test
  type:
    HealthEduArticlePatient: health_edu_article_patient_test
    HealthEduArticlePatient: wlyy_quota_test
  host: 172.19.103.68
  port: 9200
  tPort: 9300