TprdProductService.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. using AutoMapper;
  2. using LinqKit;
  3. using Ropin.Inspection.Common.Accessor.Interface;
  4. using Ropin.Inspection.Model;
  5. using Ropin.Inspection.Model.Entities;
  6. using Ropin.Inspection.Repository;
  7. using Ropin.Inspection.Repository.Interface;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Linq.Expressions;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. namespace Ropin.Inspection.Service
  15. {
  16. public class TprdProductService : ITprdProductService
  17. {
  18. private readonly ITprdProductRepository _repository;
  19. private readonly IMapper _mapper;
  20. private readonly IClaimsAccessor _claims;
  21. private readonly IUnitOfWork _unitOfWork;
  22. public TprdProductService(IClaimsAccessor claims, IUnitOfWork unitOfWork, ITprdProductRepository repository, IMapper mapper)
  23. {
  24. _repository = repository;
  25. _mapper = mapper;
  26. _claims = claims;
  27. _unitOfWork = unitOfWork;
  28. }
  29. public async Task CreateOneAsync(TprdProductViewModel viewModel)
  30. {
  31. var product = await GetConditionAsync(new TprdProductSearchModel { C_QRCode = viewModel.C_QRCode });
  32. if (product.FirstOrDefault()!=null)
  33. {
  34. throw new Exception("二维码已被使用");
  35. }
  36. var content = _mapper.Map<TPRD_Product>(viewModel);
  37. content.C_Code = Guid.NewGuid();
  38. content.C_CreateBy = _claims.ApiUserId;
  39. content.D_CreateOn = DateTime.Now;
  40. content.I_Status = 1;
  41. bool bResult = false;
  42. try
  43. {
  44. _unitOfWork.BeginTransaction();
  45. bResult = await _unitOfWork.RegisterNew(content);
  46. if (viewModel.IsDevice)
  47. {
  48. var device = new TDEV_Device
  49. {
  50. C_Code = Guid.NewGuid().ToString(),
  51. C_Name = viewModel.DeviceName,
  52. C_ProductCode = content.C_Code,
  53. C_MachineCode = viewModel.DeviceMachineCode,
  54. C_Remark = viewModel.DeviceRemark,
  55. C_CreateBy = _claims.ApiUserId,
  56. D_CreateOn = DateTime.Now,
  57. C_Status = viewModel.DeviceStatus
  58. };
  59. bResult = await _unitOfWork.RegisterNew(device);
  60. }
  61. }
  62. catch
  63. {
  64. _unitOfWork.Rollback();
  65. throw;
  66. }
  67. finally
  68. {
  69. if (bResult)
  70. await _unitOfWork.CommitAsync();
  71. else
  72. _unitOfWork.Rollback();
  73. }
  74. //_repository.Create(content);
  75. //if (viewModel.IsDevice)
  76. //{
  77. //}
  78. //var result = await _repository.SaveAsync();
  79. //if (!result)
  80. //{
  81. // throw new Exception("创建失败");
  82. //}
  83. }
  84. public async Task<TprdProductViewModel> GetProductByQRCodeAsync(string QRCode, string storeCode)
  85. {
  86. return await _repository.GetProductByQRCodeAsync(QRCode, storeCode);
  87. //var result = await GetConditionAsync(new TprdProductSearchModel { C_QRCode = QRCode } );
  88. //return result;
  89. }
  90. public async Task<IEnumerable<AllProductWithDevViewModel>> GetProductWithDataByAsync(TprdProductWithDataSearchModel searchModel)
  91. {
  92. return await _repository.GetProductWithDataByAsync(searchModel);
  93. }
  94. public async Task<IEnumerable<TprdDeviceByAreaViewModel>> GetDeviceByAreaCode(TprdDeviceByAreaSearchModel searchModel)
  95. {
  96. var result = _repository.GetDeviceByAreaCode(searchModel);
  97. return await Task.FromResult(result);
  98. }
  99. public async Task DeleteAsync(Guid id)
  100. {
  101. var content = await _repository.GetByIdAsync(id);
  102. if (content == null)
  103. {
  104. throw new Exception("数据库中没有此数据");
  105. }
  106. //_repository.Delete(content);
  107. //var result = await _repository.SaveAsync();
  108. content.C_LastUpdatedBy = _claims.ApiUserId;
  109. content.D_LastUpdatedOn = DateTime.Now;
  110. //content.C_Status = "0";
  111. _repository.Update(content);
  112. var result = await _repository.SaveAsync();
  113. if (!result)
  114. {
  115. throw new Exception("删除失败");
  116. }
  117. }
  118. public async Task<IEnumerable<TprdProductViewModel>> GetAllAsync()
  119. {
  120. var pagedList = await _repository.GetAllAsync();
  121. var contentDtoList = _mapper.Map<IEnumerable<TprdProductViewModel>>(pagedList.ToList());
  122. return contentDtoList.ToList();
  123. }
  124. public async Task<IEnumerable<TprdProductViewModel>> GetConditionAsync(TprdProductSearchModel searchModel)
  125. {
  126. var predicate = PredicateBuilder.New<TPRD_Product>(true);//查询条件,推荐后台使用这种方式灵活筛选
  127. #region 添加条件查询
  128. //predicate = predicate.And(i => i.I_Status.Equals(1));
  129. if (!string.IsNullOrEmpty(searchModel.C_QRCode))
  130. {
  131. predicate = predicate.And(i => i.C_QRCode.Equals(searchModel.C_QRCode));
  132. }
  133. if (!string.IsNullOrEmpty(searchModel.C_SpotCode))
  134. {
  135. predicate = predicate.And(i => i.C_SpotCode.Equals(searchModel.C_SpotCode));
  136. }
  137. if (!string.IsNullOrEmpty(searchModel.C_AreaCode))
  138. {
  139. predicate = predicate.And(i => i.C_AreaCode.Equals(searchModel.C_AreaCode));
  140. }
  141. if (!string.IsNullOrEmpty(searchModel.C_StoreCode))
  142. {
  143. predicate = predicate.And(i => i.C_StoreCode.Equals(searchModel.C_StoreCode));
  144. }
  145. if (!string.IsNullOrEmpty(searchModel.C_DeviceCode))
  146. {
  147. predicate = predicate.And(i => i.C_DeviceCode.Equals(searchModel.C_DeviceCode));
  148. }
  149. if (!string.IsNullOrEmpty(searchModel.FilterCode))
  150. {
  151. predicate = predicate.And(i => i.C_Code.ToString() !=searchModel.FilterCode);
  152. }
  153. #endregion
  154. var list = await _repository.GetPageAsync(predicate, "-D_CreateOn", searchModel.IsPagination, searchModel.PageIndex, searchModel.PageSize);
  155. searchModel.TotalCount = list.Totals;
  156. var dtoList = _mapper.Map<List<TPRD_Product>, List<TprdProductViewModel>>(list.Rows);
  157. return dtoList;
  158. }
  159. public async Task<int> GetDeviceCountByAsync(string storeCode)
  160. {
  161. Expression<Func<TPRD_Product, bool>> ex = i => (i.I_Status == 2 || i.I_Status == 1) && i.C_StoreCode == storeCode;
  162. var items = await _repository.GetByConditionAsync(ex);
  163. return items.Count();
  164. }
  165. public async Task<int> GetAlertDeviceCountByAsync(string storeCode)
  166. {
  167. Expression<Func<TPRD_Product, bool>> ex = i => (i.I_Status == 2 || i.I_Status == 1) && i.I_IsAlarm == 0 && i.C_StoreCode == storeCode;
  168. var items = await _repository.GetByConditionAsync(ex);
  169. return items.Count();
  170. }
  171. public async Task<IEnumerable<TprdProductViewModel>> GetAlertProductsByAsync(string storeCode)
  172. {
  173. //Expression<Func<TPRD_Product, bool>> ex = i => (i.I_Status == 2 || i.I_Status == 1) && i.I_IsAlarm == 0 && i.C_StoreCode == storeCode;
  174. //var items = await _repository.GetByConditionAsync(ex);
  175. //var dtoList = _mapper.Map<IEnumerable<TPRD_Product>, IEnumerable<TprdProductViewModel>>(items);
  176. //return dtoList;
  177. return await _repository.GetAlertProductsByAsync(storeCode);
  178. }
  179. public async Task<IEnumerable<TprdProductViewModel>> GetValiDateProductsByAsync(string storeCode)
  180. {
  181. //Expression<Func<TPRD_Product, bool>> ex = i => (i.I_Status == 2 || i.I_Status == 1) && i.D_ValiDate !=null && i.D_ValiDate > DateTime.Now && i.C_StoreCode == storeCode;
  182. //var items = await _repository.GetByConditionAsync(ex);
  183. //var dtoList = _mapper.Map<IEnumerable<TPRD_Product>, IEnumerable<TprdProductViewModel>>(items);
  184. //return dtoList;
  185. return await _repository.GetValiDateProductsByAsync(storeCode);
  186. }
  187. public async Task<TprdProductViewModel> GetAlertProductByCodeAsync(Guid code)
  188. {
  189. return await _repository.GetAlertProductByCodeAsync(code);
  190. }
  191. public async Task<TprdProductViewModel> GetValiDateProductByCodeAsync(Guid code)
  192. {
  193. return await _repository.GetValiDateProductByCodeAsync(code);
  194. }
  195. public async Task<TprdProductViewModel> GetByIdAsync(Guid id)
  196. {
  197. var content = await _repository.GetByIdAsync(id);
  198. var contentDto = _mapper.Map<TprdProductViewModel>(content);
  199. return contentDto;
  200. }
  201. public async Task UpdateAsync(Guid id, TprdProductUpdateModel updateModel)
  202. {
  203. var content = await _repository.GetByIdAsync(id);
  204. if (content == null)
  205. {
  206. throw new Exception("没有此数据");
  207. }
  208. content.C_LastUpdatedBy = _claims.ApiUserId;
  209. content.D_LastUpdatedOn = DateTime.Now;
  210. _mapper.Map(updateModel, content, typeof(TprdProductUpdateModel), typeof(TPRD_Product));
  211. _repository.Update(content);
  212. var result = await _repository.SaveAsync();
  213. if (!result)
  214. {
  215. throw new Exception("更新失败");
  216. }
  217. }
  218. public Task<int> UpdateOneAsync(TprdProductViewModel viewModel, params string[] fields)
  219. {
  220. throw new NotImplementedException();
  221. }
  222. public Task<bool> IsExistAsync(Guid id)
  223. {
  224. throw new NotImplementedException();
  225. }
  226. public Task<IEnumerable<TprdProductViewModel>> GetByConditionAsync(Expression<Func<TprdProductViewModel, bool>> expression)
  227. {
  228. throw new NotImplementedException();
  229. }
  230. }
  231. }