| | |
| | | { |
| | | |
| | | List<Dt_Task> agvtasks = _taskService.GetTasks(); |
| | | foreach (Dt_Task agvtask in agvtasks) |
| | | 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) |
| | | { |
| | | ProcessTask(workshop1Tasks[i]); |
| | | } |
| | | |
| | | if (i < workshop2Tasks.Count) |
| | | { |
| | | 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; |
| | |
| | | continue; |
| | | } |
| | | } |
| | | if (a < b) |
| | | { |
| | | if (item.PointStatus == LocationStatusEnum.InStock.ObjToInt()) |
| | | { |
| | | text = false; |
| | | } |
| | | } |
| | | } |
| | | if (CachePointSO.Remark != null) |
| | | { |
| | |
| | | } |
| | | if (text == true && text1 == true) |
| | | { |
| | | 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.Message}"); |
| | | WriteLog.GetLog("æ 人å车任å¡ä¸å失败").Write("ä»»å¡å·ï¼" + agvtask.TaskNum + '\n' + "失败信æ¯" + res.Message, "æ 人å车任å¡ä¸å失败"); |
| | | } |
| | | AGVTask(agvtask); |
| | | } |
| | | } |
| | | else if (CachePointYCl != null && dt_CachePoint != null) |
| | |
| | | } |
| | | if (text2 == true && text3 == true) |
| | | { |
| | | 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.Message}"); |
| | | WriteLog.GetLog("æ 人å车任å¡ä¸å失败").Write("ä»»å¡å·ï¼" + agvtask.TaskNum + '\n' + "失败信æ¯" + res.Message, "æ 人å车任å¡ä¸å失败"); |
| | | } |
| | | AGVTask(agvtask); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | 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.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(); |