diff --git a/OpenAuth.App/ServiceApp/FireManagement/FireGridApp.cs b/OpenAuth.App/ServiceApp/FireManagement/FireGridApp.cs index e7dbf20..2c604c0 100644 --- a/OpenAuth.App/ServiceApp/FireManagement/FireGridApp.cs +++ b/OpenAuth.App/ServiceApp/FireManagement/FireGridApp.cs @@ -46,7 +46,7 @@ namespace OpenAuth.App.ServiceApp.FireManagement var checkPoint = info.MapTo(); checkPoint.Id = YitIdHelper.NextId(); checkPoint.CreateTime = DateTime.Now; - + checkPoint.IsDelete = false; List sflist = info.UserId .Select(item => new FmCheckPointUser { PointId = checkPoint.Id, UserId = item }).ToList(); @@ -406,30 +406,38 @@ namespace OpenAuth.App.ServiceApp.FireManagement } //导出统计 - //public MemoryStream ExportStatisticsNew(long areaid, DateTime begintime, DateTime endtime) + //public async MemoryStream ExportStatistics(long areaid, DateTime begintime, DateTime endtime) //{ // using (SugarDbContext db = base.UnitWork.CreateContext()) // { - // var user = _auth.GetCurrentUser().User; - // //该用户下包含所有部门 - // List deplist = new List(); - // long level = 0; - // if (user != null && user.Id != -1) + // var orginfo = await db.SysOrg.AsQueryable().Where(r => r.Id == areaid).FirstAsync(); + // var chileorg = (await db.SysOrg.AsQueryable().ToChildListAsync(it => it.ParentId, areaid)).Select(it => it.Id).ToList(); + // var userlist = await db.User.AsQueryable().LeftJoin((a, b) => a.Id == b.UserId) + // .LeftJoin((a, b, c) => a.Id == c.UserId) + // .LeftJoin((a, b, c, d) => c.OrgId == d.Id) + // .LeftJoin((a, b, c, d, e) => b.RoleId == e.Id) + // .Where((a, b, c, d, e) => chileorg.Contains(c.OrgId)) + // .Where((a, b, c, d, e) => e.Name == "护林员") + // .Select((a, b, c, d, e) => new PointstatisticsResp + // { + // Id = a.Id, + // Name = a.Name, + // Account = a.Account, + // AreaName = d.Name, + // }) + // .ToListAsync(); + // foreach (var item in userlist) // { - // var departs = db.SysUserOrg.AsQueryable().Where(r => r.UserId == user.Id).ToList(); - // foreach (var item in departs) - // { - // var list = db.SysOrg.AsQueryable().ToChildList(it => it.ParentId, item.OrgId) - // ?.Select(it => it.Id.ToString()).ToList(); - // deplist = deplist.Union(list).ToList(); - // } - // //获取用户分配部门的最高级别 - // var uorg = departs.OrderBy(r => r.Level).FirstOrDefault(); - // if (uorg != null) - // { - // level = uorg.Level; - // } - // } + // item.dakacishu = await db.FmCheckClockOn.AsQueryable() + // .Where(r => r.UserId == item.Id) + // .Where(r => r.ClockonTime >= begintime && r.ClockonTime <= endtime).CountAsync(); + // item.dakadian = await db.FmCheckPointUser.AsQueryable() + // .Where(r => r.UserId == item.Id).CountAsync(); + // var lengths = await db.FmUserPointHistory.AsQueryable() + // .Where(r => r.CreateId == item.Id && r.Intype == 1) + // .Where(r => r.CreateTime >= begintime && r.CreateTime <= endtime).SplitTable(begintime, endtime).SumAsync(r => r.Distance); + // item.xunjian = lengths > 0 ? 1 : 0; + // } // } diff --git a/OpenAuth.App/ServiceApp/FireManagement/FireManagementApp.cs b/OpenAuth.App/ServiceApp/FireManagement/FireManagementApp.cs index e754164..c98ab21 100644 --- a/OpenAuth.App/ServiceApp/FireManagement/FireManagementApp.cs +++ b/OpenAuth.App/ServiceApp/FireManagement/FireManagementApp.cs @@ -79,7 +79,6 @@ namespace OpenAuth.App.ServiceApp.FireManagement fftuList.Add(fftu); }); } - await db.FmFireTaskUser.InsertRangeAsync(fftuList); if (db.Commit()) { @@ -113,7 +112,6 @@ namespace OpenAuth.App.ServiceApp.FireManagement return new Response> { Result = users }; } } - /// /// 查询任务列表 /// @@ -128,7 +126,6 @@ namespace OpenAuth.App.ServiceApp.FireManagement return new Response> { Result = tasks }; } } - /// /// 查询人员单位信息 /// @@ -141,9 +138,7 @@ namespace OpenAuth.App.ServiceApp.FireManagement return new Response> { Result = userunit }; } } - #region 单位管理 - //添加人员单位 public async Task> AddUserUnit(FmUserUnit info) { @@ -161,7 +156,6 @@ namespace OpenAuth.App.ServiceApp.FireManagement } } } - //编辑人员单位 public async Task> EditUserUnit(FmUserUnit info) { @@ -178,7 +172,6 @@ namespace OpenAuth.App.ServiceApp.FireManagement } } } - //获取单个人员单位 public async Task> LoadUserUnitById(long id) { @@ -188,7 +181,6 @@ namespace OpenAuth.App.ServiceApp.FireManagement return new Response { Result = info }; } } - //删除人员单位 public async Task> DeleteUserUnit(long id) { @@ -225,14 +217,14 @@ namespace OpenAuth.App.ServiceApp.FireManagement { using (var stream = file.OpenReadStream()) { - workbook = new XSSFWorkbook(stream); //excel的版本2007 + workbook = new XSSFWorkbook(stream);//excel的版本2007 } } else if (file.FileName.IndexOf(".xls") > 0) { using (var stream = file.OpenReadStream()) { - workbook = new HSSFWorkbook(stream); //excel的版本2003 + workbook = new HSSFWorkbook(stream);//excel的版本2003 } } @@ -287,14 +279,10 @@ namespace OpenAuth.App.ServiceApp.FireManagement response.Code = 400; response.Message = "上传文件类型错误"; } - return response; } - #endregion - #region 火情线索 - public async Task> AddFireClueInfo(FmFireclueInfo info) { using (var db = base.UnitWork.CreateContext()) @@ -302,8 +290,7 @@ namespace OpenAuth.App.ServiceApp.FireManagement info.Id = YitIdHelper.NextId(); info.State = (int)State.上报; info.ReportTime = DateTime.Now; - var exitinfo = db.FmFireclueInfo.AsQueryable().Where(a => - a.ReportTime.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd")).Count(); + var exitinfo = db.FmFireclueInfo.AsQueryable().Where(a => a.ReportTime.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd")).Count(); info.ClueNo = "H" + DateTime.Now.ToString("yyyyMMdd") + (exitinfo == 0 ? "01" : "0" + (exitinfo + 1)); await db.FmFireclueInfo.InsertAsync(info); if (db.Commit()) @@ -316,7 +303,6 @@ namespace OpenAuth.App.ServiceApp.FireManagement } } } - /// /// 查询火情线索 /// @@ -331,7 +317,6 @@ namespace OpenAuth.App.ServiceApp.FireManagement return new Response { Result = info }; } } - //查询火情线索列表 public async Task>> GetFireClueList() { @@ -341,7 +326,6 @@ namespace OpenAuth.App.ServiceApp.FireManagement return new Response> { Result = list }; } } - //按月统计火情线索 public async Task>> GetFireClueStatistics(int type) { @@ -365,14 +349,14 @@ namespace OpenAuth.App.ServiceApp.FireManagement { DateTime firstDayOfYear = new DateTime(DateTime.Now.Year, 1, 1); var list = await db.FmFireclueInfo.AsQueryable() - //.Where(r => r.State == 1) - .Where(r => r.ReportTime >= firstDayOfYear) - .GroupBy(r => new { r.ReportTime.Month }) - .Select(r => new FireInfoForChart - { - DateTime = r.ReportTime.Month.ToString() + "月", - Count = SqlFunc.AggregateCount(r.Id) - }).ToListAsync(); + //.Where(r => r.State == 1) + .Where(r => r.ReportTime >= firstDayOfYear) + .GroupBy(r => new { r.ReportTime.Month }) + .Select(r => new FireInfoForChart + { + DateTime = r.ReportTime.Month.ToString() + "月", + Count = SqlFunc.AggregateCount(r.Id) + }).ToListAsync(); return new Response> { Result = list }; } } @@ -400,33 +384,32 @@ namespace OpenAuth.App.ServiceApp.FireManagement { DateTime firstDayOfYear = new DateTime(DateTime.Now.Year, 1, 1); var list = await db.FmFireclueInfo.AsQueryable() - .Where(r => r.ReportTime >= firstDayOfYear) - .GroupBy(r => new { r.ReportTime.Month }) - .Select(r => new FireInfoStateForChart - { - DateTime = r.ReportTime.Month.ToString() + "月", - TreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State >= 3, 1, 0)), - UntreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State < 3, 1, 0)) - }).ToListAsync(); + .Where(r => r.ReportTime >= firstDayOfYear) + .GroupBy(r => new { r.ReportTime.Month }) + .Select(r => new FireInfoStateForChart + { + DateTime = r.ReportTime.Month.ToString() + "月", + TreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State >= 3, 1, 0)), + UntreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State < 3, 1, 0)) + }).ToListAsync(); return new Response> { Result = list }; } else { DateTime firstDayOfYear = DateTime.Now.AddYears(-3); var list = await db.FmFireclueInfo.AsQueryable() - .Where(r => r.ReportTime >= firstDayOfYear) - .GroupBy(r => new { r.ReportTime.Year }) - .Select(r => new FireInfoStateForChart - { - DateTime = r.ReportTime.Year.ToString() + "年", - TreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State >= 3, 1, 0)), - UntreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State < 3, 1, 0)) - }).ToListAsync(); + .Where(r => r.ReportTime >= firstDayOfYear) + .GroupBy(r => new { r.ReportTime.Year }) + .Select(r => new FireInfoStateForChart + { + DateTime = r.ReportTime.Year.ToString() + "年", + TreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State >= 3, 1, 0)), + UntreatedCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.State < 3, 1, 0)) + }).ToListAsync(); return new Response> { Result = list }; } } } - public async Task>> GetFireClueStatisticsByDegreeType(int type) { using (var db = base.UnitWork.CreateContext()) @@ -449,35 +432,33 @@ namespace OpenAuth.App.ServiceApp.FireManagement { DateTime firstDayOfYear = new DateTime(DateTime.Now.Year, 1, 1); var list = await db.FmFireclueInfo.AsQueryable() - .Where(r => r.ReportTime >= firstDayOfYear) - .GroupBy(r => new { r.ReportTime.Month }) - .Select(r => new FireInfoDegreeForChart - { - DateTime = r.ReportTime.Month.ToString() + "月", - ExtraLargeCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.DegreeType == 1, 1, 0)), - LargeCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.DegreeType == 2, 1, 0)) - }).ToListAsync(); + .Where(r => r.ReportTime >= firstDayOfYear) + .GroupBy(r => new { r.ReportTime.Month }) + .Select(r => new FireInfoDegreeForChart + { + DateTime = r.ReportTime.Month.ToString() + "月", + ExtraLargeCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.DegreeType == 1, 1, 0)), + LargeCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.DegreeType == 2, 1, 0)) + }).ToListAsync(); return new Response> { Result = list }; } else { DateTime firstDayOfYear = DateTime.Now.AddYears(-3); var list = await db.FmFireclueInfo.AsQueryable() - .Where(r => r.ReportTime >= firstDayOfYear) - .GroupBy(r => new { r.ReportTime.Year }) - .Select(r => new FireInfoDegreeForChart - { - DateTime = r.ReportTime.Year.ToString() + "年", - ExtraLargeCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.DegreeType == 1, 1, 0)), - LargeCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.DegreeType == 2, 1, 0)) - }).ToListAsync(); + .Where(r => r.ReportTime >= firstDayOfYear) + .GroupBy(r => new { r.ReportTime.Year }) + .Select(r => new FireInfoDegreeForChart + { + DateTime = r.ReportTime.Year.ToString() + "年", + ExtraLargeCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.DegreeType == 1, 1, 0)), + LargeCount = SqlFunc.AggregateSum(SqlFunc.IIF(r.DegreeType == 2, 1, 0)) + }).ToListAsync(); return new Response> { Result = list }; } } } - #endregion - /// /// 在线情况 /// @@ -489,20 +470,24 @@ namespace OpenAuth.App.ServiceApp.FireManagement { RefAsync totalNumber = 0; var user = _auth.GetCurrentUser().User; + int level = 0; //该用户下包含所有部门 var orgid = _auth.GetCurrentUser().Orgs; + level = orgid.Min(r => r.Level); var chileorglist = new List(); - foreach (var item in orgid) + if (level != 0 && user.Id != -1) { - var chileorg = (await db.SysOrg.AsQueryable().ToChildListAsync(it => it.ParentId, item)) - .Select(it => it.Id).ToList(); - chileorglist.AddRange(chileorg); - } - + foreach (var item in orgid.Where(r => r.Level < 3)) + { + var chileorg = (await db.SysOrg.AsQueryable().ToChildListAsync(it => it.ParentId, item)).Select(it => it.Id).ToList(); + chileorglist.AddRange(chileorg); + } + } var userInfoQuery = db.User.AsQueryable() - .LeftJoin((a, b) => a.Id == b.CreateId) - .LeftJoin((a, b, c) => a.Id == c.UserId) - .Where((a, b, c) => a.Status == 0 && chileorglist.Contains(c.UserId)); + .LeftJoin((a, b) => a.Id == b.CreateId) + .LeftJoin((a, b, c) => a.Id == c.UserId) + .Where((a, b, c) => a.Status == 0) + .WhereIF(level != 0, (a, b, c) => chileorglist.Contains(c.UserId)); var userinfo = await userInfoQuery .Select((a, b, c) => new UserOnLineResp { @@ -518,7 +503,8 @@ namespace OpenAuth.App.ServiceApp.FireManagement TownName = SqlFunc.Subqueryable() .Where(sf => sf.UserId == a.Id) .LeftJoin((sf, gs) => sf.OrgId == gs.Id) - .SelectStringJoin((sf, gs) => gs.Name, ",") + .LeftJoin((sf, gs, t) => gs.ParentId == t.Id) + .SelectStringJoin((sf, gs, t) => gs.Name, ",") }) .MergeTable() .Distinct() @@ -528,7 +514,7 @@ namespace OpenAuth.App.ServiceApp.FireManagement .ToPageListAsync(pageReq.page, pageReq.limit, totalNumber); var onlineCount = await userInfoQuery - .Where((a, b, c) => a.CreateTime.AddMinutes(2) > DateTime.Now) + .Where((a, b, c) => b.CreateTime.AddMinutes(2) > DateTime.Now) .Select(a => a.Id) .Distinct() .CountAsync();