⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tjutil.java

📁 Eclipse RCP下编写的工作管理软件代码
💻 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 + -