Crunchy
2024-05-08 907e38b9b4079d29a8b63778226f723528f0053f
2024-5-8 绩效管理-班次后端开发完成
已修改3个文件
62 ■■■■ 文件已修改
performance-server/src/main/java/com/yuanchu/mom/mapper/PerformanceShiftMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/yuanchu/mom/service/impl/PerformanceShiftServiceImpl.java 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/yuanchu/mom/mapper/PerformanceShiftMapper.java
@@ -1,8 +1,8 @@
package com.yuanchu.mom.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.mybatis_config.MyBaseMapper;
import com.yuanchu.mom.pojo.PerformanceShift;
import org.springframework.data.repository.query.Param;
@@ -16,7 +16,7 @@
 * @author 江苏鵷雏网络科技有限公司
 * @since 2024-05-08 09:12:04
 */
public interface PerformanceShiftMapper extends BaseMapper<PerformanceShift> {
public interface PerformanceShiftMapper extends MyBaseMapper<PerformanceShift> {
    IPage<Map<String, Object>> performanceShiftPage(
            Page<Object> page,
performance-server/src/main/java/com/yuanchu/mom/service/impl/PerformanceShiftServiceImpl.java
@@ -2,6 +2,7 @@
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.dto.PerformanceShiftAddDto;
@@ -12,10 +13,13 @@
import com.yuanchu.mom.service.PerformanceShiftService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
/**
@@ -32,17 +36,51 @@
    @Autowired
    private EnumService enumService;
    public List<PerformanceShift> list = new ArrayList<>();
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void performanceShiftAdd(PerformanceShiftAddDto performanceShiftAddDto) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String formattedDateTime = performanceShiftAddDto.getStartWeek().format(formatter);
        boolean exists = baseMapper.exists(Wrappers.<PerformanceShift>lambdaQuery()
                .eq(PerformanceShift::getWorkTime, formattedDateTime));
        String[] splitUserId = performanceShiftAddDto.getUserId().split(",");
        // 如果不存在添加数据
        if (!exists) {
            LocalDate firstDayOfMonth = performanceShiftAddDto.getEndWeek().toLocalDate().withDayOfMonth(1);
            LocalDate lastDayOfMonth = performanceShiftAddDto.getEndWeek().toLocalDate().with(TemporalAdjusters.lastDayOfMonth());
            List<LocalDateTime> localDateTimesBetween = getLocalDateTimesBetween(firstDayOfMonth.atStartOfDay(), lastDayOfMonth.atStartOfDay());
            localDateTimesBetween.forEach(i -> {
                for (String s : splitUserId) {
                    PerformanceShift performanceShift = new PerformanceShift();
                    performanceShift.setUserId(Integer.valueOf(s));
                    performanceShift.setWorkTime(i);
                    performanceShift.setShift("");
                    list.add(performanceShift);
                }
                if (list.size() >= 1000) {
                    baseMapper.insertBatchSomeColumn(list);
                    list.clear();
                }
            });
            if (!list.isEmpty()) {
                baseMapper.insertBatchSomeColumn(list);
            }
        }
        // 再次更新
        List<LocalDateTime> datesBetween = getLocalDateTimesBetween(performanceShiftAddDto.getStartWeek(), performanceShiftAddDto.getEndWeek());
        for (LocalDateTime date : datesBetween) {
            String[] splitUserId = performanceShiftAddDto.getUserId().split(",");
            for (String s : splitUserId) {
                PerformanceShift performanceShift = new PerformanceShift();
                performanceShift.setShift(performanceShiftAddDto.getShift());
                performanceShift.setUserId(Integer.valueOf(s));
                performanceShift.setWorkTime(date);
                baseMapper.insert(performanceShift);
                String formatterDateTime = date.format(formatter);
                baseMapper.update(new PerformanceShift(), Wrappers.<PerformanceShift>lambdaUpdate()
                        .set(PerformanceShift::getShift, performanceShiftAddDto.getShift())
                        .eq(PerformanceShift::getUserId, s)
                        .eq(PerformanceShift::getWorkTime, formatterDateTime));
            }
        }
    }
@@ -60,14 +98,16 @@
                Map<Object, Object> hashMap = new HashMap<>();
                String[] shiftTimeAndShift = shiftTime.split(":");
                for (Enums enums : shiftType) {
                    int num = 0;
                    if (!i.containsKey(enums.getLabel())) {
                        i.put(enums.getLabel(), 0);
                    }
                    if (enums.getValue().equals(shiftTimeAndShift[1])) {
                        num++;
                        Integer num = (Integer) i.get(enums.getLabel());
                        i.put(enums.getLabel(), num += 1);
                    }
                    i.put(enums.getLabel(), num);
                    if (!enums.getValue().equals("3") && !enums.getValue().equals("4")) {
                        i.put("totalAttendance", totalAttendance += num);
                    }
                }
                if (shiftTimeAndShift[1].equals("1") || shiftTimeAndShift[1].equals("2") || shiftTimeAndShift[1].equals("0")) {
                    i.put("totalAttendance", totalAttendance += 1);
                }
                hashMap.put("id", shiftTimeAndShift[2]);
                hashMap.put("shift", shiftTimeAndShift[1]);
performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml
@@ -5,7 +5,7 @@
    <select id="performanceShiftPage" resultType="map">
        SELECT
        if(u.department is not null and u.department != '', CONCAT(u.name, '(', u.department, ')'), u.name) name,
        GROUP_CONCAT(s.work_time, ':', s.shift, ':', s.id SEPARATOR ';') AS shiftTime
        GROUP_CONCAT(s.work_time, ':', s.shift, ':', s.id order by s.work_time SEPARATOR ';') AS shiftTime
        FROM performance_shift s
        LEFT JOIN user u on u.id = s.user_id
        <where>