|  | @ -1,8 +1,15 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.care.service.device;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.yihu.jw.care.util.DateUtil;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.zhDevice.dao.ZhAlarmDealSyncDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.zhDevice.dao.ZhDataBatchSyncDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.zhDevice.dao.ZhDeviceSyncDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.zhDevice.entity.ZhAlarmDealSyncDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.zhDevice.entity.ZhDataBatchSyncDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.zhDevice.entity.ZhDeviceSyncDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.device.DeviceDataPushLog;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.jdbc.core.BeanPropertyRowMapper;
 | 
	
		
			
				|  |  | import org.springframework.jdbc.core.JdbcTemplate;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -18,8 +25,6 @@ import java.util.Map;
 | 
	
		
			
				|  |  | public class DeviceSyncService {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private JdbcTemplate jdbcTemplate;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
	
		
			
				|  | @ -126,7 +131,7 @@ public class DeviceSyncService {
 | 
	
		
			
				|  |  |             zhDeviceSyncDO.setLng(lng);//经
 | 
	
		
			
				|  |  |             zhDeviceSyncDO.setState(1);  //1-新增/修改,-1-删除
 | 
	
		
			
				|  |  |             zhDeviceSyncDO.setStatus(1);//0-离线,1-在线,3-停用(长期离线)
 | 
	
		
			
				|  |  |             if (1!=Integer.parseInt(deviceS.get("contact_status").toString())){
 | 
	
		
			
				|  |  |             if (1 != Integer.parseInt(deviceS.get("contact_status").toString())) {
 | 
	
		
			
				|  |  |                 zhDeviceSyncDO.setStatus(0);
 | 
	
		
			
				|  |  |                 zhDeviceSyncDO.setDisabledType(4);
 | 
	
		
			
				|  |  |                 zhDeviceSyncDO.setReason("长时间未连接网络获取最新状态!默认判定离线状态");
 | 
	
	
		
			
				|  | @ -143,7 +148,212 @@ public class DeviceSyncService {
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     ZhDataBatchSyncDao zhDataBatchSyncDao;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public void dataBatchSync() {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String date = DateUtil.getStringDateShort();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String startDate = date+" 00:00:00";
 | 
	
		
			
				|  |  |         String endDate = date+" 23:59:59";
 | 
	
		
			
				|  |  |         String sql = "";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<ZhDataBatchSyncDO> result = new ArrayList<>();
 | 
	
		
			
				|  |  |         String devicePushLogSql = "select * from device_data_push_log where create_time = '" + startDate + "' and create_time <= '" + endDate + "' ";
 | 
	
		
			
				|  |  |         List<DeviceDataPushLog> deviceDataPushLogList = jdbcTemplate.query(devicePushLogSql, new BeanPropertyRowMapper<>(DeviceDataPushLog.class));
 | 
	
		
			
				|  |  |         for (DeviceDataPushLog deviceDataPushLog : deviceDataPushLogList) {
 | 
	
		
			
				|  |  |             ZhDataBatchSyncDO zhDataBatchSyncDO =new ZhDataBatchSyncDO();
 | 
	
		
			
				|  |  |             String deviceSN = deviceDataPushLog.getDeviceSn();
 | 
	
		
			
				|  |  |             List<Map<String, Object>> list = new ArrayList<>();
 | 
	
		
			
				|  |  |             switch (Integer.parseInt(deviceDataPushLog.getDeviceCategory())) {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 case 14:  //气感
 | 
	
		
			
				|  |  |                     sql = "select * from base.base_security_monitoring_order where device_sn = '" + deviceSN + "' and topic_item ='preventGasLeakage' and create_time >= '"+startDate+"' and create_time <= '"+endDate+"' ";
 | 
	
		
			
				|  |  |                     list = jdbcTemplate.queryForList(sql);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setReporttime(deviceDataPushLog.getCreateTime().toString());
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setDevicecode(deviceSN);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                     if (list.size()>0) {
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setAlarmCode(list.get(0).get("id").toString());
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setMessagetype("2");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setAlarmtype("1");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setAlarmlevel("4");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setName(list.get(0).get("serve_desc").toString());
 | 
	
		
			
				|  |  |                     }else {
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setMessagetype("1");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setName(deviceDataPushLog.getApiName());
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setDataType("2");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setUpdateValue(deviceDataPushLog.getData());
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     result.add(zhDataBatchSyncDO);
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |                 case 15:  //烟感
 | 
	
		
			
				|  |  |                     sql = "select * from base.base_security_monitoring_order where device_sn = '" + deviceSN + "' and topic_item ='preventFire' and create_time >= '"+startDate+"' and create_time <= '"+endDate+"' ";
 | 
	
		
			
				|  |  |                     list = jdbcTemplate.queryForList(sql);
 | 
	
		
			
				|  |  |                     if (list.size()>0) {
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setAlarmCode(list.get(0).get("id").toString());
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setMessagetype("2");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setAlarmtype("1");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setAlarmlevel("3");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setName(list.get(0).get("serve_desc").toString());
 | 
	
		
			
				|  |  |                     }else {
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setMessagetype("1");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setName(deviceDataPushLog.getApiName());
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setDataType("2");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setUpdateValue(deviceDataPushLog.getData());
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     result.add(zhDataBatchSyncDO);
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |                 case 12: //防跌倒
 | 
	
		
			
				|  |  |                     sql = "select * from base.base_security_monitoring_order where device_sn = '" + deviceSN + "' and topic_item ='preventFire' and create_time >= '"+startDate+"' and create_time <= '"+endDate+"' ";
 | 
	
		
			
				|  |  |                     list = jdbcTemplate.queryForList(sql);
 | 
	
		
			
				|  |  |                     if (list.size()>0) {
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setAlarmCode(list.get(0).get("id").toString());
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setMessagetype("2");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setAlarmtype("1");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setAlarmlevel("2");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setName(list.get(0).get("serve_desc").toString());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                     }else {
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setMessagetype("1");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setName(deviceDataPushLog.getApiName());
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setDataType("2");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setUpdateValue(deviceDataPushLog.getData());
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     result.add(zhDataBatchSyncDO);
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |                 case 2:   //血压
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setMessagetype("1");
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setReporttime(deviceDataPushLog.getCreateTime().toString());
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setDataType("2");
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setDevicecode(deviceSN);
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setName("血压监测");
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setUpdateValue(deviceDataPushLog.getData());
 | 
	
		
			
				|  |  |                     result.add(zhDataBatchSyncDO);
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |                 case 1:   //血糖
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setMessagetype("1");
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setReporttime(deviceDataPushLog.getCreateTime().toString());
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setDataType("2");
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setDevicecode(deviceSN);
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setName("血糖检测");
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setUpdateValue(deviceDataPushLog.getData());
 | 
	
		
			
				|  |  |                     result.add(zhDataBatchSyncDO);
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |                 case 13:  //睡眠带
 | 
	
		
			
				|  |  |                     sql = "";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |                 case 16: //云芯防走失拐杖
 | 
	
		
			
				|  |  |                     sql = "select * from base_security_monitoring_order where device_sn = '"+deviceSN+"' and topic_item ='preventLost' and create_time >= '"+startDate+"' and create_time ='"+endDate+"'";
 | 
	
		
			
				|  |  |                     list = jdbcTemplate.queryForList(sql);
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setDevicecode(deviceSN);
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setReporttime(DateUtil.dateToStrLong(deviceDataPushLog.getCreateTime()));
 | 
	
		
			
				|  |  |                     if (0<list.size()){
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setAlarmCode(list.get(0).get("id").toString());
 | 
	
		
			
				|  |  |                         //JSONObject gzObj = JSONObject.parseObject(JSON.toJSONString(list.get(0)));
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setMessagetype("2");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setAlarmtype("1");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setAlarmlevel("4");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setName(list.get(0).get("serve_desc").toString());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                     }else {
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setMessagetype("1");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setName(deviceDataPushLog.getApiName());
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setDataType("2");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setUpdateValue(deviceDataPushLog.getData());
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     result.add(zhDataBatchSyncDO);
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |                 case 4: // 智能手表
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setDevicecode(deviceSN);
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setReporttime(deviceDataPushLog.getCreateTime().toString());
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setAlarmlevel("1");
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setMessagetype("1");
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setName(deviceDataPushLog.getApiName());
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setDataType("2");
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setUpdateValue(deviceDataPushLog.getData());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                     result.add(zhDataBatchSyncDO);
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |                 case 7: //SOS紧急呼叫器
 | 
	
		
			
				|  |  |                     sql = "select * from base_emergency_assistance_order where device_sn = '"+deviceSN+"' and topic_item ='preventLost' and create_time >= '"+startDate+"' and create_time ='"+endDate+"'";
 | 
	
		
			
				|  |  |                     list = jdbcTemplate.queryForList(sql);
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setDevicecode(deviceSN);
 | 
	
		
			
				|  |  |                     zhDataBatchSyncDO.setReporttime(deviceDataPushLog.getCreateTime().toString());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                     if (list.size() > 0) {
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setAlarmCode(list.get(0).get("id").toString());
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setMessagetype("2");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setName("紧急呼叫");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setAlarmlevel("1");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setAlarmtype("4");
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                     }else {
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setDataType("2");
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setUpdateValue(deviceDataPushLog.getData());
 | 
	
		
			
				|  |  |                         zhDataBatchSyncDO.setMessagetype("1");
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     result.add(zhDataBatchSyncDO);
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |                 default:
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         zhDataBatchSyncDao.save(result);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     ZhAlarmDealSyncDao zhAlarmDealSyncDao;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public void alarmDealSync() {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String date = DateUtil.getStringDateShort();
 | 
	
		
			
				|  |  |         String startDate = date + " 00:00:00";
 | 
	
		
			
				|  |  |         String endDate = date + " 23:59:59";
 | 
	
		
			
				|  |  |         List<ZhAlarmDealSyncDO> result = new ArrayList<>();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String sql = "SELECT id,status,complete_time,doctor_name,'杭州市拱墅区朝晖街道' AS org_name,serve_desc FROM base_security_monitoring_order WHERE create_time >= '"+startDate+"' AND create_time <= '"+endDate+"' AND device_sn IS NOT NULL \n" +
 | 
	
		
			
				|  |  |                 "UNION \n" +
 | 
	
		
			
				|  |  |                 "SELECT id,status,complete_time,doctor_name,org_name,'紧急预警' AS serve_desc FROM base_emergency_assistance_order WHERE create_time >= '"+startDate+"' AND create_time <= '"+endDate+"' AND device_sn IS NOT NULL";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         for (Map<String, Object> map : list) {
 | 
	
		
			
				|  |  |             ZhAlarmDealSyncDO zhAlarmDealSyncDO = new ZhAlarmDealSyncDO();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             zhAlarmDealSyncDO.setAlarmcode(map.get("id").toString());
 | 
	
		
			
				|  |  |             zhAlarmDealSyncDO.setAlarmname("紧急预警");
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             switch (Integer.parseInt(map.get("status").toString())) {
 | 
	
		
			
				|  |  |                 case 0:  //已完成      2 已完成
 | 
	
		
			
				|  |  |                     zhAlarmDealSyncDO.setAlarmstatus(2);
 | 
	
		
			
				|  |  |                     zhAlarmDealSyncDO.setDealtime(map.get("complete_time").toString());
 | 
	
		
			
				|  |  |                     zhAlarmDealSyncDO.setHandler(map.get("doctor_name").toString());
 | 
	
		
			
				|  |  |                     zhAlarmDealSyncDO.setDept(map.get("org_name").toString());
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |                 case 1:  //预警中      1 处理中
 | 
	
		
			
				|  |  |                     zhAlarmDealSyncDO.setAlarmstatus(1);
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |                 default:  //3 已关闭
 | 
	
		
			
				|  |  |                     zhAlarmDealSyncDO.setAlarmstatus(3);
 | 
	
		
			
				|  |  |                     zhAlarmDealSyncDO.setHandler(map.get("doctor_name").toString());
 | 
	
		
			
				|  |  |                     zhAlarmDealSyncDO.setDealtime(map.get("update_time").toString());
 | 
	
		
			
				|  |  |                     zhAlarmDealSyncDO.setDept(map.get("org_name").toString());
 | 
	
		
			
				|  |  |                     zhAlarmDealSyncDO.setExplanation("误报警");
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             result.add(zhAlarmDealSyncDO);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         zhAlarmDealSyncDao.save(result);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | }
 |