ZengTao
2025-05-20 ae07cd92f46b88bf034c7d9d0b96b3a5e83fdc98
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
import com.mes.common.config.Const;
import com.mes.engineering.entity.Engineering;
import com.mes.engineering.mapper.EngineeringMapper;
@@ -14,11 +15,14 @@
import com.mes.pp.service.OptimizeProjectService;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
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.BeanUtils;
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;
@@ -52,6 +56,14 @@
    private UpPattenUsageMapper upPattenUsageMapper;
    @Resource
    private OptimizeProjectService optimizeProjectService;
    @Autowired
    @Qualifier("s7SerializerSPOne")
    private S7Serializer s7SerializerSPOne;
    @Autowired
    @Qualifier("s7SerializerSPTwo")
    private S7Serializer s7SerializerSPTwo;
    private static final List<Integer> LOAD_STATION_01 = Arrays.asList(101, 102);
    private static final List<Integer> LOAD_STATION_02 = Arrays.asList(103, 104);
@@ -109,6 +121,12 @@
    }
    private void opcLoadGlassChild(String tableName, Integer deviceId) {
        S7DataSP s7DataSP = new S7DataSP();
        if(tableName.equals(LOAD_GLASS_DEVICE_ONE_TASK)){
            s7DataSP = s7SerializerSPOne.read(S7DataSP.class);
        }else{
            s7DataSP = s7SerializerSPTwo.read(S7DataSP.class);
        }
        Engineering engineering = engineeringMapper.selectOne(new LambdaQueryWrapper<Engineering>()
                .eq(Engineering::getState, Const.ENGINEERING_RUNNING).eq(Engineering::getStationCell, deviceId));
        if (null == engineering) {
@@ -117,11 +135,14 @@
        }
        //任务暂停
        LoadGlassDeviceTask task = loadGlassDeviceTaskService.queryTaskMessage(tableName);
        if (0 == task.getInkageState()) {
        ;
        if ("0".equals(s7DataSP.getInkageState().toString())) {
//        if (0 == task.getInkageState()) {
            log.info("{}上片线,处于离线状态:{},结束本地上片请求", deviceId, task.getInkageState());
            return;
        }
        if (task.getTaskRunning().equals(Const.ENGINEERING_RUNNING)) {
        if (s7DataSP.getTaskRunning().toString().equals(Const.ENGINEERING_RUNNING)) {
//        if (task.getTaskRunning().equals(Const.ENGINEERING_RUNNING)) {
            log.info("{}上片线,有正在执行的任务,结束本地上片请求", deviceId);
            return;
        }
@@ -181,19 +202,29 @@
    }
    private void opcLoadGlassFinishChid(String tableName, Integer deviceId) {
        S7DataSP s7DataSP = new S7DataSP();
        if(tableName.equals(LOAD_GLASS_DEVICE_ONE_TASK)){
            s7DataSP = s7SerializerSPOne.read(S7DataSP.class);
        }else{
            s7DataSP = s7SerializerSPTwo.read(S7DataSP.class);
        }
        LoadGlassDeviceTask task = loadGlassDeviceTaskService.queryTaskMessage(tableName);
        if (task.getTaskRunning().equals(Const.ENGINEERING_NEW)) {
        if (s7DataSP.getTaskRunning().toString().equals(Const.ENGINEERING_NEW)) {
//        if (task.getTaskRunning().equals(Const.ENGINEERING_NEW)) {
            log.info("无任务,结束");
            return;
        }
        if (task.getTaskState() <= 1) {
        if (Integer.parseInt(s7DataSP.getTaskState().toString()) <= 1) {
//        if (task.getTaskState() <= 1) {
            log.info("任务正在执行,结束");
            return;
        }
        //获取任务完成情况
//         已完成数量  破损数量
        Integer finishCount = task.getFinishCount();
        Integer damageCount = task.getDamageCount();
        Integer finishCount = Integer.parseInt(s7DataSP.getFinishCount().toString());
        Integer damageCount = Integer.parseInt(s7DataSP.getDamageCount().toString());
//        Integer finishCount = task.getFinishCount();
//        Integer damageCount = task.getDamageCount();
        //更新当前架子上的原片剩余情况
        rawGlassStorageDetailsService.update(new UpdateWrapper<RawGlassStorageDetails>()