ZengTao
2025-03-05 db3d5331c74d29806622dd272630243a74745c82
Merge branch 'master' of http://10.153.19.25:10105/r/YiWuProject
14个文件已修改
317 ■■■■■ 已修改文件
UI-Project/src/assets/ganghuaqian.png 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/assets/zhongkong.png 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/lang/en.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/lang/py.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/lang/zh.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/GlassStorage/rawfilmstorage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Identify/identifwu.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Identify/identifwutwo.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Identify/identify.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Slicecage/slicecage.vue 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/hollow/hollowequipment.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/hollow/hollowequipmenttwo.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/hollow/hollowslicecage.vue 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/assets/ganghuaqian.png

UI-Project/src/assets/zhongkong.png

UI-Project/src/lang/en.js
@@ -132,6 +132,9 @@
          takeon:'The arrangement is complete',
      },
      searchOrder:{
          whethersame:'是否相同',
          same:'相同',
          notsame:'不相同',
          partask:'任务重置',
          partasks:'是否任务重置?',
          empty:'默认空任务',
UI-Project/src/lang/py.js
@@ -132,6 +132,9 @@
        takeaway: 'Взять вручную',
    },
    searchOrder: {
        whethersame:'是否相同',
        same:'相同',
        notsame:'不相同',
        partasks:'是否任务重置?',
        empty:'默认空任务',
        partask:'任务重置',
UI-Project/src/lang/zh.js
@@ -131,6 +131,9 @@
          takeon:'摆片完成',
      },
      searchOrder:{
          whethersame:'是否相同',
          same:'相同',
          notsame:'不相同',
          partask:'任务重置',
          partasks:'是否任务重置?',
          empty:'默认空任务',
UI-Project/src/views/GlassStorage/rawfilmstorage.vue
@@ -395,7 +395,7 @@
        <el-table height="300" ref="table"
        :data="tableDataa" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="id" align="center" :label="$t('film.enableid')"/>
          <el-table-column prop="originateSlot" align="center" :label="$t('film.originateslot')"/>
          <el-table-column prop="startSlot" align="center" :label="$t('film.originateslot')"/>
          <el-table-column prop="endSlot" align="center" :label="$t('film.endslot')"/>
          <el-table-column prop="patternQuantity" align="center" :label="$t('film.patternquantity')"/>
          <el-table-column
UI-Project/src/views/Identify/identifwu.vue
@@ -141,8 +141,8 @@
          if (existingRect) {
            return {
              ...existingRect,
              xAxisa: (6000 - (rect.xAxis + rect.edgWidth)) * scaleFactor * 1.1,
              yAxisa: rect.yAxis * scaleFactory * 1.1,
              xAxisa: rect.xAxis * scaleFactor * 1.1,
              yAxisa: (3300 - (rect.yAxis + rect.edgHeight + 300)) * scaleFactory * 1.1,
              width: rect.edgWidth * scaleFactor * 1.1,
              height: rect.edgHeight * scaleFactory * 1.1,
              widtha: rect.edgWidth,
@@ -154,8 +154,8 @@
            // 如果不存在,则添加新矩形,默认 isActive 为 false
            return {
              ...rect,
              xAxisa: (6000 - (rect.xAxis + rect.edgWidth)) * scaleFactor * 1.1,
              yAxisa: rect.yAxis * scaleFactory * 1.1,
              xAxisa: rect.xAxis * scaleFactor * 1.1,
              yAxisa: (3300 - (rect.yAxis + rect.edgHeight + 300)) * scaleFactory * 1.1,
              width: rect.edgWidth * scaleFactor * 1.1,
              height: rect.edgHeight * scaleFactory * 1.1,
              widtha: rect.edgWidth,
UI-Project/src/views/Identify/identifwutwo.vue
@@ -59,21 +59,20 @@
          if (existingRect) {
            return {
              ...existingRect,
              xAxisa: (6000 - (rect.xAxis + rect.edgWidth)) * scaleFactor * 1.1,
              yAxisa: rect.yAxis * scaleFactory * 1.1,
               xAxisa: rect.xAxis * scaleFactor * 1.1,
               yAxisa: (3300 - (rect.yAxis + rect.edgHeight + 300)) * scaleFactory * 1.1,
              width: rect.edgWidth * scaleFactor * 1.1,
              height: rect.edgHeight * scaleFactory * 1.1,
              widtha: rect.edgWidth,
              heighta: rect.edgHeight,
              state: rect.state,
              // 保持 isActive 状态不变
            };
          } else {
            // 如果不存在,则添加新矩形,默认 isActive 为 false
            return {
              ...rect,
              xAxisa: (6000 - (rect.xAxis + rect.edgWidth)) * scaleFactor * 1.1,
              yAxisa: rect.yAxis * scaleFactory * 1.1,
               xAxisa: rect.xAxis * scaleFactor * 1.1,
               yAxisa: (3300 - (rect.yAxis + rect.edgHeight + 300)) * scaleFactory * 1.1,
              width: rect.edgWidth * scaleFactor * 1.1,
              height: rect.edgHeight * scaleFactory * 1.1,
              widtha: rect.edgWidth,
UI-Project/src/views/Identify/identify.vue
@@ -161,8 +161,10 @@
      const scaleFactory =  750/3300; 
      adjustedRects.value = rawRects.map(rect => ({
        ...rect,
        xaxisa: (6000 -(rect.xaxis + rect.edgWidth)) * scaleFactor * 1.1,
        yaxisa: rect.yaxis * scaleFactory * 1.1,
        xaxisa: rect.xaxis * scaleFactor * 1.1,
        yaxisa: (3300 - (rect.yaxis + rect.edgHeight + 300)) * scaleFactory * 1.1,
        // xaxisa: (6000 -(rect.xaxis + rect.edgWidth)) * scaleFactor * 1.1,
        // yaxisa: rect.yaxis * scaleFactory * 1.1,
        width: rect.edgWidth * scaleFactor  * 1.1,
        widtha: rect.edgWidth ,
        heighta: rect.edgHeight ,
@@ -184,8 +186,8 @@
      const scaleFactory =  750/3300; 
      adjustedRects.value = rawRects.map(rect => ({  
        ...rect,
        xaxisa: (6000 -(rect.xaxis + rect.edgWidth)) * scaleFactor * 1.1,
        yaxisa: rect.yaxis * scaleFactory * 1.1,
        xaxisa: rect.xaxis * scaleFactor * 1.1,
        yaxisa: (3300 - (rect.yaxis + rect.edgHeight + 300)) * scaleFactory * 1.1,
        width: rect.edgWidth * scaleFactor  * 1.1,
        widtha: rect.edgWidth ,
        heighta: rect.edgHeight ,
UI-Project/src/views/Slicecage/slicecage.vue
@@ -879,7 +879,7 @@
const rectStyle = (rect, index) => ({
  position: 'absolute',
  width: '170px',
  left: '0px',
  right: '0px',
  top: `${index*rect.top}px`,
  height: `${rect.height}px`,
});
@@ -895,24 +895,24 @@
// 计算每个小矩形的样式
const subRectStyle = (rectIndex, subIndex) => {
  const width = '18px';
  const marginLeft = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginLeft));
  const left = `${(subIndex * (parseInt(width) + parseInt(marginLeft))) / totalWidth * 100}%`;
  const marginRight = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginRight));
  const right = `${(subIndex * (parseInt(width) + parseInt(marginRight))) / totalWidth * 100}%`;
  return {
    position: 'absolute',
    width,
    height: '100%',
    marginLeft,
    marginRight,
    top: '0px',
    backgroundColor: '#911005',
    left,
    right,
  };
};
// 计算每个大矩形的样式
const rectStylea = (rect, index) => ({
  position: 'absolute',
  width: '170px',
  left: '0px',
  right: '0px',
  top: `${index*rect.top}px`,
  height: `${rect.height}px`,
});
@@ -928,24 +928,24 @@
// 计算每个小矩形的样式
const subRectStylea = (rectIndex, subIndex) => {
  const width = '18px';
  const marginLeft = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginLeft));
  const left = `${(subIndex * (parseInt(width) + parseInt(marginLeft))) / totalWidth * 100}%`;
  const marginRight = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginRight));
  const right = `${(subIndex * (parseInt(width) + parseInt(marginRight))) / totalWidth * 100}%`;
  return {
    position: 'absolute',
    width,
    height: '100%',
    marginLeft,
    marginRight,
    top: '0px',
    backgroundColor: '#911005',
    left,
    right,
  };
};
// 计算每个大矩形的样式
const rectStyleb = (rect, index) => ({
  position: 'absolute',
  width: '170px',
  left: '0px',
  right: '0px',
  top: `${index*rect.top}px`,
  height: `${rect.height}px`,
});
@@ -961,24 +961,24 @@
// 计算每个小矩形的样式
const subRectStyleb = (rectIndex, subIndex) => {
  const width = '18px';
  const marginLeft = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginLeft));
  const left = `${(subIndex * (parseInt(width) + parseInt(marginLeft))) / totalWidth * 100}%`;
  const marginRight = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginRight));
  const right = `${(subIndex * (parseInt(width) + parseInt(marginRight))) / totalWidth * 100}%`;
  return {
    position: 'absolute',
    width,
    height: '100%',
    marginLeft,
    marginRight,
    top: '0px',
    backgroundColor: '#911005',
    left,
    right,
  };
};
// 计算每个大矩形的样式
const rectStylec = (rect, index) => ({
  position: 'absolute',
  width: '170px',
  left: '0px',
  right: '0px',
  top: `${index*rect.top}px`,
  height: `${rect.height}px`,
});
@@ -994,17 +994,17 @@
// 计算每个小矩形的样式
const subRectStylec = (rectIndex, subIndex) => {
  const width = '18px';
  const marginLeft = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginLeft));
  const left = `${(subIndex * (parseInt(width) + parseInt(marginLeft))) / totalWidth * 100}%`;
  const marginRight = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginRight));
  const right = `${(subIndex * (parseInt(width) + parseInt(marginRight))) / totalWidth * 100}%`;
  return {
    position: 'absolute',
    width,
    height: '100%',
    marginLeft,
    marginRight,
    top: '0px',
    backgroundColor: '#911005',
    left,
    right,
  };
};
onMounted(() => {
@@ -1065,6 +1065,28 @@
    return t('searchOrder.waiting');
  }  
}
function getcasOnea(isSame) {
  switch (isSame) {
    case 1:
      return 'danger';
    case 0:
      return 'info';
  }
}
function getStatuscasOnea(isSame) {
  switch (isSame) {
    case 1:
      return t('searchOrder.same');
    case 0:
      return t('searchOrder.notsame');
  }
}
function tableRowClassName({ row }) {
  if (row.isSame === 1) {
    return 'row-red-background'; // 设置红色背景
  }
  return '';
}
onBeforeUnmount(() => {
  closeWebSocket();
});
@@ -1112,6 +1134,7 @@
    <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;" v-loading="loading">
      <el-table height="300px" ref="table" 
        @selection-change="handleSelectionChange"
        :row-class-name="tableRowClassName"
        :data="tableDatad" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="glassId" align="center" :label="$t('searchOrder.intoglassid')" min-width="140" />
          <el-table-column prop="startSlot" align="center" :label="$t('searchOrder.startposition')" min-width="120" />
@@ -1120,6 +1143,13 @@
          <template #default="scope">
            <el-tag type="success" >{{ scope.row.taskState==0? $t('searchOrder.filmenter') : $t('searchOrder.infilm') }}</el-tag>
          </template>
          </el-table-column>
          <el-table-column prop="isSame" align="center" :label="$t('searchOrder.whethersame')" min-width="120">
          <template #default="scope">
        <el-tag :type="getcasOnea(scope.row.isSame)">
          {{ getStatuscasOnea(scope.row.isSame) }}
        </el-tag>
      </template>
          </el-table-column>
        </el-table>
            </el-card>
@@ -1138,7 +1168,7 @@
    </div>
<!-- // 父级框 -->
<div class="img-dlpl" >
    <div class="img-car1" :style="'z-index:999;left:375px;top:' + 350*carPosition[0] + 'px;position:absolute;'">
    <div class="img-car1" :style="'z-index:999;left:290px;top:' + 350*carPosition[0] + 'px;position:absolute;'">
      <div  
      v-for="(rect, index) in adjusta"  
      :key="rect.id"  
@@ -1152,7 +1182,7 @@
    >
    </div>
    </div>
    <div class="img-car4" :style="'z-index:999;left:770px;top:' + 350*carPosition[1] + 'px;position:absolute;'">
    <div class="img-car4" :style="'z-index:999;left:735px;top:' + 350*carPosition[1] + 'px;position:absolute;'">
      <div  
      v-for="(rect, index) in adjust"  
      :key="rect.id"  
@@ -1167,7 +1197,7 @@
    </div>
    </div>
    <div style="position: relative;">
    <div v-show="cell1" style="width: 170px;height: 53px;position: relative;top:63px;left: 585px;">
    <div v-show="cell1" style="width: 170px;height: 53px;position: relative;top:63px;left: 525px;">
      <div v-for="(rect, rectIndex) in adjustedRects" :key="rect.id" :style="rectStyle(rect, rectIndex)">
    <div
      v-for="(subRect, subIndex) in getSubRects(rectIndex)"
@@ -1176,7 +1206,7 @@
    ></div>
    </div>
    </div>
 <div v-show="cell2" style="width: 170px;height: 53px;position: relative;top:67px;left: 585px;">
 <div v-show="cell2" style="width: 170px;height: 53px;position: relative;top:67px;left: 525px;">
    <div v-for="(rect, rectIndex) in adjustedRectsa" :key="rect.id" :style="rectStylea(rect, rectIndex)">
    <div
      v-for="(subRect, subIndex) in getSubRectsa(rectIndex)"
@@ -1185,7 +1215,7 @@
    ></div>
    </div>
    </div>
  <div v-show="cell3" style="width: 170px;height: 53px;position: relative;top:72px;left: 585px;">
  <div v-show="cell3" style="width: 170px;height: 53px;position: relative;top:72px;left: 525px;">
    <div v-for="(rect, rectIndex) in adjustedRectsb" :key="rect.id" :style="rectStyleb(rect, rectIndex)">
    <div
      v-for="(subRect, subIndex) in getSubRectsb(rectIndex)"
@@ -1194,7 +1224,7 @@
    ></div>
    </div>
    </div>
  <div v-show="cell4" style="width: 170px;height: 53px;position: relative;top:77px;left: 585px;">
  <div v-show="cell4" style="width: 170px;height: 53px;position: relative;top:77px;left: 525px;">
    <div v-for="(rect, rectIndex) in adjustedRectsc" :key="rect.id" :style="rectStylec(rect, rectIndex)">
    <div
      v-for="(subRect, subIndex) in getSubRectsc(rectIndex)"
@@ -1680,7 +1710,7 @@
                 :printGlassId="printGlassId" style=""/>
  </el-dialog>
</template>
<style scoped>
<style>
#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
#dialog-footer{
@@ -1826,4 +1856,7 @@
  margin-top: 20px;
  margin-bottom: 10px;
}
.row-red-background {
  background-color: #CDAF95 !important;
}
</style>
UI-Project/src/views/hollow/hollowequipment.vue
@@ -1112,6 +1112,7 @@
};
onMounted(() => {
  socket = initializeWebSocket(socketUrl, handleMessage);
  window.localStorage.setItem('flowCardId', '')
});
onUnmounted(() => {
  if (socket) {
UI-Project/src/views/hollow/hollowequipmenttwo.vue
@@ -587,6 +587,7 @@
};
onMounted(() => {
  socket = initializeWebSocket(socketUrl, handleMessage);
  window.localStorage.setItem('flowCardId', '')
});
onUnmounted(() => {
  if (socket) {
UI-Project/src/views/hollow/hollowslicecage.vue
@@ -409,7 +409,7 @@
const rectStyle = (rect, index) => ({
  position: 'absolute',
  width: '170px',
  left: '0px',
  right: '0px',
  top: `${index*rect.top}px`,
  height: `${rect.height}px`,
});
@@ -425,24 +425,24 @@
// 计算每个小矩形的样式
const subRectStyle = (rectIndex, subIndex) => {
  const width = '18px';
  const marginLeft = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginLeft));
  const left = `${(subIndex * (parseInt(width) + parseInt(marginLeft))) / totalWidth * 100}%`;
  const marginRight = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginRight));
  const right = `${(subIndex * (parseInt(width) + parseInt(marginRight))) / totalWidth * 100}%`;
  return {
    position: 'absolute',
    width,
    height: '100%',
    marginLeft,
    marginRight,
    top: '0px',
    backgroundColor: '#911005',
    left,
    right,
  };
};
// 计算每个大矩形的样式
const rectStylea = (rect, index) => ({
  position: 'absolute',
  width: '170px',
  left: '0px',
  right: '0px',
  top: `${index*rect.top}px`,
  height: `${rect.height}px`,
});
@@ -458,24 +458,24 @@
// 计算每个小矩形的样式
const subRectStylea = (rectIndex, subIndex) => {
  const width = '18px';
  const marginLeft = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginLeft));
  const left = `${(subIndex * (parseInt(width) + parseInt(marginLeft))) / totalWidth * 100}%`;
  const marginRight = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginRight));
  const right = `${(subIndex * (parseInt(width) + parseInt(marginRight))) / totalWidth * 100}%`;
  return {
    position: 'absolute',
    width,
    height: '100%',
    marginLeft,
    marginRight,
    top: '0px',
    backgroundColor: '#911005',
    left,
    right,
  };
};
// 计算每个大矩形的样式
const rectStyleb = (rect, index) => ({
  position: 'absolute',
  width: '170px',
  left: '0px',
  right: '0px',
  top: `${index*rect.top}px`,
  height: `${rect.height}px`,
});
@@ -491,24 +491,24 @@
// 计算每个小矩形的样式
const subRectStyleb = (rectIndex, subIndex) => {
  const width = '18px';
  const marginLeft = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginLeft));
  const left = `${(subIndex * (parseInt(width) + parseInt(marginLeft))) / totalWidth * 100}%`;
  const marginRight = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginRight));
  const right = `${(subIndex * (parseInt(width) + parseInt(marginRight))) / totalWidth * 100}%`;
  return {
    position: 'absolute',
    width,
    height: '100%',
    marginLeft,
    marginRight,
    top: '0px',
    backgroundColor: '#911005',
    left,
    right,
  };
};
// 计算每个大矩形的样式
const rectStylec = (rect, index) => ({
  position: 'absolute',
  width: '170px',
  left: '0px',
  right: '0px',
  top: `${index*rect.top}px`,
  height: `${rect.height}px`,
});
@@ -524,24 +524,24 @@
// 计算每个小矩形的样式
const subRectStylec = (rectIndex, subIndex) => {
  const width = '18px';
  const marginLeft = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginLeft));
  const left = `${(subIndex * (parseInt(width) + parseInt(marginLeft))) / totalWidth * 100}%`;
  const marginRight = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginRight));
  const right = `${(subIndex * (parseInt(width) + parseInt(marginRight))) / totalWidth * 100}%`;
  return {
    position: 'absolute',
    width,
    height: '100%',
    marginLeft,
    marginRight,
    top: '0px',
    backgroundColor: '#911005',
    left,
    right,
  };
};
// 计算每个大矩形的样式
const rectStyled = (rect, index) => ({
  position: 'absolute',
  width: '170px',
  left: '0px',
  right: '0px',
  top: `${index*rect.top}px`,
  height: `${rect.height}px`,
});
@@ -557,9 +557,9 @@
// 计算每个小矩形的样式
const subRectStyled = (rectIndex, subIndex) => {
  const width = '18px';
  const marginLeft = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginLeft));
  const left = `${(subIndex * (parseInt(width) + parseInt(marginLeft))) / totalWidth * 100}%`;
  const marginRight = '8px';
  const totalWidth = 6 * (parseInt(width) + parseInt(marginRight));
  const right = `${(subIndex * (parseInt(width) + parseInt(marginRight))) / totalWidth * 100}%`;
  return {
    position: 'absolute',
    width,
@@ -567,7 +567,7 @@
    marginLeft,
    top: '0px',
    backgroundColor: '#911005',
    left,
    right,
  };
};
onMounted(() => {
@@ -593,6 +593,28 @@
    case 102:  
      return t('searchOrder.rengongxp'); 
  }  
}
function getcasOnea(isSame) {
  switch (isSame) {
    case 1:
      return 'danger';
    case 0:
      return 'info';
  }
}
function getStatuscasOnea(isSame) {
  switch (isSame) {
    case 1:
      return t('searchOrder.same');
    case 0:
      return t('searchOrder.notsame');
  }
}
function tableRowClassName({ row }) {
  if (row.isSame === 1) {
    return 'row-red-background'; // 设置红色背景
  }
  return '';
}
onBeforeUnmount(() => {
  closeWebSocket();
@@ -637,6 +659,7 @@
    <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;" v-loading="loading">
      <el-table height="300px" ref="table" 
        @selection-change="handleSelectionChange"
        :row-class-name="tableRowClassName"
        :data="tableDatad" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="glassId" align="center" :label="$t('searchOrder.intoglassid')" min-width="140" />
          <el-table-column prop="startSlot" align="center" :label="$t('searchOrder.startposition')" min-width="120" />
@@ -645,6 +668,13 @@
          <template #default="scope">
            <el-tag type="success" >{{ scope.row.taskState==0? $t('searchOrder.filmenter') : $t('searchOrder.infilm') }}</el-tag>
          </template>
          </el-table-column>
          <el-table-column prop="isSame" align="center" :label="$t('searchOrder.whethersame')" min-width="120">
          <template #default="scope">
        <el-tag :type="getcasOnea(scope.row.isSame)">
          {{ getStatuscasOnea(scope.row.isSame) }}
        </el-tag>
      </template>
          </el-table-column>
        </el-table>
            </el-card>
@@ -663,7 +693,7 @@
    </div>
<!-- // 父级框 -->
<div class="img-dlpl" >
    <div class="img-car1" :style="'z-index:999;left:475px;top:' + 1700*carPosition[0] + 'px;position:absolute;'">
    <div class="img-car1" :style="'z-index:999;left:305px;top:' + 1700*carPosition[0] + 'px;position:absolute;'">
      <div  
      v-for="(rect, index) in adjusta"  
      :key="rect.id"  
@@ -677,7 +707,7 @@
    >
    </div>
    </div>
    <div class="img-car4" :style="'z-index:999;left:890px;top:' + 600*carPosition[1] + 'px;position:absolute;'">
    <div class="img-car4" :style="'z-index:999;left:730px;top:' + 600*carPosition[1] + 'px;position:absolute;'">
      <div  
      v-for="(rect, index) in adjust"  
      :key="rect.id"  
@@ -692,7 +722,7 @@
    </div>
    </div>
    <div style="position: relative;">
    <div v-show="cell1" style="width: 170px;height: 46px;position: relative;top:387px;left: 690px;">
    <div v-show="cell1" style="width: 170px;height: 46px;position: relative;top:387px;left: 523px;">
      <div v-for="(rect, rectIndex) in adjustedRects" :key="rect.id" :style="rectStyle(rect, rectIndex)">
    <div
      v-for="(subRect, subIndex) in getSubRects(rectIndex)"
@@ -701,7 +731,7 @@
    ></div>
    </div>
    </div>
 <div v-show="cell2" style="width: 170px;height: 46px;position: relative;top:389px;left: 690px;">
 <div v-show="cell2" style="width: 170px;height: 46px;position: relative;top:389px;left: 523px;">
  <div v-for="(rect, rectIndex) in adjustedRectsa" :key="rect.id" :style="rectStylea(rect, rectIndex)">
    <div
      v-for="(subRect, subIndex) in getSubRectsa(rectIndex)"
@@ -710,7 +740,7 @@
    ></div>
    </div>
    </div>
  <div v-show="cell3" style="width: 170px;height: 46px;position: relative;top:391px;left: 690px;">
  <div v-show="cell3" style="width: 170px;height: 46px;position: relative;top:391px;left: 523px;">
    <div v-for="(rect, rectIndex) in adjustedRectsb" :key="rect.id" :style="rectStyleb(rect, rectIndex)">
    <div
      v-for="(subRect, subIndex) in getSubRectsb(rectIndex)"
@@ -719,7 +749,7 @@
    ></div>
    </div>
    </div>
  <div v-show="cell4" style="width: 170px;height: 46px;position: relative;top:392px;left: 690px;">
  <div v-show="cell4" style="width: 170px;height: 46px;position: relative;top:392px;left: 523px;">
    <div v-for="(rect, rectIndex) in adjustedRectsc" :key="rect.id" :style="rectStylec(rect, rectIndex)">
    <div
      v-for="(subRect, subIndex) in getSubRectsc(rectIndex)"
@@ -728,7 +758,7 @@
    ></div>
    </div>
    </div>
  <div v-show="cell5" style="width: 170px;height: 46px;position: relative;top:394px;left: 690px;">
  <div v-show="cell5" style="width: 170px;height: 46px;position: relative;top:394px;left: 523px;">
    <div v-for="(rect, rectIndex) in adjustedRectsd" :key="rect.id" :style="rectStyled(rect, rectIndex)">
    <div
      v-for="(subRect, subIndex) in getSubRectsd(rectIndex)"
@@ -903,7 +933,7 @@
  </div>
  </el-dialog>
</template>
<style scoped>
<style>
#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
#dialog-footer{
@@ -1001,9 +1031,9 @@
  background-repeat: no-repeat;
  background-attachment: local;
  min-height: 700px;
  width: 1200px;
  width: 1000px;
  max-width: 100%;
  background-size: 1200px 700px;
  background-size: 1000px 700px;
  overflow: hidden;
  position:relative
}
@@ -1049,4 +1079,7 @@
  margin-top: 20px;
  margin-bottom: 10px;
}
.row-red-background {
  background-color: #CDAF95 !important;
}
</style>
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java
@@ -28,6 +28,7 @@
import freemarker.template.Version;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -59,6 +60,12 @@
    @Resource
    RedisUtil redisUtil;
    @Value("${mes.glassGap}")
    private Integer glassGap;
    @Value("${mes.carWidth}")
    private Integer carWidth;
    private static final int ID_RATIO = 10;
@@ -328,20 +335,45 @@
                .queryOutGlassList(request.getFlowCardId(), request.getCell());
        int isPairCount = glassInfo.getTotalLayer() * request.getTotalPairQuantity();
        List<HollowGlassQueueInfo> hollowQueues = new ArrayList<>();
        loop:
        for (HollowBigStorageCageDetails queue : hollowBigStorageCageDetailsList) {
            HollowGlassQueueInfo queueInfo = new HollowGlassQueueInfo();
            BeanUtils.copyProperties(queue, queueInfo);
            queueInfo.setRelationId(info.getId());
            queueInfo.setState(Const.TEMPERING_NEW);
            queueInfo.setCell(request.getCell());
            queueInfo.setCreateTime(new Date());
            queueInfo.setUpdateTime(new Date());
            hollowQueues.add(queueInfo);
            if (queue.getIsPair() == 1) {
                isPairCount -= 1;
                if (isPairCount == 0) {
                    break loop;
        if (930 == request.getCell()) {
            Map<Integer, List<HollowBigStorageCageDetails>> listMap = hollowBigStorageCageDetailsList.stream()
                    .collect(Collectors.groupingBy(HollowBigStorageCageDetails::getHollowSequence));
            for (Map.Entry<Integer, List<HollowBigStorageCageDetails>> entry : listMap.entrySet()) {
                //创建队列接收不满足成对情况下:一对玻璃分几次上车的次序问题
                List<HollowGlassQueueInfo> tempList = new ArrayList<>();
                //先将玻璃按照正常顺序排列,计算一车最多放几块,算好块数之后将一车的玻璃按照倒序存储
                List<HollowBigStorageCageDetails> reverse = CollectionUtil.reverse(entry.getValue());
                int remainWidth = carWidth;
                for (HollowBigStorageCageDetails item : reverse) {
                    remainWidth = remainWidth - (int) Math.max(item.getWidth(), item.getHeight());
                    if (remainWidth < 0) {
                        tempList = CollectionUtil.reverse(tempList);
                        remainWidth = carWidth - (int) Math.max(item.getWidth(), item.getHeight());
                    }
                    HollowGlassQueueInfo queueInfo = HollowBDetailToQueue(item, info.getId(), request.getCell());
                    tempList.add(queueInfo);
                    remainWidth = remainWidth - glassGap;
                }
                hollowQueues.addAll(tempList);
                HollowBigStorageCageDetails cageDetails = entry.getValue().get(0);
                if (cageDetails.getIsPair() == 1) {
                    isPairCount = isPairCount - cageDetails.getTotalLayer();
                    if (isPairCount == 0) {
                        break;
                    }
                }
            }
        } else {
            loop:
            for (HollowBigStorageCageDetails item : hollowBigStorageCageDetailsList) {
                HollowGlassQueueInfo queueInfo = HollowBDetailToQueue(item, info.getId(), request.getCell());
                hollowQueues.add(queueInfo);
                if (item.getIsPair() == 1) {
                    isPairCount = isPairCount - 1;
                    if (isPairCount == 0) {
                        break loop;
                    }
                }
            }
        }
@@ -355,5 +387,16 @@
        }
        return info;
    }
    private HollowGlassQueueInfo HollowBDetailToQueue(HollowBigStorageCageDetails details, Long taskId, int targetCell) {
        HollowGlassQueueInfo queueInfo = new HollowGlassQueueInfo();
        BeanUtils.copyProperties(details, queueInfo);
        queueInfo.setRelationId(taskId);
        queueInfo.setState(Const.TEMPERING_NEW);
        queueInfo.setCell(targetCell);
        queueInfo.setCreateTime(new Date());
        queueInfo.setUpdateTime(new Date());
        return queueInfo;
    }
}