ZengTao
2025-06-26 849442e4f63a5fd7ae154ef6bc77c967a82f40b8
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
@@ -17,11 +17,14 @@
import com.mes.rawglassstation.service.RawGlassStorageStationService;
import com.mes.rawglasstask.entity.RawGlassStorageTask;
import com.mes.rawglasstask.service.RawGlassStorageTaskService;
import com.mes.s7.entity.S7DataCC;
import com.mes.s7.entity.S7DataSP;
import com.mes.uppattenusage.entity.UpPattenUsage;
import com.mes.uppattenusage.entity.vo.UpPattenUsageVO;
import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
@@ -58,8 +61,17 @@
    @Autowired(required = false)
    private MiloService miloService;
    @Autowired(required = false)
    S7Serializer s7Serializer;
    @Autowired
    @Qualifier("s7SerializerCC")
    S7Serializer s7SerializerCC;
    @Autowired
    @Qualifier("s7SerializerSPOne")
    private S7Serializer s7SerializerSPOne;
    @Autowired
    @Qualifier("s7SerializerSPTwo")
    private S7Serializer s7SerializerSPTwo;
    private static final String LOAD_GLASS_DEVICE_ONE_TASK = "load_glass_device_one_task";
@@ -76,39 +88,25 @@
    @Scheduled(fixedDelay = 1000)
    public void rawStorageTask() throws Exception {
//        S7Data S7DataWL1 = s7Serializer.read(S7Data.class);
//        String requestWord = S7DataWL1.getRequest().toString();
//        String confireWord = S7DataWL1.getConfirmation().toString();
//        String reportWord = S7DataWL1.getReportWord().toString();
//        String taskWord = S7DataWL1.getTaskWord().toString();
//        String requestValue = requestWord;
        ReadWriteEntity requestWord = miloService.readFromOpcUa("CC.CC.request");
        ReadWriteEntity confireWord = miloService.readFromOpcUa("CC.CC.confirmation");
        ReadWriteEntity reportWord = miloService.readFromOpcUa("CC.CC.reportWord");
        ReadWriteEntity taskWord = miloService.readFromOpcUa("CC.CC.taskWord");
        String requestValue = requestWord.getValue() + "";
        S7DataCC S7DataCCOne = s7SerializerCC.read(S7DataCC.class);
        log.info("仓储通讯读取{}", S7DataCCOne);
        String requestWord = S7DataCCOne.getRequest().toString();
        String confireWord = S7DataCCOne.getConfirmation().toString();
        String reportWord = S7DataCCOne.getReportWord().toString();
        String taskWord = S7DataCCOne.getTaskWord().toString();
        String requestValue = requestWord;
        if ("0".equals(requestValue)) {
            if ("1".equals(confireWord) && "0".equals(reportWord)) {
//            if ("1".equals(confireWord.getValue() + "") && "0".equals(reportWord.getValue() + "")) {
//                S7Data s7Data = new S7Data();
//                s7Data.setConfirmation((short) 0);
//                s7Serializer.write(s7Data);
                List<ReadWriteEntity> list = new ArrayList<>();
                list.add(generateReadWriteEntity("CC.CC.confirmation", 0));
                miloService.writeToOpcWord(list);
                S7DataCC s7Data = new S7DataCC();
                s7Data.setConfirmation(0);
                s7SerializerCC.write(s7Data);
            }
//            if ("1".equals(taskWord)) {
          if ("1".equals(taskWord.getValue() + "")) {
//                S7Data s7Data = new S7Data();
//                s7Data.setTaskWord((short) 0);
//                s7Data.setStartSlot((short) 0);
//                s7Data.setEndSlot((short) 0);
//                s7Serializer.write(s7Data);
                List<ReadWriteEntity> list = new ArrayList<>();
                list.add(generateReadWriteEntity("CC.CC.taskWord", 0));
                list.add(generateReadWriteEntity("CC.CC.startSlot", 0));
                list.add(generateReadWriteEntity("CC.CC.endSlot", 0));
                miloService.writeToOpcWord(list);
            if ("1".equals(taskWord)) {
                S7DataCC s7Data = new S7DataCC();
                s7Data.setTaskWord(0);
                s7Data.setStartSlot(0);
                s7Data.setEndSlot(0);
                s7SerializerCC.write(s7Data);
            }
            return;
        }
@@ -148,10 +146,8 @@
    @Scheduled(fixedDelay = 1000)
    public void rawStorageInCar() throws Exception {
//        S7Data S7DataWL1 = s7Serializer.read(S7Data.class);
//        String value = S7DataWL1.getInCar().toString();
        ReadWriteEntity entity = miloService.readFromOpcUa("CC.CC.inCar");
        String value = entity.getValue() + "";
        S7DataCC S7DataCCOne = s7SerializerCC.read(S7DataCC.class);
        String value = S7DataCCOne.getInCar().toString();
        if (!"1".equals(value)) {
            log.info("大车上没有架子");
            return;
@@ -169,10 +165,8 @@
    @Scheduled(fixedDelay = 1000)
    public void rawStorageFinish() throws Exception {
//        S7Data S7DataWL1 = s7Serializer.read(S7Data.class);
//        String value = S7DataWL1.getReportWord().toString();
        ReadWriteEntity entity = miloService.readFromOpcUa("CC.CC.reportWord");
        String value = entity.getValue() + "";
        S7DataCC S7DataCCOne = s7SerializerCC.read(S7DataCC.class);
        String value = S7DataCCOne.getReportWord().toString();
        if ("0".equals(value)) {
            log.info("当前任务未汇报,结束本次任务");
            return;
@@ -235,12 +229,9 @@
                    .set(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_FAILURE));
        }
//        S7Data s7Data = new S7Data();
//        s7Data.setConfirmation((short) 1);
//        s7Serializer.write(s7Data);
        List<ReadWriteEntity> list = new ArrayList<>();
        list.add(generateReadWriteEntity("CC.CC.confirmation", 1));
        miloService.writeToOpcWord(list);
        S7DataCC s7Data = new S7DataCC();
        s7Data.setConfirmation(1);
        s7SerializerCC.write(s7Data);
    }
    private boolean isHasRunningTask() {
@@ -297,13 +288,6 @@
        //生成出库任务
        rawGlassStorageDetailsService.generateTask(startSlot, lefting, startSlot, rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_OUT);
//        List<ReadWriteEntity> list = new ArrayList<>();
//        list.add(generateReadWriteEntity("CC.CC.taskWord", 1));
//        list.add(generateReadWriteEntity("CC.CC.taskSending", 1));
//        list.add(generateReadWriteEntity("CC.CC.startSlot", startSlot));
//        list.add(generateReadWriteEntity("CC.CC.endSlot", lefting));
//        miloService.writeToOpcWord(list);
        //修改出片任务状态
        rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                .eq(RawGlassStorageDetails::getSlot, rawGlassList.get(0).getSlot())
@@ -325,15 +309,6 @@
            return Boolean.FALSE;
        }
        //生成复位任务
//        rawGlassStorageDetailsService.generatask(rawGlassList.get(0).getSlot(), rawGlassList.get(0).getShelf(), rawGlassList.get(0).getShelf(), rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH);
//        List<ReadWriteEntity> list = new ArrayList<>();
//        list.add(generateReadWriteEntity("CC.CC.taskWord", 1));
//        list.add(generateReadWriteEntity("CC.CC.taskSending", 1));
//        list.add(generateReadWriteEntity("CC.CC.startSlot", startSlot));
//        list.add(generateReadWriteEntity("CC.CC.endSlot", lefting));
//        miloService.writeToOpcWord(list);
        //修改复位任务状态
        rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
@@ -362,12 +337,6 @@
        RawGlassStorageDetails details = rawGlassList.get(0);
        rawGlassStorageDetailsService.generateTask(details.getSlot(), details.getShelf(), details.getShelf(),
                details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_IN);
//        List<ReadWriteEntity> list = new ArrayList<>();
//        list.add(generateReadWriteEntity("CC.CC.taskWord", 1));
//        list.add(generateReadWriteEntity("CC.CC.taskSending", 1));
//        list.add(generateReadWriteEntity("CC.CC.startSlot", details.getSlot()));
//        list.add(generateReadWriteEntity("CC.CC.endSlot", details.getShelf()));
//        miloService.writeToOpcWord(list);
        //生成工位任务,将吊装位的玻璃状态改位进笼中
        //修改吊装位的原片状态为103 出片中
        //修改出片任务状态
@@ -433,7 +402,7 @@
        if (CollectionUtils.isEmpty(loadStationList)) {
            log.info("1号上片位生成调度任务");
            RawGlassStorageDetails rawDetails = getRawGlassStorageDetailsBySize(usageVOS.get(0), usageVOS.size());
            if (CollectionUtils.isEmpty(loadStationList)) {
            if (rawDetails == null) {
                log.info("仓库内无匹配的玻璃");
                return Boolean.FALSE;
            }
@@ -487,7 +456,12 @@
                    RawGlassStorageDetails twoLoadStation = loadStationList.stream().filter(e -> e.getSlot().equals(loadStation.get(1))).findFirst().orElse(null);
                    if (null == twoLoadStation) {
                        //按照尺寸生成二号位上片任务信息
                        LoadGlassDeviceTask loadTask = loadGlassDeviceTaskService.queryTaskMessage(tableName);
                        S7DataSP loadTask = new S7DataSP();
                        if (stationCell == 5) {
                            loadTask = s7SerializerSPOne.read(S7DataSP.class);
                        } else {
                            loadTask = s7SerializerSPTwo.read(S7DataSP.class);
                        }
                        RawGlassStorageDetails rawDetails = null;
                        if (oneLoadStation.getRemainQuantity() > (loadTask.getTotalCount() + loadTask.getDamageCount())) {
                            usageVOS = upListMap.get("2");
@@ -513,7 +487,12 @@
                    } else {
                        //todo:当二号为的尺寸大于0时,是否执行调度任务,更换当前原片的尺寸,等待下一次任务的直接执行;还是继续等待,当尺寸不一样,等待一号工位的进出库调度任务。
                        if (twoLoadStation.getRemainQuantity() > 0) {
                            LoadGlassDeviceTask loadTask = loadGlassDeviceTaskService.queryTaskMessage(tableName);
                            S7DataSP loadTask = new S7DataSP();
                            if (stationCell == 5) {
                                loadTask = s7SerializerSPOne.read(S7DataSP.class);
                            } else {
                                loadTask = s7SerializerSPTwo.read(S7DataSP.class);
                            }
                            if (oneLoadStation.getRemainQuantity() > (loadTask.getTotalCount() + loadTask.getDamageCount())) {
                                usageVOS = upListMap.get("2");
                                if (CollectionUtils.isEmpty(usageVOS)) {
@@ -545,7 +524,6 @@
                            return Boolean.TRUE;
                        }
                    }
//                    return Boolean.FALSE;
                } else {
                    log.info("2号上片位仅剩空架子,1号上片位生成出库调度任务");
                    rawGlassStorageDetailsService.generateTask(loadStation.get(0), oneLoadStation.getShelf(), oneLoadStation.getShelf(), oneLoadStation.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH);