📄 task.java
字号:
/*
* Created on 2004-4-14
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package com.cmmi2pms.pp.task;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.log4j.Logger;
import java.util.*;
import java.util.StringTokenizer;
import com.cmmi2pms.common.comdb.*;
/**
* <p>This is a bean,which describ a task.Using it,you can get a task informination,
* or insert a new task into the db's table.
* @author xunzy
* @version 0.01
*/
public class Task
{
private int projectId;//项目编号
private int taskId;//任务/子任务编号
private String taskName;//任务/子任务名
private String planStart;//计划起始时间
private String planEnd;//计划结束时间
private String realStart;//实际开始时间
private String realEnd;//实际结束时间
private String formerTask;//前置子任务,对于任务没有前置,只有子任务有前置任务
private String wsbId;//WBS码,格式待定,为方便分析
private boolean isLandMask;//是否里程碑
private int managerId;//负责人
private int taskLoad;//工作量(人天)
private String harves;//成果,在该任务、子任务结束填写
private String desc;//备注
private String layer;
private int parentId;//父任务id
private String managerName;
private SqlDB dbf;
private ResultSet rs;
private static Logger logger = Logger.getLogger ("Task") ;
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 Task() {}
public void loadTask(int taskid)
{
this.taskId = taskid;
logger.debug("The taskid is "+taskId+" in the Task class");
try{
dbf=new SqlDB();
String sql ="select taskname, planend,planstart from pp_scheme where taskid = "+taskId;
rs=dbf.executeQuery(sql);
logger.debug("after executeQuery:"+sql);
if(rs.next())
{
taskName = rs.getString("taskname");
logger.debug("The task name is "+taskName);
planEnd = rs.getDate("planend").toString();
logger.debug("The planend is "+planEnd);
planStart = rs.getDate("planstart").toString();
logger.debug("The planstart is "+planStart);
//realStart = rs.getDate("realstart").toString();
//realEnd = rs.getDate("realend").toString();
}
}
catch (Exception e)
{
e.printStackTrace();
}finally
{
close();
}
}
private void close()
{
try
{
if(rs!=null) rs.close();
logger.debug("close the resultset");
if(dbf!=null) dbf.close();
logger.debug("close the sqldb");
}
catch(SQLException sqle)
{
logger.error("Close SqlDB error: "+sqle.getMessage());
}
}
public void getTaskInfo(int taskId)
{
this.taskId=taskId;
logger.debug("The taskId is "+taskId);
try
{
//PooledConnectionMgr.getInstance().initialize(30,"192.168.15.150",3306,"CMMI2PM");
dbf = new SqlDB();
String sql="select * from pp_scheme where taskid="+taskId;
rs=dbf.executeQuery(sql);
logger.debug(sql);
fillField(rs);
logger.debug("The manager is "+managerName);
logger.debug("The isLandMask is "+isLandMask);
} catch (Exception e)
{
e.printStackTrace();
}finally
{
close();
}
}
public void fillField(ResultSet rs)throws Exception
{
try
{
if(rs.next())
{
projectId=rs.getInt("projectid");
taskName=rs.getString("taskname");
planStart=rs.getDate("planstart").toString();
planEnd=rs.getDate("planend").toString();
java.sql.Date realdate;
if((realdate=rs.getDate("realstart"))==null)
{
realStart=null;
}else
{
realStart=rs.getDate("realstart").toString();
}
if((realdate=rs.getDate("realend"))==null)
{
realEnd=null;
}else
{
realEnd=rs.getDate("realend").toString();
}
//realStart=rs.getDate("realstart").toString();
//realEnd=rs.getDate("realend").toString();
formerTask=rs.getString("formertask");
wsbId=rs.getString("WBSID");
isLandMask=rs.getBoolean("landmask");
managerName=rs.getString("manager");
taskLoad=rs.getInt("taskload");
harves=rs.getString("harvest");
desc=rs.getString("describ");
}
}catch (Exception e)
{
throw new Exception("The resultSet is error: "+e.getMessage());
}
}
/**
* <p> add a new task
* @param atf
*/
public void addTask(AddTaskForm atf)
{
logger.debug("The projectId is "+atf.getProjectId());
//logger.debug("The taskId is "+atf.getTaskId());
projectId=Integer.valueOf(atf.getProjectId()).intValue();
parentId=Integer.valueOf(atf.getParentId()).intValue();
//taskId=Integer.valueOf(atf.getTaskId()).intValue();
taskName=atf.getTaskName();
planStart=atf.getPlanStart();
planEnd=atf.getPlanEnd();
formerTask=atf.getFormerTask();
wsbId=atf.getWbsId();
isLandMask=Boolean.valueOf(atf.getLandMark()).booleanValue();
managerId=Integer.valueOf(atf.getManagerId()).intValue();
if(atf.getTaskLoad().trim().length()==0)
{
taskLoad=0;
}else
{
taskLoad=Integer.valueOf(atf.getTaskLoad()).intValue();
}
harves=atf.getHarvest();
desc=atf.getDesc();
try
{
dbf = new SqlDB();
String sql="select MAX(taskid) maxid from pp_scheme";
rs=dbf.executeQuery(sql);
if(rs.next())
{
taskId=rs.getInt("maxid")+1;
logger.debug("The next id is "+taskId);
}
sql="select Username from employee where UserID="+managerId;
rs=dbf.executeQuery(sql);
if(rs.next())
{
managerName=rs.getString("Username");
logger.debug("The user name is "+managerName);
}
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd",java.util.Locale.CHINA);
java.util.Date d = sdf.parse(planStart);
java.sql.Date startTime = new java.sql.Date(d.getTime());
d = sdf.parse(planEnd);
java.sql.Date endTime = new java.sql.Date(d.getTime());
sql="INSERT INTO pp_scheme VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
logger.debug(sql);
dbf.setSql(sql);
dbf.setInt(1,projectId);
dbf.setInt(2,taskId);
dbf.setString(3,taskName);
dbf.setDate(4,startTime);
dbf.setDate(5,endTime);
//dbf.setNull(6,java.sql.Types.DATE);
//dbf.setNull(7,java.sql.Types.DATE);
dbf.setDate(6,null);
dbf.setDate(7,null);
dbf.setString(8,formerTask);
dbf.setString(9,"NOUSE");
dbf.setInt(10,isLandMask?1:0);
dbf.setString(11,managerName);
dbf.setInt(12,taskLoad);
dbf.setString(13,harves);
dbf.setString(14,desc);
dbf.execute();
sql="INSERT INTO pp_proestimate VALUES (?,?,?,?,?,?,?,?,?,?,?)";
logger.debug(sql);
dbf.setSql(sql);
dbf.setInt(1,projectId);
dbf.setInt(2,taskId);
dbf.setString(3,"noUseNow");
dbf.setString(4,""+parentId);
dbf.setDate(5,startTime);
dbf.setDate(6,endTime);
//dbf.setNull(6,java.sql.Types.DATE);
//dbf.setNull(7,java.sql.Types.DATE);
dbf.setDate(7,startTime);
dbf.setDate(8,endTime);
dbf.setInt(9,managerId);
dbf.setString(10,"nowNoUse");
dbf.setString(11,desc);
dbf.execute();
sql="select subtask from pp_proestimate where taskid="+parentId;
rs=dbf.executeQuery(sql);
String newST=null;
if (rs.next())
{
newST=rs.getString("subtask");
}
newST=newST+","+taskId;
sql="update pp_proestimate set subtask=? where taskid="+parentId;
logger.debug(sql);
dbf.setSql(sql);
dbf.setString(1,newST);
dbf.execute();
sql="update pp_workloadestimate set isleave=? where taskid="+parentId;
logger.debug(sql);
dbf.setSql(sql);
dbf.setInt(1,1);
dbf.execute();
getLayer();
logger.debug("The layer is "+layer);
sql="INSERT INTO pp_workloadestimate VALUES (?,?,?,?,?,?,?,?,?,?)";
logger.debug(sql);
dbf.setSql(sql);
dbf.setInt(1,projectId);
dbf.setInt(2,taskId);
dbf.setInt(3,0);
dbf.setString(4,taskName);
dbf.setString(5,layer);
logger.debug("the managerId is "+managerId);
dbf.setInt(6,0);
dbf.setInt(7,managerId);
dbf.setDate(8,new java.sql.Date(System.currentTimeMillis()));
dbf.setInt(9,taskLoad);
dbf.setString(10,desc);
dbf.execute();
}
catch(Exception e)
{
logger.error(e);
}finally
{
close();
}
}
private void getLayer()
{
Stack ly=new Stack();
String subId=null;
try
{
//dbf=new SqlDB();
ly.push(new Integer(taskId));
ly.push(new Integer(parentId));
int pid=parentId;
while(pid!=0)
{
String sql="select subtask from pp_proestimate where taskid="+pid;
rs=dbf.executeQuery(sql);
if(rs.next())
{
subId=rs.getString("subtask");
}
if(subId.indexOf(",")>=0)
{
StringTokenizer st=new StringTokenizer(subId,",");
subId=st.nextToken();
}
pid=Integer.valueOf(subId).intValue();
ly.push(new Integer(pid));
}
}catch(SQLException se)
{
logger.error(se);
}catch(Exception e)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -