Browse Source

健康咨询及问卷调查

wujunjie 8 năm trước cách đây
mục cha
commit
503c282830

+ 2 - 0
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/CurrentDayAllQuotaJob.java

@ -342,6 +342,7 @@ public class CurrentDayAllQuotaJob implements Job {
                " AND t.session_id = p.session_id " +
                " AND t.session_id = s.id " +
                " AND s.type = 1 " +
                " AND t.status <>10 "+
                " AND t.`reply`=0 " +
                " AND t.create_time< '" + tomorrow + "'";
        List<Map<String, Object>> ims = imjdbcTemplate.queryForList(sql);
@ -457,6 +458,7 @@ public class CurrentDayAllQuotaJob implements Job {
                    "   p.idcard = sf.idcard " +
                    " AND sf.type = 2 " +
                    " AND sf. STATUS IN (1, 2) " +
                    " and sf.expenses_status=1 "+
                    " AND p.openid is not null  " +
                    " AND p.openid_time <'" +tomorrow+"' ";
            //抽取數據

+ 2 - 1
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/NoReyConsultJob.java

@ -154,8 +154,9 @@ public class NoReyConsultJob implements Job {
                " AND t.session_id = p.session_id " +
                " AND t.session_id = s.id " +
                " AND s.type = 1 " +
                " AND t.status <>10 "+
                " AND t.`reply`=0 " +
                "  AND t.create_time< '" + yesterday + Constant.quota_date_last + "'";
                " AND t.create_time< '" + yesterday + Constant.quota_date_last + "'";
        List<Map<String, Object>> ims = imjdbcTemplate.queryForList(sql);
        //得到医生的id
        List<String> ids = new ArrayList<>();

+ 1 - 0
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/WechatCountJob.java

@ -96,6 +96,7 @@ public class WechatCountJob implements Job {
                    "   p.idcard = sf.idcard " +
                    " AND sf.type = 2 " +
                    " AND sf. STATUS IN (1, 2) " +
                    " and sf.expenses_status=1 "+
                    " AND p.openid is not null  " +
                    " AND p.openid_time <'" +yesterday+ Constant.quota_date_last+"' ";

+ 140 - 4
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsAllService.java

@ -992,6 +992,51 @@ public class StatisticsAllService extends BaseService {
        return resultList;
    }
    /**
     * 获取今天某个区域一级指标的下级统计
     *
     * @param area
     * @param level
     * @param index
     * @param lowLevel
     * @return
     */
    public List<Map<String, Object>> getTodayLowLevelTotal2(String area, int level, String index, int sort, String lowLevel) throws Exception {
        List<Map<String, Object>> resultList = new ArrayList<>();
        String low_level = String.valueOf(StringUtils.isEmpty(lowLevel) ? (level - 1) : lowLevel);
        String redisData = "";
        try {
            redisData = redisTemplate.opsForValue().get("quota:" + index + ":" + level + ":" + area + ":" + low_level + ":" + getQuotaTimeStamp());
        } catch (Exception e) {
            redisData = "";
        }
        if (!StringUtils.isEmpty(redisData)) {
            JSONArray jsonArray = new JSONArray(redisData);
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject json = jsonArray.getJSONObject(i);
                Map<String, Object> data = new HashMap<>();
                data.put("code", String.valueOf(json.get("code")));
                data.put("name", String.valueOf(json.get("name")));
                data.put("amount", Long.valueOf(String.valueOf(json.get("num"))));
                resultList.add(data);
            }
        } else {
            Calendar today = Calendar.getInstance();
            today.add(Calendar.DATE, -1);
            String preDate = new SimpleDateFormat("yyyy-MM-dd").format(today.getTime());
            resultList = getTodayBeforeLowLevelTotal(preDate, area, level, index, sort, lowLevel);
        }
        if (resultList.size() < 1) {
            resultList = getLowLevelMapKey2(level, low_level, area);
        }
        return resultList;
    }
    /**
     * 获取下级统计key
@ -1075,6 +1120,88 @@ public class StatisticsAllService extends BaseService {
        return resultList;
    }
    /**
     * 获取下级统计key
     *
     * @param level
     * @param lowLevel
     * @param area
     * @return
     */
    public List<Map<String, Object>> getLowLevelMapKey2(int level, String lowLevel, String area) {
        List<Map<String, Object>> resultList = new ArrayList<>();
        if (lowLevel.equals("3")) {
            List<Town> towns = townDao.findByCityCode(area);
            if (towns != null) {
                for (Town town : towns) {
                    Map<String, Object> obj = new HashMap<>();
                    obj.put("code", town.getCode());
                    obj.put("name", town.getName());
                    obj.put("amount", 0L);
                    resultList.add(obj);
                }
            }
        } else if (lowLevel.equals("2")) {
            List<Town> towns = new ArrayList<>();
            if (level == 4) {
                towns = townDao.findByCityCode(area);
            } else if (level == 3) {
                Town town = townDao.findByCode(area);
                if(town != null) {
                    towns.add(town);
                }
            }
            if (towns != null && towns.size() > 0) {
                for (Town town : towns) {
                    List<Hospital> hospitals = hospitalDao.findByTownCode(town.getCode());
                    for (Hospital hos : hospitals) {
                        if (hos.getCode().length() > 10) {
                            continue;
                        }
                        Map<String, Object> obj = new HashMap<>();
                        obj.put("code", hos.getCode());
                        obj.put("name", hos.getName());
                        obj.put("amount", 0L);
                        resultList.add(obj);
                    }
                }
            }
        } else if (lowLevel.equals("1")) {
            List<Hospital> hospitals = new ArrayList<>();
            if (level == 4) {
                hospitals = hospitalDao.findByCity(area);
            } else if (level == 3) {
                hospitals = hospitalDao.findByTownCode(area);
            } else {
                Hospital hos = hospitalDao.findByCode(area);
                if (hos != null) {
                    hospitals.add(hos);
                }
            }
            if (hospitals != null && hospitals.size() > 0) {
                for (Hospital hos : hospitals) {
                    if (hos.getCode().length() > 10) {
                        continue;
                    }
                    List<AdminTeam> teams = adminTeamDao.findByOrgCode(hos.getCode());
                    for (AdminTeam team : teams) {
                        Map<String, Object> obj = new HashMap<>();
                        obj.put("code", String.valueOf(team.getId()));
                        obj.put("name", team.getName());
                        obj.put("amount", 0L);
                        resultList.add(obj);
                    }
                }
            }
        }
        return resultList;
    }
    /**
     * 获取二级指标的到达量
@ -2316,19 +2443,28 @@ public class StatisticsAllService extends BaseService {
                    }
                }
            });
            //计算咨询总数
            Long signCout = getQuoTaResult(level,area);
            //计算签约人数
            List<Map<String, Object>> signList = getTodayLowLevelTotal2(area, level, "1", sort, lowLevel);
            Map<String,Object> signMap = new HashMap<>();
            if(signList!=null&&signList.size()>0){
                //将List转化为Map减小循环层数
                for(Map<String, Object> sign :signList){
                    signMap.put(sign.get("code").toString(),sign);
                }
            }
            for(Map<String, Object> map :resultList){
                Long bindCout = (Long)map.get("amount");
                Map<String, Object> sMap = (Map<String, Object>)signMap.get(map.get("code").toString());
                Long signCout = (Long)sMap.get("amount");
                if((signCout!=null&&signCout!=0)&&(bindCout!=null&&bindCout!=0)){
                    double rate = (double)bindCout/signCout*100;
                    DecimalFormat decimalFormat  = new DecimalFormat("0.00");
                    DecimalFormat decimalFormat = new DecimalFormat("0.00");
                    map.put("bindRate",decimalFormat.format(rate)+"%");
                }else{
                    map.put("bindRate","0.00%");
                }
            }
            return new JSONArray(resultList);
        } else {
            return new JSONArray();

+ 9 - 14
patient-co-wlyy/src/main/java/com/yihu/wlyy/util/ImUtill.java

@ -22,16 +22,14 @@ public class ImUtill {
     */
    public static String getConsultData(String user, Integer status, Integer reply) {
        String imAddr = im_host + "api/v2/sessions/topics/count/reply";
        JSONObject params = new JSONObject();
        params.put("user", user);
        imAddr+="?user="+user;
        if (status!=null) {
            params.put("status", status);
            imAddr+="&status="+status;
        }
        if (reply!=null) {
            params.put("reply", reply);
            imAddr+="&reply="+reply;
        }
        String response = HttpClientUtil.postBody(imAddr, params);
        String response = HttpClientUtil.get(imAddr, "UTF-8");
        return response;
    }
@ -48,18 +46,15 @@ public class ImUtill {
     * @return
     */
    public static String getConsultByStatus(String user, Integer status, Integer reply, int page, int pagesize) {
        String imAddr = im_host + "api/v2/sessions/topics";
        JSONObject params = new JSONObject();
        params.put("user", user);
        params.put("page", page);
        params.put("pagesize", pagesize);
        String imAddr = im_host + "api/v2/sessions/topics?user="+user+"&page="+page+"&pagesize="+pagesize;
        if (status!=null) {
            params.put("status", status);
            imAddr+="&status="+status;
        }
        if (reply!=null) {
            params.put("reply", reply);
            imAddr+="&reply="+reply;
        }
        String response = HttpClientUtil.postBody(imAddr, params);
        String response = HttpClientUtil.get(imAddr, "UTF-8");
        return response;
    }
//    ===============================

+ 30 - 39
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/common/im/imController.java

@ -1,6 +1,8 @@
package com.yihu.wlyy.web.common.im;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.repository.doctor.DoctorDao;
import com.yihu.wlyy.repository.patient.SignFamilyDao;
import com.yihu.wlyy.util.ImUtill;
import io.swagger.annotations.Api;
@ -26,25 +28,26 @@ public class imController extends BaseController {
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private SignFamilyDao signFamilyDao;
    @Autowired
    private DoctorDao doctorDao;
    /**
     * 获取列表
     * status = 10 已结束的咨询,status=0,reply = 1 已回复 ,status=0,reply=0未回复
     * 第一次列表为当前医生(很可能团队长)待回复列表 传参:doctor有后台获取 status=0,reply=0未回复
     * 后 取团队内单各医生的咨询情况 doctor、status、reply均有前端传入
     * 后 取团队内单个医生的咨询情况 doctor、status、reply均有前端传入
     *
     * @return
     */
    @RequestMapping(value = "/consult/getList", method = RequestMethod.GET)
    @ResponseBody
    public String getTeamData(
    public String getConsultByStatus(
            @RequestParam(required = false) String doctor,
            @RequestParam Integer status,
            @RequestParam(required = false) Integer reply,
            @RequestParam int page,
            @RequestParam int pagesize) {
        try {
//            后端校验
            if (StringUtils.isEmpty(doctor)) {
                doctor = getUID();
            }
@ -55,10 +58,25 @@ public class imController extends BaseController {
            while (it.hasNext()) {
                Map map = new HashMap();
                JSONObject ob = (JSONObject) it.next();
                String id = ob.get("id").toString();
                String avatar = ob.get("avatar").toString();
                String session_id = ob.get("session_id").toString();
                String name = ob.get("name").toString();
                map.put("name", name);
                String name = ob.get("patient_name").toString();
                String createTime = ob.get("create_time").toString();
                String description = ob.get("description").toString();
                String sex = ob.get("sex").toString();
                String startId = ob.get("start_message_id").toString();
                String endId = ob.get("end_message_id").toString();
                map.put("id", id);
                map.put("session_id", session_id);
                map.put("photo", avatar);
                map.put("patientName", name);
                map.put("sex", sex);
                map.put("create_time", createTime);
                map.put("description", description);
                map.put("start_message_id", startId);
                map.put("end_message_id", endId);
                list.add(map);
            }
            return write(200, "查询成功", "data", list);
@ -90,11 +108,11 @@ public class imController extends BaseController {
            for (Map<String, Object> doc : doctors) {
                Map map = new HashMap();
                String doctor = doc.get("code").toString();
                map.put("photo", doc.get("photo").toString());
                map.put("photo", doc.get("photo")==null?"":doc.get("photo").toString());
                map.put("name", doc.get("name").toString());
                map.put("sex", doc.get("sex").toString());
                map.put("doctor", doctor);
//                map.put("code", "ec6714314d6d48a6bfcf1e9119187e02");
                map.put("type",doc.get("level")==null?"":doc.get("level").toString());
                String totalUnReply = ImUtill.getConsultData(doctor, 0, 0);
                int unReply = Integer.parseInt(totalUnReply);
                map.put("totalUnReply", unReply);
@ -114,36 +132,12 @@ public class imController extends BaseController {
            json.put("totalReply", countReply);
            json.put("totalConsult", countConsult);
            json.put("doctors", list);
            return write(200, "查询成功");
        } catch (Exception e) {
            error(e);
            return invalidUserException(e, -1, "查询失败!");
        }
    }
    /**
     * 获取团队内医生的健康咨询状况
     *
     * @param code
     * @param type 0待回复 1进行中 2已完成
     * @return
     *//*
    @RequestMapping(value = "/getTeamDoctor", method = RequestMethod.GET)
    @ResponseBody
    public String getTeamDoctor(@RequestParam String code,
                                @RequestParam int type,
                                @RequestParam int pageNo,
                                @RequestParam int pageSize) {
        try {
//			List list = consultTeamService.getTeamDoctor(code, type);
//			return write(200, "查询成功", "data", list);
            return write(200, "查询成功");
            return write(200, "查询成功", "data", json);
        } catch (Exception e) {
            error(e);
            return invalidUserException(e, -1, "查询失败!");
        }
    }
/**/
    /**
     * 获取团队医生下居民的咨询
@ -158,11 +152,9 @@ public class imController extends BaseController {
//            1.调im接口
//            2.判断团队长和当前咨询居民是否存在签约关系
            String doctor = getUID();
//			Boolean flag = consultTeamService.getConsultByPatient(patient,doctor);
            int count = signFamilyDao.findByPatientAndDoctor(patient,doctor);
            boolean flag = (count ==0)? false : true;
			return write(200, "查询成功", "data", flag);
//            return write(200, "查询成功");
            int count = signFamilyDao.findByPatientAndDoctor(patient, doctor);
            boolean flag = (count == 0) ? false : true;
            return write(200, "查询成功", "data", flag);
        } catch (Exception e) {
            error(e);
            return invalidUserException(e, -1, "查询失败!");
@ -170,8 +162,7 @@ public class imController extends BaseController {
    }
    public List getMemberByDoctor(String doctor) {
//        List<Doctor> doctors = doctorDao.findMemberByLeader(doctor);
        String sql = "SELECT d.photo,d.`name`,d.sex,d.`code` " +
        String sql = "SELECT d.photo,d.`name`,d.sex,d.`code`,d.level " +
                " from wlyy_admin_team t,wlyy_admin_team_member m,wlyy_doctor d " +
                " where t.id = m.team_id and m.doctor_code = d.`code` and t.available = 1 and m.available=1 " +
                " and t.leader_code = ? ";