zhoushihao
2024-11-22 6bf911a38f75341dd5d2b86dad58fa313584a981
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java
@@ -32,7 +32,6 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @Author : zhoush
@@ -211,10 +210,6 @@
                    .eq(EdgStorageCage::getDeviceId, deviceId)
                    .eq(EdgStorageCage::getEnableState, Const.SLOT_ON)
                    .ge(EdgStorageCage::getRemainWidth, Math.max(glassInfo.getWidth(), glassInfo.getHeight())).last("order by abs(slot - " + task.getCurrentCell() + ")"));
//            //直通任务
//            if (flag && CollectionUtil.isNotEmpty(emptyList)) {
//                return emptyList.get(0);
//            }
            if (CollectionUtil.isEmpty(storageCageList) || storageCageList.size() == 1) {
                log.info("没有多余的空格子");
                return Boolean.FALSE;
@@ -233,7 +228,7 @@
        task.setStartCell(edgStorageCage.getSlot());
        task.setTaskRunning(Const.GLASS_CACHE_TYPE_IN);
        edgStorageDeviceTaskService.updateTaskMessage(tableName, task);
        saveHistoryTask(task);
        saveHistoryTask(task, deviceId);
        return Boolean.TRUE;
    }
@@ -372,7 +367,7 @@
        task.setTaskRunning(taskType);
        edgStorageDeviceTaskService.updateTaskMessage(tableName, task);
        saveHistoryTask(task);
        saveHistoryTask(task, deviceId);
        //更新详情表任务出片中
        edgStorageCageDetailsService.update(new LambdaUpdateWrapper<EdgStorageCageDetails>()
                .set(EdgStorageCageDetails::getState, Const.GLASS_STATE_OUT)
@@ -399,16 +394,20 @@
        Integer cell = task.getStartCell();
        Integer state = task.getTaskState();
        task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY);
        String glassIdOut = task.getGlassIdOut();
        task.setGlassIdOut("");
        task.setStartCell(0);
        edgStorageDeviceTaskService.updateTaskMessage(tableName, task);
        EdgStorageDeviceTaskHistory taskHistory = edgStorageDeviceTaskHistoryService.getOne(new LambdaQueryWrapper<EdgStorageDeviceTaskHistory>()
                .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW)
                .orderByDesc(EdgStorageDeviceTaskHistory::getCreateTime).last("limit 1"));
        edgStorageDeviceTaskHistoryService.update(new LambdaUpdateWrapper<EdgStorageDeviceTaskHistory>()
                .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW)
                .set(EdgStorageDeviceTaskHistory::getTaskState,
                        Const.GLASS_CACHE_TYPE_FINISH.equals(state) ? Const.RAW_GLASS_TASK_SUCCESS : Const.RAW_GLASS_TASK_FAILURE)
        );
        int device = tableName.equals("edg_storage_device_one_task") ? 1 : 2;
        updateCellRemainWidth(cell, device);
        updateCellRemainWidth(cell, device, taskHistory);
        return Boolean.TRUE;
    }
@@ -435,7 +434,7 @@
                        "where engineer_id = '" + glassInfo.getEngineerId() + "' and width = " + glassInfo.getWidth() + " and height = " + glassInfo.getHeight()
                        + " and state != 100")
                .orderByAsc(GlassInfo::getTemperingLayoutId)
                .orderBy(Boolean.TRUE, Boolean.TRUE, GlassInfo::getTemperingFeedSequence)
                .orderByAsc(GlassInfo::getTemperingFeedSequence)
                .last("Limit 1");
        GlassInfo swapGlassInfo = glassInfoService.getOne(queryWrapper);
        if (swapGlassInfo != null && !glassInfo.getGlassId().equals(swapGlassInfo.getGlassId())) {
@@ -514,26 +513,33 @@
        }
    }
    public boolean saveHistoryTask(EdgStorageDeviceTask task) {
    public boolean saveHistoryTask(EdgStorageDeviceTask task, int deviceId) {
        EdgStorageDeviceTaskHistory taskHistory = new EdgStorageDeviceTaskHistory();
        BeanUtils.copyProperties(task, taskHistory);
        taskHistory.setTaskType(task.getTaskRunning());
        taskHistory.setCreateTime(new Date());
        taskHistory.setTaskState(Const.RAW_GLASS_TASK_NEW);
        taskHistory.setDeviceId(deviceId);
        edgStorageDeviceTaskHistoryService.save(taskHistory);
        return Boolean.TRUE;
    }
    private boolean updateCellRemainWidth(int slot, int device) {
    private 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));
        List<Integer> slotList = new ArrayList<>();
        int remainWidth = cellLength;
        if (CollectionUtil.isNotEmpty(list)) {
            slotList = list.stream().map(EdgStorageCageDetails::getSlot).distinct().collect(Collectors.toList());
            if (2 == taskHistory.getTaskType()) {
                remainWidth = 0;
            } else {
                EdgStorageCage storageCage = edgStorageCageService.getOne(new LambdaQueryWrapper<EdgStorageCage>()
                        .eq(EdgStorageCage::getDeviceId, device).eq(EdgStorageCage::getSlot, slot));
                EdgStorageCageDetails bigDetails = list.stream().filter(e -> e.getGlassId().equals(taskHistory.getGlassIdIn())).findFirst().orElse(null);
                remainWidth = storageCage.getRemainWidth() - glassGap - (int) Math.max(bigDetails.getWidth(), bigDetails.getHeight());
            }
        }
        list.removeAll(slotList);
        edgStorageCageService.update(new LambdaUpdateWrapper<EdgStorageCage>().
                set(EdgStorageCage::getRemainWidth, cellLength).eq(EdgStorageCage::getSlot, slot).eq(EdgStorageCage::getDeviceId, device));
                set(EdgStorageCage::getRemainWidth, remainWidth).eq(EdgStorageCage::getSlot, slot).eq(EdgStorageCage::getDeviceId, device));
        return Boolean.TRUE;
    }