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.Tools; using Model.InterFaceModel; using WMS.IBLL.IBllAsnServer; using WMS.IBLL.IBllCheckServer; using Model.ModelVm.BllCheckVm; using Microsoft.Extensions.Logging; namespace Wms.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 CloseAsn(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 = "未获取到当前操作人信息" }); } _arrivalNoticeSvc.CloseArrivalNotice(model.Id, int.Parse(userId)); return Ok(new { code = 0, count = 0, msg = "入库单关单成功" }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 入库单复核并回传 /// /// 入库单号 /// [HttpPost] public IActionResult FinishAsn(FinshVm 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 = "未获取到当前操作人信息" }); } _arrivalNoticeSvc.FinishAsn(model.Id, _config.ErpHost + _config.AsnFinishUrl, _config.MesHost + _config.MesAsnFinishUrl, _config.MesHost + _config.MesGetTokenUrl,model.UserNo,model.Password, int.Parse(userId)); return Ok(new { code = 0, count = 0, msg = "入库单复核并上传成功" }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// 完成/关闭出库单据 /// /// /// [HttpPost] public IActionResult CloseExportNotice(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 = "未获取到当前操作人信息" }); } _exNoticeSvc.CloseExportNotice(model.Id, int.Parse(userId)); return Ok(new { code = 0, count = 0, msg = "出库单关单成功" }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// /// //出库单复核并上传 /// /// /// [HttpPost] public IActionResult FinishExportNotice(FinshVm 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.FinishSo(model.Id, _config.ErpHost + _config.SoFinishUrl, model.UserNo, model.Password, int.Parse(userId)); return Ok(new { code = 0, count = 0, 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) { // liudl Test var result = new HttpReturnModel { Success = "-1", Message = "" }; var logStr = ""; if (model.Origin == "MES") { logStr = $@".\log\MES\入库单下发" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; } else if (model.Origin == "ERP") { logStr = $@".\log\ERP\入库单下发" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; } try { //log日志记录 if (logStr != "") { var jsonData = JsonConvert.SerializeObject(model); LogFile.SaveLogToFile($"入库单下发:( {jsonData} ),", logStr); } result = _arrivalNoticeSvc.HttpCreateAsn(model); if (logStr != "") { var jsonData = JsonConvert.SerializeObject(result); LogFile.SaveLogToFile($"入库单下发返回参数:( {jsonData} ),", logStr); } return Ok(result); } catch (Exception e) { result.Message = e.Message; if (logStr != "") { var jsonData = JsonConvert.SerializeObject(result); LogFile.SaveLogToFile($"入库单下发返回参数:( {jsonData} ),", logStr); } return Ok(result); } } /// /// 出库单下发接口 /// /// 入库单信息 /// [HttpPost] public IActionResult CreateSo(SoInfo model) { var logStr = ""; if (model.Origin == "MES") { logStr = $@".\log\MES\出库单下发" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; } else if(model.Origin == "ERP") { logStr = $@".\log\ERP\出库单下发" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; } try { //log日志记录 if (logStr!="") { var jsonData = JsonConvert.SerializeObject(model); LogFile.SaveLogToFile($"出库单下发:( {jsonData} ),", logStr); } _exNoticeSvc.HttpAddExportNotice(model); var data = new HttpReturnModel { Success = "0", Message = "成功" }; if (logStr != "") { var jsonData = JsonConvert.SerializeObject(data); LogFile.SaveLogToFile($"出库单下发返回参数:( {jsonData} ),", logStr); } return Ok(data); } catch (Exception e) { var data = new HttpReturnModel { Success = "-1", Message = "失败"+e.Message }; if (logStr != "") { var jsonData = JsonConvert.SerializeObject(data); LogFile.SaveLogToFile($"出库单下发返回参数:( {jsonData} ),", logStr); } return Ok(data); } } /// /// 释放备料区储位状态JC24 /// /// [HttpPost] public IActionResult UpLocate(UpLocateModel model) { //记录log var logStr = ""; if (model.Origin == "MES") { logStr = $@".\log\MES\释放备料区储位状态" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; } try { if (logStr != "") { var jsonData = JsonConvert.SerializeObject(model); LogFile.SaveLogToFile($"释放备料区储位状态:( {jsonData} ),", logStr); } _arrivalNoticeSvc.UpLocate(model.WareHouseNo,model.LocatNo); var data = new HttpReturnModel { Success = "0", Message = "成功" }; if (logStr != "") { var jsonData = JsonConvert.SerializeObject(data); LogFile.SaveLogToFile($"释放备料区储位状态返回参数:( {jsonData} ),", logStr); } return Ok(data); } catch (Exception e) { var data = new HttpReturnModel { Success = "0", Message = "失败:" + e.Message }; if (logStr != "") { var jsonData = JsonConvert.SerializeObject(data); LogFile.SaveLogToFile($"释放备料区储位状态返回参数:( {jsonData} ),", logStr); } return Ok(data); } } //质检结果下发接口 //物料信息接口 //客户信息接口 //单位信息接口 //包装信息接口 #endregion } }