hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java
@@ -158,9 +158,12 @@ log.info("将启动子改为4"); task.setTaskRunning(Const.GLASS_CACHE_TYPE_RUNNING); edgStorageDeviceTaskService.updateTaskMessage(tableName, task); } else { } else if (request == 5) { log.info("设备:{}状态:{}", device, request); finishTask(task, tableName); } else { log.info("玻璃异常处理"); damageTask(task, tableName); } // } catch (Exception e) { // log.info("执行任务过程中发生异常,任务字{},{}", task.getTaskState(), e.getMessage()); @@ -481,7 +484,6 @@ Date startDate = new Date(); log.info("开始执行完成任务后清除动作,任务信息为:{},表名为:{},开始时间:{}", task, tableName, startDate); Integer cell = task.getStartCell(); Integer state = task.getTaskState(); task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY); task.setGlassIdOut(""); task.setStartCell(0); @@ -498,14 +500,59 @@ edgStorageDeviceTaskHistoryService.update(new LambdaUpdateWrapper<EdgStorageDeviceTaskHistory>() .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW) .eq(EdgStorageDeviceTaskHistory::getDeviceId, device) .set(EdgStorageDeviceTaskHistory::getTaskState, Const.GLASS_CACHE_TYPE_FINISH.equals(state) ? Const.RAW_GLASS_TASK_SUCCESS : Const.RAW_GLASS_TASK_FAILURE) .set(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_SUCCESS) ); //最后更新任务,保证任务前的动作都做完 edgStorageDeviceTaskService.updateTaskMessage(tableName, task); Date endDate = new Date(); log.info("结束完成任务后清除动作,表名为:{},结束时间为:{},共耗时:{}ms", tableName, endDate, endDate.getTime() - startDate.getTime()); return Boolean.TRUE; } private boolean damageTask(EdgStorageDeviceTask task, String tableName) { if (task.getTaskState() <= 5) { log.info("任务未发生异常清空,任务结束,电气状态{},mes状态{}", task.getTaskState(), task.getTaskRunning()); return Boolean.FALSE; } Date startDate = new Date(); log.info("开始执行异常处理任务后清除动作,任务信息为:{},表名为:{},开始时间:{}", task, tableName, startDate); int device = tableName.equals("edg_storage_device_one_task") ? 1 : 2; EdgStorageDeviceTaskHistory taskHistory = edgStorageDeviceTaskHistoryService.getOne(new LambdaQueryWrapper<EdgStorageDeviceTaskHistory>() .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW) .eq(EdgStorageDeviceTaskHistory::getDeviceId, device) .orderByDesc(EdgStorageDeviceTaskHistory::getCreateTime).last("limit 1")); 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<EdgStorageCageDetails>() .eq(EdgStorageCageDetails::getDeviceId, device) .eq(EdgStorageCageDetails::getSlot, cell) .eq(EdgStorageCageDetails::getGlassId, glassId)); } else { String glassId = taskHistory.getGlassIdOut(); edgStorageCageDetailsService.update(new LambdaUpdateWrapper<EdgStorageCageDetails>() .set(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN) .eq(EdgStorageCageDetails::getDeviceId, device) .eq(EdgStorageCageDetails::getSlot, cell) .eq(EdgStorageCageDetails::getGlassId, glassId)); } updateCellRemainWidth(cell, device, taskHistory); edgStorageDeviceTaskHistoryService.update(new LambdaUpdateWrapper<EdgStorageDeviceTaskHistory>() .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW) .eq(EdgStorageDeviceTaskHistory::getDeviceId, device) .set(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_FAILURE) ); //最后更新任务,保证任务前的动作都做完 task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY); task.setGlassIdOut(""); task.setStartCell(0); edgStorageDeviceTaskService.updateTaskMessage(tableName, task); Date endDate = new Date(); log.info("完成执行异常处理任务后清除动作,表名为:{},结束时间为:{},共耗时:{}ms", tableName, endDate, endDate.getTime() - startDate.getTime()); return Boolean.TRUE; } /** @@ -652,7 +699,7 @@ return Boolean.TRUE; } private boolean updateCellRemainWidth(int slot, int device, EdgStorageDeviceTaskHistory taskHistory) { public boolean updateCellRemainWidth(int slot, int device, EdgStorageDeviceTaskHistory taskHistory) { List<EdgStorageCageDetails> list = edgStorageCageDetailsService.list(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getSlot, slot) .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)); int remainWidth = cellLength; hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/controller/EdgStorageDeviceController.java
@@ -1,9 +1,39 @@ package com.mes.opctask.controller; import com.mes.opctask.service.EdgStorageDeviceTaskService; import com.mes.utils.Result; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; /** * @Author : zhoush * @Date: 2024/10/24 15:35 * @Description: */ @Api(tags = "卧式理片笼任务") @RestController @RequestMapping("edgStorageDeviceTask") public class EdgStorageDeviceController { /** * 服务对象 */ @Resource private EdgStorageDeviceTaskService edgStorageDeviceTaskService; @ApiOperation(value = "重置任务:按照设备id重置任务") @PostMapping("/resetTask") public Result<Boolean> resetTask(Integer deviceId) { Boolean flag = edgStorageDeviceTaskService.resetTask(deviceId); if (flag) { return Result.build(200, "重置成功", flag); } else { return Result.build(200, "无任务,无需重置", flag); } } } hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/service/EdgStorageDeviceTaskService.java
@@ -18,4 +18,6 @@ boolean updateTaskMessage(String tableName, EdgStorageDeviceTask edgStorageDeviceTask); Boolean resetTask(Integer deviceId); } hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/service/impl/EdgStorageDeviceTaskServiceImpl.java
@@ -1,7 +1,15 @@ 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; @@ -14,12 +22,20 @@ */ @Service public class EdgStorageDeviceTaskServiceImpl implements EdgStorageDeviceTaskService { // @Override // public void updateTaskMessage(Integer slot, Integer taskRunning, String glassIdOut) { // } 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) { @@ -30,4 +46,47 @@ 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<EdgStorageDeviceTaskHistory>() .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<EdgStorageCageDetails>() .eq(EdgStorageCageDetails::getDeviceId, deviceId) .eq(EdgStorageCageDetails::getSlot, cell) .eq(EdgStorageCageDetails::getGlassId, glassId)); } else { String glassId = taskHistory.getGlassIdOut(); edgStorageCageDetailsService.update(new LambdaUpdateWrapper<EdgStorageCageDetails>() .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<EdgStorageDeviceTaskHistory>() .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; } }