TsysMessageService.cs 12 KB

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