TTbdmCodeService.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. using AutoMapper;
  2. using LinqKit;
  3. using Ropin.Core.Common;
  4. using Ropin.Inspection.Common.Accessor.Interface;
  5. using Ropin.Inspection.Model;
  6. using Ropin.Inspection.Model.Entities;
  7. using Ropin.Inspection.Model.ViewModel.DEV;
  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 TbdmCodeService : ITbdmCodeService
  19. {
  20. private readonly ITbdmCodeRepository _repository;
  21. private readonly ITbdmCodeDetailRepository _codeDetailrepository;
  22. private readonly IMapper _mapper;
  23. private readonly IClaimsAccessor _claims;
  24. private readonly IUnitOfWork _unitOfWork;
  25. public TbdmCodeService(IClaimsAccessor claims,
  26. ITbdmCodeRepository repository,
  27. ITbdmCodeDetailRepository codeDetailrepository,
  28. IMapper mapper, IUnitOfWork unitOfWork)
  29. {
  30. _repository = repository;
  31. _codeDetailrepository = codeDetailrepository;
  32. _mapper = mapper;
  33. _claims = claims;
  34. _unitOfWork = unitOfWork;
  35. }
  36. public async Task<List<TbdmCodeViewModel>> GetCodeListTreeAsync()
  37. {
  38. return await _repository.GetProvListTreeAsync();
  39. }
  40. /// <summary>
  41. /// 子表
  42. /// </summary>
  43. /// <param name="searchModel"></param>
  44. /// <returns></returns>
  45. public async Task<IEnumerable<TbdmDetailCode>> GetConditionDetailAsync(TbdmCodeSearchModel searchModel)
  46. {
  47. var predicate = PredicateBuilder.New<TBDM_CodeDetail>(true);//查询条件,推荐后台使用这种方式灵活筛选
  48. #region 添加条件查询
  49. if (!string.IsNullOrEmpty(searchModel.C_Status))
  50. {
  51. if (searchModel.C_Status == "all") { }
  52. else
  53. {
  54. predicate = predicate.And(i => i.C_Status.Equals(searchModel.C_Status));
  55. }
  56. }
  57. else
  58. {
  59. predicate = predicate.And(i => i.C_Status.Equals("1"));
  60. }
  61. if (!string.IsNullOrEmpty(searchModel.C_MainCode))
  62. {
  63. predicate = predicate.And(i => i.C_MainCode.Equals(searchModel.C_MainCode));
  64. }
  65. if (!string.IsNullOrEmpty(searchModel.C_Code))
  66. {
  67. predicate = predicate.And(i => i.C_Code.Equals(searchModel.C_Code));
  68. }
  69. if (!string.IsNullOrEmpty(searchModel.C_Name))
  70. {
  71. predicate = predicate.And(i => i.C_Name.Contains(searchModel.C_Name));
  72. }
  73. #endregion
  74. var list = await _codeDetailrepository.GetPageAsync(predicate, "I_Sort,-D_CreateOn", searchModel.IsPagination, searchModel.PageIndex, searchModel.PageSize);
  75. searchModel.TotalCount = list.Totals;
  76. var dtoList = _mapper.Map<List<TBDM_CodeDetail>, List<TbdmDetailCode>>(list.Rows);
  77. return dtoList;
  78. }
  79. /// <summary>
  80. /// 主表
  81. /// </summary>
  82. /// <param name="searchModel"></param>
  83. /// <returns></returns>
  84. public async Task<IEnumerable<TbdmCodeViewModel>> GetConditionAsync(TbdmCodeSearchModel searchModel)
  85. {
  86. var predicate = PredicateBuilder.New<TBDM_CodeMain>(true);//查询条件,推荐后台使用这种方式灵活筛选
  87. #region 添加条件查询
  88. if (!string.IsNullOrEmpty(searchModel.C_Status))
  89. {
  90. if (searchModel.C_Status=="all") { }
  91. else
  92. {
  93. predicate = predicate.And(i => i.C_Status.Equals(searchModel.C_Status));
  94. }
  95. }
  96. else
  97. {
  98. predicate = predicate.And(i => i.C_Status.Equals("1"));
  99. }
  100. if (!string.IsNullOrEmpty(searchModel.C_Code))
  101. {
  102. predicate = predicate.And(i => i.C_Code.Equals(searchModel.C_Code));
  103. }
  104. if (!string.IsNullOrEmpty(searchModel.C_Name))
  105. {
  106. predicate = predicate.And(i => i.C_Name.Contains(searchModel.C_Name));
  107. }
  108. #endregion
  109. var list = await _repository.GetPageAsync(predicate, "I_Sort,-D_CreateOn", searchModel.IsPagination, searchModel.PageIndex, searchModel.PageSize);
  110. searchModel.TotalCount = list.Totals;
  111. var dtoList = _mapper.Map<List<TBDM_CodeMain>, List<TbdmCodeViewModel>>(list.Rows);
  112. return dtoList;
  113. }
  114. public Task<int> UpdateOneAsync(TbdmCodeViewModel viewModel, params string[] fields)
  115. {
  116. throw new NotImplementedException();
  117. }
  118. public Task<bool> IsExistAsync(string id)
  119. {
  120. throw new NotImplementedException();
  121. }
  122. public Task<IEnumerable<TbdmCodeViewModel>> GetByConditionAsync(Expression<Func<TbdmCodeViewModel, bool>> expression)
  123. {
  124. throw new NotImplementedException();
  125. }
  126. /// <summary>
  127. /// 主表添加
  128. /// </summary>
  129. /// <param name="viewModel"></param>
  130. /// <returns></returns>
  131. /// <exception cref="Exception"></exception>
  132. public async Task CreateOneAsync(TbdmCodeViewModel viewModel)
  133. {
  134. var info = await _repository.GetByConditionAsync(t => t.C_Code == viewModel.C_Code);
  135. if (info != null && info.Count() > 0)
  136. {
  137. throw new Exception($"“{viewModel.C_Code}”编号已经存在");
  138. }
  139. var content = _mapper.Map<TBDM_CodeMain>(viewModel);
  140. content.C_CreateBy = _claims.ApiUserId;
  141. content.D_CreateOn = DateTime.Now;
  142. content.C_Status = "1";
  143. _repository.Create(content);
  144. var result = await _repository.SaveAsync();
  145. if (!result)
  146. {
  147. throw new Exception("创建失败");
  148. }
  149. }
  150. /// <summary>
  151. /// 子表添加
  152. /// </summary>
  153. /// <param name="viewModel"></param>
  154. /// <returns></returns>
  155. /// <exception cref="Exception"></exception>
  156. public async Task CreateDetailAsync(TbdmCodeDetailCreateModel viewModel)
  157. {
  158. var detail = await _codeDetailrepository.GetByConditionAsync(t => t.C_Code == viewModel.C_Code);
  159. if (detail!=null&&detail.Count()>0)
  160. {
  161. throw new Exception($"“{viewModel.C_Code}”编号已经存在");
  162. }
  163. var content = _mapper.Map<TBDM_CodeDetail>(viewModel);
  164. content.C_CreateBy = _claims.ApiUserId;
  165. content.D_CreateOn = DateTime.Now;
  166. content.C_Status = "1";
  167. _codeDetailrepository.Create(content);
  168. var result = await _codeDetailrepository.SaveAsync();
  169. if (!result)
  170. {
  171. throw new Exception("创建失败");
  172. }
  173. }
  174. public Task<TbdmCodeViewModel> GetByIdAsync(string id)
  175. {
  176. throw new NotImplementedException();
  177. }
  178. /// <summary>
  179. /// 主表和子表真删除
  180. /// </summary>
  181. /// <param name="id"></param>
  182. /// <returns></returns>
  183. /// <exception cref="Exception"></exception>
  184. public async Task DeleteAsync(string id)
  185. {
  186. bool result = false;
  187. var content = await _repository.GetByIdAsync(id);
  188. if (content == null)
  189. {
  190. throw new Exception("数据库中没有此数据");
  191. }
  192. var detail = await _codeDetailrepository.GetByConditionAsync(t => t.C_MainCode == content.C_Code);
  193. if (detail!=null&& detail.Count()>0)
  194. {
  195. result = await _codeDetailrepository.RemoveRangeAsync(detail) > 0;
  196. }
  197. else
  198. {
  199. result = true;
  200. }
  201. if (result)
  202. {
  203. result = await _repository.RemoveAsync(content) > 0;
  204. if (!result)
  205. {
  206. throw new Exception("删除失败");
  207. }
  208. }
  209. else
  210. {
  211. throw new Exception("删除失败");
  212. }
  213. }
  214. /// <summary>
  215. /// 子表真删除
  216. /// </summary>
  217. /// <param name="id"></param>
  218. /// <returns></returns>
  219. /// <exception cref="Exception"></exception>
  220. public async Task DeleteDetailAsync(string id)
  221. {
  222. var content = await _codeDetailrepository.GetByIdAsync(id);
  223. if (content == null)
  224. {
  225. throw new Exception("数据库中没有此数据");
  226. }
  227. var result= await _codeDetailrepository.RemoveAsync(content)>0;
  228. if (!result)
  229. {
  230. throw new Exception("删除失败");
  231. }
  232. }
  233. /// <summary>
  234. /// 禁用
  235. /// </summary>
  236. /// <param name="id"></param>
  237. /// <returns></returns>
  238. /// <exception cref="Exception"></exception>
  239. public async Task DisabledStatusAsync(string id)
  240. {
  241. var content = await _repository.GetByIdAsync(id);
  242. if (content == null)
  243. {
  244. throw new Exception("数据库中没有此数据");
  245. }
  246. bool result = await _repository.DeleteByCodeAsync(id);
  247. if (!result)
  248. {
  249. throw new Exception("禁用失败");
  250. }
  251. }
  252. /// <summary>
  253. /// 禁用
  254. /// </summary>
  255. /// <param name="id"></param>
  256. /// <returns></returns>
  257. /// <exception cref="Exception"></exception>
  258. public async Task DisabledDetailStatusAsync(string id)
  259. {
  260. var content = await _codeDetailrepository.GetByIdAsync(id);
  261. if (content == null)
  262. {
  263. throw new Exception("数据库中没有此数据");
  264. }
  265. content.C_Status = "0";
  266. _codeDetailrepository.Update(content);
  267. var result = await _codeDetailrepository.SaveAsync();
  268. if (!result)
  269. {
  270. throw new Exception("禁用失败");
  271. }
  272. }
  273. /// <summary>
  274. /// 主表修改
  275. /// </summary>
  276. /// <param name="code"></param>
  277. /// <param name="updateModel"></param>
  278. /// <returns></returns>
  279. /// <exception cref="Exception"></exception>
  280. public async Task UpdateAsync(string code, TbdmCodeViewModel updateModel)
  281. {
  282. var content = await _repository.GetByIdAsync(code);
  283. if (content == null)
  284. {
  285. throw new Exception("没有此数据");
  286. }
  287. content.C_LastUpdatedBy = _claims.Linsence == null ? _claims.ApiUserId : Guid.Parse("6e864cbc-5252-11ec-8681-fa163e02b3e4");
  288. content.D_LastUpdatedOn = DateTime.Now;
  289. _mapper.Map(updateModel, content, typeof(TbdmCodeViewModel), typeof(TBDM_CodeMain));
  290. _repository.Update(content);
  291. var result = await _repository.SaveAsync();
  292. if (!result)
  293. {
  294. throw new Exception("更新失败");
  295. }
  296. }
  297. /// <summary>
  298. /// 子表修改
  299. /// </summary>
  300. /// <param name="code"></param>
  301. /// <param name="updateModel"></param>
  302. /// <returns></returns>
  303. /// <exception cref="Exception"></exception>
  304. public async Task UpdateDetailAsync(string code, TbdmCodeDetailUpdateModel updateModel)
  305. {
  306. var content = await _codeDetailrepository.GetByIdAsync(code);
  307. if (content == null)
  308. {
  309. throw new Exception("没有此数据");
  310. }
  311. content.C_LastUpdatedBy = _claims.Linsence == null ? _claims.ApiUserId : Guid.Parse("6e864cbc-5252-11ec-8681-fa163e02b3e4");
  312. content.D_LastUpdatedOn = DateTime.Now;
  313. _mapper.Map(updateModel, content, typeof(TbdmCodeDetailUpdateModel), typeof(TBDM_CodeDetail));
  314. _codeDetailrepository.Update(content);
  315. var result = await _codeDetailrepository.SaveAsync();
  316. if (!result)
  317. {
  318. throw new Exception("更新失败");
  319. }
  320. }
  321. }
  322. }