OCT
REM: 1.修改定时刷新设备任务状态接口 2.增加数据库、manager层根据id获取任务信息功能,通过数据库直接过滤符合要求的任务信息 3.删除多余代码
This commit is contained in:
parent
dda7c18a2a
commit
f12ba229fd
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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,10 +804,6 @@ 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());
|
||||
|
||||
|
@ -814,8 +812,6 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
|||
ret.getSecondParam());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 处置命令调用结束,允许下一次停止命令调用
|
||||
taskCache.remove(taskStatusKey);
|
||||
|
|
|
@ -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>
|
Loading…
Reference in New Issue