ZengTao
2025-03-14 2c08bfb96d6523dfbf5ae543e94495c151aadbf1
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/service/impl/EdgStorageDeviceTaskServiceImpl.java
@@ -2,18 +2,24 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.mes.common.config.Const;
import com.mes.edgstoragecage.entity.EdgStorageCage;
import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
import com.mes.edgstoragecage.entity.vo.EdgSlotRemainVO;
import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
import com.mes.edgstoragecage.service.EdgStorageCageService;
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.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
 * @Author : zhoush
@@ -33,9 +39,14 @@
    @Resource
    private EdgStorageCageDetailsService edgStorageCageDetailsService;
    @Resource
    EdgStorageDeviceTaskMapper edgStorageDeviceTaskMapper;
    private EdgStorageCageService edgStorageCageService;
    @Resource
    OpcCacheGlassTask opcCacheGlassTask;
    EdgStorageDeviceTaskMapper edgStorageDeviceTaskMapper;
    @Value("${mes.glassGap}")
    private int glassGap;
    @Value("${mes.cellLength}")
    private int cellLength;
    @Override
    public EdgStorageDeviceTask queryTaskMessage(String tableName) {
@@ -75,12 +86,13 @@
                    .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)
        );
        //计算每个各自的剩余尺寸信息
        resetSlotRemainWidth();
        //最后更新任务,保证任务前的动作都做完
        EdgStorageDeviceTask task = new EdgStorageDeviceTask();
        task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY);
@@ -89,4 +101,34 @@
        this.updateTaskMessage(tableName, task);
        return Boolean.TRUE;
    }
    @Override
    public Boolean taskSuccess(Integer deviceId) {
        String tableName = deviceId == 1 ? EDG_STORAGE_DEVICE_ONE_TASK : EDG_STORAGE_DEVICE_TWO_TASK;
        edgStorageDeviceTaskHistoryService.update(new LambdaUpdateWrapper<EdgStorageDeviceTaskHistory>()
                .set(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_SUCCESS)
                .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW)
                .eq(EdgStorageDeviceTaskHistory::getDeviceId, deviceId));
        //计算每个各自的剩余尺寸信息
        resetSlotRemainWidth();
        //最后更新任务,保证任务前的动作都做完
        EdgStorageDeviceTask task = new EdgStorageDeviceTask();
        task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY);
        task.setGlassIdOut("");
        task.setStartCell(0);
        this.updateTaskMessage(tableName, task);
        return Boolean.TRUE;
    }
    private boolean resetSlotRemainWidth() {
        //将尺寸重置为原始尺寸
        edgStorageCageService.update(new LambdaUpdateWrapper<EdgStorageCage>().set(EdgStorageCage::getRemainWidth, cellLength));
        //获取笼内的详情数据
        List<EdgSlotRemainVO> edgSlotRemainVOS = edgStorageCageDetailsService.querySlotRemainWidth(cellLength, glassGap);
        //按照查询结果对笼内现有玻璃的格子尺寸进行更新
        if(CollectionUtils.isNotEmpty(edgSlotRemainVOS)){
            edgStorageCageService.resetSlotRemainWidth(edgSlotRemainVOS);
        }
        return Boolean.TRUE;
    }
}