| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | @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); |
| | | |
| | |
| | | //2、1号上片位是否有原片,原片尺寸是否和上片待上片的尺寸一致 |
| | | //3、1号无原片,且没有架子,2号上片位尺寸是否和带上片尺寸一致 |
| | | //4、不一致可能出现玻璃破损导致的上一架原片数量不够 |
| | | @Scheduled(fixedDelay = 300) |
| | | @Scheduled(fixedDelay = 5000) |
| | | public void opcLoadGlassOne() { |
| | | opcLoadGlassChild(LOAD_GLASS_DEVICE_ONE_TASK, LOAD_GLASS_ONE_DEVICE); |
| | | } |
| | | |
| | | @Scheduled(fixedDelay = 300) |
| | | @Scheduled(fixedDelay = 5000) |
| | | public void opcLoadGlassTwo() { |
| | | opcLoadGlassChild(LOAD_GLASS_DEVICE_TWO_TASK, LOAD_GLASS_TWO_DEVICE); |
| | | } |
| | | |
| | | @Scheduled(fixedDelay = 300) |
| | | @Scheduled(fixedDelay = 5000) |
| | | public void opcLoadGlassOneFinish() { |
| | | opcLoadGlassFinishChid(LOAD_GLASS_DEVICE_ONE_TASK, LOAD_GLASS_ONE_DEVICE); |
| | | } |
| | | |
| | | @Scheduled(fixedDelay = 300) |
| | | @Scheduled(fixedDelay = 5000) |
| | | public void opcLoadGlassTwoFinish() { |
| | | opcLoadGlassFinishChid(LOAD_GLASS_DEVICE_TWO_TASK, LOAD_GLASS_TWO_DEVICE); |
| | | } |
| | |
| | | /** |
| | | * 定时任务扫码已完成上片的工程,将工程状态改为已完成,同步pp表的工程表,状态改为300 |
| | | */ |
| | | @Scheduled(fixedDelay = 3000) |
| | | @Scheduled(fixedDelay = 5000) |
| | | public void updateEngineerState() { |
| | | log.info("修改已完成工程状态任务开始执行"); |
| | | List<Engineering> engineerings = engineeringMapper.selectList(new LambdaQueryWrapper<Engineering>().eq(Engineering::getState, Const.ENGINEERING_RUNNING)); |
| | |
| | | } |
| | | |
| | | 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) { |
| | |
| | | } |
| | | //任务暂停 |
| | | 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; |
| | | } |
| | |
| | | } |
| | | |
| | | 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>() |