public Result PostScriptVersion([FromBody] ScriptVersion scriptVersion) { var wId = scriptVersion.WorkshopId; var names = new List <string> { scriptVersion.Name }; if (ScriptVersionHelper.GetHaveSame(wId, names)) { return(Result.GenError <Result>(Error.ScriptVersionIsExist)); } var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; scriptVersion.CreateUserId = createUserId; scriptVersion.MarkedDateTime = markedDateTime; var valN = scriptVersion.ValueNumber == 0 ? 300 : scriptVersion.ValueNumber; var inN = scriptVersion.InputNumber == 0 ? 255 : scriptVersion.InputNumber; var outN = scriptVersion.OutputNumber == 0 ? 255 : scriptVersion.OutputNumber; var msg = new DeviceInfoMessagePacket(valN, inN, outN); scriptVersion.HeartPacket = msg.Serialize(); scriptVersion.ScriptFile = scriptVersion.ScriptFile ?? ""; ScriptVersionHelper.Add(scriptVersion); RedisHelper.PublishToTable(ScriptVersionHelper.Instance.Table); return(Result.GenError <Result>(Error.Success)); }
public DataResult GetScriptVersion([FromQuery] bool menu, int deviceModelId, int qId) { var result = new DataResult(); result.datas.AddRange(menu ? ScriptVersionHelper.GetMenu(qId) : ScriptVersionHelper.GetDetails(qId, deviceModelId)); if (qId != 0 && !result.datas.Any()) { result.errno = Error.ScriptVersionNotExist; return(result); } return(result); }
public static void Init(IConfiguration configuration) { RedisHelper.Init(configuration); ApiDb = new DataBase(configuration.GetConnectionString("ApiDb")); ServerId = configuration.GetAppSettings <int>("ServerId"); ServerIp = configuration.GetAppSettings <string>("ServerIp"); ServerPort = configuration.GetAppSettings <int>("ServerPort"); GateIp = configuration.GetAppSettings <string>("GateIp"); GatePort = configuration.GetAppSettings <int>("GatePort"); ScriptVersionHelper.LoadConfig(); //must first ClientManager.LoadConfig(); Loads = new Dictionary <string, Action> { { "ReadDB", LoadDateBase }, { UsuallyDictionaryHelper.TableName, UsuallyDictionaryHelper.LoadConfig }, { DataNameDictionaryHelper.TableName, DataNameDictionaryHelper.LoadConfig }, { WorkshopHelper.TableName, WorkshopHelper.LoadConfig }, }; foreach (var action in Loads.Values) { action(); } MonitoringDataHelper.Init(); ClientManager.Init(); if (!RedisHelper.Exists(IsAutoSetProcessDataKey)) { RedisHelper.SetForever(IsAutoSetProcessDataKey, 1); } if (!RedisHelper.Exists(IsAutoSetProcessDataDevice)) { RedisHelper.SetForever(IsAutoSetProcessDataDevice, ""); } if (!RedisHelper.Exists(IsAutoSetProcessDataFcWay)) { RedisHelper.SetForever(IsAutoSetProcessDataFcWay, 1); } Loads.Add(ScriptVersionHelper.TableName, ScriptVersionHelper.LoadConfig); Loads.Add(ClientManager.TableName, ClientManager.LoadConfig); Log.InfoFormat("ServerConfig Done, Count:{0}", ClientManager.GetDevices().Count()); }
public DataResult GetSet([FromQuery] int wId, int qId, WarningType type, WarningDataType dataType, bool first = false) { wId = wId == 0 ? 1 : wId; var result = new DataResult(); var r = ServerConfig.ApiDb.Query <WarningSetWithItems>( $"SELECT a.*, IFNULL(b.`Class`, '') `Class`, IFNULL(c.`StepName`, '') `StepName` FROM `warning_set` a " + $"LEFT JOIN `device_class` b ON a.ClassId = b.Id " + $"LEFT JOIN `flow_step` c ON a.StepId = c.Id " + $"WHERE a.`MarkedDelete` = 0 AND a.`WarningType` = @type AND a.`DataType` = @dataType{(qId == 0 ? "" : " AND a.Id = @qId")};", new { qId, type, dataType }); var d = new List <WarningSetItemDetail>(); if (first && r.Any()) { var setId = r.FirstOrDefault().Id; var sql = ""; List <WarningSetItemDetail> s; switch (dataType) { case WarningDataType.设备数据: var scriptId = r.FirstNonDefault().ScriptId; sql = "SELECT b.*, a.VariableName Item, a.PointerAddress, a.VariableTypeId, a.Id DictionaryId " + "FROM (SELECT * FROM `data_name_dictionary` WHERE ScriptId = @scriptId AND MarkedDelete = 0) a " + "LEFT JOIN (SELECT * FROM `warning_set_item` WHERE SetId = @setId AND MarkedDelete = 0) b " + "ON a.Id = b.DictionaryId ORDER BY a.VariableTypeId, a.PointerAddress;"; d.AddRange(ServerConfig.ApiDb.Query <WarningSetItemDetail>(sql, new { setId, scriptId })); break; case WarningDataType.生产数据: sql = "SELECT * FROM `warning_set_item` WHERE MarkedDelete = 0 AND SetId = @setId;"; s = ServerConfig.ApiDb.Query <WarningSetItemDetail>(sql, new { setId }).ToList(); foreach (var val in HWarningHelper.生产数据字段汇总) { if (s.All(x => x.ItemType != val.Item2)) { d.Add(new WarningSetItemDetail { Item = val.Item1, ItemType = val.Item2, ValueType = HWarningHelper.GetItemValueType(val.Item2) }); } else { var dd = s.First(x => x.Item == val.Item1); dd.ValueType = HWarningHelper.GetItemValueType(val.Item2); d.Add(dd); } d = d.OrderBy(x => HWarningHelper.生产数据字段汇总.FirstOrDefault(y => y.Item2 == x.ItemType)?.Item2).ToList(); } break; case WarningDataType.故障数据: //sql = "SELECT * FROM `warning_set_item` WHERE MarkedDelete = 0 AND SetId = @setId;"; break; case WarningDataType.流程卡数据: sql = "SELECT * FROM `warning_set_item` WHERE MarkedDelete = 0 AND SetId = @setId;"; s = ServerConfig.ApiDb.Query <WarningSetItemDetail>(sql, new { setId }).ToList(); foreach (var val in HWarningHelper.流程卡数据字段汇总) { if (s.All(x => x.ItemType != val.Item2)) { s.Add(new WarningSetItemDetail { Item = val.Item1, ItemType = val.Item2, ValueType = HWarningHelper.GetItemValueType(val.Item2), IsRepeat = val.Item3, IsConfig = true }); } else { foreach (var dd in s.Where(x => x.ItemType == val.Item2)) { dd.Item = val.Item1; dd.ValueType = HWarningHelper.GetItemValueType(val.Item2); dd.IsRepeat = val.Item3; } } } s = s.OrderBy(x => x.IsRepeat).ThenBy(x => x.ItemType).ThenBy(x => x.Id).ToList(); d.AddRange(s); break; } if (!sql.IsNullOrEmpty()) { r.FirstOrDefault().Items.AddRange(d); } } if (r.Any()) { var device = DeviceHelper.GetMenus(wId, r.SelectMany(x => x.DeviceList).Distinct()).OrderBy(x => x.Id); var categories = DeviceCategoryHelper.GetMenus(wId, r.Select(x => x.CategoryId).Distinct()).OrderBy(x => x.Id); var script = ScriptVersionHelper.GetMenus(wId, r.Select(x => x.ScriptId).Distinct()).OrderBy(x => x.Id); foreach (var dd in r) { dd.CodeList = device.Where(x => dd.DeviceList.Contains(x.Id)).Select(y => new Tuple <int, string>(y.Id, y.Code)); dd.Script = script.FirstOrDefault(x => x.Id == dd.ScriptId)?.Name ?? ""; dd.CategoryName = categories.FirstOrDefault(x => x.Id == dd.CategoryId)?.Name ?? ""; } } if (qId != 0 && !r.Any()) { return(Result.GenError <DataResult>(Error.WarningSetNotExist)); } result.datas.AddRange(r); return(result); }