From e555f50e1bb0cb6b8facca208c70df4dcce06b80 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期五, 21 六月 2024 14:45:57 +0800
Subject: [PATCH] 大理片笼进出片任务bug修复完毕,自测已完成,待联调
---
hangzhoumesParent/common/servicebase/src/main/resources/mapper/TemperingGlassInfoMapper.xml | 11 +
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java | 4
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java | 58 +++------
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java | 21 ++
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java | 177 +++++++++++++++++------------
hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java | 32 +++++
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml | 5
hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java | 22 ---
hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java | 6 -
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java | 24 ---
10 files changed, 193 insertions(+), 167 deletions(-)
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java
new file mode 100644
index 0000000..c427061
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java
@@ -0,0 +1,32 @@
+package com.mes.base.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/6/21 9:40
+ * @Description:
+ */
+@Data
+public class BigStorageCageBaseInfo {
+
+ /**
+ * 鐜荤拑id
+ */
+ @ApiModelProperty(value = "鐜荤拑id")
+ private String glassId;
+
+ /**
+ * 瀹�
+ */
+ @ApiModelProperty(value = "瀹�")
+ private Double width;
+
+ /**
+ * 鏍煎瓙鍙�
+ */
+ @ApiModelProperty(value = "鐜荤拑id")
+ private Integer slot;
+
+}
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 87c8225..b18d95d 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
@@ -121,12 +121,6 @@
public static final Integer BIG_STORAGE_IN_RUN = 2;
/**
- * 澶х悊鐗囩瀹藉害 鍙� 鐜荤拑闂磋窛
- */
- public static final Integer BIG_STORAGE_WIDTH = 5000;
- public static final Integer BIG_STORAGE_GAP = 20;
-
- /**
* 閽㈠寲灏忕墖琛�
* -1 鐢熸垚浠诲姟
* 0 鍑虹墖瀹屾垚
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java
index 02e9750..2ebf5a8 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
+import com.mes.base.entity.BigStorageCageBaseInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -20,7 +21,7 @@
@ApiModel(description = "<p> 閽㈠寲灏忕墖淇℃伅琛� </p>")
@Data
@EqualsAndHashCode(callSuper = false)
-public class TemperingGlassInfo implements Serializable {
+public class TemperingGlassInfo extends BigStorageCageBaseInfo implements Serializable {
private static final long serialVersionUID = 1L;
@@ -30,12 +31,6 @@
@ApiModelProperty(value = "閽㈠寲灏忕墖淇℃伅琛╥d", position = 2)
@TableId(value = "id", type = IdType.AUTO)
private Long id;
-
- /**
- * 鐜荤拑id
- */
- @ApiModelProperty(value = "鐜荤拑id", position = 3)
- private String glassId;
/**
* 娴佺▼鍗�
@@ -48,12 +43,6 @@
*/
@ApiModelProperty(value = "娴佺▼鍗$幓鐠冪被鍨�", position = 5)
private Integer glassType;
-
- /**
- * 瀹�
- */
- @ApiModelProperty(value = "瀹�", position = 6)
- private Double width;
/**
* 楂�
@@ -71,7 +60,7 @@
* 鑶滅郴
*/
@ApiModelProperty(value = "鑶滅郴", position = 9)
- private Integer filmsid;
+ private String filmsid;
/**
* 閽㈠寲鏄惁鎺ュ彈妯斁
@@ -114,10 +103,5 @@
*/
@ApiModelProperty(value = "鐘舵��", position = 16)
private Integer state;
- /**
- * 鏍煎瓙鍙�
- */
- private Integer slot;
-
}
diff --git a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/TemperingGlassInfoMapper.xml b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/TemperingGlassInfoMapper.xml
index 73f527f..c85d6d5 100644
--- a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/TemperingGlassInfoMapper.xml
+++ b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/TemperingGlassInfoMapper.xml
@@ -2,11 +2,14 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mes.temperingglass.mapper.TemperingGlassInfoMapper">
<insert id="saveBatch">
- INSERT INTO tempering_glass_info ( glass_id, width, height, thickness, tempering_layout_id,
- tempering_feed_sequence, "state" ) VALUES
+ INSERT INTO tempering_glass_info (glass_id, flow_card_id, glass_type, width, height, thickness, filmsid,
+ ishorizontal, tempering_layout_id,
+ tempering_feed_sequence, x_coordinate, y_coordinate, angle, state, slot ) VALUES
<foreach collection="list" item="item" separator=",">
- (#{item.glassId}, #{item.width}, #{item.height}, #{item.thickness}, #{item.temperingLayoutId},
- #{item.temperingFeedSequence}, #{item.state})
+ (#{item.glassId}, #{item.flowCardId}, #{item.glassType}, #{item.width}, #{item.height}, #{item.thickness},
+ #{item.filmsid},#{item.ishorizontal},
+ #{item.temperingLayoutId}, #{item.temperingFeedSequence}, #{item.xCoordinate}, #{item.yCoordinate},
+ #{item.angle}, #{item.state}, #{item.slot})
</foreach>
</insert>
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
index 490bbbf..635f2df 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
+import com.mes.base.entity.BigStorageCageBaseInfo;
import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
import com.mes.bigstoragetask.entity.BigStorageCageOutTask;
import io.swagger.annotations.Api;
@@ -23,15 +24,15 @@
@Api(description = "澶х悊鐗囩璇︽儏")
@Data
@EqualsAndHashCode(callSuper = false)
-public class BigStorageCageDetails implements Serializable {
+public class BigStorageCageDetails extends BigStorageCageBaseInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 澶х悊鐗囩璇︽儏琛╥d
*/
- @ApiModelProperty(value = "澶х悊鐗囩璇︽儏琛╥d", position = 2)
- @TableId(value = "id", type = IdType.AUTO)
+ @ApiModelProperty(value = "澶х悊鐗囩璇︽儏琛╥d", position = 2)
+ @TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
@@ -40,17 +41,6 @@
@ApiModelProperty(value = "璁惧id", position = 3)
private Integer deviceId;
- /**
- * 鏍呮牸鍙�
- */
- @ApiModelProperty(value = "鏍呮牸鍙�", position = 4)
- private Integer slot;
-
- /**
- * 鐜荤拑id
- */
- @ApiModelProperty(value = "鐜荤拑id", position = 5)
- private String glassId;
/**
* 灏忕墖鍦ㄦ牸鍐呯殑椤哄簭
@@ -69,12 +59,6 @@
*/
@ApiModelProperty(value = "鐜荤拑绫诲瀷", position = 8)
private Integer glassType;
-
- /**
- * 瀹�
- */
- @ApiModelProperty(value = "瀹�", position = 9)
- private Double width;
/**
* 楂�
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
index bce5186..c3a9c9c 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -26,7 +26,6 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -55,6 +54,18 @@
@Value("${mes.minCount}")
private int minCount;
+
+ @Value("${mes.carWidth}")
+ private Integer carWidth;
+
+ @Value("${mes.slotWidth}")
+ private Integer slotWidth;
+
+ @Value("${mes.carMaxSize}")
+ private Integer carMaxSize;
+
+ @Value("${mes.galssGap}")
+ private Integer galssGap;
/**
* 鏌ヨ杩�/鍑虹墖浠诲姟
@@ -125,7 +136,7 @@
for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList
) {
if (bigStorageCageDetails.getBigStorageCageFeedTask().getTaskState() == 0) {
- carWidth -= Integer.parseInt(bigStorageCageDetails.getWidth().toString()) + bigStorageCageDetails.getGap();
+ carWidth -= Integer.parseInt(bigStorageCageDetails.getWidth().toString()) + galssGap;
}
}
return carWidth;
@@ -175,7 +186,7 @@
BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails();
BeanUtils.copyProperties(glassInfo, bigStorageCageDetails);
bigStorageCageDetails.setState(0);
- bigStorageCageDetails.setGap(Const.BIG_STORAGE_GAP);
+ bigStorageCageDetails.setGap(galssGap);
return bigStorageCageDetails;
}
@@ -228,7 +239,7 @@
return bigStorageDTO;
}
bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
- .eq(BigStorageCage::getRemainWidth, Const.BIG_STORAGE_WIDTH)
+ .eq(BigStorageCage::getRemainWidth, slotWidth)
.inSql(BigStorageCage::getDeviceId,
"select distinct device_id from big_storage_cage_details where tempering_layout_id = " + glassInfo.getTemperingLayoutId())
.last("limit 1"));
@@ -239,7 +250,7 @@
return bigStorageDTO;
}
bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
- .eq(BigStorageCage::getRemainWidth, Const.BIG_STORAGE_WIDTH)
+ .eq(BigStorageCage::getRemainWidth, slotWidth)
.last("limit 1"));
Assert.isTrue(null != bigStorageCage, "娌℃湁绌轰綑鐨勭瀛愬瓨鏀剧幓鐠�");
bigStorageDTO = new BigStorageDTO();
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
index 01aa22e..aebf46d 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -5,6 +5,8 @@
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.base.entity.BigStorageCageBaseInfo;
import com.mes.bigstorage.entity.BigStorageCage;
import com.mes.bigstorage.entity.BigStorageCageDetails;
import com.mes.bigstorage.entity.BigStorageDTO;
@@ -16,7 +18,9 @@
import com.mes.bigstoragetask.entity.BigStorageCageOutTask;
import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService;
import com.mes.bigstoragetask.service.BigStorageCageOutTaskService;
+import com.mes.common.S7object;
import com.mes.common.config.Const;
+import com.mes.device.PlcParameterObject;
import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
import com.mes.glassinfo.entity.GlassInfo;
@@ -27,13 +31,11 @@
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -63,26 +65,28 @@
@Value("${mes.sequence.order}")
private boolean sequenceOrder;
+ @Value("${mes.carWidth}")
+ private Integer carWidth;
+
@Value("${mes.slotWidth}")
private Integer slotWidth;
- // @Scheduled(fixedDelay = 5000)
- public void plcToHomeEdgScan(String d01Id) {
-// PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
-// String d01Request = plcParameterObject.getPlcParameter("D01Request").getValue();
-// String d01Id = plcParameterObject.getPlcParameter("D01ID1").getValue();
-// String d02SitState = plcParameterObject.getPlcParameter("D02SitState").getValue();
-// String d04Request = plcParameterObject.getPlcParameter("D04Request").getValue();
-// String d04Id = plcParameterObject.getPlcParameter("D04ID1").getValue();
-// String d05SitState = plcParameterObject.getPlcParameter("D05SitState").getValue();
+ @Value("${mes.carMaxSize}")
+ private Integer carMaxSize;
- String d01Request = "1";
- String d02SitState = "0";
-// String d01Id = "P24060403|3|6";
- String d04Request = "0";
- String d05SitState = "0";
-// String d04Id = "P24060403|4|3";
- String d04Id = "P24060403|5|4";
+ @Value("${mes.galssGap}")
+ private Integer galssGap;
+
+ @Scheduled(fixedDelay = 5000)
+ public void plcToHomeEdgScan() {
+ PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
+ String d01Request = plcParameterObject.getPlcParameter("D01Request").getValue();
+ String d01Id = plcParameterObject.getPlcParameter("D01ID1").getValue();
+ String d02SitState = plcParameterObject.getPlcParameter("D02SitState").getValue();
+ String d04Request = plcParameterObject.getPlcParameter("D04Request").getValue();
+ String d04Id = plcParameterObject.getPlcParameter("D04ID1").getValue();
+ String d05SitState = plcParameterObject.getPlcParameter("D05SitState").getValue();
+
log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧d01涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{};鑾峰彇鍒扮殑璇锋眰瀛梔04涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{};",
d01Request, d01Id, d04Request, d04Id);
if (!REQUEST_WORD.equals(d01Request) && !REQUEST_WORD.equals(d04Request)) {
@@ -116,23 +120,18 @@
}
}
- // @Scheduled(fixedDelay = 5000)
+ @Scheduled(fixedDelay = 5000)
public void plcToHomeEdgFreeCarTask() {
-// PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
-// String e01Status = plcParameterObject.getPlcParameter("E01Status").getValue();
- String e01Status = "0";
+ PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
+ String e01Status = plcParameterObject.getPlcParameter("E01Status").getValue();
if (REQUEST_WORD.equals(e01Status)) {
log.info("杩涚墖澶ц溅闈炵┖闂�");
return;
}
-// String d01Request = plcParameterObject.getPlcParameter("D01Request").getValue();
-// String d01Id = plcParameterObject.getPlcParameter("D01ID1").getValue();
-// String d04Request = plcParameterObject.getPlcParameter("D04Request").getValue();
-// String d04Id = plcParameterObject.getPlcParameter("D04ID1").getValue();
- String d01Request = "";
- String d01Id = "";
- String d04Request = "1";
- String d04Id = "";
+ String d01Request = plcParameterObject.getPlcParameter("D01Request").getValue();
+ String d01Id = plcParameterObject.getPlcParameter("D01ID1").getValue();
+ String d04Request = plcParameterObject.getPlcParameter("D04Request").getValue();
+ String d04Id = plcParameterObject.getPlcParameter("D04ID1").getValue();
log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧d01涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{};鑾峰彇鍒扮殑璇锋眰瀛梔04涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{};",
d01Request, d01Id, d04Request, d04Id);
//涓ゆ潯绾块兘鏈夎繘鍗ц浆绔嬩换鍔★紝鐩存帴缁撴潫
@@ -168,43 +167,29 @@
computeTargetByLine(outLine);
}
- // @Scheduled(fixedDelay = 5000)
+ @Scheduled(fixedDelay = 5000)
public void plcToHomeEdgOutTask() {
- //浠诲姟鏁版嵁 鑾峰彇杞﹀瓙瀛樻斁鐜荤拑鏈�澶ф暟閲� 鐜荤拑闂撮殧
- List<BigStorageCageOutTask> bigStorageCageOutTaskList = new ArrayList<>();
+
+ List<BigStorageCageOutTask> outingList = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>().eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_NEW));
+ Assert.isTrue(CollectionUtils.isEmpty(outingList), "鏈夋鍦ㄦ墽琛屽嚭鐗囩殑浠诲姟锛岀粨鏉熷綋鍓嶅嚭鐗囩嚎绋�");
+
//鏄惁鏈夋鍦ㄩ挗鍖栫殑鐜荤拑
- List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>()
+ List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.selectJoinList(TemperingGlassInfo.class, new MPJLambdaWrapper<TemperingGlassInfo>()
+ .selectAll(TemperingGlassInfo.class)
+ .leftJoin(BigStorageCageOutTask.class, BigStorageCageOutTask::getGlassId, TemperingGlassInfo::getGlassId)
.eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW)
+ .isNull(BigStorageCageOutTask::getGlassId)
.orderBy(Boolean.TRUE, sequenceOrder, TemperingGlassInfo::getTemperingFeedSequence));
if (CollectionUtils.isNotEmpty(temperingGlassInfoList)) {
log.info("鏈夋鍦ㄥ嚭鐗囩殑閽㈠寲浠诲姟");
- //鎵撹溅鍓╀綑灏哄
- Integer remainWidth = Const.BIG_STORAGE_WIDTH;
- for (TemperingGlassInfo e : temperingGlassInfoList) {
- if (bigStorageCageOutTaskList.size() > 5 || e.getWidth() > remainWidth) {
- break;
- }
- remainWidth = remainWidth - e.getWidth().intValue() - Const.BIG_STORAGE_GAP;
- bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getState(), Const.A09_OUT_TARGET_POSITION,
- e.getWidth().intValue(), 0, 0, 1));
- }
- bigStorageCageOutTaskService.saveBatch(bigStorageCageOutTaskList);
+ computeOutGlassInfo(temperingGlassInfoList);
return;
}
//鏄惁鏈変汉宸ヤ笅鐗囦换鍔� 鏈夌洿鎺ュ嚭
List<BigStorageCageDetails> artificialList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
.eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL).orderByDesc(BigStorageCageDetails::getWidth));
if (CollectionUtils.isNotEmpty(artificialList)) {
- Integer remainWidth = Const.BIG_STORAGE_WIDTH;
- for (BigStorageCageDetails e : artificialList) {
- if (remainWidth < e.getWidth().intValue()) {
- break;
- }
- bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.A10_OUT_TARGET_POSITION,
- e.getWidth().intValue(), 0, 0, 1));
- remainWidth = remainWidth - e.getWidth().intValue() - Const.BIG_STORAGE_GAP;
- }
- bigStorageCageOutTaskService.saveBatch(bigStorageCageOutTaskList);
+ computeOutGlassInfo(temperingGlassInfoList);
return;
}
//閽㈠寲浼樺厛锛氳幏鍙栫悊鐗囩 鐜荤拑灏忕墖 鐮存崯琛� 鏁伴噺 鍒ゆ柇绗煎唴鐗堝浘鏄惁鍒伴綈
@@ -214,24 +199,14 @@
//鍒伴綈锛屽皢鐜荤拑灏忕墖鏁版嵁瀛樺叆閽㈠寲灏忕墖琛紝閫昏緫鐢熸垚鍑虹墖浠诲姟 缁撴潫
List<TemperingGlassInfo> temperingGlassInfos = glassInfoService.selectJoinList(TemperingGlassInfo.class, JoinWrappers.lambda(GlassInfo.class)
.selectAll(GlassInfo.class)
+ .select("-1 as state")
.selectAs(BigStorageCageDetails::getSlot, TemperingGlassInfo::getSlot)
.innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId)
.eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
.eq(GlassInfo::getTemperingLayoutId, temperingLayoutDTO.getTemperingLayoutId())
.eq(GlassInfo::getEngineerId, temperingLayoutDTO.getEngineerId()));
temperingGlassInfoService.saveBatch(temperingGlassInfos);
-
- //澶ц溅鍓╀綑灏哄
- Integer remainWidth = Const.BIG_STORAGE_WIDTH;
- for (TemperingGlassInfo e : temperingGlassInfos) {
- if (bigStorageCageOutTaskList.size() > 5 || e.getWidth() > remainWidth) {
- break;
- }
- remainWidth = remainWidth - e.getWidth().intValue() - Const.BIG_STORAGE_GAP;
- bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getState(), Const.A09_OUT_TARGET_POSITION,
- e.getWidth().intValue(), 0, 0, 1));
- }
- bigStorageCageOutTaskService.saveBatch(bigStorageCageOutTaskList);
+ computeOutGlassInfo(temperingGlassInfoList);
return;
}
//鏈埌榻� 鎵ц鍐呴儴璋冨害浠诲姟
@@ -241,7 +216,7 @@
for (int i = 0; i < slotSequenceList.size() - 1; i++) {
SlotSequenceDTO first = slotSequenceList.get(i);
SlotSequenceDTO second = slotSequenceList.get(i + 1);
- int slotWidth = Const.BIG_STORAGE_WIDTH - first.getRemainWidth() - Const.BIG_STORAGE_GAP;
+ int slotWidth = carWidth - first.getRemainWidth() - galssGap;
if (first.getMinSequence() == second.getMaxSequence() + 1
&& second.getRemainWidth() > slotWidth) {
List<BigStorageCageDetails> list = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
@@ -271,7 +246,7 @@
Integer remainWidth;
Integer glassCount;
if (0 == sitToUpRemainWidth.getGlassCount()) {
- remainWidth = Const.BIG_STORAGE_WIDTH;
+ remainWidth = carWidth;
glassCount = 0;
} else {
remainWidth = sitToUpRemainWidth.getWidth();
@@ -292,8 +267,8 @@
} else {
Integer widthSecond = edgGlassTaskInfoList.get(1).getWidth();
if (remainWidth >= widthFirst) {
- if (remainWidth - widthFirst - Const.BIG_STORAGE_GAP >= widthSecond) {
- if (glassCount <= 5) {
+ if (remainWidth - widthFirst - galssGap >= widthSecond) {
+ if (glassCount <= carMaxSize - 1) {
addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst);
return Boolean.FALSE;
} else {
@@ -392,4 +367,60 @@
}
return Boolean.TRUE;
}
+
+ private <T extends BigStorageCageBaseInfo> Boolean computeOutGlassInfo(List<T> list) {
+ //浠诲姟鏁版嵁 鑾峰彇杞﹀瓙瀛樻斁鐜荤拑鏈�澶ф暟閲� 鐜荤拑闂撮殧
+ List<BigStorageCageOutTask> bigStorageCageOutTaskList = new ArrayList<>();
+ //鎵撹溅鍓╀綑灏哄
+ Integer remainWidth = carWidth;
+ for (T e : list) {
+ if (bigStorageCageOutTaskList.size() > carMaxSize || e.getWidth() > remainWidth) {
+ break;
+ }
+ remainWidth = remainWidth - e.getWidth().intValue() - galssGap;
+ bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.A09_OUT_TARGET_POSITION,
+ e.getWidth().intValue(), 0, 0, 1));
+ }
+ Assert.isFalse(CollectionUtils.isEmpty(bigStorageCageOutTaskList), "鏈幏鍙栧嚭鐗囨暟鎹紝缁撴潫鍑虹墖浠诲姟");
+ log.info("鑾峰彇鍑虹墖浠诲姟鏁版嵁{}鏉★紝鎵ц淇濆瓨", bigStorageCageOutTaskList.size());
+ bigStorageCageOutTaskService.saveBatch(bigStorageCageOutTaskList);
+ List<String> glassIds = bigStorageCageOutTaskList.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList());
+ log.info("灏嗗嚭鐗囩幓鐠儃}鐜荤拑鐘舵�佹敼涓哄凡鍑虹墖", glassIds);
+ bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
+ .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT)
+ .in(BigStorageCageDetails::getGlassId, glassIds));
+ //鏇存柊绗煎瓙鍐呮牸瀛愮殑鍓╀綑灏哄
+ updateSlotRemain(list, glassIds);
+ return Boolean.TRUE;
+ }
+
+ /**
+ * 鏇存柊绗煎瓙鍐呮牸瀛愮殑鍓╀綑灏哄
+ *
+ * @param list
+ * @param taskGlassIds
+ * @param <T>
+ */
+ public <T extends BigStorageCageBaseInfo> void updateSlotRemain(List<T> list, List<String> taskGlassIds) {
+ //鑾峰彇闇�瑕佸嚭鍘伙紙鍖呮嫭寰呭嚭鍘荤殑锛夌殑鎵�鏈夌幓鐠冩牸瀛愬彿
+ List<Integer> slotList = list.stream().map(T::getSlot).distinct().collect(Collectors.toList());
+ //鑾峰彇寰呭嚭鍘荤殑鐜荤拑淇℃伅锛堢瓑涓嬭溅鍑哄幓鐨勭幓鐠冿級
+ Map<Integer, Double> slotRemainMap = list.stream().filter(e -> !taskGlassIds.contains(e.getGlassId()))
+ .collect(Collectors.groupingBy(T::getSlot, Collectors.summingDouble(item -> item.getWidth() + galssGap)));
+ if (CollectionUtils.isNotEmpty(slotRemainMap)) {
+ //鎸夌収鏍煎瓙鍙锋洿鏂板墿浣欏昂瀵�
+ slotRemainMap.forEach((e, v) -> {
+ bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, slotWidth - v)
+ .eq(BigStorageCage::getSlot, e));
+ });
+ }
+ Set<Integer> remainSlotList = slotRemainMap.keySet();
+ slotList.removeAll(remainSlotList);
+ if (CollectionUtils.isNotEmpty(slotList)) {
+ bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, slotWidth)
+ .in(BigStorageCage::getSlot, slotList));
+ }
+
+
+ }
}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java
index 72a7f0f..ab5372d 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java
@@ -1,6 +1,6 @@
package com.mes.temperingglass.service;
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
import com.mes.temperingglass.entity.TemperingGlassInfo;
import java.util.List;
@@ -13,7 +13,7 @@
* @author zhoush
* @since 2024-03-27
*/
-public interface TemperingGlassInfoService extends IService<TemperingGlassInfo> {
+public interface TemperingGlassInfoService extends MPJBaseService<TemperingGlassInfo> {
public void addOutTask(List<TemperingGlassInfo> temperingGlassInfoList);
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
index 2a8d5ea..7f3890a 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
@@ -14,4 +14,7 @@
sequence:
order: false
minCount: 5
- slotWidth: 5000
\ No newline at end of file
+ carWidth: 5000 #澶ц溅瀹藉害
+ slotWidth: 5000 #澶ц溅瀹藉害
+ carMaxSize: 6 #澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
+ galssGap: 20 #鐜荤拑闂磋窛
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
index 23badef..46bade9 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
@@ -1,5 +1,6 @@
package com.mes;
+import com.mes.base.entity.BigStorageCageBaseInfo;
import com.mes.bigstorage.service.BigStorageCageService;
import com.mes.common.config.Const;
import com.mes.job.PlcStorageCageTask;
@@ -40,74 +41,57 @@
}
@Test
+ public void updateSlotRemain() {
+ List<String> taskGlassIds = Arrays.asList(
+// "P24060403|1|1",
+// "P24060403|1|2",
+// "P24060403|1|3",
+// "P24060403|1|4",
+ "P24060403|1|5");
+ List<BigStorageCageBaseInfo> list = new ArrayList<>();
+ list.add(new BigStorageCageBaseInfo("P24060403|1|1", 1080.0, 4));
+ list.add(new BigStorageCageBaseInfo("P24060403|1|2", 1080.0, 1));
+ list.add(new BigStorageCageBaseInfo("P24060403|1|3", 1080.0, 1));
+ list.add(new BigStorageCageBaseInfo("P24060403|1|4", 1080.0, 16));
+ list.add(new BigStorageCageBaseInfo("P24060403|1|5", 1080.0, 15));
+
+ plcStorageCageTask.updateSlotRemain(list, taskGlassIds);
+ }
+
+ @Test
public void plcToHomeEdgOutTask() {
-// log.info("鑾峰彇澶х悊鐗囩淇℃伅锛歿}",bigStorageCageService.querybigStorageCageDetail());
plcStorageCageTask.plcToHomeEdgOutTask();
}
@Test
public void plcToHomeEdgFreeCarTask() {
-// log.info("鑾峰彇澶х悊鐗囩淇℃伅锛歿}",bigStorageCageService.querybigStorageCageDetail());
plcStorageCageTask.plcToHomeEdgFreeCarTask();
}
@Test
public void plcStorageCageTask() {
-// log.info("鑾峰彇澶х悊鐗囩淇℃伅锛歿}",bigStorageCageService.querybigStorageCageDetail());
- List<String> list = new ArrayList<>();
- //2002
-// list.add("P24060403|4|3");
-// list.add("P24060403|5|4");
-// list.add("P24060403|2|1");
-// list.add("P24060403|3|2");
-// list.add("P24060403|1|3");
-// list.add("P24060403|3|1");
-// list.add("P24060403|2|3");
-// list.add("P24060403|1|1");
-// list.add("P24060403|8|6");
-// list.add("P24060403|7|2");
- //2001
-// list.add("P24060403|3|6");
-// list.add("P24060403|5|2");
-// list.add("P24060403|4|4");
-// list.add("P24060403|3|5");
-// list.add("P24060403|5|3");
-// list.add("P24060403|1|2");
-// list.add("P24060403|2|2");
-// list.add("P24060403|5|1");
- list.add("P24060403|2|4");
- list.add("P24060403|1|5");
- list.add("P24060403|4|2");
- list.add("P24060403|1|4");
- list.add("P24060403|4|1");
- list.add("P24060403|8|7");
- for (String e : list) {
- plcStorageCageTask.plcToHomeEdgScan(e);
- }
+ plcStorageCageTask.plcToHomeEdgScan();
+
}
@Test
public void computeTargetByLine() {
-// log.info("鑾峰彇澶х悊鐗囩淇℃伅锛歿}",bigStorageCageService.querybigStorageCageDetail());
plcStorageCageTask.computeTargetByLine(2001);
}
@Test
public void judgeGlassTypeStatus() {
-// log.info("鑾峰彇澶х悊鐗囩淇℃伅锛歿}",bigStorageCageService.querybigStorageCageDetail());
plcStorageCageTask.judgeGlassTypeStatus("P24060403|6|7", Const.A09_OUT_TARGET_POSITION);
}
@Test
public void getStartLine() {
-// log.info("鑾峰彇澶х悊鐗囩淇℃伅锛歿}",bigStorageCageService.querybigStorageCageDetail());
Integer startLine = plcStorageCageTask.getStartLine();
log.info("---------{}", startLine);
}
@Test
public void selectBigStorageCageUsage() {
-// bigStorageCageService.querybigStorageCageDetail(1);
log.info("鑾峰彇澶х悊鐗囩淇℃伅锛歿}", bigStorageCageService.selectBigStorageCageUsage());
}
--
Gitblit v1.8.0