using System;
|
using System.Security.Claims;
|
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.Extensions.Options;
|
using Model.ModelVm.PdaVm;
|
using Newtonsoft.Json;
|
using Utility.Tools;
|
using WMS.Entity.SysEntity;
|
using WMS.IBLL.IPdaServer;
|
using WmsApi.Tools;
|
|
namespace WmsApi.Controllers
|
{
|
[Route("api/[controller]/[action]")]
|
[ApiController]
|
[Authorize]
|
public class PdaSoController : ControllerBase
|
{
|
#region 依赖注入
|
private readonly IPdaSoServer _pdaSoSvc;
|
private readonly ApiUrlConfig _config; //接口交互路径
|
|
public PdaSoController(IPdaSoServer pdaSoSvc, IOptions<ApiUrlConfig> setting)
|
{
|
_pdaSoSvc = pdaSoSvc;
|
_config = setting.Value;
|
}
|
#endregion
|
|
|
|
/// <summary>
|
/// 判断托盘是否可用
|
/// </summary>
|
/// <param name="model">PalletNo:托盘条码</param>
|
/// <returns></returns>
|
[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 });
|
}
|
}
|
|
/// <summary>
|
/// 获取单据列表
|
/// </summary>
|
/// <param name="model">PalletNo:托盘号</param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult GetRunSoNoticeList(PdaSoVm model)
|
{
|
try
|
{
|
var list = _pdaSoSvc.GetRunSoNoticeList(model.PalletNo);
|
|
return Ok(new { code = 0, msg = "出库单信息", data = list });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 获取物料-批次信息
|
/// </summary>
|
/// <param name="model">PalletNo:托盘码、SoNo:单据号</param>
|
/// <returns></returns>
|
[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 });
|
}
|
}
|
|
/// <summary>
|
/// 获取出库口、规格、待拣及已拣数量(根据出库单明细ID、托盘号)
|
/// </summary>
|
/// <param name="model">SoDetailId:出库单明细ID、PalletNo:托盘码</param>
|
/// <returns></returns>
|
[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 });
|
}
|
}
|
|
/// <summary>
|
/// 获取出库单的计划数量和完成
|
/// </summary>
|
/// <param name="model">SoDetailId:出库单明细ID</param>
|
/// <returns></returns>
|
[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 });
|
}
|
}
|
|
/// <summary>
|
/// 获取箱码信息(根据箱码在库存箱码明细中查询)
|
/// </summary>
|
/// <param name="model">BoxNo:箱码号</param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult GetBoxInfo(PdaSoVm model)
|
{
|
try
|
{
|
var models = _pdaSoSvc.GetBoxInfo(model.BoxNo, model.BoxNo2, model.BoxNo3);
|
|
return Ok(new { code = 0, msg = "箱码信息", data = models });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 获取托盘拣货明细的信息
|
/// </summary>
|
/// <param name="model">SoDetailId:出库单明细ID、PalletNo:托盘码</param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult GetComDetailByPalletNo(PdaSoVm model)
|
{
|
try
|
{
|
var models = _pdaSoSvc.GetComDetailByPalletNo(model.PalletNo,model.SoDetailId);
|
|
return Ok(new { code = 0, msg = "箱码信息", data = models });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 出库pda拣货
|
/// </summary>
|
/// <param name="model">SoDetailId:出库单明细ID、PalletNo:托盘码</param>
|
/// <returns></returns>
|
[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.PickQty, int.Parse(userId));
|
|
return Ok(new { code = 0, msg = "拣货完成", data ="" });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// pda申请空托出库
|
/// </summary>
|
/// <param name="mate">物料</param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult SoPallet(SysMaterials mate)
|
{
|
try
|
{
|
//记录log
|
var logStr = $@".\log\WCS\Pda申请空托盘"+_config.WcsHost + _config.IssueComApiUrl + DateTime.Now.ToString("yyyyMMdd") + ".txt";
|
LogFile.SaveLogToFile($"WCS申请空托盘物料号:( {mate.SkuNo} ),", logStr);
|
|
//获取当前登录的用户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 list = _pdaSoSvc.PalletLocation(mate.SkuNo, int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl,mate.Origin);
|
|
return Ok(new
|
{
|
Success = "0",
|
Message = list == null ? "任务已申请!" : "",
|
TaskList = list
|
});
|
}
|
catch (Exception e)
|
{
|
return Ok(new
|
{
|
Success = -1,
|
Message = e.Message
|
});
|
}
|
}
|
|
}
|
}
|