Exemplo n.º 1
0
        public ActionResult ExportCfg()
        {
            var uuidDict = (from device in db.device
                            select new { device.alias, device.uuid }
                            ).ToDictionary(a => a.alias, a => a.uuid);
            var eventDict = (from linkage_event in db.linkage_event
                             select new { linkage_event.name, linkage_event.value }
                             ).ToDictionary(a => a.name, a => a.value);
            var operationDict = (from linkage_operation in db.linkage_operation
                                 select new { linkage_operation.name, linkage_operation.value }
                                 ).ToDictionary(a => a.name, a => a.value);
            var algorithmDict = (from linkage_algorithm in db.linkage_algorithm
                                 select new { linkage_algorithm.name, linkage_algorithm.value }
                                 ).ToDictionary(a => a.name, a => a.value);

            var trgList = (from linkage_trigger in db.linkage_trigger
                           select linkage_trigger).ToList();

            for (int i = 0; i < trgList.Count; i++)
            {
                try
                {
                    var trigger = trgList[i].trigger;
                    //整合为联动对象
                    LinkageObj linkageObj = new LinkageObj();

                    linkageObj.trigger  = eventDict[trigger];
                    linkageObj.delay    = (int)trgList[i].delay;
                    linkageObj.repeat   = trgList[i].repeat;
                    linkageObj.sequence = new Sequence();

                    var istrList = (from linkage_instruction in db.linkage_instruction
                                    where linkage_instruction.trigger == trigger
                                    select new Instruction
                    {
                        operation = linkage_instruction.operation,
                        detail = linkage_instruction.detail,
                        uuid = linkage_instruction.uuid
                    }).ToList();
                    linkageObj.sequence.num = istrList.Count;

                    foreach (var item in istrList)
                    {
                        item.operation = operationDict[item.operation];
                        if (!Regex.IsMatch(item.detail, @"^[+-]?\d*[.]?\d*$")) //判断是否为数字字符串注意斜杠转义
                        {
                            item.detail = algorithmDict[item.detail];
                        }
                        item.uuid = uuidDict[item.uuid];
                    }
                    linkageObj.sequence.instruction = istrList;

                    linkageObj.ToJson();
                    //将linkageJson发送到genbox接口
                    JavaScriptSerializer js = new JavaScriptSerializer();
                    MyLinkage(linkageObj.trigger, js.Serialize(linkageObj));
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message + ex.StackTrace);
                }
            }

            return(RedirectToAction("Index"));
        }