编辑代码

def list = [
            [
                "CF118": [
                    "value": [
                        "value": [
                            [
                                "faultWorkNo": "202310112221724"
                            ]
                        ]
                    ]
                ],
                "expenseTypeCode": [
                    "type": "ExpenseTypeInput",
                    "label": "费用类型",
                    "value": [
                        "text": "测试费用",
                        "businessCode": "",
                        "bizSuffixCode": ""
                    ]
                ],
                "consumeAmount": [
                    "type": "AmountInput",
                    "label": "金额",
                    "value": [
                        "text": "0.00",
                        "currencyCode": "CNY"
                    ]
                ],
                "approvedConsumeAmount": [
                    "type": "AmountInput",
                    "label": "批准收款金额",
                    "value": [
                        "text": "111",
                        "currencyCode": "CNY"
                    ]
                ]
            ],
            [
                "CF119": [
                    "type": "AssociationInput",
                    "label": "Data Connection",
                    "value": [
                        "value": [
                            [
                                "bizCode": 42739,
                                "carModel": "移动48100",
                                "uploadBy": "邹乐",
                                "uploadTime": "2023-10-11 17:00:13",
                                "faultWorkNo": "123213213213",
                                "energyProdNum": "无",
                                "faultWorkDesc": "经检查电池包第4号温感探头温度数据采集异常导致报警",
                                "energyProdName": "无"
                            ]
                        ]
                    ]
                ],   
                "expenseTypeCode": [
                    "type": "ExpenseTypeInput",
                    "label": "费用类型",
                    "value": [
                        "text": "费用",
                        "businessCode": "",
                        "bizSuffixCode": ""
                    ]
                ],
                "consumeAmount": [
                    "type": "AmountInput",
                    "label": "金额",
                    "value": [
                        "text": "0.00",
                        "currencyCode": "CNY"
                    ]
                ],
                "approvedConsumeAmount": [
                    "type": "AmountInput",
                    "label": "批准消费金额",
                    "value": [
                        "text": "222",
                        "currencyCode": "CNY"
                    ]
                ]
            ],
            [
                "CF119": [
                    "type": "AssociationInput",
                    "label": "Data Connection",
                    "value": [
                        "value": [
                            [
                                "bizCode": 42739,
                                "carModel": "移动48100",
                                "uploadBy": "邹乐",
                                "uploadTime": "2023-10-11 17:00:13",
                                "faultWorkNo": "202310112221724",
                                "energyProdNum": "无",
                                "faultWorkDesc": "经检查电池包第4号温感探头温度数据采集异常导致报警",
                                "energyProdName": "无"
                            ]
                        ]
                    ]
                ],   
                "expenseTypeCode": [
                    "type": "ExpenseTypeInput",
                    "label": "费用类型",
                    "value": [
                        "text": "费用",
                        "businessCode": "",
                        "bizSuffixCode": ""
                    ]
                ],
                "consumeAmount": [
                    "type": "AmountInput",
                    "label": "金额",
                    "value": [
                        "text": "0.00",
                        "currencyCode": "CNY"
                    ]
                ],
                "approvedConsumeAmount": [
                    "type": "AmountInput",
                    "label": "批准消费金额",
                    "value": [
                        "text": "333",
                        "currencyCode": "CNY"
                    ]
                ]
            ]
        ]
def map = [
    "测试费用":"CF118",
    "费用":"CF119"
]


def expenseList = []
list.each{
    def value = map.get(it.expenseTypeCode.value.text)
    println value
    if (value!=null){
        def faultWorkNoValue = it.get(value)
        println faultWorkNoValue
        if (faultWorkNoValue!=null){
            def obj = 
        [
            "expenseTypeCode": [
                "label": "费用类型",
                "value": [
                    "businessCode": "",
                    "bizSuffixCode": "",
                    "text": ""
                ]
            ],
            "consumeAmount": [
                "label": "金额",
                "value": [
                    "currencyCode": "CNY",
                    "text": ""
                ]
            ],
            "approvedConsumeAmount": [
                "label": "批准消费金额",
                "value": [
                    "currencyCode": "CNY",
                    "text": ""
                ]
            ],
            "faultWorkNo":""
        ]
            def faultWorkNoObj = faultWorkNoValue.value.value.first()
            obj.expenseTypeCode.value.text = it.expenseTypeCode.value.text
            obj.consumeAmount.value.text = it.consumeAmount.value.text
            obj.approvedConsumeAmount.value.text = it.approvedConsumeAmount.value.text
            obj.faultWorkNo = faultWorkNoObj.faultWorkNo
            expenseList << obj
        }
    }
}

def noList = [];
expenseList.each{
    def findResult = noList.find{item -> item.key==it.faultWorkNo}
    println findResult
    if(findResult==null){
        def noValue = [
            "key":"",
            "value":[]
        ]
        noValue.key=it.faultWorkNo
        noValue.value << it
        noList << noValue
    }else{
        findResult.value << it
    }
}
println noList