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 { /// /// 液体类型与液体范围关系库表操作类 /// public class LiquidTypeRSRangeDB:BaseDB { #region 查询返回液体类型数据集 by 查询请求参数 /// /// 查询返回液体类型数据集 by 查询请求参数 /// /// 1:默认类型;0:非默认;2:全部类型 /// 液体类型数据集 public static List GetLiquidTypeFromdb(int lType) { List liquidTypes = new List(); using (var db = GetInstance()) { if (lType == 1 || lType == 0) { liquidTypes = db.Queryable().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().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 /// /// 查询返回液体参数数据集 by 液体类型Id、液体范围Id、设备臂Id /// /// 液体类型Id /// 液体范围Id /// 设备臂Id /// 液体参数数据集 public static ObservableCollection 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 liquids = new ObservableCollection(); foreach(ExpandoObject epo in a) { Liquid lq= epo.ToEntity(); lq.device_arm_id = armId; liquids.Add(lq); } var result = liquids; return result; } } #endregion #region 添加一条新的液体类型与液体范围关系数据 by 液体类型与液体范围关系对象 /// /// 添加一条新的液体类型与液体范围关系数据 by 液体类型与液体范围关系对象 /// /// 液体类型与液体范围关系对象 /// 1:成功;0:失败 public static int AddLiquidTypeRSRangeIntodb(LiquidTypeRSRange liquidTypeRSRange) { using (var db = GetInstance()) { return db.Insertable(liquidTypeRSRange).ExecuteCommand(); } } #endregion #region 修改一条液体类型与液体范围关系数据 by 液体类型与液体范围关系对象的Id、液体类型Id、设备臂Id、数据状态 /// /// 修改一条液体类型与液体范围关系数据 by 液体类型与液体范围关系对象的Id、液体类型Id、设备臂Id、数据状态 /// /// 液体类型与液体范围关系对象 /// 1:成功;0:失败 public static int UpdateLiquidTypeRSRangeIntodb(LiquidTypeRSRange liquidTypeRSRange) { using (var db = GetInstance()) { return db.Updateable(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 液体类型与液体范围关系对象 /// /// 删除一条新的液体类型与液体范围关系数据 by 液体类型与液体范围关系对象 /// /// 液体类型与液体范围关系对象 /// 1:成功;0:失败 public static int DeleteLiquidTypeRSRangeIntodb(LiquidTypeRSRange liquidTypeRSRange) { using (var db = GetInstance()) { return db.Updateable(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 } /// /// ExpandoObject 转化为实体类 /// public static class ExpandoObjectExtensions { public static T ToEntity(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; } } }