diff --git a/RIZO.Admin.WebApi/Controllers/Business/MaterialController.cs b/RIZO.Admin.WebApi/Controllers/Business/MaterialController.cs new file mode 100644 index 0000000..789c396 --- /dev/null +++ b/RIZO.Admin.WebApi/Controllers/Business/MaterialController.cs @@ -0,0 +1,67 @@ +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/Program.cs b/RIZO.Admin.WebApi/Program.cs index ff535a5..2c52deb 100644 --- a/RIZO.Admin.WebApi/Program.cs +++ b/RIZO.Admin.WebApi/Program.cs @@ -13,6 +13,9 @@ using RIZO.Infrastructure.WebExtensions; using RIZO.ServiceCore.Signalr; using RIZO.ServiceCore.SqlSugar; using RIZO.Mall; + +using RIZO.Repository.Business; +using RIZO.Service.Business; //using SQLitePCL; var builder = WebApplication.CreateBuilder(args); @@ -24,6 +27,15 @@ 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(); +// --- 注入完成 --- + + + // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); diff --git a/RIZO.Admin.WebApi/RIZO.Admin.WebApi.csproj b/RIZO.Admin.WebApi/RIZO.Admin.WebApi.csproj index 5e26afb..e46c496 100644 --- a/RIZO.Admin.WebApi/RIZO.Admin.WebApi.csproj +++ b/RIZO.Admin.WebApi/RIZO.Admin.WebApi.csproj @@ -27,7 +27,6 @@ - diff --git a/RIZO.Model/Business/MaterialInfo.cs b/RIZO.Model/Business/MaterialInfo.cs new file mode 100644 index 0000000..87b049c --- /dev/null +++ b/RIZO.Model/Business/MaterialInfo.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RIZO.Model.Business +{ + public class MaterialInfo + { + public int Id { get; set; } + public string MaterialCode { get; set; } + public string MaterialName { get; set; } + public string MaterialModel { get; set; } + public string MaterialType { get; set; } + public string ProcessCode { get; set; } + public int DelFlag { get; set; } = 0; + public string CreateBy { get; set; } + public DateTime CreateTime { get; set; } + public string UpdateBy { get; set; } + public DateTime? UpdateTime { get; set; } + } +} diff --git a/RIZO.Model/Business/MaterialTypeDict.cs b/RIZO.Model/Business/MaterialTypeDict.cs new file mode 100644 index 0000000..1854673 --- /dev/null +++ b/RIZO.Model/Business/MaterialTypeDict.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RIZO.Model.Business +{ + public class MaterialTypeDict + { + public int Id { get; set; } + public string MaterialType { get; set; } + public string MaterialTypeName { get; set; } + } +} diff --git a/RIZO.Model/Business/ProcessInfo.cs b/RIZO.Model/Business/ProcessInfo.cs new file mode 100644 index 0000000..99edf71 --- /dev/null +++ b/RIZO.Model/Business/ProcessInfo.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RIZO.Model.Business +{ + public class ProcessInfo + { + public int Id { get; set; } + public string ProcessCode { get; set; } + public string ProcessName { get; set; } + public string CreateBy { get; set; } + public DateTime CreateTime { get; set; } + public string UpdateBy { get; set; } + public DateTime? UpdateTime { get; set; } + } +} diff --git a/RIZO.Repository/Business/MaterialDao.cs b/RIZO.Repository/Business/MaterialDao.cs new file mode 100644 index 0000000..bb5515d --- /dev/null +++ b/RIZO.Repository/Business/MaterialDao.cs @@ -0,0 +1,161 @@ +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 2a3bf41..3037ac6 100644 --- a/RIZO.Repository/RIZO.Repository.csproj +++ b/RIZO.Repository/RIZO.Repository.csproj @@ -11,6 +11,7 @@ + diff --git a/RIZO.Service/Business/MaterialService.cs b/RIZO.Service/Business/MaterialService.cs new file mode 100644 index 0000000..0c0ef73 --- /dev/null +++ b/RIZO.Service/Business/MaterialService.cs @@ -0,0 +1,67 @@ +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); + } + } +}