diff --git a/RIZO.Admin.WebApi/Controllers/Business/MaterialController.cs b/RIZO.Admin.WebApi/Controllers/Business/MaterialController.cs deleted file mode 100644 index 789c396..0000000 --- a/RIZO.Admin.WebApi/Controllers/Business/MaterialController.cs +++ /dev/null @@ -1,67 +0,0 @@ -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using RIZO.Service.Business; -using RIZO.Model.Business; - -namespace RIZO.Admin.WebApi.Controllers.Business -{ - [ApiController] - [Route("api/[controller]/[action]")] - public class MaterialController : ControllerBase - { - private readonly MaterialService _service; - - public MaterialController(MaterialService service) - { - _service = service; - } - - //获取所有的物料清单 - [HttpGet] - public ActionResult> GetMaterials([FromQuery] bool includeDeleted = false)//默认false,一般不用用户传。 - { - return _service.GetAllMaterials(includeDeleted); - } - - //根据物料编码查询物料清单 - [HttpGet] - public ActionResult GetMaterial(string material_code) - { - var material = _service.GetMaterialByMaterialCode(material_code); - if (material == null) return NotFound();//如果查询结果为空,则返回not found - return material; - } - - //新增物料清单数据 - [HttpPost] - public IActionResult AddMaterial([FromBody] MaterialInfo material) - { - _service.AddMaterial(material); // 假设创建人为admin - return Ok(); - } - - //批量新增物料清单数据 - [HttpPost] - public IActionResult AddMaterials([FromBody] List materials) - { - _service.AddMaterials(materials); - return Ok(); - } - - //修改物料清单数据 - [HttpPut] - public IActionResult UpdateMaterial([FromBody] MaterialInfo material) - { - _service.UpdateMaterial(material); - return Ok(); - } - - //逻辑删除 - [HttpDelete] - public IActionResult DeleteMaterial(int id, MaterialInfo material) - { - _service.DeleteMaterial(id, material); - return Ok(); - } - } -} diff --git a/RIZO.Admin.WebApi/Controllers/Business/MaterialInfoController.cs b/RIZO.Admin.WebApi/Controllers/Business/MaterialInfoController.cs new file mode 100644 index 0000000..e8030cb --- /dev/null +++ b/RIZO.Admin.WebApi/Controllers/Business/MaterialInfoController.cs @@ -0,0 +1,101 @@ +using Microsoft.AspNetCore.Mvc; +using RIZO.Model.Business.Dto; +using RIZO.Model.Business; +using RIZO.Service.Business.IBusinessService; + +//创建时间:2025-11-05 +namespace RIZO.Admin.WebApi.Controllers.Business +{ + /// + /// 物料表 + /// + [AllowAnonymous] //先跳过验证 + [Route("business/MaterialInfo")] + public class MaterialInfoController : BaseController + { + /// + /// 物料表接口 + /// + private readonly IMaterialInfoService _MaterialInfoService; + + public MaterialInfoController(IMaterialInfoService MaterialInfoService) + { + _MaterialInfoService = MaterialInfoService; + } + + /// + /// 查询物料表列表 + /// + /// + /// + [HttpGet("list")] + [ActionPermissionFilter(Permission = "materialinfo:list")] + public IActionResult QueryMaterialInfo([FromQuery] MaterialInfoQueryDto parm) + { + var response = _MaterialInfoService.GetList(parm); + return SUCCESS(response); + } + + + /// + /// 查询物料表详情 + /// + /// + /// + [HttpGet("{Id}")] + [ActionPermissionFilter(Permission = "materialinfo:query")] + public IActionResult GetMaterialInfo(long Id) + { + var response = _MaterialInfoService.GetInfo(Id); + + var info = response.Adapt(); + return SUCCESS(info); + } + + /// + /// 添加物料表 + /// + /// + [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); + } + + /// + /// 更新物料表 + /// + /// + [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); + } + + /// + /// 删除物料表 + /// + /// + [HttpPost("delete/{ids}")] + [ActionPermissionFilter(Permission = "materialinfo:delete")] + [Log(Title = "物料表", BusinessType = BusinessType.DELETE)] + public IActionResult DeleteMaterialInfo([FromRoute]string ids) + { + var idArr = Tools.SplitAndConvert(ids); + + return ToResponse(_MaterialInfoService.Delete(idArr)); + } + + } +} \ No newline at end of file diff --git a/RIZO.Admin.WebApi/Program.cs b/RIZO.Admin.WebApi/Program.cs index 2c52deb..1ca0107 100644 --- a/RIZO.Admin.WebApi/Program.cs +++ b/RIZO.Admin.WebApi/Program.cs @@ -14,7 +14,7 @@ using RIZO.ServiceCore.Signalr; using RIZO.ServiceCore.SqlSugar; using RIZO.Mall; -using RIZO.Repository.Business; + using RIZO.Service.Business; //using SQLitePCL; @@ -27,12 +27,7 @@ builder.Services.AddDynamicApi(); // Add services to the container. builder.Services.AddControllers(); -// --- 这里开始注入 MaterialDao 和 MaterialService --- -var dbConfigSection = builder.Configuration.GetSection("dbConfigs").GetChildren().First(); -var mySqlConn = dbConfigSection.GetValue("Conn"); -builder.Services.AddSingleton(new RIZO.Repository.Business.MaterialDao(mySqlConn)); -builder.Services.AddSingleton(); -// --- 注入完成 --- + diff --git a/RIZO.Model/Business/Dto/MaterialInfoDto.cs b/RIZO.Model/Business/Dto/MaterialInfoDto.cs new file mode 100644 index 0000000..889295b --- /dev/null +++ b/RIZO.Model/Business/Dto/MaterialInfoDto.cs @@ -0,0 +1,58 @@ + +namespace RIZO.Model.Business.Dto +{ + /// + /// 物料表查询对象 + /// + public class MaterialInfoQueryDto : PagerInfo + { + } + + /// + /// 物料表输入输出对象 + /// + public class MaterialInfoDto + { + [Required(ErrorMessage = "主键ID不能为空")] + public long Id { get; set; } + + [Required(ErrorMessage = "物料编码不能为空")] + public string MaterialCode { get; set; } + + public string MaterialName { get; set; } + + public string MaterialModel { get; set; } + + public string MaterialType { get; set; } + + public string Parameter { get; set; } + + public string Brand { get; set; } + + public string Supplier { get; set; } + + public string DeviceId { get; set; } + + public string Feature { get; set; } + + public string Remark { get; set; } + + [Required(ErrorMessage = "工艺编码(关联工艺表)不能为空")] + public string ProcessCode { get; set; } + + public string DelFlag { get; set; } + + public string CreateBy { get; set; } + + public DateTime? CreateTime { get; set; } + + public string UpdateBy { get; set; } + + public DateTime? UpdateTime { get; set; } + + + + [ExcelColumn(Name = "物料类别")] + public string MaterialTypeLabel { get; set; } + } +} \ No newline at end of file diff --git a/RIZO.Model/Business/MaterialInfo.cs b/RIZO.Model/Business/MaterialInfo.cs index 87b049c..980f3a0 100644 --- a/RIZO.Model/Business/MaterialInfo.cs +++ b/RIZO.Model/Business/MaterialInfo.cs @@ -1,23 +1,108 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace RIZO.Model.Business { + /// + /// 物料表 + /// + [SugarTable("material_info")] public class MaterialInfo { - public int Id { get; set; } + /// + /// 主键ID + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public long Id { get; set; } + + /// + /// 物料编码 + /// + [SugarColumn(ColumnName = "material_code")] public string MaterialCode { get; set; } + + /// + /// 物料名称 + /// + [SugarColumn(ColumnName = "material_name")] public string MaterialName { get; set; } + + /// + /// 物料型号(规格型号) + /// + [SugarColumn(ColumnName = "material_model")] public string MaterialModel { get; set; } + + /// + /// 物料类别 + /// + [SugarColumn(ColumnName = "material_type")] public string MaterialType { get; set; } + + /// + /// 参数 + /// + public string Parameter { get; set; } + + /// + /// 品牌 + /// + public string Brand { get; set; } + + /// + /// 供货商 + /// + public string Supplier { get; set; } + + /// + /// 设备标识符 + /// + [SugarColumn(ColumnName = "device_id")] + public string DeviceId { get; set; } + + /// + /// 特点(几级灵敏度等) + /// + public string Feature { get; set; } + + /// + /// 备注 + /// + public string Remark { get; set; } + + /// + /// 工艺编码(关联工艺表) + /// + [SugarColumn(ColumnName = "process_code")] public string ProcessCode { get; set; } - public int DelFlag { get; set; } = 0; + + /// + /// 删除标志(0未删除,1已删除) + /// + [SugarColumn(ColumnName = "del_flag")] + public string DelFlag { get; set; } + + /// + /// 创建人 + /// + [SugarColumn(ColumnName = "create_by")] public string CreateBy { get; set; } - public DateTime CreateTime { get; set; } + + /// + /// 创建时间 + /// + [SugarColumn(ColumnName = "create_time")] + public DateTime? CreateTime { get; set; } + + /// + /// 更新人 + /// + [SugarColumn(ColumnName = "update_by")] public string UpdateBy { get; set; } + + /// + /// 更新时间 + /// + [SugarColumn(ColumnName = "update_time")] public DateTime? UpdateTime { get; set; } + } -} +} \ No newline at end of file diff --git a/RIZO.Model/RIZO.Model.csproj b/RIZO.Model/RIZO.Model.csproj index a759da6..61c985c 100644 --- a/RIZO.Model/RIZO.Model.csproj +++ b/RIZO.Model/RIZO.Model.csproj @@ -12,8 +12,4 @@ - - - - diff --git a/RIZO.Repository/Business/MaterialDao.cs b/RIZO.Repository/Business/MaterialDao.cs deleted file mode 100644 index bb5515d..0000000 --- a/RIZO.Repository/Business/MaterialDao.cs +++ /dev/null @@ -1,161 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using RIZO.Model.Business; -using MySql.Data.MySqlClient; - -namespace RIZO.Repository.Business -{ - public class MaterialDao - { - private readonly string _connectionString; - - public MaterialDao(string connectionString) - { - _connectionString = connectionString; - } - - // 查询列表 - public List GetMaterials(bool includeDeleted = false) - { - var list = new List(); - using var conn = new MySqlConnection(_connectionString); - conn.Open(); - - //等价于SELECT * FROM material_info,它本身没有任何过滤作用,只是为了后续方便动态拼接条件。 - string sql = "SELECT * FROM material_info WHERE 1=1"; - if (!includeDeleted)//includeDeleted默认false,if条件默认为真,需要拼接条件AND del_flag=0,只查询未删除的数据。 - { - sql += " AND del_flag=0"; - } - - using var cmd = new MySqlCommand(sql, conn); - using var reader = cmd.ExecuteReader(); - while (reader.Read()) - { - list.Add(new MaterialInfo - { - Id = Convert.ToInt32(reader["id"]), - MaterialCode = reader["material_code"].ToString(), - MaterialName = reader["material_name"].ToString(), - MaterialModel = reader["material_model"].ToString(), - MaterialType = reader["material_type"].ToString(), - ProcessCode = reader["process_code"].ToString(), - DelFlag = Convert.ToInt32(reader["del_flag"]), - CreateBy = reader["create_by"].ToString(), - CreateTime = Convert.ToDateTime(reader["create_time"]), - UpdateBy = reader["update_by"].ToString(), - UpdateTime = reader["update_time"] == DBNull.Value ? null : (DateTime?)Convert.ToDateTime(reader["update_time"]) - }); - } - - return list; - } - - // 根据物料编码查询物料清单 - public MaterialInfo GetMaterialByMaterialCode(string material_code) - { - using var conn = new MySqlConnection(_connectionString); - conn.Open(); - - string sql = "SELECT * FROM material_info WHERE material_code=@material_code AND del_flag=0"; - using var cmd = new MySqlCommand(sql, conn); - cmd.Parameters.AddWithValue("@material_code", material_code); - - using var reader = cmd.ExecuteReader(); - if (reader.Read()) - { - return new MaterialInfo - { - Id = Convert.ToInt32(reader["id"]), - MaterialCode = reader["material_code"].ToString(), - MaterialName = reader["material_name"].ToString(), - MaterialModel = reader["material_model"].ToString(), - MaterialType = reader["material_type"].ToString(), - ProcessCode = reader["process_code"].ToString(), - DelFlag = Convert.ToInt32(reader["del_flag"]), - CreateBy = reader["create_by"].ToString(), - CreateTime = Convert.ToDateTime(reader["create_time"]), - UpdateBy = reader["update_by"].ToString(), - UpdateTime = reader["update_time"] == DBNull.Value ? null : (DateTime?)Convert.ToDateTime(reader["update_time"]) - }; - } - return null; - } - - //新增物料清单数据 - public void AddMaterial(MaterialInfo material) - { - using var conn = new MySqlConnection(_connectionString); - conn.Open(); - - string sql = @"INSERT INTO material_info - (material_code, material_name, material_model, material_type, process_code, create_by, create_time,update_by,update_time) - VALUES (@code, @name, @model, @type, @process, @createBy, @createTime,@updateBy,@updateTime)"; - - using var cmd = new MySqlCommand(sql, conn); - cmd.Parameters.AddWithValue("@code", material.MaterialCode); - cmd.Parameters.AddWithValue("@name", material.MaterialName); - cmd.Parameters.AddWithValue("@model", material.MaterialModel); - cmd.Parameters.AddWithValue("@type", material.MaterialType); - cmd.Parameters.AddWithValue("@process", material.ProcessCode); - cmd.Parameters.AddWithValue("@createBy", material.CreateBy); - cmd.Parameters.AddWithValue("@createTime", material.CreateTime); - cmd.Parameters.AddWithValue("@updateBy", material.UpdateBy); - cmd.Parameters.AddWithValue("@updateTime", material.UpdateTime); - - cmd.ExecuteNonQuery(); - } - - //批量新增物料清单数据 - public void AddMaterials(List materials) - { - foreach (var m in materials) - { - AddMaterial(m); - } - } - - //修改物料清单数据 - public void UpdateMaterial(MaterialInfo material) - { - using var conn = new MySqlConnection(_connectionString); - conn.Open(); - - string sql = @"UPDATE material_info SET - material_code=@code, material_name=@name, material_model=@model, - material_type=@type, process_code=@process, update_by=@updateBy, - update_time=@updateTime - WHERE id=@id"; - - using var cmd = new MySqlCommand(sql, conn); - cmd.Parameters.AddWithValue("@code", material.MaterialCode); - cmd.Parameters.AddWithValue("@name", material.MaterialName); - cmd.Parameters.AddWithValue("@model", material.MaterialModel); - cmd.Parameters.AddWithValue("@type", material.MaterialType); - cmd.Parameters.AddWithValue("@process", material.ProcessCode); - cmd.Parameters.AddWithValue("@updateBy", material.UpdateBy); - cmd.Parameters.AddWithValue("@updateTime", material.UpdateTime); - cmd.Parameters.AddWithValue("@id", material.Id); - - cmd.ExecuteNonQuery(); - } - - // 逻辑删除 - public void DeleteMaterial(int id, MaterialInfo material) - { - using var conn = new MySqlConnection(_connectionString); - conn.Open(); - - string sql = "UPDATE material_info SET del_flag=1, update_by=@updateBy, update_time=@updateTime WHERE id=@id"; - using var cmd = new MySqlCommand(sql, conn); - cmd.Parameters.AddWithValue("@id", id); - cmd.Parameters.AddWithValue("@updateBy", material.UpdateBy); - cmd.Parameters.AddWithValue("@updateTime", DateTime.Now); - - cmd.ExecuteNonQuery(); - } - } -} diff --git a/RIZO.Repository/RIZO.Repository.csproj b/RIZO.Repository/RIZO.Repository.csproj index 3037ac6..119b750 100644 --- a/RIZO.Repository/RIZO.Repository.csproj +++ b/RIZO.Repository/RIZO.Repository.csproj @@ -16,4 +16,8 @@ + + + + diff --git a/RIZO.Service/Business/IBusinessService/IMaterialInfoService.cs b/RIZO.Service/Business/IBusinessService/IMaterialInfoService.cs new file mode 100644 index 0000000..ed7f09c --- /dev/null +++ b/RIZO.Service/Business/IBusinessService/IMaterialInfoService.cs @@ -0,0 +1,21 @@ +using RIZO.Model.Business.Dto; +using RIZO.Model.Business; + +namespace RIZO.Service.Business.IBusinessService +{ + /// + /// 物料表service接口 + /// + public interface IMaterialInfoService : IBaseService + { + PagedInfo GetList(MaterialInfoQueryDto parm); + + MaterialInfo GetInfo(long Id); + + + MaterialInfo AddMaterialInfo(MaterialInfo parm); + int UpdateMaterialInfo(MaterialInfo parm); + + + } +} diff --git a/RIZO.Service/Business/MaterialInfoService.cs b/RIZO.Service/Business/MaterialInfoService.cs new file mode 100644 index 0000000..b423597 --- /dev/null +++ b/RIZO.Service/Business/MaterialInfoService.cs @@ -0,0 +1,79 @@ +using Infrastructure.Attribute; +using Infrastructure.Extensions; +using RIZO.Model.Business.Dto; +using RIZO.Model.Business; +using RIZO.Repository; +using RIZO.Service.Business.IBusinessService; + +namespace RIZO.Service.Business +{ + /// + /// 物料表Service业务层处理 + /// + [AppService(ServiceType = typeof(IMaterialInfoService), ServiceLifetime = LifeTime.Transient)] + public class MaterialInfoService : BaseService, IMaterialInfoService + { + /// + /// 查询物料表列表 + /// + /// + /// + public PagedInfo GetList(MaterialInfoQueryDto parm) + { + var predicate = QueryExp(parm); + + var response = Queryable() + .Where(predicate.ToExpression()) + .ToPage(parm); + + return response; + } + + + /// + /// 获取详情 + /// + /// + /// + public MaterialInfo GetInfo(long Id) + { + var response = Queryable() + .Where(x => x.Id == Id) + .First(); + + return response; + } + + /// + /// 添加物料表 + /// + /// + /// + public MaterialInfo AddMaterialInfo(MaterialInfo model) + { + return Insertable(model).ExecuteReturnEntity(); + } + + /// + /// 修改物料表 + /// + /// + /// + public int UpdateMaterialInfo(MaterialInfo model) + { + return Update(model, true); + } + + /// + /// 查询导出表达式 + /// + /// + /// + private static Expressionable QueryExp(MaterialInfoQueryDto parm) + { + var predicate = Expressionable.Create(); + + return predicate; + } + } +} \ No newline at end of file diff --git a/RIZO.Service/Business/MaterialService.cs b/RIZO.Service/Business/MaterialService.cs deleted file mode 100644 index 0c0ef73..0000000 --- a/RIZO.Service/Business/MaterialService.cs +++ /dev/null @@ -1,67 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using RIZO.Repository.Business; -using RIZO.Model.Business; - -namespace RIZO.Service.Business -{ - public class MaterialService - { - private readonly MaterialDao _dao; - - public MaterialService(MaterialDao dao) - { - _dao = dao; - } - - //获取所有的物料清单 - public List GetAllMaterials(bool includeDeleted = false) - { - return _dao.GetMaterials(includeDeleted); - } - - //根据物料编码查询物料清单 - public MaterialInfo GetMaterialByMaterialCode(string material_code) - { - return _dao.GetMaterialByMaterialCode(material_code); - } - - //新增物料清单数据 - public void AddMaterial(MaterialInfo material) - { - - material.CreateTime = DateTime.Now; - material.UpdateTime = DateTime.Now; - _dao.AddMaterial(material); - } - - ////批量新增物料清单数据 - public void AddMaterials(List materials) - { - foreach (var m in materials) - { - - m.CreateTime = DateTime.Now; - m.UpdateTime = DateTime.Now; - } - _dao.AddMaterials(materials); - } - - //修改物料清单数据 - public void UpdateMaterial(MaterialInfo material) - { - - material.UpdateTime = DateTime.Now; - _dao.UpdateMaterial(material); - } - - //逻辑删除 - public void DeleteMaterial(int id, MaterialInfo material) - { - _dao.DeleteMaterial(id, material); - } - } -}