wcs_server_kate_suzhou/WcsMain/Business/CirculationTask/Convey/ReadScanCode.cs

67 lines
2.2 KiB
C#

using CirculateTool;
using WcsMain.Business.Convey.HistoryDataHandler;
using WcsMain.DataBase.Dao;
using WcsMain.DataBase.TableEntity;
using WcsMain.Enum.General;
using WcsMain.EquipOperation.Convey;
namespace WcsMain.Business.CirculationTask.Convey;
/// <summary>
/// 箱式线读取扫码信息
/// </summary>
[Circulation]
public class ReadScanCode(AppRouterMethodDao routerMethodDao, ConveyOperation conveyOperation, HistoryConveyDataHander historyConveyDataHander)
{
private readonly ConveyOperation _conveyOperation = conveyOperation;
private readonly AppRouterMethodDao _routerMethodDao = routerMethodDao;
private readonly HistoryConveyDataHander _historyConveyDataHander = historyConveyDataHander;
private static List<AppRouterMethod>? routers;
/// <summary>
/// 读取扫码数据
/// </summary>
/// <returns></returns>
[Circulation("读取扫码数据", 300)]
public bool ReadData()
{
if(routers == default)
{
routers = _routerMethodDao.Query(new AppRouterMethod() { RouterStatus = (int)TrueFalseEnum.TRUE });
return true;
}
List<Task> tasks = [];
foreach(AppRouterMethod router in routers)
{
(var readErrText, var scanOk, var code) = _conveyOperation.ReadScanInfo(router.Area);
if(!string.IsNullOrEmpty(readErrText))
{
ConsoleLog.Exception($"【异常】读取扫码:{router.Area} 数据异常,信息:{readErrText}");
Thread.Sleep(5000);
return true; // 不读了,估计网断了
}
if(scanOk != (int)TrueFalseEnum.TRUE) { continue; }
tasks.Add(Task.Factory.StartNew(() =>
{
_historyConveyDataHander.GetData("-", code, router.Area ?? "");
string clearErrText = _conveyOperation.ClearScanStatus(router.Area);
if(!string.IsNullOrEmpty(clearErrText))
{
ConsoleLog.Exception($"【异常】扫码:{router.Area} 清理读码信号异常,信息:{clearErrText}");
}
}));
}
Task.WaitAll([.. tasks]);
return true;
}
}