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_09.Tools;
|
|
namespace Wms_09.Controllers
|
{
|
[Route("api/[controller]/[action]")]
|
[ApiController]
|
[Authorize]
|
public class PdaSoController : ControllerBase
|
{
|
#region 依赖注入
|
private readonly ApiUrlConfig _config; //接口交互路径
|
private readonly IPdaSoServer _pdaSoSvc;
|
|
public PdaSoController(IOptions<ApiUrlConfig> setting,IPdaSoServer pdaSoSvc)
|
{
|
_config = setting.Value;
|
_pdaSoSvc = pdaSoSvc;
|
}
|
#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,model.Type);
|
|
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 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 });
|
}
|
}
|
|
|
/// <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.BoxNo, model.BoxNo3, int.Parse(userId));
|
|
return Ok(new { code = 0, msg = "拣货完成", data = "" });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
|
/// <summary>
|
/// 空托出库
|
/// </summary>
|
/// <param name="model">空托盘出库</param>
|
/// <returns></returns>
|
[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 });
|
}
|
}
|
|
|
|
/// <summary>
|
/// 获取平库托盘信息
|
/// </summary>
|
/// <param name="soNo">出库单号</param>
|
/// <param name="palletNo">托盘号</param>
|
/// <returns></returns>
|
[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 });
|
}
|
}
|
|
/// <summary>
|
/// 平库出库
|
/// </summary>
|
/// <param name="soNo">出库单号</param>
|
/// <param name="palletNo">托盘号</param>
|
/// <returns></returns>
|
[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 });
|
}
|
|
}
|
|
}
|
}
|