📄 pptaskganttchartservlet.java
字号:
package com.cmmi2pms.chart;
/*
import com.chinaspis.future.dao.Project;
import com.chinaspis.future.domain.TaskCategory;
import com.chinaspis.future.domain.TaskFactory;
*/
import java.util.StringTokenizer;
import java.awt.*;
import java.util.*;
import javax.servlet.http.*;
import org.jfree.chart.*;
import org.jfree.chart.axis.Axis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.Plot;
import org.jfree.data.DefaultPieDataset;
import org.jfree.data.IntervalCategoryDataset;
import org.jfree.data.gantt.*;
import org.jfree.data.time.SimpleTimePeriod;
import com.cmmi2pms.common.DateOp;
import org.apache.log4j.Logger;
class Node
{
private String idlist;
private int selfId;
public Node( String s, int n )
{
idlist = s;
selfId = n;
}
public String getIdlist()
{
return idlist;
}
public int getSelfId()
{
return selfId;
}
}
public class PPTaskGanttChartServlet extends GenericChartServlet
{
private String title;
private int width;
private int height;
private static final String xLabel = null;
private static final String yLabel = null;
private static Logger logger = Logger.getLogger ("PPTaskGanttChartServlet") ;
private DateOp dop;
public PPTaskGanttChartServlet()
{
title = "任务进度计划";
width = 700;
height = 525;
}
public IntervalCategoryDataset getGanttDataset(HttpServletRequest request, HttpServletResponse response)
{
// Project project = (Project)request.getSession().getAttribute("future.project");
TaskSeries s1 = new TaskSeries("计划进度");
com.cmmi2pms.pp.task.Task taskitem = new com.cmmi2pms.pp.task.Task() ;
com.cmmi2pms.pp.process.Process proc=new com.cmmi2pms.pp.process.Process();
String taskIdStr = request.getParameter("taskid");
int taskid = Integer.valueOf(taskIdStr).intValue();
taskitem.loadTask( taskid );//默认root是1
proc.getTaskInfo(taskid);
String subtaskid = proc.getSubTask();
//待处理的子节点列表栈
ArrayList sub = new ArrayList();
sub.clear();
sub.add( new Node(subtaskid,taskid) );
int count = 1;
while( !sub.isEmpty() )
{
Node sn=(Node)sub.get(0);
String top = sn.getIdlist();
int id=sn.getSelfId();
taskitem.loadTask( id );
//proc.getTaskInfo(taskid);
logger.debug("The start time is "+taskitem.getPlanStart().toString());
logger.debug("The start time is "+taskitem.getPlanEnd().toString());
Task rootTask = new Task( taskitem.getTaskName(),
new SimpleTimePeriod( dop.getDate( taskitem.getPlanStart() ),
dop.getDate(taskitem.getPlanEnd())
)
);
StringTokenizer st = new StringTokenizer(top,",");
st.nextToken();
String tmpid;
while(st.hasMoreTokens())
{
tmpid = st.nextToken(",");
logger.debug("The tmpid is "+tmpid);
if(tmpid.length()==0)
{
break;
}
taskitem = new com.cmmi2pms.pp.task.Task() ;
taskitem.loadTask(Integer.valueOf(tmpid).intValue());
logger.debug("The start time is "+taskitem.getPlanStart().toString());
logger.debug("The start time is "+taskitem.getPlanEnd().toString());
Task tmpTask = new Task( taskitem.getTaskName(),
new SimpleTimePeriod( dop.getDate( taskitem.getPlanStart() ),
dop.getDate(taskitem.getPlanEnd())
)
);
rootTask.addSubtask( tmpTask );
count++;
proc.getTaskInfo(Integer.valueOf(tmpid).intValue());
sub.add( new Node(proc.getSubTask(), proc.getTaskId() ) );
}
s1.add( rootTask );
sub.remove(0);
} //所有的节点已经遍历过,在s1中有所有的列表
TaskSeriesCollection collection = new TaskSeriesCollection();
collection.add(s1);
// System.out.println(root.getRecursiveCategoryCount());
height = count * 15 + 100;
return collection;
}
/*
private static Date date(int day, int month, int year)
{
Calendar calendar = Calendar.getInstance();
calendar.set(year, month, day);
Date result = calendar.getTime();
return result;
}
*/
public DefaultPieDataset getPieDataset(HttpServletRequest request, HttpServletResponse response)
{
return null;
}
public int getWidth()
{
return width;
}
public int getHeight()
{
return height;
}
protected JFreeChart getChart(HttpServletRequest request, HttpServletResponse response)
{
title = "Gantt图";
JFreeChart chart = ChartFactory.createGanttChart(title, yLabel, xLabel, getGanttDataset(request, response), true, false, false);
chart.setBackgroundPaint(new GradientPaint(0.0F, 0.0F, Color.white, 0.0F, 1000F, Color.orange));
Font font = new Font("黑体", 0, 12);
StandardLegend legend = (StandardLegend)chart.getLegend();
legend.setItemFont(font);
CategoryPlot plot = (CategoryPlot)chart.getPlot();
plot.setForegroundAlpha(0.9F);
org.jfree.chart.axis.CategoryAxis domain_axis = plot.getDomainAxis();
domain_axis.setTickLabelFont(font);
org.jfree.chart.axis.ValueAxis value_axis = plot.getRangeAxis();
value_axis.setTickLabelFont(font);
return chart;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -