using DataRWDAL.Base;
|
using SqlSugar;
|
using System.Collections.Generic;
|
using System.Collections.ObjectModel;
|
using System.ComponentModel;
|
using System.Dynamic;
|
using System.Reflection;
|
using System.Runtime.InteropServices.Expando;
|
using XImagingXhandler.XDAL;
|
|
namespace DataRWDAL
|
{
|
/// <summary>
|
/// 液体类型与液体范围关系库表操作类
|
/// </summary>
|
public class LiquidTypeRSRangeDB:BaseDB
|
{
|
#region 查询返回液体类型数据集 by 查询请求参数
|
/// <summary>
|
/// 查询返回液体类型数据集 by 查询请求参数
|
/// </summary>
|
/// <param name="lType">1:默认类型;0:非默认;2:全部类型</param>
|
/// <returns>液体类型数据集</returns>
|
public static List<LiquidType> GetLiquidTypeFromdb(int lType)
|
{
|
List<LiquidType> liquidTypes = new List<LiquidType>();
|
using (var db = GetInstance())
|
{
|
if (lType == 1 || lType == 0)
|
{
|
liquidTypes = db.Queryable<LiquidType>().Where(it => it.is_default_type.Equals(lType)).OrderBy(it => it.timestamp, SqlSugar.OrderByType.Asc).ToList();
|
LiquidType lbt = new LiquidType();
|
lbt.liquid_type_id = "0";
|
lbt.liquid_type_name = "所有类型";
|
lbt.liquid_type_name_en = "All";
|
liquidTypes.Insert(0,lbt);
|
}
|
else if (lType == 2)
|
{
|
liquidTypes = db.Queryable<LiquidType>().OrderBy(it => it.timestamp, SqlSugar.OrderByType.Asc).ToList();
|
LiquidType lbt = new LiquidType();
|
lbt.liquid_type_id = "0";
|
lbt.liquid_type_name = "所有类型";
|
lbt.liquid_type_name_en = "All";
|
liquidTypes.Insert(0,lbt);
|
}
|
else
|
{
|
LiquidType lbt = new LiquidType();
|
lbt.liquid_type_id = "0";
|
lbt.liquid_type_name = "所有类型";
|
lbt.liquid_type_name_en = "All";
|
liquidTypes.Insert(0, lbt);
|
}
|
}
|
return liquidTypes;
|
}
|
#endregion
|
|
#region 查询返回液体参数数据集 by 液体类型Id、液体范围Id、设备臂Id
|
/// <summary>
|
/// 查询返回液体参数数据集 by 液体类型Id、液体范围Id、设备臂Id
|
/// </summary>
|
/// <param name="liquidTypeId">液体类型Id</param>
|
/// <param name="liquidRangeId">液体范围Id</param>
|
/// <param name="armId">设备臂Id</param>
|
/// <returns>液体参数数据集</returns>
|
public static ObservableCollection<Liquid> GetLiquidFromdbByTypeAndRange(string liquidTypeId, string liquidRangeId, string armId)
|
{
|
using (var db = GetInstance())
|
{
|
//string sqlstr = "select t.liquid_type_id,lt.liquid_type_name,lt.liquid_type_name_en,lr.liquid_range_name,lr.liquid_range_name_en,t.liquid_range_id,t.device_arm_id,l.* from liquidtypersrange t, liquid l,liquidtype lt,liquidrange lr where t.liquid_id=l.liquid_id and t.liquid_type_id=lt.liquid_type_id and t.liquid_range_id=lr.liquid_range_id and t.liquid_type_id='" + liquidTypeId + "' and t.liquid_range_id='" + liquidRangeId + "' and t.device_arm_id=" + armId + " and t.liquid_rs_status=1";
|
|
// 多表查询
|
var query = db.Queryable("LiquidTypeRSRange", "t").AddJoinInfo("Liquid", "l", "t.liquid_id=l.liquid_id and t.liquid_type_id='"+liquidTypeId+"' and t.liquid_range_id='"+ liquidRangeId+ "' and t.device_arm_id="+armId.ToString()+" and t.liquid_rs_status=1 and l.liquid_status=1", JoinType.Inner)
|
.AddJoinInfo("LiquidType", "lt", "lt.liquid_type_id=t.liquid_type_id", JoinType.Inner)
|
.AddJoinInfo("LiquidRange", "lr", "lr.liquid_range_id=t.liquid_range_id", JoinType.Inner)
|
.Select("t.liquid_type_id,lt.liquid_type_name,lt.liquid_type_name_en,lr.liquid_range_name,lr.liquid_range_name_en,t.liquid_range_id,t.device_arm_id,l.*");
|
var a = query.ToList();
|
ObservableCollection<Liquid> liquids = new ObservableCollection<Liquid>();
|
foreach(ExpandoObject epo in a)
|
{
|
Liquid lq= epo.ToEntity<Liquid>();
|
lq.device_arm_id = armId;
|
liquids.Add(lq);
|
}
|
var result = liquids;
|
return result;
|
}
|
}
|
#endregion
|
|
#region 添加一条新的液体类型与液体范围关系数据 by 液体类型与液体范围关系对象
|
/// <summary>
|
/// 添加一条新的液体类型与液体范围关系数据 by 液体类型与液体范围关系对象
|
/// </summary>
|
/// <param name="liquidTypeRSRange">液体类型与液体范围关系对象</param>
|
/// <returns>1:成功;0:失败</returns>
|
public static int AddLiquidTypeRSRangeIntodb(LiquidTypeRSRange liquidTypeRSRange)
|
{
|
using (var db = GetInstance())
|
{
|
return db.Insertable<LiquidTypeRSRange>(liquidTypeRSRange).ExecuteCommand();
|
}
|
}
|
#endregion
|
|
#region 修改一条液体类型与液体范围关系数据 by 液体类型与液体范围关系对象的Id、液体类型Id、设备臂Id、数据状态
|
/// <summary>
|
/// 修改一条液体类型与液体范围关系数据 by 液体类型与液体范围关系对象的Id、液体类型Id、设备臂Id、数据状态
|
/// </summary>
|
/// <param name="liquidTypeRSRange">液体类型与液体范围关系对象</param>
|
/// <returns>1:成功;0:失败</returns>
|
public static int UpdateLiquidTypeRSRangeIntodb(LiquidTypeRSRange liquidTypeRSRange)
|
{
|
using (var db = GetInstance())
|
{
|
return db.Updateable<LiquidTypeRSRange>(liquidTypeRSRange).Where(it=>it.liquid_range_id.Equals(liquidTypeRSRange.liquid_range_id)
|
&&it.liquid_type_id.Equals(liquidTypeRSRange.liquid_type_id)
|
&&it.device_arm_id.Equals(liquidTypeRSRange.device_arm_id)
|
&&it.liquid_rs_status.Equals(1)).ExecuteCommand();
|
}
|
}
|
#endregion
|
|
#region 删除一条新的液体类型与液体范围关系数据 by 液体类型与液体范围关系对象
|
/// <summary>
|
/// 删除一条新的液体类型与液体范围关系数据 by 液体类型与液体范围关系对象
|
/// </summary>
|
/// <param name="liquidTypeRSRange">液体类型与液体范围关系对象</param>
|
/// <returns>1:成功;0:失败</returns>
|
public static int DeleteLiquidTypeRSRangeIntodb(LiquidTypeRSRange liquidTypeRSRange)
|
{
|
using (var db = GetInstance())
|
{
|
return db.Updateable<LiquidTypeRSRange>(liquidTypeRSRange).Where(it => it.liquid_range_id.Equals(liquidTypeRSRange.liquid_range_id)
|
&& it.liquid_type_id.Equals(liquidTypeRSRange.liquid_type_id)
|
&& it.liquid_rs_status.Equals(1)).ExecuteCommand();
|
}
|
}
|
#endregion
|
}
|
|
/// <summary>
|
/// ExpandoObject 转化为实体类
|
/// </summary>
|
public static class ExpandoObjectExtensions
|
{
|
public static T ToEntity<T>(this ExpandoObject expando) where T : class, new()
|
{
|
var entity = new T();
|
var type = entity.GetType();
|
|
foreach (var property in expando)
|
{
|
var propName = property.Key;
|
var propValue = property.Value;
|
var prop = type.GetProperty(propName);
|
|
if (prop == null) continue;
|
|
if (propValue != null && prop.PropertyType.IsAssignableFrom(propValue.GetType()))
|
{
|
prop.SetValue(entity, propValue, null);
|
}
|
else if (propValue != null)
|
{
|
var converter = TypeDescriptor.GetConverter(prop.PropertyType);
|
if (converter.CanConvertFrom(propValue.GetType()))
|
{
|
prop.SetValue(entity, converter.ConvertFrom(propValue), null);
|
}
|
}
|
}
|
|
return entity;
|
}
|
}
|
}
|