From 4dc1abb37aec033fdbd09d290c6f62d082ba774a Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期六, 29 十一月 2025 17:07:55 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 hangzhoumesParent/common/servicebase/src/main/resources/mapper/OrderMapper.xml                                                          |   30 ++++++++++
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowBigStorageCageDetailsMapper.java            |    2 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java  |   25 ++++++-
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/dto/InterlayerDTO.java                                          |   24 ++++++++
 UI-Project/src/views/Slicecage/slicecage.vue                                                                                            |   22 +++---
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/config/S7Config.java                                     |    5 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/impl/OrdersServiceImpl.java                                    |    5 +
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java |    4 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java                        |    9 +++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/mapper/OrdersMapper.java                                               |    8 ++
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml                       |   11 +++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/OrdersService.java                                             |    3 +
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowBigStorageCageDetailsService.java          |    3 
 13 files changed, 128 insertions(+), 23 deletions(-)

diff --git a/UI-Project/src/views/Slicecage/slicecage.vue b/UI-Project/src/views/Slicecage/slicecage.vue
index a3dfa97..eac6658 100644
--- a/UI-Project/src/views/Slicecage/slicecage.vue
+++ b/UI-Project/src/views/Slicecage/slicecage.vue
@@ -1616,7 +1616,7 @@
      ></iframe>
   </el-dialog>
 <!-- 閽㈠寲鏌ヨ -->
-<el-dialog v-model="dialogFormVisiblec" top="5vh" width="85%" :title="$t('searchOrder.temperingqueries')">
+<el-dialog v-model="dialogFormVisiblec" top="5vh" width="90%" :title="$t('searchOrder.temperingqueries')">
   <div style="margin-bottom: 20px">
       <el-form>
         <el-row style="margin-top: -15px;margin-bottom: -2px;">
@@ -1656,17 +1656,17 @@
         </el-row>
       </el-form>
     </div>
-    <el-table  ref="table" style="margin-top: 20px;height: 500px;"
+    <el-table  ref="table" style="margin-top: 20px;height: 600px;"
         :data="tableDatagh" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-          <el-table-column prop="engineerId" fixed align="center" :label="$t('searchOrder.projectnumber')" min-width="150"/>
-          <el-table-column prop="engineerName" fixed align="center" :label="$t('large.productname')" min-width="150"/>
-          <el-table-column prop="thickness" align="center" :label="$t('basicData.thickness')" min-width="150" />
-          <el-table-column prop="filmsId" align="center" :label="$t('basicData.coatingtypes')" min-width="150" />
-          <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutnumber')" min-width="120" />
-          <el-table-column prop="totalCount" align="center" :label="$t('searchOrder.allnumber')" min-width="150" />
-          <el-table-column prop="realCount" align="center" :label="$t('searchOrder.numbercages')" min-width="150" />
-          <el-table-column prop="lackCount" align="center" :label="$t('searchOrder.missingquantity')" min-width="150" />
-          <el-table-column prop="damageCount" align="center" :label="$t('searchOrder.breakquantity')" min-width="150" />
+          <el-table-column prop="engineerId" fixed align="center" :label="$t('searchOrder.projectnumber')" min-width="100"/>
+          <el-table-column prop="engineerName" fixed align="center" :label="$t('large.productname')" min-width="120"/>
+          <el-table-column prop="thickness" align="center" :label="$t('basicData.thickness')" min-width="100" />
+          <el-table-column prop="filmsId" align="center" :label="$t('basicData.coatingtypes')" min-width="100" />
+          <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutnumber')" min-width="100" />
+          <el-table-column prop="totalCount" align="center" :label="$t('searchOrder.allnumber')" min-width="100" />
+          <el-table-column prop="realCount" align="center" :label="$t('searchOrder.numbercages')" min-width="100" />
+          <el-table-column prop="lackCount" align="center" :label="$t('searchOrder.missingquantity')" min-width="100" />
+          <el-table-column prop="damageCount" align="center" :label="$t('searchOrder.breakquantity')" min-width="120" />
           <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center" width="500">
             <template #default="scope">
               <el-button type="text" plain @click="brokee(scope.row,1)">{{ $t('searchOrder.specifytempering') }}</el-button>
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/dto/InterlayerDTO.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/dto/InterlayerDTO.java
new file mode 100644
index 0000000..c81e59c
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/dto/InterlayerDTO.java
@@ -0,0 +1,24 @@
+package com.mes.order.entity.dto;
+
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/11/25 8:35
+ * @Description:
+ */
+@Data
+public class InterlayerDTO {
+
+
+    /**
+     * 澶瑰眰绗竴灞�
+     */
+    private Integer prevSort;
+
+
+    /**
+     * 澶瑰眰绗簩灞�
+     */
+    private Integer nextSort;
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/mapper/OrdersMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/mapper/OrdersMapper.java
index 398d6ee..1903a78 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/mapper/OrdersMapper.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/mapper/OrdersMapper.java
@@ -1,6 +1,7 @@
 package com.mes.order.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.mes.order.entity.*;
+import com.mes.order.entity.dto.InterlayerDTO;
 import com.mes.order.entity.dto.OrderDTO;
 
 import java.util.List;
@@ -26,4 +27,11 @@
     OrderDetailsDTO queryProductNameByFlowCardId(String flowCardId);
 
     List<ProcessCardReport> queryLackByERP(String flowCardId);
+
+    /**
+     * 鎸夌収娴佺▼鍗℃煡璇㈡槸鍚﹀す灞傚強灞傚彿
+     * @param flowCardId
+     * @return
+     */
+    List<InterlayerDTO> queryInterlayerByERP(String flowCardId);
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/OrdersService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/OrdersService.java
index 19016a7..5397dbe 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/OrdersService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/OrdersService.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.mes.order.entity.*;
+import com.mes.order.entity.dto.InterlayerDTO;
 import com.mes.order.entity.dto.OrderDTO;
 
 import java.util.List;
@@ -31,4 +32,6 @@
     OrderDetailsDTO queryProductNameByFlowCardId(String flowCardId);
 
     List<ProcessCardReport> queryLackByERP(String flowCardId);
+
+    List<InterlayerDTO> queryInterlayerByERP(String flowCardId);
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/impl/OrdersServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/impl/OrdersServiceImpl.java
index eba9aed..02feeb9 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/impl/OrdersServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/impl/OrdersServiceImpl.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.order.entity.*;
+import com.mes.order.entity.dto.InterlayerDTO;
 import com.mes.order.entity.dto.OrderDTO;
 import com.mes.order.mapper.OrderdetailMapper;
 import com.mes.order.mapper.OrdersMapper;
@@ -78,4 +79,8 @@
     public List<ProcessCardReport> queryLackByERP(String flowCardId) {
         return baseMapper.queryLackByERP(flowCardId);
     }
+    @Override
+    public List<InterlayerDTO> queryInterlayerByERP(String flowCardId) {
+        return baseMapper.queryInterlayerByERP(flowCardId);
+    }
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/OrderMapper.xml b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/OrderMapper.xml
index 26b158e..b2c0fdf 100644
--- a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/OrderMapper.xml
+++ b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/OrderMapper.xml
@@ -152,4 +152,34 @@
           and a.process = "涓┖"
           and (b.quantity - b.termination_quantity) > reporting_work_num
     </select>
+
+
+    <select id="queryInterlayerByERP" resultType="com.mes.order.entity.dto.InterlayerDTO">
+        WITH flow_order AS (
+            SELECT ORDER_ID, ORDER_NUMBER
+            FROM pp.flow_card
+            WHERE process_id = #{flowCardId}
+            ORDER BY  ORDER_NUMBER /* 娣诲姞閫傚綋鐨勬帓搴忓瓧娈碉紝纭繚缁撴灉纭畾鎬� */
+            LIMIT 1
+        ),
+             product_ids AS (
+                 SELECT od.PRODUCT_ID
+                 FROM sd.order_detail od
+                          inner JOIN flow_order fo ON od.ORDER_id = fo.ORDER_ID AND od.ORDER_NUMBER = fo.ORDER_NUMBER
+             ),
+             ranked AS (
+                 SELECT
+                     detail_type,
+                     LAG(glass_sort) OVER (PARTITION BY prod_id ORDER BY sort_num) AS prev_sort,
+                     LEAD(glass_sort) OVER (PARTITION BY prod_id ORDER BY sort_num) AS next_sort
+                 FROM sd.product_detail
+                 WHERE prod_id IN (SELECT PRODUCT_ID FROM product_ids)
+
+             )
+        SELECT
+            prev_sort,
+            next_sort
+        FROM ranked
+        where detail_type = 'Interlayer'
+    </select>
 </mapper>
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/config/S7Config.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/config/S7Config.java
index 987b744..d6ceda1 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/config/S7Config.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/config/S7Config.java
@@ -27,4 +27,9 @@
         return S7Serializer.newInstance(s7PLC);
     }
 
+    @Bean(name = "s7plcWZL")
+    public S7PLC s7plcWZL() {
+        return new S7PLC(EPlcType.S1200, "192.168.20.160");
+    }
+
 }
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 d756bb7..889f2b8 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
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
+import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
 import com.github.yulichang.toolkit.JoinWrappers;
 import com.kangaroohy.milo.model.ReadWriteEntity;
 import com.kangaroohy.milo.service.MiloService;
@@ -87,6 +88,9 @@
     @Autowired
     @Qualifier("s7SerializerDLPTwo")
     private S7Serializer s7SerializerDLPTwo;
+    @Autowired
+    @Qualifier("s7plcWZL")
+    private S7PLC s7plcWZL;
 
     @Resource
     SysConfigService sysConfigService;
@@ -389,6 +393,11 @@
             log.info("褰撳墠鏈敹鍒板嚭鐗囪姹傦紝缁撴潫鍑虹墖浠诲姟");
             return;
         }
+        int outRequest = s7plcWZL.readUInt16("DB51.8");
+        if (outRequest == 0){
+            log.info("褰撳墠鏈敹鍒板崸杞珛鍏佽鍑虹墖璇锋眰锛岀粨鏉熷嚭鐗囦换鍔�");
+            return;
+        }
         //鑾峰彇鍑虹墖浠诲姟琛�
         List<BigStorageCageTask> outTaskList = getOutTaskList(s7DataWLTwo);
         if (CollectionUtil.isNotEmpty(outTaskList)) {
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowBigStorageCageDetailsMapper.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowBigStorageCageDetailsMapper.java
index a4e4668..fd6110c 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowBigStorageCageDetailsMapper.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowBigStorageCageDetailsMapper.java
@@ -30,7 +30,7 @@
 
     List<BigStorageSequenceDTO> queryNeedDispatchSlot(FlowCardVirtualSlotDTO flowCardVirtualSlotDTO);
 
-    List<HollowBigStorageCageDetails> queryOutGlassList(@Param("flowCardId") String flowCardId, @Param("cell") int cell);
+    List<HollowBigStorageCageDetails> queryOutGlassList(@Param("flowCardId") String flowCardId, @Param("cell") int cell, @Param("list") List<Integer> layerList);
 
     List<BigStorageVO> queryHollowbigStorageCageDetail();
 
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowBigStorageCageDetailsService.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowBigStorageCageDetailsService.java
index 7b748bf..22adb53 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowBigStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowBigStorageCageDetailsService.java
@@ -5,7 +5,6 @@
 import com.mes.hollow.entity.HollowBigStorageCageDetails;
 import com.mes.hollow.entity.dto.*;
 import com.mes.hollow.entity.request.HollowBigCageDetailsRequest;
-import com.mes.hollow.entity.vo.HollowAllFlowCardVO;
 import com.mes.hollow.entity.vo.HollowBigCageDetailsVO;
 import com.mes.hollow.entity.vo.HollowBigStorageDetailsQueryVO;
 
@@ -29,7 +28,7 @@
 
     List<BigStorageSequenceDTO> queryNeedDispatchSlot(FlowCardVirtualSlotDTO flowCardVirtualSlotDTO);
 
-    List<HollowBigStorageCageDetails> queryOutGlassList(String flowCardId, int cell);
+    List<HollowBigStorageCageDetails> queryOutGlassList(String flowCardId, int cell, List<Integer> layerList);
 
     Map<Integer, List<BigStorageVO>> queryHollowbigStorageCageDetail();
 
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java
index d4389e8..4c08be8 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java
@@ -70,8 +70,8 @@
     }
 
     @Override
-    public List<HollowBigStorageCageDetails> queryOutGlassList(String flowCardId, int cell) {
-        return baseMapper.queryOutGlassList(flowCardId, cell);
+    public List<HollowBigStorageCageDetails> queryOutGlassList(String flowCardId, int cell, List<Integer> layerList) {
+        return baseMapper.queryOutGlassList(flowCardId, cell, layerList);
     }
 
     @Override
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java
index 3b1bf13..4a80f9e 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java
@@ -30,6 +30,7 @@
 import com.mes.largenscreen.entity.PieChartVO;
 import com.mes.order.entity.HollowOrderDTO;
 import com.mes.order.entity.OrderDetailsDTO;
+import com.mes.order.entity.dto.InterlayerDTO;
 import com.mes.order.service.OrdersService;
 import com.mes.sysconfig.service.SysConfigService;
 import com.mes.tools.DateUtil;
@@ -43,7 +44,6 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.io.*;
@@ -366,9 +366,7 @@
     }
 
     private HollowGlassOutRelationInfo childrenTask(HollowTaskRequest request, int isForce) {
-
         try {
-
             GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getFlowCardId, request.getFlowCardId()).last("limit 1"));
             HollowGlassOutRelationInfo info = new HollowGlassOutRelationInfo();
             if (null == glassInfo) {
@@ -393,9 +391,26 @@
             info.setFormulaId(request.getFormulaId());
             this.save(info);
             // 鏌ヨ鍑洪渶瑕佸嚭鐜荤拑鐨勯槦鍒�
+            List<Integer> layerList = new ArrayList<>();
+            int isPairCount = 0;
+            if (932 == request.getCell()) {
+                List<InterlayerDTO> interlayerList = ordersService.queryInterlayerByERP(request.getFlowCardId());
+                if (CollectionUtil.isNotEmpty(interlayerList)) {
+                    List<Integer> tempList = new ArrayList<>();
+                    for (InterlayerDTO dto : interlayerList) {
+                        tempList.add(dto.getPrevSort());
+                        tempList.add(dto.getNextSort());
+                    }
+                    layerList = tempList.stream().distinct().collect(Collectors.toList());
+                    isPairCount = layerList.size() * request.getTotalPairQuantity();
+                }else{
+                    isPairCount = glassInfo.getTotalLayer() * request.getTotalPairQuantity();
+                }
+            } else {
+                isPairCount = glassInfo.getTotalLayer() * request.getTotalPairQuantity();
+            }
             List<HollowBigStorageCageDetails> hollowBigStorageCageDetailsList = hollowBigStorageCageDetailsService
-                    .queryOutGlassList(request.getFlowCardId(), request.getCell());
-            int isPairCount = glassInfo.getTotalLayer() * request.getTotalPairQuantity();
+                    .queryOutGlassList(request.getFlowCardId(), request.getCell(), layerList);
             List<HollowGlassQueueInfo> hollowQueues = new ArrayList<>();
             Integer carWidth = sysConfigService.queryConfigValue(ConstSysConfig.HOLLOW_CAR_WIDTH);
             Integer glassGap = hollowGlassRelationInfoService.getGlassGapByThickness(hollowBigStorageCageDetailsList.get(0).getThickness());
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml
index ab2c8e4..ce49475 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml
@@ -196,6 +196,13 @@
         on t.flow_card_id = t1.flow_card_id and t.hollow_sequence = t1.hollow_sequence
         where t.state = 100
         and t.flow_card_id = #{flowCardId}
+        <if test="list != null and list.size() > 0">
+            and t.layer in (
+            <foreach collection="list" item="item" separator=",">
+                #{item}
+            </foreach>
+            )
+        </if>
         )
         select *
         from result_detail
@@ -207,8 +214,8 @@
     <select id="queryHollowbigStorageCageDetail" resultType="com.mes.base.entity.vo.BigStorageVO">
         select hbsc.device_id, hbsc.slot, count(hbscd.glass_id) as count
         from hollow_big_storage_cage hbsc
-            left join hollow_big_storage_cage_details hbscd
-        on hbsc.slot = hbscd.slot and hbscd.state in (100, 102, 103, 104)
+                 left join hollow_big_storage_cage_details hbscd
+                           on hbsc.slot = hbscd.slot and hbscd.state in (100, 102, 103, 104)
         group by hbsc.device_id, hbsc.slot
         order by hbsc.device_id, hbsc.slot
     </select>

--
Gitblit v1.8.0