using DocumentFormat.OpenXml.Office.CustomUI; using Infrastructure; using NPOI.SS.Util; using OpenAuth.App.BaseApp.Base; using OpenAuth.App.Interface; using OpenAuth.App.Request; using OpenAuth.App.Response; using OpenAuth.App.ServiceApp.Request; using OpenAuth.App.ServiceApp.Response; using OpenAuth.Repository; using OpenAuth.Repository.Domain; using SqlSugar; namespace OpenAuth.App { public class MiViolationReportApp : SqlSugarBaseApp { public MiViolationReportApp( ISugarUnitOfWork unitWork, ISimpleClient repository, IAuth auth ) : base(unitWork, repository, auth) { } #region 查询 /// /// 分页 /// public async Task>>> LoadAllPage(PageReq request) { //等级 var level = _auth.GetCurrentUser().Orgs.Min(a => a.Level); //路径 var cascadeId = _auth.GetCurrentUser().Orgs.Where(a => a.Level == level).First().CascadeId; RefAsync totalCount = 0; var list = await base.Repository.AsQueryable() .LeftJoin((r, o) => r.ReportUnit == o.Id.ToString()) .Where((r,o)=>o.CascadeId.Contains(cascadeId)) .ToPageListAsync(request.page, request.limit, totalCount); return new Response>> { Result = new PageInfo> { Items = list, Total = totalCount } }; } #endregion public async Task Get(string id) { //基础信息 var model = Repository.GetByIdAsync(id).MapTo(); model.Vehicles = new List(); model.SencePhotos = base.Repository.AsSugarClient() .Queryable() .Where(a => a.ViolationReportId == id) .Select(a => new SencePhoto { Image = a.Image }, true).ToList(); model.Vehicles = base.Repository.AsSugarClient() .Queryable() .Includes(a => a.MiVehicleImages) .Where(a => a.ViolationReportId == id) .Select(a => new Vehicle { LicensePlate = a.LicensePlate }, true).ToList(); return model; } /// /// 添加 /// public async Task> Add(MiViolationReport model) { var flag = await Repository.InsertAsync(model); return new Response { Result = flag, Message = flag == true ? "success" : "error" }; } /// /// 删除 /// /// public async Task> Delete(List models) { var flag = await Repository.DeleteAsync(models); return new Response { Result = flag, Message = flag == true ? "success" : "error" }; } /// /// 更新 /// /// public async Task> Update(MiViolationReport model) { bool flag = await base.Repository.UpdateAsync(model); return new Response { Result = flag, Message = flag == true ? "success" : "error" }; } /// /// 事务示例 /// /// /// public async Task> AssignModule() { using (var uwo = UnitWork.CreateContext()) { //await uwo.SysRoleElement.InsertRangeAsync(model.ElementIds.Select(a => new SysRoleElement { RoleId = model.RoleId, ElementId = a }).ToList()); var flag = uwo.Commit(); return new Response { Result = flag, Message = flag == true ? "success" : "error" }; } } public async Task> Report(MiViolationReportRequest request) { using (var uwo = UnitWork.CreateContext()) { //上报信息 var model = request.MapTo(); model.Id = Guid.NewGuid().ToString(); model.Status = "待处理"; //现场照片 var photos = request.SencePhotos.MapToList(); photos.ForEach(a => { a.Id = Guid.NewGuid().ToString(); a.ViolationReportId = model.Id; }); var vehicleList = new List(); var vehicleImageList = new List(); foreach (var item in request.Vehicles) { //车辆信息 var vehicle = item.MapTo(); vehicle.Id = Guid.NewGuid().ToString(); vehicle.ViolationReportId = model.Id; //车辆图片 var images = item.VehicleImages.MapToList(); images.ForEach(a => { a.Id = Guid.NewGuid().ToString(); a.ViolationReportId = model.Id; a.ParkingId = model.ParkingId; a.VehicleId = vehicle.Id; vehicleImageList.Add(a); }); vehicleList.Add(vehicle); } await uwo.MiViolationReport.InsertAsync(model); await uwo.MiScenePhoto.InsertRangeAsync(photos); await uwo.MiVehicle.InsertRangeAsync(vehicleList); await uwo.MiVehicleImage.InsertRangeAsync(vehicleImageList); var flag = uwo.Commit(); return new Response { Result = flag, Message = flag == true ? "success" : "error" }; } } } }