package com.moral.monitor.listener.quartz;
|
|
import cn.jiguang.common.ClientConfig;
|
import cn.jpush.api.JPushClient;
|
import cn.jpush.api.push.PushResult;
|
import cn.jpush.api.push.model.Platform;
|
import cn.jpush.api.push.model.PushPayload;
|
import cn.jpush.api.push.model.audience.Audience;
|
import cn.jpush.api.push.model.notification.Notification;
|
import com.moral.monitor.dao.TaskDao;
|
import com.moral.monitor.entity.Equipment;
|
import com.moral.monitor.entity.State;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
|
import javax.annotation.Resource;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* Created by a on 2017/3/16.
|
*/
|
public class EquipmentCheck {
|
@Resource
|
TaskDao taskDao;
|
private Logger logger = LoggerFactory.getLogger(EquipmentCheck.class);
|
String MASTER_SECRET="980ec9da47076ff94e3b0f1a";
|
String APP_KEY="3f115de9acc4860344a299ea";
|
|
String MASTER_SECRET_IOS="";
|
String APP_KEY_IOS="";
|
|
public void check() {
|
logger.warn("设备检测定时任务开始");
|
long time = new Date().getTime();
|
List<State> states = taskDao.selectFromstateGroupbymac();
|
for (State state : states) {
|
if (time - state.getTime().getTime() > 600000) {//10分钟
|
String mac = state.getMac();
|
taskDao.updateequipmentstate(0,mac);
|
//极光推送致android 和 ios
|
Equipment e = taskDao.selectFromequipment(mac);
|
if (e==null){
|
continue;
|
}
|
|
String alais = e.getRepairman();
|
String title="设备故障";
|
String alert="设备"+e.getName()+"发生故障,请及时维修";
|
HashMap<String, String> extras = new HashMap<String, String>();
|
|
extras.put("id",String.valueOf(e.getId()));
|
extras.put("name",e.getName());
|
extras.put("address",e.getAddress());
|
extras.put("mac",e.getMac());
|
|
try {
|
JPushClient(alais,alert,title,extras,e);
|
}catch (Exception exception){
|
logger.info("Error Message: " + exception.getMessage());
|
}
|
}
|
}
|
}
|
|
|
public void JPushClient(String alias,String alert, String title, Map<String,String> extras,Equipment equipment){
|
JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY, null, ClientConfig.getInstance());
|
//JPushClient jpushClient_IOS = new JPushClient(MASTER_SECRET_IOS, APP_KEY_IOS, null, ClientConfig.getInstance());
|
|
|
PushPayload payload_android = buildPushObject_android_alias_alertWithTitle(alias,alert,title,extras);
|
PushPayload pushload_ios = buildPushObject_ios_alias_alertWithTitle(alias,alert,extras);
|
|
try {
|
PushResult result1 = jpushClient.sendPush(payload_android);
|
taskDao.insertToofflinelog(equipment.getName(),equipment.getAddress(),equipment.getRepairman());
|
logger.info("极光android推送");
|
PushResult result2 = jpushClient.sendPush(pushload_ios);
|
logger.info(" 极光ios推送");
|
} catch (Exception e) {
|
logger.error("极光推送失败,原因如下:", e);
|
}
|
|
}
|
|
|
//构建推送对象:平台是 Android,目标是 alias 为 "alisename" 的设备,内容是 Android 通知 ALERT,并且标题为 TITLE。扩展数据为null
|
public static PushPayload buildPushObject_android_alias_alertWithTitle(String alias,String alert, String title, Map<String,String> extras) {
|
return PushPayload.newBuilder()
|
.setPlatform(Platform.android())
|
.setAudience(Audience.alias(alias))
|
.setNotification(Notification.android(alert,title, extras))
|
.build();
|
}
|
|
|
public static PushPayload buildPushObject_ios_alias_alertWithTitle(String alias,String alert, Map<String,String> extras) {
|
return PushPayload.newBuilder()
|
.setPlatform(Platform.ios())
|
.setAudience(Audience.alias(alias))
|
.setNotification(Notification.ios(alert,extras))
|
.build();
|
}
|
|
|
|
|
}
|