using BaseOUDAL; using YLErp.Core.DBModels; using YLErp.Modules.TagModule.Dto; using YLErp.Modules.TaskEventModule.Dto; using YLErp.Modules.TaskEventModule.Enum; namespace YLErp.Modules.TaskEventModule { /// /// 定时任务事件服务 /// public class TaskEventService : YLBaseService { public TaskEventService(OptUserInfo userInfo) : base(userInfo) { } public task_event GetWaitExecuteTaskEventByEventType(TaskEventType eventType) { return DbContext.task_event.AsNoTracking().FirstOrDefault(p => p.EventType == (int)eventType && (p.Status == (int)TaskEventStatus.WaitExcute || p.Status == (int)TaskEventStatus.ExcuteFaliure)); } public SearchListResult GetGuoXinDataPushEventLogs(SearchTaskEventRequest req) { var predicate = PredicateBuilder.True(); predicate = predicate.And(p => p.EventType == (int)TaskEventType.ThirdPartyDataPush); if (string.IsNullOrEmpty(req.sidx)) { req.sidx = "id"; req.sord = "desc"; } var result= DbContext.task_event.Where(predicate).Select(p => new GuoXinDataPushEventLogDto { id = p.id, EventArgs = p.EventArgs, Status = p.Status, ErrorMsg = p.ErrorMsg, OptName = p.OptName, OptDate = p.OptDate }).ToSearchList(req); if (result != null&& result.rows.Any()) { result.rows?.ToList().ForEach(p => { var argDto = JsonHelper.Deserialize(p.EventArgs); p.StartDate = argDto.StartDate; p.EndDate = argDto.EndDate; }); } return result; } /// /// 设置国信金阳数据推送任务 /// /// /// public AddGuoXinPushDataTaskResponse AddGuoXinPushDataTask(GuoXinJinYangPushDataTaskArg arg) { AddGuoXinPushDataTaskResponse response = new AddGuoXinPushDataTaskResponse() { Success = true }; if (arg.StartDate > arg.EndDate) { response.Success = false; response.ErrorMsg = "日期选择区间有误,开始时间不能大于结束时间"; return response; } task_event task = new task_event { EventType=(int)TaskEventType.ThirdPartyDataPush, EventArgs=JsonHelper.Serialize(arg), Status=(int)TaskEventStatus.WaitExcute }; SetDBModelOpt(task); DbContext.task_event.Add(task); DbContext.SaveChanges(); response.Id = task.id; response.PredictTime = (int)((arg.EndDate - arg.StartDate).TotalDays + 1) * 30 + 5; return response; } /// /// 设置定时任务处于执行中 /// /// public void SetTaskEventIsExcuting(int id) { var task = DbContext.task_event.FirstOrDefault(p => p.id==id); if (task == null) { return; } task.Status = (int)TaskEventStatus.Excuting; SetDBModelOpt(task); DbContext.SaveChanges(); } /// /// 设置定时任务处于完成 /// /// public void SetTaskEventIsComplete(int id) { var task = DbContext.task_event.FirstOrDefault(p => p.id == id); if (task == null) { return; } task.Status = (int)TaskEventStatus.Complete; task.ErrorMsg = ""; //SetDBModelOpt(task); DbContext.SaveChanges(); } /// /// 删除执行成功的定时任务 /// /// public void DeleteExcuteSuccessTaskEvent(int id) { var task = DbContext.task_event.FirstOrDefault(p => p.id == id); if (task == null) { return; } DbContext.task_event.Remove(task); DbContext.SaveChanges(); } /// /// 设置定时任务事件执行失败 /// /// /// public void SetTaskEventIsExcuteFaliure(int id,string errorMsg) { var task = DbContext.task_event.FirstOrDefault(p => p.id == id); if (task == null) { return; } task.Status = (int)TaskEventStatus.ExcuteFaliure; SetDBModelOpt(task); task.ErrorMsg= errorMsg; DbContext.SaveChanges(); } } }