Browse Source

代码修改

LAPTOP-KB9HII50\70708 11 tháng trước cách đây
mục cha
commit
6455ec8c5a

+ 28 - 25
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java

@ -4900,28 +4900,9 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
    //1、满意度:使用100分制,取值与医生端首页—我的评价功能内“总评分”的取值相同;
    //2、积分:获得的积分总和-已过期的积分-已兑换的积分;
    //3、个人结算:该医生通过图文复诊、视频复诊收取到的诊查费总和 加上药品费用。
    // 新增 康复咨询待回复和进行中的数量
    public com.alibaba.fastjson.JSONObject doctorIndexStatis(String doctor){
        com.alibaba.fastjson.JSONObject json = new com.alibaba.fastjson.JSONObject();
//        WlyyHospitalSysDictDO dictDO = hospitalSysDictDao.findOneByDictNameAndDictCode("HOSPITAL_INTEGRATE_VALIDITY_DICT","HOSPITAL_INTEGRATE_VALIDITY_DICT");
//        com.alibaba.fastjson.JSONArray jsonArray = JSON.parseArray(dictDO.getDictValue());
//        //[{"type":0,"flag":0,"dateTime":"2023-07-06T16:00:00.000Z","days":"","description":"<p>1111</p>"},
//        //{"type":1,"flag":1,"dateTime":"","days":"2","description":"<p>5555</p>"}]
//        int flag = 0;
//        String dateTime = "";
//        String days = "";
//        for (int i=0;i<jsonArray.size();i++){
//            com.alibaba.fastjson.JSONObject jsonObject = jsonArray.getJSONObject(i);
//            if(jsonObject.get("type") instanceof Integer && jsonObject.getInteger("type")==1){
//                flag = jsonObject.getInteger("flag");
//                dateTime = jsonObject.getString("dateTime");
//                days = jsonObject.getString("days");
//            }
//        }
//        if(StringUtils.isNotBlank(dateTime)){
//            dateTime = dateTime.substring(0,19);
//            dateTime = dateTime.replaceAll("T"," ");
//        }
        //医生获取积分数据
        String integrateSql ="SELECT\n" +
                "\tIFNULL(SUM(integrate), 0) AS \"total\"\n" +
@ -4929,11 +4910,6 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                "\tbase_hospital_user_integrate\n" +
                "WHERE\n" +
                "\tuser = '"+doctor+"' and status=1 ";
//        if(flag==0){
//            integrateSql += " and create_time>'"+dateTime+"' ";
//        }else {
//            integrateSql += " and (integrate_type=2 or (integrate_type=1 and DATEDIFF(NOW(),create_time)<'"+days+"')) ";
//        }
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(integrateSql);
        Double integrateTotal = 0.0;
        if (rstotal != null && rstotal.size() > 0) {
@ -4967,6 +4943,33 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                "where doctor='"+doctor+"' and `status`>30 ";
        Double fee = jdbcTemplate.queryForObject(sql3,Double.class);
        json.put("fee", fee);
        //新增 康复咨询待回复和进行中的数量
        String sql4 = "SELECT " +
                "count(outpatient.id) AS \"total\" " +
                "FROM " +
                "wlyy_outpatient outpatient," +
                "base_patient patient " +
                "WHERE " +
                "outpatient.patient=patient.id " +
                "AND outpatient.status=1 " +
                "AND outpatient.doctor='" + doctor + "' " +
                "AND outpatient.pay_status = 1 " +
                "AND outpatient.outpatient_type= '4'  ";
        int kfWaitNum = jdbcTemplate.queryForObject(sql4,Integer.class);
        String sql5 = "SELECT COUNT(DISTINCT room.id) AS \"total\" " +
                "FROM  " +
                " wlyy_hospital_waiting_room room, " +
                " base_patient patient,\n" +
                " wlyy_outpatient outpatient \n" +
                " WHERE \n" +
                " room.patient_id=patient.id \n" +
                " AND room.outpatient_id=outpatient.id \n" +
                " AND outpatient.pay_status = 1 \n" +
                " AND outpatient.status = 0 AND outpatient.outpatient_type= '4' AND room.doctor='"+doctor+"' ";
        int kfIngNum = jdbcTemplate.queryForObject(sql5,Integer.class);
        json.put("kfWaitNum", kfWaitNum);//待回复
        json.put("kfIngNum", kfIngNum);//进行中
        return json;
    }

+ 104 - 30
business/es-service/src/main/java/com/yihu/jw/es/service/StatisticsEsService.java

@ -5684,6 +5684,80 @@ public class StatisticsEsService {
        }
    }
    /**
     * 医生圈app-管理员文章统计头部
     *
     * @param flag      0自定义 1本月2近半年3本年
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param area      区域编码 如 level2 area传市编码
     * @param level     2 市  3区  4医院 5、科室 6医生
     * @return
     * @throws Exception
     */
    public JSONObject getArticleTotalManage(Integer flag, String startDate, String endDate, String area, int level,String slaveKey1) throws Exception {
        //发布量
        SaveModel saveModel = null;
        SaveModel saveModelT = null;
        SaveModel saveModelH = null;
        //收藏量
        SaveModel saveModel3 = null;
        SaveModel saveModel3T = null;
        SaveModel saveModel3H = null;
        //点赞量
        SaveModel saveModel2 = null;
        SaveModel saveModel2T = null;
        SaveModel saveModel2H = null;
        if (flag == 1) {
            startDate = DateUtil.getFirstMonthDay() + " 00:00:00";
            endDate = DateUtil.getLastMonthDay() + " 23:59:59";
        } else if (flag == 2) {
            startDate = DateUtil.getMonthDate(new Date(), -6) + " 00:00:00";
            endDate = DateUtil.getStringDateShort() + " 23:59:59";
        } else if (flag == 3) {
            startDate = DateUtil.getCurrentYearStartTime() + " 00:00:00";
            endDate = DateUtil.getCurrentYearEndTime() + " 23:59:59";
        }
        // 计算上一个周期  开始时间period[0] 、结束时间period[1]
        String[] period = calculatePreviousPeriod(startDate, endDate);
        //计算去年同期时间段 开始时间periodYear[0] 、结束时间periodYear[1]
        String[] periodYear = calculatePreviousYearPeriod(startDate, endDate);
        JSONObject object = new JSONObject();
        //发布量统计
        saveModel = elasticsearchUtil.findOneDateQuotaLevel1(startDate, endDate, area, level, "75", SaveModel.timeLevel_ZL,slaveKey1);
        saveModelH = elasticsearchUtil.findOneDateQuotaLevel1(period[0], period[1], area, level, "75", SaveModel.timeLevel_ZL,slaveKey1);
        saveModelT = elasticsearchUtil.findOneDateQuotaLevel1(periodYear[0], periodYear[1], area, level, "75", SaveModel.timeLevel_ZL,slaveKey1);
        Integer publishTotal = saveModel != null ? saveModel.getResult1().intValue() : 0;
        Integer publishTotalT = saveModelT != null ? saveModelT.getResult1().intValue() : 0;
        Integer publishTotalH = saveModelH != null ? saveModelH.getResult1().intValue() : 0;
        object.put("publishTotal", publishTotal);//发布量
        object.put("publishTotalT", getTwoRange(publishTotal-publishTotalT,publishTotalT,0));//发布量同比
        object.put("publishTotalH", getTwoRange(publishTotal-publishTotalH,publishTotalH,0));//发布量环比
        //收藏量统计
        saveModel3 = elasticsearchUtil.findOneDateQuotaLevel2(startDate, endDate, area, level, "76", SaveModel.timeLevel_ZL, slaveKey1, "3");
        saveModel3H = elasticsearchUtil.findOneDateQuotaLevel2(period[0], period[1], area, level, "76", SaveModel.timeLevel_ZL, slaveKey1, "3");
        saveModel3T = elasticsearchUtil.findOneDateQuotaLevel2(periodYear[0], periodYear[1], area, level, "76", SaveModel.timeLevel_ZL, slaveKey1, "3");
        Integer collectTotal = saveModel3 != null ? saveModel3.getResult1().intValue() : 0;
        Integer collectTotalT = saveModel3T != null ? saveModel3T.getResult1().intValue() : 0;
        Integer collectTotalH = saveModel3H != null ? saveModel3H.getResult1().intValue() : 0;
        object.put("collectTotal", collectTotal);//收藏量
        object.put("collectTotalT", getTwoRange(collectTotal-collectTotalT,collectTotalT,0));//收藏量同比
        object.put("collectTotalH", getTwoRange(collectTotal-collectTotalH,collectTotalH,0));//收藏量环比
        //点赞量统计
        saveModel2 = elasticsearchUtil.findOneDateQuotaLevel2(startDate, endDate, area, level, "76", SaveModel.timeLevel_ZL, slaveKey1, "2");
        saveModel2H = elasticsearchUtil.findOneDateQuotaLevel2(period[0], period[1], area, level, "76", SaveModel.timeLevel_ZL, slaveKey1, "2");
        saveModel2T = elasticsearchUtil.findOneDateQuotaLevel2(periodYear[0], periodYear[1], area, level, "76", SaveModel.timeLevel_ZL, slaveKey1, "2");
        Integer goodTotal = saveModel2 != null ? saveModel2.getResult1().intValue() : 0;
        Integer goodTotalT = saveModel2T != null ? saveModel2T.getResult1().intValue() : 0;
        Integer goodTotalH = saveModel2H != null ? saveModel2H.getResult1().intValue() : 0;
        object.put("goodTotal", goodTotal);//点赞量
        object.put("goodTotalT", getTwoRange(goodTotal-goodTotalT,goodTotalT,0));//点赞量同比
        object.put("goodTotalH", getTwoRange(goodTotal-goodTotalH,goodTotalH,0));//点赞量环比
        return object;
    }
    /**
     * 医生圈app-文章统计头部
     *
@ -6511,23 +6585,23 @@ public class StatisticsEsService {
        //查科室
        if ("4".equals(String.valueOf(qvo.getLevel()))) {
            //问诊总数
            List<SaveModel> model01 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "12", SaveModel.timeLevel_ZL, "5", "9");
            List<SaveModel> model02 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "16", SaveModel.timeLevel_ZL, "5", "16");
            List<SaveModel> model03 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "14", SaveModel.timeLevel_ZL, "5", "12");
            List<SaveModel> model04 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "12", SaveModel.timeLevel_ZL, "5", "1");
            List<SaveModel> model05 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "16", SaveModel.timeLevel_ZL, "5", "17");
            List<SaveModel> model01 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "5", "9");
            List<SaveModel> model02 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "5", "16");
            List<SaveModel> model03 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "5", "12");
            List<SaveModel> model04 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "5", "1");
            List<SaveModel> model05 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "5", "17");
            //已接诊
            List<SaveModel> jz_model01 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "12", SaveModel.timeLevel_ZL, "5", "9", "1");
            List<SaveModel> jz_model02 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "16", SaveModel.timeLevel_ZL, "5", "16", "1");
            List<SaveModel> jz_model03 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "14", SaveModel.timeLevel_ZL, "5", "12", "1");
            List<SaveModel> jz_model04 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "12", SaveModel.timeLevel_ZL, "5", "1", "1");
            List<SaveModel> jz_model05 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "16", SaveModel.timeLevel_ZL, "5", "17", "1");
            List<SaveModel> jz_model01 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "5", "9", "1");
            List<SaveModel> jz_model02 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "5", "16", "1");
            List<SaveModel> jz_model03 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "5", "12", "1");
            List<SaveModel> jz_model04 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "5", "1", "1");
            List<SaveModel> jz_model05 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "5", "17", "1");
            //未接诊
            List<SaveModel> wjz_model01 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "12", SaveModel.timeLevel_ZL, "5", "9", "0");
            List<SaveModel> wjz_model02 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "16", SaveModel.timeLevel_ZL, "5", "16", "0");
            List<SaveModel> wjz_model03 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "14", SaveModel.timeLevel_ZL, "5", "12", "0");
            List<SaveModel> wjz_model04 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "12", SaveModel.timeLevel_ZL, "5", "1", "0");
            List<SaveModel> wjz_model05 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "16", SaveModel.timeLevel_ZL, "5", "17", "0");
            List<SaveModel> wjz_model01 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "5", "9", "0");
            List<SaveModel> wjz_model02 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "5", "16", "0");
            List<SaveModel> wjz_model03 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "5", "12", "0");
            List<SaveModel> wjz_model04 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "5", "1", "0");
            List<SaveModel> wjz_model05 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "5", "17", "0");
            //转换
            List<Map<String, Object>> list01 = getCoutListPCNew(4, "5", model01, jz_model01, wjz_model01);
@ -6563,23 +6637,23 @@ public class StatisticsEsService {
        //查医生
        if ("5".equals(String.valueOf(qvo.getLevel()))) {
            //问诊总数
            List<SaveModel> model01 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "12", SaveModel.timeLevel_ZL, "6", "9");
            List<SaveModel> model02 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "16", SaveModel.timeLevel_ZL, "6", "16");
            List<SaveModel> model03 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "14", SaveModel.timeLevel_ZL, "6", "12");
            List<SaveModel> model04 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "12", SaveModel.timeLevel_ZL, "6", "1");
            List<SaveModel> model05 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "16", SaveModel.timeLevel_ZL, "6", "17");
            List<SaveModel> model01 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "6", "9");
            List<SaveModel> model02 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "6", "16");
            List<SaveModel> model03 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "6", "12");
            List<SaveModel> model04 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "6", "1");
            List<SaveModel> model05 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "6", "17");
            //已接诊
            List<SaveModel> jz_model01 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "12", SaveModel.timeLevel_ZL, "6", "9", "1");
            List<SaveModel> jz_model02 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "16", SaveModel.timeLevel_ZL, "6", "16", "1");
            List<SaveModel> jz_model03 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "14", SaveModel.timeLevel_ZL, "6", "12", "1");
            List<SaveModel> jz_model04 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "12", SaveModel.timeLevel_ZL, "6", "1", "1");
            List<SaveModel> jz_model05 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "16", SaveModel.timeLevel_ZL, "6", "17", "1");
            List<SaveModel> jz_model01 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "6", "9", "1");
            List<SaveModel> jz_model02 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "6", "16", "1");
            List<SaveModel> jz_model03 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "6", "12", "1");
            List<SaveModel> jz_model04 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "6", "1", "1");
            List<SaveModel> jz_model05 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "6", "17", "1");
            //未接诊
            List<SaveModel> wjz_model01 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "12", SaveModel.timeLevel_ZL, "6", "9", "0");
            List<SaveModel> wjz_model02 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "16", SaveModel.timeLevel_ZL, "6", "16", "0");
            List<SaveModel> wjz_model03 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "14", SaveModel.timeLevel_ZL, "6", "12", "0");
            List<SaveModel> wjz_model04 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "12", SaveModel.timeLevel_ZL, "6", "1", "0");
            List<SaveModel> wjz_model05 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "16", SaveModel.timeLevel_ZL, "6", "17", "0");
            List<SaveModel> wjz_model01 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "6", "9", "0");
            List<SaveModel> wjz_model02 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "6", "16", "0");
            List<SaveModel> wjz_model03 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "6", "12", "0");
            List<SaveModel> wjz_model04 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "6", "1", "0");
            List<SaveModel> wjz_model05 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, "6", "17", "0");
            List<Map<String, Object>> list01 = getCoutListPCNew(5, "6", model01, jz_model01, wjz_model01);
            List<Map<String, Object>> list02 = getCoutListPCNew(5, "6", model02, jz_model02, wjz_model02);

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/prescription/WlyyOutpatientDO.java

@ -50,7 +50,7 @@ public class WlyyOutpatientDO extends UuidIdentityEntity {
    private String conNo;
    /**
     * 1.在线复诊2.协同门诊 3.专家咨询 4为上门复诊
     * 1.在线复诊2.协同门诊 3.专家咨询 4康复咨询
     */
    private String outpatientType;
    /**

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

@ -1026,6 +1026,30 @@ class EsStatisticsEndpoint extends EnvelopRestEndpoint {
        return success(result);
    }
    @GetMapping(value = "getArticleTotalManage")
    @ApiOperation(value = "管理员文章统计首页")
    public ObjEnvelop getArticleTotalManage(
            @ApiParam(name = "startDate", value = "开始时间", required = false)
            @RequestParam(value = "startDate", required = false) String startDate,
            @ApiParam(name = "endDate", value = "结束时间", required = false)
            @RequestParam(value = "endDate", required = false) String endDate,
            @ApiParam(name = "area", value = "区域编码 如 level2 area传市编码", required = true)
            @RequestParam(value = "area", required = true) String area,
            @ApiParam(name = "level", value = "2 市  3区  4医院 5、科室 6医生", required = true)
            @RequestParam(value = "level", required = true) int level,
            @ApiParam(name = "flag", value = "0自定义 1本月2近半年3本年", required = true)
            @RequestParam(value = "flag", required = true) Integer flag,
            @ApiParam(name = "slaveKey1", value = "slaveKey1", required = true)
            @RequestParam(value = "slaveKey1", required = false) String slaveKey1) {
        JSONObject result = new JSONObject();
        try {
            result = statisticsEsService.getArticleTotalManage(flag, startDate, endDate, area, level,slaveKey1);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return success(result);
    }
    @GetMapping(value = "getArticleTotalApp")
    @ApiOperation(value = " app文章头部统计")
    public ObjEnvelop getArticleTotalApp(

+ 5 - 3
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/common/StatisticsController.java

@ -128,10 +128,12 @@ public class StatisticsController extends EnvelopRestEndpoint {
    @GetMapping(value = "deviceAnalysisTop")
    @ApiOperation(value = "设备分析头部统计")
    public ObjEnvelop deviceAnalysisTop(@RequestParam(required = false) String startDate,
                                     @RequestParam(required = false) String endDate) {
    public ObjEnvelop deviceAnalysisTop(@ApiParam(name = "isTH", value = "是否返回同环比 1是 其他否", required = false)
                                        @RequestParam(required = false) String isTH,
                                        @RequestParam(required = false) String startDate,
                                        @RequestParam(required = false) String endDate) {
        try {
            JSONObject json = statisticsService.deviceAnalysisTop(startDate,endDate);
            JSONObject json = statisticsService.deviceAnalysisTop(startDate,endDate,isTH);
            return ObjEnvelop.getSuccess("查询成功",json);
        } catch (Exception e) {
            e.printStackTrace();

+ 212 - 34
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/common/service/StatisticsService.java

@ -11,6 +11,8 @@ import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.text.DecimalFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@ -402,63 +404,68 @@ public class StatisticsService {
     * 8、【血糖仪上传】:展示查询时间段内所有血糖仪设备的数据上传次数;
     * 9、【血压计上传】:展示查询时间段内所有血压计设备的数据上传次数;
     */
    public JSONObject deviceAnalysisTop(String startDate,String endDate) throws Exception{
    public JSONObject deviceAnalysisTop(String startDate,String endDate,String isTH) throws Exception{
        JSONObject json = new JSONObject();
        // 计算上一个周期  开始时间period[0] 、结束时间period[1]
        String[] period = calculatePreviousPeriod(startDate, endDate);
        //计算去年同期时间段 开始时间periodYear[0] 、结束时间periodYear[1]
        String[] periodYear = calculatePreviousYearPeriod(startDate, endDate);
        String filterDevice = "";
        String filterUpload = "";
        String filterDept = "";
        String filterDeptUse = "";
        String filterDeviceT = "";
        String filterUploadT = "";
        String filterDeptT = "";
        String filterDeptUseT = "";
        String filterDeviceH = "";
        String filterUploadH = "";
        String filterDeptH = "";
        String filterDeptUseH = "";
        if(StringUtils.isNotBlank(startDate)){
            filterDevice += " and d.apply_date>='"+startDate+"' ";
            filterDept += " and apply_date>='"+startDate+"' ";
            filterDeptUse += " and d.apply_date>='"+startDate+"' and i.czrq>='"+startDate+"' ";
            filterUpload += " and czrq>='"+startDate+"' ";
            filterDeviceH += " and d.apply_date>='"+period[0]+"' ";
            filterDeptH += " and apply_date>='"+period[0]+"' ";
            filterDeptUseH += " and d.apply_date>='"+period[0]+"' and i.czrq>='"+period[0]+"' ";
            filterUploadH += " and czrq>='"+period[0]+"' ";
            filterDeviceT += " and d.apply_date>='"+periodYear[0]+"' ";
            filterDeptT += " and apply_date>='"+periodYear[0]+"' ";
            filterDeptUseT += " and d.apply_date>='"+periodYear[0]+"' and i.czrq>='"+periodYear[0]+"' ";
            filterUploadT += " and czrq>='"+periodYear[0]+"' ";
        }
        if(StringUtils.isNotBlank(endDate)){
            filterDevice += " and d.apply_date<='"+endDate+" 23:59:59' ";
            filterDept += " and apply_date<='"+endDate+" 23:59:59' ";
            filterDeptUse += " and d.apply_date<='"+endDate+" 23:59:59' and i.czrq<='"+endDate+" 23:59:59' ";
            filterUpload += " and czrq<='"+endDate+" 23:59:59' ";
            filterDeviceH += " and d.apply_date<='"+period[1]+" 23:59:59' ";
            filterDeptH += " and apply_date<='"+period[1]+" 23:59:59' ";
            filterDeptUseH += " and d.apply_date<='"+period[1]+" 23:59:59' and i.czrq<='"+period[1]+" 23:59:59' ";
            filterUploadH += " and czrq<='"+period[1]+" 23:59:59' ";
            filterDeviceT += " and d.apply_date<='"+periodYear[1]+" 23:59:59' ";
            filterDeptT += " and apply_date<='"+periodYear[1]+" 23:59:59' ";
            filterDeptUseT += " and d.apply_date<='"+periodYear[1]+" 23:59:59' and i.czrq<='"+periodYear[1]+" 23:59:59' ";
            filterUploadT += " and czrq<='"+periodYear[1]+" 23:59:59' ";
        }
        //智能设备总数
        int devcieTotal = 0;
        int devcieXt = 0;//血糖仪数
        int devcieXy = 0;//血压计数
        String deviceSql = "SELECT dm.category_code type,COUNT(d.id) num FROM " +
                "wlyy_devices d INNER JOIN dm_device dm ON d.category_code = dm.id " +
                "where 1=1  " + filterDevice +
                "GROUP BY dm.category_code";
        List<Map<String,Object>> deviceList = jdbcTemplate.queryForList(deviceSql);
        for (Map<String,Object> map:deviceList){
            String type = map.get("type")+"";
            if("1".equals(type)){
                devcieXt = Integer.parseInt(map.get("num")+"");
            }
            if("2".equals(type)){
                devcieXy = Integer.parseInt(map.get("num")+"");
            }
        }
        devcieTotal = devcieXt+devcieXy;
        JSONObject deviceJson = deviceJson(filterDevice);
        int devcieXt = deviceJson.getInteger("devcieXt");//血糖仪数
        int devcieXy = deviceJson.getInteger("devcieXy");//血压计数
        int devcieTotal = devcieXt+devcieXy;
        json.put("devcieTotal",devcieTotal);
        json.put("devcieXt",devcieXt);
        json.put("devcieXy",devcieXy);
        //设备上传次数
        int uploadTotal = 0;
        int uploadXt = 0;//
        int uploadXy = 0;//
        String uploadSql = "select type,count(id) num from wlyy_patient_health_index where 1=1 "+filterUpload+" group by type";
        List<Map<String,Object>> uploadList = jdbcTemplate.queryForList(uploadSql);
        for (Map<String,Object> map:uploadList){
            String type = map.get("type")+"";
            if("1".equals(type)){
                uploadXt = Integer.parseInt(map.get("num")+"");
            }
            if("2".equals(type)){
                uploadXy = Integer.parseInt(map.get("num")+"");
            }
        }
        uploadTotal = uploadXt+uploadXy;
        JSONObject uploadJson = uploadJson(filterUpload);
        int uploadXt = uploadJson.getInteger("uploadXt");//
        int uploadXy = uploadJson.getInteger("uploadXy");//
        int uploadTotal = uploadXt+uploadXy;
        json.put("uploadTotal",uploadTotal);
        json.put("uploadXt",uploadXt);
        json.put("uploadXy",uploadXy);
@ -479,6 +486,121 @@ public class StatisticsService {
        json.put("deptUse",deptUse);
        json.put("bindNum",bindNum);//绑定次数
        if("1".equals(isTH)){
            //同比字段加个H,环比字段加个T
            //智能设备总数同环比
            JSONObject deviceJsonT = deviceJson(filterDeviceT);
            int devcieXtT = deviceJsonT.getInteger("devcieXt");//血糖仪数
            int devcieXyT = deviceJsonT.getInteger("devcieXy");//血压计数
            int devcieTotalT = devcieXtT+devcieXyT;
            JSONObject deviceJsonH = deviceJson(filterDeviceH);
            int devcieXtH = deviceJsonH.getInteger("devcieXt");//血糖仪数
            int devcieXyH = deviceJsonH.getInteger("devcieXy");//血压计数
            int devcieTotalH = devcieXtH+devcieXyH;
            json.put("devcieTotalT",getTwoRange(deptTotal-devcieTotalT,devcieTotalT,0));
            json.put("devcieXtT",getTwoRange(devcieXt-devcieXtT,devcieXtT,0));
            json.put("devcieXyT",getTwoRange(devcieXy-devcieXyT,devcieXyT,0));
            json.put("devcieTotalH",getTwoRange(deptTotal-devcieTotalH,devcieTotalH,0));
            json.put("devcieXtH",getTwoRange(devcieXt-devcieXtH,devcieXtH,0));
            json.put("devcieXyH",getTwoRange(devcieXy-devcieXyH,devcieXyH,0));
            //设备上传次数同环比
            JSONObject uploadJsonT = uploadJson(filterUploadT);
            int uploadXtT = uploadJsonT.getInteger("uploadXt");//
            int uploadXyT = uploadJsonT.getInteger("uploadXy");//
            int uploadTotalT = uploadXtT+uploadXyT;
            json.put("uploadTotalT",getTwoRange(uploadTotal-uploadTotalT,uploadTotalT,0));
            json.put("uploadXtT",getTwoRange(uploadXt-uploadXtT,uploadXtT,0));
            json.put("uploadXyT",getTwoRange(uploadXy-uploadXyT,uploadXyT,0));
            JSONObject uploadJsonH = uploadJson(filterUploadH);
            int uploadXtH = uploadJsonH.getInteger("uploadXt");//
            int uploadXyH = uploadJsonH.getInteger("uploadXy");//
            int uploadTotalH = uploadXtH+uploadXyH;
            json.put("uploadTotalH",getTwoRange(uploadTotal-uploadTotalH,uploadTotalH,0));
            json.put("uploadXtH",getTwoRange(uploadXt-uploadXtH,uploadXtH,0));
            json.put("uploadXyH",getTwoRange(uploadXy-uploadXyH,uploadXyH,0));
            //投放科室数量同环比
            String deptSqlT = "select count(DISTINCT dept) from wlyy_devices where dept is not null "+filterDeptT;
            String deptUseSqlT = "SELECT count(DISTINCT d.dept) from wlyy_devices d,wlyy_patient_health_index i " +
                    "WHERE d.dept is not null and d.device_code=i.device_sn and i.del=1 "+filterDeptUseT;
            int deptTotalT = jdbcTemplate.queryForObject(deptSqlT,Integer.class);
            int deptUseT = jdbcTemplate.queryForObject(deptUseSqlT,Integer.class);
            if(deptUseT>deptTotalT){
                deptUseT = deptTotalT;
            }
            String deptSqlH = "select count(DISTINCT dept) from wlyy_devices where dept is not null "+filterDeptH;
            String deptUseSqlH = "SELECT count(DISTINCT d.dept) from wlyy_devices d,wlyy_patient_health_index i " +
                    "WHERE d.dept is not null and d.device_code=i.device_sn and i.del=1 "+filterDeptUseH;
            int deptTotalH = jdbcTemplate.queryForObject(deptSqlH,Integer.class);
            int deptUseH = jdbcTemplate.queryForObject(deptUseSqlH,Integer.class);
            if(deptUseH>deptTotalH){
                deptUseH = deptTotalH;
            }
            //绑定次数同环比
            String bindSqlT = "SELECT COUNT(*) num from wlyy_patient_device " +
                    " where 1=1 "+filterUploadT;
            int bindNumT = jdbcTemplate.queryForObject(bindSqlT,Integer.class);
            String bindSqlH = "SELECT COUNT(*) num from wlyy_patient_device " +
                    " where 1=1 "+filterUploadH;
            int bindNumH = jdbcTemplate.queryForObject(bindSqlH,Integer.class);
            json.put("deptTotalT",getTwoRange(deptTotal-deptTotalT,deptTotalT,0));
            json.put("deptUseT",getTwoRange(deptUse-deptUseT,deptUseT,0));
            json.put("bindNumT",getTwoRange(bindNum-bindNumT,bindNumT,0));
            json.put("deptTotalH",getTwoRange(deptTotal-deptTotalH,deptTotalH,0));
            json.put("deptUseH",getTwoRange(deptUse-deptUseH,deptUseH,0));
            json.put("bindNumH",getTwoRange(bindNum-bindNumH,bindNumH,0));
        }
        return json;
    }
    public JSONObject uploadJson(String filterUpload){
        int uploadXt = 0;//
        int uploadXy = 0;//
        JSONObject json = new JSONObject();
        String uploadSql = "select type,count(id) num from wlyy_patient_health_index where 1=1 "+filterUpload+" group by type";
        List<Map<String,Object>> uploadList = jdbcTemplate.queryForList(uploadSql);
        for (Map<String,Object> map:uploadList){
            String type = map.get("type")+"";
            if("1".equals(type)){
                uploadXt = Integer.parseInt(map.get("num")+"");
            }
            if("2".equals(type)){
                uploadXy = Integer.parseInt(map.get("num")+"");
            }
        }
        json.put("uploadXt",uploadXt);
        json.put("uploadXy",uploadXy);
        return json;
    }
    public JSONObject deviceJson(String filterDevice){
        int devcieXt = 0;//血糖仪数
        int devcieXy = 0;//血压计数
        JSONObject json = new JSONObject();
        String deviceSql = "SELECT dm.category_code type,COUNT(d.id) num FROM " +
                "wlyy_devices d INNER JOIN dm_device dm ON d.category_code = dm.id " +
                "where 1=1  " + filterDevice +
                "GROUP BY dm.category_code";
        List<Map<String,Object>> deviceList = jdbcTemplate.queryForList(deviceSql);
        for (Map<String,Object> map:deviceList){
            String type = map.get("type")+"";
            if("1".equals(type)){
                devcieXt = Integer.parseInt(map.get("num")+"");
            }
            if("2".equals(type)){
                devcieXy = Integer.parseInt(map.get("num")+"");
            }
        }
        json.put("devcieXt",devcieXt);
        json.put("devcieXy",devcieXy);
        return json;
    }
@ -704,4 +826,60 @@ public class StatisticsService {
        String filesize = df.format(size);
        return filesize + "%";
    }
    /**
     * 计算上一个周期。按时间间隔
     */
    public static String[] calculatePreviousPeriod(String start, String end) {
        if (start.length() > 10) {
            start = start.substring(0, 10);
            end = end.substring(0, 10);
        }
        // 将时间字符串转换为LocalDate对象
        LocalDate startDate = LocalDate.parse(start, DateTimeFormatter.ISO_LOCAL_DATE);
        LocalDate endDate = LocalDate.parse(end, DateTimeFormatter.ISO_LOCAL_DATE);
        // 计算周期
        int interval = (int) (endDate.toEpochDay() - startDate.toEpochDay()) + 1;
        // 计算上一个周期的开始时间和结束时间
        LocalDate previousStart = startDate.minusDays(interval);
        LocalDate previousEnd = endDate.minusDays(interval);
        // 将日期对象转换为字符串
        String previousStartDate = previousStart.format(DateTimeFormatter.ISO_LOCAL_DATE);
        String previousEndDate = previousEnd.format(DateTimeFormatter.ISO_LOCAL_DATE);
        // 返回上一个周期的时间段
        return new String[]{previousStartDate, previousEndDate};
    }
    /**
     * 计算去年同期时间段
     */
    public static String[] calculatePreviousYearPeriod(String start, String end) {
        if (start.length() > 10) {
            start = start.substring(0, 10);
            end = end.substring(0, 10);
        }
        // 将时间字符串转换为LocalDate对象
        LocalDate startDate = LocalDate.parse(start, DateTimeFormatter.ISO_LOCAL_DATE);
        LocalDate endDate = LocalDate.parse(end, DateTimeFormatter.ISO_LOCAL_DATE);
        // 计算去年同期的开始时间和结束时间
        LocalDate previousStart = startDate.minusYears(1);
        LocalDate previousEnd = endDate.minusYears(1);
        // 将日期对象转换为字符串
        String previousStartDate = previousStart.format(DateTimeFormatter.ISO_LOCAL_DATE);
        String previousEndDate = previousEnd.format(DateTimeFormatter.ISO_LOCAL_DATE);
        // 返回去年同期的时间段
        return new String[]{previousStartDate, previousEndDate};
    }
    public String getTwoRange(int first, int second, int i) {
        if (second == 0 && first > 0) {
            return "100%";
        } else if (second == 0 && first == 0) {
            return "0%";
        }
        float size = (float) (first * 100) / second;
        DecimalFormat df = new DecimalFormat("0.00");//格式化小数,不足的补0
        String filesize = df.format(size);
        return filesize + "%";
    }
}

+ 4 - 4
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/followup/service/FollowUpService.java

@ -28,7 +28,6 @@ import com.yihu.jw.patient.service.BasePatientService;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.util.idcard.IdCardUtil;
import com.yihu.jw.utils.StringUtil;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.NameValuePair;
@ -560,17 +559,18 @@ public class FollowUpService {
    }
    //添加康复计划随访
    public Followup addRehabilatationFollowup(ServiceItemPlanDO itemPlanDO)  {
    public Followup addRehabilatationFollowup(ServiceItemPlanDO itemPlanDO,String nextTime)  {
        try {
            Followup followup = new Followup();
            followup.setFollowupType("2");
            Date date = DateUtil.strToDate(itemPlanDO.getPlanTime());
            followup.setFollowupDate(date);
            followup.setFollowupPlanDate(date);
            if(StringUtils.isNotBlank(nextTime)){
                followup.setFollowupNextDate(DateUtil.strToDate(nextTime));
            }
            followup.setDoctorCode(itemPlanDO.getDoctor());
            followup.setDoctorName(itemPlanDO.getDoctorName());
//        followup.setOrgCode(doctor.getHospital());
//        followup.setOrgName(doctor.getHospitalName());
            followup.setPatientCode(itemPlanDO.getPatient());
            BasePatientDO patient = patientDao.findById(itemPlanDO.getPatient()).orElse(null);
            followup.setPatientName(patient.getName());

+ 7 - 2
svr/svr-visit-behind/src/main/java/com/yihu/jw/hospital/module/rehabilitation/service/RehabilitationManageService.java

@ -199,7 +199,8 @@ public class RehabilitationManageService {
        int addNum = 0;
        localDateTime = localDateTime.plusDays(addNum);
        List<String> timeList = CronUtils.getExecutionTimeByNum(frequency_code, Integer.parseInt(server_count), localDateTime);
        for (String time : timeList) {
        for (int i = 0; i <timeList.size(); i++){
            String time = timeList.get(i);
            ServiceItemPlanDO itemPlanDO = new ServiceItemPlanDO();
            itemPlanDO.setPlanTime(time);
            itemPlanDO.setPatient(pateint);
@ -211,7 +212,11 @@ public class RehabilitationManageService {
            itemPlanDO.setDoctor(doctor);
            itemPlanDO.setDoctorName(doctorName);
            if ("6".equals(relationType)) {
                Followup followup = followUpService.addRehabilatationFollowup(itemPlanDO);
                String nextTime = null;
                if(i < timeList.size()-1){
                    nextTime = timeList.get(i+1);
                }
                Followup followup = followUpService.addRehabilatationFollowup(itemPlanDO,nextTime);
                if (followup != null) {
                    itemPlanDO.setRelationCode(followup.getId() + "");
                }