一个关于JSP页面生成相关表格的问题

来源:互联网 发布:淘宝美工助手官网 编辑:程序博客网 时间:2024/05/16 11:34

这是一个关于值班记录的数据表
从数据库返回的记录集如下
  排班ID        值班日期                班次名称     班次序号   值班人员
 duty_plan_id  duty_date                 times_name   times_seq    name
  631          2007-2-27 上午 07:00:00     早班         1            张三
  631          2007-2-27 上午 07:00:00     早班         1            李四
  631          2007-2-27 上午 07:00:00     早班         1            王五
  632          2007-2-27 下午 01:00:00     中班         2            张三
  632          2007-2-27 下午 01:00:00     中班         2            李四
  632          2007-2-27 下午 01:00:00     中班         2            王五
  633          2007-2-27 下午 07:00:00     晚班         3           张三
  633          2007-2-27 下午 07:00:00     晚班         3            李四
  633          2007-2-27 下午 07:00:00     晚班         3             王五
  634          2007-2-28 上午 07:00:00     早班         1            张三
  634          2007-2-28 上午 07:00:00     早班         1            李四
  634          2007-2-28 上午 07:00:00     早班         1            王五
  635          2007-2-28 下午 01:00:00     中班         2            张三
  635          2007-2-28 下午 01:00:00     中班         2            李四
  635          2007-2-28 下午 01:00:00     中班         2            王五
  636          2007-2-28 下午 07:00:00     晚班         3           张三
  636          2007-2-28 下午 07:00:00     晚班         3            李四
  636          2007-2-28 下午 07:00:00     晚班         3             王五

要求如下:

生成如下表格

日期            早班              中班            晚班
2007-2-27 张三,李四,王五张三,李四,王五    张三,李四,王五
2007-2-28 张三,李四,王五张三,李四,王五    张三,李四,王五

表格第一列的早班,中班,晚班根据times_name自动生成
日期项下的数据 根据duty_date 生成
每个班次下的人员根据name然后根据同一天同一班次自动整合到一起生成

请问该如何实现,急啊,希望各位大大知道帮帮忙
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;


/**
 * 对应一行的数据 的 类
 * Title:    <br>
 * @author luzm Jan 17, 2007    <br>
 */
public class DayLine {
 
 /**
  * 天
  */
 private Date day;
 /**
  * 早
  */
 private String first ="";
 /**
  * 中
  */
 private String  second ="";
 /**
  * 晚
  */
 private String third="";
 
 /**
  * 存储生成的对象
  */
 private static Map<String, DayLine> dayLines = new HashMap<String, DayLine>();
 
 public Date getDay() {
  return day;
 }
 public void setDay(Date day) {
  this.day = day;
 }
 public String getFirst() {
  return first;
 }
 public void setFirst(String first) {
  this.first = first;
 }
 public String getSecond() {
  return second;
 }
 public void setSecond(String second) {
  this.second = second;
 }
 public String getThird() {
  return third;
 }
 public void setThird(String third) {
  this.third = third;
 }
 
 /**
  * 构造函数  不允许 外界创建 势力
  *
  */
 private DayLine(){
  
 }
 
 /**
  * 工厂 如果有线程要求 加同步标志
  * @param date
  * @return
  */
 public static  DayLine getInstance(String date){
  if(dayLines.containsKey(date)){
   DayLine d= new DayLine();
   dayLines.put(date,d );
   return d;
  }
  else return dayLines.get(date);
 }
 /**
  * 获得最后创建的所有类
  * @return
  */
 public static Map getAllInstance(){
  return dayLines;
 }
}

 


---------------------------------

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 对应把 数据读出后放到
 * Title:    <br>
 * @author luzm Jan 17, 2007    <br>
 */
public class Action {
 
// List table =  new ArrayList();
 
 // 获得总数 付给count 
 int count = 100;
 Map map = new HashMap();
 
 DayLine[] table = new DayLine[count];
 
 //循环读数
 //while()
 {
  
  
  Date day = new Date() ;
  String first ="" ;
  String second = "";
  String third = "";
  
//  获得 列的数据
//  .
//  .
//  .
//  .
  //当前 DayLine 的个数
  int num = 0;
  DayLine d = null;
  if(map.containsKey(day)){
   d=table[((Integer) map.get(day)).intValue()];
   d.setFirst(d.getFirst()+first);
   d.setSecond(d.getSecond()+second);
   d.setThird(d.getThird()+third);
   d.setDay(day);
  // table[((Integer) map.get(day)).intValue()] =d;
  }else {
   num++;
   d = DayLine.getInstance(day.toString());
   d.setFirst(d.getFirst()+first);
   d.setSecond(d.getSecond()+second);
   d.setThird(d.getThird()+third);
   d.setDay(day);
   table[num] =d;
  }
  
  
  
  
 }
}
---------------------------------------------------

这样 你就的到了这个table
在jsp 循环遍历 输出就可以了
首先,班次名称并不是固定的只有早,中,晚班三个,而是个不定值的变量,可能还有其他什么办公班啊,行政班之类的。
其次,关于每天下面每个班次所对应的人员如何整合到一起,这是我比较关心的

这是根据数据库字段生成的一张二维表
日期            早班              中班            晚班
2007-2-27  张三,李四,王五     张三,李四,王五    张三,李四,王五
2007-2-28  张三,李四,王五     张三,李四,王五    张三,李四,王五

如何把每天每个班次的值班人员,对应到表当中去
如下所示
2007-2-27 早班 分别有 张三,李四,王五 这三个人值班

相应的数据库记录如下
排班ID          值班日期                  班次名称      班次序号   值班人员
duty_plan_id    duty_date                 times_name    times_seq    name

631           2007-2-27 上午 07:00:00      早班          1            张三
631           2007-2-27 上午 07:00:00      早班          1            李四
631           2007-2-27 上午 07:00:00      早班          1            王五

根据这三条记录整合出一条的记录
请大大给出个详细的做法,万分的感激

原创粉丝点击