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);
        }
Exemplo n.º 3
0
        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());
        }
Exemplo n.º 4
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);
        }