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 WMS.DAL; using Microsoft.AspNetCore.Authorization; using WMS.IBLL.IBllTransServer; using static Model.InterFaceModel.RCSModel; namespace Wms.Controllers { /// <summary> /// 上游系统交互 /// </summary> [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 private readonly IProcurePlanServer _procurePlanSvc;//采è´å•Svs private readonly IRcsServer _rcsserver;//RCS相关任务 private readonly INoticeServer _noticeSvc;//äºŒæ¥¼å•æ®ç›¸å…³ public UpApiController(IOptions<ApiUrlConfig> setting,IExportNoticeServer exNoticeSvc,IArrivalNoticeServer arrivalNoticeServer,IStockCheckServer stockCheckSvc, IProcurePlanServer procurePlanSvc,IRcsServer rcsserver, INoticeServer noticeSvc) { _config = setting.Value; _exNoticeSvc = exNoticeSvc; _arrivalNoticeSvc = arrivalNoticeServer; _stockCheckSvc = stockCheckSvc; _procurePlanSvc = procurePlanSvc; _rcsserver = rcsserver; _noticeSvc = noticeSvc; } #endregion #region è°ƒç”¨ä¸Šæ¸¸ç³»ç»ŸæŽ¥å£ /// <summary> /// 入库å•å…³é— /// </summary> /// <param name="model">入库å•å·</param> /// <returns></returns> [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 }); } } /// <summary> /// 入库å•夿 ¸å¹¶å›žä¼ /// </summary> /// <param name="model">入库å•å·</param> /// <returns></returns> [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 = "未获å–åˆ°å½“å‰æ“作人信æ¯" }); } _arrivalNoticeSvc.FinishAsn(model.Id, _config.ErpHost + _config.AsnFinishUrl, int.Parse(userId)); return Ok(new { code = 0, count = 0, msg = "入库å•夿 ¸å¹¶ä¸Šä¼ æˆåŠŸ" }); } catch (Exception e) { return Ok(new { code = 1, msg = e.Message }); } } /// <summary> /// Pda夿 ¸å•æ®å¹¶å›žä¼ /// </summary> /// <param name="model">入库å•å·</param> /// <returns></returns> [HttpPost] public IActionResult ByPdaFinish(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.ByPdaFinish(model.Code, model.Code.Substring(0,2) == "AS" ? _config.ErpHost + _config.AsnFinishUrl : _config.ErpHost + _config.SoFinishUrl, 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 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 }); } } /// <summary> /// //出库å•夿 ¸å¹¶ä¸Šä¼ /// </summary> /// <param name="model"></param> /// <returns></returns> [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 = "未获å–åˆ°å½“å‰æ“作人信æ¯" }); } _exNoticeSvc.FinishSo(model.Id, _config.ErpHost + _config.SoFinishUrl, 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 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 è¢«è°ƒä¸Šæ¸¸è°ƒç”¨æŽ¥å£ /// <summary> /// 采è´å•æ®ä¸‹å‘ /// </summary> /// <param name="model">采è´å•ä¿¡æ¯</param> /// <returns></returns> [HttpPost] public IActionResult CreateProcurePlan(ProcurePlanInfo 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 = _procurePlanSvc.CreateProcurePlan(model); return Ok(result); } catch (Exception e) { result.Message = e.Message; return Ok(result); } } /// <summary> /// å…¥åº“å•æ®ä¸‹å‘ /// </summary> /// <param name="model">入库å•ä¿¡æ¯</param> /// <returns></returns> [Authorize] [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); } } /// <summary> /// 出库å•ä¸‹å‘æŽ¥å£ /// </summary> /// <param name="model">出库å•ä¿¡æ¯</param> /// <returns></returns> [HttpPost] public IActionResult CreateSo(SoInfo model) { try { SoResInfo result = _exNoticeSvc.ErpAddExportNotice(model); return Ok(result); } catch (Exception e) { return Ok(new ErpModel { Success = -1, Message = e.Message }); } } /// <summary> /// è½¦é—´å«æ–™ /// </summary> /// <param name="model"></param> /// <returns></returns> [HttpPost] public IActionResult MESProductionCall(ProductionCallVm model) { try { var bl = _exNoticeSvc.MESProductionCall(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 }); } } /// <summary> /// ä½™æ–™é€€å›žå…¥åº“å•æ®ä¸‹å‘ /// </summary> /// <param name="model"></param> /// <returns></returns> [HttpPost] public IActionResult CreateAsnYuLiao(AsnYuLiaoModel 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.CreateAsnYuLiao(model); return Ok(result); } catch (Exception e) { result.Message = e.Message; return Ok(result); } } //ç®±ç ä¿¡æ¯ æ‰‹æŒç»„托用 (èµ‹ç æˆ–追溯下å‘到wms) //è´¨æ£€ç»“æžœä¸‹å‘æŽ¥å£ //ç‰©æ–™ä¿¡æ¯æŽ¥å£ //å®¢æˆ·ä¿¡æ¯æŽ¥å£ //å•ä½ä¿¡æ¯æŽ¥å£ //åŒ…è£…ä¿¡æ¯æŽ¥å£ #endregion #region æµ‹è¯•å°æ•°ä½æ•°å€¼ //[HttpGet] //public IActionResult Demo() //{ // var result = new ErpModel { Success = -1, Message = "" }; // try // { // var com = new Common(); // decimal s = 13.3450M; // var sdf = com.GetViewVal(4,s); // result = new ErpModel { Success = -1, Message = sdf.ToString() }; // return Ok(result); // } // catch (Exception e) // { // result.Message = e.Message; // return Ok(result); // } //} #endregion } }