吴世龙 3 years ago
parent
commit
989b950152

+ 58 - 21
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/admin/AdminListInfoController.java

@ -1,11 +1,11 @@
package com.yihu.jw.care.endpoint.doctor.admin;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.service.assistance.EmergencyAssistanceService;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.service.lifeCare.LifeCareOrderService;
import com.yihu.jw.care.service.statistics.StatisticsService;
import com.yihu.jw.care.service.third.PatientInfoPlatFormService;
import com.yihu.jw.entity.care.assistance.EmergencyAssistanceDO;
import com.yihu.jw.entity.care.message.BaseServiceNews;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
@ -14,6 +14,7 @@ import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@ -37,6 +38,8 @@ public class AdminListInfoController extends EnvelopRestEndpoint {
    private PermissionService permissionService;
    @Autowired
    private LifeCareOrderService lifeCareOrderService;
    @Autowired
    private EmergencyAssistanceService emergencyAssistanceService;
    @GetMapping(value = "/getPatientDeviceInfoWithDetail")
    @ApiOperation("获取居民设备列表(带设备电量、预警情况、是否在线等信息)")
@ -128,23 +131,28 @@ public class AdminListInfoController extends EnvelopRestEndpoint {
    }
    @GetMapping(value = "/getAdminOrderList")
    @ApiOperation("获取紧急工单--管理员端")
    public ListEnvelop getAdminOrderList(@ApiParam(name = "patient",value = "居民code",required = false)
                                         @RequestParam(value = "patient",required = false)String patient,
                                         @ApiParam(name = "patientName",value = "居民名字",required = false)
                                         @RequestParam(value = "patientName",required = false)String patientName,
                                         @ApiParam(name = "doctor",value = "医生code",required = false)
                                         @RequestParam(value = "doctor",required = false)String doctor,
                                         @ApiParam(name = "status",required = false)
                                         @RequestParam(value = "status",required = false)String status,
                                         @ApiParam(name = "page")
                                         @RequestParam(value = "page")Integer page,
                                         @ApiParam(name = "size")
                                         @RequestParam(value = "size")Integer size,
                                         @ApiParam(name = "area")
                                         @RequestParam(value = "area")String area,
                                         @ApiParam(name = "level")
                                         @RequestParam(value = "level")String level){
    @ApiOperation(value = "获取紧急安防工单--管理员端")
    public ListEnvelop getEmeAndSecuOrderList(@ApiParam(name="patientId",value = "居民id")
                                              @RequestParam(value = "patientId",required = false) String patientId,
                                              @ApiParam(name="patientName",value = "患者姓名/身份证")
                                              @RequestParam(value = "patientName",required = false) String patientName,
                                              @ApiParam(name="doctor",value = "查看医生")
                                              @RequestParam(value = "doctor",required = true) String doctor,
                                              @ApiParam(name="status",value = "工单状态-2误报警-1已取消0已完成1申请中")
                                              @RequestParam(value = "status",required = false) String status,
                                              @ApiParam(name="svrDesc",value = "安防工单服务类型 关联security_server_dict字典")
                                              @RequestParam(value = "svrDesc",required = false)String svrDesc,
                                              @ApiParam(name="orderType",value = "工单类型,20紧急呼叫22安防工单")
                                              @RequestParam(value = "orderType",required = true)String orderType,
                                              @ApiParam(name="page",value = "page")
                                              @RequestParam(value = "page",required = true) Integer page,
                                              @ApiParam(name="pageSize",value = "pageSize")
                                              @RequestParam(value = "pageSize",required = true) Integer pageSize,
                                              @ApiParam(name = "area")
                                                  @RequestParam(value = "area")String area,
                                              @ApiParam(name = "level")
                                                  @RequestParam(value = "level")String level
    ){
        try {
            JSONObject param = new JSONObject();
@ -154,10 +162,39 @@ public class AdminListInfoController extends EnvelopRestEndpoint {
                return ListEnvelop.getError("该操作没有权限");
            }
            List<EmergencyAssistanceDO> adminOrderList = statisticsService.getAdminOrderList(patient, patientName, doctor, status, page, size, area, level);
            return ListEnvelop.getSuccess("查询成功",adminOrderList);
        } catch (Exception e) {
            if (StringUtils.isBlank(patientId)&&StringUtils.isBlank(doctor)){
                return ListEnvelop.getError("请求参数错误");
            }
            return ListEnvelop.getSuccess( "查询成功",emergencyAssistanceService.getAdminEmeAndSecuOrderList(orderType,patientId,patientName,doctor,status,page,pageSize,svrDesc,area,level));
        }catch (Exception e){
            return failedListEnvelopException2(e);
        }
    }
    @GetMapping(value = "/getEmeAndSecuOrderTab")
    @ApiOperation(value = "获取安防与紧急呼叫工单Tab")
    public ObjEnvelop getEmeAndSecuOrderTab(@ApiParam(name="doctor",value = "查看医生")
                                            @RequestParam(value = "doctor",required = true) String doctor,
                                            @ApiParam(name="status",value = "工单状态")
                                            @RequestParam(value = "status",required =false) String status,
                                            @ApiParam(name = "area")
                                                @RequestParam(value = "area") String area,
                                            @ApiParam(name = "level")
                                                @RequestParam(value = "level") String level) {
        try {
            JSONObject param = new JSONObject();
            String doctorId =  permissionService.getUID();
            param.put("doctorId",doctorId);
            if(permissionService.noPermission(0,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess( "查询成功",emergencyAssistanceService.getAdminEmeAndSecuOrderTab(doctor,status,area,level));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }
    }
}

+ 8 - 3
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/message/DoctorMessageEndpoint.java

@ -104,16 +104,21 @@ public class DoctorMessageEndpoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "getDeviceLostMessageList")
    @GetMapping(value = "/getDeviceLostMessageList")
    @ApiOperation("获取设备离线通知列表")
    public ObjEnvelop getDeviceLostMessageList(@ApiParam(name="doctor",value = "医生ID,当前查看列表医生",required = true)
                                          @RequestParam(value = "doctor")String doctor,
                                               @ApiParam(name = "deviceCode",value = "设备类型code",required = false)
                                               @RequestParam(value = "deviceCode",required = false)String deviceCode,
                                               @ApiParam(name = "deviceName",value = "设备名字",required = false)
                                               @RequestParam(value = "deviceName",required = false)String deviceName){
                                               @RequestParam(value = "deviceName",required = false)String deviceName,
                                               @ApiParam(name = "area")
                                                   @RequestParam(value = "area") String area,
                                               @ApiParam(name = "level")
                                                   @RequestParam(value = "level") String level
                                               ){
        try {
            return ObjEnvelop.getSuccess("查询成功",doctorMessageService.getDeviceLostMessageList(doctor,deviceCode,deviceName));
            return ObjEnvelop.getSuccess("查询成功",doctorMessageService.getDeviceLostMessageList(doctor,deviceCode,deviceName,area,level));
        }catch (Exception e){
            return failedObjEnvelopException2(e);
        }

+ 7 - 7
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/StatisticsEndpoint.java

@ -233,14 +233,14 @@ public class StatisticsEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "getAllDeviceLostMessage")
    @ApiOperation("设备分析--异常消息通知")
    public PageEnvelop getAllDeviceLostMessage(@RequestParam(required = false) String area,
                                              @RequestParam(required = false) Integer deviceCode,
                                              @RequestParam(required = false) String deviceName,
                                              @RequestParam(required = false) Integer page,
                                              @RequestParam(required = false) Integer size,
                                               @RequestParam(required = false)String doctor){
                                               @RequestParam(required = false) Integer level,
                                               @RequestParam(required = false) String deviceCode,
                                               @RequestParam(required = false) Integer page,
                                               @RequestParam(required = false) Integer size
    ) {
        try {
           return statisticsService.getAllDeviceLostMessage(area,deviceCode,deviceName,page,size,doctor);
        }catch (Exception e){
            return statisticsService.getAllDeviceLostMessage(area, page, size);
        } catch (Exception e) {
            return failedPageEnvelopException2(e);
        }
    }

+ 132 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/assistance/EmergencyAssistanceService.java

@ -21,6 +21,7 @@ import com.yihu.jw.care.service.device.PatientDeviceService;
import com.yihu.jw.care.service.doctor.DoctorServicePermissionsService;
import com.yihu.jw.care.service.family.PatientFamilyMemberService;
import com.yihu.jw.care.service.message.BaseServiceNewsService;
import com.yihu.jw.care.service.role.RoleService;
import com.yihu.jw.care.service.sign.ServicePackageService;
import com.yihu.jw.care.util.ConstantUtil;
import com.yihu.jw.care.util.CountDistance;
@ -139,6 +140,8 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
    private ServicePackageService servicePackageService;
    @Autowired
    private BaseServiceNewsService baseServiceNewsService;
    @Autowired
    private RoleService roleService;
    /**
     * 获取百度天气
@ -1653,4 +1656,133 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
    }
    /*******************************************管理员端使用********************************************/
    public List<Map<String,Object>> getAdminEmeAndSecuOrderList(String orderType,String patient,String patientName,String doctor,String status,Integer page,Integer pageSize,String svrDesc,String area,String level){
        String olderFilter = roleService.getOlderRoleSQL(area,level+"");
        page = page>0?page-1:0;
        List<Map<String,Object>> result = new ArrayList<>();
        String filter = " ";
        if (StringUtils.isNotBlank(patient)){
            filter += " and ord.patient ='"+patient+"' ";
        }
        if (StringUtils.isNotBlank(patientName)){
            filter += " and ord.patient_name like'%"+patientName+"%' ";
        }
        if (StringUtils.isNotBlank(status)){
            filter += " and ord.status ='"+status+"' ";
        }
        String sql = " ";
        if (StringUtils.isNotBlank(orderType)){
            List<String> orderTypes = Arrays.asList(orderType.split(",").clone());
            if (orderTypes.contains("20")){
                sql += "select '20' as OrderType,ord.id,ord.patient,ord.patient_name patientName,ord.doctor,ord.status,ord.doctor_name," +
                        "'紧急呼叫' as serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time ,case p.sex when 1 then '男' when 2 then '女' else p.sex end as sex," +
                        " TIMESTAMPDIFF(YEAR,p.birthday,now()) as age,ord.order_source orderSource,p.mobile,p.photo,ord.session_id sessionId " +
                        "from base_emergency_assistance_order ord  INNER JOIN base_patient p on ord.patient = p.id  INNER JOIN base_patient_helper ph on p.id = ph.patient and ph.del=1  " +
                        " where ph.doctor='"+doctor+"' "+filter +" "+olderFilter.replace("{patient}","p.id");
            }
            if (orderTypes.contains("20")&&orderTypes.contains("22")){
                sql += " UNION ";
            }
            if (orderTypes.contains("22")){
                sql += " select  '22' as 'OrderType',ord.id,ord.patient,ord.patient_name patientName,ord.doctor,ord.status,ord.doctor_name," +
                        "ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time ,case p.sex when 1 then '男' when 2 then '女' else p.sex end as sex, " +
                        "TIMESTAMPDIFF(YEAR,p.birthday,now()) as age,ord.order_source orderSource,p.mobile,p.photo,CONCAT(ord.patient,'_22') sessionId  " +
                        " from base_security_monitoring_order ord " +
                        " INNER JOIN base_patient p on ord.patient = p.id INNER JOIN base_patient_helper ph on p.id = ph.patient and ph.del=1 " +
                        " where ph.doctor='"+doctor+"'  "+filter +" "+olderFilter.replace("{patient}","p.id");
                if(StringUtils.isNotBlank(svrDesc)){
                    sql += " and ord.serve_desc = '"+svrDesc+"' ";
                }
            }
            sql += " order by create_time desc limit "+page*pageSize+","+pageSize;
            result =   jdbcTemplate.queryForList(sql);
        }
        return result;
    }
    public JSONObject getAdminEmeAndSecuOrderTab(String doctor,String status,String area,String level){
        String olderFilter = roleService.getOlderRoleSQL(area,level+"");
        JSONObject result = new JSONObject();
        JSONObject eme = new JSONObject();
        JSONObject secu = new JSONObject();
        JSONObject emeAndSecu = new JSONObject();
        /************************紧急********/
        eme.put("status_-2",0);//误报警
        eme.put("status_-1",0);//已取消
        eme.put("status_0",0);//已完成
        eme.put("status_1",0);//预警中
        String sql = " select ord.status,count(distinct ord.id) count from base_emergency_assistance_order ord INNER JOIN base_patient_helper ph on ord.patient = ph.patient and ph.del=1 ";
        if (StringUtils.isNotBlank(status)){
            sql += " and ord.status='"+status+"' ";
        }
        sql +=  "  where ph.doctor='"+doctor+"' "+olderFilter.replace("{patient}","ph.patient")+" group by ord.status  ";
        List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> map:sqlResult){
            eme.put("status_"+map.get("status"),map.get("count"));
        }
        Integer All = 0;
        Set<String> keySet = eme.keySet();
        for (String key : keySet){
            All+=eme.getInteger(key);
        }
        eme.put("all",All);
        result.put("eme",eme);
        /************************ 安防********/
        secu.put("status_-2", 0);//误报警
        secu.put("status_-1", 0);//已取消
        secu.put("status_0", 0);//已完成
        secu.put("status_1", 0);//预警中
        secu.put("status_all", 0);//
        secu.put("svr_all", 0);//
        Map<String, String> serverTmp = new HashMap<>();
        sql = " select py_code,dict_value from wlyy_hospital_sys_dict where dict_name='security_server_dict' ";
        List<Map<String, Object>> servers = jdbcTemplate.queryForList(sql);
        for (Map<String, Object> server : servers) {
            secu.put("svr_" + server.get("py_code").toString(), 0);
            serverTmp.put(server.get("dict_value").toString(), server.get("py_code").toString());
        }
        sql = "select ord.status,ord.serve_desc,count(distinct ord.id) count from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
                " INNER JOIN base_patient_helper ph on ord.patient = ph.patient and ph.del=1  where ph.doctor='"+doctor+"'  ";
        String fliter = " group by ord.status";
        sqlResult = jdbcTemplate.queryForList(sql +olderFilter.replace("{patient}","ph.patient")+ fliter);
        for (Map<String, Object> map : sqlResult) {
            secu.put("status_" + map.get("status"), secu.getInteger("status_" + map.get("status")) + Integer.parseInt(map.get("count").toString()));
            secu.put("status_all", secu.getInteger("status_all") + Integer.parseInt(map.get("count").toString()));
        }
        if (StringUtils.isNotBlank(status)){
            sql += " and ord.status='"+status+"' ";
        }
        fliter = " group by ord.status,ord.serve_desc ";
        sqlResult = jdbcTemplate.queryForList(sql + fliter);
        String pyCode = "";
        for (Map<String, Object> map : sqlResult) {
            pyCode = serverTmp.get(map.get("serve_desc")) == null ? null : serverTmp.get(map.get("serve_desc")).toString();
            if (StringUtils.isNotBlank(pyCode)) {
                secu.put("svr_" + pyCode, secu.getInteger("svr_" + pyCode) + Integer.parseInt(map.get("count").toString()));
                secu.put("svr_all", secu.getInteger("svr_all") + Integer.parseInt(map.get("count").toString()));
            }
        }
        result.put("secu",secu);
        /************************ 安防、紧急总数********/
        sql = " select count(distinct ord.id)  from base_emergency_assistance_order ord INNER JOIN base_patient p on ord.patient = p.id and p.del=1 INNER JOIN base_patient_helper ph on ord.patient = ph.patient and ph.del=1 " +
                "  where ph.doctor='"+doctor+"' " ;
        Long emeCount = jdbcTemplate.queryForObject(sql+olderFilter.replace("{patient}","p.id"),Long.class);
        emeAndSecu.put("emeAll",emeCount);
        sql = "select count(distinct ord.id) count from base_security_monitoring_order ord INNER JOIN base_patient p on ord.patient = p.id and p.del=1 " +
                " INNER JOIN base_patient_helper ph on p.id = ph.patient and ph.del=1  where ph.doctor='"+doctor+"'  ";
        fliter = "  ";
        Long secuCount = jdbcTemplate.queryForObject(sql+olderFilter.replace("{patient}","p.id"),Long.class);
        emeAndSecu.put("secuAll",secuCount);
        result.put("emeAndSecu",emeAndSecu);
        return result;
    }
}

+ 7 - 5
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/DoctorMessageService.java

@ -8,6 +8,7 @@ import com.yihu.jw.care.dao.message.OrgNoticeDao;
import com.yihu.jw.care.dao.message.UserNoticeDao;
import com.yihu.jw.care.dao.security.SecurityMonitoringOrderDao;
import com.yihu.jw.care.service.doctor.DoctorServicePermissionsService;
import com.yihu.jw.care.service.role.RoleService;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
@ -51,6 +52,8 @@ public class DoctorMessageService {
    private BaseDoctorHospitalDao doctorHospitalDao;
    @Autowired
    private DoctorServicePermissionsService doctorServicePermissionsService;
    @Autowired
    private RoleService roleService;
    /**
     *
@ -316,12 +319,11 @@ public class DoctorMessageService {
        return orgNoticeDao.findOne(noticeId);
    }
    public  List<Map<String, Object>> getDeviceLostMessageList(String doctor,String deviceCode,String deviceName){
        //List<SystemMessageDO> systemMessageDOS = messageDao.getByReceiverAndType(doctor,"43");
        String sql =  "select DISTINCT GROUP_CONCAT(sm.id) id,sm.type AS type,sm.title AS title,sm.sender AS sender,sm.sender_name AS senderName,\n" +
    public  List<Map<String, Object>> getDeviceLostMessageList(String doctor,String deviceCode,String deviceName,String area,String level){
       // List<SystemMessageDO> systemMessageDOS = messageDao.getByReceiverAndType(doctor,"43");
        String sql =  "select DISTINCT sm.id as id,sm.type AS type,sm.title AS title,sm.sender AS sender,sm.sender_name AS senderName,\n" +
                "  sm.receiver AS receiver,sm.receiver_name AS receiver_name,sm.relation_code AS relationCode,\n" +
                "  sm.data AS data,sm.is_read AS isRead,DATE_FORMAT(sm.create_time,'%Y-%m-%d') AS createTime,sm.sender_photo AS sender_photo\n" +
                "  sm.data AS data,sm.is_read AS isRead,DATE_FORMAT(sm.create_time,'%Y-%m-%d') AS createTime,sm.sender_photo AS sender_photo,pd.category_code,pd.device_name" +
                "  from base_system_message sm LEFT JOIN wlyy_patient_device pd ON sm.relation_code = pd.device_sn where sm.receiver = '"+doctor+"' AND sm.type=43 and sm.del=1 ";
        if (StringUtils.isNotBlank(deviceCode)&&!"''".equals(deviceCode)){

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

@ -1494,31 +1494,12 @@ public class StatisticsService {
        return result;
    }
    public PageEnvelop getAllDeviceLostMessage(String area, Integer deviceCode,String deviceName,Integer page, Integer size,String doctor) {
    public PageEnvelop getAllDeviceLostMessage(String area, Integer page, Integer size) {
        page = page > 0 ? page - 1 : 0;
        String sql = "";
        boolean dc = null==deviceCode;
        boolean dn = StringUtils.isBlank(deviceName);
        if (dc ||dn) {
             sql = "select GROUP_CONCAT(id) id,type,title,sender,sender_name senderName,\n" +
                    "receiver,receiver_name receiverName,relation_code relationCode,\n" +
                    "data,is_read isRead,create_time createTime,sender_photo\n" +
                    "from base_system_message where type=43 and del=1 and receiver = '"+doctor+"'  GROUP BY relation_code order by createTime desc ";
        }else {
             sql = "select DISTINCT GROUP_CONCAT(sm.id) id,sm.type AS type,sm.title AS title,sm.sender AS sender,sm.sender_name AS senderName,\n" +
                    " sm.receiver AS receiver,sm.receiver_name AS receiver_name,sm.relation_code AS relationCode,\n" +
                    " sm.data AS data,sm.is_read AS isRead,sm.create_time AS createTime,sm.sender_photo AS sender_photo\n" +
                    " from base_system_message sm LEFT JOIN wlyy_patient_device pd ON sm.relation_code = pd.device_sn where sm.type=43 and sm.del=1 AND sm.receiver = '"+doctor+"'  ";
            if (dc) {
                sql +=" AND pd.category_code = '"+deviceCode+"'";
            }
            if(dn){
                sql +=" and pd.device_name LIKE '%"+deviceName+"%'";
            }
             sql +=" GROUP BY sm.relation_code order by sm.create_time desc";
        }
        String sql = "select GROUP_CONCAT(id) id,type,title,sender,sender_name senderName,\n" +
                "receiver,receiver_name receiverName,relation_code relationCode,\n" +
                "data,is_read isRead,create_time createTime,sender_photo\n" +
                "from base_system_message where type=43 and del=1 GROUP BY relation_code order by createTime desc ";
        Long count = jdbcTemplate.queryForObject(" select count(id) from (" + sql + ")A ", Long.class);
        sql += " limit " + page * size + "," + size;