public Result DeleteSet([FromRoute] int id) { var cnt = ServerConfig.ApiDb.Query <int>("SELECT COUNT(1) FROM `warning_set` WHERE Id = @id AND `MarkedDelete` = 0;", new { id }).FirstOrDefault(); if (cnt == 0) { return(Result.GenError <Result>(Error.WarningSetNotExist)); } ServerConfig.ApiDb.Execute( "UPDATE `warning_set` SET `MarkedDateTime`= @MarkedDateTime, `MarkedDelete`= @MarkedDelete WHERE `Id`= @Id;", new { MarkedDateTime = DateTime.Now, MarkedDelete = true, Id = id }); ServerConfig.ApiDb.Execute( "UPDATE `warning_set_item` SET `MarkedDateTime`= @MarkedDateTime, `MarkedDelete`= @MarkedDelete WHERE `SetId`= @Id;", new { MarkedDateTime = DateTime.Now, MarkedDelete = true, Id = id }); HWarningHelper.UpdateConfig(); return(Result.GenError <Result>(Error.Success)); }
public static void Init(IConfiguration configuration) { RedisHelper.Init(configuration); RedisHelper.CloseWrite = _close; ServerId = configuration.GetAppSettings <int>("ServerId"); IsAnalysis = configuration.GetAppSettings <bool>("Analysis"); ApiDb = new DataBase(configuration.GetConnectionString("ApiDb")) { CloseWrite = _close }; _loads = new Dictionary <string, Action> { //{PermissionHelper.TableName, PermissionHelper.LoadConfig}, { "ReadDB", LoadDateBase }, { PermissionHelper.TableName, PermissionHelper.LoadConfig }, { PermissionGroupHelper.TableName, PermissionGroupHelper.LoadConfig }, { NpcProxyLinkServerHelper.TableName, NpcProxyLinkServerHelper.LoadConfig }, }; foreach (var action in _loads.Values) { action(); } GateUrl = configuration.GetAppSettings <string>("GateUrl"); ErpUrl = configuration.GetAppSettings <string>("ErpUrl"); GlobalConfig.LoadGlobalConfig(); AccountInfoHelper.Init(configuration); WorkFlowHelper.Init(); OldWorkFlowHelper.Init(); //HMaterialHelper.MaterialChange3(); //return; if (ServerId == 1) { HKanBanHelper.Init(); } else if (ServerId == 2) { HNotifyHelper.Init(); HWarningHelper.Init(); HOpScheduleHelper.Init(); //HFlowCardHelper.Init(); //SimulateHelper.Init(); HScheduleHelper.Init(); TimerHelper.Init(); //HMaterialHelper.Init(); } else if (ServerId == 3) { AnalysisHelper.Init(); HKanBanHelper.Init(); } if (!RedisHelper.Exists(IsSetProcessDataKey)) { RedisHelper.SetForever(IsSetProcessDataKey, 1); } if (!RedisHelper.Exists(IsSetDataIgnoreKey)) { RedisHelper.SetForever(IsSetDataIgnoreKey, 0); } _loads.Add(HWarningHelper.RedisReloadKey, HWarningHelper.NeedReload); _loads.Add(HOpScheduleHelper.RedisReloadKey, HOpScheduleHelper.NeedReload); Log.InfoFormat("ServerConfig Done"); }
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); }
public Result PostSet([FromBody] WarningSetWithItems set) { if (set.Name.IsNullOrEmpty()) { return(Result.GenError <Result>(Error.WarningSetNotEmpty)); } if (set.DataType == WarningDataType.生产数据 && set.StepId == set.BindId) { return(Result.GenError <Result>(Error.WarningSetStepBindDuplicate)); } var names = new List <string> { set.Name }; if (WarningSetHelper.GetHaveSame(1, names)) { return(Result.GenError <Result>(Error.WarningSetIsExist)); } var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; if (set.Items != null && set.Items.Any()) { //if (set.Items.Any(x => !x.ValidDataType())) //{ // return Result.GenError<Result>(Error.WarningSetItemDataTypeError); //} if (set.Items.Any(x => !x.ValidFrequency())) { return(Result.GenError <Result>(Error.WarningSetItemFrequencyError)); } if (set.Items.Any(x => !x.ValidCondition())) { return(Result.GenError <Result>(Error.WarningSetItemConditionError)); } } set.CreateUserId = createUserId; set.MarkedDateTime = markedDateTime; var id = WarningSetHelper.Instance.AddBackId(set); if (set.Items != null && set.Items.Any()) { var dic = new List <DataNameDictionary>(); if (set.DataType == WarningDataType.设备数据) { var dIds = set.Items.Select(x => x.DictionaryId).Where(x => x != 0); dic.AddRange(DataNameDictionaryHelper.Instance.GetAllByIds <DataNameDictionary>(dIds)); } foreach (var item in set.Items) { item.CreateUserId = createUserId; item.MarkedDateTime = markedDateTime; item.SetId = id; item.Item = set.DataType == WarningDataType.设备数据 ? dic.FirstOrDefault(x => x.Id == item.DictionaryId)?.VariableName ?? "" : item.Item; } WarningSetItemHelper.Instance.Add <WarningSetItem>(set.Items); } HWarningHelper.UpdateConfig(); return(Result.GenError <Result>(Error.Success)); }
public Result PutSet([FromBody] WarningSetWithItems set) { var oldSet = WarningSetHelper.Instance.Get <WarningSet>(set.Id); if (oldSet == null) { return(Result.GenError <Result>(Error.WarningSetNotExist)); } if (set.Name.IsNullOrEmpty()) { return(Result.GenError <Result>(Error.WarningSetNotEmpty)); } if (set.DataType == WarningDataType.生产数据 && set.StepId == set.BindId) { return(Result.GenError <Result>(Error.WarningSetStepBindDuplicate)); } var names = new List <string> { set.Name }; var ids = new List <int> { set.Id }; if (WarningSetHelper.GetHaveSame(1, names, ids)) { return(Result.GenError <Result>(Error.WarningSetIsExist)); } var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; if (set.Items != null) { if (set.Items.Any()) { switch (set.DataType) { case WarningDataType.设备数据: set.Items = set.Items.Where(x => x.DictionaryId != 0).ToList(); foreach (var item in set.Items) { item.Item = ""; } break; case WarningDataType.生产数据: set.Items = set.Items.Where(x => x.ItemType != WarningItemType.Default).ToList(); foreach (var item in set.Items) { if (HWarningHelper.生产数据单设备加工信息字段.All(x => x.Item2 != item.ItemType)) { item.DeviceIds = set.DeviceIds; } } break; case WarningDataType.故障数据: set.Items = set.Items; break; case WarningDataType.流程卡数据: set.Items = set.Items.Where(x => x.ItemType != WarningItemType.Default).ToList(); break; default: set.Items.Clear(); break; } //if (set.Items.Any(x => !x.ValidDataType())) //{ // return Result.GenError<Result>(Error.WarningSetItemDataTypeError); //} foreach (var item in set.Items) { item.MarkedDateTime = markedDateTime; item.SetId = set.Id; } if (set.Items.Any(x => x.ItemType == WarningItemType.SpecifyStepTimeOut && x.StepId == 0)) { return(Result.GenError <Result>(Error.WarningSetItemFlowCardStepError)); } if (set.Items.Any(x => !x.ValidFrequency())) { return(Result.GenError <Result>(Error.WarningSetItemFrequencyError)); } if (set.Items.Any(x => !x.ValidCondition())) { return(Result.GenError <Result>(Error.WarningSetItemConditionError)); } var oldWarningSetItems = WarningSetItemHelper.GetWarningSetItemsBySetId(set.Id); var delItems = oldWarningSetItems.Where(x => set.Items.All(y => y.Id != x.Id)); if (delItems.Any()) { WarningSetItemHelper.Instance.Delete(delItems.Select(x => x.Id)); } var updateItems = set.Items.Where(x => x.Id != 0); if (updateItems.Any()) { var uIds = new List <int>(); foreach (var item in updateItems) { var oldItem = oldWarningSetItems.FirstOrDefault(x => x.Id == item.Id); if (oldItem != null && ClassExtension.HaveChange(oldItem, item)) { if (HWarningHelper.生产数据单设备加工信息字段.All(x => x.Item2 != item.ItemType)) { item.DeviceIds = set.DeviceIds; } uIds.Add(item.Id); } } WarningSetItemHelper.Instance.Update(updateItems.Where(x => uIds.Contains(x.Id))); } var newItems = set.Items.Where(x => x.Id == 0); if (newItems.Any()) { foreach (var item in newItems) { item.CreateUserId = createUserId; } WarningSetItemHelper.Instance.Add(newItems); } } else { WarningSetItemHelper.Instance.DeleteFromParent(set.Id); } } if (ClassExtension.HaveChange(oldSet, set)) { set.MarkedDateTime = markedDateTime; WarningSetHelper.Instance.Update(set); } HWarningHelper.UpdateConfig(); return(Result.GenError <Result>(Error.Success)); }