From 63dee149be1f930fb62b56f61ada1974cfc2e40f Mon Sep 17 00:00:00 2001
From: wang <3597712270@qq.com>
Date: 星期五, 14 六月 2024 16:59:52 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes
---
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java | 155 +++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 124 insertions(+), 31 deletions(-)
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
index 61a5e69..a63c890 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
@@ -2,6 +2,7 @@
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Assert;
+import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.yulichang.query.MPJQueryWrapper;
@@ -30,6 +31,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import java.util.Map;
/**
* @Author : zhoush
@@ -63,6 +65,12 @@
@Value("${mes.sequence.order}")
private boolean sequenceOrder;
+
+ @Value("${mes.firstLength}")
+ private String firstLength;
+
+ @Value("${mes.secondLength}")
+ private String secondLength;
@Scheduled(fixedDelay = 1000)
public void plcHomeEdgTask() {
@@ -140,7 +148,7 @@
* @param confirmationWrodAddress
* @param currentSlot
*/
- private void inTo(String glassId, String confirmationWrodAddress, String currentSlot) {
+ public void inTo(String glassId, String confirmationWrodAddress, String currentSlot) {
log.info("1銆佹寜鐓х幓鐠僫d:{}鑾峰彇鐜荤拑灏忕墖淇℃伅,褰撳墠鏍煎瓙涓�:{}", glassId, currentSlot);
//娣诲姞杩涚墖浠诲姟 鏌ユ壘绌烘牸
EdgStorageCage nearestEmpty = edgStorageCageService.selectNearestEmpty(Integer.parseInt(currentSlot), Boolean.FALSE);
@@ -174,7 +182,8 @@
* @return
*/
public GlassInfo queryAndChangeGlass(String glassId) {
- GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
+ GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId)
+ .inSql(GlassInfo::getEngineerId, "select engineer_id from engineering where state = 1"));
Assert.isFalse(null == glassInfo, "鐜荤拑淇℃伅涓嶅瓨鍦�");
//鎸夌収鐜荤拑灏哄
LambdaQueryWrapper<GlassInfo> queryWrapper = new LambdaQueryWrapper<GlassInfo>()
@@ -193,6 +202,7 @@
GlassInfo swapGlassInfo = glassInfoService.getOne(queryWrapper);
if (swapGlassInfo != null && !glassInfo.getGlassId().equals(swapGlassInfo.getGlassId())) {
String swapGlassId = swapGlassInfo.getGlassId();
+ log.info("灏嗙幓鐠儃}鍜岀幓鐠儃}锛屼俊鎭簰鎹�,杩涚幓鐠� {}", glassInfo, swapGlassInfo, swapGlassInfo);
swapGlassInfo.setGlassId(glassId);
glassInfo.setGlassId(swapGlassId);
glassInfoService.updateById(swapGlassInfo);
@@ -243,16 +253,16 @@
log.info("绗煎瓙鍐呭拰寰呰繘鐗囨病鏈夌幓鐠�");
return Boolean.FALSE;
}
- EdgStorageCageDetails a09EdgGlass = queryGlassByTaskCache(Const.A09_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT);
- EdgStorageCageDetails a10EdgGlass = queryGlassByTaskCache(Const.A10_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT);
+ EdgStorageCageDetails a09EdgGlass = queryGlassByTaskCache(Const.A09_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT_ALL);
+ EdgStorageCageDetails a10EdgGlass = queryGlassByTaskCache(Const.A10_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT_ALL);
endcell = queryLineByGlassInfo(a09EdgGlass, a10EdgGlass, glassInfo, out08Glassstate, out10Glassstate);
} else {
//鍒ゆ柇涓ゆ潯绾挎槸鍚﹂兘绌洪棽
endcell = out10Glassstate == 2 ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
if ((out08Glassstate == 0 && out10Glassstate == 0) || (out08Glassstate == 1 && out10Glassstate == 1)) {
- EdgStorageCageDetails a09EdgGlass = queryGlassByTaskCache(Const.A09_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT);
- EdgStorageCageDetails a10EdgGlass = queryGlassByTaskCache(Const.A10_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT);
+ EdgStorageCageDetails a09EdgGlass = queryGlassByTaskCache(Const.A09_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT_ALL);
+ EdgStorageCageDetails a10EdgGlass = queryGlassByTaskCache(Const.A10_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT_ALL);
if (a09EdgGlass == null && a10EdgGlass == null) {
MPJQueryWrapper<EdgStorageCageDetails> wrapper = new MPJQueryWrapper<>();
wrapper.select("count(t.glass_id), t.width, t.height")
@@ -261,17 +271,18 @@
if (endcell == Const.A10_OUT_TARGET_POSITION) {
wrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " +
"case when width < height then width else height end as second_length from edg_storage_cage_details) t1 " +
- "on t.glass_id = t1.glass_id and t1.first_length <3500 and t1.second_length<2600 ");
+ "on t.glass_id = t1.glass_id and (t1.first_length <=" + firstLength + " and t1.second_length<=" + secondLength + ") ");
}
wrapper.last("order by count(t.glass_id) desc limit 2");
List<EdgStorageCageDetails> list = edgStorageCageDetailsService.list(wrapper);
if (CollectionUtil.isEmpty(list)) {
MPJQueryWrapper<GlassInfo> queryWrapper = new MPJQueryWrapper<GlassInfo>()
- .selectAll(GlassInfo.class).eq("t.glass_id", glassId);
+ .selectAll(GlassInfo.class).eq("t.glass_id", glassId)
+ .inSql("t.engineer_id", "select engineer_id from engineering where state = 1");
if (endcell == Const.A10_OUT_TARGET_POSITION) {
queryWrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " +
"case when width < height then width else height end as second_length from glass_info) t1 " +
- "on t.glass_id = t1.glass_id and t1.first_length <3500 and t1.second_length<2600 ");
+ "on t.glass_id = t1.glass_id and (t1.first_length <=" + firstLength + " and t1.second_length<=" + secondLength + ") ");
}
GlassInfo one = glassInfoService.getOne(queryWrapper);
if (one != null) {
@@ -336,7 +347,8 @@
//todo: 鑾峰彇姝e湪鎵ц鐨勫伐绋嬩俊鎭�
if (StringUtils.isNotBlank(glassId)) {
GlassInfo one = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>()
- .eq(GlassInfo::getGlassId, glassId));
+ .eq(GlassInfo::getGlassId, glassId)
+ .inSql(GlassInfo::getEngineerId, "select engineer_id from engineering where state = 1"));
EdgStorageCageDetails resultDetails = new EdgStorageCageDetails();
BeanUtils.copyProperties(one, resultDetails);
glassList.add(resultDetails);
@@ -388,7 +400,9 @@
return glassDetails;
}
GlassInfo one = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>()
- .eq(GlassInfo::getGlassId, glassId));
+ .eq(GlassInfo::getGlassId, glassId)
+ .inSql(GlassInfo::getEngineerId, "select engineer_id from engineering where state = 1")
+ );
EdgStorageCageDetails resultDetails = new EdgStorageCageDetails();
BeanUtils.copyProperties(one, resultDetails);
if (null == glassDetails) {
@@ -403,14 +417,11 @@
*/
private List<EdgStorageCageDetails> queryGlassByTaskLine(int line) {
//鑾峰彇浠诲姟琛ㄤ腑鏈�鍚庝竴娆″嚭鐗囩殑鐜荤拑id
- LambdaQueryWrapper<TaskCache> queryWrapper = new LambdaQueryWrapper<TaskCache>().eq(TaskCache::getTaskType, Const.GLASS_CACHE_TYPE_OUT)
- .eq(TaskCache::getEndCell, line).orderByDesc(TaskCache::getCreateTime);
- List<TaskCache> taskCacheList = taskCacheService.list(queryWrapper);
- if (CollectionUtil.isEmpty(taskCacheList)) {
+ TaskCache taskCache = taskCacheService.queryGlassByTaskCache(line, Const.GLASS_CACHE_TYPE_OUT_ALL);
+ if (null == taskCache) {
log.info("娌℃湁鎵惧埌{}绾夸换鍔′俊鎭�", line);
return new ArrayList<>();
}
- TaskCache taskCache = taskCacheList.get(0);
MPJQueryWrapper<EdgStorageCageDetails> mpjLambdaWrapper = new MPJQueryWrapper<>();
mpjLambdaWrapper.select("t1.*")
.innerJoin("edg_storage_cage_details t1 on t.width = t1.width and t.height = t1.height")
@@ -430,18 +441,17 @@
* 鎸夌収浠诲姟绫诲瀷銆佺嚎鍙疯幏鍙栦换鍔′俊鎭�
*
* @param line
- * @param taskType
+ * @param taskTypes
* @return
*/
- private EdgStorageCageDetails queryGlassByTaskCache(int line, int taskType) {
- LambdaQueryWrapper<TaskCache> queryWrapper = new LambdaQueryWrapper<TaskCache>().eq(TaskCache::getTaskType, taskType)
- .eq(TaskCache::getEndCell, line).orderByDesc(TaskCache::getCreateTime);
- List<TaskCache> list = taskCacheService.list(queryWrapper);
- if (CollectionUtil.isEmpty(list)) {
+ private EdgStorageCageDetails queryGlassByTaskCache(int line, List<Integer> taskTypes) {
+ TaskCache taskCache = taskCacheService.queryGlassByTaskCache(line, taskTypes);
+ if (null == taskCache) {
log.info("娌℃湁鎵惧埌{}绾夸换鍔′俊鎭�", line);
return null;
}
- return edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getGlassId, list.get(0).getGlassId()));
+ return edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getGlassId, taskCache.getGlassId())
+ .inSql(EdgStorageCageDetails::getEngineerId, "select engineer_id from engineering where state = 1").last(" limit 1 "));
}
/**
@@ -480,13 +490,13 @@
public EdgStorageCageDetails queryChangeGlassInfo(int endcell, String glassId) {
//鑾峰彇绗煎瓙鍐呮暟閲忓墠浜岀殑鐜荤拑鏁伴噺
MPJQueryWrapper<EdgStorageCageDetails> wrapper = new MPJQueryWrapper<>();
- wrapper.select("count(t.glass_id), t.width, t.height")
+ wrapper.select("count(t.glass_id) as count, t.width, t.height")
.eq("t.state", Const.GLASS_STATE_IN)
.groupBy("t.width, t.height");
if (endcell == Const.A09_OUT_TARGET_POSITION) {
wrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " +
"case when width < height then width else height end as second_length from edg_storage_cage_details) t1 " +
- "on t.glass_id = t1.glass_id and t1.first_length <3500 and t1.second_length<2600 ");
+ "on t.glass_id = t1.glass_id and (t1.first_length <=" + firstLength + " and t1.second_length<=" + secondLength + ") ");
}
wrapper.last("order by count(t.glass_id) desc limit 2");
List<EdgStorageCageDetails> list = edgStorageCageDetailsService.list(wrapper);
@@ -517,15 +527,12 @@
} else {
log.info("鑾峰彇鐜荤拑鏁伴噺鍓�2鐨勭幓鐠冨崰姣斾负{}锛屽皬浜�2", mix);
//鑾峰彇浠诲姟琛ㄤ腑鏈�鍚庝竴娆″嚭鐗囩殑鐜荤拑id
- LambdaQueryWrapper<TaskCache> queryWrapper = new LambdaQueryWrapper<TaskCache>().eq(TaskCache::getTaskType, Const.GLASS_CACHE_TYPE_OUT)
- .eq(TaskCache::getEndCell, endcell).orderByDesc(TaskCache::getCreateTime);
- List<TaskCache> taskCacheList = taskCacheService.list(queryWrapper);
- log.info("鑾峰彇浠诲姟琛ㄤ腑{}绾挎渶鍚庝竴娆″嚭鐗囩殑鐜荤拑浠诲姟淇℃伅锛歿}", endcell, taskCacheList);
- if (CollectionUtil.isEmpty(taskCacheList)) {
+ TaskCache taskCache = taskCacheService.queryGlassByTaskCache(endcell, Const.GLASS_CACHE_TYPE_OUT_ALL);
+ log.info("鑾峰彇浠诲姟琛ㄤ腑{}绾挎渶鍚庝竴娆″嚭鐗囩殑鐜荤拑浠诲姟淇℃伅锛歿}", endcell, taskCache);
+ if (null == taskCache) {
log.info("{}绾挎病鏈夊嚭鐗囦换鍔′俊鎭紝鐩存帴鍑虹墖", endcell);
return queryMinGlass(firstSize.getWidth(), firstSize.getHeight(), glassId);
}
- TaskCache taskCache = taskCacheList.get(0);
EdgStorageCageDetails outGlassInfo = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
.eq(EdgStorageCageDetails::getGlassId, taskCache.getGlassId()));
log.info("{}绾挎湁鍑虹墖浠诲姟淇℃伅,浠诲姟淇℃伅涓簕}锛岀幓鐠冧俊鎭负{}", endcell, taskCache, outGlassInfo);
@@ -624,5 +631,91 @@
return edgGlassTaskInfoService.save(edgGlassTaskInfo);
}
+ /**
+ * 褰撳墠鍒囧壊鐗堝浘淇℃伅
+ *
+ * @param
+ * @return
+ */
+ @Scheduled(fixedDelay = 1000)
+ public void currentCutTerritory(){
+ JSONObject jsonObject = new JSONObject();
+ List<Map<String, Object>> currentCutTerritorys = edgStorageCageDetailsService.selectCutTerritory();
+ jsonObject.append("currentCutTerritory", currentCutTerritorys);
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("cacheGlass");
+ 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");
+ }
+ }
+ }
+ }
+
+ /**
+ * 纾ㄨ竟浠诲姟
+ *
+ * @param
+ * @return
+ */
+ @Scheduled(fixedDelay = 1000)
+ public void selectEdgTask(){
+ JSONObject jsonObject = new JSONObject();
+ List<Map<String,Object>> EdgTasks1 = taskCacheService.selectEdgInfo("2001");
+ List<Map<String,Object>> EdgTasks2 = taskCacheService.selectEdgInfo("2002");
+ jsonObject.append("EdgTasks1", EdgTasks1);
+ jsonObject.append("EdgTasks2", EdgTasks2);
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("cacheGlass");
+ 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");
+ }
+ }
+ }
+ }
+
+ /**
+ * 纾ㄨ竟鍓� 缂撳瓨鍐呬俊鎭�
+ *
+ * @param
+ * @return
+ */
+ @Scheduled(fixedDelay = 1000)
+ public void selectEdgStorageCage(){
+ JSONObject jsonObject = new JSONObject();
+ List<Map<String, Object>> EdgStorageCageinfos=edgStorageCageService.selectEdgStorageCages();
+ jsonObject.append("EdgStorageCageinfos", EdgStorageCageinfos);
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("cacheGlass");
+ 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");
+ }
+ }
+ }
+ }
+
}
--
Gitblit v1.8.0