wankeda
2025-06-24 1caea0fdc7ed1788d854a2aba8853984b4494e01
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/JobsPart/SendAgvTask.cs
@@ -33,8 +33,38 @@
            {
                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;
@@ -61,6 +91,13 @@
                                    continue;
                                }
                            }
                            if (a < b)
                            {
                                if (item.PointStatus == LocationStatusEnum.InStock.ObjToInt())
                                {
                                    text = false;
                                }
                            }
                        }
                        if (CachePointSO.Remark != null)
                        {
@@ -82,62 +119,7 @@
                        }
                        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 + "&timestamp=" + 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)
@@ -174,125 +156,15 @@
                        }
                        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 + "&timestamp=" + 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 + "&timestamp=" + 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)
            {
@@ -303,6 +175,65 @@
        }
        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 + "&timestamp=" + 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();