From 6397754d1a97f7b570435e8ab81d3ef1d152b2d0 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期一, 11 八月 2025 16:01:53 +0800
Subject: [PATCH] 1、义乌改造:进出笼规则调整,当存在进片任务/请求时,出片大车不执行调度任务 2、进片一个笼子存放一个工程,笼子存在工程时,按笼子使用情况,剩余格子最多的优先使用 3、指定钢化工程改造

---
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java |   94 ++++++++++++++++++++++++++++------------------
 1 files changed, 57 insertions(+), 37 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 f8f60df..a2aaa2f 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
@@ -100,7 +100,7 @@
     private RedisUtil redisUtil;
 
     @Scheduled(fixedDelay = 1000)
-    public void inBigStorageTask() throws Exception {
+    public void inBigStorageTask() {
         S7DataDLPOne s7DataDLPOne = s7SerializerDLPOne.read(S7DataDLPOne.class);
         log.info("杩涚墖浠诲姟寮�濮媨}", s7DataDLPOne);
         Boolean inkageEntity = s7DataDLPOne.getMesControl();
@@ -339,49 +339,56 @@
             log.info("鏈夋鍦ㄦ墽琛岀殑鍑虹墖浠诲姟锛岀粨鏉熸湰娆″嚭鐗囦换鍔�");
             return;
         }
-        //鏄惁鍏佽閽㈠寲
-        //鏄惁鏈夋鍦ㄩ挗鍖栫殑鐜荤拑:閽㈠寲灏忕墖琛ㄥ叧鑱斿巻鍙蹭换鍔¤〃锛岀瓫閫夋湭鍑虹鐨勭幓鐠冧俊鎭�
-//            鑾峰彇褰撳墠閽㈠寲浠诲姟鏈畬鎴愬嚭鐗囩殑鐜荤拑淇℃伅
-
         Integer temperingOutTargetPosition = sysConfigService.queryConfigValue(ConstSysConfig.VERTICAL_TEMPERING_OUT_TARGET_POSITION);
-        List<TemperingGlassInfo> unFinishTemperingGlassInfoList = temperingGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>()
-                .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW).orderByAsc(TemperingGlassInfo::getTemperingLayoutId).orderByAsc(TemperingGlassInfo::getTemperingFeedSequence));
-        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;
-        }
-
-        BigStorageCageDetails details = bigStorageCageDetailsService.getOne(new LambdaQueryWrapper<BigStorageCageDetails>()
-                .eq(BigStorageCageDetails::getSlot, THROUGH_SLOT)
-                .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL).last("limit 1"));
-        if (details != null) {
-            TemperingGlassInfo temperingGlassInfo = new TemperingGlassInfo();
-            BeanUtils.copyProperties(details, temperingGlassInfo);
-            temperingGlassInfo.setState(-1);
-            temperingGlassInfoService.save(temperingGlassInfo);
-            computeOutGlassInfoByVirtualSlot(Arrays.asList(temperingGlassInfo), "big_storage_cage_out_one_task", temperingOutTargetPosition, Const.GLASS_STATE_OUT_ING, Const.BIG_STORAGE_BEFORE_OUT);
-            return;
-        }
-
         if (redisUtil.getCacheObject("temperingSwitch")) {
-            //閽㈠寲浼樺厛锛氳幏鍙栫悊鐗囩  鐜荤拑灏忕墖  鐮存崯琛� 鏁伴噺   鍒ゆ柇绗煎唴鐗堝浘鏄惁鍒伴綈
-            List<TemperingLayoutDTO> temperingLayoutDTOList = bigStorageCageDetailsService.temperingIsAll();
-            if (CollectionUtil.isNotEmpty(temperingLayoutDTOList)) {
-                //鐜荤拑鍒伴綈鍖呮嫭宸插嚭鐗囩殑
-                //鍒伴綈锛屽皢鐜荤拑灏忕墖鏁版嵁瀛樺叆閽㈠寲灏忕墖琛紝閫昏緫鐢熸垚鍑虹墖浠诲姟  缁撴潫
-                for (TemperingLayoutDTO item : temperingLayoutDTOList) {
-//                    if (item.getEngineerId().equals(redisUtil.getCacheObject("temperingengineerId"))) {
+            //鏄惁鍏佽閽㈠寲
+            //鏄惁鏈夋鍦ㄩ挗鍖栫殑鐜荤拑:閽㈠寲灏忕墖琛ㄥ叧鑱斿巻鍙蹭换鍔¤〃锛岀瓫閫夋湭鍑虹鐨勭幓鐠冧俊鎭�
+//            鑾峰彇褰撳墠閽㈠寲浠诲姟鏈畬鎴愬嚭鐗囩殑鐜荤拑淇℃伅
+            List<TemperingGlassInfo> unFinishTemperingGlassInfoList = temperingGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>()
+                    .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW).orderByAsc(TemperingGlassInfo::getTemperingLayoutId).orderByAsc(TemperingGlassInfo::getTemperingFeedSequence));
+            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;
+            }
+
+            BigStorageCageDetails details = bigStorageCageDetailsService.getOne(new LambdaQueryWrapper<BigStorageCageDetails>()
+                    .eq(BigStorageCageDetails::getSlot, THROUGH_SLOT)
+                    .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL).last("limit 1"));
+            if (details != null) {
+                TemperingGlassInfo temperingGlassInfo = new TemperingGlassInfo();
+                BeanUtils.copyProperties(details, temperingGlassInfo);
+                temperingGlassInfo.setState(-1);
+                temperingGlassInfoService.save(temperingGlassInfo);
+                computeOutGlassInfoByVirtualSlot(Arrays.asList(temperingGlassInfo), "big_storage_cage_out_one_task", temperingOutTargetPosition, Const.GLASS_STATE_OUT_ING, Const.BIG_STORAGE_BEFORE_OUT);
+                return;
+            }
+            String temperingEngineerId = redisUtil.getCacheObject("temperingEngineerId");
+            if (StringUtils.isNotBlank(temperingEngineerId)) {
+                TemperingGlassInfo temperingGlassInfo = temperingGlassInfoService.getOne(new LambdaQueryWrapper<TemperingGlassInfo>().eq(TemperingGlassInfo::getEngineerId, temperingEngineerId)
+                        .orderByDesc(TemperingGlassInfo::getTemperingLayoutId).last("limit 1"));
+                int temperingLayoutId = 1;
+                if (temperingGlassInfo != null) {
+                    temperingLayoutId = temperingGlassInfo.getTemperingLayoutId() + 1;
+                }
+                List<GlassInfo> glassInfos = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getEngineerId, temperingEngineerId).eq(GlassInfo::getTemperingLayoutId, temperingLayoutId));
+                if (CollectionUtil.isEmpty(glassInfos)) {
+                    //鎸囧畾閽㈠寲宸ョ▼鎵ц瀹屾垚锛岀Щ闄ゅ伐绋嬪彿
+                    redisUtil.deleteObject("temperingEngineerId");
+                    return;
+                }
+                List<TemperingLayoutDTO> temperingLayoutDTOS = bigStorageCageDetailsService.temperingIsAllByTemperingLayoutId(temperingEngineerId, temperingLayoutId);
+                if (CollectionUtil.isNotEmpty(temperingLayoutDTOS)) {
                     List<TemperingGlassInfo> temperingGlassInfos = glassInfoService.selectJoinList(TemperingGlassInfo.class, JoinWrappers.lambda(GlassInfo.class)
                             .select("-1 as state,t.filmsid as films_id,t.glass_id,t.flow_card_id,t.glass_type,t.width,t.height" +
                                     ",t.thickness,t.ishorizontal,t.tempering_layout_id,t.tempering_feed_sequence,t.x_coordinate,t.y_coordinate," +
                                     "t.angle,t1.slot,t.engineer_id")
                             .innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId)
                             .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
-                            .eq(GlassInfo::getTemperingLayoutId, item.getTemperingLayoutId())
-                            .eq(GlassInfo::getEngineerId, item.getEngineerId())
+                            .eq(GlassInfo::getTemperingLayoutId, temperingLayoutId)
+                            .eq(GlassInfo::getEngineerId, temperingEngineerId)
                             .orderByAsc(GlassInfo::getTemperingFeedSequence));
                     if (CollectionUtil.isNotEmpty(temperingGlassInfos)) {
                         temperingGlassInfoService.saveBatch(temperingGlassInfos);
@@ -390,10 +397,11 @@
                         log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
                         return;
                     }
-//                    }
                 }
             }
+
         }
+
         //鏄惁鏈変汉宸ヤ笅鐗囦换鍔�   鏈夌洿鎺ュ嚭
         Integer artificialOutTargetPosition = sysConfigService.queryConfigValue(ConstSysConfig.VERTICAL_ARTIFICIAL_OUT_TARGET_POSITION);
         Integer outCarMaxSize = sysConfigService.queryConfigValue(ConstSysConfig.VERTICAL_OUT_CAR_SIZE);
@@ -409,6 +417,18 @@
         }
         //鏄惁瀛樺湪闇�瑕佸唴閮ㄨ皟搴︾殑鏍煎瓙:鎵ц鍐呴儴璋冨害浠诲姟
         if (redisUtil.getCacheObject("dispatchSwitch")) {
+            //鑾峰彇杩涚墖鍗忚鍐呭锛屽湪杩涚墖鏈夎姹�/杩涚墖浠诲姟鎵ц涓笉鎵ц璋冨害浠诲姟
+            S7DataDLPOne s7DataDLPOne = s7SerializerDLPOne.read(S7DataDLPOne.class);
+            String requestInEntity = s7DataDLPOne.getRequestMes().toString();
+            if ("1".equals(requestInEntity)) {
+                log.info("褰撳墠鏀跺埌杩涚墖璇锋眰锛岀粨鏉熻皟搴︿换鍔�");
+                return;
+            }
+            String mesReplyInEntity = s7DataDLPOne.getMesReply().toString();
+            if ("1".equals(mesReplyInEntity)) {
+                log.info("鏈夋鍦ㄦ墽琛岀殑杩涚墖浠诲姟锛岀粨鏉熻皟搴︿换鍔�");
+                return;
+            }
             //todo:鑾峰彇绗煎唴鍗曟牸宸茬粡鍒伴綈鐨勭幓鐠冩牸瀛愪俊鎭�
             List<BigStorageRelationDTO> virtualList = bigStorageCageDetailsService.queryIsAllNeedDispatchVirtualSlot();
             if (CollectionUtil.isEmpty(virtualList)) {

--
Gitblit v1.8.0