tjx
2025-11-12 0c9fce323eaf89c16bc34d16dd42b3a0087bc418
更新钉钉配置
已修改1个文件
81 ■■■■ 文件已修改
src/main/java/com/gs/xky/service/Impl/VwCjScSjTsBbServiceImpl.java 81 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gs/xky/service/Impl/VwCjScSjTsBbServiceImpl.java
@@ -13,8 +13,11 @@
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @author Administrator
@@ -82,22 +85,79 @@
    }
    /**
     * 导出数据到Excel
     * 导出数据到Excel(两个sheet页)
     *
     * @param dataList 数据列表
     * @param filePath 文件路径
     */
    private void exportToExcel(List<VwCjScSjTsBb> dataList, String filePath) {
        // 创建Excel写入器
        ExcelWriter writer = ExcelUtil.getWriter(filePath);
        // 计算昨天的日期
        LocalDate yesterday = LocalDate.now().minusDays(1);
        String yesterdayStr = yesterday.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        // 计算本月的起止日期
        LocalDate today = LocalDate.now();
        LocalDate firstDayOfMonth = today.withDayOfMonth(1);
        LocalDate lastDayOfMonth = today.withDayOfMonth(today.lengthOfMonth());
        String firstDayStr = firstDayOfMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        String lastDayStr = lastDayOfMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        log.info("昨天日期: {}", yesterdayStr);
        log.info("本月范围: {} 至 {}", firstDayStr, lastDayStr);
        // 过滤数据:预计开工在昨天的数据
        List<VwCjScSjTsBb> yesterdayData = dataList.stream()
                .filter(item -> item.getYjkg() != null && item.getYjkg().startsWith(yesterdayStr))
                .collect(Collectors.toList());
        // 过滤数据:预计开工在本月的数据
        List<VwCjScSjTsBb> thisMonthData = dataList.stream()
                .filter(item -> {
                    if (item.getYjkg() == null || item.getYjkg().trim().isEmpty()) {
                        return false;
                    }
                    String yjkg = item.getYjkg().substring(0, Math.min(10, item.getYjkg().length()));
                    return yjkg.compareTo(firstDayStr) >= 0 && yjkg.compareTo(lastDayStr) <= 0;
                })
                .collect(Collectors.toList());
        log.info("昨天数据: {} 条", yesterdayData.size());
        log.info("本月数据: {} 条", thisMonthData.size());
        // 创建Excel写入器(第一个sheet)
        ExcelWriter writer = ExcelUtil.getWriter(filePath, "昨天预计开工");
        // 写入第一个sheet:昨天预计开工的数据
        writeSheetData(writer, yesterdayData, "昨天预计开工数据(" + yesterdayStr + ")");
        // 创建第二个sheet
        writer.setSheet("本月预计开工");
        // 写入第二个sheet:本月预计开工的数据
        writeSheetData(writer, thisMonthData, "本月预计开工数据(" + firstDayStr + " 至 " + lastDayStr + ")");
        // 关闭writer,释放内存
        writer.close();
    }
    /**
     * 写入单个sheet的数据
     *
     * @param writer   Excel写入器
     * @param dataList 数据列表
     * @param title    标题
     */
    private void writeSheetData(ExcelWriter writer, List<VwCjScSjTsBb> dataList, String title) {
        // 清空之前的别名设置
        writer.clearHeaderAlias();
        // 设置表头别名(中文列名)
        writer.addHeaderAlias("itemName", "物料名称");
        writer.addHeaderAlias("itemNo", "物料编码");
        writer.addHeaderAlias("departmentname", "车间名称");
        writer.addHeaderAlias("departmentcode", "车间编码");
        writer.addHeaderAlias("daa001", "工单号");
        writer.addHeaderAlias("itemNo", "物料编码");
        writer.addHeaderAlias("itemName", "物料名称");
        writer.addHeaderAlias("departmentname", "车间名称");
        writer.addHeaderAlias("lineName", "线体名称");
        writer.addHeaderAlias("departmentcode", "车间编码");
        writer.addHeaderAlias("lineNo", "线体编码");
        writer.addHeaderAlias("daa008", "工单数量");
        writer.addHeaderAlias("yjkg", "预计开工");
@@ -108,17 +168,14 @@
        writer.addHeaderAlias("rkwwg", "入库未完工");
        writer.addHeaderAlias("sqwrk", "申请未入库");
        // 合并单元格后标题行
        writer.merge(14, "车间生产数据统计报表");
        // 合并单元格作为标题行
        writer.merge(14, title);
        // 写入数据,默认会使用别名作为表头
        writer.write(dataList, true);
        // 设置列宽自适应
        writer.autoSizeColumnAll();
        // 关闭writer,释放内存
        writer.close();
    }
}