zss
2024-06-17 dc6a8ff2eb1dbfc532eac8d296b68e5e05a4a6e7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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;
 
/**
 * <p>
 * 工时统计的修正工时 服务实现类
 * </p>
 *
 * @author 江苏鵷雏网络科技有限公司
 * @since 2024-05-29 02:38:19
 */
@Service
public class AuxiliaryCorrectionHoursServiceImpl extends ServiceImpl<AuxiliaryCorrectionHoursMapper, AuxiliaryCorrectionHours> implements AuxiliaryCorrectionHoursService {
 
    @Resource
    AuxiliaryCorrectionHoursMapper auxiliaryCorrectionHoursMapper;
 
    @Resource
    GetLook getLook;
 
    @Resource
    UserMapper userMapper;
 
    @Resource
    PowerMapper powerMapper;
 
 
    @Override
    public Map<String, Object> selectAuxiliaryCorrectionHours(Page page, AuxiliaryCorrectionHoursDto auxiliaryCorrectionHoursDto) {
        Map<String, Object> map = new HashMap<>();
        List<Integer> ids = new ArrayList<>();
        map.put("head", PrintChina.printChina(AuxiliaryCorrectionHoursDto.class));
        //判断组长,组员,管理员权限
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectAuxiliaryCorrectionHours");
        User user = userMapper.selectById(map1.get("userId"));
        Integer roleId = user.getRoleId();
        Power power = powerMapper.selectOne(Wrappers.<Power>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<User> users = userMapper.selectList(Wrappers.<User>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<Integer> ides = auxiliaryCorrectionHoursMapper.selDepartLimsByName(departLims);
            for (Integer ide : ides) {
                List<User> users = userMapper.selectList(Wrappers.<User>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<AuxiliaryCorrectionHoursDto> list) {
        if (CollectionUtil.isEmpty(list)) {
            return;
        }
        List<AuxiliaryCorrectionHours> auxiliaryCorrectionHoursList = new ArrayList<>();
        List<AuxiliaryCorrectionHours> auxiliaryCorrectionHoursList1 = new ArrayList<>();
        for (AuxiliaryCorrectionHoursDto auxiliaryCorrectionHoursDto : list) {
            AuxiliaryCorrectionHours auxiliaryCorrectionHours = new AuxiliaryCorrectionHours();
            User user = userMapper.selectOne(Wrappers.<User>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,auxiliaryCorrectionHours.getMonth())) {
                throw new RuntimeException(auxiliaryCorrectionHoursDto.getMonth() + "格式不正确,月份格式应为yyyy-MM");
            }
            BeanUtils.copyProperties(auxiliaryCorrectionHoursDto, auxiliaryCorrectionHours);
            auxiliaryCorrectionHours.setNameUser(user.getId());
            AuxiliaryCorrectionHours auxiliaryCorrectionHours1 = auxiliaryCorrectionHoursMapper.selectOne(Wrappers.<AuxiliaryCorrectionHours>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);
    }
}