public ServiceBaseResult Record(CheckinRecord rec) { var ret = new ServiceBaseResult(); try { ret.result = 1; ret.success = true; } catch (Exception exp) { ret.result = 1; ret.success = false; } return(ret); }
public async Task <Response <int> > CheckinAsync([FromBody] CheckinModel model) { var user = await userManager.GetUserAsync(User); if (user is null) { return(new Response <int> .Error.Unauthorized("未登录账户")); } var workPlan = await dbContext.Plans.FirstOrDefaultAsync(i => i.Id == model.WorkPlanId); if (workPlan is null) { return(new Response <int> .Error.NotFound("不存在此项工作")); } if (await dbContext.Records.AnyAsync(i => i.WorkPlanId == model.WorkPlanId && i.UserId == user.Id)) { return(new Response <int> .Error.BadRequest("已存在签到记录")); } if (workPlan.MaxUsers is > 0 && await dbContext.Records.CountAsync(i => i.WorkPlanId == model.WorkPlanId) > workPlan.MaxUsers) { return(new Response <int> .Error.BadRequest("超过最大允许的签到人数")); } var record = new CheckinRecord { Note = model.Note, UserId = user.Id, WorkPlanId = model.WorkPlanId, Overtime = model.Overtime, OvertimeMinutes = model.OvertimeMinutes }; await dbContext.Records.AddAsync(record); await dbContext.SaveChangesAsync(); return(record.Id); }
public void RunQueryThread() { //开启一个线程,不停的获取数据,然后查询数据 System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(async() => { var db = new ApplicationDbContext(); var rep = new CheckinRecordRepository(db); var repCamera = new CameraRepository(db); var repEmployee = new EmployeeRepository(db); var service = new UFaceService(); DateTime prev = DateTime.Now; while (true) { if (HasExit) { break; } try { if (dictCamera == null || dictCamera.Length == 0) { //查询数据库获取相机信息 var cameras = repCamera.Get(); dictCamera = cameras.ToArray(); } if (dictCamera == null) { System.Threading.Thread.Sleep(10); continue; } foreach (var v in dictCamera) { if (HasExit) { break; } Camera camera = v; int length = -1; int index = 0; string startTime = "0"; string endTime = "0"; var now = DateTime.Now; if (dictDateTime.ContainsKey(v.IP)) { //如果在deltaTime毫秒之内,不做处理 var delta = now - dictDateTime[v.IP]; if (delta.Minutes * 60000 + delta.Seconds * 1000 + delta.Milliseconds < deltaTime) { continue; } // startTime = dictDateTime[v.IP].ToString(@"yyyy-MM-dd hh\:mm\:ss"); endTime = now.ToString(@"yyyy-MM-dd hh\:mm\:ss"); dictDateTime[v.IP] = now; } else { dictDateTime.Add(v.IP, now); } var ret = await service.findRecords(camera, "-1", length, index, startTime, endTime); if (null != ret) { //把数据插入数据库 if (null != ret.records) { //这里面的操作都比较费时 if (HasExit) { break; } var lst = new List <CheckinRecord>(); foreach (var rec in ret.records) { //需要从数据库获取数据 var peoples = repEmployee.Get(x => x.Code != null && x.Code.CompareTo(rec.personID) == 0); Employee employee = peoples == null || peoples.Count() == 0 ? null : peoples.ElementAt(0); var cr = new CheckinRecord() { InnerID = rec.ID, IP = camera.IP, Path = rec.path, PersonId = rec.personID, Time = rec.time, Type = rec.type, State = rec.state, CheckinTime = Utils.TimeHelper.UnixTime2DateTime(rec.time), //需要从unix时间戳转化得到 }; if (employee != null) { cr.EmployeeID = employee.ID; } // lst.Add(cr); } rep.Add(lst.ToArray()); } } // System.Threading.Thread.Sleep(10); } } catch (Exception exp) { System.Diagnostics.Debug.WriteLine(exp); } System.Threading.Thread.Sleep(10); } })); thread.IsBackground = true; thread.Start(); }