using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection.Emit; using System.Text; using SqlSugar; using WCS.Data; using WCS.Data.Models; namespace WCS_Client.Frm { public class Current { public static List TaskSet = new List(); /// /// plc列表 /// public static List PlcSet = new List(); public static void InitData(string wcssystem) { string result = TryCachHelper.TryExecute((db) => { PlcSet = db.Queryable().Where(v => v.PLC_WCSSYSTEM == wcssystem).ToList(); foreach (var plc in PlcSet) { plc.WCS_DBSet = db.Queryable().Where(v => v.DB_PLCNAME == plc.PLC_NAME).ToList(); plc.WCS_ScannSet = db.Queryable().Where(v => v.SCANN_PLCNAME == plc.PLC_NAME).OrderBy(v => v.SCANN_SEQUENCE).ToList(); plc.WCS_EquipmentInfoSet = db.Queryable().Where(v => v.Equ_PlcName == plc.PLC_NAME).OrderBy(v => v.Equ_Sequence).ToList(); foreach (var item in plc.WCS_EquipmentInfoSet) { var equDBInfoSet = GetConvDBInfo(plc, item); if (item.Equ_Type.ToLower().Trim() == EquipmentType.conveyor.ToString()) { item.EquSignal = new ConvSignal(item.Equ_PlcName, equDBInfoSet); } else if (item.Equ_Type.ToLower().Trim() == EquipmentType.srm.ToString()) { item.EquSignal = new SrmSignal(item.Equ_PlcName, equDBInfoSet); } else if (item.Equ_Type.ToLower().Trim() == EquipmentType.rgv.ToString()) { item.EquSignal = new RGVSignal(item.Equ_PlcName, equDBInfoSet); } } plc.Init(); } }); } public static void RefreshData(bool isRefreshTask = false) { TryCachHelper.TryExecute((db) => { if (isRefreshTask) { TaskSet = db.Queryable().ToList(); } foreach (var plc in PlcSet) { plc.WCS_DBSet = db.Queryable().Where(v => v.DB_PLCNAME == plc.PLC_NAME).ToList(); } }); } private static List GetConvDBInfo(WCS_PLC plc, WCS_EQUIPMENTINFO item) { List equDBInfoSet = new List(); var dbSet = plc.WCS_DBSet.Where(v => v.DB_PLCNAME == item.Equ_PlcName).ToList(); foreach (var DB in dbSet) { if (DB.DB_TYPE == (int)DB_TypeEnum.WCS可读可写DB) { if (string.IsNullOrWhiteSpace(item.Equ_ReadWriteDB_Sequence)) continue; var convdb = new ConvDbInfo(); convdb.DBName = DB.DB_NAME; convdb.DBType = DB_TypeEnum.WCS可读可写DB; convdb.DBReadLength = item.Equ_ReadWriteDB_Length; //convdb.DBReadIndox = item.Equ_ReadWriteDB_Sequence * item.Equ_ReadWriteDB_Length; int temp_sequence = Convert.ToInt32(item.Equ_ReadWriteDB_Sequence); if (temp_sequence != 0) { int Totallength = temp_sequence * item.Equ_ReadWriteDB_Length; //plc.WCS_EquipmentInfoSet.Where(v => string.IsNullOrWhiteSpace(v.Equ_ReadWriteDB_Sequence) == false && Convert.ToInt32(v.Equ_ReadWriteDB_Sequence) < temp_sequence).Sum(v => v.Equ_ReadWriteDB_Length); convdb.DBReadIndox = Totallength; } equDBInfoSet.Add(convdb); } else if (DB.DB_TYPE == (int)DB_TypeEnum.WCS只读DB) { if (string.IsNullOrWhiteSpace(item.Equ_ReadDB_Sequence)) continue; var convdb = new ConvDbInfo(); convdb.DBName = DB.DB_NAME; convdb.DBType = DB_TypeEnum.WCS只读DB; convdb.DBReadLength = item.Equ_ReadDB_Length; //convdb.DBReadIndox = item.Equ_ReadWriteDB_Sequence * item.Equ_ReadWriteDB_Length; int temp_sequence = Convert.ToInt32(item.Equ_ReadDB_Sequence); if (temp_sequence != 0) { int Totallength = temp_sequence * item.Equ_ReadDB_Length; //plc.WCS_EquipmentInfoSet.Where(v => string.IsNullOrWhiteSpace(v.Equ_ReadDB_Sequence) == false && Convert.ToInt32(v.Equ_ReadDB_Sequence) < temp_sequence).Sum(v => v.Equ_ReadDB_Length); convdb.DBReadIndox = Totallength; } equDBInfoSet.Add(convdb); } else if (DB.DB_TYPE == (int)DB_TypeEnum.WCS状态和故障DB) { if (string.IsNullOrWhiteSpace(item.Equ_StatusDB_Sequence)) continue; var convdb = new ConvDbInfo(); convdb.DBName = DB.DB_NAME; convdb.DBType = DB_TypeEnum.WCS状态和故障DB; convdb.DBReadLength = item.Equ_StatusDB_Length; //convdb.DBReadIndox = item.Equ_ReadWriteDB_Sequence * item.Equ_ReadWriteDB_Length; int temp_sequence = Convert.ToInt32(item.Equ_StatusDB_Sequence); if (temp_sequence != 0) { int Totallength = temp_sequence * item.Equ_StatusDB_Length; //plc.WCS_EquipmentInfoSet.Where(v => string.IsNullOrWhiteSpace(v.Equ_StatusDB_Sequence) == false && Convert.ToInt32(v.Equ_StatusDB_Sequence) < temp_sequence).Sum(v => v.Equ_StatusDB_Length); convdb.DBReadIndox = Totallength; } equDBInfoSet.Add(convdb); } else if (DB.DB_TYPE == (int)DB_TypeEnum.WCS读取扫码DB) { if (string.IsNullOrWhiteSpace(item.Equ_BarCodeDB_Sequence)) continue; var convdb = new ConvDbInfo(); convdb.DBName = DB.DB_NAME; convdb.DBType = DB_TypeEnum.WCS读取扫码DB; convdb.DBReadLength = item.Equ_BarCodeDB_Length; //convdb.DBReadIndox = item.Equ_ReadWriteDB_Sequence * item.Equ_ReadWriteDB_Length; int temp_sequence = Convert.ToInt32(item.Equ_BarCodeDB_Sequence); if (temp_sequence != 0) { int Totallength = plc.WCS_EquipmentInfoSet.Where(v => string.IsNullOrWhiteSpace(v.Equ_BarCodeDB_Sequence) == false && Convert.ToInt32(v.Equ_BarCodeDB_Sequence) < temp_sequence).Sum(v => v.Equ_BarCodeDB_Length); convdb.DBReadIndox = Totallength; } convdb.ScannSet = plc.WCS_ScannSet.Where(v => v.SCANN_STATIONNO == item.Equ_No).OrderBy(v => v.SCANN_SEQUENCE).ToList(); equDBInfoSet.Add(convdb); } else if (DB.DB_TYPE == (int)DB_TypeEnum.WCS读写扩展DB1) { if (string.IsNullOrWhiteSpace(item.Equ_ExtendOne_Sequence)) continue; var convdb = new ConvDbInfo(); convdb.DBName = DB.DB_NAME; convdb.DBType = DB_TypeEnum.WCS读写扩展DB1; convdb.DBReadLength = item.Equ_ExtendOne_Length; //convdb.DBReadIndox = item.Equ_ReadWriteDB_Sequence * item.Equ_ReadWriteDB_Length; int temp_sequence = Convert.ToInt32(item.Equ_ExtendOne_Sequence); if (temp_sequence != 0) { int Totallength = plc.WCS_EquipmentInfoSet.Where(v => string.IsNullOrWhiteSpace(v.Equ_ExtendOne_Sequence) == false && Convert.ToInt32(v.Equ_ExtendOne_Sequence) < temp_sequence).Sum(v => v.Equ_ExtendOne_Length); convdb.DBReadIndox = Totallength; } convdb.ScannSet = plc.WCS_ScannSet.Where(v => v.SCANN_STATIONNO == item.Equ_No).OrderBy(v => v.SCANN_SEQUENCE).ToList(); equDBInfoSet.Add(convdb); } else if (DB.DB_TYPE == (int)DB_TypeEnum.WCS读写扩展DB2) { if (string.IsNullOrWhiteSpace(item.Equ_ExtendTwo_Sequence)) continue; var convdb = new ConvDbInfo(); convdb.DBName = DB.DB_NAME; convdb.DBType = DB_TypeEnum.WCS读写扩展DB2; convdb.DBReadLength = item.Equ_ExtendTwo_Length; //convdb.DBReadIndox = item.Equ_ReadWriteDB_Sequence * item.Equ_ReadWriteDB_Length; int temp_sequence = Convert.ToInt32(item.Equ_ExtendTwo_Sequence); if (temp_sequence != 0) { int Totallength = plc.WCS_EquipmentInfoSet.Where(v => string.IsNullOrWhiteSpace(v.Equ_ExtendTwo_Sequence) == false && Convert.ToInt32(v.Equ_ExtendTwo_Sequence) < temp_sequence).Sum(v => v.Equ_ExtendTwo_Length); convdb.DBReadIndox = Totallength; } convdb.ScannSet = plc.WCS_ScannSet.Where(v => v.SCANN_STATIONNO == item.Equ_No).OrderBy(v => v.SCANN_SEQUENCE).ToList(); equDBInfoSet.Add(convdb); } else if (DB.DB_TYPE == (int)DB_TypeEnum.WCS读写扩展DB3) { if (string.IsNullOrWhiteSpace(item.Equ_ExtendThree_Sequence)) continue; var convdb = new ConvDbInfo(); convdb.DBName = DB.DB_NAME; convdb.DBType = DB_TypeEnum.WCS读写扩展DB3; convdb.DBReadLength = item.Equ_ExtendThree_Length; //convdb.DBReadIndox = item.Equ_ReadWriteDB_Sequence * item.Equ_ReadWriteDB_Length; int temp_sequence = Convert.ToInt32(item.Equ_ExtendThree_Sequence); if (temp_sequence != 0) { int Totallength = plc.WCS_EquipmentInfoSet.Where(v => string.IsNullOrWhiteSpace(v.Equ_ExtendThree_Sequence) == false && Convert.ToInt32(v.Equ_ExtendThree_Sequence) < temp_sequence).Sum(v => v.Equ_ExtendThree_Length); convdb.DBReadIndox = Totallength; } convdb.ScannSet = plc.WCS_ScannSet.Where(v => v.SCANN_STATIONNO == item.Equ_No).OrderBy(v => v.SCANN_SEQUENCE).ToList(); equDBInfoSet.Add(convdb); } } return equDBInfoSet; } } }