package com.mes.job; import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.mes.common.config.Const; import com.mes.damage.service.DamageService; import com.mes.largenscreen.entity.PieChartVO; import com.mes.temperingglass.entity.TemperingGlassInfo; import com.mes.temperingglass.service.TemperingGlassInfoService; import com.mes.tools.WebSocketServer; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; /** * @author SNG-010 */ @Component @Slf4j public class PlcTemperingGlassTask { @Autowired private TemperingGlassInfoService temperingAgoService; @Autowired private DamageService damageService; /** * fixedRate : 上一个调用开始后再次调用的延时(不用等待上一次调用完成) * fixedDelay : 上一个调用结束后再次调用的延时 */ @Scheduled(fixedDelay = 1000) public void temperingGlassHome() { JSONObject jsonObject = new JSONObject(); //正在等待进片的玻璃 List waitingGlass = temperingAgoService.selectWaitingGlassByOpc(); if (waitingGlass != null) { jsonObject.append("waitingGlass", waitingGlass); } //获取整在炉中的两个版图id List layoutId = temperingAgoService.selectLayoutId(); //进炉中的玻璃 if (!layoutId.isEmpty()) { List intoGlass = temperingAgoService.selectIntoGlass(layoutId.get(0)); jsonObject.append("intoGlass", intoGlass); //进炉中的第二个版图 if (layoutId.size() > 1) { List intoGlass2 = temperingAgoService.selectIntoGlass(layoutId.get(1)); jsonObject.append("intoGlass2", intoGlass2); } } //出炉后的玻璃 List outGlass = temperingAgoService.selectOutGlass(); if (outGlass != null) { jsonObject.append("outGlass", outGlass); } //过旋转台钢化后的玻璃 List overGlass = temperingAgoService.selectOverGlass(); if (outGlass != null) { jsonObject.append("overGlass", overGlass); } ArrayList sendwServer = WebSocketServer.sessionMap.get("temperingGlass"); if (sendwServer != null) { for (WebSocketServer webserver : sendwServer) { if (webserver != null) { webserver.sendMessage(jsonObject.toString()); } else { log.info("Home is closed"); } } } } @Scheduled(fixedDelay = 1000) public void temperingIsRun() { JSONObject jsonObject = new JSONObject(); //正在进行的任务 List temperingTaskType = temperingAgoService.selectTaskType(); jsonObject.append("temperingTaskType", temperingTaskType); ArrayList sendwServer = WebSocketServer.sessionMap.get("temperingIsRun"); if (sendwServer != null) { for (WebSocketServer webserver : sendwServer) { if (webserver != null) { webserver.sendMessage(jsonObject.toString()); } else { log.info("Home is closed"); } } } } @Scheduled(fixedDelay = 1000) public void largenScreen() { JSONObject jsonObject = new JSONObject(); //大屏钢化信息 Integer putGlass = temperingAgoService.count( new LambdaUpdateWrapper() .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW) ); jsonObject.append("temperingTaskType", putGlass); //大屏钢化信息 List temperingGlassInfoList = temperingAgoService.list( new LambdaQueryWrapper() .select(TemperingGlassInfo::getEngineerId, TemperingGlassInfo::getTemperingLayoutId) // 选择要去重的字段 .eq(TemperingGlassInfo::getState, Const.TEMPERING_START) .groupBy(TemperingGlassInfo::getEngineerId, TemperingGlassInfo::getTemperingLayoutId) // 按 engineerId 和 temperingLayoutId 分组 ); jsonObject.append("temperingGlassInfoList", temperingGlassInfoList.size()); //大屏钢化信息 List temperingGlassInfoInList = temperingAgoService.list( new LambdaQueryWrapper() .select(TemperingGlassInfo::getEngineerId, TemperingGlassInfo::getTemperingLayoutId) // 选择要去重的字段 .eq(TemperingGlassInfo::getState, Const.TEMPERING_DROP) .groupBy(TemperingGlassInfo::getEngineerId, TemperingGlassInfo::getTemperingLayoutId) // 按 engineerId 和 temperingLayoutId 分组 ); jsonObject.append("temperingGlassInfoInList", temperingGlassInfoInList.size()); //钢化饼图数据 List pieChartVOS = temperingAgoService.queryPieChart(); jsonObject.append("pieChartVOS", pieChartVOS); ArrayList sendwServer = WebSocketServer.sessionMap.get("largenScreen"); if (sendwServer != null) { for (WebSocketServer webserver : sendwServer) { if (webserver != null) { webserver.sendMessage(jsonObject.toString()); List messages = webserver.getMessages(); if (!messages.isEmpty()) { // // 将最后一个消息转换为整数类型的列表 webserver.clearMessages(); } } else { log.info("largenScreen is closed"); } } } } }