package com.mes.bigstorage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.base.entity.vo.BigStorageVO;
import com.mes.bigstorage.entity.BigStorageCageDetails;
import com.mes.bigstorage.entity.dto.*;
import com.mes.bigstorage.entity.vo.BigStorageQueryVO;
import com.mes.bigstoragetask.entity.UpdateBigStorageCageDTO;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.pp.entity.OptimizeProject;
import java.util.List;
import java.util.Map;
/**
*
* 服务类
*
*
* @author zhoush
* @since 2024-03-27
*/
public interface BigStorageCageDetailsService extends IService {
List selectFeedTask();
List selectOutTask();
double selectGetBoard(String plcFeedReqLine);
void deleteBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails);
void damageBigStorageCageDetails(String glassId, int status);
List selectBigStorageCageDetails(String glassId);
void insertBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails);
void finishBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails);
void outBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails);
/**
* 查询进片格子信息:优先工程最少、剩余格子最多的笼子内的格子
* @param EngineerId
* @param glassId
* @param thickness
* @return
*/
BigStorageDTO queryTargetSlot(String EngineerId, String glassId, int thickness);
/**
* 按照版图信息获取进片笼子信息
*
* @param glassInfo
*/
BigStorageDTO queryTargetSlotByTempering(GlassInfo glassInfo);
/**
* 指定工程的版图是否到齐
* @param engineerId
* @param temperingLayoutId
* @return
*/
List temperingIsAllByTemperingLayoutId(String engineerId, Integer temperingLayoutId);
/**
* 获取钢化版图已经到齐的工程号及版图id
*
* @return
*/
List temperingIsAll();
/**
* 获取每个钢化版图占用的格子数量
*
* @return
*/
List queryTemperingOccupySlot();
/**
* 获取版图每个格子的最大最小序号
*
* @param engineerId
* @param temperingLayoutId
* @return
*/
List queryGlassMaxAndMin(String engineerId, Integer temperingLayoutId);
boolean temperingGlass(String temperingLayoutId, String engineerId, String temperingFeedSequence);
List selectTemperingGlass(int isTempering);
void updateBySlot(List glassList, int state);
String temperingSwitch(Boolean flag);
boolean appointTemperingEngineerId(String engineerId);
List queryIsAllNeedDispatchVirtualSlot(List deviceIdList);
List dispatchBigStorageGlassInfo(BigStorageRelationDTO bigStorageRelationDTO);
String dispatchSwitch(Boolean flag);
/**
* 按照工程信息及钢化id(炉号)获取缺少的玻璃信息
*
* @param bigStorageQueryVO
* @return
*/
List queryLackGlassInfo(BigStorageQueryVO bigStorageQueryVO);
String bigStorageGlassDamageByGlassId(String glassId);
/**
* 按照格子号更新详情表内的格子对应的设备id
*
* @param slotList
*/
void updateDeviceIdBySlot(List slotList);
/**
* 按照工程信息及钢化id(炉号)获取实际笼内的玻璃信息
*
* @param bigStorageQueryVO
* @return
*/
List queryRealGlassInfo(BigStorageQueryVO bigStorageQueryVO);
Map> querybigStorageCageDetail();
/**
* 取消钢化任务
*
* @return
*/
boolean cancelTemperingTask();
/**
* 查询工程待排序信息
* @return
*/
List queryEngineer();
/**
* 查询钢化排产顺序
* @return OptimizeProject 钢化排产顺序
*/
List queryTemperingOrder();
}