Нули на левой панели с проверкой длины в муле 4 - PullRequest
1 голос
/ 09 января 2020
<LineProcessInfo>
  <LineRefTextField1>JPY</LineRefTextField1>
  <LineRefTextField2>[MW09449_ _048]</LineRefTextField2>
  <LineRefTextField3>[00_L]</LineRefTextField3>
  <LineRefTextField4></LineRefTextField4>
  <LineRefTextField5>AS LAMBSWOOL VNECK</LineRefTextField5>
  <LineRefTextField6>Jet Black Heath</LineRefTextField6>
  <LineRefTextField7></LineRefTextField7>
  <LineRefTextField8>WH01</LineRefTextField8>
  <LineRefTextField9></LineRefTextField9>
  <LineRefTextField10></LineRefTextField10>
  <LineRefNumberField1></LineRefNumberField1>
  <LineRefNumberField2></LineRefNumberField2>
  <LineRefNumberField3>22</LineRefNumberField3>
  <LineRefNumberField4></LineRefNumberField4>
  <LineRefNumberField5></LineRefNumberField5>
</LineProcessInfo> 

значение: if (LineItem.LineProcessInfo.LineRefNumberField3! = Null) (LineItem.LineProcessInfo.LineRefNumberField3) else ""

Для LineRefNumberField3 длина должна быть 5, а если она меньше 5, то нули площадок Слева, мне нужно получить 00022, Пожалуйста, предложите, как этого добиться.

1 Ответ

1 голос
/ 09 января 2020

Вы можете использовать leftPad, как описано в https://docs.mulesoft.com/mule-runtime/4.2/dw-strings-functions-leftpad

Пример кода ниже:

%dw 2.0
output application/json

import * from dw::core::Strings

var payload = read("<LineProcessInfo><LineRefTextField1>JPY</LineRefTextField1>
          <LineRefTextField2>[MW09449_ _048]</LineRefTextField2>
          <LineRefTextField3>[00_L]</LineRefTextField3>
          <LineRefTextField4></LineRefTextField4>
          <LineRefTextField5>AS LAMBSWOOL VNECK</LineRefTextField5>
          <LineRefTextField6>Jet Black Heath</LineRefTextField6>
          <LineRefTextField7></LineRefTextField7>
          <LineRefTextField8>WH01</LineRefTextField8>
          <LineRefTextField9></LineRefTextField9>
          <LineRefTextField10></LineRefTextField10>
          <LineRefNumberField1></LineRefNumberField1>
          <LineRefNumberField2></LineRefNumberField2>
          <LineRefNumberField3>22</LineRefNumberField3>
          <LineRefNumberField4></LineRefNumberField4>
          <LineRefNumberField5></LineRefNumberField5>
        </LineProcessInfo>", "application/xml")
---

{
    LineRefNumberField3: leftPad(payload.LineProcessInfo.LineRefNumberField3, 5, "0") default ""
}

Редактировать: При использовании Mule Runtime v4.1.x

(payload.LineProcessInfo.LineRefNumberField3 as Number default "") as String {format : "00000"}
...