Customisable Report Rendering

Problem Statement

Submitted By: Jed Dayo & team

Meet The Team

Mirko Sciachero

Jed Dayo

Arindam Mazumdar

Mai Goa Truong

Typical Report Software

Problems

Our Solution

Advantage of our Solution

High Level Architecture

Web Template Manager View

Web Template Manager (Tech Stack)

ReactJs

Java based solution

easy to deploy

usually compliant with banks

lightweight

easy to learn

well maintained

flexible

scalable

fast

Report Service

Report Service (Tech Stack)

Java based solution

easy to deploy

usually compliant with banks

xls support

support for majority

of styles

well maintained

faster than jackson

Jsoniter

Sample Template

Expressions ${}

  • Object Expression - ${Client Details:clientCode1}
  • Row Function Expression - ${row(assetCode#Asset NAV Details:assetCode)}
  • Divide Function Expression - ${divide(J9,J12)}
  • Total Column Function Expression - ${totalCol(L9)}
  • Sum Function Expression - ${sum(D17,D18)}
  • Reference Function Expression - ${ref(D17)}
  • Total Function Expression - ${total(NAV Details:clientContribution)}
  • Total Negative Function Expression - ${totalNegative(NAV Details:netIncreaseDecrease)}

Template Json

{
  "name": "simplereport",
  "description": "simplereport",
  "format": "xls",
  "sheets": [
    {
      "index": 0,
      "name": "Holdings",
      "rows": [
        {
          "styles": {},
          "rowNum": 0,
          "originalRowNum": 0,
          "columns": [
            {
              "styles": {
                "fillForegroundColorColor": "62",
                "fillPatternType": "SOLID_FOREGROUND",
                "topBorderColor": "64",
                "dataFormatString": "yyyymmdd",
                "bottomBorderColor": "64",
                "bold": "true",
                "fillBackgroundColorColor": "64",
                "borderTop": "THIN",
                "italic": "false",
                "borderLeft": "THIN",
                "rightBorderColor": "9",
                "shrinkToFit": "false",
                "fontFamily": "Arial",
                "leftBorderColor": "64",
                "borderRight": "THIN",
                "fontHeight": "220",
                "alignment": "CENTER",
                "borderBottom": "NONE",
                "wrapText": "false",
                "verticalAlignment": "CENTER",
                "fontColor": "9"
              },
              "value": "Position Date",
              "col": 0,
              "originalCol": 0,
              "lastRowNum": 0,
              "arrayFormulaRange": null,
              "cellFormula": null,
              "cellComment": null,
              "columnWidth": 4949,
              "templateRow": null,
              "rendered": false
            },
          ]
        },
        {
          "styles": {
            "fillForegroundColorColor": "64",
            "fillPatternType": "NO_FILL",
            "topBorderColor": "0",
            "dataFormatString": "General",
            "bottomBorderColor": "0",
            "bold": "false",
            "fillBackgroundColorColor": "64",
            "borderTop": "NONE",
            "italic": "false",
            "borderLeft": "NONE",
            "rightBorderColor": "0",
            "shrinkToFit": "false",
            "fontFamily": "Arial",
            "leftBorderColor": "0",
            "borderRight": "NONE",
            "fontHeight": "220",
            "alignment": "GENERAL",
            "borderBottom": "NONE",
            "wrapText": "false",
            "verticalAlignment": "CENTER",
            "fontColor": "8"
          },
          "rowNum": 1,
          "originalRowNum": 1,
          "columns": [
            {
              "styles": {
                "fillForegroundColorColor": "64",
                "fillPatternType": "NO_FILL",
                "topBorderColor": "64",
                "dataFormatString": "General",
                "bottomBorderColor": "64",
                "bold": "false",
                "fillBackgroundColorColor": "64",
                "borderTop": "THIN",
                "italic": "false",
                "borderLeft": "THIN",
                "rightBorderColor": "64",
                "shrinkToFit": "false",
                "fontFamily": "Arial",
                "leftBorderColor": "64",
                "borderRight": "THIN",
                "fontHeight": "220",
                "alignment": "CENTER",
                "borderBottom": "THIN",
                "wrapText": "false",
                "verticalAlignment": "CENTER",
                "fontColor": "32767"
              },
              "value": "${colArr(SIMPLE_REPORT:positionDate)}",
              "col": 0,
              "originalCol": 0,
              "lastRowNum": 0,
              "arrayFormulaRange": null,
              "cellFormula": null,
              "cellComment": null,
              "columnWidth": 4949,
              "rendered": false
            }
          ]
        }
      ],
      "mergeRegions": [],
      "fitToPage": true,
      "displayGuts": false,
      "displayGridlines": true,
      "defaultColumnWidth": 10,
      "printGridlines": false
    }
  ]
}

Demo

https://jesus-dayo-zuhlke-com.solutions.apixplatform.com/

PERFORMANCE - SIMPLE REPORT

PERFORMANCE - COMPLEX REPORT

STRESS TEST

10 users - 226 requests

Thank you for Listening

gsengage

By Jed Dayo

gsengage

  • 108