From d5d0d1c7a84b996b9bbcebfaf2c2c95f1a5a3678 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期五, 11 十月 2024 08:39:15 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java |  119 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 105 insertions(+), 14 deletions(-)

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 c324ce2..e96ddf0 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
@@ -30,6 +30,7 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
@@ -96,7 +97,6 @@
 
         log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{}锛岃幏鍙栧埌鐨勭‘璁ゅ瓧涓猴細{}锛岃幏鍙栧埌鐨勫嚭鐗囩姸鎬佸垎鍒负锛歡06:{}銆乬08:{}銆乬11:{}銆乬13:{},褰撳墠鏍煎瓙鍙蜂负锛歿}",
                 requestWord, glassIdeValue, confirmationWrodValue, out06Glassstate, out08Glassstate, out11Glassstate, out13Glassstate, currentSlot);
-
         if ("0".equals(requestWord)) {
             if ("0".equals(confirmationWrodValue)) {
                 log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓�0锛屼笖纭瀛椾负0锛屼笉鎵ц浠诲姟");
@@ -131,10 +131,12 @@
     @Scheduled(fixedDelay = 300)
     public void plcShelfFull() {
         List<DownWorkstation> list = downGlassInfoService.queryWorkStationIsFull();
+        S7control s7control = S7object.getinstance().plccontrol;
+        PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject;
         if (CollectionUtils.isNotEmpty(list)) {
-            S7control s7control = S7object.getinstance().plccontrol;
-            PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject;
             s7control.writeWord(plcMesObject.getPlcParameter("alarm_signal").getAddress(), 1);
+        } else {
+            s7control.writeWord(plcMesObject.getPlcParameter("alarm_signal").getAddress(), 0);
         }
     }
 
@@ -149,6 +151,20 @@
             List<String> glassList = downGlassTaskList.stream().map(DownGlassTask::getGlassId).collect(Collectors.toList());
             //灏嗕换鍔¤〃涓殑鏁版嵁鍒犻櫎
             downGlassTaskService.remove(new LambdaQueryWrapper<DownGlassTask>().in(DownGlassTask::getTaskType, Const.GLASS_CACHE_TYPE_OUT_ALL).in(DownGlassTask::getGlassId, glassList));
+            //娓呴櫎涓嬬墖鐜荤拑淇℃伅琛ㄦ暟鎹�
+            downGlassInfoService.remove(new LambdaQueryWrapper<DownGlassInfo>().in(DownGlassInfo::getGlassId, glassList));
+            //涓嬬墖鏁伴噺-1
+            for (DownGlassTask downGlassTask : downGlassTaskList
+            ) {
+                if (Const.GLASS_CACHE_TYPE_OUT_ALL.equals(downGlassTask.getTaskType())) {
+                    downWorkstationService.update(
+                            new LambdaUpdateWrapper<DownWorkstation>()
+                                    .setSql("racks_number = racks_number-1")
+                                    .eq(DownWorkstation::getWorkstationId, downGlassTask.getEndCell())
+                    );
+
+                }
+            }
             List<Damage> damageList = downGlassTaskList.stream().map(e -> {
                 Damage damage = new Damage();
                 damage.setGlassId(e.getGlassId());
@@ -181,7 +197,10 @@
             //鏇存柊宸ヤ綅鍏朵粬鐜荤拑淇℃伅鐨勬暟閲�
             QueryWrapper<Damage> queryWrapper = new QueryWrapper<>();
             queryWrapper.eq("process_id", downWorkstation.getFlowCardId());
-            queryWrapper.eq("technology_number", downWorkstation.getLayer());
+            queryWrapper.gt("type", 3);
+            if (downWorkstation.getLayer() != 0) {
+                queryWrapper.eq("technology_number", downWorkstation.getLayer());
+            }
             int otherNumber = damageService.count(queryWrapper);
             downWorkstationService.update(new LambdaUpdateWrapper<DownWorkstation>().set(DownWorkstation::getOtherNumber, otherNumber)
                     .eq(DownWorkstation::getWorkstationId, downWorkstation.getWorkstationId()));
@@ -211,9 +230,16 @@
         } else {
             log.info("璇ョ幓鐠冨昂瀵搁潪浜哄伐涓嬬墖");
             //鑾峰彇璇ョ幓鐠冪殑娴佺▼鍗℃槸鍚﹀凡缁戝畾鏋跺瓙
-            DownWorkstation one = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
-                    .eq(DownWorkstation::getLayer, glassInfo.getLayer())
-                    .eq(DownWorkstation::getFlowCardId, glassInfo.getFlowCardId()));
+            DownWorkstation one;
+            if (glassInfo.getCombine() != 0) {
+                one = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
+                        .eq(DownWorkstation::getFlowCardId, glassInfo.getFlowCardId()));
+            } else {
+                one = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
+                        .eq(DownWorkstation::getLayer, glassInfo.getLayer())
+                        .eq(DownWorkstation::getFlowCardId, glassInfo.getFlowCardId()));
+            }
+
             //鏄惁宸茬粡缁戝畾   true锛氬凡缁戝畾    false:鏈粦瀹�
             Boolean isBind = Boolean.FALSE;
             if (null != one) {
@@ -228,7 +254,12 @@
                 if (CollectionUtils.isNotEmpty(list)) {
                     log.info("鏈夌┖鏋跺瓙,灏嗘祦绋嬪崱涓庢灦瀛愬ソ缁戝畾锛屾墽琛岃繘鐗囦换鍔� 缁撴潫");
                     //缁戝畾娴佺▼鍗�
-                    downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getWorkstationId(), glassInfo.getLayer());
+                    if (glassInfo.getCombine() == 0) {
+                        downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getWorkstationId(), glassInfo.getLayer());
+                    } else {
+                        downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getWorkstationId(), 0);
+                    }
+//                      downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getId(), glassInfo.getLayer());
                     checkFlag = Boolean.TRUE;
                 }
             }
@@ -277,12 +308,18 @@
         //灏嗕换鍔℃彃鍏ョ悊鐗囩璇︽儏琛�
         DownStorageCageDetails downStorageCageDetails = new DownStorageCageDetails();
         BeanUtils.copyProperties(glassInfo, downStorageCageDetails);
+        //褰撻渶瑕佸悎骞惰惤鏋舵椂涓嶇粦瀹氬眰鍙�
+        if (glassInfo.getCombine() != 0) {
+            downStorageCageDetails.setLayer(0);
+        }
         downStorageCageDetails.setState(Const.GLASS_STATE_IN);
         downStorageCageDetails.setSlot(nearestEmpty.getSlot());
         downStorageCageDetails.setDeviceId(nearestEmpty.getDeviceId());
         downStorageCageDetailsService.save(downStorageCageDetails);
         //        鐢熸垚杩涚墖浠诲姟
         initDownGlassTask(glassInfo, 0, nearestEmpty.getSlot(), Const.GLASS_CACHE_TYPE_IN);
+        //鍒犻櫎鐞嗙墖绗艰〃鎷胯蛋/鐮存崯鏁版嵁鏁版嵁
+        damageService.deleteByGlassId(glassInfo.getGlassId());
     }
 
     public Boolean outTo(String glassStatus06, String out08Glassstate, String glassStatus11, String
@@ -299,6 +336,10 @@
         if (StringUtils.isNotBlank(glassId)) {
             GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
             BeanUtils.copyProperties(glassInfo, cageDetails);
+            //褰撻渶瑕佸悎骞惰惤鏋舵椂涓嶇粦瀹氬眰鍙�
+            if (glassInfo.getCombine() != 0) {
+                cageDetails.setLayer(0);
+            }
             //鑾峰彇褰撳墠绗煎瓙绌烘牸淇℃伅
             DownStorageCage empty = downStorageCageService.selectCacheEmpty(Integer.parseInt(currentSlot), Boolean.TRUE);
             cageDetails.setSlot(empty.getSlot());
@@ -315,6 +356,7 @@
         //2銆�08鍙扮┖闂诧紝鍏堣蛋鎵斿伐涓嬬墖鎴�2鍙锋満姊拌噦锛屾棤鐜荤拑鍑虹墖 鍦ㄨ蛋1鍙锋満姊拌噦
         //鏈烘鑷傝绂佺敤鐨勬儏鍐典笅涓嶈兘缁х画鍚戠鐢ㄧ殑鏈烘鑷傛斁鐜荤拑
         Boolean flag08 = "1".equals(out08Glassstate) ? Boolean.TRUE : Boolean.FALSE;
+        flag08 = true;
         if (!flag08) {
             generateTaskByShelf(glassStatus06, glassStatus11, flag08, glassStatus13, tempList, cageDetails, glassId);
         } else {
@@ -367,11 +409,21 @@
         List<Integer> workList = new ArrayList();
         if (flag08) {
             if (!"2".equals(glassStatus11)) {
-                workList.addAll(Const.G11_WORK_STATION);
+                List<Integer> wroklistOne = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
+                        .eq(DownWorkstation::getEnableState, Const.SLOT_ON).in(DownWorkstation::getWorkstationId, Const.G11_WORK_STATION))
+                        .stream()
+                        .map(DownWorkstation::getWorkstationId)
+                        .collect(Collectors.toList());
+                workList.addAll(wroklistOne);
             }
         } else {
             if (!"2".equals(glassStatus06)) {
-                workList.addAll(Const.G06_WORK_STATION);
+                List<Integer> wroklistTwo = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
+                        .eq(DownWorkstation::getEnableState, Const.SLOT_ON).in(DownWorkstation::getWorkstationId, Const.G06_WORK_STATION))
+                        .stream()
+                        .map(DownWorkstation::getWorkstationId)
+                        .collect(Collectors.toList());
+                workList.addAll(wroklistTwo);
             }
         }
         List<Integer> workStationAll = Arrays.asList(1, 2, 3, 4, 5, 6);
@@ -405,6 +457,7 @@
                     Map<String, List<DownWorkstation>> listMap = downWorkstationList.stream()
                             .filter(item -> StringUtils.isNotBlank(item.getFlowCardId())).collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer()));
                     //杩囨护绛涢�夎幏鍙栨灦瀛愪笂瀵瑰簲娴佺▼鍗�+灞傛暟鐨勭瀛愬唴鐨勭幓鐠冧俊鎭�
+
                     list = tempList.stream().filter(item -> listMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
                     if (CollectionUtils.isEmpty(list) && flag08 && !"2".equals(glassStatus13)) {
                         list = tempList.stream().filter(item -> {
@@ -580,15 +633,27 @@
             if (null != emptyDownWorkstation) {
                 log.info("鑾峰彇鍒扮┖鏋跺瓙淇℃伅锛岀粦瀹氭祦绋嬪崱");
                 downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), emptyDownWorkstation.getWorkstationId(), downStorageCageDetails.getLayer());
+//                downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), emptyDownWorkstation.getId(), downStorageCageDetails.getLayer());
                 endCell = emptyDownWorkstation.getWorkstationId();
             } else {
+                //todo:澧炲姞铏氭嫙宸ヤ綅,缁戝畾娴佺▼鍗�
+//                downWorkstationService.insertDownWorkstation();
+//                endCell = Const.G13_WORK_STATION;
+//                downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), emptyDownWorkstation.getId(), downStorageCageDetails.getLayer());
                 log.info("娌℃湁绌烘灦瀛愪俊鎭紝鏃犳硶缁戝畾娴佺▼鍗�");
                 return Boolean.FALSE;
             }
         } else {
-            DownWorkstation workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>()
-                    .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer()));
-            endCell = workstation.getWorkstationId();
+            double firstLength = Math.max(downStorageCageDetails.getWidth(), downStorageCageDetails.getHeight());
+            double secondLength = Math.min(downStorageCageDetails.getWidth(), downStorageCageDetails.getHeight());
+            if (firstLength > maxWidth || secondLength > maxHeight) {
+                endCell = Const.G13_WORK_STATION;
+            } else {
+                DownWorkstation workstation;
+                workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>()
+                        .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer()));
+                endCell = workstation.getWorkstationId();
+            }
         }
         //鏇存柊钀芥灦鐜荤拑鏁伴噺
         if (endCell == Const.G13_WORK_STATION) {
@@ -603,13 +668,31 @@
         DownGlassInfo downGlassInfo = new DownGlassInfo();
         BeanUtils.copyProperties(downStorageCageDetails, downGlassInfo);
         //钀芥灦鐗囧簭
-        downGlassInfo.setSequence(downGlassInfoService.queryMaxSequence(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer()));
+        LambdaQueryWrapper<DownGlassInfo> wrapper = new LambdaQueryWrapper<DownGlassInfo>();
+        wrapper.eq(DownGlassInfo::getFlowCardId, downGlassInfo.getFlowCardId())
+                .orderByDesc(DownGlassInfo::getSequence)
+                .last("limit 1");
+        if (downStorageCageDetails.getLayer() != 0) {
+            wrapper.eq(DownGlassInfo::getLayer, downGlassInfo.getLayer());
+        }
+//        downGlassInfo.setSequence(downGlassInfoService.queryMaxSequence(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer()));
+        int k = 0;
+        DownGlassInfo downGlassInfo1 = downGlassInfoService.getOne(wrapper);
+        if (downGlassInfo1 != null) {
+            k = 1;
+        } else {
+            k = 1;
+        }
+        downGlassInfo.setSequence(k);
         downGlassInfo.setWorkStationId(endCell);
         downGlassInfo.setGmtCreate(new Date());
         downGlassInfoService.save(downGlassInfo);
         //鐢熸垚浠诲姟淇℃伅
         GlassInfo glassInfo = new GlassInfo();
+        downStorageCageDetails.setLayer(0);
         BeanUtils.copyProperties(downStorageCageDetails, glassInfo);
+        //鍒犻櫎鐞嗙墖绗艰〃鎷胯蛋/鐮存崯鏁版嵁鏁版嵁
+        damageService.deleteByGlassId(glassInfo.getGlassId());
         return initDownGlassTask(glassInfo, downStorageCageDetails.getSlot(), endCell, taskType);
     }
 
@@ -627,6 +710,14 @@
         downGlassTask.setTaskStatus(0);
         downGlassTask.setCreateTime(new Date());
         downGlassTaskService.save(downGlassTask);
+        //娣诲姞鎶ュ伐鏁版嵁
+        Damage damage = new Damage();
+        damage.setGlassId(glassInfo.getGlassId());
+        damage.setWorkingProcedure("閽㈠寲");
+        damage.setLine(4001);
+        damage.setType(1);
+        damage.setRemark("閽㈠寲鍚庡崸寮忕悊鐗�");
+        damageService.insertDamage(damage);
         //鍚憄lc鍙戦�佸懡浠�
         return sendMessageToPlc((int) glassInfo.getWidth(), (int) glassInfo.getHeight(), (int) glassInfo.getThickness(),
                 startCell, endCell, taskType);

--
Gitblit v1.8.0