TmtnRepairOrderService.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432
  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<TMTN_RepairOrder> 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. record = null;
  171. throw new Exception("创建失败");
  172. }
  173. return record;
  174. }
  175. public async Task<IEnumerable<TmtnRepairOrderViewModel>> GetConditionAsync(TmtnRepairOrderSearchModel searchModel)
  176. {
  177. var predicate = PredicateBuilder.New<TMTN_RepairOrder>(true);//查询条件,推荐后台使用这种方式灵活筛选
  178. #region 添加条件查询
  179. //predicate = predicate.And(i => i.C_Status.Equals("1"));
  180. if (!string.IsNullOrEmpty(searchModel.C_Status))
  181. {
  182. predicate = predicate.And(i => i.C_Status.Equals(searchModel.C_Status));
  183. }
  184. if (!string.IsNullOrEmpty(searchModel.C_DevStoreCode))
  185. {
  186. predicate = predicate.And(i => i.C_DevStoreCode.Equals(searchModel.C_DevStoreCode));
  187. }
  188. if (!string.IsNullOrEmpty(searchModel.C_ID))
  189. {
  190. predicate = predicate.And(i => i.C_ID.Equals(searchModel.C_ID));
  191. }
  192. if (!string.IsNullOrEmpty(searchModel.C_Name))
  193. {
  194. predicate = predicate.And(i => i.C_Name.Contains(searchModel.C_Name));
  195. }
  196. #endregion
  197. var list = await _repository.GetPageAsync(predicate, "C_Name,-D_CreateOn", searchModel.IsPagination, searchModel.PageIndex, searchModel.PageSize);
  198. searchModel.TotalCount = list.Totals;
  199. var dtoList = _mapper.Map<List<TMTN_RepairOrder>, List<TmtnRepairOrderViewModel>>(list.Rows);
  200. foreach (var item in dtoList)
  201. {
  202. var devStoreList = await _tmtnRepairOrderItemAppRepository.GetByConditionAsync(x => x.C_RepairOrderItemCode == item.C_ID);
  203. item.FilePaths = devStoreList.Select(x=>x.C_Url).ToList<string>();
  204. }
  205. //var repairOrderItem = _sqlDBContext.GetDbSet<TMTN_RepairOrderItem>();
  206. //var repairOrderItemApp = _sqlDBContext.GetDbSet<TMTN_RepairOrderItemApp>();
  207. //var query = from m in dtoList
  208. // join p in repairOrderItem.AsNoTracking() on m.C_ID equals p.C_RepairCode into oi
  209. // from orderItems in oi.DefaultIfEmpty()
  210. // //join k in repairOrderItemApp.AsNoTracking() on m.C_ID equals k.C_RepairOrderItemCode into oia
  211. // //from orderApps in oia.DefaultIfEmpty()
  212. // join n in repairOrderItemApp.AsNoTracking() on orderItems.C_ID equals n.C_RepairOrderItemCode into oiaa
  213. // from orderItemApps in oiaa.DefaultIfEmpty()
  214. // select new
  215. // {
  216. // infor1 = m,
  217. // infor2 = orderItems,
  218. // infor4 = orderItemApps,
  219. // };
  220. return dtoList;
  221. }
  222. public async Task<IEnumerable<TmtnRepairOrderWithImageViewModel>> GetRepairOrderWithImageAsync(TmtnRepairOrderSearchModel searchModel)
  223. {
  224. var predicate = PredicateBuilder.New<TMTN_RepairOrder>(true);//查询条件,推荐后台使用这种方式灵活筛选
  225. #region 添加条件查询
  226. //predicate = predicate.And(i => i.C_Status.Equals("1"));
  227. if (!string.IsNullOrEmpty(searchModel.C_DevStoreCode))
  228. {
  229. predicate = predicate.And(i => i.C_DevStoreCode.Equals(searchModel.C_DevStoreCode));
  230. }
  231. if (!string.IsNullOrEmpty(searchModel.C_ID))
  232. {
  233. predicate = predicate.And(i => i.C_ID.Equals(searchModel.C_ID));
  234. }
  235. if (!string.IsNullOrEmpty(searchModel.C_Name))
  236. {
  237. predicate = predicate.And(i => i.C_Name.Contains(searchModel.C_Name));
  238. }
  239. #endregion
  240. var list = await _repository.GetPageAsync(predicate, "C_Name,-D_CreateOn", searchModel.IsPagination, searchModel.PageIndex, searchModel.PageSize);
  241. searchModel.TotalCount = list.Totals;
  242. var dtoList = _mapper.Map<List<TMTN_RepairOrder>, List<TmtnRepairOrderViewModel>>(list.Rows);
  243. var devStoreList = await _tdevDevStoreRepository.GetByConditionAsync(x => x.C_ID == searchModel.C_DevStoreCode);
  244. var devStore = devStoreList.FirstOrDefault();
  245. IEnumerable<TSYS_User> userList = await _tsysUserRepository.GetAllAsync();
  246. var q = from a in dtoList
  247. join b in userList
  248. on a.C_CreateBy equals b.C_UserID
  249. select new TmtnRepairOrderWithImageViewModel
  250. {
  251. C_ID = a.C_ID,
  252. C_Name = a.C_Name,
  253. C_DevStoreCode = a.C_DevStoreCode,
  254. C_Url = a.C_Url,
  255. D_CreateOn = a.D_CreateOn,
  256. C_Status = a.C_Status,
  257. C_CreateUserName = b.C_Name,
  258. C_DevStoreName = devStore.C_Name
  259. };
  260. return q;
  261. }
  262. public async Task<IEnumerable<TmtnRepairOrderRecordDetailViewMode>> GetRecordsConditionAsync(TmtnRepairOrderRecordSearchModel searchModel)
  263. {
  264. var content = await _repository.GetRecordsConditionAsync(searchModel, _claims.Linsence);
  265. return content;
  266. }
  267. public async Task<TispRecord30DaysStatisticsViewModel> GetRecords30DaysStatisticsAsync(string storeCode)
  268. {
  269. var pagedList = await _repository.GetRecords30DaysStatisticsAsync(storeCode);
  270. TispRecord30DaysStatisticsViewModel model = new TispRecord30DaysStatisticsViewModel();
  271. object[] normal = pagedList.Select(d => d.Normal).ToArray();
  272. object[] abnormal = pagedList.Select(d => d.Abnormal).ToArray();//.ForEach(a => empIds += a.Id + ",");
  273. string[] specificDay = pagedList.Select(d => d.SpecificDay).ToArray();
  274. model.AbnormalArray = abnormal;
  275. model.NormalArray = normal;
  276. model.SpecificDayArray = specificDay;
  277. return model;
  278. }
  279. public async Task<RepairStatistics> GetRepairStatisticsAsync(string storeCode)
  280. {
  281. return await _repository.GetRepairStatisticsAsync(storeCode);
  282. }
  283. public async Task<IEnumerable<FullScreenRecordItem>> GetRepairStatisticsFullScreenAsync(string storeCode)
  284. {
  285. RepairStatistics repair = await _repository.GetRepairStatisticsAsync(storeCode);
  286. if (null == repair)
  287. {
  288. return new FullScreenRecordItem[0];
  289. }
  290. IEnumerable<FullScreenRecordItem> fullScreenRecordItems = new FullScreenRecordItem[5] {
  291. new FullScreenRecordItem
  292. {
  293. x = "取消维修",
  294. y = Convert.ToString(repair.Cancel)
  295. }
  296. ,
  297. new FullScreenRecordItem
  298. {
  299. x = "确认维修",
  300. y = Convert.ToString(repair.Confirm)
  301. }
  302. ,
  303. new FullScreenRecordItem
  304. {
  305. x = "完成维修",
  306. y = Convert.ToString(repair.Complete)
  307. }
  308. ,
  309. new FullScreenRecordItem
  310. {
  311. x = "审批中",
  312. y = Convert.ToString(repair.Approval)
  313. }
  314. ,
  315. new FullScreenRecordItem
  316. {
  317. x = "正在维修",
  318. y = Convert.ToString(repair.RepairOn)
  319. }
  320. };
  321. return await Task.FromResult(fullScreenRecordItems) ;
  322. }
  323. public async Task<TmtnRepairOrderViewModel> GetByIdAsync(string id)
  324. {
  325. var content = await _repository.GetByIdAsync(id);
  326. var contentDto = _mapper.Map<TmtnRepairOrderViewModel>(content);
  327. return contentDto;
  328. }
  329. public async Task UpdateAsync(string code, TmtnRepairOrderUpdateModel updateModel)
  330. {
  331. var items = await _repository.GetByConditionAsync(C => C.C_ID == code);
  332. var content = items.FirstOrDefault();
  333. if (content == null)
  334. {
  335. throw new Exception("没有此数据");
  336. }
  337. content.C_Status = updateModel.C_Status;
  338. content.C_LastUpdatedBy = _claims.ApiUserId;
  339. content.D_LastUpdatedOn = DateTime.Now;
  340. //_mapper.Map(updateModel, content, typeof(TmtnRepairOrderUpdateModel), typeof(TMTN_RepairOrder));
  341. //var content = _mapper.Map<TMTN_RepairOrder>(viewModel);
  342. string itemId = Guid.NewGuid().ToString();
  343. await _tmtnRepairOrderItemRepository.CreateOneAsync(new TMTN_RepairOrderItem
  344. {
  345. C_ID = itemId,
  346. C_RepairCode = content.C_ID,
  347. C_RepairRecord = updateModel.C_RepairContent,
  348. C_Remark = updateModel.C_Remark,
  349. C_CreateBy = _claims.ApiUserId,
  350. D_CreateOn = DateTime.Now,
  351. C_Status = updateModel.C_Status
  352. });
  353. await _tmtnRepairOrderItemRepository.SaveAsync();
  354. if (null != updateModel.FilePaths && updateModel.FilePaths.Any())
  355. {
  356. foreach (string imgPath in updateModel.FilePaths)
  357. {
  358. await _tmtnRepairOrderItemAppRepository.CreateOneAsync(new TMTN_RepairOrderItemApp
  359. {
  360. C_ID = Guid.NewGuid().ToString(),
  361. C_RepairOrderItemCode = itemId,
  362. C_Name = "维修更新图片",
  363. C_Url = imgPath,
  364. //C_Type = "1",
  365. C_Remark = "",
  366. C_CreateBy = _claims.ApiUserId,
  367. D_CreateOn = DateTime.Now,
  368. C_Status = "1"
  369. });
  370. var resultItemImage = await _tmtnRepairOrderItemAppRepository.SaveAsync();
  371. if (!resultItemImage)
  372. {
  373. throw new Exception("创建失败");
  374. }
  375. }
  376. }
  377. _repository.Update(content);
  378. var result = await _repository.SaveAsync();
  379. if (!result)
  380. {
  381. throw new Exception("更新失败");
  382. }
  383. }
  384. public Task<int> UpdateOneAsync(TmtnRepairOrderViewModel viewModel, params string[] fields)
  385. {
  386. throw new NotImplementedException();
  387. }
  388. public Task<bool> IsExistAsync(string id)
  389. {
  390. throw new NotImplementedException();
  391. }
  392. public Task<IEnumerable<TmtnRepairOrderViewModel>> GetByConditionAsync(Expression<Func<TmtnRepairOrderViewModel, bool>> expression)
  393. {
  394. throw new NotImplementedException();
  395. }
  396. public Task UpdateAsync(string code, TpntAreaUpdateModel updateModel)
  397. {
  398. throw new NotImplementedException();
  399. }
  400. public Task<IEnumerable<TmtnRepairOrderViewModel>> GetConditionAsync(TpntAreaSearchModel searchModel)
  401. {
  402. throw new NotImplementedException();
  403. }
  404. }
  405. }