public ActionResult Edit(JobOrders JobOrders) { if (JobOrders.Id != 0) { JobOrders = Entity.JobOrders.FirstOrDefault(n => n.Id == JobOrders.Id); } if (JobOrders == null) { ViewBag.ErrorMsg = "数据不存在"; return(View("Error")); } if (!IsBelongToAgent(JobOrders.AgentId)) { ViewBag.ErrorMsg = AgentLanguage.Surmount; return(View("Error")); } ViewBag.OrderProfitLog = Entity.OrderProfitLog.FirstOrNew(o => o.LogType == 2 && o.Agent == this.AdminUser.AgentId && o.TNum == JobOrders.TNum); ViewBag.SysAdmin = Entity.SysAdmin.FirstOrNew(n => n.Id == JobOrders.AgentId); ViewBag.Users = Entity.Users.FirstOrDefault(o => o.Id == JobOrders.UId); //前端没调用调出来做什么?By Lin 2017-12-19 //ViewBag.JobPayWay = Entity.JobPayWay.FirstOrDefault(o => o.Id == JobOrders.PayWay); ViewBag.JobOrders = JobOrders; if (Request.UrlReferrer != null) { Session["Url"] = Request.UrlReferrer.ToString(); } return(View()); }
public ActionResult IndexOrderProfitLog(string tnum) { JobOrders Orders = Entity.JobOrders.FirstOrDefault(n => n.TNum == tnum); if (Orders == null) { ViewBag.ErrorMsg = "查询的交易不存在"; return(View("Error")); } var query = this.Entity.OrderProfitLog.Where(o => o.TNum == tnum); if (Orders.AgentId == this.BasicAgent.Id) { query = query.Where(o => (o.Agent == this.BasicAgent.Id || o.LogType == 1)); } else { query = query.Where(o => o.Agent == this.BasicAgent.Id); } var OrderProfitLog = query.OrderByDescending(o => o.Id).ToList(); ViewBag.OrderProfitLog = OrderProfitLog; var UIds = OrderProfitLog.Select(o => o.UId).ToList(); var UserNameList = this.Entity.Users.Where(o => UIds.Contains(o.Id)).ToDictionary(o => o.Id, o => o.TrueName); ViewBag.UserNameList = UserNameList; var SysAgent = OrderProfitLog.Select(o => o.Agent).ToList(); var SysAgentList = this.Entity.SysAgent.Where(o => SysAgent.Contains(o.Id)).ToDictionary(o => o.Id, o => o.Name); ViewBag.SysAgentList = SysAgentList; return(View()); }
public async Task <IActionResult> GetJobOrders() { using (SqlConnection con = new SqlConnection(ConnectionString)) { con.Open(); try { JobOrders jobs = await TempWorksAPI.SearchJobOrdersFromTempworksAsync(); foreach (JobOrder job in jobs.data) { try { JobDetail detail = await TempWorksAPI.GetJobOrderDetailFromTempworksAsync(job.orderId); DataLayer.TempWorks.AddJobOrderProc(con, detail, true); } catch (Exception ex) { _context.SaveErrorProc(con, "Error JobOrder " + job.orderId.ToString(), ex.Message); } } } catch (Exception ex) { _context.SaveErrorProc(con, "Error JobOrder", ex.Message); return(BadRequest(ex.Message)); } } return(Ok()); }
public ActionResult Index(JobOrders JobOrders, EFPagingInfo <JobOrders> p, DateTime?STime, DateTime?ETime, int IsFirst = 0) { IPageOfItems <JobOrders> JobOrdersList = null; if (IsFirst == 0) { JobOrders.State = 99; JobOrders.AgentState = 99; JobOrdersList = new PageOfItems <JobOrders>(new List <JobOrders>(), 0, 10, 0, new Hashtable()); } else { p = this.Condition(JobOrders, p, STime, ETime); JobOrdersList = Entity.Selects <JobOrders>(p); } List <int> UId = JobOrdersList.Select(o => o.UId).Distinct().ToList(); ViewBag.UsersList = Entity.Users.Where(n => n.State == 1 && UId.Contains(n.Id)).ToList(); ViewBag.JobOrdersList = JobOrdersList; ViewBag.JobOrders = JobOrders; ViewBag.Edit = this.checkPower("Edit"); ViewBag.ETime = ETime; ViewBag.STime = STime; ViewBag.ExcelExport = this.checkPower("ExcelExport"); ViewBag.SplitMoney = this.checkPower("SplitMoney"); ViewBag.JobPayWayList = Entity.JobPayWay.ToList(); return(View()); }
public ActionResult Index(JobOrders JobOrders, EFPagingInfo <JobOrders> p, bool?IsShowSupAgent, int?LowerLevel, DateTime?STime, DateTime?ETime, int IsFirst = 0) { IPageOfItems <JobOrders> JobOrdersList = null; if (IsShowSupAgent == null) { IsShowSupAgent = false; } ViewBag.BasicAgent = BasicAgent; ViewBag.IsAll = IsAll; LowerLevel = LowerLevel == null ? 0 : LowerLevel; if (IsFirst == 0) { JobOrders.State = 99; JobOrdersList = new PageOfItems <JobOrders>(new List <JobOrders>(), 0, 10, 0, new Hashtable()); } else { p = this.Condition(JobOrders, p, STime, ETime); IList <SysAgent> SysAgentList = null; if ((bool)IsShowSupAgent) { IList <int> UID = new List <int>(); if (LowerLevel != 0) { SysAgent LowerLevelAgent = Entity.SysAgent.Where(s => s.Id == LowerLevel).FirstOrNew(); SysAgentList = LowerLevelAgent.GetSupAgent(Entity, true); } else { SysAgentList = BasicAgent.GetSupAgent(Entity, true);//获取所有下级代理商信息 } UID = SysAgentList.Select(o => o.Id).ToList(); p.SqlWhere.Add(f => UID.Contains(f.AgentId)); } else { p.SqlWhere.Add(f => f.AgentId == BasicAgent.Id);//读取全部分支机构 } JobOrdersList = Entity.Selects <JobOrders>(p); } ViewBag.JobOrdersList = JobOrdersList; ViewBag.JobOrders = JobOrders; ViewBag.Edit = this.checkPower("Edit"); ViewBag.ETime = ETime; ViewBag.STime = STime; ViewBag.IsShowSupAgent = IsShowSupAgent; ViewBag.LowerLevel = LowerLevel; List <int> UId = JobOrdersList.Select(o => o.UId).Distinct().ToList(); ViewBag.UsersList = Entity.Users.Where(n => n.State == 1 && UId.Contains(n.Id)).ToList(); return(View()); }
/// <summary> /// 统计 /// </summary> /// <returns></returns> public ActionResult IndexStats(JobOrders JobOrders, EFPagingInfo <JobOrders> p, DateTime?STime, DateTime?ETime) { p = this.Condition(JobOrders, p, STime, ETime); var Iquery = this.Entity.JobOrders.AsQueryable(); foreach (var item in p.SqlWhere) { Iquery = Iquery.Where(item); } ViewBag.SumAmoney = Iquery.Sum(o => (decimal?)o.TotalMoney) ?? 0m; ViewBag.SumPoundage = Iquery.Sum(o => (decimal?)o.Poundage) ?? 0m; ViewBag.Count = Iquery.Count(); return(this.View()); }
/// <summary> /// 取消任务 /// </summary> /// <param name="tnum"></param> /// <returns></returns> public JsonResult CancelJob(string tnum, string Rs) { JsonResult JR = new JsonResult() { ContentType = "text/html" }; if (tnum.IsNullOrEmpty() || Rs.IsNullOrEmpty()) { JR.Data = new { error = 1, info = "参数有误" }; return(JR); } Entity.ExecuteStoreCommand("Exec SP_JobReSet '" + tnum + "',1"); JobOrders baseJobOrders = Entity.JobOrders.FirstOrNew(o => o.TNum == tnum); if (baseJobOrders == null) { JR.Data = new { error = 1, info = "订单不存在" }; return(JR); } if (baseJobOrders.State != 3) { JR.Data = new { error = 1, info = "当前订单状态不能取消操作" }; return(JR); } bool IsItemRun = Entity.JobItem.Any(o => o.TNum == baseJobOrders.TNum && o.State == 2); if (IsItemRun) { JR.Data = new { error = 1, info = "子订单有正在执行中的状态,不能执行该操作" }; return(JR); } baseJobOrders.Remark = Rs + ",时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); baseJobOrders.State = 5; Entity.SaveChanges(); //取消所有待执行订单 Entity.ExecuteStoreCommand("Update JobItem Set State=0 Where TNum='" + baseJobOrders.TNum + "' and State=1"); //重新统计成功与失败后金额 if (baseJobOrders.Amount >= 1) { JR = CloseJob(baseJobOrders.TNum); return(JR); } JR.Data = new { error = 0, info = "取消订单成功!" }; return(JR); }
private EFPagingInfo <JobOrders> Condition(JobOrders JobOrders, EFPagingInfo <JobOrders> p, DateTime?STime, DateTime?ETime) { #region 筛选条件 if (!JobOrders.PayWay.IsNullOrEmpty()) { p.SqlWhere.Add(o => o.PayWay == JobOrders.PayWay); } if (!JobOrders.TNum.IsNullOrEmpty()) { if (JobOrders.UId == 1) { p.SqlWhere.Add(f => f.TNum == JobOrders.TNum); } else { IList <Users> UList = Entity.Users.Where(n => n.TrueName.Contains(JobOrders.TNum) || n.NeekName.Contains(JobOrders.TNum) || n.UserName == JobOrders.TNum).ToList(); List <int> UIds = new List <int>(); foreach (var pp in UList) { UIds.Add(pp.Id); } p.SqlWhere.Add(f => UIds.Contains(f.UId)); } } if (!STime.IsNullOrEmpty() && !ETime.IsNullOrEmpty()) { DateTime ETime_temp = new DateTime(ETime.Value.Year, ETime.Value.Month, ETime.Value.Day, 23, 59, 59, 999); if (JobOrders.PayState == 1) { p.SqlWhere.Add(f => f.AddTime >= STime && f.AddTime <= ETime_temp); } else { p.SqlWhere.Add(f => f.PayTime >= STime && f.PayTime <= ETime_temp); } } if (JobOrders.State != 99) { p.SqlWhere.Add(f => f.State == JobOrders.State); } #endregion //p.SqlWhere.Add(o => o.AgentId == BasicAgent.Id); p.OrderByList.Add("Id", "DESC"); return(p); }
public ActionResult IndexJobOrders(string TNum) { JobOrders JobOrders = Entity.JobOrders.FirstOrDefault(n => n.TNum == TNum); if (JobOrders == null) { ViewBag.ErrorMsg = "数据不存在"; return(View("Error")); } if (!IsBelongToAgent(JobOrders.AgentId)) { ViewBag.ErrorMsg = AgentLanguage.Surmount; return(View("Error")); } var JobItemList = this.Entity.JobItem.Where(o => o.TNum == TNum).OrderBy(o => o.RunTime).ToList(); ViewBag.JobItemList = JobItemList; return(View()); }
public ActionResult Edit(JobOrders JobOrders) { JobOrders = Entity.JobOrders.FirstOrDefault(n => n.TNum == JobOrders.TNum); if (JobOrders == null) { ViewBag.ErrorMsg = "数据不存在"; return(View("Error")); } ViewBag.JobOrders = JobOrders; ViewBag.Users = Entity.Users.FirstOrNew(n => n.Id == JobOrders.UId); //ViewBag.Agents = Entity.Agents.FirstOrNew(n => n.Id == JobOrders.AgentId); //ViewBag.SysAdmin = Entity.SysAdmin.FirstOrNew(n => n.Id == JobOrders.AgentId); ViewBag.JobPayWay = Entity.JobPayWay.FirstOrDefault(o => o.Id == JobOrders.PayWay); ViewBag.UserTrailIndex = this.checkPower("UserTrail", "Index"); if (Request.UrlReferrer != null) { Session["Url"] = Request.UrlReferrer.ToString(); } return(View("../JobOrders/Edit")); }
public static async System.Threading.Tasks.Task <JobOrders> SearchJobOrdersFromTempworksAsync() { using (HttpClient client = new HttpClient()) { // Call asynchronous network methods in a try/catch block to handle exceptions client.DefaultRequestHeaders.Add("x-tw-token", APIKey); var result = await client.GetAsync("https://api.ontempworks.com/search/joborders/?skip=0&take=100000"); //if(result.StatusCode!=System.Net.HttpStatusCode.OK) //throw new Exception(result.Content.) //string contnet = await result.Content.ReadAsStringAsync(); JobOrders jobs = await result.Content.ReadFromJsonAsync <JobOrders>(); // Above three lines can be replaced with new helper method below // string responseBody = await client.GetStringAsync(uri); return(jobs); } }
public ActionResult IndexJobOrders(string TNum) { JobOrders JobOrders = Entity.JobOrders.FirstOrDefault(n => n.TNum == TNum); if (JobOrders == null) { ViewBag.ErrorMsg = "数据不存在"; return(View("Error")); } ViewBag.JobOrders = JobOrders; var JobItemList = this.Entity.JobItem.Where(o => o.TNum == TNum).OrderBy(o => o.RunTime).ToList(); ViewBag.PaywayList = Entity.JobPayWay.ToList(); ViewBag.UsersCardList = Entity.UserCard.Where(o => o.UId == JobOrders.UId).ToList(); ViewBag.JobItemList = JobItemList; ViewBag.CloseJob = this.checkPower("CloseJob"); ViewBag.RetSetItem = this.checkPower("RetSetItem"); ViewBag.RepairCloseJob = this.checkPower("RepairCloseJob"); ViewBag.RepairRetSetItem = this.checkPower("RepairRetSetItem"); ViewBag.CancelJob = this.checkPower("CancelJob"); ViewBag.SetTimeSave = this.checkPower("SetTimeSave"); SP_JobReSet SP_JobReSet = new SP_JobReSet(); Dictionary <string, string> dicChar = new Dictionary <string, string>(); dicChar.Add("TNum", TNum); dicChar.Add("Type", "3"); IList <SP_JobReSet> SP_JobReSetList = Entity.GetSPExtensions <SP_JobReSet>("SP_JobReSet", dicChar); if (SP_JobReSetList.Count > 0) { SP_JobReSet = SP_JobReSetList.FirstOrNew(); } ViewBag.SP_JobReSet = SP_JobReSet; return(View()); }
public ActionResult Edit(JobOrders JobOrders) { if (JobOrders.Id != 0) { JobOrders = Entity.JobOrders.FirstOrDefault(n => n.Id == JobOrders.Id); } else if (!JobOrders.TNum.IsNullOrEmpty()) { JobOrders = Entity.JobOrders.FirstOrDefault(n => n.TNum == JobOrders.TNum); } if (JobOrders == null) { ViewBag.ErrorMsg = "数据不存在"; return(View("Error")); } ViewBag.Users = Entity.Users.FirstOrDefault(o => o.Id == JobOrders.UId); ViewBag.JobPayWay = Entity.JobPayWay.FirstOrDefault(o => o.Id == JobOrders.PayWay); ViewBag.JobOrders = JobOrders; if (Request.UrlReferrer != null) { Session["Url"] = Request.UrlReferrer.ToString(); } return(View()); }
private DataObj CloseJob(string tnum) { DataObj DataObj = new DataObj(); if (tnum.IsNullOrEmpty()) { DataObj.OutError("1000"); return(DataObj); } //重新统计成功与失败后金额 Entity.ExecuteStoreCommand("Exec SP_JobReSet '" + tnum + "',1"); JobOrders baseJobOrders = Entity.JobOrders.FirstOrDefault(n => n.TNum == tnum); if (baseJobOrders == null) { DataObj.OutError("1000"); return(DataObj); } if (baseJobOrders.State != 5) { DataObj.Msg = "当前订单状态不能结清操作"; DataObj.OutError("1000"); return(DataObj); } if (baseJobOrders.Amount < 1) { DataObj.Msg = "本订单余额小于0无需再次清算"; DataObj.OutError("1000"); return(DataObj); } int count = Entity.JobItem.Count(n => n.TNum == tnum && n.State != 3 && n.State != 4 && n.State != 0); if (count > 0) { DataObj.Msg = "本订单有" + count + "笔交易未达到最终状态,暂不可操作。"; DataObj.OutError("1000"); return(DataObj); } DateTime Now = DateTime.Now; DateTime RunTime = Now; if (RunTime.Hour < 12) { RunTime.AddHours(12 - RunTime.Hour); } //生成多一单还款计划就OK了 JobItem JobItem = new JobItem(); JobItem.UId = baseJobOrders.UId; JobItem.TNum = baseJobOrders.TNum; JobItem.RunMoney = baseJobOrders.Amount; JobItem.RunTime = RunTime; JobItem.Poundage = 0; JobItem.RunGet = JobItem.RunMoney * baseJobOrders.CashRate; if (JobItem.RunGet < baseJobOrders.CashMin) { JobItem.RunGet = baseJobOrders.CashMin; } if (JobItem.RunGet > baseJobOrders.CashMax) { JobItem.RunGet = baseJobOrders.CashMax; } JobItem.RunGet = JobItem.RunGet.Ceiling();//通道成本 JobItem.AgentGet = 0; //利润=用户手续费-代理分润-通道成本 JobItem.HFGet = JobItem.Poundage - JobItem.AgentGet - JobItem.RunGet; JobItem.State = 1; JobItem.AddTime = Now; JobItem.RunType = 2; JobItem.RunState = 0; JobItem.PayWay = baseJobOrders.CashWay; JobItem.UserCardId = baseJobOrders.UserCardId; JobItem.Remark = "任务失败退回剩余金额"; JobItem.RunSort = 9999; Entity.JobItem.AddObject(JobItem); Entity.SaveChanges(); DataObj.Code = "0000"; return(DataObj); }
/// <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); }
/// <summary> /// 重启任务 /// </summary> /// <param name="Id"></param> /// <param name="RunTime"></param> /// <returns></returns> public JsonResult RetSetItem(int Id, DateTime RunTime) { JsonResult JR = new JsonResult() { ContentType = "text/html" }; if (Id.IsNullOrEmpty()) { JR.Data = new { error = 1, info = "参数有误" }; return(JR); } JobItem OldItem = Entity.JobItem.FirstOrDefault(n => n.Id == Id); if (OldItem == null) { JR.Data = new { error = 1, info = "交易不存在" }; return(JR); } if (OldItem.State != 4) { JR.Data = new { error = 1, info = "当前交易状态不能重启操作" }; return(JR); } JobOrders JobOrders = Entity.JobOrders.FirstOrDefault(n => n.TNum == OldItem.TNum); if (JobOrders == null) { JR.Data = new { error = 1, info = "订单不存在" }; return(JR); } if (JobOrders.State != 5) { JR.Data = new { error = 1, info = "当前订单状态不能重启操作" }; return(JR); } int count = Entity.JobItem.Count(n => n.TNum == OldItem.TNum && n.State != 3 && n.State != 4 && n.State != 0); if (count > 0) { JR.Data = new { error = 1, info = "本订单有" + count + "笔交易未达到最终状态,暂不可操作。" }; return(JR); } string Remark = "重启自" + OldItem.RunNum; //复制多一单还款计划 JobItem JobItem = Entity.JobItem.FirstOrDefault(n => n.TNum == OldItem.TNum && n.Remark == Remark && n.State == 0 && n.RunState == 0); if (JobItem == null) { JobItem = new JobItem(); JobItem.UId = OldItem.UId; JobItem.TNum = OldItem.TNum; JobItem.RunNum = OldItem.RunNum; JobItem.RunMoney = OldItem.RunMoney; JobItem.Poundage = OldItem.Poundage; JobItem.AgentGet = OldItem.AgentGet; JobItem.HFGet = OldItem.HFGet; JobItem.RunGet = OldItem.RunGet; JobItem.RunType = OldItem.RunType; JobItem.PayWay = OldItem.PayWay; JobItem.UserCardId = OldItem.UserCardId; JobItem.RunSort = OldItem.RunSort; JobItem.RunTime = RunTime; JobItem.RunState = 0; JobItem.State = 0; JobItem.AddTime = DateTime.Now; JobItem.RunedTime = null; JobItem.Remark = Remark; Entity.JobItem.AddObject(JobItem); Entity.SaveChanges(); } else { JobItem.RunTime = RunTime; Entity.SaveChanges(); } //这里要验证进出帐是否是平的 decimal D1 = Entity.JobItem.Where(n => n.TNum == OldItem.TNum && n.RunType == 1 && (n.State == 0 || n.State == 3)).Sum(n => n.RunMoney); decimal D2 = Entity.JobItem.Where(n => n.TNum == OldItem.TNum && n.RunType == 1 && (n.State == 0 || n.State == 3)).Sum(n => n.Poundage); decimal E1 = Entity.JobItem.Where(n => n.TNum == OldItem.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 == OldItem.TNum && n.State == 0 && n.RunTime < RunTime && n.Id != JobItem.Id); if (count > 0) { JR.Data = new { error = 99, info = "当前需要调整后续费任务时间", item = JobItem.Id }; return(JR); } count = Entity.JobItem.Count(n => n.TNum == OldItem.TNum && n.State == 0 && n.RunTime < DateTime.Now && n.Id != JobItem.Id); if (count > 0) { JR.Data = new { error = 99, info = "当前需要调整后续费任务时间", item = JobItem.Id }; return(JR); } //增加检测排序执行时间 IList <JobItem> JobItemList = Entity.JobItem.Where(n => n.TNum == OldItem.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); } Entity.ExecuteStoreCommand("Exec SP_JobReSet '" + OldItem.TNum + "',2"); JR.Data = new { error = 0, info = "处理成功" }; return(JR); }
/// <summary> /// 关闭任务 /// </summary> /// <param name="tnum"></param> /// <returns></returns> public JsonResult CloseJob(string tnum) { JsonResult JR = new JsonResult() { ContentType = "text/html" }; if (tnum.IsNullOrEmpty()) { JR.Data = new { error = 1, info = "参数有误" }; return(JR); } //重新统计成功与失败后金额 Entity.ExecuteStoreCommand("Exec SP_JobReSet '" + tnum + "',1"); JobOrders JobOrders = Entity.JobOrders.FirstOrDefault(n => n.TNum == tnum); if (JobOrders == null) { JR.Data = new { error = 1, info = "订单不存在" }; return(JR); } if (JobOrders.State != 5) { JR.Data = new { error = 1, info = "当前订单状态不能结清操作" }; return(JR); } if (JobOrders.Amount < 1) { JR.Data = new { error = 1, info = "本订单余额小于0无需再次清算" }; return(JR); } int count = Entity.JobItem.Count(n => n.TNum == tnum && n.State != 3 && n.State != 4 && n.State != 0); if (count > 0) { JR.Data = new { error = 1, info = "本订单有" + count + "笔交易未达到最终状态,暂不可操作。" }; return(JR); } DateTime Now = DateTime.Now; DateTime RunTime = Now; if (RunTime.Hour < 12) { RunTime.AddHours(12 - RunTime.Hour); } //生成多一单还款计划就OK了 JobItem JobItem = new JobItem(); JobItem.UId = JobOrders.UId; JobItem.TNum = JobOrders.TNum; JobItem.RunMoney = JobOrders.Amount; JobItem.RunTime = RunTime; JobItem.Poundage = 0; JobItem.RunGet = JobItem.RunMoney * JobOrders.CashRate; if (JobItem.RunGet < JobOrders.CashMin) { JobItem.RunGet = JobOrders.CashMin; } if (JobItem.RunGet > JobOrders.CashMax) { JobItem.RunGet = JobOrders.CashMax; } JobItem.RunGet = JobItem.RunGet.Ceiling();//通道成本 JobItem.AgentGet = 0; //利润=用户手续费-代理分润-通道成本 JobItem.HFGet = JobItem.Poundage - JobItem.AgentGet - JobItem.RunGet; JobItem.State = 1; JobItem.AddTime = Now; JobItem.RunType = 2; JobItem.RunState = 0; JobItem.PayWay = JobOrders.CashWay; JobItem.UserCardId = JobOrders.UserCardId; JobItem.Remark = "任务失败退回剩余金额"; JobItem.RunSort = 9999; Entity.JobItem.AddObject(JobItem); Entity.SaveChanges(); JR.Data = new { error = 0, info = "处理成功" }; return(JR); }
/// <summary> /// /// </summary> /// <param name="JobOrders"></param> /// <param name="p"></param> /// <param name="IsShowSupAgent">是否显示下级</param> /// <param name="LowerLevel">下级代理商</param> /// <returns></returns> public ActionResult Index(JobOrders JobOrders, EFPagingInfo <JobOrders> p, DateTime?STime, DateTime?ETime, bool?IsShowSupAgent, int?LowerLevel, int IsFirst = 0) { #region 条件校验 if (IsShowSupAgent == null) { IsShowSupAgent = false; } LowerLevel = LowerLevel == null ? 0 : LowerLevel; p.SqlWhere.Add(f => f.PayState != 0); p.SqlWhere.Add(f => f.AgentState != 0); if (!JobOrders.TNum.IsNullOrEmpty()) { p.SqlWhere.Add(f => f.TNum == JobOrders.TNum); } if (!JobOrders.Code.IsNullOrEmpty()) { IList <Users> UList = Entity.Users.Where(n => n.TrueName == JobOrders.Code || n.NeekName == JobOrders.Code || n.UserName == JobOrders.Code).ToList(); List <int> UIds = new List <int>(); foreach (var pp in UList) { UIds.Add(pp.Id); } p.SqlWhere.Add(f => UIds.Contains(f.UId)); } if (!JobOrders.AgentId.IsNullOrEmpty()) { p.SqlWhere.Add(f => f.AgentId == JobOrders.AgentId); } if (!JobOrders.AgentState.IsNullOrEmpty()) { p.SqlWhere.Add(f => f.AgentState == JobOrders.AgentState); } if (!STime.IsNullOrEmpty()) { p.SqlWhere.Add(f => f.PayTime > STime); } else { STime = DateTime.Now.AddMonths(-1); } if (!ETime.IsNullOrEmpty()) { p.SqlWhere.Add(f => f.PayTime < ETime); } else { ETime = DateTime.Now; } TimeSpan TS = ETime.Value.Subtract(STime.Value); int Days = TS.Days; if (Days > 31) { ViewBag.ErrorMsg = "统计时间间隔不能超过31天!"; return(View("Error")); } IList <SysAgent> AgentsList = null; if ((bool)IsShowSupAgent) { IList <int> UID = new List <int>(); if (LowerLevel != 0) { SysAgent LowerLevelAgent = Entity.SysAgent.Where(s => s.Id == LowerLevel).FirstOrNew(); AgentsList = LowerLevelAgent.GetSupAgent(Entity, true); } else { AgentsList = BasicAgent.GetSupAgent(Entity, true);//获取所有下级代理商信息 } UID = AgentsList.Select(o => o.Id).ToList(); p.SqlWhere.Add(f => UID.Contains(f.AgentId)); } else { p.SqlWhere.Add(f => f.AgentId == BasicAgent.Id);//读取全部分支机构 } #endregion p.OrderByList.Add("Id", "DESC"); IPageOfItems <JobOrders> JobOrdersList = null; if (IsFirst == 0) { JobOrdersList = new PageOfItems <JobOrders>(new List <JobOrders>(), 0, 10, 0, new Hashtable()); } else { JobOrdersList = Entity.Selects <JobOrders>(p); } ViewBag.JobOrdersList = JobOrdersList; ViewBag.JobOrders = JobOrders; //统计查询 if (JobOrdersList.TotalCount > 0) { var iquery = Entity.JobOrders.AsQueryable(); foreach (var item in p.SqlWhere) { iquery = iquery.Where(item); } //总金额 decimal SumAmoney = iquery.Sum(o => o.TotalMoney); ViewBag.SumAmoney = SumAmoney; //我的总佣金 decimal?SumMyProfit = Entity.OrderProfitLog.Where(o => o.Agent == BasicAgent.Id && o.OrderType == 31).Join(iquery, op => op.TNum, o => o.TNum, (op, o) => op.Profit).Sum(o => (decimal?)o); ViewBag.SumMyProfit = SumMyProfit; } //商户查询 IList <JobOrders> List = JobOrdersList.GroupBy(n => n.UId).Select(n => n.First()).ToList(); List <int> UId = new List <int>(); foreach (var pp in List) { UId.Add(pp.UId); } Dictionary <string, decimal> DicOrderProfitLog = new Dictionary <string, decimal>(); IList <Users> UsersList = Entity.Users.Where(n => UId.Contains(n.Id)).ToList(); foreach (var item in JobOrdersList) { DicOrderProfitLog.Add(item.TNum, Entity.OrderProfitLog.Where(o => o.TNum == item.TNum && o.Agent == BasicAgent.Id).Select(o => o.Profit).FirstOrDefault()); } ViewBag.DicOrderProfitLog = DicOrderProfitLog; ViewBag.UsersList = UsersList; ViewBag.SysAdminList = Entity.SysAdmin.Where(n => n.State == 1 && n.AgentId == AdminUser.AgentId).ToList(); ViewBag.IsShowSupAgent = IsShowSupAgent; ViewBag.BasicAgent = BasicAgent; SysSet SysSet = Entity.SysSet.FirstOrNew(); ViewBag.SysSet = SysSet; ViewBag.LowerLevel = LowerLevel; ViewBag.Edit = this.checkPower("Edit"); ViewBag.STime = STime; ViewBag.ETime = ETime; return(View()); }
/// <summary> /// 导出 /// </summary> /// <returns></returns> public ActionResult ExcelExport(JobOrders JobOrders, EFPagingInfo <JobOrders> p, DateTime?STime, DateTime?ETime, int IsFirst = 0) { IPageOfItems <JobOrders> JobOrdersList = null; if (IsFirst == 0) { JobOrdersList = new PageOfItems <JobOrders>(new List <JobOrders>(), 0, 10, 0, new Hashtable()); } else { if (STime.IsNullOrEmpty()) { STime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); } if (ETime.IsNullOrEmpty()) { ETime = DateTime.Now; } TimeSpan TS = Convert.ToDateTime(ETime) - Convert.ToDateTime(STime); int Days = TS.Days; if (Days > 10) { ViewBag.ErrorMsg = "导出时间间隔不能超过10天!"; return(View("Error")); } p = this.Condition(JobOrders, p, STime, ETime); p.PageSize = 9999999; p.SqlWhere.Add(f => f.PayState == 1); p.OrderByList.Add("PayState", "ASC"); JobOrdersList = Entity.Selects <JobOrders>(p); } List <string> TNumList = JobOrdersList.Select(o => o.TNum).Distinct().ToList(); //IList<JobItem> JobItemList = Entity.JobItem.Where(n => TNumList.Contains(n.TNum)).OrderBy(n=>n.RunTime).ToList(); DataTable table = new DataTable(); DataRow row = null; // 创建 datatable table.Columns.Add(new DataColumn("订单号", typeof(string))); table.Columns.Add(new DataColumn("订单创建时间", typeof(string))); table.Columns.Add(new DataColumn("订单支付时间", typeof(string))); table.Columns.Add(new DataColumn("订单状态", typeof(string))); table.Columns.Add(new DataColumn("交易号", typeof(string))); table.Columns.Add(new DataColumn("金额", typeof(string))); table.Columns.Add(new DataColumn("执行时间", typeof(string))); table.Columns.Add(new DataColumn("手续费", typeof(string))); table.Columns.Add(new DataColumn("利润", typeof(string))); table.Columns.Add(new DataColumn("成本", typeof(string))); table.Columns.Add(new DataColumn("分润", typeof(string))); table.Columns.Add(new DataColumn("状态", typeof(string))); table.Columns.Add(new DataColumn("类型", typeof(string))); string state = ""; //订单按照支付时间排序 foreach (var temp in JobOrdersList) { IList <JobItem> JobItemList = Entity.JobItem.Where(n => n.TNum == temp.TNum).OrderBy(n => n.RunTime).ToList(); if (JobOrders.PayState == 3) { DateTime ETime_temp = new DateTime(ETime.Value.Year, ETime.Value.Month, ETime.Value.Day, 23, 59, 59, 999); JobItemList = JobItemList.Where(o => o.RunTime >= STime && o.RunTime <= ETime_temp).ToList(); } // 填充数据 #region 明细 foreach (var item in JobItemList) { row = table.NewRow(); row[0] = item.TNum; row[1] = temp.AddTime.ToString("yyyy-MM-dd HH:mm"); row[2] = temp.PayTime.Value.ToString("yyyy-MM-dd HH:mm"); row[3] = temp.GetState(); row[4] = item.RunNum; row[5] = item.RunMoney.ToString("F2"); row[6] = item.RunTime.ToString("yyyy-MM-dd HH:mm"); row[7] = item.Poundage.ToString("F2"); row[8] = item.HFGet.ToString("F2"); row[9] = item.RunGet.ToString("F2"); row[10] = item.AgentGet.ToString("F2"); switch (item.State) { case 0: state = "取消"; break; case 1: state = "待执行"; break; case 2: state = "执行中"; break; case 3: state = "执行完成"; break; case 4: state = "执行失败"; break; } row[11] = state; row[12] = item.RunType == 1 ? "消费" : "还款"; table.Rows.Add(row); } #endregion } string Time = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(10, 99); return(this.ExportExcelBase(table, "任务订单明细-" + Time)); }
public void Post() { string Data = DataObj.GetData(); if (Data.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Data); } catch (Exception Ex) { Log.Write("[JobOrders]:", "【Data】" + Data, Ex); DataObj.OutError("1000"); return; } if (json == null) { DataObj.OutError("1000"); return; } JobOrders JobOrders = new JobOrders(); JobOrders = JsonToObject.ConvertJsonToModel(JobOrders, json); #region 获取用户信息 Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == JobOrders.Token); if (baseUsers == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (baseUsers.State != 1)//用户被锁定 { DataObj.OutError("2003"); return; } #endregion EFPagingInfo <JobOrders> p = new EFPagingInfo <JobOrders>(); if (!JobOrders.Pg.IsNullOrEmpty()) { p.PageIndex = JobOrders.Pg; } if (!JobOrders.Pgs.IsNullOrEmpty()) { p.PageSize = JobOrders.Pgs; } p.SqlWhere.Add(f => f.UId == baseUsers.Id); //这里JobOrders.State=1进行中 JobOrders.State=2已完成 if (JobOrders.State == 1) { p.SqlWhere.Add(f => f.State == 2 || f.State == 3); } else if (JobOrders.State == 2) { p.SqlWhere.Add(f => f.State == 4 || f.State == 5); } p.OrderByList.Add("Id", "DESC"); IPageOfItems <JobOrders> List = Entity.Selects <JobOrders>(p); var tnums = List.Select(o => o.TNum).ToList(); var UserCardIds = List.Select(o => o.UserCardId).ToList(); List <JobItem> JobItemList = Entity.JobItem.Where(n => tnums.Contains(n.TNum)).ToList(); List <UserCard> UserCardList = Entity.UserCard.Where(n => UserCardIds.Contains(n.Id)).ToList(); foreach (var item in List) { item.Cols = item.Cols + ",Items,UsersCard"; var itemList = JobItemList.Where(o => o.TNum == item.TNum).ToList(); var JobItemModelList = itemList.GroupBy(o => o.RunTime.Date, (x, o) => new JobItemModel { date = x, item = o.OrderBy(k => k.RunType).ToList().EntityToJson(), }).OrderBy(o => o.date).ToList(); item.Items = JobItemModelList.EntityToJson(); var UserCard = UserCardList.FirstOrNew(o => o.Id == item.UserCardId); string UserCardStr = UserCard.OutJson(); JObject JS = new JObject(); try { JS = (JObject)JsonConvert.DeserializeObject(UserCardStr); } catch (Exception Ex) { Log.Write("[JobOrders]:", "【JsStr】" + UserCardStr, Ex); } item.UsersCard = JS; } IList <JobOrders> iList = List.ToList(); StringBuilder sb = new StringBuilder(""); sb.Append("{"); sb.Append(List.PageToString()); sb.Append(","); sb.Append(iList.EntityToString()); sb.Append("}"); string data = sb.ToString(); data = data.Replace("\"[{", "[{").Replace("}]\"", "}]").Replace("\\", "").Replace("]\"}", "]}"); DataObj.Data = data; DataObj.Code = "0000"; DataObj.OutString(); }
private EFPagingInfo <JobOrders> Condition(JobOrders JobOrders, EFPagingInfo <JobOrders> p, DateTime?STime, DateTime?ETime) { #region 筛选条件 if (!JobOrders.PayWay.IsNullOrEmpty()) { p.SqlWhere.Add(o => o.PayWay == JobOrders.PayWay); } if (!JobOrders.TNum.IsNullOrEmpty()) { if (JobOrders.UId == 1) { p.SqlWhere.Add(f => f.TNum == JobOrders.TNum); } else if (JobOrders.UId == 2) { IList <Users> UList = Entity.Users.Where(n => n.TrueName.Contains(JobOrders.TNum) || n.NeekName.Contains(JobOrders.TNum) || n.UserName == JobOrders.TNum).ToList(); List <int> UIds = new List <int>(); foreach (var pp in UList) { UIds.Add(pp.Id); } p.SqlWhere.Add(f => UIds.Contains(f.UId)); } else if (JobOrders.UId == 3) { JobItem JobItem = Entity.JobItem.FirstOrNew(o => o.RunNum == JobOrders.TNum); p.SqlWhere.Add(f => f.TNum == JobItem.TNum); } } if (!STime.IsNullOrEmpty() && !ETime.IsNullOrEmpty()) { DateTime ETime_temp = new DateTime(ETime.Value.Year, ETime.Value.Month, ETime.Value.Day, 23, 59, 59, 999); if (JobOrders.PayState == 1) { p.SqlWhere.Add(f => f.AddTime >= STime && f.AddTime <= ETime_temp); } else if (JobOrders.PayState == 2) { p.SqlWhere.Add(f => f.PayTime >= STime && f.PayTime <= ETime_temp); } else if (JobOrders.PayState == 3) { IList <JobItem> joblist = Entity.JobItem.Where(o => o.RunTime >= STime && o.RunTime <= ETime_temp).ToList(); List <string> tnums = joblist.Select(o => o.TNum).Distinct().ToList(); p.SqlWhere.Add(f => tnums.Contains(f.TNum)); } } if (JobOrders.State != 99) { p.SqlWhere.Add(f => f.State == JobOrders.State); } if (JobOrders.AgentState != 99) { p.SqlWhere.Add(f => f.AgentState == JobOrders.AgentState); } #endregion p.OrderByList.Add("Id", "DESC"); return(p); }
/// <summary> /// 分润 /// </summary> /// <param name="O"></param> /// <param name="Entity"></param> /// <returns></returns> public static JobOrders PayAgent(this JobOrders JobOrders, LokFuEntity Entity) { SysSet SysSet = Entity.SysSet.FirstOrNew(); if (JobOrders.AgentId.IsNullOrEmpty()) {//代理商没有情况下 return(JobOrders); } //if (JobOrders.AgentGet.IsNullOrEmpty()) //{//没有佣金 // return JobOrders; //} Users OrderUser = Entity.Users.FirstOrDefault(n => n.Id == JobOrders.UId);//读取订单用户 #region 结算 if (JobOrders.AgentState != 0) {//已结算,不能重复结算 return(JobOrders); } JobOrders.AgentState = 1; Entity.SaveChanges(); //获取各级代理商 SysAgent SysAgent = new SysAgent(); SysAgent.Id = JobOrders.AgentId; IList <SysAgent> SysAgentList = SysAgent.GetAgentsById(Entity); decimal AIdPayGet = 0; //总佣金 decimal AgengtGet = 0; //分润 decimal Amount = JobOrders.TotalMoney - JobOrders.Poundage; int tier = 1; foreach (var p in SysAgentList) { if (p.State == 1) { decimal PayGet = SysAgent.GetJobSplit(p.Tier, Entity); AIdPayGet = Amount * PayGet;//当前级总佣金,需获取是否有下级拆分他的佣金 AIdPayGet = AIdPayGet.Floor(); decimal AIdPayGetNext = 0;//定义下一级佣金 if (tier < SysAgentList.Count) { //不是最后一级,需计算下级拆分金额 SysAgent SysAgentNext = SysAgentList.Skip(tier).Take(1).FirstOrDefault(); if (SysAgentNext != null) { if (SysAgentNext.State == 1) {//下级状态有效时才计算,如关闭了则不正计算下级 decimal PayGetNext = SysAgent.GetJobSplit(SysAgentNext.Tier, Entity); AIdPayGetNext = Amount * PayGetNext; AIdPayGetNext = AIdPayGetNext.Floor(); } } } decimal AIdPayGetMy = AIdPayGet - AIdPayGetNext; //当前级所能得到真实佣金 decimal UsersGetAll = 0; //定义所有用户佣金 //最后一级代理商 处理用户分润 #region 最后一级代理商 处理用户分润 if (tier == SysAgentList.Count) { int MaxLevel = SysSet.GlobaPromoteMaxLevel; //有用户分润,开始执行用户分润 Users Users = new Users(); Users.Id = JobOrders.UId; //获取用户各级关系,最大级不超过用户配置级数。返回数据包含当前用户,当前用户级数标识Tier为0 IList <Users> UsersList = Users.GetUsersById(Entity, MaxLevel); int UsersTier = 1; foreach (var U in UsersList.Where(n => n.Tier > 0 && n.State == 1)) { //UsersGetAll //UserPromoteGet UserPromoteGet = UserPromoteGetList.FirstOrDefault(n => n.PromoteLevel == U.Tier); //if (UserPromoteGet != null) //{ decimal PromoteGet = Users.GetUsersJobSplit(Entity, U.Tier); decimal UsersGet = Amount * PromoteGet; UsersGet = UsersGet.Floor(); if (UsersTier == 1) { UsersGetAll = UsersGet; } //UsersGetSum += UsersGet; if (UsersTier < UsersList.Count) { //不是最后一级,需计算下级拆分金额 byte nexttier = (byte)(U.Tier + 1); Users UsersNext = UsersList.FirstOrDefault(o => o.Tier == nexttier); if (UsersNext != null) { if (UsersNext.State == 1) {//下级状态有效时才计算,如关闭了则不正计算下级 decimal PayGetNext = Users.GetUsersJobSplit(Entity, UsersNext.Tier); decimal UserPayGetNext = Amount * PayGetNext; UserPayGetNext = UserPayGetNext.Floor(); //减掉下级用户的金额 UsersGet = UsersGet - UserPayGetNext; } } } if (UsersGet > 0) { //帐户变动记录 string Remark = string.Format("{0}[{1}]", "卡管家分润", JobOrders.TNum); string SP_Ret = Entity.SP_UsersMoney(U.Id, JobOrders.TNum, UsersGet, 8, Remark, 0); if (SP_Ret != "3") { Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", U.Id, JobOrders.TNum, 8, UsersGet, SP_Ret), "SP_UsersMoney"); } //记录清分记录 OrderProfitLog OPL = new OrderProfitLog(); OPL.AddTime = DateTime.Now; OPL.UId = U.Id; OPL.Agent = 0; OPL.TNum = JobOrders.TNum; OPL.LogType = 1; OPL.Tier = U.Tier; OPL.Profit = UsersGet; OPL.Amoney = Amount; OPL.OrderType = 31; OPL.UserName = OrderUser.UserName; Entity.OrderProfitLog.AddObject(OPL); //=====增加统计记录===== //ShareTotal ShareTotal = Entity.ShareTotal.FirstOrDefault(n => n.UId == U.Id && n.Tier == U.Tier); //if (ShareTotal == null) //{ // ShareTotal = new ShareTotal(); // ShareTotal.UId = U.Id; // ShareTotal.AddTime = DateTime.Now; // ShareTotal.ShareNum = 0; // ShareTotal.Amount = JobOrders.Amount; // ShareTotal.Profit = UsersGet; // ShareTotal.Tier = U.Tier; // Entity.ShareTotal.AddObject(ShareTotal); //} //else //{ // ShareTotal.Amount += JobOrders.Amount; // ShareTotal.Profit += UsersGet; //} AgengtGet = AgengtGet + UsersGet; } UsersTier++; // } } } #endregion //20160704 Lin 增加统计用户拆分多少,最后一级代理金额减掉这部分金额即可。 //解决用户分剩下钱规系统逻辑问题 AIdPayGetMy = AIdPayGetMy - UsersGetAll; #region 最后一级代理商 处理同级分润 if (tier == SysAgentList.Count) { if (!p.SameAgent.IsNullOrEmpty() && AIdPayGet > 0) { SysMoneySet SysMoneySet = Entity.SysMoneySet.FirstOrNew(); decimal SameMoney = AIdPayGet * SysMoneySet.SameAgent; SameMoney = SameMoney.Floor(); SysAgent SameSysAgent = Entity.SysAgent.FirstOrNew(o => o.Id == p.SameAgent); if (SameSysAgent.State == 1 && !SameSysAgent.MyUId.IsNullOrEmpty()) { //帐户变动记录 string Remark = string.Format("{0}[{1}]", "卡管家同级分润", JobOrders.TNum); string SP_Ret = Entity.SP_UsersMoney(SameSysAgent.MyUId, JobOrders.TNum, SameMoney, 8, Remark, 0); if (SP_Ret != "3") { Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", SameSysAgent.MyUId, JobOrders.TNum, 8, SameMoney, SP_Ret), "SP_UsersMoney"); } //记录清分记录 OrderProfitLog OPL = new OrderProfitLog(); OPL.AddTime = DateTime.Now; OPL.UId = SameSysAgent.MyUId; OPL.Agent = SameSysAgent.Id; OPL.TNum = JobOrders.TNum; OPL.LogType = 3; OPL.Tier = p.Tier; OPL.Profit = SameMoney; OPL.Amoney = Amount; OPL.OrderType = 31; OPL.UserName = OrderUser.UserName; Entity.OrderProfitLog.AddObject(OPL); JobOrders.SameGet = SameMoney; } } } #endregion if (!p.MyUId.IsNullOrEmpty() && AIdPayGetMy > 0)//某一级未绑定钱包,钱留给系统^-^ { //获取钱包信息 //为了减少系统开销,这里不读取用户信息——By Lin //Users Users = Entity.Users.FirstOrDefault(n => n.Id == p.MyUId); if (p.MyUId > 0) { //帐户变动记录 string Remark = string.Format("{0}[{1}]", "卡管家分润", JobOrders.TNum); string SP_Ret = Entity.SP_UsersMoney(p.MyUId, JobOrders.TNum, AIdPayGetMy, 8, Remark, 0); if (SP_Ret != "3") { Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", p.MyUId, JobOrders.TNum, 8, AIdPayGetMy, SP_Ret), "SP_UsersMoney"); } //记录清分记录 OrderProfitLog OPL = new OrderProfitLog(); OPL.AddTime = DateTime.Now; OPL.UId = p.MyUId; OPL.Agent = p.Id; OPL.TNum = JobOrders.TNum; OPL.LogType = 2; OPL.Tier = p.Tier; OPL.Profit = AIdPayGetMy; OPL.Amoney = Amount; OPL.OrderType = 31; OPL.UserName = OrderUser.UserName; Entity.OrderProfitLog.AddObject(OPL); AgengtGet = AgengtGet + AIdPayGetMy; } } } tier++; } Entity.SaveChanges(); //统计所有分润 //decimal Profit = 0; //if (Entity.OrderProfitLog.Count(n => n.TNum == JobOrders.TNum) > 0) //{ // Profit = Entity.OrderProfitLog.Where(n => n.TNum == JobOrders.TNum).Sum(n => n.Profit);//是否会为空的情况 //} JobOrders.AgentGet = AgengtGet;//记录总佣金支出,以便总系统计算利润 decimal RunGet = Entity.JobItem.Where(o => o.TNum == JobOrders.TNum && o.RunType == 1).Sum(o => o.RunGet); JobOrders.HFGet = JobOrders.Poundage - AgengtGet - RunGet - JobOrders.CashGet; JobOrders.AgentTime = DateTime.Now; Entity.SaveChanges(); #endregion return(JobOrders); }
public void Post() { string Data = DataObj.GetData(); if (Data.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Data); } catch (Exception Ex) { Log.Write("[JobOrders]:", "【Data】" + Data, Ex); DataObj.OutError("1000"); return; } if (json == null) { DataObj.OutError("1000"); return; } JobOrders JobOrders = new JobOrders(); JobOrders = JsonToObject.ConvertJsonToModel(JobOrders, json); if (JobOrders.TNum.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } #region 获取用户信息 Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == JobOrders.Token); if (baseUsers == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (baseUsers.State != 1)//用户被锁定 { DataObj.OutError("2003"); return; } #endregion Entity.ExecuteStoreCommand("Exec SP_JobReSet '" + JobOrders.TNum + "',1"); JobOrders baseJobOrders = Entity.JobOrders.FirstOrNew(o => o.TNum == JobOrders.TNum && o.UId == baseUsers.Id); if (baseJobOrders == null) { DataObj.OutError("1000"); return; } if (baseJobOrders.State != 3) { DataObj.Msg = "当前订单状态不能取消"; DataObj.OutError("1000"); return; } bool IsItemRun = Entity.JobItem.Any(o => o.TNum == baseJobOrders.TNum && o.State == 2); if (IsItemRun) { DataObj.Msg = "子订单有正在执行中的状态,不能执行该操作"; DataObj.OutError("1000"); return; } baseJobOrders.State = 5; baseJobOrders.Remark = "用户自主取消订单,时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); Entity.SaveChanges(); //取消所有待执行订单 Entity.ExecuteStoreCommand("Update JobItem Set State=0 Where TNum='" + baseJobOrders.TNum + "' and State=1"); //重新统计成功与失败后金额 if (baseJobOrders.Amount >= 1) { DataObj = this.CloseJob(JobOrders.TNum); } DataObj.Data = "取消订单成功"; DataObj.Code = "0000"; DataObj.OutString(); }
public void Post() { string Data = DataObj.GetData(); if (Data.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Data); } catch (Exception Ex) { Log.Write("[UserCardDelete]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } UserCard UserCard = new UserCard(); UserCard = JsonToObject.ConvertJsonToModel(UserCard, json); //获取用户信息 string Token = UserCard.Token; Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == Token); if (baseUsers == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (baseUsers.State != 1)//用户被锁定 { DataObj.OutError("2003"); return; } if (baseUsers.CardStae != 2)//未实名认证 { DataObj.OutError("2006"); return; } if (baseUsers.MiBao != 1)//未设置支付密码 { DataObj.OutError("2008"); return; } UserCard = Entity.UserCard.FirstOrDefault(n => n.Id == UserCard.Id && n.UId == baseUsers.Id && n.State == 1); if (UserCard == null)//不存在 { DataObj.OutError("1001"); return; } if (UserCard.Type == 1) { //借记卡需要判断是否用于一户一码 FastUser FastUser = Entity.FastUser.FirstOrDefault(o => o.UId == baseUsers.Id); if (FastUser != null) { if (!FastUser.Card.IsNullOrEmpty()) { if (FastUser.Card == UserCard.Card) { DataObj.OutError("1105"); return; } } } } if (UserCard.Type == 2) { //借记卡需要判断是否用还款任务 //任务正在使用的银行卡不能删除 JobOrders JobOrders = Entity.JobOrders.Where(o => o.UId == baseUsers.Id && (o.State == 2 || o.State == 3) && o.UserCardId == UserCard.Id).FirstOrDefault(); if (JobOrders != null) { DataObj.Msg = "您的还款任务正在使用本银行卡,暂不能删除"; DataObj.OutError("7004"); return; } //24小时内有还款失败 DateTime T24 = DateTime.Now.AddHours(-24); JobItem JobItem = Entity.JobItem.Where(o => o.UId == baseUsers.Id && o.State == 4 && o.UserCardId == UserCard.Id && o.RunTime > T24).FirstOrDefault(); if (JobItem != null) { DataObj.Msg = "最近1天您本银行卡有执行失败的还款任务,请隔1天再解除绑卡。"; DataObj.OutError("7004"); return; } //这里需要增加处理,是否开通授权,是的话需要把授权设置为0 //这里无法取得是哪个通道,系统每张卡只能绑定一个通道,所以只要把正常的关掉就可以了-Lin Entity.ExecuteStoreCommand("Update UserCardOpen Set State=0 Where UId=" + baseUsers.Id + " and CardNum = '" + UserCard.Card + "' And State=1"); } UserCard.State = 0; UserCard.UnBindingTime = DateTime.Now; Entity.SaveChanges(); //Entity.UserCard.DeleteObject(UserCard); //string SQL = "Update UserCard Set IsDel=1 Where Id=" + UserCard.Id; //Entity.ExecuteStoreCommand(SQL); //Entity.SaveChanges(); //if (HasCache) //{ // string CashName = "UserCard_" + UserCard.Type + "_" + Token; // CacheBuilder.EntityCache.Remove(CashName, null); //} DataObj.Data = UserCard.ToJson(); DataObj.Code = "0000"; DataObj.OutString(); }
public void Post() { string Data = DataObj.GetData(); if (Data.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Data); } catch (Exception Ex) { Log.Write("[JobCreate]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } UserTrack UserTrack = new UserTrack(); UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json); if (UserTrack.X.IsNullOrEmpty() || UserTrack.Y.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } JobSet JobSet = Entity.JobSet.FirstOrNew(); //获取配置 decimal Floated = JobSet.Floated; //浮动因子 #region 处理验证参数 if (json["token"] == null || json["money"] == null || json["card"] == null) { DataObj.OutError("1004"); return; } string Token = json["token"].ToString(); string money = json["money"].ToString(); string card = json["card"].ToString(); if (Token.IsNullOrEmpty() || money.IsNullOrEmpty() || card.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } string mymoney = ""; string number = ""; JArray dates = null; if (json["mymoney"] != null) { mymoney = json["mymoney"].ToString(); if (mymoney.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } } else if (json["number"] != null && json["dates"] != null) { number = json["number"].ToString(); dates = (JArray)json["dates"]; if (number.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } } else { DataObj.OutError("1004"); return; } int Number = 0, Money = 0, MyMoney = 0, Card = 0; try { Money = Int32.Parse(money); Card = Int32.Parse(card); if (!number.IsNullOrEmpty()) { Number = Int32.Parse(number); } if (!mymoney.IsNullOrEmpty()) { MyMoney = Int32.Parse(mymoney); } }catch (Exception) { DataObj.OutError("1000"); return; } if (Money <= 0) { DataObj.Msg = "帐单金额需大于零"; DataObj.OutError("1000"); return; } if (MyMoney > Money) { DataObj.Msg = "还款金额不能大于帐单金额"; DataObj.OutError("1000"); return; } int Days = 0; DateTime[] Dates = null; if (dates != null) { Days = dates.Count; Dates = new DateTime[Days]; int Count = 0; bool NoFaile = true; foreach (var p in dates) { string date = p["date"].ToString(); try { DateTime Date = DateTime.Parse(date); Dates[Count] = Date; } catch (Exception) { NoFaile = false; } Count++; } if (!NoFaile) { DataObj.OutError("1000"); return; } } DateTime Now = DateTime.Now; DateTime Today = DateTime.Parse(Now.ToString("yyyy-MM-dd")); //这里启用智能计算 if (MyMoney > 0) { //计算最少几天还款 //如果按MyMoney付的话,控制不超的话,应该去掉手续费 decimal maxMoney = (decimal)MyMoney * (1 - JobSet.Cost) - JobSet.Cash; Days = (int)Math.Ceiling((decimal)Money * (1 + Floated) / maxMoney);//计算还款需要几天 if (Days > JobSet.MaxDay) { Days = JobSet.MaxDay;//限制最大天数 } //这里增加修正,如果笔数过多,则修正笔数 while (Money < JobSet.MinMoney * Days && maxMoney * (Days - 1) > Money) { Days = Days - 1;//减少一天还款 } if (Days < 2) { Days = 2; } Dates = new DateTime[Days]; //这里不能直接用传进来的计划金额去计算,应该总金额-传进来金额再平均 int everyDayMoney = (Money - MyMoney) / (Days - 1); int bei = (int)Math.Ceiling(everyDayMoney / JobSet.DayMoney);//超过一定金额拆分笔数 if (bei > JobSet.MaxPay) { bei = JobSet.MaxPay;//每天刷笔数过大取最大 } if (bei == 0) { bei = 1; } Number = (Days - 1) * bei + 1;//第一天只能刷一笔 Dates[0] = Today; for (var i = 1; i < Days; i++) { if (Now > Today.AddHours(23))//超过23点了 { Dates[i] = Today.AddDays(i + 1); } else { Dates[i] = Today.AddDays(i); } } } if (Number <= 0) { DataObj.OutError("1000"); return; } if (Card <= 0) { DataObj.OutError("1000"); return; } if (Days <= 0) { DataObj.OutError("1000"); return; } if (Days > JobSet.MaxDay) { DataObj.Msg = "最大还款天数为" + JobSet.MaxDay + "天"; DataObj.OutError("1000"); return; } if (Days > Number) { DataObj.Msg = "刷卡笔数必需大于等于还款天数"; DataObj.OutError("1000"); return; } int MaxPayNum = (Days - 1) * JobSet.MaxPay + 1; if (Number > MaxPayNum) { DataObj.Msg = Days + "天最多刷卡笔数为" + MaxPayNum + "笔"; DataObj.OutError("1000"); return; } decimal EP = (decimal)Money / (decimal)Number; if (EP < JobSet.MinMoney) { if (MyMoney > 0) { DataObj.Msg = "经测算每天还款金额不足" + JobSet.MinMoney.ToMoney() + "元。"; } else { DataObj.Msg = "账单金额不能低于" + (Number * JobSet.MinMoney).ToMoney() + "元"; } DataObj.OutError("1000"); return; } if (EP > JobSet.MaxMoney) { DataObj.Msg = "账单金额不能大于" + (Number * JobSet.MaxMoney).ToMoney() + "元"; DataObj.OutError("1000"); return; } decimal EM = Money / Days; if (EM < JobSet.MinMoney) { DataObj.Msg = "每天最小还款金额为" + (Days * JobSet.MinMoney).ToString("f2") + "元"; DataObj.OutError("1000"); return; } if (EM > JobSet.MaxMoney) { DataObj.Msg = "每天最大还款金额为" + JobSet.MaxMoney.ToMoney() + "元"; DataObj.OutError("1000"); return; } //数据排序,避免前端大小乱排上送数据造成错误 Array.Sort(Dates); if (!Dates.GroupBy(o => o).All(o => o.Count() <= 1)) { DataObj.Msg = "日期不能重复"; DataObj.OutError("1000"); return; } if (!Dates.All(o => o >= Today)) { DataObj.Msg = "还款日期已过期"; DataObj.OutError("1000"); return; } DateTime FirstDate = Dates.First(); DateTime LastDate = Dates.Last(); //if (FirstDate < Today) { // DataObj.Msg = "还款日期已过期"; // DataObj.OutError("1000"); // return; //} TimeSpan TS = FirstDate.Subtract(LastDate).Duration(); TimeSpan TSs = new TimeSpan(JobSet.EqDays, 0, 0, 0); if (TS > TSs) { DataObj.Msg = "还款日期跨度过大"; DataObj.OutError("1000"); return; } #endregion byte AdvCost = JobSet.AdvCost; //预收刷卡手续费 byte AdvCash = JobSet.AdvCash; //预收代付手续费 int MaxRand = JobSet.MaxRand; //最大失败次数 //Money Number DateTime[] Dates #region 获取用户信息 Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == Token); if (baseUsers == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (baseUsers.State != 1)//用户被锁定 { DataObj.OutError("2003"); return; } if (baseUsers.CardStae != 2)//未实名认证 { DataObj.OutError("2006"); return; } if (baseUsers.MiBao != 1)//未设置支付密码 { DataObj.OutError("2008"); return; } if (baseUsers.StopPayState == 2)//禁止支付 { DataObj.OutError("6060"); return; } #endregion UserCard UserCard = Entity.UserCard.FirstOrDefault(n => n.Id == Card && n.UId == baseUsers.Id && n.Type == 2 && n.State == 1); if (UserCard == null) { DataObj.OutError("1000"); return; } UserCardOpen UserCardOpen = Entity.UserCardOpen.FirstOrDefault(n => n.State == 1 && n.CardNum == UserCard.Card && n.UId == baseUsers.Id); if (UserCardOpen == null) { DataObj.OutError("6032"); return; } //if (UserCardOpen.PayWay == 1) { // DataObj.Msg = "您的银行卡授权已过期,请删除后重新绑卡授权。"; // DataObj.OutError("6032"); // return; //} JobPayWay JobPayWay = Entity.JobPayWay.FirstOrDefault(n => n.State == 1 && n.GroupType == "Pay" && n.Id == UserCardOpen.PayWay);//从开卡记录中取通道 if (JobPayWay == null) { DataObj.OutError("6031"); return; } JobPayWay JobCashWay = Entity.JobPayWay.FirstOrDefault(n => n.State == 1 && n.GroupType == "Cash" && n.DllName == JobPayWay.DllName);//匹配出一条还款通道 if (JobCashWay == null) { DataObj.OutError("6031"); return; } bool IsRun = Entity.JobOrders.Where(o => (o.State == 2 || o.State == 3) && o.UId == baseUsers.Id && o.UserCardId == UserCard.Id).Select(o => o.UserCardId).FirstOrDefault() != 0 ? true : false; if (IsRun) { DataObj.OutError("7006"); return; } decimal Cost = JobSet.Cost; //刷卡手续费 decimal Cash = JobSet.Cash; //还款手续费 //if (baseUsers.IsVIP == 1) { // Cost = JobSet.VIPCost; // Cash = JobSet.VIPCash; //} //开始任务 RandItems RandItems = Rand.Create(Dates, Money, Number, Floated); List <jobitem> JobList = RandItems.JobList; //这里要加上验证 //============================================================ if (AdvCost == 0 || AdvCash == 0) { bool CheckOk = false; int CTimes = 0; while (!CheckOk && CTimes < MaxRand) { CheckOk = true; List <jobitem> JobListCash = JobList.Where(n => n.JobType == 2).ToList(); jobitem first = JobListCash.FirstOrDefault(); List <jobitem> JobListCashT = JobListCash.Skip(1).ToList(); foreach (var p in JobListCashT) { //只需验证还款金额 decimal AddMoney = 0; if (AdvCost == 0) { AddMoney += p.Money * Cost; AddMoney = AddMoney.Ceiling(); } if (AdvCash == 0) { AddMoney += Cash; } if (first.Money < p.Money + AddMoney) { CheckOk = false; break; } first = p; } //============================================================ if (MyMoney > 0) { jobitem firstpay = JobList.Where(n => n.JobType == 1).OrderByDescending(n => n.Money).First(); //这里检测第一笔加上手续费后大于输入金额则重新生成 decimal Poundage1, Poundage2; if (AdvCost == 1) //预收 { Poundage1 = Money * Cost; //预收总金额*手续费 } else { Poundage1 = firstpay.Money * Cost;//任务金额*手续费 } Poundage1 = Poundage1.Ceiling(); if (AdvCash == 1)//预收 { int AllPayNum = JobList.Count(n => n.JobType == 1); Poundage2 = AllPayNum * Cash;//预收总笔数*手续费 } else { Poundage2 = Cash;//第一天只有一笔交易和代付 } decimal Poundage = Poundage1 + Poundage2; if (firstpay.Money + Poundage > MyMoney) { CheckOk = false; } } //============================================================ if (!CheckOk) { //失败了重新生成 RandItems = Rand.Create(Dates, Money, Number, Floated); JobList = RandItems.JobList; } CTimes++; } ; if (!CheckOk) { DataObj.OutError("6033"); return; } } //============================================================ //生成订单 JobOrders JobOrders = new JobOrders(); JobOrders.UId = baseUsers.Id; JobOrders.Amount = 0; JobOrders.State = 0;//0取消 1待付款 2待执行 3执行中 4执行完成 5执行失败 6暂停(预留) JobOrders.AddTime = DateTime.Now; JobOrders.PayState = 0; JobOrders.PayedState = 0; JobOrders.PayWay = JobPayWay.Id; JobOrders.CashWay = JobCashWay.Id; JobOrders.AgentId = baseUsers.Agent; JobOrders.AgentState = 0; JobOrders.AgentGet = 0;//代理分润,等分润执行时写回 JobOrders.PayRate = JobPayWay.Cost; JobOrders.PayMin = JobPayWay.MinCost; JobOrders.PayMax = JobPayWay.MaxCost; JobOrders.CashRate = JobCashWay.Cost; JobOrders.CashMin = JobCashWay.MinCost; JobOrders.CashMax = JobCashWay.MaxCost; JobOrders.UPayRate = Cost; JobOrders.UPayMin = 0; JobOrders.UPayMax = 999999999; JobOrders.UCashRate = 0; JobOrders.UCashMin = Cash; JobOrders.UCashMax = 999999999; JobOrders.TotalMoney = 0; //总订单金额 JobOrders.Poundage = 0; //总手续费 JobOrders.HFGet = 0; //总成本 JobOrders.PayPoundage = 0; //交易手续费 JobOrders.CashPoundage = 0; //代付手续费 JobOrders.PayGet = 0; //交易成本 JobOrders.CashGet = 0; //代付成本 JobOrders.UserCardId = UserCard.Id; //计划对应的信用卡 JobOrders.AdvCost = JobSet.AdvCost; JobOrders.AdvCash = JobSet.AdvCash; Entity.JobOrders.AddObject(JobOrders); Entity.SaveChanges(); Entity.Refresh(RefreshMode.StoreWins, JobOrders); IList <JobItem> JobItemList = new List <JobItem>(); //============================================================ DateTime FirstRun = Today; //获取代理商分润 //SysAgent SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent); //IList<SysAgent> SysAgentList = SysAgent.GetAgentsById(Entity); //SysAgent TopAgent = SysAgentList.FirstOrNew(); //decimal PaySplit = 0;//代理商费率 //PaySplit = SysAgent.GetSplit(TopAgent.Tier, Entity); foreach (var p in JobList) { JobItem JobItem = new JobItem(); JobItem.TNum = JobOrders.TNum; JobItem.UId = JobOrders.UId; JobItem.RunTime = p.RunTime; JobItem.RunType = p.JobType; JobItem.State = 0;//状态:0取消 1待执行 2执行中 3执行完成 4执行失败 JobItem.RunState = 0; JobItem.RunSort = 0; JobItem.AddTime = DateTime.Now; JobItem.UserCardId = UserCard.Id; DateTime NowDate = DateTime.Parse(JobItem.RunTime.ToString("yyyy-MM-dd")); decimal Poundage = 0, Poundage1 = 0, Poundage2 = 0; if (NowDate == Today) { //第一笔 if (p.JobType == 1) { //消费 if (AdvCost == 1) //预收 { Poundage1 = Money * Cost; //预收总金额*手续费 } else { Poundage1 = p.Money * Cost;//任务金额*手续费 } Poundage1 = Poundage1.Ceiling(); //2017-11-06收到新需求,每笔刷卡加金额,代付不收费用 if (AdvCash == 1)//预收 { int AllPayNum = JobList.Count(n => n.JobType == 1); Poundage2 = AllPayNum * Cash;//预收总笔数*手续费 } else { Poundage2 = Cash;//第一天只有一笔交易和代付 } Poundage = Poundage1 + Poundage2; JobItem.RunMoney = p.Money + Poundage; JobItem.Poundage = Poundage; JobItem.PayWay = JobPayWay.Id; JobItem.UserCardId = 0; } if (p.JobType == 2) { //还款 JobItem.RunMoney = p.Money; JobItem.Poundage = 0; JobItem.PayWay = JobCashWay.Id; } } else { if (p.JobType == 1) { //消费 if (AdvCost == 0) //实收 { Poundage1 = p.Money * Cost; //预收总金额 Poundage1 = Poundage1.Ceiling(); } if (AdvCash == 0)//实收 { //2017-11-06收到新需求,每笔刷卡加金额,代付不收费用 Poundage2 = Cash; //每天只有一笔代付 //==================当天第一笔要加,其它不需要加 //if (FirstRun != NowDate) { //Poundage2 = Cash; //FirstRun = NowDate; //} } Poundage = Poundage1 + Poundage2; JobItem.RunMoney = p.Money + Poundage; JobItem.Poundage = Poundage; JobItem.PayWay = JobPayWay.Id; } if (p.JobType == 2) { //还款 JobItem.RunMoney = p.Money; JobItem.Poundage = 0; JobItem.PayWay = JobCashWay.Id; } } decimal AgentPoundage = JobItem.Poundage; if (JobItem.RunType == 1) { JobItem.RunGet = p.Money * JobPayWay.Cost; if (JobItem.RunGet < JobPayWay.MinCost) { JobItem.RunGet = JobPayWay.MinCost; } if (JobItem.RunGet > JobPayWay.MaxCost) { JobItem.RunGet = JobPayWay.MaxCost; } AgentPoundage = p.Money * JobPayWay.CostAgent; if (AgentPoundage < JobPayWay.MinAgentCost) { AgentPoundage = JobPayWay.MinAgentCost; } if (AgentPoundage > JobPayWay.MaxAgentCost) { AgentPoundage = JobPayWay.MaxAgentCost; } } if (JobItem.RunType == 2) { JobItem.RunGet = p.Money * JobCashWay.Cost; if (JobItem.RunGet < JobCashWay.MinCost) { JobItem.RunGet = JobCashWay.MinCost; } if (JobItem.RunGet > JobCashWay.MaxCost) { JobItem.RunGet = JobCashWay.MaxCost; } AgentPoundage = p.Money * JobCashWay.CostAgent; if (AgentPoundage < JobCashWay.MinAgentCost) { AgentPoundage = JobCashWay.MinAgentCost; } if (AgentPoundage > JobCashWay.MaxAgentCost) { AgentPoundage = JobCashWay.MaxAgentCost; } } JobItem.RunGet = JobItem.RunGet.Ceiling();//通道成本 //AgentPoundage = AgentPoundage.Ceiling();//代理手续费 //JobItem.AgentGet = Poundage1 - AgentPoundage;//代理分润 JobItem.AgentGet = 0; JobItem.HFGet = 0; //利润=用户手续费-代理分润-通道成本 //JobItem.HFGet = JobItem.Poundage - JobItem.AgentGet - JobItem.RunGet; Entity.JobItem.AddObject(JobItem); JobItemList.Add(JobItem); } decimal TotalPoundage = JobItemList.Sum(n => n.Poundage); decimal TotalHFGet = JobItemList.Sum(n => n.HFGet); decimal TotalAgentGet = JobItemList.Sum(n => n.AgentGet); decimal TotalPoundage1 = JobItemList.Where(n => n.RunType == 1).Sum(n => n.Poundage); decimal TotalPoundage2 = JobItemList.Where(n => n.RunType == 2).Sum(n => n.Poundage); decimal TotalRunGet1 = JobItemList.Where(n => n.RunType == 1).Sum(n => n.RunGet); decimal TotalRunGet2 = JobItemList.Where(n => n.RunType == 2).Sum(n => n.RunGet); JobOrders.TotalMoney = Money + TotalPoundage; //总订单金额 JobOrders.Poundage = TotalPoundage; //总手续费 JobOrders.AgentGet = TotalAgentGet; //代理分润 JobOrders.HFGet = TotalHFGet; //利润 JobOrders.PayPoundage = TotalPoundage1; //交易手续费 JobOrders.CashPoundage = TotalPoundage2; //代付手续费 JobOrders.PayGet = TotalRunGet1; //交易成本 JobOrders.CashGet = TotalRunGet2; //代付成本 JobOrders.State = 1; //0取消 1待付款 2待执行 3执行中 4执行完成 5执行失败 6暂停(预留) JobOrders.SameGet = 0; Entity.SaveChanges(); JobOrders.Cols = JobOrders.Cols + ",Items,UsersCard,SetCost,SetCash,XFCount,AdvCost,AdvCash"; JobItemList = Entity.JobItem.Where(n => n.TNum == JobOrders.TNum).OrderBy(n => n.RunTime).ToList(); //============================================================ int RunSort = 1; foreach (var p in JobItemList) { if (RunSort == JobList.Count) { //最后一笔特别标识 p.RunSort = 999; } else { p.RunSort = RunSort; } RunSort++; } Entity.SaveChanges(); //============================================================ //这里加上修正有分问题 IList <JobItem> JobItemPay = JobItemList.Where(n => n.RunType == 1).ToList(); JobItem FirstItem = JobItemPay.First(); JobItem LastItem = JobItemPay.Last(); if (JobItemPay.Count > 1) { decimal RunAu = 0; //用于存放差额 decimal Adv = 0; //用于存放每笔调整金额 bool CanSvae = true; //用于判断是否能修正 foreach (var p in JobItemPay) { if (p.Id == FirstItem.Id) { //第一笔 if (MyMoney > p.RunMoney) { RunAu = MyMoney - p.RunMoney; p.RunMoney = MyMoney; Adv = (RunAu / (JobItemPay.Count - 1)).Ceiling();//后台平均一笔要增减金额 } } else if (p.Id == LastItem.Id) { //最后一笔 p.RunMoney = p.RunMoney - RunAu;//修正差额 if (p.RunMoney < 0) { CanSvae = false; } } else { decimal RunMoney = p.RunMoney; //任务金额 decimal Run10 = (RunMoney - Adv) * 10; //放大十倍 decimal Run10U = Math.Ceiling(Run10); //向上取整个 decimal RunMoneyU = Run10U / 10; //缩小十倍 p.RunMoney = RunMoneyU; //重新赋值 RunAu += (RunMoneyU - RunMoney); //记录差额 } } if (CanSvae) { Entity.SaveChanges(); } } //============================================================ UserTrack.UId = baseUsers.Id; UserTrack.ENo = DataObj.ENo; UserTrack.OPType = "创建还款订单"; UserTrack.GPSAddress = UserTrack.GPSAddress; UserTrack.GPSX = UserTrack.X; UserTrack.GPSY = UserTrack.Y; UserTrack.UserName = JobOrders.TNum; UserTrack.SeavGPSLog(Entity); //======================================= //最后检测整个任务是否有单笔小于1元的 if (JobItemList.Count(n => n.RunMoney < 1) > 0) { DataObj.OutError("6033"); return; } //======================================= //这里之后不能执行SaveChanges,否则很严重 foreach (var p in JobItemList) { p.State = 1; } var JobItemModelList = JobItemList.GroupBy(o => o.RunTime.Date, (x, o) => new JobItemModel { date = x, item = o.OrderBy(k => k.RunType).ThenBy(n => n.RunTime).ToList().EntityToJson(), }).OrderBy(o => o.date).ToList(); JobOrders.Items = JobItemModelList.EntityToJson(); JobOrders.XFCount = JobItemList.Where(o => o.RunType == 1).Count();; JobOrders.SetCost = JobOrders.UPayRate; JobOrders.SetCash = JobOrders.UCashMin; string UserCardStr = UserCard.OutJson(); JObject JS = new JObject(); try { JS = (JObject)JsonConvert.DeserializeObject(UserCardStr); } catch (Exception Ex) { Log.Write("[JobCreate]:", "【JsStr】" + UserCardStr, Ex); } JobOrders.UsersCard = JS; string data = JobOrders.OutJson(); data = data.Replace("\"[{", "[{").Replace("}]\"", "}]").Replace("\\", "").Replace("]\"}", "]}"); DataObj.Data = data; DataObj.Code = "0000"; DataObj.OutString(); }
public void Post() { string Data = DataObj.GetData(); if (Data.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Data); } catch (Exception Ex) { Log.Write("[JobPay]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } JobOrders JobOrders = new JobOrders(); JobOrders = JsonToObject.ConvertJsonToModel(JobOrders, json); UserTrack UserTrack = new UserTrack(); UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json); if (UserTrack.X.IsNullOrEmpty() || UserTrack.Y.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } Users Users = new Users(); Users = JsonToObject.ConvertJsonToModel(Users, json); #region 初始化与校验 if (JobOrders.TNum.IsNullOrEmpty() || JobOrders.CardId.IsNullOrEmpty() || Users.PayPwd.IsNullOrEmpty() || Users.Token.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } #region 用户验证 Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == Users.Token); if (baseUsers == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (baseUsers.State != 1) { DataObj.OutError("2003"); return; } if (baseUsers.MiBao != 1)//未设置支付密码 { DataObj.OutError("2008"); return; } if (baseUsers.PayLock == 1)//密码错误太多次锁定 { DataObj.OutError("2050"); return; } //这里是执行指纹解锁 bool IfCheckOk = true; if (Users.PayPwd.Substring(0, 3) == "HF_") { string PassWord = Users.PayPwd; PassWord = PassWord.Replace("HF_", ""); string token = baseUsers.Token; token = token + "GoodPay"; string Md5Token = token.GetMD5().ToUpper(); string Pass = Md5Token.Substring(0, 4) + Md5Token.Substring(Md5Token.Length - 4, 4); if (Pass != PassWord) { IfCheckOk = false; } } else if (baseUsers.PayPwd != Users.PayPwd.GetPayMD5()) { //原支付密码错误 IfCheckOk = false; } if (!IfCheckOk) { //付密码错误 SysSet SysSet = Entity.SysSet.FirstOrNew(); //系统统一修改标识SAME002 baseUsers.PayErr++; if (baseUsers.PayErr >= SysSet.PayLock) { baseUsers.PayLock = 1; } Entity.SaveChanges(); Users Out = new Users(); Out.PayErr = SysSet.PayLock - baseUsers.PayErr; Out.Cols = "PayErr"; DataObj.Data = Out.OutJson(); DataObj.Code = "2010"; if (Out.PayErr == 0) { DataObj.Msg = "支付密码不正确,请明日再试或取回支付密码"; } else { DataObj.Msg = "支付密码不正确,您还可以尝试" + Out.PayErr + "次"; } DataObj.OutString(); return; } baseUsers.PayErr = 0; #endregion JobOrders baseJobOrders = this.Entity.JobOrders.Where(o => o.TNum == JobOrders.TNum && o.UId == baseUsers.Id).FirstOrDefault(); if (baseJobOrders == null) { DataObj.OutError("1001"); return; } if (baseJobOrders.State != 1) { DataObj.OutError("1001"); return; } JobItem FirstJobItem = this.Entity.JobItem.Where(o => o.TNum == baseJobOrders.TNum && o.RunType == 1).OrderBy(o => o.RunTime).FirstOrDefault(); if (FirstJobItem == null) { DataObj.OutError("1001"); return; } FirstJobItem.UserCardId = JobOrders.CardId; FirstJobItem.RunedTime = DateTime.Now; FirstJobItem.State = 2;//按Job的流程,这里需设置执行中才能进入支付 this.Entity.SaveChanges(); #endregion //======================================= UserTrack.ENo = DataObj.ENo; UserTrack.OPType = "支付还款订单"; UserTrack.GPSAddress = UserTrack.GPSAddress; UserTrack.GPSX = UserTrack.X; UserTrack.GPSY = UserTrack.Y; UserTrack.UserName = FirstJobItem.TNum; UserTrack.UId = baseUsers.Id; UserTrack.SeavGPSLog(Entity); //======================================= FirstJobItem = FirstJobItem.Pay(Entity); //0取消 1待执行 2执行中 3执行完成 4执行失败 if (FirstJobItem.State == 3) { FirstJobItem.RunTime = DateTime.Now; Entity.SaveChanges(); DataObj.OutError("0000"); } else if (FirstJobItem.State == 2) { DataObj.OutError("6028"); } else { //DataObj.Msg = FirstJobItem.Remark; DataObj.OutError("6027"); } }
public void Post() { string Data = DataObj.GetData(); if (Data.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Data); } catch (Exception Ex) { Log.Write("[JobOrders]:", "【Data】" + Data, Ex); DataObj.OutError("1000"); return; } if (json == null) { DataObj.OutError("1000"); return; } JobOrders JobOrders = new JobOrders(); JobOrders = JsonToObject.ConvertJsonToModel(JobOrders, json); JobSet JobSet = Entity.JobSet.FirstOrNew();//获取配置 #region 获取用户信息 Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == JobOrders.Token); if (baseUsers == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (baseUsers.State != 1)//用户被锁定 { DataObj.OutError("2003"); return; } #endregion JobOrders baseJobOrders = this.Entity.JobOrders.FirstOrDefault(o => o.TNum == JobOrders.TNum); if (baseJobOrders == null) { DataObj.OutError("1001"); return; } baseJobOrders.Cols = baseJobOrders.Cols + ",Items,UsersCard,HPayMoney,XPayMoney,SetCost,SetCash,XFCount,AdvCost,AdvCash"; //处理统计 SP_JobReSet SP_JobReSet = new SP_JobReSet(); Dictionary <string, string> dicChar = new Dictionary <string, string>(); dicChar.Add("TNum", baseJobOrders.TNum); dicChar.Add("Type", "3"); var tl = Entity.GetSPExtensions <SP_JobReSet>("SP_JobReSet", dicChar); if (tl.Count > 0) { SP_JobReSet = tl.FirstOrNew(); } baseJobOrders.HPayMoney = SP_JobReSet.HPayMoney.ToString("f2"); baseJobOrders.XPayMoney = SP_JobReSet.XPayMoney.ToString("f2"); //处理订单明细 List <JobItem> JobItemList = this.Entity.JobItem.Where(o => o.TNum == baseJobOrders.TNum).OrderBy(o => o.RunedTime).ToList(); var JobItemModelList = JobItemList.GroupBy(o => o.RunTime.Date, (x, o) => new JobItemModel { date = x, item = o.OrderBy(k => k.RunType).ThenBy(n => n.RunTime).ToList().EntityToJson(), }).OrderBy(o => o.date).ToList(); baseJobOrders.Items = JobItemModelList.EntityToJson(); baseJobOrders.XFCount = JobItemList.Where(o => o.RunType == 1).Count(); baseJobOrders.SetCost = baseJobOrders.UPayRate; baseJobOrders.SetCash = baseJobOrders.UCashMin; //处理银行卡信息 UserCard UserCard = this.Entity.UserCard.FirstOrNew(o => o.Id == baseJobOrders.UserCardId && o.State == 1); string UserCardStr = UserCard.OutJson(); JObject JS = new JObject(); try { JS = (JObject)JsonConvert.DeserializeObject(UserCardStr); } catch (Exception Ex) { Log.Write("[JobOrders]:", "【JsStr】" + UserCardStr, Ex); } baseJobOrders.UsersCard = JS; string data = baseJobOrders.OutJson(); data = data.Replace("\"[{", "[{").Replace("}]\"", "}]").Replace("\\", "").Replace("]\"}", "]}"); DataObj.Data = data; DataObj.Code = "0000"; DataObj.OutString(); }
/// <summary> /// Processing of input queue /// </summary> public void OnSenderTimer(object sender, System.Timers.ElapsedEventArgs args) { SenderMonitorEvent.SendMonitorEvent(EventLog, "Monitoring the send command activity", EventLogEntryType.Information, 3); m_SenderTimer.Stop(); string lLastError = string.Empty; int CountJobsToProcess = 0; try { KEPSSenderdbData senderDbData = new KEPSSenderdbData(OdataServiceUrl); JobOrders jobsToProcess = senderDbData.GetJobsToProcess(); CountJobsToProcess = jobsToProcess.JobOrdersObj.Count; SenderMonitorEvent.SendMonitorEvent(EventLog, "Jobs to process: " + CountJobsToProcess, EventLogEntryType.Information, 3); string sendState = string.Empty; if (CountJobsToProcess > 0) { // Step 1 -- Connect to UA server SenderMonitorEvent.SendMonitorEvent(EventLog, "Step 1 -- Connect to OPC server", EventLogEntryType.Information, 4); //string discoveryUrl = "opc.tcp://127.0.0.1:49320"; using (Session AMSession = ClientUtils.CreateSession(OPCServerUrl, "ArcelorMittal.UA.SenderCommand")) { SenderMonitorEvent.SendMonitorEvent(EventLog, "Loop through jobs", EventLogEntryType.Information, 4); foreach (JobOrders.JobOrdersValue jobVal in jobsToProcess.JobOrdersObj) { try { SenderMonitorEvent.SendMonitorEvent(EventLog, "new SenderJobProps", EventLogEntryType.Information, 4); SenderJobProps job = new SenderJobProps(jobVal.ID, jobVal.Command, (string)(jobVal.CommandRule)); SenderMonitorEvent.SendMonitorEvent(EventLog, "WriteToKEPServer", EventLogEntryType.Information, 4); if (WriteToKEPServer(AMSession, job)) { sendState = "Done"; if (wmiProductInfo != null) { wmiProductInfo.LastActivityTime = DateTime.Now; } } else { sendState = "Failed"; } lLastError = string.Format("JobOrderID: {0}. Send to KEP Server element {1} = {2}. Status: {3}", job.JobOrderID, job.Command, job.CommandRule, sendState); if (sendState == "Done") { Requests.UpdateJobStatus(OdataServiceUrl, job.JobOrderID, sendState); } else if (sendState == "Failed") { if (wmiProductInfo != null) { wmiProductInfo.LastServiceError = string.Format("{0}. On {1}", lLastError, DateTime.Now); } } SenderMonitorEvent.SendMonitorEvent(EventLog, lLastError, EventLogEntryType.Information, 5); } catch (Exception ex) { lLastError = "Error sending command: " + ex.ToString(); SenderMonitorEvent.SendMonitorEvent(EventLog, lLastError, EventLogEntryType.Error, 4); lLastError = "Reconecting..."; SenderMonitorEvent.SendMonitorEvent(EventLog, lLastError, EventLogEntryType.Information, 4); AMSession.Reconnect(); } } // Step 3 -- Clean up //AMSession.Close(); AMSession.KeepAlive -= ClientUtils.Session_KeepAlive; } } } catch (Exception ex) { try { string details = string.Empty; if (ex is System.Net.WebException) { var resp = new System.IO.StreamReader((ex as System.Net.WebException).Response.GetResponseStream()).ReadToEnd(); try { dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject(resp); details = obj.error.message; } catch { details = resp; } } lLastError = "Error getting jobs: " + ex.ToString() + " Details: " + details; SenderMonitorEvent.SendMonitorEvent(EventLog, lLastError, EventLogEntryType.Error, 4); if (wmiProductInfo != null) { wmiProductInfo.LastServiceError = string.Format("{0}. On {1}", lLastError, DateTime.Now); } } catch (Exception exc) { SenderMonitorEvent.SendMonitorEvent(EventLog, exc.Message, EventLogEntryType.Error, 4); } } if (wmiProductInfo != null) { wmiProductInfo.SendCommandsCount += CountJobsToProcess; wmiProductInfo.PublishInfo(); } SenderMonitorEvent.SendMonitorEvent(EventLog, string.Format("Send command is done. {0} tasks", CountJobsToProcess), EventLogEntryType.Information, 3); m_SenderTimer.Start(); }
public JsonResult SplitMoney(string tnum) { JsonResult JR = new JsonResult() { ContentType = "text/html" }; if (tnum.IsNullOrEmpty()) { JR.Data = new { error = 1, info = "参数有误" }; return(JR); } JobOrders JobOrders = Entity.JobOrders.FirstOrNew(o => o.TNum == tnum); if (JobOrders == null) { JR.Data = new { error = 1, info = "订单不存在" }; return(JR); } if (JobOrders.State != 5) { JR.Data = new { error = 1, info = "当前订单状态不能分润" }; return(JR); } if (JobOrders.AgentState != 0) { JR.Data = new { error = 1, info = "当前订单已分润" }; return(JR); } IList <JobItem> JobItemList = Entity.JobItem.Where(n => n.State == 3 && n.TNum == JobOrders.TNum).ToList(); if (JobItemList.Count == 0) { JR.Data = new { error = 1, info = "当前任务没有执行成功的交易" }; return(JR); } decimal TotalPoundage = JobItemList.Sum(n => n.Poundage); decimal TotalHFGet = JobItemList.Sum(n => n.HFGet); decimal TotalAgentGet = JobItemList.Sum(n => n.AgentGet); decimal TotalPoundage1 = JobItemList.Where(n => n.RunType == 1).Sum(n => n.Poundage); decimal TotalPoundage2 = JobItemList.Where(n => n.RunType == 2).Sum(n => n.Poundage); decimal TotalRunGet1 = JobItemList.Where(n => n.RunType == 1).Sum(n => n.RunGet); decimal TotalRunGet2 = JobItemList.Where(n => n.RunType == 2).Sum(n => n.RunGet); JobOrders.Cols = "Id,Poundage,AgentGet,HFGet,PayPoundage,CashPoundage,PayGet,CashGet"; string OldData = JobOrders.ToJson(); JobOrders.RemarkSplit = "操作人:" + AdminUser.TrueName + ",操作时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "【" + OldData + "】"; JobOrders.Poundage = TotalPoundage; //总手续费 JobOrders.AgentGet = TotalAgentGet; //代理分润 JobOrders.HFGet = TotalHFGet; //利润 JobOrders.PayPoundage = TotalPoundage1; //交易手续费 JobOrders.CashPoundage = TotalPoundage2; //代付手续费 JobOrders.PayGet = TotalRunGet1; //交易成本 JobOrders.CashGet = TotalRunGet2; //代付成本 if (JobOrders.AgentGet == 0) { JobOrders.AgentState = 1; JobOrders.AgentTime = DateTime.Now; } Entity.SaveChanges(); if (JobOrders.AgentGet > 0) { JobOrders = JobOrders.PayAgent(Entity); } JR.Data = new { error = 0, info = "取消订单成功!" }; return(JR); }
/// <summary> /// Processing of input queue /// </summary> public void OnSenderTimer(object sender, System.Timers.ElapsedEventArgs args) { SenderMonitorEvent.sendMonitorEvent(vpEventLog, "Monitoring the send command activity", EventLogEntryType.Information); m_SenderTimer.Stop(); string lLastError = string.Empty; int CountJobsToProcess = 0; try { KEPSSenderdbData senderDbData = new KEPSSenderdbData(OdataServiceUrl); JobOrders jobsToProcess = senderDbData.getJobsToProcess(); CountJobsToProcess = jobsToProcess.JobOrdersObj.Count; SenderMonitorEvent.sendMonitorEvent(vpEventLog, "Jobs to process: " + CountJobsToProcess, EventLogEntryType.Information); string sendState = string.Empty; if (CountJobsToProcess > 0) { // Step 1 -- Connect to UA server //string discoveryUrl = "opc.tcp://127.0.0.1:49320"; using (Session AMSession = ClientUtils.CreateSession(OPCServerUrl, "ArcelorMittal.UA.SenderCommand")) { foreach (JobOrders.JobOrdersValue jobVal in jobsToProcess.JobOrdersObj) { try { SenderJobProps job = new SenderJobProps(jobVal.ID, jobVal.Command, (string)(jobVal.CommandRule)); if (WriteToKEPServer(AMSession, job)) { sendState = "Done"; wmiProductInfo.LastActivityTime = DateTime.Now; } else { sendState = "Failed"; } lLastError = String.Format("JobOrderID: {0}. Send to KEP Server element {1} = {2}. Status: {3}", job.JobOrderID, job.Command, job.CommandRule, sendState); if (sendState == "Done") { Requests.updateJobStatus(OdataServiceUrl, job.JobOrderID, sendState); } else if (sendState == "Failed") { wmiProductInfo.LastServiceError = string.Format("{0}. On {1}", lLastError, DateTime.Now); } } catch (Exception ex) { lLastError = "Error sending command: " + ex.ToString(); SenderMonitorEvent.sendMonitorEvent(vpEventLog, lLastError, EventLogEntryType.Error); lLastError = "Reconecting..."; SenderMonitorEvent.sendMonitorEvent(vpEventLog, lLastError, EventLogEntryType.Information); AMSession.Reconnect(); } } // Step 3 -- Clean up AMSession.Close(); } } } catch (Exception ex) { lLastError = "Error getting jobs: " + ex.ToString(); SenderMonitorEvent.sendMonitorEvent(vpEventLog, lLastError, EventLogEntryType.Error); wmiProductInfo.LastServiceError = string.Format("{0}. On {1}", lLastError, DateTime.Now); } wmiProductInfo.SendCommandsCount += CountJobsToProcess; wmiProductInfo.PublishInfo(); SenderMonitorEvent.sendMonitorEvent(vpEventLog, string.Format("Send command is done. {0} tasks", CountJobsToProcess), EventLogEntryType.Information); m_SenderTimer.Start(); }