From b4f51417997c20dd15e3db19d5055edd55d872cd Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期三, 27 十一月 2024 09:46:12 +0800
Subject: [PATCH] 版本保存 1、磨边队列进入多片已修改完成 2、解决状态清0异常现象
---
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java | 92 ++++++++++++++++++++++++++++++----------------
1 files changed, 60 insertions(+), 32 deletions(-)
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java
index 2d81cd3..8941f5c 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java
@@ -7,6 +7,8 @@
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.kangaroohy.milo.runner.subscription.SubscriptionCallback;
import com.mes.common.config.Const;
+import com.mes.edgglasstaskqueueinfo.entity.EdgGlassTaskQueueInfo;
+import com.mes.edgglasstaskqueueinfo.service.EdgGlassTaskQueueInfoService;
import com.mes.edgstoragecage.entity.EdgStorageCage;
import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
@@ -24,6 +26,7 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import java.util.Date;
import java.util.List;
/**
@@ -50,6 +53,9 @@
@Resource
EdgStorageDeviceTaskHistoryService edgStorageDeviceTaskHistoryService;
+ @Resource
+ EdgGlassTaskQueueInfoService edgGlassTaskQueueInfoService;
+
@Value("${mes.glassGap}")
private int glassGap;
@Value("${mes.threshold}")
@@ -57,33 +63,43 @@
@Value("${mes.cellLength}")
private int cellLength;
+ private Date startDate;
+
@Override
public void onSubscribe(String identifier, Object value) {
+
+ log.info("褰撳墠姝e湪鎵ц鐨勪换鍔′负{}", value);
String tableName = identifier.contains("edg_storage_device_one_task") ? EDG_STORAGE_DEVICE_ONE_TASK : EDG_STORAGE_DEVICE_TWO_TASK;
+ int device = tableName.equals("edg_storage_device_one_task") ? 1 : 2;
EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(tableName);
try {
if (task == null) {
log.info("浠诲姟琛ㄥ熀纭�鏁版嵁褰曞叆澶辫触锛岃妫�鏌ユ暟鎹槸鍚﹀綍鍏ユ垚鍔�");
return;
}
- int request = task.getTaskState();
+ if (task.getTaskState() == 2) {
+ //闃叉鍑虹墖浠诲姟涓旂鍓嶆湁鐜荤拑鐨勬儏鍐碉紝灏嗚繘鐗噄d缃┖锛屽嵆鍑虹墖浠呰�冭檻绗煎唴鐨勭幓鐠�
+ task.setGlassIdIn("");
+ }
+ int request = Integer.parseInt("" + value);
log.info("寮�濮嬫墽琛屼换鍔★紝浠诲姟璇蜂俊鎭负{}", task);
if (request == 0) {
log.info("鏈敹鍒颁换鍔¤姹傦紝缁撴潫鏈浠诲姟");
} else if (request == 1) {
//杩涚墖浠诲姟
- intoTask(task, tableName);
+ log.info("杩涚墖浠诲姟锛氳繘鐗囩幓鐠僫d涓猴細{}", task.getGlassIdIn());
+ intoTask(task, tableName, device);
} else if (request == 2) {
//鍑虹墖浠诲姟
- outTask(task, tableName);
+ outTask(task, tableName, device);
} else if (request == 3) {
//鐩撮�氫换鍔�
- if (!outTask(task, tableName)) {
- intoTask(task, tableName);
+ if (!outTask(task, tableName, device)) {
+ intoTask(task, tableName, device);
}
} else if (request == 4) {
log.info("灏嗗惎鍔ㄥ瓙鏀逛负0");
- task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY);
+ task.setTaskRunning(Const.GLASS_CACHE_TYPE_RUNNING);
edgStorageDeviceTaskService.updateTaskMessage(tableName, task);
} else {
finishTask(task, tableName);
@@ -96,7 +112,7 @@
}
}
- private boolean intoTask(EdgStorageDeviceTask task, String tableName) {
+ private boolean intoTask(EdgStorageDeviceTask task, String tableName, int deviceId) {
//鑾峰彇鐜荤拑鐨勫熀鏈俊鎭�
GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, task.getGlassIdIn()));
if (null == glassInfo) {
@@ -104,11 +120,12 @@
return Boolean.FALSE;
}
//鑾峰彇褰撳墠杩涚墖鐜荤拑id鍜岃繘鐗囨牸瀛� 鐩稿悓灏哄鍙互鏀句笅鐨勬牸瀛�
- EdgStorageCage edgStorageCage = edgStorageCageService.getEdgStorageCageBySize(1, glassInfo.getWidth(), glassInfo.getHeight(), task.getCurrentCell());
+ EdgStorageCage edgStorageCage = edgStorageCageService.getEdgStorageCageBySize(deviceId, glassInfo.getWidth(), glassInfo.getHeight(), task.getCurrentCell());
if (edgStorageCage == null) {
log.info("鐩稿悓灏哄鍙互鏀句笅鐨勬牸瀛愭湭鎵惧埌锛屾牸瀛恑d:{}", task.getCurrentCell());
// SELECT * from edg_storage_cage where device_id = 1 and remain_width > 1000 order by abs(slot - 10)
- List<EdgStorageCage> storageCageList = edgStorageCageService.list(new LambdaQueryWrapper<EdgStorageCage>().eq(EdgStorageCage::getDeviceId, 1)
+ List<EdgStorageCage> storageCageList = edgStorageCageService.list(new LambdaQueryWrapper<EdgStorageCage>()
+ .eq(EdgStorageCage::getDeviceId, deviceId)
.eq(EdgStorageCage::getEnableState, Const.SLOT_ON)
.ge(EdgStorageCage::getRemainWidth, Math.max(glassInfo.getWidth(), glassInfo.getHeight())).last("order by abs(slot - " + task.getCurrentCell() + ")"));
// //鐩撮�氫换鍔�
@@ -137,7 +154,7 @@
return Boolean.TRUE;
}
- private boolean outTask(EdgStorageDeviceTask task, String tableName) {
+ private boolean outTask(EdgStorageDeviceTask task, String tableName, int deviceId) {
EdgStorageCageDetails edgStorageCageDetails = null;
//绗煎唴鏄増鍥剧浉宸槸鍚﹁秴杩囬槇鍊�
boolean flag = queryMaxMinDiff(threshold);
@@ -145,6 +162,7 @@
EdgStorageCageDetails minEdgDetails = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
.inSql(EdgStorageCageDetails::getSlot, "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON)
.eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
+ .eq(EdgStorageCageDetails::getDeviceId, deviceId)
.orderByAsc(EdgStorageCageDetails::getTemperingLayoutId)
.orderBy(Boolean.TRUE, Boolean.TRUE, EdgStorageCageDetails::getTemperingFeedSequence)
.last("limit 1"));
@@ -152,6 +170,7 @@
edgStorageCageDetails = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
.eq(EdgStorageCageDetails::getWidth, minEdgDetails.getWidth())
.eq(EdgStorageCageDetails::getHeight, minEdgDetails.getHeight())
+ .eq(EdgStorageCageDetails::getDeviceId, deviceId)
.inSql(EdgStorageCageDetails::getId, "select min(id) from edg_storage_cage_details where state = 100 group by slot ")
.last("order by abs(slot - " + task.getCurrentCell() + ") asc limit 1")
);
@@ -169,6 +188,7 @@
if (null == edgStorageCageDetails) {
edgStorageCageDetails = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
.eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
+ .eq(EdgStorageCageDetails::getDeviceId, deviceId)
.eq(EdgStorageCageDetails::getSlot, minEdgDetails.getSlot())
.orderByAsc(EdgStorageCageDetails::getId)
.last("limit 1")
@@ -185,7 +205,7 @@
if (null != edgeData) {
GlassInfo glassOutInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, edgeData.getGlassIdOut()));
//绗煎唴鐨勭幓鐠冪殑灏哄鏄惁鍜屼笂涓�娆′换鍔′竴鑷�
- edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsBySize(glassOutInfo.getWidth(), glassOutInfo.getHeight());
+ edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsBySize(deviceId, task.getCurrentCell(), glassOutInfo.getWidth(), glassOutInfo.getHeight());
if (null == edgStorageCageDetails && StringUtils.isNotBlank(task.getGlassIdIn())) {
GlassInfo glassInInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>()
.eq(GlassInfo::getGlassId, task.getGlassIdIn())
@@ -199,7 +219,7 @@
}
}
if (null == edgStorageCageDetails) {
- edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsBySize(0, 0);
+ edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsBySize(deviceId, task.getCurrentCell(), 0, 0);
}
if (edgStorageCageDetails == null && StringUtils.isNotBlank(task.getGlassIdIn())) {
//鍜屼笂娆′换鍔′笉瀛樺湪鐩稿悓灏哄
@@ -215,21 +235,28 @@
int taskType = Const.GLASS_CACHE_TYPE_OUT;
String glassId = edgStorageCageDetails.getGlassId();
if (glassId.equals(task.getGlassIdIn())) {
+ if (3 != task.getTaskState()) {
+ return Boolean.FALSE;
+ }
log.info("5銆佺洿閫氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", edgStorageCageDetails);
//鐜荤拑淇℃伅鏇挎崲
String glassIdChange = queryAndChangeGlass(glassId);
+ //澶勭悊鍦ㄥ崸鐞嗗唴鐨勭幓鐠冧俊鎭細绗煎唴鐨勬暟鎹鐞�
+ queryEdgAndChangeGlass(edgStorageCageDetails.getGlassId(), glassIdChange);
if (StringUtils.isNotBlank(glassIdChange)) {
edgStorageCageDetails = new EdgStorageCageDetails();
GlassInfo one = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
BeanUtils.copyProperties(one, edgStorageCageDetails);
}
- EdgStorageCage storageCage = edgStorageCageService.getOne(new LambdaQueryWrapper<EdgStorageCage>().eq(EdgStorageCage::getDeviceId, 1)
+ EdgStorageCage storageCage = edgStorageCageService.getOne(new LambdaQueryWrapper<EdgStorageCage>()
+ .eq(EdgStorageCage::getDeviceId, deviceId)
.eq(EdgStorageCage::getEnableState, Const.SLOT_ON)
- .ge(EdgStorageCage::getRemainWidth, cellLength).last("order by abs(slot - " + task.getCurrentCell() + ")")
- .last("limit 1"));
+ .ge(EdgStorageCage::getRemainWidth, cellLength)
+ .last("order by abs(slot - " + task.getCurrentCell() + ") limit 1"));
Assert.isTrue(null != storageCage, "鏍煎瓙宸叉弧,鏃犳硶鎵ц鐩撮�氫换鍔�");
log.info("3銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", storageCage);
edgStorageCageDetails.setSlot(storageCage.getSlot());
+ edgStorageCageDetails.setDeviceId(storageCage.getDeviceId());
edgStorageCageDetails.setState(Const.GLASS_STATE_OUT);
edgStorageCageDetailsService.save(edgStorageCageDetails);
taskType = Const.GLASS_CACHE_TYPE_THROUGH;
@@ -238,8 +265,10 @@
if (!edgStorageCageDetails.getSlot().equals(task.getCurrentCell())) {
EdgStorageCageDetails currentGlass = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
.eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
+ .eq(EdgStorageCageDetails::getDeviceId, deviceId)
.eq(EdgStorageCageDetails::getSlot, task.getCurrentCell()).eq(EdgStorageCageDetails::getWidth, edgStorageCageDetails.getWidth())
.eq(EdgStorageCageDetails::getHeight, edgStorageCageDetails.getHeight()).eq(EdgStorageCageDetails::getThickness, edgStorageCageDetails.getThickness())
+ .orderByAsc(EdgStorageCageDetails::getId).last("limit 1")
);
if (null != currentGlass) {
edgStorageCageDetails = currentGlass;
@@ -254,29 +283,31 @@
edgStorageCageDetailsService.update(wrapper);
log.info("5銆佹洿鏂板嚭鐗囩幓鐠冪殑鐘舵�佷负{}", Const.GLASS_STATE_OUT);
}
-
- //鐜荤拑淇℃伅鏇挎崲
-// String glassIdChange = queryAndChangeGlass(edgStorageCageDetails.getGlassId());
- //澶勭悊鍦ㄥ崸鐞嗗唴鐨勭幓鐠冧俊鎭細绗煎唴鐨勬暟鎹鐞�
-// queryEdgAndChangeGlass(edgStorageCageDetails.getGlassId(), glassIdChange);
//鐢熸垚鍑虹墖浠诲姟
task.setGlassIdOut(edgStorageCageDetails.getGlassId());
task.setStartCell(edgStorageCageDetails.getSlot());
task.setTaskRunning(taskType);
- task.setWidth((int) edgStorageCageDetails.getWidth() * 10);
- task.setHeight((int) edgStorageCageDetails.getHeight() * 10);
- task.setThickness((int) edgStorageCageDetails.getThickness() * 10);
- task.setFilmRemove(0);
+
edgStorageDeviceTaskService.updateTaskMessage(tableName, task);
saveHistoryTask(task);
//鏇存柊璇︽儏琛ㄤ换鍔″嚭鐗囦腑
edgStorageCageDetailsService.update(new LambdaUpdateWrapper<EdgStorageCageDetails>()
.set(EdgStorageCageDetails::getState, Const.GLASS_STATE_OUT)
.eq(EdgStorageCageDetails::getGlassId, edgStorageCageDetails.getGlassId()));
+ //纾ㄨ竟瀵瑰垪琛ㄦ柊澧炰竴鏉℃暟鎹�
+ EdgGlassTaskQueueInfo edgInfo = new EdgGlassTaskQueueInfo();
+ BeanUtils.copyProperties(task, edgInfo);
+ edgInfo.setCreateTime(new Date());
+ edgInfo.setWidth((int) edgStorageCageDetails.getWidth());
+ edgInfo.setHeight((int) edgStorageCageDetails.getWidth());
+ edgInfo.setThickness((int) edgStorageCageDetails.getWidth());
+ edgInfo.setState(Const.GLASS_STATE_NEW);
+ edgGlassTaskQueueInfoService.save(edgInfo);
return Boolean.TRUE;
}
private boolean finishTask(EdgStorageDeviceTask task, String tableName) {
+ log.info("褰撳墠浠诲姟淇℃伅涓猴細{}", task);
if (task.getTaskState() <= 4) {
log.info("鏈夋鍦ㄦ墽琛岀殑浠诲姟锛岀粨鏉�");
return Boolean.FALSE;
@@ -284,20 +315,16 @@
Integer cell = task.getStartCell();
Integer state = task.getTaskState();
task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY);
- task.setTaskState(Const.GLASS_CACHE_TYPE_EMPTY);
task.setGlassIdOut("");
task.setStartCell(0);
- task.setWidth(0);
- task.setHeight(0);
- task.setThickness(0);
- task.setFilmRemove(0);
edgStorageDeviceTaskService.updateTaskMessage(tableName, task);
edgStorageDeviceTaskHistoryService.update(new LambdaUpdateWrapper<EdgStorageDeviceTaskHistory>()
.eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW)
.set(EdgStorageDeviceTaskHistory::getTaskState,
Const.GLASS_CACHE_TYPE_FINISH.equals(state) ? Const.RAW_GLASS_TASK_SUCCESS : Const.RAW_GLASS_TASK_FAILURE)
);
- updateCellRemainWidth(cell);
+ int device = tableName.equals("edg_storage_device_one_task") ? 1 : 2;
+ updateCellRemainWidth(cell, device);
return Boolean.TRUE;
}
@@ -407,12 +434,13 @@
EdgStorageDeviceTaskHistory taskHistory = new EdgStorageDeviceTaskHistory();
BeanUtils.copyProperties(task, taskHistory);
taskHistory.setTaskType(task.getTaskRunning());
+ taskHistory.setCreateTime(new Date());
taskHistory.setTaskState(Const.RAW_GLASS_TASK_NEW);
edgStorageDeviceTaskHistoryService.save(taskHistory);
return Boolean.TRUE;
}
- private boolean updateCellRemainWidth(int slot) {
+ private boolean updateCellRemainWidth(int slot, int device) {
List<EdgStorageCageDetails> list = edgStorageCageDetailsService.list(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getSlot, slot)
.eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN));
int remainWidth = cellLength;
@@ -421,7 +449,7 @@
remainWidth = cellLength - widthTotal >= 0 ? cellLength - widthTotal : 0;
}
edgStorageCageService.update(new LambdaUpdateWrapper<EdgStorageCage>().
- set(EdgStorageCage::getRemainWidth, remainWidth).eq(EdgStorageCage::getSlot, slot));
+ set(EdgStorageCage::getRemainWidth, remainWidth).eq(EdgStorageCage::getSlot, slot).eq(EdgStorageCage::getDeviceId, device));
return Boolean.TRUE;
}
}
--
Gitblit v1.8.0