public HarvestLogInfoResult GetHarvestLogInfo(HarvestLogInfoRequest request)
        {
            var retVal = new HarvestLogInfoResult();
            var sql    = SqlStatements.HarvestLogInfo;

            sql = string.Format(sql,
                                string.IsNullOrEmpty(request.ArchiveRecordIdFilter) ? "" : " AND m.gsft_obj_id = :gsft_obj_id ",
                                request.ActionStatusFilterList.Any()
                    ? $" AND aktn_stts in ({string.Join(",", request.ActionStatusFilterList.Select(a => ((int) a).ToString()))}) "
                    : "",
                                "" /* no sort order yet */);


            using (var cn = AISConnection.GetConnection())
            {
                var dateRange = new QueryDateRange(request.DateRangeFilter);
                var cmd       = new OracleCommand(sql, cn);
                cmd.Parameters.Add("cur1", OracleDbType.Cursor, ParameterDirection.Output);
                cmd.Parameters.Add("cur2", OracleDbType.Cursor, ParameterDirection.Output);
                cmd.Parameters.AddWithValue("dateFrom", dateRange.From);
                cmd.Parameters.AddWithValue("dateTo", dateRange.To);
                cmd.Parameters.AddWithValue("recordFrom", request.PageSize * (request.Page - 1));
                cmd.Parameters.AddWithValue("recordTo", request.PageSize * request.Page);
                if (!string.IsNullOrEmpty(request.ArchiveRecordIdFilter))
                {
                    cmd.Parameters.AddWithValue("gsft_obj_id", request.ArchiveRecordIdFilter);
                }

                var ds = new DataSet();
                var da = new OracleDataAdapter(cmd);
                da.TableMappings.Add("Table", "ResultCount");
                da.TableMappings.Add("Table1", "LogInfo");
                da.Fill(ds);

                var dsDetail = new DataSet();
                if (ds.Tables["LogInfo"].Rows.Count > 0)
                {
                    var ids = string.Join(",", ds.Tables["LogInfo"].AsEnumerable().Select(t => (int)t.Field <double>("mttn_id")));
                    dsDetail = GetDataSetFromSql <DataSet>(string.Format(SqlStatements.HarvestLogInfoDetail, ids));
                }

                retVal.TotalResultSetSize = (int)(decimal)ds.Tables["ResultCount"].Rows[0][0];
                retVal.ResultSet          = (from r in ds.Tables["LogInfo"].AsEnumerable()
                                             select new HarvestLogInfo
                {
                    MutationId = (int)r.Field <double>("mttn_id"),
                    ArchiveRecordId = r.Field <double>("gsft_obj_id").ToString("F0"),
                    ArchiveRecordIdName = r.Field <string>("gsft_obj_kurz_nm"),
                    ActionName = r.Field <string>("aktn"),
                    CurrentStatus = (ActionStatus)r.Field <int>("aktn_stts"),
                    CreationDate = r.Field <DateTime>("erfsg_dt"),
                    LastChangeDate = r.Field <DateTime>("mttn_dt"),
                    NumberOfSyncRetries = r.Field <int>("sync_anz_vrsch"),
                    Details = GetLogDetails(dsDetail, (int)r.Field <double>("mttn_id"))
                }
                                             ).ToList();
            }

            return(retVal);
        }
Exemple #2
0
        /// <summary>
        /// 获取(全记录)时间查询条件 
        /// </summary>
        /// <param name="dateRange"></param>
        /// <returns></returns>
        private ViewQueryInfo GetViewDateQuery(QueryDateRange dateRange)
        {
            var dateNow = DateTime.Now;
            var startDate = DateTime.Now;
            var endDate = dateNow;

            //if (dateRange == QueryDateRange.ThisWeek)
            //    startDate = dateNow.AddDays(1 - Convert.ToInt32(dateNow.DayOfWeek.ToString("d")));

            if (dateRange == QueryDateRange.ThisMonth)
                startDate = dateNow.AddDays(1 - dateNow.Day);

            if (dateRange == QueryDateRange.ThisQuarter)
                startDate = dateNow.AddMonths(0 - (dateNow.Month - 1) % 3).AddDays(1 - dateNow.Day);

            if (dateRange == QueryDateRange.ThisYear)
                startDate = new DateTime(dateNow.Year, 1, 1);

            if (dateRange == QueryDateRange.Customer)
            {
                FmCustomTime customTime = new FmCustomTime();
                customTime.StartDate = CurQueryInfo.StartDate.HasValue ? CurQueryInfo.StartDate.Value : DateTime.Now;
                customTime.EndDate = CurQueryInfo.EndDate.HasValue ? CurQueryInfo.EndDate.Value : DateTime.Now;

                if (customTime.ShowDialog() == DialogResult.OK)
                {
                    ViewQueryInfo queryInfo = new ViewQueryInfo();
                    startDate = customTime.StartDate;
                    endDate = customTime.EndDate;
                }
            }
            return new ViewQueryInfo() { DateRange = dateRange, StartDate = startDate, EndDate = dateNow };
            //return new ViewQueryGoodsInfo() { DateRange = dateRange, StartPurchaseDate = startDate, StartSaledDate = startDate, EndPurchaseDate = dateNow, EndSaledDate = dateNow };
        }
Exemple #3
0
        public HarvestStatusInfo GetHarvestStatusInfo(QueryDateRange dataRange)
        {
            var retVal = new HarvestStatusInfo
            {
                NumberOfRecordsCurrentlySyncing = 0,
                NumberOfRecordsWaitingForSync   = 0,
                NumberOfRecordsWithSyncFailure  = 0,
                NumberOfRecordsWithSyncSuccess  = 0
            };

            try
            {
                var ds = GetDataSetFromSql <DataSet>(SqlStatements.HarvestStatusInfo, new[]
                {
                    new OracleParameter("fromDate", OracleDbType.Date)
                    {
                        Value = dataRange.From
                    },
                    new OracleParameter("toDate", OracleDbType.Date)
                    {
                        Value = dataRange.To
                    }
                });

                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    switch ((int)row["aktn_stts"])
                    {
                    case (int)ActionStatus.WaitingForSync:
                        if (row["counttype"].ToString().ToLowerInvariant() == "total")
                        {
                            retVal.TotalNumberOfRecordsWaitingForSync = (int)(decimal)row["cnt"];
                        }
                        else
                        {
                            retVal.NumberOfRecordsWaitingForSync = (int)(decimal)row["cnt"];
                        }

                        break;

                    case (int)ActionStatus.SyncInProgress:
                        if (row["counttype"].ToString().ToLowerInvariant() == "total")
                        {
                            retVal.TotalNumberOfRecordsCurrentlySyncing = (int)(decimal)row["cnt"];
                        }
                        else
                        {
                            retVal.NumberOfRecordsCurrentlySyncing = (int)(decimal)row["cnt"];
                        }

                        break;

                    case (int)ActionStatus.SyncCompleted:
                        if (row["counttype"].ToString().ToLowerInvariant() == "total")
                        {
                            retVal.TotalNumberOfRecordsWithSyncSuccess = (int)(decimal)row["cnt"];
                        }
                        else
                        {
                            retVal.NumberOfRecordsWithSyncSuccess = (int)(decimal)row["cnt"];
                        }

                        break;

                    case (int)ActionStatus.SyncFailed:
                        if (row["counttype"].ToString().ToLowerInvariant() == "total")
                        {
                            retVal.TotalNumberOfRecordsWithSyncFailure = (int)(decimal)row["cnt"];
                        }
                        else
                        {
                            retVal.NumberOfRecordsWithSyncFailure = (int)(decimal)row["cnt"];
                        }

                        break;

                    case (int)ActionStatus.SyncAborted:
                        // Not relevant for us here
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, ex.Message);
                retVal = new HarvestStatusInfo
                {
                    NumberOfRecordsCurrentlySyncing = -1,
                    NumberOfRecordsWaitingForSync   = -1,
                    NumberOfRecordsWithSyncFailure  = -1,
                    NumberOfRecordsWithSyncSuccess  = -1
                };
            }

            return(retVal);
        }