TmtnRepairOrderItemService.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  1. using AutoMapper;
  2. using Google.Protobuf;
  3. using LinqKit;
  4. using Microsoft.EntityFrameworkCore;
  5. using Newtonsoft.Json;
  6. using Ropin.Inspection.Common.Accessor.Interface;
  7. using Ropin.Inspection.Model;
  8. using Ropin.Inspection.Model.Entities;
  9. using Ropin.Inspection.Repository;
  10. using Ropin.Inspection.Repository.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 TmtnRepairOrderItemService : ITmtnRepairOrderItemService
  20. {
  21. private readonly ITmtnRepairOrderItemRepository _repository;
  22. private readonly IMapper _mapper;
  23. private readonly IClaimsAccessor _claims;
  24. private readonly ITmtnRepairOrderItemAppRepository _tmtnRepairOrderItemAppRepository;
  25. private readonly ITmtnRepairOrderRepository _tmtnRepairOrderRepository;
  26. private readonly ITsysUserRepository _tsysUserRepository;
  27. private readonly ITdevDevStoreRepository _tdevDevStoreRepository;
  28. private readonly InspectionDbContext _sqlDBContext;
  29. public TmtnRepairOrderItemService(IClaimsAccessor claims, InspectionDbContext sqlDBContext, ITmtnRepairOrderRepository tmtnRepairOrderRepository, ITdevDevStoreRepository tdevDevStoreRepository, ITsysUserRepository tsysUserRepository, ITmtnRepairOrderItemRepository repository, ITmtnRepairOrderItemAppRepository tmtnRepairOrderItemAppRepository, IMapper mapper)
  30. {
  31. _repository = repository;
  32. _tmtnRepairOrderItemAppRepository = tmtnRepairOrderItemAppRepository;
  33. _tmtnRepairOrderRepository = tmtnRepairOrderRepository;
  34. _mapper = mapper;
  35. _claims = claims;
  36. _tsysUserRepository = tsysUserRepository;
  37. _tdevDevStoreRepository = tdevDevStoreRepository;
  38. _sqlDBContext = sqlDBContext;
  39. }
  40. public async Task CreateOneAsync(TmtnRepairOrderItemViewModel viewModel)
  41. {
  42. var content = _mapper.Map<TMTN_RepairOrderItem>(viewModel);
  43. content.C_ID = Guid.NewGuid().ToString();
  44. content.C_CreateBy = _claims.ApiUserId;
  45. content.D_CreateOn = DateTime.Now;
  46. content.C_Status = "1";
  47. _repository.Create(content);
  48. var result = await _repository.SaveAsync();
  49. if (!result)
  50. {
  51. throw new Exception("创建失败");
  52. }
  53. }
  54. public async Task DeleteAsync(Guid id)
  55. {
  56. var content = await _repository.GetByIdAsync(id);
  57. if (content == null)
  58. {
  59. throw new Exception("数据库中没有此数据");
  60. }
  61. //_repository.Delete(content);
  62. //var result = await _repository.SaveAsync();
  63. content.C_LastUpdatedBy = _claims.ApiUserId;
  64. content.D_LastUpdatedOn = DateTime.Now;
  65. content.C_Status = "0";
  66. _repository.Update(content);
  67. var result = await _repository.SaveAsync();
  68. if (!result)
  69. {
  70. throw new Exception("删除失败");
  71. }
  72. }
  73. public async Task DeleteAsync(string code)
  74. {
  75. var items = await _repository.GetByConditionAsync(C => C.C_ID == code);
  76. var content = items.FirstOrDefault();
  77. if (content == null)
  78. {
  79. throw new Exception("没有此数据");
  80. }
  81. content.C_LastUpdatedBy = _claims.ApiUserId;
  82. content.D_LastUpdatedOn = DateTime.Now;
  83. content.C_Status = "0";
  84. _repository.Update(content);
  85. var result = await _repository.SaveAsync();
  86. if (!result)
  87. {
  88. throw new Exception("删除失败");
  89. }
  90. }
  91. public async Task<IEnumerable<TmtnRepairOrderItemViewModel>> GetAllAsync()
  92. {
  93. var pagedList = await _repository.GetAllAsync();
  94. var contentDtoList = _mapper.Map<IEnumerable<TmtnRepairOrderItemViewModel>>(pagedList.Where(i => i.C_Status == "1").ToList());
  95. return contentDtoList.ToList();
  96. }
  97. public async Task CreateRepairOrderItemAsync(TmtnRepairOrderItemViewModel content)
  98. {
  99. var repairOrder = await _tmtnRepairOrderRepository.GetByIdAsync(content.C_RepairCode);
  100. if (repairOrder == null)
  101. {
  102. throw new Exception("没有此维修工单数据");
  103. }
  104. repairOrder.C_LastUpdatedBy = _claims.ApiUserId;
  105. repairOrder.D_LastUpdatedOn = DateTime.Now;
  106. repairOrder.C_Status = "4";
  107. _tmtnRepairOrderRepository.Update(repairOrder);
  108. var result = await _tmtnRepairOrderRepository.SaveAsync();
  109. if (!result)
  110. {
  111. throw new Exception("更新失败");
  112. }
  113. var record = _mapper.Map<TMTN_RepairOrderItem>(content);
  114. record.C_ID = Guid.NewGuid().ToString();
  115. record.C_CreateBy = _claims.ApiUserId;
  116. record.D_CreateOn = DateTime.Now;
  117. record.C_Status = "4";
  118. if (null != content.FilePaths && content.FilePaths.Any())
  119. {
  120. foreach (string imgPath in content.FilePaths)
  121. {
  122. await _tmtnRepairOrderItemAppRepository.CreateOneAsync(new TMTN_RepairOrderItemApp
  123. {
  124. C_ID = Guid.NewGuid().ToString(),
  125. C_RepairOrderItemCode = record.C_ID,
  126. C_Name = "维修记录",
  127. C_Url = imgPath,
  128. //C_Type = "1",
  129. C_Remark = "",
  130. C_CreateBy = _claims.ApiUserId,
  131. D_CreateOn = DateTime.Now,
  132. C_Status = "1"
  133. });
  134. var resultItemImage = await _tmtnRepairOrderItemAppRepository.SaveAsync();
  135. if (!resultItemImage)
  136. {
  137. throw new Exception("创建失败");
  138. }
  139. }
  140. }
  141. _repository.Create(record);
  142. result = await _repository.SaveAsync();
  143. if (!result)
  144. {
  145. throw new Exception("创建失败");
  146. }
  147. }
  148. public async Task<IEnumerable<TmtnRepairOrderItemViewModel>> GetConditionAsync(TmtnRepairOrderItemSearchModel searchModel)
  149. {
  150. var predicate = PredicateBuilder.New<TMTN_RepairOrderItem>(true);//查询条件,推荐后台使用这种方式灵活筛选
  151. #region 添加条件查询
  152. //predicate = predicate.And(i => i.C_Status.Equals("1"));
  153. if (!string.IsNullOrEmpty(searchModel.C_RepairCode))
  154. {
  155. predicate = predicate.And(i => i.C_RepairCode.Equals(searchModel.C_RepairCode));
  156. }
  157. if (!string.IsNullOrEmpty(searchModel.C_ID))
  158. {
  159. predicate = predicate.And(i => i.C_ID.Equals(searchModel.C_ID));
  160. }
  161. #endregion
  162. var list = await _repository.GetPageAsync(predicate, "D_CreateOn", searchModel.IsPagination, searchModel.PageIndex, searchModel.PageSize);
  163. searchModel.TotalCount = list.Totals;
  164. var dtoList = _mapper.Map<List<TMTN_RepairOrderItem>, List<TmtnRepairOrderItemViewModel>>(list.Rows);
  165. foreach (var item in dtoList)
  166. {
  167. var devStoreList = await _tmtnRepairOrderItemAppRepository.GetByConditionAsync(x => x.C_RepairOrderItemCode == item.C_ID);
  168. item.FilePaths = devStoreList.Select(x=>x.C_Url).ToList<string>();
  169. //item.DevOpsRecordSolidWaste = JsonConvert.DeserializeObject<SolidWaste>(item.C_Remark);
  170. }
  171. return dtoList;
  172. }
  173. public async Task<TmtnRepairOrderItemDetailViewMode> GetRepairOrderItemAsync(string devId,string repairId)
  174. {
  175. var vm = new TmtnRepairOrderItemDetailViewMode();
  176. var sysUsers = _sqlDBContext.GetDbSet<TSYS_User>().AsNoTracking().Where(x => x.C_Status == "1");
  177. var repairOrderItemSet = _sqlDBContext.GetDbSet<TMTN_RepairOrderItem>();
  178. var orderItem_group_datas = await (from orderItem in repairOrderItemSet.AsNoTracking().Where(t => t.C_RepairCode == repairId)
  179. join user in sysUsers on orderItem.C_CreateBy equals user.C_UserID
  180. //orderby orderItem.D_CreateOn ascending
  181. group orderItem by new { orderItem.C_ID, orderItem.C_Remark, orderItem.C_RepairRecord, orderItem.C_Status, orderItem.C_Url, orderItem.D_CreateOn, user.C_Name } into sg
  182. select new RepairOrderItemViewMode
  183. {
  184. C_ID = sg.Key.C_ID,
  185. D_CreateOn = sg.Key.D_CreateOn,
  186. C_Remark = sg.Key.C_Remark,
  187. C_Url = sg.Key.C_Url,
  188. C_Status = sg.Key.C_Status,
  189. C_RepairRecord = sg.Key.C_RepairRecord,
  190. CreateUserName = sg.Key.C_Name,
  191. }).OrderBy(x=>x.D_CreateOn).ToListAsync();
  192. vm.RepairOrderRecordItems = orderItem_group_datas;
  193. var store_dev =await (from devStore in _sqlDBContext.GetDbSet<TDEV_DevStore>().AsNoTracking().Where(t => t.C_ID == devId)
  194. join store in _sqlDBContext.GetDbSet<TPNT_Store>().AsNoTracking() on devStore.C_StoreCode equals store.C_ID.ToString()
  195. select new
  196. {
  197. store.C_Logo,
  198. store.C_LicenseCode,
  199. store.C_Name,
  200. devStore.D_CreateOn
  201. }).FirstOrDefaultAsync();
  202. vm.StoreName = store_dev.C_Name;
  203. vm.DevCreateOn = store_dev.D_CreateOn;
  204. vm.C_Logo = store_dev.C_Logo;
  205. var devUserName = await (from user in sysUsers
  206. join userRole in _sqlDBContext.GetDbSet<TSYS_UserRole>().AsNoTracking() on user.C_UserID equals userRole.C_UserCode
  207. join role in _sqlDBContext.GetDbSet<TSYS_Role>().AsNoTracking().Where(t => t.C_LicenseCode == store_dev.C_LicenseCode && t.C_Status == "1") on userRole.C_RoleCode equals role.C_Code
  208. select new
  209. {
  210. RoleName = role.C_Name,
  211. user.C_Name,
  212. user.C_Mobile
  213. }).ToListAsync();
  214. devUserName.ToList().ForEach(x => {
  215. if (x.RoleName.Contains("设备管理员"))
  216. vm.DevManager += x.C_Name + " " + x.C_Mobile + " ";
  217. if (x.RoleName.Contains("设备运维员"))
  218. vm.DevOpser += x.C_Name + " " + x.C_Mobile + " ";
  219. });
  220. return vm;
  221. }
  222. //public async Task<IEnumerable<TmtnRepairOrderItemWithImageViewModel>> GetRepairOrderItemWithImageAsync(TmtnRepairOrderItemSearchModel searchModel)
  223. //{
  224. // var predicate = PredicateBuilder.New<TMTN_RepairOrderItem>(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_RepairOrderItem>, List<TmtnRepairOrderItemViewModel>>(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 TmtnRepairOrderItemWithImageViewModel
  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<TmtnRepairOrderItemRecordDetailViewMode>> GetRecordsConditionAsync(TmtnRepairOrderItemRecordSearchModel searchModel)
  263. //{
  264. // var content = await _repository.GetRecordsConditionAsync(searchModel);
  265. // return content;
  266. //}
  267. public async Task<TmtnRepairOrderItemViewModel> GetByIdAsync(Guid id)
  268. {
  269. var content = await _repository.GetByIdAsync(id);
  270. var contentDto = _mapper.Map<TmtnRepairOrderItemViewModel>(content);
  271. return contentDto;
  272. }
  273. public async Task UpdateAsync(string code, TmtnRepairOrderItemUpdateModel updateModel)
  274. {
  275. var items = await _repository.GetByConditionAsync(C => C.C_ID == code);
  276. var content = items.FirstOrDefault();
  277. if (content == null)
  278. {
  279. throw new Exception("没有此数据");
  280. }
  281. content.C_LastUpdatedBy = _claims.ApiUserId;
  282. content.D_LastUpdatedOn = DateTime.Now;
  283. _mapper.Map(updateModel, content, typeof(TmtnRepairOrderItemUpdateModel), typeof(TMTN_RepairOrderItem));
  284. _repository.Update(content);
  285. var result = await _repository.SaveAsync();
  286. if (!result)
  287. {
  288. throw new Exception("更新失败");
  289. }
  290. }
  291. public Task<int> UpdateOneAsync(TmtnRepairOrderItemViewModel viewModel, params string[] fields)
  292. {
  293. throw new NotImplementedException();
  294. }
  295. public Task<bool> IsExistAsync(Guid id)
  296. {
  297. throw new NotImplementedException();
  298. }
  299. public Task<IEnumerable<TmtnRepairOrderItemViewModel>> GetByConditionAsync(Expression<Func<TmtnRepairOrderItemViewModel, bool>> expression)
  300. {
  301. throw new NotImplementedException();
  302. }
  303. public Task UpdateAsync(string code, TpntAreaUpdateModel updateModel)
  304. {
  305. throw new NotImplementedException();
  306. }
  307. public Task<IEnumerable<TmtnRepairOrderItemViewModel>> GetConditionAsync(TpntAreaSearchModel searchModel)
  308. {
  309. throw new NotImplementedException();
  310. }
  311. }
  312. }