ProductMappersApplicationService.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.SqlClient;
  5. using System.Linq;
  6. using System.Threading.Tasks;
  7. using System.Web.Mvc;
  8. using Abp.Application.Services.Dto;
  9. using Abp.Auditing;
  10. using Abp.Authorization;
  11. using Abp.Domain.Repositories;
  12. using Abp.Runtime.Caching;
  13. using IwbZero.AppServiceBase;
  14. using ShwasherSys.Authorization.Permissions;
  15. using ShwasherSys.EntityFramework;
  16. using ShwasherSys.ProductInfo.Dto;
  17. namespace ShwasherSys.ProductInfo
  18. {
  19. [AbpAuthorize]
  20. public class ProductMapperAppService : IwbZeroAsyncCrudAppService<ProductMapper, ProductMapperDto, int, IwbPagedRequestDto, ProductMapperCreateDto, ProductMapperUpdateDto >, IProductMapperAppService
  21. {
  22. public ProductMapperAppService(
  23. ICacheManager cacheManager,
  24. IRepository<ProductMapper, int> repository, ISqlExecuter sqlExecuter) : base(repository, "Id")
  25. {
  26. CacheManager = cacheManager;
  27. SqlExecuter = sqlExecuter;
  28. }
  29. protected ISqlExecuter SqlExecuter;
  30. protected override bool KeyIsAuto { get; set; } = false;
  31. #region GetSelect
  32. [DisableAuditing]
  33. public override async Task<List<SelectListItem>> GetSelectList()
  34. {
  35. var list = await Repository.GetAllListAsync();
  36. var sList = new List<SelectListItem> {new SelectListItem {Text = @"请选择...", Value = "", Selected = true}};
  37. foreach (var l in list)
  38. {
  39. //sList.Add(new SelectListItem { Value = l.Id, Text = l. });
  40. }
  41. return sList;
  42. }
  43. [DisableAuditing]
  44. public override async Task<string> GetSelectStr()
  45. {
  46. var list = await Repository.GetAllListAsync();
  47. string str = "<option value=\"\" selected>请选择...</option>";
  48. foreach (var l in list)
  49. {
  50. //str += $"<option value=\"{l.Id}\">{l.}</option>";
  51. }
  52. return str;
  53. }
  54. #endregion
  55. #region CURD
  56. // [AbpAuthorize(PermissionNames.PagesMgProductMapperMgCreate)]
  57. public override async Task Create(ProductMapperCreateDto input)
  58. {
  59. await CreateEntity(input);
  60. }
  61. // [AbpAuthorize(PermissionNames.PagesMgProductMapperMgUpdate)]
  62. public override async Task Update(ProductMapperUpdateDto input)
  63. {
  64. await UpdateEntity(input);
  65. }
  66. // [AbpAuthorize(PermissionNames.PagesMgProductMapperMgDelete)]
  67. public override Task Delete(EntityDto<int> input)
  68. {
  69. return Repository.DeleteAsync(input.Id);
  70. }
  71. [DisableAuditing]
  72. // [AbpAuthorize(PermissionNames.PagesMgProductMapperMgQuery)]
  73. public override async Task<PagedResultDto<ProductMapperDto>> GetAll(IwbPagedRequestDto input)
  74. {
  75. var query = CreateFilteredQuery(input);
  76. query = ApplyFilter(query, input);
  77. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  78. query = query.OrderByDescending(i=>i.CreationTime);
  79. query = ApplyPaging(query, input);
  80. var entities = await AsyncQueryableExecuter.ToListAsync(query);
  81. var dtoList = new PagedResultDto<ProductMapperDto>(totalCount, entities.Select(MapToEntityDto).ToList());
  82. return dtoList;
  83. }
  84. #region GetEntity/Dto
  85. /// <summary>
  86. /// 查询实体Dto
  87. /// </summary>
  88. /// <param name="input"></param>
  89. /// <returns></returns>
  90. [DisableAuditing]
  91. // [AbpAuthorize(PermissionNames.PagesMgProductMapperMgQuery)]
  92. public override async Task<ProductMapperDto> GetDto(EntityDto<int> input)
  93. {
  94. var entity = await GetEntity(input);
  95. return MapToEntityDto(entity);
  96. }
  97. /// <summary>
  98. /// 查询实体Dto
  99. /// </summary>
  100. /// <param name="id"></param>
  101. /// <returns></returns>
  102. [DisableAuditing]
  103. // [AbpAuthorize(PermissionNames.PagesMgProductMapperMgQuery)]
  104. public override async Task<ProductMapperDto> GetDtoById(int id)
  105. {
  106. var entity = await GetEntityById(id);
  107. return MapToEntityDto(entity);
  108. }
  109. /// <summary>
  110. /// 查询实体Dto(需指明自定义字段)
  111. /// </summary>
  112. /// <param name="no"></param>
  113. /// <returns></returns>
  114. [DisableAuditing]
  115. // [AbpAuthorize(PermissionNames.PagesMgProductMapperMgQuery)]
  116. public override async Task<ProductMapperDto> GetDtoByNo(string no)
  117. {
  118. var entity = await GetEntityByNo(no);
  119. return MapToEntityDto(entity);
  120. }
  121. /// <summary>
  122. /// 查询实体
  123. /// </summary>
  124. /// <param name="input"></param>
  125. /// <returns></returns>
  126. [DisableAuditing]
  127. // [AbpAuthorize(PermissionNames.PagesMgProductMapperMgQuery)]
  128. public override async Task<ProductMapper> GetEntity(EntityDto<int> input)
  129. {
  130. var entity = await GetEntityById(input.Id);
  131. return entity;
  132. }
  133. /// <summary>
  134. /// 查询实体
  135. /// </summary>
  136. /// <param name="id"></param>
  137. /// <returns></returns>
  138. [DisableAuditing]
  139. // [AbpAuthorize(PermissionNames.PagesMgProductMapperMgQuery)]
  140. public override async Task<ProductMapper> GetEntityById(int id)
  141. {
  142. return await Repository.FirstOrDefaultAsync(a=>a.Id==id);
  143. }
  144. /// <summary>
  145. /// 查询实体(需指明自定义字段)
  146. /// </summary>
  147. /// <param name="no"></param>
  148. /// <returns></returns>
  149. [DisableAuditing]
  150. // [AbpAuthorize(PermissionNames.PagesMgProductMapperMgQuery)]
  151. public override async Task<ProductMapper> GetEntityByNo(string no)
  152. {
  153. //CheckGetPermission();
  154. if (string.IsNullOrEmpty(KeyFiledName))
  155. {
  156. ThrowError("NoKeyFieldName");
  157. }
  158. return await base.GetEntityByNo(no);
  159. }
  160. #endregion
  161. #region Hide
  162. ///// <summary>
  163. ///// 根据给定的<see cref="IwbPagedRequestDto"/>创建 <see cref="IQueryable{ProductMapper}"/>过滤查询.
  164. ///// </summary>
  165. ///// <param name="input">The input.</param>
  166. //protected override IQueryable<ProductMapper> CreateFilteredQuery(IwbPagedRequestDto input)
  167. //{
  168. // var query = Repository.GetAll();
  169. // var pagedInput = input as IIwbPagedRequest;
  170. // if (pagedInput == null)
  171. // {
  172. // return query;
  173. // }
  174. // if (!string.IsNullOrEmpty(pagedInput.KeyWords))
  175. // {
  176. // object keyWords = pagedInput.KeyWords;
  177. // LambdaObject obj = new LambdaObject()
  178. // {
  179. // FieldType = (LambdaFieldType)pagedInput.FieldType,
  180. // FieldName = pagedInput.KeyField,
  181. // FieldValue = keyWords,
  182. // ExpType = (LambdaExpType)pagedInput.ExpType
  183. // };
  184. // var exp = obj.GetExp<ProductMapper>();
  185. // query = exp != null ? query.Where(exp) : query;
  186. // }
  187. // if (pagedInput.SearchList != null && pagedInput.SearchList.Count > 0)
  188. // {
  189. // List<LambdaObject> objList = new List<LambdaObject>();
  190. // foreach (var o in pagedInput.SearchList)
  191. // {
  192. // if (string.IsNullOrEmpty(o.KeyWords))
  193. // continue;
  194. // object keyWords = o.KeyWords;
  195. // objList.Add(new LambdaObject
  196. // {
  197. // FieldType = (LambdaFieldType)o.FieldType,
  198. // FieldName = o.KeyField,
  199. // FieldValue = keyWords,
  200. // ExpType = (LambdaExpType)o.ExpType
  201. // });
  202. // }
  203. // var exp = objList.GetExp<ProductMapper>();
  204. // query = exp != null ? query.Where(exp) : query;
  205. // }
  206. // return query;
  207. //}
  208. //protected override IQueryable<ProductMapper> ApplySorting(IQueryable<ProductMapper> query, IwbPagedRequestDto input)
  209. //{
  210. // return query.OrderBy(a => a.No);
  211. //}
  212. //protected override IQueryable<ProductMapper> ApplyPaging(IQueryable<ProductMapper> query, IwbPagedRequestDto input)
  213. //{
  214. // if (input is IPagedResultRequest pagedInput)
  215. // {
  216. // return query.Skip(pagedInput.SkipCount).Take(pagedInput.MaxResultCount);
  217. // }
  218. // return query;
  219. //}
  220. #endregion
  221. #endregion
  222. public async Task<List<ReturnReplaceResultDto>> ReplaceProductNo(ReplaceProductDto input)
  223. {
  224. var preReplaceProductDtos = input.PreReplaceProducts;
  225. string pNo = input.ProductNo;
  226. List<ReturnReplaceResultDto> rps = new List<ReturnReplaceResultDto>();
  227. foreach (var preReplaceProductDto in preReplaceProductDtos)
  228. {
  229. string procedure = preReplaceProductDto.ProductType == "1"?"[dbo].[Sp_ModifyProductNo]": "[dbo].[Sp_ModifySemiProductNo]";
  230. var sqlParms = new object[3];
  231. sqlParms[0] = new SqlParameter("@OldPid", preReplaceProductDto.ReplaceProductNo);
  232. sqlParms[1] = new SqlParameter("@NewPid", pNo);
  233. sqlParms[2] = new SqlParameter("@RetCode", SqlDbType.Int) { Direction = ParameterDirection.Output };
  234. ReturnReplaceResultDto rpDto = new ReturnReplaceResultDto();
  235. try
  236. {
  237. var result = SqlExecuter.Execute($"exec {procedure} @OldPid,@NewPid,@RetCode out", sqlParms);
  238. int reCode = (int)((SqlParameter)sqlParms[2]).Value;
  239. LogHelper.LogError(this, "执行结果:" + reCode + "---旧编码:" + preReplaceProductDto.ReplaceProductNo + "---新编码:" + pNo);
  240. int productType = Convert.ToInt16(preReplaceProductDto.ProductType);
  241. var checkEntiy = await Repository.FirstOrDefaultAsync(i =>
  242. i.ProductNo == pNo && i.PreProductNo == preReplaceProductDto.ReplaceProductNo &&
  243. i.PreProductType == productType);
  244. if (checkEntiy == null)
  245. {
  246. var entity = new ProductMapper()
  247. {
  248. ProductNo = pNo,
  249. PreProductNo = preReplaceProductDto.ReplaceProductNo,
  250. PreProductType = productType
  251. };
  252. Repository.Insert(entity);
  253. }
  254. rpDto.IsSuccess = true;
  255. rpDto.ProductNo = preReplaceProductDto.ReplaceProductNo;
  256. rpDto.RetCode = reCode.ToString();
  257. }
  258. catch (Exception e)
  259. {
  260. rpDto.IsSuccess = false;
  261. rpDto.ProductNo = preReplaceProductDto.ReplaceProductNo;
  262. rpDto.ErrorInfo = e.Message;
  263. this.LogError( "执行结果错误:" + e.Message + "---旧编码:" + preReplaceProductDto.ReplaceProductNo + "---新编码:" + pNo);
  264. }
  265. rps.Add(rpDto);
  266. }
  267. return rps;
  268. }
  269. }
  270. }