using Furion.DependencyInjection; using Nirvana.Common; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Waste.Domain; namespace Waste.Application { /// /// 苏州设备接入平台管理 /// public class SZPltService : ISZPltService, ITransient { private readonly ISqlSugarRepository repository; private readonly SqlSugarClient dbClient; private readonly ISuZhouService _suZhouService; public SZPltService(ISqlSugarRepository sqlSugarRepository, ISuZhouService suZhouService) { repository = sqlSugarRepository; dbClient = repository.Context; _suZhouService = suZhouService; } /// /// 删除地产区域 /// /// /// public async Task DeleteAddressAsync(Guid id) { var data = await dbClient.Queryable().FirstAsync(x => x.Id == id); if (data == null) { return new ResultInfo(ResultState.FAIL, "记录未找到"); } var result = await _suZhouService.DeleteEstates(data.AdId); if (result.code != ResultState.SUCCESS) { return result; } //删除数据中的 await dbClient.Deleteable().Where(x => x.Id == id).ExecuteCommandAsync(); return new ResultInfo(ResultState.SUCCESS, "删除成功"); } /// /// 删除采集点 /// /// /// public async Task DeleteCollectAsync(Guid id) { var tdbClient = repository.Change().Context; var data = await tdbClient.Queryable().FirstAsync(x => x.Id == id); if (data == null) { return new ResultInfo(ResultState.FAIL, "记录未找到"); } var result = await _suZhouService.DeleteCollect(data.CoId); if (result.code != ResultState.SUCCESS) { return result; } //删除数据中的 await dbClient.Deleteable().Where(x => x.Id == id).ExecuteCommandAsync(); return new ResultInfo(ResultState.SUCCESS, "删除成功"); } /// /// 地产区域详情 /// /// /// public async Task DetailAddressAsync(Guid id) { return await dbClient.Queryable().FirstAsync(x => x.Id == id); } /// /// 采集点详情 /// /// /// public async Task DetailCollectAsync(Guid id) { var tdbClient = repository.Change().Context; return await tdbClient.Queryable().FirstAsync(x => x.Id == id); } /// /// 获取地产区域所有列表 /// /// public async Task> GetAddressAllListAsync() { return await dbClient.Queryable().ToListAsync(); } /// /// 获取地产区域列表 /// /// /// public async Task> GetAddressListAsync(QueryParams param) { RefAsync totalnum = 0; var temquery = dbClient.Queryable(); if (param.queryParam != null && param.queryParam.Count > 0) { List conModels = new List(); param.queryParam.ForEach(x => { if (!string.IsNullOrEmpty(x.Value)) { conModels.Add(new ConditionalModel() { FieldName = x.Name, ConditionalType = (ConditionalType)x.Type, FieldValue = x.Value.Trim() }); } }); if (conModels.Count > 0) { temquery = temquery.Where(conModels); } } string sorts = string.Format("{0} {1}", param.sort, param.order); var query = await temquery.OrderBy(sorts) .ToPageListAsync(param.offset, param.limit, totalnum); return new PageParms { page = param.offset, Items = query, totalnum = totalnum, limit = param.limit }; } /// /// 获取采集点列表 /// /// /// public async Task> GetCollectListAsync(QueryParams param) { var tdbClient = repository.Change().Context; RefAsync totalnum = 0; var temquery = tdbClient.Queryable(); if (param.queryParam != null && param.queryParam.Count > 0) { List conModels = new List(); param.queryParam.ForEach(x => { if (!string.IsNullOrEmpty(x.Value)) { conModels.Add(new ConditionalModel() { FieldName = x.Name, ConditionalType = (ConditionalType)x.Type, FieldValue = x.Value.Trim() }); } }); if (conModels.Count > 0) { temquery = temquery.Where(conModels); } } string sorts = string.Format("{0} {1}", param.sort, param.order); var query = await temquery.OrderBy(sorts) .Select(x => new SZCollectList { Id = x.Id, Addr = x.Addr, Code = x.Code, CreateTime = x.CreateTime, EstateId = x.EstateId, Name = x.Name }) .Mapper((it, cache) => { var allestate = cache.Get(list => { var ids = list.Select(x => Guid.Parse(x.EstateId)).ToList(); return dbClient.Queryable().Where(e => ids.Contains(e.Id)).ToList(); }); it.AddressName = allestate.FirstOrDefault(x => x.Id ==Guid.Parse(it.EstateId))?.Name; }) .ToPageListAsync(param.offset, param.limit, totalnum); return new PageParms { page = param.offset, Items = query, totalnum = totalnum, limit = param.limit }; } /// /// 地产区域信息提交 /// /// /// public async Task SubmitAddressFormAsync(W_SZAddress data) { data.Code = data.Code.ToStr(); data.Name = data.Name.ToStr(); data.Addr = data.Addr.ToStr(); data.City = data.City.ToStr(); data.Area = data.Area.ToStr(); data.Street = data.Street.ToStr(); if (string.IsNullOrEmpty(data.Code)) { return new ResultInfo(ResultState.FAIL, "编号不可为空"); } if (data.Code.Length < 2 || data.Code.Length > 32) { return new ResultInfo(ResultState.FAIL, "编号长度范围在2-32位"); } if (string.IsNullOrEmpty(data.Addr)) { return new ResultInfo(ResultState.FAIL, "所在地址不可为空"); } if (data.Addr.Length < 4 || data.Addr.Length > 128) { return new ResultInfo(ResultState.FAIL, "编号长度范围在4-128位"); } if (string.IsNullOrEmpty(data.City)) { return new ResultInfo(ResultState.FAIL, "城市编码不可为空"); } if (string.IsNullOrEmpty(data.Name)) { return new ResultInfo(ResultState.FAIL, "名称不可为空"); } if (data.Name.Length < 2 || data.Name.Length > 32) { return new ResultInfo(ResultState.FAIL, "名称长度范围在2-32位"); } if (string.IsNullOrEmpty(data.Area)) { return new ResultInfo(ResultState.FAIL, "区域编码不可为空"); } if (string.IsNullOrEmpty(data.Street)) { return new ResultInfo(ResultState.FAIL, "街道编码不可为空"); } if (data.Id != Guid.Empty) { if (await dbClient.Queryable().AnyAsync(x => x.Code == data.Code && x.Id != data.Id)) { return new ResultInfo(ResultState.FAIL, "此编号已存在"); } var addata = await dbClient.Queryable().FirstAsync(x => x.Id == data.Id); //先删除,再增加 var result = await _suZhouService.DeleteEstates(addata.AdId); if (result.code != ResultState.SUCCESS) { return result; } result = await _suZhouService.PostEstatesAsync(new EstatesC2SDto { Addr = data.Addr, Street = data.Street, Area = data.Area, City = data.City, Code = data.Code, Name = data.Name }); if (result.code != ResultState.SUCCESS) { return result; } string adid = result.data.ToString(); await dbClient.Updateable().SetColumns(x => new W_SZAddress { Addr = data.Addr, Street = data.Street, AdId = adid, Area = data.Area, City = data.City, Code = data.Code, Name = data.Name }).Where(x => x.Id == data.Id).ExecuteCommandAsync(); return new ResultInfo(ResultState.SUCCESS, "修改成功"); } else { if (await dbClient.Queryable().AnyAsync(x => x.Code == data.Code)) { return new ResultInfo(ResultState.FAIL, "此编号已存在"); } var result = await _suZhouService.PostEstatesAsync(new EstatesC2SDto { Addr = data.Addr, Street = data.Street, Area = data.Area, City = data.City, Code = data.Code, Name = data.Name }); if (result.code != ResultState.SUCCESS) { return result; } data.AdId = result.data.ToString(); data.CreateTime = DateTime.Now; await dbClient.Insertable(data).ExecuteCommandAsync(); return new ResultInfo(ResultState.SUCCESS, "添加成功"); } } /// /// 采集点信息提交 /// /// /// public async Task SubmitCollectFormAsync(W_SZCollect data) { data.Code = data.Code.ToStr(); data.Name = data.Name.ToStr(); data.Addr = data.Addr.ToStr(); var tdbClient = repository.Change().Context; if (string.IsNullOrEmpty(data.Code)) { return new ResultInfo(ResultState.FAIL, "编号不可为空"); } if (data.Code.Length < 2 || data.Code.Length > 32) { return new ResultInfo(ResultState.FAIL, "编号长度范围在2-32位"); } if (string.IsNullOrEmpty(data.Addr)) { return new ResultInfo(ResultState.FAIL, "所在地址不可为空"); } if (data.Addr.Length < 4 || data.Addr.Length > 128) { return new ResultInfo(ResultState.FAIL, "地址长度范围在4-128位"); } if (string.IsNullOrEmpty(data.Name)) { return new ResultInfo(ResultState.FAIL, "名称不可为空"); } if (data.Name.Length < 2 || data.Name.Length > 32) { return new ResultInfo(ResultState.FAIL, "名称长度范围在2-32位"); } Guid eid = Guid.Parse(data.EstateId); var address = await dbClient.Queryable().FirstAsync(x => x.Id == eid); if (address == null) { return new ResultInfo(ResultState.FAIL, "地产区域未找到"); } if (data.Id != Guid.Empty) { if (await tdbClient.Queryable().AnyAsync(x => x.Code == data.Code && x.Id != data.Id)) { return new ResultInfo(ResultState.FAIL, "此编号已存在"); } var addata = await tdbClient.Queryable().FirstAsync(x => x.Id == data.Id); //先删除,再增加 var result = await _suZhouService.DeleteCollect(addata.CoId); if (result.code != ResultState.SUCCESS) { return result; } result = await _suZhouService.PostCollectAsync(new CollectC2SDto { Addr = data.Addr, Code = data.Code, Estate = address.AdId, Name = data.Name }); if (result.code != ResultState.SUCCESS) { return result; } string adid = result.data.ToString(); await tdbClient.Updateable().SetColumns(x => new W_SZCollect { Addr = data.Addr, Code = data.Code, Name = data.Name, CoId = adid, EstateId = data.EstateId }).Where(x => x.Id == data.Id).ExecuteCommandAsync(); return new ResultInfo(ResultState.SUCCESS, "修改成功"); } else { if (await tdbClient.Queryable().AnyAsync(x => x.Code == data.Code)) { return new ResultInfo(ResultState.FAIL, "此编号已存在"); } var result = await _suZhouService.PostCollectAsync(new CollectC2SDto { Addr = data.Addr, Code = data.Code, Estate = address.AdId, Name = data.Name }); if (result.code != ResultState.SUCCESS) { return result; } data.CoId = result.data.ToString(); data.CreateTime = DateTime.Now; await tdbClient.Insertable(data).ExecuteCommandAsync(); return new ResultInfo(ResultState.SUCCESS, "添加成功"); } } } }