package com.mes.edgstoragecage.service.impl; 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) { return this.selectJoinOne(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(slot - 4) asc limit 1") ); } /** * 查询笼内空格 * @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(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; } }