DESKTOP-9BNTV8O
2025-03-11 3b87f36219202b4cec47840bd9f56fdbe53e7d04
Admin.NET/WCS.Application/Util/HttpService.cs
@@ -2,6 +2,7 @@
using Elastic.Clients.Elasticsearch;
using Furion.Logging;
using Furion.RemoteRequest.Extensions;
using NetTaste;
using Newtonsoft.Json;
using System.Text;
using WCS.Application.Entity;
@@ -10,6 +11,8 @@
namespace WCS.Application;
public class HttpService
{
    private static readonly object OLock = new object();
    private dynamic Urls;
    private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId);
@@ -30,7 +33,10 @@
    /// <param name="endLocat"></param>
    /// <param name="taskNo"></param>
    /// <returns></returns>
    public string RequestRoadWay(string palletNo, string startLocat, string taskModel, string ceng, ref string endLocat, ref string taskNo)
    public string RequestRoadWay(string palletNo, string startLocat, string taskModel, string ceng, ref string endLocat, ref string taskNo, int palletHeight)
    {
        Log.Information("调用WMS接口反馈任务接口-是否重复申请:" + palletNo);
        lock (OLock)
    {
        string returnStr = "";
       
@@ -43,11 +49,17 @@
            {
                PalletNo = palletNo,
                HouseNo = "W01",
                TaskModel = taskModel
                    TaskModel = taskModel,
                    PalletHeight = palletHeight
            };
            string url = Urls.WMSAddress + ":" + Urls.WMSPort;
            var result =  (url + "/api/DownAPi/RequestRoadWay").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseTasks>().Result;
                if (result == null)
                {
                    returnStr = "-1:调用WMS接口失败";
                    return returnStr;
                }
            Log.Information("调用WMS接口反馈任务接口" + result.ToJson());
            if (result.Success == 0)
            {
@@ -62,13 +74,14 @@
                    TaskNo = result.TaskList.TaskNo,
                    Levels = 999,
                    EndLocate = result.TaskList.EndLocate,
                    EndRoadway = result.TaskList.EndRoadway
                        EndRoadway = result.TaskList.EndRoadway,
                        PalletQty = palletHeight//托盘高度
                };
                
                _db.Insertable(taskAdd).ExecuteCommand();
                endLocat = result.TaskList.EndRoadway;
                returnStr = result.TaskList.EndLocate;
                    taskNo = taskAdd.TaskNo;
            }
            else
            {
@@ -87,13 +100,14 @@
        return returnStr;
    }
    }
    /// <summary>
    /// 调用WMS接口自动码垛绑定信息返回巷道口
    /// </summary>
    /// <returns></returns>
    public string BindRequestRoadWay(string orderNo, string palletNo,decimal qty ,string type,string skuNo, string lotNo, string lotText, string supplierLot, List<WcsBoxInfo> detail,
        string startLocat, string taskModel, string ceng, ref string endLocat, ref string taskNo)
        string startLocat, string taskModel, string ceng, ref string endLocat, ref string taskNo, int palletHeight)
    {
        string returnStr = "";
@@ -112,13 +126,20 @@
                LotNo= lotNo,
                LotText= lotText,
                SupplierLot= supplierLot,
                PalletHeight = palletHeight,
                Detail=detail
            };
            Log.Information("调用WMS自动码垛接口--请求报文:" + model.ToJson());
            string url = Urls.WMSAddress + ":" + Urls.WMSPort;
            var result = (url + "/api/DownAPi/BindRequestRoadWay").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseTasks>().Result;
            Log.Information("调用WMS接口反馈任务接口" + result.ToJson());
            var result = (url + "/api/DownApi/BindRequestRoadWay").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseTasks>().Result;
            Log.Information("调用WMS自动码垛接口--返回报文:" + result.ToJson());
            if (result.Success == 0)
            {
                if (result.TaskList == null)
                {
                    returnStr = $"-1:向WMS申请组托入库失败";
                    return returnStr;
                }
                var taskAdd = new WcsTask()
                {
                    TaskType = TaskTypeEnum.In,
@@ -127,13 +148,16 @@
                    StartLocate = startLocat,
                    PalletNo = palletNo,
                    TaskNo = result.TaskList.TaskNo,
                    Levels = 999,
                    EndLocate = result.TaskList.EndLocate,
                    EndRoadway = result.TaskList.EndRoadway
                    EndRoadway = result.TaskList.EndRoadway,
                    PalletQty = palletHeight//托盘高度
                };
                _db.Insertable(taskAdd).ExecuteCommand();
                endLocat = result.TaskList.EndRoadway;
                returnStr = result.TaskList.EndLocate;
                taskNo = taskAdd.TaskNo;
            }
            else
            {
@@ -161,7 +185,7 @@
    /// <param name="starRoadWay"></param>
    /// <param name="taskNo"></param>
    /// <returns></returns>
    public string RequestLocate(string palletNo, string startLocat, string taskModel, string starRoadWay, ref string taskNo)
    public string RequestLocate(string palletNo, string startLocat, string taskModel, string starRoadWay, ref string taskNo, int palletHeight)
    {
        string returnStr = "";
@@ -177,7 +201,8 @@
                PalletNo = palletNo,
                HouseNo = "W01",
                RoadWayNo = starRoadWay,
                TaskModel = taskModel
                TaskModel = taskModel,
                PalletHeight = palletHeight
            };
            string url = Urls.WMSAddress + ":" + Urls.WMSPort;
@@ -196,6 +221,7 @@
                        //IsSuccess =TaskSuccessEnum.Success,
                        Origin = "WMS",
                        StartLocate = startLocat,
                        Levels = 999,
                        PalletNo = palletNo,
                        EndLocate = result.TaskList.EndLocate,
                        EndRoadway = result.TaskList.EndRoadway
@@ -306,6 +332,7 @@
                        StartLocate = item.StartLocate,
                        StartRoadway=item.StartRoadway,
                        PalletNo = item.PalletNo,
                        Levels = 999,
                        EndLocate = item.EndLocate,
                        EndRoadway = item.EndRoadway
                    };
@@ -328,4 +355,87 @@
        }
        return returnStr;
    }
    /// <summary>
    /// 调用WMS接口给小车下发入库任务
    /// </summary>
    /// <param name="endLocation"></param>
    /// <returns></returns>
    public async Task<ResponseModel> IssuedAgvTask(string endLocation)
    {
        var model = new
        {
            EndLocation = endLocation
        };
        string url = Urls.WMSAddress + ":" + Urls.WMSPort;
        var result = await (url + "/api/DownAPi/WcsIssuedAgvTask").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseModel>();
        Log.Information("调用WMS接口WCS申请给小车下发入库任务接口" + result.ToJson());
        return result;
    }
    /// <summary>
    /// 根据出库任务号获取出库单类型
    /// </summary>
    /// <param name="endLocation"></param>
    /// <returns></returns>
    public async Task<ResponseModel> GetSoOrderTypeByTaskNo(string taskNo)
    {
        var model = new
        {
            TaskNo = taskNo
        };
        string url = Urls.WMSAddress + ":" + Urls.WMSPort;
        var result = await (url + "/api/DownAPi/GetSoOrderTypeByTaskNo").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseModel>();
        Log.Information("调用WMS接口根据出库任务号获取出库单类型" + result.ToJson());
        return result;
    }
    /// <summary>
    /// 根据托盘号获取托盘上物料品种信息
    /// </summary>
    /// <param name="palletNo">托盘号</param>
    /// <returns></returns>
    public string GetPalletPzNo(string palletNo)
    {
        var model = new
        {
            PalletNo = palletNo
        };
        string url = Urls.WMSAddress + ":" + Urls.WMSPort;
        var result = (url + "/api/DownAPi/GetStockDetailByPalletNo").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseSkuInfo>().Result;
        Log.Information("调用WMS接口根据托盘号获取托盘库存明细信息" + result.ToJson());
        string pzNo = string.Empty;
        if (result.Success == 0)
        {
            var palletSkuInfo = result.PalletSkuInfo;
            var pzInfo = _db.Queryable<WcsMateialPzInfo>().First(w => w.SkuNo == palletSkuInfo.SkuNo && w.SkuName == palletSkuInfo.SkuName);
            if (pzInfo != null)
            {
                pzNo = pzInfo.PZNo;
            }
        }
        return pzNo;
    }
    /// <summary>
    /// 成品箱码拆垛拣货
    /// </summary>
    /// <param name="taskNo"></param>
    /// <returns></returns>
    public string BoxUnstackd(string palletNo)
    {
        string returnStr = "";
        var model = new
        {
            PalletNo = palletNo
        };
        string url = Urls.WMSAddress + ":" + Urls.WMSPort;
        var result = (url + "/api/DownAPi/BoxUnstackd").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<WmsResponseModel>().Result;
        Log.Information("调用WMS接口成品箱码拆垛拣货" + result.ToJson());
        if (result.Success != 0)
        {
            returnStr = "-1:" + result.Message;
        }
        return returnStr;
    }
}