REM:
1.修改定时刷新设备任务状态接口
2.增加数据库、manager层根据id获取任务信息功能,通过数据库直接过滤符合要求的任务信息
3.删除多余代码
This commit is contained in:
chenlinghy 2020-11-24 16:28:22 +08:00
parent dda7c18a2a
commit f12ba229fd
6 changed files with 50 additions and 42 deletions

View File

@ -134,4 +134,11 @@ public interface DeviceTaskManager {
* @return the task by id
*/
DeviceTask getTaskById(Long id);
/**
* Gets PengXin device task info by startId.
*
* @return the minId task info.
*/
List<DeviceTask> getPengXinTaskById(Long startId);
}

View File

@ -295,4 +295,14 @@ public class DeviceTaskManagerImpl implements DeviceTaskManager {
public DeviceTask getTaskById(Long id) {
return deviceTaskMapper.getTaskInfoById(id);
}
/**
* Gets PengXin device task info by startId.
*
* @return the minId task info.
*/
@Override
public List<DeviceTask> getPengXinTaskById(Long startId){
return deviceTaskMapper.getPengXinTask(startId);
}
}

View File

@ -7,7 +7,6 @@ import com.dispose.manager.DeviceTaskManager;
import com.dispose.manager.DisposeTaskManager;
import com.dispose.mapper.DisposeTaskMapper;
import com.dispose.pojo.entity.DisposeTask;
import com.dispose.pojo.po.AbilityInfo;
import com.dispose.pojo.po.MulReturnType;
import com.dispose.service.DisposeAbilityRouterService;
import com.github.pagehelper.PageHelper;
@ -163,29 +162,6 @@ public class DisposeTaskManagerImpl implements DisposeTaskManager {
return new MulReturnType<>(pageInfo, new ArrayList<>());
}
//根据taskId遍历设置处置任务
for (DisposeTask v : preList) {
DisposeTask task = disposeTaskManager.getDisposeTaskById(v.getId());
task.getDeviceTask().forEach(d -> {
// 获取设备
AbilityInfo ai = disposeAbilityRouterService.getAbilityDevice(d.getDeviceId());
// 如果设备正常查询当前设备的任务状态
if (ai != null) {
if (d.getExternId() != null && d.getExternId().length() > 0) {
log.info("deviceId:{}, taskId:{}", d.getDeviceId(), d.getTaskId());
MulReturnType<ErrorCode, Long> ret = ai.getDb().taskStatus(d.getExternId());
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(d.getExternId(),
ret.getSecondParam());
}
}
}
});
}
List<DisposeTask> taskList = new ArrayList<>(disposeTaskMapper.selectByIdSet(taskId));
return new MulReturnType<>(pageInfo, taskList);

View File

@ -154,4 +154,12 @@ public interface DeviceTaskMapper {
*/
int changeExternId(@Param("id") Long id,
@Param("externId") String externId);
/**
* Gets PengXin device task info.
*
* @param startId the start id
* @return PengXin device task info
*/
List<DeviceTask> getPengXinTask(Long startId);
}

View File

@ -20,6 +20,8 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
/**
@ -775,20 +777,20 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
* Device task status schedule.
*/
public void deviceTaskStatusSchedule() {
// 遍历所有新的设备处置任务
for (DeviceTask v : deviceTaskManager.getStartedDisposeDeviceTaskInfo()) {
DisposeTask task = disposeTaskManager.getDisposeTaskById(v.getTaskId());
List<DeviceTask> taskList = new ArrayList<>();
// 保护代码理论上不存在该情况
assert task != null;
//处置任务设备类型为鹏信设备任务状态不再变更
for (Long i = 1L; deviceTaskManager.getPengXinTaskById(i).size() != 0; i = taskList.get(taskList.size() - 1).getId() + 1) {
log.debug("startId:{}", i);
taskList.addAll(deviceTaskManager.getPengXinTaskById(i));
}
for (DeviceTask v : taskList) {
// 获取设备
AbilityInfo ai = disposeAbilityRouterService.getAbilityDevice(v.getDeviceId());
// 如果设备已经删除或者禁用跳过处理
if (ai == null) {
// 设置任务状态为已完成
deviceTaskManager.changeDisposeDeviceTaskInfoStatus(v.getId(), DisposeTaskStatus.TASK_FINISHED);
continue;
}
@ -802,18 +804,12 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
// 设置标志避免对同一个IP重复调用停止处置命令
taskCache.put(taskStatusKey, true);
// 任务预计结束5分钟内
if (Helper.getTimestampDiffNow(task.getPlanEndTime()) < 5 * 60) {
if (v.getEndTime() == null || Helper.getTimestampDiffNow(v.getEndTime()) < 5 * 60) {
if (v.getExternId() != null && v.getExternId().length() > 0) {
MulReturnType<ErrorCode, Long> ret = ai.getDb().taskStatus(v.getExternId());
if (v.getExternId() != null && v.getExternId().length() > 0) {
MulReturnType<ErrorCode, Long> ret = ai.getDb().taskStatus(v.getExternId());
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(v.getExternId(),
ret.getSecondParam());
}
}
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(v.getExternId(),
ret.getSecondParam());
}
}

View File

@ -130,4 +130,15 @@
WHERE id = #{id}
</update>
<select id="getPengXinTask" resultType="com.dispose.pojo.entity.DeviceTask">
SELECT dt.*, dd.*
FROM device_task dt LEFT JOIN dispose_device dd ON dt.deviceId = dd.id
WHERE
dd.deviceType = 2
AND
dt.devStatus != 8 AND dt.devStatus != 7
AND
dt.id >= #{startId}
LIMIT 100
</select>
</mapper>