wxr
2021-07-01 43b0d5870d528f23ecd6aeceb6cfd4325188b46f
HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs
New file
@@ -0,0 +1,174 @@
using System;
using System.Collections.Generic;
namespace HDL_ON.UI.UI2.Intelligence.Automation
{
    /// <summary>
    /// 逻辑存储数据对象
    /// </summary>
    public class Logic
    {
        /// <summary>
        /// 逻辑列表
        /// </summary>
        public static List<Logic> LogicList = new List<Logic>();
        /// <summary>
        /// 当前逻辑
        /// </summary>
        public static Logic currlogic;
        /// <summary>
        /// 云端唯一id
        /// </summary>
        public string userLogicId = "";
        /// <summary>
        /// 逻辑唯一标识
        /// </summary>
        public string sid = "";
        /// <summary>
        /// 逻辑名称
        /// </summary>
        public string name = "自动化";
        /// <summary>
        /// 逻辑条件关系(与and:,或:or)
        /// </summary>
        public string relation = "and";
        /// <summary>
        /// 逻辑状态(true,false)
        /// </summary>
        public string enable = "true";
        /// <summary>
        /// 逻辑执行循环周期(执行一次,每天,每月,星期)
        /// </summary>
        public Cycle cycle = new Cycle();
        /// <summary>
        /// 逻辑输入条件数组
        /// </summary>
        public List<Input> input = new List<Input>();
        /// <summary>
        /// 逻辑输出目标数组
        /// </summary>
        public List<Output> output = new List<Output>();
        /// <summary>
        /// 通知配置
        /// </summary>
        public NoticeConfig noticeConfig = new NoticeConfig();
        /// <summary>
        /// 推送配置
        /// </summary>
        public List<PushConfigs> pushConfigs = new List<PushConfigs>();
    }
    /// <summary>
    /// 执行周期对象
    /// </summary>
    public class Cycle
    {
        /// <summary>
        /// 时间类型
        /// (执行一次:once,每天:day,每月:mon,星期:week,日期段:date_to_date)
        /// </summary>
        public string type = "day";
        public List<string> value = new List<string>();
    }
    /// <summary>
    /// 输入条件对象
    /// </summary>
    public class Input
    {
        /// <summary>
        /// 逻辑输入条件唯一标识
        /// </summary>
        public string sid = "";
        /// <summary>
        /// 逻辑输入条件类型
        /// 时间点条件=1;
        /// 时间段条件=2;
        /// 设备状态变化条件=3;
        /// 环境信息条件=4;
        /// 安防条件=5;
        /// 云端天气条件=6;
        /// 某个逻辑/场景的输出条件=7;
        /// 地理围栏=8;
        /// </summary>
        public string condition_type = "";
        public List<Dictionary<string, string>> condition = new List<Dictionary<string, string>>();
    }
    /// <summary>
    /// 输出目标对象
    /// </summary>
    public class Output
    {
        /// <summary>
        /// 逻辑输出目标唯一标识
        /// </summary>
        public string sid = "";
        /// <summary>
        /// 逻辑输出目标延时间(单位用秒)
        /// </summary>
        public string delay = "0";
        /// <summary>
        /// 逻辑输出目标类型
        /// 设备=1;
        /// 场景=2;
        /// 延时=3;
        /// </summary>
        public string target_type = "";
        public List<Dictionary<string, string>> status = new List<Dictionary<string, string>>();
    }
    /// <summary>
    /// 地理围栏配置
    /// </summary>
    [Serializable]
    public class Fence
    {
        /// <summary>
        /// 经度
        /// </summary>
        public string longitude = string.Empty;
        /// <summary>
        /// 纬度
        /// </summary>
        public string latitude = string.Empty;
        /// <summary>
        /// 单位米
        /// </summary>
        public string radius = string.Empty;
    }
    /// <summary>
    /// 通知配置
    /// </summary>
    [Serializable]
    public class NoticeConfig
    {
        /// <summary>
        /// 是否开启通知
        /// </summary>
        public bool enable = false;
        /// <summary>
        /// 通知内容
        /// </summary>
        public string noticeContent = "自动化已经执行";//string.Empty;
    }
    /// <summary>
    /// 推送配置
    /// </summary>
    [Serializable]
    public class PushConfigs
    {
        /// <summary>
        /// 推送方式(APP/SMS)
        /// </summary>
        public string pushMethod = "APP";
        /// <summary>
        /// 推送内容
        /// </summary>
        //public string pushContent = string.Empty;
        /// <summary>
        /// 推送目标
        /// </summary>
        public List<string> pushTarget = new List<string> {};
    }
}