using System; using System.Collections.Generic; using System.Security.Claims; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Model.ModelDto.DataDto; using Model.ModelVm; using Model.ModelVm.BllCheckVm; using Model.ModelVm.LogVm; using WMS.Entity.LogEntity; using WMS.IBLL.IBllCheckServer; using WMS.IBLL.ILogServer; using WmsApi.Tools; namespace WmsApi.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.SkuNo, model.LotNo, 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 }); } } #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.StartTime, model.EndTime, 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.StartTime, model.EndTime, 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 CheckSuccess(LogTask 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), _config.WcsHost + _config.FinshComApiUrl); 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 ExportSuccess(LogTask 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.ExportSuccess(model.TaskNo, int.Parse(userId), _config.WcsHost + _config.FinshComApiUrl); return Ok(new { code = 0, count = 0, msg = "å–æ¶ˆæˆåŠŸ" }); } catch (Exception e) { return Ok(new { code = 1, msg = "å–æ¶ˆå¤±è´¥" + e.Message }); } } #endregion #region 库外托盘 /// <summary> /// 获å–库外托盘信æ¯åˆ—表 /// </summary> /// <param name="skuNo">物料å·</param> /// <param name="skuName">物料åç§°</param> /// <param name="lotNo">批次</param> /// <param name="palletNo">托盘å·</param> /// <returns></returns> [HttpGet] public IActionResult GetPalletsOutside(string skuNo, string skuName, string lotNo, string palletNo) { List<MateDataStockDto> mateDataStockDtos = _stockPallet.GetPalletsOutside(skuNo, skuName, lotNo, palletNo); return Ok(new { data = mateDataStockDtos, code = 0, msg = "获å–åº“å¤–æ‰˜ç›˜ä¿¡æ¯æˆåŠŸ" }); } #endregion } }