using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Options; using Model.ModelVm.PdaVm; using WMS.IBLL.IPdaServer; using Model.ModelDto; using Model.ModelVm; using Wms.Tools; namespace Wms.Controllers { [Route("api/[controller]/[action]")] [ApiController] [Authorize] public class PdaSoController : ControllerBase { #region 依赖注入 private readonly ApiUrlConfig _config; //接口交互路径 private readonly IPdaSoServer _pdaSoSvc; public PdaSoController(IOptions setting,IPdaSoServer pdaSoSvc) { _config = setting.Value; _pdaSoSvc = pdaSoSvc; } #endregion /// /// 判断托盘是否可用 /// /// PalletNo:托盘条码 /// [HttpPost] public IActionResult IsEnableOkPalletNo(PdaSoVm model) { try { var strMsg = _pdaSoSvc.IsEnableOkPalletNo(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 GetRunSoNoticeList(PdaSoVm model) { try { var list = _pdaSoSvc.GetRunSoNoticeList(model.PalletNo,model.Type); return Ok(new { code = 0, msg = "出库单信息", data = list }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 获取物料-批次信息 /// /// PalletNo:托盘码、SoNo:单据号 /// [HttpPost] public IActionResult GetSoSkuLotNoListByPallet(PdaSoVm model) { try { var models = _pdaSoSvc.GetSoSkuLotNoListByPallet(model.PalletNo, model.SoNo); return Ok(new { code = 0, msg = "物料-批次信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 获取出库口、规格、待拣及已拣数量(根据出库单明细ID、托盘号) /// /// SoDetailId:出库单明细ID、PalletNo:托盘码 /// [HttpPost] public IActionResult GetOutlets(PdaSoVm model) { try { var models = _pdaSoSvc.GetOutlets(model.SoDetailId, model.PalletNo); return Ok(new { code = 0, msg = "托盘上物料等信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 获取出库单的计划数量和完成 /// /// SoDetailId:出库单明细ID /// [HttpPost] public IActionResult GetPlanAndFinishQty(PdaSoVm model) { try { var models = _pdaSoSvc.GetPlanAndFinishQty(model.SoDetailId); return Ok(new { code = 0, msg = "出库单明细数量信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 获取箱码信息(根据箱码在库存箱码明细中查询) /// /// BoxNo:箱码号 /// [HttpPost] public IActionResult GetDataComBoxInfo(PdaSoVm model) { try { var models = _pdaSoSvc.GetDataComBoxInfo(model.SoDetailId,model.PalletNo, model.BoxNo, model.BoxNo3); return Ok(new { code = 0, msg = "箱码信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } ///// ///// 获取托盘上物料数量 ///// ///// Pallno:托盘号 ///// //[HttpPost] //public IActionResult GetDataPallnoInfo(PdaSoVm model) //{ // try // { // var models = _pdaSoSvc.GetDataPallnoInfo(model.SoDetailId, model.PalletNo, model.BoxNo, model.BoxNo3); // return Ok(new { code = 0, msg = "箱码信息", data = models }); // } // catch (Exception e) // { // return Ok(new { code = 1, msg = e.Message }); // } //} /// /// 获取箱码信息(获取库内无箱码的托盘分配信息) /// /// BoxNo:箱码号 /// [HttpPost] public IActionResult GetAllotPlnInfo(PdaSoVm model) { try { var models = _pdaSoSvc.GetAllotPlnInfo(model.SoDetailId, model.PalletNo); return Ok(new { code = 0, msg = "箱码信息", data = models }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 出库pda拣货 /// /// SoDetailId:出库单明细ID、PalletNo:托盘码 /// [HttpPost] public IActionResult SoSetPick(PdaSoVm 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 = "未获取到当前操作人信息" }); } _pdaSoSvc.SoSetPick(model.SoNo, model.SoDetailId, model.PalletNo, model.BoxNo, model.BoxNo3,model.PickQty ,int.Parse(userId)); return Ok(new { code = 0, msg = "拣货完成", data = "" }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 出库pda拣货 /// /// SoDetailId:出库单明细ID、PalletNo:托盘码 /// [HttpPost] public IActionResult SoSetQtyPick(PdaSoVm 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 = "未获取到当前操作人信息" }); } _pdaSoSvc.SoSetQtyPick(model.SoNo, model.SoDetailId, model.PalletNo, model.PickQty, int.Parse(userId)); return Ok(new { code = 0, msg = "拣货完成", data = "" }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 空托出库 /// /// 空托盘出库 /// [HttpPost] public IActionResult IssuePlnOutHouse(OutModePalletVm 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("未获取到用户信息"); } var strMsg = _pdaSoSvc.IssuePlnOutHouse(model, int.Parse(UserId), _config.WcsHost + _config.IssueComApiUrl); 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 GetPingKuInfoByPallet(string soNo, string palletNo) { try { var list = _pdaSoSvc.GetPingKuInfoByPallet(soNo,palletNo); return Ok(new { data = list, code = 0, msg = "获取平库托盘信息成功" }); } catch (Exception e) { return Ok(new { data = "", code = 1, msg = "获取平库托盘信息错误:" + e.Message }); } } /// /// 平库出库 /// /// 出库单号 /// 托盘号 /// [HttpGet] public IActionResult PlaneExportSuccess(string soNo, string palletNo) { 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("未获取到用户信息"); } int uid = Convert.ToInt32(UserId); _pdaSoSvc.PlaneExportSuccess(soNo, palletNo, uid); return Ok(new { data = "", code = 0, msg = "平库出库成功" }); } catch (Exception e) { return Ok(new { data = "", code = 1, msg = "平库出库错误:"+e.Message }); } } /// /// 根据托盘号获取取样类型 /// /// 托盘号 /// [HttpGet] public IActionResult GetSampleType(string palletNo) { 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("未获取到用户信息"); } var type = _pdaSoSvc.GetSampleType(palletNo); return Ok(new { data = type, code = 0, msg = "获取取样类型" }); } catch (Exception e) { return Ok(new { data = "", code = 1, msg = "获取取样类型错误:" + e.Message }); } } /// /// 根据托盘号获取入库单据 /// /// 托盘号 /// [HttpGet] public IActionResult GetAsnNoByPallet(string palletNo) { try { var type = _pdaSoSvc.GetAsnNoByPallet(palletNo); return Ok(new { data = type, code = 0, msg = "获取入库单据" }); } catch (Exception e) { return Ok(new { data = "", code = 1, msg = "获取入库单据错误:" + e.Message }); } } /// /// 取样出库拣货(标签) /// /// /// [HttpPost] public IActionResult SampleSoSetPick(PdaSoVm 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("未获取到用户信息"); } int uid = Convert.ToInt32(UserId); _pdaSoSvc.SampleSoSetPick(model.Type,model.SoNo, model.SoDetailId, model.PalletNo, model.BoxNo, model.BoxNo3, model.PickQty, model.AsnNo, uid); return Ok(new { data = "", code = 0, msg = "(标签)取样出库拣货" }); } catch (Exception e) { return Ok(new { data = "", code = 1, msg = "(标签)取样出库拣货错误:" + e.Message }); } } /// /// 取样出库拣货(无标签) /// /// SoDetailId:出库单明细ID、PalletNo:托盘码 /// [HttpPost] public IActionResult SampleSoSetQtyPick(PdaSoVm 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 = "未获取到当前操作人信息" }); } _pdaSoSvc.SampleSoSetQtyPick(model.Type, model.SoNo, model.SoDetailId, model.PalletNo, model.PickQty, model.AsnNo, int.Parse(userId)); return Ok(new { data = "", code = 0, msg = "(无标签)取样出库拣货" }); } catch (Exception e) { return Ok(new { data = "", code = 1, msg = "(无标签)取样出库拣货错误:" + e.Message }); } } #region 拣货拼托 /// /// 拼托出库pda拣货-标签 /// /// /// [HttpPost] public IActionResult SoSetPinPick(PdaSoVm 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 = "未获取到当前操作人信息" }); } _pdaSoSvc.SoSetPinPick(model.SoNo, model.SoDetailId, model.PalletNo, model.BoxNo, model.BoxNo3, model.PickQty, model.PalletNoNew, int.Parse(userId)); return Ok(new { code = 0, msg = "拣货完成", data = "" }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 拼托出库pda拣货-数量 /// /// /// [HttpPost] public IActionResult SoSetQtyPinPick(PdaSoVm 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 = "未获取到当前操作人信息" }); } _pdaSoSvc.SoSetQtyPinPick(model.SoNo, model.SoDetailId, model.PalletNo, model.PickQty, model.PalletNoNew, int.Parse(userId)); return Ok(new { code = 0, msg = "拣货完成", data = "" }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } #endregion } }