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.

260 lines
9.5 KiB
C#

using Mesnac.Action.ChemicalWeighing.DBHelper;
using Mesnac.Action.ChemicalWeighing.Entity;
using Mesnac.Action.ChemicalWeighing.Entity.PptPlan;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Mesnac.Action.ChemicalWeighing
{
public class SolventPlanHelper
{
#region 根据计划号获取下发计划任务——地磅
/// <summary>
/// 根据计划号获取下发计划任务
/// </summary>
/// <param name="planId"></param>
/// <param name="recipeId"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public static List<MetagePlan> GetPlan()
{
try
{
string strSql = @"select w.Weight_Id MID, p.Dosing_Id,p.Plan_Id,p.Plan_Serial,p.Recipe_ID,p.Recipe_Name,p.Version,p.Plan_Num,p.Real_Num,p.Shift_Id,p.Shift_Class,p.Plan_State,p.Plan_StateText,p.Plan_TotalWeight,p.Plan_TotalError,r.Total_Weight,r.Total_Error,m.ID as MaterialID,m.Material_name,b.Bin_Serial as Station,b.Bin_Name as StationName,w.Set_Weight,w.Set_Error,p.IsRetransmission,p.Retransmission_Num,w.IsRate,w.TheoryRate,p.Exec_Num
from RT_plan p left join Pmt_recipe r on p.Recipe_ID=r.ID
left join Pmt_weigh w on r.ID=w.Recipe_ID
left join Pmt_material m on w.Material_ID=m.ID
left join Pmt_Bin b on m.ID=b.Material_ID where p.Weighbridge='1号地磅' and p.Plan_State=3 ";
IFreeSql fsql = FreeHelper.Instance;
List<MetagePlan> list = fsql.Select<MetagePlan>().WithSql(strSql).ToList();
var planList = list.OrderBy(d => d.MID);
return list;
}
catch (Exception ex)
{
Console.WriteLine($"获取下发计划失败:{ex.Message}");
return null;
}
}
#endregion
#region 根据计划号获取下发计划任务——地磅2
/// <summary>
/// 根据计划号获取下发计划任务
/// </summary>
/// <param name="planId"></param>
/// <param name="recipeId"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public static List<MetagePlan> GetPlan2()
{
try
{
string strSql = @"select w.Weight_Id MID, p.Dosing_Id,p.Plan_Id,p.Plan_Serial,p.Recipe_ID,p.Recipe_Name,p.Version,p.Plan_Num,p.Real_Num,p.Shift_Id,p.Shift_Class,p.Plan_State,p.Plan_StateText,p.Plan_TotalWeight,p.Plan_TotalError,r.Total_Weight,r.Total_Error,m.ID as MaterialID,m.Material_name,b.Bin_Serial as Station,b.Bin_Name as StationName,w.Set_Weight,w.Set_Error,p.IsRetransmission,p.Retransmission_Num,w.IsRate,w.TheoryRate,p.Exec_Num
from RT_plan p left join Pmt_recipe r on p.Recipe_ID=r.ID
left join Pmt_weigh w on r.ID=w.Recipe_ID
left join Pmt_material m on w.Material_ID=m.ID
left join Pmt_Bin b on m.ID=b.Material_ID where p.Weighbridge='2号地磅' and p.Plan_State=3 ";
IFreeSql fsql = FreeHelper.Instance;
List<MetagePlan> list = fsql.Select<MetagePlan>().WithSql(strSql).ToList();
var planList = list.OrderBy(d => d.MID);
return list;
}
catch (Exception ex)
{
Console.WriteLine($"获取下发计划失败:{ex.Message}");
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)
{
IFreeSql fsql = FreeHelper.Instance;
string strSql = "SELECT * FROM Hw_plan where Plan_Id = @Plan_Id and Real_Num=@Real_Num";
Hw_plan entity = fsql.Select<Hw_plan>().Where(d => d.Plan_Id == planID&& d.Real_Num== realNum).ToOne();
return entity;
}
#endregion
#region 更新计划完成数
/// <summary>
/// 更新计划完成数UpdateRealNum
/// </summary>
/// <param name="planID">计划编号</param>
/// <param name="realNum">完成数</param>
public static bool UpdatePlan(string planID, int realNum, int state, decimal totalWeight, decimal totalError)
{
try
{
IFreeSql fsql = FreeHelper.Instance;
int result = fsql.Update<RT_plan>().Set(a => new RT_plan
{
Real_Num = realNum,
Plan_State = state,
Plan_StateText = StateToShow(state),
End_Date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
Plan_TotalWeight = totalWeight,
Plan_TotalError = totalError,
Exec_Num = 0,
IF_FLAG = 1
}).Where(a => a.Plan_Id == planID).ExecuteAffrows();
if (result < 1)
{
return false;
}
else
{
return true;
}
}
catch (Exception ex)
{
Console.WriteLine("更新计划完成数异常:" + ex.Message);
return false;
}
}
#endregion
#region 更新计划完成数
/// <summary>
/// 更新计划完成数UpdateRealNum
/// </summary>
/// <param name="planID">计划编号</param>
/// <param name="realNum">完成数</param>
public static bool UpdateRealNum(string planID, int realNum, decimal totalWeight, decimal totalError)
{
try
{
IFreeSql fsql = FreeHelper.Instance;
int result = fsql.Update<RT_plan>().Set(a => new RT_plan
{
Real_Num = realNum,
Plan_TotalWeight = totalWeight,
Plan_TotalError = totalError,
Exec_Num = 1
}).Where(a => a.Plan_Id == planID).ExecuteAffrows();
if (result < 1)
{
return false;
}
else
{
return true;
}
}
catch (Exception ex)
{
Console.WriteLine("更新计划完成数异常:" + ex.Message, ex);
return false;
}
}
#endregion
public static bool SaveToSolvenDB(Hw_plan plan, Hw_weigh weigh)
{
try
{
IFreeSql fsql = FreeHelper.Instance;
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)
{
Console.WriteLine($"保存盘物料计划数据失败!异常原因:{ex.Message}");
return false;
}
}
public static bool SaveToSolvenDB2(Hw_plan plan, Hw_weigh weigh)
{
try
{
IFreeSql fsql = FreeHelper.Instance;
var affrows = fsql.Insert<Hw_weigh>(weigh).ExecuteAffrows();
if (affrows < 1)
{
return false;
}
else
{
return true;
}
}
catch (Exception ex)
{
Console.WriteLine($"保存物料详细数据失败!异常原因:{ex.Message}");
return false;
}
}
#region 将计划运行状态转换为文字进行显示
/// <summary>
/// 将计划运行状态转换为文字进行显示
/// </summary>
/// <param name="stateNum">计划状态代码</param>
/// <returns>显示的文字信息</returns>
public static string StateToShow(int stateNum)
{
string reStr = null;
if (stateNum == 3)
{
reStr = "正在运行";
}
else if (stateNum == 4)
{
reStr = "已下传";
}
else if (stateNum == 5)
{
reStr = "未启动";
}
else if (stateNum == 7)
{
reStr = "已终止";
}
else if (stateNum == 8)
{
reStr = "已完成";
}
return reStr;
}
#endregion
}
}