基于条件的m子4中的dataweave2.0变换

问题描述 投票:0回答:1

我必须根据汇总数组中的现金/ dd /支票收据计数和现金/ dd /支票总和等条件编写一些转换和计算。我已经定义了输入数组,并在此基础上期待已定义的输出。帮助我完成该操作的数据编织。\

代码:

    %dw 2.0
    output application/json
    ---
    {
      receipt: payload map ( payload01 , indexOfPayload01 ) -> {
      receiptId: payload01.receiptId,
      amountCollected: payload01.amountCollected,
      paymentMode: payload01.paymentMode,
    },
      summary: {
      TotalamountCollected: payload.*amountCollected reduce ((val, acc=0) -> acc + val)
      }
   }

输入:

[{
    "receiptId": 11000134453,
    "amountCollected": 11,
    "paymentMode": "Cash"
}, {
    "receiptId": 1105444723,
    "amountCollected": 12,
    "paymentMode": "Cheque"
}, {
    "receiptId": 1143434763,
    "amountCollected": 13,
    "paymentMode": "DD"
},{
    "receiptId": 11000134457,
    "amountCollected": 14,
    "paymentMode": "Cash"
}, {
    "receiptId": 1105444728,
    "amountCollected": 15,
    "paymentMode": "Cheque"
}, {
    "receiptId": 1143434769,
    "amountCollected": 16,
    "paymentMode": "DD"
}]

输出:

   {
"summary": {
    "TotalamountCollected": 81,
    "cashRecepit": 2,
    "cashRecepitAmount": 25,
    "chequeRecepit": 2,
    "chequeRecepitAmount": 27,
    "ddRecepit": 2,
    "ddRecepitAmount": 29
},
"receipt": [{
    "receiptId": 11000134453,
    "amountCollected": 11,
    "paymentMode": "Cash"
}, {
    "receiptId": 1105444723,
    "amountCollected": 12,
    "paymentMode": "Cheque"
}, {
    "receiptId": 1143434763,
    "amountCollected": 13,
    "paymentMode": "DD"
},{
    "receiptId": 11000134457,
    "amountCollected": 14,
    "paymentMode": "Cash"
}, {
    "receiptId": 1105444728,
    "amountCollected": 15,
    "paymentMode": "Cheque"
}, {
    "receiptId": 1143434769,
    "amountCollected": 16,
    "paymentMode": "DD"
}]

}

mule dataweave mule-esb mulesoft mule4
1个回答
0
投票

这里是一个涉及对输入进行一次迭代的解决方案。我很好奇是否有人有更清洁的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.