using DOAN.Admin.WebApi.Filters; using DOAN.Model; using DOAN.Model.BZFM; using DOAN.Model.BZFM.Dto; using DOAN.Service.BZFM; using DOAN.Service.BZFM.IBZFMService; using Microsoft.AspNetCore.Mvc; //创建时间:2025-12-24 namespace DOAN.Admin.WebApi.Controllers.BZFM { /// /// 库存表 /// [Verify] [Route("mes/productionMaterial/MmInventory")] public class MmInventoryController : BaseController { /// /// 库存表接口 /// private readonly IMmInventoryService _MmInventoryService; public MmInventoryController(IMmInventoryService MmInventoryService) { _MmInventoryService = MmInventoryService; } /// /// 查询库存表列表 /// /// /// [HttpGet("list")] [ActionPermissionFilter(Permission = "mminventory:list")] public IActionResult QueryMmInventory([FromQuery] MmInventoryQueryDto parm) { var response = _MmInventoryService.GetList(parm); return SUCCESS(response); } /// /// 查询库存表详情 /// /// /// [HttpGet("{Id}")] [ActionPermissionFilter(Permission = "mminventory:query")] public IActionResult GetMmInventory(int Id) { var response = _MmInventoryService.GetInfo(Id); var info = response.Adapt(); return SUCCESS(info); } /// /// 添加库存表 /// /// [HttpPost] [ActionPermissionFilter(Permission = "mminventory:add")] [Log(Title = "添加库存表", BusinessType = BusinessType.INSERT)] public IActionResult AddMmInventory([FromBody] MmInventoryDto parm) { var modal = parm.Adapt().ToCreate(HttpContext); var response = _MmInventoryService.AddMmInventory(modal); return SUCCESS(response); } /// /// 更新库存表 /// /// [HttpPut] [ActionPermissionFilter(Permission = "mminventory:edit")] [Log(Title = "更新库存", BusinessType = BusinessType.UPDATE)] public IActionResult UpdateMmInventory([FromBody] MmInventoryDto parm) { var modal = parm.Adapt().ToUpdate(HttpContext); var response = _MmInventoryService.UpdateMmInventory(modal); return ToResponse(response); } /// /// 删除库存表 /// /// [HttpPost("delete/{ids}")] [ActionPermissionFilter(Permission = "mminventory:delete")] [Log(Title = "删除库存", BusinessType = BusinessType.DELETE)] public IActionResult DeleteMmInventory([FromRoute] string ids) { var idArr = Tools.SplitAndConvert(ids); return ToResponse(_MmInventoryService.Delete(idArr)); } /// /// 获取物料清单下拉数据 /// /// [HttpPost("GetMaterialOption")] public IActionResult GetMaterialOption() { var response = _MmInventoryService.GetMaterialOption(); return SUCCESS(response); } /// /// 获取库位下拉数据 /// /// [HttpPost("GetLocationOption")] public IActionResult GetLocationOption() { var response = _MmInventoryService.GetLocationOption(); return SUCCESS(response); } /// /// 获取出/入库操作类型下拉数据 /// /// [HttpPost("GetTransactionOption")] public IActionResult GetTransactionOption() { var response = _MmInventoryService.GetTransactionOption(); return SUCCESS(response); } /// /// 创建入库单 /// /// [HttpPost("CreateInboundReceipt")] [AllowAnonymous] [Log(Title = "创建入库单", BusinessType = BusinessType.INSERT)] public IActionResult CreateInboundReceipt([FromBody] InboundReceiptDto parm) { try { string response = _MmInventoryService.CreateInboundReceipt(parm); if (response == "ok") { return ToResponse(new ApiResult(200, "ok")); } else { return ToResponse(new ApiResult(500, response)); } } catch (Exception) { throw; } } /// /// 创建出库单 /// /// [HttpPost("CreateOutboundReceipt")] [AllowAnonymous] [Log(Title = "创建出库单", BusinessType = BusinessType.INSERT)] public IActionResult CreateOutboundReceipt([FromBody] OutboundReceiptDto parm) { try { string response = _MmInventoryService.CreateOutboundReceipt(parm); if (response == "ok") { return ToResponse(new ApiResult(200, "ok")); } else { return ToResponse(new ApiResult(500, response)); } } catch (Exception) { throw; } } /// /// 撤销单据 /// /// [HttpPost("RevokeReceipt")] [AllowAnonymous] [Log(Title = "撤销单据", BusinessType = BusinessType.INSERT)] public IActionResult RevokeReceipt([FromBody] MmInventoryRevokeDto parm) { try { string response = _MmInventoryService.RevokeReceipt(parm); if (response == "ok") { return ToResponse(new ApiResult(200, "ok")); } else { return ToResponse(new ApiResult(500, response)); } } catch (Exception) { throw; } } /// /// 导入 /// /// 使用IFromFile必须使用name属性否则获取不到文件 /// [HttpPost("importData")] [Log( Title = "库存管理导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false, IsSaveResponseData = true )] [ActionPermissionFilter(Permission = "mminventory:import")] public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile) { //return SUCCESS(_MmMaterialService.Importmaterial(material)); if (formFile == null) { return SUCCESS(null); } ImportResultDto response = _MmInventoryService.ImportInventory( formFile, HttpContext.GetName() ); return SUCCESS(response); } /// /// 下载库存导入模板 /// /// [HttpGet("importTemplate")] [Log(Title = "库存模板", BusinessType = BusinessType.EXPORT)] [AllowAnonymous] public IActionResult ImportTemplateExcel() { // create an empty sample list of export DTO to generate header row var sample = new List(); var result = DownloadImportTemplate(sample, "inventory"); return ExportExcel(result.Item2, result.Item1); } /// /// 库存导出 /// /// /// [HttpGet("export")] [Log(Title = "物料清单导出", BusinessType = BusinessType.EXPORT)] [ActionPermissionFilter(Permission = "mminventory:export")] public IActionResult MaterialExport([FromQuery] MmInventoryQueryDto inventory) { var list = _MmInventoryService.SelectInventoryList(inventory, new PagerInfo(1, 10000)); var data = (list?.Result ?? new List()); var result = ExportExcelMini(data, "inventory", "库存管理"); return ExportExcel(result.Item2, result.Item1); } /// /// 获取出/入库记录数据 /// /// [HttpPost("GetInOrOutRecord")] public IActionResult GetInOrOutRecord([FromBody] MmInventoryRecordQueryDto parm) { var response = _MmInventoryService.GetInOrOutRecord(parm); return SUCCESS(response); } /// /// 出货操作 /// /// [HttpPost("Shipment")] [AllowAnonymous] [Log(Title = "出货操作", BusinessType = BusinessType.INSERT)] public IActionResult Shipment([FromBody] ShipmentDto parm) { try { string response = _MmInventoryService.Shipment(parm); if (response == "ok") { return ToResponse(new ApiResult(200, "ok")); } else { return ToResponse(new ApiResult(500, response)); } } catch (Exception) { throw; } } } }