zhaowc
2025-03-27 d07f25c163706ac46a83bd2c63db1e3c52715222
Wms/Wms/Controllers/DownApiController.cs
@@ -37,6 +37,7 @@
        private readonly IPdaAsnServer _paAsnSvc;//空托跺绑定
        private readonly IStockServer _stockSvc;//AGV任务完成箅
        private readonly IPdaCrServer _pdaCrServer; // PDA任务调度
        private static readonly object OLock = new object();
        public DownApiController(IOptions<ApiUrlConfig> setting, IExportNoticeServer exNoticeSvc, IPalletBindServer asnPalletBindSvc, IStockCheckServer crCheckSvc, ITaskServer taskSvc, IPdaSoServer pdaSoSvc,IPdaAsnServer paAsnSvc,IStockServer stockSvc,IPdaCrServer pdaCrServer)
        {
@@ -219,45 +220,47 @@
        [HttpPost]
        public IActionResult RequestRoadWay(RequestLocate model)
        {
            var logStr = "";
            lock (OLock) {
                var logStr = "";
            logStr = $@".\log\WCS\WCS申请巷道" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
                logStr = $@".\log\WCS\WCS申请巷道" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            try
            {
                var jsonData = JsonConvert.SerializeObject(model);
                LogFile.SaveLogToFile($"WCS申请巷道:( {jsonData} ),", logStr);
                if (model.TaskModel == "1")
                try
                {
                    var list = _asnPalletBindSvc.RequestRoadWayModel(model.PalletNo, model.HouseNo);
                    LogFile.SaveLogToFile($"WCS申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr);
                    var jsonData = JsonConvert.SerializeObject(model);
                    LogFile.SaveLogToFile($"WCS申请巷道:( {jsonData} ),", logStr);
                    if (model.TaskModel == "1")
                    {
                        var list = _asnPalletBindSvc.RequestRoadWayModel(model.PalletNo, model.HouseNo);
                        LogFile.SaveLogToFile($"WCS申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr);
                        new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo,
                            "申请巷道", $"申请巷道托盘号:{model.PalletNo}的成功信息", 2);
                        return Ok(new { Success = 0, Message = "申请巷道成功", TaskList = list });
                    }
                    else
                    {
                        var list = _asnPalletBindSvc.RequestRoadWay(model.PalletNo, model.HouseNo);
                        LogFile.SaveLogToFile($"WCS申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr);
                        new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8),
                            "申请巷道", $"申请巷道托盘号:{model.PalletNo.Substring(0, 8)}的成功信息", 2);
                        return Ok(new { Success = 0, Message = "申请巷道成功", TaskList = list });
                    }
                }
                catch (Exception e)
                {
                    LogFile.SaveLogToFile($"WCS申请巷道返回:( {e.Message} ),", logStr);
                    new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo,
                        "申请巷道", $"申请巷道托盘号:{model.PalletNo}的成功信息", 2);
                        "申请巷道", $"申请巷道托盘号:{model.PalletNo}的失败信息", 2);
                    return Ok(new { Success = 0, Message = "申请巷道成功", TaskList = list });
                    return Ok(new ErpModel { Success = -1, Message = e.Message });
                }
                else
                {
                    var list = _asnPalletBindSvc.RequestRoadWay(model.PalletNo, model.HouseNo);
                    LogFile.SaveLogToFile($"WCS申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr);
                    new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8),
                        "申请巷道", $"申请巷道托盘号:{model.PalletNo.Substring(0, 8)}的成功信息", 2);
                    return Ok(new { Success = 0, Message = "申请巷道成功", TaskList = list });
                }
            }
            catch (Exception e)
            {
                LogFile.SaveLogToFile($"WCS申请巷道返回:( {e.Message} ),", logStr);
                new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo,
                    "申请巷道", $"申请巷道托盘号:{model.PalletNo}的失败信息", 2);
                return Ok(new ErpModel { Success = -1, Message = e.Message });
            }
        }
@@ -284,65 +287,68 @@
            //}
            //string palletno = model.PalletNo;
            var logStr = "";
            if (model.PalletNo.Length == 9)
            lock (OLock)
            {
                logStr = $@".\log\WCS\WMS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            }
            else if (model.PalletNo.Length == 8)
            {
                logStr = $@".\log\WCS\WCS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            }
            try
            {
                var logStr = "";
                if (model.PalletNo.Length == 9)
                {
                    var jsonData = JsonConvert.SerializeObject(model);
                    LogFile.SaveLogToFile($"WMS申请储位:( {jsonData} ),", logStr);
                    logStr = $@".\log\WCS\WMS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
                }
                else if (model.PalletNo.Length == 8)
                {
                    var jsonData = JsonConvert.SerializeObject(model);
                    LogFile.SaveLogToFile($"WCS申请储位:( {jsonData} ),", logStr);
                    logStr = $@".\log\WCS\WCS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
                }
                }
                string pallet = model.PalletNo.Substring(0, 8);
                OutCommandDto list;
                if (model.TaskModel == "1")
                try
                {
                    list = _asnPalletBindSvc.RequestLocationModel(pallet, model.HouseNo, model.RoadwayNo);
                }
                else
                {
                    list = _asnPalletBindSvc.RequestLocation(pallet, model.HouseNo, model.RoadwayNo);
                }
                    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);
                    }
                    string pallet = model.PalletNo.Substring(0, 8);
                    OutCommandDto list;
                    if (model.TaskModel == "1")
                    {
                        list = _asnPalletBindSvc.RequestLocationModel(pallet, model.HouseNo, model.RoadwayNo);
                    }
                    else
                    {
                        list = _asnPalletBindSvc.RequestLocation(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)
                    {
                        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);
                    }
                
                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);
                    return Ok(new { Success = 0, Message = "申请储位成功", TaskList = list });
                }
                else if (model.PalletNo.Length == 8)
                catch (Exception e)
                {
                    LogFile.SaveLogToFile($"WCS申请储位返回:( {e.Message} ),", logStr);
                }
                    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);
                    }
                return Ok(new ErpModel { Success = -1, Message = e.Message });
                    return Ok(new ErpModel { Success = -1, Message = e.Message });
                }
            }
        }
@@ -554,12 +560,14 @@
        [HttpPost]
        public IActionResult BindPlnInHouseWcs(PalletsBind model)
        {
            var logStr = $@".\log\WCS\WCS申请空托跺绑定" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            var logStr = $@".\log\WCS\WCS又叠托机申请空托入库" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            var jsonData = JsonConvert.SerializeObject(model);
            LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr);
            try
            {
                var strMsg = _paAsnSvc.BindNullPallets(model);
                return Ok(new { Success = 0, Message = "空托跺绑定成功", TaskList = strMsg });
                return Ok(new { Success = 0, Message = "空托跺绑定成功"});
            }
            catch (Exception e)
            {
@@ -579,6 +587,8 @@
        public IActionResult IssuePlnOutHouseWcs(OutModePalletVm model)
        {
            var logStr = $@".\log\WCS\WCS申请空托出库" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            var jsonData = JsonConvert.SerializeObject(model);
            LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr);
            try
            {
                List<OutCommandDto> _list = _pdaSoSvc.IssuePlnOutHouseWcs(model,0);
@@ -594,6 +604,32 @@
        }
        /// <summary>
        /// WMS拣货申请空托出库
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [AllowAnonymous]
        [HttpPost]
        public IActionResult IssuePlnCheckHouseWcs(CheckModePalletVm model)
        {
            var logStr = $@".\log\WCS\WMS拣货申请空托出库" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            var jsonData = JsonConvert.SerializeObject(model);
            LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr);
            try
            {
                string list = _pdaSoSvc.IssuePlnCehckHouseWcs(model, 0,_config.AgvHost+_config.GenAgvSchedulingTask);
                return Ok(new { Success = 0, Message = "拣货叫空托盘成功"});
            }
            catch (Exception e)
            {
                LogFile.SaveLogToFile($"WMS拣货申请空托出库异常返回:( {e.Message} ),", logStr);
                return Ok(new ErpModel { Success = -1, Message = e.Message });
            }
        }
        /// <summary>
        /// WCS申请是否缠膜
        /// </summary>
        /// <param name="model"></param>
@@ -603,6 +639,8 @@
        public IActionResult RequestPackWcs(RequesIsBale model)
        {
            var logStr = $@".\log\WCS\WCS申请缠膜拆膜" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            var jsonData = JsonConvert.SerializeObject(model);
            LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr);
            try
            {
               int t = _asnPalletBindSvc.RequestPackWcs(model.PalletNo);
@@ -628,6 +666,8 @@
        public IActionResult RequestUnPackWcs(RequesIsBale model)
        {
            var logStr = $@".\log\WCS\WCS申请缠膜拆膜" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            var jsonData = JsonConvert.SerializeObject(model);
            LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr);
            try
            {
                int t = _asnPalletBindSvc.RequestUnPackWcs(model.PalletNo);
@@ -652,6 +692,8 @@
        public IActionResult RequestPackedWcs(RequesIsBale model)
        {
            var logStr = $@".\log\WCS\WCS申请缠膜拆膜" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            var jsonData = JsonConvert.SerializeObject(model);
            LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr);
            try
            {
                int t = _asnPalletBindSvc.RequestPackedWcs(model.PalletNo);
@@ -712,6 +754,8 @@
        public IActionResult ResultBoxInfoCheckWcs(BoxInfoCheck model)
        {
            var logStr = $@".\log\WCS\WCS申请拆垛托盘信息" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            var jsonData = JsonConvert.SerializeObject(model);
            LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr);
            try
            {
                RequestBoxInfoCheck list = _exNoticeSvc.BoxInfoCheckWcs(model);
@@ -737,17 +781,19 @@
        public IActionResult ResultBoxInfoExportWcs(BoxInfoCheck model)
        {
            var logStr = $@".\log\WCS\WCS申请成品箱码拆垛拣货信息" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            var jsonData = JsonConvert.SerializeObject(model);
            LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr);
            try
            {
                //返回出库分拣装车口
                var list = _exNoticeSvc.BoxInfoExportWcs(model.BoxNo);
                return Ok(new { Success = 1, Message = "成品箱码拆垛拣货成功", loadubgAddre = list });
                return Ok(new { Success = "1", Message = "成品箱码拆垛拣货成功", loadingAddre = list });
            }
            catch (Exception e)
            {
                LogFile.SaveLogToFile($"WCS申请成品箱码拆垛拣货异常返回:( {e.Message} ),", logStr);
                return Ok(new ErpModel { Success = -1, Message = e.Message });
                return Ok(new  { Success = "-1", Message = e.Message, loadingAddre = "" });
            }
        }
@@ -785,10 +831,10 @@
                switch (orderType)
                {
                    case "0"://入库任务执行
                        if (model.TaskTyp == "mid") //AGV到达入库口,请求放货
                        if (model.Method == "mid") //AGV到达入库口,请求放货
                        {
                            //下发WCS放货请求
                            var ret = _taskSvc.GetWcsPuttype(model.TaskCode,model.CurrentCallCode,_config.WcsHost + _config.HttpInRequest);
                            var ret = _taskSvc.GetWcsPuttype(model.TaskCode,_config.WcsHost + _config.HttpInRequest);
                            if (ret.Contains("-1"))
                            {
                                logStr = $@".\log\WCS\任务反馈" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
@@ -796,23 +842,21 @@
                                return Ok(new OutCommanAgvDto { Code = "1", Message = "失败", ReqCode = model.ReqCode });
                            }
                        }
                        else if (model.TaskTyp == "end")//AGV放货到入库口完成
                        else if (model.Method == "end")//AGV放货到入库口完成
                        {
                            _stockSvc.ArriveFinish(model.TaskCode,_config.WcsHost + _config.HttpInFinish);
                        }
                        break;
                    case "1"://出库任务执行
                        _stockSvc.SoFinish(model.TaskCode);
                        _stockSvc.SoFinish(model.TaskCode,_config.MesHost + _config.MesBeiLiaoUrl);
                        break;
                    case "2"://盘库任务执行
                    case "3"://移库任务执行
                        _stockSvc.MoveFinish(model.TaskCode);
                        _stockSvc.MoveFinish(model.TaskCode, _config.MesHost + _config.MesBeiLiaoUrl);
                        break;
                    // return Ok(new OutCommanAgvDto { Code = "0", Message = "成功", ReqCode = model.ReqCode });