Browse Source

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

wangzhinan 2 năm trước cách đây
mục cha
commit
84ff795fb7
27 tập tin đã thay đổi với 385 bổ sung94 xóa
  1. 2 1
      business/push-service/src/main/java/com/yihu/jw/push/service/GetuiService.java
  2. 3 0
      common/common-entity/sql记录
  3. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java
  4. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/health/bank/AccountDO.java
  5. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/health/bank/ActiveRecordDO.java
  6. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/health/bank/TaskPatientDetailDO.java
  7. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/util/TransforSqlUtl.java
  8. 10 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/emergency/EmergencyOrderVO.java
  9. 16 0
      common/common-util/src/main/java/com/yihu/jw/util/date/DateUtil.java
  10. 21 14
      server/svr-authentication/src/main/java/com/yihu/jw/security/core/userdetails/jdbc/WlyyUserDetailsService.java
  11. 3 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/login/dao/BaseLoginLogDao.java
  12. 4 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/login/service/BaseLoginLogService.java
  13. 10 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java
  14. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/DoctorDeviceController.java
  15. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/PatientDeviceController.java
  16. 22 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/admin/AdminInfoEndpoint.java
  17. 1 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/admin/AdminListInfoController.java
  18. 6 4
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/DetectionPlatformEndpoint.java
  19. 4 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/third/platForm/PatientInfoPlatFormEndpoint.java
  20. 5 4
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/assistance/EmergencyAssistanceService.java
  21. 11 2
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/DeviceManageService.java
  22. 14 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/PatientDeviceService.java
  23. 5 3
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java
  24. 34 9
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/StatisticsService.java
  25. 164 40
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/third/PatientInfoPlatFormService.java
  26. 16 5
      svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/util/TransforSqlUtl.java
  27. 27 2
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/service/rehabilitation/RehabilitationManageService.java

+ 2 - 1
business/push-service/src/main/java/com/yihu/jw/push/service/GetuiService.java

@ -134,6 +134,7 @@ public class GetuiService {
        ApiHelper apiHelper = ApiHelper.build(apiConfiguration);
        ApiHelper apiHelper = ApiHelper.build(apiConfiguration);
        // 创建对象,建议复用。目前有PushApi、StatisticApi、UserApi
        // 创建对象,建议复用。目前有PushApi、StatisticApi、UserApi
        PushApi pushApi = apiHelper.creatApi(PushApi.class);
        PushApi pushApi = apiHelper.creatApi(PushApi.class);
        logger.info("个推初始化:"+pushApi);
        return pushApi;
        return pushApi;
    }
    }
@ -141,7 +142,7 @@ public class GetuiService {
     * Rest-V2厂商推送
     * Rest-V2厂商推送
     * type 1 安卓 2 ios
     * type 1 安卓 2 ios
     */
     */
    public void push2(String cid,int type,JSONObject json){
    public synchronized void push2(String cid,int type,JSONObject json){
        //根据cid进行单推
        //根据cid进行单推
        PushDTO<Audience> pushDTO = new PushDTO<Audience>();
        PushDTO<Audience> pushDTO = new PushDTO<Audience>();
        // 设置推送参数
        // 设置推送参数

+ 3 - 0
common/common-entity/sql记录

@ -1833,3 +1833,6 @@ INSERT INTO `base`.`oauth_client_details`(`client_id`, `app_name`, `resource_ids
--2022-06-01 字典表加"处理完成"
--2022-06-01 字典表加"处理完成"
INSERT INTO `base`.`wlyy_hospital_sys_dict` (`id`, `saas_id`, `dict_name`, `dict_code`, `dict_value`, `py_code`, `sort`, `hospital`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `img_url`, `model_name`)
INSERT INTO `base`.`wlyy_hospital_sys_dict` (`id`, `saas_id`, `dict_name`, `dict_code`, `dict_value`, `py_code`, `sort`, `hospital`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `img_url`, `model_name`)
VALUES ('808080eb80cbc1a3018114646a9c0028', NULL, 'repairMessage', 'repairMessageOver', '处理完成', '', 1, NULL, '2022-05-30 17:55:34.172', '123', NULL, '2022-05-30 17:55:34.172', '123', NULL, '', '维护信息处理内容');
VALUES ('808080eb80cbc1a3018114646a9c0028', NULL, 'repairMessage', 'repairMessageOver', '处理完成', '', 1, NULL, '2022-05-30 17:55:34.172', '123', NULL, '2022-05-30 17:55:34.172', '123', NULL, '', '维护信息处理内容');
--202206-13 ysj
INSERT INTO `base`.`dm_device` ( `category_code`, `photo`, `brands`, `model`, `name`, `is_multi_user`, `multi_user`, `czrq`, `del`, `service_topic`, `need_register`, `device_type`) VALUES ('21', 'group1/M00/00/06/ChIrKGKm1YeAeLJUAAFUbvcifo8051.png', 'trqjc', 'trqjc', '天然气监测', '0', NULL, '2022-06-13 13:53:55', '1', '', NULL, '1');

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java

@ -249,7 +249,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
     */
     */
    private String yktId;
    private String yktId;
    //云照护- 1需照护老人(孤/独/空) 2街道老人
    //云照护- 1需照护老人(孤/独/空) 2街道老人 3已照护老人
    private String register;
    private String register;
    private String phone;
    private String phone;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/health/bank/AccountDO.java

@ -89,7 +89,7 @@ public class AccountDO extends UuidIdentityEntityWithOperator implements Seriali
        this.patientId = patientId;
        this.patientId = patientId;
    }
    }
    @Convert(converter = StringFStringEncryptConverter.class)
//    @Convert(converter = StringFStringEncryptConverter.class)
    public String getAccountName() {
    public String getAccountName() {
        return accountName;
        return accountName;
    }
    }

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/health/bank/ActiveRecordDO.java

@ -101,7 +101,7 @@ public class ActiveRecordDO extends UuidIdentityEntity implements Serializable {
        this.patientId = patientId;
        this.patientId = patientId;
    }
    }
    @Convert(converter = StringFStringEncryptConverter.class)
//    @Convert(converter = StringFStringEncryptConverter.class)
    @Column(name = "patient_name")
    @Column(name = "patient_name")
    public String getPatientName() {
    public String getPatientName() {
        return patientName;
        return patientName;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/health/bank/TaskPatientDetailDO.java

@ -111,7 +111,7 @@ public class TaskPatientDetailDO extends UuidIdentityEntityWithOperator implemen
        this.patientId = patientId;
        this.patientId = patientId;
    }
    }
    @Convert(converter = StringFStringEncryptConverter.class)
    /*@Convert(converter = StringFStringEncryptConverter.class)*/
    public String getPatientIdcard() {
    public String getPatientIdcard() {
        return patientIdcard;
        return patientIdcard;
    }
    }

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/util/TransforSqlUtl.java

@ -8,7 +8,7 @@ package com.yihu.jw.entity.util;
 */
 */
public class TransforSqlUtl {
public class TransforSqlUtl {
    private static final boolean dbEncrypt=false; //不需要加密时 改为false即可,实体类注释需同时处理
    private static final boolean dbEncrypt=true; //不需要加密时 改为false即可,实体类注释需同时处理
    public static String wlyySpecialistPatientRelationLike(String sql,String ...replaceName){
    public static String wlyySpecialistPatientRelationLike(String sql,String ...replaceName){
        for (String tmp :replaceName){
        for (String tmp :replaceName){

+ 10 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/emergency/EmergencyOrderVO.java

@ -59,6 +59,16 @@ public class EmergencyOrderVO {
    private Integer OrderType;//20紧急 22安防
    private Integer OrderType;//20紧急 22安防
    private Integer know;//知悉 1已知悉 0未知悉
    private Integer know;//知悉 1已知悉 0未知悉
    private String serveDesc;//服务描述
    public String getServeDesc() {
        return serveDesc;
    }
    public void setServeDesc(String serveDesc) {
        this.serveDesc = serveDesc;
    }
    public String getId() {
    public String getId() {
        return id;
        return id;
    }
    }

+ 16 - 0
common/common-util/src/main/java/com/yihu/jw/util/date/DateUtil.java

@ -1562,4 +1562,20 @@ public class DateUtil {
        return timeAgoStr;
        return timeAgoStr;
    }
    }
    /**
     * 获取指定时间的前后若干时间戳
     * list[0]前
     * list[1]后
     * @return
     */
    public static List<String> getTimeByBeforeAndAfterTime(String time,long l){
        List<String> list = new ArrayList<>();
        Date date = DateUtil.strToDate(time);
        Date beforeTime = new Date(date.getTime()-l);
        Date afterTime = new Date(date.getTime()+l);
        list.add(DateUtil.dateToStrLong(beforeTime));
        list.add(DateUtil.dateToStrLong(afterTime));
        return list;
    }
}
}

+ 21 - 14
server/svr-authentication/src/main/java/com/yihu/jw/security/core/userdetails/jdbc/WlyyUserDetailsService.java

@ -686,20 +686,16 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
        }
        }
        if(StringUtils.isNotBlank(clientId)&&StringUtils.isNotBlank(clientType)&&isPateint<3){
        if(StringUtils.isNotBlank(clientId)&&StringUtils.isNotBlank(clientType)&&isPateint<3){
            try {
            try {
                List<GetuiClientDO> list = baseGetuiClientDao.findByUser(id,isPateint,clientType);
                if(list.size() == 0){
                    GetuiClientDO getuiClientDO = new GetuiClientDO();
                    getuiClientDO.setClientId(clientId);
                    getuiClientDO.setType(isPateint);
                    getuiClientDO.setClientType(clientType);
                    getuiClientDO.setUser(id);
                    getuiClientDO.setCreateTime(new Date());
                    baseGetuiClientDao.save(getuiClientDO);
                }else{
                    GetuiClientDO getuiClientDO = list.get(0);
                    getuiClientDO.setClientId(clientId);
                    baseGetuiClientDao.save(getuiClientDO);
                }
                //先删除在新增
                deleteCidByUser(id);
                GetuiClientDO getuiClientDO = new GetuiClientDO();
                getuiClientDO.setClientId(clientId);
                getuiClientDO.setType(isPateint);
                getuiClientDO.setClientType(clientType);
                getuiClientDO.setUser(id);
                getuiClientDO.setCreateTime(new Date());
                baseGetuiClientDao.save(getuiClientDO);
            }catch (Exception e){
            }catch (Exception e){
                e.printStackTrace();
                e.printStackTrace();
            }
            }
@ -721,6 +717,17 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
    }
    }
    public void deleteCidByUser(String user){
        try {
            String sql = "delete from base_getui_client where user='"+user+"'";
            getJdbcTemplate().execute(sql);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    /**
    /**
     * app,wx,pad,pc
     * app,wx,pad,pc
     * @param clientType
     * @param clientType

+ 3 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/login/dao/BaseLoginLogDao.java

@ -15,4 +15,7 @@ public interface BaseLoginLogDao extends PagingAndSortingRepository<BaseLoginLog
    @Query("from BaseLoginLogDO l where l.userId=?1 order by l.createTime desc")
    @Query("from BaseLoginLogDO l where l.userId=?1 order by l.createTime desc")
    List<BaseLoginLogDO> findByUserId(String openid);
    List<BaseLoginLogDO> findByUserId(String openid);
    @Query(value = "SELECT a.* from base_login_log a WHERE a.token=?1 ORDER BY a.create_time desc LIMIT 1",nativeQuery = true)
    BaseLoginLogDO findByToken(String token);
}
}

+ 4 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/login/service/BaseLoginLogService.java

@ -19,6 +19,10 @@ public class BaseLoginLogService<T, R extends CrudRepository> extends BaseJpaSer
    @Autowired
    @Autowired
    private BaseLoginLogDao baseLoginLogDao;
    private BaseLoginLogDao baseLoginLogDao;
    public BaseLoginLogDO findByToken(String token){
        return baseLoginLogDao.findByToken(token);
    }
    /**
    /**
     * 根据openid 获取最新的一条数据
     * 根据openid 获取最新的一条数据
     * @param openid
     * @param openid

+ 10 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java

@ -517,6 +517,16 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
            tokenStore.removeAccessToken(oAuth2AccessToken.getValue());
            tokenStore.removeAccessToken(oAuth2AccessToken.getValue());
            tokenStore.removeRefreshToken(oAuth2AccessToken.getRefreshToken().getValue());
            tokenStore.removeRefreshToken(oAuth2AccessToken.getRefreshToken().getValue());
        }
        }
        //删除个推cid
        if(!StringUtils.isEmpty(token)){
            BaseLoginLogDO loginLogDO = baseLoginLogService.findByToken(token);
            if(loginLogDO!=null){
                userDetailsService.deleteCidByUser(loginLogDO.getUserId());
            }
        }
        HttpHeaders headers = new HttpHeaders();
        HttpHeaders headers = new HttpHeaders();
        headers.set("Cache-Control", "no-store");
        headers.set("Cache-Control", "no-store");
        headers.set("Pragma", "no-cache");
        headers.set("Pragma", "no-cache");

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/DoctorDeviceController.java

@ -308,7 +308,7 @@ public class DoctorDeviceController extends BaseController {
			if(permissionService.noPermission(1,param)){
			if(permissionService.noPermission(1,param)){
				return PageEnvelop.getSuccess("该操作没有权限");
				return PageEnvelop.getSuccess("该操作没有权限");
			}
			}
			return deviceManageService.getPatientMonitorData(patient,startTime,endTime,page,size);
			return deviceManageService.getPatientMonitorData(patient,startTime,endTime,page,size,null);
		} catch (Exception e) {
		} catch (Exception e) {
			e.printStackTrace();
			e.printStackTrace();
			return PageEnvelop.getError("系统繁忙");
			return PageEnvelop.getError("系统繁忙");

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/PatientDeviceController.java

@ -518,7 +518,7 @@ public class PatientDeviceController extends BaseController {
			if(permissionService.noPermission(1,param)){
			if(permissionService.noPermission(1,param)){
				return PageEnvelop.getSuccess("该操作没有权限");
				return PageEnvelop.getSuccess("该操作没有权限");
			}
			}
            return deviceManageService.getPatientMonitorData(patient,startTime,endTime,page,size);
            return deviceManageService.getPatientMonitorData(patient,startTime,endTime,page,size,null);
        } catch (Exception e) {
        } catch (Exception e) {
            e.printStackTrace();
            e.printStackTrace();
            return PageEnvelop.getError("系统繁忙");
            return PageEnvelop.getError("系统繁忙");

+ 22 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/admin/AdminInfoEndpoint.java

@ -106,6 +106,28 @@ public class AdminInfoEndpoint extends EnvelopRestEndpoint {
        }
        }
    }
    }
    @GetMapping(value = "patientLabelAdd")
    @ApiOperation(value = "居民分析")
    public ListEnvelop patientLabelAdd(
            @RequestParam(required = true) String startDate,
            @RequestParam(required = true) String endDate,
            @RequestParam(required = true) String area,
            @RequestParam(required = true) int level) {
        try {
            JSONObject param = new JSONObject();
            String doctorId =  permissionService.getUID();
            param.put("doctorId",doctorId);
            if(permissionService.noPermission(0,param)){
                return ListEnvelop.getError("该操作没有权限");
            }
            JSONArray result = statisticsService.patientLabelAdd(startDate,endDate, area, level);
            return success(result);
        } catch (Exception e) {
            return failedListEnvelopException2(e);
        }
    }
    @GetMapping(value = "deviceAndService")
    @GetMapping(value = "deviceAndService")
    @ApiOperation(value = "获取安防设备种类、安防服务、预警类型 数量")
    @ApiOperation(value = "获取安防设备种类、安防服务、预警类型 数量")
    public ObjEnvelop deviceAndService() {
    public ObjEnvelop deviceAndService() {

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

@ -52,7 +52,7 @@ public class AdminListInfoController extends EnvelopRestEndpoint {
                return ObjEnvelop.getError("该操作没有权限");
                return ObjEnvelop.getError("该操作没有权限");
            }
            }
            return ObjEnvelop.getSuccess("查询成功",patientInfoPlatFormService.getPatientDeviceInfoWithDetail(patient,null));
            return ObjEnvelop.getSuccess("查询成功",patientInfoPlatFormService.getPatientDeviceInfoWithDetail(patient,null,null));
        }catch (Exception e){
        }catch (Exception e){
            return failedObjEnvelopException2(e);
            return failedObjEnvelopException2(e);
        }
        }

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

@ -400,15 +400,17 @@ public class DetectionPlatformEndpoint extends EnvelopRestEndpoint {
    public PageEnvelop getPatientMonitorData(@ApiParam(name = "patient", value = "patient")
    public PageEnvelop getPatientMonitorData(@ApiParam(name = "patient", value = "patient")
                                             @RequestParam(value = "patient") String patient,
                                             @RequestParam(value = "patient") String patient,
                                             @ApiParam(name = "startTime", value = "开始时间")
                                             @ApiParam(name = "startTime", value = "开始时间")
                                             @RequestParam(value = "startTime") String startTime,
                                             @RequestParam(value = "startTime",required = false) String startTime,
                                             @ApiParam(name = "endTime", value = "endTime")
                                             @ApiParam(name = "endTime", value = "endTime")
                                             @RequestParam(value = "endTime") String endTime,
                                             @RequestParam(value = "endTime",required = false) String endTime,
                                             @ApiParam(name = "page", value = "page")
                                             @ApiParam(name = "page", value = "page")
                                             @RequestParam(value = "page") Integer page,
                                             @RequestParam(value = "page") Integer page,
                                             @ApiParam(name = "size", value = "size")
                                             @ApiParam(name = "size", value = "size")
                                             @RequestParam(value = "size") Integer size) {
                                             @RequestParam(value = "size") Integer size,
                                             @ApiParam(name = "categoryCode",value = "设备类型")
                                             @RequestParam(value = "categoryCode",required = false)Integer categoryCode) {
        try {
        try {
            return deviceManageService.getPatientMonitorData(patient, startTime, endTime, page, size);
            return deviceManageService.getPatientMonitorData(patient, startTime, endTime, page, size,categoryCode);
        } catch (Exception e) {
        } catch (Exception e) {
            e.printStackTrace();
            e.printStackTrace();
            return PageEnvelop.getError("系统繁忙");
            return PageEnvelop.getError("系统繁忙");

+ 4 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/third/platForm/PatientInfoPlatFormEndpoint.java

@ -171,9 +171,11 @@ public class PatientInfoPlatFormEndpoint extends EnvelopRestEndpoint {
    public ObjEnvelop getPatientDeviceInfoWithDetail(@ApiParam(name="patient",value = "居民id",required = false)
    public ObjEnvelop getPatientDeviceInfoWithDetail(@ApiParam(name="patient",value = "居民id",required = false)
                                                     @RequestParam(value = "patient",required = false)String patient,
                                                     @RequestParam(value = "patient",required = false)String patient,
                                                     @ApiParam(name="deviceSn",value = "设备SN",required = false)
                                                     @ApiParam(name="deviceSn",value = "设备SN",required = false)
                                                     @RequestParam(value = "deviceSn",required = false)String deviceSn){
                                                     @RequestParam(value = "deviceSn",required = false)String deviceSn,
                                                     @ApiParam(name = "warnTime",value = "预警时间")
                                                     @RequestParam(value = "warnTime",required = false)String warnTime){
        try {
        try {
            return ObjEnvelop.getSuccess("查询成功",patientInfoPlatFormService.getPatientDeviceInfoWithDetail(patient,deviceSn));
            return ObjEnvelop.getSuccess("查询成功",patientInfoPlatFormService.getPatientDeviceInfoWithDetail(patient,deviceSn,warnTime));
        }catch (Exception e){
        }catch (Exception e){
            return failedObjEnvelopException2(e);
            return failedObjEnvelopException2(e);
        }
        }

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

@ -422,9 +422,10 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        List<Map<String,Object>> securityDevices = patientDeviceService.patientEmeDeviceList(assistanceDO.getPatient());
        List<Map<String,Object>> securityDevices = patientDeviceService.patientEmeDeviceList(assistanceDO.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.setAge(DateUtil.getAgeByBirthday(patientDO.getBirthday())+"");
        emergencyOrderVO.setLiveAddress(patientDO.getAddress());
        emergencyOrderVO.setLiveAddress(patientDO.getAddress());
        emergencyOrderVO.setOrderSource(assistanceDO.getOrderSource());
        emergencyOrderVO.setOrderSource(assistanceDO.getOrderSource());
        if(assistanceDO.getStatus()==-2){//误报警
        if(assistanceDO.getStatus()==-2){//误报警
@ -591,7 +592,7 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        emergencyOrderVO.setOtherDoctorDistance(otherDoctorDistance.toJSONString());
        emergencyOrderVO.setOtherDoctorDistance(otherDoctorDistance.toJSONString());
        emergencyOrderVO.setNoticePersons(noticePersons);
        emergencyOrderVO.setNoticePersons(noticePersons);
        JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONStringWithDateFormat(emergencyOrderVO,"yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue));
        JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONStringWithDateFormat(emergencyOrderVO,"yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue));
        jsonObject.put("serveDesc","紧急呼叫");
        //获取咨询
        //获取咨询
        ConsultDo consult = consultDao.queryByRelationCode(orderID);
        ConsultDo consult = consultDao.queryByRelationCode(orderID);
        if (null != consult) {
        if (null != consult) {

+ 11 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/DeviceManageService.java

@ -243,13 +243,22 @@ public class DeviceManageService extends BaseJpaService<BaseDeviceRepairEntity,B
     * @param size
     * @param size
     * @return
     * @return
     */
     */
    public PageEnvelop<List<Map<String,Object>>> getPatientMonitorData(String patient,String startTime,String endTime,Integer page,Integer size){
    public PageEnvelop<List<Map<String,Object>>> getPatientMonitorData(String patient,String startTime,String endTime,Integer page,Integer size,Integer categoryCode){
        page = page>0?page-1:0;
        page = page>0?page-1:0;
        String sql = " select dm.name,dm.photo,dm.category_code,modata.patient,modata.patient_name,modata.device_info,modata.relation_code, " +
        String sql = " select dm.name,dm.photo,dm.category_code,modata.patient,modata.patient_name,modata.device_info,modata.relation_code, " +
                "modata.type,DATE_FORMAT(modata.create_time,'%Y-%m-%d %H:%i:%S') create_time  " ;
                "modata.type,DATE_FORMAT(modata.create_time,'%Y-%m-%d %H:%i:%S') create_time  " ;
        String sqlFilter =  " from base_patient_monitor_data modata INNER JOIN wlyy_patient_device pd on modata.device_sn = pd.device_sn and pd.del=0 " +
        String sqlFilter =  " from base_patient_monitor_data modata INNER JOIN wlyy_patient_device pd on modata.device_sn = pd.device_sn and pd.del=0 " +
                "INNER JOIN dm_device dm on pd.device_id = dm.id " +
                "INNER JOIN dm_device dm on pd.device_id = dm.id " +
                "where patient='"+patient+"' and create_time>='"+startTime+"' and create_time<='"+endTime+"' ";
                "where patient='"+patient+"' ";
        if(StringUtils.isNotBlank(startTime) ){
            sqlFilter += " and create_time>='"+startTime+"' ";
        }
        if(StringUtils.isNotBlank(endTime)){
            sqlFilter += " and create_time<='"+endTime+"' ";
        }
        if(categoryCode != null){
            sqlFilter += " and modata.category_code = "+categoryCode+" ";
        }
        String sqlCount = " select count(modata.id) ";
        String sqlCount = " select count(modata.id) ";
        sql = sql+sqlFilter +" ORDER BY modata.id desc limit "+page*size+","+size;
        sql = sql+sqlFilter +" ORDER BY modata.id desc limit "+page*size+","+size;
        Long total = jdbcTemplate.queryForObject(sqlCount+sqlFilter,Long.class);
        Long total = jdbcTemplate.queryForObject(sqlCount+sqlFilter,Long.class);

+ 14 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/PatientDeviceService.java

@ -1151,6 +1151,9 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
                    break;
                    break;
                case "20": //电表 todo 日常用电情况
                case "20": //电表 todo 日常用电情况
                    break;
                    break;
                case "21": //天然气 todo 天然气情况
                    naturalGasRecord(patientDO.getIdcard(),devInfoObj);
                    break;
            }
            }
//        }
//        }
                result.put(ResponseContant.resultFlag,ResponseContant.success);
                result.put(ResponseContant.resultFlag,ResponseContant.success);
@ -1159,6 +1162,17 @@ public class PatientDeviceService extends BaseJpaService<DevicePatientDevice, Pa
        return result;
        return result;
    }
    }
    /**
     * 天然气记录
     * @param idcard
     * @param devInfoObj
     */
    public void naturalGasRecord(String idcard,com.alibaba.fastjson.JSONObject devInfoObj){
        String sql = "SELECT syndyqzl,syndfy,lszyql from hz.gsq_hzrqjmyhglxtrqgrxx WHERE yhsfzh =? ORDER BY tongid desc LIMIT 1 " ;
        List<Map<String,Object>> mapList = jdbcTemplate.queryForList(sql,new Object[]{idcard});
        devInfoObj.put("naturalGasRecord",mapList);
    }
    /**
    /**
     * 获取睡眠带 睡眠报告
     * 获取睡眠带 睡眠报告
     * @param patient
     * @param patient

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

@ -380,6 +380,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                break;
                break;
        }
        }
        emergencyOrderVO.setStatusName(statusName);
        emergencyOrderVO.setStatusName(statusName);
        emergencyOrderVO.setServeDesc(orderDO.getServeDesc());
        emergencyOrderVO.setOrderId(orderID);
        emergencyOrderVO.setOrderId(orderID);
        emergencyOrderVO.setStatus(orderDO.getStatus());
        emergencyOrderVO.setStatus(orderDO.getStatus());
        emergencyOrderVO.setCreateTime(orderDO.getCreateTime());
        emergencyOrderVO.setCreateTime(orderDO.getCreateTime());
@ -411,9 +412,10 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        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.setAge(DateUtil.getAgeByBirthday(patientDO.getBirthday())+"");
        emergencyOrderVO.setLiveAddress(patientDO.getAddress());
        emergencyOrderVO.setLiveAddress(patientDO.getAddress());
        emergencyOrderVO.setOrderSource(orderDO.getOrderSource());
        emergencyOrderVO.setOrderSource(orderDO.getOrderSource());
        if (orderDO.getStatus() == -2) {//误报警
        if (orderDO.getStatus() == -2) {//误报警

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

@ -1201,6 +1201,26 @@ public class StatisticsService {
        return result;
        return result;
    }
    }
    public JSONArray patientLabelAdd(String startDate,String endDate, String area, int level) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findDateAllQuotaLevel1(startDate, endDate, area, level, "56", SaveModel.timeLevel_ZL, null, null, "2");
        JSONArray labelArr = new JSONArray();
        for (int i = 0; i < list.size(); i++) {
            SaveModel saveModel = list.get(i);
            JSONObject json = new JSONObject();
            if (saveModel.getResult2().longValue() == 0 && StringUtils.isBlank(saveModel.getSlaveKey1())) {
                continue;
            }
            if ("0".equals(saveModel.getSlaveKey1())) {//去除60岁以下老人
                continue;
            }
            json.put("num", saveModel.getResult2().longValue());
            json.put("code", saveModel.getSlaveKey1());
            json.put("name", saveModel.getSlaveKey1Name());
            labelArr.add(json);
        }
        return labelArr;
    }
    /**
    /**
     * 居民分析
     * 居民分析
     */
     */
@ -2253,7 +2273,7 @@ public class StatisticsService {
        //照护老人  :  签约老人+有设备未签约的
        //照护老人  :  签约老人+有设备未签约的
        String sign_OldSql = "SELECT SUM(a.zf_num) AS zf_num FROM ( SELECT count(DISTINCT id) zf_num FROM base_patient WHERE sign_status = 1 AND del = 1 AND id NOT IN (SELECT dict_code from wlyy_hospital_sys_dict WHERE  dict_name = 'jkzl_older')" ;
        String sign_OldSql = "SELECT SUM(a.zf_num) AS zf_num FROM ( SELECT count(DISTINCT id) zf_num FROM base_patient WHERE sign_status = 1 AND del = 1 AND id NOT IN (SELECT dict_code from wlyy_hospital_sys_dict WHERE  dict_name = 'jkzl_older')" ;
        sign_OldSql+=" UNION ALL ";
        sign_OldSql+=" UNION ALL ";
        sign_OldSql += " SELECT COUNT( DISTINCT a.id ) zf_num FROM base_patient a  WHERE a.archive_type = 1 AND a.sign_status = 0 AND register = '1' AND a.del = '1' AND EXISTS ( SELECT 1 FROM wlyy_patient_device pd WHERE pd.USER = a.id AND pd.del = 0 ) ) a";
        sign_OldSql += " SELECT COUNT( DISTINCT a.id ) zf_num FROM base_patient a  WHERE a.archive_type = 1 AND a.sign_status = 0  AND a.del = '1' AND EXISTS ( SELECT 1 FROM wlyy_patient_device pd WHERE pd.USER = a.id AND pd.del = 0 ) ) a";
        //需照护老人 : 未签约 register=1  - 有设备未签约的
        //需照护老人 : 未签约 register=1  - 有设备未签约的
        String unSign_oldSql = "SELECT COUNT(*) c from base_patient a WHERE archive_type = 1 and a.register = 1 and (sign_status=0 or sign_status is null ) and del='1' and not EXISTS (select 1 from wlyy_patient_device pd where pd.user = a.id and pd.del=0) ";
        String unSign_oldSql = "SELECT COUNT(*) c from base_patient a WHERE archive_type = 1 and a.register = 1 and (sign_status=0 or sign_status is null ) and del='1' and not EXISTS (select 1 from wlyy_patient_device pd where pd.user = a.id and pd.del=0) ";
@ -3192,7 +3212,7 @@ public class StatisticsService {
    /**
    /**
     * 获取照护老人+幼儿基本信息
     * 获取照护老人+幼儿基本信息
     * 签约老人+未签约有设备的
     * 签约老人+未签约有设备的
     *
     * type=3街道老人(街道老人/需照护老人/已照护老人)
     */
     */
    public JSONObject  findTendOld(Integer type,Integer page,Integer size,String idcard,String name,String orgName){
    public JSONObject  findTendOld(Integer type,Integer page,Integer size,String idcard,String name,String orgName){
@ -3271,7 +3291,9 @@ public class StatisticsService {
                        " WHERE p.archive_type = 2 and p.del = 1 "+nameSql+idcardSql+" <testUserSql>";
                        " WHERE p.archive_type = 2 and p.del = 1 "+nameSql+idcardSql+" <testUserSql>";
                break;
                break;
            case 3:
            case 3:
                sql =" SELECT p.id as id,p.name,CASE WHEN p.sex = 1 THEN '男' WHEN p.sex =2 THEN '女' END ,TIMESTAMPDIFF(YEAR, p.birthday, CURDATE()) as  age,p.idcard,p.mobile,p.address FROM base_patient p WHERE  p.del =1 AND p.register = 2"+nameSql+idcardSql;
                sql =" SELECT p.id as id,p.name,CASE WHEN p.sex = 1 THEN '男' WHEN p.sex =2 THEN '女' END sex,TIMESTAMPDIFF(YEAR, p.birthday, CURDATE()) as  age" +
                        ",p.idcard,p.mobile,p.address,CASE WHEN p.register = '1' THEN '需照护老人' WHEN p.register ='2' THEN '街道老人' WHEN p.register ='3' THEN '已照护老人' END register" +
                        " FROM base_patient p WHERE  p.del =1 AND p.register in ('1','2','3') "+nameSql+idcardSql;
        }
        }
@ -3326,7 +3348,7 @@ public class StatisticsService {
                sql += "  ORDER BY id ";
                sql += "  ORDER BY id ";
                break;
                break;
            case 3:
            case 3:
                sql =" SELECT count(DISTINCT p.id) as total FROM base_patient p WHERE  p.del =1 AND p.register = 2"+nameSql+idcardSql;
                sql =" SELECT count(DISTINCT p.id) as total FROM base_patient p WHERE  p.del =1 AND p.register in ('1','2','3') "+nameSql+idcardSql;
                sql += "  ORDER BY id ";
                sql += "  ORDER BY id ";
                break;
                break;
        }
        }
@ -3501,11 +3523,11 @@ public class StatisticsService {
            statusSql = " AND o.status = "+status+"";
            statusSql = " AND o.status = "+status+"";
        }
        }
        String sql = "SELECT p.name,o.`status`,o.id AS orderId,DATE_FORMAT( o.create_time, '%Y-%m-%d %H:%i:%s' ) AS create_time, " +
        String sql = "SELECT p.name,o.`status`,o.id AS orderId,DATE_FORMAT( o.create_time, '%Y-%m-%d %H:%i:%s' ) AS create_time,p.id patientId, " +
                " GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName, " +
                " GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName, " +
                " GROUP_CONCAT( DISTINCT d.mobile SEPARATOR ',' ) AS dmobile, " +
                " GROUP_CONCAT( DISTINCT d.mobile SEPARATOR ',' ) AS dmobile, " +
                " p.mobile AS pmobile, p.address AS address,t.`name` AS orgName, " +
                " p.mobile AS pmobile, p.address AS address,t.`name` AS orgName, " +
                " '紧急预警' AS ewtype, 1 AS type,o.serve_address AS serviceAddress  " +
                " '紧急预警' AS ewtype, 1 AS type,o.serve_address AS serviceAddress,'20' as OrderType  " +
                " FROM " +
                " FROM " +
                " base_emergency_assistance_order o " +
                " base_emergency_assistance_order o " +
                " LEFT JOIN base_patient p ON o.patient = p.id " +
                " LEFT JOIN base_patient p ON o.patient = p.id " +
@ -3520,11 +3542,11 @@ public class StatisticsService {
                 statusSql+nameSql+idcardSql+orgCodeSql+
                 statusSql+nameSql+idcardSql+orgCodeSql+
                " AND o.org_code NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' AND dict_code IS NOT NULL )  GROUP BY o.id " +
                " AND o.org_code NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' AND dict_code IS NOT NULL )  GROUP BY o.id " +
                " UNION ALL " +
                " UNION ALL " +
                " SELECT p.name,o.`status`,o.id AS orderId,DATE_FORMAT( o.create_time, '%Y-%m-%d %H:%i:%s' ) AS create_time, " +
                " SELECT p.name,o.`status`,o.id AS orderId,DATE_FORMAT( o.create_time, '%Y-%m-%d %H:%i:%s' ) AS create_time,p.id patientId, " +
                " GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName, " +
                " GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName, " +
                " GROUP_CONCAT( DISTINCT d.mobile SEPARATOR ',' ) AS dmobile, " +
                " GROUP_CONCAT( DISTINCT d.mobile SEPARATOR ',' ) AS dmobile, " +
                " p.mobile AS pmobile,p.address AS address,t.`name` AS orgName, " +
                " p.mobile AS pmobile,p.address AS address,t.`name` AS orgName, " +
                " o.serve_desc AS ewtype,2 AS type,o.serve_address AS serviceAddress  " +
                " o.serve_desc AS ewtype,2 AS type,o.serve_address AS serviceAddress,'22' as OrderType  " +
                "FROM " +
                "FROM " +
                " base_security_monitoring_order o " +
                " base_security_monitoring_order o " +
                " LEFT JOIN base_patient p ON o.patient = p.id " +
                " LEFT JOIN base_patient p ON o.patient = p.id " +
@ -3856,7 +3878,10 @@ public class StatisticsService {
        //设备类型总数
        //设备类型总数
        String deviceCodeTotalSql ="SELECT count(DISTINCT device_code) FROM wlyy_devices WHERE (device_code IS NOT NULL OR device_code <> '') AND category_code = '"+deviceCategory+"'";
        String deviceCodeTotalSql ="SELECT count(DISTINCT device_code) FROM wlyy_devices WHERE (device_code IS NOT NULL OR device_code <> '') AND category_code = '"+deviceCategory+"'";
        //long start=System.currentTimeMillis();
        List<Integer> total = jdbcTemplate.queryForList(typeTotalSql, Integer.class);
        List<Integer> total = jdbcTemplate.queryForList(typeTotalSql, Integer.class);
        //long end=System.currentTimeMillis();
        //System.out.println("类型数量运行多少毫秒:" + "=" + (end-start));
        jsonObject.put("typeTotal",total.get(0));
        jsonObject.put("typeTotal",total.get(0));
        total = jdbcTemplate.queryForList(offLineDeviceSql,Integer.class);
        total = jdbcTemplate.queryForList(offLineDeviceSql,Integer.class);
        jsonObject.put("offLineDevice",total.get(0));
        jsonObject.put("offLineDevice",total.get(0));
@ -3876,7 +3901,7 @@ public class StatisticsService {
    public List<Map<String, Object>> findByPatientHelper(String patient){
    public List<Map<String, Object>> findByPatientHelper(String patient){
        String sql = "SELECT ph.doctor,ph.doctor_name,d.mobile,d.qrcode  FROM base_patient_helper ph INNER JOIN base_doctor d ON d.id = ph.doctor WHERE  ph.del = 1 AND ph.patient = '"+patient+"'";
        String sql = "SELECT ph.doctor,ph.doctor_name,d.mobile,d.qrcode,d.photo  FROM base_patient_helper ph INNER JOIN base_doctor d ON d.id = ph.doctor WHERE  ph.del = 1 AND ph.patient = '"+patient+"'";
        return jdbcTemplate.queryForList(sql);
        return jdbcTemplate.queryForList(sql);
    }
    }

+ 164 - 40
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/third/PatientInfoPlatFormService.java

@ -169,6 +169,8 @@ public class PatientInfoPlatFormService {
            tmp.put("address",patientDO.getAddress());
            tmp.put("address",patientDO.getAddress());
            tmp.put("patient",patientDO.getId());
            tmp.put("patient",patientDO.getId());
            tmp.put("pad_imei",patientDO.getPadImei());
            tmp.put("pad_imei",patientDO.getPadImei());
            tmp.put("mobile",patientDO.getMobile());
            tmp.put("photo",patientDO.getPhoto());
            String idcard = patientDO.getIdcard();
            String idcard = patientDO.getIdcard();
            if (StringUtils.isNotBlank(idcard)){
            if (StringUtils.isNotBlank(idcard)){
                Integer age = IdCardUtil.getAgeForIdcard(idcard);
                Integer age = IdCardUtil.getAgeForIdcard(idcard);
@ -250,11 +252,13 @@ public class PatientInfoPlatFormService {
        emeWarn.put("unfinish",unfinish);
        emeWarn.put("unfinish",unfinish);
        emeWarn.put("finish",finish);
        emeWarn.put("finish",finish);
        //获取最近一次工单
        //获取最近一次工单
        sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'20' OrderType,'1' type,o.serve_address,'紧急呼叫' serve_desc, " +
        sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'20' OrderType,'1' type,o.serve_address,'紧急呼叫' serve_desc,TIMESTAMPDIFF(YEAR,p.birthday,NOW()) AS age," +
                " CASE sex WHEN 1 THEN '男' WHEN 2 THEN '女' ELSE sex END AS sex, " +
                " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_emergency_assistance_order o INNER JOIN base_patient p on p.id = o.patient " +
                " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_emergency_assistance_order o INNER JOIN base_patient p on p.id = o.patient " +
                " where o.patient='"+patient+"' and o.`status` <>-1 " +
                " where o.patient='"+patient+"' and o.`status` <>-1 " +
                " UNION " +
                " UNION " +
                "select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc, " +
                "select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,TIMESTAMPDIFF(YEAR,p.birthday,NOW()) AS age, " +
                " CASE sex WHEN 1 THEN '男' WHEN 2 THEN '女' ELSE sex END AS sex, " +
                " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o INNER JOIN base_patient p on p.id = o.patient " +
                " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o INNER JOIN base_patient p on p.id = o.patient " +
                " where o.patient='"+patient+"' and o.`status` <>-1 " +
                " where o.patient='"+patient+"' and o.`status` <>-1 " +
                "ORDER BY create_time desc limit 1 ";
                "ORDER BY create_time desc limit 1 ";
@ -280,7 +284,8 @@ public class PatientInfoPlatFormService {
        olderService.put("unfinish",unfinish);
        olderService.put("unfinish",unfinish);
        olderService.put("finish",finish);
        olderService.put("finish",finish);
        //最近一次记录
        //最近一次记录
        sql = " select o.id,p.name,p.id as patient,o.status,o.hospital_name hospitalName,p.idcard,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time,GROUP_CONCAT(DISTINCT fed.name SEPARATOR '、' ) serveItems " +
        sql = " select o.id,p.name,p.id as patient,o.status,o.hospital_name hospitalName,p.idcard,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time,GROUP_CONCAT(DISTINCT fed.name SEPARATOR '、' ) serveItems,TIMESTAMPDIFF(YEAR,p.birthday,NOW()) AS age," +
                " CASE sex WHEN 1 THEN '男' WHEN 2 THEN '女' ELSE sex END AS sex " +
                " from base_life_care_order o INNER JOIN base_patient p on o.patient = p.id INNER JOIN base_life_care_fee_detail fed on o.id = fed.order_id " +
                " from base_life_care_order o INNER JOIN base_patient p on o.patient = p.id INNER JOIN base_life_care_fee_detail fed on o.id = fed.order_id " +
                " and fed.status<>3 where o.patient='"+patient+"' and o.`status`<>-1 and o.`status`<>0  " +
                " and fed.status<>3 where o.patient='"+patient+"' and o.`status`<>-1 and o.`status`<>0  " +
                "GROUP BY o.id ORDER BY create_time desc limit 1; ";
                "GROUP BY o.id ORDER BY create_time desc limit 1; ";
@ -706,7 +711,7 @@ public class PatientInfoPlatFormService {
    /**
    /**
     *获取设备详情
     *获取设备详情
     */
     */
    public List<Map<String,Object>> getPatientDeviceInfoWithDetail(String patient,String deviceSn){
    public List<Map<String,Object>> getPatientDeviceInfoWithDetail(String patient,String deviceSn,String warnTime){
        List<Map<String,Object>>  list = new ArrayList<>();
        List<Map<String,Object>>  list = new ArrayList<>();
        String sql = "select dd.photo,pd.device_sn,dd.brands,dd.category_code,dd.model,pd.device_name,date_format(pd.czrq,'%Y-%m-%d %H:%i:%S' ) deviceTime,dd.device_type as deviceType " +
        String sql = "select dd.photo,pd.device_sn,dd.brands,dd.category_code,dd.model,pd.device_name,date_format(pd.czrq,'%Y-%m-%d %H:%i:%S' ) deviceTime,dd.device_type as deviceType " +
                "from dm_device dd INNER JOIN wlyy_patient_device pd on dd.category_code = pd.category_code INNER JOIN wlyy_devices wd on dd.model = wd.device_model and pd.device_sn = wd.device_code \n" +
                "from dm_device dd INNER JOIN wlyy_patient_device pd on dd.category_code = pd.category_code INNER JOIN wlyy_devices wd on dd.model = wd.device_model and pd.device_sn = wd.device_code \n" +
@ -723,7 +728,7 @@ public class PatientInfoPlatFormService {
        for (Map<String,Object> tmp :list){
        for (Map<String,Object> tmp :list){
            String category_code = tmp.get("category_code").toString();
            String category_code = tmp.get("category_code").toString();
            String deviceSN = tmp.get("device_sn").toString();
            String deviceSN = tmp.get("device_sn").toString();
            Map<String,Object> detailInfo =  getDeviceIndexAndOrder(category_code,deviceSN,patient);
            Map<String,Object> detailInfo =  getDeviceIndexAndOrder(category_code,deviceSN,patient,warnTime);
            tmp.put("detailInfo",detailInfo);
            tmp.put("detailInfo",detailInfo);
        }
        }
        return list;
        return list;
@ -741,7 +746,18 @@ public class PatientInfoPlatFormService {
     * 血压2:最近一次收缩压,舒张压、在线状态
     * 血压2:最近一次收缩压,舒张压、在线状态
     * 血糖1:最近一次血糖、在线状态
     * 血糖1:最近一次血糖、在线状态
     */
     */
    public Map<String,Object> getDeviceIndexAndOrder(String category_code,String deviceSn,String patient){
    public Map<String,Object> getDeviceIndexAndOrder(String category_code,String deviceSn,String patient,String filterTime){
        String beforeTime = "";
        String afterTime = "";
        boolean bl = false;//是否进行时间范围查询
        String pageSql = "";
        if(StringUtils.isNotBlank(filterTime)){
            //获取前后三十分钟的时间
            List<String> timeList = DateUtil.getTimeByBeforeAndAfterTime(filterTime, 30 * 60 * 1000);
            beforeTime = timeList.get(0);
            afterTime = timeList.get(1);
            bl = true;
        }
        Map<String,Object> detailInfo = new HashMap<>();
        Map<String,Object> detailInfo = new HashMap<>();
        String sql = " select IFNULL(contact_status,0) contact_status from wlyy_devices where device_code='"+deviceSn+"' ";
        String sql = " select IFNULL(contact_status,0) contact_status from wlyy_devices where device_code='"+deviceSn+"' ";
        List<String> contact_status = jdbcTemplate.queryForList(sql,String.class);
        List<String> contact_status = jdbcTemplate.queryForList(sql,String.class);
@ -754,8 +770,9 @@ public class PatientInfoPlatFormService {
                sql = " select *,CAST(DATE_FORMAT(record_date,'%Y-%m-%d %H:%i:%S') as char) record_date,  " +
                sql = " select *,CAST(DATE_FORMAT(record_date,'%Y-%m-%d %H:%i:%S') as char) record_date,  " +
                        " CAST(DATE_FORMAT(sort_date,'%Y-%m-%d %H:%i:%S') as char) sort_date,  " +
                        " CAST(DATE_FORMAT(sort_date,'%Y-%m-%d %H:%i:%S') as char) sort_date,  " +
                        " CAST(DATE_FORMAT(czrq,'%Y-%m-%d %H:%i:%S') as char) czrq from wlyy_patient_health_index " +
                        " CAST(DATE_FORMAT(czrq,'%Y-%m-%d %H:%i:%S') as char) czrq from wlyy_patient_health_index " +
                        " where device_sn='"+deviceSn+"' and del=1 ORDER BY sort_date DESC LIMIT 1  ";
                List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql);
                        " where device_sn='"+deviceSn+"' and del=1  ";
                pageSql =bl?" and record_date >= '"+beforeTime+"' and record_date <= '"+afterTime+"' ORDER BY sort_date DESC limit 1 ": " ORDER BY sort_date DESC LIMIT 1  ";
                List<Map<String,Object>> sqlResult = jdbcTemplate.queryForList(sql+pageSql);
                if (sqlResult.size()>0){
                if (sqlResult.size()>0){
                    detailInfo.put("healthIndex",sqlResult.get(0));
                    detailInfo.put("healthIndex",sqlResult.get(0));
                }else {
                }else {
@ -766,8 +783,9 @@ public class PatientInfoPlatFormService {
                sql = " select *,CAST(DATE_FORMAT(record_date,'%Y-%m-%d %H:%i:%S') as char) record_date,  " +
                sql = " select *,CAST(DATE_FORMAT(record_date,'%Y-%m-%d %H:%i:%S') as char) record_date,  " +
                        " CAST(DATE_FORMAT(sort_date,'%Y-%m-%d %H:%i:%S') as char) sort_date,  " +
                        " CAST(DATE_FORMAT(sort_date,'%Y-%m-%d %H:%i:%S') as char) sort_date,  " +
                        " CAST(DATE_FORMAT(czrq,'%Y-%m-%d %H:%i:%S') as char) czrq from wlyy_patient_health_index " +
                        " CAST(DATE_FORMAT(czrq,'%Y-%m-%d %H:%i:%S') as char) czrq from wlyy_patient_health_index " +
                        " where device_sn='"+deviceSn+"' and del=1 ORDER BY sort_date DESC LIMIT 1  ";
                sqlResult = jdbcTemplate.queryForList(sql);
                        " where device_sn='"+deviceSn+"' and del=1  ";
                pageSql =bl?" and record_date >= '"+beforeTime+"' and record_date <= '"+afterTime+"' ORDER BY sort_date DESC limit 1 ": " ORDER BY sort_date DESC LIMIT 1  ";
                sqlResult = jdbcTemplate.queryForList(sql+pageSql);
                if (sqlResult.size()>0){
                if (sqlResult.size()>0){
                    detailInfo.put("healthIndex",sqlResult.get(0));
                    detailInfo.put("healthIndex",sqlResult.get(0));
                }else {
                }else {
@ -783,6 +801,18 @@ public class PatientInfoPlatFormService {
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1 " +
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1 " +
                        "ORDER BY create_time desc limit 1 ";
                        "ORDER BY create_time desc limit 1 ";
                if(bl){
                    sql = "  select o.id,p.id patient,p.name,p.idcard,p.residential_area,'20' OrderType,'1' type,o.serve_address,'紧急呼叫' serve_desc,  " +
                            " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_emergency_assistance_order o " +
                            " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1 " +
                            " and o.create_time >= '"+beforeTime+"' and o.create_time <= '"+afterTime+"' " +
                            " UNION " +
                            " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                            " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                            " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1 " +
                            " and o.create_time >= '"+beforeTime+"' and o.create_time <= '"+afterTime+"' " +
                            " ORDER BY create_time desc limit 1 ";
                }
                sqlResult = jdbcTemplate.queryForList(sql);
                sqlResult = jdbcTemplate.queryForList(sql);
                if (sqlResult.size()>0){
                if (sqlResult.size()>0){
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("warnStatus",true);
@ -812,19 +842,23 @@ public class PatientInfoPlatFormService {
                    detailInfo.put("wear_flagName", null);
                    detailInfo.put("wear_flagName", null);
                    detailInfo.put("remaining_power",null);
                    detailInfo.put("remaining_power",null);
                }
                }
                sql = "select *,CAST(DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') as char) create_time from base_patient_step where 1=1  and device_sn='"+deviceSn+"' order by create_time desc limit 1";
                sqlResult = jdbcTemplate.queryForList(sql);
                //手表步数数据
                sql = "select *,CAST(DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') as char) create_time " +
                        " from base_patient_step where 1=1  and device_sn='"+deviceSn+"' ";
                pageSql =bl?" and create_time >= '"+beforeTime+"' and create_time <= '"+afterTime+"' order by create_time desc limit 1 ": " order by create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql+pageSql);
                if (sqlResult.size()>0) {
                if (sqlResult.size()>0) {
                    detailInfo.put("steps",sqlResult.get(0));
                    detailInfo.put("steps",sqlResult.get(0));
                }else {
                }else {
                    detailInfo.put("steps","无步数数据");
                    detailInfo.put("steps","无步数数据");
                }
                }
                //手表心率数据
                sql = " select *,CAST(DATE_FORMAT(record_date,'%Y-%m-%d %H:%i:%S') as char) record_date,  " +
                sql = " select *,CAST(DATE_FORMAT(record_date,'%Y-%m-%d %H:%i:%S') as char) record_date,  " +
                        " CAST(DATE_FORMAT(sort_date,'%Y-%m-%d %H:%i:%S') as char) sort_date,  " +
                        " CAST(DATE_FORMAT(sort_date,'%Y-%m-%d %H:%i:%S') as char) sort_date,  " +
                        " CAST(DATE_FORMAT(czrq,'%Y-%m-%d %H:%i:%S') as char) czrq from wlyy_patient_health_index " +
                        " CAST(DATE_FORMAT(czrq,'%Y-%m-%d %H:%i:%S') as char) czrq from wlyy_patient_health_index " +
                        " where type=5 and device_sn='"+deviceSn+"' and del=1 ORDER BY sort_date DESC LIMIT 1  ";
                sqlResult = jdbcTemplate.queryForList(sql);
                        " where type=5 and device_sn='"+deviceSn+"' and del=1   ";
                pageSql =bl?" and record_date >= '"+beforeTime+"' and record_date <= '"+afterTime+"'  ORDER BY sort_date DESC limit 1 ": " ORDER BY sort_date DESC LIMIT 1 ";
                sqlResult = jdbcTemplate.queryForList(sql+pageSql);
                if (sqlResult.size()>0){
                if (sqlResult.size()>0){
                    detailInfo.put("heartRate",sqlResult.get(0));
                    detailInfo.put("heartRate",sqlResult.get(0));
                }else {
                }else {
@ -843,6 +877,23 @@ public class PatientInfoPlatFormService {
                        tmp.put("city", dw.getString("last_city"));
                        tmp.put("city", dw.getString("last_city"));
                        tmp.put("province", dw.getString("last_province"));
                        tmp.put("province", dw.getString("last_province"));
                        tmp.put("address", dw.getString("last_address"));
                        tmp.put("address", dw.getString("last_address"));
                        Long aLong = dw.getJSONObject("created_at").getLong("$date");
                        tmp.put("createTime",aLong==null?"":DateUtil.dateToStrLong(new Date(aLong)));
                        //获取居民家庭定位
                        BasePatientDO p = patientDao.findById(patient);
                        if(p != null && StringUtils.isNotBlank(p.getHomeLatLon())){
                            String homeLatLon = p.getHomeLatLon();
                            double homeLat = Double.parseDouble(homeLatLon.split(",")[0]);
                            double homeLon = Double.parseDouble(homeLatLon.split(",")[1]);
                            double homeDistance = countDistance.getDistance(homeLat,homeLon,lat,lon);
                            if (homeDistance * 1000 > 50) {
                                detailInfo.put("isAtHome","离家");
                            }else {
                                detailInfo.put("isAtHome","居家");
                            }
                        }else {
                            detailInfo.put("isAtHome","");
                        }
                        detailInfo.put("location", tmp);
                        detailInfo.put("location", tmp);
                    }
                    }
                }
                }
@ -850,8 +901,9 @@ public class PatientInfoPlatFormService {
            case "7"://报警器 电量  是否报警、在线状态
            case "7"://报警器 电量  是否报警、在线状态
                sql = "  select o.id,p.id patient,p.name,p.idcard,p.residential_area,'20' OrderType,'1' type,o.serve_address,'紧急呼叫' serve_desc,  " +
                sql = "  select o.id,p.id patient,p.name,p.idcard,p.residential_area,'20' OrderType,'1' type,o.serve_address,'紧急呼叫' serve_desc,  " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_emergency_assistance_order o " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_emergency_assistance_order o " +
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1 ORDER BY create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql);
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1  ";
                pageSql =bl?" and o.create_time >= '"+beforeTime+"' and o.create_time <= '"+afterTime+"'  ORDER BY create_time desc  limit 1 ": " ORDER BY create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql+pageSql);
                if (sqlResult.size()>0){
                if (sqlResult.size()>0){
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("orderInfo",sqlResult.get(0));
                    detailInfo.put("orderInfo",sqlResult.get(0));
@ -875,9 +927,9 @@ public class PatientInfoPlatFormService {
            case "12"://监控
            case "12"://监控
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                     " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                     " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                     " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1 " +
                     "ORDER BY create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql);
                     " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1 ";
                pageSql =bl?" and o.create_time >= '"+beforeTime+"' and o.create_time <= '"+afterTime+"' ORDER BY create_time desc  limit 1 ": " ORDER BY create_time desc limit 1  ";
                sqlResult = jdbcTemplate.queryForList(sql+pageSql);
                if (sqlResult.size()>0){
                if (sqlResult.size()>0){
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("orderInfo",sqlResult.get(0));
                    detailInfo.put("orderInfo",sqlResult.get(0));
@ -897,9 +949,9 @@ public class PatientInfoPlatFormService {
            case "13"://床带 是否压床、 心率和呼吸频率、在线状态
            case "13"://床带 是否压床、 心率和呼吸频率、在线状态
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1 " +
                        "ORDER BY create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql);
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1 ";
                pageSql =bl?" and o.create_time >= '"+beforeTime+"' and o.create_time <= '"+afterTime+"' ORDER BY create_time desc  limit 1 ": " ORDER BY create_time desc limit 1  ";
                sqlResult = jdbcTemplate.queryForList(sql+pageSql);
                if (sqlResult.size()>0){
                if (sqlResult.size()>0){
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("orderInfo",sqlResult.get(0));
                    detailInfo.put("orderInfo",sqlResult.get(0));
@ -933,9 +985,9 @@ public class PatientInfoPlatFormService {
            case "14"://燃气
            case "14"://燃气
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1 " +
                        "ORDER BY create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql);
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1 ";
                pageSql =bl?" and o.create_time >= '"+beforeTime+"' and o.create_time <= '"+afterTime+"' ORDER BY create_time desc   limit 1 ": " ORDER BY create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql+pageSql);
                if (sqlResult.size()>0){
                if (sqlResult.size()>0){
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("orderInfo",sqlResult.get(0));
                    detailInfo.put("orderInfo",sqlResult.get(0));
@ -955,9 +1007,9 @@ public class PatientInfoPlatFormService {
            case "15"://烟感
            case "15"://烟感
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1 " +
                        "ORDER BY create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql);
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1 ";
                pageSql =bl?" and o.create_time >= '"+beforeTime+"' and o.create_time <= '"+afterTime+"' ORDER BY create_time desc  limit 1  ": " ORDER BY create_time desc limit 1  ";
                sqlResult = jdbcTemplate.queryForList(sql+pageSql);
                if (sqlResult.size()>0){
                if (sqlResult.size()>0){
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("orderInfo",sqlResult.get(0));
                    detailInfo.put("orderInfo",sqlResult.get(0));
@ -994,6 +1046,18 @@ public class PatientInfoPlatFormService {
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1  " +
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1  " +
                        "ORDER BY create_time desc limit 1 ";
                        "ORDER BY create_time desc limit 1 ";
                if(bl){
                    sql = "  select o.id,p.id patient,p.name,p.idcard,p.residential_area,'20' OrderType,'1' type,o.serve_address,'紧急呼叫' serve_desc,  " +
                            " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_emergency_assistance_order o " +
                            " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1 " +
                            " and o.create_time >= '"+beforeTime+"' and o.create_time <= '"+afterTime+"' " +
                            " UNION " +
                            " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                            " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                            " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1  " +
                            " and o.create_time >= '"+beforeTime+"' and o.create_time <= '"+afterTime+"' " +
                            "ORDER BY create_time desc  limit 1  ";
                }
                sqlResult = jdbcTemplate.queryForList(sql);
                sqlResult = jdbcTemplate.queryForList(sql);
                if (sqlResult.size()>0){
                if (sqlResult.size()>0){
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("warnStatus",true);
@ -1001,54 +1065,114 @@ public class PatientInfoPlatFormService {
                }else {
                }else {
                    detailInfo.put("warnStatus",false);
                    detailInfo.put("warnStatus",false);
                }
                }
                sql = "SELECT *,CAST(DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') as char) create_time FROM base_yxdevice_index  WHERE sn = '" + deviceSn + "' AND lon != 0 AND lat != 0 ORDER BY create_time DESC limit 1";
                sqlResult = jdbcTemplate.queryForList(sql);
                sql = "SELECT *,CAST(DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') as char) create_time FROM base_yxdevice_index  " +
                        " WHERE sn = '" + deviceSn + "' AND lon != 0 AND lat != 0 ";
                pageSql =bl?" and create_time >= '"+beforeTime+"' and create_time <= '"+afterTime+"'  ORDER BY create_time  limit 1 ": " ORDER BY create_time DESC limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql+pageSql);
                if (sqlResult.size()>0){
                if (sqlResult.size()>0){
                    detailInfo.put("newlonlat",sqlResult.get(0));
                    detailInfo.put("newlonlat",sqlResult.get(0));
                    String address = LatitudeUtils.getLocationAddress(sqlResult.get(0).get("lat").toString(), sqlResult.get(0).get("lon").toString());
                    String address = LatitudeUtils.getLocationAddress(sqlResult.get(0).get("lat").toString(), sqlResult.get(0).get("lon").toString());
//                    JSONObject dz =  gpsUtil.gcj02_To_Bd09(Double.parseDouble(sqlResult.get(0).get("lat").toString()),Double.parseDouble(sqlResult.get(0).get("lon").toString()));
//                    JSONObject dz =  gpsUtil.gcj02_To_Bd09(Double.parseDouble(sqlResult.get(0).get("lat").toString()),Double.parseDouble(sqlResult.get(0).get("lon").toString()));
                    detailInfo.put("location", address);
                    detailInfo.put("location", address);
                    //判断是否居家
                    BasePatientDO p = patientDao.findById(patient);
                    if(p != null && StringUtils.isNotBlank(p.getHomeLatLon())){
                        String homeLatLon = p.getHomeLatLon();
                        double homeLat = Double.parseDouble(homeLatLon.split(",")[0]);
                        double homeLon = Double.parseDouble(homeLatLon.split(",")[1]);
                        double homeDistance = countDistance.getDistance(homeLat,homeLon,Double.parseDouble(sqlResult.get(0).get("lat").toString()),(Double.parseDouble(sqlResult.get(0).get("lon").toString())));
                        if (homeDistance * 1000 > 50) {
                            detailInfo.put("isAtHome","离家");
                        }else {
                            detailInfo.put("isAtHome","居家");
                        }
                    }else {
                        detailInfo.put("isAtHome","");
                    }
                }else {
                }else {
                    detailInfo.put("newlonlat",null);
                    detailInfo.put("newlonlat",null);
                    detailInfo.put("location", null);
                    detailInfo.put("location", null);
                    detailInfo.put("isAtHome","");
                }
                }
                break;
                break;
            case "18"://日常用水监测
            case "18"://日常用水监测
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                      " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                      " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                      " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1  " +
                      "ORDER BY create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql);
                      " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1  ";
                pageSql =bl?" and o.create_time >= '"+beforeTime+"' and o.create_time <= '"+afterTime+"' ORDER BY create_time desc  limit 1 " : " ORDER BY create_time desc limit 1  ";
                sqlResult = jdbcTemplate.queryForList(sql+pageSql);
                if (sqlResult.size()>0){
                if (sqlResult.size()>0){
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("orderInfo",sqlResult.get(0));
                    detailInfo.put("orderInfo",sqlResult.get(0));
                }else {
                }else {
                    detailInfo.put("warnStatus",false);
                    detailInfo.put("warnStatus",false);
                }
                }
                break;
            case "19"://门禁监测
            case "19"://门禁监测
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1  " +
                        "ORDER BY create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql);
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1  ";
                pageSql = bl?" and o.create_time >= '"+beforeTime+"' and o.create_time <= '"+afterTime+"' ORDER BY create_time desc  ":" ORDER BY create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql+pageSql);
                if (sqlResult.size()>0){
                if (sqlResult.size()>0){
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("orderInfo",sqlResult.get(0));
                    detailInfo.put("orderInfo",sqlResult.get(0));
                }else {
                }else {
                    detailInfo.put("warnStatus",false);
                    detailInfo.put("warnStatus",false);
                }
                }
                //门禁数据
                sql = " SELECT f.img,CAST(DATE_FORMAT(f.pass_time,'%Y-%m-%d %H:%i:%S') as char) passTime,p.name,f.patient from base_device_face_record f " +
                        " inner join base_patient p on f.patient = p.id " +
                        " where f.patient = '"+patient+"' ";
                pageSql = bl?" and f.pass_time >= '"+beforeTime+"' and f.pass_time <= '"+afterTime+"' ORDER BY f.pass_time desc  limit 1 ":" ORDER BY f.pass_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql+pageSql);
                if(sqlResult.size()>0){
                    detailInfo.putAll(sqlResult.get(0));
                }else {
                    detailInfo.put("img","");
                    detailInfo.put("passTime","");
                    detailInfo.put("name","");
                    detailInfo.put("patient","");
                }
                break;
            case "20"://电表监测
            case "20"://电表监测
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1  " +
                        "ORDER BY create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql);
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1  ";
                pageSql = bl?" and o.create_time >= '"+beforeTime+"' and o.create_time <= '"+afterTime+"' ORDER BY create_time desc  limit 1 ":" ORDER BY create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql+pageSql);
                if (sqlResult.size()>0){
                if (sqlResult.size()>0){
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("orderInfo",sqlResult.get(0));
                    detailInfo.put("orderInfo",sqlResult.get(0));
                }else {
                }else {
                    detailInfo.put("warnStatus",false);
                    detailInfo.put("warnStatus",false);
                }
                }
                break;
            case "21"://todo 天然气
                /*sql = " select o.id,p.id patient,p.name,p.idcard,p.residential_area,'22' OrderType,'1' type,o.serve_address,o.serve_desc,  " +
                        " o.status,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') create_time from base_security_monitoring_order o " +
                        " INNER JOIN base_patient p on p.id = o.patient where device_sn='"+deviceSn+"' and o.status=1  ";
                pageSql = bl?" and o.create_time >= '"+beforeTime+"' and o.create_time <= '"+afterTime+"' ORDER BY create_time desc  limit 1 ":" ORDER BY create_time desc limit 1 ";
                sqlResult = jdbcTemplate.queryForList(sql+pageSql);
                if (sqlResult.size()>0){
                    detailInfo.put("warnStatus",true);
                    detailInfo.put("orderInfo",sqlResult.get(0));
                }else {
                    detailInfo.put("warnStatus",false);
                }*/
                sql = " SELECT g.syndyqzl,g.syndfy,g.lszyql,CAST(DATE_FORMAT(g.tong_time,'%Y-%m-%d %H:%i:%S') as char) as createTime from hz.gsq_hzrqjmyhglxtrqgrxx g " +
                        " inner join base.base_patient p on g.yhsfzh = p.idcard " +
                        " where p.id = '"+patient+"' ";
                pageSql = bl?" and g.tong_time >= '"+beforeTime+"' and g.tong_time <= '"+afterTime+"' ORDER BY g.tongid desc LIMIT 1 ":" ORDER BY g.tongid desc LIMIT 1 ";
                sqlResult = jdbcTemplate.queryForList(sql+pageSql);
                if(sqlResult.size() >0 ){
                    detailInfo.putAll(sqlResult.get(0));
                }else {
                    detailInfo.put("syndyqzl","");
                    detailInfo.put("syndfy","");
                    detailInfo.put("lszyql","");
                }
        }
        }
        return detailInfo;
        return detailInfo;
    }
    }

+ 16 - 5
svr/svr-wlyy-health-bank/src/main/java/com/yihu/jw/util/TransforSqlUtl.java

@ -5,17 +5,28 @@ package com.yihu.jw.util;
 */
 */
public class TransforSqlUtl {
public class TransforSqlUtl {
    private static final boolean dbEncrypt=false; //不需要加密时 改为false即可,实体类注释需同时处理
    public static String accountName(String sql){
    public static String accountName(String sql){
        return sql.replaceAll("ba1.account_name","CAST(AES_DECRYPT(from_base64(ba1.account_name),'jkzl2021ZJXL*#%a')AS char)");
        if(dbEncrypt){
            return sql.replaceAll("ba1.account_name","CAST(AES_DECRYPT(from_base64(ba1.account_name),'jkzl2021ZJXL*#%a')AS char)");
        }
        return sql;
    }
    }
    public static String wlyyHealthBankAccountAll(String sql){
    public static String wlyyHealthBankAccountAll(String sql){
        String str = "*,CAST(AES_DECRYPT(from_base64(account_name),'jkzl2021ZJXL*#%a') AS CHAR ) AS account_name ";
        return sql.replace("*",str);
        if(dbEncrypt){
            String str = "*,CAST(AES_DECRYPT(from_base64(account_name),'jkzl2021ZJXL*#%a') AS CHAR ) AS account_name ";
            return sql.replace("*",str);
        }
        return sql;
    }
    }
    public static String wlyyHealthBankTaskPatientDetailAll(String sql){
    public static String wlyyHealthBankTaskPatientDetailAll(String sql){
        String str = "*,CAST(AES_DECRYPT(from_base64(patient_idcard),'jkzl2021ZJXL*#%a') AS CHAR ) AS patient_idcard ";
        return sql.replace("*",str);
        if(dbEncrypt){
            String str = "*,CAST(AES_DECRYPT(from_base64(patient_idcard),'jkzl2021ZJXL*#%a') AS CHAR ) AS patient_idcard ";
            return sql.replace("*",str);
        }
        return sql;
    }
    }
}
}

+ 27 - 2
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/service/rehabilitation/RehabilitationManageService.java

@ -6,7 +6,6 @@ import com.yihu.jw.dao.SpecialistPatientRelationDao;
import com.yihu.jw.dao.rehabilitation.*;
import com.yihu.jw.dao.rehabilitation.*;
import com.yihu.jw.entity.specialist.SpecialistPatientRelationDO;
import com.yihu.jw.entity.specialist.SpecialistPatientRelationDO;
import com.yihu.jw.entity.specialist.rehabilitation.*;
import com.yihu.jw.entity.specialist.rehabilitation.*;
import com.yihu.jw.entity.util.AesEncryptUtils;
import com.yihu.jw.entity.util.TransforSqlUtl;
import com.yihu.jw.entity.util.TransforSqlUtl;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
@ -477,7 +476,7 @@ public class RehabilitationManageService {
        for (int i=1;i<planIdlist.length;i++){
        for (int i=1;i<planIdlist.length;i++){
            planCondition .append(",'"+planIdlist[i]+"'");
            planCondition .append(",'"+planIdlist[i]+"'");
        }
        }
        String sql = " select d.*,DATE_FORMAT(d.execute_time,'%Y/%m/%d %H:%i') as executeTime ,i.code,i.name from wlyy_specialist.wlyy_rehabilitation_plan_detail d " +
        String sql = " select d.*,DATE_FORMAT(d.execute_time,'%Y/%m/%d %H:%i') as executeTime ,i.code,i.name,1 as flag from wlyy_specialist.wlyy_rehabilitation_plan_detail d " +
                " LEFT JOIN wlyy_rehabilitation_service_item i on i.code = d.hospital_service_item_id  " +
                " LEFT JOIN wlyy_rehabilitation_service_item i on i.code = d.hospital_service_item_id  " +
                " where  d.plan_id in ("+planCondition+" )AND  d.execute_time IS NOT NULL  and d.execute_time <>'' " ;
                " where  d.plan_id in ("+planCondition+" )AND  d.execute_time IS NOT NULL  and d.execute_time <>'' " ;
        if(searchTask!=null){
        if(searchTask!=null){
@ -504,6 +503,32 @@ public class RehabilitationManageService {
        sql +="  order by d.execute_time desc ";
        sql +="  order by d.execute_time desc ";
        sql = TransforSqlUtl.wlyy_rehabilitation_plan_detailAll2(sql);
        sql = TransforSqlUtl.wlyy_rehabilitation_plan_detailAll2(sql);
        List<Map<String,Object>> rehabilitationDetailList = jdbcTemplate.queryForList(sql);
        List<Map<String,Object>> rehabilitationDetailList = jdbcTemplate.queryForList(sql);
        String planPatientSql = " SELECT patient FROM wlyy_specialist.wlyy_patient_rehabilitation_plan WHERE id in ("+planCondition+" )";
        List<Map<String, Object>> patientCodeList = jdbcTemplate.queryForList(planPatientSql);
        List<Map<String, Object>> list = null;
        if (patientCodeList.size()>0&&null!=searchTask) {
            String patient =  patientCodeList.get(0).get("patient").toString();
            if (7 == searchTask){ //处方续方 flag 用于判断 1.7.0.5 新增
                String cfxfSql = "SELECT LEFT ( pr.create_time, 19 ) AS executeTime ,LEFT ( pr.pres_create_time, 19 ) AS buildCreateTime , pr.doctor AS doctorCode, pr.doctor_name AS doctorNmae,pr.`status`," +
                        " pr.hospital_name, pr.hospital, p.`name` AS patientName,p.code AS patientCode,pr.`code` AS id,7 as code, 2 as flag " +
                        " FROM  wlyy.wlyy_prescription pr  LEFT JOIN wlyy.wlyy_patient p ON pr.patient = p.`code` WHERE " +
                        "  1 = 1  AND pr.STATUS = '100' AND p.code= '"+patient+"' GROUP BY  pr.CODE ";
                list = jdbcTemplate.queryForList(cfxfSql);
            }
            if (6 == searchTask){ //随访
                String sfSql = "SELECT DISTINCT DATE_FORMAT(wf.followup_date,'%Y/%m/%d %H:%i') followupDate,DATE_FORMAT(wf.followup_plan_date,'%Y/%m/%d %H:%i') executeTime,wf.doctor_code doctorCode," +
                        " wf.patient_code AS patientCode,wf.patient_name AS patientName,wf.doctor_name doctorName,wf.`status` AS `status`,wf.org_name orgName," +
                        " wf.org_code orgCode,sd.value AS `value`, wf.followup_type  followupType,wf.id AS id, 6 AS code,2 as flag FROM  wlyy.wlyy_followup wf " +
                        " LEFT JOIN wlyy.system_dict sd ON wf.followup_type = sd.CODE " +
                        " AND sd.dict_name = 'FOLLOWUP_WAY_DICT' WHERE wf.status !=0  AND wf.patient_code = '"+patient+"' ";
                list = jdbcTemplate.queryForList(sfSql);
            }
            if (list.size()>0)rehabilitationDetailList.addAll(list);
        }
        return ObjEnvelop.getSuccess(SpecialistMapping.api_success,rehabilitationDetailList);
        return ObjEnvelop.getSuccess(SpecialistMapping.api_success,rehabilitationDetailList);
    }
    }