use of com.netsteadfast.greenstep.bsc.command.KpiReportBodyCommand in project bamboobsc by billchen198318.
the class ApiWebServiceImpl method processForScorecard.
private void processForScorecard(BscApiServiceResponse responseObj, HttpServletRequest request, String visionOid, String startDate, String endDate, String startYearDate, String endYearDate, String frequency, String dataFor, String measureDataOrganizationOid, String measureDataEmployeeOid, String contentFlag) throws ServiceException, Exception {
org.apache.commons.chain.Context context = PerformanceScoreChainUtils.getContext(visionOid, startDate, endDate, startYearDate, endYearDate, frequency, dataFor, measureDataOrganizationOid, measureDataEmployeeOid);
ChainResultObj result = PerformanceScoreChainUtils.getResult(context);
if (result.getValue() == null || ((BscStructTreeObj) result.getValue()).getVisions() == null || ((BscStructTreeObj) result.getValue()).getVisions().size() == 0) {
return;
}
// 給 Meter Chart 用的
String meterChartBaseUrl = "";
// 給 BAR Chart 用的
String barChartBaseUrl = "";
// 給 PIE Chart 用的
String pieChartBaseUrl = "";
// 給 HTML 報表用的
String url = "";
if (request != null) {
url = ApplicationSiteUtils.getBasePath(Constants.getSystem(), request);
} else {
url = HostUtils.getHostAddress() + ":" + HostUtils.getHttpPort() + "/" + ApplicationSiteUtils.getContextPath(Constants.getSystem());
}
if (!url.endsWith("/")) {
url += "/";
}
meterChartBaseUrl = url + "bsc.commonMeterChartAction.action";
barChartBaseUrl = url + "bsc.commonBarChartAction.action";
pieChartBaseUrl = url + "bsc.commonPieChartAction.action";
BscStructTreeObj resultObj = (BscStructTreeObj) result.getValue();
KpiReportBodyCommand reportBody = new KpiReportBodyCommand();
reportBody.execute(context);
Object htmlBody = reportBody.getResult(context);
if (htmlBody != null && htmlBody instanceof String) {
String htmlUploadOid = UploadSupportUtils.create(Constants.getSystem(), UploadTypes.IS_TEMP, false, String.valueOf(htmlBody).getBytes(), "KPI-HTML-REPORT.html");
url += "bsc.printContentAction.action?oid=" + htmlUploadOid;
responseObj.setHtmlBodyUrl(url);
}
VisionVO visionObj = resultObj.getVisions().get(0);
// 產生 Meter Chart 資料
for (PerspectiveVO perspective : visionObj.getPerspectives()) {
String perspectiveMeterChartOid = JFreeChartDataMapperUtils.createMeterData(perspective.getName(), perspective.getScore(), this.getMeterChartLowerBound(perspective.getScore(), perspective.getMin()), this.getMeterChartUpperBound(perspective.getScore(), perspective.getTarget()), MeterChart_width, MeterChart_height);
responseObj.getPerspectivesMeterChartUrl().add(meterChartBaseUrl + "?oid=" + perspectiveMeterChartOid);
for (ObjectiveVO objective : perspective.getObjectives()) {
String objectiveMeterChartOid = JFreeChartDataMapperUtils.createMeterData(objective.getName(), (int) objective.getScore(), this.getMeterChartLowerBound(objective.getScore(), objective.getMin()), this.getMeterChartUpperBound(objective.getScore(), objective.getTarget()), MeterChart_width, MeterChart_height);
responseObj.getObjectivesMeterChartUrl().add(meterChartBaseUrl + "?oid=" + objectiveMeterChartOid);
for (KpiVO kpi : objective.getKpis()) {
String kpiMeterChartOid = JFreeChartDataMapperUtils.createMeterData(kpi.getName(), kpi.getScore(), this.getMeterChartLowerBound(kpi.getScore(), kpi.getMin()), this.getMeterChartUpperBound(kpi.getScore(), kpi.getTarget()), MeterChart_width, MeterChart_height);
responseObj.getKpisMeterChartUrl().add(meterChartBaseUrl + "?oid=" + kpiMeterChartOid);
}
}
}
// 產生 Perspectives Bar/Pie chart
String barUploadOid = "";
String pieUploadOid = "";
List<String> names = new LinkedList<String>();
List<Float> values = new LinkedList<Float>();
List<String> colors = new LinkedList<String>();
for (PerspectiveVO perspective : visionObj.getPerspectives()) {
names.add(perspective.getName() + "(" + BscReportSupportUtils.parse2(perspective.getScore()) + ")");
values.add(perspective.getScore());
colors.add(perspective.getBgColor());
}
barUploadOid = JFreeChartDataMapperUtils.createBarData(visionObj.getTitle(), "Score", "", names, values, colors, 480, 280, false);
pieUploadOid = JFreeChartDataMapperUtils.createPieData(visionObj.getTitle(), names, values, colors, 480, 280);
responseObj.setPieChartUrl(pieChartBaseUrl + "?oid=" + pieUploadOid);
responseObj.setBarChartUrl(barChartBaseUrl + "?oid=" + barUploadOid);
PerformanceScoreChainUtils.clearExpressionContentOut(visionObj);
responseObj.setSuccess(YesNo.YES);
if (YesNo.YES.equals(contentFlag)) {
ObjectMapper objectMapper = new ObjectMapper();
String jsonData = objectMapper.writeValueAsString(visionObj);
XStream xstream = new XStream();
xstream.setMode(XStream.NO_REFERENCES);
xstream.alias("vision", VisionVO.class);
xstream.alias("perspective", PerspectiveVO.class);
xstream.alias("objective", ObjectiveVO.class);
xstream.alias("kpi", KpiVO.class);
xstream.alias("measureData", BbMeasureData.class);
xstream.alias("dateRangeScore", DateRangeScoreVO.class);
xstream.alias("employee", EmployeeVO.class);
xstream.alias("organization", OrganizationVO.class);
String xmlData = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + xstream.toXML(visionObj);
responseObj.setOutJsonData(jsonData);
responseObj.setOutXmlData(xmlData);
}
}
Aggregations