Beispiel #1
0
        private EventArgs UpdateLocalData(SQLite.SQLiteConnection conn, string SqlDelete, string SqlInsert, List <Data.DataObject> DataList, string TableName, string PrimaryKey)
        {
            SQLite.SQLiteCommand cmdDelete = conn.CreateCommand(SqlDelete);
            SQLite.SQLiteCommand cmdInsert = conn.CreateCommand(SqlInsert);
            dynamic arg = null;

            if (TableName == "DoctorCheckLog")
            {
                arg = new CheckLogSyncEventArgs();
            }
            foreach (Data.DataObject data in DataList)
            {
                cmdDelete.ClearBindings();
                cmdInsert.ClearBindings();
                cmdDelete.Bind(data.GetExtValue(PrimaryKey));
                cmdDelete.ExecuteNonQuery();
                if (data.GetExtValue("ChangeType") != "DELETE")
                {
                    for (int d = 0; d < data.Data.Length - 1; d++)
                    {
                        cmdInsert.Bind(data.Data[d]);
                    }
                    cmdInsert.ExecuteNonQuery();
                }
                if (TableName == "DoctorCheckLog")
                {
                    arg.DCLID.Add(data.GetExtValue(PrimaryKey));
                    arg.InhosID.Add(data.GetExtValue("InhosID"));
                    arg.ChangeType.Add(data.GetExtValue("ChangeType"));
                    arg.MedicalLog.Add(data.GetExtBytes("MedicalLog"));
                    arg.PhotoLog.Add(data.GetExtBytes("Photo"));
                }
            }
            return(arg);
        }
Beispiel #2
0
        /// <summary>
        /// 从服务器同步有变化的数据到本地
        /// </summary>
        /// <param name="ChangeTableList"></param>
        /// <returns></returns>
        private async Task <bool> SyncDeviceDataFromServer(List <Data.iDeviceTableChange> ChangeTableList, string IsInitData)
        {
            CheckLogSyncEventArgs CheckLogArg = null;

            foreach (Data.iDeviceTableChange itc in ChangeTableList)
            {
                object Result = await RemoteExcute(new object[] { iCommon.DeviceID, itc.TableName, itc.PrimaryKey, IsInitData });

                if (Result == null)
                {
                    continue;
                }
                List <Data.DataObject> DataList = Deserialize <Data.DataObject>(Result as byte[]);
                if (DataList == null || DataList.Count == 0)
                {
                    if (IsInitData == "0")
                    {
                        using (SQLite.SQLiteConnection conn = new SQLite.SQLiteConnection(iDB.DbFile))
                        {
                            conn.Insert(itc);
                        }
                    }
                    continue;
                }

                string[] SqlSyncToLocal = BuildSyncScript(itc.TableName, itc.PrimaryKey, DataList);

                await SyncDataToLocal(SqlSyncToLocal[0], SqlSyncToLocal[1], DataList, itc);
            }
            return(true);
        }
Beispiel #3
0
 void iCommon_CheckLogSyncComplet(object sender, CheckLogSyncEventArgs e)
 {
     for (int i = 0; i < e.InhosID.Count; i++)
     {
         if (iCommon.Patient.InhosID == e.InhosID[i])
         {//判断是否有当前病人的更新
             string CurrentDCLID = "";
             if (this.gridLogList.SelectedItem != null)
             {
                 CurrentDCLID = (this.gridLogList.SelectedItem as Data.DoctorCheckLog).DCLID;
             }
             int Index = e.DCLID.IndexOf(CurrentDCLID);
             if (Index >= 0 && e.ChangeType[Index] == "UPDATE")
             { //判断是否有当前日志的更新,有则覆盖显示
                 Views.CheckLogDetailEventArgs logArg = new Views.CheckLogDetailEventArgs();
                 logArg.DCLID = CurrentDCLID;
                 OnUpdateCheckLog(null, logArg);
             }
             for (int c = 0; c < e.DCLID.Count; c++)
             {
                 if (e.DCLID[c] == CurrentDCLID)
                 {
                     continue;
                 }
                 Data.DoctorCheckLog checkLog = PatientCheckLog.Find(pcl => pcl.DCLID == e.DCLID[c]);
                 if (checkLog != null)
                 {
                     if (e.ChangeType[c] == "UPDATE")
                     {
                         checkLog.MedicalLog = e.MedicalLog[c];
                     }
                     else if (e.ChangeType[c] == "DELETE")
                     {
                         PatientCheckLog.Remove(checkLog);
                     }
                 }
             }
             return;
         }
     }
 }