package com.mes.job;
|
|
import cn.hutool.json.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.mes.common.config.Const;
|
import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
|
import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
|
import com.mes.edgstoragecage.entity.vo.EdgStorageCageVO;
|
import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
|
import com.mes.edgstoragecage.service.EdgStorageCageService;
|
import com.mes.engineering.entity.Engineering;
|
import com.mes.engineering.service.EngineeringService;
|
import com.mes.largenscreen.entity.DailyProductionVO;
|
import com.mes.largenscreen.entity.DateRequest;
|
import com.mes.largenscreen.entity.PieChartVO;
|
import com.mes.largenscreen.entity.RunTime;
|
import com.mes.largenscreen.service.LargenScreenService;
|
import com.mes.opctask.entity.EdgStorageDeviceTaskHistory;
|
import com.mes.opctask.service.EdgStorageDeviceTaskHistoryService;
|
import com.mes.opctask.service.EdgStorageDeviceTaskService;
|
import com.mes.tools.WebSocketServer;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.text.SimpleDateFormat;
|
import java.time.LocalDate;
|
import java.time.LocalDateTime;
|
import java.time.ZoneId;
|
import java.time.format.DateTimeFormatter;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @Author : zhoush
|
* @Date: 2024/12/4 9:41
|
* @Description:
|
*/
|
@Component
|
@Slf4j
|
public class PushMessageToIndex {
|
|
@Resource
|
EdgStorageCageDetailsService edgStorageCageDetailsService;
|
@Resource
|
EdgStorageCageService edgStorageCageService;
|
@Resource
|
EdgGlassTaskInfoService edgGlassTaskInfoService;
|
@Resource
|
EdgStorageDeviceTaskService edgStorageDeviceTaskService;
|
@Resource
|
EdgStorageDeviceTaskHistoryService edgStorageDeviceTaskHistoryService;
|
@Resource
|
EngineeringService engineeringService;
|
@Resource
|
LargenScreenService largenScreenService;
|
|
|
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";
|
|
@Scheduled(fixedDelay = 1000)
|
public void CacheGlassOneTasks() {
|
CacheGlassTasksChild("cacheGlassOne", 1);
|
}
|
|
@Scheduled(fixedDelay = 1000)
|
public void CacheGlassTwoTasks() {
|
CacheGlassTasksChild("cacheGlassTwo", 2);
|
}
|
|
private void CacheGlassTasksChild(String webSocketName, int deviceId) {
|
JSONObject jsonObject = new JSONObject();
|
//卧室缓存笼内信息
|
List<EdgStorageCageVO> edgStorageCageVOS = edgStorageCageService.selectEdgStorageCagesByDeviceId(deviceId);
|
jsonObject.append("EdgStorageCageinfos", edgStorageCageVOS);
|
|
//获取正在整形中的任务
|
EdgStorageDeviceTaskHistory taskHistory = edgStorageDeviceTaskHistoryService.getOne(new LambdaQueryWrapper<EdgStorageDeviceTaskHistory>()
|
.eq(EdgStorageDeviceTaskHistory::getDeviceId, deviceId)
|
.eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW)
|
.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");
|
}
|
}
|
}
|
}
|
|
@Scheduled(fixedDelay = 1000)
|
public void currentCutDrawingOneTask() {
|
currentCutDrawingTaskChild("currentCutDrawingOne", 1, 5);
|
}
|
|
@Scheduled(fixedDelay = 1000)
|
public void currentCutDrawingTwoTask() {
|
currentCutDrawingTaskChild("currentCutDrawingTwo", 2, 6);
|
}
|
|
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");
|
}
|
}
|
}
|
}
|
|
@Scheduled(fixedDelay = 1000)
|
public void CacheGlassTaskss() {
|
JSONObject jsonObject = new JSONObject();
|
//磨边信息
|
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");
|
}
|
}
|
}
|
}
|
|
@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");
|
}
|
}
|
}
|
}
|
|
@Scheduled(fixedDelay = 5000)
|
public void largenScreen() {
|
JSONObject jsonObject = new JSONObject();
|
//磨边信息
|
|
ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("largenScreen");
|
if (sendwServer != null) {
|
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);
|
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");
|
}
|
}
|
}
|
}
|
}
|