From fc46ed525a74e09292c87ca2daa395f5ae6b22ff Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期六, 29 十一月 2025 17:07:38 +0800
Subject: [PATCH] 1、因4号笼子划伤临时修改不进笼 2、大屏运行时间段最后一段缺失修改
---
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java | 98 +++++++++++++++++++++++++++++++++++++-----------
1 files changed, 75 insertions(+), 23 deletions(-)
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
index 9553251..d756bb7 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
@@ -3,8 +3,8 @@
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
import com.github.yulichang.toolkit.JoinWrappers;
import com.kangaroohy.milo.model.ReadWriteEntity;
@@ -104,6 +104,8 @@
private static final String ALARM_TYPE = "閽㈠寲澶х悊鐗�";
private static final String ALARM_CODE_SIZE = "sizeSame";
private static final String ALARM_CODE_ID = "idSame";
+ private static final String ALARM_CODE_SLOT = "slotLess";
+ private static final String ALARM_CODE_OVER = "overSize";
@Resource
private RedisUtil redisUtil;
@@ -140,16 +142,17 @@
String fromOpcUa = s7DataDLPOne.getFrom1().toString();
List<String> ids = s7DataDLPOne.getIds();
+ log.info("鑾峰彇鍒拌繘鐗囦换鍔� 鐜荤拑id锛歿}", ids);
List<String> glassIdList = new ArrayList<>();
for (int i = 0; i < 6; i++) {
String requestWord = ids.get(i);
- if (null != requestWord && !requestWord.isEmpty()) {
+ if (StringUtils.isNotBlank(requestWord)) {
+ log.info("鐜荤拑id{}鍔犲叆杩涚墖浠诲姟", requestWord);
BigStorageCageTask task = new BigStorageCageTask();
task.setGlassId(requestWord);
task.setStartSlot(Integer.parseInt(fromOpcUa));
inTaskList.add(task);
glassIdList.add(requestWord);
- break;
}
}
if (CollectionUtil.isEmpty(inTaskList)) {
@@ -225,11 +228,18 @@
for (Map.Entry<Double, Long> entry : thickCountMap.entrySet()) {
int count = bigStorageCageService.count(new LambdaQueryWrapper<BigStorageCage>()
.eq(BigStorageCage::getEnableState, Const.SLOT_ON).eq(BigStorageCage::getRemainWidth, slotWidth)
- .ge(BigStorageCage::getDeviceId, 4)
+ .le(BigStorageCage::getDeviceId, 4)
.le(BigStorageCage::getMinThickness, entry.getKey())
.ge(BigStorageCage::getMaxThickness, entry.getKey()));
if (count < entry.getValue()) {
log.info("绗煎唴鏍煎瓙鍓╀綑鏁伴噺涓嶈冻锛岀粨鏉熸湰娆¤繘鐗�");
+ ProductAlarmInfo alarmInfo = new ProductAlarmInfo();
+ alarmInfo.setState(Const.LOAD_RAW_GLASS_NEW);
+ alarmInfo.setAlarmModule(ALARM_MODULE);
+ alarmInfo.setAlarmType(ALARM_TYPE);
+ alarmInfo.setAlarmCode(ALARM_CODE_SLOT);
+ alarmInfo.setAlarmMessage(count + "");
+ productAlarmInfoService.save(alarmInfo);
//鍚憄lc鍙戦�佹姤璀�:绗煎唴鏍煎瓙鍓╀綑鏁伴噺涓嶈冻
// miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 16));
s7DataDLPOne = new S7DataDLPOne();
@@ -246,6 +256,13 @@
.in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL));
if (count > 0) {
log.info("鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝缁撴潫鏈杩涚墖");
+// ProductAlarmInfo alarmInfo = new ProductAlarmInfo();
+// alarmInfo.setState(Const.LOAD_RAW_GLASS_NEW);
+// alarmInfo.setAlarmModule(ALARM_MODULE);
+// alarmInfo.setAlarmType(ALARM_TYPE);
+// alarmInfo.setAlarmCode(ALARM_CODE_OVER);
+// alarmInfo.setAlarmMessage("");
+// productAlarmInfoService.save(alarmInfo);
//鍚憄lc鍙戦�佹姤璀�:鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝鏃犳硶缁х画鐩撮��
// miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 64));
s7DataDLPOne = new S7DataDLPOne();
@@ -397,6 +414,8 @@
LambdaQueryWrapper<BigStorageCage> queryWrapper = new LambdaQueryWrapper<BigStorageCage>()
.eq(BigStorageCage::getRemainWidth, slotWidth)
.eq(BigStorageCage::getEnableState, Const.SLOT_ON)
+ .le(BigStorageCage::getMinThickness, info.getThickness())
+ .ge(BigStorageCage::getMaxThickness, info.getThickness())
.orderByAsc(BigStorageCage::getDeviceId).orderByAsc(BigStorageCage::getSlot)
.last("limit 1");
@@ -432,10 +451,15 @@
cageDetails.setFilmsId(info.getFilmsId());
cageDetails.setId(null);
bigStorageCageDetailsService.save(cageDetails);
+ info.setState(Const.GLASS_STATE_OUT);
+ bigStorageCageDetailsService.updateById(info);
}
//鍘嗗彶鏁版嵁鍏ュ簱
bigStorageCageHistoryTaskService.saveBatch(historyTasks);
extracted(taskList);
+ S7DataDLPTwo s7DataDLPTwo = new S7DataDLPTwo();
+ s7DataDLPTwo.setMesReply(1);
+ s7SerializerDLPTwo.write(s7DataDLPTwo);
return;
}
@@ -456,13 +480,30 @@
String temperingEngineerId = redisUtil.getCacheObject("temperingEngineerId");
if (StringUtils.isNotBlank(temperingEngineerId)) {
- TemperingGlassInfo temperingGlassInfo = temperingGlassInfoService.getOne(new QueryWrapper<TemperingGlassInfo>()
- .select("Top 1 *")
- .eq("engineer_id", temperingEngineerId)
- .orderByDesc("tempering_layout_id"));
+ List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.list(
+ new LambdaQueryWrapper<TemperingGlassInfo>()
+ .eq(TemperingGlassInfo::getEngineerId, temperingEngineerId)
+ .orderByAsc(TemperingGlassInfo::getId)
+ );
int temperingLayoutId = 1;
- if (temperingGlassInfo != null) {
- temperingLayoutId = temperingGlassInfo.getTemperingLayoutId() + 1;
+ if (CollectionUtils.isEmpty(temperingGlassInfoList)) {
+ temperingLayoutId = 1;
+ } else {
+ List<Integer> tempIds = temperingGlassInfoList.stream()
+ .map(TemperingGlassInfo::getTemperingLayoutId)
+ .distinct()
+ .sorted()
+ .collect(Collectors.toList());
+
+ int expected = 1;
+ for (int current : tempIds) {
+ if (current > expected) {
+ break; // 鎵惧埌绗竴涓己澶卞�硷紝璺冲嚭寰幆
+ } else if (current == expected) {
+ expected++; // 杩炵画鍒欓�掑鏈熸湜鐨勫��
+ }
+ }
+ temperingLayoutId = expected; // 缂哄け鍒欎负expected锛岃繛缁垯涓簃ax+1
}
List<GlassInfo> glassInfos = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getEngineerId, temperingEngineerId).eq(GlassInfo::getTemperingLayoutId, temperingLayoutId));
if (CollectionUtil.isEmpty(glassInfos)) {
@@ -537,11 +578,15 @@
.last("limit 1"));
List<Integer> slotList = sequenceDTOList.stream().map(BigStorageSequenceDTO::getSlot).collect(Collectors.toList());
list = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
- .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN).in(BigStorageCageDetails::getSlot, slotList));
+ .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
+ .in(BigStorageCageDetails::getSlot, slotList)
+ .orderByAsc(BigStorageCageDetails::getTemperingFeedSequence)
+ );
computeOutGlassInfoByVirtualSlot(list, "big_storage_cage_out_one_task",
bigStorageCage.getSlot(), Const.GLASS_STATE_SCHEDULE_ING, Const.BIG_STORAGE_BEFORE_DISPATCH);
slotList.add(bigStorageCage.getSlot());
updateSlotRemainBySlots(slotList);
+ return;
}
//鏈夛細缁熶竴寰�5鍙风瀛愰��
// 鏃� 4鍙风瀛愪娇鐢ㄦ暟閲忔槸鍚﹁秴杩囬槇鍊� 鏈� 鐢熸垚璋冨害浠诲姟鎸夌収缁勫彿缁勫簭鐢�1寮�濮嬩緷娆″線5鍙风瀛愰�佸皬鐗�
@@ -549,6 +594,7 @@
.eq(BigStorageCage::getEnableState, Const.SLOT_ON));
//瀹氫箟10涓牸瀛愪负闃堝��
if (count <= 10) {
+ log.info("绗煎瓙瓒呰繃闃堝�硷紝鎵ц4鍙风瀛愯皟搴﹂�昏緫");
//鑾峰彇搴忓彿涓�1鐨勬牸瀛� 灏嗘牸瀛愬唴鐨勬墍鏈夌幓鐠冮�佸埌瀵瑰簲鐨勭瀛�
BigStorageCage bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
.eq(BigStorageCage::getRemainWidth, slotWidth)
@@ -556,21 +602,27 @@
.in(BigStorageCage::getDeviceId, Arrays.asList(5, 6))
.orderByAsc(BigStorageCage::getDeviceId).orderByAsc(BigStorageCage::getSlot)
.last("limit 1"));
-
- list = bigStorageCageDetailsService.queryNeedDispatch();
- computeOutGlassInfoByVirtualSlot(list, "big_storage_cage_out_one_task",
- bigStorageCage.getSlot(), Const.GLASS_STATE_SCHEDULE_ING, Const.BIG_STORAGE_BEFORE_DISPATCH);
- List<Integer> slotList = new ArrayList<>();
- slotList.add(bigStorageCage.getSlot());
- slotList.add(list.get(0).getSlot());
- updateSlotRemainBySlots(slotList);
- return;
+ if (null != bigStorageCage) {
+ list = bigStorageCageDetailsService.queryNeedDispatch();
+ if (CollectionUtil.isNotEmpty(list)) {
+ computeOutGlassInfoByVirtualSlot(list, "big_storage_cage_out_one_task",
+ bigStorageCage.getSlot(), Const.GLASS_STATE_SCHEDULE_ING, Const.BIG_STORAGE_BEFORE_DISPATCH);
+ List<Integer> slotList = new ArrayList<>();
+ slotList.add(bigStorageCage.getSlot());
+ slotList.add(list.get(0).getSlot());
+ updateSlotRemainBySlots(slotList);
+ return;
+ }
+ }
}
//鐢熸垚璋冨害浠诲姟鎸夌収缁勫彿缁勫簭鐢�1寮�濮嬩緷娆″線5鍙风瀛愰�佸皬鐗�
BigStorageSlotDTO slotDTO = bigStorageCageDetailsService.queryNeedDispatchSlotBySequence();
if (null != slotDTO) {
list = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
- .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN).in(BigStorageCageDetails::getSlot, slotDTO.getStartSlot()));
+ .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
+ .in(BigStorageCageDetails::getSlot, slotDTO.getStartSlot())
+ .orderByAsc(BigStorageCageDetails::getTemperingFeedSequence)
+ );
computeOutGlassInfoByVirtualSlot(list, "big_storage_cage_out_one_task",
slotDTO.getTargetSlot(), Const.GLASS_STATE_SCHEDULE_ING, Const.BIG_STORAGE_BEFORE_DISPATCH);
List<Integer> slotList = new ArrayList<>();
@@ -959,7 +1011,7 @@
// if (!THROUGH_SLOT.equals(list.get(0).getSlot())) {
// 涓存椂瑙e喅鏂规:鍑虹墖鏃惰�冭檻鐜荤拑纰版挒锛屾敼涓轰竴鐗囦竴鍑�
// 鐣岄潰鍏抽棴璋冨害寮�鍏� !Const.BIG_STORAGE_BEFORE_DISPATCH.equals(taskType)
- if (list.get(0).getSlot() >= 500 && list.get(0).getThickness() > 8) {
+ if (list.get(0).getSlot() >= 500 && list.get(0).getThickness() > 7) {
outGlassList = list.subList(0, 1);
} else {
List<String> glassIdList = bigStorageGlassRelationInfoService.queryNeedOutGlassId(
@@ -1010,7 +1062,7 @@
* @return
*/
private Boolean extracted(List<BigStorageCageTask> bigStorageCageTaskList) {
- resetOutTask();
+// resetOutTask();
S7DataDLPTwo s7DataDLPTwo = new S7DataDLPTwo();
for (int i = 0; i < bigStorageCageTaskList.size() && i < 6; i++) {
String glassId = bigStorageCageTaskList.get(i).getGlassId();
--
Gitblit v1.8.0