using Infrastructure; using Infrastructure.Attribute; using Infrastructure.Enums; using Infrastructure.Model; using Mapster; using Microsoft.AspNetCore.Mvc; using ZR.Admin.WebApi.Extensions; using ZR.Admin.WebApi.Filters; using ZR.Common; using Microsoft.AspNetCore.Authorization; using MiniExcelLibs; using ZR.Model.System; using ZR.Service.Business; using ZR.Service.Business.IBusinessService.BaseSet; using ZR.Model.Dto.BaseSet; using ZR.Model.Models.BaseSet; namespace ZR.Admin.WebApi.Controllers.BaseSet { /// /// 基础资料/库位信息表Controller /// /// @tableName bas_bin /// @author admin /// @date 2023-04-11 /// [Verify] [Route("business/BasBin")] public class BasBinController : BaseController { /// /// 基础资料/库位信息表接口 /// private readonly IBasBinService _BasBinService; /// /// 库位信息控制器 /// /// public BasBinController(IBasBinService BasBinService) { _BasBinService = BasBinService; } /// /// 查询基础资料/库位信息表列表 /// /// /// [HttpGet("list")] [ActionPermissionFilter(Permission = "business:basbin:list")] public IActionResult QueryBasBin([FromQuery] BasBinQueryDto parm) { var response = _BasBinService.GetList(parm); return SUCCESS(response); } /// /// 查询基础资料/库位信息表详情 /// /// /// [HttpGet("{BinId}")] [ActionPermissionFilter(Permission = "business:basbin:query")] public IActionResult GetBasBin(long BinId) { var response = _BasBinService.GetFirst(x => x.BinId == BinId); return SUCCESS(response); } /// /// 添加基础资料/库位信息表 /// /// [HttpPost] [ActionPermissionFilter(Permission = "business:basbin:add")] [Log(Title = "基础资料/库位信息表", BusinessType = BusinessType.INSERT)] public IActionResult AddBasBin([FromBody] BasBinDto parm) { if (parm == null) { throw new CustomException("请求参数错误"); } var modal = parm.Adapt().ToCreate(HttpContext); var response = _BasBinService.AddBasBin(modal); return ToResponse(response); } /// /// 更新基础资料/库位信息表 /// /// [HttpPut] [ActionPermissionFilter(Permission = "business:basbin:edit")] [Log(Title = "基础资料/库位信息表", BusinessType = BusinessType.UPDATE)] public IActionResult UpdateBasBin([FromBody] BasBinDto parm) { if (parm == null) { throw new CustomException("请求实体不能为空"); } var modal = parm.Adapt().ToUpdate(HttpContext); var response = _BasBinService.UpdateBasBin(modal); return ToResponse(response); } /// /// 删除基础资料/库位信息表 /// /// [HttpDelete("{ids}")] [ActionPermissionFilter(Permission = "business:basbin:delete")] [Log(Title = "基础资料/库位信息表", BusinessType = BusinessType.DELETE)] public IActionResult DeleteBasBin(string ids) { int[] idsArr = Tools.SpitIntArrary(ids); if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败 Id 不能为空")); } var response = _BasBinService.Delete(idsArr); return ToResponse(response); } /// /// 导入 /// /// 使用IFromFile必须使用name属性否则获取不到文件 /// [HttpPost("importData")] [Log(Title = "库位导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false, IsSaveResponseData = false)] [ActionPermissionFilter(Permission = "business:basbin:import")] public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile) { List bins = new(); using (var stream = formFile.OpenReadStream()) { bins = stream.Query().ToList(); } string msg = _BasBinService.ImportDatas(bins); //TODO 业务逻辑,自行插入数据到db return SUCCESS(bins); } /// /// 用户导入模板下载 /// /// [HttpGet("importTemplate")] [Log(Title = "库位模板", BusinessType = BusinessType.EXPORT, IsSaveRequestData = false, IsSaveResponseData = false)] [AllowAnonymous] public IActionResult ImportTemplateExcel() { List bin = new(); MemoryStream stream = new(); var fileInfo = DownloadImportTemplate(bin, stream, "库位列表"); //2023年4月25日 下载的文件有问题,弃用 赵 //return File(stream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"{sFileName}"); return ExportExcel(fileInfo.Item1, fileInfo.Item2); } /// /// 库位导出 /// /// [HttpGet("export")] [ActionPermissionFilter(Permission = "business:basbin:export")] [Log(Title = "库位导出", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)] public IActionResult Export() { var list = _BasBinService.GetAll(); string sFileName = ExportExcel(list, "Basregion", "库位"); return SUCCESS(new { path = "/export/" + sFileName, fileName = sFileName }); } } }