首页 > 代码库 > 排班管理

排班管理

  首先是action类型
 1
package com.honghailt.dataextracter.web; 2 3 import java.util.ArrayList; 4 import java.util.Date; 5 import java.util.LinkedHashMap; 6 import java.util.List; 7 import java.util.Map; 8 9 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.stereotype.Controller; 11 import org.springframework.ui.ModelMap; 12 import org.springframework.web.bind.annotation.RequestMapping; 13 import org.springframework.web.bind.annotation.ResponseBody; 14 15 import com.honghailt.dataextracter.model.OrderQuery; 16 import com.honghailt.dataextracter.model.TbfwScheduling; 17 import com.honghailt.dataextracter.model.TbfwSchedulingPerson; 18 import com.honghailt.dataextracter.model.User; 19 import com.honghailt.dataextracter.service.TbfwSchedulingService; 20 import com.honghailt.dataextracter.service.UserService; 21 import com.honghailt.dataextracter.utils.CalendarUtil; 22 23 @Controller 24 public class TbfwSchedulingController { 25 @Autowired 26 private TbfwSchedulingService schedulingService; 27 @Autowired 28 private UserService userService; 29 30 /** 31 * 显示排班 一次显示一个月 32 * @param dept 33 * @param chaxunDate 34 * @param order 35 * @param modelMap 36 * @return 37 */ 38 @RequestMapping("/showTbfwScheduling") 39 public String showTbfwScheduling( Date chaxunDate,OrderQuery order, ModelMap modelMap){ 40 //查询日期,默认为当前时间sad 41 if(chaxunDate == null){ 42 chaxunDate = new Date(); 43 } 44 //部门,默认为软件售后部 45 if(order == null || order.getNick()==null){ 46 order.setNick("二组"); 47 } 48 List<String> depts = new ArrayList<String>(); 49 depts.add("一组"); 50 depts.add("二组"); 51 modelMap.put("depts", depts); 52 //上班类型 53 List<String> types = new ArrayList<String>(); 54 types.add("值班"); 55 types.add("休班"); 56 modelMap.put("types", types); 57 //一个月所有周日期放里面 58 Map<String,List<String>> weekMap = new LinkedHashMap<String, List<String>>(); 59 int a=CalendarUtil.getWeekyofMonth(chaxunDate);//一共几周 60 chaxunDate =CalendarUtil.DateToDate(chaxunDate); 61 for(int i=0;i<=a;i++){ 62 String ds=CalendarUtil.getDanShuangWeek(CalendarUtil.getDayOfMonth(chaxunDate, i*7)); 63 weekMap.put(i+" "+ds, CalendarUtil.getWeeksOfMonth(chaxunDate, i)); 64 } 65 modelMap.put("week",weekMap); 66 order.setBegintime(chaxunDate); 67 Map<String,List<TbfwScheduling>> maps= schedulingService.getPersonMonth(order); 68 modelMap.put("weekChina", CalendarUtil.getWeekName()); 69 modelMap.put("maps", maps); 70 modelMap.put("order", order); 71 modelMap.put("chaxunDate", chaxunDate); 72 return "/TbfwScheduling/TbfwScheduling"; 73 } 74 /** 75 * 修改添加排班 76 * @param chaxunDate 77 * @param order 78 * @param modelMap 79 * @return 80 */ 81 @RequestMapping("/editTbfwScheduling") 82 public String editTbfwScheduling( Date chaxunDate,OrderQuery order, ModelMap modelMap){ 83 //查询日期,默认为当前时间 84 if(chaxunDate == null){ 85 chaxunDate = new Date(); 86 } 87 //部门,默认为软件售后部 88 if(order == null || order.getNick()==null){ 89 order.setNick("二组"); 90 } 91 List<String> depts = new ArrayList<String>(); 92 depts.add("一组"); 93 depts.add("二组"); 94 modelMap.put("depts", depts); 95 //上班类型 96 List<String> types = new ArrayList<String>(); 97 types.add("值班"); 98 types.add("休班"); 99 modelMap.put("types", types);100 //一个月所有周日期放里面101 Map<String,List<String>> weekMap = new LinkedHashMap<String, List<String>>();102 int a=CalendarUtil.getWeekyofMonth(chaxunDate);//一共几周103 chaxunDate =CalendarUtil.DateToDate(chaxunDate);104 for(int i=0;i<=a;i++){105 String ds=CalendarUtil.getDanShuangWeek(CalendarUtil.getDayOfMonth(chaxunDate, i*7));106 weekMap.put(i+" "+ds, CalendarUtil.getWeeksOfMonth(chaxunDate, i));107 }108 modelMap.put("week",weekMap);109 order.setBegintime(chaxunDate);110 Map<String,List<TbfwScheduling>> maps= schedulingService.getPersonMonth(order);111 modelMap.put("weekChina", CalendarUtil.getWeekName());112 modelMap.put("maps", maps);113 modelMap.put("order", order);114 modelMap.put("chaxunDate", chaxunDate);115 return "/TbfwScheduling/TbfwSchedulingEdit";116 }117 /**118 * 显示人员列表119 * @param tbfwScheduling120 * @param modelMap121 * @return122 */123 @RequestMapping("/queryTbfwScheduling")124 public String queryTbfwScheduling(TbfwScheduling tbfwScheduling,ModelMap modelMap){125 List<User> userList =userService.getUserListByDept(tbfwScheduling);126 List<TbfwSchedulingPerson> personList=schedulingService.getPersonByDate(tbfwScheduling);127 modelMap.put("userList", userList);128 modelMap.put("personList", personList);129 return "/TbfwScheduling/TbfwSchedulingPersonList";130 }131 132 /**133 * 更新数据库134 * @param tbfwScheduling135 * @return136 */137 @RequestMapping("/updateTbfwScheduling")138 @ResponseBody139 public String updateTbfwScheduling(TbfwScheduling tbfwScheduling){140 String msg=null;141 schedulingService.saveTbfwScheduling(tbfwScheduling);142 msg = "success";143 return msg;144 }145 /**146 * 自动排班147 * @param tbfwScheduling148 * @return149 */150 @RequestMapping("/autoTbfwScheduling")151 @ResponseBody152 public String autoTbfwScheduling(TbfwScheduling tbfwScheduling){153 String msg=null;154 schedulingService.autoTbfwScheduling(tbfwScheduling);155 msg = "success";156 return msg;157 }158 /**159 * 2014-07-18 23:35:10160 * 首先把人名列出来,根据班组161 * 然后分排班还是休班162 * 先根据时间和班组把人查询出来163 * 然后循环list164 * 小A,时间,一组,排班 数量165 * @param order166 * @param modelMap167 * @return168 */169 @RequestMapping("/statisticsTbfwScheduling")170 public String statisticsTbfwScheduling(TbfwScheduling tbfwScheduling, ModelMap modelMap){171 if(tbfwScheduling == null || tbfwScheduling.getBeginTime()== null){172 tbfwScheduling.setBeginTime(CalendarUtil.getFirstDayOfMonth(new Date()));173 tbfwScheduling.setEndTime(CalendarUtil.getDateOfLastDayOfMonth(new Date()));174 }175 System.out.println("aaa");176 //部门,默认为软件售后部177 if(tbfwScheduling == null || tbfwScheduling.getDept() == null){178 tbfwScheduling.setDept("二组");179 }180 List<String> depts = new ArrayList<String>();181 depts.add("一组");182 depts.add("二组");183 modelMap.put("depts", depts);184 185 List<User> userList =userService.getUserListByDept(tbfwScheduling);186 List<String> types = new ArrayList<String>();187 types.add("休班");188 types.add("值班");189 List<TbfwSchedulingPerson> personList =schedulingService.statisticsTbfwScheduling(tbfwScheduling);190 modelMap.put("types", types);191 modelMap.put("personList", personList);192 modelMap.put("userList", userList);193 // modelMap.put("tbfwScheduling", tbfwScheduling);194 return "/TbfwScheduling/TbfwSchedulingStatistics";195 }196 }

然后是service类
  1 package com.honghailt.dataextracter.service;  2   3 import java.util.ArrayList;  4 import java.util.Date;  5 import java.util.HashMap;  6 import java.util.List;  7 import java.util.Map;  8   9 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.stereotype.Service; 11  12 import com.honghailt.dataextracter.mappers.ds1.TbfwSchedulingMapper; 13 import com.honghailt.dataextracter.mappers.ds1.TbfwSchedulingPersonMapper; 14 import com.honghailt.dataextracter.model.OrderQuery; 15 import com.honghailt.dataextracter.model.TbfwScheduling; 16 import com.honghailt.dataextracter.model.TbfwSchedulingPerson; 17 import com.honghailt.dataextracter.model.User; 18 import com.honghailt.dataextracter.utils.CalendarUtil; 19  20 @Service 21 public class TbfwSchedulingService { 22      23     @Autowired 24     private TbfwSchedulingMapper mapper; 25     @Autowired 26     private TbfwSchedulingPersonMapper personMapper; 27     @Autowired 28     private UserService userService; 29      30     public Map<String, List<TbfwScheduling>> getPerson(OrderQuery order) { 31         if(order.getBegintime()!=null){ 32             Date week1= CalendarUtil.getNowWeekBeginDate(order.getBegintime(),0); 33             Date week2 =CalendarUtil.getNowWeekBeginDate(order.getBegintime(),6); 34             order.setBegintime(week1); 35             order.setEndtime(week2); 36         } 37         Map<String, List<TbfwScheduling>> map = new HashMap<String, List<TbfwScheduling>>();// 38         List<TbfwScheduling> listZhiBan = new ArrayList<TbfwScheduling>(); 39         List<TbfwScheduling> listXiuBan = new ArrayList<TbfwScheduling>(); 40         List<TbfwScheduling> list =mapper.getTbfwSchedulingList(order); 41         for (TbfwScheduling tbfwScheduling : list) { 42         if(tbfwScheduling.getType().equals("值班")){ 43             List<TbfwSchedulingPerson> schedulingPersonList= personMapper.getTbfwSchedulingPersonList(tbfwScheduling); 44             tbfwScheduling.setSchedulingPersonList(schedulingPersonList); 45             listZhiBan.add(tbfwScheduling); 46         } 47         if(tbfwScheduling.getType().equals("休班")){ 48             List<TbfwSchedulingPerson> schedulingPersonList= personMapper.getTbfwSchedulingPersonList(tbfwScheduling); 49             tbfwScheduling.setSchedulingPersonList(schedulingPersonList); 50             listXiuBan.add(tbfwScheduling); 51         } 52         } 53         map.put("值班", listZhiBan); 54         map.put("休班", listXiuBan); 55 //        // TODO Auto-generated method stub 56         return map; 57     } 58  59     public Map<String, List<TbfwScheduling>> getPersonMonth(OrderQuery order) { 60         if(order.getBegintime()!=null){ 61             //先获得查询日所在月的第一天所在周的星期一 和所在月的最后一天所在周的星期天 62             Date week1= CalendarUtil.getNowWeekBeginDate(CalendarUtil.getFirstDayOfMonth(order.getBegintime()),0); 63             Date week2 =CalendarUtil.getNowWeekBeginDate(CalendarUtil.getDateOfLastDayOfMonth(order.getBegintime()),6); 64             order.setBegintime(week1); 65             order.setEndtime(week2); 66         } 67         Map<String, List<TbfwScheduling>> map = new HashMap<String, List<TbfwScheduling>>();//值班和休班所有TbfwScheduling 68         List<TbfwScheduling> listZhiBan = new ArrayList<TbfwScheduling>(); 69         List<TbfwScheduling> listXiuBan = new ArrayList<TbfwScheduling>(); 70         List<TbfwScheduling> list =mapper.getTbfwSchedulingList(order);//查询出所有 71         for (TbfwScheduling tbfwScheduling : list) { 72         if(tbfwScheduling.getType().equals("值班")){//如果是值班 73             List<TbfwSchedulingPerson> schedulingPersonList= personMapper.getTbfwSchedulingPersonList(tbfwScheduling); 74             tbfwScheduling.setSchedulingPersonList(schedulingPersonList);//把人放在值班list里,下面同上 75             listZhiBan.add(tbfwScheduling); 76         } 77         if(tbfwScheduling.getType().equals("休班")){ 78             List<TbfwSchedulingPerson> schedulingPersonList= personMapper.getTbfwSchedulingPersonList(tbfwScheduling); 79             tbfwScheduling.setSchedulingPersonList(schedulingPersonList); 80             listXiuBan.add(tbfwScheduling); 81         } 82         } 83         map.put("值班", listZhiBan); 84         map.put("休班", listXiuBan); 85 //        // TODO Auto-generated method stub 86         return map; 87     } 88      89      90      91     public List<TbfwSchedulingPerson> getPersonByDate(TbfwScheduling tbfwScheduling) { 92         List<TbfwSchedulingPerson> schedulingPersonList= personMapper.getTbfwSchedulingPersonList(tbfwScheduling); 93         return schedulingPersonList; 94     } 95  96     public void saveTbfwScheduling(TbfwScheduling tbfwScheduling) { 97          TbfwScheduling  model; 98          List<TbfwScheduling> schedulingList = mapper.getListByDateAndType(tbfwScheduling); 99          if(schedulingList!=null && schedulingList.size()>0){100                model =schedulingList.get(0);101          }else{102              mapper.insert(tbfwScheduling);103             schedulingList = mapper.getListByDateAndType(tbfwScheduling);104             model =schedulingList.get(0);105          }106          String ids =tbfwScheduling.getIds();107          System.out.println(ids+"--------");108          if(ids ==null || ids.equals("")){109              personMapper.delete(model);110          }111          112          if(ids !=null && !ids.equals("")){113              personMapper.delete(model);114             String[] aa =ids.split(",");115             for (String str : aa) {116                 String[] bb=str.split(":");117                    personMapper.insert(model.getId(),bb[0],bb[1]);118             }119          }120     }121     122     /**123      * 先把本月周所有星期一,然后根据单双周获得所有日期124      * 从人员表中获得符合条件的人,重新建一个list,把相等数量的人数放在里面125      * 然后把保存 126      * @param tbfwScheduling127      */128     public void autoTbfwScheduling(TbfwScheduling tbfwScheduling) {129         List<User> userList =userService.getUserListByDept(tbfwScheduling);//获得所有人130         int personN =this.getPersonNum(tbfwScheduling);//获得本月所要排班的人数131         List<User>  list =new ArrayList<User>();//把人放到这个列表中132          int usedPerson =0; //定义用过的人133         while(true){ //用于把人放到这个列表里134             for (int i=0;i<userList.size();i++) {135                 list.add(userList.get(i));136             }137             if(list.size()>=personN+2){138                 break;139             }140         }141         int aa=0;142         for (User user : list) {143             System.out.print(user.getUsrname()+"  "+aa++);144         }145         if(tbfwScheduling!=null){146             Date chaxunDate =tbfwScheduling.getPaibanDate();//获得查询时间147             int a=CalendarUtil.getWeekyofMonth(chaxunDate);//获得本月共几周148             for(int i=0;i<=a;i++){//遍历周149             //获得第一周,第二周,第三周150             Date date1 =CalendarUtil.getDayOfMonth(CalendarUtil.DateToDate(chaxunDate), i*7);//获得本月第一天,每次循环加7151             usedPerson = this.savePerson(tbfwScheduling, date1, usedPerson, list);152             }153         }154         155     }156     157     public int savePerson(TbfwScheduling tbfwScheduling,Date date1,int usedPerson,List<User> list){158         //单周的话值班12+4人159         List<Date> list1= CalendarUtil.getDaysOfWeekDate(date1);//获得本周7天160         for (int x=0;x<list1.size();x++) {//遍历每天161             tbfwScheduling.setPaibanDate(list1.get(x));//设置第一周星期一的时间162              TbfwScheduling  model;163              List<TbfwScheduling> schedulingList = mapper.getListByDateAndType(tbfwScheduling);//查询是否有本日记录164              if(schedulingList!=null && schedulingList.size()>0){//有就取,没有就添加165                    model =schedulingList.get(0);166              }else{167                  mapper.insert(tbfwScheduling);168                 schedulingList = mapper.getListByDateAndType(tbfwScheduling);169                 model =schedulingList.get(0);170              }171              personMapper.delete(model); 172              173              if(x<=4){174                  if(model.getDept().equals("一组")){175                      for (int b = 0; b < 1; b++) {176                             personMapper.insert(model.getId(), list.get(usedPerson).getUsrname(),0+"");177                             usedPerson = usedPerson + 1;178                             179                         }180                  }181                  if(model.getDept().equals("二组")){182                      for (int b = 0; b < 2; b++) {183                             personMapper.insert(model.getId(), list.get(usedPerson).getUsrname(),0+"");184                             usedPerson = usedPerson + 1;185                             186                         }187                  }188                 189              }190              if( CalendarUtil.getDanShuangWeek(date1).equals("单周")){191                  if(x==5){ 192                      if(model.getDept().equals("一组")){193                      for (int b = 0; b < 1; b++) {194                             personMapper.insert(model.getId(), list.get(usedPerson).getUsrname(),0+"");195                             usedPerson = usedPerson + 1;196                             System.out.println(usedPerson+"x=5)"+list.get(usedPerson).getUsrname() );197                         }198                      }199                      if(model.getDept().equals("二组")){200                          for (int b = 0; b < 2; b++) {201                                 personMapper.insert(model.getId(), list.get(usedPerson).getUsrname(),0+"");202                                 usedPerson = usedPerson + 1;203                                 System.out.println(usedPerson+"x=5)"+list.get(usedPerson).getUsrname() );204                             }205                          }206                  }207                  if(x==6){208                      if(model.getDept().equals("一组")){209                          for (int b = 0; b < 1; b++) {210                                 personMapper.insert(model.getId(), list.get(usedPerson).getUsrname(),0+"");211                                 usedPerson = usedPerson + 1;212                                 213                             }214                          for (int b = 0; b < 1; b++) {215                                 personMapper.insert(model.getId(), list.get(usedPerson).getUsrname(),1+"");216                                 usedPerson = usedPerson + 1;217                                 218                             }219                          }220                      if(model.getDept().equals("二组")){221                          for (int b = 0; b < 2; b++) {222                                 personMapper.insert(model.getId(), list.get(usedPerson).getUsrname(),0+"");223                                 usedPerson = usedPerson + 1;224                                 225                             }226                          for (int b = 0; b < 2; b++) {227                                 personMapper.insert(model.getId(), list.get(usedPerson).getUsrname(),1+"");228                                 usedPerson = usedPerson + 1;229                                 230                             }231                          }232              }233             }234              235              if( CalendarUtil.getDanShuangWeek(date1).equals("双周")){236                  if(x>=5){237                      if(model.getDept().equals("一组")){238                          for (int b = 0; b < 1; b++) {239                                 personMapper.insert(model.getId(), list.get(usedPerson).getUsrname(),0+"");240                                 usedPerson = usedPerson + 1;241                             }242                          for (int b = 0; b < 1; b++) {243                                 personMapper.insert(model.getId(), list.get(usedPerson).getUsrname(),1+"");244                                 usedPerson = usedPerson + 1;245                             }246                          }247                      if(model.getDept().equals("二组")){248                          for (int b = 0; b < 2; b++) {249                                 personMapper.insert(model.getId(), list.get(usedPerson).getUsrname(),0+"");250                                 usedPerson = usedPerson + 1;251                                 252                             }253                          for (int b = 0; b < 2; b++) {254                                 personMapper.insert(model.getId(), list.get(usedPerson).getUsrname(),1+"");255                                 usedPerson = usedPerson + 1;256                                 257                             }258                          }259              }260             }261         }262         //263         return usedPerson;264         265     }266     267     public int getPersonNum(TbfwScheduling tbfwScheduling){268         int personNum =0;269         if(tbfwScheduling!=null){270             Date chaxunDate =tbfwScheduling.getPaibanDate();271             int a=CalendarUtil.getWeekyofMonth(chaxunDate);//一共几周272             273             for(int i=0;i<=a;i++){274             //获得第一周275             Date date1 =CalendarUtil.getDayOfMonth(CalendarUtil.DateToDate(chaxunDate), i*7);//获得第一周276             if(CalendarUtil.getDanShuangWeek(date1).equals("单周")){//单周的话值班6人277                 //首先查询 本周日期,然后根据条件查询出来,有不变,周一到周五set人,没有就删除278                 personNum=personNum+10+6;279                 //280             }else{281                 personNum=personNum+10+8;282             }283             }284         }285         return personNum;286     }287 288 //    public static void main(String[] args) {289 //        List list =new ArrayList<>();290 //        list.add(1);291 //        list.add(2);292 //        List list2 =new ArrayList<>();293 //        int i=10;294 //        295 //        while(true){296 //            for (int a=0; a<list.size() ;a++) {297 //                list2.add(list.get(a));298 //            }299 //            if(list2.size()==i){300 //                break;301 //            }302 //        }303 //        System.out.println(list2);304 //    }305 306     public List<TbfwSchedulingPerson> statisticsTbfwScheduling(TbfwScheduling tbfwScheduling) {307         List<TbfwSchedulingPerson> list =personMapper.statisticsTbfwScheduling(tbfwScheduling);308         return list;309     }310     311     312 }    
mapper.xml
 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3         "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 <mapper namespace="com.honghailt.dataextracter.mappers.ds1.TbfwSchedulingMapper"> 5     6      <select id="getTbfwSchedulingList"  resultType="TbfwScheduling"> 7         SELECT 8             id, 9             paibanDate,10             type,11             dept12         FROM de_tbfw_order_scheduling13         WHERE 1=114         and date(paibanDate) between #{begintime:DATE} and #{endtime:DATE}15         and dept =#{nick}16     </select>17     <select id="getListByDateAndType"  resultType="TbfwScheduling">18         SELECT19             id,20             paibanDate,21             type,22             dept23         FROM de_tbfw_order_scheduling24         WHERE 1=125         and date(paibanDate) = #{paibanDate} 26         and type =  #{type} 27         and dept = #{dept}28     </select>29     <insert id="insert">30         INSERT INTO de_tbfw_order_scheduling31         (32          paibanDate,33         type,34          dept)35         VALUES36             (#{paibanDate},37              #{type},38              #{dept}39              );40     </insert>41 </mapper>
 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3         "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 <mapper namespace="com.honghailt.dataextracter.mappers.ds1.TbfwSchedulingPersonMapper"> 5     6      <select id="getTbfwSchedulingPersonList"  resultType="TbfwSchedulingPerson"> 7         SELECT 8             a.id, 9             b.id as tbfwSchedulingId,10             a.userId,11             a.baiban12         FROM (de_tbfw_order_schedulingperson a LEFT JOIN de_tbfw_order_scheduling b 13         on a.tbfwSchedulingId = b.id)14         WHERE 1=115         and date(b.paibanDate) = #{paibanDate:DATE}16         and b.type = #{type}17         and b.dept = #{dept}18     </select>19     20      <!--  <select id="getTbfwSchedulingPersonList"  resultType="TbfwSchedulingPerson">21         SELECT22             a.id,23             b.id as tbfwSchedulingId,24             c.usrno as userId,25               c.usrname as usrname26         FROM (de_tbfw_order_schedulingperson a LEFT JOIN de_tbfw_order_scheduling b 27         on a.tbfwSchedulingId = b.id) LEFT JOIN databus_user c on c.usrno = a.userId28         WHERE 1=129         and date(b.paibanDate) = #{paibanDate:DATE}30         and b.type = #{type}31         and b.dept = #{dept}32     </select> -->33     <delete id="delete">34     DELETE from de_tbfw_order_schedulingperson35     WHERE tbfwSchedulingId =#{id}36     </delete>37     <insert id="insert">38      INSERT INTO de_tbfw_order_schedulingperson39         (tbfwSchedulingId,40          userId,41          baiban)42         VALUES43             ( #{param1},44              #{param2},45              #{param3});46     </insert>47     48     <select id="statisticsTbfwScheduling"  resultType="TbfwSchedulingPerson">49     SELECT50     COUNT(p.id) AS statisticsCount,51     c.dept,52     c.type,53     p.userId,54     p.baiban55     FROM56     de_tbfw_order_schedulingperson p ,57     de_tbfw_order_scheduling c58     where59     p.tbfwSchedulingId = c.id60     and61     date(c.paibanDate) between #{beginTime:DATE} and #{endTime:DATE}62     AND c.dept =#{dept} 63     GROUP BY64     p.userId,65     c.dept,66     c.type,67     p.baiban68     </select>69     70     71     72     73     74 </mapper>

 

 

1.jsp

 1 <div class="main"> 2     <div style="text-align: center; font-size: 14px; font-weight: bold;">排班信息</div> 3     <form id="form1" action="<c:url value="http://www.mamicode.com//showTbfwScheduling.do"/>" method="post" autocomplete="off"> 4         <div> 5             所在部门: 6       <select name="nick" > 7           <c:forEach items="${depts}" var="dd"> 8                     <option value="${dd}" <c:if test="${dd==order.nick}">selected</c:if>>${dd}</option> 9             </c:forEach>10           </select>11         12          当前日期:<input type="text" name="chaxunDate"13                         value="<fmt:formatDate pattern="yyyy-MM-dd" value="${chaxunDate}"/>"14                         style="width: 100px;" maxlength="10" onClick="WdatePicker()">15             <input type="submit" id="query" value=" 查 询 "></div>16     </form>17    <table class="grid">18    <tr>19             <th  style="width:80px"> &nbsp;</th>20                 <c:forEach items="${weekChina}" var="china">21                     <th><center>${china}</center></th> <!--  遍历表头 -->22                 </c:forEach>23             </tr>24    25   <c:forEach items="${week}" var="week1">26             <tr>27             <th  style="width:80px"> ${fn:substring(week1.key,2,4)}</th>28                 <c:forEach items="${week1.value}" var="day1">29                     <th>30                       <fmt:formatDate var="cx" value="${chaxunDate}" pattern="yyyy-MM-dd"/>31                     <c:if test="${cx eq day1}">32                     <font color=red >${cx} </c:if>33                     </font>34                     <c:if test="${cx ne day1}">35                     ${day1}</c:if>36                     </th> <!--  遍历表头 -->37                 </c:forEach>38             </tr>39     <c:forEach items="${types}" var="row" varStatus="num">40             <tr>41                 <td>${row}</td>  <!--  遍历类型 -->42                 <c:forEach items="${maps}" var="map" varStatus="num1">43                     <c:if test="${row eq map.key}">44                           <c:forEach items="${week1.value}" var="day">45                               <td>46                                 <c:forEach items="${map.value}" var="aa" varStatus="num2">47                                  <fmt:formatDate var="paibanDate" value="${aa.paibanDate}" pattern="yyyy-MM-dd"/>48                                    <c:if test="${paibanDate eq day }">49                                           <c:forEach items="${aa.schedulingPersonList}" var="person" varStatus="num1">50                                           <c:if test="${person.baiban eq 1}">51                                           <font color = red>    ${person.userId}</font>52                                           </c:if>53                                               <c:if test="${person.baiban ne 1}">54                                           ${person.userId} 55                                           </c:if>56                                           57                                            </c:forEach>58                                    </c:if>59                                  </c:forEach> 60                             &nbsp;</td>61                         </c:forEach>62                     </c:if>63                 </c:forEach>64             </tr>65         </c:forEach>66 </c:forEach>    67   </table>  68 </div>
<body><div class="main">    <div style="text-align: center; font-size: 14px; font-weight: bold;">排班信息</div>      <form id="form1" action="<c:url value="http://www.mamicode.com//editTbfwScheduling.do"/>" method="post" autocomplete="off">      <table>      <tr>      <td>                        <div>                            所在部门:                             <select name="nick">                                <c:forEach items="${depts}" var="dd">                                    <option value="${dd}"                                        <c:if test="${dd==order.nick}">selected</c:if>>${dd}</option>                                </c:forEach>                            </select>                             当前日期:                             <input type="text" name="chaxunDate" id="chaxunDate"                                value="<fmt:formatDate pattern="yyyy-MM-dd" value="${chaxunDate}"/>"                                style="width: 100px;" maxlength="10" onClick="WdatePicker()">                            <input type="submit" id="query" value=" 查 询 ">                        </div>                    </td>         <td style="text-align: right;">      <input type="button" value="统计" onclick="aa()"/>      </td>                  <td style="text-align: right;">      <input type="button" value="一鍵排班" onclick="autoScheduling()"/>      </td>      </tr>      </table>          </form>    <div class="progress" style="display:none;">  <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 100%;">    <span class="sr-only">正在排班 ,请等待...</span>  </div></div>   <table class="grid">   <tr>            <th  style="width:80px"> &nbsp;</th>                <c:forEach items="${weekChina}" var="china">                    <th><center>${china}</center></th> <!--  遍历表头 -->                </c:forEach>            </tr>     <c:forEach items="${week}" var="week1">            <tr>            <th  style="width:80px"> ${fn:substring(week1.key,2,4)}</th>                <c:forEach items="${week1.value}" var="day1">                    <th>                      <fmt:formatDate var="cx" value="${chaxunDate}" pattern="yyyy-MM-dd"/>                    <c:if test="${cx eq day1}">                    <font color=red >${cx} </c:if>                    </font>                    <c:if test="${cx ne day1}">                    ${day1}</c:if>                    </th> <!--  遍历表头 -->                </c:forEach>            </tr>    <c:forEach items="${types}" var="row" varStatus="num">            <tr>                <td>${row}</td>  <!--  遍历类型 -->                <c:forEach items="${maps}" var="map" varStatus="num1">                    <c:if test="${row eq map.key}">                          <c:forEach items="${week1.value}" var="day">                          <td ondblclick="showtbfwList(‘${row}‘,this,‘${day}‘)">                                <c:forEach items="${map.value}" var="aa" varStatus="num2">                                 <fmt:formatDate var="paibanDate" value="${aa.paibanDate}" pattern="yyyy-MM-dd"/>                                   <c:if test="${paibanDate eq day }">                                          <c:forEach items="${aa.schedulingPersonList}" var="person" varStatus="num1">                                          <c:if test="${person.baiban eq 1}">                                          <font color = red>    ${person.userId}</font>                                          </c:if>                                              <c:if test="${person.baiban ne 1}">                                          ${person.userId}                                           </c:if>                                                                                     </c:forEach>                                   </c:if>                                 </c:forEach>                             &nbsp;</td>                        </c:forEach>                    </c:if>                </c:forEach>            </tr>        </c:forEach></c:forEach>      </table>            </div><script type="text/javascript">function aa(){    $(form1).attr("action","statisticsTbfwScheduling.do");// 填充内容   //  document.form1.action ="";    $(form1).submit();}function autoScheduling(){    var dept = $("select[name=nick] option:selected").val();    var day  = $("#chaxunDate").val();     if (confirm("自动排班后,本月排班将会重新排列,请谨慎点击!")) {         $("div.progress").show();         if (true) {                $.ajax({                    url : "<c:url value=http://www.mamicode.com/"/autoTbfwScheduling.do"/>",                    type : "post",                    data : {                        type : "值班",                        paibanDate : day,                        dept : dept                    },                    dataType : "text",                    success : function(data) {                        $("div.progress").hide();                        if (data =http://www.mamicode.com/= "success") {                            alert("排班成功!");                        } else {                            alert("排班失败!");                        }                    }                });            }       return true;     }    }function showtbfwList(type, indexa,day) {        var dept = $("select[name=nick] option:selected").val();      var result = window.showModalDialog("queryTbfwScheduling.do?type=" + type+"&paibanDate="+day+"&dept="+dept, "help:no;scroll:no;dialogWidth:300px; dialogHeight:300px");    var ids=getAllIds(result);      if (true) {            $.ajax({                url : "<c:url value="/updateTbfwScheduling.do"/>",                type : "post",                data : {                    type : type,                    paibanDate : day,                    ids : ids,                    dept : dept                },                dataType : "text",                success : function(data) {                    if (data == "success") {                        alert("添加成功!");                        $(form1).submit();                    } else {                        alert("添加失败!");                    }                }            });            //indexa.innerHTML = getAllNames(result);        }    }        function getAllNames(obj) {        // 用来保存所有的属性名称和值        var props = "";        // 开始遍历        for ( var i = 0; i < obj.length; i++) {            props = obj[i].usrname + "," + props;        }        props = props.substring(0, props.length - 1);        // 最后显示所有的属性        return props;    }    function getAllIds(obj) {        // 用来保存所有的属性名称和值        var props = "";        // 开始遍历        for ( var i = 0; i < obj.length; i++) {            props = obj[i].usrno +":"+obj[i].baibans + "," + props;        }        props = props.substring(0, props.length - 1);        // 最后显示所有的属性        return props;        }    function getAllBaiBan(obj) {        // 用来保存所有的属性名称和值        var props = "";        // 开始遍历        for ( var i = 0; i < obj.length; i++) {            props = obj[i].baibans + "," + props;        }        props = props.substring(0, props.length - 1);        // 最后显示所有的属性        return props;        }    </script></body>
<body>    <div><% String str =""; %>  </div>   <center> <table class="grid">        <tr>                <th style="width:80px" colspan="2">&nbsp;               <fmt:formatDate pattern="yyyy-MM-dd" value="${tbfwScheduling.paibanDate}"/>            ${tbfwScheduling.type}人员列表            </th>            </tr> <tr>        <c:forEach items="${userList}" var="user" varStatus="num">                <td>                <input type="checkbox"                 <c:forEach items="${personList}" var="person" >                        <c:if test="${person.userId eq user.usrname}">                       checked                        </c:if>                </c:forEach>                   name="ids" value="http://www.mamicode.com/${user.usrno}">                   <input type="checkbox"                 <c:forEach items="${personList}" var="person1" >                        <c:if test="${person1.userId eq user.usrname}">                        <c:if test="${person1.baiban eq ‘1‘}">                            checked                        </c:if>                        </c:if>                </c:forEach>                   name="baibans" value="http://www.mamicode.com/${user.usrno}">                   <input type = "hidden" name = "userinfo" value = "{usrno:‘${user.usrname}‘,usrname:‘${user.usrname}‘}">                   ${user.usrname}                </td>            <c:if test="${(num.index % 2 ) eq 1}"></tr><tr></c:if>            <c:if test="${num.index eq 6}"><td>&nbsp;</td></tr><tr></c:if>        </c:forEach>            </table></center></div>  <div><center> <input type="button" value="确定" onclick="validateadd()"/></center></div>    <script language="javascript">        function validateadd() {                var rtn = [];              $("input[name=ids]:checked").siblings("input[name=userinfo]").each(function(i,n){                  eval("obj=" + $(this).val());                  if($(this).siblings("input[name=baibans]:checked").size()>0) {                      obj.baibans = 1;                  } else {                      obj.baibans = 0;                  }                  console.log(JSON.stringify(obj));                  rtn.push(obj);              });                          window.returnValue=rtn;             // alert(rtn);              window.close();                      }    </script></body>

 

<body><div class="main">    <div style="text-align: center; font-size: 14px; font-weight: bold;">排班信息</div>    <form id="form1" action="<c:url value="http://www.mamicode.com//statisticsTbfwScheduling.do"/>" method="post" autocomplete="off">        <div>            所在部门:      <select name="dept" >          <c:forEach items="${depts}" var="dd">                    <option value="${dd}" <c:if test="${dd==tbfwScheduling.dept}">selected</c:if>>${dd}</option>            </c:forEach>          </select>                 开始日期:<input type="text" name=beginTime                        value="<fmt:formatDate pattern="yyyy-MM-dd" value="${tbfwScheduling.beginTime}"/>"                        style="width: 100px;" maxlength="10" onClick="WdatePicker()">         结束日期:<input type="text" name=endTime                        value="<fmt:formatDate pattern="yyyy-MM-dd" value="${tbfwScheduling.endTime}"/>"                        style="width: 100px;" maxlength="10" onClick="WdatePicker()">                                 <input type="submit" id="query" value=" 查 询 ">              <input type="button" value="编辑" onclick="aa()"/>            </div>    </form>   <table class="grid">   <tr>    <th>人员</th>                 <c:forEach items="${types}" var="type1">     <th>${type1}</th>     </c:forEach>    </tr>    <c:forEach items="${userList}" var="user">   <tr>        <td > ${user.usrname}</td>    <c:forEach items="${types}" var="type">    <td style="text-align: center;"> &nbsp;     <c:forEach items="${personList}" var="person">            <c:if test="${person.userId eq user.usrname}">        <c:if test="${person.type eq type }">        <c:if test="${person.type eq ‘值班‘}">                <c:if test="${person.baiban eq ‘1‘ }">        白班:<font color =red>${person.statisticsCount}</font>        </c:if>        <c:if test="${person.baiban eq ‘0‘ }">        晚班:${person.statisticsCount}        </c:if>                </c:if>        <c:if test="${person.type eq ‘休班‘ }">        休班:${person.statisticsCount}        </c:if>                </c:if>        </c:if>        </c:forEach>    </td>        </c:forEach>        </tr>    </c:forEach>      </table>  </div><script type="text/javascript">function aa(){    $(form1).attr("action","editTbfwScheduling.do");// 填充内容   //  document.form1.action ="";    $(form1).submit();}</script></body>