rsbi 4 years ago
parent
commit
d328f0cc19

+ 20 - 10
src/main/java/com/ruisitech/bi/service/bireport/ChartService.java

@@ -289,21 +289,25 @@ public class ChartService extends BaseCompService {
 		//第二个指标
 		if(chart.getKpiJson().size() > 1){
 			KpiDto sinfo = chart.getKpiJson().get(1);
-			if(sinfo.getFmt() != null && sinfo.getFmt().length() > 0){
-				sql.append("'"+sinfo.getFmt()+"' kpi_fmt2,");
-			}
-			if(sinfo.getUnit() != null && sinfo.getUnit().length() > 0){
-				sql.append("'" +sinfo.getUnit()+"' kpi_unit2,");
+			if(sinfo != null) {
+				if (sinfo.getFmt() != null && sinfo.getFmt().length() > 0) {
+					sql.append("'" + sinfo.getFmt() + "' kpi_fmt2,");
+				}
+				if (sinfo.getUnit() != null && sinfo.getUnit().length() > 0) {
+					sql.append("'" + sinfo.getUnit() + "' kpi_unit2,");
+				}
 			}
 		}
 		//第三个指标
 		if(chart.getKpiJson().size() > 2){
 			KpiDto sinfo = chart.getKpiJson().get(2);
-			if(sinfo.getFmt() != null && sinfo.getFmt().length() > 0){
-				sql.append("'"+sinfo.getFmt()+"' kpi_fmt3,");
-			}
-			if(sinfo.getUnit() != null && sinfo.getUnit().length() > 0){
-				sql.append("'" +sinfo.getUnit()+"' kpi_unit3,");
+			if(sinfo != null) {
+				if (sinfo.getFmt() != null && sinfo.getFmt().length() > 0) {
+					sql.append("'" + sinfo.getFmt() + "' kpi_fmt3,");
+				}
+				if (sinfo.getUnit() != null && sinfo.getUnit().length() > 0) {
+					sql.append("'" + sinfo.getUnit() + "' kpi_unit3,");
+				}
 			}
 		}
 		
@@ -313,6 +317,9 @@ public class ChartService extends BaseCompService {
 		}else{
 			for(int i=0; i<kpis.size(); i++){
 				KpiDto kpi = kpis.get(i);
+				if(kpi == null){
+					continue;
+				}
 				if(kpi.getCalc() != null && kpi.getCalc() == 1){  //表达式,直接取表达式
 					sql.append(kpi.getCol_name() + " ");
 				}else{  //获取字段别名
@@ -456,6 +463,9 @@ public class ChartService extends BaseCompService {
 		//处理指标过滤
 		StringBuffer filter = new StringBuffer("");
 		for(KpiDto kpi : chart.getKpiJson()){
+			if(kpi == null){
+				continue;
+			}
 			if(kpi.getFilter() != null){
 				filter.append(" and "+kpi.getCol_name()+" ");
 				String tp = kpi.getFilter().getFilterType();

+ 17 - 7
src/main/java/com/ruisitech/bi/web/bireport/ChartController.java

@@ -7,6 +7,7 @@ import com.ruisitech.bi.entity.bireport.ChartQueryDto;
 import com.ruisitech.bi.service.bireport.ChartService;
 import com.ruisitech.bi.util.BaseController;
 import com.ruisitech.bi.util.CompPreviewService;
+import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Controller;
@@ -26,17 +27,26 @@ public class ChartController extends BaseController  {
 	@Autowired
 	private ChartService chartService;
 
+	private static Logger logger = Logger.getLogger(TableController.class);
+
 	@RequestMapping(value="/ChartView.action", method = RequestMethod.POST)
 	public @ResponseBody
     Object chartView(@RequestBody ChartQueryDto chartJson, HttpServletRequest req, HttpServletResponse res) throws Exception {
 		ExtContext.getInstance().removeMV(ChartService.deftMvId);
 		MVContext mv = chartService.json2MV(chartJson, false);
-		
-		CompPreviewService ser = new CompPreviewService(req, res, req.getServletContext());
-		//ser.setParams(tableService.getMvParams());
-		ser.initPreview();
-		String ret = ser.buildMV(mv, req.getServletContext());
-		JSONObject obj = JSONObject.parseObject(ret);
-		return super.buildSucces(obj);
+		try {
+			CompPreviewService ser = new CompPreviewService(req, res, req.getServletContext());
+			//ser.setParams(tableService.getMvParams());
+			ser.initPreview();
+			String ret = ser.buildMV(mv, req.getServletContext());
+			JSONObject obj = JSONObject.parseObject(ret);
+			if(obj.get("result") != null && obj.getInteger("result") == 500){
+				return super.buildError(obj.getString("msg"));
+			}
+			return super.buildSucces(obj);
+		}catch (Exception ex){
+			logger.error("图形展现出错", ex);
+			return super.buildError(ex.getMessage());
+		}
 	}
 }