package com.ycl.platform.service.impl; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.platform.domain.entity.DailyMonitorDemeritRecord; import com.ycl.platform.domain.entity.DemeritRecord; import com.ycl.platform.domain.entity.MonitorConstruction; import com.ycl.platform.domain.excel.DailyMonitorDemeritRecordExp; import com.ycl.platform.service.IDailyMonitorDemeritRecordService; import com.ycl.platform.service.IDemeritRecordService; import com.ycl.platform.service.IMonitorConstructionService; import com.ycl.system.mapper.DailyMonitorDemeritRecordMapper; import com.ycl.utils.DateUtils; import enumeration.ConstructionTypeEnum; import enumeration.general.AreaDeptEnum; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import pojo.ExcelExp; import utils.poi.ExcelUtilManySheet; import java.io.IOException; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.*; /** * zgyw * * @author : zxl * @date : 2025-11-04 17:47 **/ @Service @RequiredArgsConstructor public class DailyMonitorDemeritRecordServiceImpl extends ServiceImpl implements IDailyMonitorDemeritRecordService { private final DailyMonitorDemeritRecordMapper dailyMonitorDemeritRecordMapper; private final IDemeritRecordService demeritRecordService; @Override public void getExportInfo(HttpServletResponse httpServletResponse, Integer id) throws IOException { DemeritRecord demeritRecord = demeritRecordService.getBaseMapper().selectById(id); if (demeritRecord != null) { //获得详情 Date recordTime = demeritRecord.getRecordTime(); LocalDateTime dateTime = LocalDateTime.ofInstant(recordTime.toInstant(), ZoneId.systemDefault()); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String formatted = dateTime.format(formatter); Integer deptId = demeritRecord.getDeptId(); ConstructionTypeEnum constructionTypeEnum = ConstructionTypeEnum.getEnumByName(demeritRecord.getConstructionType()); List list = new LambdaQueryChainWrapper<>(baseMapper) .ge(DailyMonitorDemeritRecord::getRecordTime, DateUtils.getDayStart(recordTime)) .le(DailyMonitorDemeritRecord::getRecordTime, DateUtils.getDayEnd(recordTime)) .eq(DailyMonitorDemeritRecord::getDeptId, deptId) .eq(DailyMonitorDemeritRecord::getConstructionType,constructionTypeEnum.getDesc()) .eq(DailyMonitorDemeritRecord::getDeleted, false) .list(); AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromDept(deptId); List exps = new ArrayList<>(); List mySheet = new ArrayList<>(); for (DailyMonitorDemeritRecord dm : list) { DailyMonitorDemeritRecordExp dailyMonitorDemeritRecordExp = new DailyMonitorDemeritRecordExp(); dailyMonitorDemeritRecordExp.setSerialNumber(dm.getSerialNumber()); dailyMonitorDemeritRecordExp.setConstructionType(constructionTypeEnum.getDesc()); if (areaDeptEnum != null) { dailyMonitorDemeritRecordExp.setDept(areaDeptEnum.getName()); }else{ dailyMonitorDemeritRecordExp.setDept("未知区域"); } dailyMonitorDemeritRecordExp.setDemerit(dm.getDemerit()); dailyMonitorDemeritRecordExp.setIsReport(dm.getIsReport() ? "已报备" :"未报备"); dailyMonitorDemeritRecordExp.setRecordTime(formatted); dailyMonitorDemeritRecordExp.setDeviceName(dm.getDeviceName()); exps.add(dailyMonitorDemeritRecordExp); } ExcelExp excelExp = new ExcelExp(areaDeptEnum == null ? "未知" : areaDeptEnum.getName(),exps,DailyMonitorDemeritRecordExp.class); mySheet.add(excelExp); ExcelUtilManySheet> util = new ExcelUtilManySheet<>(mySheet); util.exportExcelManySheet(httpServletResponse, mySheet); } } }