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 Model.ModelVm.PdaVm;
using WMS.IBLL.IPdaServer;
using WMS.Entity.DataEntity;
namespace Wms_09.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
[Authorize]
public class PdaCrController : ControllerBase
{
private readonly IPdaCrServer _pdaCrSvc;
public PdaCrController(IPdaCrServer pdaCrSvc)
{
_pdaCrSvc = pdaCrSvc;
}
#region 盘点
///
/// 获取盘点单据列表
///
/// PalletNo:托盘号
///
[HttpPost]
public IActionResult GetStockCheckNoList(PdaCrVm model)
{
try
{
var list = _pdaCrSvc.GetStockCheckNoList(model.PalletNo);
return Ok(new { code = 0, msg = "盘点单信息", data = list });
}
catch (Exception e)
{
return Ok(new { code = 1, msg = e.Message });
}
}
///
/// 获取盘点明细物料批次信息
///
/// CrNo:盘点单、PalletNo:托盘号
///
[HttpPost]
public IActionResult GetStockCheckDetailList(PdaCrVm model)
{
try
{
var list = _pdaCrSvc.GetStockCheckDetailList(model.CrNo, model.PalletNo);
return Ok(new { code = 0, msg = "盘点单明细物料批次信息", data = list });
}
catch (Exception e)
{
return Ok(new { code = 1, msg = e.Message });
}
}
///
/// 获取要盘点的箱码信息
///
///
///
[HttpPost]
public IActionResult GetStockCheckLogList(PdaCrVm model)
{
try
{
var list = _pdaCrSvc.GetStockCheckLogList(model.CrNo, model.CrDetail, model.PalletNo, model.BoxNo);
return Ok(new { code = 0, msg = "要盘点的箱码信息", data = list });
}
catch (Exception e)
{
return Ok(new { code = 1, msg = e.Message });
}
}
///
/// 盘点库存
///
///
///
[HttpPost]
public IActionResult CrSetCheck(PdaCrVm 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 = "未获取到当前操作人信息" });
}
_pdaCrSvc.CrSetCheck(model.CrNo, model.CrDetail, model.PalletNo, model.BoxNo, model.BoxNo3, model.Result, model.Qty, int.Parse(userId));
return Ok(new { code = 0, msg = "盘点完成", data = "" });
}
catch (Exception e)
{
return Ok(new { code = 1, msg = e.Message });
}
}
#endregion
#region 库存查询
///
/// pda库存查询
///
/// 储位编号
/// 托盘号
/// 物料名称
///
[HttpGet]
public IActionResult GetStockQueryList(string locatNo, string palletNo )
{
try
{
List stockList = _pdaCrSvc.GetStockQueryList(locatNo, palletNo);
if (stockList.Count==0)
{
return Ok(new { data = stockList, code = 1, msg = "无数据" });
}
return Ok(new { data = stockList, code = 0, msg = "成功" });
}
catch (Exception e)
{
return Ok(new { data = "", code = 1, msg = $"异常:{e.Message}" });
}
}
#endregion
#region 托盘变更
///
/// 根据托盘号获取箱码和箱内数量
///
/// 托盘号
///
[HttpGet]
public IActionResult GetDataDetailList(string palletNo)
{
try
{
var list = _pdaCrSvc.GetDataDetailList(palletNo);
if (list.Count == 0)
{
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}" });
}
}
///
/// 根据箱码获取物料、批次、数量等信息
///
/// 托盘号
///
[HttpGet]
public IActionResult GetBoxInfoByBox(string boxNo)
{
try
{
var list = _pdaCrSvc.GetBoxInfoByBox(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 SaveUnbind(PdaPalletCheckVm 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 = "未获取到当前操作人信息" });
}
var uId = int.Parse(userId);
_pdaCrSvc.SaveUnbind(model.PalletNo, model.BoxNo, model.PalletNoNew, uId);
return Ok(new { data = "", code = 0, msg = "成功" });
}
catch (Exception e)
{
return Ok(new { data = "", code = 1, msg = $"异常:{e.Message}" });
}
}
#endregion
}
}