From e08c30f6a36a15be4e019b5e0d631f32f6d06029 Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期一, 24 十一月 2025 14:51:09 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/YiWuProject

---
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/dto/DamageDTO.java                        |   29 ++++
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml |    2 
 hangzhoumesParent/common/servicebase/src/main/resources/mapper/DamageMapper.xml                                    |   48 ++++++++
 UI-Project/src/views/ReportWork/reportWork.vue                                                                     |   22 ++-
 UI-Project/src/views/hollow/hollowequipment.vue                                                                    |    5 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java                       |    3 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java                         |    9 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java                 |    3 
 UI-Project/src/views/hollow/hollowequipmenthree.vue                                                                |    4 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/ProcessCardReport.java                     |   89 ++++++++++++++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java              |   50 +++++--
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java   |   55 ++++++--
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java       |    8 -
 UI-Project/src/views/hollow/hollowequipmenttwo.vue                                                                 |    4 
 14 files changed, 276 insertions(+), 55 deletions(-)

diff --git a/UI-Project/src/views/ReportWork/reportWork.vue b/UI-Project/src/views/ReportWork/reportWork.vue
index 7a6ed85..0842f92 100644
--- a/UI-Project/src/views/ReportWork/reportWork.vue
+++ b/UI-Project/src/views/ReportWork/reportWork.vue
@@ -36,15 +36,15 @@
         <el-table height="700" ref="table" :data="reportData"
           :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
           <el-table-column prop="teamsGroupsName" align="center" :label="$t('reportmanage.reporteam')"
-            min-width="135" />
+            min-width="100" />
           <el-table-column prop="deviceName" align="center" :label="$t('reportmanage.reportingequipment')"
-            min-width="156" />
+            min-width="100" />
           <el-table-column prop="line" align="center" :label="$t('reportmanage.line')" min-width="120" />
-          <el-table-column prop="workingProcedure" align="center" :label="$t('reportmanage.process')" min-width="120" />
-          <el-table-column prop="glassId" align="center" :label="$t('reportmanage.glassID')" min-width="130" />
-          <el-table-column prop="engineerId" align="center" :label="$t('reportmanage.projectnumber')" min-width="120" />
+          <el-table-column prop="workingProcedure" align="center" :label="$t('reportmanage.process')" min-width="100" />
+          <el-table-column prop="glassId" align="center" :label="$t('reportmanage.glassID')" min-width="100" />
+          <el-table-column prop="engineerId" align="center" :label="$t('reportmanage.projectnumber')" min-width="100" />
           <el-table-column prop="temperingLayoutId" align="center" :label="$t('reportmanage.layoutID')"
-            min-width="120" />
+            min-width="100" />
           <el-table-column prop="formattedCreateTime" align="center" :label="$t('reportmanage.productiontime')"
             min-width="230" />
           <el-table-column
@@ -71,10 +71,12 @@
         </el-tag>  
       </template> 
           </el-table-column>
-          <el-table-column prop="processId" align="center" :label="$t('reportmanage.processcards')" min-width="140" />
-          <el-table-column prop="orderNumber" align="center" :label="$t('reportmanage.number')" min-width="120" />
-          <el-table-column prop="technologyNumber" align="center" :label="$t('reportmanage.layer')" min-width="120" />
-          <el-table-column prop="breakageType" align="center" :label="$t('reportmanage.typebreakage')" min-width="180">
+          <el-table-column prop="processId" align="center" :label="$t('reportmanage.processcards')" min-width="100" />
+          <el-table-column prop="orderNumber" align="center" :label="$t('reportmanage.number')" min-width="100" />
+          <el-table-column prop="technologyNumber" align="center" :label="$t('reportmanage.layer')" min-width="50" />
+          <el-table-column prop="width" align="center" :label="$t('processCard.width')" min-width="70" />
+          <el-table-column prop="height" align="center" :label="$t('processCard.height')" min-width="70" />
+          <el-table-column prop="breakageType" align="center" :label="$t('reportmanage.typebreakage')" min-width="100">
             <template #default="{ row }">
               <el-select v-model="row.breakageType" filterable :placeholder="$t('reportmanage.pcausebreakage')" :disabled="selectedType"
                 clearable @input="handleInputChangea($event, row.id)">
diff --git a/UI-Project/src/views/hollow/hollowequipment.vue b/UI-Project/src/views/hollow/hollowequipment.vue
index 98817f1..bac2e30 100644
--- a/UI-Project/src/views/hollow/hollowequipment.vue
+++ b/UI-Project/src/views/hollow/hollowequipment.vue
@@ -1885,7 +1885,9 @@
 const blinde = ref(false)
 const labelPrint = ref(false);
 const handleBinde = (flowCard) => {
-  const summary = flowCard.reduce((map, item) => {
+  const summary = flowCard
+        .filter(item => item.isPair !== 0) 
+        .reduce((map, item) => {
         const key = `${item.hollowSequence}`;
         if (!map[key]) {
           map[key] = {
@@ -1898,6 +1900,7 @@
         return map;
       }, {});
       listFlow.value = Object.values(summary);
+      console.log(listFlow.value)
   blinde.value = true;
   getTags();
   hiprint.init();
diff --git a/UI-Project/src/views/hollow/hollowequipmenthree.vue b/UI-Project/src/views/hollow/hollowequipmenthree.vue
index fd07dd5..e98ff56 100644
--- a/UI-Project/src/views/hollow/hollowequipmenthree.vue
+++ b/UI-Project/src/views/hollow/hollowequipmenthree.vue
@@ -1144,7 +1144,9 @@
 const blinde = ref(false)
 const labelPrint = ref(false);
 const handleBinde = (flowCard) => {
-  const summary = flowCard.reduce((map, item) => {
+  const summary = flowCard
+        .filter(item => item.isPair !== 0) 
+        .reduce((map, item) => {
         const key = `${item.hollowSequence}`;
         if (!map[key]) {
           map[key] = {
diff --git a/UI-Project/src/views/hollow/hollowequipmenttwo.vue b/UI-Project/src/views/hollow/hollowequipmenttwo.vue
index 34a577a..283009d 100644
--- a/UI-Project/src/views/hollow/hollowequipmenttwo.vue
+++ b/UI-Project/src/views/hollow/hollowequipmenttwo.vue
@@ -681,7 +681,9 @@
   blindc.value = true;
 };
 const handleBinde = (flowCard) => {
-  const summary = flowCard.reduce((map, item) => {
+  const summary = flowCard
+        .filter(item => item.isPair !== 0) 
+        .reduce((map, item) => {
         const key = `${item.hollowSequence}`;
         if (!map[key]) {
           map[key] = {
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
index 0a55b53..7fde5fe 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.mes.damage.entity.Damage;
 import com.mes.damage.entity.DamagePrint;
+import com.mes.damage.entity.dto.DamageDTO;
 import com.mes.damage.service.DamageService;
 import com.mes.opctask.entity.LoadGlassDeviceTaskHistory;
 import com.mes.utils.Result;
@@ -34,7 +35,7 @@
 
     @ApiOperation("鎶ュ伐鏁版嵁鏌ヨ")
     @PostMapping("/selectDamage")
-    public Result<Page<Damage>> selectDamage(@RequestBody Map map) {
+    public Result<Page<DamageDTO>> selectDamage(@RequestBody Map map) {
         String startTime = map.get("startTime").toString();
         String endTime = map.get("endTime").toString();
         int type = Integer.parseInt(map.get("type").toString());
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/dto/DamageDTO.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/dto/DamageDTO.java
new file mode 100644
index 0000000..d60dc2d
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/dto/DamageDTO.java
@@ -0,0 +1,29 @@
+package com.mes.damage.entity.dto;
+
+import com.mes.damage.entity.Damage;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author wu
+ * @since 2024-06-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DamageDTO extends Damage {
+
+    /**
+     * 瀹�
+     */
+    private Integer width;
+
+    /**
+     * 瀹�
+     */
+    private Integer height;
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java
index 7c19797..3d06089 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java
@@ -3,6 +3,7 @@
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.damage.entity.Damage;
+import com.mes.damage.entity.dto.DamageDTO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -19,4 +20,12 @@
 public interface DamageMapper extends MPJBaseMapper<Damage> {
 
     List<Damage> queryUnTempByFlowCardId(@Param("flowCardId") String flowCardId);
+
+    List<DamageDTO> selectDamageList(
+            @Param("startTime") String startTime,
+            @Param("endTime") String endTime,
+            @Param("type") int type,
+            @Param("status") int status,
+            @Param("workingProcedure") String workingProcedure
+    );
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
index f46bafc..6644013 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
@@ -4,6 +4,7 @@
 import com.github.yulichang.base.MPJBaseService;
 import com.mes.damage.entity.Damage;
 import com.mes.damage.entity.DamagePrint;
+import com.mes.damage.entity.dto.DamageDTO;
 import com.mes.opctask.entity.LoadGlassDeviceTaskHistory;
 import com.mes.pp.entity.ReportingWork;
 import com.mes.pp.entity.ReportingWorkDetail;
@@ -21,7 +22,7 @@
  */
 public interface DamageService extends MPJBaseService<Damage> {
 
-    Page<Damage> selectDamage(
+    Page<DamageDTO> selectDamage(
             String startTime,
             String endTime,
             int type,
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
index 3996f10..ff53524 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
@@ -3,6 +3,7 @@
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -11,6 +12,7 @@
 import com.mes.common.config.Const;
 import com.mes.damage.entity.Damage;
 import com.mes.damage.entity.DamagePrint;
+import com.mes.damage.entity.dto.DamageDTO;
 import com.mes.damage.mapper.DamageMapper;
 import com.mes.damage.service.DamageService;
 import com.mes.glassinfo.entity.GlassInfo;
@@ -36,6 +38,7 @@
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -67,17 +70,18 @@
 
     /**
      * 鍒嗛〉鏌ヨ鎹熷潖璁板綍
-     * @param startTime 寮�濮嬫椂闂达紙鏍煎紡锛歽yyy-MM-dd HH:mm:ss锛�
-     * @param endTime 缁撴潫鏃堕棿锛堟牸寮忥細yyyy-MM-dd HH:mm:ss锛�
-     * @param type 鎹熷潖绫诲瀷锛�0琛ㄧず鏌ヨ鎵�鏈夌被鍨嬶級
-     * @param status 鐘舵�侊紙0琛ㄧず鏌ヨ鎵�鏈夌姸鎬侊級
+     *
+     * @param startTime        寮�濮嬫椂闂达紙鏍煎紡锛歽yyy-MM-dd HH:mm:ss锛�
+     * @param endTime          缁撴潫鏃堕棿锛堟牸寮忥細yyyy-MM-dd HH:mm:ss锛�
+     * @param type             鎹熷潖绫诲瀷锛�0琛ㄧず鏌ヨ鎵�鏈夌被鍨嬶級
+     * @param status           鐘舵�侊紙0琛ㄧず鏌ヨ鎵�鏈夌姸鎬侊級
      * @param workingProcedure 宸ュ簭锛�"0"琛ㄧず鏌ヨ鎵�鏈夊伐搴忥級
-     * @param pageNum 椤电爜锛堜粠1寮�濮嬶級
-     * @param pageSize 姣忛〉鏉℃暟
+     * @param pageNum          椤电爜锛堜粠1寮�濮嬶級
+     * @param pageSize         姣忛〉鏉℃暟
      * @return 鍒嗛〉鍚庣殑鎹熷潖璁板綍鍒楄〃
      */
     @Override
-    public Page<Damage> selectDamage(
+    public Page<DamageDTO> selectDamage(
             String startTime,
             String endTime,
             int type,
@@ -86,15 +90,27 @@
             int pageNum,  // 鏂板锛氬姩鎬侀〉鐮�
             int pageSize  // 鏂板锛氬姩鎬佹瘡椤垫潯鏁�
     ) {
-        Page<Damage> page = new Page<>(pageNum, pageSize);
-
-        LambdaQueryWrapper<Damage> damageSelectWrapper = new LambdaQueryWrapper<>();
-        damageSelectWrapper.between(Damage::getDamageTime, startTime, endTime)
-                .eq(type != 0, Damage::getType, type)
-                .eq(status != 0, Damage::getStatus, status)
-                .eq(!"0".equals(workingProcedure), Damage::getWorkingProcedure, workingProcedure);
-
-        return this.page(page, damageSelectWrapper);
+        if (workingProcedure == null || workingProcedure.trim().isEmpty() || "0".equals(workingProcedure)) {
+            workingProcedure = null;
+        }
+        Page<DamageDTO> page = new Page<>(pageNum, pageSize);
+        List<DamageDTO> damages = this.baseMapper.selectDamageList(
+                startTime,
+                endTime,
+                type,
+                status,
+                workingProcedure
+        );
+        page.setTotal(damages.size());
+        int startIndex = (int) ((pageNum - 1) * pageSize);
+        int endIndex = Math.min((int) (pageNum * pageSize), damages.size());
+        if (startIndex < endIndex) {
+            List<DamageDTO> pageRecords = damages.subList(startIndex, endIndex);
+            page.setRecords(pageRecords);
+        } else {
+            page.setRecords(Collections.emptyList());
+        }
+        return page;
     }
 
     /**
@@ -432,7 +448,7 @@
     }
 
     @Override
-    public List<Damage> queryUnTempByFlowCardId(String flowCardId){
+    public List<Damage> queryUnTempByFlowCardId(String flowCardId) {
         return baseMapper.queryUnTempByFlowCardId(flowCardId);
     }
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/ProcessCardReport.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/ProcessCardReport.java
new file mode 100644
index 0000000..bcf5441
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/ProcessCardReport.java
@@ -0,0 +1,89 @@
+package com.mes.order.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wu
+ * @since 2024-06-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ProcessCardReport implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * <璁㈠崟琛�>
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 璁㈠崟Id
+     */
+    private String orderId;
+
+    /**
+     * 娴佺▼鍗″彿
+     */
+    private String processId;
+
+    /**
+     * 璁㈠崟搴忓彿
+     */
+    private Integer orderNumber;
+
+    /**
+     * 灞傚彿
+     */
+    private Integer technologyNumber;
+
+    /**
+     * 宸ヨ壓
+     */
+    private String process;
+
+    /**
+     * 绱鎶ュ伐鏁�
+     */
+    private Integer reportWorkNumCount;
+
+    /**
+     * 鎶ュ伐鏁�
+     */
+    private Integer reportWorkNum;
+
+    /**
+     * 鐮存崯鏁伴噺
+     */
+    private Integer brokenNum;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Data createTime;
+
+    /**
+     * 鏈�鍚庝竴娆℃姤宸ユ椂闂�
+     */
+    private Data updateTime;
+
+    /**
+     * 娴佺▼鍗℃暟閲�
+     */
+    private Integer quantity;
+
+    /**
+     * 缂虹墖鏁伴噺
+     */
+    private Integer lackQuantity;
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/DamageMapper.xml b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/DamageMapper.xml
new file mode 100644
index 0000000..223b6c4
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/DamageMapper.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.damage.mapper.DamageMapper">
+
+    <select id="queryUnTempByFlowCardId" resultType="com.mes.damage.entity.Damage">
+        SELECT glass_id,
+               order_number,
+               technology_number,
+               working_procedure
+        FROM (
+                 SELECT glass_id,
+                        order_number,
+                        technology_number,
+                        working_procedure,
+                        ROW_NUMBER() OVER (
+      PARTITION BY glass_id
+      ORDER BY damage_time DESC
+    ) AS rn
+                 FROM damage
+                 WHERE process_id = #{flowCardId}
+                   AND glass_id NOT IN (
+                     SELECT DISTINCT glass_id
+                     FROM damage
+                     WHERE process_id = #{flowCardId}
+                       AND working_procedure = "閽㈠寲"
+                 )
+             ) t
+        WHERE rn = 1;
+    </select>
+    <select id="selectDamageList" resultType="com.mes.damage.entity.dto.DamageDTO">
+        SELECT
+        t.*,t1.width,t1.height
+        FROM
+        damage t left join glass_info t1 on t.glass_id=t1.glass_id
+        <where>
+            damage_time BETWEEN #{startTime} AND #{endTime}
+            <if test="type != null and type != 0">
+                AND t.type = #{type}
+            </if>
+            <if test="status != null and status != 0">
+                AND t.status = #{status}
+            </if>
+            <if test="workingProcedure != null">
+                AND t.working_procedure = #{workingProcedure}
+            </if>
+        </where>
+    </select>
+</mapper>
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 07c694b..442fbb7 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
@@ -3,8 +3,8 @@
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.yulichang.toolkit.JoinWrappers;
 import com.kangaroohy.milo.model.ReadWriteEntity;
@@ -414,6 +414,8 @@
                 LambdaQueryWrapper<BigStorageCage> queryWrapper = new LambdaQueryWrapper<BigStorageCage>()
                         .eq(BigStorageCage::getRemainWidth, slotWidth)
                         .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
+                        .le(BigStorageCage::getMinThickness, info.getThickness())
+                        .ge(BigStorageCage::getMaxThickness, info.getThickness())
                         .orderByAsc(BigStorageCage::getDeviceId).orderByAsc(BigStorageCage::getSlot)
                         .last("limit 1");
 
@@ -478,13 +480,30 @@
 
             String temperingEngineerId = redisUtil.getCacheObject("temperingEngineerId");
             if (StringUtils.isNotBlank(temperingEngineerId)) {
-                TemperingGlassInfo temperingGlassInfo = temperingGlassInfoService.getOne(new QueryWrapper<TemperingGlassInfo>()
-                        .select("Top 1 *")
-                        .eq("engineer_id", temperingEngineerId)
-                        .orderByDesc("tempering_layout_id"));
+                List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.list(
+                        new LambdaQueryWrapper<TemperingGlassInfo>()
+                                .eq(TemperingGlassInfo::getEngineerId, temperingEngineerId)
+                                .orderByAsc(TemperingGlassInfo::getId)
+                );
                 int temperingLayoutId = 1;
-                if (temperingGlassInfo != null) {
-                    temperingLayoutId = temperingGlassInfo.getTemperingLayoutId() + 1;
+                if (CollectionUtils.isEmpty(temperingGlassInfoList)) {
+                    temperingLayoutId = 1;
+                } else {
+                    List<Integer> tempIds = temperingGlassInfoList.stream()
+                            .map(TemperingGlassInfo::getTemperingLayoutId)
+                            .distinct()
+                            .sorted()
+                            .collect(Collectors.toList());
+
+                    int expected = 1;
+                    for (int current : tempIds) {
+                        if (current > expected) {
+                            break; // 鎵惧埌绗竴涓己澶卞�硷紝璺冲嚭寰幆
+                        } else if (current == expected) {
+                            expected++; // 杩炵画鍒欓�掑鏈熸湜鐨勫��
+                        }
+                    }
+                    temperingLayoutId = expected; // 缂哄け鍒欎负expected锛岃繛缁垯涓簃ax+1
                 }
                 List<GlassInfo> glassInfos = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getEngineerId, temperingEngineerId).eq(GlassInfo::getTemperingLayoutId, temperingLayoutId));
                 if (CollectionUtil.isEmpty(glassInfos)) {
@@ -575,6 +594,7 @@
                     .eq(BigStorageCage::getEnableState, Const.SLOT_ON));
             //瀹氫箟10涓牸瀛愪负闃堝��
             if (count <= 10) {
+                log.info("绗煎瓙瓒呰繃闃堝�硷紝鎵ц4鍙风瀛愯皟搴﹂�昏緫");
                 //鑾峰彇搴忓彿涓�1鐨勬牸瀛� 灏嗘牸瀛愬唴鐨勬墍鏈夌幓鐠冮�佸埌瀵瑰簲鐨勭瀛�
                 BigStorageCage bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
                         .eq(BigStorageCage::getRemainWidth, slotWidth)
@@ -582,15 +602,18 @@
                         .in(BigStorageCage::getDeviceId, Arrays.asList(5, 6))
                         .orderByAsc(BigStorageCage::getDeviceId).orderByAsc(BigStorageCage::getSlot)
                         .last("limit 1"));
-
-                list = bigStorageCageDetailsService.queryNeedDispatch();
-                computeOutGlassInfoByVirtualSlot(list, "big_storage_cage_out_one_task",
-                        bigStorageCage.getSlot(), Const.GLASS_STATE_SCHEDULE_ING, Const.BIG_STORAGE_BEFORE_DISPATCH);
-                List<Integer> slotList = new ArrayList<>();
-                slotList.add(bigStorageCage.getSlot());
-                slotList.add(list.get(0).getSlot());
-                updateSlotRemainBySlots(slotList);
-                return;
+                if (null != bigStorageCage) {
+                    list = bigStorageCageDetailsService.queryNeedDispatch();
+                    if (CollectionUtil.isNotEmpty(list)) {
+                        computeOutGlassInfoByVirtualSlot(list, "big_storage_cage_out_one_task",
+                                bigStorageCage.getSlot(), Const.GLASS_STATE_SCHEDULE_ING, Const.BIG_STORAGE_BEFORE_DISPATCH);
+                        List<Integer> slotList = new ArrayList<>();
+                        slotList.add(bigStorageCage.getSlot());
+                        slotList.add(list.get(0).getSlot());
+                        updateSlotRemainBySlots(slotList);
+                        return;
+                    }
+                }
             }
             //鐢熸垚璋冨害浠诲姟鎸夌収缁勫彿缁勫簭鐢�1寮�濮嬩緷娆″線5鍙风瀛愰�佸皬鐗�
             BigStorageSlotDTO slotDTO = bigStorageCageDetailsService.queryNeedDispatchSlotBySequence();
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
index 4c2d064..02a1e8a 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -308,7 +308,7 @@
         FROM big_storage_cage_details
         WHERE STATE = 100
           AND SLOT =
-              (SELECT SLOT FROM big_storage_cage_details WHERE STATE = 100 AND sequence = 1 order by slot desc LIMIT 1)
+              (SELECT SLOT FROM big_storage_cage_details WHERE STATE = 100 AND sequence = 1 AND device_id = 4 order by slot desc LIMIT 1)
         ORDER BY tempering_feed_sequence
     </select>
 
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
index 0fb1f76..3f8fe30 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
@@ -1079,7 +1079,7 @@
     }
 
     private List<HollowGlassQueueInfo> computeOutHollowQueue(List<HollowGlassQueueInfo> queueInfoList, HollowGlassOutRelationInfo hollowGlassOutRelationInfo) {
-        if (CollectionUtil.isNotEmpty(queueInfoList)) {
+        if (CollectionUtil.isEmpty(queueInfoList)) {
             return new ArrayList<>();
         }
         //浠诲姟涓哄己鍒讹紝鍙洿鎺ヨ繑鍥炲師鏈夌殑闃熷垪
@@ -1093,11 +1093,6 @@
         List<HollowGlassQueueInfo> resultQueue = new ArrayList<>();
 
         for (List<HollowGlassQueueInfo> items : gridGroups.values()) {
-            // 鎯呭喌1锛氭牸瀛愬唴鍙湁涓�涓暟鎹笖鏈厤瀵� - 杩囨护鎺�
-            if (items.size() == 1 && 0 == items.get(0).getSlot()) {
-                continue;
-            }
-
             // 鎯呭喌2锛氭牸瀛愬唴鍏ㄩ儴涓烘湭閰嶅鐨勬暟鎹� - 杩囨护鎺�
             boolean allUnpaired = items.stream().noneMatch(e -> e.getIsPair() == 1);
             if (allUnpaired) {
@@ -1106,6 +1101,7 @@
             // 鍚﹀垯淇濈暀杩欎釜鏍煎瓙鍐呯殑鎵�鏈夋暟鎹�
             resultQueue.addAll(items);
         }
+        Collections.sort(resultQueue, Comparator.comparing(HollowGlassQueueInfo::getId));
         return resultQueue;
     }
 

--
Gitblit v1.8.0