package com.mes.hollow.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.mes.common.config.Const; import com.mes.hollow.entity.HollowBigStorageCage; import com.mes.hollow.entity.HollowBigStorageCageDetails; import com.mes.hollow.entity.dto.HollowBigStorageAndDetailsDTO; import com.mes.hollow.entity.vo.HollowBigStorageDetailsQueryVO; import com.mes.hollow.mapper.HollowBigStorageCageMapper; import com.mes.hollow.service.HollowBigStorageCageService; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * (HollowBigStorageCage)表服务实现类 * * @author makejava * @since 2024-11-21 09:22:46 */ @Service public class HollowBigStorageCageServiceImpl extends ServiceImpl implements HollowBigStorageCageService { @Value("${mes.slotWidth}") private Integer slotWidth; @Override public List queryHollowBigStorageCageDetail(HollowBigStorageDetailsQueryVO query) { MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.selectAll(HollowBigStorageCage.class).selectCollection(HollowBigStorageCageDetails.class, HollowBigStorageCage::getHollowBigStorageCageDetails) .leftJoin(HollowBigStorageCageDetails.class, on -> on.eq(HollowBigStorageCageDetails::getSlot, HollowBigStorageCage::getSlot) .like(StringUtils.isNotBlank(query.getFilmsId()), HollowBigStorageCageDetails::getFilmsId, query.getFilmsId()) .like(StringUtils.isNotBlank(query.getFlowCardId()), HollowBigStorageCageDetails::getFlowCardId, query.getFlowCardId()) .in(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL, Const.GLASS_STATE_OUT_ING)) .eq(HollowBigStorageCage::getDeviceId, query.getDeviceId()) .orderByAsc(HollowBigStorageCage::getDeviceId) .orderByAsc(HollowBigStorageCage::getSlot); return baseMapper.selectJoinList(HollowBigStorageAndDetailsDTO.class, wrapper); } @Override public Map> queryHollowbigStorageCageDetail() { MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.selectAll(HollowBigStorageCage.class).selectCollection(HollowBigStorageCageDetails.class, HollowBigStorageCage::getHollowBigStorageCageDetails) .leftJoin(HollowBigStorageCageDetails.class, on -> on.eq(HollowBigStorageCageDetails::getSlot, HollowBigStorageCage::getSlot) .in(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL).orderByAsc(HollowBigStorageCageDetails::getUpdateTime)); List bigStorageCages = baseMapper.selectJoinList(HollowBigStorageCage.class, wrapper); Map> listMap = bigStorageCages.stream().collect(Collectors.groupingBy(item -> item.getDeviceId())); return listMap; } @Override public List> selectBigStorageCageUsage() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select("device_id,ROUND(1 - SUM(CASE WHEN remain_width = " + slotWidth + " THEN 1 ELSE 0 END) / COUNT(device_id), 2)*100 AS percentage,SUM(CASE WHEN remain_width = " + slotWidth + " THEN 1 ELSE 0 END) AS count") .groupBy("device_id"); return baseMapper.selectMaps(wrapper); } }