wuyouming666
2024-06-18 ef2f5051979a188b0922e3c30908bedca1cc7c74
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
@@ -6,6 +6,8 @@
import com.github.yulichang.wrapper.MPJLambdaWrapper;
//import com.mes.device.PlcParameterObject;
import com.google.common.base.Functions;
import com.mes.common.config.Const;
import com.mes.downglassinfo.entity.DownGlassTask;
import com.mes.downglassinfo.service.DownGlassTaskService;
import com.mes.downstorage.entity.DownStorageCage;
@@ -19,6 +21,7 @@
import com.mes.glassinfo.service.GlassInfoService;
import com.mes.pp.entity.OptimizeDetail;
import lombok.extern.slf4j.Slf4j;
import net.sf.jsqlparser.statement.select.SelectItem;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -85,10 +88,33 @@
                        .select(DownStorageCageDetails::getWidth, DownStorageCageDetails::getHeight, DownStorageCageDetails::getGlassId)
                        .leftJoin(DownStorageCageDetails.class, on -> on
                                .eq(DownStorageCageDetails::getDeviceId, DownStorageCage::getDeviceId)
                                .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot))
                                .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot)
                                .eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN)
                        )
                        .isNull(DownStorageCageDetails::getSlot)
        );
    }
    @Override
    public List<DownStorageCageDetails> selectCacheMax() {
        return baseMapper.selectJoinList(DownStorageCageDetails.class,
                JoinWrappers.lambda(DownStorageCage.class)
                        // 添加 DownStorageCage 的 enableState 为 1 的条件
                        .select(DownStorageCageDetails::getFlowCardId)
                        .leftJoin(DownStorageCageDetails.class, on -> on
                                .eq(DownStorageCageDetails::getDeviceId, DownStorageCage::getDeviceId)
                                .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot)
                        .eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN))
                        .isNull(DownStorageCageDetails::getSlot)
                        .eq(DownStorageCage::getEnableState, 1)
                        .groupBy(DownStorageCageDetails::getFlowCardId) // 根据 flowCardId 分组
                        // 使用子查询和排序来获取相同 FlowCardId 中的最多记录
                        .having("count(*) = (select max(cnt) from (select count(*) as cnt from down_storage_cage_details group by flow_card_id) as temp)")
        );
    }
@@ -103,7 +129,8 @@
                .select(DownStorageCageDetails::getGlassId, DownStorageCageDetails::getWidth, DownStorageCageDetails::getHeight, DownStorageCageDetails::getId)
                .leftJoin(DownStorageCageDetails.class, on -> on
                        .eq(DownStorageCageDetails::getDeviceId, DownStorageCage::getDeviceId)
                        .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot))
                        .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot)
                        .eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN))
        );
    }