using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Model.ModelVm; using Model.ModelVm.BllAsnVm; using Model.ModelVm.PdaVm; using System; using System.Security.Claims; using Wms.Tools; using WMS.Entity.BllAsnEntity; using WMS.IBLL.IPdaServer; namespace Wms.Controllers { [Route("api/[controller]/[action]")] [ApiController] [Authorize] public class PdaAsnController : ControllerBase { #region 依赖注入 private readonly IPdaAsnServer _PdaAsnSvc; private readonly ApiUrlConfig _config; //接口交互路径 public PdaAsnController(IPdaAsnServer pdaAsnSvc, IOptions setting) { _PdaAsnSvc = pdaAsnSvc; _config = setting.Value; } #endregion #region MyRegion /// /// 获取单据明细显示的物料 /// /// Type:单据类型 /// [HttpPost] public IActionResult GetArrivalNoticesInfo(ArrivalNoticeVm model) { try { var models = _PdaAsnSvc.GetArrivalNoticesInfo(model); return Ok(new { code = 0, msg = "入库单信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } #endregion #region 公用方法 /// /// 获取单据列表 /// /// Type:单据类型 /// [HttpPost] public IActionResult GetArrivalNotices(ArrivalNoticeVm model) { try { var models = _PdaAsnSvc.GetArrivalNotices(model); return Ok(new { code = 0, msg = "入库单信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 根据入库单获取入库总单信息 /// /// ASNNo:入库单号 /// [HttpPost] public IActionResult GetArrivalNotice(ArrivalNoticeVm model) { try { var models = _PdaAsnSvc.GetArrivalNotice(model); if (models == null) { return Ok(new { code = 1, msg = "入库单信息", data = models }); } else { return Ok(new { code = 0, msg = "入库单信息", data = models }); } } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 判断托盘是否可用 /// /// PalletNo:托盘条码 /// [HttpPost] public IActionResult IsEnablePalletNo(PalletBindVm model) { try { var strMsg = _PdaAsnSvc.IsEnablePalletNo(model.PalletNo); if (strMsg == "") { return Ok(new { code = 0, msg = "托盘可用!" }); } else { return Ok(new { code = 1, msg = strMsg }); } } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 判断托盘是否可用 /// /// PalletNo:托盘条码 /// [HttpPost] public IActionResult IsEnableLocatNo(PalletBindVm model) { try { var strMsg = _PdaAsnSvc.IsEnableLocatNo(model.LocatNo); if (strMsg == "") { return Ok(new { code = 0, msg = "地码可用!" }); } else { return Ok(new { code = 1, msg = strMsg }); } } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 获取单据明细列表 /// /// AsnNo:单据号 /// [HttpPost] public IActionResult GetArrivalNoticeDetails(ArrivalNoticeVm model) { try { var models = _PdaAsnSvc.GetArrivalNoticeDetails(model); return Ok(new { code = 0, msg = "入库单明细信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 根据明细ID获取物料详情 /// /// Id:入库单明细ID /// [HttpPost] public IActionResult GetArrivalNoticeDetail(ArrivalNoticeDetailVm model) { try { var models = _PdaAsnSvc.GetArrivalNoticeDetail(model); return Ok(new { code = 0, msg = "入库单明细详细信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 根据托盘号或箱码获取托盘上箱托信息 /// /// PalletNo:托盘号 or BoxNo:箱号 /// [HttpPost] public IActionResult GetBoxInfos(BoxInfoVm model) { try { var models = _PdaAsnSvc.GetBoxInfos(model); return Ok(new { code = 0, msg = "托盘上相托信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 根据托盘号或箱码获取托盘信息 /// /// PalletNo:托盘号 /// [HttpPost] public IActionResult GetPalletBindInfo(BllPalletBind model) { try { var models = _PdaAsnSvc.GetPalletBindInfo(model); return Ok(new { code = 0, msg = "托盘信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 删除箱子信息 /// /// Id:箱子主键 /// [HttpPost] public IActionResult DelBoxInfo(BoxInfoVm model) { try { var claimsIdentity = this.User.Identity as ClaimsIdentity; if (claimsIdentity == null) { throw new Exception("未获取到用户信息"); } string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value; if (string.IsNullOrWhiteSpace(UserId)) { throw new Exception("未获取到用户信息"); } model.CreateUser = int.Parse(UserId); var strMsg = _PdaAsnSvc.DelBoxInfo(model); if (strMsg == "") { return Ok(new { code = 0, msg = "删除组托成功!" }); } else { return Ok(new { code = 1, msg = strMsg }); } } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 删除托盘信息 /// /// ID\托盘号 /// [HttpPost] public IActionResult DelPalletBind(BllPalletBind model) { try { var claimsIdentity = this.User.Identity as ClaimsIdentity; if (claimsIdentity == null) { throw new Exception("未获取到用户信息"); } string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value; if (string.IsNullOrWhiteSpace(UserId)) { throw new Exception("未获取到用户信息"); } model.CreateUser = int.Parse(UserId); var strMsg = _PdaAsnSvc.DelPalletBind(model); if (strMsg == "") { return Ok(new { code = 0, msg = "删除组托成功!" }); } else { return Ok(new { code = 1, msg = strMsg }); } } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } #endregion #region 生产入库 #endregion #region 空托入库 /// /// 绑定空托入库信息 /// /// PalletNo:托盘号 Qty: 数量 /// [HttpPost] public IActionResult BindNullPallet(PalletBindVm model) { try { var claimsIdentity = this.User.Identity as ClaimsIdentity; if (claimsIdentity == null) { throw new Exception("未获取到用户信息"); } string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value; if (string.IsNullOrWhiteSpace(UserId)) { throw new Exception("未获取到用户信息"); } model.CreateUser = int.Parse(UserId); var strMsg = _PdaAsnSvc.BindNullPallet(model); if (strMsg == "") { return Ok(new { code = 0, msg = "空托盘组托成功!" }); } else { return Ok(new { code = 1, msg = strMsg }); } } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 解绑空托入库信息 /// /// UpBindPalletNo:解绑托盘号 /// [HttpPost] public IActionResult UnBindNullPallet(PalletUnBingVm model) { try { var claimsIdentity = this.User.Identity as ClaimsIdentity; if (claimsIdentity == null) { throw new Exception("未获取到用户信息"); } string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value; if (string.IsNullOrWhiteSpace(UserId)) { throw new Exception("未获取到用户信息"); } model.CreateUser = int.Parse(UserId); var strMsg = _PdaAsnSvc.UnBindNullPallet(model.UpbindPalletNo,model.CreateUser); if (strMsg == "") { return Ok(new { code = 0, msg = "空托盘解绑成功!" }); } else { return Ok(new { code = 1, msg = strMsg }); } } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } #endregion #region 平库入库确认 /// /// 平库上架确认 /// /// PalletNo:托盘号 LocatNo: 储位地址 /// [HttpPost] public IActionResult CompleteInStock(PalletBindVm model) { try { var claimsIdentity = this.User.Identity as ClaimsIdentity; if (claimsIdentity == null) { throw new Exception("未获取到用户信息"); } string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value; if (string.IsNullOrWhiteSpace(UserId)) { throw new Exception("未获取到用户信息"); } model.CreateUser = int.Parse(UserId); var strMsg = _PdaAsnSvc.CompleteInStock(model); if (strMsg == "") { return Ok(new { code = 0, msg = "上架成功!" }); } else { return Ok(new { code = 1, msg = strMsg }); } } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 根据托盘号获取入库单号 /// /// /// [HttpPost] public IActionResult GetASNNoByPalletNo(PalletBindVm model) { try { var result = _PdaAsnSvc.GetASNNoByPalletNo(model.PalletNo); return Ok(new { code = 0, msg = "获取成功!", data = result }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 验证储位(地码)是否可用 /// /// LocatNo储位地址 /// [HttpPost] public IActionResult CheckLocatNo(PalletBindVm model) { try { var result = _PdaAsnSvc.CheckLocatNo(model.LocatNo); return Ok(new { code = 0, msg = "验证成功!", data = result }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } #endregion #region 零箱入库 /// /// 根据箱码获取物料、批次、数量等信息 /// /// 托盘号 /// [HttpGet] public IActionResult GetBoxInfoByBoxNo(string boxNo) { try { var list = _PdaAsnSvc.GetBoxInfoByBoxNo(boxNo); if (list == null) { return Ok(new { data = list, code = 1, msg = "无数据" }); } return Ok(new { data = list, code = 0, msg = "成功" }); } catch (Exception e) { return Ok(new { data = "", code = 1, msg = $"异常:{e.Message}" }); } } /// /// 零箱入库 /// /// /// [HttpPost] public IActionResult CompleteInStockLing(PdaLingAsnVm model) { try { var claimsIdentity = this.User.Identity as ClaimsIdentity; if (claimsIdentity == null) { throw new Exception("未获取到用户信息"); } string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value; if (string.IsNullOrWhiteSpace(UserId)) { throw new Exception("未获取到用户信息"); } _PdaAsnSvc.CompleteInStockLing(model, int.Parse(UserId)); return Ok(new { code = 0, msg = "入库成功!" }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } #endregion #region 组托 /// /// 根据箱码获取标签箱码信息 /// /// BoxNo:箱号 /// [HttpPost] public IActionResult GetBindBoxInfos(BoxInfoVm model) { try { var models = _PdaAsnSvc.GetBindBoxInfos(model, _config.BoxHost + _config.FuMaGetBoxUrl, _config.BoxHost + _config.FuMaGetTokenUrl); return Ok(new { code = 0, msg = "标签箱码信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 根据箱码获取标签最小追溯码信息 /// /// BoxNo:箱号 /// [HttpPost] public IActionResult GetBindBoxInfo2s(BoxInfoVm model) { try { var models = _PdaAsnSvc.GetBindBoxInfo2s(model, _config.BoxHost + _config.FuMaGetBoxUrl, _config.BoxHost + _config.FuMaGetTokenUrl); return Ok(new { code = 0, msg = "标签箱码信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } [HttpPost] public IActionResult GetBindArrivalNoticeDetails(ArrivalNoticeVm model) { try { var models = _PdaAsnSvc.GetBindArrivalNoticeDetails(model); return Ok(new { code = 0, msg = "入库单明细信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 绑定托盘 /// /// /// [HttpPost] public IActionResult BindPallet(PdaPalletBindVm model) { try { var claimsIdentity = this.User.Identity as ClaimsIdentity; if (claimsIdentity == null) { throw new Exception("未获取到用户信息"); } string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value; if (string.IsNullOrWhiteSpace(UserId)) { throw new Exception("未获取到用户信息"); } _PdaAsnSvc.BindPallet(model, int.Parse(UserId), model.Origin); return Ok(new { code = 0, msg = "绑定成功!" }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } #endregion #region 平库入库 /// /// 平库确认入库 /// /// /// [HttpPost] public IActionResult ConfirmInStock(PalletBindVm model) { try { var claimsIdentity = this.User.Identity as ClaimsIdentity; if (claimsIdentity == null) { throw new Exception("未获取到用户信息"); } string UserId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value; if (string.IsNullOrWhiteSpace(UserId)) { throw new Exception("未获取到用户信息"); } model.CreateUser = int.Parse(UserId); _PdaAsnSvc.ConfirmInStock(model); return Ok(new { code = 0, msg = "入库成功!" }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } #endregion } }