TsysMessageService.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. using AutoMapper;
  2. using LinqKit;
  3. using Newtonsoft.Json;
  4. using Ropin.Inspection.Common.Accessor.Interface;
  5. using Ropin.Inspection.Common.Helper;
  6. using Ropin.Inspection.Model;
  7. using Ropin.Inspection.Model.Entities;
  8. using Ropin.Inspection.Repository;
  9. using Ropin.Inspection.Repository.Interface;
  10. using Ropin.Inspection.Repository.SYS.Interface;
  11. using System;
  12. using System.Collections.Generic;
  13. using System.Linq;
  14. using System.Linq.Expressions;
  15. using System.Text;
  16. using System.Threading.Tasks;
  17. namespace Ropin.Inspection.Service
  18. {
  19. public class TsysMessageService : ITsysMessageService
  20. {
  21. private readonly ITsysMessageRepository _repository;
  22. private readonly ITsysMessageFileRepository _tsysMessageFileRepository;
  23. private readonly IMapper _mapper;
  24. private readonly IClaimsAccessor _claims;
  25. private readonly IUnitOfWork _unitOfWork;
  26. public TsysMessageService(IClaimsAccessor claims, ITsysMessageRepository repository, IMapper mapper, ITsysMessageFileRepository tsysMessageFileRepository, IUnitOfWork unitOfWork)
  27. {
  28. _repository = repository;
  29. _mapper = mapper;
  30. _claims = claims;
  31. _tsysMessageFileRepository = tsysMessageFileRepository;
  32. _unitOfWork = unitOfWork;
  33. }
  34. public async Task CreateOneAsync(TsysMessageViewModel viewModel)
  35. {
  36. bool result = false;
  37. try
  38. {
  39. _unitOfWork.BeginTransaction();
  40. var content = _mapper.Map<TSYS_Message>(viewModel);
  41. content.C_ID = Guid.NewGuid().ToString();
  42. content.C_CreateBy = _claims.ApiUserId.ToString();
  43. content.D_CreateOn = DateTime.Now;
  44. content.C_Status = "1";
  45. result = await _unitOfWork.RegisterNew(content);
  46. if (!result)
  47. {
  48. throw new Exception("创建失败");
  49. }
  50. if (viewModel.fileList != null && viewModel.fileList.Count > 0)
  51. {
  52. List<TSYS_MessageFile> fileList = new List<TSYS_MessageFile>();
  53. foreach (var item in viewModel.fileList)
  54. {
  55. TSYS_MessageFile app = new TSYS_MessageFile
  56. {
  57. C_ID = Guid.NewGuid().ToString(),
  58. C_MessageCode= content.C_ID,
  59. C_Url = item.C_Url,
  60. C_Type = item.C_Type,
  61. C_CreateBy = _claims.ApiUserId.ToString(),
  62. D_CreateOn = DateTime.Now,
  63. C_Status = "1"
  64. };
  65. fileList.Add(app);
  66. }
  67. if (fileList.Count > 0)
  68. {
  69. result = await _unitOfWork.RegisterRangeNew(fileList);
  70. }
  71. }
  72. }
  73. catch
  74. {
  75. _unitOfWork.Rollback();
  76. throw;
  77. }
  78. finally
  79. {
  80. if (result)
  81. await _unitOfWork.CommitAsync();
  82. else
  83. _unitOfWork.Rollback();
  84. }
  85. }
  86. public async Task<bool> AddMessage(AlmRecordOutput almRecord)
  87. {
  88. var IsData = await _repository.GetByConditionAsync(t => t.C_GenerationCode == almRecord.Id.ToString());
  89. var dataList = IsData.ToList();
  90. if (dataList != null && dataList.Count() > 0)
  91. {
  92. return true;
  93. }
  94. bool result = false;
  95. try
  96. {
  97. _unitOfWork.BeginTransaction();
  98. TSYS_Message content = new TSYS_Message();
  99. content.C_ID = Guid.NewGuid().ToString();
  100. content.C_LicenseCode = "SYSTEM";
  101. content.C_Content = almRecord.Event_Name;
  102. content.C_DevStoreCode = "d705ceb5-7473-4b19-91dd-d3eff223f05b";
  103. content.C_MsgTypeCode = "MSG_TYPE_024";
  104. content.C_Subject = almRecord.Device_TypeName + "报警";
  105. content.D_MsgCreateOn = almRecord.StartTime;
  106. content.C_GenerationCode= almRecord.Id.ToString();
  107. content.I_GenerationType = 1;
  108. content.I_MsgStatus = 1;
  109. content.C_Remark = "来源:AI项目报警处理";
  110. content.C_CreateBy = "6e864cbc-5252-11ec-8681-fa163e02b3e4";
  111. content.C_Creator = "AI";
  112. content.D_CreateOn = DateTime.Now;
  113. content.C_Status = "1";
  114. result = await _unitOfWork.RegisterNew(content);
  115. if (!result)
  116. {
  117. throw new Exception("创建失败");
  118. }
  119. else
  120. {
  121. var textJson = new
  122. {
  123. PanoramaId=almRecord.PanoramaId,
  124. PanoramaUrl=almRecord.PanoramaUrl,
  125. RoiJson=almRecord.RoiJson,
  126. NonRoiJson=almRecord.NonRoiJson,
  127. DetectionFrameJson=almRecord.DetectionFrameJson
  128. };
  129. var datas = JsonConvert.SerializeObject(textJson);
  130. TSYS_MessageFile app = new TSYS_MessageFile
  131. {
  132. C_ID = Guid.NewGuid().ToString(),
  133. C_MessageCode = content.C_ID,
  134. C_Type = "FILE_TYP_006",
  135. C_Text = datas,
  136. C_CreateBy = "6e864cbc-5252-11ec-8681-fa163e02b3e4",
  137. D_CreateOn = DateTime.Now,
  138. C_Status = "1"
  139. };
  140. result = await _unitOfWork.RegisterNew(app);
  141. }
  142. }
  143. catch
  144. {
  145. _unitOfWork.Rollback();
  146. throw;
  147. }
  148. finally
  149. {
  150. if (result)
  151. await _unitOfWork.CommitAsync();
  152. else
  153. _unitOfWork.Rollback();
  154. }
  155. return result;
  156. }
  157. public async Task DeleteAsync(string id)
  158. {
  159. var content = await _repository.GetByIdAsync(id);
  160. if (content == null)
  161. {
  162. throw new Exception("数据库中没有此数据");
  163. }
  164. //_repository.Delete(content);
  165. //var result = await _repository.SaveAsync();
  166. content.C_LastUpdatedBy = _claims.ApiUserId.ToString();
  167. content.D_LastUpdatedOn = DateTime.Now;
  168. content.C_Status = "0";
  169. _repository.Update(content);
  170. var result = await _repository.SaveAsync();
  171. if (!result)
  172. {
  173. throw new Exception("删除失败");
  174. }
  175. }
  176. public async Task<IEnumerable<TsysMessageViewModel>> GetAllAsync()
  177. {
  178. var pagedList = await _repository.GetAllAsync();
  179. var contentDtoList = _mapper.Map<IEnumerable<TsysMessageViewModel>>(pagedList.Where(i => i.C_Status == "1").ToList());
  180. return contentDtoList.ToList();
  181. }
  182. public async Task<IEnumerable<TsysMessageViewModel>> GetConditionAsync(TsysMessageSearchModel searchModel)
  183. {
  184. return await _repository.GetList(searchModel);
  185. }
  186. public async Task<IEnumerable<TsysMessageModel>> GetConditionScreenAsync(TsysMessageSearchModel searchModel)
  187. {
  188. IEnumerable<TsysMessageViewModel> data= await _repository.GetList(searchModel);
  189. IEnumerable<TsysMessageModel> result = _mapper.Map<IEnumerable<TsysMessageViewModel>, IEnumerable<TsysMessageModel>>(data);
  190. return result;
  191. }
  192. public async Task<TsysMessageViewModel> GetByIdAsync(string id)
  193. {
  194. TsysMessageSearchModel searchModel = new TsysMessageSearchModel();
  195. searchModel.C_ID = id;
  196. searchModel.IsPagination = false;
  197. var content = await _repository.GetList(searchModel);
  198. if (content == null)
  199. {
  200. return null;
  201. }
  202. else
  203. {
  204. var contentDto = content.FirstOrDefault();
  205. if (contentDto != null)
  206. {
  207. TsysMessageFileSearchModel fileSearch = new TsysMessageFileSearchModel();
  208. fileSearch.C_MessageCode = id; fileSearch.IsPagination = false; fileSearch.C_Status = "1";
  209. contentDto.fileList = (List<MessageFileViewModel>)await _tsysMessageFileRepository.GetList(fileSearch);
  210. }
  211. return contentDto;
  212. }
  213. }
  214. public async Task UpdateAsync(string id, TsysMessageUpdateModel updateModel)
  215. {
  216. var content = await _repository.GetByIdAsync(id);
  217. if (content == null)
  218. {
  219. throw new Exception("没有此数据");
  220. }
  221. _mapper.Map(updateModel, content, typeof(TsysMessageUpdateModel), typeof(TSYS_Message));
  222. content.C_LastUpdatedBy = _claims.ApiUserId.ToString();
  223. content.D_LastUpdatedOn = DateTime.Now;
  224. _repository.Update(content);
  225. var result = await _repository.SaveAsync();
  226. if (result)
  227. {
  228. if (updateModel.DelFile!=null&&updateModel.DelFile.Count>0)
  229. {
  230. var delFileResult= await _tsysMessageFileRepository.DeleteMultitByID(updateModel.DelFile,null);
  231. }
  232. if (updateModel.fileList != null && updateModel.fileList.Count > 0)
  233. {
  234. List<TSYS_MessageFile> fileList = new List<TSYS_MessageFile>();
  235. foreach (var item in updateModel.fileList)
  236. {
  237. TSYS_MessageFile app = new TSYS_MessageFile
  238. {
  239. C_ID = Guid.NewGuid().ToString(),
  240. C_MessageCode = content.C_ID,
  241. C_Url = item.C_Url,
  242. C_Type = item.C_Type,
  243. C_CreateBy = _claims.ApiUserId.ToString(),
  244. D_CreateOn = DateTime.Now,
  245. C_Status = "1"
  246. };
  247. fileList.Add(app);
  248. }
  249. if (fileList.Count > 0)
  250. {
  251. result = await _tsysMessageFileRepository.CreateRangeAsync(fileList)>0;
  252. }
  253. }
  254. }
  255. if (!result)
  256. {
  257. throw new Exception("更新失败");
  258. }
  259. }
  260. public async Task UpdateMsgStatusAsync(string id, int msgStatus)
  261. {
  262. var result = await _repository.UpdateMsgStatus(id,msgStatus);
  263. if (!result)
  264. {
  265. throw new Exception("更新失败");
  266. }
  267. }
  268. public Task<int> UpdateOneAsync(TsysMessageViewModel viewModel, params string[] fields)
  269. {
  270. throw new NotImplementedException();
  271. }
  272. public Task<IEnumerable<TsysMessageViewModel>> GetByConditionAsync(Expression<Func<TsysMessageViewModel, bool>> expression)
  273. {
  274. throw new NotImplementedException();
  275. }
  276. public Task<bool> IsExistAsync(string id)
  277. {
  278. throw new NotImplementedException();
  279. }
  280. }
  281. }