DataMaintenance
zhangbin 2025-11-07 10:26:59 +08:00
parent 312e944be7
commit a50c7c6bc3
7 changed files with 496 additions and 1 deletions

View File

@ -0,0 +1,119 @@
using DocumentFormat.OpenXml.Spreadsheet;
using DocumentFormat.OpenXml.Wordprocessing;
using Infrastructure;
using Microsoft.AspNetCore.Mvc;
using OpenAuth.App.BaseApp.Base;
using OpenAuth.App.Interface;
using OpenAuth.Repository;
using OpenAuth.Repository.Domain;
using OpenAuth.Repository.Domain.FireManagement;
using SqlSugar;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Yitter.IdGenerator;
namespace OpenAuth.App.ServiceApp.FireManagement
{
public class FireCodeH5App : SqlSugarBaseApp<FmSiteInfo, SugarDbContext>
{
public FireCodeH5App(ISugarUnitOfWork<SugarDbContext> unitWork,
ISimpleClient<FmSiteInfo> repository, IAuth auth) : base(unitWork, repository, auth)
{
_auth = auth;
}
public async Task<Response<bool>> AddEnteringInfo(FmEnteringInfo info)
{
using (SugarDbContext db = base.UnitWork.CreateContext())
{
info.Id = YitIdHelper.NextId();
info.InTime = info.InTime.Year == 0001 ? DateTime.Now : info.InTime;
if (info.RegistrationType == 0)
info.RegistrationType = 1;
//出山登记,修改进山登记时的出山时间
if (info.RegistrationType == 2)
{
var oldinfo = await db.FmEnteringInfo.AsQueryable().Where(r => r.Phone == info.Phone).OrderByDescending(r => r.InTime).FirstAsync();
if (oldinfo != null)
{
oldinfo.OutTime = DateTime.Now;
await db.FmEnteringInfo.UpdateAsync(oldinfo);
info.InTime = oldinfo.InTime;
info.OutTime = DateTime.Now;
await db.FmEnteringInfo.InsertAsync(info);
}
else
{
info.OutTime = DateTime.Now;
await db.FmEnteringInfo.InsertAsync(info);
}
}
else
{
await db.FmEnteringInfo.InsertAsync(info);
}
if (db.Commit())
{
return new Response<bool> { Result = true, Message = "操作成功" };
}
else
{
return new Response<bool> { Result = false, Message = "操作失败" };
}
}
}
public async Task<Response<PageInfo<List<dynamic>>>> LoadNameInfoByPhone(string phone, int pageIndex, int pageSize)
{
using (SugarDbContext db = base.UnitWork.CreateContext())
{
RefAsync<int> totalNumber = 0;
var query = await db.FmEnteringInfo.AsQueryable()
.Where(r => r.Phone == phone)
.Select<dynamic>(r => new
{
r.UserName,
r.Phone,
r.UserAddress,
r.CardNo
}).ToPageListAsync(pageIndex, pageSize, totalNumber);
return new Response<PageInfo<List<dynamic>>>
{
Result = new PageInfo<List<dynamic>> { Items = query, Total = totalNumber }
};
}
}
public async Task<Response<dynamic>> GetSiteInfo(long siteId)
{
using (SugarDbContext db = base.UnitWork.CreateContext())
{
RefAsync<int> totalNumber = 0;
var info = await db.FmSiteInfo.AsQueryable()
.Where(r => r.Id == siteId).Select<dynamic>(r => new
{
Id = r.Id.SelectAll(),
Accumulate = SqlFunc.Subqueryable<FmEnteringInfo>().Where(b => b.SiteId == r.Id).Count(),
}).FirstAsync();
var userinfo =await db.FmSiteUser.AsQueryable()
.LeftJoin<SysUser>((a, b) => a.SiteUserId == b.Id).Select<dynamic>((a, b) => new
{
Id = a.Id,
SiteUserId = a.SiteUserId,
SiteId = a.SiteId,
UserRole = a.UserRole,
Name = b.Name,
Phone = b.Account
}).ToListAsync();
info.SiteUser = userinfo;
return new Response<dynamic>
{
Result = info
};
}
}
}
}

View File

@ -0,0 +1,102 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OpenAuth.Repository.Domain.FireManagement
{
/// <summary>
/// 进山记录
/// </summary>
[SugarTable("fm_enteringinfo")]
public class FmEnteringInfo
{
/// <summary>
/// Desc:流水号
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey = true)]
public long Id { get; set; }
/// <summary>
/// Desc:人员名称
/// Default:
/// Nullable:True
/// </summary>
public string UserName { get; set; }
/// <summary>
/// Desc:人员电话
/// Default:
/// Nullable:True
/// </summary>
public string Phone { get; set; }
/// <summary>
/// Desc:进入方式1-扫码2-代填)
/// Default:
/// Nullable:False
/// </summary>
public int InType { get; set; }
/// <summary>
/// Desc:身份证号
/// Default:
/// Nullable:True
/// </summary>
public string CardNo { get; set; }
/// <summary>
/// Desc:联系地址
/// Default:
/// Nullable:True
/// </summary>
public string UserAddress { get; set; }
/// <summary>
/// Desc:进山时间
/// Default:
/// Nullable:True
/// </summary>
public DateTime InTime { get; set; }
/// <summary>
/// Desc:站点ID
/// Default:
/// Nullable:False
/// </summary>
public long SiteId { get; set; }
/// <summary>
/// Desc:代替人ID
/// Default:
/// Nullable:True
/// </summary>
public string CreateUserId { get; set; }
/// <summary>
/// Desc:离山时间
/// Default:
/// Nullable:True
/// </summary>
public DateTime OutTime { get; set; }
/// <summary>
/// Desc:原因
/// Default:
/// Nullable:True
/// </summary>
public string Reason { get; set; }
/// <summary>
/// Desc:登记类型1-进山2-出山)
/// Default:
/// Nullable:False
/// </summary>
public int RegistrationType { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; }
}
}

View File

@ -0,0 +1,128 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OpenAuth.Repository.Domain.FireManagement
{
/// <summary>
/// 站点信息
/// </summary>
[SugarTable("fm_siteinfo")]
public class FmSiteInfo
{
/// <summary>
/// Desc:Id
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public long Id { get; set; }
/// <summary>
/// Desc:站点名称
/// Default:
/// Nullable:True
/// </summary>
public string SiteName { get; set; }
/// <summary>
/// Desc:经度
/// Default:
/// Nullable:True
/// </summary>
public decimal? lng { get; set; }
/// <summary>
/// Desc:纬度
/// Default:
/// Nullable:True
/// </summary>
public decimal? lat { get; set; }
/// <summary>
/// Desc:是否值守
/// Default:
/// Nullable:False
/// </summary>
public bool Isonduty { get; set; }
/// <summary>
/// Desc:是否接收消息
/// Default:
/// Nullable:False
/// </summary>
public bool Isreceive { get; set; }
/// <summary>
/// Desc:状态0-未审核1-审核通过2-未通过)
/// Default:
/// Nullable:False
/// </summary>
public int State { get; set; }
/// <summary>
/// Desc:审核说明
/// Default:
/// Nullable:True
/// </summary>
public string StateContent { get; set; } = string.Empty;
/// <summary>
/// Desc:创建时间
/// Default:
/// Nullable:False
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// Desc:创建人
/// Default:
/// Nullable:True
/// </summary>
public string CreateUserId { get; set; }
/// <summary>
/// Desc:审核时间
/// Default:
/// Nullable:True
/// </summary>
public DateTime AuditTime { get; set; }
/// <summary>
/// Desc:站点图片
/// Default:
/// Nullable:True
/// </summary>
public string SiteImg { get; set; }
/// <summary>
/// Desc:站点地址
/// Default:
/// Nullable:True
/// </summary>
public string SiteAddress { get; set; }
/// <summary>
/// 负责人
/// </summary>
public string Director { get; set; }
/// <summary>
/// 负责人电话
/// </summary>
public string Phone { get; set; }
/// <summary>
/// 标语
/// </summary>
public string Slogan { get; set; }
/// <summary>
/// 站点相关人员
/// </summary>
//[SugarColumn(IsIgnore = true)]
//public List<Sugar_SiteUser> SiteUser { get; set; } = new List<Sugar_SiteUser>();
[Navigate(NavigateType.OneToMany, nameof(FmSiteUser.SiteId))]
public List<FmSiteUser> SiteUser { get; set; }
}
}

View File

@ -0,0 +1,59 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OpenAuth.Repository.Domain.FireManagement
{
/// <summary>
/// 用户站点关联表
/// </summary>
[SugarTable("fm_siteuser")]
public class FmSiteUser
{
/// <summary>
/// Desc:流水号
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey = true)]
public long Id { get; set; }
/// <summary>
/// Desc:站点id
/// Default:
/// Nullable:False
/// </summary>
public long SiteId { get; set; }
/// <summary>
/// Desc:站点管理员或接收人ID
/// Default:
/// Nullable:False
/// </summary>
public long SiteUserId { get; set; }
/// <summary>
/// Desc:人员角色1-管理员2-消息接受者)
/// Default:
/// Nullable:False
/// </summary>
public int UserRole { get; set; }
/// <summary>
/// Desc:用户姓名
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsIgnore = true)]
public string Name { get; set; }
/// <summary>
/// Desc:手机号
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsIgnore = true)]
public string Phone { get; set; }
}
}

View File

@ -80,6 +80,9 @@ namespace OpenAuth.Repository
public SugarRepositiry<FmUserPoint> FmUserPoint { get; set; }
public SugarRepositiry<FmUserPointHistory> FmUserPointHistory { get; set; }
public SugarRepositiry<FmFireclueinfoLog> FmFireclueinfoLog { get; set; }
public SugarRepositiry<FmEnteringInfo> FmEnteringInfo { get; set; }
public SugarRepositiry<FmSiteInfo> FmSiteInfo { get; set; }
public SugarRepositiry<FmSiteUser> FmSiteUser { get; set; }
#endregion
public SugarRepositiry<DmModule> DmModule { get; set; }

View File

@ -0,0 +1,84 @@
using Infrastructure;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using OpenAuth.App.ServiceApp.FireManagement;
using OpenAuth.App.ServiceApp.FireManagement.Request;
using OpenAuth.Repository.Domain.FireManagement;
namespace OpenAuth.WebApi.Controllers.ServiceControllers.FireManagement
{
/// <summary>
/// H5
/// </summary>
[Route("api/[controller]/[action]")]
[ApiController]
public class FireCodeHController : ControllerBase
{
private readonly FireCodeH5App _app;
public FireCodeHController(FireCodeH5App app)
{
_app = app;
}
/// <summary>
/// 添加进出山记录
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public async Task<Response<bool>> AddEnteringInfo(FmEnteringInfo info)
{
Response<bool> response = new Response<bool>();
try
{
return await _app.AddEnteringInfo(info);
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.InnerException?.Message ?? ex.Message;
}
return response;
}
/// <summary>
/// 根据手机号查询登记过的人员信息
/// </summary>
/// <param name="pointName"></param>
/// <param name="page"></param>
/// <param name="limit"></param>
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public async Task<Response<PageInfo<List<dynamic>>>> LoadNameInfoByPhone(string phone, int page, int limit)
{
Response<PageInfo<List<dynamic>>> response = new Response<PageInfo<List<dynamic>>>();
try
{
return await _app.LoadNameInfoByPhone(phone, page, limit);
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.InnerException?.Message ?? ex.Message;
}
return response;
}
[HttpGet]
[AllowAnonymous]
public async Task<Response<dynamic>> GetSiteInfo(long siteId)
{
Response<dynamic> response = new Response<dynamic>();
try
{
return await _app.GetSiteInfo(siteId);
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.InnerException?.Message ?? ex.Message;
}
return response;
}
}
}

View File

@ -8,7 +8,7 @@
"DataProtection": "temp-keys/",
"ConnectionStrings": {
//"OpenAuthDBContext": "PORT=5432;Database=hopetrycore;HOST=192.168.10.124;PASSWORD=123456;USER ID=postgres;",
"OpenAuthDBContext": "PORT=5432;Database=DataMaintenance;HOST=192.168.10.163;PASSWORD=123456;USER ID=postgres;Max Pool Size=200"
"OpenAuthDBContext": "PORT=5432;Database=DataMaintenance;HOST=192.168.10.163;PASSWORD=123456;USER ID=postgres;"
//"OpenAuthDBContext": "PORT=5432;Database=;HOST=192.168.10.131;PASSWORD=123456;USER ID=postgres;"
},
"AppSetting": {