排班管理
首先是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 tbfwScheduling 120 * @param modelMap 121 * @return 122 */ 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 tbfwScheduling 135 * @return 136 */ 137 @RequestMapping("/updateTbfwScheduling") 138 @ResponseBody 139 public String updateTbfwScheduling(TbfwScheduling tbfwScheduling){ 140 String msg=null; 141 schedulingService.saveTbfwScheduling(tbfwScheduling); 142 msg = "success"; 143 return msg; 144 } 145 /** 146 * 自动排班 147 * @param tbfwScheduling 148 * @return 149 */ 150 @RequestMapping("/autoTbfwScheduling") 151 @ResponseBody 152 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:10 160 * 首先把人名列出来,根据班组 161 * 然后分排班还是休班 162 * 先根据时间和班组把人查询出来 163 * 然后循环list 164 * 小A,时间,一组,排班 数量 165 * @param order 166 * @param modelMap 167 * @return 168 */ 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 tbfwScheduling 127 */ 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);//获得本月第一天,每次循环加7 151 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 dept 12 FROM de_tbfw_order_scheduling 13 WHERE 1=1 14 and date(paibanDate) between #{begintime:DATE} and #{endtime:DATE} 15 and dept =#{nick} 16 </select> 17 <select id="getListByDateAndType" resultType="TbfwScheduling"> 18 SELECT 19 id, 20 paibanDate, 21 type, 22 dept 23 FROM de_tbfw_order_scheduling 24 WHERE 1=1 25 and date(paibanDate) = #{paibanDate} 26 and type = #{type} 27 and dept = #{dept} 28 </select> 29 <insert id="insert"> 30 INSERT INTO de_tbfw_order_scheduling 31 ( 32 paibanDate, 33 type, 34 dept) 35 VALUES 36 (#{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.baiban 12 FROM (de_tbfw_order_schedulingperson a LEFT JOIN de_tbfw_order_scheduling b 13 on a.tbfwSchedulingId = b.id) 14 WHERE 1=1 15 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 SELECT 22 a.id, 23 b.id as tbfwSchedulingId, 24 c.usrno as userId, 25 c.usrname as usrname 26 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.userId 28 WHERE 1=1 29 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_schedulingperson 35 WHERE tbfwSchedulingId =#{id} 36 </delete> 37 <insert id="insert"> 38 INSERT INTO de_tbfw_order_schedulingperson 39 (tbfwSchedulingId, 40 userId, 41 baiban) 42 VALUES 43 ( #{param1}, 44 #{param2}, 45 #{param3}); 46 </insert> 47 48 <select id="statisticsTbfwScheduling" resultType="TbfwSchedulingPerson"> 49 SELECT 50 COUNT(p.id) AS statisticsCount, 51 c.dept, 52 c.type, 53 p.userId, 54 p.baiban 55 FROM 56 de_tbfw_order_schedulingperson p , 57 de_tbfw_order_scheduling c 58 where 59 p.tbfwSchedulingId = c.id 60 and 61 date(c.paibanDate) between #{beginTime:DATE} and #{endTime:DATE} 62 AND c.dept =#{dept} 63 GROUP BY 64 p.userId, 65 c.dept, 66 c.type, 67 p.baiban 68 </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="/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"> </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 </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="/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"> </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> </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="/autoTbfwScheduling.do"/>", type : "post", data : { type : "值班", paibanDate : day, dept : dept }, dataType : "text", success : function(data) { $("div.progress").hide(); if (data == "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"> <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="${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="${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> </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="/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;"> <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>