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;
|
using Model.ModelVm.BllCheckVm;
|
using Model.ModelVm.LogVm;
|
using WMS.IBLL.IBllCheckServer;
|
using WMS.IBLL.ILogServer;
|
using Model.ModelDto.DataDto;
|
using Model.ModelVm.BllSoVm;
|
using Wms.Tools;
|
|
namespace Wms.Controllers
|
{
|
[Route("api/[controller]/[action]")]
|
[ApiController]
|
[Authorize]
|
public class BllCheckController : ControllerBase
|
{
|
private readonly ApiUrlConfig _config; //接口交互路径
|
private readonly IStockCheckServer _stockCheckSvc;//盘点单Svc
|
private readonly IStockCheckLogServer _stockCheckLogSvc;//盘点记录Svc
|
|
private readonly ITaskServer _taskSvc;//库内任务Svc
|
private readonly IOperationCRServer _logSvc;//库内操作日志Svc
|
|
private readonly IWarehouseOutsidePalletsServer _stockPallet; //库外托盘
|
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
/// <param name="stockCheckSvc">盘点单Svc</param>
|
/// <param name="stockCheckLogSvc">盘点记录Svc</param>
|
/// <param name="taskSvc">库内任务Svc</param>
|
/// <param name="logSvc">库内操作日志Svc</param>
|
/// <param name="stockPallet">库外托盘</param>
|
public BllCheckController(IOptions<ApiUrlConfig> setting, IStockCheckServer stockCheckSvc, IStockCheckLogServer stockCheckLogSvc, ITaskServer taskSvc, IOperationCRServer logSvc, IWarehouseOutsidePalletsServer stockPallet)
|
{
|
_config = setting.Value;
|
_stockCheckSvc = stockCheckSvc;
|
_stockCheckLogSvc = stockCheckLogSvc;
|
_taskSvc = taskSvc;
|
_logSvc = logSvc;
|
_stockPallet = stockPallet;
|
}
|
|
#region 盘点单据
|
|
/// <summary>
|
/// 获取盘点单信息
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult GetStockCheckList(GetStockCheckVm model)
|
{
|
try
|
{
|
var bolls = _stockCheckSvc.GetStockCheckList(model.CrNo, model.Status, model.PalletNo, model.SkuNo, model.SkuName, model.LotNo, 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 GetStockCheckDetailList(GetStockCheckVm model)
|
{
|
try
|
{
|
var bolls = _stockCheckSvc.GetStockCheckDetailList(model.CrNo, 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 GetCheckStockDetailList(GetStockDetailVm model)
|
{
|
try
|
{
|
var bolls = _stockCheckSvc.GetCheckStockDetailList(model.HouseNo, model.RoadwayNo, model.LocateNo, 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="soNo"></param>
|
/// <returns></returns>
|
[HttpGet]
|
public IActionResult GetStockCheckDetailById(string crNo)
|
{
|
try
|
{
|
var bolls = _stockCheckSvc.GetStockCheckDetailById(crNo);
|
|
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 AddEditStockCheck(AddEditStockCheckVm 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 = "未获取到当前操作人信息" });
|
}
|
_stockCheckSvc.AddEditStockCheck(model, int.Parse(userId));
|
|
return Ok(new { code = 0, count = 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 DelStockCheck(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 = "未获取到当前操作人信息" });
|
}
|
_stockCheckSvc.DelStockCheck(model.Id, 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="id"></param>
|
/// <param name="demo"></param>
|
/// <returns></returns>
|
[HttpGet]
|
public IActionResult EditNoticeDemo(int id, string demo)
|
{
|
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("未获取到用户信息");
|
}
|
|
_stockCheckSvc.EditNoticeDemo(id, demo, int.Parse(userId));
|
|
|
return Ok(new { code = 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 GetStockCheckLogList(GetCheckLogVm model)
|
{
|
try
|
{
|
var list = _stockCheckLogSvc.GetStockCheckLogList(model.CrNo, model.Status, model.PalletNo, model.BoxNo, model.SkuNo, model.SkuName, model.LotNo, model.Page, model.Limit, out int count);
|
|
return Ok(new { code = 0, count, msg = "盘点记录", data = list });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = "盘点记录" + e.Message });
|
}
|
}
|
|
#endregion
|
|
#region 库内任务 及 操作日志
|
|
/// <summary>
|
/// 获取库内任务信息
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult GetCrTaskList(GetTaskVm model)
|
{
|
try
|
{
|
var type = new List<string>() { "2", "3" };
|
var bolls = _taskSvc.GetTaskList(type, model.Type, model.Status, model.TaskNo, model.IsSuccess, model.PalletNo, 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="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult GetLogOperationCrList(GetOperationVm model)
|
{
|
try
|
{
|
var bolls = _logSvc.GetLogOperationCrList(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 });
|
}
|
}
|
|
/// <summary>
|
/// 重新下发盘点出库任务
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult AgainSendCheckTask(CheckTaskVm 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 = "未获取到当前操作人信息" });
|
}
|
_stockCheckSvc.AgainSendCheckTask(model.taskNo, int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl);
|
|
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 CancelCheckTask(CheckTaskVm 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 = "未获取到当前操作人信息" });
|
}
|
_stockCheckSvc.CancelCheckTask(model.taskNo, 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 FinishCheckTask(CheckTaskVm 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 = "未获取到当前操作人信息" });
|
}
|
_stockCheckSvc.CheckSuccess(model.taskNo, int.Parse(userId));
|
|
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 GetPalletsOutside(PalletsOutVm model)
|
{
|
List<MateDataStockDto> mateDataStockDtos = _stockPallet.GetPalletsOutside(model.SkuNo, model.SkuName, model.LotNo, model.PalletNo, model.Page, model.Limit, out int count);
|
return Ok(new { code = 0, count, msg = "获取库外托盘信息成功", data = mateDataStockDtos });
|
}
|
|
#endregion
|
|
|
#region AGV转运
|
/// <summary>
|
/// AGV移库完成
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult FinishMoveTask(CheckTaskVm 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 = "未获取到当前操作人信息" });
|
}
|
_stockCheckSvc.MoveSuccess(model.taskNo, _config.MesHost+_config.MesGetTokenUrl, _config.MesHost+ _config.MesBeiLiaoUrl, int.Parse(userId));
|
|
return Ok(new { code = 0, msg = "成功完成任务", data = "" });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
/// <summary>
|
/// 取消AGV移库任务
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
public IActionResult CancelMoveTask(CheckTaskVm 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 = "未获取到当前操作人信息" });
|
}
|
_stockCheckSvc.CancelMoveTask(model.taskNo, int.Parse(userId));
|
|
return Ok(new { code = 0, msg = "成功取消任务", data = "" });
|
}
|
catch (Exception e)
|
{
|
return Ok(new { code = 1, msg = e.Message });
|
}
|
}
|
#endregion
|
}
|
}
|