sgj
2026-01-17 da4b59346969e1622a66ce9fde637b1fac1c501b
fzzy-igdss-view/src/main/java/com/fzzy/igds/export/ReportController.java
@@ -1,15 +1,18 @@
package com.fzzy.igds.export;
import com.fzzy.igds.ReportInDetailPR;
import com.fzzy.igds.data.InoutParam;
import com.fzzy.igds.*;
import com.fzzy.igds.data.*;
import com.fzzy.igds.domain.Company;
import com.fzzy.igds.domain.Depot;
import com.fzzy.igds.domain.Dept;
import com.fzzy.igds.domain.InoutRecord;
import com.fzzy.igds.service.InoutRecordService;
import com.fzzy.igds.service.SysDeptService;
import com.fzzy.igds.service.*;
import com.fzzy.igds.utils.ContextUtil;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@@ -17,7 +20,11 @@
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
/**
@@ -25,7 +32,6 @@
 *
 * @author sgj
 * @date 2025/12/24
 */
@Controller
@RequestMapping("export")
@@ -34,27 +40,201 @@
    @Resource
    private InoutRecordService inoutReportService;
    @Resource
    private SysDeptService sysDeptService;
    @Resource
    private CoreDeptService coreDeptService;
    @Resource
    private DepotService depotService;
    @Resource
    private CoreCompanyService coreCompanyService;
    @Autowired
    private ReportInDetailPR reportInDetailPR;
    @Autowired
    private ReportOutDetailPR reportOutDetailPR;
    @Autowired
    private SuperInventoryReportPR superInventoryReportPR;
    @Autowired
    private CompanyPR companyPR;
    @Autowired
    private DeptPR deptPR;
    @Autowired
    private DepotPR depotPR;
    @Autowired
    private DicPR dicPR;
    /**
     * 出入库报表导出
     *
     * @return
     */
    @RequestMapping("/inReport-excel")
    @RequestMapping("/inOutReport-excel")
    @ResponseBody
    public AjaxResult inReportExcel(InoutParam param) {
        //查询数据
        List<InoutRecord> list = reportInDetailPR.listRecord(param);
    public AjaxResult inOutReport(InoutParam param) {
        //设置标题
        String sheetName = "入库报表数据";
        String sheetName = "报表数据";
        //查询数据
        List<InoutRecord> list = new ArrayList<>();
        //获取分库编码对应的分库名称
        String deptName = "";
        SysDept subDept = sysDeptService.getCacheDept(null, ContextUtil.subDeptId(null));
        if (null != subDept) {
            deptName = subDept.getDeptName();
        }
        //创建收储公司ID到名称的映射
        Map<String, String> companyMap = Optional.ofNullable(companyPR.getData())
                .orElse(new ArrayList<>())
                .stream()
                .collect(Collectors.toMap(Company::getId, Company::getDwmc, (key1, key2) -> key2));
        //创建所在库区ID到名称的映射
        Map<String, String> deptMap = Optional.ofNullable(deptPR.getAllData())
                .orElse(new ArrayList<>())
                .stream()
                .collect(Collectors.toMap(Dept::getId, Dept::getKqmc, (key1, key2) -> key2));
        // 创建仓库ID到名称的映射
        Map<String, String> depotMap = Optional.ofNullable(depotPR.getData(null))
                .orElse(new ArrayList<>())
                .stream()
                .collect(Collectors.toMap(Depot::getId, Depot::getName, (key1, key2) -> key2));
        //创建粮食品种ID到名称的映射
        Map<String, String> foodVarietyMap = Optional.ofNullable(dicPR.sysDictData("FOOD_VARIETY_"))
                .orElse(new ArrayList<>())
                .stream()
                .collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel, (key1, key2) -> key2));
        //组装实际导出数据
        if (StringUtils.isNotEmpty(param.getType()) && "IN".equals(param.getType())) {
            sheetName = "入库报表数据";
            list = reportInDetailPR.listRecord(param);
            List<InoutRecordInExport> exportList = new ArrayList<>();
            for (InoutRecord record : list) {
                InoutRecordInExport export = new InoutRecordInExport();
                export.setId(record.getId());
                export.setPlateNum(record.getPlateNum());
                // 将仓库ID映射为仓库名称
                String depotNameValue = depotMap.get(record.getDepotId());
                export.setDepotId(depotNameValue != null ? depotNameValue : "");
                //粮食品种映射
                String foodVarietyNameValue = foodVarietyMap.get(record.getFoodVariety());
                export.setFoodVariety(foodVarietyNameValue != null ? foodVarietyNameValue : "");
                export.setFullWeight(record.getFullWeight());
                export.setEmptyWeight(record.getEmptyWeight());
                export.setNetWeight(record.getNetWeight());
                export.setSettleWeight(record.getSettleWeight());
                export.setRecordWeight(record.getRecordWeight());
                export.setCompleteTime(record.getCompleteTime());
                export.setDeOther(record.getDeOther());
                exportList.add(export);
            }
            ExcelUtil<InoutRecordInExport> util = new ExcelUtil<InoutRecordInExport>(InoutRecordInExport.class);
            return util.exportExcel(exportList, sheetName, deptName);
        }
        if (StringUtils.isNotEmpty(param.getType()) && "OUT".equals(param.getType())) {
            sheetName = "出库报表数据";
            list = reportOutDetailPR.listRecord(param);
            List<InoutRecordOutExport> exportList = new ArrayList<>();
            for (InoutRecord record : list) {
                InoutRecordOutExport export = new InoutRecordOutExport();
                export.setId(record.getId());
                export.setPlateNum(record.getPlateNum());
                // 将仓库ID映射为仓库名称
                String depotNameValue = depotMap.get(record.getDepotId());
                export.setDepotId(depotNameValue != null ? depotNameValue : "");
                //粮食品种映射
                String foodVarietyNameValue = foodVarietyMap.get(record.getFoodVariety());
                export.setFoodVariety(foodVarietyNameValue != null ? foodVarietyNameValue : "");
                export.setFullWeight(record.getFullWeight());
                export.setEmptyWeight(record.getEmptyWeight());
                export.setNetWeight(record.getNetWeight());
                export.setSettleWeight(record.getSettleWeight());
                export.setRecordWeight(record.getRecordWeight());
                export.setCompleteTime(record.getCompleteTime());
                export.setDeOther(record.getDeOther());
                exportList.add(export);
            }
            ExcelUtil<InoutRecordOutExport> util = new ExcelUtil<InoutRecordOutExport>(InoutRecordOutExport.class);
            return util.exportExcel(exportList, sheetName, deptName);
        }
        if (StringUtils.isNotEmpty(param.getType()) && "IN_DETAIL".equals(param.getType())) {
            sheetName = "入库明细报表数据";
            list = reportInDetailPR.listRecord(param);
            List<InoutRecordDetailInExport> exportList = new ArrayList<>();
            for (InoutRecord record : list) {
                InoutRecordDetailInExport export = new InoutRecordDetailInExport();
                //收储公司映射
                String companyNameValue = companyMap.get(record.getCompanyId());
                export.setCompanyId(companyNameValue != null ? companyNameValue : "");
                //库区映射
                String deptNameValue = deptMap.get(record.getDeptId());
                export.setDeptId(deptNameValue != null ? deptNameValue : "");
                export.setId(record.getId());
                export.setPlateNum(record.getPlateNum());
                // 将仓库ID映射为仓库名称
                String depotNameValue = depotMap.get(record.getDepotId());
                export.setDepotId(depotNameValue != null ? depotNameValue : "");
                //粮食品种映射
                String foodVarietyNameValue = foodVarietyMap.get(record.getFoodVariety());
                export.setFoodVariety(foodVarietyNameValue != null ? foodVarietyNameValue : "");
                export.setSettleWeight(record.getSettleWeight());
                export.setRecordWeight(record.getRecordWeight());
                export.setCompleteTime(record.getCompleteTime());
                exportList.add(export);
            }
            ExcelUtil<InoutRecordDetailInExport> util = new ExcelUtil<InoutRecordDetailInExport>(InoutRecordDetailInExport.class);
            return util.exportExcel(exportList, sheetName, deptName);
        }
        if (StringUtils.isNotEmpty(param.getType()) && "OUT_DETAIL".equals(param.getType())) {
            sheetName = "出库明细报表数据";
            list = reportOutDetailPR.listRecord(param);
            List<InoutRecordDetailOutExport> exportList = new ArrayList<>();
            for (InoutRecord record : list) {
                InoutRecordDetailOutExport export = new InoutRecordDetailOutExport();
                //收储公司映射
                String companyNameValue = companyMap.get(record.getCompanyId());
                export.setCompanyId(companyNameValue != null ? companyNameValue : "");
                //库区映射
                String deptNameValue = deptMap.get(record.getDeptId());
                export.setDeptId(deptNameValue != null ? deptNameValue : "");
                export.setId(record.getId());
                export.setPlateNum(record.getPlateNum());
                // 将仓库ID映射为仓库名称
                String depotNameValue = depotMap.get(record.getDepotId());
                export.setDepotId(depotNameValue != null ? depotNameValue : "");
                //粮食品种映射
                String foodVarietyNameValue = foodVarietyMap.get(record.getFoodVariety());
                export.setFoodVariety(foodVarietyNameValue != null ? foodVarietyNameValue : "");
                export.setSettleWeight(record.getSettleWeight());
                export.setRecordWeight(record.getRecordWeight());
                export.setCompleteTime(record.getCompleteTime());
                exportList.add(export);
            }
            ExcelUtil<InoutRecordDetailOutExport> util = new ExcelUtil<InoutRecordDetailOutExport>(InoutRecordDetailOutExport.class);
            return util.exportExcel(exportList, sheetName, deptName);
        }
        return AjaxResult.error("参数错误");
    }
    /**
     * 库存报表导出
     *
     * @return
     */
    @RequestMapping("/superInventoryReport-excel")
    @ResponseBody
    public AjaxResult superInventoryReport(SuperInventoryReportParam param) {
        //设置标题
        String sheetName = "库存报表数据";
        //查询数据
        List<SuperInventoryReportData> list = superInventoryReportPR.getReportData(param);
        //获取分库编码对应的分库名称
        String deptName = "";
        SysDept subDept = sysDeptService.getCacheDept(null, ContextUtil.subDeptId(null));
@@ -63,7 +243,7 @@
        }
        //导出
        ExcelUtil<InoutRecord> util = new ExcelUtil<InoutRecord>(InoutRecord.class);
        ExcelUtil<SuperInventoryReportData> util = new ExcelUtil<SuperInventoryReportData>(SuperInventoryReportData.class);
        return util.exportExcel(list, sheetName, deptName);
    }