using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Model.InterFaceModel; using Model.ModelDto.BllAsnDto; using Model.ModelDto.DataDto; using Model.ModelVm; using Model.ModelVm.BllAsnVm; using Model.ModelVm.PdaVm; using Newtonsoft.Json; using System; using System.Security.Claims; using Utility; using Utility.Tools; using WMS.BLL.LogServer; using WMS.Entity.BllAsnEntity; using WMS.Entity.DataEntity; using WMS.IBLL.IPdaServer; namespace Wms.Controllers { [Route("api/[controller]/[action]")] [ApiController] [Authorize] public class PdaAsnController : ControllerBase { private readonly IPdaAsnServer _PdaAsnSvc; private readonly UserManager _userManager; public PdaAsnController(IPdaAsnServer pdaAsnSvc,UserManager userManager) { _PdaAsnSvc = pdaAsnSvc; _userManager = userManager; } #region JC34 //---------------------------------------------组托收货页面---------------------------------------------------------------------- /// /// 绑定托盘 /// /// /// [HttpPost] [UnitOfWork] public IActionResult BindPallet(PdaPalletBindVm model) { 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("未获取到用户信息"); } if (model.TableType == 0) { _PdaAsnSvc.BindPalletPasteCode(model, int.Parse(UserId)); } else if (model.TableType == 1) { _PdaAsnSvc.BindPalletNoPasteCode(model, int.Parse(UserId)); } return Ok(new { code = 0, msg = "绑定成功!" }); } /// /// 获取需要贴标签的入库单 单据号集合 /// /// [HttpPost] public IActionResult GetPasteAsnNoStrList() { try { var models = _PdaAsnSvc.GetPasteAsnNoStrList(); return Ok(new { code = 0, msg = "入库单信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 获取不需要贴标签的入库单 单据号集合 /// /// [HttpPost] public IActionResult GetNoPasteAsnNoStrList() { try { var models = _PdaAsnSvc.GetNoPasteAsnNoStrList(); return Ok(new { code = 0, msg = "入库单信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 根据单据号获取贴标的入库单据信息(ID-物料-批次) /// /// AsnNo:单据号 /// [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 }); } } /// /// 根据单据号获取不贴标的入库单据信息(ID-物料-批次) /// /// 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获取物料详情 (PDA物料批次选项数据) /// /// 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 }); } } /// /// 根据箱码获取标签箱码信息 /// /// BoxNo:箱号 /// [HttpPost] public IActionResult GetBindBoxInfos(BoxInfoVm model) { try { var models = _PdaAsnSvc.GetBindBoxInfos(model); 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 }); } } /// /// 根据单据获取标签数量 /// /// ASNNo:入库单、ASNDetailNo:入库单明细号 /// [HttpPost] public IActionResult GetBoxCountByAsn(PalletBindVm model) { try { var list = _PdaAsnSvc.GetBoxCountByAsn(model.ASNNo,model.ASNDetailNo); return Ok(new { code = 0, msg = "根据单据获取标签数量", data= list}); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } //---------------------------------------------申请入库页面---------------------------------------------------------------------- /// /// 保存指定的储位 /// /// /// [HttpPost] public IActionResult SaveAppointLocate(PalletBindVm model) { try { _PdaAsnSvc.SaveAppointLocate(model.PalletNo, model.LocatNo, _userManager.UserId); return Ok(new HttpReturnModel{ Success = "0", Message = "根据单据获取标签数量" }); } catch (Exception e) { return Ok(new HttpReturnModel { Success = "1", Message = 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:托盘号 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 }); } } /// /// 获取出入库所有单据信息 /// /// [HttpGet] public IActionResult GetNotices() { try { var models = _PdaAsnSvc.GetNotices(); return Ok(new { code = 0, msg = "单据信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 根据单号获取出入库所有单据信息 /// /// [HttpPost] public IActionResult ByNoGetNotices(NoticeInfo model) { try { var models = _PdaAsnSvc.ByNoGetNotices(model.Code); return Ok(new { code = 0, msg = "单据信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } #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 平库入库 /// /// 平库确认入库 /// /// /// [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 #region 物料取样 /// /// 根据箱码获取标签箱码信息 /// /// BoxNo:箱号 /// BoxNo:支号 /// [HttpGet] public IActionResult GetBoxLevel(string boxNo, string boxNo3) { try { var models = _PdaAsnSvc.GetBoxLevel(boxNo, boxNo3); return Ok(new { code = 0, msg = "箱码信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 根据箱码获取标签箱码信息 /// /// 托盘号 /// [HttpGet] public IActionResult GetPalletInfo(string palletNo) { try { var models = _PdaAsnSvc.GetPalletInfo(palletNo); return Ok(new { code = 0, msg = "托盘绑定信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 入库前有码物料取样 /// /// /// [HttpPost] public IActionResult HaveNoCodeSkuSample(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("未获取到用户信息"); } if (model.TableType == 0) { _PdaAsnSvc.HaveCodeSkuSample(model, int.Parse(userId)); } else if (model.TableType == 1) { _PdaAsnSvc.NoCodeSkuSample(model, int.Parse(userId)); } return Ok(new { code = 0, msg = "取样成功", data = "" }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } #endregion } }