几个条目的Dataweave2更新功能不起作用吗? [英] Dataweave2 Update function for few entries not working?

查看:16
本文介绍了几个条目的Dataweave2更新功能不起作用吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要更新我的薪资数组中的3个字段。

  • 总支出金额
  • 价格
  • lineAmount。

我的脚本如下;

%dw 2.0
output application/json
---
payload update {
    case .IntegrationEntities.integrationEntity -> $ map {
        ($ update {
            case .integrationEntityDetails.contractUtilization.items.item ->  $ map {
                ($ update {
                    case .price -> if ( $ as Number < 1 ) "0" ++ $ else $
          case .lineAmount -> if ( $ as Number < 1 ) "0" ++ $ else $
                })
            }
    
    case totalSpendAmount at .integrationEntityDetails.contractUtilization ->   totalSpendAmount update
    {
                case  totalSpendAmount at .totalSpendAmount -> if ( totalSpendAmount as Number < 1 ) "0" ++ totalSpendAmount else totalSpendAmount
            }
        })
    }
}
如果我运行上面的脚本,只有totalspendAmount‘正在更新。如果我删除挡路中的’totalspendAmount‘大小写,我的’pricelineamount字段将正确更新。 我的脚本中有什么错误?

我的有效负载是;

      {
        "IntegrationEntities": {
            "integrationEntity": [
                {
                    "integrationEntityHeader": {
                        "integrationTrackingNumber": "XXXX",
                        "referenceCodeForEntity": "132804",
                        "additionalInfo": "ADDITIONALINFO"
                    },
                    "integrationEntityDetails": {
                        "contractUtilization": {
                            "externalId": "417145",
                            "utilizationType": "INVOICE",
                            "isDelete": "No",
                            "documentNumber": "132804",
                            "documentDescription": "",
                            "documentDate": "2021-03-26",
                            "totalSpendAmount": ".92",
                            "documentCurrency": "AUD",
                            "createdBy": "Oracle Integration",
                            "status": "FULLY PAID",
                            "items": {
                                "item": [
                                    {
                                        "lineItemId": "132804_1",
                                        "contractNumber": "YYYYYYY",
                                        "contractLineId": "",
                                        "lineNumber": "1",
                                        "name": "132804",
                                        "description": "132804",
                                        "quantity": "1",
                                        "price": ".92",
                                        "lineAmount": ".92",
                                        "purchaseOrderNumber": "YYYYYY",
                                        "purchaseOrderDescription": ""
                                    },
 {
                                        "lineItemId": "132804_2",
                                        "contractNumber": "YYYYYYY",
                                        "contractLineId": "",
                                        "lineNumber": "1",
                                        "name": "132804",
                                        "description": "132804_2",
                                        "quantity": "1",
                                        "price": ".95",
                                        "lineAmount": ".95",
                                        "purchaseOrderNumber": "YYYYYY",
                                        "purchaseOrderDescription": ""
                                    }
                                ]
                            }
                        }
                    }
                }
            ]
        }
    }

我查找的输出是;

  {
        "IntegrationEntities": {
            "integrationEntity": [
                {
                    "integrationEntityHeader": {
                        "integrationTrackingNumber": "XXXX",
                        "referenceCodeForEntity": "132804",
                        "additionalInfo": "ADDITIONALINFO"
                    },
                    "integrationEntityDetails": {
                        "contractUtilization": {
                            "externalId": "417145",
                            "utilizationType": "INVOICE",
                            "isDelete": "No",
                            "documentNumber": "132804",
                            "documentDescription": "",
                            "documentDate": "2021-03-26",
                            "totalSpendAmount": "0.92",
                            "documentCurrency": "AUD",
                            "createdBy": "Oracle Integration",
                            "status": "FULLY PAID",
                            "items": {
                                "item": [
                                    {
                                        "lineItemId": "132804_1",
                                        "contractNumber": "YYYYYYY",
                                        "contractLineId": "",
                                        "lineNumber": "1",
                                        "name": "132804",
                                        "description": "132804",
                                        "quantity": "1",
                                        "price": "0.92",
                                        "lineAmount": "0.92",
                                        "purchaseOrderNumber": "YYYYYY",
                                        "purchaseOrderDescription": ""
                                    },
 {
                                        "lineItemId": "132804_2",
                                        "contractNumber": "YYYYYYY",
                                        "contractLineId": "",
                                        "lineNumber": "1",
                                        "name": "132804",
                                        "description": "132804_2",
                                        "quantity": "1",
                                        "price": "0.95",
                                        "lineAmount": "0.95",
                                        "purchaseOrderNumber": "YYYYYY",
                                        "purchaseOrderDescription": ""
                                    }
                                ]
                            }
                        }
                    }
                }
            ]
        }
    }

推荐答案

尝试使用此脚本:

%dw 2.0
output application/json
---
payload.IntegrationEntities.integrationEntity.integrationEntityDetails.contractUtilization map ((cu, index) -> cu  update {
        case .totalSpendAmount if ($ as Number < 1) -> "0" ++ $
        case .items.item -> $ map {
            ($ update {
                    case .price -> if ( $ as Number < 1 ) "0" ++ $ else $
                    case .lineAmount -> if ( $ as Number < 1 ) "0" ++ $ else $
                })
            }
})

已更新脚本:

方法1

%dw 2.0
output application/json
---


payload update  {
    case .IntegrationEntities.integrationEntity -> $ map {
     ($ update {
            case .integrationEntityDetails.contractUtilization-> $ update {
                        case .totalSpendAmount -> if ($ as Number < 1)  "0" ++ $ else $
                        case .items.item -> $ map ((cuItem,index) -> cuItem  update {
                                            case .price -> if ( $ as Number < 1 ) "0" ++ $ else $
                                            case .lineAmount -> if ( $ as Number < 1 ) "0" ++ $ else $
                })
            }                                                                                                
         }                                                                                                       )}                                                                                                                                      
}

方法2

%dw 2.0
output application/json
---
payload update  {
    case .IntegrationEntities.integrationEntity[0].integrationEntityDetails.contractUtilization-> $ update {
                        case .totalSpendAmount -> if ($ as Number < 1)  "0" ++ $ else $
                        case .items.item -> $ map ((cuItem,index) -> cuItem  update {
                                            case .price -> if ( $ as Number < 1 ) "0" ++ $ else $
                                            case .lineAmount -> if ( $ as Number < 1 ) "0" ++ $ else $
                })
            }                                                                                                
         }

这篇关于几个条目的Dataweave2更新功能不起作用吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆