Пример #1
0
        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));
        }
Пример #2
0
        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");
        }
Пример #3
0
        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);
        }
Пример #4
0
        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));
        }
Пример #5
0
        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));
        }