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<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>
|
///// 获取托盘上物料数量
|
///// </summary>
|
///// <param name="model">Pallno:托盘号</param>
|
///// <returns></returns>
|
//[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 });
|
// }
|
//}
|
|
/// <summary>
|
/// 获取箱码信息(获取库内无箱码的托盘分配信息)
|
/// </summary>
|
/// <param name="model">BoxNo:箱码号</param>
|
/// <returns></returns>
|
[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 });
|
}
|
}
|
|
|
/// <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,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="model">SoDetailId:出库单明细ID、PalletNo:托盘码</param>
|
/// <returns></returns>
|
[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 });
|
}
|
}
|
|
|
/// <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 });
|
}
|
|
}
|
|
|
/// <summary>
|
/// 根据托盘号获取取样类型
|
/// </summary>
|
/// <param name="palletNo">托盘号</param>
|
/// <returns></returns>
|
[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 });
|
}
|
|
}
|
|
/// <summary>
|
/// 根据托盘号获取入库单据
|
/// </summary>
|
/// <param name="palletNo">托盘号</param>
|
/// <returns></returns>
|
[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 });
|
}
|
|
}
|
/// <summary>
|
/// 取样出库拣货(标签)
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[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 });
|
}
|
|
}
|
/// <summary>
|
/// 取样出库拣货(无标签)
|
/// </summary>
|
/// <param name="model">SoDetailId:出库单明细ID、PalletNo:托盘码</param>
|
/// <returns></returns>
|
[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 拣货拼托
|
/// <summary>
|
/// 拼托出库pda拣货-标签
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[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 });
|
}
|
}
|
/// <summary>
|
/// 拼托出库pda拣货-数量
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[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
|
}
|
}
|