using DocumentFormat.OpenXml.EMMA; using Infrastructure; using NPOI.SS.Formula.Functions; using OpenAuth.App.BaseApp.Base; using OpenAuth.App.Interface; using OpenAuth.App.Request; using OpenAuth.App.Response; using OpenAuth.App.ServiceApp.MiManager.Request; using OpenAuth.Repository; using OpenAuth.Repository.Domain; using Org.BouncyCastle.Ocsp; using SqlSugar; namespace OpenAuth.App { public class MiVehiclePickupApp : SqlSugarBaseApp { public MiVehiclePickupApp( ISugarUnitOfWork unitWork, ISimpleClient repository, IAuth auth ) : base(unitWork, repository, auth) { } #region 查询 /// /// 电脑端分页查询 /// public async Task>>> LoadAllPage(MiVehiclePickUpreq req) { RefAsync totalCount = 0; var user=_auth.GetCurrentUser(); var users = user.User; //如果不是超级管理员 if(user != null && users.Id != -1) { //查询所有子部门 List orgidlist = new List(); var orgs = user.Orgs?.Select(r => r.Id).ToList(); using (var uow = base.UnitWork.CreateContext()) { foreach (var item in orgs) { orgidlist.Add(item.ToString()); var allchilds = uow.SysOrg.AsQueryable().ToChildList(r => r.ParentId, item); if (allchilds.Count > 0) { orgidlist = orgidlist.Concat(allchilds.Select(r => r.Id.ToString())).ToList(); } } var list = await uow.MiVehiclePickup.AsQueryable() .WhereIF(req.begindate != null && req.enddate != null, p => p.InitiateTime >= req.begindate && p.InitiateTime < req.enddate) .WhereIF(req.status != null, p => p.Status == req.status) .LeftJoin((p, r) => p.ViolationReportId == r.Id) .Where((p, r) => orgidlist.Contains(r.HandlingUnit)) .LeftJoin((p, r, m) => r.MinePointId == m.Id) .LeftJoin((p, r, m, u) => p.Initiator == u.Id.ToString()) .WhereIF(!string.IsNullOrEmpty(req.pointname), (p, r, m, u) => m.Name.Contains(req.pointname)) .WhereIF(!string.IsNullOrEmpty(req.key), (p, r, m, u) => u.Name.Contains(req.key)) .OrderByDescending((p, r, m, u) => p.InitiateTime) .Select((p, r, m, u) => new { Id = p.Id.SelectAll(), InitiatorName = u.Name, PointName = m.Name }) .ToPageListAsync(req.page, req.limit, totalCount); return new Response>> { Result = new PageInfo> { Items = list, Total = totalCount } }; } } else { var list = await base.Repository.AsQueryable() .WhereIF(req.begindate != null && req.enddate != null, p => p.InitiateTime >= req.begindate && p.InitiateTime < req.enddate) .WhereIF(req.status != null, p => p.Status == req.status) .LeftJoin((p, r) => p.ViolationReportId == r.Id) .LeftJoin((p, r, m) => r.MinePointId == m.Id) .LeftJoin((p, r, m, u) => p.Initiator == u.Id.ToString()) .WhereIF(!string.IsNullOrEmpty(req.pointname), (p, r, m, u) => m.Name.Contains(req.pointname)) .WhereIF(!string.IsNullOrEmpty(req.key), (p, r, m, u) => u.Name.Contains(req.key)) .OrderByDescending((p, r, m, u)=>p.InitiateTime) .Select((p, r, m, u) => new { Id = p.Id.SelectAll(), InitiatorName = u.Name, PointName = m.Name }) .ToPageListAsync(req.page, req.limit, totalCount); return new Response>> { Result = new PageInfo> { Items = list, Total = totalCount } }; } } /// /// app扫码查询当前停车场提车信息 /// /// /// public async Task>> Loadpickupinfo(string parkingid) { var list = await base.Repository.AsQueryable() .Where(p => p.Status == 1) .LeftJoin((p, r) => p.ViolationReportId == r.Id) .Where((p, r)=>r.ParkingId==parkingid) .LeftJoin((p, r, m) => r.MinePointId == m.Id) .LeftJoin((p, r, m, u) => p.Initiator == u.Id.ToString()) .OrderByDescending(p => p.InitiateTime) .Select((p, r, m, u) => new { Id = p.Id.SelectAll(), InitiatorName = u.Name, PointName = m.Name }).ToListAsync(); return new Response> { Result = list }; } #endregion public async Task Get(object id) { return await Repository.GetByIdAsync(id); } /// /// 添加 /// public async Task> Add(MiVehiclePickup model) { if (string.IsNullOrEmpty(model.ViolationReportId)) { throw new Exception("请指定违法信息"); } using (var uow = base.UnitWork.CreateContext()) { model.Id = Guid.NewGuid().ToString(); model.InitiateTime = DateTime.Now; model.Status = 0; await uow.MiVehiclePickup.InsertAsync(model); var violat = await base.Repository.ChangeRepository>().AsQueryable().Where(R => R.Id == model.ViolationReportId).FirstAsync(); violat.Status = 2; await uow.MiViolationReport.UpdateAsync(violat); var flag=uow.Commit(); return new Response { Result = flag, Message = flag == true ? "success" : "error" }; } } /// /// 删除 /// /// public async Task> Delete(List ids) { var flag = await Repository.DeleteAsync(r=>ids.Contains(r.Id)); return new Response { Result = flag, Message = flag == true ? "success" : "error" }; } /// /// 更新 /// /// public async Task> Update(MiVehiclePickup model) { bool flag = await base.Repository.UpdateAsync(model); return new Response { Result = flag, Message = flag == true ? "success" : "error" }; } /// /// 审核 /// /// public async Task> PickUpAudit(PickUpAuditReq model) { var user=_auth.GetCurrentUser().User; var info=await base.Repository.AsQueryable().Where(R=>R.Id== model.Id).FirstAsync(); var violat = await base.Repository.ChangeRepository>().AsQueryable().Where(R => R.Id == info.ViolationReportId).FirstAsync(); if (info != null) { using (var uow = base.UnitWork.CreateContext()) { if (model.Isagree) { info.Status = 1; } else { info.Status = 2; } info.ReviewComments = model.ReviewComments; info.Reviewer = user.Id.ToString(); info.ReviewTime = DateTime.Now; await uow.MiVehiclePickup.UpdateAsync(info); violat.Status = 3; await uow.MiViolationReport.UpdateAsync(violat); var flag = uow.Commit(); return new Response { Result = flag, Message = flag == true ? "success" : "error" }; } } else { throw new Exception("数据丢失"); } } /// /// 提车 /// /// /// /// public async Task> PickUpCar(PickupCar model) { var user = _auth.GetCurrentUser().User; var info = await base.Repository.AsQueryable().Where(R => R.Id == model.Id).FirstAsync(); var violat = await base.Repository.ChangeRepository>().AsQueryable().Where(R => R.Id == info.ViolationReportId).FirstAsync(); if (info != null) { using (var uow = base.UnitWork.CreateContext()) { info.Status = 3; await uow.MiVehiclePickup.UpdateAsync(info); violat.Status = 4; await uow.MiViolationReport.UpdateAsync(violat); var flag=uow.Commit(); return new Response { Result = flag, Message = flag == true ? "success" : "error" }; } } else { throw new Exception("数据丢失"); } } /// /// 事务示例 /// /// /// 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" }; } } } }