diff --git a/DOAN.Admin.WebApi/Controllers/PBL/BigScreenController.cs b/DOAN.Admin.WebApi/Controllers/PBL/BigScreenController.cs
index 13afc3e..c00886d 100644
--- a/DOAN.Admin.WebApi/Controllers/PBL/BigScreenController.cs
+++ b/DOAN.Admin.WebApi/Controllers/PBL/BigScreenController.cs
@@ -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);
+ }
}
\ No newline at end of file
diff --git a/DOAN.Admin.WebApi/appsettings.Development.json b/DOAN.Admin.WebApi/appsettings.Development.json
index 9ecee7c..2b5af3b 100644
--- a/DOAN.Admin.WebApi/appsettings.Development.json
+++ b/DOAN.Admin.WebApi/appsettings.Development.json
@@ -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"
},
diff --git a/DOAN.Model/PBL/Dto/BIgScreenDto.cs b/DOAN.Model/PBL/Dto/BIgScreenDto.cs
deleted file mode 100644
index 2c43175..0000000
--- a/DOAN.Model/PBL/Dto/BIgScreenDto.cs
+++ /dev/null
@@ -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; }
-}
\ No newline at end of file
diff --git a/DOAN.Model/PBL/Dto/BIgScreenDtoLightPickupDto.cs b/DOAN.Model/PBL/Dto/BIgScreenDtoLightPickupDto.cs
new file mode 100644
index 0000000..3d5c016
--- /dev/null
+++ b/DOAN.Model/PBL/Dto/BIgScreenDtoLightPickupDto.cs
@@ -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; }
+}
\ No newline at end of file
diff --git a/DOAN.Model/PBL/Dto/StoragelocationDto.cs b/DOAN.Model/PBL/Dto/StoragelocationDto.cs
index e212fe4..5be60b7 100644
--- a/DOAN.Model/PBL/Dto/StoragelocationDto.cs
+++ b/DOAN.Model/PBL/Dto/StoragelocationDto.cs
@@ -1,52 +1,47 @@
+namespace DOAN.Model.PBL.Dto;
-namespace DOAN.Model.PBL.Dto
+///
+/// 料架表查询对象
+///
+public class StoragelocationQueryDto : PagerInfo
{
- ///
- /// 料架表查询对象
- ///
- public class StoragelocationQueryDto : PagerInfo
- {
- public string Partnumber { get; set; }
+ public string Partnumber { get; set; }
- public string RackCode { get; set; }
- }
+ public string RackCode { get; set; }
+}
+
+///
+/// 料架表输入输出对象
+///
+public class StoragelocationDto
+{
+ public int Id { get; set; }
+
+ public string RackCode { get; set; }
+
+ public int LayerNum { get; set; }
+
+ public string Partnumber { get; set; }
///
- /// 料架表输入输出对象
+ /// 最大容量
///
- 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; }
-
- ///
- /// 最大容量
- ///
-
- public int MaxCapacity { get; set; }
- public int? PackageNum { get; set; }
-
-
- ///
- /// 箱子数
- ///
- 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; }
+ ///
+ /// 箱子数
+ ///
+ 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; }
}
\ No newline at end of file
diff --git a/DOAN.Model/PBL/Storagelocation.cs b/DOAN.Model/PBL/Storagelocation.cs
index 6d6f2e7..183a018 100644
--- a/DOAN.Model/PBL/Storagelocation.cs
+++ b/DOAN.Model/PBL/Storagelocation.cs
@@ -42,7 +42,7 @@ namespace DOAN.Model.PBL
public int? PackageNum { get; set; }
///
- /// 箱子数
+ /// 是否亮灯
///
[SugarColumn(ColumnName = "is_light")]
public int? IsLight { get; set; }
diff --git a/DOAN.Service/PBL/BigScreenService.cs b/DOAN.Service/PBL/BigScreenService.cs
index 3841f8f..bb4f215 100644
--- a/DOAN.Service/PBL/BigScreenService.cs
+++ b/DOAN.Service/PBL/BigScreenService.cs
@@ -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, IBigScreenService
{
- [AppService(ServiceType = typeof(IBigScreenService), ServiceLifetime = LifeTime.Transient)]
- public class BigScreenService : BaseService, IBigScreenService
+ ///
+ /// 查询料架灯 亮和灭 情况
+ ///
+ ///
+ public List SearchShelfLightInfomation()
{
- ///
- /// 查询料架灯 亮和灭 情况
- ///
- ///
+ var result = new List();
- public List SearchShelfLightInfomation()
+ // 1 查询所有料架
+ var RackCodeArray = Context.Queryable().GroupBy(it => it.RackCode).Select(it => it.RackCode)
+ .ToArray();
+
+ var DataSoure = Context.Queryable().ToList();
+ //2 查询每个料架层
+ for (var i = 0; i < RackCodeArray.Length; i++)
{
- List result = new List();
-
- // 1 查询所有料架
- string[] RackCodeArray= Context.Queryable().GroupBy(it=>it.RackCode).Select(it=>it.RackCode).ToArray();
+ var RackCodeObject = new BIgScreenDtoLightPickupDto();
+ RackCodeObject.RackCode = RackCodeArray[i];
- List DataSoure= Context.Queryable().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 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 SearchfeedingMaterialInfomation()
+ {
+ var result = new List();
+
+ // 1 查询所有料架
+ var RackCodeArray = Context.Queryable().GroupBy(it => it.RackCode).Select(it => it.RackCode)
+ .ToArray();
+
+ var DataSoure = Context.Queryable().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();
+
+ }
+
+}
\ No newline at end of file
diff --git a/DOAN.Service/PBL/IService/IBigScreenService.cs b/DOAN.Service/PBL/IService/IBigScreenService.cs
index df4a165..05e9a9a 100644
--- a/DOAN.Service/PBL/IService/IBigScreenService.cs
+++ b/DOAN.Service/PBL/IService/IBigScreenService.cs
@@ -5,7 +5,8 @@ namespace DOAN.Service.PBL.IService;
public interface IBigScreenService : IBaseService
{
- List SearchShelfLightInfomation();
-
-
+ List SearchShelfLightInfomation();
+
+ List SearchfeedingMaterialInfomation();
+
}
\ No newline at end of file
diff --git a/DOAN.ServiceCore/Filters/VerifyAttribute.cs b/DOAN.ServiceCore/Filters/VerifyAttribute.cs
index 7557d8a..7958088 100644
--- a/DOAN.ServiceCore/Filters/VerifyAttribute.cs
+++ b/DOAN.ServiceCore/Filters/VerifyAttribute.cs
@@ -24,19 +24,29 @@ namespace DOAN.Admin.WebApi.Filters
///
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
+
}
}
}