BasBinController.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. using Infrastructure;
  2. using Infrastructure.Attribute;
  3. using Infrastructure.Enums;
  4. using Infrastructure.Model;
  5. using Mapster;
  6. using Microsoft.AspNetCore.Mvc;
  7. using ZR.Admin.WebApi.Extensions;
  8. using ZR.Admin.WebApi.Filters;
  9. using ZR.Common;
  10. using Microsoft.AspNetCore.Authorization;
  11. using MiniExcelLibs;
  12. using ZR.Model.System;
  13. using ZR.Service.Business;
  14. using ZR.Service.Business.IBusinessService.BaseSet;
  15. using ZR.Model.Dto.BaseSet;
  16. using ZR.Model.Models.BaseSet;
  17. using Aliyun.OSS;
  18. namespace ZR.Admin.WebApi.Controllers.BaseSet
  19. {
  20. /// <summary>
  21. /// 基础资料/库位信息表Controller
  22. ///
  23. /// @tableName bas_bin
  24. /// @author admin
  25. /// @date 2023-04-11
  26. /// </summary>
  27. [Verify]
  28. [Route("business/BasBin")]
  29. public class BasBinController : BaseController
  30. {
  31. /// <summary>
  32. /// 基础资料/库位信息表接口
  33. /// </summary>
  34. private readonly IBasBinService _BasBinService;
  35. /// <summary>
  36. /// 库位信息控制器
  37. /// </summary>
  38. /// <param name="BasBinService"></param>
  39. public BasBinController(IBasBinService BasBinService)
  40. {
  41. _BasBinService = BasBinService;
  42. }
  43. /// <summary>
  44. /// 查询基础资料/库位信息表列表
  45. /// </summary>
  46. /// <param name="parm"></param>
  47. /// <returns></returns>
  48. [HttpGet("list")]
  49. [ActionPermissionFilter(Permission = "business:basbin:list")]
  50. public IActionResult QueryBasBin([FromQuery] BasBinQueryDto parm)
  51. {
  52. var response = _BasBinService.GetList(parm);
  53. return SUCCESS(response);
  54. }
  55. /// <summary>
  56. /// 查询基础资料/库位信息表详情
  57. /// </summary>
  58. /// <param name="BinId"></param>
  59. /// <returns></returns>
  60. [HttpGet("{BinId}")]
  61. [ActionPermissionFilter(Permission = "business:basbin:query")]
  62. public IActionResult GetBasBin(long BinId)
  63. {
  64. var response = _BasBinService.GetFirst(x => x.BinId == BinId);
  65. return SUCCESS(response);
  66. }
  67. /// <summary>
  68. /// 添加基础资料/库位信息表
  69. /// </summary>
  70. /// <returns></returns>
  71. [HttpPost]
  72. [ActionPermissionFilter(Permission = "business:basbin:add")]
  73. [Log(Title = "基础资料/库位信息表", BusinessType = BusinessType.INSERT)]
  74. public IActionResult AddBasBin([FromBody] BasBinDto parm)
  75. {
  76. if (parm == null)
  77. {
  78. throw new CustomException("请求参数错误");
  79. }
  80. var modal = parm.Adapt<BasBin>().ToCreate(HttpContext);
  81. var response = _BasBinService.AddBasBin(modal);
  82. return ToResponse(response);
  83. }
  84. /// <summary>
  85. /// 更新基础资料/库位信息表
  86. /// </summary>
  87. /// <returns></returns>
  88. [HttpPut]
  89. [ActionPermissionFilter(Permission = "business:basbin:edit")]
  90. [Log(Title = "基础资料/库位信息表", BusinessType = BusinessType.UPDATE)]
  91. public IActionResult UpdateBasBin([FromBody] BasBinDto parm)
  92. {
  93. if (parm == null)
  94. {
  95. throw new CustomException("请求实体不能为空");
  96. }
  97. var modal = parm.Adapt<BasBin>().ToUpdate(HttpContext);
  98. var response = _BasBinService.UpdateBasBin(modal);
  99. return ToResponse(response);
  100. }
  101. /// <summary>
  102. /// 删除基础资料/库位信息表
  103. /// </summary>
  104. /// <returns></returns>
  105. [HttpDelete("{ids}")]
  106. [ActionPermissionFilter(Permission = "business:basbin:delete")]
  107. [Log(Title = "基础资料/库位信息表", BusinessType = BusinessType.DELETE)]
  108. public IActionResult DeleteBasBin(string ids)
  109. {
  110. int[] idsArr = Tools.SpitIntArrary(ids);
  111. if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败 Id 不能为空")); }
  112. var response = _BasBinService.Delete(idsArr);
  113. return ToResponse(response);
  114. }
  115. /// <summary>
  116. /// 导入
  117. /// </summary>
  118. /// <param name="formFile">使用IFromFile必须使用name属性否则获取不到文件</param>
  119. /// <returns></returns>
  120. [HttpPost("importData")]
  121. [Log(Title = "库位导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false, IsSaveResponseData = false)]
  122. [ActionPermissionFilter(Permission = "business:basbin:import")]
  123. public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile)
  124. {
  125. List<BasBin> bins = new();
  126. using (var stream = formFile.OpenReadStream())
  127. {
  128. bins = stream.Query<BasBin>().ToList();
  129. }
  130. string msg = _BasBinService.ImportDatas(bins);
  131. //TODO 业务逻辑,自行插入数据到db
  132. return SUCCESS(bins);
  133. }
  134. /// <summary>
  135. /// 用户导入模板下载
  136. /// </summary>
  137. /// <returns></returns>
  138. [HttpGet("importTemplate")]
  139. [Log(Title = "库位模板", BusinessType = BusinessType.EXPORT, IsSaveRequestData = false, IsSaveResponseData = false)]
  140. [AllowAnonymous]
  141. public IActionResult ImportTemplateExcel()
  142. {
  143. List<BasBinImportTemplate> bin = new();
  144. MemoryStream stream = new();
  145. var fileInfo = DownloadImportTemplate(bin, stream, "库位列表");
  146. //2023年4月25日 下载的文件有问题,弃用 赵
  147. //return File(stream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"{sFileName}");
  148. return ExportExcel(fileInfo.Item1, fileInfo.Item2);
  149. }
  150. /// <summary>
  151. /// 库位导出
  152. /// </summary>
  153. /// <returns></returns>
  154. [HttpGet("export")]
  155. [ActionPermissionFilter(Permission = "business:basbin:export")]
  156. [Log(Title = "库位导出", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)]
  157. public IActionResult Export([FromQuery] BasBinQueryDto parm)
  158. {
  159. List<BasBin> list = _BasBinService.GetSelect(parm);
  160. var result = ExportExcelMini(list, "post", "库位");
  161. return ExportExcel(result.Item2, result.Item1);
  162. }
  163. }
  164. }