zouyu
2025-03-19 3647aa5008055528f075ee73002542a1399575ae
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java
@@ -27,6 +27,7 @@
import com.ruoyi.personnel.service.PersonTrainingDetailedService;
import com.ruoyi.personnel.service.PersonTrainingRecordService;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -214,7 +215,7 @@
    @Override
    public void outOfFocusPreservation(PersonTrainingRecord personTrainingRecord) {
        int userId = SecurityUtils.getUserId().intValue();
        int userId = Integer.parseInt(SecurityUtils.getUserId().toString());
        // 培训通过了,培训课时计入到当天的辅助工时 (辅助工时 以及 核准工时都添加)
        baseMapper.updateById(personTrainingRecord);
        PersonTrainingDetailed personTrainingDetailed = personTrainingDetailedMapper.selectById(personTrainingRecord.getCourseId());
@@ -224,71 +225,94 @@
            if(StringUtils.isEmpty(trainingDateTwo)) {
                throw new ErrorException("没有设置培训日期无法添加辅助工时");
            }
            AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay = auxiliaryWorkingHoursDayService.selectAuxiliaryWorkingHoursByNumber("401");
            // 是否以及添加过了
            List<AuxiliaryWorkingHoursDay> auxiliaryWorkingHoursDays = auxiliaryWorkingHoursDayMapper.selectList(new LambdaQueryWrapper<AuxiliaryWorkingHoursDay>()
                    .eq(AuxiliaryWorkingHoursDay::getNameUser, personTrainingRecord.getUserId())
                    .eq(AuxiliaryWorkingHoursDay::getAuxiliaryProject, personTrainingDetailed.getTrainingContent())
                    .eq(AuxiliaryWorkingHoursDay::getCreateUser, userId)
                    .eq(AuxiliaryWorkingHoursDay::getAuxiliaryProject,auxiliaryWorkingHoursDay.getAuxiliaryProject())
                    .eq(AuxiliaryWorkingHoursDay::getDateTime, trainingDateTwo + " 00:00:00"));
            // 如果有数据 合格就不做处理   不合格就删除
            if(CollectionUtils.isNotEmpty(auxiliaryWorkingHoursDays)) {
                if(personTrainingRecord.getExaminationResults().equals("不合格")) {
                    auxiliaryWorkingHoursDayMapper.delete(new LambdaQueryWrapper<AuxiliaryWorkingHoursDay>()
                            .eq(AuxiliaryWorkingHoursDay::getNameUser, personTrainingRecord.getUserId())
                            .eq(AuxiliaryWorkingHoursDay::getAuxiliaryProject, personTrainingDetailed.getTrainingContent())
                            .eq(AuxiliaryWorkingHoursDay::getCreateUser, userId)
                            .eq(AuxiliaryWorkingHoursDay::getAuxiliaryProject, auxiliaryWorkingHoursDay.getAuxiliaryProject())
                            .eq(AuxiliaryWorkingHoursDay::getDateTime, trainingDateTwo + " 00:00:00"));
                }
            }
            // 如果是检测办的人就不用加
            User user = userMapper.selectById(personTrainingRecord.getUserId());
            if(user.getDepartLimsId().contains("22")) {
                return;
            }
            // 一节课45分钟 工时60分钟
            BigDecimal minute = BigDecimal.valueOf(classHour).multiply(new BigDecimal("45")); // 具体分钟
            BigDecimal divide = minute.divide(new BigDecimal("60"),4, RoundingMode.HALF_UP); // 工时
            // 添加数据
            AuxiliaryWorkingHoursDay a = new AuxiliaryWorkingHoursDay();
            a.setNameUser(personTrainingRecord.getUserId()); // 姓名id
            // 项目名称
            a.setRemarks(personTrainingDetailed.getTrainingContent()); //  辅助说明
            a.setNumber("401"); // 编号
            a.setAuxiliaryProject(auxiliaryWorkingHoursDay.getAuxiliaryProject()); // 辅助项目名称
            a.setNonproductiveTime(Double.parseDouble(divide.toString())); // 辅助工时
            a.setApprovedWorkingHour(auxiliaryWorkingHoursDay.getApprovedWorkingHour()); // 核准工时
            a.setAmount(Double.parseDouble(divide.toString())); // 数量
            String year = trainingDateTwo.split("-")[0];
            a.setYear(year); // 年
            a.setCreateTime(LocalDateTime.now());
            a.setUpdateTime(LocalDateTime.now());
            a.setCreateUser(userId); // 创建人id
            a.setUpdateUser(userId); // 修改人id
            a.setState("已提交"); // 状态
            a.setDateTime(trainingDateTwo + " 00:00:00"); // 日期
            // 获取当前日期
            LocalDate today = LocalDate.now();
            // 获取当前日期的周次(一年中的第几周)
            TemporalField weekOfYear = WeekFields.of(Locale.getDefault()).weekOfYear();
            int weekNumber = today.get(weekOfYear);
            // 获取当前日期的星期(一周中的第几天)
            DayOfWeek dayOfWeek = today.getDayOfWeek();
            int dayOfWeekNumber = dayOfWeek.getValue();
            LocalDate now = LocalDate.now();
            LocalTime parse = LocalTime.parse("00:00:00");
            LocalDateTime of = LocalDateTime.of(now, parse);
            PerformanceShift performanceShift = shiftMapper.selectOne(new LambdaQueryWrapper<PerformanceShift>().eq(PerformanceShift::getWorkTime, of)
                    .eq(PerformanceShift::getUserId, personTrainingRecord.getUserId()));
            if(Objects.nonNull(performanceShift)) {
                a.setShift(performanceShift.getShift()); // 班次
            }
            a.setWeek(weekNumber+""); // 周次
            a.setWeekDay(dayOfWeekNumber == 7 ? 0+"" : dayOfWeekNumber+""); // 星期
            // 是否通过
            if(personTrainingRecord.getExaminationResults().equals("合格") && CollectionUtils.isEmpty(auxiliaryWorkingHoursDays)) {
                // 如果是检测办的人就不用加
                User user = userMapper.selectById(personTrainingRecord.getUserId());
                if(user.getDepartLimsId().contains("22")) {
                    return;
                }
                // 一节课45分钟 工时60分钟
                BigDecimal minute = BigDecimal.valueOf(classHour).multiply(new BigDecimal("45")); // 具体分钟
                BigDecimal divide = minute.divide(new BigDecimal("60"),4, RoundingMode.HALF_UP); // 工时
                // 添加数据
                AuxiliaryWorkingHoursDay a = new AuxiliaryWorkingHoursDay();
                a.setNameUser(personTrainingRecord.getUserId()); // 姓名id
                // 项目名称
                a.setRemarks(personTrainingDetailed.getTrainingContent()); //  辅助说明
                a.setNumber("401"); // 编号
                AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay = auxiliaryWorkingHoursDayService.selectAuxiliaryWorkingHoursByNumber("401");
                a.setAuxiliaryProject(auxiliaryWorkingHoursDay.getAuxiliaryProject()); // 辅助项目名称
                a.setNonproductiveTime(Double.parseDouble(divide.toString())); // 辅助工时
                a.setApprovedWorkingHour(auxiliaryWorkingHoursDay.getApprovedWorkingHour()); // 核准工时
                a.setAmount(Double.parseDouble(divide.toString())); // 数量
                String year = trainingDateTwo.split("-")[0];
                a.setYear(year); // 年
                a.setCreateTime(LocalDateTime.now());
                a.setUpdateTime(LocalDateTime.now());
                a.setCreateUser(userId); // 创建人id
                a.setUpdateUser(userId); // 修改人id
                a.setState("已提交"); // 状态
                a.setDateTime(trainingDateTwo + " 00:00:00"); // 日期
                // 获取当前日期
                LocalDate today = LocalDate.now();
                // 获取当前日期的周次(一年中的第几周)
                TemporalField weekOfYear = WeekFields.of(Locale.getDefault()).weekOfYear();
                int weekNumber = today.get(weekOfYear);
                // 获取当前日期的星期(一周中的第几天)
                DayOfWeek dayOfWeek = today.getDayOfWeek();
                int dayOfWeekNumber = dayOfWeek.getValue();
                LocalDate now = LocalDate.now();
                LocalTime parse = LocalTime.parse("00:00:00");
                LocalDateTime of = LocalDateTime.of(now, parse);
                PerformanceShift performanceShift = shiftMapper.selectOne(new LambdaQueryWrapper<PerformanceShift>().eq(PerformanceShift::getWorkTime, of)
                        .eq(PerformanceShift::getUserId, personTrainingRecord.getUserId()));
                if(Objects.nonNull(performanceShift)) {
                    a.setShift(performanceShift.getShift()); // 班次
                }
                a.setWeek(weekNumber+""); // 周次
                a.setWeekDay(dayOfWeekNumber == 7 ? 0+"" : dayOfWeekNumber+""); // 星期
                auxiliaryWorkingHoursDayMapper.insert(a);
            }
            // 培训讲师也要加上相应的工时
            String trainingLecturerId = personTrainingDetailed.getTrainingLecturerId();
            String[] split = trainingLecturerId.split(",");
            for (String name : split) {
                if(StringUtils.isNotEmpty(name)) {
                    User user1 = userMapper.selectList(new LambdaQueryWrapper<User>().like(User::getName, name)).get(0);
                    if(user1.getDepartLimsId().contains("22")) {
                        continue;
                    }
                    // 添加过了就不再添加
                    List<AuxiliaryWorkingHoursDay> list = auxiliaryWorkingHoursDayMapper.selectList(new LambdaQueryWrapper<AuxiliaryWorkingHoursDay>()
                            .eq(AuxiliaryWorkingHoursDay::getNameUser, user1.getId())
                            .eq(AuxiliaryWorkingHoursDay::getAuxiliaryProject, auxiliaryWorkingHoursDay.getAuxiliaryProject())
                            .eq(AuxiliaryWorkingHoursDay::getDateTime, trainingDateTwo + " 00:00:00"));
                    if(CollectionUtils.isNotEmpty(list)) {
                        continue;
                    }
                    AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay1 = new AuxiliaryWorkingHoursDay(); // 用于添加培训讲师
                    BeanUtils.copyProperties(a,auxiliaryWorkingHoursDay1);
                    auxiliaryWorkingHoursDay1.setNameUser(user1.getId());
                    auxiliaryWorkingHoursDay1.setId(null);
                    auxiliaryWorkingHoursDayMapper.insert(auxiliaryWorkingHoursDay1);
                }
            }
        }
    }