You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

350 lines
17 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using Mesnac.Action.ChemicalWeighing.DBHelper;
using Mesnac.Action.ChemicalWeighing.Entity;
using Mesnac.Action.ChemicalWeighing.Entity.PptPlan;
using Mesnac.Codd.Session;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Mesnac.Action.ChemicalWeighing.Report
{
public class SolventDBHelper
{
#region 拼音检索配方物料列表
/// <summary>
/// 拼音检索配方物料列表
/// </summary>
/// <returns>返回配方列表</returns>
public static List<SimplePmtRecipe> GetRecipeMaterialListPY()
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string sqlstr = "select ROW_NUMBER() OVER(Order by GETDATE()) ID, recipe_Name from(select distinct recipe_Name from Pmt_recipe where Recipe_Verify=1) t ";
dbHelper.CommandText = sqlstr;
DataTable table = dbHelper.ToDataTable();
List<SimplePmtRecipe> lst = new List<SimplePmtRecipe>();
SimplePmtRecipe recipe = null;
foreach (DataRow row in table.Rows)
{
recipe = new SimplePmtRecipe();
recipe.ID = Mesnac.Basic.DataProcessor.RowValue(row, "ID", String.Empty);
//recipe.Recipe_Code = Mesnac.Basic.DataProcessor.RowValue(row, "recipe_Id", String.Empty);
recipe.Recipe_Name = Mesnac.Basic.DataProcessor.RowValue(row, "recipe_Name", String.Empty);
//recipe.Recipe_type = Mesnac.Basic.DataProcessor.RowValue(row, "recipe_Type", String.Empty);
lst.Add(recipe);
}
return lst;
}
#endregion
#region 获取List
/// <summary>
/// 获取List<LR_weigh>
/// </summary>
/// <param name="recipeId">计划号</param>
/// <returns>返回符合条件List<LR_weigh></returns>
public static DataTable GetLRWeighDataTable(string Dosing_Id)
{
List<Pmt_weigh> lR_Weighs = new List<Pmt_weigh>();
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
dbHelper.CommandType = CommandType.Text;
string strSql = "SELECT * FROM Pmt_weigh where Dosing_Id = @Dosing_Id order by ID";
dbHelper.CommandText = strSql;
dbHelper.ClearParameter();
dbHelper.AddParameter("@Dosing_Id", Dosing_Id);
DataTable table = dbHelper.ToDataTable();
if (table != null && table.Rows.Count > 0)
{
return table;
}
return null;
}
#endregion
#region 获取LR_plan
/// <summary>
/// 获取RT_Plan
/// </summary>
/// <param name="planID">计划号</param>
/// <returns>返回符合条件List<LR_weigh></returns>
public static Hw_plan GetRtPlan(string planID, int realNum)
{
Hw_plan entity = new Hw_plan();
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
dbHelper.CommandType = CommandType.Text;
string strSql = "SELECT top 1 * FROM Hw_plan where Plan_Id = @Plan_Id and Real_Num=@Real_Num";
dbHelper.CommandText = strSql;
dbHelper.ClearParameter();
dbHelper.AddParameter("@Plan_Id", planID);
dbHelper.AddParameter("@Real_Num", realNum);
DataTable table = dbHelper.ToDataTable();
if (table != null && table.Rows.Count > 0)
{
foreach (DataRow dr in table.Rows)
{
entity = ConvertDataRowToHwPlan(dr);
break;
}
}
return entity;
}
private static Hw_plan ConvertDataRowToHwPlan(DataRow dr)
{
if (dr != null)
{
Hw_plan plan = new Hw_plan();
plan.ID = Mesnac.Basic.DataProcessor.RowValue(dr, "ID", 0);
plan.Dosing_Id = Mesnac.Basic.DataProcessor.RowValue(dr, "Dosing_Id", String.Empty);
plan.Plan_Id = Mesnac.Basic.DataProcessor.RowValue(dr, "Plan_Id", String.Empty);
plan.Equip_Code = Mesnac.Basic.DataProcessor.RowValue(dr, "Equip_Code", String.Empty);
plan.Plan_Serial = Mesnac.Basic.DataProcessor.RowValue(dr, "Plan_Serial", 0);
plan.Recipe_ID = Mesnac.Basic.DataProcessor.RowValue(dr, "Recipe_ID", String.Empty);
plan.Recipe_Code = Mesnac.Basic.DataProcessor.RowValue(dr, "Recipe_Code", String.Empty);
plan.Recipe_Name = Mesnac.Basic.DataProcessor.RowValue(dr, "Recipe_Name", String.Empty);
plan.Version = Mesnac.Basic.DataProcessor.RowValue(dr, "Version", 0);
plan.Recipe_Type = Mesnac.Basic.DataProcessor.RowValue(dr, "Recipe_Type", 0);
plan.Shift_Id = Mesnac.Basic.DataProcessor.RowValue(dr, "Shift_Id", 0);
plan.Shift_Class = Mesnac.Basic.DataProcessor.RowValue(dr, "Shift_Class", String.Empty);
plan.Plan_Num = Mesnac.Basic.DataProcessor.RowValue(dr, "Plan_Num", 0);
plan.Real_Num = Mesnac.Basic.DataProcessor.RowValue(dr, "Real_Num", 0);
plan.Duration_Time = Mesnac.Basic.DataProcessor.RowValue(dr, "Duration_Time", 0);
plan.Start_Date = Mesnac.Basic.DataProcessor.RowValue(dr, "Start_Date", String.Empty);
plan.End_Date = Mesnac.Basic.DataProcessor.RowValue(dr, "End_Date", String.Empty);
plan.Weight_Man = Mesnac.Basic.DataProcessor.RowValue(dr, "Weight_Man", String.Empty);
plan.Stock_Man = Mesnac.Basic.DataProcessor.RowValue(dr, "Stock_Man", String.Empty);
plan.Plan_Batch = Mesnac.Basic.DataProcessor.RowValue(dr, "Plan_Batch", String.Empty);
plan.Plan_State = Mesnac.Basic.DataProcessor.RowValue(dr, "Plan_State", 0);
plan.Plan_Date = Mesnac.Basic.DataProcessor.RowValue(dr, "Plan_Date", String.Empty);
plan.Total_Weight = Mesnac.Basic.DataProcessor.RowValue(dr, "Total_Weight", 0);
plan.Total_Error = Mesnac.Basic.DataProcessor.RowValue(dr, "Total_Error", 0);
plan.IF_FLAG = Mesnac.Basic.DataProcessor.RowValue(dr, "IF_FLAG", 0);
plan.IsRetransmission = Mesnac.Basic.DataProcessor.RowValue(dr, "IsRetransmissionv", 0);
return plan;
}
else
{
return null;
}
}
#endregion
#region 添加生产计划报表Hw_plan
/// <summary>
/// 添加生产计划
/// </summary>
/// <param name="lrPlan">LR_plan实体类</param>
/// <returns>返回新加计划的计划号</returns>
public static bool AddHwPlan(Hw_plan plan)
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
//添加计划的SQL语句
string strSql3 = @"INSERT INTO Hw_plan(Dosing_Id,Plan_Id,Equip_Code,Plan_Serial,Recipe_ID,Recipe_Code,Recipe_Name,Version,Recipe_Type,Shift_Id,Shift_Class,Plan_Num,Real_Num,Duration_Time,Start_Date,End_Date,Weight_Man,Stock_Man,Plan_Batch,Plan_State,Plan_Date,Total_Weight,Total_Error,IF_FLAG,IsRetransmission)
VALUES(@Dosing_Id,@Plan_Id,@Equip_Code,@Plan_Serial,@Recipe_ID,@Recipe_Code,@Recipe_Name,@Version,@Recipe_Type,@Shift_Id,@Shift_Class,@Plan_Num,@Real_Num,@Duration_Time,@Start_Date,@End_Date,@Weight_Man,@Stock_Man,@Plan_Batch,@Plan_State,@Plan_Date,@Total_Weight,@Total_Error,@IF_FLAG,@IsRetransmission)";
dbHelper.CommandText = strSql3;
dbHelper.AddParameter("@Dosing_Id", 0);
dbHelper.AddParameter("@Plan_Id", plan.Plan_Id); //计划号
dbHelper.AddParameter("@Equip_Code", plan.Equip_Code); //机台号
dbHelper.AddParameter("@Plan_Serial", plan.Plan_Serial); //排序字段优先级在此与ActionOrder相同
dbHelper.AddParameter("@Recipe_ID", plan.Recipe_ID);
dbHelper.AddParameter("@Recipe_Code", plan.Recipe_Code); //配方编码
dbHelper.AddParameter("@Recipe_Name", plan.Recipe_Name); //配方别名
dbHelper.AddParameter("@Version", plan.Version); //配方版本号
//dbHelper.AddParameter("@Mixer_Line", plan.Mixer_Line); //配方版本号
dbHelper.AddParameter("@Recipe_Type", plan.Recipe_Type); //配方类型
dbHelper.AddParameter("@Shift_Id", plan.Shift_Id); //班次ID
dbHelper.AddParameter("@Shift_Class", 0); //班组ID
dbHelper.AddParameter("@Plan_Num", plan.Plan_Num); //计划数
dbHelper.AddParameter("@Real_Num", plan.Real_Num); //完成数量
dbHelper.AddParameter("@Duration_Time", plan.Duration_Time); //持续时间
dbHelper.AddParameter("@Start_Date", plan.Start_Date); //开始时间
dbHelper.AddParameter("@End_Date", plan.End_Date); //结束时间
dbHelper.AddParameter("@Weight_Man", plan.Weight_Man); //称量工
dbHelper.AddParameter("@Stock_Man", plan.Stock_Man); //投料工
dbHelper.AddParameter("@Plan_Batch", plan.Plan_Batch); //批次号,不同的现场有不同的命令规则。
dbHelper.AddParameter("@Plan_State", plan.Plan_State); //计划状态
dbHelper.AddParameter("@Plan_Date", plan.Plan_Date); //计划日期
dbHelper.AddParameter("@IF_FLAG", plan.IF_FLAG); //暂时无用
dbHelper.AddParameter("@Total_Weight", plan.Total_Weight);
dbHelper.AddParameter("@Total_Error", plan.Total_Error);
dbHelper.AddParameter("@IsRetransmission", plan.IsRetransmission);
dbHelper.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
return false;
}
}
#endregion
#region 添加物料报表LR_weigh
/// <summary>
/// 添加物料报表
/// </summary>
/// <param name="lrPlan">LR_plan实体类</param>
/// <returns>返回新加计划的计划号</returns>
public static bool AddHwWeigh(Hw_weigh weigh,int b)
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
//添加计划的SQL语句
string strSql3 = @"INSERT INTO Hw_weigh(Dosing_ID,Plan_ID,Recipe_ID,Material_ID,Material_Name,Set_Weight,Set_Error,Real_Weight,Real_Error,EndTime)
VALUES(@Dosing_ID,@Plan_ID,@Recipe_ID,@Material_ID,@Material_Name,@Set_Weight,@Set_Error,@Real_Weight,@Real_Error,@EndTime)";
dbHelper.CommandText = strSql3;
dbHelper.AddParameter("@Dosing_ID", b);//批次
dbHelper.AddParameter("@Plan_ID", weigh.Plan_ID); //计划号
dbHelper.AddParameter("@Recipe_ID", weigh.Recipe_ID); //配方号
dbHelper.AddParameter("@Material_ID", weigh.Material_ID); //物料号
dbHelper.AddParameter("@Material_Name", weigh.Material_Name); //物料名称
dbHelper.AddParameter("@Set_Weight", weigh.Set_Weight); //设置重量
dbHelper.AddParameter("@Set_Error", weigh.Set_Error); //设置误差
dbHelper.AddParameter("@Real_Weight", weigh.Real_Weight); //称量重量
dbHelper.AddParameter("@Real_Error", weigh.Real_Error); //称量误差
dbHelper.AddParameter("@EndTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //完成时间
dbHelper.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
return false;
}
}
#endregion
#region 更新计划状态
/// <summary>
/// 更新计划状态
/// </summary>
/// <param name="planId">计划号</param>
/// <param name="state">任务状态 3:正在运行4:已下传;5:未启动7已终止;8:已完成</param>
/// <param name="IfFlag">是否完成</param>
/// <returns></returns>
public static bool UpdateHwPlan(string planId, decimal total_Weight, decimal total_Error)
{
try
{
DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError);
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = "update Hw_plan set Total_Weight = @Total_Weight, Total_Error = @Total_Error where Plan_Id = @PlanID";
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@Total_Weight", total_Weight);
dbHelper.AddParameter("@Total_Error", total_Error);
dbHelper.AddParameter("@PlanID", planId);
dbHelper.ExecuteNonQuery();
return true;
}
catch (Exception)
{
return false;
}
}
#endregion
public static bool SaveToSolvenDB(Hw_plan plan,Hw_weigh weigh)
{
IFreeSql fsql = FreeHelper.Instance;
try
{
fsql.Transaction(() =>
{
var affrows = fsql.Insert<Hw_plan>(plan).ExecuteAffrows();
//判断是否插入成功
if (affrows < 1)
throw new Exception("溶剂存盘计划详细数据失败!"); //抛出异常,回滚事务,事务退出
affrows = fsql.Insert<Hw_weigh>(weigh).ExecuteAffrows();
if (affrows < 1)
throw new Exception("溶剂存盘物料详细数据失败!");//抛出异常,回滚事务,事务退出
});
return true;
}
catch (Exception ex)
{
return false;
}
}
public static bool SaveToSolvenDB2(Hw_plan plan, Hw_weigh weigh)
{
IFreeSql fsql = FreeHelper.Instance;
try
{
var affrows = fsql.Insert<Hw_weigh>(weigh).ExecuteAffrows();
if (affrows < 1)
{
return false;
}
else
{
return true;
}
}
catch (Exception ex)
{
return false;
}
}
}
}