chengsc
2025-06-11 413194b8c6a71fea8cb7a567800b11703c6c7d5a
Admin.NET/WCS.Application/OpenApi/OpenApi.cs
@@ -3,6 +3,7 @@
using Furion.Logging;
using WCS.Application.Entity;
using WCS.Application.Util;
using static SKIT.FlurlHttpClient.Wechat.Api.Models.ComponentTCBBatchCreateContainerServiceVersionRequest.Types;
namespace WCS.Application;
@@ -98,7 +99,8 @@
            throw Oops.Bah("任务已存在!");
        }
        var listTask = new List<WcsTask>();
        foreach (var models in modelList)
        var list = modelList.OrderBy(m => m.Order).ThenBy(m => m.TaskNo).ToList();
        foreach (var models in list)
        {
            if (models.TaskType == "0")
            {
@@ -125,6 +127,7 @@
                EndLocate = models.EndLocate,
                EndRoadway = models.EndRoadway,
                PalletNo = models.PalletNo,
                CreateTime = DateTime.Now
            };
            // 若非AGV任务增加任务ID
@@ -133,9 +136,9 @@
                taskAdd.TaskId = FourWayCarUtil.GetTaskId(); 
            }
            listTask.Add(taskAdd);
            await _db.Insertable(taskAdd).ExecuteCommandAsync();
        }
        await _db.Insertable(listTask).ExecuteCommandAsync();
    }
    /// <summary>
    /// WCS接受WMS下发的任务(单条任务)
@@ -418,21 +421,26 @@
    [UnitOfWork]
    public async Task<dynamic> agvCallback(AGVCallBackInput input)
    {
        Log.Information("AGV反馈任务" + input.ToJson());
        AGVCallBackResponse result = new AGVCallBackResponse()
        {
            ReqCode = input.ReqCode,
            Message = "成功",
            Code = "0"
        };
        if (input.TaskCode.Substring(0, 3) != "WCS" && input.TaskCode.Substring(0, 2) != "TK")
        if (input.robotTaskCode.Substring(0, 3) != "WCS" && input.robotTaskCode.Substring(0, 2) != "TK")
        {
            result.Message = "反馈的任务不是WCS的任务";
            result.Code = "1";
            return result;
        }
        PLCUtil modUtil = null;
        try
        {
            var modTask = await _db.Queryable<WcsTask>().FirstAsync(s => s.TaskNo == input.TaskCode);
            var modTask = await _db.Queryable<WcsTask>().FirstAsync(s => s.TaskNo == input.robotTaskCode);
            if (modTask != null)
            {
                switch (input.Method)
                switch (input.Extra.Values.Method)
                {
                    case "end"://任务完成
                        {
@@ -459,15 +467,26 @@
                                var inputs = new TaskRequestWMS();
                                inputs.TaskNo = modTask.TaskNo;
                                inputs.PalletNo = modTask.PalletNo;
                                inputs.TaskType = modTask.TaskType.ToString();
                                inputs.TaskType = ((int)modTask.TaskType).ToString();
                                inputs.TaskStatus = "2";
                                var modResponseTask = httpService.RequestTask(inputs).Result;
                            }
                            
                        }
                        break;
                    case "admin"://走出储位
                    case "outbin"://走出储位
                        {
                            WcsTaskMonitor modTaskMonitor = new WcsTaskMonitor()
                            {
                                TaskNo = modTask.TaskNo,
                                //PlcId = modDevice.PlcId,
                                PlcName = "AGV",
                                StartLocat = modTask.StartLocate,
                                EndLocat = modTask.EndLocate,
                                Status = TaskStatusEnum.Complete,
                                InteractiveMsg = $"AGV小车反馈任务取货完成,走出储位",
                            };
                            await _db.Insertable(modTaskMonitor).ExecuteCommandAsync();
                            //反馈WMS任务取货完成、WMS判断是平库储位就更新储位状态
                            if (modTask.Origin == "WMS")
                            {
@@ -475,22 +494,22 @@
                                var inputs = new TaskRequestWMS();
                                inputs.TaskNo = modTask.TaskNo;
                                inputs.PalletNo = modTask.PalletNo;
                                inputs.TaskType = "2";
                                inputs.TaskType = ((int)modTask.TaskType).ToString();
                                inputs.TaskStatus = "2";
                                var modResponseTask = httpService.RequestTaskQh(inputs).Result;
                            }
                        }
                        break;
                    case "continue"://放货申请
                    case "release"://放货申请
                        {
                            if (modTask.EndLocate != "B010101")//9号工位地址
                            if (modTask.EndLocate != "B040101")//9号工位地址
                            {
                                result.Code = "1";
                                result.Message = "找不到该任务";
                                return result;
                            }
                            modTask.Status = TaskStatusEnum.Complete;
                            //modTask.Status = TaskStatusEnum.Complete;
                            modTask.IsComple = "1";
                            await _db.Updateable(modTask).ExecuteCommandAsync();
                            WcsTaskMonitor modTaskMonitor = new WcsTaskMonitor()
@@ -506,7 +525,36 @@
                            await _db.Insertable(modTaskMonitor).ExecuteCommandAsync();
                            HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
                            HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>());
                            if (modTask.Origin == "WMS")
                            {
                                HttpService httpService = new HttpService();
                                var inputs = new TaskRequestWMS();
                                inputs.TaskNo = modTask.TaskNo;
                                inputs.PalletNo = modTask.PalletNo;
                                inputs.TaskType = ((int)modTask.TaskType).ToString();
                                inputs.TaskStatus = "2";
                                var modResponseTask = httpService.RequestTaskQh(inputs).Result;
                            }
                        }
                        break;
                    case "notifyFullSite":
                        {
                            var palletNo = input.Extra.Values.carrierCode;
                            var count = input.Extra.Values.pileCount;
                            if (string.IsNullOrWhiteSpace(palletNo) || count <= 0)
                            {
                                throw new Exception("参数:托盘号/数量验证失败");
                            }
                            //向WMS申请空托入库
                            HttpService httpService = new HttpService();
                            var inputs = new NullPallInRequest();
                            inputs.PalletNo = modTask.PalletNo;
                            inputs.PallNum = count;
                            inputs.Locate = "B100101";//叠托盘机位置
                            inputs.HouseNo = "W02";
                            var modResponseTask = httpService.RequestLiKuPallet(inputs);
                        }
                        break;
                    case "cancel"://任务取消
@@ -555,7 +603,7 @@
            modUtil?.Close();
        }
        Log.Information("AGV反馈任务返回" + result.ToJson());
        return result;
    }