using System;
|
using System.Collections.Generic;
|
using System.Security.Claims;
|
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.Extensions.Options;
|
using Model.ModelVm;
|
using Model.ModelVm.BllSoVm;
|
using Model.ModelVm.LogVm;
|
using WMS.IBLL.IBllSoServer;
|
using WMS.IBLL.ILogServer;
|
using WmsApi.Tools;
|
|
namespace WmsApi.Controllers
|
{
|
[Route("api/[controller]/[action]")]
|
[ApiController]
|
[Authorize]
|
public class BllSoController : ControllerBase
|
{
|
/// <summary>
|
/// 依赖注入
|
/// </summary>
|
private readonly ApiUrlConfig _config; //接口交互路径
|
private readonly IExportNoticeServer _exNoticeSvc;//出库单Svc
|
private readonly IExportNoticeDetailServer _exNoticeDetailSvc;//出库单明细Svc
|
private readonly IExportAllotServer _exAllotSvc;//出库分配Svc
|
private readonly ICompleteDetailServer _comDetailSvc;//出库拣货明细Svc
|
private readonly ITaskServer _taskSvc;//出库任务Svc
|
private readonly IOperationSOServer _logSvc;//出库操作日志Svc
|
|
public BllSoController(IOptions<ApiUrlConfig> setting, IExportNoticeServer exNoticeSvc, IExportNoticeDetailServer exNoticeDetailSvc, IExportAllotServer exAllotSvc, ICompleteDetailServer comDetailSvc, ITaskServer taskSvc, IOperationSOServer logSvc)
|
{
|
_config = setting.Value;
|
_exNoticeSvc = exNoticeSvc;
|
_exNoticeDetailSvc = exNoticeDetailSvc;
|
_exAllotSvc = exAllotSvc;
|
_comDetailSvc = comDetailSvc;
|
_taskSvc = taskSvc;
|
_logSvc = logSvc;
|
}
|
|
#region 出库单管理
|
|
/// <summary>
|
/// 获取出库单信息
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult GetExportNoticeList(GetExportNoticeVm model)
|
{
|
try
|
{
|
var bolls = _exNoticeSvc.GetExportNoticeList(model.No, model.Type, model.Status,model.SkuNo, model.LotNo, model.LogisticsId, model.IsWave, model.IsDespatch, model.WaveNo,model.StartTime,model.EndTime, model.Page, model.Limit, out int count);
|
|
return Ok(new { code = 0, count, msg = "出库单信息", data = bolls });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
///// <summary>
|
///// 获取已完成出库单据
|
///// </summary>
|
///// <returns></returns>
|
//[HttpPost]
|
//public IActionResult GetInnesExportNoticeList(GetExportNoticeVm model)
|
//{
|
// try
|
// {
|
// var bolls = _exNoticeSvc.GetExportNoticeList(model.No, model.Type, model.Status, model.SkuNo, model.LotNo, model.LogisticsId, model.IsWave, model.IsDespatch, model.WaveNo, model.StartTime, model.EndTime, model.Page, model.Limit, out int count);
|
|
// return Ok(new { code = 0, count, msg = "退货入库出库单信息", data = bolls });
|
// }
|
// catch (Exception e)
|
// {
|
// return Ok(new { code = 1, msg = e.Message });
|
// }
|
//}
|
|
/// <summary>
|
/// 获取添加或修改出库单明细所显示的库存数据源
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult GetStockGroupList(GetStockGroupVm model)
|
{
|
try
|
{
|
var bolls = _exNoticeSvc.GetStockGroupList(model.WareHouseNo, model.Type, model.LotNo, model.SkuNo);
|
|
return Ok(new { code = 0, count = 0, msg = "出库单信息", data = bolls });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 添加出库单
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult AddExportNotice(AddEditExportNoticeVm 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 bolls = _exNoticeSvc.AddExportNotice(model, int.Parse(userId));
|
|
return Ok(new { code = 0, count = 0, msg = "添加出库单成功", data = bolls });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 获取编辑出库单据
|
/// </summary>
|
/// <param name="soNo"></param>
|
/// <returns></returns>
|
[HttpGet]
|
public IActionResult GetEditExportNotice(string soNo)
|
{
|
try
|
{
|
var bolls = _exNoticeSvc.GetEditExportNotice(soNo);
|
|
return Ok(new { code = 0, count = 0, msg = "出库单编辑信息", data = bolls });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 编辑出库单据
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult EditExportNotice(AddEditExportNoticeVm 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 bolls = _exNoticeSvc.EditExportNotice(model, int.Parse(userId));
|
|
return Ok(new { code = 0, count = 0, msg = "出库单编辑成功", data = bolls });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = "编辑失败"+e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 删除出库单据
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult DelExportNotice(IdVm 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 bolls = _exNoticeSvc.DelExportNotice(model.Id, int.Parse(userId));
|
if (bolls)
|
{
|
return Ok(new { code = 0, count = 0, msg = "出库单删除成功" });
|
}
|
else
|
{
|
return Ok(new { code = 1, msg = "删除失败" });
|
}
|
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = "删除失败" + e.Message });
|
}
|
}
|
|
#endregion
|
|
#region 出库单明细管理
|
|
/// <summary>
|
/// 获取出库单明细信息
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult GetExportNoticeDetailList(GetExportNoticeDetailVm model)
|
{
|
try
|
{
|
var bolls = _exNoticeDetailSvc.GetExportNoticeDetailList(model.SoNo, model.Page, model.Limit, out int count);
|
|
return Ok(new { code = 0, count, msg = "出库单明细信息", data = bolls });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 删除出库单据明细
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult DelExportNoticeDetail(IdVm 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 bolls = _exNoticeDetailSvc.DelExportNoticeDetail(model.Id, int.Parse(userId));
|
if (bolls)
|
{
|
return Ok(new { code = 0, count = 0, msg = "出库单明细删除成功" });
|
}
|
else
|
{
|
return Ok(new { code = 1, msg = "删除失败" });
|
}
|
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
#endregion
|
|
#region 出库分配
|
|
/// <summary>
|
/// 出库单据自动分配
|
/// </summary>
|
/// <param name="soNo">出库单号</param>
|
/// <returns></returns>
|
[HttpGet]
|
public IActionResult ExportAutoAllot(string soNo)
|
{
|
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 bolls = _exNoticeSvc.AutoAllot(soNo, int.Parse(userId));
|
if (bolls)
|
{
|
return Ok(new { code = 0, count = 0, msg = "分配成功" });
|
}
|
else
|
{
|
return Ok(new { code = 1, msg = "分配失败" });
|
}
|
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
/// <summary>
|
/// 取消出库单据分配
|
/// </summary>
|
/// <param name="soNo">出库单号</param>
|
/// <returns></returns>
|
[HttpGet]
|
public IActionResult ExportCancelAllot(string soNo)
|
{
|
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 bolls = _exNoticeSvc.CancelAllot(soNo, int.Parse(userId));
|
if (bolls)
|
{
|
return Ok(new { code = 0, count = 0, msg = "取消分配成功" });
|
}
|
else
|
{
|
return Ok(new { code = 1, msg = "取消分配失败" });
|
}
|
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 获取库存明细信息(出库单手动分配选择数据源)
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult GetHandOutList(GetHandOutVm model)
|
{
|
try
|
{
|
var list = _exNoticeSvc.GetHandOutList(model.DetailId, model.HouseNo, model.RoadwayNo, model.LocateNo, model.Msg, model.PalletNo);
|
|
return Ok(new { code = 0, count = list.Count, msg = "获取库存明细信息", data = list });
|
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 手动分配出库单明细
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult AddHandOutAllot(AddHandOutVm 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 = "未获取到当前操作人信息" });
|
}
|
_exNoticeSvc.AddHandOutAllot(model, int.Parse(userId));
|
|
return Ok(new { code = 0, count = 0, msg = "手动分配成功" });
|
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 获取出库分配信息
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult GetExportAllotList(GetExportAllotVm model)
|
{
|
try
|
{
|
var bolls = _exAllotSvc.GetExportAllotList(model.SoNo, model.WaveNo, model.PalletNo, model.SkuNo, model.SkuName, model.LotNo, model.Status, model.BoxNo, model.Page, model.Limit, out int count);
|
|
return Ok(new { code = 0, count, msg = "出库分配信息", data = bolls });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 删除出库单据分配的单条分配信息
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult DelExportAllot(IdVm 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 = "未获取到当前操作人信息" });
|
}
|
_exAllotSvc.DelExportAllot(model.Id, int.Parse(userId));
|
|
return Ok(new { code = 0, count = 0, msg = "取消分配成功" });
|
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
#endregion
|
|
#region 拣货明细
|
/// <summary>
|
/// 获取拣货明细信息
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult GetCompleteDetailList(GetCompleteDetailVm model)
|
{
|
try
|
{
|
var bolls = _comDetailSvc.GetCompleteDetailList(model.Id, model.Page, model.Limit, out int count);
|
|
return Ok(new { code = 0, count, msg = "拣货明细信息", data = bolls });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
#endregion
|
|
#region 出库任务
|
|
/// <summary>
|
/// 获取出库任务信息
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult GetExportTaskList(GetTaskVm model)
|
{
|
try
|
{
|
var type = new List<string>() { "1" };
|
var bolls = _taskSvc.GetTaskList(type, model.Type, model.Status, model.TaskNo, model.IsSuccess, model.PalletNo, model.StartTime, model.EndTime, model.Msg, model.Page, model.Limit, out int count);
|
|
return Ok(new { code = 0, count, msg = "出库任务信息", data = bolls });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 取消出库任务
|
/// </summary>
|
/// <param name="taskNo"></param>
|
/// <returns></returns>
|
[HttpGet]
|
public IActionResult ExportCancelTask(string taskNo)
|
{
|
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 = "未获取到当前操作人信息" });
|
}
|
_exNoticeSvc.CancelSoTask(taskNo, int.Parse(userId), _config.WcsHost + _config.FinshComApiUrl);
|
|
return Ok(new { code = 0, msg = "取消任务已完成", data = "" });
|
|
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
/// <summary>
|
/// 完成出库任务
|
/// </summary>
|
/// <param name="taskNo"></param>
|
/// <returns></returns>
|
[HttpGet]
|
public IActionResult ExportFinishTask(string taskNo)
|
{
|
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 type = _taskSvc.GetTaskType(taskNo);
|
if (type == "1")//出库完成
|
{
|
_exNoticeSvc.ExportSuccess(taskNo, int.Parse(userId), _config.WcsHost + _config.FinshComApiUrl);
|
}
|
else if (type == "2")//出库时产生的移库任务完成
|
{
|
_exNoticeSvc.RelocationSuccess(taskNo, int.Parse(userId), _config.WcsHost + _config.FinshComApiUrl);
|
}
|
else
|
{
|
return Ok(new { code = 1, msg = "任务类型错误,请核实!" });
|
}
|
return Ok(new { code = 0, msg = "成功完成任务", data = "" });
|
|
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
#endregion
|
|
#region 出库操作日志
|
|
/// <summary>
|
/// 获取出库操作日志信息
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult GetLogOperationSoList(GetOperationVm model)
|
{
|
try
|
{
|
var bolls = _logSvc.GetLogOperationSoList(model.MenuName, model.Type, model.Msg, model.StartTime, model.EndTime, model.Page, model.Limit, out int count);
|
|
return Ok(new { code = 0, count, msg = "出库操作日志信息", data = bolls });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
|
#endregion
|
}
|
}
|