예제 #1
0
        public ICefValue Serialize(object source, Stack <object> seen, ObjectSerializer objectSerializer)
        {
            if (!CanHandle(source?.GetType()))
            {
                throw new InvalidOperationException();
            }

            using (var value = CefDictionaryValue.Create())
                using (var dict = CefDictionaryValue.Create())
                {
                    value.SetString(ObjectSerializer.TypeIdPropertyName, ObjectSerializer.DictionaryTypeId);

                    foreach (DictionaryEntry dictionaryEntry in (IDictionary)source)
                    {
                        var cefValue = objectSerializer.Serialize(dictionaryEntry.Value, seen);
                        dict.SetValue(dictionaryEntry.Key.ToString(), cefValue);
                    }
                    value.SetDictionary(ObjectSerializer.ValuePropertyName, dict);

                    var result = CefValue.Create();
                    result.SetDictionary(value);

                    return(result);
                }
        }
예제 #2
0
        public CefValue Serialize(object source, HashSet <object> seen, ObjectSerializer objectSerializer)
        {
            if (!CanHandle(source?.GetType()))
            {
                throw new InvalidOperationException();
            }

            var actualSource = (PropertyDescriptor)source;
            var result       = CefValue.Create();

            using (var resultDict = CefDictionaryValue.Create())
                using (var value = CefDictionaryValue.Create())
                {
                    resultDict.SetString(ObjectSerializer.TypeIdPropertyName, PropertyDescriptor.TypeId);

                    value.SetInt64(nameof(actualSource.Id), actualSource.Id);
                    value.SetString(nameof(PropertyDescriptor.Name), actualSource.Name);
                    value.SetValue(nameof(PropertyDescriptor.Value),
                                   objectSerializer.Serialize(actualSource.Value, new HashSet <object>()));

                    resultDict.SetDictionary(ObjectSerializer.ValuePropertyName, value);
                    result.SetDictionary(resultDict);
                }

            return(result);
        }
예제 #3
0
        public CefValue Serialize(object source, HashSet <object> seen, ObjectSerializer objectSerializer)
        {
            if (!CanHandle(source.GetType()))
            {
                throw new InvalidOperationException();
            }

            var result = CefValue.Create();

            result.SetString((string)source);

            return(result);
        }
예제 #4
0
        protected override bool Execute(string name, CefV8Value obj, CefV8Value[] arguments, out CefV8Value returnValue, out string exception)
        {
            exception   = null;
            returnValue = null;
            string paramSampler = arguments[0].GetStringValue();

            switch (name)
            {
            //获取异常信息
            case "GetHitchs":
                //异常信息
                string machineCode = string.Empty;
                if (paramSampler == "#1")
                {
                    machineCode = GlobalVars.MachineCode_QZDZYJ_1;
                }
                else if (paramSampler == "#2")
                {
                    machineCode = GlobalVars.MachineCode_QZDZYJ_2;
                }
                equInfHitchs = CommonDAO.GetInstance().GetEquInfHitchsByTime(machineCode, DateTime.Now);
                returnValue  = CefV8Value.CreateString(Newtonsoft.Json.JsonConvert.SerializeObject(equInfHitchs.Select(a => new { MachineCode = a.MachineCode, HitchTime = a.HitchTime.ToString("yyyy-MM-dd HH:mm"), HitchDescribe = a.HitchDescribe })));
                break;

            case "OpenAutoMaker":
                CefProcessMessage OpenAutoMaker = CefProcessMessage.Create("OpenAutoMaker");
                int f = 0;
                foreach (CefV8Value item in arguments)
                {
                    CefValue model = CefValue.Create();
                    model.SetString(item.GetStringValue());
                    OpenAutoMaker.Arguments.SetValue(f, model);
                    f++;
                }

                CefV8Context.GetCurrentContext().GetBrowser().SendProcessMessage(CefProcessId.Browser, OpenAutoMaker);
                break;

            default:
                returnValue = null;
                break;
            }

            return(true);
        }
예제 #5
0
        public ICefValue Serialize(object obj, Stack <object> seen, ObjectSerializer objectSerializer)
        {
            var type = obj?.GetType();

            if (!CanHandle(type))
            {
                throw new InvalidOperationException();
            }

            if (type == typeof(string))
            {
                var result = CefValue.Create();
                result.SetString((string)obj);

                return(result);
            }

            using (var value = CefDictionaryValue.Create())
                using (var dict = CefDictionaryValue.Create())
                {
                    value.SetString(ObjectSerializer.TypeIdPropertyName, GetTypeId(type));
                    var properties   = type.GetProperties();
                    var shouldFilter = type.GetCustomAttribute <DataContractAttribute>() != null;

                    foreach (var propertyDesc in properties
                             .Where(p => p.GetIndexParameters().Length <= 0)
                             .Select(p => new { Property = p, DataMember = p.GetCustomAttribute <DataMemberAttribute>() })
                             .Where(p => p.DataMember != null || !shouldFilter))
                    {
                        var propertyValue = propertyDesc.Property.GetValue(obj);
                        var name          = propertyDesc.DataMember?.Name ?? propertyDesc.Property.Name;

                        var cefValue = objectSerializer.Serialize(propertyValue, seen);
                        dict.SetValue(name, cefValue);
                    }

                    value.SetDictionary(ObjectSerializer.ValuePropertyName, dict);

                    var result = CefValue.Create();
                    result.SetDictionary(value);

                    return(result);
                }
        }
예제 #6
0
        public CefValue Serialize(object obj, HashSet <object> seen)
        {
            CefValue result;

            var type       = obj?.GetType();
            var serializer = Serializers.FirstOrDefault(s => s.CanHandle(type));

            if (serializer != null && HandleSeen(seen, obj, type))
            {
                result = serializer.Serialize(obj, seen, this);
            }
            else
            {
                result = CefValue.Create();
                result.SetNull();
            }

            return(result);
        }
예제 #7
0
        public CefValue Serialize(object source, HashSet <object> seen, ObjectSerializer objectSerializer)
        {
            if (source is CefValue value)
            {
                return(value);
            }
            else if (source is CefDictionaryValue)
            {
                var result = CefValue.Create();
                result.SetDictionary((CefDictionaryValue)source);
                return(result);
            }
            else if (source is CefListValue)
            {
                var result = CefValue.Create();
                result.SetList((CefListValue)source);
                return(result);
            }

            return(null);
        }
예제 #8
0
        public CefValue Serialize(object obj, HashSet <object> seen, ObjectSerializer objectSerializer)
        {
            var type = obj.GetType();

            if (!CanHandle(type))
            {
                throw new InvalidOperationException();
            }

            var result = CefValue.Create();

            if (type == typeof(DateTime))
            {
                result.SetTime((DateTime)obj);
            }
            else if (type == typeof(decimal))
            {
                result.SetDouble(Convert.ToDouble((decimal)obj));
            }
            return(result);
        }
예제 #9
0
        public ICefValue Serialize(object obj, Stack <object> seen)
        {
            ICefValue result;

            var type       = obj?.GetType();
            var serializer = Serializers.FirstOrDefault(s => s.CanHandle(type));

            using (HandleSeen(seen, obj, type, out var canSerialize))
            {
                if (serializer != null && canSerialize)
                {
                    result = serializer.Serialize(obj, seen, this);
                }
                else
                {
                    result = CefValue.Create();
                    result.SetNull();
                }
            }

            return(result);
        }
예제 #10
0
        public CefValue Serialize(object obj, HashSet <object> seen, ObjectSerializer objectSerializer)
        {
            var type = obj?.GetType();

            if (!CanHandle(type))
            {
                throw new InvalidOperationException();
            }

            var array = (Array)obj;

            using (var value = CefListValue.Create())
            {
                for (var i = 0; i < array.Length; i++)
                {
                    value.SetValue(i, objectSerializer.Serialize(array.GetValue(i), seen));
                }

                var result = CefValue.Create();
                result.SetList(value);
                return(result);
            }
        }
예제 #11
0
        public CefValue Serialize(object source, HashSet <object> seen, ObjectSerializer objectSerializer)
        {
            if (!CanHandle(source?.GetType()))
            {
                throw new InvalidOperationException();
            }

            long frameId = 0;

            using (var context = CefV8Context.GetCurrentContext())
            {
                frameId = context.GetFrame().Identifier;
            }
            var result = CefValue.Create();

            result.SetNull();

            var value = (CefV8Value)source;

            if (value.IsString)
            {
                result.SetString(value.GetStringValue());
            }
            else if (value.IsBool)
            {
                result.SetBool(value.GetBoolValue());
            }
            else if (value.IsDouble)
            {
                result.SetDouble(value.GetDoubleValue());
            }
            else if (value.IsInt)
            {
                result.SetInt(value.GetIntValue());
            }
            else if (value.IsUInt)
            {
                result.SetDouble(value.GetUIntValue());
            }
            else if (value.IsDate)
            {
                result.SetTime(value.GetDateValue());
            }
            else if (value.IsArray)
            {
                using (var list = CefListValue.Create())
                {
                    list.SetSize(value.GetArrayLength());
                    for (var i = 0; i < value.GetArrayLength(); i++)
                    {
                        list.SetValue(i, objectSerializer.Serialize(value.GetValue(i), seen));
                    }
                    result.SetList(list);
                }
            }
            else if (value.IsFunction)
            {
                var callback = new Callback(value, promiseService, objectSerializer);
                var id       = callbackRegistry.Save(frameId, callback);

                using (var list = CefDictionaryValue.Create())
                    using (var actualValue = CefDictionaryValue.Create())
                    {
                        list.SetString(ObjectSerializer.TypeIdPropertyName, CallbackDescriptor.TypeId);

                        actualValue.SetInt64(nameof(CallbackDescriptor.FunctionId), id);

                        list.SetDictionary(ObjectSerializer.ValuePropertyName, actualValue);
                        result.SetDictionary(list);
                    }
            }
            else if (value.IsObject)
            {
                using (var dict = CefDictionaryValue.Create())
                    using (var actualValue = CefDictionaryValue.Create())
                    {
                        dict.SetString(ObjectSerializer.TypeIdPropertyName, ObjectSerializer.DictionaryTypeId);
                        if (value.TryGetKeys(out var keys))
                        {
                            foreach (var key in keys)
                            {
                                actualValue.SetValue(key, objectSerializer.Serialize(value.GetValue(key), seen));
                            }
                        }

                        dict.SetDictionary(ObjectSerializer.ValuePropertyName, actualValue);
                        result.SetDictionary(dict);
                    }
            }


            return(result);
        }
예제 #12
0
        public ICefValue Serialize(object obj, Stack <object> seen, ObjectSerializer objectSerializer)
        {
            var type = obj.GetType();

            if (!CanHandle(type))
            {
                throw new InvalidOperationException();
            }

            var result = CefValue.Create();

            if (type == typeof(char))
            {
                result.SetString(new string((char)obj, 1));
            }
            else if (type == typeof(byte))
            {
                result.SetInt((byte)obj);
            }
            else if (type == typeof(sbyte))
            {
                result.SetInt((sbyte)obj);
            }
            else if (type == typeof(short))
            {
                result.SetInt((short)obj);
            }
            else if (type == typeof(ushort))
            {
                result.SetInt((ushort)obj);
            }
            else if (type == typeof(int))
            {
                result.SetInt((int)obj);
            }
            else if (type == typeof(uint))
            {
                result.SetDouble((uint)obj);
            }
            else if (type == typeof(long))
            {
                result.SetInt64((long)obj);
            }
            else if (type == typeof(ulong))
            {
                result.SetDouble((ulong)obj);
            }
            else if (type == typeof(float))
            {
                result.SetDouble((float)obj);
            }
            else if (type == typeof(double))
            {
                result.SetDouble((double)obj);
            }
            else if (type == typeof(bool))
            {
                result.SetBool((bool)obj);
            }

            return(result);
        }
 private static ICefValue CreateValue()
 {
     return(new CefValueImpl(CefValue.Create()));
 }
예제 #14
0
        protected override bool Execute(string name, CefV8Value obj, CefV8Value[] arguments, out CefV8Value returnValue, out string exception)
        {
            exception   = null;
            returnValue = null;
            string paramSampler  = string.Empty;
            string paramSampler1 = string.Empty;
            string paramSampler2 = string.Empty;

            if (arguments.Length > 0)
            {
                paramSampler  = arguments[0].GetStringValue();
                paramSampler1 = arguments.Length > 1 ? arguments[1].GetStringValue() : "";
                paramSampler2 = arguments.Length > 2 ? arguments[2].GetStringValue() : "";
            }
            switch (name)
            {
            // 打开皮带采样机监控界面
            case "OpenTrainBeltSampler":
                CefProcessMessage OpenTrainBeltSampler = CefProcessMessage.Create("OpenTrainBeltSampler");
                int b = 0;
                foreach (CefV8Value item in arguments)
                {
                    CefValue model = CefValue.Create();
                    model.SetString(item.GetStringValue());
                    OpenTrainBeltSampler.Arguments.SetValue(b, model);
                    b++;
                }

                CefV8Context.GetCurrentContext().GetBrowser().SendProcessMessage(CefProcessId.Browser, OpenTrainBeltSampler);
                break;

            // 打开皮带采样机监控界面
            case "OpenOutTrainBeltSampler":
                CefProcessMessage OpenOutBeltSampler = CefProcessMessage.Create("OpenOutTrainBeltSampler");
                int c = 0;
                foreach (CefV8Value item in arguments)
                {
                    CefValue model = CefValue.Create();
                    model.SetString(item.GetStringValue());
                    OpenOutBeltSampler.Arguments.SetValue(c, model);
                    c++;
                }

                CefV8Context.GetCurrentContext().GetBrowser().SendProcessMessage(CefProcessId.Browser, OpenOutBeltSampler);
                break;

            //  打开火车机械采样机监控界面
            case "OpenTrainMachinerySampler":
                // CefV8Context.GetCurrentContext().GetBrowser().SendProcessMessage(CefProcessId.Browser, CefProcessMessage.Create("OpenTrainMachinerySampler"));
                break;

            // 打开全自动制样机监控
            case "OpenAutoMaker":
                CefProcessMessage OpenAutoMaker = CefProcessMessage.Create("OpenAutoMaker");
                int f = 0;
                foreach (CefV8Value item in arguments)
                {
                    CefValue model = CefValue.Create();
                    model.SetString(item.GetStringValue());
                    OpenAutoMaker.Arguments.SetValue(f, model);
                    f++;
                }

                CefV8Context.GetCurrentContext().GetBrowser().SendProcessMessage(CefProcessId.Browser, OpenAutoMaker);
                break;

            //  打开火车入厂翻车机监控
            case "OpenTrainTipper":
                CefV8Context.GetCurrentContext().GetBrowser().SendProcessMessage(CefProcessId.Browser, CefProcessMessage.Create("OpenTrainTipper"));
                break;

            //  打开火车入厂记录查询
            case "OpenWeightBridgeLoadToday":
                CefProcessMessage OpenWeightBridgeLoadToday = CefProcessMessage.Create("OpenWeightBridgeLoadToday");
                int d = 0;
                foreach (CefV8Value item in arguments)
                {
                    CefValue model = CefValue.Create();
                    model.SetString(item.GetStringValue());
                    OpenWeightBridgeLoadToday.Arguments.SetValue(d, model);
                    d++;
                }

                CefV8Context.GetCurrentContext().GetBrowser().SendProcessMessage(CefProcessId.Browser, OpenWeightBridgeLoadToday);
                break;

            //  打开汽车入厂重车衡监控
            case "OpenTruckWeighter":
                CefV8Context.GetCurrentContext().GetBrowser().SendProcessMessage(CefProcessId.Browser, CefProcessMessage.Create("OpenTruckWeighter"));
                break;

            //  打开汽车成品仓监控
            case "OpenTruckOrder":
                CefV8Context.GetCurrentContext().GetBrowser().SendProcessMessage(CefProcessId.Browser, CefProcessMessage.Create("OpenTruckOrder"));
                break;

            //  打开汽车机械采样机监控
            case "OpenTruckMachinerySampler":
                CefProcessMessage SamplerMessage = CefProcessMessage.Create("OpenTruckMachinerySampler");
                int a = 0;
                foreach (CefV8Value item in arguments)
                {
                    CefValue model = CefValue.Create();
                    model.SetString(item.GetStringValue());
                    SamplerMessage.Arguments.SetValue(a, model);
                    a++;
                }

                CefV8Context.GetCurrentContext().GetBrowser().SendProcessMessage(CefProcessId.Browser, SamplerMessage);
                break;

            //  打开智能存样柜与气动传输监控
            case "OpenAutoCupboard":
                CefV8Context.GetCurrentContext().GetBrowser().SendProcessMessage(CefProcessId.Browser, CefProcessMessage.Create("OpenAutoCupboardPneumaticTransfer"));
                break;

            //  打开化验室监控
            case "OpenLaboratory":
                CefV8Context.GetCurrentContext().GetBrowser().SendProcessMessage(CefProcessId.Browser, CefProcessMessage.Create("OpenAssayManage"));
                break;

            case "OpenCarMonitor":
                CefProcessMessage OpenCarMonitor = CefProcessMessage.Create("OpenCarMonitor");
                int e = 0;
                foreach (CefV8Value item in arguments)
                {
                    CefValue model = CefValue.Create();
                    model.SetString(item.GetStringValue());
                    OpenCarMonitor.Arguments.SetValue(e, model);
                    e++;
                }
                CefV8Context.GetCurrentContext().GetBrowser().SendProcessMessage(CefProcessId.Browser, OpenCarMonitor);
                break;

            case "OpenPoundInfo":
                CefProcessMessage message = CefProcessMessage.Create("OpenPoundInfo");
                int i = 0;
                foreach (CefV8Value item in arguments)
                {
                    CefValue model = CefValue.Create();
                    model.SetString(item.GetStringValue());
                    message.Arguments.SetValue(i, model);
                    i++;
                }
                CefV8Context.GetCurrentContext().GetBrowser().SendProcessMessage(CefProcessId.Browser, message);
                break;

            case "GetHitchs":
                List <HitchsEntityTemp> Hitchslist = GetHitchsData(paramSampler);
                exception   = null;
                returnValue = CefV8Value.CreateString(Newtonsoft.Json.JsonConvert.SerializeObject(Hitchslist));
                break;

            // 成品仓信息
            case "getStorageInfo":
                List <StorageEntityTemp> list = getStorageInfoData(paramSampler);
                exception   = null;
                returnValue = CefV8Value.CreateString(Newtonsoft.Json.JsonConvert.SerializeObject(list));
                break;

            // 成品仓信息
            case "getStorageAreaInfo":
                string    sql = string.Format(@"select a.fuelstorageid,a.startpoint,a.endpoint from stgtbfuelstoragearea a where a.AREANAME = '{0}'", paramSampler);
                DataTable dt  = CommonDAO.GetInstance().SelfDber.ExecuteDataTable(sql);
                if (dt != null && dt.Rows.Count > 0)
                {
                    STGSelectStorageData StorageArea = GetStorageData(dt.Rows[0]["fuelstorageid"].ToString(),
                                                                      dt.Rows[0]["startpoint"].ToString(),
                                                                      dt.Rows[0]["endpoint"].ToString());
                    exception = null;
                    string sql1 = string.Format(@"select a.pointx,a.pointy,a.unitname,a.TEMPERATURE,a.polecode from stgtbstoragetemperature a where a.unitname = '{0}'", paramSampler);

                    DataTable dt1 = CommonDAO.GetInstance().SelfDber.ExecuteDataTable(sql1);

                    if (dt1 != null && dt1.Rows.Count > 0)
                    {
                        foreach (DataRow dr in dt1.Rows)
                        {
                            StorageArea.TEMPERATURE += dr["polecode"].ToString() + "," + dr["TEMPERATURE"].ToString() + "|";
                        }
                    }
                    List <STGSelectStorageData> StorageDataList = new List <STGSelectStorageData>();
                    StorageDataList.Add(StorageArea);
                    returnValue = CefV8Value.CreateString(Newtonsoft.Json.JsonConvert.SerializeObject(StorageDataList));
                }
                break;

            case "getStorageStackInfo":
                STGSelectStorageData StorageArea1 = GetStorageData(paramSampler,
                                                                   paramSampler1,
                                                                   paramSampler2);
                exception = null;
                List <STGSelectStorageData> StorageDataList1 = new List <STGSelectStorageData>();
                StorageDataList1.Add(StorageArea1);
                returnValue = CefV8Value.CreateString(Newtonsoft.Json.JsonConvert.SerializeObject(StorageDataList1));
                break;

            case "GetStorageBox":
                List <StorageBoxTemp> Boxlist = GetStorageBoxData();
                exception   = null;
                returnValue = CefV8Value.CreateString(Newtonsoft.Json.JsonConvert.SerializeObject(Boxlist));
                break;

            case "OpenInOutInfo":
                CefProcessMessage messageDoorInfo = CefProcessMessage.Create("OpenInOutInfo");
                int j = 0;
                foreach (CefV8Value item in arguments)
                {
                    CefValue model = CefValue.Create();
                    model.SetString(item.GetStringValue());
                    messageDoorInfo.Arguments.SetValue(j, model);
                    j++;
                }
                CefV8Context.GetCurrentContext().GetBrowser().SendProcessMessage(CefProcessId.Browser, messageDoorInfo);
                break;

            default:
                returnValue = null;
                break;
            }

            return(true);
        }