/// <summary> /// 插入一条本地数据,如果存在则更新 /// </summary> /// <param name="record"></param> /// <returns></returns> public void InsertLocalRecord(CloudDataInfo record) { record.Device = Device; record.ModifyTime = DateTime.Now.Subtract(DateTime.Parse("1601,1,1")).Ticks + CloudFactoryBase.TimeInterval; var index = DataInfos.IndexOf(record); if (index != -1) { var local = DataInfos[index]; record.UUID = local.UUID; UpdateDeviceHistory(local); record.DeviceHistory = local.DeviceHistory; local = record; local.DataType = CloudInfoEnum.Update; DataInfos.RemoveAt(index); DataInfos.Insert(0, local); } else { record.UUID = Guid.NewGuid().ToString(); if (DataInfos.Count >= MaxCount) { var removeIndex = DataInfos.Count - 1; var removeInfo = DataInfos[removeIndex]; removeInfo.DataType = CloudInfoEnum.Delete; _postFactory.AddDeleteInfo(removeInfo); DataInfos.RemoveAt(removeIndex); } record.DataType = CloudInfoEnum.Add; UpdateDeviceHistory(record); DataInfos.Insert(0, record); } PostChange(); SubmitChange(); if (LocalChangeAction != null) { LocalChangeAction(); } }