wxw
2025-05-09 2cf8f4a928d3479068fc51be9633db4583eba3c9
Wms/Wms/Controllers/DownApiController.cs
@@ -21,6 +21,8 @@
using Microsoft.Extensions.Logging;
using ZXing.QrCode.Internal;
using Model.ModelVm.BllCheckVm;
using Model.ModelVm.SysVm;
using System.Security.Policy;
namespace Wms.Controllers
{
@@ -40,7 +42,8 @@
        private readonly IWaveMageServer _waveSvc;//任务同步Svc
        private readonly IRcsServer _rcsserver;//RCS相关任务
        private readonly INoticeServer _noticeSvc;//二楼单据相关
        public DownApiController(IOptions<ApiUrlConfig> setting, IExportNoticeServer exNoticeSvc, IPalletBindServer asnPalletBindSvc, IStockCheckServer crCheckSvc, ITaskServer taskSvc, IBllTaskSyncServer taskSyncSvc, IWaveMageServer waveSvc, IRcsServer rcsserver, INoticeServer noticeSvc)
        private readonly IHopperTransportServer _hopper;//二楼单据相关
        public DownApiController(IOptions<ApiUrlConfig> setting, IExportNoticeServer exNoticeSvc, IPalletBindServer asnPalletBindSvc, IStockCheckServer crCheckSvc, ITaskServer taskSvc, IBllTaskSyncServer taskSyncSvc, IWaveMageServer waveSvc, IRcsServer rcsserver, INoticeServer noticeSvc, IHopperTransportServer hopper)
        {
            _config = setting.Value;
            _exNoticeSvc = exNoticeSvc;
@@ -51,6 +54,7 @@
            _waveSvc = waveSvc;
            _rcsserver = rcsserver;
            _noticeSvc = noticeSvc;
            _hopper = hopper;
        }
        #region WMS接口 调用下游系统接口 
@@ -642,15 +646,6 @@
        }
        #endregion
        #region PDA
        //空托指令下发(出库)
        #endregion
        #region 二楼业务
        /// <summary>
        /// RCS叫桶
@@ -905,7 +900,7 @@
                LogFile.SaveLogToFile($"AGV任务执行通知-走出储位-请求报文:( {jsonData} ),", logStr);
                //具体处理方法
                _hopper.OutBinAgv(model.taskCode, _config.AgvHost + _config.GenAgvSchedulingTask);
                resultModel = new AgvResultModel { code = "0", message = "成功", reqCode = model.reqCode };
@@ -940,8 +935,7 @@
                LogFile.SaveLogToFile($"AGV任务执行通知-任务结束-请求报文:( {jsonData} ),", logStr);
                //具体处理方法
                _rcsserver.RCSFinishTask(model.taskCode, "1", "AGV");
                _hopper.RCSFinishTask(model.taskCode, "1", "AGV");
                resultModel = new AgvResultModel { code = "0", message = "成功", reqCode = model.reqCode };
                var jsonData2 = JsonConvert.SerializeObject(resultModel);
@@ -1122,5 +1116,235 @@
            }
        }
        #endregion
        #region JC37 料斗转运3、4楼业务
        /// <summary>
        /// 获取区域根据角色
        /// </summary>
        /// <param name=""></param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult GetAreaListByUser()
        {
            try
            {
                //获取当前登录的用户ID
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(userId))
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var model = _hopper.GetAreaListByUser(int.Parse(userId));
                return Ok(new { data = model, code = 0, msg = "" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = e.Message });
            }
        }
        /// <summary>
        /// 获取储位根据区域
        /// </summary>
        /// <param name="areaNo"></param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult GetLocatByArea(string areaNo)
        {
            try
            {
                var model = _hopper.GetLocatByArea(areaNo);
                return Ok(new { data = model, code = 0, msg = "" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = e.Message });
            }
        }
        /// <summary>
        /// 获取罐类型根据区域
        /// </summary>
        /// <param name="areaNo"></param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult GetPlnStatusByArea(string areaNo)
        {
            try
            {
                var model = _hopper.GetPlnStatusByArea(areaNo);
                return Ok(new { data = model, code = 0, msg = "" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = e.Message });
            }
        }
        /// <summary>
        /// 获取物料根据罐类型
        /// </summary>
        /// <param name="palletStatus"></param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult GetSkuByStatus(string palletStatus)
        {
            try
            {
                var model = _hopper.GetSkuByStatus(palletStatus);
                return Ok(new { data = model, code = 0, msg = "" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = e.Message });
            }
        }
        /// <summary>
        /// 获取批次根据物料
        /// </summary>
        /// <param name="skuNo"></param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult GetLotNoBySku(string skuNo)
        {
            try
            {
                var model = _hopper.GetLotNoBySku(skuNo);
                return Ok(new { data = model, code = 0, msg = "" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = e.Message });
            }
        }
        /// <summary>
        /// 获取物料
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        public IActionResult GetSku()
        {
            try
            {
                var model = _hopper.GetSku();
                return Ok(new { data = model, code = 0, msg = "" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = e.Message });
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name=""></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult jiaoLiaoHopper(HopperModel model)
        {
            try
            {
                //获取当前登录的用户ID
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(userId))
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                _hopper.jiaoLiaoHopper(model.AreaNo,model.LocateNo,model.PlnStatus,model.Standard,model.SkuNo,model.LotNo,"", int.Parse(userId));
                return Ok(new { data = model, code = 0, msg = "" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = e.Message });
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name=""></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult jiaoCheHopper(HopperModel model)
        {
            try
            {
                //获取当前登录的用户ID
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(userId))
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                _hopper.jiaoCheHopper(model.AreaNo, model.LocateNo,model.PlnNo, model.PlnStatus, model.Weight , model.SkuNo, model.LotNo,"", int.Parse(userId));
                return Ok(new { data = model, code = 0, msg = "" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = e.Message });
            }
        }
        /// <summary>
        /// 清洗机叫料状态
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult RCSCleanRequest(RCSCleanRequestModel model)
        {
            var logStr = $@".\log\AGV\清洗机叫料" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            AgvResultModel resultModel = null;//返回信息
            try
            {
                var jsonData = JsonConvert.SerializeObject(model);
                LogFile.SaveLogToFile($"清洗机叫料-请求报文:( {jsonData} ),", logStr);
                //具体处理方法
                _hopper.RCSCleanRequest(model.deviceID,model.deviceStation,model.status, _config.AgvHost + _config.GenAgvSchedulingTask);
                resultModel = new AgvResultModel { code = "0", message = "请求成功!"};
                var jsonData2 = JsonConvert.SerializeObject(resultModel);
                LogFile.SaveLogToFile($"清洗机叫料-返回报文:( {jsonData2} ),", logStr);
                return Ok(resultModel);
            }
            catch (Exception e)
            {
                LogFile.SaveLogToFile($"清洗机叫料异常:( {e.Message} ),", logStr);
                resultModel = new AgvResultModel { code = "1", message = e.Message, data = "", reqCode = "" };
                var jsonData2 = JsonConvert.SerializeObject(resultModel);
                LogFile.SaveLogToFile($"清洗机叫料-返回报文:( {jsonData2} ),", logStr);
                return Ok(resultModel);
            }
        }
        #endregion
    }
}