chengsc
2025-05-07 48df8080d7befac9fff4f5345750699c592512f6
Wms/Wms/Controllers/DownApiController.cs
@@ -19,6 +19,8 @@
using Utility;
using System.Threading.Tasks;
using Model.ModelVm.BllCheckVm;
using System.Collections.Generic;
using System.Security.Policy;
namespace Wms.Controllers
{
@@ -101,7 +103,7 @@
        /// <returns></returns>
        [Authorize]
        [HttpGet]
        public IActionResult IssueOutHouse(string soNo, string unstackingMode, string outMode, string loadingAddre)
        public IActionResult IssueOutHouse(string soNo, string outMode)
        {
            try
            {
@@ -121,11 +123,23 @@
                //{
                //    return Ok(new { code = 1, msg = "请选择出库口" });
                //}
                var house = _exNoticeSvc.GetHouseBySo(soNo);
                if (house == "W01")
                {
                var list = _exNoticeSvc.IssueOutHouse(soNo, unstackingMode, outMode, loadingAddre, int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl, out string str);
                    return Ok(new { code = 0, msg = "str" });
                }
                else if (house == "W02")
                {
                    var list = _exNoticeSvc.IssueOutHouseLk(soNo, outMode, int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl, out string str);
                return Ok(new { code = 0, msg = str, data = list });
                    return Ok(new { code = 0, msg = str, data = list });
                }
                else
                {
                    return Ok(new { code = 1, msg = "仓库信息错误,请核实单据信息"});
                }
            }
            catch (Exception e)
            {
@@ -263,33 +277,72 @@
        /// </summary>
        /// <param name="model">入库单信息</param>
        /// <returns></returns>
        //[AllowAnonymous]
        //[HttpPost]
        //public IActionResult BindRequestRoadWay(BoxPalletBindVm model)
        //{
        //    var logStr = $@".\log\WCS\WCS托盘绑定-申请巷道" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
        //    try
        //    {
        //        var jsonData = JsonConvert.SerializeObject(model);
        //        LogFile.SaveLogToFile($"WCS托盘绑定-申请巷道:( {jsonData} ),", logStr);
        //        _asnPalletBindSvc.BindPalletStock(model, 0);
        //        //申请巷道
        //        var list = _asnPalletBindSvc.RequestRoadWay(model.PalletNo, "W01");
        //        LogFile.SaveLogToFile($"WCS托盘绑定-申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr);
        //        return Ok(new { Success = 0, Message = "托盘绑定-申请巷道成功", TaskList = list });
        //    }
        //    catch (Exception e)
        //    {
        //        LogFile.SaveLogToFile($"WCS托盘绑定-申请巷道返回:( {e.Message} ),", logStr);
        //        return Ok(new ErpModel { Success = -1, Message = e.Message });
        //    }
        //}
        /// <summary>
        /// PDA 人工申请储位 (立体库)
        /// </summary>
        /// <param name="model">入库单信息</param>
        /// <returns></returns>
        [AllowAnonymous]
        [HttpPost]
        public IActionResult BindRequestRoadWay(BoxPalletBindVm model)
        public IActionResult RequestLocation(RequestLocate model)
        {
            var logStr = $@".\log\WCS\WCS托盘绑定-申请巷道" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            //获取当前登录的用户ID
            var claimsIdentity = this.User.Identity as ClaimsIdentity;
            if (claimsIdentity == null)
            {
                return Ok(new HttpReturnModel { Success = "1", Message = "未获取到当前操作人信息" });
            }
            var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
            if (string.IsNullOrWhiteSpace(userId))
            {
                return Ok(new HttpReturnModel { Success = "1", Message = "未获取到当前操作人信息" });
            }
            try
            {
                var list = _asnPalletBindSvc.RequestLocation(model.PalletNo, model.HouseNo);
                _asnPalletBindSvc.IssueAsnTask(list, _config.ErpHost+ _config.AsnFinishUrl);//agv路径
                new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo, "申请储位", $"申请储位托盘号:{model.PalletNo}的成功信息", int.Parse(userId));
                var jsonData = JsonConvert.SerializeObject(model);
                LogFile.SaveLogToFile($"WCS托盘绑定-申请巷道:( {jsonData} ),", logStr);
                _asnPalletBindSvc.BindPalletStock(model, 0);
                //申请巷道
                var list = _asnPalletBindSvc.RequestRoadWay(model.PalletNo, "W01");
                LogFile.SaveLogToFile($"WCS托盘绑定-申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr);
                return Ok(new { Success = 0, Message = "托盘绑定-申请巷道成功", TaskList = list });
                return Ok(new HttpReturnModel { Success = "0", Message = "申请储位成功", Data = list });
            }
            catch (Exception e)
            {
                LogFile.SaveLogToFile($"WCS托盘绑定-申请巷道返回:( {e.Message} ),", logStr);
                new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo, "申请储位", $"申请储位托盘号:{model.PalletNo}的失败信息", int.Parse(userId));
                return Ok(new ErpModel { Success = -1, Message = e.Message });
                return Ok(new HttpReturnModel { Success = "-1", Message = e.Message });
            }
        }
        /// <summary>
        /// 申请巷道
@@ -298,7 +351,7 @@
        /// <returns></returns>
        [AllowAnonymous]
        [HttpPost]
        public IActionResult RequestRoadWay(RequestLocate model)
        public IActionResult RequestMiJiRoadWay(RequestLocate model)
        {
            var logStr = "";
@@ -310,7 +363,7 @@
                var jsonData = JsonConvert.SerializeObject(model);
                LogFile.SaveLogToFile($"WCS申请巷道:( {jsonData} ),", logStr);
                var list = _asnPalletBindSvc.RequestRoadWay(model.PalletNo, model.HouseNo);
                var list = _asnPalletBindSvc.RequestMiJiRoadWay(model.PalletNo, model.HouseNo);
                LogFile.SaveLogToFile($"WCS申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr);
                //new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), 
@@ -335,7 +388,7 @@
        /// <returns></returns>
        [AllowAnonymous]
        [HttpPost]
        public IActionResult RequestLocation(RequestLocate model)
        public IActionResult RequestMiJiLocation(RequestLocate model)
        {
            //获取当前登录的用户ID
@@ -352,59 +405,29 @@
            //string palletno = model.PalletNo;
            var logStr = "";
            if (model.PalletNo.Length == 9)
            {
                logStr = $@".\log\WCS\WMS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            }
            else if (model.PalletNo.Length == 8)
            {
                logStr = $@".\log\WCS\WCS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            }
            logStr = $@".\log\WCS\WCS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            try
            {
                if (model.PalletNo.Length == 9)
                {
                    var jsonData = JsonConvert.SerializeObject(model);
                    LogFile.SaveLogToFile($"WMS申请储位:( {jsonData} ),", logStr);
                }
                else if (model.PalletNo.Length == 8)
                {
                    var jsonData = JsonConvert.SerializeObject(model);
                    LogFile.SaveLogToFile($"WCS申请储位:( {jsonData} ),", logStr);
                }
                var jsonData = JsonConvert.SerializeObject(model);
                LogFile.SaveLogToFile($"WCS申请储位:( {jsonData} ),", logStr);
                string pallet = model.PalletNo.Substring(0, 8);
                var list = _asnPalletBindSvc.RequestLocation(pallet, model.HouseNo, model.RoadwayNo);
                var list = _asnPalletBindSvc.RequestMiJiLocation(pallet, model.HouseNo, model.RoadwayNo);
                if (model.PalletNo.Length == 9)
                {
                    new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), "申请储位", $"申请储位托盘号:{model.PalletNo.Substring(0, 8)}的成功信息", 2);// int.Parse(userId)
                    LogFile.SaveLogToFile($"WMS申请储位成功:( {JsonConvert.SerializeObject(list)} ),", logStr);
                }
                else if (model.PalletNo.Length == 8)
                {
                    LogFile.SaveLogToFile($"WCS申请储位返回:( {JsonConvert.SerializeObject(list)} ),", logStr);
                }
                if (model.PalletNo.Length == 9)
                {
                }
                LogFile.SaveLogToFile($"WCS申请储位返回:( {JsonConvert.SerializeObject(list)} ),", logStr);
                //new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), "申请储位", $"申请储位托盘号:{model.PalletNo.Substring(0, 8)}的成功信息", 2);// int.Parse(userId)
                //LogFile.SaveLogToFile($"WMS申请储位成功:( {JsonConvert.SerializeObject(list)} ),", logStr);
                return Ok(new { Success = 0, Message = "申请储位成功", TaskList = list });
            }
            catch (Exception e)
            {
                if (model.PalletNo.Length == 9)
                {
                    new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), "申请储位", $"申请储位托盘号:{model.PalletNo.Substring(0, 8)}的失败信息", 2);//int.Parse(userId)
                    LogFile.SaveLogToFile($"WMS申请储位失败返回:( {e.Message} ),", logStr);
                }
                else if (model.PalletNo.Length == 8)
                {
                    LogFile.SaveLogToFile($"WCS申请储位返回:( {e.Message} ),", logStr);
                }
                LogFile.SaveLogToFile($"WCS申请储位返回:( {e.Message} ),", logStr);
                return Ok(new ErpModel { Success = -1, Message = e.Message });
            }
        }
@@ -452,7 +475,7 @@
                        }
                        break;
                    case "2"://盘库完成任务
                        if (model.TaskType == "1")//0:入库 1:出库 3:移库
                        if (model.TaskType == "1")//0:入库 1:出库 2:移库
                        {
                            _crCheckSvc.CheckSuccess(model.TaskNo, 0);
                            return Ok(new WcsModel { StatusCode = 0, Msg = "盘点出库完成" });
@@ -464,7 +487,7 @@
                        }
                        break;
                    case "3"://移库完成任务、优化储位
                        if (model.TaskType == "3") //0:入库 1:出库 3:移库
                        if (model.TaskType == "3") //0:入库 1:出库 2:移库
                        {
                            //填写移库完成代码
                        }
@@ -480,6 +503,31 @@
            }
        }
        /// <summary>
        /// WCS反馈AGV任务取货完成
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public IActionResult AGVQuHuoSuccess(ReceiveWcsSignal model)
        {
            var logStr = $@".\log\WCS\AGV取货完成反馈" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            try
            {
                var jsonData = JsonConvert.SerializeObject(model);
                LogFile.SaveLogToFile($"AGV取货完成反馈:( {jsonData} ),", logStr);
                _exNoticeSvc.AGVQuHuoSuccess(model.TaskNo);
                var data = new HttpReturnModel { Success = "0", Message = "成功" };
                LogFile.SaveLogToFile($"AGV取货完成反馈:({JsonConvert.SerializeObject(data)}),", logStr);
                return Ok(data);
            }
            catch (Exception e)
            {
                LogFile.SaveLogToFile($"AGV取货完成反馈:( {e.Message} ),", logStr);
                return Ok(new HttpReturnModel { Success = "-1", Message = e.Message });
            }
        }
        /// <summary>
        /// 空取异常
@@ -665,5 +713,39 @@
        #endregion
        /// <summary>
        /// PDA 人工申请储位 (立体库)
        /// </summary>
        /// <param name="model">入库单信息</param>
        /// <returns></returns>
        [AllowAnonymous]
        [HttpPost]
        public IActionResult ceshiapi()
        {
            try
            {
                var url = "https://10.26.200.25/rcs/rtas/api/robot/controller/carrier/unbind";
                var requestId = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
                var dic = new Dictionary<string, string>()
                    {
                        {"X-lr-request-id",requestId },
                        {"X-lr-version","4.2" },
                    };
                var mod = new
                {
                    carrierCode = "palletNo",
                    siteCode = "locateNo"
                };
                var jsonData = JsonConvert.SerializeObject(mod);
                HttpHelper.DoPost(url, jsonData, "下发给AGV解绑", "AGV",dic);
                return Ok(new HttpReturnModel { Success = "0", Message = "申请储位成功", Data = "list" });
            }
            catch (Exception e)
            {
                return Ok(new HttpReturnModel { Success = "-1", Message = e.Message });
            }
        }
    }
}