From 1d9f9bd9afb6e18aa73b456555256564e34b2acc Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期二, 28 五月 2024 13:20:06 +0800
Subject: [PATCH] 卧式理片笼线程改造:1、优化任务查询,每次只获取第一条数据,避免任务表数据过多 2、玻璃尺寸限制改为配置
---
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java | 5 ++
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/mapper/TaskCacheMapper.java | 4 ++
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java | 65 +++++++++++++++++---------------
hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/mapper/TaskCacheMapper.xml | 24 ++++++++++++
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java | 10 +++++
hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java | 4 ++
hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml | 2 +
7 files changed, 84 insertions(+), 30 deletions(-)
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
index af09ed0..7b756d8 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -1,5 +1,8 @@
package com.mes.common.config;
+import java.util.Arrays;
+import java.util.List;
+
/**
* @Author : zhoush
* @Date: 2024/4/24 10:33
@@ -42,6 +45,7 @@
public static final Integer GLASS_CACHE_TYPE_IN = 1;
public static final Integer GLASS_CACHE_TYPE_OUT = 2;
public static final Integer GLASS_CACHE_TYPE_THROUGH = 3;
+ public static final List<Integer> GLASS_CACHE_TYPE_OUT_ALL = Arrays.asList(2, 3);
/**
* 纾ㄨ竟浠诲姟鐜荤拑鐘舵��
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..913738d 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
@@ -64,6 +64,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() {
PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
@@ -140,7 +146,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 +180,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 +200,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 +251,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 +269,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 +345,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 +398,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 +415,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 +439,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 "));
}
/**
@@ -486,7 +494,7 @@
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 +525,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);
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/mapper/TaskCacheMapper.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/mapper/TaskCacheMapper.java
index be66272..6132c32 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/mapper/TaskCacheMapper.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/mapper/TaskCacheMapper.java
@@ -3,6 +3,9 @@
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.taskcache.entity.TaskCache;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
* <p>
@@ -15,4 +18,5 @@
@DS("salve_hangzhoumes")
public interface TaskCacheMapper extends BaseMapper<TaskCache> {
+ TaskCache queryGlassByTaskCache(@Param(value = "line") int line, @Param(value = "taskTypes") List<Integer> taskTypes);
}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java
index 4f37295..8cab5de 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java
@@ -17,13 +17,23 @@
/**
* 鏌ヨ纾ㄨ竟浠诲姟
+ *
* @param line
* @return
*/
List<TaskCache> selectEdgInfo(String line);
/**
+ * 鏌ヨ纾ㄨ竟浠诲姟
+ *
+ * @param line
+ * @return
+ */
+ TaskCache queryGlassByTaskCache(int line, List<Integer> taskTypes);
+
+ /**
* 鏌ヨ鐞嗙墖浠诲姟
+ *
* @return
*/
List<TaskCache> selectCacheInfo();
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
index 2398039..9993519 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
@@ -32,6 +32,11 @@
// return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("end_cell",line));
}
+ @Override
+ public TaskCache queryGlassByTaskCache(int line, List<Integer> taskTypes) {
+ return baseMapper.queryGlassByTaskCache(line, taskTypes);
+ }
+
/**
* 鏌ヨ寰呯悊鐗囧伐浣滅殑浠诲姟
*
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
index a344abc..9be3f0b 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
@@ -13,5 +13,7 @@
mes:
threshold: 3
ratio: 10
+ firstLength: 3500
+ secondLength: 2500
sequence:
order: false
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/mapper/TaskCacheMapper.xml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/mapper/TaskCacheMapper.xml
new file mode 100644
index 0000000..e19d670
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/mapper/TaskCacheMapper.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.taskcache.mapper.TaskCacheMapper">
+
+ <select id="queryGlassByTaskCache" resultType="com.mes.taskcache.entity.TaskCache">
+ SELECT top 1
+ glass_id
+ ,start_cell
+ , end_cell
+ , task_type
+ , task_status
+ , create_time
+ FROM task_cache
+ <where>
+ end_cell = #{line}
+ AND task_type in
+ <foreach collection="taskTypes" item="item" open='(' close=')' separator=','>
+ #{item}
+ </foreach>
+ </where>
+ ORDER BY create_time desc
+ </select>
+
+</mapper>
--
Gitblit v1.8.0