package com.mes.opctask.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.mes.common.config.Const; import com.mes.edgstoragecage.entity.EdgStorageCageDetails; import com.mes.edgstoragecage.service.EdgStorageCageDetailsService; import com.mes.job.OpcCacheGlassTask; import com.mes.opctask.entity.EdgStorageDeviceTask; import com.mes.opctask.entity.EdgStorageDeviceTaskHistory; import com.mes.opctask.mapper.EdgStorageDeviceTaskMapper; import com.mes.opctask.service.EdgStorageDeviceTaskHistoryService; import com.mes.opctask.service.EdgStorageDeviceTaskService; import org.springframework.stereotype.Service; import javax.annotation.Resource; /** * @Author : zhoush * @Date: 2024/10/24 15:36 * @Description: */ @Service public class EdgStorageDeviceTaskServiceImpl implements EdgStorageDeviceTaskService { private static final String EDG_STORAGE_DEVICE_ONE_TASK = "edg_storage_device_one_task"; private static final String EDG_STORAGE_DEVICE_TWO_TASK = "edg_storage_device_two_task"; @Resource private EdgStorageDeviceTaskHistoryService edgStorageDeviceTaskHistoryService; @Resource private EdgStorageCageDetailsService edgStorageCageDetailsService; @Resource EdgStorageDeviceTaskMapper edgStorageDeviceTaskMapper; @Resource OpcCacheGlassTask opcCacheGlassTask; @Override public EdgStorageDeviceTask queryTaskMessage(String tableName) { return edgStorageDeviceTaskMapper.queryTaskMessage(tableName); } @Override public boolean updateTaskMessage(String tableName, EdgStorageDeviceTask edgStorageDeviceTask) { return edgStorageDeviceTaskMapper.updateTaskMessage(tableName, edgStorageDeviceTask); } @Override public Boolean resetTask(Integer deviceId) { String tableName = deviceId == 1 ? EDG_STORAGE_DEVICE_ONE_TASK : EDG_STORAGE_DEVICE_TWO_TASK; EdgStorageDeviceTaskHistory taskHistory = edgStorageDeviceTaskHistoryService.getOne(new LambdaQueryWrapper() .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW) .eq(EdgStorageDeviceTaskHistory::getDeviceId, deviceId) .orderByDesc(EdgStorageDeviceTaskHistory::getCreateTime).last("limit 1")); if (taskHistory == null) { return Boolean.FALSE; } Integer cell = taskHistory.getStartCell(); Integer taskType = taskHistory.getTaskType(); if (Const.GLASS_CACHE_TYPE_IN_ALL.contains(taskType)) { String glassId = taskHistory.getGlassIdIn(); edgStorageCageDetailsService.remove(new LambdaQueryWrapper() .eq(EdgStorageCageDetails::getDeviceId, deviceId) .eq(EdgStorageCageDetails::getSlot, cell) .eq(EdgStorageCageDetails::getGlassId, glassId)); } else { String glassId = taskHistory.getGlassIdOut(); edgStorageCageDetailsService.update(new LambdaUpdateWrapper() .set(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN) .eq(EdgStorageCageDetails::getDeviceId, deviceId) .eq(EdgStorageCageDetails::getSlot, cell) .eq(EdgStorageCageDetails::getGlassId, glassId)); } opcCacheGlassTask.updateCellRemainWidth(cell, deviceId, taskHistory); edgStorageDeviceTaskHistoryService.update(new LambdaUpdateWrapper() .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW) .eq(EdgStorageDeviceTaskHistory::getDeviceId, deviceId) .set(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_FAILURE) ); //最后更新任务,保证任务前的动作都做完 EdgStorageDeviceTask task = new EdgStorageDeviceTask(); task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY); task.setGlassIdOut(""); task.setStartCell(0); this.updateTaskMessage(tableName, task); return Boolean.TRUE; } }