using Microsoft.AspNetCore.Mvc;
using System;
using System.Security.Claims;
using Microsoft.Extensions.Options;
using Model;
using Model.ModelVm;
using Newtonsoft.Json;
using Utility.Tools;
using WMS.IBLL.IBllSoServer;
using Wms_09.Tools;
using Model.InterFaceModel;
using WMS.IBLL.IBllAsnServer;
using WMS.IBLL.IBllCheckServer;
using Model.ModelVm.BllCheckVm;
namespace Wms_09.Controllers
{
///
/// 上游系统交互
///
[Route("api/[controller]/[action]")]
[ApiController]
public class UpApiController : ControllerBase
{
#region 依赖注入
private readonly ApiUrlConfig _config; //接口交互路径
private readonly IExportNoticeServer _exNoticeSvc;//出库单Svc
private readonly IArrivalNoticeServer _arrivalNoticeSvc;
private readonly IStockCheckServer _stockCheckSvc;//盘点单Svc
public UpApiController(IOptions setting,IExportNoticeServer exNoticeSvc,IArrivalNoticeServer arrivalNoticeServer,IStockCheckServer stockCheckSvc)
{
_config = setting.Value;
_exNoticeSvc = exNoticeSvc;
_arrivalNoticeSvc = arrivalNoticeServer;
_stockCheckSvc = stockCheckSvc;
}
#endregion
#region 调用上游系统接口
///
/// 入库单完成回传
///
/// 入库单号
///
[HttpPost]
public IActionResult FinishAsn(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 = _arrivalNoticeSvc.CloseArrivalNotice(model.Id, int.Parse(userId));
if (bolls == "")
{
//系统对接后放开
//var bl =_ArrivalNoticeSvc.FinishAsn(model.Id,_config.ErpHost+_config.AsnFinishUrl,int.Parse(userId));
//if (bl)
//{
return Ok(new { code = 0, count = 0, msg = "入库单关单上传成功" });
//}
//return Ok(new { code = 1, count = 0, msg = "出库单关单成功但上传失败" });
}
return Ok(new { code = 1, msg = "入库单关单失败" });
}
catch (Exception e)
{
return Ok(new { code = 1, msg = e.Message });
}
}
///
/// 完成出库单据 //出库单关闭反馈
///
///
///
[HttpPost]
public IActionResult FinishExportNotice(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.CloseExportNotice(model.Id, int.Parse(userId));
if (bolls)
{
//系统对接后放开
//var bl =_exNoticeSvc.FinishSo(model.Id,_config.ErpHost + _config.SoFinishUrl, int.Parse(userId));
//if (bl)
//{
return Ok(new { code = 0, count = 0, msg = "出库单关单上传成功" });
//}
//return Ok(new { code = 1, count = 0, msg = "出库单关单成功但上传失败" });
}
return Ok(new { code = 1, msg = "出库单关单失败" });
}
catch (Exception e)
{
return Ok(new { code = 1, msg = e.Message });
}
}
///
/// 完成盘库单据 //盘库单调整库存反馈
///
///
///
[HttpPost]
public IActionResult FinishCr(AdjustStockCheckVm 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 = "未获取到当前操作人信息" });
}
bool bolls = false;
if (model.Origin == "0")
{
bolls = _stockCheckSvc.StockAdjust(model.Id, int.Parse(userId));
}
else
{
bolls = _stockCheckSvc.StockAdjustAuto(model.Id, int.Parse(userId));
}
if (bolls)
{
//系统对接后放开
//var bl =_stockCheckSvc.FinishCr(model.Id,_config.ErpHost + _config.DataChangeUrl, int.Parse(userId));
//if (bl)
//{
return Ok(new { code = 0, count = 0, msg = "盘点单调整上传成功" });
//}
//return Ok(new { code = 1, count = 0, msg = "出库单关单成功但上传失败" });
}
return Ok(new { code = 1, msg = "盘点单调整失败" });
}
catch (Exception e)
{
return Ok(new { code = 1, msg = e.Message });
}
}
//箱码信息 手持组托用 (扫箱码向追溯要信息)
#endregion
#region 被调上游调用接口
///
/// 入库单据下发
///
/// 入库单信息
///
[HttpPost]
public IActionResult CreateAsn(AsnInfo model)
{
var result = new ErpModel { Success = -1, Message = "" };
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("未获取到用户信息");
}
result = _arrivalNoticeSvc.CreateAsn(model);
return Ok(result);
}
catch (Exception e)
{
result.Message = e.Message;
return Ok(result);
}
}
///
/// 出库单下发接口
///
/// 入库单信息
///
[HttpPost]
public IActionResult CreateSo(SoInfo model)
{
try
{
var bl = _exNoticeSvc.ErpAddExportNotice(model);
if (bl)
{
return Ok(new ErpModel { Success = 0, Message = "成功"});
}
else
{
return Ok(new ErpModel { Success = -1, Message = "失败" });
}
}
catch (Exception e)
{
return Ok(new ErpModel { Success = -1, Message = e.Message });
}
}
//箱码信息 手持组托用 (赋码或追溯下发到wms)
//质检结果下发接口
//物料信息接口
//客户信息接口
//单位信息接口
//包装信息接口
#endregion
}
}