Przeglądaj źródła

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

wangzhinan 1 miesiąc temu
rodzic
commit
a29bea593d

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

@ -3947,7 +3947,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            WritableSheet ws;
            ws = wwb.createSheet("sheet", 1);
            String[] header = {"患者姓名","问诊医生","就诊科室","问诊类型","发起时间","接诊时间","结束时间","咨询问题","是否开方","咨询状态"};
            String[] header = {"患者姓名","问诊医生","就诊科室","问诊类型","发起时间","接诊时间","结束时间","咨询问题","是否开方","咨询状态","检查机构"};
            int k = 0;
            for (String h : header) {
                addCell(ws, 0, k, h);//表名,行,列,header
@ -4006,6 +4006,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                addCell(ws, i, 7, m.get("des")!=null?m.get("des").toString():n);
                addCell(ws, i, 8, payy!=null?payy:n);
                addCell(ws, i, 9, status.toString()!=null?status.toString():n);
                addCell(ws, i, 10, m.get("scbgjtOrgName")!=null?m.get("scbgjtOrgName").toString():n);
                i++;
            }
            wwb.write();

+ 18 - 1
business/im-service/src/main/java/com/yihu/jw/im/service/ImService.java

@ -1359,6 +1359,9 @@ public class ImService {
                }
                if (wxId.equalsIgnoreCase("xm_ykyy_wx")) {
                    imUtil.sendImMsg(doctorCode, doctor.getName(),sessionId,"1","您好,很高兴为您服务,请问有什么可以帮助到您?","1","");
                }
                if (obj == null) {
                    throw new RuntimeException("IM消息发送异常!");
@ -4069,6 +4072,11 @@ public class ImService {
                "op.type as \"type\"," +
                "op.outpatient_type as \"outpatientType\"," +
                "op.description AS \"title\"," +
                "op.scbgjt AS \"scbgjt\"," +
                "op.scbgjt_type AS \"scbgjtType\"," +
                "op.scbgjt_name AS \"scbgjtName\"," +
                "op.scbgjt_org_code AS \"scbgjtOrgCode\"," +
                "op.scbgjt_org_name AS \"scbgjtOrgName\"," +
                "op.description AS \"symptoms\",";
        if ("xm_ykyy_wx".equals(wxId)) {
            if (flag) {
@ -4174,6 +4182,8 @@ public class ImService {
                sql += " AND op.type =2 and op.outpatient_type = 3";
            } else if (type.equalsIgnoreCase("12")) {
                sql += " AND op.outpatient_type = 2";
            } else if (type.equalsIgnoreCase("19")) {
                sql += " AND op.scbgjt is not null ";
            } else {
                sql += " AND op.type in (1,2,3) ";
            }
@ -4227,6 +4237,9 @@ public class ImService {
                    map.put("type", 12);
                }
            }
            if(!StringUtils.isEmpty(map.get("scbgjt"))) {
                map.put("type", 19);
            }
            if (map.get("id") != null) {
                if ("1".equals(type) || "15".equals(type) || type.contains(",") || "17".equals(type)) {
                    String consultCode = map.get("id").toString();
@ -4338,6 +4351,8 @@ public class ImService {
                sql += " AND op.type =2 and op.outpatient_type = 3";
            } else if (type.equalsIgnoreCase("12")) {
                sql += " AND op.outpatient_type = 2";
            }else if (type.equalsIgnoreCase("19")) {
                sql += " AND op.scbgjt is not null ";
            } else {
                sql += " AND op.type in (1,2,3) ";
            }
@ -4367,7 +4382,9 @@ public class ImService {
                        "\ta.end_time AS \"etime\",\n" +
                        "\ta.description AS \"des\",\n" +
                        "\tb. STATUS AS \"pay\",\n" +
                        "\ta. STATUS AS \"STATUS\"\n" +
                        "\ta. STATUS AS \"STATUS\",\n" +
                        "\ta. scbgjt_org_code AS \"scbgjtOrgCode\",\n" +
                        "\ta. scbgjt_org_name AS \"scbgjtOrgName\"\n" +
                        "FROM\n" +
                        "\twlyy_outpatient a\n" +
                        "LEFT JOIN wlyy_prescription b ON a.id = b.outpatient_id\n" +

+ 166 - 38
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/StatisticsService.java

@ -2384,17 +2384,54 @@ public class StatisticsService {
        JSONArray jsonArray = new JSONArray();
        //总量
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevelList(endDate, endDate, area, level, "67", SaveModel.timeLevel_DDL,null,"5", null, "-2,0,1");
        for (int i = 0; i < list.size(); i++) {
            SaveModel saveModel = list.get(i);
            JSONObject json = new JSONObject();
            json.put("emeWarnTotal", saveModel.getResult2().longValue());
            json.put("dept", saveModel.getDept());
            json.put("deptName", saveModel.getDeptName());
            //已响应数量
            SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, saveModel.getDept(), 5, "67", SaveModel.timeLevel_DDL,"-2,0");
            json.put("emeWarnDealt", saveModel2.getResult2().longValue());
            json.put("emeWarnDealtLaw", commonUtil.getRangeDouble(saveModel2.getResult2().intValue(),saveModel.getResult2().intValue()));
            jsonArray.add(json);
        if(list.size()==1&&StringUtils.isBlank(list.get(0).getDept())){
            String sql = "SELECT\n" +
                    "\to.dept,bt.name deptName,count(distinct o.bussiness_id) emeWarnTotal,count(distinct if(o.`status` in (0,-2),o.bussiness_id,null)) emeWarnDealt\n" +
                    "FROM\n" +
                    "\t(\n" +
                    "\t\tSELECT\n" +
                    "\t\t\to.id AS bussiness_id,\n" +
                    "\t\t\to.team_code as dept,o.`status`,\n" +
                    "\t\t\to.update_time\n" +
                    "\t\tFROM\n" +
                    "\t\t\tbase_security_monitoring_order o\n" +
                    "\t\tUNION ALL\n" +
                    "\t\t\tSELECT\n" +
                    "\t\t\t\to.id AS bussiness_id,\n" +
                    "\t\t\t\to.team_code as dept,o.`status`,\n" +
                    "\t\t\t\to.update_time\n" +
                    "\t\t\tFROM\n" +
                    "\t\t\t\tbase_emergency_assistance_order o\n" +
                    "\t) o, base_team bt,wlyy_hospital_sys_dict\n" +
                    " WHERE 1=1 and o.dept = bt.id and bt.org_code \n" +
                    "NOT IN ( SELECT dict_code FROM `base`.`wlyy_hospital_sys_dict` WHERE `dict_name` = 'jkzl_org' )\n" +
                    "GROUP BY o.dept";
            List<Map<String,Object>> list1 = jdbcTemplate.queryForList(sql);
            for (Map<String,Object> tmp : list1){
                Integer emeWarnTotal = Integer.parseInt(tmp.get("emeWarnTotal")+"");
                Integer emeWarnDealt = Integer.parseInt(tmp.get("emeWarnDealt")+"");
                JSONObject json = new JSONObject();
                json.put("emeWarnTotal", emeWarnTotal);
                json.put("dept", tmp.get("dept"));
                json.put("deptName", tmp.get("deptName"));
                //已响应数量
                json.put("emeWarnDealt", emeWarnDealt);
                json.put("emeWarnDealtLaw", commonUtil.getRangeDouble(emeWarnDealt,emeWarnTotal));
                jsonArray.add(json);
            }
        }else {
            for (int i = 0; i < list.size(); i++) {
                SaveModel saveModel = list.get(i);
                JSONObject json = new JSONObject();
                json.put("emeWarnTotal", saveModel.getResult2().longValue());
                json.put("dept", saveModel.getDept());
                json.put("deptName", saveModel.getDeptName());
                //已响应数量
                SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, saveModel.getDept(), 5, "67", SaveModel.timeLevel_DDL,"-2,0");
                json.put("emeWarnDealt", saveModel2.getResult2().longValue());
                json.put("emeWarnDealtLaw", commonUtil.getRangeDouble(saveModel2.getResult2().intValue(),saveModel.getResult2().intValue()));
                jsonArray.add(json);
            }
        }
        jsonArray.sort(Comparator.comparing(obj -> ((JSONObject) obj).getDouble("emeWarnDealtLaw")).reversed());
        res.put("orderServerArray", jsonArray);
@ -2498,10 +2535,33 @@ public class StatisticsService {
        //紧急救助 呼叫+安防
        //紧急救助 已响应
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(DateUtil.getStringDateShort(), area, level, "67", SaveModel.timeLevel_DDL,"-2,0");
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel1(DateUtil.getStringDateShort(), area, level, "67", SaveModel.timeLevel_DDL,"1");
        finishCount = saveModel.getResult2().longValue();
        unfinishCount = saveModel2.getResult2().longValue();
        String sqlEme = "SELECT\n" +
                "\tcount(distinct if(o.`status`=1,o.bussiness_id,null)) unfinish,count(distinct if(o.`status` in (0,-2),o.bussiness_id,null)) finish\n" +
                "FROM\n" +
                "\t(\n" +
                "\t\tSELECT\n" +
                "\t\t\to.id AS bussiness_id,\n" +
                "\t\t\to.team_code as dept,o.`status`,\n" +
                "\t\t\to.update_time\n" +
                "\t\tFROM\n" +
                "\t\t\tbase_security_monitoring_order o\n" +
                "\t\tUNION ALL\n" +
                "\t\t\tSELECT\n" +
                "\t\t\t\to.id AS bussiness_id,\n" +
                "\t\t\t\to.team_code as dept,o.`status`,\n" +
                "\t\t\t\to.update_time\n" +
                "\t\t\tFROM\n" +
                "\t\t\t\tbase_emergency_assistance_order o\n" +
                "\t) o, base_team bt,wlyy_hospital_sys_dict\n" +
                " WHERE 1=1 and o.dept = bt.id and bt.org_code \n" +
                "NOT IN ( SELECT dict_code FROM `base`.`wlyy_hospital_sys_dict` WHERE `dict_name` = 'jkzl_org' )";
//        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(DateUtil.getStringDateShort(), area, level, "67", SaveModel.timeLevel_DDL,"-2,0");
//        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel1(DateUtil.getStringDateShort(), area, level, "67", SaveModel.timeLevel_DDL,"1");
//        finishCount = saveModel.getResult2().longValue();
//        unfinishCount = saveModel2.getResult2().longValue();
        List<Map<String,Object>> listEme = jdbcTemplate.queryForList(sqlEme);
        finishCount = Long.parseLong(listEme.get(0).get("finish")+"");
        unfinishCount = Long.parseLong(listEme.get(0).get("unfinish")+"");
        emeAssistance.put("finish",finishCount);
        emeAssistance.put("unfinish",unfinishCount);
        emeAssistance.put("total",finishCount.intValue()+unfinishCount.intValue());
@ -2587,30 +2647,72 @@ public class StatisticsService {
        JSONObject result = new JSONObject();
        //助老服务 生活照料 (出去已取消和未支付)
        JSONArray olderServiceInfo = new JSONArray();
        List<SaveModel> list = statisticsUtilService.findDateAllQuotaLevel1Sort(endDate, endDate, area, level, "48", SaveModel.timeLevel_DDL, null, null);
        for (int i = 0; (i < list.size() && i < 5); i++) {
            SaveModel saveModel = list.get(i);
        String sql1 = "SELECT\n" +
                "\tde.code,COUNT(distinct o.id) num,di.name\n" +
                "FROM\n" +
                "\tbase_life_care_fee_detail de\n" +
                "\tINNER JOIN base_life_care_order o ON de.order_id = o.id ,\n" +
                "\tbase_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack\n" +
                ",base_life_care_item_dict di \n" +
                "WHERE\n" +
                "\to.STATUS <> 0 and o.status<>-1\n" +
                "\tand sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id and r.service_package_id = pack.id  and i.del = 1 \n" +
                "\t\t and sr.`status`=1 and CONVERT(sr.patient USING utf8)  = o.patient and di.del=1 and (di.org_code<>'lxyl' or di.org_code is null)\n" +
                "and di.code = de.code\n" +
                "GROUP BY de.code  ORDER BY num desc limit 5";
        List<Map<String,Object>> list1 = jdbcTemplate.queryForList(sql1);
        for (Map<String,Object> map:list1) {
            JSONObject json = new JSONObject();
            json.put("num", saveModel.getResult2().longValue());
            json.put("code", saveModel.getSlaveKey1());
            json.put("name", saveModel.getSlaveKey1Name());
            json.put("num", map.get("num"));
            json.put("code", map.get("code"));
            json.put("name", map.get("name"));
            olderServiceInfo.add(json);
        }
//        List<SaveModel> list = statisticsUtilService.findDateAllQuotaLevel1Sort(endDate, endDate, area, level, "48", SaveModel.timeLevel_DDL, null, null);
//        for (int i = 0; (i < list.size() && i < 5); i++) {
//            SaveModel saveModel = list.get(i);
//            JSONObject json = new JSONObject();
//            json.put("num", saveModel.getResult2().longValue());
//            json.put("code", saveModel.getSlaveKey1());
//            json.put("name", saveModel.getSlaveKey1Name());
//            olderServiceInfo.add(json);
//        }
        //紧急救助 呼叫68+安防46 已取消不算
        JSONArray emeAssistance = new JSONArray();
        list = elasticsearchUtil.findDateQuotaLevel2ByKeyGroup(endDate, endDate, area, level, "46", SaveModel.timeLevel_DDL, null, "-2,0,1", null, null, "4", "1");
        for (int i = 0; i < list.size(); i++) {
            SaveModel saveModel = list.get(i);
        String sql2 = "SELECT\n" +
                "\tCOUNT(distinct ord.id) num,\n" +
                "\tdict.dict_code AS code,\n" +
                "\tdict.dict_value AS name\n" +
                "FROM\n" +
                "\tbase_security_monitoring_order ord\n" +
                "\tINNER JOIN wlyy_hospital_sys_dict dict ON dict.dict_name = 'security_server_dict' \n" +
                "\tAND ord.serve_desc = dict.dict_value\n" +
                "where 1=1 GROUP BY ord.serve_desc";
//        list = elasticsearchUtil.findDateQuotaLevel2ByKeyGroup(endDate, endDate, area, level, "46", SaveModel.timeLevel_DDL, null, "-2,0,1", null, null, "4", "1");
        List<Map<String,Object>> list2 = jdbcTemplate.queryForList(sql2);
        for (Map<String,Object> map:list2) {
            JSONObject json = new JSONObject();
            json.put("num", saveModel.getResult2().longValue());
            json.put("code", saveModel.getSlaveKey1());
            json.put("name", saveModel.getSlaveKey1Name());
            json.put("num", map.get("num"));
            json.put("code", map.get("code"));
            json.put("name", map.get("name"));
            emeAssistance.add(json);
        }
//        for (int i = 0; i < list.size(); i++) {
//            SaveModel saveModel = list.get(i);
//            JSONObject json = new JSONObject();
//            json.put("num", saveModel.getResult2().longValue());
//            json.put("code", saveModel.getSlaveKey1());
//            json.put("name", saveModel.getSlaveKey1Name());
//            emeAssistance.add(json);
//        }
        //紧急呼叫
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(endDate, endDate, area, level, "68", SaveModel.timeLevel_DDL, "-2,0,1");
//        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(endDate, endDate, area, level, "68", SaveModel.timeLevel_DDL, "-2,0,1");
        String sql3 = "SELECT count(distinct o.id) FROM base_emergency_assistance_order o, base_team bt,wlyy_hospital_sys_dict\n" +
                " WHERE 1=1 and o.team_code = bt.id and bt.org_code \n" +
                "NOT IN ( SELECT dict_code FROM `wlyy_hospital_sys_dict` WHERE `dict_name` = 'jkzl_org' )";
        JSONObject json = new JSONObject();
        json.put("num", saveModel.getResult2().longValue());
//        json.put("num", saveModel.getResult2().longValue());
        json.put("num", jdbcTemplate.queryForObject(sql3,Integer.class));
        json.put("code", "jjhj");
        json.put("name", "紧急呼叫");
        emeAssistance.add(json);
@ -3106,15 +3208,41 @@ public class StatisticsService {
    public JSONArray getDoorCoachRank(String endDate,String area,Integer level) throws Exception {
        JSONArray result = new JSONArray();
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevelList(endDate, endDate, area, level, "54", SaveModel.timeLevel_DDL,null,"4", null);
        for (SaveModel tmp:list){
            JSONObject res = new JSONObject();
            SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, tmp.getHospital(), 4, "35", SaveModel.timeLevel_DDL);
            res.put("total", tmp.getResult2().longValue());
            res.put("hospital", tmp.getHospital());
            res.put("hospitalName", tmp.getHospitalName());
            res.put("finish", saveModel2.getResult2().longValue());
            res.put("finishRate", commonUtil.getRangeDouble(saveModel2.getResult2().intValue(), tmp.getResult2().intValue()));
            result.add(res);
        if(list.size()==1&&StringUtils.isBlank(list.get(0).getHospital())){
            //统计没跑 直接执行sql
            String sql = "SELECT \n" +
                    "\to.hospital,h.name hospiatalName,count(DISTINCT o.patient) total, count(DISTINCT if(o.`status`=6,o.patient,null)) finish\n" +
                    " FROM \n" +
                    "base_door_coach_order o\n" +
                    "LEFT JOIN base_org h on o.hospital=h.code\n" +
                    "WHERE o.`status`>0";
            if(!endDate.equals(DateUtil.getStringDateShort())){
                sql += " and o.update_time<'"+endDate+"' ";
            }
            sql += " GROUP BY o.hospital";
            List<Map<String,Object>> list1 = jdbcTemplate.queryForList(sql);
            for (Map<String,Object> tmp : list1){
                JSONObject res = new JSONObject();
                Integer total = Integer.parseInt(tmp.get("total")+"");
                Integer finish = Integer.parseInt(tmp.get("finish")+"");
                res.put("total", total);
                res.put("hospital", tmp.get("hospital"));
                res.put("hospitalName", tmp.get("hospiatalName"));
                res.put("finish", finish);
                res.put("finishRate", commonUtil.getRangeDouble(finish, total));
                result.add(res);
            }
        }else {
            for (SaveModel tmp:list){
                JSONObject res = new JSONObject();
                SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, tmp.getHospital(), 4, "35", SaveModel.timeLevel_DDL);
                res.put("total", tmp.getResult2().longValue());
                res.put("hospital", tmp.getHospital());
                res.put("hospitalName", tmp.getHospitalName());
                res.put("finish", saveModel2.getResult2().longValue());
                res.put("finishRate", commonUtil.getRangeDouble(saveModel2.getResult2().intValue(), tmp.getResult2().intValue()));
                result.add(res);
            }
        }
        result.sort(Comparator.comparing(obj -> ((JSONObject) obj).getDouble("finishRate")).reversed());
        return result;

+ 31 - 0
svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/service/channel/TimeoutOverDueService.java

@ -47,6 +47,7 @@ import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Component
@Transactional
@ -112,6 +113,15 @@ public class TimeoutOverDueService {
    public void cancelOutPatientOver(){
            logger.info("进入结束超时未接诊的门诊");
            List<WlyyOutpatientDO> timeout = outpatientDao.findAllWaitingOutpatient();
            timeout = timeout.stream().filter(item -> {
                long currentTime = new Date().getTime();
                long outpatientTime = item.getRegisterDate().getTime();
                if(currentTime-outpatientTime<24*60*60*1000 && currentTime-outpatientTime>23*60*60*1000) {
                    return true;
                } else {
                    return false;
                }
            }).collect(Collectors.toList());
            if (null!=timeout&&timeout.size()>0){
                logger.info("开始结束超时未接诊的门诊");
                String cancelValue = "超时订单系统自动取消";
@ -237,6 +247,27 @@ public class TimeoutOverDueService {
                                    logger.info("自动结束咨询报错 consultCode: "+consultCode);
                                }
                            } else if(currentTime-outpatientTime>23*60*60*1000) {
                                //系统消息
                                SystemMessageDO messageDO = new SystemMessageDO();
                                messageDO.setTitle("待回复提醒");
                                messageDO.setType("144");
                                messageDO.setSender(wlyyOutpatientDO.getDoctor());
                                messageDO.setSenderName(wlyyOutpatientDO.getDoctorName());
                                messageDO.setRelationCode(wlyyOutpatientDO.getId());
                                messageDO.setReceiver(wlyyOutpatientDO.getPatient());
                                messageDO.setReceiverName(wlyyOutpatientDO.getPatientName());
                                net.sf.json.JSONObject data = new net.sf.json.JSONObject();
                                data.put("name", wlyyOutpatientDO.getPatientName());
                                data.put("consumerName",wlyyOutpatientDO.getConsumerName());
                                data.put("age", IdCardUtil.getAgeForIdcard(wlyyOutpatientDO.getIdcard()));
                                data.put("gender", IdCardUtil.getSexForIdcard(wlyyOutpatientDO.getIdcard()));
                                data.put("question", wlyyOutpatientDO.getIcd10Name());
                                data.put("type","nnn");
                                data.put("msg", "您当前的订单尚未回复,1 小时后系统将自动关闭,请留意处理。");
                                messageDO.setData(data.toString());
                                systemMessageService.saveMessage(messageDO);
                                outpatientDao.save(wlyyOutpatientDO);
                            }
                    } catch (Exception e) {
                        e.printStackTrace();