using Microsoft.AspNetCore.Mvc; using RIZO.Model.Mes.Dto.Material; using RIZO.Model.Mes.Dto.Process; using RIZO.Model.Mes.Material; using RIZO.Service.Mes.IMesService.Material; //创建时间:2025-11-05 namespace RIZO.Admin.WebApi.Controllers.Mes.Material { /// /// 物料表 /// [AllowAnonymous]//先跳过验证 [Route("mes/MaterialInfo")] public class MaterialInfoController : BaseController { /// /// 物料表接口 /// private readonly IMaterialInfoService _MaterialInfoService; public MaterialInfoController(IMaterialInfoService MaterialInfoService) { _MaterialInfoService = MaterialInfoService; } /// /// 1.查询物料清单(模糊查询)* /// /// /// [HttpGet("list")] [ActionPermissionFilter(Permission = "materialinfo:list")] public IActionResult QueryMaterialInfo([FromQuery] MaterialInfoQueryDto parm) { var response = _MaterialInfoService.GetList(parm); return SUCCESS(response); } /// /// 2.添加物料清单 /// /// [HttpPost] [ActionPermissionFilter(Permission = "materialinfo:add")] [Log(Title = "物料表", BusinessType = BusinessType.INSERT)] public IActionResult AddMaterialInfo([FromBody] MaterialInfoDto parm) { var modal = parm.Adapt().ToCreate(HttpContext); var response = _MaterialInfoService.AddMaterialInfo(modal); return SUCCESS(response); } /// /// 3.更新物料清单 /// /// [HttpPut] [ActionPermissionFilter(Permission = "materialinfo:edit")] [Log(Title = "物料表", BusinessType = BusinessType.UPDATE)] public IActionResult UpdateMaterialInfo([FromBody] MaterialInfoDto parm) { var modal = parm.Adapt().ToUpdate(HttpContext); var response = _MaterialInfoService.UpdateMaterialInfo(modal); return ToResponse(response); } /// /// 4.导入物料清单 /// /// [HttpPost("ImportMaterialInfo")] //[ActionPermissionFilter(Permission = "materialinfo:import")] [Log(Title = "导入保存物料清单", BusinessType = BusinessType.IMPORT)] public IActionResult ImportMaterialInfo([FromQuery] string userId, [FromQuery] string userName, [FromForm] IFormFile file) { var stream = file.OpenReadStream(); var fileName = file.FileName; var response = _MaterialInfoService.ImportMaterialInfo(stream, userId, userName); return ToResponse(response); } /// /// 5.通过物料编码批量删除物料清单 /// /// [HttpPost("deleteByMaterialCode")] [ActionPermissionFilter(Permission = "materialinfo:delete")] [Log(Title = "物料清单", BusinessType = BusinessType.DELETE)] public IActionResult DeleteByMaterialCode([FromBody] string[] materialCodeArr) { return ToResponse(_MaterialInfoService.DeleteByMaterialCode(materialCodeArr)); } /// /// 6.导出物料清单 /// /// [HttpGet("export")] //[ActionPermissionFilter(Permission = "materialinfo:export")] [Log(Title = "工艺路线详情", BusinessType = BusinessType.EXPORT)] public IActionResult Export() { MaterialInfoQueryDto parm = new MaterialInfoQueryDto { PageNum = 1, PageSize = 100000 }; var list = _MaterialInfoService.GetList(parm).Result; if (list == null || list.Count <= 0) { return ToResponse(ResultCode.FAIL, "没有要导出的数据"); } var formatConfig = new Dictionary { { "CreateTime", "yyyy-MM-dd HH:mm:ss" }, { "UpdateTime", "yyyy-MM-dd HH:mm:ss" } }; var (sFileName, sFilePath) = ExportExcelMini(list, "物料清单详情", "物料清单详情"); if (string.IsNullOrWhiteSpace(sFilePath)) { return ToResponse(ResultCode.FAIL, "Excel生成失败"); } return PhysicalFile( sFilePath, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", sFileName, true ); } /// /// 7.物料清单导入模板 /// /// [HttpGet("importTemplate")] [Log(Title = "物料清单导入模板", BusinessType = BusinessType.EXPORT, IsSaveRequestData = true, IsSaveResponseData = false)] [AllowAnonymous] public IActionResult ImportTemplateExcel() { (string, string) result = DownloadImportTemplate("物料清单导入模板"); return ExportExcel(result.Item2, result.Item1); } } }