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
|
* @return the task by id
|
||||||
*/
|
*/
|
||||||
DeviceTask getTaskById(Long 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) {
|
public DeviceTask getTaskById(Long id) {
|
||||||
return deviceTaskMapper.getTaskInfoById(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.manager.DisposeTaskManager;
|
||||||
import com.dispose.mapper.DisposeTaskMapper;
|
import com.dispose.mapper.DisposeTaskMapper;
|
||||||
import com.dispose.pojo.entity.DisposeTask;
|
import com.dispose.pojo.entity.DisposeTask;
|
||||||
import com.dispose.pojo.po.AbilityInfo;
|
|
||||||
import com.dispose.pojo.po.MulReturnType;
|
import com.dispose.pojo.po.MulReturnType;
|
||||||
import com.dispose.service.DisposeAbilityRouterService;
|
import com.dispose.service.DisposeAbilityRouterService;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
|
@ -163,29 +162,6 @@ public class DisposeTaskManagerImpl implements DisposeTaskManager {
|
||||||
return new MulReturnType<>(pageInfo, new ArrayList<>());
|
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));
|
List<DisposeTask> taskList = new ArrayList<>(disposeTaskMapper.selectByIdSet(taskId));
|
||||||
|
|
||||||
return new MulReturnType<>(pageInfo, taskList);
|
return new MulReturnType<>(pageInfo, taskList);
|
||||||
|
|
|
@ -154,4 +154,12 @@ public interface DeviceTaskMapper {
|
||||||
*/
|
*/
|
||||||
int changeExternId(@Param("id") Long id,
|
int changeExternId(@Param("id") Long id,
|
||||||
@Param("externId") String externId);
|
@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 org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -775,20 +777,20 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
||||||
* Device task status schedule.
|
* Device task status schedule.
|
||||||
*/
|
*/
|
||||||
public void deviceTaskStatusSchedule() {
|
public void deviceTaskStatusSchedule() {
|
||||||
// 遍历所有新的设备处置任务
|
List<DeviceTask> taskList = new ArrayList<>();
|
||||||
for (DeviceTask v : deviceTaskManager.getStartedDisposeDeviceTaskInfo()) {
|
|
||||||
DisposeTask task = disposeTaskManager.getDisposeTaskById(v.getTaskId());
|
|
||||||
|
|
||||||
// 保护代码,理论上不存在该情况
|
//处置任务设备类型为鹏信设备,任务状态不再变更
|
||||||
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());
|
AbilityInfo ai = disposeAbilityRouterService.getAbilityDevice(v.getDeviceId());
|
||||||
|
|
||||||
// 如果设备已经删除或者禁用,跳过处理
|
// 如果设备已经删除或者禁用,跳过处理
|
||||||
if (ai == null) {
|
if (ai == null) {
|
||||||
// 设置任务状态为已完成
|
|
||||||
deviceTaskManager.changeDisposeDeviceTaskInfoStatus(v.getId(), DisposeTaskStatus.TASK_FINISHED);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -802,18 +804,12 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
|
||||||
// 设置标志,避免对同一个IP重复调用停止处置命令
|
// 设置标志,避免对同一个IP重复调用停止处置命令
|
||||||
taskCache.put(taskStatusKey, true);
|
taskCache.put(taskStatusKey, true);
|
||||||
|
|
||||||
// 任务预计结束5分钟内,
|
if (v.getExternId() != null && v.getExternId().length() > 0) {
|
||||||
if (Helper.getTimestampDiffNow(task.getPlanEndTime()) < 5 * 60) {
|
MulReturnType<ErrorCode, Long> ret = ai.getDb().taskStatus(v.getExternId());
|
||||||
if (v.getEndTime() == null || Helper.getTimestampDiffNow(v.getEndTime()) < 5 * 60) {
|
|
||||||
|
|
||||||
if (v.getExternId() != null && v.getExternId().length() > 0) {
|
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
|
||||||
MulReturnType<ErrorCode, Long> ret = ai.getDb().taskStatus(v.getExternId());
|
deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(v.getExternId(),
|
||||||
|
ret.getSecondParam());
|
||||||
if (ret.getFirstParam() == ErrorCode.ERR_OK) {
|
|
||||||
deviceTaskManager.changeDisposeDeviceTaskInfoDevStatus(v.getExternId(),
|
|
||||||
ret.getSecondParam());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -130,4 +130,15 @@
|
||||||
WHERE id = #{id}
|
WHERE id = #{id}
|
||||||
</update>
|
</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>
|
</mapper>
|
Loading…
Reference in New Issue