package com.yuanchu.mom.service.impl; import cn.hutool.core.collection.CollectionUtil; 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.AuxiliaryOutputWorkingHoursDto; import com.yuanchu.mom.mapper.PowerMapper; import com.yuanchu.mom.mapper.UserMapper; import com.yuanchu.mom.pojo.AuxiliaryCorrectionHours; import com.yuanchu.mom.mapper.AuxiliaryCorrectionHoursMapper; import com.yuanchu.mom.pojo.Power; import com.yuanchu.mom.pojo.User; import com.yuanchu.mom.service.AuxiliaryCorrectionHoursService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yuanchu.mom.utils.QueryWrappers; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.regex.Pattern; import java.util.stream.Collectors; /** *

* 工时统计的修正工时 服务实现类 *

* * @author 江苏鵷雏网络科技有限公司 * @since 2024-05-29 02:38:19 */ @Service public class AuxiliaryCorrectionHoursServiceImpl extends ServiceImpl implements AuxiliaryCorrectionHoursService { @Resource AuxiliaryCorrectionHoursMapper auxiliaryCorrectionHoursMapper; @Resource GetLook getLook; @Resource UserMapper userMapper; @Resource PowerMapper powerMapper; @Override public Map selectAuxiliaryCorrectionHours(Page page, AuxiliaryCorrectionHoursDto auxiliaryCorrectionHoursDto) { Map map = new HashMap<>(); List ids = new ArrayList<>(); map.put("head", PrintChina.printChina(AuxiliaryCorrectionHoursDto.class)); //判断组长,组员,管理员权限 Map map1 = getLook.selectPowerByMethodAndUserId("selectAuxiliaryCorrectionHours"); 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) { //是组员 auxiliaryCorrectionHoursDto.setNameUser(map1.get("userId")); } else { //管理员(不添加限制条件所有人都可以看) } } else { //是组长 //查询组长下的组员 List users = userMapper.selectList(Wrappers.lambdaQuery() .like(User::getDepartLimsId, user.getDepartLimsId()) .eq(User::getState, 1)); if (ObjectUtils.isNotEmpty(users)) { ids.addAll(users.stream().map(User::getId).distinct().collect(Collectors.toList())); } } String departLims = auxiliaryCorrectionHoursDto.getDepartLims(); auxiliaryCorrectionHoursDto.setDepartLims(null); if (ObjectUtils.isNotEmpty(departLims)) { //先模糊查询出来id List ides = auxiliaryCorrectionHoursMapper.selDepartLimsByName(departLims); for (Integer ide : ides) { List users = userMapper.selectList(Wrappers.lambdaQuery() .like(User::getDepartLimsId, ide) .eq(User::getState, 1)); if (ObjectUtils.isNotEmpty(users)) { ids.clear(); ids.addAll(users.stream().map(User::getId).distinct().collect(Collectors.toList())); } } } map.put("body", auxiliaryCorrectionHoursMapper.selectAuxiliaryCorrectionHours(page, QueryWrappers.queryWrappers(auxiliaryCorrectionHoursDto).eq("month", auxiliaryCorrectionHoursDto.getMonth()), ids)); return map; } //导入上传 @Override public void importExcel(List list) { if (CollectionUtil.isEmpty(list)) { return; } List auxiliaryCorrectionHoursList = new ArrayList<>(); List auxiliaryCorrectionHoursList1 = new ArrayList<>(); for (AuxiliaryCorrectionHoursDto auxiliaryCorrectionHoursDto : list) { AuxiliaryCorrectionHours auxiliaryCorrectionHours = new AuxiliaryCorrectionHours(); User user = userMapper.selectOne(Wrappers.lambdaQuery().eq(User::getName, auxiliaryCorrectionHoursDto.getName())); if (ObjectUtils.isEmpty(user)) { throw new RuntimeException("系统没有查到" + auxiliaryCorrectionHoursDto.getName() + "这个用户信息!"); } String regex = "\\d{4}-\\d{2}"; if (!Pattern.matches(regex,auxiliaryCorrectionHoursDto.getMonth())) { throw new RuntimeException(auxiliaryCorrectionHoursDto.getMonth() + "格式不正确,月份格式应为yyyy-MM"); } BeanUtils.copyProperties(auxiliaryCorrectionHoursDto, auxiliaryCorrectionHours); auxiliaryCorrectionHours.setNameUser(user.getId()); AuxiliaryCorrectionHours auxiliaryCorrectionHours1 = auxiliaryCorrectionHoursMapper.selectOne(Wrappers.lambdaQuery() .eq(AuxiliaryCorrectionHours::getNameUser, user.getId()) .eq(AuxiliaryCorrectionHours::getType, auxiliaryCorrectionHours.getType()) .eq(AuxiliaryCorrectionHours::getMonth, auxiliaryCorrectionHours.getMonth())); if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours1)) { auxiliaryCorrectionHoursList1.add(auxiliaryCorrectionHours); } else { auxiliaryCorrectionHoursList.add(auxiliaryCorrectionHours); } } //批量新增 saveBatch(auxiliaryCorrectionHoursList); //批量修改 updateBatchById(auxiliaryCorrectionHoursList1); } }