public CommandResult AddReadLog(string deviceID, DateTime dt, decimal value) { var device = GetByID(deviceID).QueryObject; if (device != null) { var provider = ProviderFactory.Create <IProvider <Device, string> >(RepoUri); IUnitWork unitWork = provider.CreateUnitWork(); DeviceReadLog log = null; if (device.LastDate.HasValue && device.LastValue < value) { log = new DeviceReadLog() { ID = Guid.NewGuid(), DeviceID = device.ID, DeviceName = device.Name, DeviceType = device.DeviceType, ReadDate = dt, ReadValue = value, LastDate = device.LastDate.Value, LastValue = device.LastValue.Value, Amount = value - device.LastValue.Value }; ProviderFactory.Create <IProvider <DeviceReadLog, Guid> >(RepoUri).Insert(log, unitWork); } var clone = device.Clone(); clone.LastDate = dt; clone.LastValue = log != null ? (clone.LastValue + log.Amount) : value; //记录设备上次的读数时以记录里实际扣除的数为准 provider.Update(clone, device, unitWork); return(unitWork.Commit()); } return(new CommandResult(ResultCode.Fail, "没有找到符合条件的设备")); }
private string GetKey(DeviceReadLog log) { var key = log.DeviceType == DeviceType.智能电表 ? "用电" : (log.DeviceType == DeviceType.智能水表 ? "用水" : "其它"); if (rdDay.Checked) key += "," + log.ReadDate.ToString("yyyy年MM月dd日"); else if (rdMonth.Checked) key += "," + log.ReadDate.ToString("yyyy年MM月"); else if (rdYear.Checked) key += "," + log.ReadDate.ToString("yyyy年"); if (chkEachDevice.Checked) key += "," + log.DeviceID; return key; }
private void ShowItemOnRow(DataGridViewRow row, DeviceReadLog log) { row.Tag = log; row.Cells["colReadDate"].Value = log.ReadDate; row.Cells["colDevice"].Value = log.DeviceName; row.Cells["colDeviceType"].Value = log.DeviceType == DeviceType.智能电表 ? "用电" : (log.DeviceType == DeviceType.智能水表 ? "用水" : null); row.Cells["colValue"].Value = log.ReadValue; row.Cells["colLastDate"].Value = log.LastDate; row.Cells["colLastValue"].Value = log.LastValue; row.Cells["colAmount"].Value = log.Amount; }
private string GetKey(DeviceReadLog log) { var key = log.DeviceType == DeviceType.智能电表 ? "用电" : (log.DeviceType == DeviceType.智能水表 ? "用水" : "其它"); if (rdDay.Checked) { key += "," + log.ReadDate.ToString("yyyy年MM月dd日"); } else if (rdMonth.Checked) { key += "," + log.ReadDate.ToString("yyyy年MM月"); } else if (rdYear.Checked) { key += "," + log.ReadDate.ToString("yyyy年"); } if (chkEachDevice.Checked) { key += "," + log.DeviceID; } return(key); }