package com.fzzy.common; import com.fzzy.common.manager.ExportManager; 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; import com.fzzy.igds.domain.Depot; import com.fzzy.igds.domain.Dept; import com.fzzy.igds.domain.InoutRecord; import com.fzzy.igds.service.SysDeptService; 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.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; 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.*; import java.util.stream.Collectors; /** * @Description 数据导出入口 * @Author CZT * @Date 2025/12/29 10:32 */ @Slf4j @Controller @RequestMapping("export") public class ExportController { @Resource private ExportManager exportManager; @Resource private SysDeptService sysDeptService; @Resource private ReportInoutPR reportInoutPR; @Resource private CompanyPR companyPR; @Resource private DeptPR deptPR; @Resource private DepotPR depotPR; /** * 导出word并下载 * * @param response * @param bizId * @param entityName */ @RequestMapping("/download-word") public void downloadWord(HttpServletResponse response, @RequestParam(value = "bizId", required = true) String bizId, @RequestParam(value = "entityName", required = true) String entityName) { ExportWordParam param = new ExportWordParam(); param.setBizId(bizId); param.setEntityName(entityName); exportManager.renderWordDownload(param, response); } /** * 导出word并下载 * * @param response */ @RequestMapping("/download-inout-excel") public void downloadInoutExcel(HttpServletResponse response) { exportManager.downloadInoutExcel(response); } /** * PDF在线预览 * * @param response * @param bizId * @param entityName */ @RequestMapping("/preview-pdf") public void previewPdf(HttpServletResponse response, @RequestParam(value = "bizId", required = true) String bizId, @RequestParam(value = "entityName", required = true) String entityName) { //TODO 待实现 ExportWordParam param = new ExportWordParam(); param.setBizId(bizId); param.setEntityName(entityName); } /** * 出入库报表导出 * * @return */ @RequestMapping("/inout-excel") @ResponseBody public AjaxResult inOutExcel(InoutParam param) { //设置标题 String sheetName = "报表数据"; //查询数据 List list = new ArrayList<>(); //获取分库编码对应的分库名称 String deptName = ""; String deptId= ContextUtil.subDeptId(null); if (StringUtils.isNotBlank(param.getDeptId())){ deptId=param.getDeptId(); } SysDept subDept = sysDeptService.getCacheDept(null,deptId); 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 companyMap = Optional.ofNullable(companyPR.getData()) .orElse(new ArrayList<>()) .stream() .collect(Collectors.toMap(Company::getId, Company::getDwmc, (key1, key2) -> key2)); //创建所在库区ID到名称的映射 Map deptMap = Optional.ofNullable(deptPR.getAllData()) .orElse(new ArrayList<>()) .stream() .collect(Collectors.toMap(Dept::getId, Dept::getKqmc, (key1, key2) -> key2)); // 创建仓库ID到名称的映射 Map depotMap = Optional.ofNullable(depotPR.getData(ContextUtil.getCompanyId())) .orElse(new ArrayList<>()) .stream() .collect(Collectors.toMap(Depot::getId, Depot::getName, (key1, key2) -> key2)); DecimalFormat df = new DecimalFormat("0.00"); //组装实际导出数据 if (StringUtils.isNotEmpty(param.getType()) && "IN".equals(param.getType())) { sheetName = "入库报表数据"; list = reportInoutPR.listRecord(param); List exportList = new ArrayList<>(); InoutRecordInExport export; for (InoutRecord record : list) { 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 = 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.setCompleteTime(record.getCompleteTime()); export.setDeOther(df.format(record.getDeOther()) + "KG"); export.setUpdateLog(record.getUpdateLog()); exportList.add(export); } ExcelUtil util = new ExcelUtil(InoutRecordInExport.class); return util.exportExcel(exportList, sheetName, deptName, exportTimeDesc, exportCreateUser, exportCreateTime); } if (StringUtils.isNotEmpty(param.getType()) && "OUT".equals(param.getType())) { sheetName = "出库报表数据"; list = reportInoutPR.listRecord(param); List exportList = new ArrayList<>(); InoutRecordOutExport export; for (InoutRecord record : list) { 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 = 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.setCompleteTime(record.getCompleteTime()); export.setDeOther(df.format(record.getDeOther()) + "KG"); export.setUpdateLog(record.getUpdateLog()); exportList.add(export); } ExcelUtil util = new ExcelUtil(InoutRecordOutExport.class); return util.exportExcel(exportList, sheetName, deptName, exportTimeDesc, exportCreateUser, exportCreateTime); } if (StringUtils.isNotEmpty(param.getType()) && "IN_DETAIL".equals(param.getType())) { sheetName = "入库明细报表数据"; param.setType("IN"); list = reportInoutPR.listRecord(param); List exportList = new ArrayList<>(); InoutRecordDetailInExport export; for (InoutRecord record : list) { 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 = FoodVariety.getMsg(record.getFoodVariety()); export.setFoodVariety(foodVarietyNameValue != null ? foodVarietyNameValue : ""); 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 util = new ExcelUtil(InoutRecordDetailInExport.class); return util.exportExcel(exportList, sheetName, deptName, exportTimeDesc, exportCreateUser, exportCreateTime); } if (StringUtils.isNotEmpty(param.getType()) && "OUT_DETAIL".equals(param.getType())) { sheetName = "出库明细报表数据"; param.setType("OUT"); list = reportInoutPR.listRecord(param); List exportList = new ArrayList<>(); InoutRecordDetailOutExport export; for (InoutRecord record : list) { 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 = FoodVariety.getMsg(record.getFoodVariety()); export.setFoodVariety(foodVarietyNameValue != null ? foodVarietyNameValue : ""); 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 util = new ExcelUtil(InoutRecordDetailOutExport.class); return util.exportExcel(exportList, sheetName, deptName, exportTimeDesc, exportCreateUser, exportCreateTime); } return AjaxResult.error("参数错误"); } /** * 库存报表导出 * * @return */ @RequestMapping("/storage-excel") @ResponseBody public AjaxResult storageExcel(SuperInventoryReportParam param) { //设置标题 String sheetName = "库存报表数据"; //查询数据 List list = reportInoutPR.getStoreData(param); //获取分库编码对应的分库名称 String deptName = ""; SysDept subDept = sysDeptService.getCacheDept(null, ContextUtil.subDeptId(null)); 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 exportList = new ArrayList<>(); DecimalFormat df = new DecimalFormat("0.00"); 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"); exportList.add(export); } //导出 ExcelUtil util = new ExcelUtil(SuperInventoryReportExport.class); return util.exportExcel(exportList, sheetName, deptName, exportTimeDesc, exportCreateUser, exportCreateTime); } }