TmtnRepairOrderService.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. using AutoMapper;
  2. using LinqKit;
  3. using Microsoft.EntityFrameworkCore;
  4. using Ropin.Inspection.Common.Accessor.Interface;
  5. using Ropin.Inspection.Model;
  6. using Ropin.Inspection.Model.Entities;
  7. using Ropin.Inspection.Model.ViewModel;
  8. using Ropin.Inspection.Repository;
  9. using Ropin.Inspection.Repository.Interface;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Linq;
  13. using System.Linq.Expressions;
  14. using System.Text;
  15. using System.Threading.Tasks;
  16. namespace Ropin.Inspection.Service
  17. {
  18. public class TmtnRepairOrderService : ITmtnRepairOrderService
  19. {
  20. private readonly ITmtnRepairOrderRepository _repository;
  21. private readonly IMapper _mapper;
  22. private readonly IClaimsAccessor _claims;
  23. private readonly ITmtnRepairOrderItemRepository _tmtnRepairOrderItemRepository;
  24. private readonly ITmtnRepairOrderItemAppRepository _tmtnRepairOrderItemAppRepository;
  25. private readonly ITsysUserRepository _tsysUserRepository;
  26. private readonly ITdevDevStoreRepository _tdevDevStoreRepository;
  27. private readonly InspectionDbContext _sqlDBContext;
  28. public TmtnRepairOrderService(IClaimsAccessor claims, InspectionDbContext sqlDBContext, ITmtnRepairOrderItemRepository tmtnRepairOrderItemRepository, ITdevDevStoreRepository tdevDevStoreRepository, ITsysUserRepository tsysUserRepository, ITmtnRepairOrderRepository repository, ITmtnRepairOrderItemAppRepository tmtnRepairOrderItemAppRepository, IMapper mapper)
  29. {
  30. _repository = repository;
  31. _tmtnRepairOrderItemAppRepository = tmtnRepairOrderItemAppRepository;
  32. _mapper = mapper;
  33. _claims = claims;
  34. _tsysUserRepository = tsysUserRepository;
  35. _tdevDevStoreRepository = tdevDevStoreRepository;
  36. _tmtnRepairOrderItemRepository = tmtnRepairOrderItemRepository;
  37. _sqlDBContext = sqlDBContext;
  38. }
  39. public async Task CreateOneAsync(TmtnRepairOrderViewModel viewModel)
  40. {
  41. var content = _mapper.Map<TMTN_RepairOrder>(viewModel);
  42. content.C_ID = Guid.NewGuid().ToString();
  43. content.C_CreateBy = _claims.ApiUserId;
  44. content.D_CreateOn = DateTime.Now;
  45. content.C_Status = "1";
  46. _repository.Create(content);
  47. var result = await _repository.SaveAsync();
  48. if (!result)
  49. {
  50. throw new Exception("创建失败");
  51. }
  52. }
  53. public async Task DeleteAsync(string id)
  54. {
  55. var content = await _repository.GetByIdAsync(id);
  56. if (content == null)
  57. {
  58. throw new Exception("数据库中没有此数据");
  59. }
  60. //_repository.Delete(content);
  61. //var result = await _repository.SaveAsync();
  62. content.C_LastUpdatedBy = _claims.ApiUserId;
  63. content.D_LastUpdatedOn = DateTime.Now;
  64. content.C_Status = "0";
  65. _repository.Update(content);
  66. var result = await _repository.SaveAsync();
  67. if (!result)
  68. {
  69. throw new Exception("删除失败");
  70. }
  71. }
  72. //public async Task DeleteAsync(string code)
  73. //{
  74. // var items = await _repository.GetByConditionAsync(C => C.C_ID == code);
  75. // var content = items.FirstOrDefault();
  76. // if (content == null)
  77. // {
  78. // throw new Exception("没有此数据");
  79. // }
  80. // content.C_LastUpdatedBy = _claims.ApiUserId;
  81. // content.D_LastUpdatedOn = DateTime.Now;
  82. // content.C_Status = "0";
  83. // _repository.Update(content);
  84. // var result = await _repository.SaveAsync();
  85. // if (!result)
  86. // {
  87. // throw new Exception("删除失败");
  88. // }
  89. //}
  90. public async Task<IEnumerable<TmtnRepairOrderViewModel>> GetAllAsync()
  91. {
  92. var pagedList = await _repository.GetAllAsync();
  93. var contentDtoList = _mapper.Map<IEnumerable<TmtnRepairOrderViewModel>>(pagedList.Where(i => i.C_Status == "1").ToList());
  94. return contentDtoList.ToList();
  95. }
  96. public async Task CreateRepairOrderAsync(TmtnRepairOrderViewModel content)
  97. {
  98. //var contentDto = _mapper.Map<TmtnRepairOrderViewModel>(content);
  99. TMTN_RepairOrder record = new TMTN_RepairOrder();
  100. record.C_Name = content.C_Name;
  101. record.C_DevStoreCode = content.C_DevStoreCode;
  102. record.C_RepairContent = content.C_RepairContent;
  103. record.C_Remark = content.C_Remark;
  104. record.C_ID = Guid.NewGuid().ToString();
  105. record.C_CreateBy = _claims.ApiUserId;
  106. record.D_CreateOn = DateTime.Now;
  107. record.C_Status = "1";
  108. string itemId = Guid.NewGuid().ToString();
  109. await _tmtnRepairOrderItemRepository.CreateOneAsync(new TMTN_RepairOrderItem
  110. {
  111. C_ID = itemId,
  112. C_RepairCode = record.C_ID,
  113. C_RepairRecord = content.C_RepairContent,
  114. C_Remark = content.C_Remark,
  115. C_CreateBy = _claims.ApiUserId,
  116. D_CreateOn = DateTime.Now,
  117. C_Status = "1"
  118. });
  119. await _tmtnRepairOrderItemRepository.SaveAsync();
  120. if (null != content.FilePaths && content.FilePaths.Any())
  121. {
  122. foreach (string imgPath in content.FilePaths)
  123. {
  124. await _tmtnRepairOrderItemAppRepository.CreateRangeAsync(new List<TMTN_RepairOrderItemApp>{ new TMTN_RepairOrderItemApp
  125. {
  126. C_ID = Guid.NewGuid().ToString(),
  127. C_RepairOrderItemCode = record.C_ID, //record.C_ID后期调整,itemId
  128. C_Name = "故障上报记录图片",
  129. C_Url = imgPath,
  130. //C_Type = "1",
  131. C_Remark = "",
  132. C_CreateBy = _claims.ApiUserId,
  133. D_CreateOn = DateTime.Now,
  134. C_Status = "1"
  135. }, new TMTN_RepairOrderItemApp
  136. {
  137. C_ID = Guid.NewGuid().ToString(),
  138. C_RepairOrderItemCode = itemId, //record.C_ID后期调整,itemId
  139. C_Name = "故障上报记录图片",
  140. C_Url = imgPath,
  141. //C_Type = "1",
  142. C_Remark = "",
  143. C_CreateBy = _claims.ApiUserId,
  144. D_CreateOn = DateTime.Now,
  145. C_Status = "1"
  146. }});
  147. //await _tmtnRepairOrderItemAppRepository.CreateOneAsync(new TMTN_RepairOrderItemApp
  148. // {
  149. // C_ID = Guid.NewGuid().ToString(),
  150. // C_RepairOrderItemCode = itemId, //record.C_ID后期调整,itemId
  151. // C_Name = "故障上报记录图片",
  152. // C_Url = imgPath,
  153. // //C_Type = "1",
  154. // C_Remark = "",
  155. // C_CreateBy = _claims.ApiUserId,
  156. // D_CreateOn = DateTime.Now,
  157. // C_Status = "1"
  158. // });
  159. // var resultItemImage = await _tmtnRepairOrderItemAppRepository.SaveAsync();
  160. // if (!resultItemImage)
  161. // {
  162. // throw new Exception("创建失败");
  163. // }
  164. }
  165. }
  166. _repository.Create(record);
  167. var result = await _repository.SaveAsync();
  168. if (!result)
  169. {
  170. throw new Exception("创建失败");
  171. }
  172. }
  173. public async Task<IEnumerable<TmtnRepairOrderViewModel>> GetConditionAsync(TmtnRepairOrderSearchModel searchModel)
  174. {
  175. var predicate = PredicateBuilder.New<TMTN_RepairOrder>(true);//查询条件,推荐后台使用这种方式灵活筛选
  176. #region 添加条件查询
  177. //predicate = predicate.And(i => i.C_Status.Equals("1"));
  178. if (!string.IsNullOrEmpty(searchModel.C_Status))
  179. {
  180. predicate = predicate.And(i => i.C_Status.Equals(searchModel.C_Status));
  181. }
  182. if (!string.IsNullOrEmpty(searchModel.C_DevStoreCode))
  183. {
  184. predicate = predicate.And(i => i.C_DevStoreCode.Equals(searchModel.C_DevStoreCode));
  185. }
  186. if (!string.IsNullOrEmpty(searchModel.C_ID))
  187. {
  188. predicate = predicate.And(i => i.C_ID.Equals(searchModel.C_ID));
  189. }
  190. if (!string.IsNullOrEmpty(searchModel.C_Name))
  191. {
  192. predicate = predicate.And(i => i.C_Name.Contains(searchModel.C_Name));
  193. }
  194. #endregion
  195. var list = await _repository.GetPageAsync(predicate, "C_Name,-D_CreateOn", searchModel.IsPagination, searchModel.PageIndex, searchModel.PageSize);
  196. searchModel.TotalCount = list.Totals;
  197. var dtoList = _mapper.Map<List<TMTN_RepairOrder>, List<TmtnRepairOrderViewModel>>(list.Rows);
  198. foreach (var item in dtoList)
  199. {
  200. var devStoreList = await _tmtnRepairOrderItemAppRepository.GetByConditionAsync(x => x.C_RepairOrderItemCode == item.C_ID);
  201. item.FilePaths = devStoreList.Select(x=>x.C_Url).ToList<string>();
  202. }
  203. //var repairOrderItem = _sqlDBContext.GetDbSet<TMTN_RepairOrderItem>();
  204. //var repairOrderItemApp = _sqlDBContext.GetDbSet<TMTN_RepairOrderItemApp>();
  205. //var query = from m in dtoList
  206. // join p in repairOrderItem.AsNoTracking() on m.C_ID equals p.C_RepairCode into oi
  207. // from orderItems in oi.DefaultIfEmpty()
  208. // //join k in repairOrderItemApp.AsNoTracking() on m.C_ID equals k.C_RepairOrderItemCode into oia
  209. // //from orderApps in oia.DefaultIfEmpty()
  210. // join n in repairOrderItemApp.AsNoTracking() on orderItems.C_ID equals n.C_RepairOrderItemCode into oiaa
  211. // from orderItemApps in oiaa.DefaultIfEmpty()
  212. // select new
  213. // {
  214. // infor1 = m,
  215. // infor2 = orderItems,
  216. // infor4 = orderItemApps,
  217. // };
  218. return dtoList;
  219. }
  220. public async Task<IEnumerable<TmtnRepairOrderWithImageViewModel>> GetRepairOrderWithImageAsync(TmtnRepairOrderSearchModel searchModel)
  221. {
  222. var predicate = PredicateBuilder.New<TMTN_RepairOrder>(true);//查询条件,推荐后台使用这种方式灵活筛选
  223. #region 添加条件查询
  224. //predicate = predicate.And(i => i.C_Status.Equals("1"));
  225. if (!string.IsNullOrEmpty(searchModel.C_DevStoreCode))
  226. {
  227. predicate = predicate.And(i => i.C_DevStoreCode.Equals(searchModel.C_DevStoreCode));
  228. }
  229. if (!string.IsNullOrEmpty(searchModel.C_ID))
  230. {
  231. predicate = predicate.And(i => i.C_ID.Equals(searchModel.C_ID));
  232. }
  233. if (!string.IsNullOrEmpty(searchModel.C_Name))
  234. {
  235. predicate = predicate.And(i => i.C_Name.Contains(searchModel.C_Name));
  236. }
  237. #endregion
  238. var list = await _repository.GetPageAsync(predicate, "C_Name,-D_CreateOn", searchModel.IsPagination, searchModel.PageIndex, searchModel.PageSize);
  239. searchModel.TotalCount = list.Totals;
  240. var dtoList = _mapper.Map<List<TMTN_RepairOrder>, List<TmtnRepairOrderViewModel>>(list.Rows);
  241. var devStoreList = await _tdevDevStoreRepository.GetByConditionAsync(x => x.C_ID == searchModel.C_DevStoreCode);
  242. var devStore = devStoreList.FirstOrDefault();
  243. IEnumerable<TSYS_User> userList = await _tsysUserRepository.GetAllAsync();
  244. var q = from a in dtoList
  245. join b in userList
  246. on a.C_CreateBy equals b.C_UserID
  247. select new TmtnRepairOrderWithImageViewModel
  248. {
  249. C_ID = a.C_ID,
  250. C_Name = a.C_Name,
  251. C_DevStoreCode = a.C_DevStoreCode,
  252. C_Url = a.C_Url,
  253. D_CreateOn = a.D_CreateOn,
  254. C_Status = a.C_Status,
  255. C_CreateUserName = b.C_Name,
  256. C_DevStoreName = devStore.C_Name
  257. };
  258. return q;
  259. }
  260. public async Task<IEnumerable<TmtnRepairOrderRecordDetailViewMode>> GetRecordsConditionAsync(TmtnRepairOrderRecordSearchModel searchModel)
  261. {
  262. var content = await _repository.GetRecordsConditionAsync(searchModel, _claims.Linsence);
  263. return content;
  264. }
  265. public async Task<TispRecord30DaysStatisticsViewModel> GetRecords30DaysStatisticsAsync(string storeCode)
  266. {
  267. var pagedList = await _repository.GetRecords30DaysStatisticsAsync(storeCode);
  268. TispRecord30DaysStatisticsViewModel model = new TispRecord30DaysStatisticsViewModel();
  269. object[] normal = pagedList.Select(d => d.Normal).ToArray();
  270. object[] abnormal = pagedList.Select(d => d.Abnormal).ToArray();//.ForEach(a => empIds += a.Id + ",");
  271. string[] specificDay = pagedList.Select(d => d.SpecificDay).ToArray();
  272. model.AbnormalArray = abnormal;
  273. model.NormalArray = normal;
  274. model.SpecificDayArray = specificDay;
  275. return model;
  276. }
  277. public async Task<RepairStatistics> GetRepairStatisticsAsync(string storeCode)
  278. {
  279. return await _repository.GetRepairStatisticsAsync(storeCode);
  280. }
  281. public async Task<IEnumerable<FullScreenRecordItem>> GetRepairStatisticsFullScreenAsync(string storeCode)
  282. {
  283. RepairStatistics repair = await _repository.GetRepairStatisticsAsync(storeCode);
  284. if (null == repair)
  285. {
  286. return new FullScreenRecordItem[0];
  287. }
  288. IEnumerable<FullScreenRecordItem> fullScreenRecordItems = new FullScreenRecordItem[5] {
  289. new FullScreenRecordItem
  290. {
  291. x = "取消维修",
  292. y = Convert.ToString(repair.Cancel)
  293. }
  294. ,
  295. new FullScreenRecordItem
  296. {
  297. x = "确认维修",
  298. y = Convert.ToString(repair.Confirm)
  299. }
  300. ,
  301. new FullScreenRecordItem
  302. {
  303. x = "完成维修",
  304. y = Convert.ToString(repair.Complete)
  305. }
  306. ,
  307. new FullScreenRecordItem
  308. {
  309. x = "审批中",
  310. y = Convert.ToString(repair.Approval)
  311. }
  312. ,
  313. new FullScreenRecordItem
  314. {
  315. x = "正在维修",
  316. y = Convert.ToString(repair.RepairOn)
  317. }
  318. };
  319. return await Task.FromResult(fullScreenRecordItems) ;
  320. }
  321. public async Task<TmtnRepairOrderViewModel> GetByIdAsync(string id)
  322. {
  323. var content = await _repository.GetByIdAsync(id);
  324. var contentDto = _mapper.Map<TmtnRepairOrderViewModel>(content);
  325. return contentDto;
  326. }
  327. public async Task UpdateAsync(string code, TmtnRepairOrderUpdateModel updateModel)
  328. {
  329. var items = await _repository.GetByConditionAsync(C => C.C_ID == code);
  330. var content = items.FirstOrDefault();
  331. if (content == null)
  332. {
  333. throw new Exception("没有此数据");
  334. }
  335. content.C_Status = updateModel.C_Status;
  336. content.C_LastUpdatedBy = _claims.ApiUserId;
  337. content.D_LastUpdatedOn = DateTime.Now;
  338. //_mapper.Map(updateModel, content, typeof(TmtnRepairOrderUpdateModel), typeof(TMTN_RepairOrder));
  339. //var content = _mapper.Map<TMTN_RepairOrder>(viewModel);
  340. string itemId = Guid.NewGuid().ToString();
  341. await _tmtnRepairOrderItemRepository.CreateOneAsync(new TMTN_RepairOrderItem
  342. {
  343. C_ID = itemId,
  344. C_RepairCode = content.C_ID,
  345. C_RepairRecord = updateModel.C_RepairContent,
  346. C_Remark = updateModel.C_Remark,
  347. C_CreateBy = _claims.ApiUserId,
  348. D_CreateOn = DateTime.Now,
  349. C_Status = updateModel.C_Status
  350. });
  351. await _tmtnRepairOrderItemRepository.SaveAsync();
  352. if (null != updateModel.FilePaths && updateModel.FilePaths.Any())
  353. {
  354. foreach (string imgPath in updateModel.FilePaths)
  355. {
  356. await _tmtnRepairOrderItemAppRepository.CreateOneAsync(new TMTN_RepairOrderItemApp
  357. {
  358. C_ID = Guid.NewGuid().ToString(),
  359. C_RepairOrderItemCode = itemId,
  360. C_Name = "维修更新图片",
  361. C_Url = imgPath,
  362. //C_Type = "1",
  363. C_Remark = "",
  364. C_CreateBy = _claims.ApiUserId,
  365. D_CreateOn = DateTime.Now,
  366. C_Status = "1"
  367. });
  368. var resultItemImage = await _tmtnRepairOrderItemAppRepository.SaveAsync();
  369. if (!resultItemImage)
  370. {
  371. throw new Exception("创建失败");
  372. }
  373. }
  374. }
  375. _repository.Update(content);
  376. var result = await _repository.SaveAsync();
  377. if (!result)
  378. {
  379. throw new Exception("更新失败");
  380. }
  381. }
  382. public Task<int> UpdateOneAsync(TmtnRepairOrderViewModel viewModel, params string[] fields)
  383. {
  384. throw new NotImplementedException();
  385. }
  386. public Task<bool> IsExistAsync(string id)
  387. {
  388. throw new NotImplementedException();
  389. }
  390. public Task<IEnumerable<TmtnRepairOrderViewModel>> GetByConditionAsync(Expression<Func<TmtnRepairOrderViewModel, bool>> expression)
  391. {
  392. throw new NotImplementedException();
  393. }
  394. public Task UpdateAsync(string code, TpntAreaUpdateModel updateModel)
  395. {
  396. throw new NotImplementedException();
  397. }
  398. public Task<IEnumerable<TmtnRepairOrderViewModel>> GetConditionAsync(TpntAreaSearchModel searchModel)
  399. {
  400. throw new NotImplementedException();
  401. }
  402. }
  403. }