ZengTao
2025-01-02 3633e4fac369d00b8da0c2fd4f867df097fa083a
添加取消出片任务
23个文件已修改
644 ■■■■■ 已修改文件
UI-Project/src/views/Slicecage/slicecage.vue 460 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/UnLoadGlass/loadmachinerack.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/JsonFile/PlcCacheVerticalGlass.json 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/CacheGlassModuleApplication.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageOutTaskMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageOutTaskService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageOutTaskServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/tools/service/impl/BigStorageBaseServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/JsonFile/PlcCacheVerticalGlass.json 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageOutTaskMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Slicecage/slicecage.vue
@@ -499,6 +499,30 @@
    console.error('发生错误:', error);  
  }  
}; 
// 取消出片
const cancelOutTask = async () => {
  try {
    const confirmResult = await ElMessageBox.confirm(
      t('searchOrder.specifytemperinga'),
      t('searchOrder.prompt'),
      {
        confirmButtonText: t('searchOrder.yes'),
        cancelButtonText: t('searchOrder.cancel'),
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
      const response = await request.post("/cacheVerticalGlass/bigStorageCageDetails/cancelOutTask");
      if (response.code === 200) {
        ElMessage.success(response.message);
      } else {
        ElMessage.error(response.message);
      }
    }
  } catch (error) {
    console.error('发生错误:', error);
  }
};
 // 指定流程卡
 const brokes = async(row) => {  
  try {
@@ -969,25 +993,36 @@
 
<template>
  <div style="height: 600px;">
    <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="primary" @click="dialogFormVisiblea = true">{{ $t('searchOrder.cageinformation') }}</el-button>
    <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="success" @click="dialogFormVisibleb = true">{{ $t('searchOrder.productionqueue') }}</el-button>
    <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="warning" @click="handleganghua">{{ $t('searchOrder.temperingqueries') }}</el-button>
    <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="info" @click="handlezhiban">{{ $t('searchOrder.dutyinformation') }}</el-button>
    <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="info" @click="dialogFormVisibles=true;fetchFlows()">{{ $t('searchOrder.searchlayout') }}</el-button>
    <el-switch style="margin-top: 5px;margin-left: 10px;" v-model="ganghua" class="mb-2" :inactive-text="$t('searchOrder.temperedswitch')" @change="handleChange" />
    <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="primary"
      @click="dialogFormVisiblea = true">{{ $t('searchOrder.cageinformation') }}</el-button>
    <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="success"
      @click="dialogFormVisibleb = true">{{ $t('searchOrder.productionqueue') }}</el-button>
    <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="warning" @click="handleganghua">{{
      $t('searchOrder.temperingqueries') }}</el-button>
    <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="info" @click="handlezhiban">{{
      $t('searchOrder.dutyinformation') }}</el-button>
    <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="info"
      @click="dialogFormVisibles = true; fetchFlows()">{{ $t('searchOrder.searchlayout') }}</el-button>
    <el-switch style="margin-top: 5px;margin-left: 10px;" v-model="ganghua" class="mb-2"
      :inactive-text="$t('searchOrder.temperedswitch')" @change="handleChange" />
    <el-button style="margin-top: 10px;margin-left: 10px;margin-bottom: 10px;" id="searchButton" type="primary"
      @click="dialogFormVisibleaDownGlasss = true">标签打印
    </el-button>
    <div style="display: flex;">
      <el-card style="flex: 1;margin-left: 10px;margin-top: 5px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 240px;">
        <el-table height="240px" ref="table"
        :data="tableDatac" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="bigStorageCageOutTask.glassId" align="center" :label="$t('searchOrder.outputglassID')" min-width="140" />
          <el-table-column prop="bigStorageCageOutTask.startSlot" align="center" :label="$t('searchOrder.startposition')" min-width="120" />
          <el-table-column prop="bigStorageCageOutTask.endSlot" align="center" :label="$t('searchOrder.targetlocation')" min-width="120" />
          <el-table-column prop="bigStorageCageOutTask.trainNumber" align="center" :label="$t('searchOrder.trips')" min-width="120" />
          <el-table-column prop="bigStorageCageOutTask.serialNumber" align="center" :label="$t('searchOrder.number')" min-width="120" />
          <el-table height="240px" ref="table" :data="tableDatac"
            :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
            <el-table-column prop="bigStorageCageOutTask.glassId" align="center"
              :label="$t('searchOrder.outputglassID')" min-width="140" />
            <el-table-column prop="bigStorageCageOutTask.startSlot" align="center"
              :label="$t('searchOrder.startposition')" min-width="120" />
            <el-table-column prop="bigStorageCageOutTask.endSlot" align="center"
              :label="$t('searchOrder.targetlocation')" min-width="120" />
            <el-table-column prop="bigStorageCageOutTask.trainNumber" align="center" :label="$t('searchOrder.trips')"
              min-width="120" />
            <el-table-column prop="bigStorageCageOutTask.serialNumber" align="center" :label="$t('searchOrder.number')"
              min-width="120" />
          <!-- <el-table-column prop="bigStorageCageOutTask.taskState" align="center" :label="$t('searchOrder.taskstatus')" min-width="157">
          </el-table-column> -->
          <!-- <el-table-column prop="id" align="center" :label="$t('searchOrder.tabid')" min-width="150"/> -->
@@ -1000,8 +1035,10 @@
          <el-table-column prop="width" align="center" :label="$t('searchOrder.width')" min-width="100"/>
          <el-table-column prop="height" align="center" :label="$t('searchOrder.height')" min-width="100"/>
          <el-table-column prop="thickness" align="center" :label="$t('searchOrder.thickness')" min-width="100"/>
          <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutID')" min-width="100"/>
          <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')" min-width="120"/>
            <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutID')"
              min-width="100" />
            <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')"
              min-width="120" />
          <el-table-column prop="gap" align="center" :label="$t('searchOrder.glassgaps')" min-width="100"/>
          <!-- <el-table-column fixed="right" :label="$t('searchOrder.endtask')" align="center" width="150">
            <template #default="scope">
@@ -1013,18 +1050,23 @@
    </el-card>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 3px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 240px;">
        <el-table height="240px" ref="table"
        @selection-change="handleSelectionChange"
        :data="tableDatad" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="bigStorageCageFeedTask.glassId" align="center" :label="$t('searchOrder.intoglassid')" min-width="140" />
          <el-table-column prop="bigStorageCageFeedTask.targetSlot" align="center" :label="$t('searchOrder.targetlocation')" min-width="120" />
          <el-table height="240px" ref="table" @selection-change="handleSelectionChange" :data="tableDatad"
            :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
            <el-table-column prop="bigStorageCageFeedTask.glassId" align="center" :label="$t('searchOrder.intoglassid')"
              min-width="140" />
            <el-table-column prop="bigStorageCageFeedTask.targetSlot" align="center"
              :label="$t('searchOrder.targetlocation')" min-width="120" />
          <!-- <el-table-column prop="task_type" align="center" label="任务类型" min-width="120" />没有返回字段 -->
          <el-table-column prop="bigStorageCageFeedTask.taskState" align="center" :label="$t('searchOrder.taskstatus')" min-width="120">
            <el-table-column prop="bigStorageCageFeedTask.taskState" align="center"
              :label="$t('searchOrder.taskstatus')" min-width="120">
          <template #default="scope">
            <el-tag type="success" >{{ scope.row.bigStorageCageFeedTask.taskState==0? $t('searchOrder.filmenter') : $t('searchOrder.infilm') }}</el-tag>
                <el-tag type="success">{{ scope.row.bigStorageCageFeedTask.taskState == 0 ? $t('searchOrder.filmenter')
                  :
                  $t('searchOrder.infilm') }}</el-tag>
          </template>
          </el-table-column>
          <el-table-column prop="bigStorageCageFeedTask.line" align="center" :label="$t('searchOrder.line')" min-width="120" />
            <el-table-column prop="bigStorageCageFeedTask.line" align="center" :label="$t('searchOrder.line')"
              min-width="120" />
          <!-- <el-table-column prop="id" align="center" :label="$t('searchOrder.tabid')" min-width="150"/>  -->
          <!-- <el-table-column prop="deviceId" align="center" :label="$t('searchOrder.tid')" min-width="100"/> -->
          <!-- <el-table-column prop="slot" align="center" :label="$t('searchOrder.gridnumber')" min-width="100"/> -->
@@ -1035,8 +1077,10 @@
          <el-table-column prop="width" align="center" :label="$t('searchOrder.width')" min-width="100"/>
          <el-table-column prop="height" align="center" :label="$t('searchOrder.height')" min-width="100"/>
          <el-table-column prop="thickness" align="center" :label="$t('searchOrder.thickness')" min-width="100"/>
          <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutID')" min-width="100"/>
          <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')" min-width="120"/>
            <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutID')"
              min-width="100" />
            <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')"
              min-width="120" />
          <el-table-column prop="gap" align="center" :label="$t('searchOrder.glassgaps')" min-width="100"/>
          <!-- <el-table-column fixed="right" :label="$t('searchOrder.endtask')" align="center" width="150">
            <template #default="scope">
@@ -1063,39 +1107,28 @@
<!-- // 父级框 -->
<div class="img-dlpl" >
    <div class="img-car1" :style="'z-index:999;left:270px;top:' + 350*carPosition[0] + 'px;position:absolute;'">
      <div
      v-for="(rect, index) in adjusta"
      :key="rect.id"
      :style="{
        <div v-for="(rect, index) in adjusta" :key="rect.id" :style="{
       width: '30px',
       height: '5px',
       backgroundColor: '#409EFF',
       marginLeft: 5+ `px`,
       top: '10px',
       }"
    >
        }">
    </div>
    </div>
    <div class="img-car4" :style="'z-index:999;left:740px;top:' + 350*carPosition[1] + 'px;position:absolute;'">
      <div
      v-for="(rect, index) in adjust"
      :key="rect.id"
      :style="{
        <div v-for="(rect, index) in adjust" :key="rect.id" :style="{
       width: '30px',
       height: '5px',
       backgroundColor: '#409EFF',
       marginLeft: 5+ `px`,
       top: '10px',
       }"
    >
        }">
    </div>
    </div>
    <div style="position: relative;">
    <div v-show="cell1" style="width: 227px;height: 29px;position: relative;top:50px;left: 495px;">
      <div
      v-for="(rect, index) in adjustedRects"
      :key="rect"
      :style="{
          <div v-for="(rect, index) in adjustedRects" :key="rect" :style="{
        
        // display:'flex',
       position: 'absolute',
@@ -1104,12 +1137,8 @@
       left: '0px',
       top: index*rect.top+`px`,
       height: `${rect.height}px`,
       }"
    >
    <div
      v-for="(rects, index) in rect.bigStorageCageDetails"
      :key="rects"
      :style="{
          }">
            <div v-for="(rects, index) in rect.bigStorageCageDetails" :key="rects" :style="{
        float:'left',
       width: '18px',
       height: `${rect.height}px`,
@@ -1117,16 +1146,12 @@
      // border:'1px solid black',
       top: '0px',
       marginRight: rects.gap/5000*227+'px'
       }"
    >
            }">
      </div>
    </div>
    </div>
 <div v-show="cell2" style="width: 227px;height: 29px;position: relative;top:51px;left: 495px;">
  <div
      v-for="(rect, index) in adjustedRectsa"
      :key="rect.id"
      :style="{
          <div v-for="(rect, index) in adjustedRectsa" :key="rect.id" :style="{
        
        // display:'flex',
       position: 'absolute',
@@ -1135,12 +1160,8 @@
       left: '0px',
       top: index*rect.top+`px`,
       height: `${rect.height}px`,
       }"
    >
    <div
      v-for="(rects, index) in rect.bigStorageCageDetails"
      :key="rects"
      :style="{
          }">
            <div v-for="(rects, index) in rect.bigStorageCageDetails" :key="rects" :style="{
        float:'left',
       width: '18px',
       height: `${rect.height}px`,
@@ -1148,16 +1169,12 @@
      // border:'1px solid black',
       top: '0px',
       marginRight: rects.gap/5000*227+'px'
       }"
    >
            }">
      </div>
    </div>
    </div>
  <div v-show="cell3" style="width: 227px;height: 29px;position: absolute;top:110px;left: 495px;">
    <div
      v-for="(rect, index) in adjustedRectsb"
      :key="rect.id"
      :style="{
          <div v-for="(rect, index) in adjustedRectsb" :key="rect.id" :style="{
        // display:'flex',
       position: 'absolute',
       width: '227px',
@@ -1165,12 +1182,8 @@
       left: '0px',
       top: index*rect.top+`px`,
       height: `${rect.height}px`,
       }"
    >
    <div
      v-for="(rects, index) in rect.bigStorageCageDetails"
      :key="rects"
      :style="{
          }">
            <div v-for="(rects, index) in rect.bigStorageCageDetails" :key="rects" :style="{
        float:'left',
       width: '18px',
       height: `${rect.height}px`,
@@ -1178,16 +1191,12 @@
      // border:'1px solid black',
       top: '0px',
       marginRight: rects.gap/5000*227+'px'
       }"
    >
            }">
      </div>
    </div>
    </div>
  <div v-show="cell4" style="width: 227px;height: 29px;position: absolute;top:140px;left: 495px;">
    <div
      v-for="(rect, index) in adjustedRectsc"
      :key="rect.id"
      :style="{
          <div v-for="(rect, index) in adjustedRectsc" :key="rect.id" :style="{
        
        // display:'flex',
       position: 'absolute',
@@ -1196,12 +1205,8 @@
       left: '0px',
       top: index*rect.top+`px`,
       height: `${rect.height}px`,
       }"
    >
    <div
      v-for="(rects, index) in rect.bigStorageCageDetails"
      :key="rects"
      :style="{
          }">
            <div v-for="(rects, index) in rect.bigStorageCageDetails" :key="rects" :style="{
        float:'left',
       width: '18px',
       height: `${rect.height}px`,
@@ -1209,16 +1214,12 @@
      // border:'1px solid black',
       top: '0px',
       marginRight: rects.gap/5000*227+'px'
       }"
    >
            }">
      </div>
    </div>
    </div>
  <div v-show="cell5" style="width: 227px;height: 29px;position: absolute;top:170px;left: 495px;">
    <div
      v-for="(rect, index) in adjustedRectsd"
      :key="rect.id"
      :style="{
          <div v-for="(rect, index) in adjustedRectsd" :key="rect.id" :style="{
        
        // display:'flex',
       position: 'absolute',
@@ -1227,12 +1228,8 @@
       left: '0px',
       top: index*rect.top+`px`,
       height: `${rect.height}px`,
       }"
    >
    <div
      v-for="(rects, index) in rect.bigStorageCageDetails"
      :key="rects"
      :style="{
          }">
            <div v-for="(rects, index) in rect.bigStorageCageDetails" :key="rects" :style="{
        float:'left',
       width: '18px',
       height: `${rect.height}px`,
@@ -1240,16 +1237,12 @@
      // border:'1px solid black',
       top: '0px',
       marginRight: rects.gap/5000*227+'px'
       }"
    >
            }">
      </div>
    </div>
    </div>
  <div v-show="cell6" style="width: 227px;height: 29px;position: absolute;top:241px;left: 495px;">
    <div
      v-for="(rect, index) in adjustedRectse"
      :key="rect.id"
      :style="{
          <div v-for="(rect, index) in adjustedRectse" :key="rect.id" :style="{
        
        // display:'flex',
       position: 'absolute',
@@ -1258,12 +1251,8 @@
       left: '0px',
       top: index*rect.top+`px`,
       height: `${rect.height}px`,
       }"
    >
    <div
      v-for="(rects, index) in rect.bigStorageCageDetails"
      :key="rects"
      :style="{
          }">
            <div v-for="(rects, index) in rect.bigStorageCageDetails" :key="rects" :style="{
        float:'left',
       width: '18px',
       height: `${rect.height}px`,
@@ -1271,16 +1260,12 @@
      // border:'1px solid black',
       top: '0px',
       marginRight: rects.gap/5000*227+'px'
       }"
    >
            }">
      </div>
    </div>
    </div>
  <div v-show="cell7" style="width: 227px;height: 29px;position: absolute;top:271px;left: 495px;">
    <div
      v-for="(rect, index) in adjustedRectsf"
      :key="rect.id"
      :style="{
          <div v-for="(rect, index) in adjustedRectsf" :key="rect.id" :style="{
        
        // display:'flex',
       position: 'absolute',
@@ -1289,12 +1274,8 @@
       left: '0px',
       top: index*rect.top+`px`,
       height: `${rect.height}px`,
       }"
    >
    <div
      v-for="(rects, index) in rect.bigStorageCageDetails"
      :key="rects"
      :style="{
          }">
            <div v-for="(rects, index) in rect.bigStorageCageDetails" :key="rects" :style="{
        float:'left',
       width: '18px',
       height: `${rect.height}px`,
@@ -1302,16 +1283,12 @@
      // border:'1px solid black',
       top: '0px',
       marginRight: rects.gap/5000*227+'px'
       }"
    >
            }">
      </div>
    </div>
    </div>
  <div v-show="cell8" style="width: 227px;height: 29px;position: absolute;top:301px;left: 495px;">
    <div
      v-for="(rect, index) in adjustedRectsg"
      :key="rect.id"
      :style="{
          <div v-for="(rect, index) in adjustedRectsg" :key="rect.id" :style="{
        
        // display:'flex',
       position: 'absolute',
@@ -1320,12 +1297,8 @@
       left: '0px',
       top: index*rect.top+`px`,
       height: `${rect.height}px`,
       }"
    >
    <div
      v-for="(rects, index) in rect.bigStorageCageDetails"
      :key="rects"
      :style="{
          }">
            <div v-for="(rects, index) in rect.bigStorageCageDetails" :key="rects" :style="{
        float:'left',
       width: '18px',
       height: `${rect.height}px`,
@@ -1333,16 +1306,12 @@
      // border:'1px solid black',
       top: '0px',
       marginRight: rects.gap/5000*227+'px'
       }"
    >
            }">
      </div>
    </div>
    </div>
  <div v-show="cell9" style="width: 227px;height: 29px;position: absolute;top:332px;left: 495px;">
    <div
      v-for="(rect, index) in adjustedRectsh"
      :key="rect.id"
      :style="{
          <div v-for="(rect, index) in adjustedRectsh" :key="rect.id" :style="{
        
        // display:'flex',
       position: 'absolute',
@@ -1351,12 +1320,8 @@
       left: '0px',
       top: index*rect.top+`px`,
       height: `${rect.height}px`,
       }"
    >
    <div
      v-for="(rects, index) in rect.bigStorageCageDetails"
      :key="rects"
      :style="{
          }">
            <div v-for="(rects, index) in rect.bigStorageCageDetails" :key="rects" :style="{
        float:'left',
       width: '18px',
       height: `${rect.height}px`,
@@ -1364,8 +1329,7 @@
      // border:'1px solid black',
       top: '0px',
       marginRight: rects.gap/5000*227+'px'
       }"
    >
            }">
      </div>
    </div>
    </div>
@@ -1398,12 +1362,13 @@
      <div style="margin-top: -20px;margin-bottom: 40px;margin-left: 30px">
          <el-input v-model="glassId"   :placeholder="$t('searchOrder.inputid')" clearable style="width: 200px;">
          </el-input>
          <el-button type="primary" plain style="margin-left: 10px;" @click="searchout">{{ $t('searchOrder.search') }}</el-button>
      <el-button type="primary" plain style="margin-left: 10px;" @click="searchout">{{ $t('searchOrder.search')
        }}</el-button>
    </div>
 
    <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 200px;">
        <el-table height="100%" ref="table"
        :data="tableDataf" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
      <el-table height="100%" ref="table" :data="tableDataf"
        :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
          <el-table-column prop="glassId" align="center" :label="$t('searchOrder.glassID')" min-width="120" />
          <el-table-column prop="sequence" align="center" :label="$t('searchOrder.pieceingrid')" min-width="180" />
          <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="150" />
@@ -1412,17 +1377,11 @@
          <el-table-column prop="height" align="center" :label="$t('searchOrder.height')" min-width="150"/>
          <el-table-column prop="thickness" align="center" :label="$t('searchOrder.thickness')" min-width="150"/>
          <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutID')" min-width="150"/>
          <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')" min-width="150"/>
          <el-table-column
          align="center"
            :label="$t('searchOrder.startstatus')"
            min-width="80"
            prop="state"
          >
        <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')"
          min-width="150" />
        <el-table-column align="center" :label="$t('searchOrder.startstatus')" min-width="80" prop="state">
          <template #default="scope">  
          <el-tag
            :type="scope.row.state === 1 ? 'success' : 'danger'"
          >
            <el-tag :type="scope.row.state === 1 ? 'success' : 'danger'">
          {{ scope.row.state === 1 ? $t('searchOrder.enable') : $t('searchOrder.disable') }}
          </el-tag>  
        </template> 
@@ -1431,32 +1390,21 @@
          <!-- <el-table-column prop="slot" align="center" :label="$t('searchOrder.gridnumber')" min-width="150"/> -->
          <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center" width="150">
            <template #default="scope">
              <el-button size="mini" type="text" plain @click="finisha(scope.row)">{{ $t('searchOrder.sureadd') }}</el-button>
            <el-button size="mini" type="text" plain @click="finisha(scope.row)">{{ $t('searchOrder.sureadd')
              }}</el-button>
            </template>
        </el-table-column>
        </el-table>
      </div>
  </el-dialog>
<el-dialog v-model="dialogFormVisiblea" top="2vh" width="97%" :title="$t('searchOrder.cageinformation')">
    <el-table
          :data="paginatedUsers"
          @row-click="handleRowClick"
          height="700"
          @expand-change="handleExpandChange"
          row-key="id"
          default-expand-all
          :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"
        >
    <el-table :data="paginatedUsers" @row-click="handleRowClick" height="700" @expand-change="handleExpandChange"
      row-key="id" default-expand-all :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
          <el-table-column type="expand">  
            <template #default="props">  
              <div v-if="props.row.bigStorageCageDetails && props.row.bigStorageCageDetails.length">  
                <el-table
                  :data="props.row.bigStorageCageDetails"
                  border
                  style="width: 100%;margin-left: 20px;"
                  row-key="id"
                  :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"
                >
            <el-table :data="props.row.bigStorageCageDetails" border style="width: 100%;margin-left: 20px;" row-key="id"
              :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
          <!-- <el-table-column prop="menuName" label="二级菜单栏" align="center" min-width="140" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"/>   -->
          <el-table-column prop="glassId" :label="$t('searchOrder.glassID')" align="center" min-width="130"/>  
          <!-- <el-table-column prop="sequence" align="center" :label="$t('searchOrder.pieceingrid')" min-width="130" /> -->
@@ -1465,15 +1413,11 @@
          <el-table-column prop="width" align="center" :label="$t('searchOrder.width')" min-width="80" />
          <el-table-column prop="height" align="center" :label="$t('searchOrder.height')" min-width="80" />
          <el-table-column prop="thickness" align="center" :label="$t('searchOrder.thickness')" min-width="80" />
          <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutID')" min-width="100" />
          <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')" min-width="120" />
          <el-table-column
            align="center"
            :label="$t('searchOrder.startstatus')"
            min-width="80"
            prop="state"
          >
              <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutID')"
                min-width="100" />
              <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')"
                min-width="120" />
              <el-table-column align="center" :label="$t('searchOrder.startstatus')" min-width="80" prop="state">
          <template #default="scope">  
        <el-tag :type="getStatusType(scope.row.state)">  
          {{ getStatusText(scope.row.state) }}  
@@ -1483,9 +1427,12 @@
          <el-table-column prop="gap" align="center" :label="$t('searchOrder.glassgaps')" min-width="80" />
           <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center"  min-width="220">
            <template #default="scope">
              <el-button size="mini" type="text" plain @click="broke(scope.row)">{{ $t('searchOrder.breakage') }}</el-button>
              <el-button size="mini" type="text" plain @click="brokec(scope.row)">{{ $t('searchOrder.takeout') }}</el-button>
              <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('searchOrder.delete') }}</el-button>
                  <el-button size="mini" type="text" plain @click="broke(scope.row)">{{ $t('searchOrder.breakage')
                    }}</el-button>
                  <el-button size="mini" type="text" plain @click="brokec(scope.row)">{{ $t('searchOrder.takeout')
                    }}</el-button>
                  <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('searchOrder.delete')
                    }}</el-button>
              <el-button size="mini" type="text" 
              :disabled="!((props.row.bigStorageCageDetails[0].state !== 102 && scope.$index == 0 ) || (props.row.bigStorageCageDetails[(scope.$index - 1)<0?0:scope.$index-1].state==102)&&(scope.row.state!=102))"
               plain @click="outfil(scope.row)">
@@ -1500,17 +1447,9 @@
          <el-table-column prop="id" :label="$t('searchOrder.cagetableID')" align="center" min-width="100"/>  
          <el-table-column prop="deviceId" align="center" :label="$t('searchOrder.cagenumber')" min-width="150" />
          <el-table-column prop="slot" align="center" :label="$t('searchOrder.gridnumber')" min-width="150" />
          <el-table-column
          align="center"
            :label="$t('searchOrder.startstatus')"
            min-width="80"
            prop="enableState"
          >
      <el-table-column align="center" :label="$t('searchOrder.startstatus')" min-width="80" prop="enableState">
          <template #default="scope">  
          <el-tag
            :type="scope.row.enableState === 1 ? 'success' : 'danger'"
            @click="toggleEnableState(scope.row)"
          >
          <el-tag :type="scope.row.enableState === 1 ? 'success' : 'danger'" @click="toggleEnableState(scope.row)">
            {{ scope.row.enableState === 1 ? $t('searchOrder.enable') : $t('searchOrder.disable')}}  
          </el-tag>  
        </template> 
@@ -1519,7 +1458,8 @@
          
       <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center">
            <template #default="scope">
              <el-button size="mini" type="text" plain  @click="handleBindRack(scope.row)">{{ $t('searchOrder.add') }}</el-button>
          <el-button size="mini" type="text" plain @click="handleBindRack(scope.row)">{{ $t('searchOrder.add')
            }}</el-button>
            </template>
        </el-table-column>
        </el-table>
@@ -1528,12 +1468,8 @@
      <!-- 上一页按钮 -->
      <el-button @click="prevPage" :disabled="currentPage === 1">{{ $t('searchOrder.up') }}</el-button>
      <div style="display: inline-block; margin: 0 20px;">  
    <el-button
      v-for="page in totalPages"
      :key="page"
      :class="{ 'is-active': currentPage === page }"
      @click="jumpToPage(page)"
    >
          <el-button v-for="page in totalPages" :key="page" :class="{ 'is-active': currentPage === page }"
            @click="jumpToPage(page)">
      {{ page }}  
    </el-button>  
  </div> 
@@ -1541,7 +1477,8 @@
      <el-button @click="nextPage" :disabled="currentPage >= totalPages">{{ $t('searchOrder.down') }}</el-button>
      
      <!-- 当前页显示的条数 -->
      <span style="margin-left: 10px;">{{ $t('searchOrder.now') }} {{ itemsPerPage }} {{ $t('searchOrder.tit') }}</span>
        <span style="margin-left: 10px;">{{ $t('searchOrder.now') }} {{ itemsPerPage }} {{ $t('searchOrder.tit')
          }}</span>
    </div>
  </div>
  </el-dialog>  
@@ -1553,8 +1490,8 @@
    <el-button style="margin-left: 10px;size: mini;" type="danger">停止</el-button>
    <el-button style="margin-left: 10px;size: mini;" type="primary">添加</el-button>
  </div> -->
    <el-table  ref="table" style="margin-top: 20px;height: 700px;"
        :data="tableDatab" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
    <el-table ref="table" style="margin-top: 20px;height: 700px;" :data="tableDatab"
      :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
          <!-- <el-table-column prop="id" fixed align="center" :label="$t('searchOrder.sheetID')" min-width="150"/>
            -->
          <el-table-column prop="glassId" fixed align="center" :label="$t('searchOrder.glassID')" min-width="150"/>
@@ -1565,12 +1502,7 @@
          <el-table-column prop="height" align="center" :label="$t('searchOrder.height')" min-width="80" />
          <el-table-column prop="thickness" align="center" :label="$t('searchOrder.thickness')" min-width="80" />
          <el-table-column prop="filmsid" align="center" :label="$t('searchOrder.coatingtypes')" min-width="80" />
          <el-table-column
            align="center"
            :label="$t('searchOrder.acceptshorizontal')"
            min-width="150"
            prop="ishorizontal"
          >
      <el-table-column align="center" :label="$t('searchOrder.acceptshorizontal')" min-width="150" prop="ishorizontal">
          <template #default="scope">  
        <el-tag :type="getStatusTypea(scope.row.ishorizontal)">  
          {{ getStatusTexta(scope.row.ishorizontal) }}  
@@ -1578,16 +1510,12 @@
      </template> 
          </el-table-column>
          <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutID')" min-width="120" />
          <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')" min-width="120" />
      <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')"
        min-width="120" />
          <el-table-column prop="xCoordinate" align="center" :label="$t('searchOrder.xcoordinates')" min-width="80" />
          <el-table-column prop="yCoordinate" align="center" :label="$t('searchOrder.ycoordinates')" min-width="80" />
          <el-table-column prop="angle" align="center" :label="$t('searchOrder.rotationangle')" min-width="150" />
          <el-table-column
            align="center"
            :label="$t('searchOrder.state')"
            min-width="80"
            prop="state"
          >
      <el-table-column align="center" :label="$t('searchOrder.state')" min-width="80" prop="state">
          <template #default="scope">  
        <el-tag :type="getStatusTypeb(scope.row.state)">  
          {{ getStatusTextb(scope.row.state) }}  
@@ -1607,21 +1535,21 @@
  <div style="margin-bottom: 20px">
      <el-form>
        <el-row style="margin-top: -15px;margin-bottom: -2px;">
          <el-col :span="5">
          <el-col :span="3">
            <div id="dta" style="font-size: 15px;">
          <el-form-item :label="$t('searchOrder.scheduletime')" style="width: 14vw">
                {{ scheduletime }}
              </el-form-item>
              </div>
          </el-col>
          <el-col :span="4">
          <el-col :span="3">
              <div id="dt" style="font-size: 15px;">
              <el-form-item :label="$t('searchOrder.temperingtotal')"  style="width: 14vw">
                {{ temperingtotal }}
              </el-form-item>
              </div>
          </el-col>
          <el-col :span="5">
          <el-col :span="3">
            <div id="dta" style="font-size: 15px;">
          <el-form-item :label="$t('searchOrder.glasstotal')" style="width: 14vw">
                {{ glasstotal }}
@@ -1647,30 +1575,41 @@
                <el-button size="mini" type="text" plain @click="broked()">{{ $t('searchOrder.undesignate') }}</el-button>
              </div>
          </el-col>
          <el-col :span="3">
            <div id="dt" style="font-size: 15px;">
              <el-button size="mini" type="text" plain @click="cancelOutTask()">{{ $t('取消出片')
                }}</el-button>
            </div>
          </el-col>
        </el-row>
      </el-form>
    </div>
    <el-table  ref="table" style="margin-top: 20px;height: 500px;"
        :data="tableDatagh" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="engineer_id" fixed align="center" :label="$t('searchOrder.projectnumber')" min-width="150"/>
          <el-table-column prop="tempering_layout_id" fixed align="center" :label="$t('searchOrder.layoutnumber')" min-width="120" />
    <el-table ref="table" style="margin-top: 20px;height: 500px;" :data="tableDatagh"
      :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
      <el-table-column prop="engineer_id" fixed align="center" :label="$t('searchOrder.projectnumber')"
        min-width="150" />
      <el-table-column prop="tempering_layout_id" fixed align="center" :label="$t('searchOrder.layoutnumber')"
        min-width="120" />
          <el-table-column prop="count2" align="center" :label="$t('searchOrder.allnumber')" min-width="150" />
          <el-table-column prop="count1" align="center" :label="$t('searchOrder.numbercages')" min-width="150" />
          <el-table-column prop="slots" align="center" :label="$t('searchOrder.numberslots')" min-width="150" />
          <el-table-column prop="count3" align="center" :label="$t('searchOrder.missingquantity')" min-width="150" />
          <el-table-column prop="count4" align="center" :label="$t('searchOrder.breakquantity')" min-width="150" />
          <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center" width="250">
      <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center" width="350">
            <template #default="scope">
              <el-button size="mini" type="text" plain @click="brokee(scope.row,1)">{{ $t('searchOrder.specifytempering') }}</el-button>
              <el-button size="mini" type="text" plain @click="brokee(scope.row,0)">{{ $t('searchOrder.specifyout') }}</el-button>
              <el-button size="mini" type="text" plain @click="brokek(scope.row)">{{ $t('searchOrder.specifyengineerid') }}</el-button>
          <el-button size="mini" type="text" plain @click="brokee(scope.row, 1)">{{ $t('searchOrder.specifytempering')
            }}</el-button>
          <el-button size="mini" type="text" plain @click="brokee(scope.row, 0)">{{ $t('searchOrder.specifyout')
            }}</el-button>
          <el-button size="mini" type="text" plain @click="brokek(scope.row)">{{ $t('searchOrder.specifyengineerid')
            }}</el-button>
            </template>
        </el-table-column>
        </el-table>
</el-dialog>
<el-dialog v-model="dialoglea" top="15vh" width="70%" :title="$t('searchOrder.dutyinformation')">
    <el-table  ref="table" style="margin-top: 20px;height: 300px;"
        :data="tableDatax" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
    <el-table ref="table" style="margin-top: 20px;height: 300px;" :data="tableDatax"
      :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
          <el-table-column prop="line" fixed align="center" :label="$t('searchOrder.line')"/>
          <el-table-column prop="workProcesses" fixed align="center" :label="$t('searchOrder.process')" />
          <el-table-column prop="teamsGroupsName" align="center" :label="$t('searchOrder.team')">
@@ -1694,8 +1633,8 @@
    </template>
</el-dialog>
<el-dialog v-model="dialogFormVisibles" top="5vh" width="85%" :title="$t('searchOrder.temperingqueries')">
    <el-table  ref="table" style="margin-top: 20px;height: 500px;"
        :data="tableDatas" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
    <el-table ref="table" style="margin-top: 20px;height: 500px;" :data="tableDatas"
      :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
          <el-table-column prop="flow_card_id" fixed align="center" :label="$t('searchOrder.processcards')"/>
          <el-table-column prop="layer" align="center" :label="$t('searchOrder.ceng')" />
          <el-table-column prop="count" align="center" :label="$t('searchOrder.numberglasses')" />
@@ -1735,12 +1674,25 @@
  </el-dialog>
</template>
<style scoped>
#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
#dt {
  display: block;
  float: left;
  line-height: 20px;
  margin-left: 100px;
}
#dta {
  display: block;
  float: left;
  line-height: 20px;
  margin-left: 80%;
}
#dialog-footer{
  text-align: center;
  margin-top: -15px;
}
#message{
  text-align: center;
  align-items: center;
@@ -1750,9 +1702,11 @@
   background-color: #337ecc;
   margin-left: 28%;
}
#awatch{
  height: 450px;
}
#occupy {
    height: 100%;
    width: 15%;
@@ -1762,29 +1716,38 @@
    text-align: center;
    padding: 5px;
}
#biao {
    font-size: 12px;
}
#zhi {
    font-size: 18px;
    font-weight: bold;
}
#demo-pagination-block + #demo-pagination-block {
  margin-top: 10px;
}
#demo-pagination-block #demonstration {
  margin-bottom: 16px;
}
::-webkit-scrollbar {
     width: 0 !important;
   }
   ::-webkit-scrollbar {
     width: 0 !important;height: 0;
  width: 0 !important;
  height: 0;
   }
   .img-list{
    
  position:relative;
}
.data-img{
  @apply float-none ;
  
@@ -1795,6 +1758,7 @@
  border-radius: 0.5rem 0.5rem 0px 0px;
 
}
.check-img{
  position: absolute;
  width: 3.3125rem;
@@ -1804,6 +1768,7 @@
  z-index: 10;
  
}
.check-imga{
  position: absolute;
  width: 3.3125rem;
@@ -1813,22 +1778,29 @@
  z-index: 10;
  
}
.vertical {
    width: 45px;
    height: 25px;
    background-color: #409EFF;
    top: 485px; /* 初始位置 */
    left: 899px; /* 水平居中 */
  top: 485px;
  /* 初始位置 */
  left: 899px;
  /* 水平居中 */
    transform: translateX(-50%);
    animation: move-vertical 6s infinite; /* 从上到下动画,持续6秒,无限循环 */
  animation: move-vertical 6s infinite;
  /* 从上到下动画,持续6秒,无限循环 */
}
 
@keyframes move-vertical {
    0% {
        top: 485px; /* 起始位置 */
    top: 485px;
    /* 起始位置 */
    }
    100% {
        top: calc(100% - 210px); /* 从上到下结束位置 */
    top: calc(100% - 210px);
    /* 从上到下结束位置 */
    }
}
 
@@ -1845,6 +1817,7 @@
    overflow: hidden;
    position:relative
}
.img-car1{
  display: flex;
  background-image:url('../../assets/lp9.png');
@@ -1858,6 +1831,7 @@
    overflow: hidden;
    position:relative
}
.img-car4{
  display: flex;
  background-image:url('../../assets/lpa9.png');
UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -451,7 +451,7 @@
                 @click="dialogFormVisibleaDownGlasss = true">{{ $t('reportWork.filming') }}
      </el-button>
      <el-switch style="margin-top: 10px;margin-left: 15px;margin-bottom: 10px;" v-model="autoPrint" class="mb-2"
                 :inactive-text="$t('basicData.printing')" @change="handleChange"/>
                 :inactive-text="$t('basicData.Automaticprintingswitch')" @change="handleChange"/>
      <el-card style="flex: 1;" v-loading="loading">
        <el-card style="flex: 1;margin-left: 4px;margin-top: 1px;" v-loading="loading">
        <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
@@ -611,7 +611,7 @@
      </div>
    </template>
  </el-dialog>
  <el-dialog v-model="dialogFormVisiblea2" top="21vh" width="30%" :title="$t('reportWork.clearglass')">
  <el-dialog v-model="dialogFormVisiblea2" top="21vh" width="30%" :title="$t('reportWork.confirmclear')">
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handleclear">
hangzhoumesParent/JsonFile/PlcCacheVerticalGlass.json
@@ -400,6 +400,20 @@
            "addressLenght": "2",
            "ratio": "1",
            "unit": ""
        },
        {
            "codeId": "D01State",
            "addressIndex": "906",
            "addressLenght": "2",
            "ratio": "1",
            "unit": ""
        },
        {
            "codeId": "D04State",
            "addressIndex": "908",
            "addressLenght": "2",
            "ratio": "1",
            "unit": ""
        }
    ]
hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
@@ -30,7 +30,7 @@
    public List<TemperingGlassInfo> selectWaitingGlass() {
        //获取等待进炉中的玻璃信息
        QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>();
        wrapper.select("Top 1 *").in("state",1,0);
        wrapper.select("Top 1 *").in("state", 1, 0, -1);
        TemperingGlassInfo glass=temperingMapper.selectOne(wrapper);
        if(glass!=null) {
            QueryWrapper<TemperingGlassInfo> glassinfo = new QueryWrapper<>();
@@ -111,8 +111,7 @@
    }
    @Override
    public List<TemperingGlassInfo> selectGlassInfoById(Integer id)
    {
    public List<TemperingGlassInfo> selectGlassInfoById(Integer id) {
        List<TemperingGlassInfo> result=null;
        QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>();
        wrapper.select("Top 1 *").in("state",1,0).eq("temperingLayoutId",id);
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/CacheGlassModuleApplication.java
@@ -18,7 +18,7 @@
@MapperScan("com.mes.*.mapper")
@EnableDiscoveryClient
@EnableSwagger2WebMvc
@EnableScheduling
//@EnableScheduling
public class CacheGlassModuleApplication {
    public static void main(String[] args) {
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
@@ -478,7 +478,7 @@
        BeanUtils.copyProperties(request, damage);
        damage.setType(request.getState());
        damage.setRemark("");
        damage.setStatus(0);
        damage.setStatus(1);
        damageService.insertDamage(damage);
        return "success";
    }
@@ -490,7 +490,7 @@
        BeanUtils.copyProperties(request, damage);
        damage.setType(request.getState());
        damage.setRemark("");
        damage.setStatus(0);
        damage.setStatus(1);
        damageService.insertDamage(damage);
        //修改磨边队列数据状态
        edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>()
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
@@ -160,5 +160,11 @@
        return Result.build(200, "修改成功", bigStorageCageDetailsService.scheduleTime());
    }
    @ApiOperation("取消出片任务")
    @PostMapping("/cancelOutTask")
    public Result cancelOutTask() {
        bigStorageCageDetailsService.cancelOutTask();
        return Result.build(200, "取消成功", 1);
    }
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
@@ -80,4 +80,6 @@
    void appointEngineerId(String engineerId);
    long scheduleTime();
    void cancelOutTask();
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -289,7 +289,7 @@
                .eq(BigStorageCageDetails::getEngineerId, glassInfo.getEngineerId())
                .eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId())
                .gt(BigStorageCage::getRemainWidth, Math.max(glassInfo.getWidth(), glassInfo.getHeight()))
                .lt(BigStorageCage::getSlotHeight, Math.min(glassInfo.getWidth(), glassInfo.getHeight()))
                .gt(BigStorageCage::getSlotHeight, Math.min(glassInfo.getWidth(), glassInfo.getHeight()))
                .in(BigStorageCageDetails::getGlassId, glassIds)
                .last("limit 1");
        if (glassInfo.getTemperingLayoutId() == 0) {
@@ -528,7 +528,29 @@
        }
        long startSlotCount = bigStorageCageOutTasks.stream().map(BigStorageCageOutTask::getStartSlot).distinct().count();
        long endSlotCount = bigStorageCageOutTasks.stream().map(BigStorageCageOutTask::getEndSlot).distinct().count();
        long time = (startSlotCount * 20 + endSlotCount * 20) / 60;
        long time = (startSlotCount * 30 + endSlotCount * 20) / 60;
        return time;
    }
    @Override
    public void cancelOutTask() {
        List<BigStorageCageOutTask> bigStorageCageOutTasks = bigStorageCageOutTaskService.list(
                new LambdaQueryWrapper<BigStorageCageOutTask>()
                        .in(BigStorageCageOutTask::getEndSlot, Const.OUT_TARGET_POSITION_ALL)
                        .eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_NEW)
        );
        List<String> outGlassId = bigStorageCageOutTasks.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList());
        temperingGlassInfoService.remove(
                new LambdaUpdateWrapper<TemperingGlassInfo>()
                        .in(TemperingGlassInfo::getGlassId, outGlassId)
        );
        bigStorageCageDetailsService.update(
                new LambdaUpdateWrapper<BigStorageCageDetails>()
                        .set(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
                        .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING)
                        .in(BigStorageCageDetails::getGlassId, outGlassId)
        );
        bigStorageCageOutTaskService.deleteTask(bigStorageCageOutTasks);
    }
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageOutTaskMapper.java
@@ -19,4 +19,6 @@
public interface BigStorageCageOutTaskMapper extends BaseMapper<BigStorageCageOutTask> {
    boolean saveBatch(@Param(value = "list") List<BigStorageCageOutTask> list);
    void deleteTask(@Param(value = "list") List<BigStorageCageOutTask> outGlassId);
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageOutTaskService.java
@@ -22,4 +22,6 @@
    boolean saveBatch(List<BigStorageCageOutTask> list);
    void deleteOutTask(String glassId);
    void deleteTask(List<BigStorageCageOutTask> outGlassId);
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageOutTaskServiceImpl.java
@@ -92,4 +92,9 @@
        bigStorageCageDetailsMapper.deleteById(bigStorageCageOutTask.getId());
    }
    @Override
    public void deleteTask(List<BigStorageCageOutTask> outGlassId){
        baseMapper.deleteTask(outGlassId);
    }
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -134,6 +134,34 @@
            log.info("两条线卧转立均在执行任务,结束本次扫描进卧转立任务");
            return;
        }
//        if (REQUEST_WORD.equals(d01ToMES)) {
//            List<BigStorageCageFeedTask> bigStorageCageFeedTasks = bigStorageCageFeedTaskService.list(
//                    new LambdaQueryWrapper<BigStorageCageFeedTask>()
//                            .gt(BigStorageCageFeedTask::getTargetSlot, 0)
//                            .eq(BigStorageCageFeedTask::getLine, Const.A09_OUT_TARGET_POSITION)
//                            .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_NEW)
//                            .eq(BigStorageCageFeedTask::getGlassId, d01Id)
//            );
//            if (CollectionUtils.isNotEmpty(bigStorageCageFeedTasks)) {
//                S7object.getinstance().plccontrol.writeWord(mesD01Address, 1);
//            }
//            log.info("{}线再次发送进片启动", Const.A09_OUT_TARGET_POSITION);
//            return;
//        }
//        if (REQUEST_WORD.equals(d04ToMES)) {
//            List<BigStorageCageFeedTask> bigStorageCageFeedTasks = bigStorageCageFeedTaskService.list(
//                    new LambdaQueryWrapper<BigStorageCageFeedTask>()
//                            .gt(BigStorageCageFeedTask::getTargetSlot, 0)
//                            .eq(BigStorageCageFeedTask::getLine, Const.A10_OUT_TARGET_POSITION)
//                            .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_NEW)
//                            .eq(BigStorageCageFeedTask::getGlassId, d01Id)
//            );
//            if (CollectionUtils.isNotEmpty(bigStorageCageFeedTasks)) {
//                S7object.getinstance().plccontrol.writeWord(mesD04Address, 1);
//            }
//            log.info("{}线再次发送进片启动", Const.A10_OUT_TARGET_POSITION);
//            return;
//        }
        //按照线路及玻璃id获取相邻两块玻璃 卧转立上的玻璃:  状态为0不操作(D01送片,0不操作,1允许送片),请求字为1, (02玻璃id为空或者卧转立未启动)
        if (!REQUEST_WORD.equals(mesD01Value) && REQUEST_WORD.equals(d01ToMES) && (StringUtils.isBlank(d02State) || !REQUEST_WORD.equals(d03State))) {
            List<BigStorageCageFeedTask> bigStorageCageFeedTasks = bigStorageCageFeedTaskService.list(
@@ -270,7 +298,8 @@
        //两条先均可执行进片任务,判断两条线是否进片请求是否都为空
        if (StringUtils.isBlank(d01Id) && StringUtils.isBlank(d04Id)) {
            //比较最早一片任务的版图id及版序 求出卧转立的线路
            Integer line = getStartLine();
//            Integer line = getStartLine();
            Integer line = lineList.get(0);
            //计算任务表进片格子 发送进片任务
            computeTargetByLine(line);
            Date endDate = new Date();
@@ -752,7 +781,7 @@
        }
        if (CollectionUtils.isEmpty(glassIds1)) {
            S7object.getinstance().plccontrol.writeWord(mesD03Address, 0);
            log.info("{}线修改玻璃状态为3", Const.A09_OUT_TARGET_POSITION);
            log.info("{}线修改玻璃{}状态为3", Const.A09_OUT_TARGET_POSITION, glassIds1);
            bigStorageCageFeedTaskService.update(
                    new LambdaUpdateWrapper<BigStorageCageFeedTask>()
                            .eq(BigStorageCageFeedTask::getLine, Const.A09_OUT_TARGET_POSITION)
@@ -764,7 +793,7 @@
        }
        if (CollectionUtils.isEmpty(glassIds2)) {
            S7object.getinstance().plccontrol.writeWord(mesD05Address, 0);
            log.info("{}线修改玻璃状态为3", Const.A10_OUT_TARGET_POSITION);
            log.info("{}线修改玻璃{}状态为3", Const.A10_OUT_TARGET_POSITION, glassIds2);
            bigStorageCageFeedTaskService.update(
                    new LambdaUpdateWrapper<BigStorageCageFeedTask>()
                            .eq(BigStorageCageFeedTask::getLine, Const.A10_OUT_TARGET_POSITION)
@@ -1365,7 +1394,7 @@
                .eq(GlassInfo::getEngineerId, glassInfo.getEngineerId())
                .eq(GlassInfo::getMarkIcon, glassInfo.getMarkIcon())
                .notInSql(GlassInfo::getGlassId, "select distinct glass_id from big_storage_cage_details " +
                        "where state!=101 and engineer_id = '" + glassInfo.getEngineerId() + "' and width = " + glassInfo.getWidth() + " and height = " + glassInfo.getHeight())
                        "where engineer_id = '" + glassInfo.getEngineerId() + "' and width = " + glassInfo.getWidth() + " and height = " + glassInfo.getHeight())
                .orderByAsc(GlassInfo::getTemperingLayoutId)
                .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence)
                .last("Limit 1");
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/tools/service/impl/BigStorageBaseServiceImpl.java
@@ -554,7 +554,7 @@
    }
    @Scheduled(fixedDelay = 300)
//    @Scheduled(fixedDelay = 300)
    public void querySizeByEngineerTask() {
        log.info("查询结果:{}", querySizeByEngineer("P24072402", 1, 10, 8));
        log.info("查询结果:{}", querySizeByEngineer("P24072402", 1, 5, 8));
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/JsonFile/PlcCacheVerticalGlass.json
@@ -400,6 +400,20 @@
            "addressLenght": "2",
            "ratio": "1",
            "unit": ""
        },
        {
            "codeId": "D01State",
            "addressIndex": "906",
            "addressLenght": "2",
            "ratio": "1",
            "unit": ""
        },
        {
            "codeId": "D04State",
            "addressIndex": "908",
            "addressLenght": "2",
            "ratio": "1",
            "unit": ""
        }
    ]
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -56,7 +56,7 @@
        GROUP BY ENGINEER_ID,
                 TEMPERING_LAYOUT_ID
        HAVING SLOT_COUNT &gt;= #{count}
        ORDER BY ID DESC
        ORDER BY ID
    </select>
    <select id="queryGlassMaxAndMin" resultMap="slotSequenceDTO">
        SELECT T.*,
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageOutTaskMapper.xml
@@ -13,4 +13,15 @@
            #{item.taskState},0)
        </foreach>
    </insert>
    <delete id="deleteTask">
        delete
        from big_storage_cage_out_task
        where glass_id in
        (
        <foreach collection="list" item="item" separator=",">
            (#{item.glassId})
        </foreach>
        )
    </delete>
</mapper>
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
@@ -284,18 +284,24 @@
    public void ca111() {
//        GlassInfo glassInfo=glassInfoService.getOne(
//                new LambdaQueryWrapper<GlassInfo>()
//                .eq(GlassInfo::getGlassId,"P24121602|1|10")
//                .eq(GlassInfo::getGlassId,"P24122901|38|9")
//        );
//        bigStorageCageDetailsService.queryTargetSlotByTempering(glassInfo);
        List<BigStorageCageDetails> bigStorageCageDetailsList = bigStorageCageDetailsService.list(
                new LambdaQueryWrapper<BigStorageCageDetails>()
                        .eq(BigStorageCageDetails::getState, 100)
                        .in(BigStorageCageDetails::getGlassId, "P24122201|1|1", "P24122201|2|3")
        );
        List<BigStorageCageDetails> overSizeGlass = bigStorageCageDetailsList.stream().filter(
                t -> Math.min(t.getWidth(), t.getHeight()) > 2500
        ).collect(Collectors.toList());
        log.info("sadfd" + overSizeGlass);
//        List<BigStorageCageDetails> bigStorageCageDetailsList = bigStorageCageDetailsService.list(
//                new LambdaQueryWrapper<BigStorageCageDetails>()
//                        .eq(BigStorageCageDetails::getState, 100)
//                        .in(BigStorageCageDetails::getGlassId, "P24122201|1|1", "P24122201|2|3")
//        );
//        List<BigStorageCageDetails> overSizeGlass = bigStorageCageDetailsList.stream().filter(
//                t -> Math.min(t.getWidth(), t.getHeight()) > 2500
//        ).collect(Collectors.toList());
//        log.info("sadfd" + overSizeGlass);
//        List<String> glasss=new ArrayList<>();
//        glasss.add("P24122901|38|5");
//        glasss.add("P24122901|38|7");
//        glasss.add("P24122901|26|5");
//        plcStorageCageTask.computeTargetByLineCar(2001,glasss);
//        bigStorageCageDetailsService.cancelOutTask();
//        bigStorageCageDetailsService.queryTargetSlotByTempering(glassInfo);
//        List<String> glassIdsCar=new ArrayList<>();
//        glassIdsCar.add("P24120801|4|3");
@@ -311,7 +317,7 @@
//        }
//        plcStorageCageTask.queryAndChangeGlass("P24111102|1|6");
//        bigStorageCageDetailsService.selectFeedTask();
//        plcStorageCageTask.computeSlot("P24121401|1|6");
        plcStorageCageTask.computeSlot("P24122901|21|2");
//        plcStorageCageTask.computeSlot("P24121401|1|4");
//        List<TemperingLayoutDTO> temperingOccupySlotList = bigStorageCageDetailsService.queryTemperingOccupySlot();
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
@@ -2,15 +2,20 @@
  port: 8084
spring:
  profiles:
    active: cz
    active: dev
  application:
    name: temperingGlass
  liquibase:
    enabled: true
    enabled: false
  task:
    scheduling:
      pool:
        size: 10
      thread-name-prefix: task-tempering
mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#  configuration:
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mes:
  width: 2800
  height: 5000
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
@@ -214,7 +214,7 @@
        BeanUtils.copyProperties(cacheWornRequest, damage);
        damage.setType(cacheWornRequest.getState());
        damage.setRemark("");
        damage.setStatus(0);
        damage.setStatus(1);
        damageService.insertDamage(damage);
        downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>()
                .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT)
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
@@ -171,7 +171,7 @@
                damage.setLine(Const.TEMPERING_OUT_TARGET_POSITION);
                damage.setWorkingProcedure("下片");
                damage.setRemark("下片");
                damage.setStatus(0);
                damage.setStatus(1);
                damage.setType(e.getTaskStatus());
                return damage;
            }).collect(Collectors.toList());
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
@@ -167,6 +167,7 @@
                new QueryWrapper<DownGlassTask>()
                        .select("Top 1 *")
                        .eq("end_cell", Const.G13_WORK_STATION)
                        .eq("task_type", 3)
                        .lt("task_status", Const.UNLOAD_GLASS_DOWN)
                        .orderByAsc("id")
        );