diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/config/PoiOutPage.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/config/PoiOutPage.java index da6cbf54..ea8bd841 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/biz/config/PoiOutPage.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/config/PoiOutPage.java @@ -250,9 +250,9 @@ public class PoiOutPage { return workbook; } - public static HSSFWorkbook excelForcheckAll(List> resultLease,List> resultLose,List> resultRepair,List> resultScrap, - List listLease,List listLose,List listRepair,List listScrap, String filename, String projectName, String unit, - BigDecimal totalCostLease, BigDecimal totalCostLose, BigDecimal totalCostRepair, BigDecimal totalCostScrap) { + public static HSSFWorkbook excelForcheckAll(List> resultLease,List> resultLose,List> resultRepair,List> resultScrap,List> resultsReduction, + List listLease,List listLose,List listRepair,List listScrap,List listReduction, String filename, String projectName, String unit, + BigDecimal totalCostLease, BigDecimal totalCostLose, BigDecimal totalCostRepair, BigDecimal totalCostScrap,BigDecimal totalCostReduction) { // 创建工作簿和工作表 HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(); @@ -383,13 +383,208 @@ public class PoiOutPage { } rowNum = createTotalRow(sheet, rowNum, listLose, totalCostLose, headerStyle); + /** + * 减免费用明细 + */ + // 填充标题行 + rowNum = createTitleRowStyleCost(sheet, rowNum, "减免费用明细", titleStyle, listReduction.size()); + // 填充表头 + rowNum = createHeaderRow(sheet, rowNum, listReduction, headerStyle); + // 填充数据行 + if (resultsReduction != null && !resultsReduction.isEmpty()) { + rowNum = createDataRows(sheet, rowNum, resultsReduction, contentStyle, listReduction.size()); + } else { + // 如果没有数据,则仅显示表头 +// rowNum++; +// rowNum = createDataRows(sheet, rowNum, resultLease, contentStyle, listLease.size()); + HSSFRow row = sheet.createRow(rowNum++); + HSSFCell cell = row.createCell(0); + cell.setCellStyle(headerStyle); + cell.setCellValue("暂无数据"); + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (listReduction.size() - 1))); + CellRangeAddress cellRange = new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (listReduction.size() - 1)); + // 设置边框样式 + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange, sheet); + } + rowNum = createTotalRow(sheet, rowNum, listReduction, totalCostReduction, headerStyle); + + //合计 - BigDecimal totalCostAll = totalCostLease.add(totalCostLose).add(totalCostRepair).add(totalCostScrap); + BigDecimal totalCostAll = totalCostLease.add(totalCostLose).add(totalCostRepair).add(totalCostScrap).add(totalCostReduction); rowNum = createTotalRowAll(sheet, rowNum, listScrap, totalCostAll, headerStyle); return workbook; } + public static void excelForcheckEach(HSSFWorkbook workbook,HSSFSheet sheet,List> resultLease,List> resultLose,List> resultRepair,List> resultScrap,List> resultsReduction, + List listLease,List listLose,List listRepair,List listScrap,List listReduction, String projectName, String unit, + BigDecimal totalCostLease, BigDecimal totalCostLose, BigDecimal totalCostRepair, BigDecimal totalCostScrap,BigDecimal totalCostReduction) { + + sheet.setDefaultColumnWidth(15); // 设置列宽 + + // 创建样式 + HSSFCellStyle titleStyle = createTitleStyle(workbook); + HSSFCellStyle headerStyle = createHeaderStyle(workbook); + HSSFCellStyle contentStyle = createCellStyleCost(workbook); + +// // 设置工作簿名称 +// workbook.setSheetName(0, sheet.getSheetName()); + + // 填充标题行 + int rowNum = 0; + rowNum = createTitleRowStyle(sheet, rowNum, "结算费用明细", titleStyle, listLease.size()); + rowNum = createProjectAndUnitRow(sheet, rowNum, projectName, unit, titleStyle, listLease.size()); + + /** + * 租赁费用明细 + */ + rowNum = createTitleRowStyleCost(sheet, rowNum, "租赁费用明细", titleStyle, listLease.size()); + // 填充表头 + rowNum = createHeaderRow(sheet, rowNum, listLease, headerStyle); + + // 填充数据行 + if (resultLease != null && !resultLease.isEmpty()) { + rowNum = createDataRows(sheet, rowNum, resultLease, contentStyle, listLease.size()); + } else { + // 如果没有数据,则仅显示表头 +// rowNum++; +// rowNum = createDataRows(sheet, rowNum, resultLease, contentStyle, listLease.size()); + HSSFRow row = sheet.createRow(rowNum++); + HSSFCell cell = row.createCell(0); + cell.setCellStyle(headerStyle); + cell.setCellValue("暂无数据"); + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (listLease.size() - 1))); + CellRangeAddress cellRange = new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (listLease.size() - 1)); + // 设置边框样式 + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange, sheet); + } + rowNum = createTotalRow(sheet, rowNum, listLease, totalCostLease, headerStyle); + + /** + * 维修费用明细 + */ + // 填充标题行 + rowNum = createTitleRowStyleCost(sheet, rowNum, "维修费用明细", titleStyle, listRepair.size()); + // 填充表头 + rowNum = createHeaderRow(sheet, rowNum, listRepair, headerStyle); + // 填充数据行 + if (resultRepair!= null &&!resultRepair.isEmpty()) { + rowNum = createDataRows(sheet, rowNum, resultRepair, contentStyle, listRepair.size()); + } else { + // 如果没有数据,则仅显示表头 +// rowNum++; +// rowNum = createDataRows(sheet, rowNum, resultRepair, contentStyle, listRepair.size()); + HSSFRow row = sheet.createRow(rowNum++); + HSSFCell cell = row.createCell(0); + cell.setCellStyle(headerStyle); + cell.setCellValue("暂无数据"); + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (listRepair.size() - 1))); + CellRangeAddress cellRange = new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (listRepair.size() - 1)); + // 设置边框样式 + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange, sheet); + } + rowNum = createTotalRow(sheet, rowNum, listRepair, totalCostRepair, headerStyle); + + /** + * 报废费用明细 + */ + // 填充标题行 + rowNum = createTitleRowStyleCost(sheet, rowNum, "报废费用明细", titleStyle, listScrap.size()); + // 填充表头 + rowNum = createHeaderRow(sheet, rowNum, listScrap, headerStyle); + // 填充数据行 + if (resultScrap!= null &&!resultScrap.isEmpty()) { + rowNum = createDataRows(sheet, rowNum, resultScrap, contentStyle, listScrap.size()); + } else { + // 如果没有数据,则仅显示表头 +// rowNum++; +// rowNum = createDataRows(sheet, rowNum, resultScrap, contentStyle, listScrap.size()); + HSSFRow row = sheet.createRow(rowNum++); + HSSFCell cell = row.createCell(0); + cell.setCellStyle(headerStyle); + cell.setCellValue("暂无数据"); + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (listScrap.size() - 1))); + CellRangeAddress cellRange = new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (listScrap.size() - 1)); + // 设置边框样式 + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange, sheet); + } + rowNum = createTotalRow(sheet, rowNum, listScrap, totalCostScrap, headerStyle); + + /** + * 丢失费用明细 + */ + // 填充标题行 + rowNum = createTitleRowStyleCost(sheet, rowNum, "丢失费用明细", titleStyle, listLose.size()); + // 填充表头 + rowNum = createHeaderRow(sheet, rowNum, listLose, headerStyle); + // 填充数据行 + if (resultLose!= null &&!resultLose.isEmpty()) { + rowNum = createDataRows(sheet, rowNum, resultLose, contentStyle, listLose.size()); + } else { + // 如果没有数据,则仅显示表头 +// rowNum++; +// rowNum = createDataRows(sheet, rowNum, resultLose, contentStyle, listLose.size()); + HSSFRow row = sheet.createRow(rowNum++); + HSSFCell cell = row.createCell(0); + cell.setCellStyle(headerStyle); + cell.setCellValue("暂无数据"); + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (listLose.size() - 1))); + CellRangeAddress cellRange = new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (listLose.size() - 1)); + // 设置边框样式 + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange, sheet); + } + rowNum = createTotalRow(sheet, rowNum, listLose, totalCostLose, headerStyle); + + /** + * 减免费用明细 + */ + // 填充标题行 + rowNum = createTitleRowStyleCost(sheet, rowNum, "减免费用明细", titleStyle, listReduction.size()); + // 填充表头 + rowNum = createHeaderRow(sheet, rowNum, listReduction, headerStyle); + // 填充数据行 + if (resultsReduction != null && !resultsReduction.isEmpty()) { + rowNum = createDataRows(sheet, rowNum, resultsReduction, contentStyle, listReduction.size()); + } else { + // 如果没有数据,则仅显示表头 +// rowNum++; +// rowNum = createDataRows(sheet, rowNum, resultLease, contentStyle, listLease.size()); + HSSFRow row = sheet.createRow(rowNum++); + HSSFCell cell = row.createCell(0); + cell.setCellStyle(headerStyle); + cell.setCellValue("暂无数据"); + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (listReduction.size() - 1))); + CellRangeAddress cellRange = new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (listReduction.size() - 1)); + // 设置边框样式 + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange, sheet); + } + rowNum = createTotalRow(sheet, rowNum, listReduction, totalCostReduction, headerStyle); + + + //合计 + BigDecimal totalCostAll = totalCostLease.add(totalCostLose).add(totalCostRepair).add(totalCostScrap).add(totalCostReduction); + rowNum = createTotalRowAll(sheet, rowNum, listScrap, totalCostAll, headerStyle); + + } + /** * 结算记录查询--导出全部明细 @@ -922,7 +1117,7 @@ public class PoiOutPage { * @param workbook * @return */ - private static HSSFCellStyle createTitleStyle(HSSFWorkbook workbook) { + public static HSSFCellStyle createTitleStyle(HSSFWorkbook workbook) { HSSFCellStyle style = workbook.createCellStyle(); style.setAlignment(HorizontalAlignment.CENTER); style.setVerticalAlignment(VerticalAlignment.CENTER); @@ -938,7 +1133,7 @@ public class PoiOutPage { * @param workbook * @return */ - private static HSSFCellStyle createHeaderStyle(HSSFWorkbook workbook) { + public static HSSFCellStyle createHeaderStyle(HSSFWorkbook workbook) { HSSFCellStyle style = workbook.createCellStyle(); style.setAlignment(HorizontalAlignment.CENTER); style.setVerticalAlignment(VerticalAlignment.CENTER); @@ -996,7 +1191,7 @@ public class PoiOutPage { * @param workbook * @return */ - private static HSSFCellStyle createCellStyleCost(HSSFWorkbook workbook) { + public static HSSFCellStyle createCellStyleCost(HSSFWorkbook workbook) { HSSFCellStyle style = workbook.createCellStyle(); style.setAlignment(HorizontalAlignment.CENTER); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/settlement/controller/SltAgreementInfoController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/settlement/controller/SltAgreementInfoController.java index e4ecd664..aed36019 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/settlement/controller/SltAgreementInfoController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/settlement/controller/SltAgreementInfoController.java @@ -33,7 +33,10 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.hssf.usermodel.*; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.ss.util.RegionUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.bonus.common.log.annotation.SysLog; @@ -269,18 +272,20 @@ public class SltAgreementInfoController extends BaseController { out.close(); } } + + /** * 导出结算单--all * @throws Exception */ - private void expOutExcelAll(HttpServletResponse response, List lease,List lose,List repair,List scrap, - String filename,String projectName,String unitName,BigDecimal totalCostLease,BigDecimal totalCostLose,BigDecimal totalCostRepair,BigDecimal totalCostScrap) + private void expOutExcelAll(HttpServletResponse response, List lease,List lose,List repair,List scrap,List reduction, + String filename,String projectName,String unitName,BigDecimal totalCostLease,BigDecimal totalCostLose,BigDecimal totalCostRepair,BigDecimal totalCostScrap,BigDecimal totalCostReduction) throws Exception { List> resultsLease = new ArrayList>(); List> resultsLose = new ArrayList>(); List> resultsRepair = new ArrayList>(); List> resultsScrap = new ArrayList>(); - + List> resultsReduction = new ArrayList>(); if (lease!= null) { int sizeLease = lease.size(); for (int i = 0; i < sizeLease; i++) { @@ -313,12 +318,22 @@ public class SltAgreementInfoController extends BaseController { resultsScrap.add(maps); } } + if (reduction!= null) { + int sizeReduction = reduction.size(); + for (int i = 0; i < sizeReduction; i++) { + SltLeaseInfo bean = reduction.get(i); + Map maps = outReceiveDetailsBeanToMap(bean,5,1); + resultsReduction.add(maps); + } + } + List headersLease = receiveDetailsHeader(1,1); List headersLose = receiveDetailsHeader(2,1); List headersRepair = receiveDetailsHeader(3,1); List headersScrap = receiveDetailsHeader(4,1); - HSSFWorkbook workbook = PoiOutPage.excelForcheckAll(resultsLease,resultsLose,resultsRepair,resultsScrap, headersLease,headersLose,headersRepair,headersScrap, filename,projectName,unitName,totalCostLease,totalCostLose,totalCostRepair,totalCostScrap); + List headersReduction = receiveDetailsHeader(5,1); + HSSFWorkbook workbook = PoiOutPage.excelForcheckAll(resultsLease,resultsLose,resultsRepair,resultsScrap,resultsReduction, headersLease,headersLose,headersRepair,headersScrap,headersReduction, filename,projectName,unitName,totalCostLease,totalCostLose,totalCostRepair,totalCostScrap,totalCostReduction); OutputStream out = null; response.setContentType("application/vnd.ms-excel;charset=UTF-8"); response.addHeader("Content-Disposition", @@ -883,6 +898,208 @@ public class SltAgreementInfoController extends BaseController { } } + + /** + * 各明细导出--all + */ + @ApiOperation(value = "各明细导出") + @PreventRepeatSubmit +// @RequiresPermissions("settlement:info:export") + @SysLog(title = "结算信息", businessType = OperaType.EXPORT, logType = 1,module = "仓储管理->各明细导出") + @PostMapping("/exportEach") + public void exportEach(HttpServletResponse response, @RequestParam("params") String params) { + try { + String fileName = "结算费用明细"; + List sltAgreementInfo = JSONObject.parseArray(params,SltAgreementInfo.class); +// List projectNames = new ArrayList<>(); +// List unitNames = new ArrayList<>(); + // 创建工作簿 + HSSFWorkbook workbook = new HSSFWorkbook(); + int sheetIndex = 1; + for (SltAgreementInfo info : sltAgreementInfo) { + // 创建工作表 + HSSFSheet sheet = workbook.createSheet("sheet" + sheetIndex); + // 处理单个info的导出逻辑 + List projectNames = new ArrayList<>(); + List unitNames = new ArrayList<>(); + projectNames.add(info.getProjectName()); + unitNames.add(info.getUnitName()); + //租赁费用明细 + BigDecimal totalCostLease = BigDecimal.valueOf(0.00); + List leaseList = new ArrayList<>(); + List oneOfList = sltAgreementInfoMapper.getLeaseList(info); + leaseList.addAll(oneOfList); + for (SltAgreementInfo bean : leaseList) { + if (null == bean.getLeasePrice()) { + bean.setLeasePrice(BigDecimal.valueOf(0.00)); + } + if (null == bean.getNum()) { + bean.setNum(BigDecimal.valueOf(0L)); + } + if (null == bean.getLeaseDays()) { + bean.setLeaseDay(0L); + } + BigDecimal leasePrice = bean.getLeasePrice(); + BigDecimal num = bean.getNum(); + BigDecimal leaseDays = new BigDecimal(bean.getLeaseDays()); + BigDecimal costs = leasePrice.multiply(num).multiply(leaseDays); + if(costs!=null){ + totalCostLease = totalCostLease.add(costs); + } + bean.setCosts(costs); + } + List lease = Convert.toList(SltLeaseInfo.class, leaseList); + + //丢失费用明细 + BigDecimal totalCostLose = BigDecimal.valueOf(0.00); + List loseList = new ArrayList<>(); + List oneOfListLose = sltAgreementInfoMapper.getLoseList(info); + loseList.addAll(oneOfListLose); + for (SltAgreementInfo bean : loseList) { + if (null == bean.getBuyPrice()) { + bean.setBuyPrice(BigDecimal.valueOf(0.00)); + } + if (null == bean.getNum()) { + bean.setNum(BigDecimal.valueOf(0L)); + } + BigDecimal buyPrice = bean.getBuyPrice(); + BigDecimal num = bean.getNum(); + // 原价 x 数量 + BigDecimal costs = buyPrice.multiply(num); + if(costs!=null){ + totalCostLose = totalCostLose.add(costs); + } + //计算租赁费用 + bean.setCosts(costs); + } + List lose = Convert.toList(SltLeaseInfo.class, loseList); + + + //维修费用明细 + BigDecimal totalCostRepair = BigDecimal.valueOf(0.00); + List repairList = new ArrayList<>(); + List taskList = taskMapper.getTaskIdList(info); + if (null != taskList && !taskList.isEmpty()) { + List repairDetailsList = sltAgreementInfoMapper.getRepairDetailsList(taskList); + repairList.addAll(repairDetailsList); + } + for (SltAgreementInfo bean : repairList) { + if (bean.getCosts()!=null && (bean.getPartType().equals("收费"))) { + totalCostRepair = totalCostRepair.add(bean.getCosts()); + } + } + List repair = Convert.toList(SltLeaseInfo.class, repairList); + + + //报废费用明细 + BigDecimal totalCostScrap = BigDecimal.valueOf(0.00); + List scrapList = new ArrayList<>(); + List taskListScrap = taskMapper.getTaskIdList(info); + if (null != taskListScrap && !taskListScrap.isEmpty()) { + List scrapDetailsList = sltAgreementInfoMapper.getScrapDetailsList(taskListScrap); + scrapList.addAll(scrapDetailsList); + } + for (SltAgreementInfo bean : scrapList) { + if (bean.getCosts()!=null && (bean.getPartType().equals("收费"))) { + totalCostScrap = totalCostScrap.add(bean.getCosts()); + } + } + List scrap = Convert.toList(SltLeaseInfo.class, scrapList); + + + //减免费用明细 + BigDecimal totalCostReduction = BigDecimal.valueOf(0.00); + List reductionList = new ArrayList<>(); + + if (info.getAgreementId() != null){ + SltAgreementReduce bean =new SltAgreementReduce(); + bean.setAgreementId(info.getAgreementId()); + List oneOfListReduction = sltAgreementRecudceMapper.getReductionList(bean); + reductionList.addAll(oneOfListReduction); + } + for (SltAgreementReduce reduction : reductionList) { + if(reduction.getLeaseMoney()!=null){ + totalCostReduction = totalCostReduction.add(reduction.getLeaseMoney()); + } + } + List reduction = Convert.toList(SltLeaseInfo.class, reductionList); + String projectName = handleData(projectNames); + String unitName = handleData(unitNames); + + List> resultsLease = new ArrayList>(); + List> resultsLose = new ArrayList>(); + List> resultsRepair = new ArrayList>(); + List> resultsScrap = new ArrayList>(); + List> resultsReduction = new ArrayList>(); + if (lease!= null) { + int sizeLease = lease.size(); + for (int i = 0; i < sizeLease; i++) { + SltLeaseInfo bean = lease.get(i); + Map maps = outReceiveDetailsBeanToMap(bean,1,1); + resultsLease.add(maps); + } + } + if (lose!= null) { + int sizeLose = lose.size(); + for (int i = 0; i < sizeLose; i++) { + SltLeaseInfo bean = lose.get(i); + Map maps = outReceiveDetailsBeanToMap(bean,2,1); + resultsLose.add(maps); + } + } + if (repair!= null) { + int sizeRepair = repair.size(); + for (int i = 0; i < sizeRepair; i++) { + SltLeaseInfo bean = repair.get(i); + Map maps = outReceiveDetailsBeanToMap(bean,3,1); + resultsRepair.add(maps); + } + } + if (scrap!= null) { + int sizeScrap = scrap.size(); + for (int i = 0; i < sizeScrap; i++) { + SltLeaseInfo bean = scrap.get(i); + Map maps = outReceiveDetailsBeanToMap(bean,4,1); + resultsScrap.add(maps); + } + } + if (reduction!= null) { + int sizeReduction = reduction.size(); + for (int i = 0; i < sizeReduction; i++) { + SltLeaseInfo bean = reduction.get(i); + Map maps = outReceiveDetailsBeanToMap(bean,5,1); + resultsReduction.add(maps); + } + } + + + List headersLease = receiveDetailsHeader(1,1); + List headersLose = receiveDetailsHeader(2,1); + List headersRepair = receiveDetailsHeader(3,1); + List headersScrap = receiveDetailsHeader(4,1); + List headersReduction = receiveDetailsHeader(5,1); + // 创建工作簿和工作表 + PoiOutPage.excelForcheckEach(workbook, sheet, resultsLease,resultsLose,resultsRepair,resultsScrap,resultsReduction, headersLease,headersLose,headersRepair,headersScrap,headersReduction,projectName,unitName,totalCostLease,totalCostLose,totalCostRepair,totalCostScrap,totalCostReduction); + + + // expOutExcelAll(response,lease,lose,repair,scrap,reduction,fileName,projectName,unitName,totalCostLease,totalCostLose,totalCostRepair,totalCostScrap,totalCostReduction); + sheetIndex++; + } + OutputStream out = null; + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + response.addHeader("Content-Disposition", + "attachment;filename=" + URLEncoder.encode("各结算明细", "UTF-8") + ".xls"); + response.setHeader("Pragma", "No-cache"); + out = response.getOutputStream(); + workbook.write(out); + out.flush(); + out.close(); + + } catch (Exception e) { + log.error(e.toString(), e); + } + } + /** * 导出结算信息列表--all */ @@ -891,9 +1108,157 @@ public class SltAgreementInfoController extends BaseController { // @RequiresPermissions("settlement:info:export") @SysLog(title = "结算信息", businessType = OperaType.EXPORT, logType = 1,module = "仓储管理->导出租赁明细") @PostMapping("/exportAll") - public void exportAll(HttpServletResponse response, SltAgreementInfo sltAgreementInfo) { + public void exportAll(HttpServletResponse response, @RequestParam("params") String params) { try { - String fileName = "结算明细"; + String fileName = "结算费用明细"; + List sltAgreementInfo = JSONObject.parseArray(params,SltAgreementInfo.class); + List projectNames = new ArrayList<>(); + List unitNames = new ArrayList<>(); +// String projectName = sltAgreementInfo.getProjectName(); +// String unitName = sltAgreementInfo.getUnitName(); + + //租赁费用明细 + BigDecimal totalCostLease = BigDecimal.valueOf(0.00); + List leaseList = new ArrayList<>(); + for (SltAgreementInfo info : sltAgreementInfo) { + projectNames.add(info.getProjectName()); + unitNames.add(info.getUnitName()); + List oneOfList = sltAgreementInfoMapper.getLeaseList(info); + leaseList.addAll(oneOfList); + } + for (SltAgreementInfo bean : leaseList) { + if (null == bean.getLeasePrice()) { + bean.setLeasePrice(BigDecimal.valueOf(0.00)); + } + if (null == bean.getNum()) { + bean.setNum(BigDecimal.valueOf(0L)); + } + if (null == bean.getLeaseDays()) { + bean.setLeaseDay(0L); + } + BigDecimal leasePrice = bean.getLeasePrice(); + BigDecimal num = bean.getNum(); + BigDecimal leaseDays = new BigDecimal(bean.getLeaseDays()); + BigDecimal costs = leasePrice.multiply(num).multiply(leaseDays); + if(costs!=null){ + totalCostLease = totalCostLease.add(costs); + } + bean.setCosts(costs); + } + List lease = Convert.toList(SltLeaseInfo.class, leaseList); + + //丢失费用明细 + BigDecimal totalCostLose = BigDecimal.valueOf(0.00); + List loseList = new ArrayList<>(); + + for (SltAgreementInfo info : sltAgreementInfo) { + List oneOfList = sltAgreementInfoMapper.getLoseList(info); + loseList.addAll(oneOfList); + } + + for (SltAgreementInfo bean : loseList) { + if (null == bean.getBuyPrice()) { + bean.setBuyPrice(BigDecimal.valueOf(0.00)); + } + if (null == bean.getNum()) { + bean.setNum(BigDecimal.valueOf(0L)); + } + BigDecimal buyPrice = bean.getBuyPrice(); + BigDecimal num = bean.getNum(); + // 原价 x 数量 + BigDecimal costs = buyPrice.multiply(num); + if(costs!=null){ + totalCostLose = totalCostLose.add(costs); + } + //计算租赁费用 + bean.setCosts(costs); + } + List lose = Convert.toList(SltLeaseInfo.class, loseList); + + //维修费用明细 + BigDecimal totalCostRepair = BigDecimal.valueOf(0.00); + List repairList = new ArrayList<>(); + + for (SltAgreementInfo info : sltAgreementInfo) { + List taskList = taskMapper.getTaskIdList(info); + if (null != taskList && !taskList.isEmpty()) { + List repairDetailsList = sltAgreementInfoMapper.getRepairDetailsList(taskList); + repairList.addAll(repairDetailsList); + } + } + for (SltAgreementInfo bean : repairList) { + if (bean.getCosts()!=null && (bean.getPartType().equals("收费"))) { + totalCostRepair = totalCostRepair.add(bean.getCosts()); + } + } + List repair = Convert.toList(SltLeaseInfo.class, repairList); + + //报废费用明细 + BigDecimal totalCostScrap = BigDecimal.valueOf(0.00); + List scrapList = new ArrayList<>(); + for (SltAgreementInfo info : sltAgreementInfo) { + List taskList = taskMapper.getTaskIdList(info); + if (null != taskList && !taskList.isEmpty()) { + List scrapDetailsList = sltAgreementInfoMapper.getScrapDetailsList(taskList); + scrapList.addAll(scrapDetailsList); + } + } + + for (SltAgreementInfo bean : scrapList) { + if (bean.getCosts()!=null && (bean.getPartType().equals("收费"))) { + totalCostScrap = totalCostScrap.add(bean.getCosts()); + } + } + List scrap = Convert.toList(SltLeaseInfo.class, scrapList); + + //减免费用明细 + BigDecimal totalCostReduction = BigDecimal.valueOf(0.00); + List reductionList = new ArrayList<>(); +// if (sltAgreementInfo.getAgreementId()!=null){ +// SltAgreementReduce bean =new SltAgreementReduce(); +// bean.setAgreementId(sltAgreementInfo.getAgreementId()); +// reductionList = sltAgreementRecudceMapper.getReductionList(bean); +// for (SltAgreementReduce reduction : reductionList){ +// if(reduction.getLeaseMoney()!=null){ +// totalCostReduction = totalCostReduction.add(reduction.getLeaseMoney()); +// } +// } +// } + + for (SltAgreementInfo info : sltAgreementInfo) { + if (info.getAgreementId() != null){ + SltAgreementReduce bean =new SltAgreementReduce(); + bean.setAgreementId(info.getAgreementId()); + List oneOfList = sltAgreementRecudceMapper.getReductionList(bean); + reductionList.addAll(oneOfList); + } + + } + for (SltAgreementReduce reduction : reductionList) { + if(reduction.getLeaseMoney()!=null){ + totalCostReduction = totalCostReduction.add(reduction.getLeaseMoney()); + } + } + List reduction = Convert.toList(SltLeaseInfo.class, reductionList); + String projectName = handleData(projectNames); + String unitName = handleData(unitNames); + expOutExcelAll(response,lease,lose,repair,scrap,reduction,fileName,projectName,unitName,totalCostLease,totalCostLose,totalCostRepair,totalCostScrap,totalCostReduction); + } catch (Exception e) { + log.error(e.toString(), e); + } + } + + + /** + * 结算记录查询--导出全部明细 + */ + @ApiOperation(value = "导出全部结算费用明细") + @PreventRepeatSubmit + @SysLog(title = "结算记录查询", businessType = OperaType.EXPORT, logType = 1,module = "结算记录查询->导出全部结算费用明细") + @PostMapping("/exportAlls") + public void exportAlls(HttpServletResponse response, SltAgreementInfo sltAgreementInfo) { + try { + String fileName = "结算费用明细"; String projectName = sltAgreementInfo.getProjectName(); String unitName = sltAgreementInfo.getUnitName(); @@ -978,154 +1343,21 @@ public class SltAgreementInfoController extends BaseController { } List scrap = Convert.toList(SltLeaseInfo.class, scrapList); - expOutExcelAll(response,lease,lose,repair,scrap,fileName,projectName,unitName,totalCostLease,totalCostLose,totalCostRepair,totalCostScrap); - } catch (Exception e) { - log.error(e.toString(), e); - } - } - - - /** - * 结算记录查询--导出全部明细 - */ - @ApiOperation(value = "导出全部结算费用明细") - @PreventRepeatSubmit - @SysLog(title = "结算记录查询", businessType = OperaType.EXPORT, logType = 1,module = "结算记录查询->导出全部结算费用明细") - @PostMapping("/exportAlls") - public void exportAlls(HttpServletResponse response, @RequestParam("params") String params) { - try { - String fileName = "结算费用明细"; - List sltAgreementInfo = JSONObject.parseArray(params,SltAgreementInfo.class); - List projectNames = new ArrayList<>(); - List unitNames = new ArrayList<>(); -// String projectName = sltAgreementInfo.getProjectName(); -// String unitName = sltAgreementInfo.getUnitName(); - - //租赁费用明细 - BigDecimal totalCostLease = BigDecimal.valueOf(0.00); - List leaseList = new ArrayList<>(); - for (SltAgreementInfo info : sltAgreementInfo) { - projectNames.add(info.getProjectName()); - unitNames.add(info.getUnitName()); - List oneOfList = sltAgreementInfoMapper.getLeaseList(info); - leaseList.addAll(oneOfList); - } - for (SltAgreementInfo bean : leaseList) { - if (null == bean.getLeasePrice()) { - bean.setLeasePrice(BigDecimal.valueOf(0.00)); - } - if (null == bean.getNum()) { - bean.setNum(BigDecimal.valueOf(0L)); - } - if (null == bean.getLeaseDays()) { - bean.setLeaseDay(0L); - } - BigDecimal leasePrice = bean.getLeasePrice(); - BigDecimal num = bean.getNum(); - BigDecimal leaseDays = new BigDecimal(bean.getLeaseDays()); - BigDecimal costs = leasePrice.multiply(num).multiply(leaseDays); - if(costs!=null){ - totalCostLease = totalCostLease.add(costs); - } - bean.setCosts(costs); - } - List lease = Convert.toList(SltLeaseInfo.class, leaseList); - - //丢失费用明细 - BigDecimal totalCostLose = BigDecimal.valueOf(0.00); - List loseList = new ArrayList<>(); - - for (SltAgreementInfo info : sltAgreementInfo) { - List oneOfList = sltAgreementInfoMapper.getLoseList(info); - loseList.addAll(oneOfList); - } - - for (SltAgreementInfo bean : loseList) { - if (null == bean.getBuyPrice()) { - bean.setBuyPrice(BigDecimal.valueOf(0.00)); - } - if (null == bean.getNum()) { - bean.setNum(BigDecimal.valueOf(0L)); - } - BigDecimal buyPrice = bean.getBuyPrice(); - BigDecimal num = bean.getNum(); - // 原价 x 数量 - BigDecimal costs = buyPrice.multiply(num); - if(costs!=null){ - totalCostLose = totalCostLose.add(costs); - } - //计算租赁费用 - bean.setCosts(costs); - } - List lose = Convert.toList(SltLeaseInfo.class, loseList); - - //维修费用明细 - BigDecimal totalCostRepair = BigDecimal.valueOf(0.00); - List repairList = new ArrayList<>(); - - for (SltAgreementInfo info : sltAgreementInfo) { - List taskList = taskMapper.getTaskIdList(info); - if (null != taskList && !taskList.isEmpty()) { - List repairDetailsList = sltAgreementInfoMapper.getRepairDetailsList(taskList); - repairList.addAll(repairDetailsList); - } - } - for (SltAgreementInfo bean : repairList) { - if (bean.getCosts()!=null && (bean.getPartType().equals("收费"))) { - totalCostRepair = totalCostRepair.add(bean.getCosts()); - } - } - List repair = Convert.toList(SltLeaseInfo.class, repairList); - - //报废费用明细 - BigDecimal totalCostScrap = BigDecimal.valueOf(0.00); - List scrapList = new ArrayList<>(); - for (SltAgreementInfo info : sltAgreementInfo) { - List taskList = taskMapper.getTaskIdList(info); - if (null != taskList && !taskList.isEmpty()) { - List scrapDetailsList = sltAgreementInfoMapper.getScrapDetailsList(taskList); - scrapList.addAll(scrapDetailsList); - } - } - - for (SltAgreementInfo bean : scrapList) { - if (bean.getCosts()!=null && (bean.getPartType().equals("收费"))) { - totalCostScrap = totalCostScrap.add(bean.getCosts()); - } - } - List scrap = Convert.toList(SltLeaseInfo.class, scrapList); - //减免费用明细 BigDecimal totalCostReduction = BigDecimal.valueOf(0.00); List reductionList = new ArrayList<>(); -// if (sltAgreementInfo.getAgreementId()!=null){ -// SltAgreementReduce bean =new SltAgreementReduce(); -// bean.setAgreementId(sltAgreementInfo.getAgreementId()); -// reductionList = sltAgreementRecudceMapper.getReductionList(bean); -// for (SltAgreementReduce reduction : reductionList){ -// if(reduction.getLeaseMoney()!=null){ -// totalCostReduction = totalCostReduction.add(reduction.getLeaseMoney()); -// } -// } -// } - - for (SltAgreementInfo info : sltAgreementInfo) { - if (info.getAgreementId() != null){ - SltAgreementReduce bean =new SltAgreementReduce(); - bean.setAgreementId(info.getAgreementId()); - List oneOfList = sltAgreementRecudceMapper.getReductionList(bean); - reductionList.addAll(oneOfList); - } - - } - for (SltAgreementReduce reduction : reductionList) { - if(reduction.getLeaseMoney()!=null){ - totalCostReduction = totalCostReduction.add(reduction.getLeaseMoney()); + if (sltAgreementInfo.getAgreementId()!=null){ + SltAgreementReduce bean =new SltAgreementReduce(); + bean.setAgreementId(sltAgreementInfo.getAgreementId()); + reductionList = sltAgreementRecudceMapper.getReductionList(bean); + for (SltAgreementReduce reduction : reductionList){ + if(reduction.getLeaseMoney()!=null){ + totalCostReduction = totalCostReduction.add(reduction.getLeaseMoney()); + } } } List reduction = Convert.toList(SltLeaseInfo.class, reductionList); - String projectName = handleData(projectNames); - String unitName = handleData(unitNames); + expOutExcelAlls(response,lease,lose,repair,scrap,reduction,fileName,projectName,unitName,totalCostLease,totalCostLose,totalCostRepair,totalCostScrap,totalCostReduction); } catch (Exception e) { log.error(e.toString(), e);