package com.mes.edgstoragecage.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.query.MPJLambdaQueryWrapper;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.mes.damage.entity.Damage;
import com.mes.damage.mapper.DamageMapper;
import com.mes.damage.service.DamageService;
import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
import com.mes.edgglasstask.entity.request.IdentWornRequest;
import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
import com.mes.edgstoragecage.entity.EdgStorageCage;
import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
import com.mes.edgstoragecage.entity.vo.CutDrawingVO;
import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
import com.mes.edgstoragecage.mapper.EdgStorageCageMapper;
import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
import com.mes.engineering.entity.Engineering;
import com.mes.engineering.mapper.EngineeringMapper;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.service.GlassInfoService;
import com.mes.pp.entity.OptimizeHeatDetail;
import com.mes.pp.entity.OptimizeHeatLayout;
import com.mes.pp.entity.OptimizeProject;
import com.mes.pp.mapper.OptimizeHeatDetailMapper;
import com.mes.taskcache.entity.TaskCache;
import com.mes.taskcache.service.TaskCacheService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
* 服务实现类
*
*
* @author zhoush
* @since 2024-04-07
*/
@Service
@Slf4j
public class EdgStorageCageDetailsServiceImpl extends MPJBaseServiceImpl implements EdgStorageCageDetailsService {
@Resource
EngineeringMapper engineeringMapper;
@Resource
OptimizeHeatDetailMapper optimizeHeatDetailMapper;
@Resource
EdgStorageCageMapper edgStorageCageMapper;
@Resource
GlassInfoService glassInfoService;
@Autowired
TaskCacheService taskCacheService;
@Resource
DamageMapper damageMapper;
@Autowired
DamageService damageService;
@Autowired
EdgGlassTaskInfoService edgGlassTaskInfoService;
@Override
public List queryCurrentCutDrawing(int deviceId, int stationCell) {
// 获取本条线当前正在执行的工程
Engineering engineering = engineeringMapper.selectOne(new LambdaQueryWrapper()
.eq(Engineering::getState, 1).eq(Engineering::getStationCell, stationCell));
if (null == engineering) {
log.info("当前线路没有需要执行的工程");
return null;
}
List edgStorageCageDetailsList = this.list(new LambdaQueryWrapper()
.eq(EdgStorageCageDetails::getDeviceId, deviceId)
.eq(EdgStorageCageDetails::getEngineerId, engineering.getEngineerId())
.orderByDesc(EdgStorageCageDetails::getId));
//按照当前工程去理片笼搜最后一块玻璃 获取工程号 版图号 没有直接显示第一张版图
int patternSequence = 0;
if (CollectionUtil.isEmpty(edgStorageCageDetailsList)) {
patternSequence = 1;
} else {
EdgStorageCageDetails lastGlass = edgStorageCageDetailsList.get(0);
log.info("获取最后一块进笼的玻璃为:{}", lastGlass);
List drawingVOList = baseMapper.queryCutDrawingByEngineerId(lastGlass.getEngineerId(), lastGlass.getPatternSequence(), 1);
if (CollectionUtil.isEmpty(drawingVOList)) {
//无剩余 显示当前版图加1的全量版图
patternSequence = lastGlass.getPatternSequence() + 1;
} else {
//当前版图是否有剩余,有剩余显示当前版图
patternSequence = lastGlass.getPatternSequence();
}
}
return baseMapper.queryCutDrawingByEngineerId(engineering.getEngineerId(), patternSequence, 0);
}
@Override
public Map queryCutDrawingByEngineerId(String engineerId, int patternSequence) {
HashMap map = new HashMap<>();
map.put("currentCutDrawing", baseMapper.queryCutDrawingByEngineerId(engineerId, patternSequence, 0));
List glassInfoList = glassInfoService.list(new LambdaQueryWrapper().eq(GlassInfo::getEngineerId, engineerId));
long totalPatternSequence = glassInfoList.stream().map(GlassInfo::getPatternSequence).distinct().count();
map.put("totalPatternSequence", totalPatternSequence);
return map;
}
/**
* 获取 工程下的钢化版图
*
* @param current
* @return
*/
@Override
public List