`
miaoge
  • 浏览: 109305 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类

【HRMS】JfreeChar创建数据统计图表、柱状图、饼状图···

阅读更多

JfreeChar创建人力资源管理系统数据统计图表

  导入下面的包

 

import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

import com.opensymphony.xwork2.ActionSupport;
import com.wepull.hrms.biz.ChannelBiz;
import com.wepull.hrms.biz.DataCountBiz;
import com.wepull.hrms.dto.ChannelDto;
import com.wepull.hrms.dto.ChannelTypeDto;

/**
 * 数据统计模块action层
 * @author $KangMiao$
 */
public class DataCountAction extends ActionSupport{
	
	private DataCountBiz dataCountBiz = null;
	private ChannelBiz channelBiz = null;

	public void setDataCountBiz(DataCountBiz dataCountBiz) {
		this.dataCountBiz = dataCountBiz;
	}
	
	public void setChannelBiz(ChannelBiz channelBiz) {
		this.channelBiz = channelBiz;
	}
	
	/*******************************************************/
	private List<ChannelDto> channelList = new ArrayList<ChannelDto>();
	public List<ChannelTypeDto> typeList = new ArrayList<ChannelTypeDto>();
	private ChannelDto channelDto = new ChannelDto();
	
	/**统计某渠道 某种状态的简历数*/
	public String channelCount() throws IOException{
		typeList = channelBiz.findChannelType();
		List<ChannelDto> list = channelBiz.findChannel();
		int resumeCount=0,num1=0,num2=0,num3=0,num4=0,num5=0;
		if(channelList.size()!=0) channelList.clear();
		for ( ChannelDto dto: list) {
			resumeCount = dataCountBiz.countChannelResume(dto.getId());  //某渠道简历总数
			num1 = dataCountBiz.countResumeView(dto.getId(), 2);    //基本合格数
			num2 = dataCountBiz.countResumeView(dto.getId(), 3);    //专员面试合格数
			num3 = dataCountBiz.countResumeView(dto.getId(), 4);    //需求负责任面试合格数
			num4 = dataCountBiz.countResumeView(dto.getId(), 5);    //客户面试合格数
			num5 = dataCountBiz.countResumeView(dto.getId(), 6);    //实际到岗人数
			int[] count = new int[6];
			count[0] = resumeCount;
			count[1] = num1;
			count[2] = num2;
			count[3] = num3;
			count[4] = num4;
			count[5] = num5;
			dto.setCount(count);
			channelList.add(dto);
		}
		barChar();
		return SUCCESS;
	}
	/**生成渠道类型简历数据统计柱状图*/ 
	public void barChar() throws IOException{
		CategoryDataset dataset = getDataSet();
		JFreeChart chart = ChartFactory.createBarChart3D(
							"渠道类型简历数据统计图", // 图表标题
							"渠道类型", // 目录轴的显示标签
							"简历数量", // 数值轴的显示标签
							dataset, // 数据集
							PlotOrientation.VERTICAL, // 图表方向:水平、垂直
							true, 	// 是否显示图例(对于简单的柱状图必须是false)
							false, 	// 是否生成工具
							false 	// 是否生成URL链接
							);
							
		FileOutputStream fos_jpg = null;
		try {
			String projectRealPath= ServletActionContext.getServletContext().getRealPath("/");   //获得工程路径
			String imagePath = projectRealPath+"images/dataCount.jpg";
			System.out.println("图片路径3:-----------------------"+imagePath);
			fos_jpg = new FileOutputStream(imagePath);
			ChartUtilities.writeChartAsJPEG(fos_jpg,1,chart,900,400,null);
		} finally {
			try {
				fos_jpg.close();
			} catch (Exception e) {}
		}
	}
	
	/**统计渠道类别的简历数据*/
	public CategoryDataset getDataSet(){
		String[] typeName = {"合作伙伴","培训公司","招聘网","猎头公司","高等院校","中介公司","其他"};
		String[] dataName = {"简历总数","基本合格","专员面试合格","需求面试合格","客户面试合格","实际到岗人数"};
		int[] type1 = {0,0,0,0,0,0};   //合作伙伴类型
		int[] type2 = {0,0,0,0,0,0};   //培训公司类型
		int[] type3 = {0,0,0,0,0,0};   //招聘网类型
		int[] type4 = {0,0,0,0,0,0};   //猎头公司类型
		int[] type5 = {0,0,0,0,0,0};   //高等院校类型
		int[] type6 = {0,0,0,0,0,0};   //中介公司类型
		int[] type7 = {0,0,0,0,0,0};   //其他类型
		for (ChannelDto dto : channelList) {
			if (dto.getChannelTypeId() != null) {
				// 获得合作伙伴类型的数据
				if (dto.getChannelTypeId() == 3) {
					type1 = getData(type1, dto);
				}
				// 获得培训公司类型的数据
				else if (dto.getChannelTypeId() == 4) {
					type2 = getData(type2, dto);
				}
				// 获得招聘网类型的数据
				else if (dto.getChannelTypeId() == 22) {
					type3 = getData(type3, dto);
				}
				// 获得中介公司类型的数据
				else if (dto.getChannelTypeId() == 39) {
					type4 = getData(type4, dto);
				}
				// 获得猎头公司类型的数据
				else if (dto.getChannelTypeId() == 23) {
					type5 = getData(type5, dto);
				}
				// 获得高等院校类型的数据
				else if (dto.getChannelTypeId() == 37) {
					type6 = getData(type6, dto);
				}
				// 获得其他类型的数据
				else if (dto.getChannelTypeId() == 41) {
					type7 = getData(type7, dto);
				}
			}
		}
		//生成柱状图
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		dataset = setData(dataset,type1,typeName[0],dataName);
		dataset = setData(dataset,type2,typeName[1],dataName);
		dataset = setData(dataset,type3,typeName[2],dataName);
		dataset = setData(dataset,type4,typeName[3],dataName);
		dataset = setData(dataset,type5,typeName[4],dataName);
		dataset = setData(dataset,type6,typeName[5],dataName);
		dataset = setData(dataset,type7,typeName[6],dataName);
		return dataset;
	}
	
	/**获得渠道类型的各种数据*/
	public int[] getData(int[] type,ChannelDto dto){
		type[0]=type[0]+dto.getCount()[0]; //获得简历总数
		type[1]=type[1]+dto.getCount()[1]; //获得基本合格数
		type[2]=type[2]+dto.getCount()[2]; //获得专员面试合格数
		type[3]=type[3]+dto.getCount()[3]; //获得需求负责任面试合格数
		type[4]=type[4]+dto.getCount()[4]; //获得客户面试合格数
		type[5]=type[5]+dto.getCount()[5]; //获得实际到岗人数
		return type;
	}
	
	public  DefaultCategoryDataset setData(DefaultCategoryDataset dataset,int[] type,
			String typeName,String[] dataName) {
		dataset.addValue(type[0], dataName[0], typeName);
		dataset.addValue(type[1], dataName[1], typeName);
		dataset.addValue(type[2], dataName[2], typeName);
		dataset.addValue(type[3], dataName[3], typeName);
		dataset.addValue(type[4], dataName[4], typeName);
		dataset.addValue(type[5], dataName[5], typeName);
		return dataset;
	}
	
	public static String fomat(float num){
		DecimalFormat df = new DecimalFormat("XXXX.0");
		System.out.println(df.format(num));
		return df.format(num);
	}
	
	/**查询某时间段渠道简历数*/
	public String findByTime() throws IOException{
		HttpServletRequest request = ServletActionContext.getRequest();
	      //判断 页面传的条件 
		String beginTime = request.getParameter("beginTime");
		String endTime = request.getParameter("endTime");
		typeList = channelBiz.findChannelType();
		List<ChannelDto> list = channelBiz.findChannel();
		int resumeCount=0,num1=0,num2=0,num3=0,num4=0,num5=0;
		if(channelList.size()!=0) channelList.clear();
		for ( ChannelDto dto: list) {
			resumeCount = dataCountBiz.countChannelTime(dto.getId(), beginTime, endTime); //某时间段渠道简历总数
			num1 = dataCountBiz.countByTime(dto.getId(), 2, beginTime, endTime);    //基本合格数
			num2 = dataCountBiz.countByTime(dto.getId(), 3, beginTime, endTime);    //专员面试合格数
			num3 = dataCountBiz.countByTime(dto.getId(), 4, beginTime, endTime);    //需求负责任面试合格数
			num4 = dataCountBiz.countByTime(dto.getId(), 5, beginTime, endTime);    //客户面试合格数
			num5 = dataCountBiz.countByTime(dto.getId(), 6, beginTime, endTime);    //实际到岗人数
			int[] count = new int[6];
			count[0] = resumeCount;
			count[1] = num1;
			count[2] = num2;
			count[3] = num3;
			count[4] = num4;
			count[5] = num5;
			dto.setCount(count);
			channelList.add(dto);
		}
		request.setAttribute("beginTime", beginTime);
		request.setAttribute("endTime", endTime);
		barChar();
		return "data";
	}
	
	
	
	/************************************/
	public ChannelDto getChannelDto() {
		return channelDto;
	}
	public void setChannelDto(ChannelDto channelDto) {
		this.channelDto = channelDto;
	}
	public List<ChannelDto> getChannelList() {
		return channelList;
	}
	public void setChannelList(List<ChannelDto> channelList) {
		this.channelList = channelList;
	}
}

 

分享到:
评论

相关推荐

    HRMS.rar_HRms一_工资 统计_财务

    《HRMS:一体化人力资源管理与工资统计的利器》 在当今的企业管理中,人力资源(HR)扮演着至关重要的角色,而高效的人力资源管理系统(HRMS)更是企业提升管理效率的关键工具。HRMS,全称Human Resource Management ...

    数据库+hrms oracle数据库

    在HRMS(人力资源管理系统)中,Oracle数据库通常用于存储员工信息、薪酬数据、考勤记录、福利计划等关键人力资源数据。 HRMS系统是一种集成的软件解决方案,旨在自动化和优化人力资源相关的流程。Oracle数据库作为...

    人力资源管理系统HRMS

    在软件设计阶段,Rational Rose 2007是一款强大的UML(统一建模语言)工具,它支持多种图表的绘制,包括类图、用例图、状态图和顺序图。这些图像是系统设计的重要载体,它们直观地描绘了系统的需求、结构和行为。 ...

    HRMS.zip_HRMS

    8. **报表与分析**:HRMS系统往往具备数据分析功能,能生成各类报表,如员工统计报告、薪资分析、离职率分析等,帮助企业决策者洞察人力资源状况,制定策略。 9. **持续更新与维护**:HRMS是一个持续演进的系统,...

    HRMS.zip_HRMS_hrms jsp_jsp and hrms_project

    【标题】"HRMS.zip_HRMS_hrms jsp_jsp and hrms_project" 提供了一个关于企业人力资源管理系统(HRMS)的项目,这个系统基于JSP(JavaServer Pages)技术构建。HRMS是一个用于管理公司员工信息、招聘、薪酬、绩效等...

    人力资源管理系统HRMS实践报告.pdf

    * 数据库设计:HRMS系统需要一个强大的数据库来存储和管理人力资源相关的数据,包括员工信息、薪资信息、培训信息、绩效信息等。 * 软件编程实现:HRMS系统需要一个强大的软件平台来实现人力资源管理的自动化和智能...

    hrms.rar_jsp and hrms

    - "hrms.mdf" 文件是主数据文件,包含了数据库的实际数据和结构信息。它是SQL Server数据库的主要部分,存储了所有的表、视图、索引和其他数据库对象。 使用这样的数据库文件,开发者可以进行系统测试、数据分析...

    HRMS.rar_hrms program

    3. 考勤管理:记录员工的出勤情况,包括迟到、早退、请假等,便于统计考勤数据,计算工资。 4. 培训与发展:系统可以追踪员工的培训记录,规划个人发展路径,为绩效评估和晋升决策提供依据。 5. 绩效管理:设定...

    SSM_HRMS-master.zip

    SSM_HRMS-master.zip是一个压缩包文件,其中包含了基于Spring、Spring MVC和MyBatis框架开发的一个完整的HRMS(人力资源管理系统)项目。这个系统主要实现了CRUD(创建、读取、更新、删除)功能,是Java Web开发中的...

    HRMS.rar_HRMS

    《HRMS:人力资源管理系统详解与应用》 HRMS(Human Resource Management System)是企业信息化建设中的重要组成部分,它集成了人力资源管理的多个模块,旨在提高人力资源管理效率,优化企业内部流程。本压缩包文件...

    HRMS.rar_HRMS_人力

    2. **数据库连接**:Java的JDBC(Java Database Connectivity)API使得与各种数据库(如MySQL、Oracle等)的交互变得简单,确保了HRMS的数据存储和检索能力。 3. **企业级框架**:Spring框架提供了依赖注入、事务...

    HRMS.zip_HRMS_企业管理

    最后,HRMS还提供了数据分析功能,帮助企业从海量的人力资源数据中提取有价值的信息,进行人力资源规划,预测人才需求,制定更科学的招聘策略。这为企业战略决策提供了有力的数据支持。 综上所述,HRMS不仅是企业...

    hrms.rar_HRMS_hrms p_hrms.p_人事

    系统中的"hrms.p"可能是程序的主要入口或核心处理部分,而"hrms_p"可能表示该系统的特定版本或模块。 从压缩包内的文件名我们可以推测出系统的结构和功能。"fieldsetting"可能涉及到字段设置或配置,这是系统初始化...

    hrms.zip_HRMS

    5. **数据库脚本**:HRMS系统通常会涉及到员工数据、部门信息、考勤记录、薪酬管理等多个模块,因此可能包含SQL脚本,用于创建和初始化数据库表结构。 6. **部署相关文件**:如WAR(Web Archive)文件,这是Java ...

    HRMS.rar_HRMS_人力资源_明日

    1. 数据库脚本:用于创建和维护HRMS所需的数据表。 2. 用户界面(UI)文件:包括HTML、CSS和JavaScript,用于构建用户友好的交互界面。 3. 后端代码:通常使用如Java、Python、C#等编程语言编写,处理业务逻辑和...

    Oracle HRMS常用接口开发与项目实践

    ### Oracle HRMS常用接口开发与项目实践 #### 文档概述 本文档主要聚焦于Oracle HRMS(Human Resource Management System)的常用接口开发及其在实际项目中的应用实践。Oracle HRMS作为一套全面的人力资源管理系统...

    EBS HR 绩效数据图

    综上所述,"EBS HR 绩效数据图"是Oracle HRMS系统中的一个强大工具,它将复杂的绩效管理数据转化为直观的图形,有助于企业更好地管理和提升员工绩效。通过分析这些数据图,企业可以发现潜在的问题,制定相应的激励...

    GTC.HRMS-9.0考勤软件使用说明书

    《GTC.HRMS-9.0考勤软件使用说明书》是针对GTC.HRMS 9.0版本考勤管理系统的详细指南,旨在帮助用户理解并熟练掌握该软件的各项功能和操作流程。本说明书采用HTML和Word两种格式提供,方便用户在不同设备和环境下阅读...

    HRMS.zip_HRMS_zip

    HRMS的实施不仅可以提升人力资源部门的工作效率,还能通过数据分析帮助企业了解人力资源状况,优化人力资源配置,降低人力成本,提升整体竞争力。因此,选择一款适合企业规模和需求的HRMS至关重要,需要考虑系统的...

Global site tag (gtag.js) - Google Analytics