package com.mes.edgstoragecage.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.mes.common.config.Const;
import com.mes.edgstoragecage.entity.EdgStorageCage;
import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
import com.mes.edgstoragecage.mapper.EdgStorageCageMapper;
import com.mes.edgstoragecage.service.EdgStorageCageService;
import com.mes.uppattenusage.entity.UpPattenUsage;
import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
*
* 服务实现类
*
*
* @author zhoush
* @since 2024-04-07
*/
@Slf4j
@Service
public class EdgStorageCageServiceImpl extends MPJBaseServiceImpl implements EdgStorageCageService {
@Autowired
EdgStorageCageDetailsMapper edgStorageCageDetailsMapper;
@Autowired
UpPattenUsageMapper upPattenUsageMapper;
@Override
public EdgStorageCage selectNearestEmpty(int currentSlot) {
List emptyList = this.selectJoinList(EdgStorageCage.class, new MPJLambdaWrapper()
.selectAll(EdgStorageCage.class)
.leftJoin(EdgStorageCageDetails.class, on -> on
.eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot)
.eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN))
.isNull(EdgStorageCageDetails::getSlot)
.last("order by abs(t.slot - " + currentSlot + ") asc limit 2")
);
if (CollectionUtil.isEmpty(emptyList) || emptyList.size() < 2) {
return null;
}
return emptyList.get(0);
}
/**
* 查询笼内空格
*
* @return
*/
@Override
public List selectCacheEmpty() {
return baseMapper.selectJoinList(EdgStorageCage.class, new MPJLambdaWrapper()
.selectAll(EdgStorageCage.class)
.leftJoin(EdgStorageCageDetails.class, on -> on
.eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot)
.eq(EdgStorageCageDetails::getState, "100"))
.isNull(EdgStorageCageDetails::getSlot)
.last("order by abs(t.slot - 4) asc")
);
}
/**
* 查询笼内出片任务 按钢化版图号+版图内序号
*
* @return
*/
@Override
public List