using AutoMapper; using LinqKit; using Ropin.Inspection.Common.Accessor.Interface; using Ropin.Inspection.Common.Helper; using Ropin.Inspection.Model; using Ropin.Inspection.Model.Entities; using Ropin.Inspection.Repository; using Ropin.Inspection.Repository.Interface; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace Ropin.Inspection.Service { public class TmtnPushMsgToService : ITmtnPushMsgToService { private readonly ITmtnPushMsgToRepository _repository; private readonly IMapper _mapper; private readonly IClaimsAccessor _claims; private readonly IHttpClientFactory _httpClientFactory; private readonly ITmtnPushMsgResultRepository _tmtnPushMsgResultRepository; public TmtnPushMsgToService(IClaimsAccessor claims, IHttpClientFactory httpClientFactory, ITmtnPushMsgToRepository repository, ITmtnPushMsgResultRepository tmtnPushMsgResultRepository, IMapper mapper) { _repository = repository; _mapper = mapper; _claims = claims; _httpClientFactory = httpClientFactory; _tmtnPushMsgResultRepository = tmtnPushMsgResultRepository; } public async Task CreateOneAsync(TmtnPushMsgToViewModel viewModel) { var content = _mapper.Map(viewModel); content.C_ID = Guid.NewGuid().ToString(); content.C_CreateBy = _claims.ApiUserId; content.D_CreateOn = DateTime.Now; //content.C_Status = "1"; _repository.Create(content); var result = await _repository.SaveAsync(); if (!result) { throw new Exception("创建失败"); } } public async Task CreatePushMsgToListAsync(IEnumerable viewModelList) { var itemList = await _repository.GetByConditionAsync(C => C.C_DevStoreCode == viewModelList.FirstOrDefault().C_DevStoreCode); var bResult = await _repository.RemoveRangeAsync(itemList); var contentList = _mapper.Map>(viewModelList); foreach (var item in contentList) { item.C_ID = Guid.NewGuid().ToString(); item.C_CreateBy = _claims.ApiUserId; item.D_CreateOn = DateTime.Now; } var result = await _repository.CreateRangeAsync(contentList); if (result>0) { } else { throw new Exception("创建失败"); } } public async Task CreatePushMsgToHaveListAsync(TmtnPushMsgToListCreateModel content) { await _repository.DeleteByDevPersonIdAsync(content.C_DevStoreCode, content.C_PushPersonCode); IList pushMsgToList = new List(); foreach (var typeItem in content.MsgTypeCodeList) { foreach (var pushItem in content.PushTypeCodeList) { TMTN_PushMsgTo pushMsgTo = new TMTN_PushMsgTo(); pushMsgTo.C_ID = Guid.NewGuid().ToString(); pushMsgTo.C_CreateBy = _claims.ApiUserId; pushMsgTo.D_CreateOn = DateTime.Now; pushMsgTo.C_DevStoreCode = content.C_DevStoreCode; pushMsgTo.C_PushPersonCode = content.C_PushPersonCode; pushMsgTo.C_MsgTypeCode = typeItem; pushMsgTo.C_PushTypeCode = pushItem; pushMsgToList.Add(pushMsgTo); } } var result = await _repository.CreateRangeAsync(pushMsgToList); } public async Task DeleteByDevPersonIdAsync(TmtnPushMsgToListDelete model) { string pushPersonStr = string.Join("','", model.pushPersonList); int result= await _repository.DeleteByDevPersonIdMultipleAsync(model.C_DevStoreCode, pushPersonStr); return result>0; } public async Task DeleteAsync(Guid id) { var content = await _repository.GetByIdAsync(id.ToString()); if (content == null) { throw new Exception("数据库中没有此数据"); } //_repository.Delete(content); //var result = await _repository.SaveAsync(); //content.C_LastUpdatedBy = _claims.ApiUserId; //content.D_LastUpdatedOn = DateTime.Now; //content.C_Status = "0"; _repository.Update(content); var result = await _repository.SaveAsync(); if (!result) { throw new Exception("删除失败"); } } public async Task DeleteAsync(string code) { var items = await _repository.GetByConditionAsync(C => C.C_ID == code); var content = items.FirstOrDefault(); if (content == null) { throw new Exception("没有此数据"); } //content.C_LastUpdatedBy = _claims.ApiUserId; //content.D_LastUpdatedOn = DateTime.Now; //content.C_Status = "0"; _repository.Update(content); var result = await _repository.SaveAsync(); if (!result) { throw new Exception("删除失败"); } } public async Task> GetAllAsync() { var pagedList = await _repository.GetAllAsync(); var contentDtoList = _mapper.Map>(pagedList.ToList()); return contentDtoList.ToList(); } public async Task> GetConditionAsync(TmtnPushMsgToSearchModel searchModel) { var predicate = PredicateBuilder.New(true);//查询条件,推荐后台使用这种方式灵活筛选 #region 添加条件查询 //predicate = predicate.And(i => i.C_Status.Equals("1")); if (!string.IsNullOrEmpty(searchModel.C_DevStoreCode)) { predicate = predicate.And(i => i.C_DevStoreCode.Equals(searchModel.C_DevStoreCode)); } if (!string.IsNullOrEmpty(searchModel.C_ID)) { predicate = predicate.And(i => i.C_ID.Equals(searchModel.C_ID)); } if (!string.IsNullOrEmpty(searchModel.C_PushPersonCode)) { predicate = predicate.And(i => i.C_PushPersonCode.Equals(searchModel.C_PushPersonCode)); } if (!string.IsNullOrEmpty(searchModel.C_MsgTypeCode)) { predicate = predicate.And(i => i.C_MsgTypeCode.Equals(searchModel.C_MsgTypeCode)); } if (!string.IsNullOrEmpty(searchModel.C_PushTypeCode)) { predicate = predicate.And(i => i.C_PushTypeCode.Equals(searchModel.C_PushTypeCode)); } #endregion var list = await _repository.GetPageAsync(predicate, "C_DevStoreCode,-D_CreateOn", searchModel.IsPagination, searchModel.PageIndex, searchModel.PageSize); searchModel.TotalCount = list.Totals; var dtoList = _mapper.Map, List>(list.Rows); //List userList = new UserTokenBLL().GetAllList(); //var query = from a in dtoList // join b in userList // on a.C_CreateBy equals b.C_UserID // select new SubjectBookViewModel // { // K_ID = a.K_ID, // C_StoreCode = a.C_StoreCode, // C_Code = a.C_Code, // C_Name = a.C_Name, // C_Type = a.C_Type, // C_ParentCode = a.C_ParentCode, // C_SubjectPath = a.C_SubjectPath, // I_Sort = a.I_Sort, // C_Remark = a.C_Remark, // C_CreateBy = a.C_CreateBy, // C_CreateByName = b.C_Name, // D_CreateOn = a.D_CreateOn, // C_LastUpdatedBy = a.C_LastUpdatedBy, // C_LastUpdatedByName = b.C_Name, // D_LastUpdatedOn = a.D_LastUpdatedOn, // C_Status = a.C_Status, // }; //return query.ToList(); return dtoList; } public async Task> GetPushMsgToHaveListAsync(TmtnPushMsgToSearchModel searchModel) { var predicate = PredicateBuilder.New(true);//查询条件,推荐后台使用这种方式灵活筛选 #region 添加条件查询 //predicate = predicate.And(i => i.C_Status.Equals("1")); if (!string.IsNullOrEmpty(searchModel.C_DevStoreCode)) { predicate = predicate.And(i => i.C_DevStoreCode.Equals(searchModel.C_DevStoreCode)); } if (!string.IsNullOrEmpty(searchModel.C_ID)) { predicate = predicate.And(i => i.C_ID.Equals(searchModel.C_ID)); } if (!string.IsNullOrEmpty(searchModel.C_PushPersonCode)) { predicate = predicate.And(i => i.C_PushPersonCode.Equals(searchModel.C_PushPersonCode)); } if (!string.IsNullOrEmpty(searchModel.C_MsgTypeCode)) { predicate = predicate.And(i => i.C_MsgTypeCode.Equals(searchModel.C_MsgTypeCode)); } if (!string.IsNullOrEmpty(searchModel.C_PushTypeCode)) { predicate = predicate.And(i => i.C_PushTypeCode.Equals(searchModel.C_PushTypeCode)); } #endregion var list = await _repository.GetPageAsync(predicate, "C_DevStoreCode,-D_CreateOn", searchModel.IsPagination, searchModel.PageIndex, searchModel.PageSize); searchModel.TotalCount = list.Totals; //list.Rows.GroupBy(x => x.C_MsgTypeCode).Select(g=>new // ) var dtoList = _mapper.Map, List>(list.Rows); return dtoList; } public async Task GetByIdAsync(Guid id) { var content = await _repository.GetByIdAsync(id.ToString()); var contentDto = _mapper.Map(content); return contentDto; } public async Task UpdateAsync(string code, TmtnPushMsgToUpdateModel updateModel) { var items = await _repository.GetByConditionAsync(C => C.C_ID == code); var content = items.FirstOrDefault(); if (content == null) { throw new Exception("没有此数据"); } //content.C_LastUpdatedBy = _claims.ApiUserId; //content.D_LastUpdatedOn = DateTime.Now; _mapper.Map(updateModel, content, typeof(TmtnPushMsgToUpdateModel), typeof(TMTN_PushMsgTo)); _repository.Update(content); var result = await _repository.SaveAsync(); if (!result) { throw new Exception("更新失败"); } } public async Task> GetPushMsgToUsersByAsync(string devStoreCode) { var users = await _repository.GetPushMsgToUsersByAsync(devStoreCode); return users; } public async Task GetPushMsgTosByAsync(string devStoreCode, string userCode) { var conten = await _repository.GetPushMsgTosByAsync(devStoreCode, userCode); return conten; } public async Task PushAlarmMsgAsync(TpushMsgModel pushModel) { var conten = await _repository.PushAlarmMsgAsync(pushModel); return conten; } public async Task PushMsgAsync(string devStoreCode,string msgTypeCode, TmtnPushMsgResultCreateModel createModel) { var users = await _repository.GetPushMsgUserByAsync(devStoreCode, msgTypeCode); var msg = new { thing2 = new { value = "niu" ?? "" }, time4 = new { value = DateTime.Now.ToString("yyyy-MM-dd hh:mm") }, thing5 = new { value = "异常" ?? "" }, thing6 = new { value = "大门损坏" ?? "" }, thing9 = new { value = "msg" ?? "" } }; List userlist = users.Where(x=>x.C_WechatID!=null).Select(x=>x.C_WechatID).ToList(); new WeChatHelper(_httpClientFactory).PushMessageToUser(userlist, msg); var content = _mapper.Map(createModel); content.C_ID = Guid.NewGuid().ToString(); content.C_CreateBy = _claims.ApiUserId; content.D_CreateOn = DateTime.Now; content.C_Status = "1"; _tmtnPushMsgResultRepository.Create(content); var result = await _repository.SaveAsync(); if (!result) { throw new Exception("创建失败"); } } public Task UpdateOneAsync(TmtnPushMsgToViewModel viewModel, params string[] fields) { throw new NotImplementedException(); } public Task IsExistAsync(Guid id) { throw new NotImplementedException(); } public Task> GetByConditionAsync(Expression> expression) { throw new NotImplementedException(); } public Task UpdateAsync(string code, TpntAreaUpdateModel updateModel) { throw new NotImplementedException(); } public Task> GetConditionAsync(TpntAreaSearchModel searchModel) { throw new NotImplementedException(); } } }