sgj
2026-03-09 4f4e7d8f32289be22bccadbe338abef784070393
导出添加制表人,制表时间,查询时间
已修改5个文件
234 ■■■■ 文件已修改
fzzy-igdss-core/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/ReportInDetail.view.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/ReportOutDetail.view.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/ReportStore.view.xml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/java/com/fzzy/common/ExportController.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -48,6 +48,7 @@
 * @author ruoyi
 */
public class ExcelUtil<T> {
    public static final String FORMULA_REGEX_STR = "=|-|\\+|@";
    public static final String[] FORMULA_STR = {"=", "-", "+", "@"};
    /**
@@ -107,6 +108,19 @@
     * 标题
     */
    private String title;
    /**
     * 搜索时间
     */
    private String timeDesc;
    /**
     * 制表人
     */
    private String createUser;
    /**
     * 制表时间
     */
    private Date createTime;
    /**
     * 最大高度
     */
@@ -306,6 +320,24 @@
        createSubHead();
    }
    public void init(List<T> list, String sheetName, String title, Type type, String timeDesc, String createUser, Date createTime) {
        if (list == null) {
            list = new ArrayList<T>();
        }
        this.list = list;
        this.sheetName = sheetName;
        this.type = type;
        this.title = title;
        this.timeDesc = timeDesc;
        this.createUser = createUser;
        this.createTime = createTime;
        createExcelField();
        createWorkbook();
        createTitle();
        createSecondHead();
        createSubHead();
    }
    /**
     * 创建excel第一行标题
     */
@@ -325,6 +357,52 @@
            sheet.addMergedRegion(new CellRangeAddress(titleRow.getRowNum(), titleRow.getRowNum(), titleRow.getRowNum(), titleLastCol));
        }
    }
    /**
     * 创建第二行自定义内容
     *
     * @author sgj
     * @since 2026/03/09
     */
    public void createSecondHead() {
        if (StringUtils.isNotBlank(timeDesc) && StringUtils.isNotBlank(createUser) && createTime != null) {
            subMergedFirstRowNum++;
            subMergedLastRowNum++;
            //第二行,添加搜索时间,创建人, 创建时间信息
            Row secondRow = sheet.createRow(rownum);
            secondRow.setHeightInPoints(30);
            int titleLastCol = this.fields.size() - 1;
            if (isSubList()) {
                titleLastCol = titleLastCol + subFields.size() - 1;
            }
            // 创建三个单元格,分别用于搜索时间、创建人、创建时间
            // 第一列:搜索时间
            Cell timeDescCell = secondRow.createCell(0);
            timeDescCell.setCellValue("查询时间:"+timeDesc);
            timeDescCell.setCellStyle(styles.get("secTitle"));
            // 中间列:创建人
            int createUserCol = (titleLastCol + 1) / 2;
            Cell createUserCell = secondRow.createCell(createUserCol);
            createUserCell.setCellValue("制表人:"+createUser);
            createUserCell.setCellStyle(styles.get("secTitle"));
            // 最后一列:创建时间
            Cell createTimeCell = secondRow.createCell(titleLastCol - 1);
            createTimeCell.setCellValue("制表时间:"+parseDateToStr("yyyy-MM-dd HH:mm:ss", createTime));
            createTimeCell.setCellStyle(styles.get("secTitle"));
            // 合并单元格
            sheet.addMergedRegion(new CellRangeAddress(secondRow.getRowNum(), secondRow.getRowNum(), 0, 1));
            sheet.addMergedRegion(new CellRangeAddress(secondRow.getRowNum(), secondRow.getRowNum(), createUserCol, createUserCol + 1));
            sheet.addMergedRegion(new CellRangeAddress(secondRow.getRowNum(), secondRow.getRowNum(), titleLastCol - 1, titleLastCol));
            rownum++;
        }
    }
    /**
     * 创建对象的子列表名称
@@ -532,6 +610,27 @@
        this.init(list, sheetName, title, Type.EXPORT);
        return exportExcel();
    }
    /**
     * 对list数据源将其里面的数据导入到excel表单
     *
     * @param list       导出数据集合
     * @param sheetName  工作表的名称
     * @param title      标题
     * @param timeDesc   查询时间
     * @param createUser 制表人
     * @param createTime 制表时间
     * @return 结果
     */
    public AjaxResult exportExcel(List<T> list, String sheetName, String title, String timeDesc, String createUser, Date createTime) {
        if (StringUtils.isBlank(timeDesc) || StringUtils.isBlank(createUser) || createTime == null) {
            this.init(list, sheetName, title, Type.EXPORT);
        } else {
            this.init(list, sheetName, title, Type.EXPORT, timeDesc, createUser, createTime);
        }
        return exportExcel();
    }
    /**
     * 对list数据源将其里面的数据导入到excel表单
@@ -770,6 +869,16 @@
        style.setFont(dataFont);
        styles.put("data", style);
        style = wb.createCellStyle();
        style.setAlignment(HorizontalAlignment.CENTER);
        style.setVerticalAlignment(VerticalAlignment.CENTER);
        Font dataFontTwo = wb.createFont();
        dataFontTwo.setFontName("Arial");
        dataFontTwo.setFontHeightInPoints((short) 10);
        style.setFont(dataFontTwo);
        styles.put("secTitle", style);
        style = wb.createCellStyle();
        style.setAlignment(HorizontalAlignment.CENTER);
        style.setVerticalAlignment(VerticalAlignment.CENTER);
fzzy-igdss-view/src/main/java/com/fzzy/igds/ReportInDetail.view.xml
@@ -525,7 +525,10 @@
    &quot;depotId&quot;:data.get(&quot;depotId&quot;),&#xD;
    &quot;foodVariety&quot;:data.get(&quot;foodVariety&quot;),&#xD;
    &quot;start&quot;:data.get(&quot;start&quot;),&#xD;
    &quot;end&quot;:data.get(&quot;end&quot;)&#xD;
    &quot;end&quot;:data.get(&quot;end&quot;),&#xD;
    &quot;timeDesc&quot;:data.get(&quot;timeDesc&quot;),&#xD;
    &quot;createUser&quot;:data.get(&quot;createUser&quot;),&#xD;
    &quot;createTime&quot;:data.get(&quot;createTime&quot;)&#xD;
}&#xD;
window.parent.$.table.exportExcelDorado(&quot;./export/inout-excel&quot;, &quot;入库数据&quot;, param);</ClientEvent>
          <Property name="caption">导出EXCEL</Property>
@@ -595,7 +598,10 @@
    &quot;deptId&quot;:data.get(&quot;deptId&quot;),&#xD;
    &quot;companyId&quot;:data.get(&quot;companyId&quot;),&#xD;
    &quot;start&quot;:data.get(&quot;start&quot;),&#xD;
    &quot;end&quot;:data.get(&quot;end&quot;)&#xD;
    &quot;end&quot;:data.get(&quot;end&quot;),&#xD;
    &quot;timeDesc&quot;:data.get(&quot;timeDesc&quot;),&#xD;
    &quot;createUser&quot;:data.get(&quot;createUser&quot;),&#xD;
    &quot;createTime&quot;:data.get(&quot;createTime&quot;)&#xD;
}&#xD;
window.parent.$.table.exportExcelDorado(&quot;./export/inout-excel&quot;, &quot;入库数据&quot;, param);</ClientEvent>
          <Property name="caption">导出EXCEL</Property>
fzzy-igdss-view/src/main/java/com/fzzy/igds/ReportOutDetail.view.xml
@@ -511,7 +511,10 @@
    &quot;depotId&quot;:data.get(&quot;depotId&quot;),&#xD;
    &quot;foodVariety&quot;:data.get(&quot;foodVariety&quot;),&#xD;
    &quot;start&quot;:data.get(&quot;start&quot;),&#xD;
    &quot;end&quot;:data.get(&quot;end&quot;)&#xD;
    &quot;end&quot;:data.get(&quot;end&quot;),&#xD;
    &quot;timeDesc&quot;:data.get(&quot;timeDesc&quot;),&#xD;
    &quot;createUser&quot;:data.get(&quot;createUser&quot;),&#xD;
    &quot;createTime&quot;:data.get(&quot;createTime&quot;)&#xD;
}&#xD;
window.parent.$.table.exportExcelDorado(&quot;./export/inout-excel&quot;, &quot;出库数据&quot;, param);</ClientEvent>
          <Property name="caption">导出EXCEL</Property>
@@ -579,7 +582,10 @@
    &quot;deptId&quot;:data.get(&quot;deptId&quot;),&#xD;
    &quot;companyId&quot;:data.get(&quot;companyId&quot;),&#xD;
    &quot;start&quot;:data.get(&quot;start&quot;),&#xD;
    &quot;end&quot;:data.get(&quot;end&quot;)&#xD;
    &quot;end&quot;:data.get(&quot;end&quot;),&#xD;
    &quot;timeDesc&quot;:data.get(&quot;timeDesc&quot;),&#xD;
    &quot;createUser&quot;:data.get(&quot;createUser&quot;),&#xD;
    &quot;createTime&quot;:data.get(&quot;createTime&quot;)&#xD;
}&#xD;
window.parent.$.table.exportExcelDorado(&quot;./export/inout-excel&quot;, &quot;出库数据&quot;, param);</ClientEvent>
          <Property name="caption">导出EXCEL</Property>
fzzy-igdss-view/src/main/java/com/fzzy/igds/ReportStore.view.xml
@@ -117,7 +117,7 @@
        <Property></Property>
      </PropertyDef>
      <PropertyDef name="createUser">
        <Property name="label">创建人</Property>
        <Property name="label">制表人</Property>
      </PropertyDef>
      <PropertyDef name="createTime">
        <Property name="dataType">DateTime</Property>
@@ -205,7 +205,10 @@
    &quot;deptId&quot;:data.get(&quot;deptId&quot;),&#xD;
    &quot;customerId&quot;:data.get(&quot;customerId&quot;),&#xD;
    &quot;start&quot;:data.get(&quot;start&quot;),&#xD;
    &quot;end&quot;:data.get(&quot;end&quot;)&#xD;
    &quot;end&quot;:data.get(&quot;end&quot;),&#xD;
    &quot;timeDesc&quot;:data.get(&quot;timeDesc&quot;),&#xD;
    &quot;createUser&quot;:data.get(&quot;createUser&quot;),&#xD;
    &quot;createTime&quot;:data.get(&quot;createTime&quot;)&#xD;
}&#xD;
window.parent.$.table.exportExcelDorado(&quot;./export/storage-excel&quot;, &quot;库存数据&quot;, param);</ClientEvent>
          <Property name="caption">导出EXCEL</Property>
fzzy-igdss-web/src/main/java/com/fzzy/common/ExportController.java
@@ -1,7 +1,10 @@
package com.fzzy.common;
import com.fzzy.common.manager.ExportManager;
import com.fzzy.igds.*;
import com.fzzy.igds.CompanyPR;
import com.fzzy.igds.DepotPR;
import com.fzzy.igds.DeptPR;
import com.fzzy.igds.ReportInoutPR;
import com.fzzy.igds.constant.FoodVariety;
import com.fzzy.igds.data.*;
import com.fzzy.igds.domain.Company;
@@ -19,17 +22,15 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @Description  数据导出入口
 * @Description 数据导出入口
 * @Author CZT
 * @Date 2025/12/29 10:32
 */
@@ -101,6 +102,7 @@
    /**
     * 出入库报表导出
     *
     * @return
     */
    @RequestMapping("/inout-excel")
@@ -116,6 +118,19 @@
        if (null != subDept) {
            deptName = subDept.getDeptName();
        }
        String exportTimeDesc = "";
        String exportCreateUser = "";
        Date exportCreateTime = new Date();
        if (StringUtils.isNotEmpty(param.getTimeDesc())) {
            exportTimeDesc = param.getTimeDesc();
        }
        if (StringUtils.isNotEmpty(param.getCreateUser())) {
            exportCreateUser = param.getCreateUser();
        }
        if (param.getCreateTime() != null) {
            exportCreateTime = param.getCreateTime();
        }
        //创建收储公司ID到名称的映射
        Map<String, String> companyMap = Optional.ofNullable(companyPR.getData())
                .orElse(new ArrayList<>())
@@ -148,18 +163,18 @@
                //粮食品种映射
                String foodVarietyNameValue = FoodVariety.getMsg(record.getFoodVariety());
                export.setFoodVariety(foodVarietyNameValue != null ? foodVarietyNameValue : "");
                export.setFullWeight(df.format(record.getFullWeight())+"KG");
                export.setEmptyWeight(df.format(record.getEmptyWeight())+"KG");
                export.setNetWeight(df.format(record.getNetWeight())+"KG");
                export.setSettleWeight(df.format(record.getSettleWeight())+"KG");
                export.setRecordWeight(df.format(record.getRecordWeight())+"KG");
                export.setFullWeight(df.format(record.getFullWeight()) + "KG");
                export.setEmptyWeight(df.format(record.getEmptyWeight()) + "KG");
                export.setNetWeight(df.format(record.getNetWeight()) + "KG");
                export.setSettleWeight(df.format(record.getSettleWeight()) + "KG");
                export.setRecordWeight(df.format(record.getRecordWeight()) + "KG");
                export.setCompleteTime(record.getCompleteTime());
                export.setDeOther(df.format(record.getDeOther())+"KG");
                export.setDeOther(df.format(record.getDeOther()) + "KG");
                export.setUpdateLog(record.getUpdateLog());
                exportList.add(export);
            }
            ExcelUtil<InoutRecordInExport> util = new ExcelUtil<InoutRecordInExport>(InoutRecordInExport.class);
            return util.exportExcel(exportList, sheetName, deptName);
            return util.exportExcel(exportList, sheetName, deptName, exportTimeDesc, exportCreateUser, exportCreateTime);
        }
        if (StringUtils.isNotEmpty(param.getType()) && "OUT".equals(param.getType())) {
@@ -177,18 +192,18 @@
                //粮食品种映射
                String foodVarietyNameValue = FoodVariety.getMsg(record.getFoodVariety());
                export.setFoodVariety(foodVarietyNameValue != null ? foodVarietyNameValue : "");
                export.setFullWeight(df.format(record.getFullWeight())+"KG");
                export.setEmptyWeight(df.format(record.getEmptyWeight())+"KG");
                export.setNetWeight(df.format(record.getNetWeight())+"KG");
                export.setSettleWeight(df.format(record.getSettleWeight())+"KG");
                export.setRecordWeight(df.format(record.getRecordWeight())+"KG");
                export.setFullWeight(df.format(record.getFullWeight()) + "KG");
                export.setEmptyWeight(df.format(record.getEmptyWeight()) + "KG");
                export.setNetWeight(df.format(record.getNetWeight()) + "KG");
                export.setSettleWeight(df.format(record.getSettleWeight()) + "KG");
                export.setRecordWeight(df.format(record.getRecordWeight()) + "KG");
                export.setCompleteTime(record.getCompleteTime());
                export.setDeOther(df.format(record.getDeOther())+"KG");
                export.setDeOther(df.format(record.getDeOther()) + "KG");
                export.setUpdateLog(record.getUpdateLog());
                exportList.add(export);
            }
            ExcelUtil<InoutRecordOutExport> util = new ExcelUtil<InoutRecordOutExport>(InoutRecordOutExport.class);
            return util.exportExcel(exportList, sheetName, deptName);
            return util.exportExcel(exportList, sheetName, deptName, exportTimeDesc, exportCreateUser, exportCreateTime);
        }
        if (StringUtils.isNotEmpty(param.getType()) && "IN_DETAIL".equals(param.getType())) {
@@ -213,14 +228,14 @@
                //粮食品种映射
                String foodVarietyNameValue = FoodVariety.getMsg(record.getFoodVariety());
                export.setFoodVariety(foodVarietyNameValue != null ? foodVarietyNameValue : "");
                export.setSettleWeight(df.format(record.getSettleWeight())+"KG");
                export.setRecordWeight(df.format(record.getRecordWeight())+"KG");
                export.setSettleWeight(df.format(record.getSettleWeight()) + "KG");
                export.setRecordWeight(df.format(record.getRecordWeight()) + "KG");
                export.setCompleteTime(record.getCompleteTime());
                export.setUpdateLog(record.getUpdateLog());
                exportList.add(export);
            }
            ExcelUtil<InoutRecordDetailInExport> util = new ExcelUtil<InoutRecordDetailInExport>(InoutRecordDetailInExport.class);
            return util.exportExcel(exportList, sheetName, deptName);
            return util.exportExcel(exportList, sheetName, deptName, exportTimeDesc, exportCreateUser, exportCreateTime);
        }
        if (StringUtils.isNotEmpty(param.getType()) && "OUT_DETAIL".equals(param.getType())) {
@@ -245,20 +260,21 @@
                //粮食品种映射
                String foodVarietyNameValue = FoodVariety.getMsg(record.getFoodVariety());
                export.setFoodVariety(foodVarietyNameValue != null ? foodVarietyNameValue : "");
                export.setSettleWeight(df.format(record.getSettleWeight())+"KG");
                export.setRecordWeight(df.format(record.getRecordWeight())+"KG");
                export.setSettleWeight(df.format(record.getSettleWeight()) + "KG");
                export.setRecordWeight(df.format(record.getRecordWeight()) + "KG");
                export.setCompleteTime(record.getCompleteTime());
                export.setUpdateLog(record.getUpdateLog());
                exportList.add(export);
            }
            ExcelUtil<InoutRecordDetailOutExport> util = new ExcelUtil<InoutRecordDetailOutExport>(InoutRecordDetailOutExport.class);
            return util.exportExcel(exportList, sheetName, deptName);
            return util.exportExcel(exportList, sheetName, deptName, exportTimeDesc, exportCreateUser, exportCreateTime);
        }
        return AjaxResult.error("参数错误");
    }
    /**
     * 库存报表导出
     *
     * @return
     */
    @RequestMapping("/storage-excel")
@@ -274,27 +290,39 @@
        if (null != subDept) {
            deptName = subDept.getDeptName();
        }
        String exportTimeDesc = "";
        String exportCreateUser = "";
        Date exportCreateTime = new Date();
        if (StringUtils.isNotEmpty(param.getTimeDesc())) {
            exportTimeDesc = param.getTimeDesc();
        }
        if (StringUtils.isNotEmpty(param.getCreateUser())) {
            exportCreateUser = param.getCreateUser();
        }
        if (param.getCreateTime() != null) {
            exportCreateTime = param.getCreateTime();
        }
        List<SuperInventoryReportExport> exportList = new ArrayList<>();
        DecimalFormat df = new DecimalFormat("0.00");
        for (SuperInventoryReportData data :list) {
        for (SuperInventoryReportData data : list) {
            SuperInventoryReportExport export = new SuperInventoryReportExport();
            export.setCustomerName(data.getCustomerName());
            export.setDeptName(data.getDeptName());
            export.setDepotName(data.getDepotName());
            export.setInitialWeight(df.format(data.getInitialWeight())+"KG");
            export.setRecordInWeight(df.format(data.getRecordInWeight())+"KG");
            export.setChangeInWeight(df.format(data.getChangeInWeight())+"KG");
            export.setRecordOutWeight(df.format(data.getRecordOutWeight())+"KG");
            export.setChangeOutWeight(df.format(data.getChangeOutWeight())+"KG");
            export.setLossWeight(df.format(data.getLossWeight())+"KG");
            export.setFinalWeight(df.format(data.getFinalWeight())+"KG");
            export.setInitialWeight(df.format(data.getInitialWeight()) + "KG");
            export.setRecordInWeight(df.format(data.getRecordInWeight()) + "KG");
            export.setChangeInWeight(df.format(data.getChangeInWeight()) + "KG");
            export.setRecordOutWeight(df.format(data.getRecordOutWeight()) + "KG");
            export.setChangeOutWeight(df.format(data.getChangeOutWeight()) + "KG");
            export.setLossWeight(df.format(data.getLossWeight()) + "KG");
            export.setFinalWeight(df.format(data.getFinalWeight()) + "KG");
            exportList.add(export);
        }
        //导出
        ExcelUtil<SuperInventoryReportExport> util = new ExcelUtil<SuperInventoryReportExport>(SuperInventoryReportExport.class);
        return util.exportExcel(exportList, sheetName, deptName);
        return util.exportExcel(exportList, sheetName, deptName, exportTimeDesc, exportCreateUser, exportCreateTime);
    }
}