| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using ZXing; |
| | | |
| | | namespace Bro.M141.Process |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | public async Task<string> MESForBasketAsync(string ztype, string zlsn, string zlpn, string zstatus, string zversion, int timeoutMs = 3000) |
| | | public async Task<string> MESForBasketAsync(string ztype, string zlsn, string zlpn, string zstatus, string zversion, int timeoutMs = 30000) |
| | | { |
| | | var guid = Guid.NewGuid().ToString(); |
| | | var tcs = new TaskCompletionSource<string>(TaskCreationOptions.RunContinuationsAsynchronously); |
| | |
| | | } |
| | | } |
| | | |
| | | public async Task<string> MESForProduceAsync(ProductModel pro, string zwoid, int znonum, string endtray = "N", string line = "NQ216", int timeoutMs = 3000) |
| | | public async Task<string> MESForProduceAsync(ProductModel pro, string zversion, int znonum, string endtray = "N", string line = "NQ216", int timeoutMs = 3000) |
| | | { |
| | | var guid = Guid.NewGuid().ToString(); |
| | | var tcs = new TaskCompletionSource<string>(TaskCreationOptions.RunContinuationsAsynchronously); |
| | | _pendingTask2[guid] = tcs; |
| | | |
| | | string zresult = "OK"; |
| | | if (string.IsNullOrWhiteSpace(pro.Result)) |
| | | { |
| | | zresult = "NG"; |
| | | } |
| | | else if (!"OK".Equals(pro.Result)) |
| | | { |
| | | zresult = "NG"; |
| | | } |
| | | //string zr; |
| | | //switch (pro.Result) |
| | | //{ |
| | | // case "ok": |
| | | // zr = ""; |
| | | // break; |
| | | // case "异色": |
| | | // zr = "SZ2001"; |
| | | // break; |
| | | // case "磨印": |
| | | // zr = "SZ2012"; |
| | | // break; |
| | | // case "压伤": |
| | | // zr = "SZ2014"; |
| | | // break; |
| | | // case "变形": |
| | | // zr = "SZ2014"; |
| | | // break; |
| | | // case "划伤": |
| | | // zr = "SZ2021"; |
| | | // break; |
| | | // default: |
| | | // zr = "S31006"; |
| | | // break; |
| | | //} |
| | | |
| | | var DefectCodeMap = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase) |
| | | { |
| | | ["ok"] = "", |
| | | ["异色"] = "SZ2001", |
| | | ["磨印"] = "SZ2012", |
| | | ["压伤"] = "SZ2014", |
| | | ["变形"] = "SZ2014", |
| | | ["划伤"] = "SZ2021" |
| | | }; |
| | | const string DefaultErrorCode = "S31006"; |
| | | |
| | | string zr = DefectCodeMap.TryGetValue(pro.Result, out var code) ? code : DefaultErrorCode; |
| | | |
| | | |
| | | |
| | | var msgObj = new AutoLineMacBarcodeQueue |
| | |
| | | zdate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff"), |
| | | zline = line, |
| | | zbarcode = pro.SN, |
| | | zresult = string.IsNullOrWhiteSpace(pro.Result) ? "NG" : pro.Result, |
| | | zreson = pro.Result == "OK" ? "" : "SZ2014", |
| | | zresult = zresult, |
| | | zreson = zr, |
| | | //zreson = pro.Result == "OK" ? "" : "SZ2014", |
| | | // |
| | | |
| | | // |
| | | zno = znonum.ToString(), |
| | | zwoid = zwoid, |
| | | endtray = endtray |
| | | zwoid = pro.Zword, |
| | | endtray = endtray, |
| | | zversion = zversion |
| | | }; |
| | | |
| | | var message = JsonConvert.SerializeObject(msgObj); |
| | | var body = Encoding.UTF8.GetBytes(message); |
| | | CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ发送产品{pro.PID} 数据2:{message}"); |
| | | CommonLogger.LogAsync(DateTime.Now, EnumHelper.LogLevel.Information, $"RabbitMQ发送产品{pro.PID} 数据2:{message},缺陷代码为{zr}"); |
| | | _sendChannel.BasicPublish("", "auto_line_mac_barcode_queue", null, body); |
| | | |
| | | var completed = await Task.WhenAny(tcs.Task, Task.Delay(timeoutMs)); |
| | |
| | | /// 默认:N;零数尾盘:Y |
| | | /// </summary> |
| | | public string endtray { get; set; } = "N"; |
| | | /// <summary> |
| | | /// 每个ztype下对应独立一个序列号,一个业务动作一个,从0开始, |
| | | /// 每次加1,到达阈值后可重置(比如100后从0开始),只要和上一 |
| | | /// 次的不一样即可 |
| | | /// 业务动作解释:比如ztype为2时,Q01-000001解绑时传序列号1, |
| | | /// 如果Q01-000001在一些异常情况下,需要重试则还是传序列号为1, |
| | | /// 下一个Q01-000002解绑时传序列号2 |
| | | /// 通俗的说:一个ztype+zversion只能成功处理一次(阈值重置导致 |
| | | /// 的重复除外) |
| | | /// </summary> |
| | | public string zversion { get; set; } |
| | | } |
| | | |
| | | public class AutoLineMacBarcodeQueueBak |