package com.yuanchu.mom.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; 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.AuxiliaryCorrectionHoursDto; import com.yuanchu.mom.dto.AuxiliaryOriginalHoursDto; import com.yuanchu.mom.dto.AuxiliaryOriginalHoursLookDto; import com.yuanchu.mom.mapper.*; import com.yuanchu.mom.pojo.Power; import com.yuanchu.mom.pojo.User; import com.yuanchu.mom.service.AuxiliaryOriginalHoursService; import com.yuanchu.mom.utils.QueryWrappers; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service public class AuxiliaryOriginalHoursServiceImpl implements AuxiliaryOriginalHoursService { @Resource GetLook getLook; @Resource UserMapper userMapper; @Resource PowerMapper powerMapper; @Resource AuxiliaryOriginalHoursMapper auxiliaryOriginalHoursMapper; @Resource AuxiliaryOutputWorkingHoursMapper auxiliaryOutputWorkingHoursMapper; @Resource AuxiliaryWorkingHoursDayMapper auxiliaryWorkingHoursDayMapper; @Override public Map selectAuxiliaryOriginalHours(Page page, AuxiliaryOriginalHoursLookDto auxiliaryOriginalHoursLookDto) { Map map = new HashMap<>(); List ids = null; map.put("head", PrintChina.printChina(AuxiliaryCorrectionHoursDto.class)); //判断组长,组员,管理员权限 Map map1 = getLook.selectPowerByMethodAndUserId("selectAuxiliaryOriginalHours"); 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) { //是组员 ids.add(map1.get("userId")); } else { //管理员(不添加限制条件所有人都可以看) } } else { //是组长 //查询组长下的组员 List users = userMapper.selectList(Wrappers.lambdaQuery().like(User::getDepartLimsId, user.getDepartLimsId())); if (ObjectUtils.isNotEmpty(users)) { ids = users.stream().map(User::getId).distinct().collect(Collectors.toList()); } } IPage originalHoursDtoIPage = new Page<>(); originalHoursDtoIPage.setSize(page.getSize()); originalHoursDtoIPage.setCurrent(page.getCurrent()); List auxiliaryOriginalHoursDtos = null; //产量工时 List> maps = auxiliaryOutputWorkingHoursMapper.totalHours(auxiliaryOriginalHoursLookDto.getStartTime(), auxiliaryOriginalHoursLookDto.getEndTime(), auxiliaryOriginalHoursLookDto.getUserId(), auxiliaryOriginalHoursLookDto.getDepartId(), ids); Map> collect = maps.stream().collect( Collectors.groupingBy(objmap -> objmap.get("name"), Collectors.groupingBy(objmap -> objmap.get("month"), Collectors.summingDouble(objmap -> Double.parseDouble(objmap.get("output_work_time").toString()))))); //辅助工时 //辅助工时 //加班工时 //总工时 originalHoursDtoIPage.setRecords(auxiliaryOriginalHoursDtos); map.put("body", originalHoursDtoIPage); return map; } }