dram.me

OFBiz中calendar页面添加工作计划名称筛选

页面这块相对比较简单,服务端的处理在org.apache.ofbiz.workeffort.workeffort.WorkEffortServices的getWorkEffortEventsByPeriod中。

当前基于FindServices.createConditionList,直接在applications/workeffort/groovyScripts/workeffort/calendar/Week.groovy追加了筛选条件,支持大小写判断、不同的比较符等text-find界面所具备的功能。

另一个相关问题是,OFBiz的日历页面在This Week等链接跳转时WorkEffort_op数据丢失的问题。这个涉及到view-home这个表单成功后的操作,按逻辑应该是不将当前表单的数据带到home页面的。

需要处理view-home这种响应方式,这种方式不应该将参数带到home页面。

--- a/applications/workeffort/groovyScripts/workeffort/calendar/Days.groovy
+++ b/applications/workeffort/groovyScripts/workeffort/calendar/Days.groovy
@@ -19,9 +19,7 @@
 
 import java.sql.Timestamp
 import org.apache.ofbiz.base.util.UtilDateTime
-import org.apache.ofbiz.base.util.UtilMisc
-import org.apache.ofbiz.base.util.UtilValidate
-import org.apache.ofbiz.service.ModelService
+import org.apache.ofbiz.common.FindServices
 
 String startParam = parameters.startTime
 Timestamp start = null
@@ -37,12 +35,20 @@ Timestamp prev = UtilDateTime.getDayStart(start, -1, timeZone, locale)
 context.prevMillis = new Long(prev.getTime()).toString()
 Timestamp next = UtilDateTime.getDayStart(start, 1, timeZone, locale)
 context.nextMillis = new Long(next.getTime()).toString()
-Map serviceCtx = dispatcher.getDispatchContext().makeValidContext("getWorkEffortEventsByPeriod", ModelService.IN_PARAM, parameters)
-serviceCtx.putAll(UtilMisc.toMap("userLogin", userLogin, "start", start, "numPeriods", 24, "periodType", Calendar.HOUR, "locale", locale, "timeZone", timeZone))
-if (context.entityExprList) {
-    serviceCtx.entityExprList = entityExprList
-}
-Map result = runService('getWorkEffortEventsByPeriod', serviceCtx)
+Map result = runService('getWorkEffortEventsByPeriod', [
+    userLogin: userLogin,
+    start: start,
+    numPeriods: 24,
+    periodType: Calendar.HOUR,
+    locale: locale,
+    timeZone: timeZone,
+    entityExprList: FindServices.createConditionList(
+        parameters,
+        delegator.getModelEntity("WorkEffort").getFieldsUnmodifiable(),
+        [:],
+        delegator,
+        context)
+])
 context.put("periods", result.get("periods"))
 context.put("maxConcurrentEntries", result.get("maxConcurrentEntries"))
 context.put("start", start)
diff --git a/applications/workeffort/groovyScripts/workeffort/calendar/Month.groovy b/applications/workeffort/groovyScripts/workeffort/calendar/Month.groovy
index f4825eb970..5e77f5bec2 100644
--- a/applications/workeffort/groovyScripts/workeffort/calendar/Month.groovy
+++ b/applications/workeffort/groovyScripts/workeffort/calendar/Month.groovy
@@ -19,9 +19,7 @@
 
 import java.sql.Timestamp
 import org.apache.ofbiz.base.util.UtilDateTime
-import org.apache.ofbiz.base.util.UtilMisc
-import org.apache.ofbiz.base.util.UtilValidate
-import org.apache.ofbiz.service.ModelService
+import org.apache.ofbiz.common.FindServices
 
 String startParam = parameters.startTime
 Timestamp start = null
@@ -59,12 +57,21 @@ if (followingMonthDays < 0) {
     followingMonthDays += 7
 }
 numDays += followingMonthDays
-Map serviceCtx = dispatcher.getDispatchContext().makeValidContext("getWorkEffortEventsByPeriod", ModelService.IN_PARAM, parameters)
-serviceCtx.putAll(UtilMisc.toMap("userLogin", userLogin, "start", getFrom, "calendarType", "VOID", "numPeriods", numDays, "periodType", Calendar.DATE, "locale", locale, "timeZone", timeZone))
-if (context.entityExprList) {
-    serviceCtx.entityExprList = entityExprList
-}
-result = runService('getWorkEffortEventsByPeriod', serviceCtx)
+result = runService('getWorkEffortEventsByPeriod', [
+    userLogin: userLogin,
+    start: getFrom,
+    calendarType: "VOID",
+    numPeriods: numDays,
+    periodType: Calendar.DATE,
+    locale: locale,
+    timeZone: timeZone,
+    entityExprList: FindServices.createConditionList(
+        parameters,
+        delegator.getModelEntity("WorkEffort").getFieldsUnmodifiable(),
+        [:],
+        delegator,
+        context)
+])
 context.put("periods",result.get("periods"))
 context.put("maxConcurrentEntries", result.get("maxConcurrentEntries"))
 context.put("start", start)
diff --git a/applications/workeffort/groovyScripts/workeffort/calendar/Upcoming.groovy b/applications/workeffort/groovyScripts/workeffort/calendar/Upcoming.groovy
index b9be45aae5..92d0cf2d05 100644
--- a/applications/workeffort/groovyScripts/workeffort/calendar/Upcoming.groovy
+++ b/applications/workeffort/groovyScripts/workeffort/calendar/Upcoming.groovy
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-import org.apache.ofbiz.base.util.UtilMisc
+import org.apache.ofbiz.common.FindServices
 
 facilityId = parameters.get("facilityId")
 fixedAssetId = parameters.get("fixedAssetId")
@@ -39,9 +39,25 @@ if (workEffortTypeId != null) {
     eventsParam = "workEffortTypeId=" + workEffortTypeId
 }
 
-Map serviceCtx = UtilMisc.toMap("userLogin", userLogin, "start", start, "numPeriods", 7, "periodType", Calendar.DATE)
-serviceCtx.putAll(UtilMisc.toMap("partyId", partyId, "facilityId", facilityId, "fixedAssetId", fixedAssetId, "workEffortTypeId", workEffortTypeId, "calendarType", calendarType, "locale", locale, "timeZone", timeZone))
-
+Map serviceCtx = [
+    userLogin: userLogin,
+    start: start,
+    numPeriods: 7,
+    periodType: Calendar.DATE,
+    partyId: partyId,
+    facilityId: facilityId,
+    fixedAssetId: fixedAssetId,
+    workEffortTypeId: workEffortTypeId,
+    calendarType: calendarType,
+    locale: locale,
+    timeZone: timeZone,
+    entityExprList: FindServices.createConditionList(
+        parameters,
+        delegator.getModelEntity("WorkEffort").getFieldsUnmodifiable(),
+        [:],
+        delegator,
+        context)
+]
 Map result = runService('getWorkEffortEventsByPeriod',serviceCtx)
 context.put("days", result.get("periods"))
 context.put("start", start)
diff --git a/applications/workeffort/groovyScripts/workeffort/calendar/Week.groovy b/applications/workeffort/groovyScripts/workeffort/calendar/Week.groovy
index 75994b54b2..76252912f3 100644
--- a/applications/workeffort/groovyScripts/workeffort/calendar/Week.groovy
+++ b/applications/workeffort/groovyScripts/workeffort/calendar/Week.groovy
@@ -19,9 +19,7 @@
 
 import java.sql.Timestamp
 import org.apache.ofbiz.base.util.UtilDateTime
-import org.apache.ofbiz.base.util.UtilMisc
-import org.apache.ofbiz.base.util.UtilValidate
-import org.apache.ofbiz.service.ModelService
+import org.apache.ofbiz.common.FindServices
 
 String startParam = parameters.startTime
 Timestamp start = null
@@ -38,12 +36,20 @@ context.prevMillis = new Long(prev.getTime()).toString()
 Timestamp next = UtilDateTime.getDayStart(start, 7, timeZone, locale)
 context.nextMillis = new Long(next.getTime()).toString()
 Timestamp end = UtilDateTime.getDayStart(start, 6, timeZone, locale)
-Map serviceCtx = dispatcher.getDispatchContext().makeValidContext("getWorkEffortEventsByPeriod", ModelService.IN_PARAM, parameters)
-serviceCtx.putAll(UtilMisc.toMap("userLogin", userLogin, "start", start, "numPeriods", 7, "periodType", Calendar.DATE, "locale", locale, "timeZone", timeZone))
-if (context.entityExprList) {
-    serviceCtx.entityExprList = entityExprList
-}
-Map result = runService('getWorkEffortEventsByPeriod',serviceCtx)
+Map result = runService('getWorkEffortEventsByPeriod', [
+    userLogin: userLogin,
+    start: start,
+    numPeriods: 7,
+    periodType: Calendar.DATE,
+    locale: locale,
+    timeZone: timeZone,
+    entityExprList: FindServices.createConditionList(
+        parameters,
+        delegator.getModelEntity("WorkEffort").getFieldsUnmodifiable(),
+        [:],
+        delegator,
+        context)
+])
 context.put("periods",result.get("periods"))
 context.put("maxConcurrentEntries",result.get("maxConcurrentEntries"))
 context.put("start",start)
diff --git a/applications/workeffort/widget/CalendarForms.xml b/applications/workeffort/widget/CalendarForms.xml
index f018617372..3746552e10 100644
--- a/applications/workeffort/widget/CalendarForms.xml
+++ b/applications/workeffort/widget/CalendarForms.xml
@@ -40,6 +40,7 @@ under the License.
                 </entity-options>
             </drop-down>
         </field>
+        <field name="workEffortName"><text-find/></field>
         <field name="facilityId" title="${uiLabelMap.Facility}">
             <drop-down allow-empty="true">
                 <entity-options entity-name="Facility" description="${facilityName}">
diff --git a/applications/workeffort/widget/WorkEffortMenus.xml b/applications/workeffort/widget/WorkEffortMenus.xml
index ac3b3237ea..5548ac03eb 100644
--- a/applications/workeffort/widget/WorkEffortMenus.xml
+++ b/applications/workeffort/widget/WorkEffortMenus.xml
@@ -165,6 +165,9 @@ under the License.
                 <parameter param-name="partyId" from-field="parameters.partyId"/>
                 <parameter param-name="fixedAssetId" from-field="parameters.fixedAssetId"/>
                 <parameter param-name="workEffortTypeId" from-field="parameters.workEffortTypeId"/>
+                <parameter param-name="workEffortName_op" from-field="parameters.workEffortName_op"/>
+                <parameter param-name="workEffortName" from-field="parameters.workEffortName"/>
+                <parameter param-name="workEffortName_ic" from-field="parameters.workEffortName_ic"/>
                 <parameter param-name="calendarType" from-field="parameters.calendarType"/>
                 <parameter param-name="facilityId" from-field="parameters.facilityId"/>
                 <parameter param-name="hideEvents" from-field="parameters.hideEvents"/>
@@ -176,6 +179,9 @@ under the License.
                 <parameter param-name="partyId" from-field="parameters.partyId"/>
                 <parameter param-name="fixedAssetId" from-field="parameters.fixedAssetId"/>
                 <parameter param-name="workEffortTypeId" from-field="parameters.workEffortTypeId"/>
+                <parameter param-name="workEffortName_op" from-field="parameters.workEffortName_op"/>
+                <parameter param-name="workEffortName" from-field="parameters.workEffortName"/>
+                <parameter param-name="workEffortName_ic" from-field="parameters.workEffortName_ic"/>
                 <parameter param-name="calendarType" from-field="parameters.calendarType"/>
                 <parameter param-name="facilityId" from-field="parameters.facilityId"/>
                 <parameter param-name="hideEvents" from-field="parameters.hideEvents"/>
@@ -188,6 +194,9 @@ under the License.
                 <parameter param-name="partyId" from-field="parameters.partyId"/>
                 <parameter param-name="fixedAssetId" from-field="parameters.fixedAssetId"/>
                 <parameter param-name="workEffortTypeId" from-field="parameters.workEffortTypeId"/>
+                <parameter param-name="workEffortName_op" from-field="parameters.workEffortName_op"/>
+                <parameter param-name="workEffortName" from-field="parameters.workEffortName"/>
+                <parameter param-name="workEffortName_ic" from-field="parameters.workEffortName_ic"/>
                 <parameter param-name="calendarType" from-field="parameters.calendarType"/>
                 <parameter param-name="facilityId" from-field="parameters.facilityId"/>
                 <parameter param-name="hideEvents" from-field="parameters.hideEvents"/>
@@ -202,6 +211,9 @@ under the License.
                 <parameter param-name="partyId" from-field="parameters.partyId"/>
                 <parameter param-name="fixedAssetId" from-field="parameters.fixedAssetId"/>
                 <parameter param-name="workEffortTypeId" from-field="parameters.workEffortTypeId"/>
+                <parameter param-name="workEffortName_op" from-field="parameters.workEffortName_op"/>
+                <parameter param-name="workEffortName" from-field="parameters.workEffortName"/>
+                <parameter param-name="workEffortName_ic" from-field="parameters.workEffortName_ic"/>
                 <parameter param-name="calendarType" from-field="parameters.calendarType"/>
                 <parameter param-name="facilityId" from-field="parameters.facilityId"/>
                 <parameter param-name="hideEvents" from-field="parameters.hideEvents"/>
@@ -213,6 +225,9 @@ under the License.
                 <parameter param-name="partyId" from-field="parameters.partyId"/>
                 <parameter param-name="fixedAssetId" from-field="parameters.fixedAssetId"/>
                 <parameter param-name="workEffortTypeId" from-field="parameters.workEffortTypeId"/>
+                <parameter param-name="workEffortName_op" from-field="parameters.workEffortName_op"/>
+                <parameter param-name="workEffortName" from-field="parameters.workEffortName"/>
+                <parameter param-name="workEffortName_ic" from-field="parameters.workEffortName_ic"/>
                 <parameter param-name="calendarType" from-field="parameters.calendarType"/>
                 <parameter param-name="facilityId" from-field="parameters.facilityId"/>
                 <parameter param-name="hideEvents" from-field="parameters.hideEvents"/>
@@ -225,6 +240,9 @@ under the License.
                 <parameter param-name="partyId" from-field="parameters.partyId"/>
                 <parameter param-name="fixedAssetId" from-field="parameters.fixedAssetId"/>
                 <parameter param-name="workEffortTypeId" from-field="parameters.workEffortTypeId"/>
+                <parameter param-name="workEffortName_op" from-field="parameters.workEffortName_op"/>
+                <parameter param-name="workEffortName" from-field="parameters.workEffortName"/>
+                <parameter param-name="workEffortName_ic" from-field="parameters.workEffortName_ic"/>
                 <parameter param-name="calendarType" from-field="parameters.calendarType"/>
                 <parameter param-name="facilityId" from-field="parameters.facilityId"/>
                 <parameter param-name="hideEvents" from-field="parameters.hideEvents"/>
@@ -239,6 +257,9 @@ under the License.
                 <parameter param-name="partyId" from-field="parameters.partyId"/>
                 <parameter param-name="fixedAssetId" from-field="parameters.fixedAssetId"/>
                 <parameter param-name="workEffortTypeId" from-field="parameters.workEffortTypeId"/>
+                <parameter param-name="workEffortName_op" from-field="parameters.workEffortName_op"/>
+                <parameter param-name="workEffortName" from-field="parameters.workEffortName"/>
+                <parameter param-name="workEffortName_ic" from-field="parameters.workEffortName_ic"/>
                 <parameter param-name="calendarType" from-field="parameters.calendarType"/>
                 <parameter param-name="facilityId" from-field="parameters.facilityId"/>
                 <parameter param-name="hideEvents" from-field="parameters.hideEvents"/>
@@ -250,6 +271,9 @@ under the License.
                 <parameter param-name="partyId" from-field="parameters.partyId"/>
                 <parameter param-name="fixedAssetId" from-field="parameters.fixedAssetId"/>
                 <parameter param-name="workEffortTypeId" from-field="parameters.workEffortTypeId"/>
+                <parameter param-name="workEffortName_op" from-field="parameters.workEffortName_op"/>
+                <parameter param-name="workEffortName" from-field="parameters.workEffortName"/>
+                <parameter param-name="workEffortName_ic" from-field="parameters.workEffortName_ic"/>
                 <parameter param-name="calendarType" from-field="parameters.calendarType"/>
                 <parameter param-name="facilityId" from-field="parameters.facilityId"/>
                 <parameter param-name="hideEvents" from-field="parameters.hideEvents"/>
@@ -262,6 +286,9 @@ under the License.
                 <parameter param-name="partyId" from-field="parameters.partyId"/>
                 <parameter param-name="fixedAssetId" from-field="parameters.fixedAssetId"/>
                 <parameter param-name="workEffortTypeId" from-field="parameters.workEffortTypeId"/>
+                <parameter param-name="workEffortName_op" from-field="parameters.workEffortName_op"/>
+                <parameter param-name="workEffortName" from-field="parameters.workEffortName"/>
+                <parameter param-name="workEffortName_ic" from-field="parameters.workEffortName_ic"/>
                 <parameter param-name="calendarType" from-field="parameters.calendarType"/>
                 <parameter param-name="facilityId" from-field="parameters.facilityId"/>
                 <parameter param-name="hideEvents" from-field="parameters.hideEvents"/>
@@ -283,6 +310,9 @@ under the License.
                 <parameter param-name="partyId" from-field="parameters.partyId"/>
                 <parameter param-name="fixedAssetId" from-field="parameters.fixedAssetId"/>
                 <parameter param-name="workEffortTypeId" from-field="parameters.workEffortTypeId"/>
+                <parameter param-name="workEffortName_op" from-field="parameters.workEffortName_op"/>
+                <parameter param-name="workEffortName" from-field="parameters.workEffortName"/>
+                <parameter param-name="workEffortName_ic" from-field="parameters.workEffortName_ic"/>
                 <parameter param-name="calendarType" from-field="parameters.calendarType"/>
                 <parameter param-name="facilityId" from-field="parameters.facilityId"/>
                 <parameter param-name="hideEvents" from-field="parameters.hideEvents"/>
@@ -297,6 +327,9 @@ under the License.
                 <parameter param-name="partyId" from-field="parameters.partyId"/>
                 <parameter param-name="fixedAssetId" from-field="parameters.fixedAssetId"/>
                 <parameter param-name="workEffortTypeId" from-field="parameters.workEffortTypeId"/>
+                <parameter param-name="workEffortName_op" from-field="parameters.workEffortName_op"/>
+                <parameter param-name="workEffortName" from-field="parameters.workEffortName"/>
+                <parameter param-name="workEffortName_ic" from-field="parameters.workEffortName_ic"/>
                 <parameter param-name="calendarType" from-field="parameters.calendarType"/>
                 <parameter param-name="facilityId" from-field="parameters.facilityId"/>
                 <parameter param-name="hideEvents" from-field="parameters.hideEvents"/>
@@ -314,6 +347,9 @@ under the License.
                 <parameter param-name="partyId" from-field="parameters.partyId"/>
                 <parameter param-name="fixedAssetId" from-field="parameters.fixedAssetId"/>
                 <parameter param-name="workEffortTypeId" from-field="parameters.workEffortTypeId"/>
+                <parameter param-name="workEffortName_op" from-field="parameters.workEffortName_op"/>
+                <parameter param-name="workEffortName" from-field="parameters.workEffortName"/>
+                <parameter param-name="workEffortName_ic" from-field="parameters.workEffortName_ic"/>
                 <parameter param-name="calendarType" from-field="parameters.calendarType"/>
                 <parameter param-name="facilityId" from-field="parameters.facilityId"/>
                 <parameter param-name="hideEvents" from-field="parameters.hideEvents"/>
@@ -328,6 +364,9 @@ under the License.
                 <parameter param-name="partyId" from-field="parameters.partyId"/>
                 <parameter param-name="fixedAssetId" from-field="parameters.fixedAssetId"/>
                 <parameter param-name="workEffortTypeId" from-field="parameters.workEffortTypeId"/>
+                <parameter param-name="workEffortName_op" from-field="parameters.workEffortName_op"/>
+                <parameter param-name="workEffortName" from-field="parameters.workEffortName"/>
+                <parameter param-name="workEffortName_ic" from-field="parameters.workEffortName_ic"/>
                 <parameter param-name="calendarType" from-field="parameters.calendarType"/>
                 <parameter param-name="facilityId" from-field="parameters.facilityId"/>
                 <parameter param-name="hideEvents" from-field="parameters.hideEvents"/>