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);
}
}
}