Files
wcs/WCS.BLL/Services/Service/SelfCheckService.cs
2024-12-10 19:09:43 +08:00

128 lines
4.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCS.BLL.DbModels.Task;
using WCS.BLL.Manager;
using WCS.BLL.Services.IService;
using WCS.DAL.Db;
using WCS.DAL.DbModels;
using WCS.Model;
using WCS.Model.ApiModel.Home;
using WCS.Model.ApiModel.SelfCheck;
using WCS.Model.WebSocketModel;
namespace WCS.BLL.Services.Service
{
public class SelfCheckService : ISelfCheckService
{
public async Task<ResponseBase> StartSelfCheckByShelfCode(StartSelfCheckByShelfCodeRequest request)
{
//获取货架
var shelfs = ShelfManager.Shelves
.Where(t => request.ShelfCodes.Contains(t.ShelfCode))
.ToList();
if (shelfs.Count < request.ShelfCodes.Count)
{
foreach (var shelf in shelfs)
{
request.ShelfCodes.RemoveAll(t => t == shelf.ShelfCode);
}
return new ResponseCommon()
{
Code = 201,
Message = $"货架{string.Join(",", request.ShelfCodes)}不存在!",
};
}
foreach (var shelf in shelfs)
{
shelf.ShelfCheck();
}
return new ResponseCommon()
{
Code = 200,
Message = $"货架{string.Join(",", request.ShelfCodes)}已开始自检!",
};
}
public async Task<ResponseBase> StartSelfCheckByGroupName(List<string> GroupNames)
{
if (GroupNames == null || GroupNames.Count == 0)
{
return new ResponseCommon()
{
Code = 201,
Message = $"参数为空!",
};
}
//获取货架
var shelfs = ShelfManager.Shelves
.Where(t => GroupNames.Contains(t.GroupName))
.ToList();
var cleintIps = shelfs.Select(t => t.ClientIp).Distinct().ToList();
foreach (var ip in cleintIps)
{
var currentIdShelfs = shelfs.Where(t => t.ClientIp == ip)
.Where(t => t.CurrentMode == TaskModeEnum.)
.ToList();
Task.Run(() =>
{
foreach (var shelf in currentIdShelfs)
{
Task.Run(() =>
{
var warningModel = new WebSocketMessageModel()
{
IsWarning = false,
ClientIsReceived = true,
WarningType = WarningTypeEnum.,
StoreId = 0,
StoreCode = "",
ShelfCode = shelf.ShelfCode,
ShelfId = shelf.ShelfId,
ClientIp = shelf.WebSocketIpAddress,
WarningMessage = $"货架【{shelf.ShelfCode}】开始自检"
};
WarningManager.SendWarning(warningModel);
});
shelf.ShelfCheck();
//Thread.Sleep(8);
Task.Run(() =>
{
var warningModel = new WebSocketMessageModel()
{
IsWarning = false,
ClientIsReceived = true,
WarningType = WarningTypeEnum.,
StoreId = 0,
StoreCode = "",
ShelfCode = shelf.ShelfCode,
ShelfId = shelf.ShelfId,
ClientIp = shelf.WebSocketIpAddress,
WarningMessage = $"货架【{shelf.ShelfCode}】自检命令发送完毕"
};
WarningManager.SendWarning(warningModel);
});
Thread.Sleep(8);
}
});
}
return new ResponseCommon()
{
Code = 200,
Message = $"已成功开始自检!",
};
}
}
}