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> selectCacheOut() { return upPattenUsageMapper.selectJoinMaps(JoinWrappers.lambda(UpPattenUsage.class).selectAll(UpPattenUsage.class) .select(EdgStorageCageDetails::getWidth, EdgStorageCageDetails::getHeight, EdgStorageCageDetails::getGlassId) .leftJoin(EdgStorageCageDetails.class, on -> on .eq(EdgStorageCageDetails::getDeviceId, EdgStorageCage::getDeviceId) .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot)) .isNull(EdgStorageCageDetails::getSlot) ); // return upPattenUsageMapper.selectJoinMaps(new MPJQueryWrapper().selectAll(UpPattenUsage.class) // .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height") // .leftJoin("edg_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot") // .isNotNull("escd.slot") // .orderByAsc("escd.tempering_layout_id","escd.tempering_feed_sequence") // ); } /** * 理片缓存详情 * * @return */ @Override public List> selectEdgStorageCages() { return baseMapper.selectJoinMaps(JoinWrappers.lambda(EdgStorageCage.class) .selectAll(EdgStorageCage.class) .selectAs(EdgStorageCageDetails::getId, "esdId") .select(EdgStorageCageDetails::getGlassId, EdgStorageCageDetails::getWidth, EdgStorageCageDetails::getHeight, EdgStorageCageDetails::getId) .leftJoin(EdgStorageCageDetails.class, on -> on .eq(EdgStorageCageDetails::getDeviceId, EdgStorageCage::getDeviceId) .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot)) ); // return baseMapper.selectJoinMaps(new MPJQueryWrapper().selectAll(EdgStorageCage.class) // .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height") // .leftJoin("edg_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot") // ); } /** * 修改理片笼信息 功能:对笼内栅格玻璃 【启用/禁用】 * * @param edgStorageCage * @return */ @Override public boolean updateEdgStorageCage(EdgStorageCage edgStorageCage) { EdgStorageCage edgItem = baseMapper.selectById(edgStorageCage.getId()); edgItem.setEnableState(edgStorageCage.getEnableState()); baseMapper.updateById(edgItem); return true; } /** * 修改理片笼信息 功能:对笼内栅格玻璃 【添加/删除/更换】 * * @param edgStorageCageId * @param edgStorageCageDetails * @return */ @Override public boolean updateEdgStorageCageDetails(int edgStorageCageId, EdgStorageCageDetails edgStorageCageDetails) { EdgStorageCage edgItem = baseMapper.selectById(edgStorageCageId); log.info("正常" + edgItem); EdgStorageCageDetails edgDItem = edgStorageCageDetailsMapper.selectById(edgStorageCageDetails.getId()); if (edgItem != null) { //移除 EdgStorageCageDetails result = edgStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper().eq(EdgStorageCageDetails::getSlot, edgStorageCageId)); if (result != null) { result.setSlot(0); edgStorageCageDetailsMapper.updateById(result); } //添加 if (edgDItem != null) { //只传格子 :移除玻璃 EdgStorageCageDetails newresult = edgStorageCageDetailsMapper.selectById(edgStorageCageDetails.getId()); newresult.setSlot(edgItem.getSlot()); edgStorageCageDetailsMapper.updateById(newresult); } } return true; } }