wushilong 3 年之前
父節點
當前提交
0540c199b5

+ 100 - 100
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/DetectionPlatformEndpoint.java

@ -45,7 +45,7 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
    @ApiOperation("环境信息")
    @ApiOperation("环境信息")
    @RequestMapping(value = "envMessage", method = RequestMethod.GET)
    @RequestMapping(value = "envMessage", method = RequestMethod.GET)
    public ObjEnvelop envMessage(@ApiParam(name = "patientId", value = "居民id", defaultValue = "1")
    public ObjEnvelop envMessage(@ApiParam(name = "patientId", value = "居民id", defaultValue = "1")
                             @RequestParam(value = "patientId", required = true) String patientId){
                                 @RequestParam(value = "patientId", required = true) String patientId) {
        try {
        try {
            return success(patientDeviceService.envMessage(patientId));
            return success(patientDeviceService.envMessage(patientId));
        } catch (Exception ex) {
        } catch (Exception ex) {
@ -57,11 +57,11 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "getHealthMonitoringListNew")
    @GetMapping(value = "getHealthMonitoringListNew")
    @ApiOperation(value = "体征监测/安防监护")
    @ApiOperation(value = "体征监测/安防监护")
    public PageEnvelop getHealthMonitoringListNew(
    public PageEnvelop getHealthMonitoringListNew(
            @ApiParam(name="page",value = "page") @RequestParam(required = true) int page,
            @ApiParam(name="size",value = "size") @RequestParam(required = true) int size,
            @ApiParam(name="type",value = "type=1(健康监测)   type=2(安防检测)   type=3(设备异常)") @RequestParam(required = true) int type) {
            @ApiParam(name = "page", value = "page") @RequestParam(required = true) int page,
            @ApiParam(name = "size", value = "size") @RequestParam(required = true) int size,
            @ApiParam(name = "type", value = "type=1(健康监测)   type=2(安防检测)   type=3(设备异常)") @RequestParam(required = true) int type) {
        try {
        try {
            return platformService.getHealthMonitoringListNew(page,size,type);
            return platformService.getHealthMonitoringListNew(page, size, type);
        } catch (Exception e) {
        } catch (Exception e) {
            return failedPageEnvelopException2(e);
            return failedPageEnvelopException2(e);
        }
        }
@ -69,174 +69,174 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "getDeviceCompany")
    @GetMapping(value = "getDeviceCompany")
    @ApiOperation(value = "设备入驻")
    @ApiOperation(value = "设备入驻")
    public ObjEnvelop getDeviceCompany(){
    public ObjEnvelop getDeviceCompany() {
        try {
        try {
            JSONObject o = platformService.getDeviceComapny();
            JSONObject o = platformService.getDeviceComapny();
            return success(o);
            return success(o);
        }catch (Exception e){
        } catch (Exception e) {
            return failedObjEnvelopException(e);
            return failedObjEnvelopException(e);
        }
        }
    }
    }
    @GetMapping(value = "getRealTimeData")
    @GetMapping(value = "getRealTimeData")
    @ApiOperation(value = "实时数据")
    @ApiOperation(value = "实时数据")
    public ObjEnvelop getRealTimeData(){
    public ObjEnvelop getRealTimeData() {
        try {
        try {
            JSONObject o = platformService.getRealTimeData();
            JSONObject o = platformService.getRealTimeData();
            return success(o);
            return success(o);
        }catch (Exception e){
        } catch (Exception e) {
            return failedObjEnvelopException(e);
            return failedObjEnvelopException(e);
        }
        }
    }
    }
    @GetMapping(value = "getDeviceType")
    @GetMapping(value = "getDeviceType")
    @ApiOperation(value = "设备类型")
    @ApiOperation(value = "设备类型")
    public ListEnvelop getDeviceType(){
    public ListEnvelop getDeviceType() {
        try {
        try {
            return success("查询成功",200,platformService.getDeviceType());
        }catch (Exception e){
            return success("查询成功", 200, platformService.getDeviceType());
        } catch (Exception e) {
            return failedListEnvelopException(e);
            return failedListEnvelopException(e);
        }
        }
    }
    }
    @GetMapping(value = "getDeviceByCondition")
    @GetMapping(value = "getDeviceByCondition")
    @ApiOperation(value = "地图展示,根据不同的条件展示不同的数据")
    @ApiOperation(value = "地图展示,根据不同的条件展示不同的数据")
    public ListEnvelop<Object> getDeviceByCondition(@ApiParam(name="categoryCode",value = "categoryCode") @RequestParam(required = false) String categoryCode,
                                                    @ApiParam(name="patient",value = "patient") @RequestParam(required = false) String patient){
    public ListEnvelop<Object> getDeviceByCondition(@ApiParam(name = "categoryCode", value = "categoryCode") @RequestParam(required = false) String categoryCode,
                                                    @ApiParam(name = "patient", value = "patient") @RequestParam(required = false) String patient) {
        try {
        try {
            JSONArray object = platformService.getDeviceByCondition(categoryCode,patient);
            return success("查询成功",200,object);
        }catch (Exception e){
            JSONArray object = platformService.getDeviceByCondition(categoryCode, patient);
            return success("查询成功", 200, object);
        } catch (Exception e) {
            return failedListEnvelopException(e);
            return failedListEnvelopException(e);
        }
        }
    }
    }
    @GetMapping("getOrderListWarning")
    @GetMapping("getOrderListWarning")
    @ApiOperation(value = "物联网大屏预警工单列表坐标获取")
    @ApiOperation(value = "物联网大屏预警工单列表坐标获取")
    public ListEnvelop getOrderListWarning(){
    public ListEnvelop getOrderListWarning() {
        try {
        try {
            return ListEnvelop.getSuccess("success",platformService.getOrderListWarning());
        }catch (Exception e){
            return ListEnvelop.getSuccess("success", platformService.getOrderListWarning());
        } catch (Exception e) {
            return failedListEnvelopException(e);
            return failedListEnvelopException(e);
        }
        }
    }
    }
    @GetMapping(value = "getDeviceInfo")
    @GetMapping(value = "getDeviceInfo")
    @ApiOperation(value = "地图展示,根据设备sn码查询详情")
    @ApiOperation(value = "地图展示,根据设备sn码查询详情")
    public ObjEnvelop getDeviceInfo(            @ApiParam(name="deviceSn",value = "deviceSn") @RequestParam(required = true) String deviceSn){
    public ObjEnvelop getDeviceInfo(@ApiParam(name = "deviceSn", value = "deviceSn") @RequestParam(required = true) String deviceSn) {
        try {
        try {
            JSONObject object = platformService.getDeviceInfo(deviceSn);
            JSONObject object = platformService.getDeviceInfo(deviceSn);
            return success("查询成功",200,object);
        }catch (Exception e){
            return success("查询成功", 200, object);
        } catch (Exception e) {
            return failedObjEnvelopException(e);
            return failedObjEnvelopException(e);
        }
        }
    }
    }
    @GetMapping(value = "nightRecordList")
    @GetMapping(value = "nightRecordList")
    @ApiOperation(value = "根据设备sn码查询起夜记录")
    @ApiOperation(value = "根据设备sn码查询起夜记录")
    public ListEnvelop nightRecordList(            @ApiParam(name="deviceSn",value = "deviceSn") @RequestParam(required = true) String deviceSn){
    public ListEnvelop nightRecordList(@ApiParam(name = "deviceSn", value = "deviceSn") @RequestParam(required = true) String deviceSn) {
        try {
        try {
            return success("查询成功",200, platformService.nightRecordList(deviceSn));
        }catch (Exception e){
            return success("查询成功", 200, platformService.nightRecordList(deviceSn));
        } catch (Exception e) {
            return failedListEnvelopException(e);
            return failedListEnvelopException(e);
        }
        }
    }
    }
    @ApiOperation("获取设备详情信息")
    @ApiOperation("获取设备详情信息")
    @RequestMapping(value = "getPatientDeviceDetail",method = RequestMethod.GET)
    public Envelop getPatientDeviceDetail(@ApiParam(name="patient")
                                         @RequestParam(value = "patient")String patient,
                                          @ApiParam(name="deviceSN")
                                         @RequestParam(value = "deviceSN")String deviceSn,
                                          @ApiParam(name="day",value = "yyyy-mm-dd")
                                         @RequestParam(value = "day",required = false)String day){
    @RequestMapping(value = "getPatientDeviceDetail", method = RequestMethod.GET)
    public Envelop getPatientDeviceDetail(@ApiParam(name = "patient")
                                          @RequestParam(value = "patient") String patient,
                                          @ApiParam(name = "deviceSN")
                                          @RequestParam(value = "deviceSN") String deviceSn,
                                          @ApiParam(name = "day", value = "yyyy-mm-dd")
                                          @RequestParam(value = "day", required = false) String day) {
        try {
        try {
            org.json.JSONObject result = patientDeviceService.getPatientDeviceDetail(patient,deviceSn,day);
            if (result.getInt(ResponseContant.resultFlag)==ResponseContant.success){
            org.json.JSONObject result = patientDeviceService.getPatientDeviceDetail(patient, deviceSn, day);
            if (result.getInt(ResponseContant.resultFlag) == ResponseContant.success) {
                return success(JSON.parseObject(result.getString(ResponseContant.resultMsg)));
                return success(JSON.parseObject(result.getString(ResponseContant.resultMsg)));
            }else {
            } else {
                return success(result.getString(ResponseContant.resultMsg), -1);
                return success(result.getString(ResponseContant.resultMsg), -1);
            }
            }
        }catch (Exception e){
        } catch (Exception e) {
            return failedObjEnvelopException(e);
            return failedObjEnvelopException(e);
        }
        }
    }
    }
    @ApiOperation("获取设备详情数据 --设备可多人绑定查询数据时与patient无关")
    @ApiOperation("获取设备详情数据 --设备可多人绑定查询数据时与patient无关")
    @GetMapping(value = "getPatientDeviceData")
    @GetMapping(value = "getPatientDeviceData")
    public Envelop getPatientDeviceData(@ApiParam(name="patient")
                                       @RequestParam(value = "patient")String patient,
                                       @ApiParam(name="deviceSN")
                                       @RequestParam(value = "deviceSN")String deviceSn,
                                       @ApiParam(name="type",value = "0全部 1日常监护 2预警记录(工单列表)")
                                       @RequestParam(value = "type",required = false)String type,
                                       @ApiParam(name="page")
                                       @RequestParam(value = "page")Integer page,
                                       @ApiParam(name="pageSize")
                                       @RequestParam(value = "pageSize")Integer pageSize){
    public Envelop getPatientDeviceData(@ApiParam(name = "patient")
                                        @RequestParam(value = "patient") String patient,
                                        @ApiParam(name = "deviceSN")
                                        @RequestParam(value = "deviceSN") String deviceSn,
                                        @ApiParam(name = "type", value = "0全部 1日常监护 2预警记录(工单列表)")
                                        @RequestParam(value = "type", required = false) String type,
                                        @ApiParam(name = "page")
                                        @RequestParam(value = "page") Integer page,
                                        @ApiParam(name = "pageSize")
                                        @RequestParam(value = "pageSize") Integer pageSize) {
        try {
        try {
            org.json.JSONObject result = patientDeviceService.getPatientDeviceData(patient,type,deviceSn,page,pageSize);
            if (result.getInt(ResponseContant.resultFlag)==ResponseContant.success){
            org.json.JSONObject result = patientDeviceService.getPatientDeviceData(patient, type, deviceSn, page, pageSize);
            if (result.getInt(ResponseContant.resultFlag) == ResponseContant.success) {
                return success(JSON.parseObject(result.getString(ResponseContant.resultMsg)));
                return success(JSON.parseObject(result.getString(ResponseContant.resultMsg)));
            }else {
            } else {
                return success(result.getString(ResponseContant.resultMsg), -1);
                return success(result.getString(ResponseContant.resultMsg), -1);
            }
            }
        }catch (Exception e){
        } catch (Exception e) {
            return failedObjEnvelopException(e);
            return failedObjEnvelopException(e);
        }
        }
    }
    }
    @ApiOperation("获取睡眠带睡眠报告")
    @ApiOperation("获取睡眠带睡眠报告")
    @RequestMapping(value ="getSleepReport",method = RequestMethod.GET)
    public ObjEnvelop getSleepReport(@ApiParam(name="patient")@RequestParam(value = "patient",required = false)String patient,
                                     @ApiParam(name="deviceSn")@RequestParam(value = "deviceSn",required = false)String deviceSn,
                                     @ApiParam(name="day")@RequestParam(value = "day",required = false)String day){
    @RequestMapping(value = "getSleepReport", method = RequestMethod.GET)
    public ObjEnvelop getSleepReport(@ApiParam(name = "patient") @RequestParam(value = "patient", required = false) String patient,
                                     @ApiParam(name = "deviceSn") @RequestParam(value = "deviceSn", required = false) String deviceSn,
                                     @ApiParam(name = "day") @RequestParam(value = "day", required = false) String day) {
        try {
        try {
            if (StringUtils.isBlank(patient)&&StringUtils.isBlank(deviceSn)){
            if (StringUtils.isBlank(patient) && StringUtils.isBlank(deviceSn)) {
                return ObjEnvelop.getError("请求参数");
                return ObjEnvelop.getError("请求参数");
            }
            }
            org.json.JSONObject result = patientDeviceService.getSleepReport(patient,deviceSn,day);
            if (ResponseContant.success==result.getInt(ResponseContant.resultFlag)){
                return ObjEnvelop.getSuccess("获取成功",result.get(ResponseContant.resultMsg));
            }else {
            org.json.JSONObject result = patientDeviceService.getSleepReport(patient, deviceSn, day);
            if (ResponseContant.success == result.getInt(ResponseContant.resultFlag)) {
                return ObjEnvelop.getSuccess("获取成功", result.get(ResponseContant.resultMsg));
            } else {
                return ObjEnvelop.getError(result.getString(ResponseContant.resultMsg));
                return ObjEnvelop.getError(result.getString(ResponseContant.resultMsg));
            }
            }
        }catch (Exception e){
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
            return failedObjEnvelopException2(e);
        }
        }
    }
    }
    @ApiOperation("获取患者步数数据")
    @ApiOperation("获取患者步数数据")
    @RequestMapping(value ="getPatientStep",method = RequestMethod.GET)
    public ObjEnvelop getPatientStep(@ApiParam(name="patient")@RequestParam(value = "patient",required = false)String patient,
                                     @ApiParam(name="deviceSn")@RequestParam(value = "deviceSn",required = false)String deviceSn,
                                     @ApiParam(name="day")@RequestParam(value = "day",required = false)String day){
    @RequestMapping(value = "getPatientStep", method = RequestMethod.GET)
    public ObjEnvelop getPatientStep(@ApiParam(name = "patient") @RequestParam(value = "patient", required = false) String patient,
                                     @ApiParam(name = "deviceSn") @RequestParam(value = "deviceSn", required = false) String deviceSn,
                                     @ApiParam(name = "day") @RequestParam(value = "day", required = false) String day) {
        try {
        try {
            if (StringUtils.isBlank(patient)&&StringUtils.isBlank(deviceSn)){
            if (StringUtils.isBlank(patient) && StringUtils.isBlank(deviceSn)) {
                return ObjEnvelop.getError("请求参数");
                return ObjEnvelop.getError("请求参数");
            }
            }
            org.json.JSONObject result = patientDeviceService.getPatientStep(patient,deviceSn,day);
            if (ResponseContant.success==result.getInt(ResponseContant.resultFlag)){
                return ObjEnvelop.getSuccess("获取成功",result.get(ResponseContant.resultMsg));
            }else {
            org.json.JSONObject result = patientDeviceService.getPatientStep(patient, deviceSn, day);
            if (ResponseContant.success == result.getInt(ResponseContant.resultFlag)) {
                return ObjEnvelop.getSuccess("获取成功", result.get(ResponseContant.resultMsg));
            } else {
                return ObjEnvelop.getError(result.getString(ResponseContant.resultMsg));
                return ObjEnvelop.getError(result.getString(ResponseContant.resultMsg));
            }
            }
        }catch (Exception e){
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
            return failedObjEnvelopException2(e);
        }
        }
    }
    }
    @ApiOperation("获取烟雾/燃气浓度列表")
    @ApiOperation("获取烟雾/燃气浓度列表")
    @RequestMapping(value ="getSmokeOrGasList",method = RequestMethod.GET)
    public ListEnvelop getSmokeOrGasList(@ApiParam(name="deviceSn")@RequestParam(value = "deviceSn",required = true)String deviceSn,
                                         @ApiParam(name="day",value = "yyyy-MM-dd")@RequestParam(value = "day",required = false)String day){
    @RequestMapping(value = "getSmokeOrGasList", method = RequestMethod.GET)
    public ListEnvelop getSmokeOrGasList(@ApiParam(name = "deviceSn") @RequestParam(value = "deviceSn", required = true) String deviceSn,
                                         @ApiParam(name = "day", value = "yyyy-MM-dd") @RequestParam(value = "day", required = false) String day) {
        try {
        try {
            return ListEnvelop.getSuccess("获取成功",patientDeviceService.getSmokeOrGasList(deviceSn,day));
        }catch (Exception e){
            return ListEnvelop.getSuccess("获取成功", patientDeviceService.getSmokeOrGasList(deviceSn, day));
        } catch (Exception e) {
            return failedListEnvelopException2(e);
            return failedListEnvelopException2(e);
        }
        }
    }
    }
@ -244,30 +244,30 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
    /********************v1.1.0**************************/
    /********************v1.1.0**************************/
    @GetMapping(value = "getGiveEarlyWarning")
    @GetMapping(value = "getGiveEarlyWarning")
    @ApiOperation(value = "物联网检测大屏,预警部分")
    @ApiOperation(value = "物联网检测大屏,预警部分")
    public ObjEnvelop getGiveEarlyWarning(){
    public ObjEnvelop getGiveEarlyWarning() {
        try {
        try {
            return success("查询成功",200, platformService.getDistributionOfWarningTypes());
        }catch (Exception e){
            return success("查询成功", 200, platformService.getDistributionOfWarningTypes());
        } catch (Exception e) {
            return failedObjEnvelopException(e);
            return failedObjEnvelopException(e);
        }
        }
    }
    }
    @GetMapping(value = "getServiceSituation")
    @GetMapping(value = "getServiceSituation")
    @ApiOperation(value = "物联网检测大屏,服务情况")
    @ApiOperation(value = "物联网检测大屏,服务情况")
    public ObjEnvelop getServiceSituation(){
    public ObjEnvelop getServiceSituation() {
        try {
        try {
            return success("查询成功",200, platformService.getServiceSituation());
        }catch (Exception e){
            return success("查询成功", 200, platformService.getServiceSituation());
        } catch (Exception e) {
            return failedObjEnvelopException(e);
            return failedObjEnvelopException(e);
        }
        }
    }
    }
    @GetMapping(value = "deviceAndService")
    @GetMapping(value = "deviceAndService")
        @ApiOperation(value = "物联网检测大屏,设备种类    安防服务")
    public ObjEnvelop deviceAndService(){
    @ApiOperation(value = "物联网检测大屏,设备种类    安防服务")
    public ObjEnvelop deviceAndService() {
        try {
        try {
            return success("查询成功",200, platformService.deviceAndService());
        }catch (Exception e){
            return success("查询成功", 200, platformService.deviceAndService());
        } catch (Exception e) {
            return failedObjEnvelopException(e);
            return failedObjEnvelopException(e);
        }
        }
    }
    }
@ -275,19 +275,19 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
    @ApiOperation("助老员端获取日常监护居民")
    @ApiOperation("助老员端获取日常监护居民")
    @GetMapping(value = "findMonitorPatientsByDoctor")
    @GetMapping(value = "findMonitorPatientsByDoctor")
    @ResponseBody
    @ResponseBody
    public ObjEnvelop findMonitorPatientsByDoctor(@ApiParam(name = "doctor",  required = true)@RequestParam(value = "doctor")String doctor,
                                                  @ApiParam(name = "topicItem", value = "专题code,关联security_topic_dict字典,actionTrack行动轨迹", required = true)
                                                  @RequestParam(value = "topicItem",required = true,defaultValue = "preventLost") String topicItem,
                                                  @ApiParam(name = "day", value = "day", required = false)
                                                  @RequestParam(value = "day",required = false) String day,
                                                  @ApiParam(name = "page")
                                                  @RequestParam(value = "page",required = false) Integer page,
                                                  @ApiParam(name = "pageSize")
                                                  @RequestParam(value = "pageSize",required = false) Integer pageSize,
                                                  @ApiParam(name = "detail", value = "是否返回专题详情0否 1是")
                                                  @RequestParam(value = "detail",required = false,defaultValue = "0") Integer detail) {
    public ObjEnvelop findMonitorPatientsByDoctor(
            @ApiParam(name = "topicItem", value = "专题code,关联security_topic_dict字典,actionTrack行动轨迹,sos紧急预警", required = true)
            @RequestParam(value = "topicItem", required = true, defaultValue = "preventLost") String topicItem,
            @ApiParam(name = "day", value = "day", required = false)
            @RequestParam(value = "day", required = false) String day,
            @ApiParam(name = "page")
            @RequestParam(value = "page", required = false) Integer page,
            @ApiParam(name = "pageSize")
            @RequestParam(value = "pageSize", required = false) Integer pageSize,
            @ApiParam(name = "detail", value = "是否返回专题详情0否 1是")
            @RequestParam(value = "detail", required = false, defaultValue = "0") Integer detail) {
        try {
        try {
            return ObjEnvelop.getSuccess( "查询成功", securityMonitoringOrderService.findMonitorPatientsByDoctor(doctor,topicItem,day,page,pageSize,detail));
            return ObjEnvelop.getSuccess("查询成功", securityMonitoringOrderService.findMonitorPatientsByDoctors(topicItem, day, page, pageSize, detail));
        } catch (Exception e) {
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
            return failedObjEnvelopException2(e);
        }
        }
@ -296,9 +296,9 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
    @ApiOperation("助老员端获取日常监护居民")
    @ApiOperation("助老员端获取日常监护居民")
    @GetMapping(value = "findSignOlder")
    @GetMapping(value = "findSignOlder")
    @ResponseBody
    @ResponseBody
    public ObjEnvelop findSignOlder(@ApiParam(name = "doctor",  required = true)@RequestParam(value = "doctor")String doctor) {
    public ObjEnvelop findSignOlder() {
        try {
        try {
            return ObjEnvelop.getSuccess( "查询成功", platformService.findSignOlder(doctor));
            return ObjEnvelop.getSuccess("查询成功", platformService.findSignOlder());
        } catch (Exception e) {
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
            return failedObjEnvelopException2(e);
        }
        }

+ 986 - 804
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java

@ -141,7 +141,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
    private Logger logger = LoggerFactory.getLogger(SecurityMonitoringOrderService.class);
    private Logger logger = LoggerFactory.getLogger(SecurityMonitoringOrderService.class);
    public JSONObject createOrder(String jsonData,Integer orderSource,String warnStr) throws Exception {
    public JSONObject createOrder(String jsonData, Integer orderSource, String warnStr) throws Exception {
        logger.info("创建安防工单jsonData参数:" + jsonData);
        logger.info("创建安防工单jsonData参数:" + jsonData);
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
@ -168,9 +168,9 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        //V1.4 同一类型的安防工单 距离上次发起小于6小时不可重复发起
        //V1.4 同一类型的安防工单 距离上次发起小于6小时不可重复发起
        String sql = " select count(id) from base_security_monitoring_order where `status`=1  " +
        String sql = " select count(id) from base_security_monitoring_order where `status`=1  " +
                "  and TIMESTAMPDIFF(HOUR,create_time,NOW())<=6 " +
                "  and TIMESTAMPDIFF(HOUR,create_time,NOW())<=6 " +
                " and patient='"+orderDO.getPatient()+"' and serve_desc ='"+orderDO.getServeDesc()+"' ";
        Integer count = jdbcTemplate.queryForObject(sql,Integer.class);
        if (count>0){
                " and patient='" + orderDO.getPatient() + "' and serve_desc ='" + orderDO.getServeDesc() + "' ";
        Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
        if (count > 0) {
            result.put("resultFlag", 0);
            result.put("resultFlag", 0);
            String failMsg = "居民六小时内已存在该预警类型工单,无法重复发起";
            String failMsg = "居民六小时内已存在该预警类型工单,无法重复发起";
            result.put("resultMsg", failMsg);
            result.put("resultMsg", failMsg);
@ -186,7 +186,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        orderDO.setOrderInfo("0");
        orderDO.setOrderInfo("0");
        orderDO.setOrderSource(orderSource);
        orderDO.setOrderSource(orderSource);
        if(StringUtils.isEmpty(orderDO.getPatient())){
        if (StringUtils.isEmpty(orderDO.getPatient())) {
            result.put("resultFlag", 0);
            result.put("resultFlag", 0);
            String failMsg = "当前服务对象code为空,请联系管理员检查参数!patient = " + orderDO.getPatient();
            String failMsg = "当前服务对象code为空,请联系管理员检查参数!patient = " + orderDO.getPatient();
            result.put("resultMsg", failMsg);
            result.put("resultMsg", failMsg);
@ -195,7 +195,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        }
        }
        BasePatientDO patientDO = basePatientDao.findById(orderDO.getPatient());
        BasePatientDO patientDO = basePatientDao.findById(orderDO.getPatient());
        if (patientDO==null){
        if (patientDO == null) {
            result.put("resultFlag", 0);
            result.put("resultFlag", 0);
            String failMsg = "当前服务对象未建档";
            String failMsg = "当前服务对象未建档";
            result.put("resultMsg", failMsg);
            result.put("resultMsg", failMsg);
@ -204,11 +204,11 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        }
        }
        //签约防走失服务包
        //签约防走失服务包
        sql ="SELECT i.code,r.team_code,pack.org_code,pack.org_name from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack    \n" +
        sql = "SELECT i.code,r.team_code,pack.org_code,pack.org_name from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack    \n" +
                "where  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 and sr.`status`=1 \n" +
                "where  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 and sr.`status`=1 \n" +
                "and  sr.patient  = '"+orderDO.getPatient()+"' and i.code='preventLost' ";
        List<Map<String,Object>> items = jdbcTemplate.queryForList(sql);
        if (items.size()==0) {
                "and  sr.patient  = '" + orderDO.getPatient() + "' and i.code='preventLost' ";
        List<Map<String, Object>> items = jdbcTemplate.queryForList(sql);
        if (items.size() == 0) {
            result.put("resultFlag", 0);
            result.put("resultFlag", 0);
            String failMsg = "当前服务对象未签约防走失服务,请签约后再发起预警!";
            String failMsg = "当前服务对象未签约防走失服务,请签约后再发起预警!";
            result.put("resultMsg", failMsg);
            result.put("resultMsg", failMsg);
@ -228,12 +228,12 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
//            logger.error(failMsg);
//            logger.error(failMsg);
//            return result;
//            return result;
//        }
//        }
        Map<String,Object> mapTmp = items.get(0);
        List<BaseDoctorDO> doctorDOS = baseTeamMemberDao.findAllMembersByLevel(mapTmp.get("team_code").toString(),2);
        if (doctorDOS.size()==0){
        Map<String, Object> mapTmp = items.get(0);
        List<BaseDoctorDO> doctorDOS = baseTeamMemberDao.findAllMembersByLevel(mapTmp.get("team_code").toString(), 2);
        if (doctorDOS.size() == 0) {
            String failMsg = "安防警报服务项服务医生为空,不可发起救助";
            String failMsg = "安防警报服务项服务医生为空,不可发起救助";
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultMsg,failMsg);
            result.put(ResponseContant.resultMsg, failMsg);
            return result;
            return result;
        }
        }
@ -243,97 +243,98 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        orderDO.setServiceStatus("2");
        orderDO.setServiceStatus("2");
        this.save(orderDO);
        this.save(orderDO);
        //创建im会话  安防警报咨询的sessionid  为居民code+(wlyy_consult_team表consult)+20
        //创建im会话  安防警报咨询的sessionid  为居民code+(wlyy_consult_team表consult)+20
        JSONObject IMObj = consultTeamService.addSecurityMoConsult(orderDO.getId(),orderDO.getPatient(),null,null,orderDO.getServeDesc());
        String sessionId=orderDO.getPatient()+"_"+ IMObj.getJSONObject("resultMsg").getString("consult") + "_22";
        JSONObject IMObj = consultTeamService.addSecurityMoConsult(orderDO.getId(), orderDO.getPatient(), null, null, orderDO.getServeDesc());
        String sessionId = orderDO.getPatient() + "_" + IMObj.getJSONObject("resultMsg").getString("consult") + "_22";
        orderDO.setSessionId(sessionId);
        orderDO.setSessionId(sessionId);
        if (StringUtils.isNotBlank(orderDO.getServeDesc())){
        if (StringUtils.isNotBlank(orderDO.getServeDesc())) {
            ConsultTeamDo consultTeam = consultTeamDao.queryByRelationCode(orderDO.getId());
            ConsultTeamDo consultTeam = consultTeamDao.queryByRelationCode(orderDO.getId());
            if (consultTeam!=null){
                imUtil.sendTopicIM(orderDO.getPatient(),patientDO.getName(),consultTeam.getConsult(),"1",orderDO.getServeDesc(),null);
            if (consultTeam != null) {
                imUtil.sendTopicIM(orderDO.getPatient(), patientDO.getName(), consultTeam.getConsult(), "1", orderDO.getServeDesc(), null);
            }
            }
        }
        }
        //推送socket给医生  推送紧急预警
        //推送socket给医生  推送紧急预警
        JSONObject message = new JSONObject();
        JSONObject message = new JSONObject();
        String latLon = orderDO.getServeLat()+","+orderDO.getServeLon();
        message.put("latLon",latLon);
        message.put("session_id",sessionId);
        message.put("sender_name",orderDO.getPatientName());
        message.put("content_notice",orderDO.getPatientName()+" "+warnStr+"!");
        message.put("sender_code",orderDO.getPatient());
        message.put("OrderType",22);
        message.put("OrderStatus","new");
        message.put("order_id",orderDO.getId());
        message.put("content_type",40);
        message.put("serverDesc",orderDO.getServeDesc());
        message.put("categoryCode","");
        message.put("orgType","");
        message.put("contactStatus","");
        message.put("residentialArea",patientDO.getResidentialArea());
        if (null!=orderDO.getDeviceSn()){
        String latLon = orderDO.getServeLat() + "," + orderDO.getServeLon();
        message.put("latLon", latLon);
        message.put("session_id", sessionId);
        message.put("sender_name", orderDO.getPatientName());
        message.put("content_notice", orderDO.getPatientName() + " " + warnStr + "!");
        message.put("sender_code", orderDO.getPatient());
        message.put("OrderType", 22);
        message.put("OrderStatus", "new");
        message.put("order_id", orderDO.getId());
        message.put("content_type", 40);
        message.put("serverDesc", orderDO.getServeDesc());
        message.put("categoryCode", "");
        message.put("orgType", "");
        message.put("contactStatus", "");
        message.put("residentialArea", patientDO.getResidentialArea());
        if (null != orderDO.getDeviceSn()) {
            String device_sn = orderDO.getDeviceSn();
            String device_sn = orderDO.getDeviceSn();
            if (org.apache.commons.lang.StringUtils.isNotBlank(device_sn)){
            if (org.apache.commons.lang.StringUtils.isNotBlank(device_sn)) {
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                if (null!=deviceDetail){
                    message.put("contactStatus",deviceDetail.getContactStatus());
                    message.put("categoryCode",deviceDetail.getCategoryCode());
                if (null != deviceDetail) {
                    message.put("contactStatus", deviceDetail.getContactStatus());
                    message.put("categoryCode", deviceDetail.getCategoryCode());
                }
                }
            }
            }
        }
        }
        String orgCode = orderDO.getHospital();
        String orgCode = orderDO.getHospital();
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        if (null!=orgDO){
            message.put("orgType",orgDO.getType());
        if (null != orgDO) {
            message.put("orgType", orgDO.getType());
        }
        }
        for (BaseDoctorDO doctorDO:doctorDOS){
        for (BaseDoctorDO doctorDO : doctorDOS) {
            try {
            try {
                if (StringUtils.isNotBlank(doctorDO.getMobile())){
                    messageUtil.sendTXYSJson("1141719",doctorDO.getMobile(),orderDO.getPatientName(),orderDO.getServeDesc());
                if (StringUtils.isNotBlank(doctorDO.getMobile())) {
                    messageUtil.sendTXYSJson("1141719", doctorDO.getMobile(), orderDO.getPatientName(), orderDO.getServeDesc());
                }
                }
            }catch (Exception e){}
            String body = "您好,"+orderDO.getPatientName()+"居民"+orderDO.getServeDesc()+",请关注并及时处理。";
            messageUtil.sendDoctorGetuiMessage(doctorDO.getId(),"1","/securityMonitoring/index","安防紧急预警",body);
            imUtil.sendMDTSocketMessageToDoctor(doctorDO.getId(),message.toString());
            } catch (Exception e) {
            }
            String body = "您好," + orderDO.getPatientName() + "居民" + orderDO.getServeDesc() + ",请关注并及时处理。";
            messageUtil.sendDoctorGetuiMessage(doctorDO.getId(), "1", "/securityMonitoring/index", "安防紧急预警", body);
            imUtil.sendMDTSocketMessageToDoctor(doctorDO.getId(), message.toString());
        }
        }
        //pc管理端端推送消息
        //pc管理端端推送消息
        imUtil.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        imUtil.sendPcManageMessageToPc("cloudCare_pcManage", message.toString());
        result.put("resultFlag", 1);
        result.put("resultFlag", 1);
        result.put("resultMsg",orderDO);
        result.put("resultMsg", orderDO);
        return result;
        return result;
    }
    }
    public List<Map<String , Object>> getElectronicFence(String patient){
        String sql = " select safe_area_gz safeAreaGz from wlyy_patient_safe_area where patient = '"+patient+"' ";
    public List<Map<String, Object>> getElectronicFence(String patient) {
        String sql = " select safe_area_gz safeAreaGz from wlyy_patient_safe_area where patient = '" + patient + "' ";
        return jdbcTemplate.queryForList(sql);
        return jdbcTemplate.queryForList(sql);
    }
    }
    public List<Map<String , Object>> getActionTrack(String deviceSn,String day){
        String sql = "SELECT * FROM base_yxdevice_index WHERE sn = '"+deviceSn+"' AND lon != 0 AND lat != 0  and create_time like '"+day+"%' ORDER BY create_time DESC LIMIT 0,20";
    public List<Map<String, Object>> getActionTrack(String deviceSn, String day) {
        String sql = "SELECT * FROM base_yxdevice_index WHERE sn = '" + deviceSn + "' AND lon != 0 AND lat != 0  and create_time like '" + day + "%' ORDER BY create_time DESC LIMIT 0,20";
        return jdbcTemplate.queryForList(sql);
        return jdbcTemplate.queryForList(sql);
    }
    }
    public List<Map<String,Object>>getNewList(String deviceSn,String day){
        if (StringUtils.isBlank(day)){
    public List<Map<String, Object>> getNewList(String deviceSn, String day) {
        if (StringUtils.isBlank(day)) {
            day = DateUtil.getStringDateShort();
            day = DateUtil.getStringDateShort();
        }
        }
        String sql = "SELECT * FROM base_yxdevice_index WHERE sn = '"+deviceSn+"' AND create_time LIKE '"+day+"%' AND lon != 0 AND lat != 0 ORDER BY create_time DESC limit 1";
        String sql = "SELECT * FROM base_yxdevice_index WHERE sn = '" + deviceSn + "' AND create_time LIKE '" + day + "%' AND lon != 0 AND lat != 0 ORDER BY create_time DESC limit 1";
        return jdbcTemplate.queryForList(sql);
        return jdbcTemplate.queryForList(sql);
    }
    }
    public List<Map<String , Object>> getPatientLatLon(String deviceSn){
        String sql = "SELECT p.lat_lon FROM base_patient p,wlyy_patient_device pd WHERE pd.del = 0 AND pd.device_sn = '"+deviceSn+"' AND pd.`user` = p.id AND p.del = 1 limit 1";
    public List<Map<String, Object>> getPatientLatLon(String deviceSn) {
        String sql = "SELECT p.lat_lon FROM base_patient p,wlyy_patient_device pd WHERE pd.del = 0 AND pd.device_sn = '" + deviceSn + "' AND pd.`user` = p.id AND p.del = 1 limit 1";
        return jdbcTemplate.queryForList(sql);
        return jdbcTemplate.queryForList(sql);
    }
    }
    public JSONObject getSecurityOrderDetail(String orderID,String doctor){
    public JSONObject getSecurityOrderDetail(String orderID, String doctor) {
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
        EmergencyOrderVO emergencyOrderVO = new EmergencyOrderVO();
        EmergencyOrderVO emergencyOrderVO = new EmergencyOrderVO();
        SecurityMonitoringOrderDO orderDO = securityMonitoringOrderDao.findOne(orderID);
        SecurityMonitoringOrderDO orderDO = securityMonitoringOrderDao.findOne(orderID);
        if (orderDO==null){
        if (orderDO == null) {
            String failMsg = "工单不存在!";
            String failMsg = "工单不存在!";
            result.put("resultFlag", 0);
            result.put("resultFlag", 0);
            result.put("resultMsg", failMsg);
            result.put("resultMsg", failMsg);
@ -342,13 +343,21 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        }
        }
        emergencyOrderVO.setId(orderDO.getId());
        emergencyOrderVO.setId(orderDO.getId());
        BasePatientDO patientDO = basePatientDao.findById(orderDO.getPatient());
        BasePatientDO patientDO = basePatientDao.findById(orderDO.getPatient());
        Integer statustemp = Integer.valueOf(orderDO.getStatus()+"");
        Integer statustemp = Integer.valueOf(orderDO.getStatus() + "");
        String statusName = "";
        String statusName = "";
        switch (statustemp){
            case -2:statusName="误警报";break;
            case -1:statusName="已取消";break;
            case 0:statusName="已完成";break;
            case 1:statusName="预警中";break;
        switch (statustemp) {
            case -2:
                statusName = "误警报";
                break;
            case -1:
                statusName = "已取消";
                break;
            case 0:
                statusName = "已完成";
                break;
            case 1:
                statusName = "预警中";
                break;
        }
        }
        emergencyOrderVO.setStatusName(statusName);
        emergencyOrderVO.setStatusName(statusName);
        emergencyOrderVO.setOrderId(orderID);
        emergencyOrderVO.setOrderId(orderID);
@ -362,247 +371,244 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        emergencyOrderVO.setSex(patientDO.getSex());
        emergencyOrderVO.setSex(patientDO.getSex());
        emergencyOrderVO.setTopicItem(orderDO.getTopicItem());
        emergencyOrderVO.setTopicItem(orderDO.getTopicItem());
        emergencyOrderVO.setOrderType(22);
        emergencyOrderVO.setOrderType(22);
        if (StringUtils.isNotBlank(orderDO.getSceneImg())){
        if (StringUtils.isNotBlank(orderDO.getSceneImg())) {
            emergencyOrderVO.setSceneImg(orderDO.getSceneImg());
            emergencyOrderVO.setSceneImg(orderDO.getSceneImg());
        }
        }
        List<BaseEmergencyWarnLogDO> logDOS = logDao.findByOrderIdOrderByCreateTimeDesc(orderDO.getId());
        List<BaseEmergencyWarnLogDO> logDOS = logDao.findByOrderIdOrderByCreateTimeDesc(orderDO.getId());
        for (BaseEmergencyWarnLogDO tmp:logDOS){
            tmp.setTimeInfo(DateUtil.getDifferentTimeInfo(new Date(),tmp.getCreateTime(),0));
        for (BaseEmergencyWarnLogDO tmp : logDOS) {
            tmp.setTimeInfo(DateUtil.getDifferentTimeInfo(new Date(), tmp.getCreateTime(), 0));
        }
        }
        if (logDOS.size()==0&&1==emergencyOrderVO.getStatus()){//未响应
            emergencyOrderVO.setOverTimeNotResponse(DateUtil.getDifferentTimeInfo1(new Date(),orderDO.getCreateTime()));
        if (logDOS.size() == 0 && 1 == emergencyOrderVO.getStatus()) {//未响应
            emergencyOrderVO.setOverTimeNotResponse(DateUtil.getDifferentTimeInfo1(new Date(), orderDO.getCreateTime()));
        }
        }
        emergencyOrderVO.setOrderLogInfo(logDOS);
        emergencyOrderVO.setOrderLogInfo(logDOS);
        List<PatientSosContactsDO> contactsDOS = contactsService.getPatientSosContacts(orderDO.getPatient());
        List<PatientSosContactsDO> contactsDOS = contactsService.getPatientSosContacts(orderDO.getPatient());
        emergencyOrderVO.setSosContacts(contactsDOS);
        emergencyOrderVO.setSosContacts(contactsDOS);
        List<Map<String,Object>> securityDevices = patientDeviceService.patientEmeDeviceList(orderDO.getPatient());
        List<Map<String, Object>> securityDevices = patientDeviceService.patientEmeDeviceList(orderDO.getPatient());
        emergencyOrderVO.setSecurityDevices(securityDevices);
        emergencyOrderVO.setSecurityDevices(securityDevices);
        if(StringUtils.isNotBlank(patientDO.getIdcard())){
            emergencyOrderVO.setAge((IdCardUtil.getAgeForIdcard(patientDO.getIdcard()))+"");
        if (StringUtils.isNotBlank(patientDO.getIdcard())) {
            emergencyOrderVO.setAge((IdCardUtil.getAgeForIdcard(patientDO.getIdcard())) + "");
        }
        }
        emergencyOrderVO.setLiveAddress(patientDO.getAddress());
        emergencyOrderVO.setLiveAddress(patientDO.getAddress());
        emergencyOrderVO.setOrderSource(orderDO.getOrderSource());
        emergencyOrderVO.setOrderSource(orderDO.getOrderSource());
        if(orderDO.getStatus()==-2){//误报警
        if (orderDO.getStatus() == -2) {//误报警
            emergencyOrderVO.setUpdateUserName(orderDO.getUpdateUserName());
            emergencyOrderVO.setUpdateUserName(orderDO.getUpdateUserName());
            emergencyOrderVO.setUpdateUser(orderDO.getUpdateUser());
            emergencyOrderVO.setUpdateUser(orderDO.getUpdateUser());
            emergencyOrderVO.setUpdateTime(orderDO.getUpdateTime());
            emergencyOrderVO.setUpdateTime(orderDO.getUpdateTime());
            emergencyOrderVO.setEmergencyCancel(orderDO.getEmergencyCancel());
            emergencyOrderVO.setEmergencyCancel(orderDO.getEmergencyCancel());
        }
        }
        emergencyOrderVO.setUpdateTime(orderDO.getUpdateTime());
        emergencyOrderVO.setUpdateTime(orderDO.getUpdateTime());
        if (orderDO.getStatus()==-1){//已取消
            if (orderDO.getCancelTime()!=null){
        if (orderDO.getStatus() == -1) {//已取消
            if (orderDO.getCancelTime() != null) {
                emergencyOrderVO.setUpdateTime(orderDO.getCancelTime());
                emergencyOrderVO.setUpdateTime(orderDO.getCancelTime());
            }
            else {
            } else {
                emergencyOrderVO.setUpdateTime(orderDO.getUpdateTime());
                emergencyOrderVO.setUpdateTime(orderDO.getUpdateTime());
            }
            }
        }
        }
        //小结
        //小结
        Integer conclusionStatus = Integer.valueOf(orderDO.getConclusionStatus()==null?"0":(orderDO.getConclusionStatus()+""));
        if (conclusionStatus==2){
        Integer conclusionStatus = Integer.valueOf(orderDO.getConclusionStatus() == null ? "0" : (orderDO.getConclusionStatus() + ""));
        if (conclusionStatus == 2) {
            EmergencyWarnConclusionDO conclusionDO = emergencyWarnConclusionDao.findByOrderId(orderDO.getId());
            EmergencyWarnConclusionDO conclusionDO = emergencyWarnConclusionDao.findByOrderId(orderDO.getId());
            if (conclusionDO!=null){
                conclusionDO.setReasonName(dictService.fingByNameAndCode(ConstantUtil.DICT_EMERGENCY_REASON,String.valueOf(conclusionDO.getEmergencyReason())));
                conclusionDO.setTreatmentStatusName(dictService.fingByNameAndCode(ConstantUtil.DICT_EMERGENCY_TREATMENT_STATUS,String.valueOf(conclusionDO.getEmergencyTreatmentStatus())));
            if (conclusionDO != null) {
                conclusionDO.setReasonName(dictService.fingByNameAndCode(ConstantUtil.DICT_EMERGENCY_REASON, String.valueOf(conclusionDO.getEmergencyReason())));
                conclusionDO.setTreatmentStatusName(dictService.fingByNameAndCode(ConstantUtil.DICT_EMERGENCY_TREATMENT_STATUS, String.valueOf(conclusionDO.getEmergencyTreatmentStatus())));
                emergencyOrderVO.setEmergencyWarnConclusionDO(conclusionDO);
                emergencyOrderVO.setEmergencyWarnConclusionDO(conclusionDO);
            }
            }
        }
        }
        //附加信息 电子围栏状态
        //附加信息 电子围栏状态
        if (2==orderDO.getOrderSource()||8==orderDO.getOrderSource()){//手表/拐杖
            Map<String,Object> map = new HashMap<>();
            map.put("inFenceStatus",false);
            map.put("inFenceName","疑似超出安全区域");
        if (2 == orderDO.getOrderSource() || 8 == orderDO.getOrderSource()) {//手表/拐杖
            Map<String, Object> map = new HashMap<>();
            map.put("inFenceStatus", false);
            map.put("inFenceName", "疑似超出安全区域");
            emergencyOrderVO.setInformation(map);
            emergencyOrderVO.setInformation(map);
        }
        }
        if(4==orderDO.getOrderSource()){//监控器
            List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByUserAndCategoryCode(orderDO.getPatient(),"12");
            if (devicePatientDeviceDos.size()==0){
            }else {
        if (4 == orderDO.getOrderSource()) {//监控器
            List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByUserAndCategoryCode(orderDO.getPatient(), "12");
            if (devicePatientDeviceDos.size() == 0) {
            } else {
                try {
                try {
                    JSONObject monitorUrl = ysDeviceServicel.getDeviceLiveAddress(orderDO.getPatient(),devicePatientDeviceDos.get(0).getDeviceSn(),1,null);
                    Map<String,Object> map = new HashMap<>();
                    map.put("monitorInfoStatus",monitorUrl.getIntValue(ResponseContant.resultFlag));
                    map.put("patientAddress",devicePatientDeviceDos.get(0).getSosAddress());
                    if (monitorUrl.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail){
                        map.put("monitorInfo",monitorUrl.getString(ResponseContant.resultMsg));
                    }
                    else {
                        map.put("monitorInfo",monitorUrl.getJSONObject(ResponseContant.resultMsg));
                    JSONObject monitorUrl = ysDeviceServicel.getDeviceLiveAddress(orderDO.getPatient(), devicePatientDeviceDos.get(0).getDeviceSn(), 1, null);
                    Map<String, Object> map = new HashMap<>();
                    map.put("monitorInfoStatus", monitorUrl.getIntValue(ResponseContant.resultFlag));
                    map.put("patientAddress", devicePatientDeviceDos.get(0).getSosAddress());
                    if (monitorUrl.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                        map.put("monitorInfo", monitorUrl.getString(ResponseContant.resultMsg));
                    } else {
                        map.put("monitorInfo", monitorUrl.getJSONObject(ResponseContant.resultMsg));
                    }
                    }
                    emergencyOrderVO.setInformation(map);
                    emergencyOrderVO.setInformation(map);
                }catch (Exception e){
                } catch (Exception e) {
                    e.printStackTrace();
                    e.printStackTrace();
                }
                }
            }
            }
        }
        }
        if (5==orderDO.getOrderSource()){//睡眠带工单
        if (5 == orderDO.getOrderSource()) {//睡眠带工单
            try {
            try {
                JSONObject monitorInfo = JSONObject.parseObject(orderDO.getWarnInfo());
                JSONObject monitorInfo = JSONObject.parseObject(orderDO.getWarnInfo());
                List<BaseSleepPlan> sleepPlans = sleepPlanDao.findByPatient(patientDO.getId());
                List<BaseSleepPlan> sleepPlans = sleepPlanDao.findByPatient(patientDO.getId());
                if(null==monitorInfo){
                if (null == monitorInfo) {
                    monitorInfo = new JSONObject();
                    monitorInfo = new JSONObject();
                }
                }
                if (sleepPlans.size()>0){
                if (sleepPlans.size() > 0) {
                    BaseSleepPlan sleepPlan = sleepPlans.get(0);
                    BaseSleepPlan sleepPlan = sleepPlans.get(0);
                    String endTime = DateUtil.getNextMin(sleepPlan.getGetUpTime(),-1);
                    monitorInfo.put("sleepPlan",true);
                    monitorInfo.put("getUpTime",sleepPlan.getGetUpTime());
                    monitorInfo.put("siestaTime",sleepPlan.getNapTime());
                    monitorInfo.put("nightRestTime",sleepPlan.getNightRestTime());
                    monitorInfo.put("nightRecordTime",sleepPlan.getNightRestTime()+"-隔日"+endTime);
                }else {
                    monitorInfo.put("sleepPlan",false);
                    String endTime = DateUtil.getNextMin(sleepPlan.getGetUpTime(), -1);
                    monitorInfo.put("sleepPlan", true);
                    monitorInfo.put("getUpTime", sleepPlan.getGetUpTime());
                    monitorInfo.put("siestaTime", sleepPlan.getNapTime());
                    monitorInfo.put("nightRestTime", sleepPlan.getNightRestTime());
                    monitorInfo.put("nightRecordTime", sleepPlan.getNightRestTime() + "-隔日" + endTime);
                } else {
                    monitorInfo.put("sleepPlan", false);
                }
                }
                monitorInfo = patientSignTopicInfo(monitorInfo,orderDO.getPatient(),"preventFall",null,true);
                monitorInfo = patientSignTopicInfo(monitorInfo, orderDO.getPatient(), "preventFall", null, true);
                emergencyOrderVO.setInformation(monitorInfo);
                emergencyOrderVO.setInformation(monitorInfo);
            }catch (Exception e){
            } catch (Exception e) {
                e.printStackTrace();
                e.printStackTrace();
            }
            }
        }
        }
        if (6==orderDO.getOrderSource()){//气感工单
        if (6 == orderDO.getOrderSource()) {//气感工单
            try {
            try {
                JSONObject monitorInfo = JSONObject.parseObject(orderDO.getWarnInfo());
                JSONObject monitorInfo = JSONObject.parseObject(orderDO.getWarnInfo());
                monitorInfo = patientSignTopicInfo(monitorInfo,orderDO.getPatient(),"preventFall",null,true);
                monitorInfo = patientSignTopicInfo(monitorInfo, orderDO.getPatient(), "preventFall", null, true);
                emergencyOrderVO.setInformation(monitorInfo);
                emergencyOrderVO.setInformation(monitorInfo);
            }catch (Exception e){
            } catch (Exception e) {
                e.printStackTrace();
                e.printStackTrace();
            }
            }
        }
        }
        if (7==orderDO.getOrderSource()){//烟感工单
        if (7 == orderDO.getOrderSource()) {//烟感工单
            try {
            try {
                JSONObject monitorInfo = JSONObject.parseObject(orderDO.getWarnInfo());
                JSONObject monitorInfo = JSONObject.parseObject(orderDO.getWarnInfo());
                monitorInfo = patientSignTopicInfo(monitorInfo,orderDO.getPatient(),"preventFall",null,true);
                monitorInfo = patientSignTopicInfo(monitorInfo, orderDO.getPatient(), "preventFall", null, true);
                emergencyOrderVO.setInformation(monitorInfo);
                emergencyOrderVO.setInformation(monitorInfo);
            }catch (Exception e){
            } catch (Exception e) {
                e.printStackTrace();
                e.printStackTrace();
            }
            }
        }
        }
        //通知对象
        //通知对象
        List<Map<String,Object>> noticePersons = new ArrayList<>();
        JSONArray familyArr =  familyMemberService.getPatientMembers(orderDO.getPatient(),null,null,null,"3");
        for (int i=0;i<familyArr.size();i++){
        List<Map<String, Object>> noticePersons = new ArrayList<>();
        JSONArray familyArr = familyMemberService.getPatientMembers(orderDO.getPatient(), null, null, null, "3");
        for (int i = 0; i < familyArr.size(); i++) {
            String patientId = familyArr.getJSONObject(i).getString("id");
            String patientId = familyArr.getJSONObject(i).getString("id");
            BasePatientDO patientDO1 = basePatientDao.findById(patientId);
            BasePatientDO patientDO1 = basePatientDao.findById(patientId);
            Map<String,Object> noticeObj = new HashMap<>();
            noticeObj.put("type","0");
            noticeObj.put("typeName","家属");
            noticeObj.put("id",patientDO1.getId());
            noticeObj.put("name",patientDO1.getName());
            noticeObj.put("photo",patientDO1.getPhoto());
            noticeObj.put("mobile",patientDO1.getMobile());
            List<Map<String,Object>> arr = new ArrayList<>();
            Map<String,Object> tmp = new HashMap<>();
            tmp.put("name","系统预警");
            tmp.put("status",0);
            tmp.put("statusName","未读");
            SystemMessageDO messageDO = systemMessageDao.findByRelationCodeAndReceiver(orderDO.getId(),patientId);
            if (messageDO != null){
                if (StringUtils.isNotBlank(messageDO.getIsRead())){
                    tmp.put("status",Integer.parseInt(messageDO.getIsRead()));
                    if (Integer.parseInt(messageDO.getIsRead())==1){
                        tmp.put("statusName","已读");
            Map<String, Object> noticeObj = new HashMap<>();
            noticeObj.put("type", "0");
            noticeObj.put("typeName", "家属");
            noticeObj.put("id", patientDO1.getId());
            noticeObj.put("name", patientDO1.getName());
            noticeObj.put("photo", patientDO1.getPhoto());
            noticeObj.put("mobile", patientDO1.getMobile());
            List<Map<String, Object>> arr = new ArrayList<>();
            Map<String, Object> tmp = new HashMap<>();
            tmp.put("name", "系统预警");
            tmp.put("status", 0);
            tmp.put("statusName", "未读");
            SystemMessageDO messageDO = systemMessageDao.findByRelationCodeAndReceiver(orderDO.getId(), patientId);
            if (messageDO != null) {
                if (StringUtils.isNotBlank(messageDO.getIsRead())) {
                    tmp.put("status", Integer.parseInt(messageDO.getIsRead()));
                    if (Integer.parseInt(messageDO.getIsRead()) == 1) {
                        tmp.put("statusName", "已读");
                    }
                    }
                }
                }
            }
            }
            arr.add(tmp);
            arr.add(tmp);
            noticeObj.put("response",arr);
            noticeObj.put("response", arr);
            noticePersons.add(noticeObj);
            noticePersons.add(noticeObj);
        }
        }
        //医生信息
        //医生信息
        String sql ="SELECT i.code,r.team_code,pack.org_code,pack.org_name from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack  \n" +
        String sql = "SELECT i.code,r.team_code,pack.org_code,pack.org_name from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack  \n" +
                "where  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 and sr.`status`=1 \n" +
                "where  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 and sr.`status`=1 \n" +
                "and  sr.patient  = '"+orderDO.getPatient()+"' and i.code='preventLost' ";
        List<Map<String,Object>> items = jdbcTemplate.queryForList(sql);
        if (items.size()>0){
            Map<String,Object> mapTmp = items.get(0);
            List<BaseDoctorDO> doctorDOS = baseTeamMemberDao.findAllMembersByLevel(mapTmp.get("team_code").toString(),2);
                "and  sr.patient  = '" + orderDO.getPatient() + "' and i.code='preventLost' ";
        List<Map<String, Object>> items = jdbcTemplate.queryForList(sql);
        if (items.size() > 0) {
            Map<String, Object> mapTmp = items.get(0);
            List<BaseDoctorDO> doctorDOS = baseTeamMemberDao.findAllMembersByLevel(mapTmp.get("team_code").toString(), 2);
            JSONArray otherDoctorDistance = new JSONArray();
            JSONArray otherDoctorDistance = new JSONArray();
            JSONObject otherDoctorDistanceObj = new JSONObject();
            JSONObject otherDoctorDistanceObj = new JSONObject();
            for(BaseDoctorDO doc:doctorDOS){
                Map<String,Object> noticeObj = new HashMap<>();
                noticeObj.put("type","1");
                noticeObj.put("typeName","社工");
                noticeObj.put("id",doc.getId());
                noticeObj.put("name",doc.getName());
                noticeObj.put("photo",doc.getPhoto());
                noticeObj.put("mobile",doc.getMobile());
                List<Map<String,Object>> arr = new ArrayList<>();
                Map<String,Object> tmp = new HashMap<>();
                tmp.put("name","系统预警");
                tmp.put("status",0);
                tmp.put("statusName","未响应");
                if (emergencyWarnDoctorResponseDao.findByDoctorAndOrderId(doc.getId(),orderDO.getId())!=null){
                    tmp.put("status",1);
                    tmp.put("statusName","已响应");
            for (BaseDoctorDO doc : doctorDOS) {
                Map<String, Object> noticeObj = new HashMap<>();
                noticeObj.put("type", "1");
                noticeObj.put("typeName", "社工");
                noticeObj.put("id", doc.getId());
                noticeObj.put("name", doc.getName());
                noticeObj.put("photo", doc.getPhoto());
                noticeObj.put("mobile", doc.getMobile());
                List<Map<String, Object>> arr = new ArrayList<>();
                Map<String, Object> tmp = new HashMap<>();
                tmp.put("name", "系统预警");
                tmp.put("status", 0);
                tmp.put("statusName", "未响应");
                if (emergencyWarnDoctorResponseDao.findByDoctorAndOrderId(doc.getId(), orderDO.getId()) != null) {
                    tmp.put("status", 1);
                    tmp.put("statusName", "已响应");
                }
                }
                arr.add(tmp);
                arr.add(tmp);
                noticeObj.put("response",arr);
                noticeObj.put("response", arr);
                noticePersons.add(noticeObj);
                noticePersons.add(noticeObj);
                if (StringUtils.isBlank(doc.getDoctorLat()) || StringUtils.isBlank(doc.getDoctorLon())) {
                if (StringUtils.isBlank(doc.getDoctorLat()) || StringUtils.isBlank(doc.getDoctorLon())) {
                    List<BaseDoctorHospitalDO> doctorHospitalDOS = baseDoctorHospitalDao.findByDoctorCode(doc.getId());
                    List<BaseDoctorHospitalDO> doctorHospitalDOS = baseDoctorHospitalDao.findByDoctorCode(doc.getId());
                    if (doctorHospitalDOS.size()>0){
                    if (doctorHospitalDOS.size() > 0) {
                        BaseDoctorHospitalDO hospitalDO = doctorHospitalDOS.get(0);
                        BaseDoctorHospitalDO hospitalDO = doctorHospitalDOS.get(0);
                        BaseOrgDO orgDO = orgDao.findByCode(hospitalDO.getOrgCode());
                        BaseOrgDO orgDO = orgDao.findByCode(hospitalDO.getOrgCode());
                        doc.setDoctorLocateAddress(orgDO.getAddress());
                        doc.setDoctorLocateAddress(orgDO.getAddress());
                        doc.setDoctorLat(orgDO.getLatitude());
                        doc.setDoctorLat(orgDO.getLatitude());
                        doc.setDoctorLon(orgDO.getLongitude());
                        doc.setDoctorLon(orgDO.getLongitude());
                    }else {
                    } else {
                        continue;
                        continue;
                    }
                    }
                }
                }
                //double distanceTmp = countDistance.getDistance(Double.parseDouble(orderDO.getServeLat()),Double.parseDouble(orderDO.getServeLon()),Double.parseDouble(doc.getDoctorLat()),Double.parseDouble(doc.getDoctorLon()));
                //double distanceTmp = countDistance.getDistance(Double.parseDouble(orderDO.getServeLat()),Double.parseDouble(orderDO.getServeLon()),Double.parseDouble(doc.getDoctorLat()),Double.parseDouble(doc.getDoctorLon()));
                otherDoctorDistanceObj = new JSONObject();
                otherDoctorDistanceObj = new JSONObject();
                otherDoctorDistanceObj.put("doctor",doc.getId());
                otherDoctorDistanceObj.put("doctorName",doc.getName());
                otherDoctorDistanceObj.put("doctorAddress",doc.getDoctorLocateAddress());
                otherDoctorDistanceObj.put("doctorLon",doc.getDoctorLon());
                otherDoctorDistanceObj.put("doctorLat",doc.getDoctorLat());
                otherDoctorDistanceObj.put("distance",null);//两点距离
                otherDoctorDistanceObj.put("doctor", doc.getId());
                otherDoctorDistanceObj.put("doctorName", doc.getName());
                otherDoctorDistanceObj.put("doctorAddress", doc.getDoctorLocateAddress());
                otherDoctorDistanceObj.put("doctorLon", doc.getDoctorLon());
                otherDoctorDistanceObj.put("doctorLat", doc.getDoctorLat());
                otherDoctorDistanceObj.put("distance", null);//两点距离
                otherDoctorDistance.add(otherDoctorDistanceObj);
                otherDoctorDistance.add(otherDoctorDistanceObj);
            }
            }
            emergencyOrderVO.setOtherDoctorDistance(otherDoctorDistance.toJSONString());
            emergencyOrderVO.setOtherDoctorDistance(otherDoctorDistance.toJSONString());
        }
        }
        emergencyOrderVO.setNoticePersons(noticePersons);
        emergencyOrderVO.setNoticePersons(noticePersons);
        JSONObject jsonObject = JSON.parseObject(JSON.toJSONStringWithDateFormat(emergencyOrderVO,"yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue));
        JSONObject jsonObject = JSON.parseObject(JSON.toJSONStringWithDateFormat(emergencyOrderVO, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue));
        //获取咨询
        //获取咨询
        ConsultDo consult = consultDao.queryByRelationCode(orderID);
        ConsultDo consult = consultDao.queryByRelationCode(orderID);
        if (null != consult) {
        if (null != consult) {
            String sessionId = orderDO.getPatient() + "_" + consult.getId() + "_" + consult.getType();
            String sessionId = orderDO.getPatient() + "_" + consult.getId() + "_" + consult.getType();
            jsonObject.put("sessionId",sessionId);
            if (1==orderDO.getStatus()&&StringUtils.isNotBlank(doctor)){//查询未读数量
            jsonObject.put("sessionId", sessionId);
            if (1 == orderDO.getStatus() && StringUtils.isNotBlank(doctor)) {//查询未读数量
                try {
                try {
                    Integer count = imUtil.UserSessionsUnreadMessageCount(sessionId,doctor);
                    jsonObject.put("UnRead",count);
                }catch (Exception e){
                    jsonObject.put("sessionId",sessionId);
                    jsonObject.put("UnRead",0);
                    Integer count = imUtil.UserSessionsUnreadMessageCount(sessionId, doctor);
                    jsonObject.put("UnRead", count);
                } catch (Exception e) {
                    jsonObject.put("sessionId", sessionId);
                    jsonObject.put("UnRead", 0);
                }
                }
            }
            }
        }
        else {
            jsonObject.put("sessionId",null);
            jsonObject.put("UnRead",0);
        } else {
            jsonObject.put("sessionId", null);
            jsonObject.put("UnRead", 0);
        }
        }
        result.put("resultFlag", 1);
        result.put("resultFlag", 1);
        result.put("resultMsg",jsonObject);
        result.put("resultMsg", jsonObject);
        return result;
        return result;
    }
    }
    public JSONObject errorWarning(String orderId,Integer emergencyCancel,String doctor){
    public JSONObject errorWarning(String orderId, Integer emergencyCancel, String doctor) {
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
        SecurityMonitoringOrderDO orderDO = securityMonitoringOrderDao.findOne(orderId);
        SecurityMonitoringOrderDO orderDO = securityMonitoringOrderDao.findOne(orderId);
        if (orderDO==null){
        if (orderDO == null) {
            String failMsg = "工单不存在!";
            String failMsg = "工单不存在!";
            result.put("resultFlag", 0);
            result.put("resultFlag", 0);
            result.put("resultMsg", failMsg);
            result.put("resultMsg", failMsg);
@ -616,60 +622,60 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        orderDO.setUpdateUserName(doctorDO.getName());
        orderDO.setUpdateUserName(doctorDO.getName());
        orderDO.setUpdateUser(doctorDO.getId());
        orderDO.setUpdateUser(doctorDO.getId());
        orderDO.setEmergencyCancel(emergencyCancel);
        orderDO.setEmergencyCancel(emergencyCancel);
        if (!consultTeamService.finishConsult(orderDO.getId(),orderDO.getPatient(),doctor,2)){
        if (!consultTeamService.finishConsult(orderDO.getId(), orderDO.getPatient(), doctor, 2)) {
            String failMsg = "修改失败:咨询未能结束";
            String failMsg = "修改失败:咨询未能结束";
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultMsg,failMsg);
            result.put(ResponseContant.resultMsg, failMsg);
            return result;
            return result;
        }
        }
        securityMonitoringOrderDao.save(orderDO);
        securityMonitoringOrderDao.save(orderDO);
        //完成工单向pc管理端发送消息
        //完成工单向pc管理端发送消息
        JSONObject message = new JSONObject();
        JSONObject message = new JSONObject();
        String latLon = orderDO.getServeLat()+","+orderDO.getServeLon();
        message.put("latLon",latLon);
        message.put("session_id",orderDO.getSessionId());
        message.put("sender_name",orderDO.getPatientName());
        message.put("content_notice","完成安防服务工单");
        message.put("sender_code",orderDO.getPatient());
        message.put("OrderType",22);
        message.put("OrderStatus","finish");
        message.put("order_id",orderDO.getId());
        message.put("content_type",40);
        message.put("serverDesc",orderDO.getServeDesc());
        message.put("categoryCode","");
        message.put("orgType","");
        message.put("contactStatus","");
        message.put("residentialArea","");//结束时该字段无意义
        if (null!=orderDO.getDeviceSn()){
        String latLon = orderDO.getServeLat() + "," + orderDO.getServeLon();
        message.put("latLon", latLon);
        message.put("session_id", orderDO.getSessionId());
        message.put("sender_name", orderDO.getPatientName());
        message.put("content_notice", "完成安防服务工单");
        message.put("sender_code", orderDO.getPatient());
        message.put("OrderType", 22);
        message.put("OrderStatus", "finish");
        message.put("order_id", orderDO.getId());
        message.put("content_type", 40);
        message.put("serverDesc", orderDO.getServeDesc());
        message.put("categoryCode", "");
        message.put("orgType", "");
        message.put("contactStatus", "");
        message.put("residentialArea", "");//结束时该字段无意义
        if (null != orderDO.getDeviceSn()) {
            String device_sn = orderDO.getDeviceSn();
            String device_sn = orderDO.getDeviceSn();
            if (org.apache.commons.lang.StringUtils.isNotBlank(device_sn)){
            if (org.apache.commons.lang.StringUtils.isNotBlank(device_sn)) {
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                if (null!=deviceDetail){
                    message.put("contactStatus",deviceDetail.getContactStatus());
                    message.put("categoryCode",deviceDetail.getCategoryCode());
                if (null != deviceDetail) {
                    message.put("contactStatus", deviceDetail.getContactStatus());
                    message.put("categoryCode", deviceDetail.getCategoryCode());
                }
                }
            }
            }
        }
        }
        String orgCode = orderDO.getHospital();
        String orgCode = orderDO.getHospital();
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        if (null!=orgDO){
            message.put("orgType",orgDO.getType());
        if (null != orgDO) {
            message.put("orgType", orgDO.getType());
        }
        }
        imUtil.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        result = getSecurityOrderDetail(orderId,null);
        imUtil.sendPcManageMessageToPc("cloudCare_pcManage", message.toString());
        result = getSecurityOrderDetail(orderId, null);
        return result;
        return result;
    }
    }
    public PageEnvelop getSecurityOrderList(String doctor, String serverDoctor, String patientName, String patient, String status,
    public PageEnvelop getSecurityOrderList(String doctor, String serverDoctor, String patientName, String patient, String status,
                                            String svrDesc,String topicItem, Integer page, Integer pageSize,Integer dailyMonitor){
                                            String svrDesc, String topicItem, Integer page, Integer pageSize, Integer dailyMonitor) {
        JSONArray result = new JSONArray();
        JSONArray result = new JSONArray();
        //服务权限
        //服务权限
        if(doctorServicePermissionsService.isPermission(doctor,10)==0){
            return PageEnvelop.getSuccessListWithPage("success",result,page,pageSize,0L);
        if (doctorServicePermissionsService.isPermission(doctor, 10) == 0) {
            return PageEnvelop.getSuccessListWithPage("success", result, page, pageSize, 0L);
        }
        }
        String sqlCount = "select count(ord.id) from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
        String sqlCount = "select count(ord.id) from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
@ -679,167 +685,178 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                "ord.doctor_name,ord.update_user,ord.update_user_name,ord.patient_phone,ord.conclusion_status from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
                "ord.doctor_name,ord.update_user,ord.update_user_name,ord.patient_phone,ord.conclusion_status from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
                "where 1=1 ";
                "where 1=1 ";
        if (1==dailyMonitor){//医生日常监护居民安防工单列表查询
            if (StringUtils.isBlank(topicItem)||StringUtils.isBlank(doctor)){
        if (1 == dailyMonitor) {//医生日常监护居民安防工单列表查询
            if (StringUtils.isBlank(topicItem) || StringUtils.isBlank(doctor)) {
                return new PageEnvelop();
                return new PageEnvelop();
            }
            }
            String categoryCode ="";
            switch (topicItem){
            String categoryCode = "";
            switch (topicItem) {
                case "preventLost":
                case "preventLost":
                    categoryCode="'4'";
                    categoryCode = "'4'";
                    break;
                    break;
                case "preventFall":
                case "preventFall":
                    categoryCode="'12'";
                    categoryCode = "'12'";
                    break;
                    break;
                case "preventFire":
                case "preventFire":
                    categoryCode="'15'";
                    categoryCode = "'15'";
                    break;
                    break;
                case "preventGasLeakage":
                case "preventGasLeakage":
                    categoryCode="'14'";
                    categoryCode = "'14'";
                    break;
                    break;
                case "preventOutOfBed":
                case "preventOutOfBed":
                    categoryCode="'13'";
                    categoryCode = "'13'";
                    break;
                    break;
            }
            }
            if (StringUtils.isNotBlank(doctor)){//日常监护医生必传
            if (StringUtils.isNotBlank(doctor)) {//日常监护医生必传
                fliter += " and EXISTS( SELECT DISTINCT p.id,p.name,p.residential_area residentialArea,p.photo,p.idcard,p.mobile, " +
                fliter += " and EXISTS( SELECT DISTINCT p.id,p.name,p.residential_area residentialArea,p.photo,p.idcard,p.mobile, " +
                        " p.openid,p.sex,p.pad_imei padImei " +
                        " p.openid,p.sex,p.pad_imei padImei " +
                        " from base_patient p , base_service_package_sign_record sr,base_service_package_record r,base_team_member m  " +
                        " from base_patient p , base_service_package_sign_record sr,base_service_package_record r,base_team_member m  " +
                        " WHERE p.id = sr.patient and sr.status=1 and m.team_code = r.team_code and sr.id=r.sign_id  " +
                        " WHERE p.id = sr.patient and sr.status=1 and m.team_code = r.team_code and sr.id=r.sign_id  " +
                        " and m.doctor_code = '"+doctor+"' and m.del = '1' ) ";
                        " and m.doctor_code = '" + doctor + "' and m.del = '1' ) ";
                fliter +=" and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id  " +
                        " where  pd.user = p.id and pd.del=0 and pd.category_code in ("+categoryCode+") and FIND_IN_SET('"+topicItem+"',dd.service_topic)) ";
                fliter += " and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id  " +
                        " where  pd.user = p.id and pd.del=0 and pd.category_code in (" + categoryCode + ") and FIND_IN_SET('" + topicItem + "',dd.service_topic)) ";
                if ("preventLost".equals(topicItem)){//有绑定围栏的居民
                if ("preventLost".equals(topicItem)) {//有绑定围栏的居民
                    fliter += " and EXISTS (select 1 from wlyy_patient_safe_area sf where sf.patient = p.id and sf.del=1 and sf.manage_status=1) ";
                    fliter += " and EXISTS (select 1 from wlyy_patient_safe_area sf where sf.patient = p.id and sf.del=1 and sf.manage_status=1) ";
                }
                }
            }
            }
        }else {
            if (StringUtils.isNotBlank(doctor)){
                fliter+=" and  EXISTS ( SELECT 1 from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
        } else {
            if (StringUtils.isNotBlank(doctor)) {
                fliter += " and  EXISTS ( SELECT 1 from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
                        "base_team_member m " +
                        "base_team_member m " +
                        "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and " +
                        "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and " +
                        " r.service_package_id = i.service_package_id and  m.team_code = r.team_code  and i.del = 1 and sr.`status`=1  and m.doctor_code = '"+doctor+"' and m.del = '1') ";
                        " r.service_package_id = i.service_package_id and  m.team_code = r.team_code  and i.del = 1 and sr.`status`=1  and m.doctor_code = '" + doctor + "' and m.del = '1') ";
            }
            }
        }
        }
        if (StringUtils.isNotBlank(serverDoctor)){
            fliter +=" and ord.doctor = '"+serverDoctor+"' ";
        if (StringUtils.isNotBlank(serverDoctor)) {
            fliter += " and ord.doctor = '" + serverDoctor + "' ";
        }
        }
        if (StringUtils.isNotBlank(patientName)){
            fliter+=" and (ord.patient_name like '%"+patientName+"%' or p.idcard='"+patientName+"')  ";
        if (StringUtils.isNotBlank(patientName)) {
            fliter += " and (ord.patient_name like '%" + patientName + "%' or p.idcard='" + patientName + "')  ";
        }
        }
        if (StringUtils.isNotBlank(patient)){
            fliter+=" and ord.patient='"+patient+"' ";
        if (StringUtils.isNotBlank(patient)) {
            fliter += " and ord.patient='" + patient + "' ";
        }
        }
        if (StringUtils.isNotBlank(status)){
            fliter+=" and ord.status='"+Integer.parseInt(status)+"' ";
        if (StringUtils.isNotBlank(status)) {
            fliter += " and ord.status='" + Integer.parseInt(status) + "' ";
        }
        }
        if (StringUtils.isNotBlank(svrDesc)){
            fliter+=" and ord.serve_desc='"+svrDesc+"' ";
        if (StringUtils.isNotBlank(svrDesc)) {
            fliter += " and ord.serve_desc='" + svrDesc + "' ";
        }
        }
        if (StringUtils.isNotBlank(topicItem)){
            fliter+=" and ord.topic_item='"+topicItem+"' ";
        if (StringUtils.isNotBlank(topicItem)) {
            fliter += " and ord.topic_item='" + topicItem + "' ";
        }
        }
        Long count = jdbcTemplate.queryForObject(sqlCount+fliter,Long.class);
        fliter+=" order by ord.create_time desc limit " + (page*pageSize) + "," + pageSize;
        List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql+fliter);
        Long count = jdbcTemplate.queryForObject(sqlCount + fliter, Long.class);
        fliter += " order by ord.create_time desc limit " + (page * pageSize) + "," + pageSize;
        List<Map<String, Object>> sqlResult = jdbcTemplate.queryForList(sql + fliter);
        for (Map<String,Object>one:sqlResult){
        for (Map<String, Object> one : sqlResult) {
            JSONObject tmp = new JSONObject();
            JSONObject tmp = new JSONObject();
            tmp.put("patientCode",one.get("patientCode"));
            tmp.put("patientName",one.get("name"));
            tmp.put("sex",one.get("sex"));
            tmp.put("photo",one.get("photo"));
            tmp.put("idcard",one.get("idcard"));
            tmp.put("number",one.get("number"));
            tmp.put("id",one.get("orderId"));
            tmp.put("serveDesc",one.get("serve_desc"));
            Date date = (Date)one.get("create_time");
            tmp.put("patientCode", one.get("patientCode"));
            tmp.put("patientName", one.get("name"));
            tmp.put("sex", one.get("sex"));
            tmp.put("photo", one.get("photo"));
            tmp.put("idcard", one.get("idcard"));
            tmp.put("number", one.get("number"));
            tmp.put("id", one.get("orderId"));
            tmp.put("serveDesc", one.get("serve_desc"));
            Date date = (Date) one.get("create_time");
            tmp.put("createTime", DateUtil.dateToStrLong(date));
            tmp.put("createTime", DateUtil.dateToStrLong(date));
            tmp.put("status",one.get("status"));
            tmp.put("doctor",one.get("doctor"));
            tmp.put("doctorName",one.get("doctor_name"));
            tmp.put("patientPhone",one.get("patient_phone"));
            tmp.put("conclusionStatus",one.get("conclusion_status"));
            Integer conclusionStatus = Integer.valueOf(one.get("conclusion_status")==null?"0":(one.get("conclusion_status")+""));
            tmp.put("status", one.get("status"));
            tmp.put("doctor", one.get("doctor"));
            tmp.put("doctorName", one.get("doctor_name"));
            tmp.put("patientPhone", one.get("patient_phone"));
            tmp.put("conclusionStatus", one.get("conclusion_status"));
            Integer conclusionStatus = Integer.valueOf(one.get("conclusion_status") == null ? "0" : (one.get("conclusion_status") + ""));
            String conclusionStatusName = "";
            String conclusionStatusName = "";
            switch (conclusionStatus){
                case 1:conclusionStatusName="待补录";break;
                case 2:conclusionStatusName="已登记";break;
            switch (conclusionStatus) {
                case 1:
                    conclusionStatusName = "待补录";
                    break;
                case 2:
                    conclusionStatusName = "已登记";
                    break;
            }
            }
            tmp.put("conclusionStatusName",conclusionStatusName);
            Integer statustemp = Integer.valueOf(one.get("status")+"");
            if (-2==statustemp||-1==statustemp){
                tmp.put("doctor",one.get("update_user"));
                tmp.put("doctorName",one.get("update_user_name"));
            tmp.put("conclusionStatusName", conclusionStatusName);
            Integer statustemp = Integer.valueOf(one.get("status") + "");
            if (-2 == statustemp || -1 == statustemp) {
                tmp.put("doctor", one.get("update_user"));
                tmp.put("doctorName", one.get("update_user_name"));
            }
            }
            String statusName = "";
            String statusName = "";
            switch (statustemp){
                case -2:statusName="误警报";break;
                case -1:statusName="已取消";break;
                case 0:statusName="已完成";break;
                case 1:statusName="预警中";break;
            switch (statustemp) {
                case -2:
                    statusName = "误警报";
                    break;
                case -1:
                    statusName = "已取消";
                    break;
                case 0:
                    statusName = "已完成";
                    break;
                case 1:
                    statusName = "预警中";
                    break;
            }
            }
            tmp.put("statusName",statusName);
            Integer age  = IdCardUtil.getAgeForIdcard(tmp.getString("idcard"));
            tmp.put("age",age);
            tmp.put("statusName", statusName);
            Integer age = IdCardUtil.getAgeForIdcard(tmp.getString("idcard"));
            tmp.put("age", age);
            //患者设备
            //患者设备
            List<DevicePatientDevice> devices = patientDeviceDao.findAllByUser(tmp.get("patientCode").toString());
            List<DevicePatientDevice> devices = patientDeviceDao.findAllByUser(tmp.get("patientCode").toString());
            if (devices.size()>0){
                tmp.put("deviceFlag","1");
            }
            else {
                tmp.put("deviceFlag","0");
            if (devices.size() > 0) {
                tmp.put("deviceFlag", "1");
            } else {
                tmp.put("deviceFlag", "0");
            }
            }
            result.add(tmp);
            result.add(tmp);
        }
        }
        return PageEnvelop.getSuccessListWithPage("success",result,page,pageSize,count);
        return PageEnvelop.getSuccessListWithPage("success", result, page, pageSize, count);
    }
    }
    public JSONObject getSecurityTab(String patient,String doctor,String status,String svrDesc,String topicItem,Integer dailyMonitor){
    public JSONObject getSecurityTab(String patient, String doctor, String status, String svrDesc, String topicItem, Integer dailyMonitor) {
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
        result.put("status_-2",0);//误报警
        result.put("status_-1",0);//已取消
        result.put("status_0",0);//已完成
        result.put("status_1",0);//预警中
        result.put("status_all",0);//
        result.put("svr_all",0);//
        result.put("status_-2", 0);//误报警
        result.put("status_-1", 0);//已取消
        result.put("status_0", 0);//已完成
        result.put("status_1", 0);//预警中
        result.put("status_all", 0);//
        result.put("svr_all", 0);//
        Map<String,String> serverTmp = new HashMap<>();
        Map<String, String> serverTmp = new HashMap<>();
        String sql = " select py_code,dict_value from wlyy_hospital_sys_dict where dict_name='security_server_dict' ";
        String 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){
            result.put("svr_"+server.get("py_code").toString(),0);
            serverTmp.put(server.get("dict_value").toString(),server.get("py_code").toString());
        List<Map<String, Object>> servers = jdbcTemplate.queryForList(sql);
        for (Map<String, Object> server : servers) {
            result.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(ord.id) count from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
        sql = "select ord.status,ord.serve_desc,count(ord.id) count from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
                "where 1=1 ";
                "where 1=1 ";
        String fliter = "  ";
        String fliter = "  ";
        if (1==dailyMonitor){//医生日常监护居民安防工单列表查询
            if (StringUtils.isBlank(topicItem)||StringUtils.isBlank(doctor)){
        if (1 == dailyMonitor) {//医生日常监护居民安防工单列表查询
            if (StringUtils.isBlank(topicItem) || StringUtils.isBlank(doctor)) {
                return result;
                return result;
            }
            }
            String categoryCode ="";
            switch (topicItem){
            String categoryCode = "";
            switch (topicItem) {
                case "preventLost":
                case "preventLost":
                    categoryCode="'4'";
                    categoryCode = "'4'";
                    break;
                    break;
                case "preventFall":
                case "preventFall":
                    categoryCode="'12'";
                    categoryCode = "'12'";
                    break;
                    break;
                case "preventFire":
                case "preventFire":
                    categoryCode="'15'";
                    categoryCode = "'15'";
                    break;
                    break;
                case "preventGasLeakage":
                case "preventGasLeakage":
                    categoryCode="'14'";
                    categoryCode = "'14'";
                    break;
                    break;
                case "preventOutOfBed":
                case "preventOutOfBed":
                    categoryCode="'13'";
                    categoryCode = "'13'";
                    break;
                    break;
            }
            }
            if (StringUtils.isNotBlank(doctor)) {//日常监护医生必传
            if (StringUtils.isNotBlank(doctor)) {//日常监护医生必传
@ -856,59 +873,58 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                    fliter += " and EXISTS (select 1 from wlyy_patient_safe_area sf where sf.patient = p.id and sf.del=1 and sf.manage_status=1) ";
                    fliter += " and EXISTS (select 1 from wlyy_patient_safe_area sf where sf.patient = p.id and sf.del=1 and sf.manage_status=1) ";
                }
                }
            }
            }
        }else {
            if (StringUtils.isNotBlank(doctor)){
                fliter+=" and  EXISTS ( SELECT 1 from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
        } else {
            if (StringUtils.isNotBlank(doctor)) {
                fliter += " and  EXISTS ( SELECT 1 from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
                        "base_team_member m " +
                        "base_team_member m " +
                        "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and " +
                        "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and " +
                        " r.service_package_id = i.service_package_id and  m.team_code = r.team_code  and i.del = 1 and sr.`status`=1  and m.doctor_code = '"+doctor+"' and m.del = '1') ";
                        " r.service_package_id = i.service_package_id and  m.team_code = r.team_code  and i.del = 1 and sr.`status`=1  and m.doctor_code = '" + doctor + "' and m.del = '1') ";
            }
            }
        }
        }
        if (StringUtils.isNotBlank(patient)){
            fliter+=" and ord.patient='"+patient+"' ";
        if (StringUtils.isNotBlank(patient)) {
            fliter += " and ord.patient='" + patient + "' ";
        }
        }
        if (StringUtils.isNotBlank(status)){
            fliter+=" and ord.status='"+Integer.parseInt(status)+"' ";
        if (StringUtils.isNotBlank(status)) {
            fliter += " and ord.status='" + Integer.parseInt(status) + "' ";
        }
        }
        if (StringUtils.isNotBlank(svrDesc)){
            fliter+=" and ord.serve_desc='"+svrDesc+"' ";
        if (StringUtils.isNotBlank(svrDesc)) {
            fliter += " and ord.serve_desc='" + svrDesc + "' ";
        }
        }
        if (StringUtils.isNotBlank(topicItem)){
            fliter+=" and ord.topic_item='"+topicItem+"' ";
        if (StringUtils.isNotBlank(topicItem)) {
            fliter += " and ord.topic_item='" + topicItem + "' ";
        }
        }
        fliter+=" group by ord.status,ord.serve_desc ";
        List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql+fliter);
        fliter += " group by ord.status,ord.serve_desc ";
        List<Map<String, Object>> sqlResult = jdbcTemplate.queryForList(sql + fliter);
        String pyCode = "";
        String pyCode = "";
        for (Map<String,Object> map:sqlResult){
            result.put("status_"+map.get("status"),result.getInteger("status_"+map.get("status"))+Integer.parseInt(map.get("count").toString()));
            pyCode =  serverTmp.get(map.get("serve_desc"))==null?null:serverTmp.get(map.get("serve_desc")).toString();
            if (StringUtils.isNotBlank(pyCode)){
                result.put("svr_"+pyCode,result.getInteger("svr_"+pyCode)+Integer.parseInt(map.get("count").toString()));
                result.put("status_all",result.getInteger("status_all")+Integer.parseInt(map.get("count").toString()));
                result.put("svr_all",result.getInteger("svr_all")+Integer.parseInt(map.get("count").toString()));
        for (Map<String, Object> map : sqlResult) {
            result.put("status_" + map.get("status"), result.getInteger("status_" + map.get("status")) + Integer.parseInt(map.get("count").toString()));
            pyCode = serverTmp.get(map.get("serve_desc")) == null ? null : serverTmp.get(map.get("serve_desc")).toString();
            if (StringUtils.isNotBlank(pyCode)) {
                result.put("svr_" + pyCode, result.getInteger("svr_" + pyCode) + Integer.parseInt(map.get("count").toString()));
                result.put("status_all", result.getInteger("status_all") + Integer.parseInt(map.get("count").toString()));
                result.put("svr_all", result.getInteger("svr_all") + Integer.parseInt(map.get("count").toString()));
            }
            }
        }
        }
        return result;
        return result;
    }
    }
    public List<Map<String,Object>> getSecurityOrderUnCompleteList(String doctor){
        List<Map<String,Object>> result = new ArrayList<>();
    public List<Map<String, Object>> getSecurityOrderUnCompleteList(String doctor) {
        List<Map<String, Object>> result = new ArrayList<>();
        String sql = " select p.id patientCode,p.name,p.sex,p.idcard,p.photo,ord.id orderId,ord.number,ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time,ord.`status`,ord.doctor," +
        String sql = " select p.id patientCode,p.name,p.sex,p.idcard,p.photo,ord.id orderId,ord.number,ord.serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time,ord.`status`,ord.doctor," +
                "ord.doctor_name,ord.patient_phone,ord.conclusion_status from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
                "ord.doctor_name,ord.patient_phone,ord.conclusion_status from base_security_monitoring_order ord INNER JOIN base_patient p on p.id = ord.patient " +
                "where ord.status <>-1 and ord.status<>0  ";
                "where ord.status <>-1 and ord.status<>0  ";
        sql+= "and  EXISTS ( SELECT 1 from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
        sql += "and  EXISTS ( SELECT 1 from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
                "base_team_member m " +
                "base_team_member m " +
                "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and " +
                "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and " +
                " r.service_package_id = i.service_package_id and  m.team_code = r.team_code  and i.del = 1 and sr.`status`=1  and i.code='preventLost' and m.doctor_code = '"+doctor+"' and m.del = '1') ";
        sql +=" order by ord.create_time asc ";
        result= jdbcTemplate.queryForList(sql);
        for (Map<String,Object> map:result){
            if (map.get("idcard")==null){
                map.put("age",null);
            }
            else{
                Integer age  = IdCardUtil.getAgeForIdcard(map.get("idcard").toString());
                map.put("age",age);
                " r.service_package_id = i.service_package_id and  m.team_code = r.team_code  and i.del = 1 and sr.`status`=1  and i.code='preventLost' and m.doctor_code = '" + doctor + "' and m.del = '1') ";
        sql += " order by ord.create_time asc ";
        result = jdbcTemplate.queryForList(sql);
        for (Map<String, Object> map : result) {
            if (map.get("idcard") == null) {
                map.put("age", null);
            } else {
                Integer age = IdCardUtil.getAgeForIdcard(map.get("idcard").toString());
                map.put("age", age);
            }
            }
        }
        }
@ -916,9 +932,9 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
    }
    }
    /**
    /**
     * 系统更新医生工单状态
     * 系统更新医生工单状态
     *
     * @param doctor
     * @param doctor
     * @param dispatchOrderStatus
     * @param dispatchOrderStatus
     */
     */
@ -940,7 +956,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        doctorStatusDao.save(doctorSwitch);
        doctorStatusDao.save(doctorSwitch);
    }
    }
    public SecurityMonitoringOrderDO acceptOrder1(String orderId,String doctor) throws Exception{
    public SecurityMonitoringOrderDO acceptOrder1(String orderId, String doctor) throws Exception {
        SecurityMonitoringOrderDO doorServiceOrder = securityMonitoringOrderDao.findOne(orderId);
        SecurityMonitoringOrderDO doorServiceOrder = securityMonitoringOrderDao.findOne(orderId);
        if (null == doorServiceOrder) {
        if (null == doorServiceOrder) {
            throw new Exception("该工单不存在");
            throw new Exception("该工单不存在");
@ -951,9 +967,9 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        securityMonitoringOrderDao.save(doorServiceOrder);
        securityMonitoringOrderDao.save(doorServiceOrder);
        systemMessageDao.orderMessageDelByType(doorServiceOrder.getDoctor(),orderId,"607");
        systemMessageDao.orderMessageDelByType(doorServiceOrder.getDoctor(), orderId, "607");
        if(doorServiceOrder.getType() == null|| doorServiceOrder.getType() != 3) {
        if (doorServiceOrder.getType() == null || doorServiceOrder.getType() != 3) {
//            //获取咨询
//            //获取咨询
//            ConsultTeam consultTeam = consultTeamDao.queryByRelationCode(orderId);
//            ConsultTeam consultTeam = consultTeamDao.queryByRelationCode(orderId);
@ -979,10 +995,11 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
    /**
    /**
     * 接单
     * 接单
     *
     * @param orderId
     * @param orderId
     */
     */
    @Transactional(rollbackFor = Exception.class)
    @Transactional(rollbackFor = Exception.class)
    public JSONObject acceptOrder(String orderId,String doctor) throws Exception {
    public JSONObject acceptOrder(String orderId, String doctor) throws Exception {
//        JSONObject result = new JSONObject();
//        JSONObject result = new JSONObject();
//        SecurityMonitoringOrderDO doorServiceOrderDO = securityMonitoringOrderDao.findOne(orderId);
//        SecurityMonitoringOrderDO doorServiceOrderDO = securityMonitoringOrderDao.findOne(orderId);
//        if(null == doorServiceOrderDO){
//        if(null == doorServiceOrderDO){
@ -1065,21 +1082,22 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        //  待接单消息设为已操作, 434 医生接单-- 王五接受了服务工单12345678
        //  待接单消息设为已操作, 434 医生接单-- 王五接受了服务工单12345678
//        messageUtil.createMessage("医生接单","634",doorServiceOrder.getPatient(),doorServiceOrder.getPatientName(),
//        messageUtil.createMessage("医生接单","634",doorServiceOrder.getPatient(),doorServiceOrder.getPatientName(),
//                doorServiceOrder.getId(), doorServiceOrder.getDoctor(),doorServiceOrder.getDoctorName() ,null, doorServiceOrder.getDoctorName() + "接受了服务工单"+ doorServiceOrder.getNumber());
//                doorServiceOrder.getId(), doorServiceOrder.getDoctor(),doorServiceOrder.getDoctorName() ,null, doorServiceOrder.getDoctorName() + "接受了服务工单"+ doorServiceOrder.getNumber());
        return getSecurityOrderDetail(orderId,null);
        return getSecurityOrderDetail(orderId, null);
    }
    }
    /**
    /**
     * 取消工单
     * 取消工单
     *
     * @param orderId
     * @param orderId
     * @param reason
     * @param reason
     * @return
     * @return
     */
     */
    public JSONObject cancelOrder(String orderId,int type,String reason,String doctor){
    public JSONObject cancelOrder(String orderId, int type, String reason, String doctor) {
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
        SecurityMonitoringOrderDO orderDO = securityMonitoringOrderDao.findOne(orderId);
        SecurityMonitoringOrderDO orderDO = securityMonitoringOrderDao.findOne(orderId);
        if(null == orderDO){
            String failMsg = "【取消工单】该工单不存在" ;
        if (null == orderDO) {
            String failMsg = "【取消工单】该工单不存在";
            result.put("resultFlag", 0);
            result.put("resultFlag", 0);
            result.put("resultMsg", failMsg);
            result.put("resultMsg", failMsg);
            logger.error(failMsg);
            logger.error(failMsg);
@ -1087,24 +1105,24 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        }
        }
        //接单前可取消工单
        //接单前可取消工单
        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
        if (doctorDO==null){
        if (doctorDO == null) {
            String failMsg = "【取消工单】操作医生不存在";
            String failMsg = "【取消工单】操作医生不存在";
            result.put("resultFlag", 0);
            result.put("resultFlag", 0);
            result.put("resultMsg", failMsg);
            result.put("resultMsg", failMsg);
            logger.error(failMsg);
            logger.error(failMsg);
            return result;
            return result;
        }
        }
        if(orderDO.getStatus() == SecurityMonitoringOrderDO.Status.complete.getType()){
        if (orderDO.getStatus() == SecurityMonitoringOrderDO.Status.complete.getType()) {
            String failMsg = "当前工单已结束";
            String failMsg = "当前工单已结束";
            result.put("resultFlag", 0);
            result.put("resultFlag", 0);
            result.put("resultMsg", failMsg);
            result.put("resultMsg", failMsg);
            logger.error(failMsg);
            logger.error(failMsg);
            return result;
            return result;
        }
        }
        if (!consultTeamService.finishConsult(orderDO.getId(),orderDO.getPatient(),orderDO.getPatient(),1)){
        if (!consultTeamService.finishConsult(orderDO.getId(), orderDO.getPatient(), orderDO.getPatient(), 1)) {
            String failMsg = "咨询结束失败 无法取消工单";
            String failMsg = "咨询结束失败 无法取消工单";
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultMsg,failMsg);
            result.put(ResponseContant.resultMsg, failMsg);
            return result;
            return result;
        }
        }
@ -1116,8 +1134,8 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        orderDO.setStatus(SecurityMonitoringOrderDO.Status.cancel.getType());
        orderDO.setStatus(SecurityMonitoringOrderDO.Status.cancel.getType());
        this.save(orderDO);
        this.save(orderDO);
       if(type == SecurityMonitoringOrderDO.CancelType.patient.getType()){                   //居民取消,消息列表也应该不显示
           messageUtil.updateSecurityMonitoringOrderMessage(orderDO,new String[]{"602","603"},"patientCancel");
        if (type == SecurityMonitoringOrderDO.CancelType.patient.getType()) {                   //居民取消,消息列表也应该不显示
            messageUtil.updateSecurityMonitoringOrderMessage(orderDO, new String[]{"602", "603"}, "patientCancel");
        }
        }
        //保存取消记录
        //保存取消记录
@ -1131,40 +1149,40 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        //完成工单向pc管理端发送消息
        //完成工单向pc管理端发送消息
        JSONObject message = new JSONObject();
        JSONObject message = new JSONObject();
        String latLon = orderDO.getServeLat()+","+orderDO.getServeLon();
        message.put("latLon",latLon);
        message.put("session_id",orderDO.getSessionId());
        message.put("sender_name",orderDO.getPatientName());
        message.put("content_notice","完成安防服务工单");
        message.put("sender_code",orderDO.getPatient());
        message.put("OrderType",22);
        message.put("OrderStatus","finish");
        message.put("order_id",orderDO.getId());
        message.put("content_type",40);
        message.put("serverDesc",orderDO.getServeDesc());
        message.put("categoryCode","");
        message.put("orgType","");
        message.put("contactStatus","");
        message.put("residentialArea","");
        if (null!=orderDO.getDeviceSn()){
        String latLon = orderDO.getServeLat() + "," + orderDO.getServeLon();
        message.put("latLon", latLon);
        message.put("session_id", orderDO.getSessionId());
        message.put("sender_name", orderDO.getPatientName());
        message.put("content_notice", "完成安防服务工单");
        message.put("sender_code", orderDO.getPatient());
        message.put("OrderType", 22);
        message.put("OrderStatus", "finish");
        message.put("order_id", orderDO.getId());
        message.put("content_type", 40);
        message.put("serverDesc", orderDO.getServeDesc());
        message.put("categoryCode", "");
        message.put("orgType", "");
        message.put("contactStatus", "");
        message.put("residentialArea", "");
        if (null != orderDO.getDeviceSn()) {
            String device_sn = orderDO.getDeviceSn();
            String device_sn = orderDO.getDeviceSn();
            if (org.apache.commons.lang.StringUtils.isNotBlank(device_sn)){
            if (org.apache.commons.lang.StringUtils.isNotBlank(device_sn)) {
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                if (null!=deviceDetail){
                    message.put("contactStatus",deviceDetail.getContactStatus());
                    message.put("categoryCode",deviceDetail.getCategoryCode());
                if (null != deviceDetail) {
                    message.put("contactStatus", deviceDetail.getContactStatus());
                    message.put("categoryCode", deviceDetail.getCategoryCode());
                }
                }
            }
            }
        }
        }
        String orgCode = orderDO.getHospital();
        String orgCode = orderDO.getHospital();
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        if (null!=orgDO){
            message.put("orgType",orgDO.getType());
        if (null != orgDO) {
            message.put("orgType", orgDO.getType());
        }
        }
        imUtil.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        imUtil.sendPcManageMessageToPc("cloudCare_pcManage", message.toString());
//        Consult consult = consultDao.queryByRelationCode(orderId);
//        Consult consult = consultDao.queryByRelationCode(orderId);
//        // 发送微信模板消息,通知居民工单已取消(smyyyqx-上门预约已取消)
//        // 发送微信模板消息,通知居民工单已取消(smyyyqx-上门预约已取消)
//
//
@ -1184,12 +1202,13 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
//        }
//        }
//        pushMsgTask.putWxMsg(tokenUtils.getAccessToken(), 30, patient.getOpenid(), patient.getName(), json);
//        pushMsgTask.putWxMsg(tokenUtils.getAccessToken(), 30, patient.getOpenid(), patient.getName(), json);
        result = getSecurityOrderDetail(orderId,null);
        result = getSecurityOrderDetail(orderId, null);
        return result;
        return result;
    }
    }
    /**
    /**
     * 签到保存
     * 签到保存
     *
     * @param orderId
     * @param orderId
     * @param signTime
     * @param signTime
     * @param signWay
     * @param signWay
@ -1198,7 +1217,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
     * @return
     * @return
     */
     */
    public JSONObject signIn(String orderId, String signTime, Integer signWay, String signLocation,
    public JSONObject signIn(String orderId, String signTime, Integer signWay, String signLocation,
                                         String signImg, String twoDimensionalCode,String doctorId) throws Exception {
                             String signImg, String twoDimensionalCode, String doctorId) throws Exception {
       /* SecurityMonitoringOrderDO doorServiceOrder = securityMonitoringOrderDao.findOne(orderId);
       /* SecurityMonitoringOrderDO doorServiceOrder = securityMonitoringOrderDao.findOne(orderId);
        doorServiceOrder.setDoctorSignTime(DateUtil.strToDate(signTime));
        doorServiceOrder.setDoctorSignTime(DateUtil.strToDate(signTime));
        doorServiceOrder.setDoctorSignWay(signWay);
        doorServiceOrder.setDoctorSignWay(signWay);
@ -1226,11 +1245,12 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
            return getSecurityOrderDetail(orderId);
            return getSecurityOrderDetail(orderId);
        }*/
        }*/
        return getSecurityOrderDetail(orderId,null);
        return getSecurityOrderDetail(orderId, null);
    }
    }
    /**
    /**
     * 根据接单医生code获取最近一次服务orderId
     * 根据接单医生code获取最近一次服务orderId
     *
     * @param doctor
     * @param doctor
     * @return
     * @return
     */
     */
@ -1242,31 +1262,32 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
    /**
    /**
     * 编辑保存服务工单小结
     * 编辑保存服务工单小结
     *
     * @return
     * @return
     * @throws Exception
     * @throws Exception
     */
     */
    public JSONObject updateDoorConclusion(Integer emergency_reason,Integer treatment_status,String orderId,String conclusion,String conclusion_img,String doctor) throws Exception {
    public JSONObject updateDoorConclusion(Integer emergency_reason, Integer treatment_status, String orderId, String conclusion, String conclusion_img, String doctor) throws Exception {
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
        ObjectMapper objectMapper = new ObjectMapper();
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
        SecurityMonitoringOrderDO one = securityMonitoringOrderDao.findOne(orderId);
        SecurityMonitoringOrderDO one = securityMonitoringOrderDao.findOne(orderId);
        if (StringUtils.isNotBlank(doctor)){
        if (StringUtils.isNotBlank(doctor)) {
            BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
            BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
            if (doctorDO!=null){
            if (doctorDO != null) {
                one.setDoctor(doctor);
                one.setDoctor(doctor);
                one.setDoctorName(doctorDO.getName());
                one.setDoctorName(doctorDO.getName());
                one.setUpdateUser(doctor);
                one.setUpdateUser(doctor);
                one.setUpdateUserName(doctorDO.getName());
                one.setUpdateUserName(doctorDO.getName());
            }
            }
        }
        }
        if (one==null){
            String failMsg = "工单不存在" ;
        if (one == null) {
            String failMsg = "工单不存在";
            result.put("resultFlag", 0);
            result.put("resultFlag", 0);
            result.put("resultMsg", failMsg);
            result.put("resultMsg", failMsg);
            return result;
            return result;
        }
        }
        EmergencyWarnConclusionDO doorConclusion =  emergencyWarnConclusionDao.findByOrderId(orderId);
        if (doorConclusion==null){
        EmergencyWarnConclusionDO doorConclusion = emergencyWarnConclusionDao.findByOrderId(orderId);
        if (doorConclusion == null) {
            doorConclusion = new EmergencyWarnConclusionDO();
            doorConclusion = new EmergencyWarnConclusionDO();
            doorConclusion.setOrderId(orderId);
            doorConclusion.setOrderId(orderId);
            doorConclusion.setPatient(one.getPatient());
            doorConclusion.setPatient(one.getPatient());
@ -1289,7 +1310,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
            doorConclusion.setCreateUser(one.getDoctor());
            doorConclusion.setCreateUser(one.getDoctor());
            doorConclusion.setCreateUserName(null != doctorVO ? doctorVO.getName() : null);
            doorConclusion.setCreateUserName(null != doctorVO ? doctorVO.getName() : null);
        }
        }
        if (!consultTeamService.finishConsult(one.getId(),one.getPatient(),one.getPatient(),1)){
        if (!consultTeamService.finishConsult(one.getId(), one.getPatient(), one.getPatient(), 1)) {
            String failMsg = "咨询结束失败 无法结束工单";
            String failMsg = "咨询结束失败 无法结束工单";
            throw new Exception(failMsg);
            throw new Exception(failMsg);
        }
        }
@ -1300,66 +1321,67 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        //完成工单向pc管理端发送消息
        //完成工单向pc管理端发送消息
        JSONObject message = new JSONObject();
        JSONObject message = new JSONObject();
        String latLon = one.getServeLat()+","+one.getServeLon();
        message.put("latLon",latLon);
        message.put("session_id",one.getSessionId());
        message.put("sender_name",one.getPatientName());
        message.put("content_notice","完成安防服务工单");
        message.put("sender_code",one.getPatient());
        message.put("OrderType",22);
        message.put("OrderStatus","finish");
        message.put("order_id",one.getId());
        message.put("content_type",40);
        message.put("serverDesc",one.getServeDesc());
        message.put("categoryCode","");
        message.put("orgType","");
        message.put("contactStatus","");
        message.put("residentialArea","");
        if (null!=one.getDeviceSn()){
        String latLon = one.getServeLat() + "," + one.getServeLon();
        message.put("latLon", latLon);
        message.put("session_id", one.getSessionId());
        message.put("sender_name", one.getPatientName());
        message.put("content_notice", "完成安防服务工单");
        message.put("sender_code", one.getPatient());
        message.put("OrderType", 22);
        message.put("OrderStatus", "finish");
        message.put("order_id", one.getId());
        message.put("content_type", 40);
        message.put("serverDesc", one.getServeDesc());
        message.put("categoryCode", "");
        message.put("orgType", "");
        message.put("contactStatus", "");
        message.put("residentialArea", "");
        if (null != one.getDeviceSn()) {
            String device_sn = one.getDeviceSn();
            String device_sn = one.getDeviceSn();
            if (org.apache.commons.lang.StringUtils.isNotBlank(device_sn)){
            if (org.apache.commons.lang.StringUtils.isNotBlank(device_sn)) {
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                DeviceDetail deviceDetail = deviceDetailDao.findBySn(device_sn);
                if (null!=deviceDetail){
                    message.put("contactStatus",deviceDetail.getContactStatus());
                    message.put("categoryCode",deviceDetail.getCategoryCode());
                if (null != deviceDetail) {
                    message.put("contactStatus", deviceDetail.getContactStatus());
                    message.put("categoryCode", deviceDetail.getCategoryCode());
                }
                }
            }
            }
        }
        }
        String orgCode = one.getHospital();
        String orgCode = one.getHospital();
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        if (null!=orgDO){
            message.put("orgType",orgDO.getType());
        if (null != orgDO) {
            message.put("orgType", orgDO.getType());
        }
        }
        imUtil.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        return getSecurityOrderDetail(orderId,null);
        imUtil.sendPcManageMessageToPc("cloudCare_pcManage", message.toString());
        return getSecurityOrderDetail(orderId, null);
    }
    }
    /**
    /**
     * 跳过登记服务小结
     * 跳过登记服务小结
     *
     * @param orderId
     * @param orderId
     */
     */
    public JSONObject cancelConclusion(String orderId,String doctor) throws Exception {
    public JSONObject cancelConclusion(String orderId, String doctor) throws Exception {
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
        SecurityMonitoringOrderDO one = securityMonitoringOrderDao.findOne(orderId);
        SecurityMonitoringOrderDO one = securityMonitoringOrderDao.findOne(orderId);
        if (StringUtils.isNotBlank(doctor)){
        if (StringUtils.isNotBlank(doctor)) {
            BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
            BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
            if (doctorDO!=null){
            if (doctorDO != null) {
                one.setDoctor(doctor);
                one.setDoctor(doctor);
                one.setDoctorName(doctorDO.getName());
                one.setDoctorName(doctorDO.getName());
                one.setUpdateUser(doctor);
                one.setUpdateUser(doctor);
                one.setUpdateUserName(doctorDO.getName());
                one.setUpdateUserName(doctorDO.getName());
            }
            }
        }
        }
        if (one==null){
            String failMsg = "工单不存在" ;
        if (one == null) {
            String failMsg = "工单不存在";
            result.put("resultFlag", 0);
            result.put("resultFlag", 0);
            result.put("resultMsg", failMsg);
            result.put("resultMsg", failMsg);
            return result;
            return result;
        }
        }
        if (!consultTeamService.finishConsult(one.getId(),one.getPatient(),one.getPatient(),1)){
        if (!consultTeamService.finishConsult(one.getId(), one.getPatient(), one.getPatient(), 1)) {
            String failMsg = "咨询结束失败 无法结束工单";
            String failMsg = "咨询结束失败 无法结束工单";
            throw new Exception(failMsg);
            throw new Exception(failMsg);
        }
        }
@ -1367,44 +1389,46 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        one.setUpdateTime(new Date());
        one.setUpdateTime(new Date());
        securityMonitoringOrderDao.save(one);
        securityMonitoringOrderDao.save(one);
        return getSecurityOrderDetail(orderId,null);
        return getSecurityOrderDetail(orderId, null);
    }
    }
    /**
    /**
     * 统计居民已经服务的次数
     * 统计居民已经服务的次数
     *
     * @param patient
     * @param patient
     * @return
     * @return
     */
     */
    public Integer countPatientDoorTimes(String patient){
    public Integer countPatientDoorTimes(String patient) {
        Integer count = 0;
        Integer count = 0;
        String sql = "SELECT count(o.id) as count FROM base_security_monitoring_order o  where  o.patient = '" + patient + "' and status>3 ";
        String sql = "SELECT count(o.id) as count FROM base_security_monitoring_order o  where  o.patient = '" + patient + "' and status>3 ";
        count = jdbcTemplate.queryForObject(sql,Integer.class);
        count = jdbcTemplate.queryForObject(sql, Integer.class);
        return count;
        return count;
    }
    }
    /**
    /**
     * 根据orderId获取工单服务小结
     * 根据orderId获取工单服务小结
     *
     * @param orderId
     * @param orderId
     * @return
     * @return
     */
     */
    public EmergencyWarnConclusionDO getDoorConclusion(String orderId){
    public EmergencyWarnConclusionDO getDoorConclusion(String orderId) {
        EmergencyWarnConclusionDO doorConclusion = emergencyWarnConclusionDao.findByOrderId(orderId);
        EmergencyWarnConclusionDO doorConclusion = emergencyWarnConclusionDao.findByOrderId(orderId);
        SecurityMonitoringOrderDO one = securityMonitoringOrderDao.findOne(orderId);
        SecurityMonitoringOrderDO one = securityMonitoringOrderDao.findOne(orderId);
        if (doorConclusion==null&&one!=null) {
        if (doorConclusion == null && one != null) {
            doorConclusion = new EmergencyWarnConclusionDO();
            doorConclusion = new EmergencyWarnConclusionDO();
            doorConclusion.setOrderId(one.getId());
            doorConclusion.setOrderId(one.getId());
            doorConclusion.setPatient(one.getPatient());
            doorConclusion.setPatient(one.getPatient());
            doorConclusion.setPatientName(one.getPatientName());
            doorConclusion.setPatientName(one.getPatientName());
            doorConclusion.setDoctor(one.getDoctor());
            doorConclusion.setDoctor(one.getDoctor());
            doorConclusion.setDoctorName(one.getDoctorName());
            doorConclusion.setDoctorName(one.getDoctorName());
        }else {
            doorConclusion.setReasonName(dictService.fingByNameAndCode(ConstantUtil.DICT_EMERGENCY_REASON,String.valueOf(doorConclusion.getEmergencyReason())));
            doorConclusion.setTreatmentStatusName(dictService.fingByNameAndCode(ConstantUtil.DICT_EMERGENCY_TREATMENT_STATUS,String.valueOf(doorConclusion.getEmergencyTreatmentStatus())));
        } else {
            doorConclusion.setReasonName(dictService.fingByNameAndCode(ConstantUtil.DICT_EMERGENCY_REASON, String.valueOf(doorConclusion.getEmergencyReason())));
            doorConclusion.setTreatmentStatusName(dictService.fingByNameAndCode(ConstantUtil.DICT_EMERGENCY_TREATMENT_STATUS, String.valueOf(doorConclusion.getEmergencyTreatmentStatus())));
        }
        }
        return doorConclusion;
        return doorConclusion;
    }
    }
    public JSONObject saveOrderFinishBydoctor(String orderId ,String finishImg) throws Exception {
    public JSONObject saveOrderFinishBydoctor(String orderId, String finishImg) throws Exception {
//        SecurityMonitoringOrderDO one = securityMonitoringOrderDao.findOne(orderId);
//        SecurityMonitoringOrderDO one = securityMonitoringOrderDao.findOne(orderId);
//        one.setDoctorConfirmFinishImg(finishImg);
//        one.setDoctorConfirmFinishImg(finishImg);
//        one.setStatus(SecurityMonitoringOrderDO.Status.complete.getType());
//        one.setStatus(SecurityMonitoringOrderDO.Status.complete.getType());
@ -1422,11 +1446,12 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
//        // 发送微信通知  待付款
//        // 发送微信通知  待付款
//        BasePatientDO patient = basePatientDao.findById(one.getPatient());
//        BasePatientDO patient = basePatientDao.findById(one.getPatient());
        return getSecurityOrderDetail(orderId,null);
        return getSecurityOrderDetail(orderId, null);
    }
    }
    /**
    /**
     * 根据id获取服务工单信息
     * 根据id获取服务工单信息
     *
     * @param id
     * @param id
     * @return
     * @return
     */
     */
@ -1438,7 +1463,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        BasePatientDO patient = basePatientDao.findById(doorServiceOrder.getPatient());
        BasePatientDO patient = basePatientDao.findById(doorServiceOrder.getPatient());
        if (patient != null) {
        if (patient != null) {
            String sex = IdCardUtil.getSexForIdcard_new(patient.getIdcard());
            String sex = IdCardUtil.getSexForIdcard_new(patient.getIdcard());
            int age = IdCardUtil.getAgeByIdcardOrBirthday(patient.getIdcard(),patient.getBirthday());
            int age = IdCardUtil.getAgeByIdcardOrBirthday(patient.getIdcard(), patient.getBirthday());
            doorServiceOrder.setSex("1".equals(sex) ? "男" : "2".equals(sex) ? "女" : "未知");
            doorServiceOrder.setSex("1".equals(sex) ? "男" : "2".equals(sex) ? "女" : "未知");
            doorServiceOrder.setAge(age);
            doorServiceOrder.setAge(age);
            doorServiceOrder.setPhoto(patient.getPhoto());
            doorServiceOrder.setPhoto(patient.getPhoto());
@ -1458,261 +1483,261 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        return doorServiceOrder;
        return doorServiceOrder;
    }
    }
    public List<Map<String,Object>> getSecurityServerDoctor(String patient,String topicItem){
    public List<Map<String, Object>> getSecurityServerDoctor(String patient, String topicItem) {
        //获取患者签约防走失服务的团队
        //获取患者签约防走失服务的团队
        String sql="SELECT DISTINCT r.team_code from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i  \n" +
        String sql = "SELECT DISTINCT r.team_code from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i  \n" +
                "where  sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id   and i.del = 1 and sr.`status`=1 \n" +
                "where  sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id   and i.del = 1 and sr.`status`=1 \n" +
                "and  sr.patient  = '"+patient+"' and i.code='"+topicItem+"'";
        List<String> teams = jdbcTemplate.queryForList(sql,String.class);
        List<Map<String,Object>> result = new ArrayList<>();
        if (teams.size()==0){
                "and  sr.patient  = '" + patient + "' and i.code='" + topicItem + "'";
        List<String> teams = jdbcTemplate.queryForList(sql, String.class);
        List<Map<String, Object>> result = new ArrayList<>();
        if (teams.size() == 0) {
            return new ArrayList<>();
            return new ArrayList<>();
        }else {
            for (String team:teams){
        } else {
            for (String team : teams) {
                sql = "select DISTINCT doc.id doctor,doc.name as doctorName,CONCAT(doc.`name`,\n" +
                sql = "select DISTINCT doc.id doctor,doc.name as doctorName,CONCAT(doc.`name`,\n" +
                        "CASE WHEN doc.doctor_level=1 THEN '(社区医生)' ELSE '(社工)' END) as name,doc.photo,doc.mobile from base_team_member mem " +
                        "CASE WHEN doc.doctor_level=1 THEN '(社区医生)' ELSE '(社工)' END) as name,doc.photo,doc.mobile from base_team_member mem " +
                        "INNER JOIN base_doctor doc on mem.doctor_code = doc.id and mem.del=1 and mem.team_code='"+team+"'";
                List<Map<String,Object>>tmp = jdbcTemplate.queryForList(sql);
                        "INNER JOIN base_doctor doc on mem.doctor_code = doc.id and mem.del=1 and mem.team_code='" + team + "'";
                List<Map<String, Object>> tmp = jdbcTemplate.queryForList(sql);
                result.addAll(tmp);
                result.addAll(tmp);
            }
            }
        }
        }
        return result;
        return result;
    }
    }
    public JSONObject patientMonitoringInfo(String patient,String topicItem,boolean video){
    public JSONObject patientMonitoringInfo(String patient, String topicItem, boolean video) {
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
        result.put("location",null);
        result.put("fences",null);
        result.put("gasLeakage",null);
        result.put("fire",null);
        result.put("fall",null);
        result.put("sleep",null);
        result.put("sleepOrderInfo",null);//最近工单
        result.put("deviceSn",null);
        result.put("emeAssistance",false);
        result.put("monitorInfo",null);
        result.put("location", null);
        result.put("fences", null);
        result.put("gasLeakage", null);
        result.put("fire", null);
        result.put("fall", null);
        result.put("sleep", null);
        result.put("sleepOrderInfo", null);//最近工单
        result.put("deviceSn", null);
        result.put("emeAssistance", false);
        result.put("monitorInfo", null);
        String sql = " select dict.code,count(ord.id) total from base_system_dict_entry dict LEFT JOIN base_security_monitoring_order ord " +
        String sql = " select dict.code,count(ord.id) total from base_system_dict_entry dict LEFT JOIN base_security_monitoring_order ord " +
                " on dict.code = ord.topic_item COLLATE utf8_unicode_ci and ord.status="+SecurityMonitoringOrderDO.Status.apply.getType()+" where dict.dict_code='service_item' " +
                "and dict.remark='security' and ord.patient='"+patient+"' GROUP BY dict.code ";
        List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql);
        for (Map<String,Object>tmp:sqlResult){
            switch (tmp.get("code").toString()){
                " on dict.code = ord.topic_item COLLATE utf8_unicode_ci and ord.status=" + SecurityMonitoringOrderDO.Status.apply.getType() + " where dict.dict_code='service_item' " +
                "and dict.remark='security' and ord.patient='" + patient + "' GROUP BY dict.code ";
        List<Map<String, Object>> sqlResult = jdbcTemplate.queryForList(sql);
        for (Map<String, Object> tmp : sqlResult) {
            switch (tmp.get("code").toString()) {
                case "preventGasLeakage":
                case "preventGasLeakage":
                   Integer count = Integer.parseInt(tmp.get("total").toString());
                    if (count>0){
                        result.put("gasLeakage",true);
                    }else {
                        result.put("gasLeakage",false);
                    Integer count = Integer.parseInt(tmp.get("total").toString());
                    if (count > 0) {
                        result.put("gasLeakage", true);
                    } else {
                        result.put("gasLeakage", false);
                    }
                    }
                    break;
                    break;
                case "preventFire":
                case "preventFire":
                    count = Integer.parseInt(tmp.get("total").toString());
                    count = Integer.parseInt(tmp.get("total").toString());
                    if (count>0){
                        result.put("fire",true);
                    }else {
                        result.put("fire",false);
                    if (count > 0) {
                        result.put("fire", true);
                    } else {
                        result.put("fire", false);
                    }
                    }
                    break;
                    break;
                case "preventFall":
                case "preventFall":
                    count = Integer.parseInt(tmp.get("total").toString());
                    count = Integer.parseInt(tmp.get("total").toString());
                    if (count>0){
                        result.put("fall",true);
                    }else {
                        result.put("fall",false);
                    if (count > 0) {
                        result.put("fall", true);
                    } else {
                        result.put("fall", false);
                    }
                    }
                    break;
                    break;
                case "preventOutOfBed":
                case "preventOutOfBed":
                    count = Integer.parseInt(tmp.get("total").toString());
                    count = Integer.parseInt(tmp.get("total").toString());
                    if (count>0){
                        result.put("sleep",true);
                    if (count > 0) {
                        result.put("sleep", true);
                        sql = " select serve_desc from base_security_monitoring_order where topic_item='preventOutOfBed' " +
                        sql = " select serve_desc from base_security_monitoring_order where topic_item='preventOutOfBed' " +
                                "and patient='"+patient+"' and `status`=1 order by create_time desc limit 1 ";
                        List<String> serveDesces = jdbcTemplate.queryForList(sql,String.class);
                        if (serveDesces.size()>0){
                            result.put("sleepOrderInfo",serveDesces.get(0));
                                "and patient='" + patient + "' and `status`=1 order by create_time desc limit 1 ";
                        List<String> serveDesces = jdbcTemplate.queryForList(sql, String.class);
                        if (serveDesces.size() > 0) {
                            result.put("sleepOrderInfo", serveDesces.get(0));
                        }
                        }
                    }else {
                        result.put("sleep",false);
                    } else {
                        result.put("sleep", false);
                    }
                    }
                    break;
                    break;
            }
            }
        }
        }
        sql = " select count(id) from base_emergency_assistance_order  where patient='"+patient+"' and status="+ EmergencyAssistanceDO.Status.apply.getType();
        Integer counnt = jdbcTemplate.queryForObject(sql,Integer.class);
        if (counnt>0){
            result.put("emeAssistance",true);
        sql = " select count(id) from base_emergency_assistance_order  where patient='" + patient + "' and status=" + EmergencyAssistanceDO.Status.apply.getType();
        Integer counnt = jdbcTemplate.queryForObject(sql, Integer.class);
        if (counnt > 0) {
            result.put("emeAssistance", true);
        }
        }
        result = patientSignTopicInfo(result,patient,topicItem,null,true);
        result = patientSignTopicInfo(result, patient, topicItem, null, true);
        return result;
        return result;
    }
    }
    /**
    /**
     *老人家属首页实时监护信息
     * 老人家属首页实时监护信息
     * 居家状态取手表 无手表缺省
     * 居家状态取手表 无手表缺省
     * 监控
     * 监控
     */
     */
    public JSONObject patientMonitoringInfo2(String patient){
    public JSONObject patientMonitoringInfo2(String patient) {
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
        result.put("atHome",null);// 居家状态
        result.put("location",null);
        result.put("fences",null);
        result.put("gasLeakage",null);
        result.put("fire",null);
        result.put("fall",null);
        result.put("sleep",null);
        result.put("sleepOrderInfo",null);//最近工单
        result.put("deviceSn",null);
        result.put("emeAssistance",false);
        result.put("monitorInfo",null);
        result.put("atHome", null);// 居家状态
        result.put("location", null);
        result.put("fences", null);
        result.put("gasLeakage", null);
        result.put("fire", null);
        result.put("fall", null);
        result.put("sleep", null);
        result.put("sleepOrderInfo", null);//最近工单
        result.put("deviceSn", null);
        result.put("emeAssistance", false);
        result.put("monitorInfo", null);
        String sql = " select dict.code,count(ord.id) total from base_system_dict_entry dict LEFT JOIN base_security_monitoring_order ord " +
        String sql = " select dict.code,count(ord.id) total from base_system_dict_entry dict LEFT JOIN base_security_monitoring_order ord " +
                " on dict.code = ord.topic_item COLLATE utf8_unicode_ci and ord.status="+SecurityMonitoringOrderDO.Status.apply.getType()+" where dict.dict_code='service_item' " +
                "and dict.remark='security' and ord.patient='"+patient+"' GROUP BY dict.code ";
        List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql);
        for (Map<String,Object>tmp:sqlResult){
            switch (tmp.get("code").toString()){
                " on dict.code = ord.topic_item COLLATE utf8_unicode_ci and ord.status=" + SecurityMonitoringOrderDO.Status.apply.getType() + " where dict.dict_code='service_item' " +
                "and dict.remark='security' and ord.patient='" + patient + "' GROUP BY dict.code ";
        List<Map<String, Object>> sqlResult = jdbcTemplate.queryForList(sql);
        for (Map<String, Object> tmp : sqlResult) {
            switch (tmp.get("code").toString()) {
                case "preventGasLeakage":
                case "preventGasLeakage":
                    Integer count = Integer.parseInt(tmp.get("total").toString());
                    Integer count = Integer.parseInt(tmp.get("total").toString());
                    if (count>0){
                        result.put("gasLeakage",true);
                    }else {
                        result.put("gasLeakage",false);
                    if (count > 0) {
                        result.put("gasLeakage", true);
                    } else {
                        result.put("gasLeakage", false);
                    }
                    }
                    break;
                    break;
                case "preventFire":
                case "preventFire":
                    count = Integer.parseInt(tmp.get("total").toString());
                    count = Integer.parseInt(tmp.get("total").toString());
                    if (count>0){
                        result.put("fire",true);
                    }else {
                        result.put("fire",false);
                    if (count > 0) {
                        result.put("fire", true);
                    } else {
                        result.put("fire", false);
                    }
                    }
                    break;
                    break;
                case "preventFall":
                case "preventFall":
                    count = Integer.parseInt(tmp.get("total").toString());
                    count = Integer.parseInt(tmp.get("total").toString());
                    if (count>0){
                        result.put("fall",true);
                    }else {
                        result.put("fall",false);
                    if (count > 0) {
                        result.put("fall", true);
                    } else {
                        result.put("fall", false);
                    }
                    }
                    break;
                    break;
                case "preventOutOfBed":
                case "preventOutOfBed":
                    count = Integer.parseInt(tmp.get("total").toString());
                    count = Integer.parseInt(tmp.get("total").toString());
                    if (count>0){
                        result.put("sleep",true);
                    if (count > 0) {
                        result.put("sleep", true);
                        sql = " select serve_desc from base_security_monitoring_order where topic_item='preventOutOfBed' " +
                        sql = " select serve_desc from base_security_monitoring_order where topic_item='preventOutOfBed' " +
                                "and patient='"+patient+"' and `status`=1 order by create_time desc limit 1 ";
                        List<String> serveDesces = jdbcTemplate.queryForList(sql,String.class);
                        if (serveDesces.size()>0){
                            result.put("sleepOrderInfo",serveDesces.get(0));
                                "and patient='" + patient + "' and `status`=1 order by create_time desc limit 1 ";
                        List<String> serveDesces = jdbcTemplate.queryForList(sql, String.class);
                        if (serveDesces.size() > 0) {
                            result.put("sleepOrderInfo", serveDesces.get(0));
                        }
                        }
                    }else {
                        result.put("sleep",false);
                    } else {
                        result.put("sleep", false);
                    }
                    }
                    break;
                    break;
            }
            }
        }
        }
        sql = " select count(id) from base_emergency_assistance_order  where patient='"+patient+"' and status="+ EmergencyAssistanceDO.Status.apply.getType();
        Integer counnt = jdbcTemplate.queryForObject(sql,Integer.class);
        if (counnt>0){
            result.put("emeAssistance",true);
        sql = " select count(id) from base_emergency_assistance_order  where patient='" + patient + "' and status=" + EmergencyAssistanceDO.Status.apply.getType();
        Integer counnt = jdbcTemplate.queryForObject(sql, Integer.class);
        if (counnt > 0) {
            result.put("emeAssistance", true);
        }
        }
        List<DevicePatientDevice> devices4 = patientDeviceDao.findByUserAndCategoryCode(patient,"4");//手表
        if (devices4.size()>0){
            result =  patientSignTopicInfo(result,patient,"preventLost",devices4.get(0).getDeviceSn(),true);
        List<DevicePatientDevice> devices4 = patientDeviceDao.findByUserAndCategoryCode(patient, "4");//手表
        if (devices4.size() > 0) {
            result = patientSignTopicInfo(result, patient, "preventLost", devices4.get(0).getDeviceSn(), true);
        }
        }
        patientSignTopicInfo(result,patient,"preventFall",null,true);
        patientSignTopicInfo(result, patient, "preventFall", null, true);
        return result;
        return result;
    }
    }
    public void preventLost(JSONObject result,String patient,String deviceSn){
    public void preventLost(JSONObject result, String patient, String deviceSn) {
        //手表与拐杖同时绑定时优先手表,围栏状态其中一个超出围栏即为超出围栏
        //手表与拐杖同时绑定时优先手表,围栏状态其中一个超出围栏即为超出围栏
        try {
        try {
            Integer categoryCode=0;//未指定设备
            Integer categoryCode = 0;//未指定设备
            List<DevicePatientDevice> devicePatientDeviceDos = new ArrayList<>();
            List<DevicePatientDevice> devicePatientDeviceDos = new ArrayList<>();
            List<DevicePatientDevice> devicePatientDeviceDos2 = new ArrayList<>();
            List<DevicePatientDevice> devicePatientDeviceDos2 = new ArrayList<>();
            if (StringUtils.isNotBlank(deviceSn)){//查看指定设备详情
            if (StringUtils.isNotBlank(deviceSn)) {//查看指定设备详情
                List<DevicePatientDevice> devices = patientDeviceDao.findByDeviceSn(deviceSn);
                List<DevicePatientDevice> devices = patientDeviceDao.findByDeviceSn(deviceSn);
                if (devices.size()>0){
                   String categoryCodeTmp = devices.get(0).getCategoryCode();
                    categoryCode = StringUtils.isBlank(categoryCodeTmp)?-1:Integer.parseInt(categoryCodeTmp);
                    if (4==categoryCode){
                if (devices.size() > 0) {
                    String categoryCodeTmp = devices.get(0).getCategoryCode();
                    categoryCode = StringUtils.isBlank(categoryCodeTmp) ? -1 : Integer.parseInt(categoryCodeTmp);
                    if (4 == categoryCode) {
                        devicePatientDeviceDos = devices;
                        devicePatientDeviceDos = devices;
                    }
                    }
                    if (16==categoryCode){
                    if (16 == categoryCode) {
                        devicePatientDeviceDos2 = devices;
                        devicePatientDeviceDos2 = devices;
                    }
                    }
                }
                }
            }else {//未指定设备
                devicePatientDeviceDos = patientDeviceDao.findByUserAndCategoryCode(patient,"4");//手表
                devicePatientDeviceDos2 = patientDeviceDao.findByUserAndCategoryCode(patient,"16");//拐杖
            } else {//未指定设备
                devicePatientDeviceDos = patientDeviceDao.findByUserAndCategoryCode(patient, "4");//手表
                devicePatientDeviceDos2 = patientDeviceDao.findByUserAndCategoryCode(patient, "16");//拐杖
            }
            }
            if (devicePatientDeviceDos.size()>0&&(4==categoryCode||0==categoryCode)){//手表
            if (devicePatientDeviceDos.size() > 0 && (4 == categoryCode || 0 == categoryCode)) {//手表
                DevicePatientDevice device = devicePatientDeviceDos.get(0);
                DevicePatientDevice device = devicePatientDeviceDos.get(0);
                result.put("deviceSn",device.getDeviceSn());
                JSONObject response= patientDeviceService.getAqgDeviceInfo2(device.getDeviceSn());
                if (response!=null){
                result.put("deviceSn", device.getDeviceSn());
                JSONObject response = patientDeviceService.getAqgDeviceInfo2(device.getDeviceSn());
                if (response != null) {
                    //定位信息
                    //定位信息
                    if (response.containsKey("last_location")&&response.get("last_location")!=null){
                    if (response.containsKey("last_location") && response.get("last_location") != null) {
                        JSONObject locationTmp = response.getJSONObject("last_location");
                        JSONObject locationTmp = response.getJSONObject("last_location");
                        Double lon = locationTmp.getJSONArray("coordinates").getDouble(0);
                        Double lon = locationTmp.getJSONArray("coordinates").getDouble(0);
                        Double lat = locationTmp.getJSONArray("coordinates").getDouble(1);
                        Double lat = locationTmp.getJSONArray("coordinates").getDouble(1);
                        if (!response.getBoolean("online")){//设备离线 取居民表定位
                            result.put("X1online",false);
                        }else {
                            result.put("X1online",true);
                        if (!response.getBoolean("online")) {//设备离线 取居民表定位
                            result.put("X1online", false);
                        } else {
                            result.put("X1online", true);
                        }
                        }
                        JSONObject tmp = gpsUtil.gcj02_To_Bd09(lat,lon);
                        tmp.put("city",response.getString("last_city"));
                        tmp.put("province",response.getString("last_province"));
                        tmp.put("address",response.getString("last_address"));
                        result.put("location",tmp);
                        JSONObject tmp = gpsUtil.gcj02_To_Bd09(lat, lon);
                        tmp.put("city", response.getString("last_city"));
                        tmp.put("province", response.getString("last_province"));
                        tmp.put("address", response.getString("last_address"));
                        result.put("location", tmp);
                        BasePatientDO patientDO = basePatientDao.findById(patient);
                        BasePatientDO patientDO = basePatientDao.findById(patient);
                        if (null != patientDO){
                            if (StringUtils.isNotBlank(patientDO.getHomeLatLon())){
                        if (null != patientDO) {
                            if (StringUtils.isNotBlank(patientDO.getHomeLatLon())) {
                                String homeLatLon = patientDO.getHomeLatLon();
                                String homeLatLon = patientDO.getHomeLatLon();
                                double homeLat = Double.parseDouble( homeLatLon.split(",")[0]);
                                double homeLon = Double.parseDouble( homeLatLon.split(",")[1]);
                                double homeDistance =  countDistance.getDistance(result.getJSONObject("location").getDouble("lat"),result.getJSONObject("location").getDouble("lon"),
                                       homeLat,homeLon);
                                if (homeDistance>50*1000){
                                    result.put("atHome",false);
                                }else {
                                    result.put("atHome",true);
                                double homeLat = Double.parseDouble(homeLatLon.split(",")[0]);
                                double homeLon = Double.parseDouble(homeLatLon.split(",")[1]);
                                double homeDistance = countDistance.getDistance(result.getJSONObject("location").getDouble("lat"), result.getJSONObject("location").getDouble("lon"),
                                        homeLat, homeLon);
                                if (homeDistance > 50 * 1000) {
                                    result.put("atHome", false);
                                } else {
                                    result.put("atHome", true);
                                }
                                }
                            }
                            }
                        }
                        }
                    }
                    }
                    //围栏信息
                    //围栏信息
                    if (response.containsKey("fences")&&response.get("fences")!=null){
                    if (response.containsKey("fences") && response.get("fences") != null) {
                        JSONArray fencesArr = response.getJSONArray("fences");
                        JSONArray fencesArr = response.getJSONArray("fences");
                        JSONArray fencesEnables = new JSONArray();
                        JSONArray fencesEnables = new JSONArray();
                        for (int i=0;i<fencesArr.size();i++){
                        for (int i = 0; i < fencesArr.size(); i++) {
                            JSONObject tmp = fencesArr.getJSONObject(i);
                            JSONObject tmp = fencesArr.getJSONObject(i);
                            if (tmp.getBooleanValue("enable")){//围栏生效
                            if (tmp.getBooleanValue("enable")) {//围栏生效
                                JSONObject fenceTmp = new JSONObject();
                                JSONObject fenceTmp = new JSONObject();
                                fenceTmp.put("fenceNO",tmp.getInteger("seqid").toString());
                                fenceTmp.put("name",tmp.getString("name"));
                                fenceTmp.put("fenceNO", tmp.getInteger("seqid").toString());
                                fenceTmp.put("name", tmp.getString("name"));
                                JSONArray fenceLocationTmp = tmp.getJSONObject("safe_area").getJSONArray("coordinates").getJSONArray(0);
                                JSONArray fenceLocationTmp = tmp.getJSONObject("safe_area").getJSONArray("coordinates").getJSONArray(0);
                                JSONArray fenceLocation = new JSONArray();
                                JSONArray fenceLocation = new JSONArray();
                                for (int j=0;j<fenceLocationTmp.size();j++){
                                for (int j = 0; j < fenceLocationTmp.size(); j++) {
                                    Double lon = fenceLocationTmp.getJSONArray(j).getDouble(0);
                                    Double lon = fenceLocationTmp.getJSONArray(j).getDouble(0);
                                    Double lat = fenceLocationTmp.getJSONArray(j).getDouble(1);
                                    Double lat = fenceLocationTmp.getJSONArray(j).getDouble(1);
                                    JSONObject positionTmp = gpsUtil.gcj02_To_Bd09(lat,lon);
                                    JSONObject positionTmp = gpsUtil.gcj02_To_Bd09(lat, lon);
                                    fenceLocation.add(positionTmp);
                                    fenceLocation.add(positionTmp);
                                }
                                }
                                fenceTmp.put("location",fenceLocation);
                                fenceTmp.put("inFenceStatus",countDistance.isInPolygon(result.getJSONObject("location").getDouble("lon"),result.getJSONObject("location").getDouble("lat"),fenceLocation));
                                fenceTmp.put("location", fenceLocation);
                                fenceTmp.put("inFenceStatus", countDistance.isInPolygon(result.getJSONObject("location").getDouble("lon"), result.getJSONObject("location").getDouble("lat"), fenceLocation));
                                fencesEnables.add(fenceTmp);
                                fencesEnables.add(fenceTmp);
                            }
                            }
                        }
                        }
                        if (fencesEnables.size()>0){
                            result.put("fences",fencesEnables);
                        if (fencesEnables.size() > 0) {
                            result.put("fences", fencesEnables);
                        }
                        }
                    }
                    }
                }
                }
            }
            }
            if (devicePatientDeviceDos2.size()>0&&(16==categoryCode||0==categoryCode)) {//拐杖
            if (devicePatientDeviceDos2.size() > 0 && (16 == categoryCode || 0 == categoryCode)) {//拐杖
                DevicePatientDevice deviceDO = devicePatientDeviceDos2.get(0);
                DevicePatientDevice deviceDO = devicePatientDeviceDos2.get(0);
                double dulat = 0l;
                double dulat = 0l;
                double dulon = 0l;
                double dulon = 0l;
@ -1741,8 +1766,8 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                }
                }
                if (!(dulat == 0.0 && dulon == 0.0)) {
                if (!(dulat == 0.0 && dulon == 0.0)) {
                    List<PatientSafeAreaDO> safeAreaDOS = safeAreaDao.findByPatient(deviceDO.getUser());
                    List<PatientSafeAreaDO> safeAreaDOS = safeAreaDao.findByPatient(deviceDO.getUser());
                    String safeArea=null;
                    if (safeAreaDOS.size()>0){
                    String safeArea = null;
                    if (safeAreaDOS.size() > 0) {
                        safeArea = safeAreaDOS.get(0).getSafeAreaGz();
                        safeArea = safeAreaDOS.get(0).getSafeAreaGz();
                    }
                    }
                    JSONArray fenceLocation = new JSONArray();
                    JSONArray fenceLocation = new JSONArray();
@ -1758,7 +1783,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                            positionTmp.put("lon", areaLon);
                            positionTmp.put("lon", areaLon);
                            fenceLocation.add(positionTmp);
                            fenceLocation.add(positionTmp);
                        }
                        }
                        if (devicePatientDeviceDos2.size() > 0 && 0 == categoryCode && devicePatientDeviceDos2.size()>0) {
                        if (devicePatientDeviceDos2.size() > 0 && 0 == categoryCode && devicePatientDeviceDos2.size() > 0) {
                            JSONObject obj = result.getJSONArray("fences").getJSONObject(0);
                            JSONObject obj = result.getJSONArray("fences").getJSONObject(0);
                            if (obj.getBooleanValue("inFenceStatus")) {
                            if (obj.getBooleanValue("inFenceStatus")) {
                                if (!countDistance.isInPolygon(dulon, dulat, fenceLocation)) {
                                if (!countDistance.isInPolygon(dulon, dulat, fenceLocation)) {
@ -1769,87 +1794,86 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                                    obj.put("lat", dulat);
                                    obj.put("lat", dulat);
                                }
                                }
                            }
                            }
                        }
                        else if(devicePatientDeviceDos2.size() > 0) {//指定拐杖设备
                        } else if (devicePatientDeviceDos2.size() > 0) {//指定拐杖设备
                            if (StringUtils.isNotBlank(safeArea)) {
                            if (StringUtils.isNotBlank(safeArea)) {
                                result.put("deviceSn", deviceDO.getDeviceSn());
                                result.put("deviceSn", deviceDO.getDeviceSn());
                                JSONObject location = new JSONObject();
                                JSONObject location = new JSONObject();
                                location.put("address",address);
                                location.put("province","");
                                location.put("city","");
                                location.put("lon",dulon);
                                location.put("lat",dulat);
                                result.put("location",location);
                                location.put("address", address);
                                location.put("province", "");
                                location.put("city", "");
                                location.put("lon", dulon);
                                location.put("lat", dulat);
                                result.put("location", location);
                                JSONArray fences = new JSONArray();
                                JSONArray fences = new JSONArray();
                                JSONObject fence = new JSONObject();
                                JSONObject fence = new JSONObject();
                                fence.put("fenceNO","1");
                                fence.put("name","安全区域1");
                                fence.put("fenceNO", "1");
                                fence.put("name", "安全区域1");
                                fence.put("inFenceStatus", countDistance.isInPolygon(dulon, dulat, fenceLocation));
                                fence.put("inFenceStatus", countDistance.isInPolygon(dulon, dulat, fenceLocation));
                                fence.put("location", fenceLocation);
                                fence.put("location", fenceLocation);
                                fences.add(fence);
                                fences.add(fence);
                                result.put("fences",fences);
                                result.put("fences", fences);
                            }
                            }
                        }
                        }
                    }
                    }
                }
                }
            }
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            e.printStackTrace();
            result.put("location",null);
            result.put("location", null);
        }
        }
    }
    }
    public void preventOutOfBed(JSONObject result,String patient,boolean video,String dayTime){
        List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByUserAndCategoryCode(patient,"13");
        if (devicePatientDeviceDos.size()==0){}
        else {
    public void preventOutOfBed(JSONObject result, String patient, boolean video, String dayTime) {
        List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByUserAndCategoryCode(patient, "13");
        if (devicePatientDeviceDos.size() == 0) {
        } else {
            DevicePatientDevice deviceDo = devicePatientDeviceDos.get(0);
            DevicePatientDevice deviceDo = devicePatientDeviceDos.get(0);
            JSONObject deviceInfo =  patientDeviceService.getSleepDeviceInfo(deviceDo.getDeviceSn());
            if(deviceInfo.getBooleanValue("success")){
                result.put("patientAddress",deviceDo.getSosAddress());
            JSONObject deviceInfo = patientDeviceService.getSleepDeviceInfo(deviceDo.getDeviceSn());
            if (deviceInfo.getBooleanValue("success")) {
                result.put("patientAddress", deviceDo.getSosAddress());
                JSONArray objInfo = deviceInfo.getJSONArray("objs");
                JSONArray objInfo = deviceInfo.getJSONArray("objs");
                if (objInfo.size()>0){
                    result.put("sleepStatus",true);
                if (objInfo.size() > 0) {
                    result.put("sleepStatus", true);
                    JSONObject tmp = objInfo.getJSONObject(0);
                    JSONObject tmp = objInfo.getJSONObject(0);
                    JSONObject sleepInfo = new JSONObject();
                    JSONObject sleepInfo = new JSONObject();
                    if (StringUtils.isBlank(dayTime)){
                        dayTime = getSleepMonitoringDay(new Date(),patient);
                    if (StringUtils.isBlank(dayTime)) {
                        dayTime = getSleepMonitoringDay(new Date(), patient);
                    }
                    }
                    List<BaseSleepPlanDetail> planDetails = sleepPlanDetailDao.findByPatientAndDay(patient,dayTime);
                    List<BaseSleepPlanDetail> planDetails = sleepPlanDetailDao.findByPatientAndDay(patient, dayTime);
                    BaseSleepPlanDetail planDetail = new BaseSleepPlanDetail();
                    BaseSleepPlanDetail planDetail = new BaseSleepPlanDetail();
                    if (planDetails.size()>0){
                        planDetail =  planDetails.get(0);
                        List<BaseSleepNightRecord> sleepNightRecordList = nightRecordDao.findByPatientAndDayOrderByCreateTimeDesc(patient,dayTime);
                    if (planDetails.size() > 0) {
                        planDetail = planDetails.get(0);
                        List<BaseSleepNightRecord> sleepNightRecordList = nightRecordDao.findByPatientAndDayOrderByCreateTimeDesc(patient, dayTime);
                        planDetail.setSleepNightRecordList(sleepNightRecordList);
                        planDetail.setSleepNightRecordList(sleepNightRecordList);
                    }
                    }
                    String jsonStr = JSON.toJSONStringWithDateFormat(planDetail, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue);
                    String jsonStr = JSON.toJSONStringWithDateFormat(planDetail, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue);
                    sleepInfo = JSONObject.parseObject(jsonStr);
                    sleepInfo = JSONObject.parseObject(jsonStr);
                    sleepInfo.put("day",dayTime);
                    sleepInfo.put("day", dayTime);
                    List<BaseSleepPlan> sleepPlans = sleepPlanDao.findByPatient(patient);
                    List<BaseSleepPlan> sleepPlans = sleepPlanDao.findByPatient(patient);
                    if (sleepPlans.size()>0){
                    if (sleepPlans.size() > 0) {
                        BaseSleepPlan sleepPlan = sleepPlans.get(0);
                        BaseSleepPlan sleepPlan = sleepPlans.get(0);
                        String endTime = DateUtil.getNextMin(sleepPlan.getGetUpTime(),-1);
                        sleepInfo.put("sleepPlan",true);
                        sleepInfo.put("getUpTime",sleepPlan.getGetUpTime());
                        sleepInfo.put("siestaTime",sleepPlan.getNapTime());
                        sleepInfo.put("nightRestTime",sleepPlan.getNightRestTime());
                        sleepInfo.put("nightRecordTime",sleepPlan.getNightRestTime()+"-隔日"+endTime);
                    }else {
                        sleepInfo.put("sleepPlan",false);
                        String endTime = DateUtil.getNextMin(sleepPlan.getGetUpTime(), -1);
                        sleepInfo.put("sleepPlan", true);
                        sleepInfo.put("getUpTime", sleepPlan.getGetUpTime());
                        sleepInfo.put("siestaTime", sleepPlan.getNapTime());
                        sleepInfo.put("nightRestTime", sleepPlan.getNightRestTime());
                        sleepInfo.put("nightRecordTime", sleepPlan.getNightRestTime() + "-隔日" + endTime);
                    } else {
                        sleepInfo.put("sleepPlan", false);
                    }
                    }
                    sleepInfo.put("online",tmp.getBooleanValue("online"));
                    if(tmp.getBooleanValue("onbed")){
                        sleepInfo.put("bedStatus",1);
                        sleepInfo.put("heartRate",tmp.getString("heartrate"));
                        sleepInfo.put("breath",tmp.getString("breathrate"));
                    }else {
                        sleepInfo.put("bedStatus",0);
                        sleepInfo.put("heartRate",null);
                        sleepInfo.put("breath",null);
                    sleepInfo.put("online", tmp.getBooleanValue("online"));
                    if (tmp.getBooleanValue("onbed")) {
                        sleepInfo.put("bedStatus", 1);
                        sleepInfo.put("heartRate", tmp.getString("heartrate"));
                        sleepInfo.put("breath", tmp.getString("breathrate"));
                    } else {
                        sleepInfo.put("bedStatus", 0);
                        sleepInfo.put("heartRate", null);
                        sleepInfo.put("breath", null);
                    }
                    }
                    BasePatientOutBed outBed = outBedDao.findByPatientAndDeviceSnAndStatus(patient,deviceDo.getDeviceSn(),0);
                    if (null!=outBed){
                    BasePatientOutBed outBed = outBedDao.findByPatientAndDeviceSnAndStatus(patient, deviceDo.getDeviceSn(), 0);
                    if (null != outBed) {
                        String outBedTime = "";
                        String outBedTime = "";
                        Date date = new Date();
                        Date date = new Date();
                        long millisecondsDiff = date.getTime() - outBed.getCreateTime().getTime();
                        long millisecondsDiff = date.getTime() - outBed.getCreateTime().getTime();
@ -1859,131 +1883,129 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                        if (hoursDiff > 0L) {
                        if (hoursDiff > 0L) {
                            outBedTime += String.format("%d小时", hoursDiff);
                            outBedTime += String.format("%d小时", hoursDiff);
                        }
                        }
                        if (minuteFieldDiff>0){
                            outBedTime +=String.format("%d分钟", minuteFieldDiff);
                        if (minuteFieldDiff > 0) {
                            outBedTime += String.format("%d分钟", minuteFieldDiff);
                        }
                        }
                        sleepInfo.put("outBedTimeCrzq",outBed.getCreateTime());
                        sleepInfo.put("outBedTime",outBedTime);
                    }else {
                        sleepInfo.put("outBedTime","无");
                        sleepInfo.put("outBedTimeCrzq", outBed.getCreateTime());
                        sleepInfo.put("outBedTime", outBedTime);
                    } else {
                        sleepInfo.put("outBedTime", "无");
                    }
                    }
                    result.put("sleepInfo",sleepInfo);
                    result.put("sleepInfo", sleepInfo);
                }
                }
            }else {
                result.put("sleepStatus",false);
                result.put("sleepInfo","获取睡眠带数据失败");
            } else {
                result.put("sleepStatus", false);
                result.put("sleepInfo", "获取睡眠带数据失败");
            }
            }
        }
        }
        if (video){
        if (video) {
            monitorInfo(result, patient);
            monitorInfo(result, patient);
        }
        }
    }
    }
    public void preventFire(JSONObject result,String patient,String deviceSn,boolean video){
    public void preventFire(JSONObject result, String patient, String deviceSn, boolean video) {
        String sql = "SELECT r.value from wlyy_patient_device pd,base_device_health_index r " +
        String sql = "SELECT r.value from wlyy_patient_device pd,base_device_health_index r " +
                "WHERE pd.device_sn = r.device_sn  ";
                "WHERE pd.device_sn = r.device_sn  ";
        if (StringUtils.isNotBlank(patient)){
            sql+=" and pd.`user` = '"+patient+"' ";
        if (StringUtils.isNotBlank(patient)) {
            sql += " and pd.`user` = '" + patient + "' ";
        }
        }
        if (StringUtils.isNotBlank(deviceSn)){
            sql+=" and  r.device_sn = '"+deviceSn+"' ";
        if (StringUtils.isNotBlank(deviceSn)) {
            sql += " and  r.device_sn = '" + deviceSn + "' ";
        }
        }
        sql += " and pd.category_code='15' ORDER BY r.create_time desc LIMIT 1";
        sql += " and pd.category_code='15' ORDER BY r.create_time desc LIMIT 1";
        List<Map<String,Object>> list1 = jdbcTemplate.queryForList(sql);
        if(list1.size()==0){
            result.put("smoke","-1");
        }else{
            result.put("smoke",list1.get(0).get("value"));
        List<Map<String, Object>> list1 = jdbcTemplate.queryForList(sql);
        if (list1.size() == 0) {
            result.put("smoke", "-1");
        } else {
            result.put("smoke", list1.get(0).get("value"));
        }
        }
        result.put("smokeOrderNum",getOrder(patient,"preventFire"));
        if (video){
        result.put("smokeOrderNum", getOrder(patient, "preventFire"));
        if (video) {
            monitorInfo(result, patient);
            monitorInfo(result, patient);
        }
        }
    }
    }
    public Integer getOrder(String patient,String topicItem){
    public Integer getOrder(String patient, String topicItem) {
        String sql = "select count(1) from base_security_monitoring_order " +
        String sql = "select count(1) from base_security_monitoring_order " +
                "WHERE patient = '"+patient+"' and `status` = 1 and topic_item = '"+topicItem+"'";
        Integer num = jdbcTemplate.queryForObject(sql,Integer.class);
                "WHERE patient = '" + patient + "' and `status` = 1 and topic_item = '" + topicItem + "'";
        Integer num = jdbcTemplate.queryForObject(sql, Integer.class);
        return num;
        return num;
    }
    }
    public void preventGasLeakage(JSONObject result,String patient,boolean video){
    public void preventGasLeakage(JSONObject result, String patient, boolean video) {
        String sql = "SELECT r.value from wlyy_patient_device pd,base_device_health_index r " +
        String sql = "SELECT r.value from wlyy_patient_device pd,base_device_health_index r " +
                "WHERE pd.device_sn = r.device_sn and pd.`user` = '"+patient+"' ";
                "WHERE pd.device_sn = r.device_sn and pd.`user` = '" + patient + "' ";
        sql += " and pd.category_code='14' ORDER BY r.create_time desc LIMIT 1";
        sql += " and pd.category_code='14' ORDER BY r.create_time desc LIMIT 1";
        List<Map<String,Object>> list1 = jdbcTemplate.queryForList(sql);
        if(list1.size()==0){
            result.put("methane","-1");
        }else{
            result.put("methane",list1.get(0).get("value"));
        List<Map<String, Object>> list1 = jdbcTemplate.queryForList(sql);
        if (list1.size() == 0) {
            result.put("methane", "-1");
        } else {
            result.put("methane", list1.get(0).get("value"));
        }
        }
        result.put("methaneOrderNum",getOrder(patient,"preventGasLeakage"));
        if (video){
        result.put("methaneOrderNum", getOrder(patient, "preventGasLeakage"));
        if (video) {
            monitorInfo(result, patient);
            monitorInfo(result, patient);
        }
        }
    }
    }
    public void monitorInfo(JSONObject result,String patient){
    public void monitorInfo(JSONObject result, String patient) {
        //监控
        //监控
        List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByUserAndCategoryCode(patient,"12");
        if (devicePatientDeviceDos.size()==0){
        List<DevicePatientDevice> devicePatientDeviceDos = patientDeviceDao.findByUserAndCategoryCode(patient, "12");
        if (devicePatientDeviceDos.size() == 0) {
            return;
            return;
        }
        }
        try {
        try {
            DevicePatientDevice deviceDo = devicePatientDeviceDos.get(0);
            DevicePatientDevice deviceDo = devicePatientDeviceDos.get(0);
            JSONObject monitorUrl = ysDeviceServicel.getDeviceLiveAddress(patient,deviceDo.getDeviceSn(),1,null);
            result.put("monitorInfoStatus",monitorUrl.getIntValue(ResponseContant.resultFlag));
            result.put("patientAddress",deviceDo.getSosAddress());
            if (monitorUrl.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail){
                result.put("monitorInfo",monitorUrl.getString(ResponseContant.resultMsg));
            JSONObject monitorUrl = ysDeviceServicel.getDeviceLiveAddress(patient, deviceDo.getDeviceSn(), 1, null);
            result.put("monitorInfoStatus", monitorUrl.getIntValue(ResponseContant.resultFlag));
            result.put("patientAddress", deviceDo.getSosAddress());
            if (monitorUrl.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                result.put("monitorInfo", monitorUrl.getString(ResponseContant.resultMsg));
            } else {
                result.put("monitorInfo", monitorUrl.getJSONObject(ResponseContant.resultMsg));
            }
            }
            else {
                result.put("monitorInfo",monitorUrl.getJSONObject(ResponseContant.resultMsg));
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
            e.printStackTrace();
        }
        }
    }
    }
    public JSONObject patientSignTopicInfo(JSONObject result,String patient,String topicItem,String deviceSn,boolean video){
        if (null==result){
    public JSONObject patientSignTopicInfo(JSONObject result, String patient, String topicItem, String deviceSn, boolean video) {
        if (null == result) {
            result = new JSONObject();
            result = new JSONObject();
        }
        }
        if ("preventLost".equals(topicItem)||StringUtils.isBlank(topicItem)){
            preventLost(result, patient,deviceSn);
        if ("preventLost".equals(topicItem) || StringUtils.isBlank(topicItem)) {
            preventLost(result, patient, deviceSn);
        }
        }
        if ("preventFall".equals(topicItem)||StringUtils.isBlank(topicItem)){
        if ("preventFall".equals(topicItem) || StringUtils.isBlank(topicItem)) {
            monitorInfo(result, patient);
            monitorInfo(result, patient);
        }
        }
        if ("preventOutOfBed".equals(topicItem)||StringUtils.isBlank(topicItem)){
            preventOutOfBed(result, patient,true,null);
        if ("preventOutOfBed".equals(topicItem) || StringUtils.isBlank(topicItem)) {
            preventOutOfBed(result, patient, true, null);
        }
        }
        if ("preventFire".equals(topicItem)||StringUtils.isBlank(topicItem)){
            preventFire(result, patient,null,video);
        if ("preventFire".equals(topicItem) || StringUtils.isBlank(topicItem)) {
            preventFire(result, patient, null, video);
        }
        }
        if ("preventGasLeakage".equals(topicItem)||StringUtils.isBlank(topicItem)){
            preventGasLeakage(result, patient,video);
        if ("preventGasLeakage".equals(topicItem) || StringUtils.isBlank(topicItem)) {
            preventGasLeakage(result, patient, video);
        }
        }
        return result;
        return result;
    }
    }
    public JSONObject updateDoctorLocation(String doctor,String orderId,String doctorAddress,String doctorLat,String doctorLon){
    public JSONObject updateDoctorLocation(String doctor, String orderId, String doctorAddress, String doctorLat, String doctorLon) {
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
        if (doctorDO==null){
        if (doctorDO == null) {
            String failMsg = "当前医生不存在";
            String failMsg = "当前医生不存在";
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultMsg,failMsg);
            result.put(ResponseContant.resultMsg, failMsg);
            return result;
            return result;
        }
        else {
        } else {
            doctorDO.setDoctorLocateAddress(doctorAddress);
            doctorDO.setDoctorLocateAddress(doctorAddress);
            doctorDO.setDoctorLat(doctorLat);
            doctorDO.setDoctorLat(doctorLat);
            doctorDO.setDoctorLon(doctorLon);
            doctorDO.setDoctorLon(doctorLon);
@ -1993,44 +2015,43 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        return result;
        return result;
    }
    }
    public JSONObject updatePatientLocation(String patient,String patientAddress,String patientLat,String patientLon){
    public JSONObject updatePatientLocation(String patient, String patientAddress, String patientLat, String patientLon) {
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
        BasePatientDO patientDO = basePatientDao.findById(patient);
        BasePatientDO patientDO = basePatientDao.findById(patient);
        if (patientDO==null){
        if (patientDO == null) {
            String failMsg = "患者不存在";
            String failMsg = "患者不存在";
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultMsg,failMsg);
            result.put(ResponseContant.resultMsg, failMsg);
            return result;
            return result;
        }
        }
        patientDO.setLatLon(patientLat+","+patientLon);
        patientDO.setLatLon(patientLat + "," + patientLon);
        basePatientDao.save(patientDO);
        basePatientDao.save(patientDO);
        List<SecurityMonitoringOrderDO> monitoringOrderDO = securityMonitoringOrderDao.findByPatientAndStatus(patient,1);
        if (monitoringOrderDO.size()>0){
            for (SecurityMonitoringOrderDO tmp:monitoringOrderDO){
        List<SecurityMonitoringOrderDO> monitoringOrderDO = securityMonitoringOrderDao.findByPatientAndStatus(patient, 1);
        if (monitoringOrderDO.size() > 0) {
            for (SecurityMonitoringOrderDO tmp : monitoringOrderDO) {
                tmp.setServeAddress(patientAddress);
                tmp.setServeAddress(patientAddress);
                tmp.setServeLat(patientLat);
                tmp.setServeLat(patientLat);
                tmp.setServeLon(patientLon);
                tmp.setServeLon(patientLon);
                securityMonitoringOrderDao.save(monitoringOrderDO);
                securityMonitoringOrderDao.save(monitoringOrderDO);
            }
            }
            result.put(ResponseContant.resultFlag, ResponseContant.success);
            result.put(ResponseContant.resultFlag, ResponseContant.success);
        }
        else {
        } else {
            result.put(ResponseContant.resultFlag, ResponseContant.success);
            result.put(ResponseContant.resultFlag, ResponseContant.success);
            result.put(ResponseContant.resultMsg,null);
            result.put(ResponseContant.resultMsg, null);
        }
        }
        return result;
        return result;
    }
    }
    public JSONObject responseOrder(String orderId,String doctor){
    public JSONObject responseOrder(String orderId, String doctor) {
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
        SecurityMonitoringOrderDO one = securityMonitoringOrderDao.findOne(orderId);
        SecurityMonitoringOrderDO one = securityMonitoringOrderDao.findOne(orderId);
        if (one==null){
            String failMsg = "工单不存在" ;
        if (one == null) {
            String failMsg = "工单不存在";
            result.put("resultFlag", 0);
            result.put("resultFlag", 0);
            result.put("resultMsg", failMsg);
            result.put("resultMsg", failMsg);
            return result;
            return result;
        }
        }
        if (emergencyWarnDoctorResponseDao.findByDoctorAndOrderId(doctor,orderId)==null){
        if (emergencyWarnDoctorResponseDao.findByDoctorAndOrderId(doctor, orderId) == null) {
            EmergencyWarnDoctorResponseDO responseDO = new EmergencyWarnDoctorResponseDO();
            EmergencyWarnDoctorResponseDO responseDO = new EmergencyWarnDoctorResponseDO();
            responseDO.setOrderId(orderId);
            responseDO.setOrderId(orderId);
            responseDO.setDoctor(doctor);
            responseDO.setDoctor(doctor);
@ -2038,14 +2059,14 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
            emergencyWarnDoctorResponseDao.save(responseDO);
            emergencyWarnDoctorResponseDao.save(responseDO);
            BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
            BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
            if (null!=doctorDO){
            if (null != doctorDO) {
                BaseEmergencyWarnLogDO logDO = new BaseEmergencyWarnLogDO();
                BaseEmergencyWarnLogDO logDO = new BaseEmergencyWarnLogDO();
                logDO.setUserCode(doctor);
                logDO.setUserCode(doctor);
                logDO.setUserName(doctorDO.getName());
                logDO.setUserName(doctorDO.getName());
                logDO.setOrderId(orderId);
                logDO.setOrderId(orderId);
                logDO.setUserType(2);
                logDO.setUserType(2);
                logDO.setCreateTime(new Date());
                logDO.setCreateTime(new Date());
                logDO.setContent("社工"+doctorDO.getName()+"前往定位");
                logDO.setContent("社工" + doctorDO.getName() + "前往定位");
                logDao.save(logDO);
                logDao.save(logDO);
            }
            }
        }
        }
@ -2056,70 +2077,70 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
    }
    }
    /**
    /**
     *获取居民睡眠计划
     * 获取居民睡眠计划
     */
     */
    public BaseSleepPlan getPatientSleepPlan(String patient){
    public BaseSleepPlan getPatientSleepPlan(String patient) {
        List<BaseSleepPlan> list = sleepPlanDao.findByPatient(patient);
        List<BaseSleepPlan> list = sleepPlanDao.findByPatient(patient);
        if (list.size()>0){
        if (list.size() > 0) {
            return list.get(0);
            return list.get(0);
        }else {
        } else {
            return null;
            return null;
        }
        }
    }
    }
    /**
    /**
     *获取居民睡眠监护列表
     * 获取居民睡眠监护列表
     */
     */
    public JSONObject getPatientSleepDetainList(String patient,String begin,String end,Integer page,Integer pageSize){
        page=page>0?page-1:0;
    public JSONObject getPatientSleepDetainList(String patient, String begin, String end, Integer page, Integer pageSize) {
        page = page > 0 ? page - 1 : 0;
        PageRequest pageRequest = new PageRequest(page, pageSize);
        PageRequest pageRequest = new PageRequest(page, pageSize);
        if (StringUtils.isBlank(end)){
        if (StringUtils.isBlank(end)) {
            end = begin;
            end = begin;
        }
        }
        JSONArray array = new JSONArray();
        JSONArray array = new JSONArray();
        Page<BaseSleepPlanDetail> list = sleepPlanDetailDao.findByListByPage(patient,begin,end,pageRequest);
        Page<BaseSleepPlanDetail> list = sleepPlanDetailDao.findByListByPage(patient, begin, end, pageRequest);
        List<BaseSleepPlan> sleepPlans = sleepPlanDao.findByPatient(patient);
        List<BaseSleepPlan> sleepPlans = sleepPlanDao.findByPatient(patient);
        BaseSleepPlan sleepPlan=null;
        if (sleepPlans.size()>0){
        BaseSleepPlan sleepPlan = null;
        if (sleepPlans.size() > 0) {
            sleepPlan = sleepPlans.get(0);
            sleepPlan = sleepPlans.get(0);
        }
        }
        for (BaseSleepPlanDetail tmp:list){
            List<BaseSleepNightRecord> records = nightRecordDao.findByPatientAndDayOrderByCreateTimeDesc(patient,tmp.getDay());
        for (BaseSleepPlanDetail tmp : list) {
            List<BaseSleepNightRecord> records = nightRecordDao.findByPatientAndDayOrderByCreateTimeDesc(patient, tmp.getDay());
            tmp.setSleepNightRecordList(records);
            tmp.setSleepNightRecordList(records);
            String str = JSON.toJSONStringWithDateFormat(tmp, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue);
            String str = JSON.toJSONStringWithDateFormat(tmp, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue);
            JSONObject jsonObject = JSONObject.parseObject(str);
            JSONObject jsonObject = JSONObject.parseObject(str);
            if (null==sleepPlan){
                jsonObject.put("sleepPlan",false);
            }else {
                jsonObject.put("sleepPlan",true);
                String endTime = DateUtil.getNextMin(sleepPlan.getGetUpTime(),-1);
                jsonObject.put("getUpTime",sleepPlan.getGetUpTime());
                jsonObject.put("siestaTime",sleepPlan.getNapTime());
                jsonObject.put("nightRestTime",sleepPlan.getNightRestTime());
                jsonObject.put("nightRecordTime",sleepPlan.getNightRestTime()+"-隔日"+endTime);
            if (null == sleepPlan) {
                jsonObject.put("sleepPlan", false);
            } else {
                jsonObject.put("sleepPlan", true);
                String endTime = DateUtil.getNextMin(sleepPlan.getGetUpTime(), -1);
                jsonObject.put("getUpTime", sleepPlan.getGetUpTime());
                jsonObject.put("siestaTime", sleepPlan.getNapTime());
                jsonObject.put("nightRestTime", sleepPlan.getNightRestTime());
                jsonObject.put("nightRecordTime", sleepPlan.getNightRestTime() + "-隔日" + endTime);
                array.add(jsonObject);
                array.add(jsonObject);
            }
            }
        }
        }
        JSONObject result = (JSONObject) JSONObject.toJSON(list);
        JSONObject result = (JSONObject) JSONObject.toJSON(list);
        result.put("content",array);
        result.put("content", array);
        return result;
        return result;
    }
    }
    /**
    /**
     *获取居民起夜记录
     * 获取居民起夜记录
     */
     */
    public List<BaseSleepNightRecord> getPatientSleepNightRecord(String patient, String day){
    public List<BaseSleepNightRecord> getPatientSleepNightRecord(String patient, String day) {
        List<BaseSleepNightRecord> records = nightRecordDao.findByPatientAndDayOrderByCreateTimeDesc(patient,day);
        List<BaseSleepNightRecord> records = nightRecordDao.findByPatientAndDayOrderByCreateTimeDesc(patient, day);
        return records;
        return records;
    }
    }
    private String getRandomIntStr(){
    private String getRandomIntStr() {
        Random rand = new Random();
        Random rand = new Random();
        int i = rand.nextInt(); //int范围类的随机数
        int i = rand.nextInt(); //int范围类的随机数
        i = rand.nextInt(100); //生成0-100以内的随机数
        i = rand.nextInt(100); //生成0-100以内的随机数
        i = (int)(Math.random() * 100000000); //0-100以内的随机数,用Matn.random()方式
        i = (int) (Math.random() * 100000000); //0-100以内的随机数,用Matn.random()方式
        return String.valueOf(i);
        return String.valueOf(i);
    }
    }
@ -2129,98 +2150,98 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        one.setUpdateUserName(one.getDoctorName());
        one.setUpdateUserName(one.getDoctorName());
    }
    }
    private String getSleepMonitoringDay(Date date,String patient){
    private String getSleepMonitoringDay(Date date, String patient) {
        List<BaseSleepPlan> sleepPlans = sleepPlanDao.findByPatient(patient);
        List<BaseSleepPlan> sleepPlans = sleepPlanDao.findByPatient(patient);
        if (sleepPlans.size()>0){
        if (sleepPlans.size() > 0) {
            BaseSleepPlan sleepPlan = sleepPlans.get(0);
            BaseSleepPlan sleepPlan = sleepPlans.get(0);
            String bedUpStr = sleepPlans.get(0).getGetUpTime();
            String bedUpStr = sleepPlans.get(0).getGetUpTime();
            Date bedUp = DateUtil.strToDate(DateUtil.getStringDateShort()+" "+bedUpStr+":00");// 起床时间 起床前一小时内算为起床
            if (date.before(bedUp)&&bedUp.getTime()-date.getTime()>1000*1*3600){
                bedUp = DateUtil.getNextDay1(bedUp,-1);
            Date bedUp = DateUtil.strToDate(DateUtil.getStringDateShort() + " " + bedUpStr + ":00");// 起床时间 起床前一小时内算为起床
            if (date.before(bedUp) && bedUp.getTime() - date.getTime() > 1000 * 1 * 3600) {
                bedUp = DateUtil.getNextDay1(bedUp, -1);
            }
            }
            String dayTime = DateUtil.dateToStr(bedUp,DateUtil.YYYY_MM_DD);//监测日期
            String dayTime = DateUtil.dateToStr(bedUp, DateUtil.YYYY_MM_DD);//监测日期
            return dayTime;
            return dayTime;
        }else {
        } else {
            return null;
            return null;
        }
        }
    }
    }
    public JSONObject findMonitorPatientsByDoctor(String doctor,String topicItem,String day,Integer page,Integer pageSize,Integer detail){
    public JSONObject findMonitorPatientsByDoctor(String doctor, String topicItem, String day, Integer page, Integer pageSize, Integer detail) {
        JSONObject result = new JSONObject();
        JSONObject result = new JSONObject();
        String sql = " SELECT DISTINCT p.id,p.name,p.residential_area residentialArea,p.photo,p.idcard,p.mobile, " +
        String sql = " SELECT DISTINCT p.id,p.name,p.residential_area residentialArea,p.photo,p.idcard,p.mobile, " +
                " p.openid,p.sex,p.pad_imei padImei " +
                " p.openid,p.sex,p.pad_imei padImei " +
                " from base_patient p , base_service_package_sign_record sr,base_service_package_record r,base_team_member m  " +
                " from base_patient p , base_service_package_sign_record sr,base_service_package_record r,base_team_member m  " +
                " WHERE p.id = sr.patient and sr.status=1 and m.team_code = r.team_code and sr.id=r.sign_id  " +
                " WHERE p.id = sr.patient and sr.status=1 and m.team_code = r.team_code and sr.id=r.sign_id  " +
                " and m.doctor_code = '"+doctor+"' and m.del = '1' ";
                " and m.doctor_code = '" + doctor + "' and m.del = '1' ";
        String fliter = "";
        String fliter = "";
        String categoryCode ="";
        String categoryCode = "";
        String topicItemTmp = topicItem;
        String topicItemTmp = topicItem;
        switch (topicItem){
        switch (topicItem) {
            case "actionTrack":
            case "actionTrack":
                categoryCode="'4'";
                topicItemTmp="preventLost";
                categoryCode = "'4'";
                topicItemTmp = "preventLost";
                break;
                break;
            case "preventLost":
            case "preventLost":
                categoryCode="'4'";
                categoryCode = "'4'";
                break;
                break;
            case "preventFall":
            case "preventFall":
                categoryCode="'12'";
                categoryCode = "'12'";
                break;
                break;
            case "preventFire":
            case "preventFire":
                categoryCode="'15'";
                categoryCode = "'15'";
                break;
                break;
            case "preventGasLeakage":
            case "preventGasLeakage":
                categoryCode="'14'";
                categoryCode = "'14'";
                break;
                break;
            case "preventOutOfBed":
            case "preventOutOfBed":
                categoryCode="'13'";
                categoryCode = "'13'";
                break;
                break;
        }
        }
        fliter =" and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id  " +
                    " where  pd.user = sr.patient and pd.del=0 and pd.category_code in ("+categoryCode+") and FIND_IN_SET('"+topicItemTmp+"',dd.service_topic)) ";
        fliter = " and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id  " +
                " where  pd.user = sr.patient and pd.del=0 and pd.category_code in (" + categoryCode + ") and FIND_IN_SET('" + topicItemTmp + "',dd.service_topic)) ";
        if ("preventLost".equals(topicItem)){//有绑定围栏的居民
        if ("preventLost".equals(topicItem)) {//有绑定围栏的居民
            fliter += " and EXISTS (select 1 from wlyy_patient_safe_area sf where sf.patient = p.id and sf.del=1 and sf.manage_status=1) ";
            fliter += " and EXISTS (select 1 from wlyy_patient_safe_area sf where sf.patient = p.id and sf.del=1 and sf.manage_status=1) ";
        }
        }
        List<Map<String,Object>> list =  jdbcTemplate.queryForList(sql+fliter);
        result.put("total",list.size());
        if (1 == detail){//获取详情
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql + fliter);
        result.put("total", list.size());
        if (1 == detail) {//获取详情
            JSONArray monitorInfos = new JSONArray();
            JSONArray monitorInfos = new JSONArray();
            page = page>0?page-1:0;
            page = page > 0 ? page - 1 : 0;
            Integer totalPage = 0;
            Integer totalPage = 0;
            if(list.size()%pageSize==0){
                totalPage =list.size()/pageSize;
            }else{
                totalPage = list.size()/pageSize+1;
            if (list.size() % pageSize == 0) {
                totalPage = list.size() / pageSize;
            } else {
                totalPage = list.size() / pageSize + 1;
            }
            }
            Integer currentIndexFrom = page*pageSize;
            Integer currentIndexEnd = page*pageSize+pageSize;
            result.put("totalPage",totalPage);
            result.put("currentPage",page+1);
            for (int i=currentIndexFrom;i<list.size()&&i<currentIndexEnd;i++){
                Map<String,Object> patientTmp = list.get(i);
            Integer currentIndexFrom = page * pageSize;
            Integer currentIndexEnd = page * pageSize + pageSize;
            result.put("totalPage", totalPage);
            result.put("currentPage", page + 1);
            for (int i = currentIndexFrom; i < list.size() && i < currentIndexEnd; i++) {
                Map<String, Object> patientTmp = list.get(i);
                com.alibaba.fastjson.JSONObject object = new com.alibaba.fastjson.JSONObject();
                com.alibaba.fastjson.JSONObject object = new com.alibaba.fastjson.JSONObject();
                String deviceSn ="";
                String deviceSn = "";
                List<String> deviceSns = jdbcTemplate.queryForList("select pd.device_sn from wlyy_patient_device pd INNER JOIN dm_device dd " +
                List<String> deviceSns = jdbcTemplate.queryForList("select pd.device_sn from wlyy_patient_device pd INNER JOIN dm_device dd " +
                        " on pd.device_id = dd.id where  pd.user = '"+patientTmp.get("id").toString()+"' and pd.del=0  and pd.category_code in ("+categoryCode+") and FIND_IN_SET('"+topicItemTmp+"',dd.service_topic)",String.class);
                if (deviceSns.size()>0){
                        " on pd.device_id = dd.id where  pd.user = '" + patientTmp.get("id").toString() + "' and pd.del=0  and pd.category_code in (" + categoryCode + ") and FIND_IN_SET('" + topicItemTmp + "',dd.service_topic)", String.class);
                if (deviceSns.size() > 0) {
                    deviceSn = deviceSns.get(0);
                    deviceSn = deviceSns.get(0);
                }
                }
                if (deviceSns.size()>0){
                if (deviceSns.size() > 0) {
                    deviceSn = deviceSns.get(0);
                    deviceSn = deviceSns.get(0);
                }
                }
                object.put("deviceCode",deviceSn);
                object.put("deviceCode", deviceSn);
                switch (topicItem){
                switch (topicItem) {
                    case "actionTrack":
                    case "actionTrack":
                        JSONArray locations = JSON.parseArray(JSON.toJSONString(patientDeviceService.getX1Locations(deviceSn, day), SerializerFeature.WriteMapNullValue));
                        JSONArray locations = JSON.parseArray(JSON.toJSONString(patientDeviceService.getX1Locations(deviceSn, day), SerializerFeature.WriteMapNullValue));
                        object.put("routes", locations);
                        object.put("routes", locations);
                        //获取手表定位
                        //获取手表定位
                        JSONObject response= patientDeviceService.getAqgDeviceInfo2(deviceSn);
                        if (response!=null) {
                        JSONObject response = patientDeviceService.getAqgDeviceInfo2(deviceSn);
                        if (response != null) {
                            //定位信息
                            //定位信息
                            if (response.containsKey("last_location") && response.get("last_location") != null) {
                            if (response.containsKey("last_location") && response.get("last_location") != null) {
                                JSONObject locationTmp = response.getJSONObject("last_location");
                                JSONObject locationTmp = response.getJSONObject("last_location");
@ -2240,31 +2261,192 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                        }
                        }
                        break;
                        break;
                    default:
                    default:
                        object = patientMonitoringInfo(patientTmp.get("id").toString(),topicItem,false);
                        object = patientMonitoringInfo(patientTmp.get("id").toString(), topicItem, false);
                        break;
                        break;
                }
                }
                object.put("patientInfo",patientTmp);
                object.put("patientInfo", patientTmp);
                monitorInfos.add(object);
                monitorInfos.add(object);
            }
            }
            result.put("topicInfo",monitorInfos);
        }else {
            result.put("topicInfo", monitorInfos);
        } else {
            JSONArray monitorInfos = new JSONArray();
            JSONArray monitorInfos = new JSONArray();
            for (int i=0;i<list.size();i++){
                Map<String,Object> patientTmp = list.get(i);
                String deviceSn ="";
            for (int i = 0; i < list.size(); i++) {
                Map<String, Object> patientTmp = list.get(i);
                String deviceSn = "";
                List<String> deviceSns = jdbcTemplate.queryForList("select pd.device_sn from wlyy_patient_device pd INNER JOIN dm_device dd " +
                List<String> deviceSns = jdbcTemplate.queryForList("select pd.device_sn from wlyy_patient_device pd INNER JOIN dm_device dd " +
                        " on pd.device_id = dd.id where  pd.user = '"+patientTmp.get("id").toString()+"' and pd.del=0  and pd.category_code in ("+categoryCode+") and FIND_IN_SET('"+topicItem+"',dd.service_topic)",String.class);
                if (deviceSns.size()>0){
                        " on pd.device_id = dd.id where  pd.user = '" + patientTmp.get("id").toString() + "' and pd.del=0  and pd.category_code in (" + categoryCode + ") and FIND_IN_SET('" + topicItem + "',dd.service_topic)", String.class);
                if (deviceSns.size() > 0) {
                    deviceSn = deviceSns.get(0);
                    deviceSn = deviceSns.get(0);
                }
                }
                JSONObject object  = patientMonitoringInfo(patientTmp.get("id").toString(),"null",false);
                object.put("deviceSn",deviceSn);
                object.put("patientInfo",patientTmp);
                JSONObject object = patientMonitoringInfo(patientTmp.get("id").toString(), "null", false);
                object.put("deviceSn", deviceSn);
                object.put("patientInfo", patientTmp);
                monitorInfos.add(object);
                monitorInfos.add(object);
            }
            }
            result.put("topicInfo",monitorInfos);
            result.put("topicInfo", monitorInfos);
        }
        }
        return result;
        return result;
    }
    }
    public JSONObject findMonitorPatientsByDoctors(String topicItem, String day, Integer page, Integer pageSize, Integer detail) {
        JSONObject result = new JSONObject();
        String sql = " SELECT DISTINCT p.id,p.name,p.residential_area residentialArea,p.photo,p.idcard,p.mobile, " +
                " p.openid,p.sex,p.pad_imei padImei,p.home_lat_lon homeLatLon,p.lat_lon latLon " +
                " from base_patient p , base_service_package_sign_record sr,base_service_package_record r,base_team_member m  " +
                " WHERE p.id = sr.patient and sr.status=1 and m.team_code = r.team_code and sr.id=r.sign_id  " +
                " and m.del = '1' ";
        String fliter = "";
        String categoryCode = "";
        String topicItemTmp = topicItem;
        switch (topicItem) {
            case "actionTrack":
                categoryCode = "'4'";
                topicItemTmp = "preventLost";
                break;
            case "preventLost":
                categoryCode = "'4'";
                break;
            case "preventFall":
                categoryCode = "'12'";
                break;
            case "preventFire":
                categoryCode = "'15'";
                break;
            case "preventGasLeakage":
                categoryCode = "'14'";
                break;
            case "preventOutOfBed":
                categoryCode = "'13'";
                break;
            case "emergencyAssistance":
                categoryCode = "'7'";
                break;
        }
        if ("emergencyAssistance".equals(topicItem)) {
            fliter = " and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id  " +
                    " where  pd.user = sr.patient and pd.del=0 and pd.category_code in ('7','4')) ";
        } else {
            fliter = " and EXISTS (select 1 from wlyy_patient_device pd INNER JOIN dm_device dd on pd.device_id = dd.id  " +
                    " where  pd.user = sr.patient and pd.del=0 and pd.category_code in (" + categoryCode + ") and FIND_IN_SET('" + topicItemTmp + "',dd.service_topic)) ";
        }
        if ("preventLost".equals(topicItem)) {//有绑定围栏的居民
            fliter += " and EXISTS (select 1 from wlyy_patient_safe_area sf where sf.patient = p.id and sf.del=1 and sf.manage_status=1) ";
        }
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql + fliter);
        result.put("total", list.size());
        if (1 == detail) {//获取详情
            JSONArray monitorInfos = new JSONArray();
            page = page > 0 ? page - 1 : 0;
            Integer totalPage = 0;
            if (list.size() % pageSize == 0) {
                totalPage = list.size() / pageSize;
            } else {
                totalPage = list.size() / pageSize + 1;
            }
            Integer currentIndexFrom = page * pageSize;
            Integer currentIndexEnd = page * pageSize + pageSize;
            result.put("totalPage", totalPage);
            result.put("currentPage", page + 1);
            for (int i = currentIndexFrom; i < list.size() && i < currentIndexEnd; i++) {
                Map<String, Object> patientTmp = list.get(i);
                com.alibaba.fastjson.JSONObject object = new com.alibaba.fastjson.JSONObject();
                String deviceSn = "";
                List<String> deviceSns = jdbcTemplate.queryForList("select pd.device_sn from wlyy_patient_device pd INNER JOIN dm_device dd " +
                        " on pd.device_id = dd.id where  pd.user = '" + patientTmp.get("id").toString() + "' and pd.del=0  and pd.category_code in (" + categoryCode + ") and FIND_IN_SET('" + topicItemTmp + "',dd.service_topic)", String.class);
                if (deviceSns.size() > 0) {
                    deviceSn = deviceSns.get(0);
                }
                if (deviceSns.size() > 0) {
                    deviceSn = deviceSns.get(0);
                }
                object.put("deviceCode", deviceSn);
                switch (topicItem) {
                    case "actionTrack":
                        JSONArray locations = JSON.parseArray(JSON.toJSONString(patientDeviceService.getX1Locations(deviceSn, day), SerializerFeature.WriteMapNullValue));
                        object.put("routes", locations);
                        //获取手表定位
                        JSONObject response = patientDeviceService.getAqgDeviceInfo2(deviceSn);
                        if (response != null) {
                            //定位信息
                            if (response.containsKey("last_location") && response.get("last_location") != null) {
                                JSONObject locationTmp = response.getJSONObject("last_location");
                                Double lon = locationTmp.getJSONArray("coordinates").getDouble(0);
                                Double lat = locationTmp.getJSONArray("coordinates").getDouble(1);
                                if (!response.getBoolean("online")) {//设备离线 取居民表定位
                                    object.put("X1online", false);
                                } else {
                                    object.put("X1online", true);
                                }
                                JSONObject tmp = gpsUtil.gcj02_To_Bd09(lat, lon);
                                tmp.put("city", response.getString("last_city"));
                                tmp.put("province", response.getString("last_province"));
                                tmp.put("address", response.getString("last_address"));
                                object.put("location", tmp);
                            }
                        }
                        break;
                    case "emergencyAssistance":
                        String id = (String) list.get(i).get("id");
                        String residentialArea = (String) list.get(i).get("residentialArea");
                        String SoSDeviceSql = "SELECT count(*)  FROM base_emergency_assistance_order WHERE `status` = '1' AND patient = '" + id + "'";
                        Integer integer = jdbcTemplate.queryForObject(SoSDeviceSql, int.class);
                        JSONObject tmp = new JSONObject();
                        if (integer > 0) {
                            tmp.put("eCall", 1);
                        } else {
                            tmp.put("eCall", 0);
                        }
                        BasePatientDO patientDO = basePatientDao.findById(id);
                        if (null != patientDO) {
                            if (StringUtils.isNotBlank(patientDO.getHomeLatLon())) {
                                String homeLatLon = patientDO.getHomeLatLon();
                                double homeLat = Double.parseDouble(homeLatLon.split(",")[0]);
                                double homeLon = Double.parseDouble(homeLatLon.split(",")[1]);
                                if (StringUtils.isNotBlank(patientDO.getLatLon())) {
                                    String[] latLon = patientDO.getLatLon().toString().split(",");
                                    double homeDistance = countDistance.getDistance(Double.parseDouble(latLon[0]), Double.parseDouble(latLon[1]),
                                            homeLat, homeLon);
                                    if (homeDistance > 50 * 1000) {
                                        tmp.put("atHome", false);
                                    } else {
                                        tmp.put("atHome", true);
                                    }
                                }
                            }
                        }
                        object.put("info", tmp);
                        break;
                    default:
                        object = patientMonitoringInfo(patientTmp.get("id").toString(), topicItem, false);
                        break;
                }
                object.put("patientInfo", patientTmp);
                monitorInfos.add(object);
            }
            result.put("topicInfo", monitorInfos);
        } else {
            JSONArray monitorInfos = new JSONArray();
            for (int i = 0; i < list.size(); i++) {
                Map<String, Object> patientTmp = list.get(i);
                String deviceSn = "";
                List<String> deviceSns = jdbcTemplate.queryForList("select pd.device_sn from wlyy_patient_device pd INNER JOIN dm_device dd " +
                        " on pd.device_id = dd.id where  pd.user = '" + patientTmp.get("id").toString() + "' and pd.del=0  and pd.category_code in (" + categoryCode + ") and FIND_IN_SET('" + topicItem + "',dd.service_topic)", String.class);
                if (deviceSns.size() > 0) {
                    deviceSn = deviceSns.get(0);
                }
                JSONObject object = patientMonitoringInfo(patientTmp.get("id").toString(), "null", false);
                object.put("deviceSn", deviceSn);
                object.put("patientInfo", patientTmp);
                monitorInfos.add(object);
            }
            result.put("topicInfo", monitorInfos);
        }
        return result;
    }
}
}

+ 11 - 3
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/DetectionPlatformService.java

@ -533,15 +533,24 @@ public class DetectionPlatformService  {
        return object;
        return object;
    }
    }
    public List<Map<String,Object >> findSignOlder(String doctorId){
    public List<Map<String,Object >> findSignOlder(){
        String sql=  "SELECT p.id,p.name,p.photo,p.idcard,CAST(IFNULL(p.birthday,'') AS char ) birthday,p.residential_area residentialArea,p.sex, " +
        String sql=  "SELECT p.id,p.name,p.photo,p.idcard,CAST(IFNULL(p.birthday,'') AS char ) birthday,p.residential_area residentialArea,p.sex, " +
                " p.ykt_id yktId, case 1 WHEN p.openid is not null then 1 WHEN p.on_line = '1' then 1 ELSE 0 end as online,IFNULL(p.sign_status,0) signStatus "+
                " p.ykt_id yktId, case 1 WHEN p.openid is not null then 1 WHEN p.on_line = '1' then 1 ELSE 0 end as online,IFNULL(p.sign_status,0) signStatus "+
                " from base_service_package_sign_record sr,base_patient p,base_service_package_record r,base_team_member m " +
                " from base_service_package_sign_record sr,base_patient p,base_service_package_record r,base_team_member m " +
                "WHERE sr.status=1 and sr.patient = p.id and m.team_code = r.team_code and sr.id=r.sign_id " +
                "WHERE sr.status=1 and sr.patient = p.id and m.team_code = r.team_code and sr.id=r.sign_id " +
                "and m.doctor_code = '"+doctorId+"' and m.del = '1' and  p.del = '1' " +
                " and m.del = '1' and  p.del = '1' " +
                " GROUP BY p.id,p.name,p.photo,p.idcard,p.birthday,p.residential_area,p.sex,p.ykt_id,online,signStatus" +
                " GROUP BY p.id,p.name,p.photo,p.idcard,p.birthday,p.residential_area,p.sex,p.ykt_id,online,signStatus" +
                " ORDER BY online desc,p.ykt_id desc,signStatus desc ";
                " ORDER BY online desc,p.ykt_id desc,signStatus desc ";
        /*String sql=  "SELECT p.id,p.name,p.photo,p.idcard,CAST(IFNULL(p.birthday,'') AS char ) birthday,p.residential_area residentialArea,p.sex, " +
                " p.ykt_id yktId, case 1 WHEN p.openid is not null then 1 WHEN p.on_line = '1' then 1 ELSE 0 end as online,IFNULL(p.sign_status,0) signStatus "+
                " from base_service_package_sign_record sr,base_patient p,base_service_package_record r,base_team_member m " +
                "WHERE sr.status=1 and sr.patient = p.id and m.team_code = r.team_code and sr.id=r.sign_id " +
                "and m.doctor_code = '"+doctorId+"' and m.del = '1' and  p.del = '1' " +
                " GROUP BY p.id,p.name,p.photo,p.idcard,p.birthday,p.residential_area,p.sex,p.ykt_id,online,signStatus" +
                " ORDER BY online desc,p.ykt_id desc,signStatus desc ";*/
//        String sql = "SELECT DISTINCT p.id,p.name,p.photo,p.idcard,p.mobile,p.openid,p.sex,p.pad_imei padImei,p.residential_area residentialArea  " +
//        String sql = "SELECT DISTINCT p.id,p.name,p.photo,p.idcard,p.mobile,p.openid,p.sex,p.pad_imei padImei,p.residential_area residentialArea  " +
//                " from base_service_package_sign_record sr,base_patient p,base_service_package_record r,base_team_member m " +
//                " from base_service_package_sign_record sr,base_patient p,base_service_package_record r,base_team_member m " +
//                "WHERE sr.status=1 and sr.patient = p.id and m.team_code = r.team_code and sr.id=r.sign_id " +
//                "WHERE sr.status=1 and sr.patient = p.id and m.team_code = r.team_code and sr.id=r.sign_id " +
@ -581,7 +590,6 @@ public class DetectionPlatformService  {
            map.put("security",security);
            map.put("security",security);
            map.put("devices",deviceList);
            map.put("devices",deviceList);
        }
        }
        return list;
        return list;
    }
    }
}
}