ZengTao
2025-02-26 e3c5944d166e30ec48af7df752601c50c9944046
Merge branch 'master' of http://10.153.19.25:10105/r/YiWuProject

# Conflicts:
# UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
16个文件已修改
439 ■■■■■ 已修改文件
UI-Project/src/views/PurchaseReturn/purchaseStorage.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Slicecage/slicecage.vue 309 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/entity/request/RawGlassRequest.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/controller/RawGlassStorageDetailsController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowBigStorageCageDetailsService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
@@ -24,7 +24,7 @@
      @click="showDialog(rect.glassId)"  
      :style="{ position: 'absolute', 
      top: `${rect.y}px`, left: `${rect.x}px`, width: `${rect.width}px`, height: `${rect.height}px`,
      backgroundColor: rect.isActive ? '#ADFF2F' : getRectColor(rect.state)
      backgroundColor: rect.isActive ? '#ADFF2F' : getRectColor(rect.status)
       }"  
    >
     <div  class="centered-text">
@@ -36,11 +36,11 @@
   </div>
      </el-scrollbar>
      <el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose">
        <el-button :disabled="currentGlassRect?.state === 8 || currentGlassRect?.state === 9" type="warning"
        <el-button :disabled="currentGlassRect?.status === 8 || currentGlassRect?.status === 9" type="warning"
                   plain :icon="Delete" @click="handleDamage(currentGlassId)" style="width: 140px;margin-left: 10px;">
          {{ $t('order.dilapidation') }}
        </el-button>
        <el-button :disabled="currentGlassRect?.state === 9 || currentGlassRect?.state === 8" type="danger"
        <el-button :disabled="currentGlassRect?.status === 9 || currentGlassRect?.status === 8" type="danger"
                   plain @click="handleManualTake(currentGlassId)" style="width: 140px;margin-top: 10px;">
          <el-icon class="el-icon--right">
            <Upload/>
@@ -95,7 +95,7 @@
  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', {
      glassId: currentGlassId.value,
      line: 4001,
      state: 8,
      status: 8,
      workingProcedure: '钢化',
    })
    if (response.code == 200) {
@@ -117,7 +117,7 @@
  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', {
      glassId: currentGlassId.value,
      line: 4001,
      state: 9,
      status: 9,
      workingProcedure: '钢化',
    })
    if (response.code == 200) {
@@ -236,8 +236,8 @@
    adjustedRects.value = adjustedRectsData;
    } 
};
function getRectColor(state: number): string {
  switch (state) {
function getRectColor(status: number): string {
  switch (status) {
    case -1:
      return '#CDAF95';
    case 0:
@@ -260,7 +260,7 @@
function updateRectStatus(glassId: string, status: number) {  
  adjustedRects.value.forEach(rect => {  
    if (rect.glassId === glassId) {  
      rect.state = status; // 更新矩形的状态
      rect.status = status; // 更新矩形的状态
    }  
  });  
}
UI-Project/src/views/Slicecage/slicecage.vue
@@ -43,13 +43,17 @@
const diaodu = ref('')
const flowCardId = ref('')
const filmsId = ref('')
const adjustedRects = ref([]);
const project = ref([]);
const adjust = ref([]);
const adjusta = ref([]);
const adjustedRects = ref([]);
const adjustedRectsa = ref([]);
const adjustedRectsb = ref([]);
const adjustedRectsc = ref([]);
const subRectsCounts = ref([]);
const subRectsCountsa = ref([]);
const subRectsCountsb = ref([]);
const subRectsCountsc = ref([]);
const currentRow = reactive({}); // 当前行的数据 
const currentPage2 = ref(1)
const inputValuesa = reactive({});
@@ -840,31 +844,168 @@
  ganghua.value = ''
  }
  if(data.bigStorageCageInfos!=null){
    window.localStorage.setItem('length', data.bigStorageCageInfos[0][1].length)
  let length = window.localStorage.getItem('length')
  adjustedRects.value = data.bigStorageCageInfos[0][1].map(rect => ({
            ...rect,
            height: 20/length,
            top: 29/length
          }));
adjustedRectsa.value = data.bigStorageCageInfos[0][2].map(rect => ({
            ...rect,
            height: 20/length,
            top: 29/length
          }));
adjustedRectsb.value = data.bigStorageCageInfos[0][3].map(rect => ({
            ...rect,
            height: 20/length,
            top: 29/length
          }));
adjustedRectsc.value = data.bigStorageCageInfos[0][4].map(rect => ({
            ...rect,
            height: 20/length,
            top: 29/length
          }));
  adjustedRects.value = data.bigStorageCageInfos[0][1].map((rect, index) => ({
    id: index + 1,
    height: 20/55,
    top: 53/55,
  }));
subRectsCounts.value = data.bigStorageCageInfos[0][1].map(rect => rect.count);
adjustedRectsa.value = data.bigStorageCageInfos[0][2].map((rect, index) => ({
    id: index + 1,
    height: 20/55,
    top: 53/55,
  }));
subRectsCountsa.value = data.bigStorageCageInfos[0][2].map(rect => rect.count);
adjustedRectsb.value = data.bigStorageCageInfos[0][3].map((rect, index) => ({
    id: index + 1,
    height: 20/55,
    top: 53/55,
  }));
subRectsCountsb.value = data.bigStorageCageInfos[0][3].map(rect => rect.count);
adjustedRectsc.value = data.bigStorageCageInfos[0][4].map((rect, index) => ({
    id: index + 1,
    height: 20/55,
    top: 53/55,
  }));
subRectsCountsc.value = data.bigStorageCageInfos[0][4].map(rect => rect.count);
  }else{
    adjustedRects.value = ''
    adjustedRects.value = '',
    adjustedRectsa.value = '',
    adjustedRectsb.value = '',
    adjustedRectsc.value = ''
  }
};
// 计算每个大矩形的样式
const rectStyle = (rect, index) => ({
  position: 'absolute',
  width: '170px',
  left: '0px',
  top: `${index*rect.top}px`,
  height: `${rect.height}px`,
});
// 计算每个小矩形的样式和数量
const getSubRects = (rectIndex) => {
  const count = subRectsCounts.value[rectIndex];
  const subRects = [];
  for (let i = 0; i < count; i++) {
    subRects.push({});
  }
  return subRects;
};
// 计算每个小矩形的样式
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}%`;
  return {
    position: 'absolute',
    width,
    height: '100%',
    marginLeft,
    top: '0px',
    backgroundColor: '#911005',
    left,
  };
};
// 计算每个大矩形的样式
const rectStylea = (rect, index) => ({
  position: 'absolute',
  width: '170px',
  left: '0px',
  top: `${index*rect.top}px`,
  height: `${rect.height}px`,
});
// 计算每个小矩形的样式和数量
const getSubRectsa = (rectIndex) => {
  const count = subRectsCountsa.value[rectIndex];
  const subRects = [];
  for (let i = 0; i < count; i++) {
    subRects.push({});
  }
  return subRects;
};
// 计算每个小矩形的样式
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}%`;
  return {
    position: 'absolute',
    width,
    height: '100%',
    marginLeft,
    top: '0px',
    backgroundColor: '#911005',
    left,
  };
};
// 计算每个大矩形的样式
const rectStyleb = (rect, index) => ({
  position: 'absolute',
  width: '170px',
  left: '0px',
  top: `${index*rect.top}px`,
  height: `${rect.height}px`,
});
// 计算每个小矩形的样式和数量
const getSubRectsb = (rectIndex) => {
  const count = subRectsCountsb.value[rectIndex];
  const subRects = [];
  for (let i = 0; i < count; i++) {
    subRects.push({});
  }
  return subRects;
};
// 计算每个小矩形的样式
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}%`;
  return {
    position: 'absolute',
    width,
    height: '100%',
    marginLeft,
    top: '0px',
    backgroundColor: '#911005',
    left,
  };
};
// 计算每个大矩形的样式
const rectStylec = (rect, index) => ({
  position: 'absolute',
  width: '170px',
  left: '0px',
  top: `${index*rect.top}px`,
  height: `${rect.height}px`,
});
// 计算每个小矩形的样式和数量
const getSubRectsc = (rectIndex) => {
  const count = subRectsCountsc.value[rectIndex];
  const subRects = [];
  for (let i = 0; i < count; i++) {
    subRects.push({});
  }
  return subRects;
};
// 计算每个小矩形的样式
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}%`;
  return {
    position: 'absolute',
    width,
    height: '100%',
    marginLeft,
    top: '0px',
    backgroundColor: '#911005',
    left,
  };
};
onMounted(() => {
  socket = initializeWebSocket(socketUrl, handleMessage);
@@ -1027,111 +1168,39 @@
    </div>
    <div style="position: relative;">
    <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: '200px',
       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 v-for="(rect, rectIndex) in adjustedRects" :key="rect.id" :style="rectStyle(rect, rectIndex)">
    <div
      v-for="(subRect, subIndex) in getSubRects(rectIndex)"
      :key="subIndex"
      :style="subRectStyle(rectIndex, subIndex)"
    ></div>
    </div>
    </div>
 <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"
      :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 v-for="(rect, rectIndex) in adjustedRectsa" :key="rect.id" :style="rectStylea(rect, rectIndex)">
    <div
      v-for="(subRect, subIndex) in getSubRectsa(rectIndex)"
      :key="subIndex"
      :style="subRectStylea(rectIndex, subIndex)"
    ></div>
    </div>
    </div>
  <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"
      :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 v-for="(rect, rectIndex) in adjustedRectsb" :key="rect.id" :style="rectStyleb(rect, rectIndex)">
    <div
      v-for="(subRect, subIndex) in getSubRectsb(rectIndex)"
      :key="subIndex"
      :style="subRectStyleb(rectIndex, subIndex)"
    ></div>
    </div>
    </div>
  <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 v-for="(rect, rectIndex) in adjustedRectsc" :key="rect.id" :style="rectStylec(rect, rectIndex)">
    <div
      v-for="(subRect, subIndex) in getSubRectsc(rectIndex)"
      :key="subIndex"
      :style="subRectStylec(rectIndex, subIndex)"
    ></div>
    </div>
    </div>
</div>
hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -109,8 +109,8 @@
     * 大理片笼任务类型
     * 1、钢化前进片
     * 2、钢化前出片
     * 3、钢化后进片
     * 4、钢化后出片
     * 4、钢化后进片
     * 5、钢化后出片
     */
    public static final Integer BIG_STORAGE_BEFORE_IN = 1;
    public static final Integer BIG_STORAGE_BEFORE_OUT = 2;
hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
@@ -55,7 +55,7 @@
    WorkAssignmentMapper workAssignmentMapper;
        private final static String ERP_URL = "http://192.168.2.100:8086";
    private final static String ERP_URL = "http://192.168.2.100:8086";
//    private final static String ERP_URL = "http://10.153.19.174:8086";
@@ -312,8 +312,6 @@
        log.info("报工数据reportingWork:{},reportingWorkDetails:{}", reportingWork, reportingWorkDetails);
        try {
            // 目标系统的API URL
            String url1 = ERP_URL + "/reportingWork/mesReportingWork";
            String url2 = ERP_URL + "/reportingWork/mesSaveReportingWorkWorn";
            String url;
@@ -324,7 +322,6 @@
            }
            URL obj = new URL(url);
            HttpURLConnection con = (HttpURLConnection) obj.openConnection();
            // 设置请求方法和请求头
            con.setRequestMethod("POST");
            con.setRequestProperty("Content-Type", "application/json; utf-8");
@@ -333,9 +330,7 @@
            // 创建 JSON 对象
            JSONObject result = new JSONObject();
            ObjectMapper objectMapper = new ObjectMapper();
            // 将 ReportingWork 转换为 JSONObject
            // 将 ReportingWorkDetail 列表转换为 JSONArray
@@ -359,7 +354,7 @@
            result.put("qualityInsStatus", 0);
            // 将 result 对象转换为字符串
            String jsonInputString = result.toString();
            System.out.println("jsonInputString : " + result);
            log.info("jsonInputString :{} ", result);
            // 发送请求
            try (OutputStream os = con.getOutputStream()) {
                byte[] input = jsonInputString.getBytes("utf-8");
@@ -368,7 +363,7 @@
            // 获取响应码
            int responseCode = con.getResponseCode();
            System.out.println("Response Code : " + responseCode);
            log.info("Response Code :{} ", responseCode);
            // 获取响应内容
            try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"))) {
hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
@@ -162,6 +162,10 @@
     * 除膜方式
     */
    private Integer filmRemove;
    /**
     * 状态
     */
    private Integer status;
}
hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/entity/request/RawGlassRequest.java
@@ -38,7 +38,7 @@
    /**
     * 栅格号
     */
    private String slot;
    private Integer slot;
    /**
     * 设备id
     */
hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java
@@ -30,7 +30,7 @@
     */
    String patternWarehousing(RawGlassRequest request);
    String UpdateQuantity(RawGlassRequest request);
    String updateQuantity(RawGlassRequest request);
    String deleteWarehousing(Long slotId);
hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
@@ -103,15 +103,16 @@
    }
    @Override
    public String UpdateQuantity(RawGlassRequest request) {
    public String updateQuantity(RawGlassRequest request) {
        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);
            details.setShelf(request.getSlot());
            save(details);
        }else{
        } else {
            update(
                    new LambdaUpdateWrapper<RawGlassStorageDetails>()
                            .set(RawGlassStorageDetails::getRemainQuantity, request.getRemainQuantity())
@@ -120,7 +121,7 @@
                            .set(RawGlassStorageDetails::getPatternThickness, request.getPatternThickness())
                            .set(RawGlassStorageDetails::getFilmsId, request.getFilmsId())
                            .eq(RawGlassStorageDetails::getSlot, request.getSlot())
                            .eq(RawGlassStorageDetails::getSlot, Const.RAW_GLASS_STATE_IN));
                            .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN));
        }
        return "success";
    }
hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.query.MPJQueryWrapper;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.mapper.GlassInfoMapper;
import com.mes.temperingglass.entity.TemperingGlassInfo;
@@ -150,10 +151,18 @@
    @Override
    public List<GlassInfo> selectTemperingGlass(GlassInfo glassInfo) {
        QueryWrapper<GlassInfo> wrapper = new QueryWrapper<>();
        wrapper.eq("engineer_id", glassInfo.getEngineerId())
                .eq("tempering_layout_id", glassInfo.getTemperingLayoutId())
                .select("engineer_id,tempering_layout_id,width,height,tempering_feed_sequence,x_coordinate,y_coordinate,angle,glass_id");
        return glassInfoMapper.selectList(wrapper);
        List<GlassInfo> glassInfos = null;
        glassInfos = glassInfoMapper.selectJoinList(GlassInfo.class, new MPJQueryWrapper<GlassInfo>()
                .select("IFNULL(b.status, 0) AS status,engineer_id,tempering_layout_id,width,height,tempering_feed_sequence,x_coordinate,y_coordinate,angle,t.glass_id,t.flow_card_id")
                .leftJoin("(SELECT glass_id, MAX(status) AS status FROM damage GROUP BY glass_id) b\n" +
                        "ON t.glass_id = b.glass_id")
                .eq("engineer_id", glassInfo.getEngineerId())
                .eq("tempering_layout_id", glassInfo.getTemperingLayoutId()));
        return glassInfos;
//        QueryWrapper<GlassInfo> wrapper = new QueryWrapper<>();
//        wrapper.eq("engineer_id", glassInfo.getEngineerId())
//                .eq("tempering_layout_id", glassInfo.getTemperingLayoutId())
//                .select("engineer_id,tempering_layout_id,width,height,tempering_feed_sequence,x_coordinate,y_coordinate,angle,glass_id");
//        return glassInfoMapper.selectList(wrapper);
    }
}
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
@@ -378,7 +378,6 @@
            return Boolean.FALSE;
        }
        List<RawGlassStorageDetails> loadStationList = rawGlassStorageDetailsService.list(new LambdaQueryWrapper<RawGlassStorageDetails>()
                .inSql(RawGlassStorageDetails::getSlot, "select slot from raw_glass_storage_station where enable_state = 1")
                .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/controller/RawGlassStorageDetailsController.java
@@ -41,6 +41,17 @@
                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(Long slotId) {
    return Result.success(rawGlassStorageDetailsService.deleteWarehousing(slotId));
  }
    @ApiOperation("原片出库")
    @PostMapping("/outWarehousing")
@@ -68,14 +79,6 @@
        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/TemperingGlassModule/src/main/resources/application.yml
@@ -13,4 +13,14 @@
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mes:
  width: 2800
  height: 5000
  height: 5000
kangaroohy:
  milo:
    enabled: false
    primary: default
    config:
      default:
        endpoint: opc.tcp://10.153.19.150:49320
        security-policy: basic256sha256
        username: admin
        password: 1qaz2wsx3edc4rfv
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowBigStorageCageDetailsService.java
@@ -6,6 +6,7 @@
import com.mes.hollow.entity.dto.*;
import java.util.List;
import java.util.Map;
/**
 * (HollowBigStorageCageDetails)表服务接口
@@ -26,7 +27,7 @@
    List<HollowBigStorageCageDetails> queryOutGlassList(String flowCardId, int cell);
    List<BigStorageVO> queryHollowbigStorageCageDetail();
    Map<Integer, List<BigStorageVO>> queryHollowbigStorageCageDetail();
    /**
     * 取出每组玻璃占用笼子的格子并计算格子内的最大组序号
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java
@@ -24,6 +24,8 @@
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * (HollowBigStorageCageDetails)表服务实现类
@@ -71,8 +73,9 @@
    }
    @Override
    public List<BigStorageVO> queryHollowbigStorageCageDetail() {
        return baseMapper.queryHollowbigStorageCageDetail();
    public Map<Integer, List<BigStorageVO>> queryHollowbigStorageCageDetail() {
        List<BigStorageVO> bigStorageCages = baseMapper.queryHollowbigStorageCageDetail();
        return bigStorageCages.stream().collect(Collectors.groupingBy(item -> item.getDeviceId()));
    }
    @Override
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
@@ -307,6 +307,23 @@
                            .eq(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START)
                    );
        }
        if (null == hollowGlassOutRelationInfo) {
            cell = 930;
            hollowGlassOutRelationInfo = hollowGlassOutRelationInfoService
                    .getOne(new LambdaQueryWrapper<HollowGlassOutRelationInfo>()
                            .eq(HollowGlassOutRelationInfo::getCell, cell)
                            .eq(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START)
                    );
        }
        if (null == hollowGlassOutRelationInfo) {
            cell = 931;
            hollowGlassOutRelationInfo = hollowGlassOutRelationInfoService
                    .getOne(new LambdaQueryWrapper<HollowGlassOutRelationInfo>()
                            .eq(HollowGlassOutRelationInfo::getCell, cell)
                            .eq(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START)
                    );
        }
        if (null != hollowGlassOutRelationInfo) {
            //是否允许中空
@@ -610,7 +627,6 @@
            log.info("计算玻璃数量过程中出现错误,错误信息{}", e.getMessage());
        }
//        hollowGlassOutRelationInfoService.update
//       重置任务表数据
        bigStorageCageTaskService.updateOutTaskMessage(BIG_STORAGE_CAGE_OUT_TWO_TASK);
hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
@@ -59,7 +59,6 @@
                                  t.quantity,
                                  t1.child_width,
                                  t1.child_height
                           from pp.flow_card t
                                    LEFT JOIN sd.order_glass_detail t1
                                              on t.order_id = t1.order_id