/// <summary> /// 补单并关闭任务 /// </summary> /// <param name="tnum"></param> /// <returns></returns> public JsonResult RepairCloseJob(int Id) { JsonResult JR = new JsonResult() { ContentType = "text/html" }; if (Id.IsNullOrEmpty()) { JR.Data = new { error = 1, info = "参数有误" }; return(JR); } JobItem JobItem = Entity.JobItem.FirstOrNew(o => o.Id == Id); JobItem.State = 2; JobItem.RunState = 2; Entity.SaveChanges(); //查询订单状态 JobItem = JobItem.PayQuery(Entity); if (JobItem.State != 3) { JR.Data = new { error = 1, info = "当前订单补单失败!" }; return(JR); } JR = CloseJob(JobItem.TNum); return(JR); }
/// <summary> /// 补单并重启任务 /// </summary> /// <param name="Id"></param> /// <returns></returns> public JsonResult RepairRetSetItem(int Id) { JsonResult JR = new JsonResult() { ContentType = "text/html" }; if (Id.IsNullOrEmpty()) { JR.Data = new { error = 1, info = "参数有误" }; return(JR); } JobItem JobItem = Entity.JobItem.FirstOrDefault(n => n.Id == Id); if (JobItem == null) { JR.Data = new { error = 1, info = "交易不存在" }; return(JR); } if (JobItem.State != 4) { JR.Data = new { error = 1, info = "当前交易状态不能重启操作" }; return(JR); } JobOrders JobOrders = Entity.JobOrders.FirstOrDefault(n => n.TNum == JobItem.TNum); if (JobOrders == null) { JR.Data = new { error = 1, info = "订单不存在" }; return(JR); } if (JobOrders.State != 5 && JobOrders.State != 1) { JR.Data = new { error = 1, info = "当前订单状态不能重启操作" }; return(JR); } int count = Entity.JobItem.Count(n => n.TNum == JobItem.TNum && n.State != 3 && n.State != 4 && n.State != 0); if (count > 0) { JR.Data = new { error = 1, info = "本订单有" + count + "笔交易未达到最终状态,暂不可操作。" }; return(JR); } //这里要验证进出帐是否是平的 decimal D1 = Entity.JobItem.Where(n => n.TNum == JobItem.TNum && n.RunType == 1 && (n.State == 0 || n.State == 3 || (n.State == 4 && n.Id == Id))).Sum(n => n.RunMoney); decimal D2 = Entity.JobItem.Where(n => n.TNum == JobItem.TNum && n.RunType == 1 && (n.State == 0 || n.State == 3 || (n.State == 4 && n.Id == Id))).Sum(n => n.Poundage); decimal E1 = Entity.JobItem.Where(n => n.TNum == JobItem.TNum && n.RunType == 2 && (n.State == 0 || n.State == 3)).Sum(n => n.RunMoney); decimal A0 = D1 - D2 - E1; if (A0 < 0) { JR.Data = new { error = 1, info = "检查到任务不平帐" }; return(JR); } if (A0 > 0.5M) { JR.Data = new { error = 1, info = "检查到任务不平帐" }; return(JR); } count = Entity.JobItem.Count(n => n.TNum == JobItem.TNum && n.State == 0 && n.RunTime < DateTime.Now); if (count > 0) { JR.Data = new { error = 99, info = "当前需要调整后续费任务时间", item = JobItem.Id }; return(JR); } //增加检测排序执行时间 IList <JobItem> JobItemList = Entity.JobItem.Where(n => n.TNum == JobItem.TNum && n.State == 0).OrderBy(n => n.RunSort).ThenBy(n => n.Id).ToList(); if (JobItemList.Count == 0) { JR.Data = new { error = 1, info = "没有需要重启的交易" }; return(JR); } DateTime RT = JobItemList.First().RunTime; bool CanRun = true; foreach (var p in JobItemList.Skip(1)) { if (RT > p.RunTime) { JR.Data = new { error = 99, info = p.RunNum + "执行时间比前一笔交易慢" }; CanRun = false; break; } RT = p.RunTime; } if (!CanRun) { return(JR); } //查询订单状态 JobItem.State = 2; JobItem.RunState = 2; Entity.SaveChanges(); JobItem = JobItem.PayQuery(Entity); if (JobItem.State != 3) { JR.Data = new { error = 1, info = "当前订单补单失败!" }; return(JR); } Entity.SaveChanges(); Entity.ExecuteStoreCommand("Exec SP_JobReSet '" + JobItem.TNum + "',2"); JR.Data = new { error = 0, info = "处理成功" }; return(JR); }