| package com.matrix.system.hive.service.imp; | 
|   | 
|   | 
| import com.matrix.core.constance.MatrixConstance; | 
| import com.matrix.core.pojo.PaginationVO; | 
| import com.matrix.core.tools.StringUtils; | 
| import com.matrix.core.tools.WebUtil; | 
| import com.matrix.system.common.bean.SysUsers; | 
| import com.matrix.system.common.dao.SysUsersDao; | 
| import com.matrix.system.hive.bean.SysWorkBeatuistaff; | 
| import com.matrix.system.hive.bean.SysWorktime; | 
| import com.matrix.system.hive.dao.SysWorkBeatuistaffDao; | 
| import com.matrix.core.tools.DateUtil; | 
| import com.matrix.system.hive.pojo.BeautiWorkForm; | 
| import com.matrix.system.hive.service.SysWorkBeatuistaffService; | 
| import com.matrix.system.hive.service.SysWorktimeService; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.transaction.annotation.Transactional; | 
|   | 
| import java.util.ArrayList; | 
| import java.util.Collections; | 
| import java.util.Date; | 
| import java.util.List; | 
|   | 
| /** | 
|  * @date 2016-07-29 11:37 | 
|  */ | 
| @Service("sysWorkBeatuistaffService") | 
| public class SysWorkBeatuistaffServiceImpl implements SysWorkBeatuistaffService { | 
|   | 
|     @Autowired | 
|     private SysWorkBeatuistaffDao sysWorkBeatuistaffDao; | 
|   | 
|     @Autowired | 
|     private SysWorktimeService sysWorkTimeService; | 
|     @Autowired | 
|     private SysUsersDao usersDao; | 
|   | 
|     @Override | 
|     public int add(SysWorkBeatuistaff sysWorkBeatuistaff) { | 
|   | 
|         return sysWorkBeatuistaffDao.insert(sysWorkBeatuistaff); | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public int modify(SysWorkBeatuistaff sysWorkBeatuistaff) { | 
|   | 
|         return sysWorkBeatuistaffDao.update(sysWorkBeatuistaff); | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public int remove(List<Long> list) { | 
|   | 
|         return sysWorkBeatuistaffDao.deleteByIds(list); | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public int removeById(Long id) { | 
|   | 
|         return sysWorkBeatuistaffDao.deleteById(id); | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public List<SysWorkBeatuistaff> findInPage(SysWorkBeatuistaff sysWorkBeatuistaff, PaginationVO pageVo) { | 
|   | 
|         return sysWorkBeatuistaffDao.selectInPage(sysWorkBeatuistaff, pageVo); | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public List<SysWorkBeatuistaff> findByModel(SysWorkBeatuistaff sysWorkBeatuistaff) { | 
|   | 
|         return sysWorkBeatuistaffDao.selectByModel(sysWorkBeatuistaff); | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public int findTotal(SysWorkBeatuistaff sysWorkBeatuistaff) { | 
|   | 
|         return sysWorkBeatuistaffDao.selectTotalRecord(sysWorkBeatuistaff); | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public SysWorkBeatuistaff findById(Long id) { | 
|   | 
|         return sysWorkBeatuistaffDao.selectById(id); | 
|   | 
|     } | 
|   | 
|     /** | 
|      * 美疗师排班 LK | 
|      */ | 
|     @Override | 
|     public int modifyWork(BeautiWorkForm workForm) { | 
|         int result = 0; | 
|         SysUsers users = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); | 
|         //删掉没有排班员工的签到信息 | 
|         //delSignInfo(workForm.getWorks()); | 
|         for (SysWorkBeatuistaff staff : workForm.getWorks()) { | 
|             // 删除当前操作的美疗师排班记录, | 
|             sysWorkBeatuistaffDao.deleteByCode(staff.getPaibanCode(),staff.getWorkId()); | 
|             // 切割页面获取的多个id 字符串 | 
|             List<String> ids = new ArrayList<String>(); | 
|             if (staff.getSuIds() == null) { | 
|                 continue; | 
|             } | 
|   | 
|             Collections.addAll(ids, staff.getSuIds().split(",")); | 
|   | 
|             for (String idStr : ids) { | 
|                 if (StringUtils.isNotBlank(idStr)) { | 
|                     SysWorkBeatuistaff beatuistaff = new SysWorkBeatuistaff(); | 
|                     beatuistaff.setStaffId(Long.parseLong(idStr)); | 
|                     beatuistaff.setPaibanCode(staff.getPaibanCode()); | 
|                     beatuistaff.setShopId(users.getShopId()); | 
|                     beatuistaff.setWorkId(staff.getWorkId()); | 
|                     result = sysWorkBeatuistaffDao.insert(beatuistaff); | 
|                 } | 
|   | 
|             } | 
|         } | 
|         return result; | 
|     } | 
|   | 
|     /*public void delSignInfo(List<SysWorkBeatuistaff> list){ | 
|         for (SysWorkBeatuistaff staff : list) { | 
|              List<SysWorkBeatuistaff> currentWorks=sysWorkBeatuistaffDao.selectByCode(staff.getPaibanCode()); | 
|              String staffIds=staff.getSuIds(); | 
|              List<String> a=new ArrayList<String>(); | 
|              if(staffIds!=null){ | 
|               a=Arrays.asList(staffIds.split(",")); | 
|              } | 
|              for (SysWorkBeatuistaff obj:currentWorks) { | 
|                  //说明该时间段原来排班的员工被删除了,改员工的签到信息 | 
|                  if(!a.contains(""+obj.getSuId())){ | 
|                      SysUsersDao.emptySignInfoById(obj.getSuId()); | 
|                  }; | 
|              } | 
|         } | 
|     }*/ | 
|   | 
|     /** | 
|      * 获取未来的某个时间段的排班记录 | 
|      */ | 
|     @Override | 
|     public List<BeautiWorkForm> findPaiBanByTime(Date date, int page) { | 
|   | 
|   | 
|         // 根据分页获取未来7天的日期 | 
|         List<Date> dates = DateUtil.getFutureDay(date, 0 * page, 7 * page); | 
|         SysUsers users = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); | 
|         List<SysWorktime> worktimes = sysWorkTimeService.findWorkTimeByshopId(users.getShopId()); | 
|   | 
|         List<BeautiWorkForm> workForms = new ArrayList<BeautiWorkForm>(); | 
|         for (Date dtime : dates) { | 
|             BeautiWorkForm beautiWorkForm = new BeautiWorkForm(); | 
|             beautiWorkForm.setDate(dtime); | 
|             List<List<SysWorkBeatuistaff>> staffs = new ArrayList<List<SysWorkBeatuistaff>>(); | 
|             for (SysWorktime sysWorktime : worktimes) { | 
|                 staffs.add(sysWorkBeatuistaffDao | 
|                         .selectByCode(DateUtil.dateToString(dtime, "yyyyMMdd") , sysWorktime.getId())); | 
|             } | 
|             beautiWorkForm.setQueryListWorks(staffs); | 
|             workForms.add(beautiWorkForm); | 
|         } | 
|         return workForms; | 
|     } | 
|   | 
|   | 
|     /** | 
|      * @description 查询当前上班的美疗师 | 
|      * @author 姜友瑶 | 
|      * @date 2015-10-08 | 
|      */ | 
|     @Override | 
|     public List<SysWorkBeatuistaff> findByDateStr(String timeStr, Long shopId) { | 
|         return sysWorkBeatuistaffDao.selectByDateStr(timeStr, shopId); | 
|     } | 
|   | 
|     //TODO 待优化 | 
|     @Override | 
|     @Transactional(rollbackFor = Exception.class) | 
|     public int staffSign(SysUsers staff) { | 
|         Long shopId = usersDao.selectById(staff.getSuId()).getShopId(); | 
|         // 当天签到的人数 | 
|         Integer maxSignOrder = usersDao.selectMaxSignOrder(shopId); | 
|         if (maxSignOrder == null) { | 
|             maxSignOrder = 1; | 
|             // 第一个签到要把其他天数的签到排序清空 | 
|             usersDao.setOldSignDateNull(shopId); | 
|         } else { | 
|             maxSignOrder = maxSignOrder + 1; | 
|         } | 
|         SysUsers modifyObj = new SysUsers(); | 
|         modifyObj.setSuId(staff.getSuId()); | 
|         modifyObj.setSignOrder(maxSignOrder); | 
|         modifyObj.setSignDate(new Date()); | 
|         int i = usersDao.updateByModel(modifyObj); | 
|         if (i > 0) { | 
|             return maxSignOrder; | 
|         } else { | 
|             return 0; | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public List<SysWorkBeatuistaff> findWorkStaff(String timeStr, Long suId) { | 
|         return sysWorkBeatuistaffDao.findWorkStaff(timeStr,suId); | 
|     } | 
| } |