Files
wcs/WCS.WebApi/Controllers/HomeController.cs
hehaibing-1996 adb0367a83 1.解决TCP添加失败问题
2.所有搜索记录倒叙排
3.优化:出入记录、库存记录增加货架类型分类查询
4.权限
5.优化下载app二维码
2024-07-02 09:05:21 +08:00

241 lines
8.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Microsoft.AspNetCore.Mvc;
using NPOI.SS.Formula.Functions;
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;
using Mode = WCS.BLL.HardWare.Mode;
namespace WCS.WebApi.Controllers
{
/// <summary>
/// 主页面的接口
/// </summary>
[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<ResponseBase> getShelfTypes(RequestBase request)
{
try
{
//直接获取当前所有货架类型并返回
var shelfTypes = DbHelp.db.Queryable<ShelfTypeInfo>()
.Select(t => new ShelfTypeModel()
{
Id = t.Id,
ShelfTypeName = t.ShelfTypeName
})
.ToList();
return new PageQueryResponse<ShelfTypeModel>()
{
Code = 200,
Message = "success",
Data = new PageQueryResponseData<ShelfTypeModel>
{
Lists = shelfTypes,
Count = shelfTypes.Count
}
};
}
catch (Exception ex)
{
return new PageQueryResponse<ShelfTypeModel>()
{
Code = 300,
Message = $"查询失败:{ex.Message}",
};
}
}
[Route("getShelfStatus")]
[HttpPost(Name = "getShelfStatus")]
public async Task<ResponseBase> 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("getShelfStatusDetails")]
[HttpPost(Name = "getShelfStatusDetails")]
public async Task<ResponseBase> getShelfStatusDetails(GetShelfStatusRequest request)
{
try
{
var shelfs = ShelfManager.Shelves
.WhereIF(request.GroupNames?.Count > 0, t => request.GroupNames!.Contains(t.GroupName))
.ToList();
//直接返回当前内存中缓存的货架和状态
return new ResponseBase<object>()
{
Code = 200,
Message = "success",
Data = shelfs,
};
}
catch (Exception ex)
{
return new ResponseBase()
{
Code = 300,
Message = "获取失败:" + ex.Message,
};
}
}
[Route("getTCPClientsDetails")]
[HttpPost(Name = "getTCPClientsDetails")]
public async Task<ResponseBase> getTCPClientsDetails(GetShelfStatusRequest request)
{
try
{
var tcpClients = TCPClientManager.TCPClients.Select(t => new
{
RemoteIPHost = t.RemoteIPHost,
IsOnline = t.IsOnline,
IsFirstConnected = t.IsFirstConnected,
tcpClientIsNull = t.tcpClient == null,
tcpClientIsOnLine = t.tcpClient?.Online,
}).ToList();
//直接返回当前内存中缓存的货架和状态
return new ResponseBase<object>()
{
Code = 200,
Message = $"success连接数量{tcpClients.Count}",
Data = tcpClients,
};
}
catch (Exception ex)
{
return new ResponseBase()
{
Code = 300,
Message = "获取失败:" + ex.Message,
};
}
}
[Route("shelfCheckAll")]
[HttpPost(Name = "shelfCheckAll")]
public async Task<ResponseBase> shelfCheckAll(GetShelfStatusRequest request)
{
try
{
return await _selfCheckService.StartSelfCheckByGroupName(request.GroupNames);
}
catch (Exception ex)
{
return new ResponseBase()
{
Code = 300,
Message = "操作失败:" + ex.Message,
};
}
}
/// <summary>
/// 重置货架的状态 使其回到待机模式
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("resetShelfStatus")]
[HttpPost(Name = "resetShelfStatus")]
public async Task<ResponseBase> 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<IShelfBase>();
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,
};
}
}
}
}