From be032257d1562085b507496140dd3551570962e0 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期二, 23 七月 2024 20:31:15 +0800
Subject: [PATCH] 0723联调解决bug

---
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java                         |   63 ++++++++++++++------
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java |   14 ++++
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                      |   20 +++++-
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java                              |   17 +++++
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml                                     |    7 +-
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java                        |   19 ------
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java     |    5 -
 7 files changed, 95 insertions(+), 50 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
index 97eba6b..b5c0c8e 100644
--- 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
@@ -22,6 +22,11 @@
      */
     @ApiModelProperty(value = "瀹�")
     private double width;
+    /**
+     * 瀹�
+     */
+    @ApiModelProperty(value = "楂�")
+    private double height;
 
     /**
      * 鏍煎瓙鍙�
@@ -29,4 +34,16 @@
     @ApiModelProperty(value = "鐜荤拑id")
     private Integer slot;
 
+    /**
+     * x鍧愭爣
+     */
+    @ApiModelProperty(value = "x鍧愭爣", position = 13)
+    private Integer xCoordinate;
+
+    /**
+     * y鍧愭爣
+     */
+    @ApiModelProperty(value = "y鍧愭爣", position = 14)
+    private Integer yCoordinate;
+
 }
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 120a0d1..9a83681 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
@@ -1,4 +1,5 @@
 package com.mes.temperingglass.entity;
+
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.mes.base.entity.BigStorageCageBaseInfo;
@@ -44,12 +45,6 @@
     private Integer glassType;
 
     /**
-     * 楂�
-     */
-    @ApiModelProperty(value = "楂�", position = 7)
-    private double height;
-
-    /**
      * 鍘氬害
      */
     @ApiModelProperty(value = "鍘氬害", position = 8)
@@ -78,18 +73,6 @@
      */
     @ApiModelProperty(value = "閽㈠寲鐗堝浘鐗囧簭", position = 12)
     private Integer temperingFeedSequence;
-
-    /**
-     * x鍧愭爣
-     */
-    @ApiModelProperty(value = "x鍧愭爣", position = 13)
-    private Integer xCoordinate;
-
-    /**
-     * y鍧愭爣
-     */
-    @ApiModelProperty(value = "y鍧愭爣", position = 14)
-    private Integer yCoordinate;
 
     /**
      * 鏃嬭浆瑙掑害锛堥�嗘椂閽堬級
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 33fe7f5..e717b46 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
@@ -60,11 +60,6 @@
     @ApiModelProperty(value = "鐜荤拑绫诲瀷", position = 8)
     private Integer glassType;
 
-    /**
-     * 楂�
-     */
-    @ApiModelProperty(value = "楂�", position = 10)
-    private double height;
 
     /**
      * 鍘氬害
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java
index b439101..e5279a4 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java
@@ -27,10 +27,12 @@
     public BigStorageCageOutTask() {
     }
 
-    public BigStorageCageOutTask(String glassId, Integer startSlot, Integer endSlot, Integer width, Integer trainNumber, Integer serialNumber, Integer taskState) {
+    public BigStorageCageOutTask(String glassId, Integer startSlot, Integer endSlot, double width, double height, Integer trainNumber, Integer serialNumber, Integer taskState) {
         this.glassId = glassId;
         this.startSlot = startSlot;
         this.endSlot = endSlot;
+        this.width = width;
+        this.height = height;
         this.trainNumber = trainNumber;
         this.serialNumber = serialNumber;
         this.taskState = taskState;
@@ -60,6 +62,16 @@
      */
     @ApiModelProperty(value = "鐩爣浣嶇疆", position = 5)
     private Integer endSlot;
+    /**
+     * 鐩爣浣嶇疆
+     */
+    @ApiModelProperty(value = "鐩爣浣嶇疆", position = 5)
+    private double width;
+    /**
+     * 鐩爣浣嶇疆
+     */
+    @ApiModelProperty(value = "鐩爣浣嶇疆", position = 5)
+    private double height;
 
     /**
      * 杞︽
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 22b7ce4..1254d27 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
@@ -85,6 +85,10 @@
     @Value("${mes.glassGap}")
     private Integer glassGap;
 
+    @Value("${mes.xMaxSize}")
+    private Integer xMaxSize;
+
+
     private String d01GlassId = "";
     private String d04GlassId = "";
 
@@ -313,7 +317,7 @@
                     List<BigStorageCageDetails> list = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
                             .eq(BigStorageCageDetails::getSlot, first.getSlot()).eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN));
                     List<BigStorageCageOutTask> outTasks = list.stream().map(e -> new BigStorageCageOutTask(e.getGlassId(), first.getSlot(), second.getSlot(),
-                            slotWidth, 0, 0, 1)).collect(Collectors.toList());
+                            e.getWidth() * 10, e.getHeight() * 10, 0, 0, 1)).collect(Collectors.toList());
                     bigStorageCageOutTaskService.saveBatch(outTasks);
 
                     //鍚憄lc鍐欏叆纭瀛�
@@ -601,17 +605,25 @@
         List<BigStorageCageOutTask> bigStorageCageOutTaskList = new ArrayList<>();
         //鎵撹溅鍓╀綑灏哄
         Integer remainWidth = carWidth;
+        int maxX = 0;
         for (T e : list) {
             if (bigStorageCageOutTaskList.size() >= outCarMaxSize || e.getWidth() > remainWidth) {
                 break;
             }
             remainWidth = remainWidth - (int) e.getWidth() - glassGap;
             if (isTempering) {
-                bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.TEMPERING_OUT_TARGET_POSITION,
-                        (int) e.getWidth() * 10, 0, 0, 1));
+                int minLength = Math.min((int) e.getWidth(), (int) e.getHeight());
+                if (maxX + minLength <= xMaxSize) {
+                    bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.TEMPERING_OUT_TARGET_POSITION,
+                            e.getWidth() * 10, e.getHeight() * 10, 0, 0, 1));
+                    maxX = Math.max(maxX, e.getXCoordinate());
+                } else {
+                    break;
+                }
+
             } else {
                 bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.ARTIFICIAL_OUT_TARGET_POSITION,
-                        (int) e.getWidth() * 10, 0, 0, 1));
+                        e.getWidth() * 10, e.getHeight(), 0, 0, 1));
             }
 
         }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
index 158bfe1..d7124b8 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
@@ -16,6 +16,7 @@
   minCount: 5
   carWidth: 5000   #澶ц溅瀹藉害
   slotWidth: 5000   #澶ц溅瀹藉害
-  inCarMaxSize: 0     #杩涚墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
-  outCarMaxSize: 1     #鍑虹墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
-  glassGap: 2000      #鐜荤拑闂磋窛
\ No newline at end of file
+  inCarMaxSize: 2     #杩涚墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
+  outCarMaxSize: 3     #鍑虹墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
+  glassGap: 1000      #鐜荤拑闂磋窛
+  xMaxSize: 2850
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
index 63f6a49..13d4b6e 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
@@ -77,7 +77,7 @@
     private Integer minHeight;
 
 
-    @Scheduled(fixedDelay = 3000)
+    @Scheduled(fixedDelay = 300)
     public void plcHomeEdgTask() {
         PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
         String requestWord = plcParameterObject.getPlcParameter("requestWord").getValue();
@@ -90,7 +90,6 @@
         String confirmationWrodValue = plcParameterObject.getPlcParameter("confirmationWord").getValue();
         String confirmationWrodAddress = plcParameterObject.getPlcParameter("confirmationWord").getAddress();
         String currentSlot = plcParameterObject.getPlcParameter("currentCell").getValue();
-
 
 
         log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{}锛岃幏鍙栧埌鐨勭‘璁ゅ瓧涓猴細{}锛岃幏鍙栧埌鐨勫嚭鐗囩姸鎬佸垎鍒负锛歡06:{}銆乬08:{}銆乬11:{}銆乬13:{},褰撳墠鏍煎瓙鍙蜂负锛歿}",
@@ -162,7 +161,7 @@
                 if (CollectionUtils.isNotEmpty(list)) {
                     log.info("鏈夌┖鏋跺瓙,灏嗘祦绋嬪崱涓庢灦瀛愬ソ缁戝畾锛屾墽琛岃繘鐗囦换鍔� 缁撴潫");
                     //缁戝畾娴佺▼鍗�
-                    downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), glassInfo.getLayer(), list.get(0).getWorkstationId());
+                    downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getWorkstationId(), glassInfo.getLayer());
                     checkFlag = Boolean.TRUE;
                 }
             }
@@ -242,9 +241,14 @@
             return Boolean.FALSE;
         }
         Boolean flag08 = "1".equals(out08Glassstate) ? Boolean.TRUE : Boolean.FALSE;
-        if (!generateTaskByShelf(glassStatus06, glassStatus11, flag08, glassStatus13, tempList, cageDetails, glassId)) {
-            return generateTaskByShelf(glassStatus06, glassStatus11, !flag08, glassStatus13, tempList, cageDetails, glassId);
+        if (!flag08) {
+            generateTaskByShelf(glassStatus06, glassStatus11, flag08, glassStatus13, tempList, cageDetails, glassId);
+        } else {
+            if (!generateTaskByShelf(glassStatus06, glassStatus11, flag08, glassStatus13, tempList, cageDetails, glassId)) {
+                return generateTaskByShelf(glassStatus06, glassStatus11, !flag08, glassStatus13, tempList, cageDetails, glassId);
+            }
         }
+
         return Boolean.TRUE;
     }
 
@@ -313,18 +317,33 @@
                     list = tempList.stream().filter(item -> item.getWidth() > maxWidth || item.getHeight() > maxHeight).collect(Collectors.toList());
                 }
             } else {
+                //鑾峰彇鍙惤鏋剁殑鐨勬灦瀛愪俊鎭紙鍖呮嫭绌烘灦瀛愶級
                 List<DownWorkstation> workstationsIsNotBind = downWorkstationList.stream().filter(item -> null == (item.getFlowCardId())).collect(Collectors.toList());
-                Map<String, List<DownWorkstation>> listMap = downWorkstationList.stream().collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer()));
+                //灏嗘灦瀛愮殑娴佺▼鍗″彿鍙婂眰鏁颁綔涓簁ey
                 if (CollectionUtils.isEmpty(workstationsIsNotBind)) {
                     log.info("涓嶅瓨鍦ㄦ湭缁戝畾娴佺▼鍗℃灦瀛�");
                     //绛涢�夊嚭瀵瑰簲鏋跺瓙宸茬粦瀹氭祦绋嬪崱鍙笅鐗囩殑鐜荤拑
+                    Map<String, List<DownWorkstation>> listMap = downWorkstationList.stream()
+                            .filter(item -> null != (item.getFlowCardId())).collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer()));
                     list = tempList.stream().filter(item -> listMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
                 } else {
-                    log.info("瀛樺湪鏈粦瀹氭祦绋嬪崱鏋跺瓙锛岀洿鎺ヨ幏鍙栫鍐呮墍鏈夌幓鐠�");
+                    log.info("瀛樺湪鏈粦瀹氭祦绋嬪崱鏋跺瓙锛岀洿鎺ヨ幏鍙栫鍐呮墍鏈夌幓鐠�,涓旀湭缁戝畾鏋跺瓙鐨勭幓鐠冧俊鎭�");
+                    //鑾峰彇绂佺敤鏋跺瓙鐨勬祦绋嬪彿锛屽皢绗煎唴缁戝畾鏋跺瓙涓旀灦瀛愯绂佺敤鐨勬祦绋嬪崱淇℃伅
+                    List<Integer> workStationAll = Arrays.asList(1, 2, 3, 4, 5, 6);
+                    List<Integer> offWorkStationList = workStationAll.stream().filter(e -> !workList.contains(e)).collect(Collectors.toList());
+                    List<DownWorkstation> downWorkstationOffList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
+                            .and(i -> i.in(DownWorkstation::getWorkstationId, offWorkStationList).or().eq(DownWorkstation::getEnableState, Const.SLOT_OFF)));
+                    //鑾峰彇琚鐢ㄧ殑娴佺▼鍗′俊鎭�
+                    if (CollectionUtils.isEmpty(downWorkstationOffList)) {
+                        list = tempList;
+                    } else {
+                        Map<String, List<DownWorkstation>> listOffMap = downWorkstationOffList.stream().filter(item -> null != (item.getFlowCardId())).collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer()));
+                        list = tempList.stream().filter(item -> !listOffMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
+                    }
                     isEmptyShelf = Boolean.TRUE;
                     //todo:濡傛灉绂佺敤鏋跺瓙宸茬粦瀹氭祦绋嬪崱锛屽洜涓烘椂闂翠笉纭畾锛岀瀛愬唴鐨勭幓鐠冨彲閲嶆柊缁戝畾鏂版灦瀛�
 //                    list = tempList.stream().filter(item -> !listMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
-                    list = tempList;
+
                 }
             }
         } else {
@@ -361,7 +380,8 @@
                 break loop;
             }
             //灏嗙瀛愬唴鐨勭幓鐠冭繘琛岃繃婊わ紝浠呰幏鍙栨棤娉曡惤鏋剁殑娴佺▼鍗$幓鐠�
-            List<DownStorageCageDetails> noDownLoadList = list.stream().filter(item -> !downGlassFlowList.contains(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
+            List<DownStorageCageDetails> noDownLoadList = list.stream().filter(item -> !downGlassFlowList.contains(item.getFlowCardId() + ":" + item.getLayer()))
+                    .collect(Collectors.toList());
             if (CollectionUtils.isNotEmpty(noDownLoadList)) {
                 //鏄惁鏈夌┖鏋跺瓙
 //                List<DownWorkstation> emptyShelfList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
@@ -452,14 +472,18 @@
         }
 
         Integer endCell = null;
-        if (!isBind) {
+        if (isBind) {
             //鑾峰彇绌烘灦瀛愪俊鎭紝灏嗙┖鏋跺瓙淇℃伅缁戝畾娴佺▼鍗�
             DownWorkstation emptyDownWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
                     .isNull(DownWorkstation::getFlowCardId).orderByDesc(DownWorkstation::getWorkstationId).last("limit 1"));
             if (null != emptyDownWorkstation) {
                 log.info("鑾峰彇鍒扮┖鏋跺瓙淇℃伅锛岀粦瀹氭祦绋嬪崱");
-                downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), downStorageCageDetails.getLayer(), emptyDownWorkstation.getWorkstationId());
+                downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), emptyDownWorkstation.getWorkstationId(), downStorageCageDetails.getLayer());
                 endCell = emptyDownWorkstation.getWorkstationId();
+                //灏嗕笅鐗囩幓鐠冨瓨鍏ョ瀛愯鎯呬俊鎭〃涓�
+                //灏嗕换鍔℃彃鍏ョ悊鐗囩璇︽儏琛�
+                downStorageCageDetails.setState(Const.GLASS_STATE_OUT);
+                downStorageCageDetailsService.save(downStorageCageDetails);
             } else {
                 log.info("娌℃湁绌烘灦瀛愪俊鎭紝鏃犳硶缁戝畾娴佺▼鍗�");
                 return Boolean.FALSE;
@@ -468,14 +492,15 @@
             DownWorkstation workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>()
                     .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer()));
             endCell = workstation.getWorkstationId();
-        }
-        //鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬�
-        if (downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>()
-                .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT).eq(DownStorageCageDetails::getGlassId, glassId))) {
-            log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佹垚鍔�");
-        } else {
-            log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佸け璐�");
-            return Boolean.FALSE;
+
+            if (downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>()
+                    .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT).eq(DownStorageCageDetails::getGlassId, glassId))) {
+                log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佹垚鍔�");
+//                return Boolean.TRUE;
+            } else {
+                log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佸け璐�");
+                return Boolean.FALSE;
+            }
         }
         //鏇存柊钀芥灦鐜荤拑鏁伴噺
         if (endCell == 7) {

--
Gitblit v1.8.0