huang
4 天以前 9dcde5b27b70a4b0c0885347af5405eb2d1ef089
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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);
}