162 lines
6.8 KiB
C#
162 lines
6.8 KiB
C#
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<MaterialInfo> GetMaterials(bool includeDeleted = false)
|
||
{
|
||
var list = new List<MaterialInfo>();
|
||
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<MaterialInfo> 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();
|
||
}
|
||
}
|
||
}
|