Номер версии Parse() с заводным? [P2]
Заранее спасибо!Если это поможет, это мой начальный пост . В качестве входных данных у меня есть этот json:
{
"BidId": "ID1088622222",
"ItemNumber": "4.3.9",
"CodiceNegoziazione": "Doc104222222",
"CreationDate": "Wed, 15 Jun, 2022",
"ProjectId": "WS1042222222",
"ProjectOwner": "Silvia Gani",
"ProjectTitle": "gara import Europa Y2022-2023",
"CompanyCode": "A222 Olivetti",
"PurchasingOrganization": "",
"PurchasingGroup": "",
"PaymentTerms": "",
"Currency": "EUR",
"EventType": "RFP",
"EventOwner": "Silvia Gani",
"EventId": "Doc1042222222",
"EventTitle": "gara Import Europa Y2022-2023",
"SupplierOrgName": "ARCESE",
"SupplierOrgId": "buyersystemid:acm_2222",
"SectionLot": "GERMANIA (Emmer)",
"ItemName": "CAMION COMPLETO (EURO)",
"Type": "Line Item",
"SubmissionDate": "Mon, 4 Jul, 2022",
"Price": "1530",
"Quantity": "1",
"ExtendedPrice": "1530",
"MaterialGroup": "",
"RequestedDeliveryDate": "",
"BidCurrency": "EUR",
"BidExtendedPrice": "1530",
"BidSavings": "0",
"BidPrice": "1530",
"AwardAllocationPercentage": "100"
}
Я хотел бы настроить эту часть кода:
class Version {
int major
Integer minor, patch
@Override String toString() {
return [major, minor, patch].findAll().join('.')
}
}
def parseVersion(String versionString) {
if (!versionString) return null
int[] tokens = versionString.split(/\./).collect { it as int }
return new Version(
major: tokens[0],
minor: tokens.length > 1 ? tokens[1] : null,
patch: tokens.length > 2 ? tokens[2] : null,
)
}
class Payload {
String ItemNumber
}
Payload payload = new Payload(ItemNumber: "2.4")
Version version = parseVersion(payload.ItemNumber?.trim())
printf("Major version : %d%n", version.major)
printf("Minor version : %s%n", version.minor ?: "<UNSET>")
printf("Patch version : %s%n", version.patch ?: "<UNSET>")
printf("Full version : %s%n", version)
В этом заводном скрипте:
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import groovy.json.*
def Message processData(Message message) {
//Body
def body = message.getBody(String.class);
def jsonSlurper = new JsonSlurper()
def list = jsonSlurper.parseText(body)
def ItemNumber = list.get("ItemNumber")
def Price = list.get("Price")
def Quantity = list.get("Quantity")
def ExtendedPrice = list.get("ExtendedPrice")
def BidExtendedPrice = list.get("BidExtendedPrice")
def BidTotalCost = list.get("BidTotalCost")
def BidSavings = list.get("BidSavings")
def BidPrice = list.get("BidPrice")
def RfqItemNumber = list.get("RfqItemNumber")
def AwardAllocationPercentage = list.get("AwardAllocationPercentage")
if (ItemNumber?.trim()){
list.ItemNumber = Double.parseDouble(ItemNumber.toString());
}
if (Price?.trim()){
list.Price = Double.parseDouble(Price.toString());
}
if (Quantity?.trim()){
list.Quantity= Double.parseDouble(Quantity.toString());
}
if (ExtendedPrice?.trim()){
list.ExtendedPrice= Double.parseDouble(ExtendedPrice.toString());
}
if (BidExtendedPrice?.trim()){
list.BidExtendedPrice= Double.parseDouble(BidExtendedPrice.toString());
}
if (BidTotalCost?.trim()){
list.BidTotalCost= Double.parseDouble(BidTotalCost.toString())
}
if (BidSavings?.trim()){
list.BidSavings= Double.parseDouble(BidSavings.toString());
}
if (BidPrice?.trim()){
list.BidPrice= Double.parseDouble(BidPrice.toString());
}
if (RfqItemNumber?.trim() && RfqItemNumber != 'null'){
list.RfqItemNumber= Integer.parseInt(RfqItemNumber.toString());
}else if (RfqItemNumber == 'null'){
list.RfqItemNumber = null
}
if (AwardAllocationPercentage?.trim()){
list.AwardAllocationPercentage= Double.parseDouble(AwardAllocationPercentage.toString());
}
def jsonOP = JsonOutput.toJson(list)
message.setBody(jsonOP)
return message;
}
Цель состоит в том, чтобы проанализировать поле ItemNumber. (Из "ItemNumber": "4.4.5" --> "ItemNumber": 4.4.5)
Желаемый результат:
{"BidId":"ID1088625754","ItemNumber":4.4.5,"CodiceNegoziazione":"Doc1042163109","CreationDate":"Wed, 15 Jun, 2022","ProjectId":"WS1042082696","ProjectOwner":"Silvia Ganio Mego","ProjectTitle":"gara import Europa Y2022-2023","CompanyCode":"A200 Olivetti S.p.A.","PurchasingOrganization":"","PurchasingGroup":"","PaymentTerms":"","Currency":"EUR","EventType":"RFP","EventOwner":"Silvia Ganio Mego","EventId":"Doc1042163109","EventTitle":"gara Import Europa Y2022-2023","SupplierOrgName":"ARCESE TRASPORTI S.P.A.","SupplierOrgId":"buyersystemid:acm_36628101|sap:0000333441|networkid:an01009585103","SectionLot":"GERMANIA (Emmerich)","ItemName":"CAMION COMPLETO (EURO)","Type":"Line Item","SubmissionDate":"Mon, 4 Jul, 2022","Price":1530.0,"Quantity":1.0,"ExtendedPrice":1530.0,"MaterialGroup":"","RequestedDeliveryDate":"","BidCurrency":"EUR","BidExtendedPrice":1530.0,"BidSavings":0.0,"BidPrice":1530.0,"AwardAllocationPercentage":100.0}
Я попытался настроить приведенную выше часть кода в groovy, но все равно получаю "ItemNumber": "4.4.5" . Если я попробую код в groovy ide, он будет работать нормально. Я не настолько знаком со всем этим, не так давно в этой области.