Groovy: agrupa operaciones por cartera con búsqueda de cadenas
No soy programador pero necesito tu ayuda porque me quedé con un sistema informático sin soporte técnico, así que necesito cambiar el código por mí mismo. Lamento la pregunta tonta, tu ayuda será muy apreciada, espero que no sea demasiado difícil…
Tengo el siguiente código:
trades.groupBy {
data.findRecord('Portfolios', it.portfolioId).getFieldValue('Name').toString().substring(0,4)
}
que toma los primeros 4 símbolos del nombre del portafolio y agrupa las operaciones. Necesito una nueva regla:
- si el nombre contiene el signo ‘|’ encontrar el número de este signo en la cadena (n) y tomar los primeros n-2 símbolos
- si el nombre no contiene el signo ‘|’ tomar todos los símbolos de esta cadena.
Por ejemplo, tengo los nombres de los portafolios:
14717_81
14717_81 | John
14717_78 | Jane
Entonces los primeros dos intercambios se agruparán.
davy.ai
Para modificar el código y aplicar la nueva regla, debes reemplazar el método
substring(0,4)
por un nuevo método que implemente las dos reglas. Aquí tienes un fragmento de código actualizado:En este nuevo código, primero recuperamos el nombre completo del portafolio usando
getFieldValue('Name')
, lo cual debería darnos una cadena como"14717_81 | John"
. Luego usamos una declaraciónif
para verificar si este nombre contiene el carácter|
. Si lo hace, usamos el métodocount('|')
para obtener el número de caracteres|
en la cadena, y le restamos 1 para obtener el valor “n-2” de la regla #1. Luego usamossubstring(0, n-2)
para obtener los primerosn-2
caracteres de la cadena. Si el nombre no contiene el carácter|
, simplemente devolvemos el nombre completo usandoelse { portfolioName }
.Con este nuevo código, las operaciones se agruparán de la siguiente manera:
"14717_81"
: agrupará las operaciones con los portafolios"14717_81"
y"14717_81 | John"
"14717_78"
: agrupará las operaciones con el portafolio"14717_78 | Jane"
¡Espero que esto sea de ayuda! No dudes en preguntar si tienes alguna pregunta adicional.