📄 tjutil.java
字号:
package net.sf.pim;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Hashtable;
import net.sf.pim.model.psp.Work;
import net.sf.pim.model.psp.WorkComparator;
import net.sf.util.ConfigHelper;
import net.sf.util.StringUtil;
public class TjUtil {
// 取统计工作分类,加打断和遗失
public static String[] getTjListGzfl() {
String[] bt = new String[ConfigHelper.getListGzfl().length + 2];
System.arraycopy(ConfigHelper.getListGzfl(), 0, bt, 0,
ConfigHelper.getListGzfl().length);
bt[bt.length - 2] = "打断";
bt[bt.length - 1] = "遗失";
return bt;
}
// 取统计项目组分类,加全部和遗失,注意位置
public static String[] getTjListXmz() {
String[] bt = new String[ConfigHelper.getListXmz().length + 2];
System.arraycopy(ConfigHelper.getListXmz(), 0, bt, 1,
ConfigHelper.getListXmz().length);
bt[0] = "全部";
bt[bt.length - 1] = "遗失";
return bt;
}
/**
* 时间统计 依项目统计时间
*/
public static int[][] fltj(Work[] list) {
String[] gzfl = getTjListGzfl();
String[] xmz = getTjListXmz();
Hashtable htGzfl = new Hashtable(gzfl.length);
for (int i = 0; i < gzfl.length; i++) {
htGzfl.put(gzfl[i], String.valueOf(i));
}
Hashtable htXmz = new Hashtable(xmz.length);
for (int i = 0; i < xmz.length; i++) {
htXmz.put(xmz[i], String.valueOf(i));
}
int[][] tj = new int[xmz.length][gzfl.length];
for (int i = 0; i < xmz.length; i++)
for (int j = 0; j < gzfl.length; j++)
tj[i][j] = 0;
int lose = gzfl.length - 1;
int interrupt = gzfl.length - 2;
int xmzLose = xmz.length - 1;
for (int i = 0; i < list.length; i++) {
int minute = convertSj(list[i].getJssj())
- convertSj(list[i].getKssj())
- StringUtil.parseInt(list[i].getDdsj());
String str1 = (String) htXmz.get(list[i].getXmz());
int index1 = xmzLose;
if (str1 != null)
index1 = StringUtil.parseInt(str1);
String str2 = (String) htGzfl.get(list[i].getGzfl());
int index2 = lose;
if (str2 != null)
index2 = StringUtil.parseInt(str2);
tj[index1][index2] += minute;
tj[index1][interrupt] += StringUtil.parseInt(list[i].getDdsj());
}
// 给“全部”项目赋值
for (int i = 1; i < xmz.length; i++)
for (int j = 0; j < gzfl.length; j++)
tj[0][j] += tj[i][j];
return tj;
}
/**
* 时间报告(依PSP格式)
*/
public static ArrayList sjtj(Work[] list) {
// 要求有记录
if (list.length == 0)
return new ArrayList();
String date = list[0].getRq();
int workTime = 0, intTime = 0;
int workTotal = 0, intTotal = 0;
ArrayList al = new ArrayList();
// 先排序
Arrays.sort(list, new WorkComparator("rq",true));
// 逐步统计数据
for (int i = 0; i < list.length; i++) {
// 统计完成一天
if (!list[i].getRq().equals(date)) {
al.add(new String[] { date, String.valueOf(workTime),
String.valueOf(intTime),
String.valueOf(workTime + intTime) });
// 赋初值
date = list[i].getRq();
workTime = intTime = 0;
}
workTime += StringUtil.parseInt(list[i].getGzsj());
intTime += StringUtil.parseInt(list[i].getDdsj());
workTotal += StringUtil.parseInt(list[i].getGzsj());
intTotal += StringUtil.parseInt(list[i].getDdsj());
}
// 最后一条记录
al.add(new String[] { date, String.valueOf(workTime),
String.valueOf(intTime), String.valueOf(workTime + intTime) });
// 加入合计
al
.add(new String[] { "合计(共"+list.length+"条)", String.valueOf(workTotal),
String.valueOf(intTotal),
String.valueOf(workTotal + intTotal) });
return al;
}
/**
* 汇总数据报告
* 将图中的数据转化为表的数据
*/
public static ArrayList int2string(int[][] data){
ArrayList al = new ArrayList();
String[] xmz=getTjListXmz();
for(int i=0;i<data.length;i++){
int[] dd=data[i];
String[] ss=new String[dd.length+1];
ss[0]=xmz[i];
for(int j=0;j<dd.length;j++)
ss[j+1]=String.valueOf(dd[j]);
al.add(ss);
}
return al;
}
/**
* 将时间hh:mm或hh:mm转化为分钟表示为 hh*60+mm
*/
public static int convertSj(String str) {
int pos = str.indexOf(":");
if (pos == -1)
pos = str.indexOf(":");
if (pos == -1)
return 0;
else
return StringUtil.parseInt(str.substring(0, pos)) * 60
+ StringUtil.parseInt(str.substring(pos + 1));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -