/// <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);
        }