public OperationResult <DeviceCV> GetDeviceCV(string api_account, long timeStamp, string sign, string deviceID, string localDate)
        {
            if (!checkSignForGetDeviceCV(api_account, timeStamp, sign, deviceID, localDate))
            {
                var result4 = new OperationResult <DeviceCV>(OperationCode.Error_Sign);
                result4.Entity = null;

                return(result4);
            }


            if (!_parameterValidateService.CheckTimestamp(timeStamp))
            {
                var result2 = new OperationResult <DeviceCV>(OperationCode.Error_TimeStamp);
                result2.Entity = null;

                return(result2);
            }

            Guid theCompanyId;

            if (!_parameterValidateService.ApiAccountExist(api_account, out theCompanyId))
            {
                var result3 = new OperationResult <DeviceCV>(OperationCode.Error_ApiAccountNotExist);
                result3.Entity = null;

                return(result3);
            }

            DeviceCV cv     = new DeviceCV();
            DevInfo  info   = _devInfoRepository.FindBy(x => x.DeviceID == deviceID).Where(x => x.Delete_Flag == 0).FirstOrDefault();
            var      result = new OperationResult <DeviceCV>(OperationCode.Success);

            if (info == null)
            {
                result     = new OperationResult <DeviceCV>(OperationCode.Success);
                cv.Status  = "Failed1";
                cv.Time    = null;
                cv.CVTotal = null;
                cv.CV1     = null;
                cv.CV2     = null;
                cv.CV3     = null;

                result.Entity = cv;

                return(result);
            }

            var dataLst = _devDataRepository.GetDeviceCVByDeviceID(deviceID, localDate).ToList();

            if (dataLst == null || dataLst.Count == 0)
            {
                result     = new OperationResult <DeviceCV>(OperationCode.Success);
                cv.Status  = "Failed2";
                cv.Time    = null;
                cv.CVTotal = null;
                cv.CV1     = null;
                cv.CV2     = null;
                cv.CV3     = null;

                result.Entity = cv;

                return(result);
            }

            int num = dataLst.Count;

            string[]  times    = new string[num];
            decimal[] CVTotals = new decimal[num];
            decimal[] CVs1     = new decimal[num];
            decimal[] CVs2     = new decimal[num];
            decimal[] CVs3     = new decimal[num];

            for (int i = 0; i < num; i++)
            {
                times[i]    = dataLst[i].Upload_DateTime.ToString();
                CVTotals[i] = dataLst[i].CV;
                CVs1[i]     = dataLst[i].CV1 == null ? 0 : (decimal)dataLst[i].CV1;
                CVs2[i]     = dataLst[i].CV2 == null ? 0 : (decimal)dataLst[i].CV2;
                CVs3[i]     = dataLst[i].CV3 == null ? 0 : (decimal)dataLst[i].CV3;
            }

            result     = new OperationResult <DeviceCV>(OperationCode.Success);
            cv.Status  = "Success";
            cv.Time    = times;
            cv.CVTotal = CVTotals;
            cv.CV1     = CVs1;
            cv.CV2     = CVs2;
            cv.CV3     = CVs3;

            result.Entity = cv;

            return(result);
        }
示例#2
0
        /// <summary>
        /// 获取最新的系统常规运行数据
        /// </summary>
        /// <param name="sn"></param>
        /// <param name="username">用户名</param>
        /// <returns></returns>
        public OperationResult <PaginatedList <VT_COLDATA> > GetRunningNewData(string api_Account, long timeStamp, string sign, string sn, string token, string ipAddress)
        {
            Guid key = Guid.Empty;

            Guid.TryParse(token, out key);
            var userCache = TokenService.GetCache(key);

            #region 判断
            if (userCache == null || userCache.ExpirationTime < DateTime.Now)
            {
                return(new OperationResult <PaginatedList <VT_COLDATA> >(OperationCode.Error_LoginFailed));
            }

            if (userCache.ipAddress != ipAddress)
            {
                var ul = new SYS_LOG {
                    Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_UserChangesDevice.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RunningDataService", MESSAGE = "用户更换设备", EXCEPTION = "ipAddress_1:" + userCache.ipAddress + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();

                return(new OperationResult <PaginatedList <VT_COLDATA> >(OperationCode.Error_UserChangesDevice));
            }

            var query = from a1 in _sys_ROLE.GetAll()
                        join r1 in _sys_ROLEUSER.GetAll() on a1.Key equals r1.ROLEID
                        where r1.USERID == userCache.UserId
                        select new
            {
                userType = a1.ROLENAME
            };

            List <string> user_Types = new List <string>();
            foreach (var q in query)
            {
                user_Types.Add(q.userType);
            }

            if (!checkSignForRunningData(api_Account, timeStamp, sign, sn, token))
            {
                string secretKey = _cryptoService.GetSecretKey(api_Account);
                var    ul        = new SYS_LOG {
                    Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_Sign.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RunningDataService", MESSAGE = "签名错误", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress + ",SecretKey:" + secretKey, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();

                return(new OperationResult <PaginatedList <VT_COLDATA> >(OperationCode.Error_Sign));
            }

            if (!_parameterValidateService.CheckTimestamp(timeStamp))
            {
                var ul = new SYS_LOG {
                    Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_TimeStamp.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RunningDataService", MESSAGE = "时间戳错误", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();

                return(new OperationResult <PaginatedList <VT_COLDATA> >(OperationCode.Error_TimeStamp));
            }

            if (!_parameterValidateService.ApiAccountExist(api_Account))
            {
                var ul = new SYS_LOG {
                    Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_ApiAccountNotExist.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RunningDataService", MESSAGE = "api账户不存在", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();

                return(new OperationResult <PaginatedList <VT_COLDATA> >(OperationCode.Error_ApiAccountNotExist));
            }
            #endregion

            int pIndex     = 1;
            int pSize      = int.MaxValue;
            int totalCount = 0;
            PaginatedList <VT_COLDATA> coldataList = new PaginatedList <VT_COLDATA>(pIndex, pSize, null);

            #region 获取用户系统列表
            IList <VT_SYSTEM> systems = new List <VT_SYSTEM>();
            if (user_Types.Contains("customer"))
            {
                systems = GetSystemByUser(pIndex, pSize, userCache.UserId, this.CompanyId, out totalCount);
            }
            else if (user_Types.Contains("installer"))
            {
                SYS_USER user = _userRepository.GetAll().Where(x => x.Key == userCache.UserId).FirstOrDefault();
                if (user != null)
                {
                    systems = GetSystemByInstaller(pIndex, pSize, user.LICNO, this.CompanyId, out totalCount);
                }
            }
            else if (user_Types.Contains("servicer"))
            {
                systems = GetSystemByServicer(pIndex, pSize, userCache.UserId, this.CompanyId, out totalCount);
            }
            else if (user_Types.Contains("admin"))
            {
                systems = GetSystemByManager(pIndex, pSize, this.CompanyId, out totalCount);
            }
            else if (user_Types.Contains("systemmanager"))
            {
                systems = systems = GetSystemByManager(pIndex, pSize, this.CompanyId, out totalCount);
            }
            else if (user_Types.Contains("reseller"))
            {
                systems = GetSystemByReseller(pIndex, pSize, userCache.UserId, this.CompanyId, out totalCount);
            }
            else if (user_Types.Contains("servicepartner"))
            {
                systems = GetSystemByServicepartner(pIndex, pSize, userCache.UserId, this.CompanyId, out totalCount);
            }
            #endregion

            if (!string.IsNullOrWhiteSpace(sn))
            {
                if (_snRepository.GetAll().Where(x => x.SN_NO == sn.Trim() && x.CompanyId == this.CompanyId && x.DELETE_FLAG == 0).FirstOrDefault() == null)
                {
                    var ul = new SYS_LOG {
                        Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_SNNotExist.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RunningDataService", MESSAGE = "sn不存在", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                    };
                    _sysLogService.Add(ul);
                    _sysLogService.Save();

                    return(new OperationResult <PaginatedList <VT_COLDATA> >(OperationCode.Error_SNNotExist));
                }

                if (systems.Where(x => x.SYS_SN == sn).Count() == 0)
                {
                    SYS_USER user     = _userRepository.GetAll().Where(x => x.Key == userCache.UserId).FirstOrDefault();
                    string   username = user == null ? "" : user.USERNAME;

                    var ul = new SYS_LOG {
                        Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_NoPermissionsToQuery.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RunningDataService", MESSAGE = "用户无此权限,调取用户:" + username, EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                    };
                    _sysLogService.Add(ul);
                    _sysLogService.Save();

                    return(new OperationResult <PaginatedList <VT_COLDATA> >(OperationCode.Error_NoPermissionsToQuery));
                }

                coldataList = GetRunningDataBySn(api_Account, timeStamp, sign, sn, this.CompanyId, pIndex, pSize, out totalCount);
            }
            else
            {
                coldataList = GetRunningDataByUsername(api_Account, timeStamp, sign, systems, pIndex, pSize, out totalCount);
            }

            coldataList.TotalCount     = totalCount;
            coldataList.TotalPageCount = (int)Math.Ceiling(coldataList.TotalCount / (double)pSize);
            var plColdata = new OperationResult <PaginatedList <VT_COLDATA> >(OperationCode.Success);
            plColdata.Entity = coldataList;

            return(plColdata);
        }
        public OperationResult <DeviceInfo> GetDeviceInfo(string api_account, long timeStamp, string sign, string deviceID)
        {
            if (!checkSignForGetDeviceInfo(api_account, timeStamp, sign, deviceID))
            {
                var result4 = new OperationResult <DeviceInfo>(OperationCode.Error_Sign);
                result4.Entity = null;

                return(result4);
            }


            if (!_parameterValidateService.CheckTimestamp(timeStamp))
            {
                var result2 = new OperationResult <DeviceInfo>(OperationCode.Error_TimeStamp);
                result2.Entity = null;

                return(result2);
            }

            Guid theCompanyId;

            if (!_parameterValidateService.ApiAccountExist(api_account, out theCompanyId))
            {
                var result3 = new OperationResult <DeviceInfo>(OperationCode.Error_ApiAccountNotExist);
                result3.Entity = null;

                return(result3);
            }

            DeviceInfo inf = new DeviceInfo();

            DevInfo info = _devInfoRepository.GetDeviceInfoByDeviceID(deviceID);
            DevData data = _devDataRepository.GetLastUpdateTimeByDeviceID(deviceID);

            if (data != null)
            {
                inf.UpdateTime = data.Upload_DateTime.ToString();
            }
            else
            {
                inf.UpdateTime = string.Empty;
                inf.Status     = "Failed2";
            }

            if (info != null)
            {
                inf.DeviceID = info.DeviceID;
                inf.Voltage  = info.Voltage;
                inf.TimeZone = info.TimeZone;
            }
            else
            {
                inf.DeviceID = string.Empty;
                inf.Voltage  = 0;
                inf.TimeZone = string.Empty;
                inf.Status   = "Failed1";
            }

            if (string.IsNullOrEmpty(inf.Status))
            {
                inf.Status = "Success";
            }


            var result = new OperationResult <DeviceInfo>(OperationCode.Success);

            result.Entity = inf;

            return(result);
        }
        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="username">用户名</param>
        /// <param name="password">密码</param>
        /// <returns></returns>
        public OperationResult <UserLogin> LoginForUser(string api_Account, long timeStamp, string sign, string username, string password, string ipAddress)
        {
            if (!_parameterValidateService.CheckTimestamp(timeStamp))
            {
                return(new OperationResult <UserLogin>(OperationCode.Error_TimeStamp));
            }

            if (!_parameterValidateService.ApiAccountExist(api_Account))
            {
                return(new OperationResult <UserLogin>(OperationCode.Error_ApiAccountNotExist));
            }

            if (!checkSignForUser(api_Account, timeStamp, sign, username, password))
            {
                return(new OperationResult <UserLogin>(OperationCode.Error_Sign));
            }

            var user = _userRepository.GetSingleByUserName(username, this.CompanyId);

            if (user == null || !(user.USERTYPE.Equals(MicrogridManagerRoleName, StringComparison.OrdinalIgnoreCase) || user.USERTYPE.Equals(SharerRoleName, StringComparison.OrdinalIgnoreCase) ||
                                  user.USERTYPE.Equals(InstallerRoleName, StringComparison.OrdinalIgnoreCase) || user.USERTYPE.Equals(CustomerRoleName, StringComparison.OrdinalIgnoreCase)))
            {
                return(new OperationResult <UserLogin>(OperationCode.Error_UserNotExist));
            }

            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
            {
                var result6 = new OperationResult <UserLogin>(OperationCode.Error_Param_Empty);
                result6.Entity = null;

                var ul = new SYS_LOG {
                    Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_Param_Empty.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.AlphaESSV2Service", MESSAGE = "参数为空", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ", username" + username + ", password:"******",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();

                return(result6);
            }

            if (!isUserValid(user, password, username))
            {
                var result5 = new OperationResult <UserLogin>(OperationCode.Error_PasswordNotMatch);
                result5.Entity = null;

                var ul = new SYS_LOG {
                    Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_PasswordNotMatch.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.AlphaESSV2Service", MESSAGE = "密码不匹配", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ", username" + username + ", password:"******",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();

                return(result5);
            }

            UserLogin u = null;

            try
            {
                var query = from a1 in _sys_ROLE.GetAll()
                            join r1 in _sys_ROLEUSER.GetAll() on a1.Key equals r1.ROLEID
                            where r1.USERID == user.Key
                            select new
                {
                    userType = a1.ROLENAME
                };

                string userTypes = string.Empty;
                foreach (var q in query)
                {
                    userTypes += q.userType + ",";
                }
                if (userTypes.Length > 0)
                {
                    userTypes = userTypes.Substring(0, userTypes.Length - 1);
                }

                //过期时间
                DateTime expiryTime = DateTime.Now.AddMinutes(ExpiryTime);

                Guid token = Guid.NewGuid();
                TokenService.SetCache(token, user.Key, expiryTime, ipAddress);

                u = new UserLogin()
                {
                    userType = userTypes, token = token
                };
            }
            catch (Exception ex)
            {
                var ul = new SYS_LOG {
                    Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_Unknown.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.AlphaESSV2Service", MESSAGE = "失败", EXCEPTION = ex.ToString(), CREATE_ACCOUNT = "", LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();
            }

            var result = new OperationResult <UserLogin>(OperationCode.Success);

            result.Entity = u;

            return(result);
        }
        public OperationResult <Sys_RemoteDispatch> AddRemoteDispatch(string api_Account, long timeStamp, string sign, string token, string sn, int activePower, int reactivePower, decimal soc, int status, int controlMode, string ipAddress)
        {
            Guid key = Guid.Empty;

            Guid.TryParse(token, out key);
            var userCache = TokenService.GetCache(key);

            bool flag = false;

            #region 判断
            if (userCache == null || userCache.ExpirationTime < DateTime.Now)
            {
                return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_LoginFailed));
            }

            if (userCache.ipAddress != ipAddress)
            {
                var ul = new SYS_LOG {
                    Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_UserChangesDevice.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RemoteDispatchService", MESSAGE = "用户更换设备", EXCEPTION = "ipAddress_1:" + userCache.ipAddress + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();

                return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_UserChangesDevice));
            }

            var query = from a1 in _sys_ROLE.GetAll()
                        join r1 in _sys_ROLEUSER.GetAll() on a1.Key equals r1.ROLEID
                        where r1.USERID == userCache.UserId
                        select new
            {
                userType = a1.ROLENAME
            };

            List <string> user_Types = new List <string>();
            foreach (var q in query)
            {
                user_Types.Add(q.userType);
            }

            if (!checkSignForRemoteDispatch(api_Account, timeStamp, sign, token, sn, activePower, reactivePower, soc, status, controlMode))
            {
                string secretKey = _cryptoService.GetSecretKey(api_Account);
                var    ul        = new SYS_LOG {
                    Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_Sign.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RemoteDispatchService", MESSAGE = "签名错误", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress + ",SecretKey:" + secretKey, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();

                return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_Sign));
            }

            if (!_parameterValidateService.CheckTimestamp(timeStamp))
            {
                var ul = new SYS_LOG {
                    Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_TimeStamp.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RemoteDispatchService", MESSAGE = "时间戳错误", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();

                return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_TimeStamp));
            }

            if (!_parameterValidateService.ApiAccountExist(api_Account))
            {
                var ul = new SYS_LOG {
                    Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_ApiAccountNotExist.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RemoteDispatchService", MESSAGE = "api账号不存在", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();

                return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_ApiAccountNotExist));
            }
            #endregion

            SYS_USER user = _userRepository.GetAll().Where(x => x.Key == userCache.UserId).FirstOrDefault();

            #region 获取用户系统列表
            int pIndex               = 1;
            int pSize                = int.MaxValue;
            int totalCount           = 0;
            IList <VT_SYSTEM> result = new List <VT_SYSTEM>();

            if (user_Types.Contains("customer"))
            {
                result = GetSystemByUser(pIndex, pSize, userCache.UserId, this.CompanyId, out totalCount);
            }
            else if (user_Types.Contains("installer"))
            {
                if (user != null)
                {
                    result = GetSystemByInstaller(pIndex, pSize, user.LICNO, this.CompanyId, out totalCount);
                }
            }
            else if (user_Types.Contains("servicer"))
            {
                return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_NoPermissionsToQuery));
            }
            else if (user_Types.Contains("admin"))
            {
                return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_NoPermissionsToQuery));
            }
            else if (user_Types.Contains("systemmanager"))
            {
                return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_NoPermissionsToQuery));
            }
            else if (user_Types.Contains("reseller"))
            {
                result = GetSystemByReseller(pIndex, pSize, userCache.UserId, this.CompanyId, out totalCount);
            }
            else if (user_Types.Contains("servicepartner"))
            {
                return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_NoPermissionsToQuery));
            }

            if (result == null || result.Count == 0)
            {
                return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_NoPermissionsToQuery));
            }
            #endregion

            if (!string.IsNullOrWhiteSpace(sn))
            {
                if (_snRepository.GetAll().Where(x => x.SN_NO == sn.Trim() && x.CompanyId == this.CompanyId && x.DELETE_FLAG == 0).FirstOrDefault() == null)
                {
                    var ul = new SYS_LOG {
                        Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_SNNotExist.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RemoteDispatchService", MESSAGE = "sn不存在", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                    };
                    _sysLogService.Add(ul);
                    _sysLogService.Save();

                    return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_SNNotExist));
                }

                if (result.Where(x => x.SYS_SN == sn).Count() == 0)
                {
                    string username = user == null ? "" : user.USERNAME;
                    var    ul       = new SYS_LOG {
                        Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_NoPermissionsToQuery.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RemoteDispatchService", MESSAGE = "用户无此权限,调取用户:" + username, EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                    };
                    _sysLogService.Add(ul);
                    _sysLogService.Save();

                    return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_NoPermissionsToQuery));
                }

                Sys_RemoteDispatch rd = new Sys_RemoteDispatch();
                rd.Key           = Guid.NewGuid();
                rd.SN            = sn;
                rd.UserName      = user.USERNAME;
                rd.ActivePower   = activePower;
                rd.ReactivePower = reactivePower;
                rd.SOC           = soc;
                rd.Status        = status;
                rd.ControlMode   = controlMode;
                rd.DELETE_FLAG   = 0;
                rd.CreateTime    = DateTime.Now;

                try
                {
                    _remotedispatchRepository.Add(rd);
                    _remotedispatchRepository.Save();
                    flag = true;
                }
                catch
                {
                    flag = false;
                }
            }
            else
            {
                if (user != null)
                {
                    IList <Sys_RemoteDispatch> rDList = new List <Sys_RemoteDispatch>();

                    foreach (var item in result)
                    {
                        Sys_RemoteDispatch rd = new Sys_RemoteDispatch();
                        rd.Key           = Guid.NewGuid();
                        rd.SN            = item.SYS_SN;
                        rd.UserName      = user.USERNAME;
                        rd.ActivePower   = activePower;
                        rd.ReactivePower = reactivePower;
                        rd.SOC           = soc;
                        rd.Status        = status;
                        rd.ControlMode   = controlMode;
                        rd.DELETE_FLAG   = 0;
                        rd.CreateTime    = DateTime.Now;

                        rDList.Add(rd);
                    }

                    try
                    {
                        _remotedispatchRepository.AddBulk(rDList);
                        _remotedispatchRepository.Save();
                        flag = true;
                    }
                    catch
                    {
                        flag = false;
                    }
                }
            }

            if (flag)
            {
                var ul = new SYS_LOG {
                    Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Success.ToString(), LEVEL = LogLevel.INFO.ToString(), LOGGER = "Services.RemoteDispatchService", MESSAGE = "命令发送成功", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress + ",activePower:" + activePower + ",reactivePower:" + reactivePower + ",soc:" + soc + ",status:" + status + ",controlMode:" + controlMode, CREATE_ACCOUNT = user.USERNAME, LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();

                return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Success));
            }
            else
            {
                var ul = new SYS_LOG {
                    Key = Guid.NewGuid(), CREATE_DATETIME = DateTime.Now, THREAD = OperationCode.Error_SendCommandFailed.ToString(), LEVEL = LogLevel.ERROR.ToString(), LOGGER = "Services.RemoteDispatchService", MESSAGE = "命令发送失败", EXCEPTION = "api_Account:" + api_Account + ",timeStamp:" + timeStamp + ",sign:" + sign + ",token:" + token + ", sn:" + sn + ",ipAddress:" + ipAddress, CREATE_ACCOUNT = "", LOG_CONTENT = ""
                };
                _sysLogService.Add(ul);
                _sysLogService.Save();

                return(new OperationResult <Sys_RemoteDispatch>(OperationCode.Error_SendCommandFailed));
            }
        }