wankeda
2025-04-14 0ea4a390d09679425cf3ad217a38a9e717641c95
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/JobsPart/SendAgvTask.cs
@@ -30,10 +30,226 @@
        {
            try
            {
                List<Dt_Task> agvtasks = _taskService.GetTasks();
                foreach (Dt_Task agvtask in agvtasks)
                {
                    if (agvtask != null)
                    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.Remark != "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 (CachePointSO.Remark != null)
                        {
                            var pointname = _cachePointRepository.QueryData(x => x.Remark == CachePointSO.Remark && x.Remark != "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)
                        {
                            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, "无人叉车任务下发失败");
                            }
                        }
                    }
                    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)
                        {
                            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, "无人叉车任务下发失败");
                            }
                        }
                    }
                    //if (dt_CachePoint != null)
                    //{
                    //    var pointname = _cachePointRepository.QueryData(x => x.Remark == dt_CachePoint.Remark).ToList();
                    //    foreach (var item in pointname)
                    //    {
                    //        var a = dt_CachePoint.Depth.ObjToInt();
                    //        var b = item.Depth.ObjToInt();
                    //        if (b > a)
                    //        {
                    //            //Dt_CachePoint c = _cachePointRepository.QueryFirst(x => x.PointCode == item.PointCode && x.PointStatus == 0);
                    //            Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.TargetAddress == item.PointCode);
                    //            if (dt_Task != null)
                    //            {
                    //                continue;
                    //            }
                    //        }
                    //    }
                    //}
                    else
                    {
                        AGVTaskPend pend = new AGVTaskPend();
                        //pend.requestType = pend.requestType;
@@ -69,11 +285,11 @@
                        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 }
                    };
                                {
                                    {"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);
@@ -93,7 +309,7 @@
                        }
                    }
                }
            }
            catch (Exception ex)
            {