From e977fc087c64c912345e6f538f0a63c88f71cce3 Mon Sep 17 00:00:00 2001 From: hongchao <3228015117@qq.com> Date: Tue, 29 Apr 2025 09:12:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=AF=BC=E5=87=BA=E6=9C=88?= =?UTF-8?q?=E7=BB=93=E6=98=8E=E7=BB=86=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SltAgreementInfoController.java | 168 +++++++++++++++++- 1 file changed, 166 insertions(+), 2 deletions(-) diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/SltAgreementInfoController.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/SltAgreementInfoController.java index 90a69a2..7ab8805 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/SltAgreementInfoController.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/SltAgreementInfoController.java @@ -22,6 +22,7 @@ import com.bonus.sgzb.material.config.PoiOutPage; import com.bonus.sgzb.material.domain.*; import com.bonus.sgzb.material.service.SltAgreementInfoService; import io.swagger.annotations.ApiOperation; +import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; @@ -30,13 +31,15 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.OutputStream; +import java.io.*; import java.math.BigDecimal; import java.math.RoundingMode; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; import static com.bonus.sgzb.common.core.web.page.TableSupport.PAGE_NUM; import static com.bonus.sgzb.common.core.web.page.TableSupport.PAGE_SIZE; @@ -179,6 +182,167 @@ public class SltAgreementInfoController extends BaseController { util.exportExcel(response, leaseInfoList, "租赁明细导出"); } + /** + * 租赁明细导出 + */ + @Log(title = "租赁明细导出", businessType = BusinessType.EXPORT) + @PostMapping("/exportLeaseAll") +// @RequiresPermissions("ndertake:export_1") + public void exportLeaseAll(HttpServletResponse response, @RequestBody List list) throws Exception { + // 创建临时文件夹 + String tempDir = System.getProperty("java.io.tmpdir") + File.separator + UUID.randomUUID(); + new File(tempDir).mkdirs(); + + try { + // 遍历每个协议信息 + for (AgreementInfo info : list) { + // 生成文件名 + String fileName = ""; + String fileNameThree = ""; + List explist = new ArrayList<>(); + List explistThree = new ArrayList<>(); + List leaseInfoList = new ArrayList<>(); + List leaseInfoListThree = new ArrayList<>(); + if(Objects.equals(info.getCostBearingParty(), "01")){ + // 获取导出数据 + explist = sltAgreementInfoService.getLeaseListOne(Collections.singletonList(info)); + leaseInfoList = Convert.toList(LeaseInfo.class, explist); + }else if(Objects.equals(info.getCostBearingParty(), "03")){ + // 获取导出数据 + explistThree = sltAgreementInfoService.getLeaseListThree(Collections.singletonList(info)); + leaseInfoListThree = Convert.toList(LeaseInfo.class, explistThree); + }else{ + // 获取导出数据 + explist = sltAgreementInfoService.getLeaseListOne(Collections.singletonList(info)); + explistThree = sltAgreementInfoService.getLeaseListThree(Collections.singletonList(info)); + leaseInfoList = Convert.toList(LeaseInfo.class, explist); + leaseInfoListThree = Convert.toList(LeaseInfo.class, explistThree); + } + + if(Objects.equals(info.getCostBearingParty(), "01")){ + // 计算总成本 + BigDecimal totalCost = BigDecimal.valueOf(0.00); + for (SltAgreementInfo sltAgreementInfo : explist) { + totalCost = totalCost.add(sltAgreementInfo.getRealCosts()); + } + fileName ="费用承担方01_"+ info.getAgreementCode() + "_" + info.getUnitName() + "_" + info.getProjectName() + "_设备租赁结算单.xls"; + // 导出单个Excel文件 + String filePath = tempDir + File.separator + fileName; + try (FileOutputStream fos = new FileOutputStream(filePath)) { + HSSFWorkbook workbook = PoiOutPage.excelForcheckTwo( + leaseInfoList.stream() + .map(bean -> outReceiveDetailsBeanToMap(bean, 1, 0)) + .collect(Collectors.toList()), + receiveDetailsHeader(1, 0), + "重庆市送变电工程有限公司设备租赁结算单", + info.getProjectName(), + info.getUnitName(), + totalCost, + 1 + ); + workbook.write(fos); + } + }else if(Objects.equals(info.getCostBearingParty(), "03")){ + // 计算总成本 + BigDecimal totalCost = BigDecimal.valueOf(0.00); + for (SltAgreementInfo sltAgreementInfo : explistThree) { + totalCost = totalCost.add(sltAgreementInfo.getRealCosts()); + } + + fileNameThree ="费用承担方03_"+ info.getAgreementCode() + "_" + info.getUnitName() + "_" + info.getProjectName() + "_设备租赁结算单.xls"; + // 导出单个Excel文件 + String filePath = tempDir + File.separator + fileNameThree; + try (FileOutputStream fos = new FileOutputStream(filePath)) { + HSSFWorkbook workbook = PoiOutPage.excelForcheckTwo( + leaseInfoListThree.stream() + .map(bean -> outReceiveDetailsBeanToMap(bean, 3, 0)) + .collect(Collectors.toList()), + receiveDetailsHeader(3, 0), + "重庆市送变电工程有限公司设备租赁结算单", + info.getProjectName(), + info.getUnitName(), + totalCost, + 3 + ); + workbook.write(fos); + } + }else{ + // 计算总成本 + BigDecimal totalCost = BigDecimal.valueOf(0.00); + for (SltAgreementInfo sltAgreementInfo : explist) { + totalCost = totalCost.add(sltAgreementInfo.getRealCosts()); + } + + fileName ="费用承担方01_"+ info.getAgreementCode() + "_" + info.getUnitName() + "_" + info.getProjectName() + "_设备租赁结算单.xls"; + // 导出单个Excel文件 + String filePath = tempDir + File.separator + fileName; + try (FileOutputStream fos = new FileOutputStream(filePath)) { + HSSFWorkbook workbook = PoiOutPage.excelForcheckTwo( + leaseInfoList.stream() + .map(bean -> outReceiveDetailsBeanToMap(bean, 1, 0)) + .collect(Collectors.toList()), + receiveDetailsHeader(1, 0), + "重庆市送变电工程有限公司设备租赁结算单", + info.getProjectName(), + info.getUnitName(), + totalCost, + 1 + ); + workbook.write(fos); + } + // 计算总成本 + BigDecimal totalCostThree = BigDecimal.valueOf(0.00); + for (SltAgreementInfo sltAgreementInfo : explistThree) { + totalCost = totalCost.add(sltAgreementInfo.getRealCosts()); + } + + fileNameThree ="费用承担方03_"+ info.getAgreementCode() + "_" + info.getUnitName() + "_" + info.getProjectName() + "_设备租赁结算单.xls"; + // 导出单个Excel文件 + String filePathThree = tempDir + File.separator + fileNameThree; + try (FileOutputStream fos = new FileOutputStream(filePathThree)) { + HSSFWorkbook workbook = PoiOutPage.excelForcheckTwo( + leaseInfoListThree.stream() + .map(bean -> outReceiveDetailsBeanToMap(bean, 3, 0)) + .collect(Collectors.toList()), + receiveDetailsHeader(3, 0), + "重庆市送变电工程有限公司设备租赁结算单", + info.getProjectName(), + info.getUnitName(), + totalCostThree, + 3 + ); + workbook.write(fos); + } + + } + } + // 创建压缩包 + String zipFileName = "设备租赁结算单_" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".zip"; + response.setContentType("application/zip"); + response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(zipFileName, "UTF-8")); + + try (ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream())) { + File[] files = new File(tempDir).listFiles(); + if (files != null) { + for (File file : files) { + zipOut.putNextEntry(new ZipEntry(file.getName())); + try (FileInputStream fis = new FileInputStream(file)) { + byte[] buffer = new byte[1024]; + int len; + while ((len = fis.read(buffer)) > 0) { + zipOut.write(buffer, 0, len); + } + } + zipOut.closeEntry(); + } + } + } + } finally { + // 删除临时文件夹 + FileUtils.deleteDirectory(new File(tempDir)); + } + } + /** * 去重单位和工程名称