| | |
| | | using WIDESEA_Core.Enums; |
| | | using System.Diagnostics; |
| | | using WIDESEA_Core.Log; |
| | | using FastReport.DevComponents.DotNetBar; |
| | | namespace WIDESEA_Tasks |
| | | { |
| | | public partial class AGVjob |
| | |
| | | { |
| | | try |
| | | { |
| | | Console.WriteLine("å¼å§ " + DateTime.Now); |
| | | var agvtask = _taskService.GetTasks(); |
| | | if (agvtask != null) |
| | | { |
| | | AGVTaskPend pend = new AGVTaskPend(); |
| | | //pend.requestType = pend.requestType; |
| | | //pend.accessId = pend.accessId; |
| | | //pend.requestId = pend.requestId; |
| | | Pend data = new Pend(); |
| | | TaskPend taskPend = new TaskPend(); |
| | | { |
| | | taskPend.taskNo = agvtask.TaskNum.ToString(); |
| | | taskPend.taskType = "MV"; |
| | | DateTime date = DateTime.Now; |
| | | taskPend.taskDate = date.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | taskPend.taskState = "00"; |
| | | taskPend.priority = "1"; |
| | | taskPend.wareCode = "W01"; |
| | | taskPend.docNo = ""; |
| | | taskPend.sku = ""; |
| | | taskPend.uom = ""; |
| | | taskPend.qty = 0; |
| | | taskPend.trace = ""; |
| | | taskPend.fmLoc = agvtask.SourceAddress.ToString(); |
| | | taskPend.toLoc = agvtask.TargetAddress.ToString(); |
| | | taskPend.udf01 = ""; |
| | | taskPend.udf02 = ""; |
| | | } |
| | | data.detail.Add(taskPend); |
| | | pend.data = data; |
| | | |
| | | var time = new DateTimeOffset(DateTime.Now); |
| | | long timestampStr = time.ToUnixTimeMilliseconds();//æ¶é´æ³ |
| | | string appkeystr = "appsalt=" + AGVopenApi.appsalt + "&appkey=" + AGVopenApi.appkey; |
| | | string appkeyEcrypt = GetMD5Hex(appkeystr); |
| | | string origin = appkeyEcrypt + "&appsecret=" + AGVopenApi.appsecret + "×tamp=" + timestampStr + "&uniquestr=" + timestampStr; |
| | | string signstr = GetMD5Hex(origin); |
| | | Dictionary<string, string> headers = new Dictionary<string, string>() |
| | | List<Dt_Task> agvtasks = _taskService.GetTasks(); |
| | | var workshop1Tasks = agvtasks.Where(t => t.SourceAddress.Contains("PVCæå")) |
| | | .OrderBy(t => t.CreateDate) |
| | | .ToList(); |
| | | |
| | | var workshop2Tasks = agvtasks.Where(t => t.SourceAddress.Contains("ç¡
ç·æå")) |
| | | .OrderBy(t => t.CreateDate) |
| | | .ToList(); |
| | | |
| | | var workshop3Tasks = agvtasks.Where(t => !t.SourceAddress.Contains("æå") || t.SourceAddress.Contains("åæå")) |
| | | .OrderBy(t => t.CreateDate) |
| | | .ToList(); |
| | | int maxCount = Math.Max(workshop1Tasks.Count, workshop2Tasks.Count); |
| | | for (int i = 0; i < maxCount; i++) |
| | | { |
| | | if (i < workshop1Tasks.Count) |
| | | { |
| | | {"appkey",AGVopenApi.appkey }, |
| | | {"timestamp",timestampStr.ToString() }, |
| | | {"sign",signstr } |
| | | }; |
| | | string posy = JsonConvert.SerializeObject(pend); |
| | | var respone = HttpHelper.Post(url, posy, headers: headers); |
| | | var res = JsonConvert.DeserializeObject<WebResponseContent>(respone); |
| | | if (res.Code == 200) |
| | | ProcessTask(workshop1Tasks[i]); |
| | | } |
| | | |
| | | if (i < workshop2Tasks.Count) |
| | | { |
| | | agvtask.Dispatchertime = DateTime.Now; |
| | | agvtask.TaskStatus = AGVTaskStatusEnum.AGV_SendOut.ObjToInt(); |
| | | _taskService.UpdateData(agvtask); |
| | | Thread.Sleep(1000); |
| | | WriteLog.GetLog("æ 人å车任å¡ä¸å").Write("ä»»å¡å·ï¼" + agvtask.TaskNum, "æ 人å车任å¡ä¸å"); |
| | | ProcessTask(workshop2Tasks[i]); |
| | | } |
| | | } |
| | | foreach (var task in workshop3Tasks) |
| | | { |
| | | ProcessTask(task); |
| | | } |
| | | void ProcessTask(Dt_Task agvtask) |
| | | { |
| | | //foreach (Dt_Task agvtask in agvtasks) |
| | | //{ |
| | | bool text = true; |
| | | bool text1 = true; |
| | | bool text2 = true; |
| | | bool text3 = true; |
| | | Thread.Sleep(500); |
| | | Dt_CachePoint CachePointSO = _cachePointRepository.QueryFirst(x => x.PointCode == agvtask.SourceAddress);//æ¥è¯¢èµ·ç¹ |
| | | Dt_CachePoint CachePoint = _cachePointRepository.QueryFirst(x => x.PointCode == agvtask.TargetAddress && x.PointCode.Contains("æååº"));//|| x.PointCode.Contains("åææåº")) && x.Remark != null |
| | | |
| | | Dt_CachePoint dt_CachePoint = _cachePointRepository.QueryFirst(x => x.PointCode == agvtask.TargetAddress && x.Remark != null);//æ¥è¯¢ç»ç¹ |
| | | Dt_CachePoint CachePointYCl = _cachePointRepository.QueryFirst(x => x.PointCode == agvtask.SourceAddress && x.Remark != null && x.PointCode.Contains("åææåº")); |
| | | if (CachePoint != null && CachePointSO != null) |
| | | { |
| | | var pointnames = _cachePointRepository.QueryData(x => x.Remark == CachePoint.Remark && x.Depth != 0).ToList(); |
| | | foreach (var item in pointnames) |
| | | { |
| | | var a = CachePoint.Depth.ObjToInt(); |
| | | var b = item.Depth.ObjToInt(); |
| | | if (a > b) |
| | | { |
| | | Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.TargetAddress == item.PointCode); |
| | | if (dt_Task != null) |
| | | { |
| | | text = false; |
| | | continue; |
| | | } |
| | | } |
| | | if (a < b) |
| | | { |
| | | if (item.PointStatus == LocationStatusEnum.InStock.ObjToInt()) |
| | | { |
| | | text = false; |
| | | } |
| | | } |
| | | } |
| | | if (CachePointSO.Remark != null) |
| | | { |
| | | var pointname = _cachePointRepository.QueryData(x => x.Remark == CachePointSO.Remark && x.Depth != 0).ToList(); |
| | | foreach (var item1 in pointname) |
| | | { |
| | | var c = CachePointSO.Depth.ObjToInt(); |
| | | var d = item1.Depth.ObjToInt(); |
| | | if (c > d) |
| | | { |
| | | Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.SourceAddress == item1.PointCode); |
| | | if (dt_Task != null) |
| | | { |
| | | text1 = false; |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if (text == true && text1 == true) |
| | | { |
| | | AGVTask(agvtask); |
| | | } |
| | | } |
| | | else if (CachePointYCl != null && dt_CachePoint != null) |
| | | { |
| | | var pointnames = _cachePointRepository.QueryData(x => x.Remark == CachePointYCl.Remark).ToList(); |
| | | foreach (var item in pointnames) |
| | | { |
| | | var a = CachePointYCl.Depth.ObjToInt(); |
| | | var b = item.Depth.ObjToInt(); |
| | | if (a > b) |
| | | { |
| | | Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.SourceAddress == item.PointCode); |
| | | if (dt_Task != null) |
| | | { |
| | | text2 = false; |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | var pointname = _cachePointRepository.QueryData(x => x.Remark == dt_CachePoint.Remark).ToList(); |
| | | foreach (var item1 in pointname) |
| | | { |
| | | var c = dt_CachePoint.Depth.ObjToInt(); |
| | | var d = item1.Depth.ObjToInt(); |
| | | if (c > d) |
| | | { |
| | | Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.TargetAddress == item1.PointCode); |
| | | if (dt_Task != null) |
| | | { |
| | | text3 = false; |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | if (text2 == true && text3 == true) |
| | | { |
| | | AGVTask(agvtask); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //_unitOfWorkManage.RollbackTran(); |
| | | content = WebResponseContent.Instance.Error($"{res.Message}"); |
| | | WriteLog.GetLog("æ 人å车任å¡ä¸å失败").Write("ä»»å¡å·ï¼" + agvtask.TaskNum + '\n' + "失败信æ¯" + res.Message, "æ 人å车任å¡ä¸å失败"); |
| | | AGVTask(agvtask); |
| | | } |
| | | //} |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | |
| | | |
| | | } |
| | | |
| | | public void AGVTask(Dt_Task agvtask) |
| | | { |
| | | AGVTaskPend pend = new AGVTaskPend(); |
| | | //pend.requestType = pend.requestType; |
| | | //pend.accessId = pend.accessId; |
| | | //pend.requestId = pend.requestId; |
| | | Pend data = new Pend(); |
| | | TaskPend taskPend = new TaskPend(); |
| | | { |
| | | taskPend.taskNo = agvtask.TaskNum.ToString(); |
| | | taskPend.taskType = "MV"; |
| | | DateTime date = DateTime.Now; |
| | | taskPend.taskDate = date.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | taskPend.taskState = "00"; |
| | | taskPend.priority = "1"; |
| | | taskPend.wareCode = "W01"; |
| | | taskPend.docNo = ""; |
| | | taskPend.sku = ""; |
| | | taskPend.uom = ""; |
| | | taskPend.qty = 0; |
| | | taskPend.trace = ""; |
| | | taskPend.fmLoc = agvtask.SourceAddress.ToString(); |
| | | taskPend.toLoc = agvtask.TargetAddress.ToString(); |
| | | taskPend.udf01 = ""; |
| | | taskPend.udf02 = ""; |
| | | } |
| | | data.detail.Add(taskPend); |
| | | pend.data = data; |
| | | |
| | | var time = new DateTimeOffset(DateTime.Now); |
| | | long timestampStr = time.ToUnixTimeMilliseconds();//æ¶é´æ³ |
| | | string appkeystr = "appsalt=" + AGVopenApi.appsalt + "&appkey=" + AGVopenApi.appkey; |
| | | string appkeyEcrypt = GetMD5Hex(appkeystr); |
| | | string origin = appkeyEcrypt + "&appsecret=" + AGVopenApi.appsecret + "×tamp=" + timestampStr + "&uniquestr=" + timestampStr; |
| | | string signstr = GetMD5Hex(origin); |
| | | Dictionary<string, string> headers = new Dictionary<string, string>() |
| | | { |
| | | {"appkey",AGVopenApi.appkey }, |
| | | {"timestamp",timestampStr.ToString() }, |
| | | {"sign",signstr } |
| | | }; |
| | | string posy = JsonConvert.SerializeObject(pend); |
| | | var respone = HttpHelper.Post(url, posy, headers: headers); |
| | | var res = JsonConvert.DeserializeObject<WebResponseContent>(respone); |
| | | if (res.Code == 200) |
| | | { |
| | | agvtask.Dispatchertime = DateTime.Now; |
| | | agvtask.TaskStatus = AGVTaskStatusEnum.AGV_SendOut.ObjToInt(); |
| | | _taskService.UpdateData(agvtask); |
| | | Thread.Sleep(1000); |
| | | WriteLog.GetLog("æ 人å车任å¡ä¸å").Write("ä»»å¡å·ï¼" + agvtask.TaskNum, "æ 人å车任å¡ä¸å"); |
| | | } |
| | | else |
| | | { |
| | | //_unitOfWorkManage.RollbackTran(); |
| | | content = WebResponseContent.Instance.Error($"{res.msg}"); |
| | | WriteLog.GetLog("æ 人å车任å¡ä¸å失败").Write("ä»»å¡å·ï¼" + agvtask.TaskNum + '\n' + "失败信æ¯" + res.msg, "æ 人å车任å¡ä¸å失败"); |
| | | } |
| | | } |
| | | public string GetMD5Hex(string appkeystr) |
| | | { |
| | | using MD5 md5Hash = MD5.Create(); |