public QueryDeviceUsersResponse QueryDeviceUsers(QueryDeviceUsersRequest request) { return(PersistenceOperation.Process(request, () => { if (WebSocketClientManager.GetInstance().GetClientById(request.Device.Code.ToInt32()) == null) { var msg = string.Format("设备:[{0}]未连接", string.Join(",", request.Device.Name)); return new QueryDeviceUsersResponse() { ResultType = ResultTypes.DeviceNotConnected, Messages = new[] { msg } }; } var userDtos = new List <DeviceUserDto>(); var deviceUsers = new List <UserInfo>(); var op = new DeviceUserOp(); if (!string.IsNullOrWhiteSpace(request.UserCode)) { var userRepo = RepositoryManager.GetRepository <IUserRepository>(); var userInfo = userRepo.QueryUsersForSummaryData(new Hashtable() { { "UserCode", request.UserCode } }).FirstOrDefault(); if (userInfo != null) { var deviceUser = op.TryGetUesrInfo(userInfo, request.Device); if (deviceUser != null) { deviceUsers.Add(deviceUser); } } } else { deviceUsers = op.QueryUsersByDevice(request.Device); } if (deviceUsers != null) { deviceUsers.ForEach(x => userDtos.Add(new DeviceUserDto() { UserCode = x.UserId, UserName = string.IsNullOrWhiteSpace(x.UserName) ? "未命名人员" : x.UserName, })); } return new QueryDeviceUsersResponse() { ResultType = ResultTypes.Ok, Users = userDtos }; })); }
public SyncDBUsersResponse SyncSystemUsers(SyncDBUsersRequest request) { return(PersistenceOperation.Process(request, () => { try { var userRepo = RepositoryManager.GetRepository <IUserRepository>(); var deviceRepo = RepositoryManager.GetRepository <IDeviceControllerRepository>(); Log.Info("Check offline devices"); var allDevices = deviceRepo.QuerySummaryData(new Hashtable() { { "Status", (int)GeneralStatus.Enabled } }); var offlineDevices = allDevices.FindAll(d => WebSocketClientManager.GetInstance().GetClientById(d.Code.ToInt32()) == null); var onlineDevices = allDevices.Except(offlineDevices); var requestOfflineDevice = offlineDevices.FindAll(x => request.Devices.Select(xx => xx.DeviceID).Contains(x.DeviceID)); if (requestOfflineDevice.Any()) { var msg = string.Format("设备:[{0}]未连接", string.Join(",", requestOfflineDevice.Select(x => x.Name))); return new SyncDBUsersResponse() { ResultType = ResultTypes.DeviceNotConnected, Messages = new[] { msg } }; } //if (offlineDevices.Any()) //{ // var msg = string.Format("设备:[{0}]未连接", string.Join(",", offlineDevices.Select(x => x.Name))); // return new SyncDBUsersResponse() { ResultType = ResultTypes.DeviceNotConnected, Messages = new[] { msg } }; //} Log.Info("Load data for request devices..."); var requestDevices = new List <DeviceController>(); request.Devices.ForEach(x => { var d = onlineDevices.FirstOrDefault(e => e.DeviceID == x.DeviceID); if (d != null) { requestDevices.Add(d); } }); request.Devices = requestDevices; Log.Info("Load data for request users..."); var requestUsers = new List <User>(); request.Users.ForEach(x => { if (x.UserID != 0) { x = userRepo.GetByKey(x.UserID); } requestUsers.Add(x); }); request.Users = requestUsers; Log.Info("Process business..."); request.Users.ForEach(user => { Log.Info("Try to get user data from all devices..."); var deviceUserOp = new DeviceUserOp(); var userDeviceInfoDict = new Dictionary <int, UserInfo>(); var deviceListInSequence = onlineDevices.OrderBy(x => x.DeviceID); foreach (var device in deviceListInSequence) { var tryGetDeviceUser = deviceUserOp.TryGetUesrInfo(user, device); if (tryGetDeviceUser != null) { userDeviceInfoDict.Add(device.DeviceID, tryGetDeviceUser); } } Log.Info("Try to update user data..."); var systemUserOp = new SystemUserOp(onlineDevices, userDeviceInfoDict); systemUserOp.SyncUser(user, request.Devices); }); return new SyncDBUsersResponse() { ResultType = ResultTypes.Ok }; } catch (Exception ex) { return new SyncDBUsersResponse() { ResultType = ResultTypes.UnknownError, Messages = new[] { ex.Message } }; } })); }