Przeglądaj źródła

Merge branch '2.0' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into 2.0

wangzhinan 1 rok temu
rodzic
commit
ff281c39aa

+ 122 - 72
business/es-service/src/main/java/com/yihu/jw/es/service/StatisticsEsService.java

@ -20,6 +20,11 @@ import com.yihu.jw.restmodel.hospital.statistics.ScreenQvo;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.format.VerticalAlignment;
import jxl.write.*;
import org.apache.commons.lang3.StringUtils;
@ -33,6 +38,7 @@ import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.ParseException;
@ -6072,7 +6078,7 @@ public class StatisticsEsService {
     */
    public JSONObject getTotal3Data(ScreenQvo qvo) throws Exception {
        JSONObject result = new JSONObject();
        //后端自己计算时间 1本月,2近半年,3全年
        if (qvo.getFlag() == 1) {
            qvo.setStartDate(DateUtil.getFirstMonthDay());
            qvo.setEndDate(DateUtil.getLastMonthDay());
@ -6089,50 +6095,33 @@ public class StatisticsEsService {
        //计算去年同期时间段 开始时间periodYear[0] 、结束时间periodYear[1]
        String[] periodYear = calculatePreviousYearPeriod(qvo.getStartDate(), qvo.getEndDate());
//        List<SaveModel> model01 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "3", SaveModel.timeLevel_ZL, null, null);
//        List<SaveModel> model02 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "21", SaveModel.timeLevel_ZL, null, null);
        //到结束时间的增量
        SaveModel model01 = elasticsearchUtil.findOneDateQuotaLevel0(qvo.getEndDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "3", "2");//查询诊查费
        SaveModel model02 = elasticsearchUtil.findOneDateQuotaLevel0(qvo.getEndDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "21", "2");//处方费
        //到开始时间的增量
        SaveModel model03 = elasticsearchUtil.findOneDateQuotaLevel0(qvo.getStartDate(), qvo.getStartDate(), qvo.getArea(), qvo.getLevel(), "3", "2");//查询诊查费
        SaveModel model04 = elasticsearchUtil.findOneDateQuotaLevel0(qvo.getStartDate(), qvo.getStartDate(), qvo.getArea(), qvo.getLevel(), "21", "2");//处方费
        //当前
        List<SaveModel> model01 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "3", SaveModel.timeLevel_ZL, null, null);//查询诊查费
        List<SaveModel> model02 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "21", SaveModel.timeLevel_ZL, null, null);//处方费
        //上个周期的结束时间的增量
        SaveModel model05 = elasticsearchUtil.findOneDateQuotaLevel0(period[1], period[1], qvo.getArea(), qvo.getLevel(), "3", "2");//查询诊查费
        SaveModel model06 = elasticsearchUtil.findOneDateQuotaLevel0(period[1], period[1], qvo.getArea(), qvo.getLevel(), "21", "2");//处方费
        //上个周期的开始时间的增量
        SaveModel model07 = elasticsearchUtil.findOneDateQuotaLevel0(period[0], period[0], qvo.getArea(), qvo.getLevel(), "3", "2");//查询诊查费
        SaveModel model08 = elasticsearchUtil.findOneDateQuotaLevel0(period[0], period[0], qvo.getArea(), qvo.getLevel(), "21", "2");//处方费
        //上个周期
        List<SaveModel> model03 = elasticsearchUtil.findListDateQuotaLevel1(period[0], period[1], qvo.getArea(), qvo.getLevel(), "3", SaveModel.timeLevel_ZL, null, null);//查询诊查费
        List<SaveModel> model04 = elasticsearchUtil.findListDateQuotaLevel1(period[0], period[1], qvo.getArea(), qvo.getLevel(), "21", SaveModel.timeLevel_ZL, null, null);//处方费
        //去年同期时间的结束时间的增量
        SaveModel model09 = elasticsearchUtil.findOneDateQuotaLevel0(periodYear[1], periodYear[1], qvo.getArea(), qvo.getLevel(), "3", "2");//查询诊查费
        SaveModel model10 = elasticsearchUtil.findOneDateQuotaLevel0(periodYear[1], periodYear[1], qvo.getArea(), qvo.getLevel(), "21", "2");//处方费
        //去年同期时间的开始时间的增量
        SaveModel model11 = elasticsearchUtil.findOneDateQuotaLevel0(periodYear[0], periodYear[0], qvo.getArea(), qvo.getLevel(), "3", "2");//查询诊查费
        SaveModel model12 = elasticsearchUtil.findOneDateQuotaLevel0(periodYear[0], periodYear[0], qvo.getArea(), qvo.getLevel(), "21", "2");//处方费
        List<SaveModel> model05 = elasticsearchUtil.findListDateQuotaLevel1(periodYear[0], periodYear[1], qvo.getArea(), qvo.getLevel(), "3", SaveModel.timeLevel_ZL, null, null);//查询诊查费
        List<SaveModel> model06 = elasticsearchUtil.findListDateQuotaLevel1(periodYear[0], periodYear[1], qvo.getArea(), qvo.getLevel(), "21", SaveModel.timeLevel_ZL, null, null);//处方费
        //----------------------问诊量--------------------------------------
        SaveModel wz_model01 = elasticsearchUtil.findOneDateQuotaLevel0(qvo.getEndDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", "2");//问诊-到结束时间的增量
        SaveModel wz_model02 = elasticsearchUtil.findOneDateQuotaLevel0(qvo.getStartDate(), qvo.getStartDate(), qvo.getArea(), qvo.getLevel(), "5", "2");//问诊-到开始时间的增量
        //上个周期的增量
        SaveModel wz_model03 = elasticsearchUtil.findOneDateQuotaLevel0(period[1], period[1], qvo.getArea(), qvo.getLevel(), "5", "2");//问诊-结束时间
        SaveModel wz_model04 = elasticsearchUtil.findOneDateQuotaLevel0(period[0], period[0], qvo.getArea(), qvo.getLevel(), "5", "2");//问诊=开始时间
        //去年同期时间的增量
        SaveModel wz_model05 = elasticsearchUtil.findOneDateQuotaLevel0(periodYear[1], periodYear[1], qvo.getArea(), qvo.getLevel(), "5", "2");//问诊-结束时间
        SaveModel wz_model06 = elasticsearchUtil.findOneDateQuotaLevel0(periodYear[0], periodYear[0], qvo.getArea(), qvo.getLevel(), "5", "2");//问诊=开始时间
        List<SaveModel> wz_model01 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, null);//问诊
        //上个周期
        List<SaveModel> wz_model02 = elasticsearchUtil.findListDateQuotaLevel1(period[0], period[1], qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, null);//问诊
        //去年同期时间
        List<SaveModel> wz_model03 = elasticsearchUtil.findListDateQuotaLevel1(periodYear[0], periodYear[1], qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, null);//问诊
        //---------------------【处方量】------------------------------------
        SaveModel cf_model01 = elasticsearchUtil.findOneDateQuotaLevel0(qvo.getEndDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "2", "2");//开方量-到结束时间的增量
        SaveModel cf_model02 = elasticsearchUtil.findOneDateQuotaLevel0(qvo.getStartDate(), qvo.getStartDate(), qvo.getArea(), qvo.getLevel(), "2", "2");//开方量-到开始时间的增量
        //上个周期的增量
        SaveModel cf_model03 = elasticsearchUtil.findOneDateQuotaLevel0(period[1], period[1], qvo.getArea(), qvo.getLevel(), "2", "2");//开方量-结束时间
        SaveModel cf_model04 = elasticsearchUtil.findOneDateQuotaLevel0(period[0], period[0], qvo.getArea(), qvo.getLevel(), "2", "2");//开方量=开始时间
        //去年同期时间的增量
        SaveModel cf_model05 = elasticsearchUtil.findOneDateQuotaLevel0(periodYear[1], periodYear[1], qvo.getArea(), qvo.getLevel(), "2", "2");//开方量-结束时间
        SaveModel cf_model06 = elasticsearchUtil.findOneDateQuotaLevel0(periodYear[0], periodYear[0], qvo.getArea(), qvo.getLevel(), "2", "2");//开方量=开始时间
        List<SaveModel> cf_model01 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "2", SaveModel.timeLevel_ZL, null, null);//开方量
        //上个周期
        List<SaveModel> cf_model02 = elasticsearchUtil.findListDateQuotaLevel1(period[0], period[1], qvo.getArea(), qvo.getLevel(), "2", SaveModel.timeLevel_ZL, null, null);//开方量
        //去年同期时间
        List<SaveModel> cf_model03 = elasticsearchUtil.findListDateQuotaLevel1(periodYear[0], periodYear[1], qvo.getArea(), qvo.getLevel(), "2", SaveModel.timeLevel_ZL, null, null);//开方量
        //---------------------【接诊量】------------------------------------
        //接诊量-已接诊
@ -6143,34 +6132,28 @@ public class StatisticsEsService {
         *  环比增长= (本期统计周期数据-上期统计周期数据)上期统计周期数据×100%
         *  同比增长= (本期统计周期数据-去年同期统计周期数据)去年同期统计周期据×100%
         */
        long totalRevenue = ((model01 == null ? 0 : model01.getResult1().longValue()) - (model03 == null ? 0 : model03.getResult1().longValue())) +
                (model02 == null ? 0 : model02.getResult1().longValue()) - (model04 == null ? 0 : model04.getResult1().longValue());
        int totalRevenue = countListTotal(model01) + countListTotal(model02);
        //上周期总收入
        long periodTotal = ((model05 == null ? 0 : model05.getResult1().longValue()) - (model07 == null ? 0 : model07.getResult1().longValue()))
                + (model06 == null ? 0 : model06.getResult1().longValue()) - (model08 == null ? 0 : model08.getResult1().longValue());
        int periodTotal = countListTotal(model03) + countListTotal(model04);
        //去年同期时间段总收入
        long periodYearTotal = ((model09 == null ? 0 : model09.getResult1().longValue()) - (model11 == null ? 0 : model11.getResult1().longValue()))
                + (model10 == null ? 0 : model10.getResult1().longValue() - (model12 == null ? 0 : model12.getResult1().longValue()));
        //同比和环比
        long fee_hb = periodTotal == 0 ? 0 : (totalRevenue - periodTotal) / periodTotal;//环比
        long fee_tb = periodYearTotal == 0 ? 0 : (totalRevenue - periodYearTotal) / periodYearTotal;//同比
        result.put("fee_examination", (model01 == null ? 0 : model01.getResult1().longValue()) - (model03 == null ? 0 : model03.getResult1().longValue()));//诊查费
        result.put("fee_prescription", (model02 == null ? 0 : model02.getResult1().longValue()) - (model04 == null ? 0 : model04.getResult1().longValue()));//处方费
        int periodYearTotal =countListTotal(model05) + countListTotal(model06);
        //赋值
        result.put("fee_examination",countListTotal(model01));//诊查费
        result.put("fee_prescription", countListTotal(model02));//处方费
        result.put("fee_total", totalRevenue);//总收入
        result.put("fee_hb", fee_hb);//环比
        result.put("fee_tb", fee_tb);//同比
        result.put("fee_hb", getRange((totalRevenue - periodTotal), periodTotal, 0));//环比
        result.put("fee_tb",getRange((totalRevenue - periodYearTotal), periodYearTotal, 0));//同比
        int patientVolume = 0;
        //接诊量
        if (!jz_model01.isEmpty()) {
            patientVolume = (int) jz_model01.stream().mapToDouble(SaveModel::getResult1).sum();
        }
        //问诊
        int wzl = (wz_model01 == null ? 0 : wz_model01.getResult1().intValue()) - (wz_model02 == null ? 0 : wz_model02.getResult2().intValue());
        int wzl = countListTotal(wz_model01);
        //同比和环比
        int wzl_period = (wz_model03 == null ? 0 : wz_model03.getResult1().intValue()) - (wz_model04 == null ? 0 : wz_model04.getResult1().intValue());//上个周期
        int wzl_periodYear = (wz_model05 == null ? 0 : wz_model05.getResult1().intValue()) - (wz_model06 == null ? 0 : wz_model06.getResult1().intValue());//去年同周期
        int wzl_period = countListTotal(wz_model02);//上个周期
        int wzl_periodYear = countListTotal(wz_model03);//去年同周期
        result.put("wzl_total", wzl);//问诊量
        result.put("wzl_jz", patientVolume);//接诊量
        result.put("wzl_jzl", getRange(patientVolume, wzl, 0));//【接诊率】= 接诊量 ÷ 问诊量 ×100%
@ -6178,9 +6161,9 @@ public class StatisticsEsService {
        result.put("wzl_tb", getRange((wzl - wzl_periodYear), wzl_periodYear, 0));//同比
        //开方 【处方量】
        int kf_total = (cf_model01 == null ? 0 : cf_model01.getResult1().intValue()) - (cf_model02 == null ? 0 : cf_model02.getResult1().intValue());
        int kf_period = (cf_model03 == null ? 0 : cf_model03.getResult1().intValue()) - (cf_model04 == null ? 0 : cf_model04.getResult1().intValue());//上个周期
        int kf_periodYear = (cf_model05 == null ? 0 : cf_model05.getResult1().intValue()) - (cf_model06 == null ? 0 : cf_model06.getResult1().intValue());//去年同周期
        int kf_total = countListTotal(cf_model01);
        int kf_period =  countListTotal(cf_model02);;//上个周期
        int kf_periodYear = countListTotal(cf_model03);;//去年同周期
        result.put("kf_total", kf_total);//开方量
        result.put("kf_kfl", getRange(kf_total, patientVolume, 0));//【处方率】= 处方量 ÷ 接诊量 ×100%
        result.put("kf_hb", getRange((kf_total - kf_period), kf_period, 0));//环比
@ -6220,11 +6203,11 @@ public class StatisticsEsService {
        JSONObject result = new JSONObject();
        int xtmz = xt_list.isEmpty() ? 0 : xt_list.get(0).getResult1().intValue();
        int twzx = twzx_list.isEmpty() ? 0 : twfz_list.get(0).getResult1().intValue();
        int twfz = twfz_list.isEmpty() ? 0 : twfz_list.get(0).getResult1().intValue();
        int spzx = spzx_list.isEmpty() ? 0 : spzx_list.get(0).getResult1().intValue();
        int spfz = spfz_list.isEmpty() ? 0 : spfz_list.get(0).getResult1().intValue();
        int xtmz = countListTotal(xt_list);
        int twzx = countListTotal(twzx_list);
        int twfz = countListTotal(twfz_list);
        int spzx = countListTotal(spzx_list);
        int spfz = countListTotal(spfz_list);
        //计算百分比
@ -6339,6 +6322,7 @@ public class StatisticsEsService {
     * 诊查费(21) + 处方费(3)
     */
    public JSONObject getDrugAndExaminationFeeList(ScreenQvo qvo) throws Exception {
        System.out.println("getDrugAndExaminationFeeList获取:诊查费(21) + 处方费(3)");
        if (qvo.getFlag() == 1) {
            //本月
            qvo.setStartDate(DateUtil.getFirstMonthDay());
@ -6352,6 +6336,7 @@ public class StatisticsEsService {
            qvo.setStartDate(DateUtil.getCurrentYearStartTime());
            qvo.setEndDate(DateUtil.getCurrentYearEndTime());
        }
        System.out.println("赋值时间-参数:"+JSON.toJSONString(qvo));
        HashMap<String, String> map = new HashMap<>();
        JSONObject result = new JSONObject();
        map.put("drugFree", "3"); //诊查费
@ -6366,6 +6351,7 @@ public class StatisticsEsService {
                result.put(key, array);
            } else {
                //按日
                System.out.println("执行dateTotalStatistics2方法==>时间"+qvo.getStartDate()+" -- "+qvo.getEndDate());
                JSONArray array = dateTotalStatistics2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), value, null, SaveModel.timeLevel_ZL, null);
                result.put(key, addWeekdayToJSONArray(array));
            }
@ -6484,6 +6470,7 @@ public class StatisticsEsService {
    }
    /**
     * 【全院明细】
     * 科室、医生、问诊量、接诊量、未接诊量、接诊率、处方量、检查费、药品费、总收入
@ -6506,7 +6493,7 @@ public class StatisticsEsService {
            qvo.setEndDate(DateUtil.getStringDateShort());
        } else if (qvo.getFlag() == 3) {
            //全年
            qvo.setStartDate(DateUtil.getCurrentYearStartTime() );
            qvo.setStartDate(DateUtil.getCurrentYearStartTime());
            qvo.setEndDate(DateUtil.getCurrentYearEndTime());
        }
        //查科室
@ -6535,9 +6522,10 @@ public class StatisticsEsService {
    }
    /**
     * 导出
     * 获取全部的科室和医生数据
     */
    public List getAllDeptAndDoctorDetails(ScreenQvo qvo) throws Exception {
    public void getAllDeptAndDoctorDetails(ScreenQvo qvo, OutputStream os) throws Exception {
        if (qvo.getFlag() == 1) {
            //本月
            qvo.setStartDate(DateUtil.getFirstMonthDay());
@ -6567,7 +6555,51 @@ public class StatisticsEsService {
        System.out.println(JSON.toJSONString(deptList));
        System.out.println(JSON.toJSONString(linkedHashMap));
        return null;
        WritableWorkbook wwb = Workbook.createWorkbook(os);
        try {
            WritableSheet sheet = wwb.createSheet("sheet", 1);
            String header[] = {"科室", "医生", "问诊量", " 接诊量", "接诊率", "处方量", "诊查费", "药品费", "总收入"};
            int i = 0;
            for (String h : header) {
                addCellHospital(sheet, 0, i, h);
                i++;
            }
            int j = 1;
            for (Map<String, Object> map : deptList) {
                addCellHospital(sheet, j, 0, String.valueOf(map.get("deptName")) + "全体");
                addCellHospital(sheet, j, 1, String.valueOf(map.get("doctorName")));
                addCellHospital(sheet, j, 2, String.valueOf(map.get("total")));
                addCellHospital(sheet, j, 3, String.valueOf(map.get("haveReceiveCount")));//接诊量
                addCellHospital(sheet, j, 4, String.valueOf(map.get("jzl")));//接诊率
                addCellHospital(sheet, j, 5, String.valueOf(map.get("prescription_volume")));//处方量
                addCellHospital(sheet, j, 6, String.valueOf(map.get("free_exam")));//诊查费
                addCellHospital(sheet, j, 7, String.valueOf(map.get("free_prescription")));//药品费
                addCellHospital(sheet, j, 8, String.valueOf(map.get("fee_total")));//药品费
                j++;//换行
                //填充医生数据
                List<Map<String, Object>> doctorList = (List<Map<String, Object>>) linkedHashMap.get(map.get("deptCode"));//取出科室的数据
                for (Map<String, Object> doctorMap : doctorList) {
                    addCellHospital(sheet, j, 0, String.valueOf(map.get("deptName")));//科室
                    addCellHospital(sheet, j, 1, String.valueOf(doctorMap.get("doctorName")));
                    addCellHospital(sheet, j, 2, String.valueOf(doctorMap.get("total")));
                    addCellHospital(sheet, j, 3, String.valueOf(doctorMap.get("haveReceiveCount")));//接诊量
                    addCellHospital(sheet, j, 4, String.valueOf(doctorMap.get("jzl")));//接诊率
                    addCellHospital(sheet, j, 5, String.valueOf(doctorMap.get("prescription_volume")));//处方量
                    addCellHospital(sheet, j, 6, String.valueOf(doctorMap.get("free_exam")));//诊查费
                    addCellHospital(sheet, j, 7, String.valueOf(doctorMap.get("free_prescription")));//药品费
                    addCellHospital(sheet, j, 8, String.valueOf(doctorMap.get("fee_total")));//药品费
                    j++;//换行
                }
            }
            wwb.write();
            wwb.close();
        } catch (Exception e) {
            e.printStackTrace();
            if (wwb != null) {
                wwb.close();
            }
        }
    }
@ -6698,18 +6730,17 @@ public class StatisticsEsService {
            }
            // 查出所有医生的数据 赋值科室
            String sql = " SELECT\t`id`,\t`name`,\tphoto,\tvisit_dept \"deptCode\",visit_dept_name \"deptName\" \n" +
            String sql = "SELECT\n" +
                    "	a.doctor_code  \"doctorCode\",a.dept_code \"deptCode\",a.dept_name \"deptName\",b.photo\n" +
                    "FROM\n" +
                    "\tbase.base_doctor \n" +
                    "WHERE\n" +
                    "\t1 = 1 \n" +
                    "\tAND visit_dept IS NOT NULL \n";
                    "	base.base_doctor_hospital a\n" +
                    "	INNER JOIN base.base_doctor b ON a.doctor_code = b.id ";
            List<Map<String, Object>> doctorList = jdbcTemplate.queryForList(sql);
            for (Map<String, Object> map : sortedMaps) {
                String code = String.valueOf(map.get("doctorCode"));
                for (Map<String, Object> doctorMap : doctorList) {
                    if (code.equals(String.valueOf(doctorMap.get("id")))) {
                    if (code.equals(String.valueOf(doctorMap.get("doctorCode")))) {
                        map.put("deptCode", String.valueOf(doctorMap.get("deptCode")));
                        map.put("deptName", String.valueOf(doctorMap.get("deptName")));
                        map.put("photo", String.valueOf(doctorMap.get("photo")));
@ -6774,7 +6805,6 @@ public class StatisticsEsService {
        String previousStartDate = previousStart.format(DateTimeFormatter.ISO_LOCAL_DATE);
        String previousEndDate = previousEnd.format(DateTimeFormatter.ISO_LOCAL_DATE);
        // 返回上一个周期的时间段
        return new String[]{previousStartDate, previousEndDate};
    }
@ -6799,6 +6829,19 @@ public class StatisticsEsService {
        return new String[]{previousStartDate, previousEndDate};
    }
    /**
     * 循环list统计出数据
     */
    public int countListTotal(List<SaveModel> list) {
        int total = 0;
        if (!list.isEmpty()) {
            for (SaveModel model : list) {
                total += model.getResult1().intValue();
            }
        }
        return total;
    }
    /**
     * 转换
     */
@ -6900,7 +6943,14 @@ public class StatisticsEsService {
            }
        }
        return result;
    }
    /**
     * excel 增加单元格
     */
    private void addCellHospital(WritableSheet ws, int row, int column, String data) throws WriteException {
        Label label = new Label(column, row, data);
        ws.addCell(label);
    }

+ 8 - 8
business/es-service/src/main/java/com/yihu/jw/es/util/ElasticsearchUtil.java

@ -848,7 +848,7 @@ public class ElasticsearchUtil {
            }
        }
        sql.append(groupBy);
        logger.info("sql:"+sql);
        //logger.info("sql:"+sql);
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
@ -955,7 +955,7 @@ public class ElasticsearchUtil {
            }
        }
        sql.append(groupBy);
        logger.info("sql:"+sql);
        //logger.info("sql:"+sql);
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
@ -1310,7 +1310,7 @@ public class ElasticsearchUtil {
            }
        }
        sql.append(groupBy);
        logger.info("sql:"+sql);
        //logger.info("sql:"+sql);
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
@ -1439,7 +1439,7 @@ public class ElasticsearchUtil {
            }
        }
        sql.append(groupBy);
        logger.info("sql:"+sql);
        //logger.info("sql:"+sql);
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
@ -1609,7 +1609,7 @@ public class ElasticsearchUtil {
            }
        }
        sql.append(groupBy);
        logger.info("sql :" + sql.toString());
        //logger.info("sql :" + sql.toString());
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
@ -1748,7 +1748,7 @@ public class ElasticsearchUtil {
            }
        }
        sql.append(groupBy);
        logger.info("sql :" + sql.toString());
        //logger.info("sql :" + sql.toString());
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
@ -1890,7 +1890,7 @@ public class ElasticsearchUtil {
            }
        }
        sql.append(groupBy);
        logger.info("sql :" + sql.toString());
        //logger.info("sql :" + sql.toString());
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
@ -2028,7 +2028,7 @@ public class ElasticsearchUtil {
            }
        }
        sql.append(groupBy);
        logger.info("sql :" + sql.toString());
        //logger.info("sql :" + sql.toString());
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }

+ 24 - 20
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/statistics/EsStatisticsEndpoint.java

@ -14,6 +14,9 @@ import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WriteException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -1183,7 +1186,7 @@ public class EsStatisticsEndpoint extends EnvelopRestEndpoint {
    /**
     * 查询收入,开方,问诊量
     * 参数:
     * strJson={"startDate":"2023-07-18","endDate":"2023-07-19","area":"350200","level":2}
     * strJson={"startDate":"2023-07-18","endDate":"2023-07-19","area":"350200","level":2,"flag":1}
     */
    @GetMapping(value = BaseHospitalRequestMapping.Statistics.getTotal3Data)
    @ApiOperation(value = "查询收入,开方,问诊量")
@ -1194,13 +1197,14 @@ public class EsStatisticsEndpoint extends EnvelopRestEndpoint {
            result = statisticsEsService.getTotal3Data(qvo);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("接口(getTotal3Data):报错==>入参:"+JSON.toJSONString(qvo));
        }
        return success(result);
    }
    /**
     * 获取咨询各类型的数量
     * 参数:{"startDate":"2023-07-01","endDate":"2023-07-19","area":"350200","level":2}
     * 参数:{"startDate":"2023-07-01","endDate":"2023-07-19","area":"350200","level":2,"flag":1}
     */
    @GetMapping(value = BaseHospitalRequestMapping.Statistics.getKindsConsultCount)
    @ApiOperation(value = "获取咨询各类型的数量")
@ -1211,6 +1215,7 @@ public class EsStatisticsEndpoint extends EnvelopRestEndpoint {
            result = statisticsEsService.getKindsConsultCount(qvo);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("接口(getKindsConsultCount):报错==>入参:"+JSON.toJSONString(qvo));
        }
        return success(result);
    }
@ -1221,7 +1226,7 @@ public class EsStatisticsEndpoint extends EnvelopRestEndpoint {
     * 参数:
     * timeType=1 按天分组
     * timeType=3 按月分组
     * strJson={"startDate":"2023-07-15","endDate":"2023-07-16","area":"350200","level":2,"timeType":"1"}
     * strJson={"startDate":"2023-07-15","endDate":"2023-07-16","area":"350200","level":2,"flag":1}
     */
    @GetMapping(value = BaseHospitalRequestMapping.Statistics.getConsultAndPrescriptionList)
    @ApiOperation(value = "获取【已接诊量、未接诊量、取消量、处方量】数据")
@ -1232,6 +1237,7 @@ public class EsStatisticsEndpoint extends EnvelopRestEndpoint {
            result = statisticsEsService.getConsultAndPrescriptionList(qvo);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("接口(getConsultAndPrescriptionList):报错==>入参:"+JSON.toJSONString(qvo));
        }
        return success(result);
    }
@ -1243,7 +1249,7 @@ public class EsStatisticsEndpoint extends EnvelopRestEndpoint {
     * 参数:
     * timeType=1 按天分组
     * timeType=3 按月分组
     * strJson={"startDate":"2023-07-15","endDate":"2023-07-16","area":"350200","level":2,"timeType":"1"}
     * strJson={"startDate":"2023-07-15","endDate":"2023-07-16","area":"350200","level":2,"flag":"1"}
     */
    @GetMapping(value = BaseHospitalRequestMapping.Statistics.getDrugAndExaminationFeeList)
    @ApiOperation(value = "获取【药品费、诊查费】数据")
@ -1254,6 +1260,7 @@ public class EsStatisticsEndpoint extends EnvelopRestEndpoint {
            result = statisticsEsService.getDrugAndExaminationFeeList(qvo);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("接口(getDrugAndExaminationFeeList):报错==>入参:"+JSON.toJSONString(qvo));
        }
        return success(result);
    }
@ -1261,8 +1268,8 @@ public class EsStatisticsEndpoint extends EnvelopRestEndpoint {
    /**
     * 获取【科室、医生】的接诊量接诊率排名
     * 参数:
     * 科室参数:strJson={"startDate":"2023-07-01","endDate":"2023-07-20","area":"350211A1002","level":4,"lowLevel":5}
     * 医生参数:strJson={"startDate":"2023-07-17","endDate":"2023-07-20","area":"","level":5,"lowLevel":6}
     * 科室参数:strJson={"startDate":"2023-07-01","endDate":"2023-07-20","area":"350211A1002","level":4,"flag":"1"}
     * 医生参数:strJson={"startDate":"2023-07-17","endDate":"2023-07-20","area":"","level":5,"flag":"1"}
     */
    @GetMapping(value = BaseHospitalRequestMapping.Statistics.getDeptOrDoctorVolumeList)
    @ApiOperation(value = " 获取【科室、医生】的接诊量接诊率排名")
@ -1273,6 +1280,7 @@ public class EsStatisticsEndpoint extends EnvelopRestEndpoint {
            result = statisticsEsService.getDeptOrDoctorVolumeList(qvo);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("接口(getDeptOrDoctorVolumeList):报错==>入参:"+JSON.toJSONString(qvo));
        }
        return success(result);
    }
@ -1282,8 +1290,8 @@ public class EsStatisticsEndpoint extends EnvelopRestEndpoint {
     * 【全院明细】
     * 科室、医生、问诊量、接诊量、未接诊量、接诊率、处方量、检查费、药品费、总收入
     * 参数:
     * 科室:strJson={"startDate":"2023-07-01","endDate":"2023-07-20","area":"医院代码","level":4,"lowLevel":5}
     * 医生:strJson={"startDate":"2023-07-17","endDate":"2023-07-20","area":"科室代码","level":5,"lowLevel":6}
     * 科室:strJson={"startDate":"2023-07-01","endDate":"2023-07-20","area":"350211A1002","level":4,"lowLevel":5,"flag":"1"}
     * 医生:strJson={"startDate":"2023-07-17","endDate":"2023-07-20","area":"科室代码","level":5,"lowLevel":6,"flag":"1"}
     */
    @GetMapping(value = BaseHospitalRequestMapping.Statistics.getAllHospitalDetails)
    @ApiOperation(value = "【全院明细】")
@ -1294,32 +1302,28 @@ public class EsStatisticsEndpoint extends EnvelopRestEndpoint {
            result = statisticsEsService.getAllHospitalDetails(qvo);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("接口(getAllHospitalDetails):报错==>入参:"+JSON.toJSONString(qvo));
        }
        return success(result);
    }
    /**
     * todo 导出的接口
     * 导出全部数据
     * 导出全院数据 exportHospitalDetails
     * {"startDate":"","endDate":"","area":"350211A1002","level":4,"lowLevel":5,"flag":1}
     */
    @GetMapping(value = BaseHospitalRequestMapping.Statistics.exportHospitalDetails)
    @ApiOperation(value = "【导出全院明细】")
    public ObjEnvelop exportHospitalDetails(@RequestParam(required = true) String strJson, HttpServletResponse response) {
        JSONObject result = new JSONObject();
    public void exportHospitalDetails(@RequestParam(required = true) String strJson, HttpServletResponse response) {
        ScreenQvo qvo = JSON.parseObject(strJson, ScreenQvo.class);
        try {
            ScreenQvo qvo = JSON.parseObject(strJson, ScreenQvo.class);
            //导出...
            List  list= statisticsEsService.getAllDeptAndDoctorDetails(qvo);
            result.put("list",list);
//            List<Map<String, Object>> list = expressages.getDetailMexportHospitalDetailsodelList();
            response.setContentType("octets/stream");
            response.setHeader("Content-Disposition", "attachment; filename=" + new String("pushDataList.xls"));
            response.setHeader("Content-Disposition", "attachment; filename=" + new String("hospitalDetails.xls"));
            OutputStream os = response.getOutputStream();
//            statisticsEsService.pushListWrite(os, list);
            statisticsEsService.getAllDeptAndDoctorDetails(qvo,os); //导出
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("接口(exportHospitalDetails):报错==>入参:"+JSON.toJSONString(qvo));
        }
        return success(result);
    }