package com.fastbee.data.quartz; import com.alibaba.fastjson2.JSON; import com.fastbee.common.core.thingsModel.ThingsModelSimpleItem; import com.fastbee.common.utils.spring.SpringUtils; import com.fastbee.iot.domain.DeviceJob; import com.fastbee.iot.model.Action; import com.fastbee.mq.service.IMqttMessagePublish; import java.util.ArrayList; import java.util.List; /** * 任务执行工具 * * @author kerwincui */ public class JobInvokeUtil { /**获取消息推送接口*/ private static IMqttMessagePublish messagePublish = SpringUtils.getBean(IMqttMessagePublish.class); /** * 执行方法 * * @param deviceJob 系统任务 */ public static void invokeMethod(DeviceJob deviceJob) throws Exception { if (deviceJob.getJobType() == 1) { System.out.println("------------------------执行定时任务-----------------------------"); List actions = JSON.parseArray(deviceJob.getActions(), Action.class); List propertys = new ArrayList<>(); List functions = new ArrayList<>(); for (int i = 0; i < actions.size(); i++) { ThingsModelSimpleItem model = new ThingsModelSimpleItem(); model.setId(actions.get(i).getId()); model.setValue(actions.get(i).getValue()); model.setRemark("设备定时"); if (actions.get(i).getType() == 1) { propertys.add(model); } else if (actions.get(i).getType() == 2) { functions.add(model); } } // 发布属性 if (propertys.size() > 0) { messagePublish.publishProperty(deviceJob.getProductId(), deviceJob.getSerialNumber(), propertys, 0); } // 发布功能 if (functions.size() > 0) { messagePublish.publishFunction(deviceJob.getProductId(), deviceJob.getSerialNumber(), functions, 0); } } else if (deviceJob.getJobType() == 2) { } else if (deviceJob.getJobType() == 3) { System.out.println("------------------------定时执行场景联动-----------------------------"); List actions = JSON.parseArray(deviceJob.getActions(), Action.class); for (int i = 0; i < actions.size(); i++) { ThingsModelSimpleItem model = new ThingsModelSimpleItem(); model.setId(actions.get(i).getId()); model.setValue(actions.get(i).getValue()); model.setRemark("场景联动定时触发"); if (actions.get(i).getType() == 1) { List propertys = new ArrayList<>(); propertys.add(model); messagePublish.publishProperty(actions.get(i).getProductId(), actions.get(i).getSerialNumber(), propertys, 0); } else if (actions.get(i).getType() == 2) { List functions = new ArrayList<>(); functions.add(model); messagePublish.publishFunction(actions.get(i).getProductId(), actions.get(i).getSerialNumber(), functions, 0); } } } } }