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

63 lines
2.4 KiB
C#

using CirculateTool.Attribute;
using WcsMain.Business.Convey.HistoryDataHandler;
using WcsMain.DataBase.Dao;
using WcsMain.DataBase.TableEntity;
using WcsMain.DataService;
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, AppScanRecordDao scanRecordDao, DataBaseData dataBaseData)
{
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)
{
tasks.Add(Task.Factory.StartNew(() =>
{
(var readErrText, var scanOk, var code) = conveyOperation.ReadScanInfo(router.Area);
if (!string.IsNullOrEmpty(readErrText))
{
ConsoleLog.Exception($"【异常】读取扫码:{router.Area} 数据异常,信息:{readErrText}");
Thread.Sleep(5000);
return; // 不读了,估计网断了
}
if (scanOk != (short)TrueFalseEnum.TRUE) { return; }
string clearErrText = conveyOperation.ClearScanStatus(router.Area);
if (!string.IsNullOrEmpty(clearErrText))
{
ConsoleLog.Exception($"【异常】扫码:{router.Area} 清理读码信号异常,信息:{clearErrText}");
}
else
{
ConsoleLog.Success($"扫码:{router.Area} 清理读码信号成功,点位:{router.Area}");
}
historyConveyDataHander.GetData("-", code, router.Area ?? "");
scanRecordDao.Insert(new AppScanRecord() { RecordId = dataBaseData.GetNewUUID2(), ScanId = router.Area, Code = code, ScanTime = DateTime.Now });
}));
}
Task.WaitAll([.. tasks]);
return true;
}
}