金蝶云苍穹饼状图样例

涎涎原创约 1217 字大约 4 分钟...KingdeeKingdee

72-金蝶云苍穹饼状图样例.mdopen in new window

注意

本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。

  1. 新建空白页面动态表单

  2. 在其添加柱状图,设置显示标题显示图例且设置宽高为600*400后保存

  1. 编码
package kd.bos.card.plugin;

import java.util.ArrayList;
import java.util.EventObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import kd.bos.form.chart.ItemValue;
import kd.bos.form.chart.Label;
import kd.bos.form.chart.PieChart;
import kd.bos.form.chart.PieSeries;
import kd.bos.form.chart.Position;
import kd.bos.form.plugin.AbstractFormPlugin;

/**
 * <p>Title: </p>
 * <p>
 *    Description:
 * </p>
 * <p>Copyright: Copyright (c) 2020</p>
 * @author xx
 * @date 2020年3月11日
 * @version 1.0
 */
public class PieChartPlugin extends AbstractFormPlugin {

	/**
	 * <p>Title: </p>
	 * <p>
	 *    Description:
	 *    用于存储用例颜色
	 * </p>
	 * <p>Copyright: Copyright (c) 2020</p>
	 * @author xx
	 * @date 2020年3月11日
	 * @param param the bare_field_name
	 * @param e
	 * @see kd.bos.entity.datamodel.events.IDataModelListener#afterCreateNewData(java.util.EventObject)
	 * @version 1.0
	 */
	@Override
	public void afterCreateNewData(EventObject e) {
		// TODO Auto-generated method stub
		super.afterCreateNewData(e);
		this.drawChart();

	}

	/**
	 * void</br>
	 * 
	 * <p>Title: </p>
	 * <p>
	 *    Description:
	 * </p>
	 * <p>Copyright: Copyright (c) 2020</p>
	 * @author xx
	 * @date 2020年3月11日
	 * @param param the bare_field_name
	 * @return the bare_field_name
	 * see_to_overridden
	 * @version 1.0
	 */
	private void drawChart() {
		// TODO Auto-generated method stub
		// 获得饼图控件
		PieChart pieChart = this.getControl("piechartap");
		pieChart.clearData();
		pieChart.setShowTooltip(true);
		pieChart.setMargin(Position.right, "80");
		// 获取需要展示的学校
		List<String> schools = this.getSchools();
		Map<String, ItemValue[]> itemValueMap = this.getProfitData02(schools);
		int schoolsSzie = schools.size();
		int ssIndex = 0;

		String[] percent = this.getPercent(schoolsSzie); // 获取每个学校在图中所占大小比率

		// 遍历得到itemValueMap 将每组数据画一个圆环
		for (String key : itemValueMap.keySet()) {
			System.out.println(key);
			PieSeries series = pieChart.createPieSeries(key);
			series.setRadius(percent[ssIndex++], percent[ssIndex++]); // 设置环的大小

			series = this.setSeriesData(series, itemValueMap.get(key));
			System.out.println(ssIndex);

		}

		// pieChart.setShowTooltip(true);
		pieChart.setShowLegend(true);
		// 设置图例位置
		pieChart.setLegendPropValue("orient", "vertical");
		pieChart.setLegendPropValue("x", "right");
		// pieChart.setLegendPropValue("top", "0");
		// pieChart.setLegendPropValue("itemWidth", 30);
		// pieChart.setLegendPropValue("itemHeight", 30);
	}

	/**
	 * List<String></br>
	 * 
	 * <p>Title: </p>
	 * <p>
	 *    Description:
	 *    获取需要展示的学校
	 * </p>
	 * <p>Copyright: Copyright (c) 2020</p>
	 * @author xx
	 * @date 2020年3月11日
	 * @param param the bare_field_name
	 * @return the bare_field_name
	 * @return
	 * @version 1.0
	 */
	private List<String> getSchools() {
		// TODO Auto-generated method stub
		List<String> schools = new ArrayList<>();
		schools.add("A学校");
		schools.add("B学校");
		schools.add("C学校");
		return schools;
	}

	/**
	 * PieSeries</br>
	 * 
	 * <p>Title: </p>
	 * <p>
	 *    Description:
	 * </p>
	 * <p>Copyright: Copyright (c) 2020</p>
	 * @author xx
	 * @date 2020年3月11日
	 * @param param the bare_field_name
	 * @return the bare_field_name
	 * @param series
	 * @param items
	 * @return
	 * @version 1.0
	 */
	private PieSeries setSeriesData(PieSeries series, ItemValue[] items) {

		// 将数据加到饼图
		series.setData(items);
		// 设置圆中间数
		// pieChart.setName(new LocaleString("¥"+555));

		// 设置label类型
		Label label = new Label();
		// label.setBackgroundColor("#0000FF");
		label.setShow(true);
		label.setFontSize("16");
		label.setFormatter("{a}:{b}");
		// 设置位置为inside
		label.setPosition(Position.inside);
		series.setLabel(label);

		// 设置线类型
		Map<String, Map<String, Boolean>> map02 = new HashMap<String, Map<String, Boolean>>();
		Map<String, Boolean> normalMap02 = new HashMap<String, Boolean>();
		map02.put("normal", normalMap02);
		normalMap02.put("show", Boolean.FALSE);
		series.setPropValue("labelLine", map02);

		Object[] points01 = new Object[] { "50%", "50%" };
		// 设置饼图圆心
		series.setPropValue("center", points01);
		return series;
	}

	/**
	 * Map<String,ItemValue[]></br>
	 * 
	 * <p>Title: </p>
	 * <p>
	 *    Description:
	 *   String:物料名称 ItemValue[]:长宽高数据
	 * </p>
	 * <p>Copyright: Copyright (c) 2020</p>
	 * @author xx
	 * @date 2020年3月11日
	 * @param param the bare_field_name
	 * @return the bare_field_name
	 * @param schools
	 * @return
	 * see_to_overridden
	 * @version 1.0
	 */
	private Map<String, ItemValue[]> getProfitData02(List<String> schools) {

		Map<String, ItemValue[]> resMap = new HashMap<>();

		int schoolsSize = schools.size();
		Map<String, String> cityColor = this.getCityColor(); // 获取身份和颜色的对应值
		ItemValue[] itemValues01 = new ItemValue[3]; // 环中每个元素的值
		itemValues01[0] = new ItemValue("江苏", 120, cityColor.get("江苏"));
		itemValues01[1] = new ItemValue("北京", 250, cityColor.get("北京"));
		itemValues01[2] = new ItemValue("江西", 190, cityColor.get("江西"));
		resMap.put(schools.get(0), itemValues01);

		ItemValue[] itemValues02 = new ItemValue[4]; // 环中每个元素的值
		itemValues02[0] = new ItemValue("山东", 350, cityColor.get("山东"));
		itemValues02[1] = new ItemValue("云南", 420, cityColor.get("云南"));
		itemValues02[2] = new ItemValue("湖南", 446, cityColor.get("湖南"));
		itemValues02[3] = new ItemValue("江西", 140, cityColor.get("江西"));
		resMap.put(schools.get(1), itemValues02);

		ItemValue[] itemValues03 = new ItemValue[5]; // 环中每个元素的值
		itemValues03[0] = new ItemValue("湖南", 170, cityColor.get("湖南"));
		itemValues03[1] = new ItemValue("湖北", 660, cityColor.get("湖北"));
		itemValues03[2] = new ItemValue("广东", 256, cityColor.get("广东"));
		itemValues03[3] = new ItemValue("浙江", 333, cityColor.get("浙江"));
		itemValues03[4] = new ItemValue("四川", 444, cityColor.get("四川"));
		resMap.put(schools.get(2), itemValues03);

		return resMap;

	}

	/**
	 * String[]</br>
	 * 
	 * <p>Title: </p>
	 * <p>
	 *    Description:
	 *    根据学校的数据来分割图形
	 * </p>
	 * <p>Copyright: Copyright (c) 2020</p>
	 * @author xx
	 * @date 2020年3月11日
	 * @param param the bare_field_name
	 * @return the bare_field_name
	 * @param itemValueMapSzie 学校的数目
	 * @return
	 * see_to_overridden
	 * @version 1.0
	 */
	private String[] getPercent(int itemValueMapSzie) {

		int rangeNum = (int) (80 / itemValueMapSzie);
		int temp = 0;
		String per[] = new String[itemValueMapSzie * 2];
		for (int i = 0; i < itemValueMapSzie * 2; i++) {
			per[i] = temp + "%";
			temp += rangeNum;
			i++;
			per[i] = temp + "%";
			temp += 5;
		}
		return per;

	}

	// private String[] color = { "#6112e4", "#0a35b0", "#77b00a", "#ece917",
	// "#ecb217", "#ec6c17", "#df7ee0", "#915dc2",
	// "#7ecfe0", "#06090e", "#e917ec" ,"#5F9EA0","#008B8B","#8FBC8F"};
	/**
	 * Map<String,String></br>
	 * 
	 * <p>Title: </p>
	 * <p>
	 *    Description:
	 *    城市和颜色的对应表
	 * </p>
	 * <p>Copyright: Copyright (c) 2020</p>
	 * @author xx
	 * @date 2020年3月11日
	 * @param param the bare_field_name
	 * @return the bare_field_name
	 * @return
	 * @version 1.0
	 */
	private Map<String, String> getCityColor() {
		Map<String, String> cityColor = new HashMap<>();
		cityColor.put("江苏", "#6112e4");
		cityColor.put("北京", "#0a35b0");
		cityColor.put("江西", "#77b00a");
		cityColor.put("山东", "#ece917");
		cityColor.put("云南", "#ecb217");
		cityColor.put("湖南", "#ec6c17");
		cityColor.put("湖北", "#df7ee0");
		cityColor.put("广东", "#915dc2");
		cityColor.put("浙江", "#7ecfe0");
		cityColor.put("四川", "#06090e");
		return cityColor;
	}
}
  1. 重启服务器后注册插件预览测试,如下图所示测试成功

分割线


相关信息

以上就是我关于 金蝶云苍穹饼状图样例 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。

上次编辑于:
贡献者: 涎涎
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.4