From 8223485b2f6c909de81924e107b1e268aa04bd41 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期日, 30 六月 2024 22:59:26 +0800
Subject: [PATCH] 1、大理片笼进片逻辑调整:a、将扫描id后进生成任务信息,不执行卧转立进片命令; b、进片车空闲扫描,如果存在卧转立有满片的直接启动, 2、下片任务新增任务向plc发送任务信息 3、对外提供手工生成人工下片任务
---
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java | 90 +++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 87 insertions(+), 3 deletions(-)
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
index b9e6e98..82d885e 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
@@ -1,6 +1,14 @@
package com.mes.temperingglass.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.bigstorage.entity.BigStorageCage;
+import com.mes.bigstorage.entity.BigStorageCageDetails;
+import com.mes.bigstorage.mapper.BigStorageCageDetailsMapper;
+import com.mes.bigstorage.mapper.BigStorageCageMapper;
import com.mes.bigstoragetask.entity.BigStorageCageOutTask;
import com.mes.temperingglass.entity.TemperingGlassInfo;
import com.mes.temperingglass.mapper.TemperingGlassInfoMapper;
@@ -8,7 +16,9 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.util.List;
+import java.util.Map;
/**
* <p>
@@ -22,6 +32,11 @@
@Service
public class TemperingGlassInfoServiceImpl extends ServiceImpl<TemperingGlassInfoMapper, TemperingGlassInfo> implements TemperingGlassInfoService {
+ @Resource
+ private BigStorageCageDetailsMapper bigStorageCageDetailsMapper;
+ @Resource
+ private BigStorageCageMapper bigStorageCageMapper;
+
@Override
public void addOutTask(List<TemperingGlassInfo> temperingGlassInfoList) {
double carWidth=5000;
@@ -33,15 +48,84 @@
if((carWidth-temperingGlassInfo.getWidth())>0){
carWidth-=temperingGlassInfo.getWidth()+gap;
log.info("2銆佹坊鍔犻挗鍖栧皬鐗囪〃淇℃伅鍒颁换鍔¤〃");
- temperingGlassInfo.setState(0);
+ temperingGlassInfo.setState(-1);
baseMapper.updateById(temperingGlassInfo);
log.info("3銆佷慨鏀归挗鍖栧皬鐗囪〃浠诲姟鐘舵��");
- BigStorageCageOutTask bigStorageCageOutTask =new BigStorageCageOutTask();
+ BigStorageCageOutTask bigStorageCageOutTask = new BigStorageCageOutTask();
bigStorageCageOutTask.setId(temperingGlassInfo.getId());
- }else{
+ } else {
break;
}
}
}
+ @Override
+ public boolean saveBatch(List<TemperingGlassInfo> list) {
+ return baseMapper.saveBatch(list);
+ }
+
+ //璋冨害
+ @Override
+ public void schedulingTask() {
+ QueryWrapper<BigStorageCageDetails> detailsWrapper1 = Wrappers.query();
+ detailsWrapper1.select("tempering_layout_id", "count(distinct slot)")
+ .groupBy("tempering_layout_id");
+ List<Map<String, Object>> temperingLayoutIdList = bigStorageCageDetailsMapper.selectMaps(detailsWrapper1);
+
+ boolean key = false;
+ for (Map<String, Object> row : temperingLayoutIdList) {
+ for (Map.Entry<String, Object> entry : row.entrySet()) {
+ String temperingId = entry.getKey();
+ int temperingNo = Integer.parseInt(entry.getValue().toString());
+ if(temperingNo>8){
+ QueryWrapper<BigStorageCageDetails> detailsWrapper2 = Wrappers.query();
+ detailsWrapper2.select("tempering_layout_id", "slot")
+ .select("max(tempering_feed_sequence) as max_sequence", "min(tempering_feed_sequence) as min_sequence")
+ .groupBy("tempering_layout_id", "slot")
+ .orderByAsc("tempering_layout_id")
+ .orderByDesc("min_sequence");
+
+ List<Map<String, Object>> result = bigStorageCageDetailsMapper.selectMaps(detailsWrapper2);
+ for (Map<String, Object> rows : result) {
+ // 鑾峰彇姣忚鐨勫��
+ Object temperingLayoutId = rows.get("tempering_layout_id");
+ int slot = Integer.parseInt(rows.get("slot").toString());
+ int maxSequence = Integer.parseInt(rows.get("max_sequence").toString());
+ int minSequence = Integer.parseInt(rows.get("min_sequence").toString());
+
+ LambdaQueryWrapper<BigStorageCage> bigStorageCageWrapper=new LambdaQueryWrapper<>();
+ bigStorageCageWrapper.eq(BigStorageCage::getSlot,slot);
+ BigStorageCage bigStorageCage=bigStorageCageMapper.selectOne(bigStorageCageWrapper);
+ Integer remainWidth=5000-bigStorageCage.getRemainWidth();
+
+ BigStorageCage bigStorageCages=bigStorageCageMapper.selectJoinOne(BigStorageCage.class, new MPJLambdaWrapper<BigStorageCage>()
+ .selectAll(BigStorageCage.class)
+ .leftJoin(BigStorageCageDetails.class, on -> on
+ .eq(BigStorageCage::getDeviceId, BigStorageCageDetails::getDeviceId)
+ .eq(BigStorageCage::getSlot, BigStorageCageDetails::getSlot))
+ .gt(BigStorageCage::getRemainWidth,remainWidth)
+ .eq(BigStorageCageDetails::getTemperingLayoutId,temperingLayoutId)
+ .eq(BigStorageCageDetails::getTemperingFeedSequence,minSequence-1)
+ );
+
+ if(bigStorageCages.getSlot()!=null){
+ LambdaQueryWrapper<BigStorageCageDetails> bigStorageCageDetailsWrapper=new LambdaQueryWrapper<>();
+ bigStorageCageDetailsWrapper
+ .eq(BigStorageCageDetails::getSlot,slot)
+ .orderByDesc(BigStorageCageDetails::getTemperingFeedSequence);
+ List<BigStorageCageDetails> bigStorageCageDetailsList=bigStorageCageDetailsMapper.selectList(bigStorageCageDetailsWrapper);
+ for (BigStorageCageDetails bigStorageCageDetails:bigStorageCageDetailsList
+ ) {
+ BigStorageCageOutTask bigStorageCageOutTask=new BigStorageCageOutTask();
+ bigStorageCageOutTask.setTaskState(-3);
+ bigStorageCageOutTask.setStartSlot(slot);
+ bigStorageCageOutTask.setEndSlot(bigStorageCages.getSlot());
+ }
+ return;
+ }
+ }
+ }
+ }
+ }
+ }
}
--
Gitblit v1.8.0