Infrastructure/OpenAuth.App/ServiceApp/FireManagement/FireManagementApp.cs

851 lines
35 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using DocumentFormat.OpenXml.EMMA;
using DocumentFormat.OpenXml.Spreadsheet;
using Hopetry.App.SugarModel.CommonModel;
using Infrastructure;
using Infrastructure.Extensions;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using OpenAuth.App.BaseApp.Base;
using OpenAuth.App.Const;
using OpenAuth.App.Interface;
using OpenAuth.App.Response;
using OpenAuth.App.ServiceApp.FireManagement.Request;
using OpenAuth.App.ServiceApp.FireManagement.Response;
using OpenAuth.Repository;
using OpenAuth.Repository.Domain;
using OpenAuth.Repository.Domain.FireManagement;
using Org.BouncyCastle.Ocsp;
using SqlSugar;
using System.Net.WebSockets;
using System.Text;
using Yitter.IdGenerator;
namespace OpenAuth.App.ServiceApp.FireManagement
{
public class FireManagementApp : SqlSugarBaseApp<FmFireclueTask, SugarDbContext>
{
private ClientWebSocket _socket;
private IConfiguration _configuration;
public FireManagementApp(IConfiguration configuration, ISugarUnitOfWork<SugarDbContext> unitWork,
ISimpleClient<FmFireclueTask> repository, IAuth auth) : base(unitWork, repository, auth)
{
_auth = auth;
_configuration = configuration;
}
/// <summary>
/// 下发防火线索任务
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public async Task<Response<bool>> IssuedFireClueTask(FmFireclueTask info)
{
using (var db = base.UnitWork.CreateContext())
{
var userId = _auth.GetCurrentUser().User.Id;
info.Id = YitIdHelper.NextId();
info.State = (int)TaskState.;
info.TaskTime = DateTime.Now;
info.IsDelete = false;
await db.FmFireclueTask.InsertAsync(info);
List<FmFireTaskUser> fftuList = new List<FmFireTaskUser>();
if (info.RecipientUsers == null || info.RecipientUsers.Count == 0)
{
var userList = await db.User.AsQueryable().Where(r => r.Status == 0).ToListAsync();
userList.ForEach(user =>
{
FmFireTaskUser fftu = new FmFireTaskUser
{
Id = YitIdHelper.NextId(),
UserId = user.Id.ToString(),
TaskId = info.Id,
ReceiveTime = DateTime.Now,
State = (int)TaskState.
};
fftuList.Add(fftu);
});
}
else
{
info.RecipientUsers.ForEach(user =>
{
FmFireTaskUser fftu = new FmFireTaskUser
{
Id = YitIdHelper.NextId(),
UserId = user,
TaskId = info.Id,
ReceiveTime = DateTime.Now,
State = (int)TaskState.
};
fftuList.Add(fftu);
});
}
await db.FmFireTaskUser.InsertRangeAsync(fftuList);
await db.FmFireclueinfoLog.InsertAsync(new FmFireclueinfoLog
{
Id = YitIdHelper.NextId(),
Fireclueid = info.Fireclueid,
Title = "任务下发",
CreateTime = DateTime.Now,
CreateId = userId,
Content = info.Content
});
if (db.Commit())
{
return new Response<bool> { Result = true, Message = "操作成功" };
}
else
{
return new Response<bool> { Result = false, Message = "操作失败" };
}
}
}
//删除任务
public async Task<Response<bool>> DeleteTask(long id)
{
using (var db = base.UnitWork.CreateContext())
{
var userId = _auth.GetCurrentUser().User.Id;
var taskinfo = await db.FmFireclueTask.AsQueryable().FirstAsync(r => r.Id == id);
await db.FmFireclueTask.UpdateAsync(r => new FmFireclueTask
{
IsDelete = true
}, r => r.Id == id);
await db.FmFireclueinfoLog.InsertAsync(new FmFireclueinfoLog
{
Id = YitIdHelper.NextId(),
Fireclueid = taskinfo.Fireclueid,
Title = "任务删除",
CreateTime = DateTime.Now,
CreateId = userId,
Content = "删除任务"
});
if (db.Commit())
{
return new Response<bool> { Result = true, Message = "操作成功" };
}
else
{
return new Response<bool> { Result = false, Message = "操作失败" };
}
}
}
/// <summary>
/// 查询下发人员
/// </summary>
/// <param name="username"></param>
/// <returns></returns>
public async Task<Response<List<SysUserResp>>> LoadFireClueUser(string username, string unitname)
{
using (var db = base.UnitWork.CreateContext())
{
var users = await db.User.AsQueryable()
.WhereIF(!string.IsNullOrEmpty(username), r => r.Name.Contains(username))
.WhereIF(!string.IsNullOrEmpty(unitname), r => r.UnitName.Contains(username))
.Where(r => r.Status == 0)
.Select(r => new SysUserResp
{
Id = r.Id,
Name = r.Name
}).ToListAsync();
return new Response<List<SysUserResp>> { Result = users };
}
}
/// <summary>
/// 查询任务列表
/// </summary>
/// <returns></returns>
public async Task<Response<List<FmFireclueTask>>> GetTaskList()
{
using (var db = base.UnitWork.CreateContext())
{
var tasks = await db.FmFireclueTask.AsQueryable()
.Where(r => r.IsDelete == false)
.ToListAsync();
return new Response<List<FmFireclueTask>> { Result = tasks };
}
}
/// <summary>
/// 查询人员单位信息
/// </summary>
/// <returns></returns>
public async Task<Response<List<FmUserUnit>>> GetUserUnit()
{
using (var db = base.UnitWork.CreateContext())
{
var userunit = await db.FmUserUnit.AsQueryable().ToListAsync();
return new Response<List<FmUserUnit>> { Result = userunit };
}
}
#region 单位管理
//添加人员单位
public async Task<Response<bool>> AddUserUnit(FmUserUnit info)
{
using (var db = base.UnitWork.CreateContext())
{
info.Id = YitIdHelper.NextId();
await db.FmUserUnit.InsertAsync(info);
if (db.Commit())
{
return new Response<bool> { Result = true, Message = "操作成功" };
}
else
{
return new Response<bool> { Result = false, Message = "操作失败" };
}
}
}
//编辑人员单位
public async Task<Response<bool>> EditUserUnit(FmUserUnit info)
{
using (var db = base.UnitWork.CreateContext())
{
await db.FmUserUnit.UpdateAsync(info);
if (db.Commit())
{
return new Response<bool> { Result = true, Message = "操作成功" };
}
else
{
return new Response<bool> { Result = false, Message = "操作失败" };
}
}
}
//获取单个人员单位
public async Task<Response<FmUserUnit>> LoadUserUnitById(long id)
{
using (var db = base.UnitWork.CreateContext())
{
var info = await db.FmUserUnit.AsQueryable().FirstAsync(r => r.Id == id);
return new Response<FmUserUnit> { Result = info };
}
}
//删除人员单位
public async Task<Response<bool>> DeleteUserUnit(long id)
{
using (var db = base.UnitWork.CreateContext())
{
await db.FmUserUnit.DeleteAsync(r => r.Id == id);
if (db.Commit())
{
return new Response<bool> { Result = true, Message = "操作成功" };
}
else
{
return new Response<bool> { Result = false, Message = "操作失败" };
}
}
}
public Response<bool> FireUserUnitUpload(IFormFileCollection formFiles)
{
var user = _auth.GetCurrentUser().User;
IFormFile file = formFiles[0];
Response<bool> response = new Response<bool>();
try
{
//存储文件到服务器
if (file != null)
{
if (file.FileName.IndexOf(".xls") > 0 || file.FileName.IndexOf(".xlsx") > 0)
{
//数据库导入
IWorkbook workbook = null;
if (file.FileName.IndexOf(".xlsx") > 0)
{
using (var stream = file.OpenReadStream())
{
workbook = new XSSFWorkbook(stream); //excel的版本2007
}
}
else if (file.FileName.IndexOf(".xls") > 0)
{
using (var stream = file.OpenReadStream())
{
workbook = new HSSFWorkbook(stream); //excel的版本2003
}
}
ISheet sheet;
sheet = workbook.GetSheetAt(0);
List<FmUserUnit> fulist = new List<FmUserUnit>();
if (sheet != null)
{
IRow firstRow = sheet.GetRow(0);
string name = firstRow.GetCell(0).ToString();
//最后一列的标号
int rowCount = sheet.LastRowNum;
for (int i = 1; i <= rowCount; i++)
{
IRow row = sheet.GetRow(i);
if (row == null || string.IsNullOrEmpty(row.GetCell(0).ToString())) continue;
FmUserUnit fu = new FmUserUnit();
fu.Id = YitIdHelper.NextId();
fu.UnitName = row.GetCell(1).ToString();
fu.UnitType = row.GetCell(2).ToString();
fu.Description = row.GetCell(3).ToString();
fu.CreateTime = DateTime.Now;
fu.CreateUserId = user.Id.ToString();
fulist.Add(fu);
}
}
using (var db = base.UnitWork.CreateContext())
{
db.FmUserUnit.InsertRange(fulist);
if (db.Commit())
{
return new Response<bool> { Result = true, Message = "导入成功" };
}
else
{
return new Response<bool> { Result = false, Message = "导入失败" };
}
}
}
else
{
response.Result = false;
response.Message = "上传文件类型错误请上传Excel文件";
response.Code = 300;
}
}
}
catch (Exception ex)
{
response.Result = false;
response.Code = 400;
response.Message = "上传文件类型错误";
}
return response;
}
#endregion
#region 火情线索
public async Task<Response<bool>> AddFireClueInfo(FmFireclueInfo info)
{
using (var db = base.UnitWork.CreateContext())
{
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();
info.ClueNo = "H" + DateTime.Now.ToString("yyyyMMdd") + (exitinfo == 0 ? "01" : "0" + (exitinfo + 1));
await db.FmFireclueInfo.InsertAsync(info);
await db.FmFireclueinfoLog.InsertAsync(new FmFireclueinfoLog
{
Id = YitIdHelper.NextId(),
Fireclueid = info.Id,
Title = "火情线索上报",
CreateTime = DateTime.Now,
CreateId = info.CreateId,
Content = info.Describe
});
if (db.Commit())
{
return new Response<bool> { Result = true, Message = "操作成功" };
}
else
{
return new Response<bool> { Result = false, Message = "操作失败" };
}
}
}
/// <summary>
/// 查询火情线索
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task<Response<FmFireclueInfo>> LoadClueInfoById(long id)
{
using (var db = base.UnitWork.CreateContext())
{
var info = await db.FmFireclueInfo.AsQueryable()
.FirstAsync(r => r.Id == id);
return new Response<FmFireclueInfo> { Result = info };
}
}
public async Task<Response<dynamic>> LoadClueWithInfoById(long id)
{
using (var db = base.UnitWork.CreateContext())
{
var clueInfo = await db.FmFireclueInfo.AsQueryable()
.FirstAsync(r => r.Id == id);
//查找摄像头
var sqlStr = $@"select ""Id"",""Name"",""SerialNumber"" from fm_camera
where ST_DWithin(ST_GeographyFromText('POINT({clueInfo.Lng} {clueInfo.Lat})'),
ST_GeographyFromText('POINT('||""Lng""||' '||""Lat""||')'),1000)=true";
var cameraInfo = await db.Db.Ado.GetDataTableAsync(sqlStr);
var endInfo = new
{
clueInfo,
cameraInfo,
};
return new Response<dynamic> { Result = endInfo };
}
}
//查询火情线索列表
public async Task<Response<List<FmFireclueInfo>>> GetFireClueList()
{
using (var db = base.UnitWork.CreateContext())
{
var list = await db.FmFireclueInfo.AsQueryable().Where(r => r.State == 1).ToListAsync();
return new Response<List<FmFireclueInfo>> { Result = list };
}
}
/// <summary>
/// 修改火情线索状态
/// </summary>
/// <param name="id"></param>
/// <param name="state"></param>
/// <returns></returns>
public async Task<Response<bool>> UpdatFireState(long id, int state)
{
using (var db = base.UnitWork.CreateContext())
{
var userId = _auth.GetCurrentUser().User.Id;
await db.FmFireclueInfo.UpdateAsync(r => new FmFireclueInfo
{
State = state,
ModifyTime = DateTime.Now,
ModifyId = userId
}, r => r.Id == id);
await db.FmFireclueinfoLog.InsertAsync(new FmFireclueinfoLog
{
Id = YitIdHelper.NextId(),
Fireclueid = id,
Title = "修改火情线索状态",
CreateTime = DateTime.Now,
CreateId = userId,
Content = "火情线索状态变化"
});
if (db.Commit())
{
return new Response<bool> { Result = true, Message = "操作成功" };
}
else
{
return new Response<bool> { Result = false, Message = "操作失败" };
}
}
}
//按月统计火情线索
public async Task<Response<List<FireInfoForChart>>> GetFireClueStatistics(int type)
{
using (var db = base.UnitWork.CreateContext())
{
if (type == 1)
{
DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
var list = await db.FmFireclueInfo.AsQueryable()
//.Where(r => r.State == 1)
.Where(r => r.ReportTime >= firstDayOfMonth)
.GroupBy(r => new { r.ReportTime.Day })
.Select(r => new FireInfoForChart
{
DateTime = r.ReportTime.Day.ToString() + "日",
Count = SqlFunc.AggregateCount(r.Id)
}).ToListAsync();
return new Response<List<FireInfoForChart>> { Result = list };
}
else
{
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();
return new Response<List<FireInfoForChart>> { Result = list };
}
}
}
public async Task<Response<List<FireInfoStateForChart>>> GetFireClueStatisticsByState(int type)
{
using (var db = base.UnitWork.CreateContext())
{
if (type == 1)
{
DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
var list = await db.FmFireclueInfo.AsQueryable()
.Where(r => r.ReportTime >= firstDayOfMonth)
.GroupBy(r => new { r.ReportTime.Day })
.Select(r => new FireInfoStateForChart
{
DateTime = r.ReportTime.Day.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<List<FireInfoStateForChart>> { Result = list };
}
else if (type == 2)
{
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();
return new Response<List<FireInfoStateForChart>> { 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();
return new Response<List<FireInfoStateForChart>> { Result = list };
}
}
}
public async Task<Response<List<FireInfoDegreeForChart>>> GetFireClueStatisticsByDegreeType(int type)
{
using (var db = base.UnitWork.CreateContext())
{
if (type == 1)
{
DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
var list = await db.FmFireclueInfo.AsQueryable()
.Where(r => r.ReportTime >= firstDayOfMonth)
.GroupBy(r => new { r.ReportTime.Day })
.Select(r => new FireInfoDegreeForChart
{
DateTime = r.ReportTime.Day.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<List<FireInfoDegreeForChart>> { Result = list };
}
else if (type == 2)
{
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();
return new Response<List<FireInfoDegreeForChart>> { 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();
return new Response<List<FireInfoDegreeForChart>> { Result = list };
}
}
}
//查询火情和任务列表
public async Task<Response<List<FmFireclueinfoLog>>> GetFireClueLog(long id)
{
using (var db = base.UnitWork.CreateContext())
{
var list = await db.FmFireclueinfoLog.AsQueryable()
.Where(r => r.Fireclueid == id)
.OrderByDescending(r => r.CreateTime).ToListAsync();
return new Response<List<FmFireclueinfoLog>> { Result = list };
}
}
#endregion
/// <summary>
/// 在线情况
/// </summary>
/// <param name="pageReq"></param>
/// <returns></returns>
public async Task<Response<PageInfo<dynamic>>> GetPointUserOnLine(UserOnLineReq pageReq)
{
using (var db = base.UnitWork.CreateContext())
{
RefAsync<int> 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<long>();
if (level != 0 && user.Id != -1)
{
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<FmUserPoint>((a, b) => a.Id == b.CreateId)
.LeftJoin<SysUserOrg>((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
{
CreateId = a.Id,
Name = a.Name,
Lat = b.Lat,
Lng = b.Lng,
CreateTime = b.CreateTime,
Phone = a.Account,
State = b.CreateTime.AddMinutes(2) > DateTime.Now ? "在线" : "离线",
IsIn = b.Intype,
OnLineTime = SqlFunc.DateDiff(DateType.Minute, b.CreateTime, DateTime.Now),
TownName = SqlFunc.Subqueryable<SysUserOrg>()
.Where(sf => sf.UserId == a.Id)
.LeftJoin<SysOrg>((sf, gs) => sf.OrgId == gs.Id)
.LeftJoin<SysOrg>((sf, gs, t) => gs.ParentId == t.Id)
.SelectStringJoin((sf, gs, t) => gs.Name, ",")
})
.MergeTable()
.Distinct()
.WhereIF(!string.IsNullOrEmpty(pageReq.townname), it => it.TownName.Contains(pageReq.townname))
.WhereIF(pageReq.isonline != "全部", it => it.State == pageReq.isonline)
.OrderByDescending(it => it.CreateTime)
.ToPageListAsync(pageReq.page, pageReq.limit, totalNumber);
var onlineCount = await userInfoQuery
.Where((a, b, c) => b.CreateTime.AddMinutes(2) > DateTime.Now)
.Select(a => a.Id)
.Distinct()
.CountAsync();
// 离线人数
var offlineCount = totalNumber - onlineCount;
var enddata = new
{
userinfo,
online = onlineCount,
offline = offlineCount,
};
return new Response<PageInfo<dynamic>>
{
Result = new PageInfo<dynamic> { Items = enddata, Total = totalNumber }
};
}
}
/// <summary>
/// 添加实时坐标
/// </summary>
/// <param name="userPoint"></param>
/// <returns></returns>
public async Task<Response<bool>> AddPointAsync(FmUserPoint userPoint)
{
var response = new Response<bool>();
using var db = Repository.AsSugarClient();
var currentUser = _auth.GetCurrentUser();
userPoint.CreateId = currentUser.User.Id;
userPoint.Id = YitIdHelper.NextId();
userPoint.CreateTime = DateTime.Now;
var userPointHistory = userPoint.MapTo<FmUserPointHistory>();
var oldInfo = await db.Queryable<FmUserPoint>()
.Where(r => r.CreateId == userPoint.CreateId)
.FirstAsync();
//上线弹窗 第一次上报或者上线时间不超过2分钟
if (oldInfo == null || (oldInfo != null && oldInfo.CreateTime.AddMinutes(2) < DateTime.Now))
{
var user = await db.Queryable<SysUser>().Where(r => r.Id == userPoint.CreateId)
.FirstAsync();
if (user != null)
{
await db.Insertable(new FmOnOffLine
{
Id = YitIdHelper.NextId(),
IdentifyId = user.Id,
OnOffTime = DateTime.Now,
Name = user.Name,
Type = true
}).ExecuteCommandAsync();
WebSocketModel wsModel1 = new WebSocketModel
{
Module = "上线",
Data = user.Name
};
sendsocket(wsModel1);
}
}
if (oldInfo != null)
{
oldInfo.Lat = userPoint.Lat;
oldInfo.Lng = userPoint.Lng;
oldInfo.CreateTime = userPoint.CreateTime;
oldInfo.Intype = userPoint.Intype;
await db.Updateable(oldInfo).ExecuteCommandAsync();
}
else
{
await db.Insertable(userPoint).ExecuteCommandAsync();
}
await db.Insertable(userPointHistory).SplitTable().ExecuteCommandAsync();
response.Code = 200;
response.Result = true;
response.Message = "添加成功";
return response;
}
public async Task sendsocket(WebSocketModel wsModel1)
{
try
{
if (_socket == null || _socket.State != WebSocketState.Open)
{
string ws = _configuration.GetSection("WebSocket").Value;
_socket = new ClientWebSocket();
await _socket.ConnectAsync(new Uri(ws), CancellationToken.None);
}
byte[] data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(wsModel1));
await _socket.SendAsync(new ArraySegment<byte>(data), WebSocketMessageType.Text,
true, CancellationToken.None);
await _socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing connection",
CancellationToken.None);
}
catch (Exception ex)
{
}
}
/// <summary>
/// 保存地图标绘
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public async Task<Response<bool>> SaveMapPlotting(MapPlottingReq req)
{
var record = req.MapTo<FmMapPlotting>();
record.Id = YitIdHelper.NextId();
using var db = Repository.AsSugarClient();
await db.Insertable(record).IgnoreColumnsNull().ExecuteCommandAsync();
return new Response<bool>()
{
Result = true,
Message = "保存成功",
Code = 200
};
}
public async Task<Response<PageInfo<dynamic>>> GetMapPlotting(PageReq req)
{
using var db = Repository.AsSugarClient();
RefAsync<int> total = 0;
var page = await db.Queryable<FmMapPlotting>()
.OrderByDescending(r => r.CreateTime)
.ToPageListAsync(req.page, req.limit, total);
return new Response<PageInfo<dynamic>>
{
Code = 200,
Message = "查询成功",
Result = new PageInfo<dynamic>
{
Items = page,
Total = total
}
};
}
/// <summary>
/// 查询人员上报的线索
/// </summary>
/// <param name="userid"></param>
/// <returns></returns>
public async Task<Response<PageInfo<List<FireClueInfoResp>>>> LoadFireClueInfoByUserId(int pageIndex, int state, int pageSize, string userid)
{
using (var db = base.UnitWork.CreateContext())
{
RefAsync<int> total = 0;
var list = await db.FmFireclueInfo.AsQueryable().Where(a => a.CreateId.ToString() == userid).Select(a => new FireClueInfoResp
{
Id = a.Id,
CreateId = a.CreateId.ToString(),
ReportPerson = a.ReportPerson,
Lat = a.Lat,
Lng = a.Lng,
Address = a.Address,
ReportTime = a.ReportTime,
Describe = a.Describe,
SourceType = a.SourceType,
State = a.State,
AreaName = a.AreaName,
ClueNo = a.ClueNo,
}).Mapper(a => a.SourceTypeName = ((SourceType)a.SourceType).GetDescription())
.Mapper(a => a.StateName = ((State)a.State).GetDescription())
.OrderBy(a => a.ReportTime, SqlSugar.OrderByType.Desc).ToPageListAsync(pageIndex, pageSize, total);
return new Response<PageInfo<List<FireClueInfoResp>>>
{
Code = 200,
Message = "查询成功",
Result = new PageInfo<List<FireClueInfoResp>>
{
Items = list,
Total = total
}
};
}
}
}
}