From fd35c0ee025e8f5471acd4075af33b9f59f4d817 Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期四, 05 十二月 2024 13:39:11 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/YiWuProject
---
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java | 205 ++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 163 insertions(+), 42 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 216e6a0..0e1440e 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
@@ -17,6 +17,7 @@
import com.mes.bigstorage.service.BigStorageCageDetailsService;
import com.mes.bigstorage.service.BigStorageCageService;
import com.mes.bigstorage.service.BigStorageGlassInfoService;
+import com.mes.bigstorage.service.BigStorageGlassRelationInfoService;
import com.mes.bigstoragecagetask.entity.BigStorageCageHistoryTask;
import com.mes.bigstoragecagetask.entity.BigStorageCageTask;
import com.mes.bigstoragecagetask.service.BigStorageCageHistoryTaskService;
@@ -25,6 +26,8 @@
import com.mes.common.config.Const;
import com.mes.damage.entity.Damage;
import com.mes.damage.service.DamageService;
+import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
+import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.service.GlassInfoService;
import com.mes.temperingglass.entity.TemperingGlassInfo;
@@ -57,6 +60,8 @@
@Resource
private GlassInfoService glassInfoService;
@Resource
+ private BigStorageGlassRelationInfoService bigStorageGlassRelationInfoService;
+ @Resource
private BigStorageCageService bigStorageCageService;
@Resource
private BigStorageCageHistoryTaskService bigStorageCageHistoryTaskService;
@@ -64,6 +69,8 @@
private BigStorageCageTaskService bigStorageCageTaskService;
@Resource
private BigStorageGlassInfoService bigStorageGlassInfoService;
+ @Resource
+ private EdgGlassTaskInfoService edgGlassTaskInfoService;
@Autowired(required = false)
MiloService miloService;
@@ -83,8 +90,10 @@
@Value("${mes.outCarMaxSize}")
private Integer outCarMaxSize;
- @Value("${mes.sequence.order}")
- private boolean sequenceOrder;
+ @Value("${mes.temperingOutTargetPosition}")
+ private Integer temperingOutTargetPosition;
+ @Value("${mes.artificialOutTargetPosition}")
+ private Integer artificialOutTargetPosition;
@Scheduled(fixedDelay = 1000)
@@ -104,13 +113,25 @@
log.info("鏈夋鍦ㄦ墽琛岀殑浠诲姟锛岀粨鏉熻繘鐗囦换鍔�");
return;
}
- //鑾峰彇杩涚墖浠诲姟琛�
- List<BigStorageCageTask> inTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_in_one_task");
+ //鑾峰彇杩涚墖浠诲姟淇℃伅
+ List<BigStorageCageTask> inTaskList = new ArrayList();
+ ReadWriteEntity fromOpcUa = miloService.readFromOpcUa("DLP1A.DLP1A.FROM1");
+ List<String> glassIdList = new ArrayList<>();
+ for (int i = 1; i <= 6; i++) {
+ ReadWriteEntity requestWord = miloService.readFromOpcUa("DLP1A.DLP1A.DI" + i);
+ if (null != requestWord.getValue()) {
+ BigStorageCageTask task = new BigStorageCageTask();
+ task.setGlassId(requestWord.getValue() + "");
+ task.setStartSlot(Integer.parseInt(fromOpcUa.getValue() + ""));
+ inTaskList.add(task);
+ glassIdList.add(requestWord.getValue() + "");
+ continue;
+ }
+ }
if (CollectionUtil.isEmpty(inTaskList)) {
log.info("褰撳墠澶ц溅鏃犺繘鐗囩幓鐠冿紝缁撴潫杩涚墖浠诲姟");
+ return;
}
-
- List<String> glassIdList = inTaskList.stream().map(BigStorageCageTask::getGlassId).collect(Collectors.toList());
log.info("鑾峰彇浠诲姟鐨勭幓鐠僫d锛歿}", glassIdList);
Map<String, Long> glassCountMap = glassIdList.stream().collect(Collectors.groupingBy(e -> e, Collectors.counting()));
for (Map.Entry<String, Long> entry : glassCountMap.entrySet()) {
@@ -129,13 +150,20 @@
}
List<GlassInfo> glassInfoList = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassIdList));
+ if (glassInfoList.size() != inTaskList.size()) {
+ log.info("杩涚墖浠诲姟鏁伴噺{}涓庣幓鐠冩暟閲弡}涓嶅尮閰嶏紝缁撴潫鏈杩涚墖", inTaskList.size(), glassInfoList.size());
+ //todo:鍚憄lc鍙戦�佹姤璀�
+ return;
+ }
+ //淇敼纾ㄨ竟瀵瑰垪琛ㄧ殑鐜荤拑鐘舵��
+ edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>()
+ .set(EdgGlassTaskInfo::getState, Const.EDG_GLASS_SUCCESS).in(EdgGlassTaskInfo::getGlassId, glassIdList));
Map<String, List<GlassInfo>> glassListMap = glassInfoList.stream().collect(Collectors.groupingBy(GlassInfo::getGlassId));
-
//璁$畻鐩爣鏍煎瓙
List<BigStorageCageHistoryTask> historyTasks = new ArrayList<>();
for (BigStorageCageTask task : inTaskList) {
GlassInfo info = glassListMap.get(task.getGlassId()).get(0);
- BigStorageDTO bigStorageDTO = bigStorageGlassInfoService.queryBigStorageTargetSlot(info.getGlassId());
+ BigStorageDTO bigStorageDTO = bigStorageGlassInfoService.queryBigStorageTargetSlot(info.getEngineerId(), info.getTemperingLayoutId(), info.getTemperingFeedSequence());
//鑾峰彇鐩爣鏍煎瓙淇℃伅
// BigStorageDTO bigStorageDTO = bigStorageCageDetailsService.queryTargetSlotByTempering(info);
// 涓存椂鏇存柊鏍煎瓙鐨勫墿浣欏昂瀵革細闃叉鐩搁偦鐜荤拑杩涘悓涓�鏍煎瓙閫犳垚鍓╀綑灏哄涓嶈冻锛岀幓鐠冭秺鐣岀殑鎯呭喌锛屼换鍔″畬鎴愬悗鍐嶆鏇存柊澶х悊鐗囩琛ㄥ墿浣欏搴︼紙鎸夌収绗煎唴鐜荤拑鏁伴噺鏇存柊澶х悊鐗囩鍓╀綑灏哄锛�
@@ -165,7 +193,12 @@
//鍘嗗彶鏁版嵁鍏ュ簱
bigStorageCageHistoryTaskService.saveBatch(historyTasks);
//鍚憃pc鍙戦�佸惎鍔ㄤ俊鍙�
- miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.MesReply", 1));
+ List<ReadWriteEntity> list = new ArrayList<>();
+ for (int i = 1; i <= inTaskList.size(); i++) {
+ list.add(generateReadWriteEntity("DLP1A.DLP1A.TO" + i, inTaskList.get(i - 1).getTargetSlot()));
+ }
+ list.add(generateReadWriteEntity("DLP1A.DLP1A.MesReply", 1));
+ miloService.writeToOpcWord(list);
}
@Scheduled(fixedDelay = 1000)
@@ -187,29 +220,30 @@
log.info("鏈夋鍦ㄦ墽琛岀殑鍑虹墖浠诲姟锛岀粨鏉熸湰娆″嚭鐗囦换鍔�");
return;
}
- //todo:鏄惁鍏佽閽㈠寲
- if (redisUtil.getCacheObject("temperingSwitch")) {
- //鏄惁鏈夋鍦ㄩ挗鍖栫殑鐜荤拑:閽㈠寲灏忕墖琛ㄥ叧鑱斿巻鍙蹭换鍔¤〃锛岀瓫閫夋湭鍑虹鐨勭幓鐠冧俊鎭�
+ //鏄惁鍏佽閽㈠寲
+ //鏄惁鏈夋鍦ㄩ挗鍖栫殑鐜荤拑:閽㈠寲灏忕墖琛ㄥ叧鑱斿巻鍙蹭换鍔¤〃锛岀瓫閫夋湭鍑虹鐨勭幓鐠冧俊鎭�
// 鑾峰彇褰撳墠閽㈠寲浠诲姟鏈畬鎴愬嚭鐗囩殑鐜荤拑淇℃伅
- List<TemperingGlassInfo> unFinishTemperingGlassInfoList = temperingGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>().eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW));
- if (CollectionUtil.isNotEmpty(unFinishTemperingGlassInfoList)) {
- List<String> glassIdList = unFinishTemperingGlassInfoList.stream().map(TemperingGlassInfo::getGlassId).collect(Collectors.toList());
- List<BigStorageCageHistoryTask> historyTaskList = bigStorageCageHistoryTaskService.list(new LambdaQueryWrapper<BigStorageCageHistoryTask>()
- .eq(BigStorageCageHistoryTask::getTaskType, Const.BIG_STORAGE_BEFORE_OUT)
- .in(BigStorageCageHistoryTask::getGlassId, glassIdList));
- List<TemperingGlassInfo> temperingGlassList = unFinishTemperingGlassInfoList;
- if (CollectionUtil.isNotEmpty(historyTaskList)) {
- List<String> taskGlassList = historyTaskList.stream().map(BigStorageCageHistoryTask::getGlassId).collect(Collectors.toList());
- temperingGlassList = unFinishTemperingGlassInfoList.stream().filter(e -> !taskGlassList.contains(e.getGlassId())).collect(Collectors.toList());
- }
- if (CollectionUtil.isNotEmpty(temperingGlassList)) {
- log.info("鏈夋鍦ㄥ嚭鐗囩殑閽㈠寲浠诲姟");
- computeOutGlassInfo(temperingGlassList, "big_storage_cage_out_one_task", Const.TEMPERING_OUT_TARGET_POSITION, Const.GLASS_STATE_OUT_ING, Const.BIG_STORAGE_BEFORE_OUT);
- Date endDate = new Date();
- log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
- return;
- }
- }
+ List<TemperingGlassInfo> unFinishTemperingGlassInfoList = temperingGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>()
+ .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW).orderByAsc(TemperingGlassInfo::getTemperingFeedSequence));
+ if (CollectionUtil.isNotEmpty(unFinishTemperingGlassInfoList)) {
+// List<String> glassIdList = unFinishTemperingGlassInfoList.stream().map(TemperingGlassInfo::getGlassId).collect(Collectors.toList());
+// List<BigStorageCageHistoryTask> historyTaskList = bigStorageCageHistoryTaskService.list(new LambdaQueryWrapper<BigStorageCageHistoryTask>()
+// .eq(BigStorageCageHistoryTask::getTaskType, Const.BIG_STORAGE_BEFORE_OUT)
+// .in(BigStorageCageHistoryTask::getGlassId, glassIdList));
+// List<TemperingGlassInfo> temperingGlassList = unFinishTemperingGlassInfoList;
+// if (CollectionUtil.isNotEmpty(historyTaskList)) {
+// List<String> taskGlassList = historyTaskList.stream().map(BigStorageCageHistoryTask::getGlassId).collect(Collectors.toList());
+// temperingGlassList = unFinishTemperingGlassInfoList.stream().filter(e -> !taskGlassList.contains(e.getGlassId())).collect(Collectors.toList());
+// }
+// if (CollectionUtil.isNotEmpty(unFinishTemperingGlassInfoList)) {
+ log.info("鏈夋鍦ㄥ嚭鐗囩殑閽㈠寲浠诲姟");
+ computeOutGlassInfoByVirtualSlot(unFinishTemperingGlassInfoList, "big_storage_cage_out_one_task", temperingOutTargetPosition, Const.GLASS_STATE_OUT_ING, Const.BIG_STORAGE_BEFORE_OUT);
+ Date endDate = new Date();
+ log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
+ return;
+ }
+
+ if (redisUtil.getCacheObject("temperingSwitch")) {
//閽㈠寲浼樺厛锛氳幏鍙栫悊鐗囩 鐜荤拑灏忕墖 鐮存崯琛� 鏁伴噺 鍒ゆ柇绗煎唴鐗堝浘鏄惁鍒伴綈
List<TemperingLayoutDTO> temperingLayoutDTOList = bigStorageCageDetailsService.temperingIsAll();
if (CollectionUtil.isNotEmpty(temperingLayoutDTOList)) {
@@ -225,10 +259,10 @@
.eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
.eq(GlassInfo::getTemperingLayoutId, item.getTemperingLayoutId())
.eq(GlassInfo::getEngineerId, item.getEngineerId())
- .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence));
+ .orderByAsc(GlassInfo::getTemperingFeedSequence));
if (CollectionUtil.isNotEmpty(temperingGlassInfos)) {
temperingGlassInfoService.saveBatch(temperingGlassInfos);
- computeOutGlassInfo(temperingGlassInfos, "big_storage_cage_out_one_task", Const.TEMPERING_OUT_TARGET_POSITION, Const.GLASS_STATE_OUT_ING, Const.BIG_STORAGE_BEFORE_OUT);
+ computeOutGlassInfoByVirtualSlot(temperingGlassInfos, "big_storage_cage_out_one_task", temperingOutTargetPosition, Const.GLASS_STATE_OUT_ING, Const.BIG_STORAGE_BEFORE_OUT);
Date endDate = new Date();
log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
return;
@@ -241,9 +275,9 @@
List<BigStorageCageDetails> artificialList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
.eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL)
.orderByAsc(BigStorageCageDetails::getSlot)
- .orderByAsc(BigStorageCageDetails::getId));
+ .orderByAsc(BigStorageCageDetails::getId).last("limit " + outCarMaxSize));
if (CollectionUtil.isNotEmpty(artificialList)) {
- computeOutGlassInfo(artificialList, "big_storage_cage_out_one_task", Const.ARTIFICIAL_OUT_TARGET_POSITION, Const.GLASS_STATE_OUT_ING, Const.BIG_STORAGE_BEFORE_OUT);
+ computeOutGlassInfoByVirtualSlot(artificialList, "big_storage_cage_out_one_task", artificialOutTargetPosition, Const.GLASS_STATE_OUT_ING, Const.BIG_STORAGE_BEFORE_OUT);
Date endDate = new Date();
log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
return;
@@ -257,6 +291,7 @@
return;
}
List<BigStorageCageDetails> list = new ArrayList<>();
+ loop:
for (BigStorageRelationDTO dto : virtualList) {
List<BigStorageSequenceDTO> sequenceDTOList = bigStorageCageDetailsService.dispatchBigStorageGlassInfo(dto);
if (CollectionUtil.isEmpty(sequenceDTOList) || sequenceDTOList.size() == 1) {
@@ -265,18 +300,18 @@
int sequence = -1;
int startSlot = -1;
for (BigStorageSequenceDTO item : sequenceDTOList) {
- if (item.getMinSequence() == sequence + 1) {
+ if (item.getMaxSequence() == sequence - 1) {
//鐢熸垚璋冨害浠诲姟
int targetSlot = item.getSlot();
list = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
.eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN).eq(BigStorageCageDetails::getSlot, startSlot));
- computeOutGlassInfo(list, "big_storage_cage_out_one_task", targetSlot, Const.GLASS_STATE_SCHEDULE_ING, Const.BIG_STORAGE_BEFORE_DISPATCH);
+ computeOutGlassInfoByVirtualSlot(list, "big_storage_cage_out_one_task", targetSlot, Const.GLASS_STATE_SCHEDULE_ING, Const.BIG_STORAGE_BEFORE_DISPATCH);
List<Integer> slotList = new ArrayList<>();
slotList.add(targetSlot);
updateSlotRemainBySlots(slotList);
- break;
+ break loop;
}
- sequence = item.getMaxSequence();
+ sequence = item.getMinSequence();
startSlot = item.getSlot();
}
}
@@ -294,7 +329,32 @@
return;
}
//鑾峰彇杩涚墖浠诲姟琛�
- List<BigStorageCageTask> inTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_in_one_task");
+// List<BigStorageCageTask> inTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_in_one_task");
+ List<BigStorageCageTask> inTaskList = new ArrayList();
+
+ List<String> glassIdList = new ArrayList<>();
+ ReadWriteEntity toWord = miloService.readFromOpcUa("DLP1A.DLP1A.TO1");
+ if ("0".equals(toWord.getValue() + "")) {
+ log.info("瀹屾垚浠诲姟宸叉墽琛岋紝缁撴潫鏈瀹屾垚杩涚墖浠诲姟");
+ return;
+ }
+ for (int i = 1; i <= 6; i++) {
+ ReadWriteEntity requestWord = miloService.readFromOpcUa("DLP1A.DLP1A.DI" + i);
+ ReadWriteEntity statetWord = miloService.readFromOpcUa("DLP1A.DLP1A.STATE" + i);
+ ReadWriteEntity toOpcUa = miloService.readFromOpcUa("DLP1A.DLP1A.TO" + i);
+ ReadWriteEntity fromOpcUa = miloService.readFromOpcUa("DLP1A.DLP1A.FROM" + i);
+
+ if (null != requestWord.getValue()) {
+ BigStorageCageTask task = new BigStorageCageTask();
+ task.setGlassId(requestWord.getValue() + "");
+ task.setTargetSlot(Integer.parseInt(toOpcUa.getValue() + ""));
+ task.setTaskState(Integer.parseInt(statetWord.getValue() + ""));
+ task.setStartSlot(Integer.parseInt(fromOpcUa.getValue() + ""));
+ inTaskList.add(task);
+ glassIdList.add(requestWord.getValue() + "");
+ continue;
+ }
+ }
if (CollectionUtil.isEmpty(inTaskList)) {
log.info("褰撳墠澶ц溅鏃犺繘鐗囩幓鐠冿紝缁撴潫瀹屾垚杩涚墖浠诲姟");
return;
@@ -341,7 +401,13 @@
}
//娓呯┖鍚姩鐘舵��
//鍚憃pc鍙戦�佸惎鍔ㄤ俊鍙�
- miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.MesReply", 0));
+ //鍚憃pc鍙戦�佸惎鍔ㄤ俊鍙�
+ List<ReadWriteEntity> list = new ArrayList<>();
+ for (int i = 1; i <= 6; i++) {
+ list.add(generateReadWriteEntity("DLP1A.DLP1A.TO" + i, 0));
+ }
+ list.add(generateReadWriteEntity("DLP1A.DLP1A.MesReply", 0));
+ miloService.writeToOpcWord(list);
}
@Scheduled(fixedDelay = 1000)
@@ -380,7 +446,10 @@
if (finalTaskType.equals(Const.BIG_STORAGE_BEFORE_OUT)) {
outSuccessGlassSlot = v.stream().map(BigStorageCageTask::getStartSlot).collect(Collectors.toList());
} else {
- outSuccessGlassSlot = v.stream().map(BigStorageCageTask::getTargetSlot).collect(Collectors.toList());
+ List<Integer> targetSuccessGlassSlot = v.stream().map(BigStorageCageTask::getTargetSlot).collect(Collectors.toList());
+ List<Integer> startoutSuccessGlassSlot = v.stream().map(BigStorageCageTask::getStartSlot).collect(Collectors.toList());
+ outSuccessGlassSlot.addAll(targetSuccessGlassSlot);
+ outSuccessGlassSlot.addAll(startoutSuccessGlassSlot);
}
List<UpdateBigStorageCageDTO> storageCageDTOList = v.stream().map(e -> {
UpdateBigStorageCageDTO storageCageDTO = new UpdateBigStorageCageDTO();
@@ -512,6 +581,7 @@
List<String> glassList = noDealTaskList.stream().map(BigStorageCageTask::getGlassId).collect(Collectors.toList());
bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
.set(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
+ .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT)
.in(BigStorageCageDetails::getGlassId, glassList));
} else {
@@ -520,6 +590,7 @@
bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
.set(BigStorageCageDetails::getSlot, item.getStartSlot())
.set(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
+ .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT)
.eq(BigStorageCageDetails::getGlassId, item.getGlassId()));
}
}
@@ -541,6 +612,55 @@
* @param <T>
* @return
*/
+ private <T extends BigStorageCageBaseInfo> Boolean computeOutGlassInfoByVirtualSlot(List<T> list, String tableName, int targetSlot, int state, int taskType) {
+ //浠诲姟鏁版嵁:鑾峰彇杞﹀瓙瀛樻斁鐜荤拑鏈�澶ф暟閲�,鐜荤拑闂撮殧
+ List<String> glassIdList = bigStorageGlassRelationInfoService.queryNeedOutGlassId(
+ list.get(0).getEngineerId(), list.get(0).getTemperingLayoutId(), list.get(0).getTemperingFeedSequence());
+ List<T> outGlassList = list.stream().filter(e -> glassIdList.contains(e.getGlassId())).collect(Collectors.toList());
+ Assert.isFalse(CollectionUtil.isEmpty(outGlassList), "鏈幏鍙栧嚭鐗囨暟鎹紝缁撴潫鍑虹墖浠诲姟");
+ log.info("鑾峰彇鍑虹墖浠诲姟鏁版嵁{}鏉★紝鎵ц淇濆瓨", outGlassList.size());
+ List<BigStorageCageTask> bigStorageCageTaskList = outGlassList.stream()
+ .map(e -> new BigStorageCageTask(e.getGlassId(), e.getSlot(), targetSlot, 0)).collect(Collectors.toList());
+
+ List<String> glassIds = bigStorageCageTaskList.stream().map(BigStorageCageTask::getGlassId).collect(Collectors.toList());
+ int glassCount = bigStorageCageTaskList.size();
+ //鐢熸垚鍑虹墖浠诲姟鏉℃暟涓嶈冻6琛ュ叏
+ while (bigStorageCageTaskList.size() < 6) {
+ bigStorageCageTaskList.add(new BigStorageCageTask("", 0, 0, 0));
+ }
+ //娓呯┖浠诲姟琛ㄦ暟鎹�
+ bigStorageCageTaskService.removeAll("big_storage_cage_out_one_task");
+ bigStorageCageTaskService.saveTaskMessage(tableName, bigStorageCageTaskList);
+ List<BigStorageCageHistoryTask> historyList = bigStorageCageTaskList.stream().filter(e -> StringUtils.isNotBlank(e.getGlassId())).map(e -> {
+ BigStorageCageHistoryTask history = new BigStorageCageHistoryTask();
+ BeanUtils.copyProperties(e, history);
+ history.setGlassCount(glassCount);
+ history.setTaskType(taskType);
+ return history;
+ }).collect(Collectors.toList());
+ bigStorageCageHistoryTaskService.saveBatch(historyList);
+
+ log.info("灏嗗嚭鐗囩幓鐠儃}鐜荤拑鐘舵�佹敼涓哄嚭鐗囦腑", glassIds);
+ bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
+ .set(BigStorageCageDetails::getState, state)
+ .set(Const.BIG_STORAGE_BEFORE_DISPATCH.equals(taskType), BigStorageCageBaseInfo::getSlot, targetSlot)
+ .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT)
+ .in(BigStorageCageDetails::getGlassId, glassIds));
+ try {
+ miloService.writeToOpcWord(generateReadWriteEntity("DLP1B.DLP1B.MesReply", 1));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return Boolean.TRUE;
+ }
+
+ // /**
+// * 鍑虹墖涓�娆′粎鐢熸垚涓�杞︾幓鐠�
+// *
+// * @param list
+// * @param <T>
+// * @return
+// */
private <T extends BigStorageCageBaseInfo> Boolean computeOutGlassInfo(List<T> list, String tableName, int targetSlot, int state, int taskType) {
//浠诲姟鏁版嵁:鑾峰彇杞﹀瓙瀛樻斁鐜荤拑鏈�澶ф暟閲�,鐜荤拑闂撮殧
List<BigStorageCageTask> bigStorageCageTaskList = new ArrayList<>();
@@ -578,6 +698,7 @@
log.info("灏嗗嚭鐗囩幓鐠儃}鐜荤拑鐘舵�佹敼涓哄嚭鐗囦腑", glassIds);
bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
.set(BigStorageCageDetails::getState, state)
+ .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT)
.set(Const.GLASS_STATE_SCHEDULE_ING.equals(state), BigStorageCageBaseInfo::getSlot, targetSlot)
.in(BigStorageCageDetails::getGlassId, glassIds));
try {
--
Gitblit v1.8.0