ZengTao
2025-02-21 8190ef14609e5b1298a1065ff8b07ae09664fa87
Merge branch 'master' of http://10.153.19.25:10105/r/YiWuProject

# Conflicts:
# hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/controller/RawGlassStorageDetailsController.java
25个文件已修改
2个文件已添加
1114 ■■■■■ 已修改文件
UI-Project/src/assets/C1.png 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/assets/ypcaac.png 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/assets/ypcc.png 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Caching/cachingbefore.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Caching/cachingun.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/GlassStorage/rawfilmstorage.vue 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Identify/identifwu.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Identify/identifwutwo.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Identify/identify.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/PurchaseReturn/purchaseReturn.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Returns/upreturns.vue 211 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Returns/upreturns2.vue 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Slicecage/slicecage.vue 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/hollow/hollowequipment.vue 352 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/hollow/hollowequipmenttwo.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/EngineeringService.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/entity/request/RawGlassRequest.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/service/impl/EdgStorageDeviceTaskHistoryServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/controller/RawGlassStorageDetailsController.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/controller/HollowBigStorageCageDetailsController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowBigStorageCageDetailsService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/assets/C1.png
UI-Project/src/assets/ypcaac.png
UI-Project/src/assets/ypcc.png

UI-Project/src/views/Caching/cachingbefore.vue
@@ -187,9 +187,7 @@
      } 
    ); 
    if (confirmResult === 'confirm') {
      const response = await request.post("/cacheGlass/edgStorageCageDetails/removeEdgDetails",{
        glassId: row.glassId
      })
      const response = await request.post("/cacheGlass/edgStorageCageDetails/removeEdgDetails?glassId="+encodeURIComponent(row.glassId))
    if (response.code === 200) {
     ElMessage.success(response.message);
      } else {
UI-Project/src/views/Caching/cachingun.vue
@@ -186,9 +186,7 @@
      } 
    ); 
    if (confirmResult === 'confirm') {
      const response = await request.post("/cacheGlass/edgStorageCageDetails/removeEdgDetails",{
        glassId: row.glassId
      })
      const response = await request.post("/cacheGlass/edgStorageCageDetails/removeEdgDetails?glassId="+encodeURIComponent(row.glassId))
    if (response.code === 200) {
     ElMessage.success(response.message);
      } else {
UI-Project/src/views/GlassStorage/rawfilmstorage.vue
@@ -76,7 +76,8 @@
  }
};
const handleEdit = (row) => {
  window.localStorage.setItem('slotId', row.slot)
  window.localStorage.setItem('deviceId', row.deviceId)
  window.localStorage.setItem('slot', row.slot)
  Edit.value = true;
};
const handleBinda = (row) => {
@@ -256,10 +257,12 @@
};
// 修改数量
const Editclick = async () => {
  let slotId = window.localStorage.getItem('slotId')
  let slot = window.localStorage.getItem('slot')
  let deviceId = window.localStorage.getItem('deviceId')
  try {
    const response = await request.post('/glassStorage/rawGlassStorageDetails/updateQuantity', {
      slotId: slotId,
      deviceId: deviceId,
      slot: slot,
      remainQuantity: remainQuantity.value,
      filmsId: filmsId.value,
      patternThickness: patternThickness.value,
@@ -407,9 +410,9 @@
        </el-table>
      </div>
    </el-card>
    <div class="awatch">
      <img src="../../assets/ypcc.png" alt=""
           style="width: 100%;height: 120%;margin-left: -10px;position: relative;margin-top: -20px;">
    <div class="img-dlpl">
    <div class="img-car1" :style="'z-index:999;top:20px;left:' + 330 + 'px;position:absolute;'">
    </div>
    </div>
    <el-dialog v-model="dialogFormVisiblea" top="5vh" width="85%" >
    <el-table  ref="table" style="margin-top: 20px;height: 700px;"
@@ -633,4 +636,30 @@
  text-align: center;
  margin-top: -15px;
}
.img-dlpl{
  margin-left: 330px;
  margin-top: 10px;
  background-image:url('../../assets/ypcc.png');
  background-repeat: no-repeat;
  background-attachment: local;
  min-height: 700px;
  width: 800px;
  max-width: 100%;
  background-size: 800px 700px;
  overflow: hidden;
  position:relative
}
.img-car1{
  display: flex;
  background-image:url('../../assets/C1.png');
  position: absolute;
  background-repeat: no-repeat;
  background-attachment: local;
  min-height: 200px;
  width: 200px;
  max-width: 100%;
  background-size: 200px 70px;
  overflow: hidden;
  position:relative
}
</style>
UI-Project/src/views/Identify/identifwu.vue
@@ -141,7 +141,7 @@
          if (existingRect) {
            return {
              ...existingRect,
              xAxisa: (6000 - (rect.xAxis + rect.width)) * scaleFactor * 1.1,
              xAxisa: (6000 - (rect.xAxis + rect.edgWidth)) * scaleFactor * 1.1,
              yAxisa: rect.yAxis * scaleFactory * 1.1,
              width: rect.edgWidth * scaleFactor * 1.1,
              height: rect.edgHeight * scaleFactory * 1.1,
@@ -154,7 +154,7 @@
            // 如果不存在,则添加新矩形,默认 isActive 为 false
            return {
              ...rect,
              xAxisa: (6000 - (rect.xAxis + rect.width)) * scaleFactor * 1.1,
              xAxisa: (6000 - (rect.xAxis + rect.edgWidth)) * scaleFactor * 1.1,
              yAxisa: rect.yAxis * scaleFactory * 1.1,
              width: rect.edgWidth * scaleFactor * 1.1,
              height: rect.edgHeight * scaleFactory * 1.1,
UI-Project/src/views/Identify/identifwutwo.vue
@@ -59,7 +59,7 @@
          if (existingRect) {
            return {
              ...existingRect,
              xAxisa: (6000 - (rect.xAxis + rect.width)) * scaleFactor * 1.1,
              xAxisa: (6000 - (rect.xAxis + rect.edgWidth)) * scaleFactor * 1.1,
              yAxisa: rect.yAxis * scaleFactory * 1.1,
              width: rect.edgWidth * scaleFactor * 1.1,
              height: rect.edgHeight * scaleFactory * 1.1,
@@ -72,7 +72,7 @@
            // 如果不存在,则添加新矩形,默认 isActive 为 false
            return {
              ...rect,
              xAxisa: (6000 - (rect.xAxis + rect.width)) * scaleFactor * 1.1,
              xAxisa: (6000 - (rect.xAxis + rect.edgWidth)) * scaleFactor * 1.1,
              yAxisa: rect.yAxis * scaleFactory * 1.1,
              width: rect.edgWidth * scaleFactor * 1.1,
              height: rect.edgHeight * scaleFactory * 1.1,
UI-Project/src/views/Identify/identify.vue
@@ -159,7 +159,7 @@
      totalPages.value = response.data.totalPatternSequence;
      const scaleFactor =  1621.78/6000; 
      const scaleFactory =  750/3300; 
      adjustedRects.value = rawRects.map(rect => ({
      adjustedRects.value = rawRects.map(rect => ({
        ...rect,
        xaxisa: (6000 -(rect.xaxis + rect.edgWidth)) * scaleFactor * 1.1,
        yaxisa: rect.yaxis * scaleFactory * 1.1,
UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -896,8 +896,8 @@
      :style="{ position: 'absolute', 
       top: `${rect.y}px`, 
       left: `${rect.x}px`,
        width: `${rect.widtha}px`,
        height: `${rect.heighta}px`,
        width: `${rect.width}px`,
        height: `${rect.height}px`,
        backgroundColor: rect.isActive ? '#ADFF2F' : getRectColor1(rect.state) }">
     <div  class="centered-text">
    <div style="font-size: 15px;font-weight: bold;">{{ rect.glassId }}</div>  
@@ -924,8 +924,8 @@
      :style="{ position: 'absolute', 
       top: `${rect.y}px`, 
       left: `${rect.x}px`, 
       width: `${rect.widtha}px`,
       height: `${rect.heighta}px`,
       width: `${rect.width}px`,
       height: `${rect.height}px`,
        backgroundColor: rect.isActive ? '#ADFF2F' : getRectColor2(rect.state) }">
     <div  class="centered-text">
    <div style="font-size: 15px;font-weight: bold;">{{ rect.glassId }}</div>  
@@ -962,7 +962,7 @@
      @click="showDialoga(rect)"  
      class="rect"  
      :style="{ position: 'absolute',  top: `${rect.y}px`, left: `${rect.x}px`,
       width: `${rect.widtha}px`, height: `${rect.heighta}px`,
       width: `${rect.width}px`, height: `${rect.height}px`,
      backgroundColor: rect.isActive ? '#ADFF2F' : getRectColora(rect.state) }">
    <div  class="centered-text">
    <div style="font-size: 15px;font-weight: bold;">{{ rect.glassId }}</div>  
@@ -989,7 +989,7 @@
      @click="showDialogb(rect)"  
      class="rect"  
      :style="{ position: 'absolute',  top: `${rect.y}px`, left: `${rect.x}px`,
       width: `${rect.widtha}px`, height: `${rect.heighta}px`,
       width: `${rect.width}px`, height: `${rect.height}px`,
      backgroundColor: rect.isActive ? '#ADFF2F' : getRectColorb(rect.state) }">
       <!-- backgroundColor: rect.state === 4 ? '#911005' : '#f8e3c5' }"> -->
     <div  class="centered-text">
UI-Project/src/views/Returns/upreturns.vue
@@ -17,6 +17,7 @@
const blinda = ref(false)
const blindb = ref(false)
const dialoglea = ref(false)
const ReportData = ref(true);
const canSelectProjecta = ref(true);
const canSelectProjectb = ref(true);
const canSelectProjectc = ref(false);
@@ -27,24 +28,18 @@
const tableDataa = ref<any[]>([]);
const tableDatab = ref<any[]>([]);
const tableData = ref([])
const filteredData = computed(() => {
  // applyFilters 函数应该在某处定义,用于根据当前筛选条件过滤数据
  return applyFilters(tableData, currentFilters);
});
// 当前筛选条件,应该是一个响应式变量,用于存储用户选择的筛选值
const currentFilters = ref<{ state?: string }>({});
const filterTag = (value: string, row: any) => {
  return row.state === value
};
// 应用筛选条件的函数
const applyFilters = (data: any[], filters: { state?: string }) => {
  return data.filter(row => {
    return (!filters.state || String(row.state) === filters.state);
  });
};
const titleSelectJson = ref({
  engineerId: [],
})
request.post("/loadGlass/up-patten-usage/setUpPattenRequest",{
  state: null,
  stationCell: 5
}).then((response) => {
          if (response.code == 200) {
          } else {
          ElMessage.warning(response.msg)
          }
          });
const handlezhiban = () => {
  dialoglea.value = true;
  fetchFlowCardId();
@@ -103,10 +98,6 @@
onBeforeUnmount(() => {
  closeWebSocket();
});
// 结束工程
const handledelete = (row) => {
  blindb.value = true;
};
const requestData = {
  state: 100
};
@@ -144,6 +135,7 @@
      filmRemove.value = '';
      markingMachineStatus.value = '#911005';
      cuttingMachineStatus.value = '#911005';
      ReportData.value = false;
    } else {
      ElMessage.error(response.message);
    }
@@ -151,36 +143,7 @@
    console.error(error);
  }
}
// 结束工程
const deleteTask = async () => {
  try {
    let engineeringId = window.localStorage.getItem('engineeringIda')
    if (engineeringId !== '') {
      const response = await request.post('/loadGlass/engineering/engineering/deleteTask', {
        engineerId: engineeringId,
      })
      if (response.code == 200) {
        ElMessage.success(response.message);
        tableDatad.value = response.data;
        canSelectProjecta.value = true;
        canSelectProjectb.value = true;
        canSelectProjectc.value = false;
        blindb.value = false;
      } else {
        ElMessage.error(response.message);
    }
  }
    else  {
      ElMessage({
        type: 'info',
        message: t('basicData.infonull'),
      })
    }
}
catch (error) {
    console.error(error);
  }
}
// 开始上片
const handleon = async () => {
  let filmRemove = window.localStorage.getItem('filmRemove')
@@ -200,7 +163,8 @@
        canSelectProjectc.value = true;
        socket = initializeWebSocket(socketUrl, handleMessage);
        blind.value = false;
      } else {
        ReportData.value = true;
    } else {
        ElMessage.error(response.message);
      }
    } catch (error) {
@@ -314,7 +278,7 @@
      } 
    );
    if (confirmResult === 'confirm') {
     const response = await request.post('/loadGlass/engineering/engineering/insetDamage', {
     const response = await request.post('/loadGlass/engineering/engineering/identControls', {
       glassId: row.glassId,
       line: 5,
       status: 1,
@@ -344,7 +308,7 @@
      } 
    );
    if (confirmResult === 'confirm') {
      const response = await request.post('/loadGlass/engineering/engineering/insetDamage', {
      const response = await request.post('/loadGlass/engineering/engineering/identControls', {
       glassId: row.glassId,
       line: 5,
       status: 1,
@@ -361,31 +325,74 @@
    console.error('发生错误:', error);  
  }  
}; 
// 架子复位
const handleptask = async() => {
  try {
    const confirmResult = await ElMessageBox.confirm(
      t('basicData.prackreset'),
      t('workOrder.prompt'),
      {
        confirmButtonText: t('workOrder.yes'),
const handleptask = async (workstationId: number) => {
      console.log(workstationId);
      try {
    const confirmResult = await ElMessageBox.confirm(
      t('basicData.prackreset'),
      t('workOrder.prompt'),
      {
        confirmButtonText: t('workOrder.yes'),
        cancelButtonText: t('workOrder.cancel'),
        type: 'warning',
      }
        type: 'warning',
      }
    );
 if (confirmResult === 'confirm') {
  var url="/loadGlass/rawGlassStorageDetails/shelfReset?slot="+ 1;
      const response = await request.post(url)
    if (response.code === 200) {
      ElMessage.success(response.message);
    if (confirmResult === 'confirm') {
      const slot = workstationId === 1 ? 101 : (workstationId === 2 ? 102 : null);
      if (slot !== null) {
        const response = await request.post('/glassStorage/rawGlassStorageDetails/shelfReset', {
          slot: slot,
    })
        // const url = `/loadGlass/rawGlassStorageDetails/shelfReset?slot=${slot}`;
        // const response = await request.post(url);
        if (response.code === 200) {
          ElMessage.success(response.message);
        } else {
          ElMessage.error(response.message);
        }
      } else {
      ElMessage.error(response.msg);
      }
    }
  } catch (error) {
    console.error('发生错误:', error);
  }
};
      }
    }
  } catch (error) {
  }
};
// 结束工程
const deleteTask = async () => {
      try {
    const confirmResult = await ElMessageBox.confirm(
      t('searchOrder.pdeleteTask'),
      t('workOrder.prompt'),
      {
        confirmButtonText: t('workOrder.yes'),
        cancelButtonText: t('workOrder.cancel'),
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
    let engineeringId = window.localStorage.getItem('engineeringIda')
    if (engineeringId !== '') {
      const response = await request.post('/loadGlass/engineering/engineering/deleteTask', {
        engineerId: engineeringId,
      })
      if (response.code == 200) {
        ElMessage.success(response.message);
        canSelectProjecta.value = true;
        canSelectProjectb.value = true;
        canSelectProjectc.value = false;
        blindb.value = true;
        tableDatad.value = response.data;
      } else {
          ElMessage.error(response.message);
        }
      } else {
      }
    }
  } catch (error) {
  }
};
function getStatusType2(filmRemove) {
  switch (filmRemove) {
    case 0:
@@ -429,8 +436,20 @@
    <el-button :disabled="!canSelectProjecta" style="margin-top: 5px;margin-left: 15px;"  type="primary" @click="selectproject">{{ $t('Mounting.previewproject') }}</el-button>
    <el-button :disabled="!canSelectProjectb" style="margin-top: 5px;margin-left: 20px;" type="success" @click="handleBind">{{ $t('basicData.startloading') }}</el-button>
    <el-button :disabled="!canSelectProjectc" style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="warning" @click="handleBinda">{{ $t('basicData.stop') }}</el-button>
    <el-button :disabled="!canSelectProjectc" style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="danger" @click="handledelete">{{ $t('searchOrder.deleteTask') }}</el-button>
    <el-button :disabled="!canSelectProjectc" style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="danger" @click="deleteTask">{{ $t('searchOrder.deleteTask') }}</el-button>
    <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="info" @click="handlezhiban">{{ $t('searchOrder.dutyinformation') }}</el-button>
    <el-select disabled v-model="selectValuesa[1]" clearable :placeholder="$t('Mounting.oneloadingline')"
               style="margin-top: 5px;margin-left: 20px;">
      <el-option :label="$t('Mounting.all')" value="0"></el-option>
      <el-option :label="$t('Mounting.oneloadingline')" value="1"></el-option>
      <el-option :label="$t('Mounting.twoloadingline')" value="2"></el-option>
    </el-select>
    <el-select v-model="selectValuesa[0]" clearable :placeholder="$t('film.taskstatus')" style="margin-top: 5px;margin-left: 20px;" >
      <el-option :label="$t('Mounting.all')" value="null"></el-option>
      <el-option :label="$t('Mounting.waiting')" value="0"></el-option>
      <el-option :label="$t('Mounting.pass')" value="100"></el-option>
    </el-select>
    <el-button :disabled="!ReportData" type="primary" style="margin-left: 10px;" @click="selectReportData()">{{ $t('Mounting.setparameters') }}</el-button>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
        <el-table
@@ -444,34 +463,23 @@
          <el-table-column prop="height" :label="$t('Mounting.height')" align="center"/>
          <el-table-column prop="thickness" :label="$t('Mounting.thickness')" align="center"/>
          <el-table-column prop="filmsId" :label="$t('Mounting.loadinglinea')" align="center"/>
          <el-table-column :label="$t('Mounting.projectnumber')" align="center">
            <template #default="{ row }">
              <span>{{ 1 }}</span>
            </template>
          </el-table-column>
      <el-table-column
      align="center"
      prop="state"
      :label="$t('Mounting.state')"
      min-width="80"
      :filters="[
        { text: t('Mounting.pass'), value: 100 },
        { text: t('Mounting.waiting'), value: 0 },
      ]"
      :filter-method="filterTag"
      filter-placement="bottom-end"
    >
      <template #default="scope">
        <el-tag
          <el-table-column prop="layoutSequence" :label="$t('Mounting.projectnumber')" align="center"/>
          <el-table-column
              align="center"
              :label="$t('Mounting.state')"
            min-width="80"
            prop="state"
          >
          <template #default="scope">
            <el-tag
                :type="scope.row.state === 100 ? 'success' : 'warning'"
                @click="toggleEnableState(scope.row)"
                disable-transitions
            >
              {{ scope.row.state === 100 ? $t('Mounting.pass') : $t('Mounting.waiting') }}
            </el-tag>
      </template>
    </el-table-column>
        </el-table>
          </template>
      </el-table-column>
    </el-table>
      </div>
    </el-card>
    <div style="display: flex;">
@@ -479,16 +487,16 @@
        <div style="display: flex;">
          <img src="../../assets/shangpianji.png" alt=""
               style="max-width: 20%;max-height: 25%;margin-left: 10%;margin-top: 5%;">
          <el-table :data="tableDataa" border style="width: 75%;margin-top: 10%;margin-left: 8%;"
          <el-table :data="tableDataa" border style="margin-top: 10%;margin-left: 8%;" width="500"
                    :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" >
            <el-table-column prop="workstationId" align="center" :label="$t('basicData.station')" min-width="60"/>
            <el-table-column prop="workstationId" align="center" :label="$t('basicData.station')" min-width="50"/>
            <el-table-column prop="patternWidth" align="center" :label="$t('basicData.width')" min-width="80"/>
            <el-table-column prop="patternHeight" align="center" :label="$t('basicData.height')" min-width="80"/>
            <el-table-column prop="filmsId" align="center" :label="$t('basicData.coatingtypes')" min-width="80"/>
            <el-table-column prop="number" align="center" :label="$t('basicData.quantity')" min-width="80"/>
            <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="70">
            <el-table-column fixed="right" :label="$t('film.operate')" align="center">
            <template #default="scope">
          <el-button size="mini" type="text" plain @click="handleptask()">{{ $t('basicData.rackreset') }}</el-button>
          <el-button size="mini" type="text" plain @click="handleptask(scope.row.workstationId)">{{ $t('basicData.rackreset') }}</el-button>
            </template>
        </el-table-column>
          </el-table>
@@ -526,7 +534,6 @@
        </el-table>
        <template #footer>
      <div id="dialog-footer">
        <el-button type="danger" @click="deleteTask()">{{ $t('searchOrder.deleteTask') }}</el-button>
        <el-button @click="blindb = false">{{ $t('large.close') }}</el-button>
      </div>
    </template>
UI-Project/src/views/Returns/upreturns2.vue
@@ -15,6 +15,7 @@
const dialogFormVisible = ref(false)
const blind = ref(false)
const blinda = ref(false)
const ReportData = ref(true);
const blindb = ref(false)
const dialoglea = ref(false)
const canSelectProjecta = ref(true);
@@ -27,25 +28,18 @@
const tableDataa = ref<any[]>([]);
const tableDatab = ref<any[]>([]);
const tableData = ref([])
const filteredData = computed(() => {
  // applyFilters 函数应该在某处定义,用于根据当前筛选条件过滤数据
  return applyFilters(tableData, currentFilters);
});
// 当前筛选条件,应该是一个响应式变量,用于存储用户选择的筛选值
const currentFilters = ref<{ state?: string }>({});
const filterTag = (value: string, row: any) => {
  // return String(row.state) === value;
  return row.state === value
};
// 应用筛选条件的函数
const applyFilters = (data: any[], filters: { state?: string }) => {
  return data.filter(row => {
    return (!filters.state || String(row.state) === filters.state);
  });
};
const titleSelectJson = ref({
  engineerId: [],
})
request.post("/loadGlass/up-patten-usage/setUpPattenRequest",{
  state: null,
  stationCell: 6
}).then((response) => {
          if (response.code == 200) {
          } else {
          ElMessage.warning(response.msg)
          }
          });
const handlezhiban = () => {
  dialoglea.value = true;
  fetchFlowCardId();
@@ -125,6 +119,37 @@
    console.error(error);
  }
};
// 架子复位
const handleptask = async (workstationId: number) => {
      console.log(workstationId);
      try {
    const confirmResult = await ElMessageBox.confirm(
      t('basicData.prackreset'),
      t('workOrder.prompt'),
      {
        confirmButtonText: t('workOrder.yes'),
        cancelButtonText: t('workOrder.cancel'),
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
      const slot = workstationId === 3 ? 103 : (workstationId === 4 ? 104 : null);
      if (slot !== null) {
        const response = await request.post('/glassStorage/rawGlassStorageDetails/shelfReset', {
          slot: slot,
    })
        if (response.code === 200) {
          ElMessage.success(response.message);
        } else {
          ElMessage.error(response.message);
        }
      } else {
      }
    }
  } catch (error) {
  }
};
//选择工程预览确认
const handlesure = async () => {
  try {
@@ -144,6 +169,7 @@
      filmRemove.value = '';
      markingMachineStatus.value = '#911005';
      cuttingMachineStatus.value = '#911005';
      ReportData.value = false;
    } else {
      ElMessage.error(response.message);
    }
@@ -153,35 +179,38 @@
}
// 结束工程
const deleteTask = async () => {
  try {
      try {
    const confirmResult = await ElMessageBox.confirm(
      t('searchOrder.pdeleteTask'),
      t('workOrder.prompt'),
      {
        confirmButtonText: t('workOrder.yes'),
        cancelButtonText: t('workOrder.cancel'),
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
    let engineeringId = window.localStorage.getItem('engineeringIda')
    console.log(engineeringId);
    if (engineeringId !== '') {
      const response = await request.post('/loadGlass/engineering/engineering/deleteTask', {
        engineerId: engineeringId,
      })
      if (response.code == 200) {
        ElMessage.success(response.message);
        tableDatad.value = response.data;
        canSelectProjecta.value = true;
        canSelectProjectb.value = true;
        canSelectProjectc.value = false;
        blindb.value = false;
        blindb.value = true;
        tableDatad.value = response.data;
      } else {
        ElMessage.error(response.message);
          ElMessage.error(response.message);
        }
      } else {
      }
    }
  } catch (error) {
  }
    else  {
      ElMessage({
        type: 'info',
        message: t('basicData.infonull'),
      })
    }
}
catch (error) {
    console.error(error);
  }
}
};
// 开始上片
const handleon = async () => {
  let filmRemove = window.localStorage.getItem('filmRemove')
@@ -201,6 +230,7 @@
        canSelectProjectc.value = true;
        socket = initializeWebSocket(socketUrl, handleMessage);
        blind.value = false;
        ReportData.value = true;
      } else {
        ElMessage.error(response.message);
      }
@@ -316,7 +346,7 @@
      } 
    );
    if (confirmResult === 'confirm') {
     const response = await request.post('/loadGlass/engineering/engineering/insetDamage', {
     const response = await request.post('/loadGlass/engineering/engineering/identControls', {
       glassId: row.glassId,
       line: 6,
       status: 1,
@@ -346,7 +376,7 @@
      } 
    );
    if (confirmResult === 'confirm') {
      const response = await request.post('/loadGlass/engineering/engineering/insetDamage', {
      const response = await request.post('/loadGlass/engineering/engineering/identControls', {
       glassId: row.glassId,
       line: 6,
       status: 1,
@@ -410,8 +440,20 @@
    <el-button :disabled="!canSelectProjecta" style="margin-top: 5px;margin-left: 15px;"  type="primary" @click="selectproject">{{ $t('Mounting.previewproject') }}</el-button>
    <el-button :disabled="!canSelectProjectb" style="margin-top: 5px;margin-left: 20px;" type="success" @click="handleBind">{{ $t('basicData.startloading') }}</el-button>
    <el-button :disabled="!canSelectProjectc" style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="warning" @click="handleBinda">{{ $t('basicData.stop') }}</el-button>
    <el-button :disabled="!canSelectProjectc" style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="danger" @click="handledelete">{{ $t('searchOrder.deleteTask') }}</el-button>
    <el-button :disabled="!canSelectProjectc" style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="danger" @click="deleteTask">{{ $t('searchOrder.deleteTask') }}</el-button>
    <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="info" @click="handlezhiban">{{ $t('searchOrder.dutyinformation') }}</el-button>
    <el-select disabled v-model="selectValuesa[1]" clearable :placeholder="$t('Mounting.oneloadingline')"
               style="margin-top: 5px;margin-left: 20px;">
      <el-option :label="$t('Mounting.all')" value="0"></el-option>
      <el-option :label="$t('Mounting.oneloadingline')" value="1"></el-option>
      <el-option :label="$t('Mounting.twoloadingline')" value="2"></el-option>
    </el-select>
    <el-select v-model="selectValuesa[0]" clearable :placeholder="$t('film.taskstatus')" style="margin-top: 5px;margin-left: 20px;" >
      <el-option :label="$t('Mounting.all')" value="null"></el-option>
      <el-option :label="$t('Mounting.waiting')" value="0"></el-option>
      <el-option :label="$t('Mounting.pass')" value="100"></el-option>
    </el-select>
    <el-button :disabled="!ReportData" type="primary" style="margin-left: 10px;" @click="selectReportData()">{{ $t('Mounting.setparameters') }}</el-button>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
        <el-table
@@ -425,33 +467,22 @@
          <el-table-column prop="height" :label="$t('Mounting.height')" align="center"/>
          <el-table-column prop="thickness" :label="$t('Mounting.thickness')" align="center"/>
          <el-table-column prop="filmsId" :label="$t('Mounting.loadinglinea')" align="center"/>
          <el-table-column :label="$t('Mounting.projectnumber')" align="center">
            <template #default="{ row }">
              <span>{{ 1 }}</span>
            </template>
          </el-table-column>
          <el-table-column prop="layoutSequence" :label="$t('Mounting.projectnumber')" align="center"/>
          <el-table-column
      align="center"
      prop="state"
      :label="$t('Mounting.state')"
      min-width="80"
      :filters="[
        { text: t('Mounting.pass'), value: 100 },
        { text: t('Mounting.waiting'), value: 0 },
      ]"
      :filter-method="filterTag"
      filter-placement="bottom-end"
    >
      <template #default="scope">
        <el-tag
              align="center"
              :label="$t('Mounting.state')"
            min-width="80"
            prop="state"
          >
          <template #default="scope">
            <el-tag
                :type="scope.row.state === 100 ? 'success' : 'warning'"
                @click="toggleEnableState(scope.row)"
                disable-transitions
            >
              {{ scope.row.state === 100 ? $t('Mounting.pass') : $t('Mounting.waiting') }}
            </el-tag>
      </template>
    </el-table-column>
          </template>
      </el-table-column>
        </el-table>
      </div>
    </el-card>
@@ -460,13 +491,18 @@
        <div style="display: flex;">
          <img src="../../assets/shangpianji.png" alt=""
               style="max-width: 20%;max-height: 25%;margin-left: 10%;margin-top: 5%;">
          <el-table :data="tableDataa" border style="width: 75%;margin-top: 10%;margin-left: 8%;"
          <el-table :data="tableDataa" border style="margin-top: 10%;margin-left: 8%;" width="500"
                    :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" >
            <el-table-column prop="workstationId" align="center" :label="$t('basicData.station')" min-width="60"/>
            <el-table-column prop="workstationId" align="center" :label="$t('basicData.station')" min-width="50"/>
            <el-table-column prop="patternWidth" align="center" :label="$t('basicData.width')" min-width="80"/>
            <el-table-column prop="patternHeight" align="center" :label="$t('basicData.height')" min-width="80"/>
            <el-table-column prop="filmsId" align="center" :label="$t('basicData.coatingtypes')" min-width="80"/>
            <el-table-column prop="number" align="center" :label="$t('basicData.quantity')" min-width="80"/>
            <el-table-column fixed="right" :label="$t('film.operate')" align="center">
            <template #default="scope">
          <el-button size="mini" type="text" plain @click="handleptask(scope.row.workstationId)">{{ $t('basicData.rackreset') }}</el-button>
            </template>
        </el-table-column>
          </el-table>
    </div>
  </div>
@@ -506,14 +542,6 @@
        <el-button @click="blindb = false">{{ $t('large.close') }}</el-button>
      </div>
    </template>
    <!-- <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="deleteTask">
          {{ $t('basicData.confirm') }}
        </el-button>
        <el-button @click="blindb = false">{{ $t('basicData.cancel') }}</el-button>
      </div>
    </template> -->
  </el-dialog>
  <!-- 值班信息 -->
    <el-dialog v-model="dialoglea" top="15vh" width="70%" :title="$t('searchOrder.dutyinformation')">
UI-Project/src/views/Slicecage/slicecage.vue
@@ -50,11 +50,6 @@
const adjustedRectsa = ref([]);
const adjustedRectsb = ref([]);
const adjustedRectsc = ref([]);
const adjustedRectsd = ref([]);
const adjustedRectse = ref([]);
const adjustedRectsf = ref([]);
const adjustedRectsg = ref([]);
const adjustedRectsh = ref([]);
const currentRow = reactive({}); // 当前行的数据 
const currentPage2 = ref(1)
const inputValuesa = reactive({});
@@ -73,11 +68,6 @@
const cell2=ref(true);
const cell3=ref(true);
const cell4=ref(true);
const cell5=ref(true);
const cell6=ref(true);
const cell7=ref(true);
const cell8=ref(true);
const cell9=ref(true);
const canEdit = ref(true);
const selectedRow = ref(null);
const temperingtotal = ref(0);
@@ -1036,13 +1026,13 @@
    </div>
    </div>
    <div style="position: relative;">
    <div v-show="cell1" style="width: 227px;height: 29px;position: relative;top:50px;left: 495px;">
    <div v-show="cell1" style="width: 170px;height: 53px;position: relative;top:63px;left: 585px;">
      <div  
      v-for="(rect, index) in adjustedRects"  
      :key="rect"  
      :style="{
       position: 'absolute',
       width: '227px',
       width: '200px',
       left: '0px',
       top: index*rect.top+`px`,
       height: `${rect.height}px`,
@@ -1063,7 +1053,7 @@
      </div>
    </div>
    </div>
 <div v-show="cell2" style="width: 227px;height: 29px;position: relative;top:51px;left: 495px;">
 <div v-show="cell2" style="width: 170px;height: 53px;position: relative;top:67px;left: 585px;">
  <div  
      v-for="(rect, index) in adjustedRectsa"  
      :key="rect.id"  
@@ -1090,7 +1080,7 @@
      </div>
    </div>
    </div>
  <div v-show="cell3" style="width: 227px;height: 29px;position: absolute;top:110px;left: 495px;">
  <div v-show="cell3" style="width: 170px;height: 53px;position: relative;top:72px;left: 585px;">
    <div  
      v-for="(rect, index) in adjustedRectsb"  
      :key="rect.id"  
@@ -1117,147 +1107,9 @@
      </div>
    </div>
    </div>
  <div v-show="cell4" style="width: 227px;height: 29px;position: absolute;top:140px;left: 495px;">
  <div v-show="cell4" style="width: 170px;height: 53px;position: relative;top:77px;left: 585px;">
    <div  
      v-for="(rect, index) in adjustedRectsc"  
      :key="rect.id"
      :style="{
       position: 'absolute',
       width: '227px',
       left: '0px',
       top: index*rect.top+`px`,
       height: `${rect.height}px`,
       }"
    >
    <div
      v-for="(rects, index) in rect.bigStorageCageDetails"
      :key="rects"
      :style="{
        float:'left',
       width: '18px',
       height: `${rect.height}px`,
       backgroundColor: '#911005',
       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="{
       position: 'absolute',
       width: '227px',
       left: '0px',
       top: index*rect.top+`px`,
       height: `${rect.height}px`,
       }"
    >
    <div
      v-for="(rects, index) in rect.bigStorageCageDetails"
      :key="rects"
      :style="{
        float:'left',
       width: '18px',
       height: `${rect.height}px`,
       backgroundColor: '#911005',
       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="{
       position: 'absolute',
       width: '227px',
       left: '0px',
       top: index*rect.top+`px`,
       height: `${rect.height}px`,
       }"
    >
    <div
      v-for="(rects, index) in rect.bigStorageCageDetails"
      :key="rects"
      :style="{
        float:'left',
       width: '18px',
       height: `${rect.height}px`,
       backgroundColor: '#911005',
       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="{
       position: 'absolute',
       width: '227px',
       left: '0px',
       top: index*rect.top+`px`,
       height: `${rect.height}px`,
       }"
    >
    <div
      v-for="(rects, index) in rect.bigStorageCageDetails"
      :key="rects"
      :style="{
        float:'left',
       width: '18px',
       height: `${rect.height}px`,
       backgroundColor: '#911005',
       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="{
        // display:'flex',
       position: 'absolute',
       width: '227px',
      //  backgroundColor: 'red',
       left: '0px',
       top: index*rect.top+`px`,
       height: `${rect.height}px`,
       }"
    >
    <div
      v-for="(rects, index) in rect.bigStorageCageDetails"
      :key="rects"
      :style="{
        float:'left',
       width: '18px',
       height: `${rect.height}px`,
       backgroundColor: '#911005',
      // 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="{
       position: 'absolute',
UI-Project/src/views/hollow/hollowequipment.vue
@@ -137,8 +137,8 @@
<!-- 中空配方添加 -->
<el-dialog v-model="add" top="3vh" width="55%" :title="$t('hellow.hollowformula')" >
    <div style="margin-left: 50px;margin-top: 10px;margin-bottom: 10px;">
     <el-form  size="mini" label-width="150px">
      <el-form label-width="150px" label-position="right">
     <el-form size="mini" label-width="150px">
      <!-- <el-form label-width="150px" label-position="right"> -->
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
@@ -208,7 +208,7 @@
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.casTwob')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.casTwob')" style="width: 16vw;">
            <el-select v-model="casTwo" clearable :placeholder="$t('hellow.casTwoa')" style="width: 220px">
              <el-option :label="$t('hellow.F')" value="0"></el-option>
              <el-option :label="$t('hellow.Y')" value="1"></el-option>
@@ -221,7 +221,7 @@
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.casThreeb')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.casThreeb')" style="width: 16vw;">
            <el-select v-model="casThree" clearable :placeholder="$t('hellow.casThreea')" style="width: 220px">
              <el-option :label="$t('hellow.F')" value="0"></el-option>
              <el-option :label="$t('hellow.Y')" value="1"></el-option>
@@ -231,7 +231,7 @@
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.casFourb')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.casFourb')" style="width: 16vw;">
            <el-select v-model="casFour" clearable :placeholder="$t('hellow.casFoura')" style="width: 220px">
              <el-option :label="$t('hellow.F')" value="0"></el-option>
              <el-option :label="$t('hellow.Y')" value="1"></el-option>
@@ -251,7 +251,7 @@
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.frameTwob')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.frameTwob')" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.frameTwoa')" v-model="frameTwo" autocomplete="off" />
              </el-form-item>
            </div></div>
@@ -261,14 +261,14 @@
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.frameThreeb')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.frameThreeb')" style="width: 16vw;">
                <el-input :placeholder="$t('hellow.frameThreea')" v-model="frameThree" autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.frameFourb')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.frameFourb')" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.frameFoura')" v-model="frameFour" autocomplete="off" />
              </el-form-item>
            </div></div>
@@ -285,7 +285,7 @@
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameHeightbTwo')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameHeightbTwo')" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.intervalFrameHeightaTwo')" v-model="intervalFrameHeightTwo" autocomplete="off" />
              </el-form-item>
            </div></div>
@@ -295,14 +295,14 @@
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameHeightbThree')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameHeightbThree')" style="width: 16vw;">
                <el-input :placeholder="$t('hellow.intervalFrameHeightaThree')" v-model="intervalFrameHeightThree" autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameHeightbFour')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameHeightbFour')"  style="width: 16vw;">
            <el-input :placeholder="$t('hellow.intervalFrameHeightaFour')" v-model="intervalFrameHeightFour" autocomplete="off" />
              </el-form-item>
            </div></div>
@@ -319,7 +319,7 @@
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameWidthbTwo')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameWidthbTwo')" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.intervalFrameWidthaTwo')" v-model="intervalFrameWidthTwo" autocomplete="off" />
              </el-form-item>
            </div></div>
@@ -329,14 +329,14 @@
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameWidthbThree')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameWidthbThree')" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.intervalFrameWidthaThree')" v-model="intervalFrameWidthThree" autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameWidthbFour')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameWidthbFour')" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.intervalFrameWidthaFour')" v-model="intervalFrameWidthFour" autocomplete="off" />
              </el-form-item>
            </div></div>
@@ -356,7 +356,7 @@
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameTypedTwo')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameTypedTwo')" style="width: 16vw;">
            <el-select v-model="intervalFrameTypeTwo" clearable  style="width: 220px" :placeholder="$t('hellow.intervalFrameTypecTwo')">
        <el-option :label="$t('hellow.intervalFrameTypeb')" value="1"></el-option>
        <el-option :label="$t('hellow.intervalFrameTypea')" value="5"></el-option>
@@ -370,7 +370,7 @@
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameTypedThree')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameTypedThree')" style="width: 16vw;">
            <el-select v-model="intervalFrameTypeThree" clearable  style="width: 220px" :placeholder="$t('hellow.intervalFrameTypecThree')">
        <el-option :label="$t('hellow.intervalFrameTypeb')" value="1"></el-option>
        <el-option :label="$t('hellow.intervalFrameTypea')" value="5"></el-option>
@@ -380,7 +380,7 @@
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameTypedFour')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameTypedFour')" style="width: 16vw;">
            <el-select v-model="intervalFrameTypeFour" clearable  style="width: 220px" :placeholder="$t('hellow.intervalFrameTypecFour')">
        <el-option :label="$t('hellow.intervalFrameTypeb')" value="1"></el-option>
        <el-option :label="$t('hellow.intervalFrameTypea')" value="5"></el-option>
@@ -399,7 +399,7 @@
              </el-form-item></div></div>
          </el-col>
        </el-row>
        </el-form>
        <!-- </el-form> -->
            </el-form>
          </div>
    <template #footer>
@@ -485,7 +485,7 @@
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.casTwob')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.casTwob')" style="width: 16vw;">
            <el-select v-model="casTwo" clearable :placeholder="$t('hellow.casTwoa')" style="width: 220px">
              <el-option :label="$t('hellow.F')" value="0"></el-option>
              <el-option :label="$t('hellow.Y')" value="1"></el-option>
@@ -498,7 +498,7 @@
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.casThreeb')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.casThreeb')" style="width: 16vw;">
            <el-select v-model="casThree" clearable :placeholder="$t('hellow.casThreea')" style="width: 220px">
              <el-option :label="$t('hellow.F')" value="0"></el-option>
              <el-option :label="$t('hellow.Y')" value="1"></el-option>
@@ -508,7 +508,7 @@
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.casFourb')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.casFourb')" style="width: 16vw;">
            <el-select v-model="casFour" clearable :placeholder="$t('hellow.casFoura')" style="width: 220px">
              <el-option :label="$t('hellow.F')" value="0"></el-option>
              <el-option :label="$t('hellow.Y')" value="1"></el-option>
@@ -528,7 +528,7 @@
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.frameTwob')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.frameTwob')" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.frameTwoa')" v-model="frameTwo" autocomplete="off" />
              </el-form-item>
            </div></div>
@@ -538,14 +538,14 @@
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.frameThreeb')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.frameThreeb')" style="width: 16vw;">
                <el-input :placeholder="$t('hellow.frameThreea')" v-model="frameThree" autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.frameFourb')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.frameFourb')" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.frameFoura')" v-model="frameFour" autocomplete="off" />
              </el-form-item>
            </div></div>
@@ -562,7 +562,7 @@
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameHeightbTwo')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameHeightbTwo')" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.intervalFrameHeightaTwo')" v-model="intervalFrameHeightTwo" autocomplete="off" />
              </el-form-item>
            </div></div>
@@ -572,14 +572,14 @@
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameHeightbThree')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameHeightbThree')" style="width: 16vw;">
                <el-input :placeholder="$t('hellow.intervalFrameHeightaThree')" v-model="intervalFrameHeightThree" autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameHeightbFour')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameHeightbFour')" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.intervalFrameHeightaFour')" v-model="intervalFrameHeightFour" autocomplete="off" />
              </el-form-item>
            </div></div>
@@ -596,7 +596,7 @@
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameWidthbTwo')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameWidthbTwo')" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.intervalFrameWidthaTwo')" v-model="intervalFrameWidthTwo" autocomplete="off" />
              </el-form-item>
            </div></div>
@@ -606,14 +606,14 @@
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameWidthbThree')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameWidthbThree')" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.intervalFrameWidthaThree')" v-model="intervalFrameWidthThree" autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameWidthbFour')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameWidthbFour')" style="width: 16vw;">
            <el-input :placeholder="$t('hellow.intervalFrameWidthaFour')" v-model="intervalFrameWidthFour" autocomplete="off" />
              </el-form-item>
            </div></div>
@@ -633,7 +633,7 @@
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameTypedTwo')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameTypedTwo')" style="width: 16vw;">
            <el-select v-model="intervalFrameTypeTwo" clearable  style="width: 220px" :placeholder="$t('hellow.intervalFrameTypecTwo')">
        <el-option :label="$t('hellow.intervalFrameTypeb')" value="1"></el-option>
        <el-option :label="$t('hellow.intervalFrameTypea')" value="5"></el-option>
@@ -647,7 +647,7 @@
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameTypedThree')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameTypedThree')" style="width: 16vw;">
            <el-select v-model="intervalFrameTypeThree" clearable  style="width: 220px" :placeholder="$t('hellow.intervalFrameTypecThree')">
        <el-option :label="$t('hellow.intervalFrameTypeb')" value="1"></el-option>
        <el-option :label="$t('hellow.intervalFrameTypea')" value="5"></el-option>
@@ -657,7 +657,7 @@
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('hellow.intervalFrameTypedFour')" :required="true" style="width: 16vw;">
          <el-form-item :label="$t('hellow.intervalFrameTypedFour')" style="width: 16vw;">
            <el-select v-model="intervalFrameTypeFour" clearable  style="width: 220px" :placeholder="$t('hellow.intervalFrameTypecFour')">
        <el-option :label="$t('hellow.intervalFrameTypeb')" value="1"></el-option>
        <el-option :label="$t('hellow.intervalFrameTypea')" value="5"></el-option>
@@ -904,42 +904,34 @@
                :data="tableDatax" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
        <el-table-column prop="formulaName" fixed align="center" :label="$t('hellow.formulaNamep')" min-width="120"/>
        <el-table-column prop="filmRemove" align="center" :label="$t('Mounting.removalmethodp')"/>
        <el-table-column prop="casOne" align="center" :label="$t('hellow.casOne')">
          <template #default="scope">
          <el-tag
            :type="scope.row.casOne === 1 ? 'success' : 'danger'"
          >
          {{ scope.row.casOne === 1 ? $t('hellow.Y') : $t('hellow.F') }}
          </el-tag>
        </template>
        </el-table-column>
        <el-table-column prop="casTwo" align="center" :label="$t('hellow.casTwo')">
          <template #default="scope">
          <el-tag
            :type="scope.row.casTwo === 1 ? 'success' : 'danger'"
          >
          {{ scope.row.casTwo === 1 ? $t('hellow.Y') : $t('hellow.F') }}
          </el-tag>
        </template>
        </el-table-column>
        <el-table-column prop="casThree" align="center" :label="$t('hellow.casThree')">
          <template #default="scope">
          <el-tag
            :type="scope.row.casThree === 1 ? 'success' : 'danger'"
          >
          {{ scope.row.casThree === 1 ? $t('hellow.Y') : $t('hellow.F') }}
          </el-tag>
        </template>
        </el-table-column>
        <el-table-column prop="casFour" align="center" :label="$t('hellow.casFour')">
          <template #default="scope">
          <el-tag
            :type="scope.row.casFour === 1 ? 'success' : 'danger'"
          >
          {{ scope.row.casFour === 1 ? $t('hellow.Y') : $t('hellow.F') }}
          </el-tag>
        </template>
        </el-table-column>
        <el-table-column prop="casOne" align="center" :label="$t('hellow.casOne')" min-width="110">
      <template #default="scope">
        <el-tag :type="getcasOnea(scope.row.casOne)">
          {{ getStatuscasOnea(scope.row.casOne) }}
        </el-tag>
      </template>
    </el-table-column>
    <el-table-column prop="casTwo" align="center" :label="$t('hellow.casTwo')" min-width="110">
      <template #default="scope">
        <el-tag :type="getcasOneb(scope.row.casTwo)">
          {{ getStatuscasOneb(scope.row.casTwo) }}
        </el-tag>
      </template>
    </el-table-column>
    <el-table-column prop="casThree" align="center" :label="$t('hellow.casThree')" min-width="110">
      <template #default="scope">
        <el-tag :type="getcasOnec(scope.row.casThree)">
          {{ getStatuscasOnec(scope.row.casThree) }}
        </el-tag>
      </template>
    </el-table-column>
    <el-table-column prop="casFour" align="center" :label="$t('hellow.casFour')" min-width="110">
      <template #default="scope">
        <el-tag :type="getcasOned(scope.row.casFour)">
          {{ getStatuscasOned(scope.row.casFour) }}
        </el-tag>
      </template>
    </el-table-column>
        <el-table-column prop="frameOne" align="center" :label="$t('hellow.frameOne')"/>
        <el-table-column prop="frameTwo" align="center" :label="$t('hellow.frameTwo')"/>
        <el-table-column prop="frameThree" align="center" :label="$t('hellow.frameThree')"/>
@@ -948,31 +940,38 @@
        <el-table-column prop="intervalFrameHeightTwo" align="center" :label="$t('hellow.intervalFrameHeightTwo')" min-width="110"/>
        <el-table-column prop="intervalFrameHeightThree" align="center" :label="$t('hellow.intervalFrameHeightThree')" min-width="110"/>
        <el-table-column prop="intervalFrameHeightFour" align="center" :label="$t('hellow.intervalFrameHeightFour')" min-width="110"/>
        <el-table-column prop="intervalFrameTypeOne" align="center" :label="$t('hellow.intervalFrameTypeOne')" min-width="110">
        <!-- <el-table-column prop="intervalFrameTypeOne" align="center" :label="$t('hellow.intervalFrameTypeOne')" min-width="110">
          <template #default="scope">  
         <el-tag :type="getStatusType(scope.row.intervalFrameTypeOne)">
          {{ getStatusText(scope.row.intervalFrameTypeOne) }}
         <el-tag :type="getStatusTypea(scope.row.intervalFrameTypeOne)">
          {{ getStatusTexta(scope.row.intervalFrameTypeOne) }}
        </el-tag>  
      </template>
        </el-table-column>
        </el-table-column> -->
        <el-table-column prop="intervalFrameTypeOne" align="center" :label="$t('hellow.intervalFrameTypeOne')" min-width="110">
      <template #default="scope">
        <el-tag :type="getStatusTypea(scope.row.intervalFrameTypeOne)">
          {{ getStatusTexta(scope.row.intervalFrameTypeOne) }}
        </el-tag>
      </template>
    </el-table-column>
        <el-table-column prop="intervalFrameTypeTwo" align="center" :label="$t('hellow.intervalFrameTypeTwo')" min-width="110">
          <template #default="scope">  
         <el-tag :type="getStatusType(scope.row.intervalFrameTypeTwo)">
          {{ getStatusText(scope.row.intervalFrameTypeTwo) }}
         <el-tag :type="getStatusTypeb(scope.row.intervalFrameTypeTwo)">
          {{ getStatusTextb(scope.row.intervalFrameTypeTwo) }}
        </el-tag>  
      </template>
        </el-table-column>
        <el-table-column prop="intervalFrameTypeThree" align="center" :label="$t('hellow.intervalFrameTypeThree')" min-width="110">
          <template #default="scope">  
         <el-tag :type="getStatusType(scope.row.intervalFrameTypeThree)">
          {{ getStatusText(scope.row.intervalFrameTypeThree) }}
         <el-tag :type="getStatusTypec(scope.row.intervalFrameTypeThree)">
          {{ getStatusTextc(scope.row.intervalFrameTypeThree) }}
        </el-tag>  
      </template>
        </el-table-column>
        <el-table-column prop="intervalFrameTypeFour" align="center" :label="$t('hellow.intervalFrameTypeFour')" min-width="110">
          <template #default="scope">  
         <el-tag :type="getStatusType(scope.row.intervalFrameTypeFour)">
          {{ getStatusText(scope.row.intervalFrameTypeFour) }}
         <el-tag :type="getStatusTyped(scope.row.intervalFrameTypeFour)">
          {{ getStatusTextd(scope.row.intervalFrameTypeFour) }}
        </el-tag>  
      </template>
        </el-table-column>
@@ -1058,7 +1057,7 @@
const dialogFormVisibled = ref(false)
const dialogFormVisiblee = ref(false)
const add = ref(false)
const adda = ref(false)
const adda = ref(false)
const currentPage2 = ref(1)
const currentRow = reactive({});
const formattedProcessType = ref([]);
@@ -1086,11 +1085,9 @@
const currentPageKey = computed(() => `93${currentPage.value - 1}`);
const handlePageChange1 = (newPage) => {
  currentPage.value = newPage;
  console.log(currentPage.value);
};
const handlePageChange2 = (newPage) => {
  currentPage2.value = newPage;
  console.log(currentPage2.value);
  fetchFlowBind(currentRow.projectNumber, currentRow.layer, currentPage2.value);
};
const handleMessage = (data) => {
@@ -1149,6 +1146,7 @@
}
// 处理编辑按钮点击  
function handleEdit(row) {  
  window.localStorage.setItem('id', row.id)
    formulaName.value = row.formulaName;
    filmRemove.value = removalMethodMap[row.filmRemove];
    bottomRemove.value = row.bottomRemove;
@@ -1216,21 +1214,165 @@
  mulan.value = true;
  fetchmulan();
};
function getStatusType(intervalFrameType) {
  switch (intervalFrameType) {
    case 1:
function getcasOnea(casOne) {
  switch (casOne) {
    case "1":
      return 'success';  
    case 5:
    case "0":
      return 'warning';  
    default:
      return 'info';
  }  
}  
function getStatusText(intervalFrameType) {
  switch (intervalFrameType) {
    case 1:
function getStatuscasOnea(casOne) {
  switch (casOne) {
    case "1":
      return t('hellow.Y');
    case "0":
      return t('hellow.F');
    default:
      return '';
  }
}
function getcasOneb(casOne) {
  switch (casOne) {
    case "1":
      return 'success';
    case "0":
      return 'warning';
    default:
      return 'info';
  }
}
function getStatuscasOneb(casOne) {
  switch (casOne) {
    case "1":
      return t('hellow.Y');
    case "0":
      return t('hellow.F');
    default:
      return '';
  }
}
function getcasOnec(casOne) {
  switch (casOne) {
    case "1":
      return 'success';
    case "0":
      return 'warning';
    default:
      return 'info';
  }
}
function getStatuscasOnec(casOne) {
  switch (casOne) {
    case "1":
      return t('hellow.Y');
    case "0":
      return t('hellow.F');
    default:
      return '';
  }
}
function getcasOned(casOne) {
  switch (casOne) {
    case "1":
      return 'success';
    case "0":
      return 'warning';
    default:
      return 'info';
  }
}
function getStatuscasOned(casOne) {
  switch (casOne) {
    case "1":
      return t('hellow.Y');
    case "0":
      return t('hellow.F');
    default:
      return '';
  }
}
function getStatusTypea(intervalFrameTypeOne) {
  switch (intervalFrameTypeOne) {
    case "1":
      return 'success';
    case "5":
      return 'warning';
    default:
      return 'info';
  }
}
function getStatusTexta(intervalFrameTypeOne) {
  switch (intervalFrameTypeOne) {
    case "1":
      return t('hellow.intervalFrameTypeb');
    case 5:
    case "5":
      return t('hellow.intervalFrameTypea'); 
    default:
      return '';
  }
}
function getStatusTypeb(intervalFrameTypeTwo) {
  switch (intervalFrameTypeTwo) {
    case "1":
      return 'success';
    case "5":
      return 'warning';
    default:
      return 'info';
  }
}
function getStatusTextb(intervalFrameTypeTwo) {
  switch (intervalFrameTypeTwo) {
    case "1":
      return t('hellow.intervalFrameTypeb');
    case "5":
      return t('hellow.intervalFrameTypea');
    default:
      return '';
  }
}
function getStatusTypec(intervalFrameTypeThree) {
  switch (intervalFrameTypeThree) {
    case "1":
      return 'success';
    case "5":
      return 'warning';
    default:
      return 'info';
  }
}
function getStatusTextc(intervalFrameTypeThree) {
  switch (intervalFrameTypeThree) {
    case "1":
      return t('hellow.intervalFrameTypeb');
    case "5":
      return t('hellow.intervalFrameTypea');
    default:
      return '';
  }
}
function getStatusTyped(intervalFrameTypeFour) {
  switch (intervalFrameTypeFour) {
    case "1":
      return 'success';
    case "5":
      return 'warning';
    default:
      return 'info';
  }
}
function getStatusTextd(intervalFrameTypeFour) {
  switch (intervalFrameTypeFour) {
    case "1":
      return t('hellow.intervalFrameTypeb');
    case "5":
      return t('hellow.intervalFrameTypea');
    default:
      return '';
  }  
}
// 预览
@@ -1318,9 +1460,31 @@
    formulaNameid.value = { id: null };
  }
};
// 验证函数
function validateForm() {
  const errors = [];
  if (!formulaName.value) errors.push('必填!');
  if (filmRemove.value === null) errors.push('必填!');
  if (!bottomRemove.value) errors.push('必填!');
  if (!topRemove.value) errors.push('必填!');
  if (!leftRemove.value) errors.push('必填!');
  if (!rightRemove.value) errors.push('必填!');
  if (casOne.value === null) errors.push('必填!');
  if (!frameOne.value) errors.push('必填!');
  if (!intervalFrameHeightOne.value) errors.push('必填!');
  if (!intervalFrameWidthOne.value) errors.push('必填!');
  if (intervalFrameTypeOne.value === null) errors.push('必填!');
  if (!sealInsert.value) errors.push('必填!');
  if (errors.length > 0) {
    ElMessage.error(errors.join(''));
    return false;
  }
  return true;
}
// 中空配方添加
const handleConfirm = async () => {
  try {
    if (!validateForm()) return;
    const response = await request.post('/hollowGlass/hollowFormulaDetails/saveFormulaDetails',{
      formulaName: formulaName.value,
      filmRemove: filmRemove.value,
@@ -1352,7 +1516,7 @@
    });
    if (response.code == 200) {
      ElMessage.success(response.message);
      tableDatax.value = response.data;
      // tableDatax.value = response.data;
      fetchmulan()
      add.value = false
      formulaName.value = '';
@@ -1403,9 +1567,11 @@
  [t('hellow.intervalFrameTypea')]: 5,
}
// 中空配方修改
const handledit = async () => {
 const handledit = async() => {
  let id = window.localStorage.getItem('id')
  try {
    const response = await request.post('/hollowGlass/hollowFormulaDetails/updateFormulaDetails',{
      id: id,
      formulaName: formulaName.value,
      filmRemove: removalMethodMapa[filmRemove.value],
      bottomRemove: bottomRemove.value,
UI-Project/src/views/hollow/hollowequipmenttwo.vue
@@ -494,7 +494,13 @@
      <el-table ref="table" style="margin-top: 20px;height: 400px;"
                :data="tableDatax" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
        <el-table-column prop="formulaName" fixed align="center" :label="$t('hellow.formulaNamep')"/>
        <el-table-column prop="filmRemove" fixed align="center" :label="$t('Mounting.removalmethodp')"/>
        <el-table-column prop="filmRemove" align="center" :label="$t('Mounting.removalmethodp')" min-width="110">
      <template #default="scope">
        <el-tag :type="getcasOnea(scope.row.filmRemove)">
          {{ getStatuscasOnea(scope.row.filmRemove) }}
        </el-tag>
      </template>
    </el-table-column>
        <el-table-column prop="topRemove" align="center" :label="$t('hellow.topRemovep')"> </el-table-column>
        <el-table-column prop="bottomRemove" align="center" :label="$t('hellow.bottomRemovep')"> </el-table-column>
        <el-table-column prop="leftRemove" align="center" :label="$t('hellow.leftRemovep')"> </el-table-column>
@@ -612,6 +618,26 @@
    closeWebSocket(socket);
  }
});
function getcasOnea(filmRemove) {
  switch (filmRemove) {
    case 1:
      return 'success';
    case 0:
      return 'warning';
    default:
      return 'info';
  }
}
function getStatuscasOnea(filmRemove) {
  switch (filmRemove) {
    case 1:
      return t('Mounting.removal');
    case 0:
      return t('Mounting.noremoval');
    default:
      return '';
  }
}
// 开始任务 
const handleBinda = (row) => {
  blinda.value = true;
hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/EngineeringService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.engineering.entity.Engineering;
import com.mes.glassinfo.entity.GlassInfo;
import java.util.List;
@@ -40,13 +41,19 @@
    Engineering selectInitiate(Integer state);
    Engineering selectInitiates(Integer state,Integer cell);
    /**
     * 查询是否有上片任务yw
     * 查询工程表是否已有工程号
     *
     * @return Engineering
     */
    Engineering selectUpInitiate(Integer state, Integer equipmentId);
    Engineering selectUpInitiate(String engineerId);
    /**
     * 查询小片表是否已有工程号
     *
     * @return Engineering
     */
    GlassInfo selectGlassinfoIsnull(String engineerId);
    /**
     * 查询上片任务
     *
     * @return Engineering
hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
@@ -7,6 +7,8 @@
import com.mes.engineering.entity.Engineering;
import com.mes.engineering.mapper.EngineeringMapper;
import com.mes.engineering.service.EngineeringService;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.mapper.GlassInfoMapper;
import com.mes.pp.entity.OptimizeProject;
import com.mes.pp.mapper.OptimizeProjectMapper;
import lombok.extern.slf4j.Slf4j;
@@ -33,6 +35,8 @@
    OptimizeProjectMapper optimizeProjectMapper;
    @Autowired
    private EngineeringMapper engineeringMapper;
    @Autowired
    private GlassInfoMapper glassInfoMapper;
    //开始/暂停任务
    @Override
@@ -114,8 +118,21 @@
    }
    @Override
    public Engineering selectUpInitiate(Integer state, Integer equipmentId) {
        return null;
    public Engineering selectUpInitiate(String engineerId) {
        QueryWrapper<Engineering> wrapper = new QueryWrapper<>();
        wrapper.eq("engineer_id", engineerId)
                .last("limit 1");
        return engineeringMapper.selectOne(wrapper);
    }
    @Override
    public GlassInfo selectGlassinfoIsnull(String engineerId) {
        QueryWrapper<GlassInfo> wrapper = new QueryWrapper<>();
        wrapper.eq("engineer_id", engineerId)
                .last("limit 1");
        return glassInfoMapper.selectOne(wrapper);
    }
    @Override
hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/entity/request/RawGlassRequest.java
@@ -39,4 +39,8 @@
     * 栅格号
     */
    private String slot;
    /**
     * 设备id
     */
    private Integer deviceId;
}
hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
@@ -104,14 +104,24 @@
    @Override
    public String UpdateQuantity(RawGlassRequest request) {
        update(
                new LambdaUpdateWrapper<RawGlassStorageDetails>()
                        .set(RawGlassStorageDetails::getRemainQuantity, request.getRemainQuantity())
                        .set(RawGlassStorageDetails::getPatternWidth, request.getPatternWidth())
                        .set(RawGlassStorageDetails::getPatternHeight, request.getPatternHeight())
                        .set(RawGlassStorageDetails::getPatternThickness, request.getPatternThickness())
                        .set(RawGlassStorageDetails::getFilmsId, request.getFilmsId())
                        .eq(RawGlassStorageDetails::getSlot, request.getSlot()));
        RawGlassStorageDetails one = getOne(new LambdaQueryWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getSlot, request.getSlot())
                .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN));
        if (null == one) {
            RawGlassStorageDetails details = new RawGlassStorageDetails();
            BeanUtils.copyProperties(request, details);
            details.setState(Const.RAW_GLASS_STATE_IN);
            save(details);
        }else{
            update(
                    new LambdaUpdateWrapper<RawGlassStorageDetails>()
                            .set(RawGlassStorageDetails::getRemainQuantity, request.getRemainQuantity())
                            .set(RawGlassStorageDetails::getPatternWidth, request.getPatternWidth())
                            .set(RawGlassStorageDetails::getPatternHeight, request.getPatternHeight())
                            .set(RawGlassStorageDetails::getPatternThickness, request.getPatternThickness())
                            .set(RawGlassStorageDetails::getFilmsId, request.getFilmsId())
                            .eq(RawGlassStorageDetails::getSlot, request.getSlot())
                            .eq(RawGlassStorageDetails::getSlot, Const.RAW_GLASS_STATE_IN));
        }
        return "success";
    }
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/service/impl/EdgStorageDeviceTaskHistoryServiceImpl.java
@@ -25,7 +25,7 @@
        LambdaQueryWrapper<EdgStorageDeviceTaskHistory> wrapper = new LambdaQueryWrapper<EdgStorageDeviceTaskHistory>()
                .eq(EdgStorageDeviceTaskHistory::getDeviceId, request.getDeviceId())
                .eq(StringUtils.checkValNotNull(request.getTaskState()), EdgStorageDeviceTaskHistory::getTaskState, request.getTaskState())
                .eq(StringUtils.checkValNotNull(request.getTaskType()), EdgStorageDeviceTaskHistory::getTaskState, request.getTaskType())
                .eq(StringUtils.checkValNotNull(request.getTaskType()), EdgStorageDeviceTaskHistory::getTaskType, request.getTaskType())
                .between(StringUtils.checkValNotNull(request.getStartTime()), EdgStorageDeviceTaskHistory::getCreateTime, request.getStartTime(),
                        request.getEndTime()).orderByDesc(EdgStorageDeviceTaskHistory::getCreateTime).last("limit 20");
        if (StringUtils.isNotBlank(request.getGlassId())) {
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -6,6 +6,7 @@
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.google.common.collect.Lists;
import com.mes.base.entity.vo.BigStorageVO;
import com.mes.bigstorage.entity.BigStorageCage;
import com.mes.bigstorage.entity.BigStorageCageDetails;
@@ -481,7 +482,11 @@
                    .orderByAsc(BigStorageCageDetails::getTemperingFeedSequence)
            );
            if (CollectionUtils.isNotEmpty(temperingGlassInfos)) {
                temperingGlassInfoService.saveBatch(temperingGlassInfos);
                //避免大量数据插入导致sqlserver数据库异常,分批次每调存储依次
                List<List<TemperingGlassInfo>> temperingGlassInfoLists = Lists.partition(temperingGlassInfos, 50);
                for (List<TemperingGlassInfo> item : temperingGlassInfoLists) {
                    temperingGlassInfoService.saveBatch(item);
                }
                return true;
            }
        }
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -184,7 +184,7 @@
        )
        select *
        from result
        order by engineer_id
        order by engineer_id,tempering_layout_id
    </select>
    <select id="queryIsAllNeedDispatchVirtualSlot" resultMap="virtualSlotSequenceDTO">
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/controller/RawGlassStorageDetailsController.java
@@ -41,17 +41,6 @@
                200, "入库已完成,等待任务执行", rawGlassStorageDetailsService.patternWarehousing(request));
    }
    @ApiOperation("更新剩余数量")
    @PostMapping("/updateQuantity")
    public Result<Object> updateQuantity(@Validated @RequestBody RawGlassRequest request) {
        return Result.success(rawGlassStorageDetailsService.UpdateQuantity(request));
    }
    @ApiOperation("删除原片")
    @PostMapping("/deleteWarehousing")
    public Result<Object> deleteWarehousing(@RequestBody Long slotId) {
        return Result.success(rawGlassStorageDetailsService.deleteWarehousing(slotId));
    }
    @ApiOperation("原片出库")
    @PostMapping("/outWarehousing")
@@ -78,4 +67,15 @@
    public Result<List<RawGlassStorageDetailsDTO>> patternUsage(String width, String height, String thickness, String films) {
        return Result.build(200, "查询成功", rawGlassStorageDetailsService.patternUsage(width, height, thickness, films));
    }
    @ApiOperation("更新剩余数量")
    @PostMapping("/updateQuantity")
    public Result<Object> updateQuantity(@Validated @RequestBody RawGlassRequest request) {
        return Result.success(rawGlassStorageDetailsService.UpdateQuantity(request));
    }
    @ApiOperation("删除原片")
    @PostMapping("/deleteWarehousing")
    public Result<Object> deleteWarehousing(@RequestBody Long slotId) {
        return Result.success(rawGlassStorageDetailsService.deleteWarehousing(slotId));
    }
}
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java
@@ -77,12 +77,14 @@
    public  Result <Boolean> changeTask(@RequestBody Engineering engineering) {
        log.info("engineeringId:{}", engineering);
        UpPattenUsage upPattenUsage = upPattenUsageService.selectedEngineering(engineering.getEngineerId());
        if (upPattenUsage != null) {
        Engineering engineerings = engineeringService.selectUpInitiate(engineering.getEngineerId());
        GlassInfo glassInfos = engineeringService.selectGlassinfoIsnull(engineering.getEngineerId());
        if (upPattenUsage != null && engineerings != null && glassInfos != null) {
            boolean work = engineeringService.changeTasks(engineering);
            List<UpPattenUsage> glass = upPattenUsageService.prioritylist();
            optimizeProjectService.changeTask(engineering.getEngineerId(), 200);
            return Result.build(200, "开始上片", work);
        } else {
        } else if (upPattenUsage == null && engineerings == null && glassInfos == null) {
            List<UpPattenUsage> upPattenUsages = upPattenUsageService.selectSaveUpPattenUsage(engineering.getEngineerId());
            log.info("将查询出的UpPattenUsage数据保存到数据库表里");
            upPattenUsageService.saveUpPattenUsage(upPattenUsages);
@@ -102,6 +104,11 @@
            }else {
                return Result.build(200, "保存失败"+engineering.getEngineerId(), false);
            }
        } else {
            upPattenUsageService.deleteTask(engineering.getEngineerId());
            engineeringService.deleteTask(engineering.getEngineerId());
            glassInfoService.deleteTask(engineering.getEngineerId());
            return Result.build(200, "请重新点击上片" + engineering.getEngineerId(), true);
        }
    }
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/controller/HollowBigStorageCageDetailsController.java
@@ -8,10 +8,7 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -50,5 +47,12 @@
        return Result.build(200, "破损/拿走成功", null);
    }
    @ApiOperation("中空理片笼格子禁用/启用")
    @GetMapping("/updateHollowStorageCageDisabled")
    public Result updateHollowStorageCageDisabled(int slot, int enableState) {
        hollowBigStorageCageDetailsService.updateHollowStorageCageDisabled(slot, enableState);
        return Result.build(200, "启用/禁用成功", 1);
    }
}
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowBigStorageCageDetailsService.java
@@ -55,5 +55,13 @@
     * @return
     */
    List<HollowBigStorageCageDetails> queryPairGlassList(String flowCardId, Integer totalLayer, Integer totalPairQuantity,Integer isOut);
    /**
     * 更新理片笼格子状态
     * @param slot
     * @param enableState
     * @return
     */
    Boolean updateHollowStorageCageDisabled(int slot, int enableState);
}
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java
@@ -7,6 +7,7 @@
import com.mes.common.config.Const;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.service.GlassInfoService;
import com.mes.hollow.entity.HollowBigStorageCage;
import com.mes.hollow.entity.HollowBigStorageCageDetails;
import com.mes.hollow.entity.HollowGlassRelationInfo;
import com.mes.hollow.entity.dto.*;
@@ -129,6 +130,13 @@
        return baseMapper.queryPairGlassList(flowCardId, totalLayer, totalPairQuantity, isOut);
    }
    @Override
    public Boolean updateHollowStorageCageDisabled(int slot, int enableState) {
        return hollowBigStorageCageService.update(new LambdaUpdateWrapper<HollowBigStorageCage>()
                .set(HollowBigStorageCage::getEnableState, enableState)
                .eq(HollowBigStorageCage::getSlot, slot));
    }
    private List<HollowBigStorageAndDetailsDTO> hollowBigStorageCageDetailsChild(String glassId, Integer deviceId, Integer slot, int state) {
        //将对应格子号的玻璃id置为101
        this.update(new LambdaUpdateWrapper<HollowBigStorageCageDetails>()