zxl
4 天以前 c83101eb62f5d4906b9c01ceea6b21a37f9e84d8
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
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<DailyMonitorDemeritRecordMapper,DailyMonitorDemeritRecord>
        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<DailyMonitorDemeritRecord> 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<DailyMonitorDemeritRecordExp> exps = new ArrayList<>();
            List<ExcelExp> 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<List<ExcelExp>> util = new ExcelUtilManySheet<>(mySheet);
            util.exportExcelManySheet(httpServletResponse, mySheet);
        }
 
 
 
    }
}