空箱补货
This commit is contained in:
parent
b31e8c76e9
commit
f664b5beac
@ -6,7 +6,7 @@ using DOAN.Admin.WebApi.Filters;
|
||||
|
||||
namespace DOAN.Admin.WebApi.Controllers.PBL;
|
||||
|
||||
[Verify]
|
||||
[AllowAnonymous]
|
||||
[Route("PBL/bigscreen")]
|
||||
public class BigScreenController : BaseController
|
||||
{
|
||||
@ -27,7 +27,12 @@ public class BigScreenController : BaseController
|
||||
return SUCCESS(response);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//TODO 查询补料 情况
|
||||
[HttpGet("searchfeedingMaterial")]
|
||||
public IActionResult SearchfeedingMaterialInfomation()
|
||||
{
|
||||
var response= _BigScreenService.SearchfeedingMaterialInfomation();
|
||||
return SUCCESS(response);
|
||||
}
|
||||
|
||||
}
|
||||
@ -31,7 +31,7 @@
|
||||
"Issuer": "DOANAdmin.NET", //即token的签发者。
|
||||
"Audience": "DOANAdmin.NET", //指该token是服务于哪个群体的(群体范围)
|
||||
"SecretKey": "SecretKey-DOANADMIN.NET-202311281883838",
|
||||
"Expire": 0, //jwt登录过期时间(分)
|
||||
"Expire": 30, //jwt登录过期时间(分)
|
||||
"RefreshTokenTime": 30, //分钟
|
||||
"TokenType": "Bearer"
|
||||
},
|
||||
|
||||
@ -1,30 +0,0 @@
|
||||
namespace DOAN.Model.PBL.Dto;
|
||||
|
||||
public class BIgScreenDto
|
||||
{
|
||||
//料架号
|
||||
public string RackCode { get; set; }
|
||||
|
||||
//
|
||||
public LayerObject[] LayerObjectArray { get; set; }
|
||||
|
||||
//是否亮灯
|
||||
public bool isLight { get; set; }
|
||||
}
|
||||
|
||||
public class LayerObject
|
||||
{
|
||||
// 层号
|
||||
public int LayerNum { get; set; }
|
||||
|
||||
// 零件号
|
||||
public string Partnumber { get; set; }
|
||||
// 最大容量
|
||||
public int MaxCapacity { get; set; }
|
||||
|
||||
// 箱子数
|
||||
public int? PackageNum { get; set; }
|
||||
|
||||
//是否亮灯
|
||||
public bool isLight { get; set; }
|
||||
}
|
||||
61
DOAN.Model/PBL/Dto/BIgScreenDtoLightPickupDto.cs
Normal file
61
DOAN.Model/PBL/Dto/BIgScreenDtoLightPickupDto.cs
Normal file
@ -0,0 +1,61 @@
|
||||
namespace DOAN.Model.PBL.Dto;
|
||||
|
||||
public class BIgScreenDtoLightPickupDto
|
||||
{
|
||||
//料架号
|
||||
public string RackCode { get; set; }
|
||||
|
||||
//
|
||||
public LayerObject[] LayerObjectArray { get; set; }
|
||||
|
||||
//是否亮灯
|
||||
public bool isLight { get; set; }
|
||||
}
|
||||
|
||||
public class BigSreeenDtoFeedingMaterial
|
||||
{
|
||||
//料架号
|
||||
public string RackCode { get; set; }
|
||||
|
||||
//
|
||||
public LayerFeedingMaterialObject[] LayerObjectArray { get; set; }
|
||||
|
||||
//是否补料
|
||||
public bool isFeedingMaterial { get; set; }
|
||||
}
|
||||
|
||||
public class LayerObject
|
||||
{
|
||||
// 层号
|
||||
public int LayerNum { get; set; }
|
||||
|
||||
// 零件号
|
||||
public string Partnumber { get; set; }
|
||||
|
||||
// 最大容量
|
||||
public int MaxCapacity { get; set; }
|
||||
|
||||
// 箱子数
|
||||
public int? PackageNum { get; set; }
|
||||
|
||||
//是否亮灯
|
||||
public bool isLight { get; set; }
|
||||
}
|
||||
|
||||
public class LayerFeedingMaterialObject
|
||||
{
|
||||
// 层号
|
||||
public int LayerNum { get; set; }
|
||||
|
||||
// 零件号
|
||||
public string Partnumber { get; set; }
|
||||
|
||||
// 最大容量
|
||||
public int MaxCapacity { get; set; }
|
||||
|
||||
// 箱子数
|
||||
public int? PackageNum { get; set; }
|
||||
|
||||
//是否亮灯
|
||||
public bool isFeedingMaterial { get; set; }
|
||||
}
|
||||
@ -1,52 +1,47 @@
|
||||
namespace DOAN.Model.PBL.Dto;
|
||||
|
||||
namespace DOAN.Model.PBL.Dto
|
||||
/// <summary>
|
||||
/// 料架表查询对象
|
||||
/// </summary>
|
||||
public class StoragelocationQueryDto : PagerInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// 料架表查询对象
|
||||
/// </summary>
|
||||
public class StoragelocationQueryDto : PagerInfo
|
||||
{
|
||||
public string Partnumber { get; set; }
|
||||
public string Partnumber { get; set; }
|
||||
|
||||
public string RackCode { get; set; }
|
||||
}
|
||||
public string RackCode { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 料架表输入输出对象
|
||||
/// </summary>
|
||||
public class StoragelocationDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
public string RackCode { get; set; }
|
||||
|
||||
public int LayerNum { get; set; }
|
||||
|
||||
public string Partnumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 料架表输入输出对象
|
||||
/// 最大容量
|
||||
/// </summary>
|
||||
public class StoragelocationDto
|
||||
{
|
||||
[Required(ErrorMessage = "Id不能为空")]
|
||||
public int Id { get; set; }
|
||||
|
||||
public string RackCode { get; set; }
|
||||
|
||||
public int LayerNum { get; set; }
|
||||
|
||||
public string Partnumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最大容量
|
||||
/// </summary>
|
||||
|
||||
public int MaxCapacity { get; set; }
|
||||
public int? PackageNum { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 箱子数
|
||||
/// </summary>
|
||||
public int? IsLight { get; set; }
|
||||
public int MaxCapacity { get; set; }
|
||||
|
||||
public string CreatedBy { get; set; }
|
||||
|
||||
public DateTime? CreatedTime { get; set; }
|
||||
|
||||
public string UpdatedBy { get; set; }
|
||||
|
||||
public DateTime? UpdatedTime { get; set; }
|
||||
public int? PackageNum { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 箱子数
|
||||
/// </summary>
|
||||
public int? IsLight { get; set; }
|
||||
|
||||
}
|
||||
public string CreatedBy { get; set; }
|
||||
|
||||
public DateTime? CreatedTime { get; set; }
|
||||
|
||||
public string UpdatedBy { get; set; }
|
||||
|
||||
public DateTime? UpdatedTime { get; set; }
|
||||
}
|
||||
@ -42,7 +42,7 @@ namespace DOAN.Model.PBL
|
||||
public int? PackageNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 箱子数
|
||||
/// 是否亮灯
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "is_light")]
|
||||
public int? IsLight { get; set; }
|
||||
|
||||
@ -1,71 +1,116 @@
|
||||
using Infrastructure.Attribute;
|
||||
using Infrastructure.Extensions;
|
||||
using DOAN.Model.PBL.Dto;
|
||||
using DOAN.Model.PBL;
|
||||
using DOAN.Repository;
|
||||
using DOAN.Model.PBL.Dto;
|
||||
using DOAN.Service.PBL.IService;
|
||||
using Infrastructure.Attribute;
|
||||
|
||||
namespace DOAN.Service.PBL
|
||||
namespace DOAN.Service.PBL;
|
||||
|
||||
[AppService(ServiceType = typeof(IBigScreenService), ServiceLifetime = LifeTime.Transient)]
|
||||
public class BigScreenService : BaseService<Storagelocation>, IBigScreenService
|
||||
{
|
||||
[AppService(ServiceType = typeof(IBigScreenService), ServiceLifetime = LifeTime.Transient)]
|
||||
public class BigScreenService : BaseService<Storagelocation>, IBigScreenService
|
||||
/// <summary>
|
||||
/// 查询料架灯 亮和灭 情况
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<BIgScreenDtoLightPickupDto> SearchShelfLightInfomation()
|
||||
{
|
||||
/// <summary>
|
||||
/// 查询料架灯 亮和灭 情况
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
var result = new List<BIgScreenDtoLightPickupDto>();
|
||||
|
||||
public List<BIgScreenDto> SearchShelfLightInfomation()
|
||||
// 1 查询所有料架
|
||||
var RackCodeArray = Context.Queryable<Storagelocation>().GroupBy(it => it.RackCode).Select(it => it.RackCode)
|
||||
.ToArray();
|
||||
|
||||
var DataSoure = Context.Queryable<Storagelocation>().ToList();
|
||||
//2 查询每个料架层
|
||||
for (var i = 0; i < RackCodeArray.Length; i++)
|
||||
{
|
||||
List<BIgScreenDto> result = new List<BIgScreenDto>();
|
||||
|
||||
// 1 查询所有料架
|
||||
string[] RackCodeArray= Context.Queryable<Storagelocation>().GroupBy(it=>it.RackCode).Select(it=>it.RackCode).ToArray();
|
||||
var RackCodeObject = new BIgScreenDtoLightPickupDto();
|
||||
RackCodeObject.RackCode = RackCodeArray[i];
|
||||
|
||||
List<Storagelocation> DataSoure= Context.Queryable<Storagelocation>().ToList();
|
||||
//2 查询每个料架层
|
||||
for (int i = 0; i < RackCodeArray.Length; i++)
|
||||
var LayerSheelfList = DataSoure.Where(it => it.RackCode == RackCodeArray[i]).ToList();
|
||||
var LayerObjectfArray = new LayerObject[LayerSheelfList.Count];
|
||||
if (LayerSheelfList != null && LayerSheelfList.Count > 0)
|
||||
{
|
||||
BIgScreenDto RackCodeObject = new BIgScreenDto();
|
||||
RackCodeObject.RackCode = RackCodeArray[i];
|
||||
|
||||
List<Storagelocation> LayerSheelfList= DataSoure.Where(it => it.RackCode == RackCodeArray[i]).ToList();
|
||||
LayerObject[] LayerObjectfArray =new LayerObject[LayerSheelfList.Count];
|
||||
if (LayerSheelfList != null && LayerSheelfList.Count > 0)
|
||||
for (var j = 0; j < LayerSheelfList.Count; j++)
|
||||
{
|
||||
for (int j = 0; j < LayerSheelfList.Count; j++)
|
||||
{
|
||||
LayerObject LayerObject = new LayerObject();
|
||||
LayerObject.LayerNum=LayerSheelfList[j].LayerNum;
|
||||
LayerObject.Partnumber=LayerSheelfList[j].Partnumber;
|
||||
LayerObject.MaxCapacity=LayerSheelfList[j].MaxCapacity;
|
||||
LayerObject.PackageNum=LayerSheelfList[j].PackageNum;
|
||||
LayerObject.isLight=LayerSheelfList[j].IsLight==1?true:false;
|
||||
LayerObjectfArray[j] = LayerObject;
|
||||
}
|
||||
|
||||
for (int j = 0; j < LayerSheelfList.Count; j++)
|
||||
{
|
||||
RackCodeObject.isLight = false;
|
||||
if (LayerSheelfList[j].IsLight == 1)
|
||||
{
|
||||
RackCodeObject.isLight = true;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var LayerObject = new LayerObject();
|
||||
LayerObject.LayerNum = LayerSheelfList[j].LayerNum;
|
||||
LayerObject.Partnumber = LayerSheelfList[j].Partnumber;
|
||||
LayerObject.MaxCapacity = LayerSheelfList[j].MaxCapacity;
|
||||
LayerObject.PackageNum = LayerSheelfList[j].PackageNum;
|
||||
LayerObject.isLight = LayerSheelfList[j].IsLight == 1 ? true : false;
|
||||
LayerObjectfArray[j] = LayerObject;
|
||||
}
|
||||
|
||||
for (var j = 0; j < LayerSheelfList.Count; j++)
|
||||
{
|
||||
RackCodeObject.isLight = false;
|
||||
if (LayerSheelfList[j].IsLight == 1)
|
||||
{
|
||||
RackCodeObject.isLight = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
RackCodeObject.LayerObjectArray= LayerObjectfArray;
|
||||
result.Add(RackCodeObject);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
return result.OrderBy(it=>it.RackCode).ToList();
|
||||
RackCodeObject.LayerObjectArray = LayerObjectfArray;
|
||||
result.Add(RackCodeObject);
|
||||
}
|
||||
|
||||
|
||||
return result.OrderBy(it => it.RackCode).ToList();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public List<BigSreeenDtoFeedingMaterial> SearchfeedingMaterialInfomation()
|
||||
{
|
||||
var result = new List<BigSreeenDtoFeedingMaterial>();
|
||||
|
||||
// 1 查询所有料架
|
||||
var RackCodeArray = Context.Queryable<Storagelocation>().GroupBy(it => it.RackCode).Select(it => it.RackCode)
|
||||
.ToArray();
|
||||
|
||||
var DataSoure = Context.Queryable<Storagelocation>().ToList();
|
||||
//2 查询每个料架层
|
||||
for (var i = 0; i < RackCodeArray.Length; i++)
|
||||
{
|
||||
var RackCodeObject = new BigSreeenDtoFeedingMaterial();
|
||||
RackCodeObject.RackCode = RackCodeArray[i];
|
||||
|
||||
var LayerSheelfList = DataSoure.Where(it => it.RackCode == RackCodeArray[i]).ToList();
|
||||
var LayerObjectfArray = new LayerFeedingMaterialObject[LayerSheelfList.Count];
|
||||
if (LayerSheelfList != null && LayerSheelfList.Count > 0)
|
||||
{
|
||||
for (var j = 0; j < LayerSheelfList.Count; j++)
|
||||
{
|
||||
var LayerObject = new LayerFeedingMaterialObject();
|
||||
LayerObject.LayerNum = LayerSheelfList[j].LayerNum;
|
||||
LayerObject.Partnumber = LayerSheelfList[j].Partnumber;
|
||||
LayerObject.MaxCapacity = LayerSheelfList[j].MaxCapacity;
|
||||
LayerObject.PackageNum = LayerSheelfList[j].PackageNum;
|
||||
LayerObject.isFeedingMaterial = LayerSheelfList[j].PackageNum <= 2 ? true : false;
|
||||
LayerObjectfArray[j] = LayerObject;
|
||||
}
|
||||
|
||||
for (var j = 0; j < LayerSheelfList.Count; j++)
|
||||
{
|
||||
RackCodeObject.isFeedingMaterial = false;
|
||||
if (LayerSheelfList[j].PackageNum <= 2)
|
||||
{
|
||||
RackCodeObject.isFeedingMaterial = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RackCodeObject.LayerObjectArray = LayerObjectfArray;
|
||||
result.Add(RackCodeObject);
|
||||
}
|
||||
|
||||
|
||||
return result.OrderBy(it => it.RackCode).ToList();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -5,7 +5,8 @@ namespace DOAN.Service.PBL.IService;
|
||||
|
||||
public interface IBigScreenService : IBaseService<Storagelocation>
|
||||
{
|
||||
List<BIgScreenDto> SearchShelfLightInfomation();
|
||||
|
||||
|
||||
List<BIgScreenDtoLightPickupDto> SearchShelfLightInfomation();
|
||||
|
||||
List<BigSreeenDtoFeedingMaterial> SearchfeedingMaterialInfomation();
|
||||
|
||||
}
|
||||
@ -24,19 +24,29 @@ namespace DOAN.Admin.WebApi.Filters
|
||||
/// <param name="context"></param>
|
||||
public void OnAuthorization(AuthorizationFilterContext context)
|
||||
{
|
||||
#region 首先检查当前操作是否标记了 AllowAnonymousAttribute 属性。如果有,则跳过授权检查
|
||||
|
||||
var noNeedCheck = false;
|
||||
if (context.ActionDescriptor is ControllerActionDescriptor controllerActionDescriptor)
|
||||
{
|
||||
noNeedCheck = controllerActionDescriptor.MethodInfo.GetCustomAttributes(inherit: true)
|
||||
.Any(a => a.GetType().Equals(typeof(AllowAnonymousAttribute)));
|
||||
.Any(a => a.GetType().Equals(typeof(AllowAnonymousAttribute)));
|
||||
}
|
||||
|
||||
if (noNeedCheck) return;
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region 获取客户端IP地址、请求路径、用户是否已认证以及操作系统类型。
|
||||
|
||||
string ip = HttpContextExtension.GetClientUserIp(context.HttpContext);
|
||||
string url = context.HttpContext.Request.Path;
|
||||
var isAuthed = context.HttpContext.User.Identity.IsAuthenticated;
|
||||
string osType = context.HttpContext.Request.Headers["os"];
|
||||
|
||||
#endregion
|
||||
|
||||
#region 刷新JWT令牌验证
|
||||
//使用jwt token校验2020-11-21
|
||||
TokenModel loginUser = JwtUtil.GetLoginUser(context.HttpContext);
|
||||
if (loginUser != null)
|
||||
@ -44,7 +54,7 @@ namespace DOAN.Admin.WebApi.Filters
|
||||
var nowTime = DateTime.UtcNow;
|
||||
TimeSpan ts = loginUser.ExpireTime - nowTime;
|
||||
|
||||
//Console.WriteLine($"jwt到期剩余:{ts.TotalMinutes}分,{ts.TotalSeconds}秒");
|
||||
Console.WriteLine($"jwt到期剩余:{ts.TotalMinutes}分,{ts.TotalSeconds}秒");
|
||||
|
||||
var CK = "token_" + loginUser.UserId;
|
||||
if (!CacheHelper.Exists(CK) && ts.TotalMinutes < 5)
|
||||
@ -61,12 +71,21 @@ namespace DOAN.Admin.WebApi.Filters
|
||||
context.HttpContext.Response.Headers.Add("X-Refresh-Token", newToken);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region 处理未认证的情况
|
||||
|
||||
if (loginUser == null || !isAuthed)
|
||||
{
|
||||
string msg = $"请求访问[{url}]失败,无法访问系统资源";
|
||||
//logger.Info(msg);
|
||||
context.Result = new JsonResult(ApiResult.Error(ResultCode.DENY, msg));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user