using Microsoft.AspNetCore.Mvc; using SqlSugar; using WCS.BLL.DbModels; using WCS.BLL.HardWare; using WCS.BLL.Manager; using WCS.BLL.Services.IService; using WCS.BLL.Services.Service; using WCS.DAL.Db; using WCS.Model; using WCS.Model.ApiModel.Home; namespace WCS.WebApi.Controllers { /// /// 主页面的接口 /// [ApiController] [Route("[controller]")] public class HomeController : ControllerBase { public IHomerService _homerService { get; set; } public ISelfCheckService _selfCheckService { get; set; } public HomeController(IHomerService homerService, ISelfCheckService selfCheckService) { _homerService = homerService; _selfCheckService = selfCheckService; } [Route("getShelfTypes")] [HttpPost(Name = "getShelfTypes")] public async Task getShelfTypes(RequestBase request) { try { //直接获取当前所有货架类型并返回 var shelfTypes = DbHelp.db.Queryable() .Select(t => new ShelfTypeModel() { Id = t.Id, ShelfTypeName = t.ShelfTypeName }) .ToList(); return new PageQueryResponse() { Code = 200, Message = "success", Data = new PageQueryResponseData { Lists = shelfTypes, Count = shelfTypes.Count } }; } catch (Exception ex) { return new PageQueryResponse() { Code = 300, Message = $"查询失败:{ex.Message}", }; } } [Route("getShelfStatus")] [HttpPost(Name = "getShelfStatus")] public async Task getShelfStatus(GetShelfStatusRequest request) { try { var shelfs = ShelfManager.Shelves .WhereIF(request.GroupNames?.Count > 0, t => request.GroupNames!.Contains(t.GroupName)) .ToList(); //直接返回当前内存中缓存的货架和状态 return new GetShelfStatusResponse() { Code = 200, Message = "success", Data = shelfs.Select(t => new ShelfModel { ShelfId = t.ShelfId, ShelfCode = t.ShelfCode, CurentMode = (int)t.CurrentMode, ModulesStr = t.ModulesStr, GroupName = t.GroupName, OrderNumber = t.OrderNumber, }).ToList(), }; } catch (Exception ex) { return new ResponseBase() { Code = 300, Message = "获取失败:" + ex.Message, }; } } [Route("shelfCheckAll")] [HttpPost(Name = "shelfCheckAll")] public async Task shelfCheckAll(GetShelfStatusRequest request) { try { //var shelfs = ShelfManager.Shelves // .WhereIF(request.GroupNames?.Count > 0, t => request.GroupNames!.Contains(t.GroupName)) // .Select(t => t.ShelfCode) // .ToList(); //直接返回当前内存中缓存的货架和状态 return await _selfCheckService.StartSelfCheckByGroupName(request.GroupNames); } catch (Exception ex) { return new ResponseBase() { Code = 300, Message = "操作失败:" + ex.Message, }; } } /// /// 重置货架的状态 使其回到待机模式 /// /// /// [Route("resetShelfStatus")] [HttpPost(Name = "resetShelfStatus")] public async Task resetShelfStatus(ResetShelfStatusRequest request) { try { if (request.IsResetAll == false && (request.SelfIds == null || request.SelfIds.Count == 0)) { return new ResponseBase() { Code = 201, Message = "复位失败:请选择需要复位的货架!", }; } if (request.IsResetAll == true && (request.GroupNames == null || request.GroupNames.Count == 0)) { return new ResponseBase() { Code = 201, Message = "复位失败:请选择需要复位的货架区域!", }; } var shelfs = new List(); if (request.IsResetAll == false) shelfs = ShelfManager.Shelves .Where(t => request.SelfIds.Contains(t.ShelfId)) .Where(t => t.CurrentMode != Mode.待机模式) .ToList(); else shelfs = ShelfManager.Shelves .Where(t => request.GroupNames.Contains(t.GroupName)) .Where(t => t.CurrentMode != Mode.待机模式) .ToList(); foreach (var shelf in shelfs) { shelf.Reset(); } return new ResponseBase() { Code = 200, Message = "success", }; } catch (Exception ex) { return new ResponseBase() { Code = 300, Message = ex.Message, }; } } } }