package com.yuanchu.mom.service.impl; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.mom.common.GetLook; import com.yuanchu.mom.common.PrintChina; import com.yuanchu.mom.dto.AuxiliaryWorkingHoursDayDto; import com.yuanchu.mom.exception.ErrorException; import com.yuanchu.mom.mapper.*; import com.yuanchu.mom.pojo.*; import com.yuanchu.mom.service.AuxiliaryWorkingHoursDayService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yuanchu.mom.utils.MyUtil; import com.yuanchu.mom.utils.QueryWrappers; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 日工时管理的辅助工时 服务实现类 *

* * @author 江苏鵷雏网络科技有限公司 * @since 2024-05-28 02:22:19 */ @Service public class AuxiliaryWorkingHoursDayServiceImpl extends ServiceImpl implements AuxiliaryWorkingHoursDayService { @Resource AuxiliaryWorkingHoursDayMapper auxiliaryWorkingHoursDayMapper; @Resource AuxiliaryWorkingHoursMapper auxiliaryWorkingHoursMapper; @Resource GetLook getLook; @Resource UserMapper userMapper; @Resource RoleMapper roleMapper; @Resource PowerMapper powerMapper; @Resource PerformanceShiftMapper performanceShiftMapper; @Override public Map selectAuxiliaryWorkingHoursDay(Page page, AuxiliaryWorkingHoursDayDto auxiliaryWorkingHoursDayDto) { String dates = auxiliaryWorkingHoursDayDto.getDateTime(); String week = auxiliaryWorkingHoursDayDto.getWeek(); auxiliaryWorkingHoursDayDto.setDateTime(null); auxiliaryWorkingHoursDayDto.setWeek(null); Map map = new HashMap<>(); List ids = new ArrayList<>(); map.put("head", PrintChina.printChina(AuxiliaryWorkingHoursDayDto.class)); //判断组长,组员,管理员权限 Map map1 = getLook.selectPowerByMethodAndUserId("selectAuxiliaryWorkingHoursDay"); User user = userMapper.selectById(map1.get("userId")); Integer roleId = user.getRoleId(); Power power = powerMapper.selectOne(Wrappers.lambdaQuery().eq(Power::getRoleId, roleId).eq(Power::getMenuMethod, "leader")); if (ObjectUtils.isEmpty(power)) { //不是组长 if (map1.get("look") == 1) { //是组员 auxiliaryWorkingHoursDayDto.setNameUser(map1.get("userId")); } else { //管理员(不添加限制条件所有人都可以看) } } else { //是组长 //查询组员 List users = userMapper.selectList(Wrappers.lambdaQuery().like(User::getDepartLimsId, user.getDepartLimsId())); if (ObjectUtils.isNotEmpty(users)) { ids.addAll(users.stream().map(User::getId).distinct().collect(Collectors.toList())); } } if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isNotEmpty(week)) { String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); map.put("body", auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page, QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto) .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59") .ge("week", weeks[0]).le("week", weeks[1]), ids)); } else if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isEmpty(week)) { String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); map.put("body", auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page, QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto) .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59"), ids)); } else if (ObjectUtils.isEmpty(dates) && ObjectUtils.isNotEmpty(week)) { String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); map.put("body", auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page, QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto) .ge("week", weeks[0]).le("week", weeks[1]), ids)); } else { map.put("body", auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page, QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto), ids)); } return map; } //根据编号查询辅助工时配置信息 @Override public AuxiliaryWorkingHoursDay selectAuxiliaryWorkingHoursByNumber(String number) { //根据填写的编号查询辅助工时配置 AuxiliaryWorkingHours auxiliaryWorkingHours = auxiliaryWorkingHoursMapper.selectOne(Wrappers.lambdaQuery().eq(AuxiliaryWorkingHours::getNumber, number)); if (ObjectUtils.isEmpty(auxiliaryWorkingHours)) { throw new RuntimeException("该编号没有对应的辅助工时配置"); } AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay = new AuxiliaryWorkingHoursDay(); BeanUtils.copyProperties(auxiliaryWorkingHours, auxiliaryWorkingHoursDay); return auxiliaryWorkingHoursDay; } //录入数据(新增) @Override public int insertAuxiliaryWorkingHoursDay(AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay) { Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); auxiliaryWorkingHoursDay.setNameUser(userId);//姓名id auxiliaryWorkingHoursDay.setState("已提交"); return auxiliaryWorkingHoursDayMapper.insert(auxiliaryWorkingHoursDay); } //审核/批准 @Override public int checkOrApprove(AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay) { if (auxiliaryWorkingHoursDay.getState().equals("已审核")) { Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); auxiliaryWorkingHoursDay.setReviewer(userMapper.selectById(userId).getName()); } return auxiliaryWorkingHoursDayMapper.updateById(auxiliaryWorkingHoursDay); } //编辑 @Override public int updateAuxiliaryWorkingHoursDay(AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay) { Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); auxiliaryWorkingHoursDay.setNameUser(userId);//姓名id return auxiliaryWorkingHoursDayMapper.updateById(auxiliaryWorkingHoursDay); } //删除 @Override public int deleteAuxiliaryWorkingHoursDay(Integer id) { return auxiliaryWorkingHoursDayMapper.deleteById(id); } //根据编号当前用户信息查询所在班次 @Override public String selectshiftByUser(LocalDateTime dateTime) { Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); PerformanceShift performanceShift = performanceShiftMapper.selectOne(Wrappers.lambdaQuery().eq(PerformanceShift::getUserId, userId).eq(PerformanceShift::getWorkTime, dateTime)); if (ObjectUtils.isEmpty(performanceShift)) { return null; } return performanceShift.getShift(); } }