杨前锦
2025-05-26 d0a265713fd18162f3a82bdcd22e267df7298c7b
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
 
using HH.WCS.Mobox3.YNJT_BZP.dispatch;
using HH.WCS.Mobox3.YNJT_BZP.models;
using HH.WCS.Mobox3.YNJT_BZP.wms;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Web.Http;
using static HH.WCS.Mobox3.YNJT_BZP.api.ApiHelper;
using static HH.WCS.Mobox3.YNJT_BZP.api.ApiModel;
using static HH.WCS.Mobox3.YNJT_BZP.api.OtherModel;
 
namespace HH.WCS.Mobox3.YNJT_BZP.api
{
    /// <summary>
    /// 第三方调用的接口
    /// </summary>
    [RoutePrefix("api")]
    public class WmsController : System.Web.Http.ApiController
    {
        /// <summary>
        /// 1.半制品/余料/空托下发入库任务
        /// 业务场景:
        /// 1.带束/零度、胎侧、BEC半制品线边区到带束/胎侧/BEC立库区
        /// 2.内衬、帘布、胎圈半制品线边到内衬/帘布/胎圈立库区
        /// 3.成型机半托回库(带束/零度、胎侧、BEC、内衬、帘布、胎圈/三角胶)
        /// 4.成型机空托回库(物料信息可以不填)
        /// 5.此接口用于入库,成型机半托回库,成型机空托回库,并且成型机半托回库,成型机空托回库调用类型为PDA调用
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public ReturnResult createInOrder(CreateInOrderModel model)
        {
            LogHelper.Info("【1.半制品/余料/空托下发入库任务】request:" + JsonConvert.SerializeObject(model), "WMS");
            var result = ApiHelper.createInOrder(model);
            LogHelper.Info("【1.半制品/余料/空托下发入库任务】response:" + JsonConvert.SerializeObject(result), "WMS");
            return result;
        }
 
        /// <summary>
        /// 2.空托出库
        /// 业务场景:
        /// 1.半制品线边呼叫空托:从立库出库流程(带束/零度、胎侧、BEC、内衬、帘布、胎圈/三角胶)
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public ReturnResult emptyTrayOutOrder(EmptyTrayOutOrderModel model)
        {
            LogHelper.Info("【2.空托出库】request:" + JsonConvert.SerializeObject(model), "WMS");
            var result = ApiHelper.emptyTrayOutOrder(model);
            LogHelper.Info("【2.空托出库】response:" + JsonConvert.SerializeObject(result), "WMS");
            return result;
        }
 
        /// <summary>
        /// 3.成型机叫料出库任务
        /// 业务场景:
        /// 1.成型机呼叫流程(带束/零度 、胎侧 、BEC、内衬、帘布、胎圈/三角胶)
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public ReturnResult createOutOrder(CreateOutOrderModel model)
        {
            LogHelper.Info("【3.成型机叫料出库任务】request:" + JsonConvert.SerializeObject(model), "WMS");
            var result = ApiHelper.createOutOrder(model);
            LogHelper.Info("【3.成型机叫料出库任务】response:" + JsonConvert.SerializeObject(result), "WMS");
            return result;
        }
 
        /// <summary>
        /// 4.人工入库任务
        /// 业务场景:
        /// 1.人工入库(带束/零度、胎侧、BEC、内衬、帘布、胎圈/三角胶)
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public ReturnResult manualStorage(CreateInOrderModel model)
        {
            LogHelper.Info("【4.人工入库任务】request:" + JsonConvert.SerializeObject(model), "WMS");
            var result = ApiHelper.manualStorage(model);
            LogHelper.Info("【4.人工入库任务】response:" + JsonConvert.SerializeObject(result), "WMS");
            return result;
        }
 
        /// <summary>
        /// 5.人工出库任务
        /// 业务场景:
        /// 1.人工出库(带束/零度、胎侧、BEC、内衬、帘布、胎圈/三角胶)
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public ReturnResult manualDelivery(CreateOutOrderModel model)
        {
            LogHelper.Info("【5.人工出库任务】request:" + JsonConvert.SerializeObject(model), "WMS");
            var result = ApiHelper.manualDelivery(model);
            LogHelper.Info("【5.人工出库任务】response:" + JsonConvert.SerializeObject(result), "WMS");
            return result;
        }
 
        /// <summary>
        /// 6.下发母拖出入库任务
        /// 业务场景:
        /// 1.下发母拖出入库任务
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public ReturnResult baseTrayOutInStock(BaseTrayOutInStockModel model)
        {
            LogHelper.Info("【6.下发母拖出入库任务】request:" + JsonConvert.SerializeObject(model), "WMS");
            ReturnResult result = new ReturnResult();
            if (model.taskType == "入库")
            {
                result = ApiHelper.baseTrayInStock(model.locCode,model.taskNo);
            }
            else if (model.taskType == "出库")
            {
                result = ApiHelper.baseTrayOutStock(model.locCode, model.taskNo);
            }
            
            LogHelper.Info("【6.下发母拖出入库任务】response:" + JsonConvert.SerializeObject(result), "WMS");
            return result;
        }
 
        // ------------------- WCS ----------------
 
        /// <summary>
        /// 7.WCS 任务状态反馈
        /// 业务场景:WCS在执行任务时,回报任务状态
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        /*[Route("notifyTaskStatus")]*/
        public ReturnResult notifyTaskStatus(TaskStatusFeedbackModel model)
        {
            LogHelper.Info("【7.WCS任务状态反馈】Request:" + JsonConvert.SerializeObject(model), "WMS");
            var result = ApiHelper.taskStatusFeedback(model);
            LogHelper.Info("【7.WCS任务状态反馈】response:" + JsonConvert.SerializeObject(result), "WMS");
            return result;
        }
 
        /// <summary>
        /// 8.WCS入库读码反馈
        /// 业务场景:WCS在执行任务时,回报任务状态
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        /*[Route("notifyTaskStatus")]*/
        public ReturnResult readCodeFeedback(ReadCodeFeedbackModel model)
        {
            LogHelper.Info("【8.WCS入库读码反馈】Request:" + JsonConvert.SerializeObject(model), "WMS");
            var result = ApiHelper.readCodeFeedback(model);
            LogHelper.Info("【8.WCS入库读码反馈】response:" + JsonConvert.SerializeObject(result), "WMS");
            return result;
        }
 
        // ----------------------------------- GT --------------------------------------------------------------
 
        /// <summary>
        /// 9.同步GT条码物料信息
        /// 业务场景:将GT服务器上的新增条码信息,同步到WMS服务上
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        /*[Route("notifyTaskStatus")]*/
        public ReturnResult synMatlInformation(SynMatlInformationModel model)
        {
            LogHelper.Info("【9.同步GT条码物料信息】Request:" + JsonConvert.SerializeObject(model), "GT");
            var result = ApiHelper.synMatlInformation(model.matlInformationList);
            LogHelper.Info("【9.同步GT条码物料信息】response:" + JsonConvert.SerializeObject(result), "GT");
            return result;
        }
 
        /// <summary>
        /// 10.同步更新物料状态
        /// 业务场景:GT的状态进行更新,wms也需要同步更新
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        /*[Route("notifyTaskStatus")]*/
        public ReturnResult synUpdateMatlStatus(SynUpdateMatlStatusModel model)
        {
            LogHelper.Info("【10.同步更新物料状态】Request:" + JsonConvert.SerializeObject(model), "GT");
            var result = ApiHelper.synUpdateMatlStatus(model.updateMatlStatuses);
            LogHelper.Info("【10.同步更新物料状态】response:" + JsonConvert.SerializeObject(result), "GT");
            return result;
        }
 
        /// <summary>
        /// 11.记录数据同步时间
        /// 业务场景:记录物料条码信息同步、物料状态信息同步时间
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        /*[Route("notifyTaskStatus")]*/
        public ReturnResult recordDataSynTime(RecordDataSynTimeModel model)
        {
            LogHelper.Info("【11.记录数据同步时间】Request:" + JsonConvert.SerializeObject(model), "GT");
            var result = ApiHelper.recordDataSynTime(model);
            LogHelper.Info("【11.记录数据同步时间】response:" + JsonConvert.SerializeObject(result), "GT");
            return result;
        }
 
        /// <summary>
        /// 12.查询上一次的数据同步时间
        /// 业务场景:记录物料条码信息同步、物料状态信息同步时间
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        /*[Route("notifyTaskStatus")]*/
        public ReturnResult findLastDataSynTime(RecordDataSynTimeModel model)
        {
            LogHelper.Info("【12.查询上一次的数据同步时间】Request:" + JsonConvert.SerializeObject(model), "GT");
            var result = ApiHelper.findLastDataSynTime(model.recordTable);
            LogHelper.Info("【12.查询上一次的数据同步时间】response:" + JsonConvert.SerializeObject(result), "GT");
            return result;
        }
 
        /// <summary>
        /// 13.同步更新物料存放时间配置表
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        /*[Route("notifyTaskStatus")]*/
        public ReturnResult synUpdateMatlTimeConfig(MatlTimeConfigModel model)
        {
            LogHelper.Info("【13.同步更新物料存放时间配置表】Request:" + JsonConvert.SerializeObject(model), "GT");
            var result = ApiHelper.synUpdateMatlTimeConfig(model.overages);
            LogHelper.Info("【13.同步更新物料存放时间配置表】response:" + JsonConvert.SerializeObject(result), "GT");
            return result;
        }
 
        public class MatlTimeConfigModel 
        {
            public List<MatlOverage> overages { get; set; }
        }
 
        public class MatlOverage
        {
            public string mcngrp { get; set; }  // 机器组代码    mcn字段 以 RTE  前缀=mcngrp字段=1;半制品  /  mcn字段 以 RTB   前缀=mcngrp字段=0;硫化机
            public string itempatt { get; set; }  // 物品模式(如条码匹配规则)
            public int overage { get; set; }  // 剩余/超额数量
            public decimal minhour { get; set; }  // 最小工作时间或条件
            public string flag_sts { get; set; }  // 状态标记
            public int recid { get; set; }
            public string last_modify_time { get; set; }
        }
 
        public class RecordDataSynTimeModel 
        {
            public string sysTime { get; set; } // 同步时间
            public int synNum { get; set; }  // 同步数量
            public string recordTable { get; set; } // 1.物料条码记录表 2.胚胎条码状态表 3.物料存放时间配置表
 
        }
 
        public class SynUpdateMatlStatusModel
        {
           public List<UpdateMatlStatus> updateMatlStatuses { get; set; }
        }
 
        public class UpdateMatlStatus
        {
            public string bc_entried { get; set; }
            public string jdge { get; set; }
        }
 
        public class SynMatlInformationModel 
        {
            public List<MatlInformation> matlInformationList { get; set; }
        }
    }
}