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 list) { return sysWorkBeatuistaffDao.deleteByIds(list); } @Override public int removeById(Long id) { return sysWorkBeatuistaffDao.deleteById(id); } @Override public List findInPage(SysWorkBeatuistaff sysWorkBeatuistaff, PaginationVO pageVo) { return sysWorkBeatuistaffDao.selectInPage(sysWorkBeatuistaff, pageVo); } @Override public List 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 ids = new ArrayList(); 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 list){ for (SysWorkBeatuistaff staff : list) { List currentWorks=sysWorkBeatuistaffDao.selectByCode(staff.getPaibanCode()); String staffIds=staff.getSuIds(); List a=new ArrayList(); if(staffIds!=null){ a=Arrays.asList(staffIds.split(",")); } for (SysWorkBeatuistaff obj:currentWorks) { //说明该时间段原来排班的员工被删除了,改员工的签到信息 if(!a.contains(""+obj.getSuId())){ SysUsersDao.emptySignInfoById(obj.getSuId()); }; } } }*/ /** * 获取未来的某个时间段的排班记录 */ @Override public List findPaiBanByTime(Date date, int page) { // 根据分页获取未来7天的日期 List dates = DateUtil.getFutureDay(date, 0 * page, 7 * page); SysUsers users = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); List worktimes = sysWorkTimeService.findWorkTimeByshopId(users.getShopId()); List workForms = new ArrayList(); for (Date dtime : dates) { BeautiWorkForm beautiWorkForm = new BeautiWorkForm(); beautiWorkForm.setDate(dtime); List> staffs = new ArrayList>(); 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 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 findWorkStaff(String timeStr, Long suId) { return sysWorkBeatuistaffDao.findWorkStaff(timeStr,suId); } }