using AutoMapper; using OASystem.Domain; using OASystem.Domain.Dtos.Resource; using OASystem.Domain.Entities.Resource; using OASystem.Domain.ViewModels.Resource; using SqlSugar; namespace OASystem.Infrastructure.Repositories.Resource { public class ThreeCodeRepository:BaseRepository { private readonly IMapper _mapper; public ThreeCodeRepository(SqlSugarClient sqlSugar, IMapper mapper) : base(sqlSugar) { _mapper = mapper; } /// /// sqlSugar分页查询 /// /// /// /// public async Task QueryThreeCode(QueryThreeCodeDto dto) { Result result = new Result() { Code = -2, Msg = "未知错误" }; try { string sqlWhere = string.Empty; if (!string.IsNullOrWhiteSpace(dto.City) && dto.City!="全部") { sqlWhere += string.Format(@" And City like '%{0}%'", dto.City); } if (!string.IsNullOrWhiteSpace(dto.Three)) { sqlWhere += string.Format(@" And Three like '%{0}%'", dto.Three); } sqlWhere += string.Format(@" And IsDel={0}", 0); if (!string.IsNullOrEmpty(sqlWhere.Trim())) { Regex r = new Regex("And"); sqlWhere = r.Replace(sqlWhere, "Where", 1); } if (dto.PortType == 1) { string sql = string.Format(@"select * from Res_ThreeCode {0}", sqlWhere); List ThreeCode = await _sqlSugar.SqlQueryable(sql).ToListAsync(); if (ThreeCode.Count == 0) { return result = new Result() { Code = -1, Msg = "暂无数据" }; } ThreeCode = ThreeCode.OrderByDescending(x => x.CreateTime).ToList(); if (dto.PageSize == 0 && dto.PageIndex == 0) { return result = new Result() { Code = 0, Msg = "查询成功", Data = ThreeCode, }; } else { int count = ThreeCode.Count; float totalPage = (float)count / dto.PageSize;//总页数 if (totalPage == 0) totalPage = 1; else totalPage = (int)Math.Ceiling((double)totalPage); List _ThreeCode = new List(); for (int i = 0; i < dto.PageSize; i++) { var RowIndex = i + (dto.PageIndex - 1) * dto.PageSize; if (RowIndex < ThreeCode.Count) { _ThreeCode.Add(ThreeCode[RowIndex]); } else { break; } } return result = new Result() { Code = 0, Msg = "查询成功", Data = new { pageCount = count, totalPage = (int)totalPage, pageIndex = dto.PageIndex, pageSize = dto.PageSize, pageSource = _ThreeCode }, }; } } else if (dto.PortType == 2) { string sql = string.Format(@"select * from Res_ThreeCode {0}", sqlWhere); List ThreeCode = await _sqlSugar.SqlQueryable(sql).ToListAsync(); if (ThreeCode.Count == 0) { return result = new Result() { Code = -1, Msg = "暂无数据" }; } ThreeCode = ThreeCode.OrderByDescending(x => x.CreateTime).ToList(); if (dto.PageSize == 0 && dto.PageIndex == 0) { return result = new Result() { Code = 0, Msg = "查询成功", Data = ThreeCode, }; } else { int count = ThreeCode.Count; float totalPage = (float)count / dto.PageSize;//总页数 if (totalPage == 0) totalPage = 1; else totalPage = (int)Math.Ceiling((double)totalPage); List _ThreeCode = new List(); for (int i = 0; i < dto.PageSize; i++) { var RowIndex = i + (dto.PageIndex - 1) * dto.PageSize; if (RowIndex < ThreeCode.Count) { _ThreeCode.Add(ThreeCode[RowIndex]); } else { break; } } return result = new Result() { Code = 0, Msg = "查询成功", Data = new { pageCount = count, totalPage = (int)totalPage, pageIndex = dto.PageIndex, pageSize = dto.PageSize, pageSource = _ThreeCode }, }; } } else { return result = new Result() { Code = -2, Msg = "请传入PortType参数!1:Web,2:Android,3:IOS" }; } } catch (Exception) { return result; throw; } } /// /// 添加、编辑操作 /// /// /// public async Task ThreeCodeOperation(ThreeCodeOperationDto dto) { Result result = new Result() { Code = -2, Msg = "未知错误" }; try { if (dto.Status == 1)//添加 { string selectSql = string.Format(@"select * from Res_ThreeCode where Three='{0}' and Country='{1}' and City='{2}' and AirPort='{3}'" , dto.Three, dto.Country, dto.City, dto.AirPort); var ThreeCode = await _sqlSugar.SqlQueryable(selectSql).FirstAsync();//查询是否存在 if (ThreeCode != null) { return result = new Result() { Code = -1, Msg = "该信息已存在,请勿重复添加!" }; } else//不存在,可添加 { Res_ThreeCode _ThreeCodeDto = _mapper.Map(dto); int id = await AddAsyncReturnId(_ThreeCodeDto); if (id == 0) { return result = new Result() { Code = -1, Msg = "添加失败!" }; } result = new Result() { Code = 0, Msg = "添加成功!", Data = new { Id = id } }; } } else if (dto.Status == 2)//修改 { bool res = await UpdateAsync(a => a.Id == dto.Id, a => new Res_ThreeCode { Three=dto.Three, Four=dto.Four, Country=dto.Country, City = dto.City, AirPort = dto.AirPort, AirPort_En = dto.AirPort_En, Remark = dto.Remark, }); if (!res) { return result = new Result() { Code = -1, Msg = "修改失败!" }; } result = new Result() { Code = 0, Msg = "修改成功!" }; } else { return result = new Result() { Code = -1, Msg = "请传入Status参数,1添加 2修改!" }; } } catch (Exception ex) { return result = new Result() { Code = -2, Msg = "程序错误!" }; } return result; } /// /// 三字码数组查询 /// /// 需要查询的三字码数组 /// 查询到的键值对数组 public Dictionary QueryThreeCodeArray(List codeArr) { Dictionary dic = new Dictionary(); codeArr.ForEach(code => { code = code.ToUpper(); }); var queryData = Query(x => codeArr.Contains(x.Three.ToUpper()) && x.IsDel == 0).ToList(); var groupData = queryData.GroupBy(x => x.Three).ToList(); foreach (var item in groupData) { dic.Add(item.Key, item.ToList()[0]); } return dic; } } }