package com.mes.bigstorage.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mes.bigstorage.entity.BigStorageCage; import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.bigstorage.mapper.BigStorageCageDetailsMapper; import com.mes.bigstorage.mapper.BigStorageCageMapper; import com.mes.bigstorage.service.BigStorageCageService; import com.mes.uppattenusage.entity.GlassInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author zhoush * @since 2024-03-27 */ @Service @Slf4j public class BigStorageCageServiceImpl extends ServiceImpl implements BigStorageCageService { @Resource private BigStorageCageMapper bigStorageCageMapper; @Resource private BigStorageCageDetailsMapper bigStorageCageDetailsMapper; @Override public BigStorageCageDetails FeedGlass(GlassInfo glassInfo, BigStorageCageDetails bigStorageCageDetails) { //获取同钢化版图id可进片的格子 BigStorageCageDetails layoutSlotInfo = bigStorageCageMapper.SelectTemperingFeedSlot(glassInfo); //有符合条件的格子时 if (layoutSlotInfo != null) { //将玻璃信息填入理片笼详情表 bigStorageCageDetails.setSlot(layoutSlotInfo.getSlot()); } else { //获取不到时: //获取可进片格子信息 BigStorageCageDetails EmptySlotInfo = bigStorageCageMapper.SelectEmptyFeedSlot(); if (EmptySlotInfo != null) { bigStorageCageDetails.setSlot(EmptySlotInfo.getSlot()); } else { //获取其他笼格子- BigStorageCageDetails OtherSlotInfo = bigStorageCageMapper.SelectOtherFeedSlot(); bigStorageCageDetails.setSlot(OtherSlotInfo.getSlot()); } //将玻璃信息放入该格子 } updateRemainWidth(bigStorageCageDetails.getSlot()); return bigStorageCageDetails; } @Override public List querybigStorageCageDetail() { //1、获取大理片笼信息 // List bigStorageCages = bigStorageCageMapper.querybigStorageCageDetail(null); List bigStorageCages = bigStorageCageMapper.selectList(null); log.info("1、获取大理片笼信息完成,获取到的数据{}", bigStorageCages.size()); //2获取理片笼所有信息 List bigStorageCageDetailsList = bigStorageCageDetailsMapper.selectList(null); Map> listMap = bigStorageCageDetailsList.stream().collect(Collectors.groupingBy(BigStorageCageDetails::getSlot)); for (BigStorageCage bigStorageCage : bigStorageCages) { List bigStorageCageDetails = listMap.get(bigStorageCage.getSlot()); bigStorageCage.setBigStorageCageDetails(bigStorageCageDetails); } return bigStorageCages; } //修改格子剩余宽度 @Override public void updateRemainWidth(int Slot) { //获取该格子内玻璃信息 int width = 5000; List bigStorageCageDetailsList = Collections.singletonList(bigStorageCageDetailsMapper.selectById(Slot)); for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList ) { width -= Integer.parseInt(bigStorageCageDetails.getWidth().toString()) + bigStorageCageDetails.getGap(); } //修改格子剩余宽度 bigStorageCageMapper.UpdateRemainWidth(Slot, width); } }