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 } }