Mule/dataweave - 无法获取日期大于或等于另一个日期的 record/item
Mule/dataweave - Unable to get record/item which have date greater than or equal to another date
我正在尝试通过在日期范围内应用过滤器来过滤我的负载。不幸的是,我认为它不起作用,因为数据 return 无效。你们能帮我检查一下这个错误的原因吗?仅供参考,我已经分别将日期数据强制为 localdatetime。
变量
sessionVars.DateFrom = 2017-05-01T00:00:00
sessionVars.DateTo = 2017-09-01T23:59:59
当前输入
<GetListOfCategoriesDetailResponse xmlns="" xmlns:s="">
<GetListOfCategoriesDetailResult xmlns:a="" xmlns:i="">
<a:CategoryDetail>
<a:CategoryCode>ABC456</a:CategoryCode>
<a:Arrive>2017-12-14T15:00:00</a:Arrive>
<a:Depart>2018-01-10T15:00:00</a:Depart>
</a:CategoryDetail>
<a:CategoryDetail>
<a:CategoryCode>ABC123</a:CategoryCode>
<a:Arrive>2017-08-14T15:00:00</a:Arrive>
<a:Depart>2017-08-20T15:00:00</a:Depart>
</a:CategoryDetail>
<a:CategoryDetail>
<a:CategoryCode>BCD344</a:CategoryCode>
<a:Arrive>2017-05-14T15:00:00</a:Arrive>
<a:Depart>2017-06-01T15:00:00</a:Depart>
</a:CategoryDetail>
</GetListOfCategoriesDetailResult>
</GetListOfCategoriesDetailResponse>
预期输出
<ns0:FoodProducts>
<ns0:FoodProduct>
<ns0:FruitTypes>
<ns0:FruitType FruitTypeCode="ABC123">
</ns0:FruitType>
<ns0:FruitType FruitTypeCode="BCD344" >
</ns0:FruitType>
</ns0:FoodProduct>
</ns0:FoodProducts>
我到目前为止的数据编织代码
%output application/xml
%namespace ns0
%namespace ns01
%namespace ns1
---
{
ns0#FoodProductRS: {
ns0#FoodProducts: {
ns0#FoodProduct: {
ns0#FruitTypes: {
(payload.ns01#GetListOfCategoriesDetailResponse.ns01#GetListOfCategoriesDetailResult.*ns1#CategoryDetail filter (sessionVars.DateTo as :localdatetime {format:"yyyy-MM-dd'T'HH:mm:ss"}) >= ($.Arrive as :localdatetime {format:"yyyy-MM-dd'T'HH:mm:ss"})
and (sessionVars.DateFrom as :localdatetime {format:"yyyy-MM-dd'T'HH:mm:ss"}) <= ($.Depart as :localdatetime {format:"yyyy-MM-dd'T'HH:mm:ss"})
map ((categoryDetail , indexOfCategoryDetail) -> {
ns0#FruitType @(FruitTypeCode: categoryDetail.ns1#CategoryCode)
}))
}
}
}
}
}
我已经再次确认这个代码比较确实有效,我能够根据 localdatetime 比较获取记录范围。
我正在尝试通过在日期范围内应用过滤器来过滤我的负载。不幸的是,我认为它不起作用,因为数据 return 无效。你们能帮我检查一下这个错误的原因吗?仅供参考,我已经分别将日期数据强制为 localdatetime。
变量
sessionVars.DateFrom = 2017-05-01T00:00:00
sessionVars.DateTo = 2017-09-01T23:59:59
当前输入
<GetListOfCategoriesDetailResponse xmlns="" xmlns:s="">
<GetListOfCategoriesDetailResult xmlns:a="" xmlns:i="">
<a:CategoryDetail>
<a:CategoryCode>ABC456</a:CategoryCode>
<a:Arrive>2017-12-14T15:00:00</a:Arrive>
<a:Depart>2018-01-10T15:00:00</a:Depart>
</a:CategoryDetail>
<a:CategoryDetail>
<a:CategoryCode>ABC123</a:CategoryCode>
<a:Arrive>2017-08-14T15:00:00</a:Arrive>
<a:Depart>2017-08-20T15:00:00</a:Depart>
</a:CategoryDetail>
<a:CategoryDetail>
<a:CategoryCode>BCD344</a:CategoryCode>
<a:Arrive>2017-05-14T15:00:00</a:Arrive>
<a:Depart>2017-06-01T15:00:00</a:Depart>
</a:CategoryDetail>
</GetListOfCategoriesDetailResult>
</GetListOfCategoriesDetailResponse>
预期输出
<ns0:FoodProducts>
<ns0:FoodProduct>
<ns0:FruitTypes>
<ns0:FruitType FruitTypeCode="ABC123">
</ns0:FruitType>
<ns0:FruitType FruitTypeCode="BCD344" >
</ns0:FruitType>
</ns0:FoodProduct>
</ns0:FoodProducts>
我到目前为止的数据编织代码
%output application/xml
%namespace ns0
%namespace ns01
%namespace ns1
---
{
ns0#FoodProductRS: {
ns0#FoodProducts: {
ns0#FoodProduct: {
ns0#FruitTypes: {
(payload.ns01#GetListOfCategoriesDetailResponse.ns01#GetListOfCategoriesDetailResult.*ns1#CategoryDetail filter (sessionVars.DateTo as :localdatetime {format:"yyyy-MM-dd'T'HH:mm:ss"}) >= ($.Arrive as :localdatetime {format:"yyyy-MM-dd'T'HH:mm:ss"})
and (sessionVars.DateFrom as :localdatetime {format:"yyyy-MM-dd'T'HH:mm:ss"}) <= ($.Depart as :localdatetime {format:"yyyy-MM-dd'T'HH:mm:ss"})
map ((categoryDetail , indexOfCategoryDetail) -> {
ns0#FruitType @(FruitTypeCode: categoryDetail.ns1#CategoryCode)
}))
}
}
}
}
}
我已经再次确认这个代码比较确实有效,我能够根据 localdatetime 比较获取记录范围。