package com.mes.bigstorage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.BigStorageCageDetailsService;
import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
import com.mes.bigstoragetask.entity.BigStorageCageOutTask;
import com.mes.bigstoragetask.mapper.BigStorageCageFeedTaskMapper;
import com.mes.bigstoragetask.mapper.BigStorageCageOutTaskMapper;
import com.mes.glassinfo.entity.GlassInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
* 服务实现类
*
*
* @author zhoush
* @since 2024-03-27
*/
@Service
public class BigStorageCageDetailsServiceImpl extends ServiceImpl implements BigStorageCageDetailsService {
@Resource
private BigStorageCageOutTaskMapper bigStorageCageOutTaskMapper;
@Resource
private BigStorageCageFeedTaskMapper bigStorageCageFeedTaskMapper;
/**
* 查询进/出片任务
*/
@Override
public List selectTask(int taskType) {
if(taskType==1){
//进片任务数据
LambdaQueryWrapper feedWrapper = new LambdaQueryWrapper<>();
feedWrapper.eq(BigStorageCageDetails::getState, 1)
.or()
.eq(BigStorageCageDetails::getState, 2);
List bigStorageCageDetailsList=baseMapper.selectList(feedWrapper);
List bigStorageCageFeedTaskList=bigStorageCageFeedTaskMapper.selectList(null);
Map listMap = bigStorageCageFeedTaskList.stream()
.collect(Collectors.toMap(BigStorageCageFeedTask::getGlassId, task -> task));
for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList) {
BigStorageCageFeedTask bigStorageCageFeedTask = listMap.get(bigStorageCageDetails.getGlassId());
bigStorageCageDetails.setBigStorageCageFeedTask(bigStorageCageFeedTask);
}
return bigStorageCageDetailsList;
}else{
//出片任务数据
LambdaQueryWrapper outWrapper = new LambdaQueryWrapper<>();
outWrapper.eq(BigStorageCageDetails::getState, 3)
.or()
.eq(BigStorageCageDetails::getState, 4);
List bigStorageCageDetailsList=baseMapper.selectList(outWrapper);
List bigStorageCageOutTaskList=bigStorageCageOutTaskMapper.selectList(null);
Map listMap = bigStorageCageOutTaskList.stream()
.collect(Collectors.toMap(BigStorageCageOutTask::getGlassId, task -> task));
for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList) {
BigStorageCageOutTask bigStorageCageOutTask = listMap.get(bigStorageCageDetails.getGlassId());
bigStorageCageDetails.setBigStorageCageOutTask(bigStorageCageOutTask);
}
return bigStorageCageDetailsList;
}
}
/**
* 判断当前玻璃是否能上车
*/
@Override
public boolean selectGetBoard(GlassInfo glassInfo, String plcFeedReqLine){
double carWidth=5000;
LambdaQueryWrapper feedWrapper = new LambdaQueryWrapper<>();
feedWrapper.eq(BigStorageCageDetails::getState, plcFeedReqLine);
List bigStorageCageDetailsList=baseMapper.selectList(feedWrapper);
List bigStorageCageFeedTaskList=bigStorageCageFeedTaskMapper.selectList(null);
Map listMap = bigStorageCageFeedTaskList.stream()
.collect(Collectors.toMap(BigStorageCageFeedTask::getGlassId, task -> task));
for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList) {
BigStorageCageFeedTask bigStorageCageFeedTask = listMap.get(bigStorageCageDetails.getGlassId());
bigStorageCageDetails.setBigStorageCageFeedTask(bigStorageCageFeedTask);
}
for (BigStorageCageDetails bigStorageCageDetails:bigStorageCageDetailsList
) {
if(bigStorageCageDetails.getBigStorageCageFeedTask().getTaskState()==0){
carWidth -= Integer.parseInt(bigStorageCageDetails.getWidth().toString()) + bigStorageCageDetails.getGap();
}
}
if(carWidth>=0){
return true;
}else{
return false;
}
}
}