60 lines
2.2 KiB
C#
60 lines
2.2 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 historyConveyDataHandler, AppScanRecordDao scanRecordDao, DataBaseData dataBaseData)
|
|||
|
|
{
|
|||
|
|
private static List<AppRouterMethod>? _routers;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 读取扫码数据
|
|||
|
|
/// </summary>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[Circulation("读取扫码数据", 300)]
|
|||
|
|
public bool ReadData()
|
|||
|
|
{
|
|||
|
|
if(_routers == null)
|
|||
|
|
{
|
|||
|
|
_routers = routerMethodDao.Query(new AppRouterMethod() { RouterStatus = (int)TrueFalseEnum.TRUE });
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
List<Task> tasks = [];
|
|||
|
|
tasks.AddRange(_routers.Select(router => Task.Factory.StartNew(() =>
|
|||
|
|
{
|
|||
|
|
var (readErrText, scanOk, code) = conveyOperation.ReadScanInfo(router.Area);
|
|||
|
|
if (!string.IsNullOrEmpty(readErrText))
|
|||
|
|
{
|
|||
|
|
ConsoleLog.Exception($"【异常】读取扫码:{router.Area} 数据异常,信息:{readErrText}");
|
|||
|
|
Thread.Sleep(5000);
|
|||
|
|
return; // 不读了,估计网断了
|
|||
|
|
}
|
|||
|
|
if (scanOk != (short)TrueFalseEnum.TRUE) return;
|
|||
|
|
var clearErrText = conveyOperation.ClearScanStatus(router.Area);
|
|||
|
|
if (!string.IsNullOrEmpty(clearErrText))
|
|||
|
|
{
|
|||
|
|
ConsoleLog.Exception($"【异常】扫码:{router.Area} 清理读码信号异常,信息:{clearErrText}");
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
ConsoleLog.Success($"扫码:{router.Area} 清理读码信号成功,点位:{router.Area}");
|
|||
|
|
}
|
|||
|
|
historyConveyDataHandler.GetData("-", code, router.Area ?? "");
|
|||
|
|
scanRecordDao.Insert(new AppScanRecord() { RecordId = dataBaseData.GetNewUUID2(), ScanId = router.Area, Code = code, ScanTime = DateTime.Now });
|
|||
|
|
})));
|
|||
|
|
Task.WaitAll([.. tasks]);
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|