新增库存表模块:含实体、DTO、Service及API接口
本次提交实现了库存表(MmInventory)模块的全套后端代码,包括: - 新增 MmInventoryController,提供库存表的增删改查(CRUD)API,集成权限与日志注解; - 新增 MmInventory 实体类,定义库存表数据库字段映射; - 新增 MmInventoryDto、MmInventoryQueryDto 用于数据传输和分页查询,含字段校验; - 新增 IMmInventoryService 接口及其实现 MmInventoryService,支持库存表的业务操作和动态查询。 该提交为库存管理功能提供了完整的后端支撑。
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using DOAN.Model.BZFM.Dto;
|
||||
using DOAN.Model.BZFM;
|
||||
using DOAN.Service.BZFM.IBZFMService;
|
||||
using DOAN.Admin.WebApi.Filters;
|
||||
|
||||
//创建时间:2025-12-24
|
||||
namespace DOAN.Admin.WebApi.Controllers.BZFM
|
||||
{
|
||||
/// <summary>
|
||||
/// 库存表
|
||||
/// </summary>
|
||||
[Verify]
|
||||
[Route("BZFM/MmInventory")]
|
||||
public class MmInventoryController : BaseController
|
||||
{
|
||||
/// <summary>
|
||||
/// 库存表接口
|
||||
/// </summary>
|
||||
private readonly IMmInventoryService _MmInventoryService;
|
||||
|
||||
public MmInventoryController(IMmInventoryService MmInventoryService)
|
||||
{
|
||||
_MmInventoryService = MmInventoryService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询库存表列表
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("list")]
|
||||
[ActionPermissionFilter(Permission = "mminventory:list")]
|
||||
public IActionResult QueryMmInventory([FromQuery] MmInventoryQueryDto parm)
|
||||
{
|
||||
var response = _MmInventoryService.GetList(parm);
|
||||
return SUCCESS(response);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 查询库存表详情
|
||||
/// </summary>
|
||||
/// <param name="Id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("{Id}")]
|
||||
[ActionPermissionFilter(Permission = "mminventory:query")]
|
||||
public IActionResult GetMmInventory(int Id)
|
||||
{
|
||||
var response = _MmInventoryService.GetInfo(Id);
|
||||
|
||||
var info = response.Adapt<MmInventoryDto>();
|
||||
return SUCCESS(info);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加库存表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[ActionPermissionFilter(Permission = "mminventory:add")]
|
||||
[Log(Title = "库存表", BusinessType = BusinessType.INSERT)]
|
||||
public IActionResult AddMmInventory([FromBody] MmInventoryDto parm)
|
||||
{
|
||||
var modal = parm.Adapt<MmInventory>().ToCreate(HttpContext);
|
||||
|
||||
var response = _MmInventoryService.AddMmInventory(modal);
|
||||
|
||||
return SUCCESS(response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新库存表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPut]
|
||||
[ActionPermissionFilter(Permission = "mminventory:edit")]
|
||||
[Log(Title = "库存表", BusinessType = BusinessType.UPDATE)]
|
||||
public IActionResult UpdateMmInventory([FromBody] MmInventoryDto parm)
|
||||
{
|
||||
var modal = parm.Adapt<MmInventory>().ToUpdate(HttpContext);
|
||||
var response = _MmInventoryService.UpdateMmInventory(modal);
|
||||
|
||||
return ToResponse(response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除库存表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost("delete/{ids}")]
|
||||
[ActionPermissionFilter(Permission = "mminventory:delete")]
|
||||
[Log(Title = "库存表", BusinessType = BusinessType.DELETE)]
|
||||
public IActionResult DeleteMmInventory([FromRoute]string ids)
|
||||
{
|
||||
var idArr = Tools.SplitAndConvert<int>(ids);
|
||||
|
||||
return ToResponse(_MmInventoryService.Delete(idArr));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
49
DOAN.Model/MES/Material/Dto/MmInventoryDto.cs
Normal file
49
DOAN.Model/MES/Material/Dto/MmInventoryDto.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
|
||||
namespace DOAN.Model.BZFM.Dto
|
||||
{
|
||||
/// <summary>
|
||||
/// 库存表查询对象
|
||||
/// </summary>
|
||||
public class MmInventoryQueryDto : PagerInfo
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 库存表输入输出对象
|
||||
/// </summary>
|
||||
public class MmInventoryDto
|
||||
{
|
||||
[Required(ErrorMessage = "主键ID不能为空")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "物料编码不能为空")]
|
||||
public string MaterialCode { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "仓库编码不能为空")]
|
||||
public string WarehouseCode { get; set; }
|
||||
|
||||
public string WarehouseName { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "库位编码不能为空")]
|
||||
public string LocationCode { get; set; }
|
||||
|
||||
public string LocationName { get; set; }
|
||||
|
||||
public string BatchNo { get; set; }
|
||||
|
||||
public decimal CurrentQty { get; set; }
|
||||
|
||||
public string Unit { get; set; }
|
||||
|
||||
public DateTime? ProductionDate { get; set; }
|
||||
|
||||
public DateTime? ExpiryDate { get; set; }
|
||||
|
||||
public DateTime? LastUpdatedTime { get; set; }
|
||||
|
||||
public DateTime? CreatedTime { get; set; }
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
88
DOAN.Model/MES/Material/MmInventory.cs
Normal file
88
DOAN.Model/MES/Material/MmInventory.cs
Normal file
@@ -0,0 +1,88 @@
|
||||
|
||||
namespace DOAN.Model.BZFM
|
||||
{
|
||||
/// <summary>
|
||||
/// 库存表
|
||||
/// </summary>
|
||||
[SugarTable("mm_inventory")]
|
||||
public class MmInventory
|
||||
{
|
||||
/// <summary>
|
||||
/// 主键ID
|
||||
/// </summary>
|
||||
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料编码
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "material_code")]
|
||||
public string MaterialCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 仓库编码
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "warehouse_code")]
|
||||
public string WarehouseCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 仓库名称
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "warehouse_name")]
|
||||
public string WarehouseName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 库位编码
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "location_code")]
|
||||
public string LocationCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 库位名称
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "location_name")]
|
||||
public string LocationName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 批次号
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "batch_no")]
|
||||
public string BatchNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前库存量
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "current_qty")]
|
||||
public decimal CurrentQty { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 计量单位
|
||||
/// </summary>
|
||||
public string Unit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 生产日期
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "production_date")]
|
||||
public DateTime? ProductionDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 有效期至
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "expiry_date")]
|
||||
public DateTime? ExpiryDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最后更新时间
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "last_updated_time")]
|
||||
public DateTime? LastUpdatedTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "created_time")]
|
||||
public DateTime? CreatedTime { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
21
DOAN.Service/MES/Material/IService/IMmInventoryService.cs
Normal file
21
DOAN.Service/MES/Material/IService/IMmInventoryService.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using DOAN.Model.BZFM.Dto;
|
||||
using DOAN.Model.BZFM;
|
||||
|
||||
namespace DOAN.Service.BZFM.IBZFMService
|
||||
{
|
||||
/// <summary>
|
||||
/// 库存表service接口
|
||||
/// </summary>
|
||||
public interface IMmInventoryService : IBaseService<MmInventory>
|
||||
{
|
||||
PagedInfo<MmInventoryDto> GetList(MmInventoryQueryDto parm);
|
||||
|
||||
MmInventory GetInfo(int Id);
|
||||
|
||||
|
||||
MmInventory AddMmInventory(MmInventory parm);
|
||||
int UpdateMmInventory(MmInventory parm);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
79
DOAN.Service/MES/Material/MmInventoryService.cs
Normal file
79
DOAN.Service/MES/Material/MmInventoryService.cs
Normal file
@@ -0,0 +1,79 @@
|
||||
using Infrastructure.Attribute;
|
||||
using Infrastructure.Extensions;
|
||||
using DOAN.Model.BZFM.Dto;
|
||||
using DOAN.Model.BZFM;
|
||||
using DOAN.Repository;
|
||||
using DOAN.Service.BZFM.IBZFMService;
|
||||
|
||||
namespace DOAN.Service.BZFM
|
||||
{
|
||||
/// <summary>
|
||||
/// 库存表Service业务层处理
|
||||
/// </summary>
|
||||
[AppService(ServiceType = typeof(IMmInventoryService), ServiceLifetime = LifeTime.Transient)]
|
||||
public class MmInventoryService : BaseService<MmInventory>, IMmInventoryService
|
||||
{
|
||||
/// <summary>
|
||||
/// 查询库存表列表
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
public PagedInfo<MmInventoryDto> GetList(MmInventoryQueryDto parm)
|
||||
{
|
||||
var predicate = QueryExp(parm);
|
||||
|
||||
var response = Queryable()
|
||||
.Where(predicate.ToExpression())
|
||||
.ToPage<MmInventory, MmInventoryDto>(parm);
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取详情
|
||||
/// </summary>
|
||||
/// <param name="Id"></param>
|
||||
/// <returns></returns>
|
||||
public MmInventory GetInfo(int Id)
|
||||
{
|
||||
var response = Queryable()
|
||||
.Where(x => x.Id == Id)
|
||||
.First();
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加库存表
|
||||
/// </summary>
|
||||
/// <param name="model"></param>
|
||||
/// <returns></returns>
|
||||
public MmInventory AddMmInventory(MmInventory model)
|
||||
{
|
||||
return Insertable(model).ExecuteReturnEntity();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改库存表
|
||||
/// </summary>
|
||||
/// <param name="model"></param>
|
||||
/// <returns></returns>
|
||||
public int UpdateMmInventory(MmInventory model)
|
||||
{
|
||||
return Update(model, true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询导出表达式
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
private static Expressionable<MmInventory> QueryExp(MmInventoryQueryDto parm)
|
||||
{
|
||||
var predicate = Expressionable.Create<MmInventory>();
|
||||
|
||||
return predicate;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user