huang
2025-10-22 3eaf0f2f1b909ac429cac9fc26af767ddecda065
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java
@@ -159,11 +159,23 @@
        }
        List<UpPattenUsageVO> pattenUsageList = upPattenUsageMapper.queryRawGlassByEngineeringId(engineering.getEngineerId());
        log.info("按照当前获取到正在需要上片的原片信息有:{}", pattenUsageList);
        log.info("获取正在需要上片的原片信息有:{}", pattenUsageList);
        if (CollectionUtils.isEmpty(pattenUsageList)) {
            log.info("当前工程需要上片的原片信息为空,任务已结束");
            return;
        }
        // 有无正在执行的任务
        UpPattenUsage runningTask = upPattenUsageMapper.selectOne(
                new LambdaQueryWrapper<UpPattenUsage>()
                        .eq(UpPattenUsage::getEngineeringId, engineering.getEngineerId())
                        .eq(UpPattenUsage::getState, 101)
                        .last("limit 1") // 只取一条
        );
        if (runningTask != null) {
            log.info("当前工程存在正在执行的上片任务,跳过本次处理");
            return;
        }
        Map<String, List<UpPattenUsageVO>> upListMap = pattenUsageList.stream()
                .collect(Collectors.groupingBy(UpPattenUsageVO::getGroupNumber));
        log.info("获取当前需要上片的原片数据");
@@ -192,7 +204,7 @@
            task.setTaskRunning(1);
            task.setRawGlassWidth((int) usageVOS.get(0).getWidth());
            task.setRawGlassHeight((int) usageVOS.get(0).getHeight());
            task.setSlot(loadStation.get(0));
            task.setSlot(1);
            task.setRawGlassFilmsId(usageVOS.get(0).getFilmsId());
            task.setEngineeringId(usageVOS.get(0).getEngineeringId());
            saveHistoryTask(task, deviceId);
@@ -201,7 +213,7 @@
            s7DataSPWrite.setMesSend(1);
            s7DataSPWrite.setRawGlassWidth((int) usageVOS.get(0).getWidth());
            s7DataSPWrite.setRawGlassHeight((int) usageVOS.get(0).getHeight());
            s7DataSPWrite.setSlot(loadStation.get(1));
            s7DataSPWrite.setSlot(1);
            if (LOAD_GLASS_ONE_DEVICE.equals(deviceId)) {
                s7SerializerSPOne.write(s7DataSPWrite);
            } else {
@@ -222,7 +234,7 @@
        task.setRawGlassWidth((int) usageVOS.get(0).getWidth());
        task.setRawGlassHeight((int) usageVOS.get(0).getHeight());
        task.setRawGlassThickness((int) usageVOS.get(0).getThickness());
        task.setSlot(loadStation.get(0));
        task.setSlot(1);
        task.setRawGlassFilmsId(usageVOS.get(0).getFilmsId());
        task.setEngineeringId(usageVOS.get(0).getEngineeringId());
        saveHistoryTask(task, deviceId);
@@ -235,7 +247,7 @@
        s7DataSPWrite.setMesSend(1);
        s7DataSPWrite.setRawGlassWidth((int) usageVOS.get(0).getWidth());
        s7DataSPWrite.setRawGlassHeight((int) usageVOS.get(0).getHeight());
        s7DataSPWrite.setSlot(loadStation.get(0));
        s7DataSPWrite.setSlot(1);
        if (LOAD_GLASS_ONE_DEVICE.equals(deviceId)) {
            s7SerializerSPOne.write(s7DataSPWrite);
        } else {
@@ -285,11 +297,28 @@
            unconfirmedTask.setTaskState(Const.RAW_GLASS_TASK_SUCCESS);
            unconfirmedTask.setFinishCount(unconfirmedTask.getFinishCount() + 1);
            log.info("{}上片线,任务汇报成功,更新上片记录[{}]为成功", deviceId, upUsageId);
            // PLC确认字1
            s7DataSP.setMesConfirm(1);
            s7SerializerSPOne.write(s7DataSP);
        } else if (s7DataSP.getPlcReport() == 2) {
            // 汇报失败
            unconfirmedTask.setTaskState(2);
//            unconfirmedTask.setDamageCount(unconfirmedTask.getDamageCount() + 1);
            log.warn("{}上片线,任务汇报失败,上片记录[{}]标记为失败", deviceId,  upUsageId);
            // PLC确认字2
            s7DataSP.setMesConfirm(2);
            s7SerializerSPOne.write(s7DataSP);
        }else if (s7DataSP.getPlcReport() == 3) {
            // 汇报破损
            unconfirmedTask.setTaskState(200);
            unconfirmedTask.setTaskState(3);
            unconfirmedTask.setDamageCount(unconfirmedTask.getDamageCount() + 1);
            log.warn("{}上片线,任务汇报破损,上片记录[{}]标记为破损", deviceId,  upUsageId);
            // PLC确认字3
            s7DataSP.setMesConfirm(3);
            s7SerializerSPOne.write(s7DataSP);
        }
        unconfirmedTask.setUpdateTime(new Date());
        loadGlassDeviceTaskHistoryService.updateById(unconfirmedTask);
@@ -298,13 +327,9 @@
        rawGlassStorageDetailsService.update(new UpdateWrapper<RawGlassStorageDetails>()
                .inSql("slot", "select slot from raw_glass_storage_station where enable_state = 1")
//                .eq("slot", task.getSlot())
                .eq("slot", unconfirmedTask.getSlot())
                .eq("slot", 101)
                .eq("state", Const.RAW_GLASS_STATE_IN)
                .setSql("remain_quantity = GREATEST(remain_quantity - 1, 0)"));
        //汇报字给1
        S7DataSP s7DataSPWrite = new S7DataSP();
        s7DataSPWrite.setMesConfirm(1);
        s7SerializerSPOne.write(s7DataSPWrite);
    }
    private boolean saveHistoryTask(LoadGlassDeviceTaskHistory task, Integer deviceId) {