| | |
| | | |
| | | import cn.hutool.json.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.mes.alarm.entity.ProductAlarmInfo; |
| | | import com.mes.alarm.service.ProductAlarmInfoService; |
| | | import com.mes.common.config.Const; |
| | | import com.mes.edgglasstask.entity.EdgGlassTaskInfo; |
| | | import com.mes.edgglasstask.service.EdgGlassTaskInfoService; |
| | |
| | | import com.mes.opctask.entity.EdgStorageDeviceTaskHistory; |
| | | import com.mes.opctask.service.EdgStorageDeviceTaskHistoryService; |
| | | import com.mes.opctask.service.EdgStorageDeviceTaskService; |
| | | import com.mes.tools.WebSocketServer; |
| | | import com.mes.tools.WebSocketUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.ArrayList; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.ZoneId; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | EngineeringService engineeringService; |
| | | @Resource |
| | | LargenScreenService largenScreenService; |
| | | @Resource |
| | | private ProductAlarmInfoService productAlarmInfoService; |
| | | |
| | | private static final String ALARM_MODULE = "磨边"; |
| | | private static final String ALARM_TYPE1 = "一线卧式理片笼"; |
| | | private static final String ALARM_TYPE2 = "二线卧式理片笼"; |
| | | private static final String ALARM_CODE_NOGLASS = "noGlass"; |
| | | |
| | | private static final String EDG_STORAGE_DEVICE_ONE_TASK = "edg_storage_device_one_task"; |
| | | |
| | | private static final String EDG_STORAGE_DEVICE_TWO_TASK = "edg_storage_device_two_task"; |
| | | @Resource |
| | | private WebSocketUtils webSocketUtils; |
| | | |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void CacheGlassOneTasks() { |
| | |
| | | .orderByDesc(EdgStorageDeviceTaskHistory::getCreateTime).last("limit 1")); |
| | | jsonObject.append("taskMessage", taskHistory); |
| | | |
| | | ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get(webSocketName); |
| | | if (sendwServer != null) { |
| | | for (WebSocketServer webserver : sendwServer) { |
| | | if (webserver != null) { |
| | | webserver.sendMessage(jsonObject.toString()); |
| | | List<String> messages = webserver.getMessages(); |
| | | if (!messages.isEmpty()) { |
| | | // // 将最后一个消息转换为整数类型的列表 |
| | | webserver.clearMessages(); |
| | | } |
| | | } else { |
| | | log.info("Home is closed"); |
| | | } |
| | | } |
| | | //推送报警信息 |
| | | if (deviceId == 1) { |
| | | jsonObject.append("alarmInfo", productAlarmInfoService.list(new LambdaQueryWrapper<ProductAlarmInfo>() |
| | | .eq(ProductAlarmInfo::getState, Const.LOAD_RAW_GLASS_NEW) |
| | | .eq(ProductAlarmInfo::getAlarmModule, ALARM_MODULE) |
| | | .eq(ProductAlarmInfo::getAlarmType, ALARM_TYPE1))); |
| | | } else { |
| | | |
| | | jsonObject.append("alarmInfo", productAlarmInfoService.list(new LambdaQueryWrapper<ProductAlarmInfo>() |
| | | .eq(ProductAlarmInfo::getState, Const.LOAD_RAW_GLASS_NEW) |
| | | .eq(ProductAlarmInfo::getAlarmModule, ALARM_MODULE) |
| | | .eq(ProductAlarmInfo::getAlarmType, ALARM_TYPE2))); |
| | | } |
| | | webSocketUtils.sendToWeb(webSocketName, jsonObject); |
| | | } |
| | | |
| | | @Scheduled(fixedDelay = 1000) |
| | |
| | | |
| | | public void currentCutDrawingTaskChild(String webSocketName, int deviceId, int stationCell) { |
| | | JSONObject jsonObject = edgStorageCageDetailsService.queryCurrentCutDrawing(deviceId, stationCell); |
| | | ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get(webSocketName); |
| | | if (sendwServer != null) { |
| | | for (WebSocketServer webserver : sendwServer) { |
| | | if (webserver != null) { |
| | | webserver.sendMessage(jsonObject.toString()); |
| | | List<String> messages = webserver.getMessages(); |
| | | if (!messages.isEmpty()) { |
| | | // // 将最后一个消息转换为整数类型的列表 |
| | | webserver.clearMessages(); |
| | | } |
| | | } else { |
| | | log.info("Home is closed"); |
| | | } |
| | | } |
| | | } |
| | | webSocketUtils.sendToWeb(webSocketName, jsonObject); |
| | | } |
| | | |
| | | @Scheduled(fixedDelay = 1000) |
| | |
| | | //磨边信息 |
| | | List<EdgGlassTaskInfo> edgTasks = edgGlassTaskInfoService.selectEdgInfo(); |
| | | jsonObject.append("edgTasks", edgTasks); |
| | | |
| | | ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("edgTasks"); |
| | | if (sendwServer != null) { |
| | | for (WebSocketServer webserver : sendwServer) { |
| | | if (webserver != null) { |
| | | webserver.sendMessage(jsonObject.toString()); |
| | | List<String> messages = webserver.getMessages(); |
| | | if (!messages.isEmpty()) { |
| | | // // 将最后一个消息转换为整数类型的列表 |
| | | webserver.clearMessages(); |
| | | } |
| | | } else { |
| | | log.info("edgTasks is closed"); |
| | | } |
| | | } |
| | | } |
| | | webSocketUtils.sendToWeb("edgTasks", jsonObject); |
| | | } |
| | | |
| | | @Scheduled(fixedDelay = 1000) |
| | | @Scheduled(fixedDelay = 5000) |
| | | public void querySameDayProductionTask() { |
| | | JSONObject jsonObject = new JSONObject(); |
| | | ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("largenScreenProduction"); |
| | | if (sendwServer != null) { |
| | | List<DailyProductionVO> productionVO = largenScreenService.querySameDayProduction(new DateRequest()); |
| | | jsonObject.append("productionVO", productionVO); |
| | | for (WebSocketServer webserver : sendwServer) { |
| | | if (webserver != null) { |
| | | webserver.sendMessage(jsonObject.toString()); |
| | | List<String> messages = webserver.getMessages(); |
| | | if (!messages.isEmpty()) { |
| | | // // 将最后一个消息转换为整数类型的列表 |
| | | webserver.clearMessages(); |
| | | } |
| | | } else { |
| | | log.info("largenScreenProduction is closed"); |
| | | } |
| | | } |
| | | } |
| | | List<DailyProductionVO> productionVO = largenScreenService.querySameDayProduction(new DateRequest()); |
| | | jsonObject.append("productionVO", productionVO); |
| | | webSocketUtils.sendToWeb("largenScreenProduction", jsonObject); |
| | | |
| | | } |
| | | |
| | | @Scheduled(fixedDelay = 500) |
| | | @Scheduled(fixedDelay = 5000) |
| | | public void largenScreen() { |
| | | JSONObject jsonObject = new JSONObject(); |
| | | //磨边信息 |
| | | Date startOfToday = new Date(LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli()); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | String formatted = sdf.format(startOfToday); |
| | | LocalDate date = LocalDate.parse(formatted); // formatted = "2025-05-23" |
| | | LocalDateTime start = date.atStartOfDay(); // 2025-05-23 00:00:00 |
| | | LocalDateTime end = date.plusDays(1).atStartOfDay(); |
| | | int edgOneCount = edgGlassTaskInfoService.count( |
| | | new LambdaQueryWrapper<EdgGlassTaskInfo>() |
| | | .lt(EdgGlassTaskInfo::getState, 2) |
| | | .eq(EdgGlassTaskInfo::getLine, 1) |
| | | .between(EdgGlassTaskInfo::getCreateTime, start, end) |
| | | ); |
| | | edgOneCount = edgOneCount >= 6 ? 6 : edgOneCount; |
| | | int edgTwoCount = edgGlassTaskInfoService.count( |
| | | new LambdaQueryWrapper<EdgGlassTaskInfo>() |
| | | .lt(EdgGlassTaskInfo::getState, 2) |
| | | .eq(EdgGlassTaskInfo::getLine, 2) |
| | | .between(EdgGlassTaskInfo::getCreateTime, start, end) |
| | | ); |
| | | edgTwoCount = edgTwoCount >= 6 ? 6 : edgTwoCount; |
| | | jsonObject.append("edgOneCount", edgOneCount); |
| | | jsonObject.append("edgTwoCount", edgTwoCount); |
| | | List<Engineering> engineeringOne = engineeringService.list( |
| | | new LambdaQueryWrapper<Engineering>() |
| | | .eq(Engineering::getStationCell, 5) |
| | | .eq(Engineering::getState, 0) |
| | | ); |
| | | List<Engineering> engineeringTow = engineeringService.list( |
| | | new LambdaQueryWrapper<Engineering>() |
| | | .eq(Engineering::getStationCell, 6) |
| | | .eq(Engineering::getState, 0) |
| | | ); |
| | | jsonObject.append("engineeringOne", engineeringOne); |
| | | jsonObject.append("engineeringTwo", engineeringTow); |
| | | List<PieChartVO> pieChartVOS = edgStorageCageDetailsService.queryPieChart(); |
| | | jsonObject.append("pieChartVOS", pieChartVOS); |
| | | List<RunTime> loadRunTimes = edgStorageDeviceTaskHistoryService.queryRunTimes(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); |
| | | jsonObject.append("loadRunTimes", loadRunTimes); |
| | | |
| | | ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("largenScreen"); |
| | | if (sendwServer != null) { |
| | | List<EdgGlassTaskInfo> edgOneTasks = edgGlassTaskInfoService.list( |
| | | new LambdaQueryWrapper<EdgGlassTaskInfo>() |
| | | .lt(EdgGlassTaskInfo::getState, 2) |
| | | .eq(EdgGlassTaskInfo::getLine, 1) |
| | | ); |
| | | List<EdgGlassTaskInfo> edgTwoTasks = edgGlassTaskInfoService.list( |
| | | new LambdaQueryWrapper<EdgGlassTaskInfo>() |
| | | .lt(EdgGlassTaskInfo::getState, 2) |
| | | .eq(EdgGlassTaskInfo::getLine, 2) |
| | | ); |
| | | jsonObject.append("edgOneTasks", edgOneTasks); |
| | | jsonObject.append("edgTwoTasks", edgTwoTasks); |
| | | List<Engineering> engineeringOne = engineeringService.list( |
| | | new LambdaQueryWrapper<Engineering>() |
| | | .eq(Engineering::getStationCell, 5) |
| | | .eq(Engineering::getState, 0) |
| | | ); |
| | | List<Engineering> engineeringTow = engineeringService.list( |
| | | new LambdaQueryWrapper<Engineering>() |
| | | .eq(Engineering::getStationCell, 6) |
| | | .eq(Engineering::getState, 0) |
| | | ); |
| | | jsonObject.append("engineeringOne", engineeringOne); |
| | | jsonObject.append("engineeringTwo", engineeringTow); |
| | | List<PieChartVO> pieChartVOS = edgStorageCageDetailsService.queryPieChart(); |
| | | jsonObject.append("pieChartVOS", pieChartVOS); |
| | | List<RunTime> loadRunTimes = edgStorageDeviceTaskHistoryService.queryRunTimes(); |
| | | jsonObject.append("loadRunTimes", loadRunTimes); |
| | | for (WebSocketServer webserver : sendwServer) { |
| | | if (webserver != null) { |
| | | webserver.sendMessage(jsonObject.toString()); |
| | | List<String> messages = webserver.getMessages(); |
| | | if (!messages.isEmpty()) { |
| | | // // 将最后一个消息转换为整数类型的列表 |
| | | webserver.clearMessages(); |
| | | } |
| | | } else { |
| | | log.info("largenScreen is closed"); |
| | | } |
| | | } |
| | | } |
| | | webSocketUtils.sendToWeb("largenScreen", jsonObject); |
| | | |
| | | } |
| | | } |