package com.ruoyi.performance.service.impl; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.domain.entity.User; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.QueryWrappers; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.performance.dto.AuxiliaryWorkingHoursDayDto; import com.ruoyi.performance.dto.HoursDay; import com.ruoyi.performance.mapper.AuxiliaryWorkingHoursDayMapper; import com.ruoyi.performance.mapper.AuxiliaryWorkingHoursMapper; import com.ruoyi.performance.mapper.PerformanceShiftMapper; import com.ruoyi.performance.pojo.AuxiliaryWorkingHours; import com.ruoyi.performance.pojo.AuxiliaryWorkingHoursDay; import com.ruoyi.performance.pojo.PerformanceShift; import com.ruoyi.performance.service.AuxiliaryWorkingHoursDayService; import com.ruoyi.system.mapper.UserMapper; import org.apache.commons.math3.analysis.function.Power; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 日工时管理的辅助工时 服务实现类 *

* * @author 江苏鵷雏网络科技有限公司 * @since 2024-05-28 02:22:19 */ @Service public class AuxiliaryWorkingHoursDayServiceImpl extends ServiceImpl implements AuxiliaryWorkingHoursDayService { @Resource AuxiliaryWorkingHoursDayMapper auxiliaryWorkingHoursDayMapper; @Resource AuxiliaryWorkingHoursMapper auxiliaryWorkingHoursMapper; @Resource UserMapper userMapper; @Resource PerformanceShiftMapper performanceShiftMapper; @Override public IPage selectAuxiliaryWorkingHoursDay(Page page, AuxiliaryWorkingHoursDayDto auxiliaryWorkingHoursDayDto) { String dates = auxiliaryWorkingHoursDayDto.getDateTime(); String week = auxiliaryWorkingHoursDayDto.getWeek(); auxiliaryWorkingHoursDayDto.setDateTime(null); auxiliaryWorkingHoursDayDto.setWeek(null); Map map = new HashMap<>(); List ids = new ArrayList<>(); if (ids.size() == 0) { ids = null; } if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isNotEmpty(week)) { String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); IPage auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page, QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto) .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59") .ge("week", weeks[0]).le("week", weeks[1]), ids); for (AuxiliaryWorkingHoursDayDto record : auxiliaryWorkingHoursDayDtoIPage.getRecords()) { record.setDateTime(record.getDateTime().substring(0, 10)); } return auxiliaryWorkingHoursDayDtoIPage; } else if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isEmpty(week)) { String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); IPage auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page, QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto) .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59"), ids); for (AuxiliaryWorkingHoursDayDto record : auxiliaryWorkingHoursDayDtoIPage.getRecords()) { record.setDateTime(record.getDateTime().substring(0, 10)); } return auxiliaryWorkingHoursDayDtoIPage; } else if (ObjectUtils.isEmpty(dates) && ObjectUtils.isNotEmpty(week)) { String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); IPage auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page, QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto) .ge("week", weeks[0]).le("week", weeks[1]), ids); for (AuxiliaryWorkingHoursDayDto record : auxiliaryWorkingHoursDayDtoIPage.getRecords()) { record.setDateTime(record.getDateTime().substring(0, 10)); } return auxiliaryWorkingHoursDayDtoIPage; } else { IPage auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page, QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto), ids); for (AuxiliaryWorkingHoursDayDto record : auxiliaryWorkingHoursDayDtoIPage.getRecords()) { record.setDateTime(record.getDateTime().substring(0, 10)); } return auxiliaryWorkingHoursDayDtoIPage; } } //根据编号查询辅助工时配置信息 @Override public AuxiliaryWorkingHoursDay selectAuxiliaryWorkingHoursByNumber(String number) { //根据填写的编号查询辅助工时配置 AuxiliaryWorkingHours auxiliaryWorkingHours = auxiliaryWorkingHoursMapper.selectOne(Wrappers.lambdaQuery().eq(AuxiliaryWorkingHours::getNumber, number)); if (ObjectUtils.isEmpty(auxiliaryWorkingHours)) { throw new BaseException("该编号没有对应的辅助工时配置"); } AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay = new AuxiliaryWorkingHoursDay(); BeanUtils.copyProperties(auxiliaryWorkingHours, auxiliaryWorkingHoursDay); return auxiliaryWorkingHoursDay; } //录入数据(新增) @Override public int insertAuxiliaryWorkingHoursDay(AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay) { Integer userId = SecurityUtils.getUserId().intValue(); auxiliaryWorkingHoursDay.setNameUser(userId);//姓名id auxiliaryWorkingHoursDay.setState("已提交"); return auxiliaryWorkingHoursDayMapper.insert(auxiliaryWorkingHoursDay); } //审核/批准 @Override public boolean checkOrApprove(HoursDay hoursDay) { List auxiliaryWorkingHoursDays = hoursDay.getAuxiliaryWorkingHoursDays(); for (AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay : auxiliaryWorkingHoursDays) { Integer userId = SecurityUtils.getUserId().intValue(); auxiliaryWorkingHoursDay.setReviewer(userMapper.selectById(userId).getName()); if (auxiliaryWorkingHoursDay.getReviewerNumber() == null) { auxiliaryWorkingHoursDay.setReviewerNumber(auxiliaryWorkingHoursDay.getAmount());//复核数量 auxiliaryWorkingHoursDay.setReviewerNonproductiveTime(auxiliaryWorkingHoursDay.getNonproductiveTime());//复核工时 } } return updateBatchById(auxiliaryWorkingHoursDays); } //编辑 @Override public int updateAuxiliaryWorkingHoursDay(AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay) { Integer userId = SecurityUtils.getUserId().intValue(); auxiliaryWorkingHoursDay.setNameUser(userId);//姓名id return auxiliaryWorkingHoursDayMapper.updateById(auxiliaryWorkingHoursDay); } //删除 @Override public int deleteAuxiliaryWorkingHoursDay(Integer id) { return auxiliaryWorkingHoursDayMapper.deleteById(id); } //根据编号当前用户信息查询所在班次 @Override public String selectshiftByUser(LocalDateTime dateTime) { Integer userId = SecurityUtils.getUserId().intValue(); PerformanceShift performanceShift = performanceShiftMapper.selectOne(Wrappers.lambdaQuery().eq(PerformanceShift::getUserId, userId).eq(PerformanceShift::getWorkTime, dateTime)); if (ObjectUtils.isEmpty(performanceShift)) { return null; } return performanceShift.getShift(); } /** * 导出辅助工时 * @param * @param response */ @Override public void exportWorkingHours(AuxiliaryWorkingHoursDayDto auxiliaryWorkingHoursDayDto, HttpServletResponse response) { String dates = auxiliaryWorkingHoursDayDto.getDateTime(); String week = auxiliaryWorkingHoursDayDto.getWeek(); auxiliaryWorkingHoursDayDto.setDateTime(null); auxiliaryWorkingHoursDayDto.setWeek(null); List ids = new ArrayList<>(); String name = auxiliaryWorkingHoursDayDto.getName(); if (ObjectUtils.isNotEmpty(name)) { ids.addAll(userMapper.selectList(Wrappers.lambdaQuery().like(User::getName, name)).stream().map(User::getId).collect(Collectors.toList())); } List auxiliaryWorkingHoursDayDtoIPage = new ArrayList<>(); if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isNotEmpty(week)) { String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDayList(QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto) .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59") .ge("week", weeks[0]).le("week", weeks[1]), ids); } else if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isEmpty(week)) { String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDayList(QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto) .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59"), ids); } else if (ObjectUtils.isEmpty(dates) && ObjectUtils.isNotEmpty(week)) { String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDayList(QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto) .ge("week", weeks[0]).le("week", weeks[1]), ids); } else { auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDayList( QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto), ids); } try { response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("UTF-8"); // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 String fileName = URLEncoder.encode("辅助工时信息导出", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); //新建ExcelWriter ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); //获取sheet0对象 WriteSheet mainSheet = EasyExcel.writerSheet(0, "辅助工时信息导出").head(AuxiliaryWorkingHoursDayDto.class).build(); //向sheet0写入数据 传入空list这样只导出表头 excelWriter.write(auxiliaryWorkingHoursDayDtoIPage, mainSheet); //关闭流 excelWriter.finish(); } catch (IOException e) { throw new RuntimeException("导出失败"); } } }