using Common.DJYModel; using Common.Extensions; using Common.Utilities; using djy.IService.Report; using djy.Model.Report; using djy.Model.ReportDto; using djy.Service.DjyService; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace djy.Service.Report { public class ReportService : ServBase, IReportService { //#region 获取模板 //public List GetTemplate() //{ // try // { // var List = DbBus.Get(DbList.DSDB).Select().ToList(); // return List; // } // catch (Exception e) // { // throw; // } //} //#endregion #region 列表 public TableData Load(User user) { var result = new TableData(); var templist = DbBus.Get(DbList.DSDB).Select().ToList(); if (user.CompId != null) { List query = DbBus.Get(DbList.DSDB).Select().LeftJoin((temp, main) => main.TemplateID == temp.GID). Where(x => x.t2.CompID == user.CompId).ToList((temp, main) => new ReportDto { GID = main.GID, UserID = main.UserID, UserName = main.UserName, CompID = main.CompID, CompName = main.CompName, TemplateID = main.TemplateID, TemplateName = temp.TemplateName, TemplateDescribe = temp.TemplateDescribe, IsBook = main.IsBook, IsWechat = main.IsWechat, IsEmail = main.IsEmail, DJson = main.DJson, EndTime = main.EndTime, CreateTime = main.CreateTime, TemplateType = temp.TemplateType }).ToList(); foreach (var item in templist) { var it = query.Where(x => x.TemplateID == item.GID).FirstOrDefault(); if (it == null) { query.Add(new ReportDto { GID = null, UserID = user.GID, UserName = user.SHOWNAME, CompID = user.CompId, CompName = user.COMNAME, TemplateID = item.GID, TemplateName = item.TemplateName, TemplateDescribe = item.TemplateDescribe, IsBook = null, IsWechat = null, IsEmail = null, DJson = null, EndTime = null, CreateTime = DateTime.Now, TemplateType = item.TemplateType }); } } result.data = query; result.count = (int)query.Count(); } return result; } #endregion #region 新增编辑 public string SaveInfo(DS_Report dto, User user) { string guid = dto.GID; var list = DbBus.Get(DbList.DSDB).Select().WhereIf(dto.GID != null, x => x.GID != dto.GID). Where(x => x.IsDel != true && x.TemplateID == dto.TemplateID && x.CompID == user.Comid).ToOne(); if (list != null) { return "-1"; } if (dto.GID.IsNull()) { DS_Report report = dto.MapTo(); report.GID = Guid.NewGuid().ToString("N"); report.UserID = user.GID; report.UserName = user.SHOWNAME; report.CompID = user.CompId; report.CompName = user.COMNAME; report.IsBook = false; report.IsEmail = false; report.IsDel = false; report.CreateTime = DateTime.Now; report.LastUpdate = DateTime.Now; DbBus.Get(DbList.DSDB).Insert(report).ExecuteAffrows(); guid = report.GID; } else { DbBus.Get(DbList.DSDB).Update().Set(w => new DS_Report { TemplateID = dto.TemplateID, IsBook = dto.IsBook, IsEmail=dto.IsEmail, DJson=dto.DJson, LastUpdate = DateTime.Now, LastUserId=user.GID }).Where(w => w.GID == dto.GID).ExecuteAffrows(); } return guid; } #endregion #region 取消订阅/订阅 public Response IsBook(string Gid,string TemplateId, bool isbook,string DJson, User user) { var result = new Response(); if (isbook) { if (Gid.IsNull()) { DS_Report report = new DS_Report(); report.GID = Guid.NewGuid().ToString("N"); report.UserID = user.GID; report.UserName = user.SHOWNAME; report.CompID = user.CompId; report.CompName = user.COMNAME; report.IsDel = false; report.TemplateID = TemplateId; report.CreateTime = DateTime.Now; report.LastUpdate = DateTime.Now; DbBus.Get(DbList.DSDB).Insert(report).ExecuteAffrows(); Gid = report.GID; } if (DbBus.Get(DbList.DSDB).Select().Where(x => x.GID==Gid).ToOne().IsBook==true) { result.Code = 201; result.Message = "该模板已经订阅过了"; return result; } var endtime = DbBus.Get(DbList.DSDB).Select().Where(x => x.GID == Gid).ToOne().EndTime; if (endtime != null&& endtime>DateTime.Now) { DbBus.Get(DbList.DSDB).Update().Set(w => new DS_Report { IsBook = true, IsEmail = true, DJson = DJson, LastUpdate = DateTime.Now, LastUserId = user.GID }).Where(w => w.GID == Gid).ExecuteAffrows(); result.Code = 200; result.Message = "订阅成功!"; return result; } ////订阅 var fin = new FinanceService(); var templist = DbBus.Get(DbList.DSDB).Select(). Where(x => x.GID==TemplateId).ToOne(); var getfinrs = fin.Expend(new CustFee { SENDUSERID = user.GID, LURURENID = user.GID, MBLNO= "1", CtnrCount = 1, CtnrInfo = string.Empty, BSTYPE = 17, SENDTYPE = templist.SendType, BSNO = Gid, }, 0); if (!getfinrs.Status) { result.Code = 201; result.Message = getfinrs.Message; return result; } DbBus.Get(DbList.DSDB).Update().Set(w => new DS_Report { IsBook = true, IsEmail=true, DJson=DJson, EndTime=DateTime.Now.AddMonths(1), LastUpdate = DateTime.Now, LastUserId = user.GID }).Where(w => w.GID ==Gid).ExecuteAffrows(); fin.Expend(new CustFee { SENDUSERID = user.GID, LURURENID = user.GID, MBLNO = "1", CtnrCount = 1, CtnrInfo = string.Empty, BSTYPE = 17, SENDTYPE = templist.SendType, BSNO = Gid, }, 1); result.Code = 200; result.Message = "订阅成功!"; return result; } else { DbBus.Get(DbList.DSDB).Update().Set(w => new DS_Report { IsBook = false, LastUpdate = DateTime.Now, LastUserId = user.GID }).Where(w => w.GID == Gid).ExecuteAffrows(); result.Code = 200; result.Message = "取消成功!"; return result; } return result; } #endregion #region 定时任务 public void TemplateTask() { try { _LogsAdd("TemplateTask", "post", $"报表定时任务开始"); ///获取所有订阅过的用户 var datetime = DateTime.Now.AddDays(-1); var list = DbBus.Get(DbList.DSDB).Select().Where(x => x.IsBook == true && x.EndTime < datetime).ToList(); var templist = DbBus.Get(DbList.DSDB).Select().ToList(); var fin = new FinanceService(); foreach (var item in list) { var getfinrs = fin.Expend(new CustFee { SENDUSERID = item.UserID, LURURENID = item.UserID, MBLNO = "1", CtnrCount = 1, CtnrInfo = string.Empty, BSTYPE = 17, SENDTYPE = templist.Where(x => x.GID == item.TemplateID).Select(x => x.SendType).FirstOrDefault(), ////templist.SendType, BSNO = item.GID, }, 0); if (!getfinrs.Status) { ///扣费失败 ,更改状态 var date = DateTime.Now; if (item.EndTime().Set(w => new DS_Report { IsBook = false, }).Where(w => w.GID == item.GID).ExecuteAffrows(); } } else { ////余额充足 ,执行扣费, fin.Expend(new CustFee { SENDUSERID = item.UserID, LURURENID = item.UserID, MBLNO = "1", CtnrCount = 1, CtnrInfo = string.Empty, BSTYPE = 17, SENDTYPE = templist.Where(x => x.GID == item.TemplateID).Select(x => x.SendType).FirstOrDefault(), ////templist.SendType, BSNO = item.GID, }, 1); DbBus.Get(DbList.DSDB).Update().Set(w => new DS_Report { EndTime = Convert.ToDateTime(w.EndTime).AddMonths(1),///修改截止日期 LastUpdate = DateTime.Now, LastUserId = item.GID }).Where(w => w.GID == item.GID).ExecuteAffrows(); } } } catch (Exception ex) { Exception excep = ex; while (excep != null) { _LogsAdd("TemplateTask", "post", $"报表定时任务:{excep.Message}{excep.StackTrace}"); excep = excep.InnerException; } } } #endregion } }