ZengTao
2025-03-07 5ec61cdaa2c1ab4dd1d58bd94afb49343332e78f
添加中空大理片汇总数据显示,推送服务器时间供前端使用
11个文件已修改
1个文件已添加
308 ■■■■ 已修改文件
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/BigStorageSummaryDTO.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageMapper.xml 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/FlowCardGlassInfoDTO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassRelationInfoService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/BigStorageSummaryDTO.java
New file
@@ -0,0 +1,47 @@
package com.mes.bigstorage.entity.dto;
import lombok.Data;
/**
 * @Author : zhoush
 * @Date: 2024/6/11 16:45
 * @Description:
 */
@Data
public class BigStorageSummaryDTO {
    /**
     * 工程号
     */
    private String engineerId;
    /**
     * 笼内总炉数
     */
    private Integer countTemp;
    /**
     * 笼内玻璃数量
     */
    private Integer countGlass;
    /**
     * 面积
     */
    private Double area;
    /**
     * 满炉数
     */
    private Integer fullTemp;
    /**
     * 占用格子数
     */
    private Integer countSlot;
    /**
     * 进度
     */
    private Double percent;
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageMapper.java
@@ -2,6 +2,7 @@
import com.github.yulichang.base.MPJBaseMapper;
import com.mes.bigstorage.entity.BigStorageCage;
import com.mes.bigstorage.entity.dto.BigStorageSummaryDTO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -17,6 +18,8 @@
public interface BigStorageCageMapper extends MPJBaseMapper<BigStorageCage> {
    List<Integer> queryFreeDeviceByUsed(@Param(value = "thickness") double thickness);
    List<BigStorageSummaryDTO> selectBigStorageSummary();
//
//    List<Integer> queryFreeDeviceByNotUsed(@Param(value = "thickness") double thickness);
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java
@@ -4,6 +4,7 @@
import com.mes.bigstorage.entity.BigStorageCage;
import com.mes.bigstorage.entity.BigStorageCageDetails;
import com.mes.bigstorage.entity.dto.BigStorageAndDetailsDTO;
import com.mes.bigstorage.entity.dto.BigStorageSummaryDTO;
import com.mes.bigstorage.entity.vo.BigStorageDetailsQueryVO;
import com.mes.glassinfo.entity.GlassInfo;
@@ -41,5 +42,7 @@
    List<Integer> queryFreeDeviceByUsed(double thickness);
    List<BigStorageSummaryDTO> selectBigStorageSummary();
//    List<Integer> queryFreeDeviceByNotUsed(double thickness);
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
@@ -10,6 +10,7 @@
import com.mes.bigstorage.entity.BigStorageCage;
import com.mes.bigstorage.entity.BigStorageCageDetails;
import com.mes.bigstorage.entity.dto.BigStorageAndDetailsDTO;
import com.mes.bigstorage.entity.dto.BigStorageSummaryDTO;
import com.mes.bigstorage.entity.vo.BigStorageDetailsQueryVO;
import com.mes.bigstorage.mapper.BigStorageCageDetailsMapper;
import com.mes.bigstorage.mapper.BigStorageCageMapper;
@@ -305,6 +306,11 @@
        return baseMapper.queryFreeDeviceByUsed(thickness);
    }
    @Override
    public List<BigStorageSummaryDTO> selectBigStorageSummary() {
        return baseMapper.selectBigStorageSummary();
    }
//    @Override
//    public List<Integer> queryFreeDeviceByNotUsed(double thickness) {
//        return baseMapper.queryFreeDeviceByNotUsed(thickness);
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java
@@ -5,6 +5,7 @@
import com.kangaroohy.milo.model.ReadWriteEntity;
import com.kangaroohy.milo.service.MiloService;
import com.mes.bigstorage.entity.BigStorageCageDetails;
import com.mes.bigstorage.entity.dto.BigStorageSummaryDTO;
import com.mes.bigstorage.service.BigStorageCageDetailsService;
import com.mes.bigstorage.service.BigStorageCageService;
import com.mes.bigstoragecagetask.entity.BigStorageCageTask;
@@ -135,6 +136,9 @@
        List<Map<String, Object>> bigStorageCageUsage = bigStorageCageService.selectBigStorageCageUsage();
        jsonObject.append("bigStorageCageUsage", bigStorageCageUsage);
        //大理片汇总信息
        List<BigStorageSummaryDTO> bigStorageSummary = bigStorageCageService.selectBigStorageSummary();
        jsonObject.append("bigStorageSummary", bigStorageSummary);
        //打印开关
        boolean autoPrint = false;
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageMapper.xml
@@ -1,6 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mes.bigstorage.mapper.BigStorageCageMapper">
    <resultMap id="downStorageCageDetails" type="com.mes.bigstorage.entity.dto.BigStorageSummaryDTO">
        <result column="engineer_id" property="engineerId"/>
        <result column="countTemp" property="countTemp"/>
        <result column="countGlass" property="countGlass"/>
        <result column="area" property="area"/>
        <result column="fullTemp" property="fullTemp"/>
        <result column="countSlot" property="countSlot"/>
        <result column="percent" property="percent"/>
    </resultMap>
    <select id="queryFreeDeviceByUsed" resultType="java.lang.Integer">
@@ -16,6 +25,48 @@
                 COUNT(DISTINCT T1.SLOT)
    </select>
    <select id="selectBigStorageSummary" resultType="com.mes.bigstorage.entity.dto.BigStorageSummaryDTO">
        SELECT
            engineer_id as engineerId,
            count( tempering_layout_id ) AS countTemp,
            sum( countGlass ) AS countGlass,
            round( sum( area ), 2 ) as area,
            sum( fullTemp ) AS fullTemp,
            sum( countSlot ) AS countSlot,
            sum( countGlass )/ sum( countGlass1 )* 100 AS percent,
            thickness
        FROM
            (
                SELECT
                    bscd.engineer_id,
                    bscd.tempering_layout_id,
                    count(*) AS countGlass,
                    sum( bscd.width * bscd.height / 1000000 ) AS area,
                    IF
                        ( gi.countGlass1 = count(*), 1, 0 ) AS fullTemp,
                    count( DISTINCT bscd.slot ) AS countSlot,
                    countGlass1,
                    gi.thickness
                FROM
                    big_storage_cage_details bscd
                        INNER JOIN ( SELECT engineer_id, tempering_layout_id, count(*) AS countGlass1, thickness FROM glass_info GROUP BY engineer_id, tempering_layout_id ) gi ON bscd.engineer_id = gi.engineer_id
                        AND bscd.tempering_layout_id = gi.tempering_layout_id
                WHERE
                    bscd.state = 100
                GROUP BY
                    bscd.engineer_id,
                    bscd.tempering_layout_id
            ) AS cageSummary
        GROUP BY
            engineer_id
        ORDER BY
            percent DESC,
            thickness DESC,
            countSlot DESC
    </select>
    <!--    <select id="queryFreeDeviceByNotUsed" resultType="java.lang.Integer">-->
    <!--        SELECT T.DEVICE_ID-->
    <!--        FROM BIG_STORAGE_CAGE T-->
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
@@ -5,7 +5,10 @@
import com.mes.device.PlcParameterObject;
import com.mes.engineering.entity.Engineering;
import com.mes.engineering.service.EngineeringService;
import com.mes.opctask.entity.LoadGlassDeviceTask;
import com.mes.opctask.service.LoadGlassDeviceTaskService;
import com.mes.pp.service.OptimizeProjectService;
import com.mes.tools.DateUtil;
import com.mes.tools.WebSocketServer;
import com.mes.uppattenusage.entity.UpPattenUsage;
import com.mes.uppattenusage.service.UpPattenUsageService;
@@ -17,6 +20,8 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
@@ -37,15 +42,21 @@
    private OptimizeProjectService optimizeProjectService;
    @Autowired
    RedisUtil redisUtil;
    @Resource
    private LoadGlassDeviceTaskService loadGlassDeviceTaskService;
    PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
    private static final String LOAD_GLASS_DEVICE_ONE_TASK = "load_glass_device_one_task";
    private static final String LOAD_GLASS_DEVICE_TWO_TASK = "load_glass_device_two_task";
    /**
     * fixedRate : 上一个调用开始后再次调用的延时(不用等待上一次调用完成)
     * fixedDelay : 上一个调用结束后再次调用的延时
     */
    @Scheduled(fixedDelay = 300)
//    @Scheduled(fixedDelay = 300)
    public void plcLoadGlassTask() throws InterruptedException {
        try {
            //获取联机状态
@@ -89,7 +100,7 @@
        }
    }
    @Scheduled(fixedDelay = 300)
//    @Scheduled(fixedDelay = 300)
    public void plcLoadGlassReport() {
        //获取是否有汇报
        String loadStatus = plcParameterObject.getPlcParameter("PlcStatus").getValue();
@@ -119,53 +130,77 @@
    @Scheduled(fixedDelay = 1000)
    public void loadGlassHome() {
        JSONObject jsonObject = new JSONObject();
        //正在进行的任务
        List<UpPattenUsage> upPattenUsages = upPattenUsageService.prioritylist();
        if(upPattenUsages!=null){
            jsonObject.append("prioritylist", upPattenUsages);
        }
        //查询1号线的任务
        Engineering request = redisUtil.getCacheObject("loadGlassRequest");
        if (request == null) {
            request = new Engineering();
            request.setStationCell(5);
        }
        List<UpPattenUsage> upPattenUsages1 = upPattenUsageService.selectLoadTask(request);
        jsonObject.append("loadTask1", upPattenUsages1);
        //查询2号线的任务
        Engineering request2 = redisUtil.getCacheObject("loadGlassRequest2");
        if (request2 == null) {
            request2 = new Engineering();
            request2.setStationCell(6);
        }
        List<UpPattenUsage> upPattenUsages2 = upPattenUsageService.selectLoadTask(request2);
        jsonObject.append("loadTask2", upPattenUsages2);
        //查询工位任务
        try {
            JSONObject jsonObject = new JSONObject();
            //正在进行的任务
            List<UpPattenUsage> upPattenUsages = upPattenUsageService.prioritylist();
            if(upPattenUsages!=null){
                jsonObject.append("prioritylist", upPattenUsages);
            }
            //查询1号线的任务
            Engineering request = redisUtil.getCacheObject("loadGlassRequest");
            if (request == null) {
                request = new Engineering();
                request.setStationCell(5);
            }
            List<UpPattenUsage> upPattenUsages1 = upPattenUsageService.selectLoadTask(request);
            jsonObject.append("loadTask1", upPattenUsages1);
            //查询2号线的任务
            Engineering request2 = redisUtil.getCacheObject("loadGlassRequest2");
            if (request2 == null) {
                request2 = new Engineering();
                request2.setStationCell(6);
            }
            List<UpPattenUsage> upPattenUsages2 = upPattenUsageService.selectLoadTask(request2);
            jsonObject.append("loadTask2", upPattenUsages2);
//        查询工位任务
            //联机状态
            LoadGlassDeviceTask LoadOneState = loadGlassDeviceTaskService.queryTaskMessage(LOAD_GLASS_DEVICE_ONE_TASK);
            LoadGlassDeviceTask LoadTwoState = loadGlassDeviceTaskService.queryTaskMessage(LOAD_GLASS_DEVICE_TWO_TASK);
            jsonObject.append("LoadOneState", LoadOneState.getInkageState());
            jsonObject.append("LoadTwoervice", LoadTwoState.getInkageState());
        //工位信息
        List<UpWorkstation> upWorkstations = upWorkstationService.list();
        jsonObject.append("list", upWorkstations);
            //工位信息
            List<UpWorkstation> upWorkstations = upWorkstationService.list();
            jsonObject.append("list", upWorkstations);
        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("loadGlass");
            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("loadGlass");
            if (sendwServer != null) {
                for (WebSocketServer webserver : sendwServer) {
                    if (webserver != null) {
                        webserver.sendMessage(jsonObject.toString());
//                    }
                    } else {
                        log.info("loadGlass is closed");
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    @Scheduled(fixedDelay = 1000)
    public void send() {
        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("mainMes");
        if (sendwServer != null) {
            //推送服务器当前时间
            JSONObject jsonObject = new JSONObject();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            jsonObject.append("globalDate", sdf.format(DateUtil.getEndDate()));
            for (WebSocketServer webserver : sendwServer) {
                if (webserver != null) {
                    webserver.sendMessage(jsonObject.toString());
//                    List<String> messages = webserver.getMessages();
//                    if (!messages.isEmpty()) {
//                        // // 将最后一个消息转换为整数类型的列表
//                        webserver.clearMessages();
//                    }
                } else {
                    log.info("Home is closed");
                    log.info("mainMes is closed");
                }
            }
        }
    }
    @Scheduled(fixedDelay = 5000)
//    @Scheduled(fixedDelay = 5000)
    public void loadGlassStatus() {
        JSONObject jsonObject = new JSONObject();
        //正在进行的任务
@@ -178,7 +213,7 @@
                if (webserver != null) {
                    webserver.sendMessage(jsonObject.toString());
                } else {
                    log.info("Home is closed");
                    log.info("loadGlass is closed");
                }
            }
        }
@@ -198,7 +233,7 @@
                if (webserver != null) {
                    webserver.sendMessage(jsonObject.toString());
                } else {
                    log.info("Home is closed");
                    log.info("loadGlassIsRun is closed");
                }
            }
        }
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/FlowCardGlassInfoDTO.java
@@ -50,4 +50,8 @@
     * 缺少数量
     */
    private int lackCount;
    /**
     * 占用格子
     */
    private int slotCount;
}
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassRelationInfoService.java
@@ -31,6 +31,8 @@
    Map<String, List<FlowCardGlassInfoDTO>> queryHollowAllFlowCard(HollowBigStorageDetailsQueryVO query);
    Map<String, FlowCardGlassInfoDTO> queryHollowAllFlowCardSummary(HollowBigStorageDetailsQueryVO query);
    Map<Integer, List<LackDetailsDTO>> queryLackByFlowCard(String flowCardId);
    int queryLayerByFlowCardId(String flowCardId);
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java
@@ -280,10 +280,70 @@
            HollowBigStorageCageDetails cageDetails = v.get(0);
            dtos.addAll(hollowBigStorageCageDetailsService.hollowIsAll(e, cageDetails.getTotalLayer(), Boolean.FALSE));
        });
        Map<String, FlowCardGlassInfoDTO> result = dtos.stream()
                .collect(Collectors.toMap(
                        FlowCardGlassInfoDTO::getFlowCardId,
                        dto -> {
                            FlowCardGlassInfoDTO newDto = new FlowCardGlassInfoDTO();
                            newDto.setFlowCardId(dto.getFlowCardId());
                            newDto.setSumCount(dto.getSumCount());
                            newDto.setPairCount(dto.getPairCount());
                            newDto.setRealCount(dto.getRealCount());
                            newDto.setLayer(dto.getLayer());
                            return newDto;
                        },
                        (dto1, dto2) -> {
                            dto1.setRealCount(dto1.getRealCount() + dto2.getRealCount()); // 累加 realCount
                            dto1.setLayer(Math.max(dto1.getLayer(),dto2.getLayer())); // 累加 最大层数
                            return dto1; // 返回合并后的对象
                        }
                ));
        return dtos.stream().collect(Collectors.groupingBy(FlowCardGlassInfoDTO::getFlowCardId));
    }
    @Override
    public Map<String, FlowCardGlassInfoDTO> queryHollowAllFlowCardSummary(HollowBigStorageDetailsQueryVO query) {
        List<HollowBigStorageCageDetails> detailsList = hollowBigStorageCageDetailsService.list(new LambdaQueryWrapper<HollowBigStorageCageDetails>()
                .eq(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN)
                .like(StringUtils.isNotBlank(query.getFilmsId()), HollowBigStorageCageDetails::getFilmsId, query.getFilmsId())
                .like(StringUtils.isNotBlank(query.getFlowCardId()), HollowBigStorageCageDetails::getFlowCardId, query.getFlowCardId())
                .eq(query.getThickness() != 0, HollowBigStorageCageDetails::getThickness, query.getThickness())
                .orderByAsc(HollowBigStorageCageDetails::getFlowCardId)
        );
        if (CollectionUtil.isEmpty(detailsList)) {
            log.info("笼内无玻璃");
            return new HashMap<>();
        }
        Map<String, List<HollowBigStorageCageDetails>> listMap = detailsList.stream().collect(Collectors.groupingBy(HollowBigStorageCageDetails::getFlowCardId));
        List<FlowCardGlassInfoDTO> dtos = new ArrayList<>();
        listMap.forEach((e, v) -> {
            HollowBigStorageCageDetails cageDetails = v.get(0);
            dtos.addAll(hollowBigStorageCageDetailsService.hollowIsAll(e, cageDetails.getTotalLayer(), Boolean.FALSE));
        });
        Map<String, FlowCardGlassInfoDTO> result = dtos.stream()
                .collect(Collectors.toMap(
                        FlowCardGlassInfoDTO::getFlowCardId,
                        dto -> {
                            FlowCardGlassInfoDTO newDto = new FlowCardGlassInfoDTO();
                            newDto.setFlowCardId(dto.getFlowCardId());
                            newDto.setSumCount(dto.getSumCount());
                            newDto.setPairCount(dto.getPairCount());
                            newDto.setRealCount(dto.getRealCount());
                            newDto.setLayer(dto.getLayer());
                            newDto.setSlotCount(dto.getSlotCount());
                            return newDto;
                        },
                        (dto1, dto2) -> {
                            dto1.setRealCount(dto1.getRealCount() + dto2.getRealCount()); // 累加 realCount
                            dto1.setLayer(Math.max(dto1.getLayer(),dto2.getLayer())); // 累加 最大层数
                            dto1.setSlotCount(dto1.getSlotCount() + dto2.getSlotCount());
                            return dto1; // 返回合并后的对象
                        }
                ));
        return result;
    }
    @Override
    public Map<Integer, List<LackDetailsDTO>> queryLackByFlowCard(String flowCardId) {
        List<LackDetailsDTO> lackDetailsList = this.baseMapper.queryLackByFlowCard(flowCardId);
        Map<Integer, List<LackDetailsDTO>> listMap = lackDetailsList.stream().collect(Collectors.groupingBy(LackDetailsDTO::getLayer));
hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
@@ -11,9 +11,12 @@
import com.mes.common.config.Const;
import com.mes.hollow.entity.HollowBigStorageCageDetails;
import com.mes.hollow.entity.HollowGlassOutRelationInfo;
import com.mes.hollow.entity.dto.FlowCardGlassInfoDTO;
import com.mes.hollow.entity.vo.HollowBigStorageDetailsQueryVO;
import com.mes.hollow.service.HollowBigStorageCageDetailsService;
import com.mes.hollow.service.HollowBigStorageCageService;
import com.mes.hollow.service.HollowGlassOutRelationInfoService;
import com.mes.hollow.service.HollowGlassRelationInfoService;
import com.mes.hollowqueue.entity.HollowGlassQueueInfo;
import com.mes.hollowqueue.service.HollowGlassQueueInfoService;
import com.mes.tools.WebSocketServer;
@@ -48,6 +51,8 @@
    HollowBigStorageCageDetailsService hollowBigStorageCageDetailsService;
    @Resource
    BigStorageCageTaskService bigStorageCageTaskService;
    @Resource
    HollowGlassRelationInfoService hollowGlassRelationInfoService;
    @Autowired(required = false)
    MiloService miloService;
@@ -197,6 +202,11 @@
        //理片笼使用情况
        List<Map<String, Object>> bigStorageCageUsage = hollowBigStorageCageService.selectBigStorageCageUsage();
        jsonObject.append("bigStorageCageUsage", bigStorageCageUsage);
        //理片笼使用情况汇总
        HollowBigStorageDetailsQueryVO hollowBigStorageDetailsQueryVO=new HollowBigStorageDetailsQueryVO();
        Map<String, FlowCardGlassInfoDTO> bigStorageCageUsageSummary= hollowGlassRelationInfoService.queryHollowAllFlowCardSummary(hollowBigStorageDetailsQueryVO);
        jsonObject.append("bigStorageCageUsageSummary", bigStorageCageUsageSummary);
    }
}
hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml
@@ -52,7 +52,7 @@
    <select id="hollowIsAll" resultMap="baseMap">
        WITH sum_flow_layer_count AS ( SELECT flow_card_id, layer, min( films_id ) AS films_id, min(thickness) as
        thickness,count(*) AS sum_count FROM hollow_glass_relation_info GROUP BY flow_card_id, layer ),
        real_flow_layer_count AS ( SELECT flow_card_id, layer, count(*) AS real_count FROM
        real_flow_layer_count AS ( SELECT flow_card_id, layer, count(*) AS real_count, count(distinct slot) as slot_count FROM
        hollow_big_storage_cage_details t WHERE state = 100 GROUP BY flow_card_id, layer ),
        damage_flow_layer_count AS ( SELECT process_id AS flow_card_id, technology_number AS layer, count(*) as
        damage_count FROM damage where type in(8,9) GROUP BY process_id, technology_number ),
@@ -99,7 +99,8 @@
        IFNULL( t3.pair_count, 0 ) AS pair_count,
        IFNULL( real_count, 0 ) AS real_count,
        IFNULL( damage_count, 0 ) AS damage_count,
        IFNULL( lack_count, 0 ) AS lack_count
        IFNULL( lack_count, 0 ) AS lack_count,
        IFNULL(slot_count,0) AS slot_count
        FROM
        sum_flow_layer_count t
        LEFT JOIN real_flow_layer_count t1 ON t.flow_card_id = t1.flow_card_id