using CirculateTool; 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; /// /// 箱式线读取扫码信息 /// [Circulation] public class ReadScanCode(AppRouterMethodDao routerMethodDao, ConveyOperation conveyOperation, HistoryConveyDataHander historyConveyDataHander, AppScanRecordDao scanRecordDao, DataBaseData dataBaseData) { private static List? routers; /// /// 读取扫码数据 /// /// [Circulation("读取扫码数据", 300)] public bool ReadData() { if(routers == default) { routers = routerMethodDao.Query(new AppRouterMethod() { RouterStatus = (int)TrueFalseEnum.TRUE }); return true; } List 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}"); } scanRecordDao.Insert(new AppScanRecord() { RecordId = dataBaseData.GetNewUUID2(), ScanId = router.Area, Code = code, ScanTime = DateTime.Now }); })); } Task.WaitAll([.. tasks]); return true; } }