服务端的TigerApi 框架,基于.NET6 2024 版本
Rodney Chen
2025-02-22 fb726bc28268c7efb73629f6ae12b25232a18538
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
using System;
using SqlSugar;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
 
namespace Tiger.Model
{
    /// <summary>
    /// 实体:生产过程记录
    /// </summary>
    [Description("Primary:ID")]
    [DisplayName("生产过程记录")]
    [Serializable]
    [SugarTable("MES_WIP_HIS")]
    public class MES_WIP_HIS : DbEntityWithAuth
    {
        #region 构造函数
        /// <summary>
        /// 实体:生产过程记录
        /// </summary>
        public MES_WIP_HIS() { }
 
        /// <summary>
        /// 实体:生产过程记录
        /// </summary>
        /// <param name="data">历史的来源Item</param>
        /// <param name="traceInfo">追溯信息</param>
        public MES_WIP_HIS(MES_WIP_DATA data, string traceInfo)
        {
            ID = Guid.NewGuid().ToString("N");
            CREATE_USER = data.CREATE_USER;
            UPDATE_USER = data.UPDATE_USER;
            AUTH_ORG = data.AUTH_ORG;
            AUTH_PROD = data.AUTH_PROD;
            AUTH_WH = data.AUTH_WH;
            WIP_ID = data.ID;
            SN = data.SN;
            STATUS = data.STATUS;
            ITEM_CODE = data.ITEM_CODE;
            QTY = data.QTY;
            WORK_ORDER = data.WORK_ORDER;
            BATCH_NO = data.BATCH_NO;
            ROT_CODE = data.ROT_CODE;
            NODE_ID = data.NODE_ID;
            NODE_NAME = data.NODE_NAME;
            FTY_CODE = data.FTY_CODE;
            WS_CODE = data.WS_CODE;
            LINE_CODE = data.LINE_CODE;
            POST_CODE = data.POST_CODE;
            OPER_CODE = data.OPER_CODE;
            SEGMENT = data.SEGMENT;
            HOLD_FLAG = data.HOLD_FLAG;
            REWORK_FLAG = data.REWORK_FLAG;
            UNBIND_FLAG = data.UNBIND_FLAG;
            FINISHED_FLAG = data.FINISHED_FLAG;
            DFT_FLAG = data.DFT_FLAG;
            DFT_COUNT = data.DFT_COUNT;
            DFT_CODE = data.DFT_CODE;
            REFLOW_NODE = data.REFLOW_NODE;
            FLOW_SN = data.FLOW_SN;
            TRAY_SN = data.TRAY_SN;
            INNER_SN = data.INNER_SN;
            CARTON_SN = data.CARTON_SN;
            PALLET_SN = data.PALLET_SN;
            INV_FLAG = data.INV_FLAG;
            INV_DATE = data.INV_DATE;
            INLINE_DATE = data.INLINE_DATE;
            OUTLINE_DATE = data.OUTLINE_DATE;
            OPERATION_TIME = data.OPERATION_TIME;
            OPERATION_END = data.OPERATION_END;
            DFT_QTY = data.DFT_QTY;
            SCRAP_QTY = data.SCRAP_QTY;
            SFTS_CODE = data.SFTS_CODE;
            SFT_CODE = data.SFT_CODE;
            PRD_CODE = data.PRD_CODE;
            OBA_STATUS = data.OBA_STATUS;
            OBA_BATCH = data.OBA_BATCH;
            LOCK_BATCH = data.LOCK_BATCH;
            SHIPPING_DATE = data.SHIPPING_DATE;
            SHIPPING_ORDER = data.SHIPPING_ORDER;
            REMARK = data.REMARK;
            TRACE_INFO = traceInfo;
        }
        #endregion
 
        #region 公共属性
        /// <summary>
        /// 在制品ID
        /// </summary>
        [DisplayName("在制品ID")]
        public string WIP_ID { get; set; }
        /// <summary>
        /// 过站条码
        /// </summary>
        [DisplayName("过站条码")]
        public string SN { get; set; }
        /// <summary>
        /// 状态(0Init初始化|10Input已投入|20OK良品过站|30NG不良过站|40Repair维修中|50Output已产出|51WaitStorage待入库|52WaitShipment待出货|60InStorage已入库|61Reject已拒收|80Shipped已出货|90Scrap已报废|91Offline异常下线)
        /// </summary>
        [DisplayName("状态(0Init初始化|10Input已投入|20OK良品过站|30NG不良过站|40Repair维修中|50Output已产出|51WaitStorage待入库|52WaitShipment待出货|60InStorage已入库|61Reject已拒收|80Shipped已出货|90Scrap已报废|91Offline异常下线)")]
        public int STATUS { get; set; }
        /// <summary>
        /// 物料编码
        /// </summary>
        [DisplayName("物料编码")]
        public string ITEM_CODE { get; set; }
        /// <summary>
        /// 数量
        /// </summary>
        [DisplayName("数量")]
        public double QTY { get; set; } = 1;
        /// <summary>
        /// 工单号
        /// </summary>
        [DisplayName("工单号")]
        public string WORK_ORDER { get; set; }
        /// <summary>
        /// 工单批次号
        /// </summary>
        [DisplayName("工单批次号")]
        public string BATCH_NO { get; set; }
        /// <summary>
        /// 工艺路线编码
        /// </summary>
        [DisplayName("工艺路线编码")]
        public string ROT_CODE { get; set; }
        /// <summary>
        /// 工艺路线节点ID
        /// </summary>
        [DisplayName("工艺路线节点ID")]
        public string NODE_ID { get; set; }
        /// <summary>
        /// 工艺路线节点名称
        /// </summary>
        [DisplayName("工艺路线节点名称")]
        public string NODE_NAME { get; set; }
        /// <summary>
        /// 工厂编码
        /// </summary>
        [DisplayName("工厂编码")]
        public string FTY_CODE { get; set; }
        /// <summary>
        /// 车间编码
        /// </summary>
        [DisplayName("车间编码")]
        public string WS_CODE { get; set; }
        /// <summary>
        /// 产线编码
        /// </summary>
        [DisplayName("产线编码")]
        public string LINE_CODE { get; set; }
        /// <summary>
        /// 岗位编码
        /// </summary>
        [DisplayName("岗位编码")]
        public string POST_CODE { get; set; }
        /// <summary>
        /// 工序编码
        /// </summary>
        [DisplayName("工序编码")]
        public string OPER_CODE { get; set; }
        /// <summary>
        /// 加工段
        /// </summary>
        [DisplayName("加工段")]
        public string SEGMENT { get; set; }
        /// <summary>
        /// 锁定标记
        /// </summary>
        [DisplayName("锁定标记")]
        public string HOLD_FLAG { get; set; }
        /// <summary>
        /// 返工标记
        /// </summary>
        [DisplayName("返工标记")]
        public string REWORK_FLAG { get; set; }
        /// <summary>
        /// 解绑标记(因异常下线导致当前记录从工单生产数据中移除,不参与工艺流程计算和数据统计)
        /// </summary>
        [DisplayName("解绑标记(因异常下线导致当前记录从工单生产数据中移除,不参与工艺流程计算和数据统计)")]
        public string UNBIND_FLAG { get; set; }
        /// <summary>
        /// 是否完工
        /// </summary>
        [DisplayName("是否完工")]
        public string FINISHED_FLAG { get; set; }
        /// <summary>
        /// 是否不良
        /// </summary>
        [DisplayName("是否不良")]
        public string DFT_FLAG { get; set; }
        /// <summary>
        /// 不良计数
        /// </summary>
        [DisplayName("不良计数")]
        public int DFT_COUNT { get; set; }
        /// <summary>
        /// 不良代码编码
        /// </summary>
        [DisplayName("不良代码编码")]
        public string DFT_CODE { get; set; }
        /// <summary>
        /// 维修回流工序名称(为空则不指定回流工序)
        /// </summary>
        [DisplayName("维修回流工序名称(为空则不指定回流工序)")]
        public string REFLOW_NODE { get; set; }
        /// <summary>
        /// 厂内流转条码
        /// </summary>
        [DisplayName("厂内流转条码")]
        public string FLOW_SN { get; set; }
        /// <summary>
        /// 托盘/载具条码
        /// </summary>
        [DisplayName("托盘/载具条码")]
        public string TRAY_SN { get; set; }
        /// <summary>
        /// 内包装条码
        /// </summary>
        [DisplayName("内包装条码")]
        public string INNER_SN { get; set; }
        /// <summary>
        /// 外箱条码
        /// </summary>
        [DisplayName("外箱条码")]
        public string CARTON_SN { get; set; }
        /// <summary>
        /// 栈板条码
        /// </summary>
        [DisplayName("栈板条码")]
        public string PALLET_SN { get; set; }
        /// <summary>
        /// 是否入库
        /// </summary>
        [DisplayName("是否入库")]
        public string INV_FLAG { get; set; }
        /// <summary>
        /// 入库日期
        /// </summary>
        [DisplayName("入库日期")]
        public DateTime INV_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 投入时间
        /// </summary>
        [DisplayName("投入时间")]
        public DateTime INLINE_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 产出时间
        /// </summary>
        [DisplayName("产出时间")]
        public DateTime OUTLINE_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 当前操作时间
        /// </summary>
        [DisplayName("当前操作时间")]
        public DateTime OPERATION_TIME { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 操作完成时间
        /// </summary>
        [DisplayName("操作完成时间")]
        public DateTime OPERATION_END { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 不良数量
        /// </summary>
        [DisplayName("不良数量")]
        public int DFT_QTY { get; set; } = 0;
        /// <summary>
        /// 报废数量
        /// </summary>
        [DisplayName("报废数量")]
        public int SCRAP_QTY { get; set; } = 0;
        /// <summary>
        /// 班制编码
        /// </summary>
        [DisplayName("班制编码")]
        public string SFTS_CODE { get; set; }
        /// <summary>
        /// 班次编码
        /// </summary>
        [DisplayName("班次编码")]
        public string SFT_CODE { get; set; }
        /// <summary>
        /// 时段编码
        /// </summary>
        [DisplayName("时段编码")]
        public string PRD_CODE { get; set; }
        /// <summary>
        /// 抽检状态(0Unsampled未抽检|1NoSampling不抽检|2WaitCheck待检验|3Checking检验中|4Completed检验完|5Locked已锁定)
        /// </summary>
        [DisplayName("抽检状态(0Unsampled未抽检|1NoSampling不抽检|2WaitCheck待检验|3Checking检验中|4Completed检验完|5Locked已锁定)")]
        public int OBA_STATUS { get; set; }
        /// <summary>
        /// 抽检批次号
        /// </summary>
        [DisplayName("抽检批次号")]
        public string OBA_BATCH { get; set; }
        /// <summary>
        /// 锁定批次号
        /// </summary>
        [DisplayName("锁定批次号")]
        public string LOCK_BATCH { get; set; }
        /// <summary>
        /// 出货时间
        /// </summary>
        [DisplayName("出货时间")]
        public DateTime SHIPPING_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 出货单号
        /// </summary>
        [DisplayName("出货单号")]
        public string SHIPPING_ORDER { get; set; }
        /// <summary>
        /// 备注
        /// </summary>
        [DisplayName("备注")]
        public string REMARK { get; set; }
        /// <summary>
        /// 操作耗时(s)
        /// </summary>
        [DisplayName("操作耗时(ms)")]
        public long ELAPSED_TIME { get; set; } = 0;
        /// <summary>
        /// 追溯信息
        /// </summary>
        [DisplayName("追溯信息")]
        public string TRACE_INFO { get; set; }
        #endregion
 
        #region 虚拟属性
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        /// <summary>
        /// 是否已经良品过站
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        public bool IsFinished => DFT_FLAG != "Y";
        #endregion
 
        #region 外键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是MES_WIP_HIS类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.MES_WIP_HISId))]//ClassA表中的MES_WIP_HISId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.MES_WIP_HISId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
 
        #region 枚举变量
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            Enum1,
        }
        */
 
        /// <summary>
        /// 枚举:状态(0Init初始化|10Input已投入|20OK良品过站|30NG不良过站|40Repair维修中|50Output已产出|51WaitStorage待入库|52WaitShipment待出货|60InStorage已入库|61Reject已拒收|80Shipped已出货|90Scrap已报废|91Offline异常下线)
        /// </summary>
        public enum STATUSs
        {
            [Description("初始化")]
            Init = 0,
            [Description("已投入")]
            Input = 1,
            [Description("良品过站")]
            OK = 2,
            [Description("不良过站")]
            NG = 3,
            [Description("维修中")]
            Repair = 4,
            [Description("已完工")]
            Finished = 5,
            [Description("已入库")]
            InStorage = 6,
            [Description("已拒收")]
            Reject = 7,
            [Description("已出货")]
            Shipped = 8,
            [Description("异常下线")]
            Offline = 9,
            [Description("已报废")]
            Scrap = 10,
        }
 
        /// <summary>
        /// 枚举:抽检状态(0Unsampled未抽检|1NoSampling不抽检|2WaitCheck待检验|3Checking检验中|4Completed检验完|5Locked已锁定)
        /// </summary>
        public enum OBA_STATUSs
        {
            [Description("未抽检")]
            Unsampled = 0,
            [Description("不抽检")]
            NoSampling = 1,
            [Description("待检验")]
            WaitCheck = 2,
            [Description("检验中")]
            Checking = 3,
            [Description("检验完")]
            Completed = 4,
            [Description("已锁定")]
            Locked = 5,
        }
        #endregion
 
        #region 公共方法
 
        #endregion
 
    }//endClass
}