From 07b96c69aebc192eb13de6950c255ef4e3f1fcc4 Mon Sep 17 00:00:00 2001 From: lazhen <17772815105@139.com> Date: 星期三, 24 七月 2024 14:04:19 +0800 Subject: [PATCH] 批量界面新增结果同标准功能有异 --- _Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl | 81 +++++++++++++++------------------------- 1 files changed, 30 insertions(+), 51 deletions(-) diff --git a/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl b/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl index 55d6ee0..91342d6 100644 --- a/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl +++ b/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl @@ -41,61 +41,40 @@ TextBody: [* //浜嬩欢鍒涘缓浜屽紑鏂规硶 - //info( startDate_i, startTimeOfDay_i, endDate_i, endTimeOfDay_i, isAllDay_i, recurrenceInterval_i, patternType_i - // , patternDaily_IsEveryWeekday_i, periodType_i, periodStartDate_i, nrOfOccurrences_i, periodEndDate_i ); - //鏌ヨ鏄惁宸叉湁鍚屽悕浜嬩欢 + //鏌ヨ鏄惁宸叉湁鍚屽悕鍦ㄦ壒閲忕晫闈㈠垱寤虹殑浜嬩欢s event := selectobject( owner_i, Event, event, event.Subject() = subject_i - and event.EventType() = eventtype_i - and ( event.LeadingParticipation().EndDate() - event.LeadingParticipation().StartDate() ) = ( endDate_i - startDate_i ) - and event.StartTimeOfDay() = startTimeOfDay_i - and event.EndTimeOfDay() = endTimeOfDay_i ); - //event := selectobject( owner_i, Event.LeadingParticipation, lp, lp.Event().Subject() = subject_i - // and lp.Event().EventType() = eventtype_i - // and ( lp.EndDate() - lp.StartDate() ) = ( endDate_i - startDate_i ) - // and lp.Event().StartTimeOfDay() = startTimeOfDay_i - // and lp.Event().EndTimeOfDay() = endTimeOfDay_i ); + and event.EventType() = eventtype_i ); //鍙湁閫氳繃鎵归噺鍒涘缓鐣岄潰涓斿凡鏈夊悓鍚嶄簨浠惰繘鍏ヤ笅闈㈡搷浣� if( ismultiple and not isnull( event ) ){ - startdate := startDate_i; - enddate := startDate_i; - dates := construct( Dates ); - dates.Add( startDate_i ); - //鑾峰彇鏃т簨浠剁殑寮�濮嬩簨浠跺拰缁撴潫浜嬩欢锛屼互鍙婃墍鏈夋椂闂寸偣 - traverse( event, Participation.ExplicitTimeInterval, eti ){ - if( startdate > eti.Start().Date() ){ - startdate := eti.Start().Date(); - } - if( enddate < eti.Start().Date() ) { - enddate := eti.Start().Date(); - } - if( not exists( dates, Elements, e, e = eti.Start().Date() ) ){ - dates.Add( eti.Start().Date() ); - } + lp := event.LeadingParticipation(); + timezone := lp.Calendar().GetTimeZone(); + starttime := startDate_i.DateTime( timezone ).AddAsPeriod( timezone, startTimeOfDay_i ); + endtime := endDate_i.DateTime( timezone ).AddAsPeriod( timezone, endTimeOfDay_i ); + // startDate := starttime.Date( timezone ); + // endDate := endtime.Date( timezone ) - ifexpr( endtime = endtime.StartOfDay( timezone ), 1, 0 ); + lp.AddSubscribers( subscribers_i, true );; + leadingETI := selectobject( lp, ExplicitTimeInterval, eti, eti.Start() = starttime and eti.End() = endtime ); + if( isnull( leadingETI ) ){ + leadingETI := lp.CreateTimeInterval( starttime, endtime, event.Capacity() ); } - //淇敼鏃т簨浠剁殑闂撮殧 - nrOfOccurrences_i := enddate - startdate + 1; - startDate_i := startdate; - endDate_i := ( event.LeadingParticipation().EndDate() - event.LeadingParticipation().StartDate() + startDate_i ); - periodStartDate_i := startdate; - periodEndDate_i := enddate; - // info( startDate_i, startTimeOfDay_i, endDate_i, endTimeOfDay_i, isAllDay_i, recurrenceInterval_i, patternType_i - // , patternDaily_IsEveryWeekday_i, periodType_i, periodStartDate_i, nrOfOccurrences_i, periodEndDate_i ); - event := LibCal_Event::CreateUpdateFromUI( owner_i, event.LeadingParticipation(), subject_i, description_i, type_i, capacity_i, category_i, isDefault_i, - startDate_i, startTimeOfDay_i, endDate_i, endTimeOfDay_i, isAllDay_i, - isRecurring_i, recurrenceInterval_i, - patternType_i, patternDaily_IsEveryWeekday_i, patternWeekly_Weekdays_i, - patternMonthly_IsDay_i, patternMonthly_Day_i, patternMonthly_WeekOfMonth_i, patternMonthly_DayOfWeek_i, - patternYearly_IsDate_i, patternYearly_Month_i, patternYearly_Day_i, patternYearly_WeekOfMonth_i, patternYearly_DayOfWeek_i, - periodType_i, periodStartDate_i, nrOfOccurrences_i, periodEndDate_i, subscribers_i ); - //鍒犳帀涓嶉渶瑕佺殑鏃堕棿鐐� - timeIntervals := construct( LibCal_ExplicitTimeIntervals ); - traverse( event, Participation.ExplicitTimeInterval, eti ){ - // info( '------------------------------', eti.Start(), eti.End(), exists( dates, Elements, e, e = eti.Start().Date() ), '------------------', dates.Find( eti.Start().Date() ) ); - if( dates.Find( eti.Start().Date() ) < 0 ){ - timeIntervals.Add( eti ); - } - } - LibCal_ExplicitTimeInterval::Delete( timeIntervals, true ); + // info( '-----------------------2-----------------', lp.ExplicitTimeInterval( relsize ) ); + // if( not isnull( leadingETI ) ){ + // traverse( lp, Subscription, subscription, subscribers_i.Find( subscription.Calendar() ) >= 0 and + // startDate <= subscription.Calendar().EndDate() and + // endDate >= subscription.Calendar().StartDate() and + // ( isnull( subscription.RecurrencePeriod() ) or + // ( startDate <= subscription.RecurrencePeriod().EndDate() and + // endDate >= subscription.RecurrencePeriod().StartDate() ) ) ){ + // info( '-----------------------1-----------------', subscription.ExplicitTimeInterval( relsize ) ); + // subscribingETI := subscription.CreateTimeInterval( starttime, endtime, event.Capacity() ); + // + // if( not isnull( subscribingETI ) ){ + // subscribingETI.LeadingETI( relset, leadingETI ); + // } + // info( '-----------------------4-----------------', subscription.ExplicitTimeInterval( relsize ) ); + // } + // } + // info( '-----------------------3-----------------', lp.ExplicitTimeInterval( relsize ) ); } else { event := LibCal_Event::CreateUpdateFromUI( owner_i, participation_i, subject_i, description_i, type_i, capacity_i, category_i, isDefault_i, startDate_i, startTimeOfDay_i, endDate_i, endTimeOfDay_i, isAllDay_i, -- Gitblit v1.9.3