package com.mes.device.service;
|
|
import com.mes.device.entity.GlassInfo;
|
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 玻璃信息服务接口
|
*
|
* @author mes
|
* @since 2024-11-20
|
*/
|
public interface GlassInfoService {
|
|
/**
|
* 根据玻璃ID查询玻璃信息
|
*
|
* @param glassId 玻璃ID
|
* @return 玻璃信息,如果不存在返回null
|
*/
|
GlassInfo getGlassInfo(String glassId);
|
|
/**
|
* 根据玻璃ID获取玻璃长度
|
*
|
* @param glassId 玻璃ID
|
* @return 玻璃长度(mm),如果不存在返回null
|
*/
|
Integer getGlassLength(String glassId);
|
|
/**
|
* 根据玻璃ID列表批量查询玻璃信息
|
*
|
* @param glassIds 玻璃ID列表
|
* @return 玻璃信息列表
|
*/
|
List<GlassInfo> getGlassInfos(List<String> glassIds);
|
|
/**
|
* 根据玻璃ID列表批量获取玻璃长度映射
|
*
|
* @param glassIds 玻璃ID列表
|
* @return 玻璃ID到长度的映射Map
|
*/
|
Map<String, Integer> getGlassLengthMap(List<String> glassIds);
|
|
/**
|
* 创建或更新玻璃信息
|
*
|
* @param glassInfo 玻璃信息
|
* @return 是否成功
|
*/
|
boolean saveOrUpdateGlassInfo(GlassInfo glassInfo);
|
|
/**
|
* 批量创建或更新玻璃信息
|
*
|
* @param glassInfos 玻璃信息列表
|
* @return 是否成功
|
*/
|
boolean batchSaveOrUpdateGlassInfo(List<GlassInfo> glassInfos);
|
|
/**
|
* 查询最近扫码的玻璃ID列表
|
*
|
* @param minutesAgo 查询最近多少分钟内的记录,默认2分钟
|
* @param maxCount 最大返回数量,默认20
|
* @param workLine 工作线号(可选,用于过滤)
|
* @return 玻璃ID列表
|
*/
|
List<String> getRecentScannedGlassIds(Integer minutesAgo, Integer maxCount, String workLine);
|
|
/**
|
* 批量更新玻璃状态
|
*/
|
boolean updateGlassStatus(List<String> glassIds, String status);
|
|
/**
|
* 获取 MES 工程导入 URL
|
*
|
* @return MES 工程导入 URL
|
*/
|
String getMesEngineeringImportUrl();
|
|
/**
|
* 将前端上传的 Excel 行数据转换为 MES 导入工程所需的 JSON 结构
|
*
|
* @param excelRows 前端解析后的行数据,字段示例:
|
* glassId,width,height,thickness,quantity,orderNumber,filmsId,flowCardId,productName,customerName
|
* @return 符合 MES 接口要求的请求体 Map
|
*/
|
Map<String, Object> buildEngineerImportPayload(List<Map<String, Object>> excelRows);
|
|
/**
|
* 根据工程号查询玻璃信息列表
|
*
|
* @param engineeringId 工程号
|
* @return 玻璃信息列表
|
*/
|
List<GlassInfo> getGlassInfosByEngineeringId(String engineeringId);
|
|
/**
|
* 从Excel数据保存玻璃信息到本地数据库,并关联engineering_id
|
*
|
* @param excelRows Excel行数据
|
* @param engineeringId 工程号
|
*/
|
void saveGlassInfosFromExcel(List<Map<String, Object>> excelRows, String engineeringId);
|
|
/**
|
* 扫码交互后更新玻璃信息状态(将state从0改为1)
|
*
|
* @param glassId 玻璃ID
|
* @param width 宽度(可选)
|
* @param height 高度(可选)
|
* @param workLine 产线编号(可选)
|
* @return 是否更新成功
|
*/
|
boolean updateGlassStateAfterScan(String glassId, Integer width, Integer height, Integer workLine);
|
|
/**
|
* 根据工程号删除玻璃信息
|
*
|
* @param engineeringId 工程号
|
* @return 删除的玻璃数量
|
*/
|
int deleteGlassInfosByEngineeringId(String engineeringId);
|
}
|