diff --git a/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/base/api/domain/SltAgreementInfo.java b/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/base/api/domain/SltAgreementInfo.java index a00b444..d97c6f5 100644 --- a/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/base/api/domain/SltAgreementInfo.java +++ b/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/base/api/domain/SltAgreementInfo.java @@ -28,6 +28,11 @@ public class SltAgreementInfo { * 协议id */ private String agreementId; + + private List agreementIds; + /** + * 项目id + */ /** * 编码 */ diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/controller/LeaseOutDetailsController.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/controller/LeaseOutDetailsController.java index 9390496..3560169 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/controller/LeaseOutDetailsController.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/controller/LeaseOutDetailsController.java @@ -185,6 +185,17 @@ public class LeaseOutDetailsController extends BaseController { } } + /** + * 出库单修改出库时间 + * + * @param bean + */ + @Log(title = "出库单修改出库时间", businessType = BusinessType.UPDATE) + @PostMapping("/updateOutTime") + public AjaxResult updateOutTime(@RequestBody TmTask bean) { + return leaseOutDetailsService.updateOutTime(bean); + } + /** * 综合查询--领用记录查询 * @@ -217,4 +228,6 @@ public class LeaseOutDetailsController extends BaseController { } } + + } diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/mapper/LeaseApplyDetailsMapper.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/mapper/LeaseApplyDetailsMapper.java index 7e923a6..3b1efd6 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/mapper/LeaseApplyDetailsMapper.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/mapper/LeaseApplyDetailsMapper.java @@ -57,4 +57,5 @@ public interface LeaseApplyDetailsMapper { List getOrderBody(@Param("parentId") String parentId,@Param("typeId") String typeId); List getLeaseApplyDetailsTypeCount(BackApplyInfo bean); + } \ No newline at end of file diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/mapper/LeaseOutDetailsMapper.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/mapper/LeaseOutDetailsMapper.java index 0d1198a..80f4bb7 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/mapper/LeaseOutDetailsMapper.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/mapper/LeaseOutDetailsMapper.java @@ -109,4 +109,14 @@ public interface LeaseOutDetailsMapper { LeaseApplyDetails getLeaseApplyDetails(@Param("record") LeaseOutDetails record); int updateLeaseApplyDetails(@Param("record") LeaseOutDetails record); + + int updateOutTimeTmTask(TmTask bean); + + List getDetail(TmTask bean); + + int updateOutTimeDetails(TmTask bean); + + List getSlt(TmTask bean); + + int updateOutTimeSlt(TmTask bean); } diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/service/LeaseOutDetailsService.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/service/LeaseOutDetailsService.java index e504382..6b63020 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/service/LeaseOutDetailsService.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/service/LeaseOutDetailsService.java @@ -81,4 +81,6 @@ public interface LeaseOutDetailsService { TmTask getLeaseOutOrder(String parentId,String typeId); int delMachineByRfid(MaMachine maMachine); + + AjaxResult updateOutTime(TmTask bean); } diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/service/impl/LeaseOutDetailsServiceImpl.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/service/impl/LeaseOutDetailsServiceImpl.java index be9fb17..5e592ee 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/service/impl/LeaseOutDetailsServiceImpl.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/service/impl/LeaseOutDetailsServiceImpl.java @@ -160,6 +160,39 @@ public class LeaseOutDetailsServiceImpl implements LeaseOutDetailsService { return orderHead; } + @Override + @Transactional + public AjaxResult updateOutTime(TmTask bean) { + try { + //修改tm_task表的出库时间 + int i = leaseOutDetailsMapper.updateOutTimeTmTask(bean); + if (i == 0) { + return AjaxResult.error("出库时间修改失败"); + } + List detailList = leaseOutDetailsMapper.getDetail(bean); + if(!detailList.isEmpty()){ + int j = leaseOutDetailsMapper.updateOutTimeDetails(bean); + if (j == 0) { + return AjaxResult.error("出库时间修改失败"); + } + } + + List sltList = leaseOutDetailsMapper.getSlt(bean); + if(!sltList.isEmpty()){ + int k = leaseOutDetailsMapper.updateOutTimeSlt(bean); + if (k == 0) { + return AjaxResult.error("出库时间修改失败"); + } + } + } catch (Exception e) { + log.error("出库时间修改成功", e.getMessage()); + throw new RuntimeException("出库时间修改成功"); + } + return AjaxResult.success("出库时间修改成功"); + } + + + @Override public int delMachineByRfid(MaMachine maMachine) { List maMachineByMaIdAndMaCode = maMachineMapper.getMaMachineByMaIdAndMaCode(maMachine); diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/config/PoiOutPage.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/config/PoiOutPage.java new file mode 100644 index 0000000..d07af47 --- /dev/null +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/config/PoiOutPage.java @@ -0,0 +1,1309 @@ +package com.bonus.sgzb.material.config; + + +import org.apache.poi.hssf.usermodel.*; +import org.apache.poi.hssf.util.HSSFColor; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.ss.util.RegionUtil; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 导出模版样式 + * @author ma_sh + */ +public class PoiOutPage { + + /** + * 生成带有样式的 Excel 文件 + * @param result + * @param list + * @param filename + * @return + */ + public static HSSFWorkbook excel(List> result, List list, String filename) { + // 获取工作簿对象 + HSSFWorkbook workbook = new HSSFWorkbook(); + HSSFSheet sheet = workbook.createSheet(); + HSSFCellStyle titleStyle = createTitleStyle(workbook); + HSSFCellStyle headerStyle = createHeaderStyle(workbook); + HSSFCellStyle contentStyle = createCellStyle(workbook); + + // 设置默认列宽 + sheet.setDefaultColumnWidth(15); + // 设置工作簿名称 + workbook.setSheetName(0, filename); + + // 如果数据为空,创建一个空的工作表 + if (result == null || result.size() == 0) { + createEmptySheet(sheet, list, titleStyle, headerStyle, filename); + } else { + // 如果数据不为空,创建工作表并填充数据 + int nColumn = list.size(); + int rowNum = createTitleRow(sheet, titleStyle, filename, nColumn); + rowNum = createHeaderRow(sheet, headerStyle, list, rowNum); + createDataRows(sheet, result, contentStyle, nColumn, rowNum); + } + + return workbook; + } + + /** + * 创建标题行 + * @param sheet + * @param titleStyle + * @param filename + * @param nColumn + * @return + */ + private static int createTitleRow(HSSFSheet sheet, HSSFCellStyle titleStyle, String filename, int nColumn) { + HSSFRow row = sheet.createRow(0); + row.setHeightInPoints(35); + sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, (short) (nColumn - 1))); + HSSFCell cell = row.createCell(0); + cell.setCellStyle(titleStyle); + cell.setCellValue(filename); + return 1; // 下一行是表头 + } + + /** + * 创建表头行 + * @param sheet + * @param headerStyle + * @param list + * @param rowNum + * @return + */ + private static int createHeaderRow(HSSFSheet sheet, HSSFCellStyle headerStyle, List list, int rowNum) { + HSSFRow row = sheet.createRow(rowNum); + row.setHeightInPoints(10); + for (int j = 0; j < list.size(); j++) { + HSSFCell cell = row.createCell(j); + String header = list.get(j); + cell.setCellStyle(headerStyle); + cell.setCellValue(header != null ? header : ""); + } + return rowNum + 1; + } + + /** + * 填充数据行 + * @param sheet + * @param result + * @param contentStyle + * @param nColumn + * @param rowNum + */ + private static void createDataRows(HSSFSheet sheet, List> result, HSSFCellStyle contentStyle, int nColumn, int rowNum) { + for (Map resultRow : result) { + List rowData = map2List(resultRow); + HSSFRow row = sheet.createRow(rowNum++); + row.setHeightInPoints(15); + + // 第一列:单位数据 + if (rowData.size() != nColumn) { + HSSFCell cell = row.createCell(0); + cell.setCellStyle(contentStyle); + cell.setCellValue(rowData.get(0).toString()); + + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 1, (short) (nColumn - 1))); + continue; + } + + // 填充数据行 + for (int j = 0; j < nColumn; j++) { + HSSFCell cell = row.createCell(j); + Object data = rowData.get(j); + if (data != null) { + setCellValue(cell, contentStyle, data); + } else { + cell.setCellStyle(contentStyle); + cell.setCellValue(""); + } + } + } + } + + /** + * 设置单元格数据 + * @param cell + * @param contentStyle + * @param data + */ + private static void setCellValue(HSSFCell cell, HSSFCellStyle contentStyle, Object data) { + if (isNumeric(data)) { + contentStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00")); + cell.setCellStyle(contentStyle); + cell.setCellValue(Double.parseDouble(data.toString())); + } else { + cell.setCellStyle(contentStyle); + cell.setCellValue(data.toString()); + } + } + + /** + * 创建一个空的工作表 + * @param sheet + * @param list + * @param titleStyle + * @param headerStyle + * @param filename + */ + private static void createEmptySheet(HSSFSheet sheet, List list, HSSFCellStyle titleStyle, HSSFCellStyle headerStyle, String filename) { + int nColumn = list.size(); + int rowNum = createTitleRow(sheet, titleStyle, filename, nColumn); + createHeaderRow(sheet, headerStyle, list, rowNum); + } + + + /** + * 生成带有样式的 Excel 文件 + * + * @param result 数据内容(每行是一个 Map) + * @param list 表头 + * @param filename 文件名 + * @param unit 单位信息 + * @param projectName 项目名称 + * @return HSSFWorkbook 生成的 Excel 文件 + */ + public static HSSFWorkbook excelForcheck(List> result, List list, + String filename, String unit, String projectName) { + // 创建工作簿和工作表 + HSSFWorkbook workbook = new HSSFWorkbook(); + HSSFSheet sheet = workbook.createSheet(); + sheet.setDefaultColumnWidth(15); // 设置列宽 + + // 创建样式 + HSSFCellStyle titleStyle = createTitleStyle(workbook); + HSSFCellStyle headerStyle = createHeaderStyle(workbook); + HSSFCellStyle contentStyle = createCellStyle(workbook); + + // 设置工作簿名称 + workbook.setSheetName(0, filename); + + // 填充标题行 + int rowNum = 0; + rowNum = createTitleRow(sheet, rowNum, filename, titleStyle, list.size()); + rowNum = createProjectInfoRow(sheet, rowNum, projectName, unit, titleStyle, list.size()); + + // 填充表头 + rowNum = createHeaderRow(sheet, rowNum, list, headerStyle); + + // 填充数据行 + if (result != null && !result.isEmpty()) { + rowNum = createDataRows(sheet, rowNum, result, contentStyle, list.size()); + } else { + // 如果没有数据,则仅显示表头 + rowNum++; + } + + return workbook; + } + + public static HSSFWorkbook excelForcheckTwo(List> result, List list, String filename, String projectName, String unit, BigDecimal totalCost) { + // 创建工作簿和工作表 + HSSFWorkbook workbook = new HSSFWorkbook(); + HSSFSheet sheet = workbook.createSheet(); + sheet.setDefaultColumnWidth(10); // 设置列宽 + + // 创建样式 + HSSFCellStyle titleStyle = createTitleStyle(workbook); + HSSFCellStyle headerStyle = createHeaderStyle(workbook); + HSSFCellStyle contentStyle = createCellStyleCost(workbook); + HSSFCellStyle headerStyleNoSide = createHeaderStyleNoSide(workbook); + + // 设置工作簿名称 + workbook.setSheetName(0, filename); + + // 填充标题行 + int rowNum = 0; + rowNum = createTitleRowStyle(sheet, rowNum, filename, titleStyle, list.size()); + rowNum = createProjectAndUnitRow(sheet, rowNum, projectName, unit, titleStyle, list.size()); + + // 填充表头 + rowNum = createHeaderRow(sheet, rowNum, list, headerStyle); + + // 填充数据行 + if (result != null && !result.isEmpty()) { + rowNum = createDataRows(sheet, rowNum, result, contentStyle, list.size()); + } else { + // 如果没有数据,则仅显示表头 +// rowNum++; +// rowNum = createDataRows(sheet, rowNum, result, contentStyle, list.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) (list.size() - 1))); + CellRangeAddress cellRange = new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (list.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, list, totalCost, headerStyle); + HSSFRow row = sheet.createRow(rowNum++); + row.setHeightInPoints(30); + HSSFCell cell1 = row.createCell(1); + cell1.setCellStyle(headerStyleNoSide); + cell1.setCellValue("主管:"); + + HSSFCell cell2 = row.createCell(6); + cell2.setCellStyle(headerStyleNoSide); + cell2.setCellValue("审核:"); + + HSSFCell cell3 = row.createCell(10); + cell3.setCellStyle(headerStyleNoSide); + cell3.setCellValue("经办人:"); + return workbook; + } + + 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(); + sheet.setDefaultColumnWidth(15); // 设置列宽 + + // 创建样式 + HSSFCellStyle titleStyle = createTitleStyle(workbook); + HSSFCellStyle headerStyle = createHeaderStyle(workbook); + HSSFCellStyle contentStyle = createCellStyleCost(workbook); + + // 设置工作簿名称 + workbook.setSheetName(0, filename); + + // 填充标题行 + int rowNum = 0; + rowNum = createTitleRowStyle(sheet, rowNum, filename, 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); + + 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); + + // 填充标题行 + int rowNum = 0; + + // 填充表头 + 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); + + } + + + /** + * 结算记录查询--导出全部明细 + */ + public static HSSFWorkbook excelForcheckAlls(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(); + sheet.setDefaultColumnWidth(15); // 设置列宽 + + // 创建样式 + HSSFCellStyle titleStyle = createTitleStyle(workbook); + HSSFCellStyle headerStyle = createHeaderStyle(workbook); + HSSFCellStyle contentStyle = createCellStyleCost(workbook); + + // 设置工作簿名称 + workbook.setSheetName(0, filename); + + // 填充标题行 + int rowNum = 0; + rowNum = createTitleRowStyle(sheet, rowNum, filename, titleStyle, listLease.size()); + rowNum = createTitleRowStyleCost(sheet, rowNum, "本工程清算项目及金额(元)", titleStyle, listLease.size()); + BigDecimal totalCost1 = totalCostLease.subtract(totalCostReduction); + //合计 + BigDecimal totalCostAll = totalCostLease.add(totalCostLose).add(totalCostRepair).add(totalCostScrap).subtract(totalCostReduction); +// String all= NumberToChinese.number2CN(totalCostAll.setScale(2, RoundingMode.HALF_UP)); +// rowNum = createProjectAndUnitRows(sheet, rowNum, "一、施工机具有偿使用费:", totalCost1.setScale(2, RoundingMode.HALF_UP)+"", titleStyle, listLease.size()); +// rowNum = createProjectAndUnitRows(sheet, rowNum, "二、施工机具维修费:", totalCostRepair.setScale(2, RoundingMode.HALF_UP)+"", titleStyle, listLease.size()); +// rowNum = createProjectAndUnitRows(sheet, rowNum, "三、施工机具丢失费:", totalCostLose.setScale(2, RoundingMode.HALF_UP)+"", titleStyle, listLease.size()); +// rowNum = createProjectAndUnitRows(sheet, rowNum, "四、施工机具损坏赔偿费:", totalCostScrap.setScale(2, RoundingMode.HALF_UP)+"", titleStyle, listLease.size()); +// rowNum = createProjectAndUnitRowss(sheet,rowNum,"费用合计金额(大写)",all,totalCostAll.setScale(2, RoundingMode.HALF_UP)+"", titleStyle, listLease.size()); +// rowNum = createProjectAndUnitRows(sheet, rowNum, "说明", "本协议一式三份,甲方一份,乙方一份,经双方签字后生效。", titleStyle, listLease.size()); +// rowNum = createProjectAndUnitRows(sheet, rowNum, "备注", "此费用仅为在机具设备分公司发生费用,未计从项目部领用机具费用。", 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); + + rowNum = createTotalRowAll(sheet, rowNum, listScrap, totalCostAll, headerStyle); + + return workbook; + } + + + /** + * 在数据的最后一行添加费用小计 + * + * @param sheet 工作表 + * @param rowNum 当前行号 + * @param list 列名列表 + * @param totalCost 总费用 + * @param headerStyle 表头样式 + */ + private static int createTotalRow(HSSFSheet sheet, int rowNum, List list, BigDecimal totalCost, HSSFCellStyle headerStyle) { + HSSFRow row = sheet.createRow(rowNum++); + row.setHeightInPoints(30); + sheet.addMergedRegion(new CellRangeAddress(rowNum-1, rowNum-1, 0, 1)); + HSSFCell cell = row.createCell(0); + cell.setCellStyle(headerStyle); + cell.setCellValue("合计"); + // 设置边框样式,覆盖整个合并区域 + CellRangeAddress cellRange1 = new CellRangeAddress(rowNum - 1, rowNum - 1, 0, 1); + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange1, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange1, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange1, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange1, sheet); + + sheet.addMergedRegion(new CellRangeAddress(rowNum-1, rowNum-1, 2, (short) (list.size() - 3))); + CellRangeAddress cellRange = new CellRangeAddress(rowNum - 1, rowNum - 1, 2, (short) (list.size() - 3)); + // 设置边框样式 + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange, sheet); + // 假设总费用应该放在最后一列 + sheet.addMergedRegion(new CellRangeAddress(rowNum-1, rowNum-1, list.size() - 2, list.size() - 1)); + int totalCostColumnIndex = list.size() - 2; + HSSFCell cell1 = row.createCell(totalCostColumnIndex); + cell1.setCellStyle(headerStyle); + cell1.setCellValue(String.format("%.2f", totalCost)); + // 设置边框样式,覆盖整个合并区域 + CellRangeAddress cellRange2 = new CellRangeAddress(rowNum - 1, rowNum - 1, list.size() - 2, list.size() - 1); + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange2, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange2, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange2, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange2, sheet); + return rowNum; + } + /** + * 在数据的最后一行添加合计费用 + * + * @param sheet 工作表 + * @param rowNum 当前行号 + * @param list 列名列表 + * @param totalCost 总费用 + * @param headerStyle 表头样式 + */ + private static int createTotalRowAll(HSSFSheet sheet, int rowNum, List list, BigDecimal totalCost, HSSFCellStyle headerStyle) { + HSSFRow row = sheet.createRow(rowNum++); + HSSFCell cell = row.createCell(0); + cell.setCellStyle(headerStyle); + cell.setCellValue("合计:"); + + sheet.addMergedRegion(new CellRangeAddress(rowNum-1, rowNum-1, 1, (short) (list.size() - 2))); + CellRangeAddress cellRange = new CellRangeAddress(rowNum - 1, rowNum - 1, 1, (short) (list.size() - 2)); + // 设置边框样式 + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange, sheet); + // 假设总费用应该放在最后一列 + int totalCostColumnIndex = list.size() - 1; + cell = row.createCell(totalCostColumnIndex); + cell.setCellStyle(headerStyle); + cell.setCellValue(String.format("%.2f", totalCost)); + + return rowNum; + } + + /** + * 创建标题行 + */ + private static int createTitleRow(HSSFSheet sheet, int rowNum, String filename, HSSFCellStyle titleStyle, int nColumn) { + HSSFRow row = sheet.createRow(rowNum++); + row.setHeightInPoints(30); + sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, (short) (nColumn - 1))); + HSSFCell cell = row.createCell(0); + cell.setCellStyle(titleStyle); + cell.setCellValue(filename); + return rowNum; + } + + /** + * 创建标题行以及样式 + */ + private static int createTitleRowStyle(HSSFSheet sheet, int rowNum, String filename, HSSFCellStyle titleStyle, int nColumn) { + HSSFRow row = sheet.createRow(rowNum++); + row.setHeightInPoints(40); + sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, (short) (nColumn - 1))); + HSSFCell cell = row.createCell(0); + cell.setCellStyle(titleStyle); + cell.setCellValue(filename); + // 添加边框 + CellRangeAddress cellRange = new CellRangeAddress(rowNum - 1, rowNum - 1, rowNum - 1, (short) (nColumn - 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); + + return rowNum; + } + + /** + * 创建标题行以及样式--all + */ + private static int createTitleRowStyleCost(HSSFSheet sheet, int rowNum, String filename, HSSFCellStyle titleStyle, int nColumn) { + HSSFRow row = sheet.createRow(rowNum++); + row.setHeightInPoints(30); + sheet.addMergedRegion(new CellRangeAddress(rowNum-1, rowNum-1, 0, (short) (nColumn - 1))); + HSSFCell cell = row.createCell(0); + cell.setCellStyle(titleStyle); + cell.setCellValue(filename); + // 添加边框 + CellRangeAddress cellRange = new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (nColumn - 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); + + return rowNum; + } + + /** + * 创建结算单位和结算工程行 + */ + private static int createProjectAndUnitRow(HSSFSheet sheet, int rowNum, String projectName, String unitName,HSSFCellStyle titleStyle, int nColumn) { + // 第一行:结算单位 + HSSFRow row1 = sheet.createRow(rowNum++); + row1.setHeightInPoints(30); + // bug修复:修改合并单元格区域,确保包含两个或以上单元格 + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 0, 1)); // 结算单位: 占8 + HSSFCell cell1 = row1.createCell(0); + cell1.setCellStyle(titleStyle); + cell1.setCellValue("领用单位:"); + + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 2, (short) (nColumn - 1))); // unitName 占剩余的22 + HSSFCell cell2 = row1.createCell(2); + cell2.setCellStyle(titleStyle); + cell2.setCellValue(unitName); + + // 第二行:结算工程 + HSSFRow row2 = sheet.createRow(rowNum++); + row2.setHeightInPoints(30); + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 0, 1)); // 结算工程: 占8 + HSSFCell cell3 = row2.createCell(0); + cell3.setCellStyle(titleStyle); + cell3.setCellValue("工程名称:"); + + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 2, (short) (nColumn - 8))); // projectName 占剩余的22 + HSSFCell cell4 = row2.createCell(2); + cell4.setCellStyle(titleStyle); + cell4.setCellValue(projectName); + + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, (short) (nColumn - 7), (short) (nColumn - 6))); // 结算单位: 占8 + HSSFCell cell5 = row2.createCell(8); + cell5.setCellStyle(titleStyle); + cell5.setCellValue("费用承担方:"); + + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, (short) (nColumn - 5), (short) (nColumn - 1))); // 结算单位: 占8 + HSSFCell cell6 = row2.createCell(10); + // 创建红色字体样式 + HSSFCellStyle redStyle = sheet.getWorkbook().createCellStyle(); + redStyle.cloneStyleFrom(titleStyle); // 复制原有样式 + HSSFFont font = sheet.getWorkbook().createFont(); + font.setColor(HSSFColor.HSSFColorPredefined.RED.getIndex()); // 设置字体颜色为红色 + font.setFontHeightInPoints((short) 12); + redStyle.setFont(font); + + cell6.setCellStyle(redStyle); // 应用红色字体样式 + cell6.setCellValue("01"); + + // 添加边框 + CellRangeAddress cellRange1 = new CellRangeAddress(rowNum - 2, rowNum - 2, 0, 1); + CellRangeAddress cellRange2 = new CellRangeAddress(rowNum - 2, rowNum - 2, 2, (short) (nColumn - 1)); + CellRangeAddress cellRange3 = new CellRangeAddress(rowNum - 1, rowNum - 1, 0, 1); + CellRangeAddress cellRange4 = new CellRangeAddress(rowNum - 1, rowNum - 1, 2, (short) (nColumn - 8)); + CellRangeAddress cellRange5 = new CellRangeAddress(rowNum - 1, rowNum - 1, (short) (nColumn - 7), (short) (nColumn - 6)); + CellRangeAddress cellRange6 = new CellRangeAddress(rowNum - 1, rowNum - 1, (short) (nColumn - 5), (short) (nColumn - 1)); + // 设置边框样式 + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange1, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange1, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange1, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange1, sheet); + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange2, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange2, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange2, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange2, sheet); + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange3, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange3, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange3, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange3, sheet); + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange4, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange4, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange4, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange4, sheet); + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange5, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange5, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange5, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange5, sheet); + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange6, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange6, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange6, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange6, sheet); + + return rowNum; + } + + /** + * 创建结算单位和结算工程行 + */ + private static int createProjectAndUnitRows(HSSFSheet sheet, int rowNum, String projectName, String unitName,HSSFCellStyle titleStyle, int nColumn) { + // 第一行:结算单位 + HSSFRow row1 = sheet.createRow(rowNum++); + row1.setHeightInPoints(30); + // bug修复:修改合并单元格区域,确保包含两个或以上单元格 + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 0, 2)); // 结算单位: 占8 + HSSFCell cell1 = row1.createCell(0); + cell1.setCellStyle(titleStyle); + cell1.setCellValue(projectName); + + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 3, (short) (nColumn - 1))); // unitName 占剩余的22 + HSSFCell cell2 = row1.createCell(3); + cell2.setCellStyle(titleStyle); + cell2.setCellValue(unitName); + + // 添加边框 + CellRangeAddress cellRange1 = new CellRangeAddress(rowNum - 2, rowNum - 2, 0, 2); + CellRangeAddress cellRange2 = new CellRangeAddress(rowNum - 2, rowNum - 2, 3, (short) (nColumn - 1)); + // 设置边框样式 + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange1, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange1, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange1, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange1, sheet); + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange2, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange2, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange2, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange2, sheet); + return rowNum; + } + + private static int createProjectAndUnitRowss(HSSFSheet sheet, int rowNum, String projectName, String unitName,String data,HSSFCellStyle titleStyle, int nColumn) { + // 第一行:结算单位 + HSSFRow row1 = sheet.createRow(rowNum++); + row1.setHeightInPoints(30); + // bug修复:修改合并单元格区域,确保包含两个或以上单元格 + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 0, 2)); // 结算单位: 占8 + HSSFCell cell1 = row1.createCell(0); + cell1.setCellStyle(titleStyle); + cell1.setCellValue(projectName); + + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 3, 5)); // 结算单位: 占8 + HSSFCell cell2 = row1.createCell(3); + cell2.setCellStyle(titleStyle); + cell2.setCellValue(unitName); + + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 6, (short) (nColumn - 1))); // unitName 占剩余的22 + HSSFCell cell3 = row1.createCell(6); + cell3.setCellStyle(titleStyle); + cell3.setCellValue(data); + + // 添加边框 + CellRangeAddress cellRange1 = new CellRangeAddress(rowNum - 2, rowNum - 2, 0, 2); + CellRangeAddress cellRange2 = new CellRangeAddress(rowNum - 2, rowNum - 2, 3, 5); + CellRangeAddress cellRange3 = new CellRangeAddress(rowNum - 2, rowNum - 2, 6, (short) (nColumn - 1)); + // 设置边框样式 + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange1, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange1, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange1, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange1, sheet); + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange2, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange2, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange2, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange2, sheet); + RegionUtil.setBorderTop(BorderStyle.THIN, cellRange3, sheet); + RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange3, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange3, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, cellRange3, sheet); + return rowNum; + } + + /** + * 创建项目名称和单位信息行 + */ + private static int createProjectInfoRow(HSSFSheet sheet, int rowNum, String projectName, String unit, + HSSFCellStyle titleStyle, int nColumn) { + HSSFRow row = sheet.createRow(rowNum++); + row.setHeightInPoints(30); + sheet.addMergedRegion(new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (nColumn - 1))); + HSSFCell cell = row.createCell(0); + cell.setCellStyle(titleStyle); + cell.setCellValue(projectName + " " + unit); + + // 添加边框 + CellRangeAddress cellRange = new CellRangeAddress(rowNum - 1, rowNum - 1, 0, (short) (nColumn - 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); + + return rowNum; + } + + /** + * 创建表头行 + */ + private static int createHeaderRow(HSSFSheet sheet, int rowNum, List list, HSSFCellStyle headerStyle) { + HSSFRow row = sheet.createRow(rowNum++); + row.setHeightInPoints(40); + headerStyle.setWrapText(true); + + for (int j = 0; j < list.size(); j++) { + HSSFCell cell = row.createCell(j); + String header = list.get(j); + // 如果是倒数第二列,设置红色字体 + if (j == list.size() - 2) { + HSSFCellStyle redStyle = sheet.getWorkbook().createCellStyle(); + redStyle.cloneStyleFrom(headerStyle); + HSSFFont font = sheet.getWorkbook().createFont(); + font.setColor(HSSFColor.HSSFColorPredefined.RED.getIndex()); + redStyle.setFont(font); + cell.setCellStyle(redStyle); + } else { + cell.setCellStyle(headerStyle); + } + + cell.setCellValue(header != null ? header : ""); + } + return rowNum; + } + + /** + * 创建数据行 + */ + private static int createDataRows(HSSFSheet sheet, int rowNum, List> result, + HSSFCellStyle contentStyle, int nColumn) { + for (Map resultRow : result) { + HSSFRow row = sheet.createRow(rowNum++); + row.setHeightInPoints(15); + List rowData = map2List(resultRow); + + for (int j = 0; j < nColumn; j++) { + HSSFCell cell = row.createCell(j); + Object data = rowData.get(j); + // 如果是倒数第六列,设置黄色背景 + if (j == nColumn - 6) { + HSSFCellStyle yellowStyle = sheet.getWorkbook().createCellStyle(); + yellowStyle.cloneStyleFrom(contentStyle); // 复制原有样式 + yellowStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); // 设置背景色为黄色 + yellowStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); // 设置填充模式 + cell.setCellStyle(yellowStyle); + setCellData(cell, data, yellowStyle); + } else { + cell.setCellStyle(contentStyle); + setCellData(cell, data, contentStyle); + } +// setCellData(cell, data, contentStyle); + } + } + return rowNum; + } + + /** + * 设置单元格数据,并自动判断数据类型 + */ + private static void setCellData(HSSFCell cell, Object data, HSSFCellStyle contentStyle) { + if (data != null) { + if (isNumeric(data)) { + cell.setCellStyle(contentStyle); + cell.setCellValue(Double.parseDouble(data.toString())); + } else { + cell.setCellStyle(contentStyle); + cell.setCellValue(data.toString()); + } + } else { + cell.setCellStyle(contentStyle); + cell.setCellValue(""); + } + } + + /** + * 判断是否是数字 + */ + private static boolean isNumeric(Object data) { + if (data == null) { + return false; + } + return data.toString().matches("^(-?\\d+)(\\.\\d+)?$"); + } + + /** + * 将 Map 转换为 List + */ + private static List map2List(Map map) { + List list = new ArrayList<>(); + for (Map.Entry entry : map.entrySet()) { + list.add(entry.getValue()); + } + return list; + } + + + /** + * 创建标题样式 + * @param workbook + * @return + */ + public static HSSFCellStyle createTitleStyle(HSSFWorkbook workbook) { + HSSFCellStyle style = workbook.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + HSSFFont font = workbook.createFont(); + font.setBold(true); + font.setFontHeightInPoints((short) 14); + style.setFont(font); + return style; + } + + /** + * 创建表头样式 + * @param workbook + * @return + */ + public static HSSFCellStyle createHeaderStyle(HSSFWorkbook workbook) { + HSSFCellStyle style = workbook.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + HSSFFont font = workbook.createFont(); + font.setBold(true); + font.setFontHeightInPoints((short) 10); + style.setFont(font); + + // 设置边框 + style.setBorderTop(BorderStyle.THIN); + style.setBorderBottom(BorderStyle.THIN); + style.setBorderLeft(BorderStyle.THIN); + style.setBorderRight(BorderStyle.THIN); + + // 设置边框颜色为黑色 + style.setTopBorderColor(IndexedColors.BLACK.getIndex()); + style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); + style.setLeftBorderColor(IndexedColors.BLACK.getIndex()); + style.setRightBorderColor(IndexedColors.BLACK.getIndex()); + + return style; + } + + /** + * 创建表头样式 + * @param workbook + * @return + */ + public static HSSFCellStyle createHeaderStyleNoSide(HSSFWorkbook workbook) { + HSSFCellStyle style = workbook.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + HSSFFont font = workbook.createFont(); + font.setBold(true); + font.setFontHeightInPoints((short) 10); + style.setFont(font); + + return style; + } + + /** + * 创建内容样式 + * @param workbook + * @return + */ + private static HSSFCellStyle createCellStyle(HSSFWorkbook workbook) { + + HSSFCellStyle style = workbook.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + HSSFFont font = workbook.createFont(); + font.setFontHeightInPoints((short) 10); + style.setFont(font); + + // 设置边框 + style.setBorderTop(BorderStyle.THIN); + style.setBorderBottom(BorderStyle.THIN); + style.setBorderLeft(BorderStyle.THIN); + style.setBorderRight(BorderStyle.THIN); + + // 设置边框颜色为黑色 + style.setTopBorderColor(IndexedColors.BLACK.getIndex()); + style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); + style.setLeftBorderColor(IndexedColors.BLACK.getIndex()); + style.setRightBorderColor(IndexedColors.BLACK.getIndex()); + + return style; + } + + /** + * 创建内容样式 + * @param workbook + * @return + */ + public static HSSFCellStyle createCellStyleCost(HSSFWorkbook workbook) { + + HSSFCellStyle style = workbook.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + HSSFFont font = workbook.createFont(); + font.setFontHeightInPoints((short) 10); + style.setFont(font); + + // 设置边框 + style.setBorderTop(BorderStyle.THIN); + style.setBorderBottom(BorderStyle.THIN); + style.setBorderLeft(BorderStyle.THIN); + style.setBorderRight(BorderStyle.THIN); + + // 设置边框颜色为黑色 + style.setTopBorderColor(IndexedColors.BLACK.getIndex()); + style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); + style.setLeftBorderColor(IndexedColors.BLACK.getIndex()); + style.setRightBorderColor(IndexedColors.BLACK.getIndex()); + + + // 设置数字格式为保留两位小数 + DataFormat dataFormat = workbook.createDataFormat(); + style.setDataFormat(dataFormat.getFormat("0.00")); // 设置格式为"0.00" + + return style; + } +} diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/PurchaseCheckInfoController.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/PurchaseCheckInfoController.java index 0617f63..c250279 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/PurchaseCheckInfoController.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/PurchaseCheckInfoController.java @@ -1,9 +1,19 @@ package com.bonus.sgzb.material.controller; +import java.io.OutputStream; +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import javax.servlet.http.HttpServletResponse; +import cn.hutool.core.convert.Convert; +import com.alibaba.fastjson.JSONObject; +import com.bonus.sgzb.base.api.domain.SltAgreementInfo; +import com.bonus.sgzb.common.security.annotation.PreventRepeatSubmit; import com.bonus.sgzb.common.security.annotation.RequiresPermissions; +import com.bonus.sgzb.material.config.PoiOutPage; import com.bonus.sgzb.material.domain.PurchaseInput; import com.bonus.sgzb.material.service.IPurchaseCheckInfoService; import com.bonus.sgzb.material.domain.PurchaseCheckInfo; @@ -11,6 +21,8 @@ import com.bonus.sgzb.material.service.PurchaseCheckServiceCenterService; import com.bonus.sgzb.material.vo.NoticeInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.bonus.sgzb.common.log.annotation.Log; @@ -19,7 +31,6 @@ import com.bonus.sgzb.common.core.web.controller.BaseController; import com.bonus.sgzb.common.core.web.domain.AjaxResult; import com.bonus.sgzb.common.core.utils.poi.ExcelUtil; import com.bonus.sgzb.common.core.web.page.TableDataInfo; - /** * 新购验收任务 * @@ -149,4 +160,43 @@ public class PurchaseCheckInfoController extends BaseController { public AjaxResult remove(@PathVariable Long taskId) { return toAjax(purchaseCheckInfoService.deletePurchaseCheckInfoByTaskId(taskId)); } + + /** + * 机具模板下载--all + */ + @ApiOperation(value = "机具模板下载") + @PreventRepeatSubmit +// @RequiresPermissions("settlement:info:export") + @Log(title = "机具模板下载") + + @PostMapping("/downLoadTypeModel") + public void downLoadTypeModel(HttpServletResponse response, @RequestParam("params") String params) { +// try { +// List sltAgreementInfo = JSONObject.parseArray(params,SltAgreementInfo.class); +// // 创建工作簿 +// HSSFWorkbook workbook = new HSSFWorkbook(); +// int sheetIndex = 1; +// +// // 创建工作表 +// HSSFSheet sheet = workbook.createSheet("机具新增" + sheetIndex); +// +// // 创建工作簿和工作表 +// PoiOutPage.excelForcheckEach(workbook, sheet, resultsLease,resultsLose,resultsRepair,resultsScrap,resultsReduction, headersLease,headersLose,headersRepair,headersScrap,headersReduction,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); +// } + } } 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 e5d81c4..e2bc26a 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 @@ -16,10 +16,12 @@ import com.bonus.sgzb.common.core.web.page.TableDataInfo; import com.bonus.sgzb.common.log.annotation.Log; import com.bonus.sgzb.common.log.enums.BusinessType; import com.bonus.sgzb.common.security.annotation.RequiresPermissions; +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.lang3.StringUtils; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; @@ -27,9 +29,12 @@ 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.math.BigDecimal; +import java.math.RoundingMode; import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.List; +import java.text.SimpleDateFormat; +import java.util.*; /** * @author c liu @@ -140,13 +145,317 @@ public class SltAgreementInfoController extends BaseController { @Log(title = "租赁明细导出", businessType = BusinessType.EXPORT) @PostMapping("/exportLeaseOne") @RequiresPermissions("ndertake:export_1") - public void exportLeaseOne(HttpServletResponse response, @RequestBody List list) { + public void exportLeaseOne(HttpServletResponse response, @RequestBody List list) throws Exception { + List projectNames = new ArrayList<>(); + List unitNames = new ArrayList<>(); + String fileName = "重庆市送变电工程有限公司设备租赁结算单"; + //设置单位和工程名称 + for (AgreementInfo info : list) { + projectNames.add(info.getProjectName()); + unitNames.add(info.getUnitName()); + } List explist = sltAgreementInfoService.getLeaseListOne(list); + String projectName = handleData(projectNames); + String unitName = handleData(unitNames); + BigDecimal totalCost = BigDecimal.valueOf(0.00); + for (SltAgreementInfo sltAgreementInfo : explist) { + totalCost = totalCost.add(sltAgreementInfo.getRealCosts()); + } List leaseInfoList = Convert.toList(LeaseInfo.class, explist); + expOutExcel(response,leaseInfoList,fileName,projectName,unitName,totalCost,1); + + + ExcelUtil util = new ExcelUtil(LeaseInfo.class); util.exportExcel(response, leaseInfoList, "租赁明细导出"); } + + /** + * 去重单位和工程名称 + */ + public String handleData(List list){ + StringBuilder sb = new StringBuilder(); + Set set = new HashSet<>(list); + for (String str : set) { + sb.append(str).append("、"); + } + return StringUtils.removeEnd(sb.toString(), "、"); + } + + + /** + * 导出结算单 + * @param response + * @param list + * @param filename + + * @throws Exception + */ + private void expOutExcel(HttpServletResponse response, List list, String filename,String projectName,String unitName,BigDecimal totalCost,int type) + throws Exception { + if (list != null) { + List> results = new ArrayList>(); + int size = list.size(); + for (int i = 0; i < size; i++) { + LeaseInfo bean = list.get(i); + Map maps = outReceiveDetailsBeanToMap(bean,type,0); + results.add(maps); + } + List headers = receiveDetailsHeader(type,0); + HSSFWorkbook workbook = PoiOutPage.excelForcheckTwo(results, headers, filename,projectName,unitName,totalCost); + OutputStream out = null; + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + response.addHeader("Content-Disposition", + "attachment;filename=" + URLEncoder.encode(filename, "UTF-8") + ".xls"); + response.setHeader("Pragma", "No-cache"); + out = response.getOutputStream(); + workbook.write(out); + out.flush(); + out.close(); + }else{ + List> results = new ArrayList>(); + List headers = receiveDetailsHeader(type,0); + HSSFWorkbook workbook = PoiOutPage.excel(results, headers, filename); + OutputStream out = null; + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + response.addHeader("Content-Disposition", + "attachment;filename=" + URLEncoder.encode(filename, "UTF-8") + ".xls"); + response.setHeader("Pragma", "No-cache"); + out = response.getOutputStream(); + workbook.write(out); + out.flush(); + out.close(); + } + } + + /** + * 租赁费用单数据转换 + * @param bean + * @return + */ + private Map outReceiveDetailsBeanToMap(LeaseInfo bean,int type,int flag) { + // 创建一个SimpleDateFormat对象,定义日期格式 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + Map maps = new LinkedHashMap(); + if(type==1){ +// maps.put("unitName", bean.getUnitName()); +// maps.put("projectName", bean.getProjectName()); + if (flag==0){ + maps.put("typeName", bean.getTypeName()); + maps.put("modelName", bean.getModelName()); + maps.put("nuitName", bean.getNuitName()); + maps.put("num", bean.getNum()); + maps.put("leasePrice", bean.getLeasePrice()); + maps.put("startTime", bean.getStartTime()); + maps.put("endTime", bean.getEndTime()); + maps.put("leaseDays", bean.getLeaseDays()); + maps.put("costs", bean.getCosts().setScale(2, RoundingMode.HALF_UP)); + maps.put("trimDay", bean.getTrimDay()); + maps.put("realDays", bean.getRealDays()); + maps.put("realCosts", bean.getRealCosts()); + maps.put("monthCosts", bean.getRealCosts()); + maps.put("nowCosts", bean.getRealCosts()); + maps.put("remark", bean.getRemark()); + }else { +// maps.put("typeName", bean.getTypeName()); +// maps.put("modelName", bean.getModelName()); +// maps.put("mtUnitName", bean.getMtUnitName()); +// maps.put("leasePrice", bean.getLeasePrice()); +// maps.put("num", bean.getNum()); +// maps.put("startTime", bean.getStartTime()==null ? null:dateFormat.format(bean.getStartTime())); +// maps.put("endTime", bean.getEndTime()==null ? null:dateFormat.format(bean.getEndTime())); +// maps.put("leaseDays", bean.getLeaseDays()); +// maps.put("costs", bean.getCosts().setScale(2, RoundingMode.HALF_UP)); +// maps.put("t1", ""); + } + }else if(type==2) { +// if(flag==0){ +// maps.put("typeName", bean.getTypeName()); +// maps.put("modelName", bean.getModelName()); +// maps.put("mtUnitName", bean.getMtUnitName()); +// maps.put("num", bean.getNum()); +// maps.put("costs", bean.getCosts()); +// }else{ +// maps.put("typeName", bean.getTypeName()); +// maps.put("modelName", bean.getModelName()); +// maps.put("mtUnitName", bean.getMtUnitName()); +// maps.put("num", bean.getNum()); +// maps.put("costs", bean.getCosts()); +// maps.put("t1", ""); +// maps.put("t2", ""); +// maps.put("t3", ""); +// maps.put("t4", ""); +// maps.put("t5", ""); +// } + }else if(type==3){ +// if(flag==0){ +// maps.put("typeName", bean.getTypeName()); +// maps.put("modelName", bean.getModelName()); +// maps.put("mtUnitName", bean.getMtUnitName()); +// maps.put("num", bean.getNum()); +// maps.put("partType", bean.getPartType()); +// maps.put("costs", bean.getCosts()); +// }else{ +// maps.put("typeName", bean.getTypeName()); +// maps.put("modelName", bean.getModelName()); +// maps.put("mtUnitName", bean.getMtUnitName()); +// maps.put("num", bean.getNum()); +// maps.put("partType", bean.getPartType()); +// maps.put("costs", bean.getCosts()); +// maps.put("t1", ""); +// maps.put("t2", ""); +// maps.put("t3", ""); +// maps.put("t4", ""); +// } + }else if(type==4){ +// if(flag==0){ +// maps.put("typeName", bean.getTypeName()); +// maps.put("modelName", bean.getModelName()); +// maps.put("mtUnitName", bean.getMtUnitName()); +// maps.put("num", bean.getNum()); +// maps.put("partType", bean.getPartType()); +// maps.put("costs", bean.getCosts()); +// }else{ +// maps.put("typeName", bean.getTypeName()); +// maps.put("modelName", bean.getModelName()); +// maps.put("mtUnitName", bean.getMtUnitName()); +// maps.put("num", bean.getNum()); +// maps.put("partType", bean.getPartType()); +// maps.put("costs", bean.getCosts()); +// maps.put("t1", ""); +// maps.put("t2", ""); +// maps.put("t3", ""); +// maps.put("t4", ""); +// } + } else if(type==5){ +// maps.put("typeName", bean.getTypeName()); +// maps.put("modelName", bean.getModelName()); +// maps.put("mtUnitName", bean.getUnitName()); +// maps.put("leasePrice", bean.getLeasePrice()); +// maps.put("num", bean.getReduceNum()); +// maps.put("startTime", bean.getStartTime()==null ? null:dateFormat.format(bean.getStartTime())); +// maps.put("endTime", bean.getEndTime()==null ? null:dateFormat.format(bean.getEndTime())); +// maps.put("leaseDays", bean.getDays()); +// maps.put("remark", bean.getRemark()); +// maps.put("costs", bean.getLeaseMoney().setScale(2, RoundingMode.HALF_UP)); + } + return maps; + } + + /** + * 租赁费用单表头 + * @return + */ + private List receiveDetailsHeader(int type,int flag) { + ArrayList list = new ArrayList(); + if(type==1){ +// list.add("结算单位"); +// list.add("结算工程"); + + if (flag==0){ + list.add("设备名称"); + list.add("规格型号"); + list.add("单位"); + list.add("数量"); + list.add("台班费单价(元/天)"); + list.add("起租日期"); + list.add("终止日期"); + list.add("应结算天数"); + list.add("应结算金额(元)"); + list.add("调整天数"); + list.add("实际结算天数"); + list.add("实际结算金额(元)"); + list.add("月结已入账金额(元)"); + list.add("本次结算金额(元)"); + list.add("备注"); + }else { + list.add("设备名称"); + list.add("规格型号"); + list.add("计量单位"); + list.add("租赁单价"); + list.add("租赁数量"); + list.add("租赁日期"); + list.add("归还日期"); + list.add("租赁天数"); + list.add("租赁费用(元)"); + list.add(" "); + } + }else if(type==2){ + if(flag==0){ + list.add("设备名称"); + list.add("规格型号"); + list.add("计量单位"); + list.add("丢失数量"); + list.add("丢失费用(元)"); + }else{ + list.add("设备名称"); + list.add("规格型号"); + list.add("计量单位"); + list.add("丢失数量"); + list.add("丢失费用(元)"); + list.add(" "); + list.add(" "); + list.add(" "); + list.add(" "); + list.add(" "); + } + + }else if(type==3){ + if(flag==0){ + list.add("设备名称"); + list.add("规格型号"); + list.add("计量单位"); + list.add("维修数量"); + list.add("是否收费"); + list.add("维修费用(元)"); + }else{ + list.add("设备名称"); + list.add("规格型号"); + list.add("计量单位"); + list.add("维修数量"); + list.add("是否收费"); + list.add("维修费用(元)"); + list.add(""); + list.add(""); + list.add(""); + list.add(" "); + } + }else if(type==4){ + if(flag==0){ + list.add("设备名称"); + list.add("规格型号"); + list.add("计量单位"); + list.add("报废数量"); + list.add("是否收费"); + list.add("报废费用(元)"); + }else{ + list.add("设备名称"); + list.add("规格型号"); + list.add("计量单位"); + list.add("报废数量"); + list.add("是否收费"); + list.add("报废费用(元)"); + list.add(""); + list.add(""); + list.add(""); + list.add(" "); + } + }else if (type==5){ + list.add("设备名称"); + list.add("规格型号"); + list.add("单位"); + list.add("租赁单价"); + list.add("减免数量"); + list.add("减免开始日期"); + list.add("减免结束日期"); + list.add("减免天数"); + list.add("减免原因"); + list.add("减免费用(元)"); + } + return list; + } + /** * 租赁明细导出 */ diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/LeaseInfo.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/LeaseInfo.java index 7fd1105..79f476e 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/LeaseInfo.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/LeaseInfo.java @@ -95,12 +95,12 @@ public class LeaseInfo { /** *领料时间 */ - @Excel(name = "起租日期") + @Excel(name = "起租日期",width = 30, dateFormat = "yyyy-MM-dd") private String startTime; /** *退料时间 */ - @Excel(name = "终止日期") + @Excel(name = "终止日期",width = 30, dateFormat = "yyyy-MM-dd") private String endTime; /** * 租赁天数 diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/SltAgreementInfoMapper.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/SltAgreementInfoMapper.java index a20bef9..e0059b7 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/SltAgreementInfoMapper.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/SltAgreementInfoMapper.java @@ -56,7 +56,9 @@ public interface SltAgreementInfoMapper { int updateTrimDay(SltAgreementInfo sltAgreementInfo); - int updateInfoOneStatus(SltAgreementInfo apply); + int updateInfoOneStatus(@Param("agreementIds") List agreementIds,@Param("costBearingParty") String costBearingParty); + + int updateAgreementStatus(SltAgreementInfo apply); List getLeaseListOneMonth(@Param("bean") AgreementInfo bean, @Param("ids") List idList); @@ -80,7 +82,7 @@ public interface SltAgreementInfoMapper { List checkEndTime(SltAgreementApply apply); - List getProjectListByUnitIds(@Param("unitIds") int[] unitIds); + List getProjectListByUnitIds(Long unitId); - List getUnitListByProjetctIds(Long projectId); + List getUnitListByProjetctIds(@Param("projectIds") Long[] projectIds); } diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/BackApplyServiceImpl.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/BackApplyServiceImpl.java index 4728775..93df114 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/BackApplyServiceImpl.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/BackApplyServiceImpl.java @@ -570,6 +570,13 @@ public class BackApplyServiceImpl implements BackApplyService { return AjaxResult.error("退料数不能超过在用数"); } } + String backTime = null; + if(bean.getBackApplyInfo().getBackTime()!=null){ + backTime = bean.getBackApplyInfo().getBackTime(); + + } else { + backTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + } BackApplyInfo backApplyInfo = bean.getBackApplyInfo(); try { int result = 0; @@ -645,6 +652,7 @@ public class BackApplyServiceImpl implements BackApplyService { // 根据任务详情往back_check_details插入数据 // 退料合格数据处理 if ("1".equals(leaseApplyDetails.getManageType()) && leaseApplyDetails.getPassNum() > 0) { + leaseApplyDetails.setEndTime(backTime); AjaxResult error = getHgAjaxResult(bean, taskId, leaseApplyDetails); if (error != null) { return error; @@ -652,6 +660,7 @@ public class BackApplyServiceImpl implements BackApplyService { } // 维修数据处理 if ("1".equals(leaseApplyDetails.getManageType()) && leaseApplyDetails.getMaintenanceNum() > 0) { + leaseApplyDetails.setEndTime(backTime); AjaxResult error = getWxAjaxResult(bean, backApplyInfoId, leaseApplyDetails); if (error != null) { return error; @@ -659,6 +668,7 @@ public class BackApplyServiceImpl implements BackApplyService { } // 编码设备合格数据处理 if ("0".equals(leaseApplyDetails.getManageType()) && !CollectionUtils.isEmpty(leaseApplyDetails.getPassMaCodeDtoList())){ + leaseApplyDetails.setEndTime(backTime); AjaxResult error = getMaCodeHgAjaxResult(bean, taskId, leaseApplyDetails); if (error != null) { return error; @@ -666,6 +676,7 @@ public class BackApplyServiceImpl implements BackApplyService { } // 编码维修数据处理 if ("0".equals(leaseApplyDetails.getManageType()) && !CollectionUtils.isEmpty(leaseApplyDetails.getRepairMaCodeDtoList())){ + leaseApplyDetails.setEndTime(backTime); AjaxResult error = getMaCodeWxAjaxResult(bean, backApplyInfoId, leaseApplyDetails); if (error != null) { return error; @@ -675,6 +686,7 @@ public class BackApplyServiceImpl implements BackApplyService { bean.getIsFinishBack() != null && bean.getIsFinishBack() == 1) { //更新结算表 slt_agreement_info leaseApplyDetails.setAgreementId(bean.getAgreementId()); + leaseApplyDetails.setEndTime(backTime); int r = updateSlt4Bean(leaseApplyDetails); if (r == 0) { throw new RuntimeException("该机具未被领料使用"); @@ -713,6 +725,7 @@ public class BackApplyServiceImpl implements BackApplyService { * @return */ @Override + @Transactional(rollbackFor = Exception.class) public AjaxResult submitBackApply(BackApplyInfo bean) { if (bean == null || bean.getBackApplyInfo() == null || CollectionUtils.isEmpty(bean.getBackApplyDetails())) { return AjaxResult.error("退料申请数据不能为空"); @@ -724,6 +737,13 @@ public class BackApplyServiceImpl implements BackApplyService { return AjaxResult.error("退料数不能超过在用数"); } } + String backTime = null; + if(bean.getBackApplyInfo().getBackTime()!=null){ + backTime = bean.getBackApplyInfo().getBackTime(); + + } else { + backTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + } boolean addLeaseTaskResult = false; Long backApplyInfoId = 0L; try { @@ -800,7 +820,14 @@ public class BackApplyServiceImpl implements BackApplyService { leaseApplyDetails.setCreateBy(SecurityUtils.getUserId().toString()); // 根据任务详情往back_check_details插入数据 // 退料合格数据处理 + if(leaseApplyDetails.getPassNum()==null){ + leaseApplyDetails.setPassNum(0); + } + if(leaseApplyDetails.getMaintenanceNum()==null){ + leaseApplyDetails.setMaintenanceNum(0); + } if ("1".equals(leaseApplyDetails.getManageType()) && leaseApplyDetails.getPassNum() > 0) { + leaseApplyDetails.setEndTime(backTime); AjaxResult error = getHgAjaxResult(bean, taskId, leaseApplyDetails); if (error != null) { return error; @@ -808,6 +835,7 @@ public class BackApplyServiceImpl implements BackApplyService { } // 维修数据处理 if ("1".equals(leaseApplyDetails.getManageType()) && leaseApplyDetails.getMaintenanceNum() > 0) { + leaseApplyDetails.setEndTime(backTime); AjaxResult error = getWxAjaxResult(bean, backApplyInfoId, leaseApplyDetails); if (error != null) { return error; @@ -815,6 +843,7 @@ public class BackApplyServiceImpl implements BackApplyService { } // 编码设备合格数据处理 if ("0".equals(leaseApplyDetails.getManageType()) && !CollectionUtils.isEmpty(leaseApplyDetails.getPassMaCodeDtoList())){ + leaseApplyDetails.setEndTime(backTime); AjaxResult error = getMaCodeHgAjaxResult(bean, taskId, leaseApplyDetails); if (error != null) { return error; @@ -822,6 +851,7 @@ public class BackApplyServiceImpl implements BackApplyService { } // 编码维修数据处理 if ("0".equals(leaseApplyDetails.getManageType()) && !CollectionUtils.isEmpty(leaseApplyDetails.getRepairMaCodeDtoList())){ + leaseApplyDetails.setEndTime(backTime); AjaxResult error = getMaCodeWxAjaxResult(bean, backApplyInfoId, leaseApplyDetails); if (error != null) { return error; @@ -832,6 +862,7 @@ public class BackApplyServiceImpl implements BackApplyService { bean.getIsFinishBack() != null && bean.getIsFinishBack() == 1) { //更新结算表 slt_agreement_info leaseApplyDetails.setAgreementId(bean.getAgreementId()); + leaseApplyDetails.setEndTime(backTime); int res = updateSlt4Bean(leaseApplyDetails); if (res == 0) { throw new RuntimeException("该机具未被领料使用"); diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/SltAgreementInfoServiceImpl.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/SltAgreementInfoServiceImpl.java index baf57d0..e480a89 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/SltAgreementInfoServiceImpl.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/SltAgreementInfoServiceImpl.java @@ -293,14 +293,14 @@ public class SltAgreementInfoServiceImpl implements SltAgreementInfoService { } } // 判断是否已经结算(01承担方) - boolean b = leaseListOne.stream().allMatch(t -> "1".equals(t.getIsSlt())); + boolean b = leaseListOne.stream().allMatch(t -> "1".equals(t.getIsSlt()) || "2".equals(t.getIsSlt())); if (b) { relation.setIsSltOne("1"); } else { relation.setIsSltOne("0"); } // 判断是否已经结算(03承担方) - boolean f = leaseListThree.stream().allMatch(t -> "1".equals(t.getIsSlt())); + boolean f = leaseListThree.stream().allMatch(t -> "1".equals(t.getIsSlt()) || "2".equals(t.getIsSlt())); if (f) { relation.setIsSltThree("1"); } else { @@ -350,9 +350,16 @@ public class SltAgreementInfoServiceImpl implements SltAgreementInfoService { @Override public AjaxResult submitFeeOne(SltAgreementInfo apply) { - int i = sltAgreementInfoMapper.updateInfoOneStatus(apply); + int i = sltAgreementInfoMapper.updateInfoOneStatus(apply.getAgreementIds(),apply.getCostBearingParty()); + if (i > 0) { - return AjaxResult.success("结算成功"); + i = sltAgreementInfoMapper.updateAgreementStatus(apply); + if(i>0){ + return AjaxResult.success("结算成功"); + }else{ + return AjaxResult.error("结算失败"); + } + } else { return AjaxResult.error("结算失败"); } @@ -640,8 +647,8 @@ public class SltAgreementInfoServiceImpl implements SltAgreementInfoService { public AjaxResult getProjectListByUnitIds(AgreementInfo agreementInfo) { List list = new ArrayList<>(); try { - if(agreementInfo.getUnitIds()!=null){ - list = sltAgreementInfoMapper.getProjectListByUnitIds(agreementInfo.getUnitIds()); + if(agreementInfo.getUnitId()!=null){ + list = sltAgreementInfoMapper.getProjectListByUnitIds(agreementInfo.getUnitId()); } } catch (Exception e) { @@ -659,8 +666,8 @@ public class SltAgreementInfoServiceImpl implements SltAgreementInfoService { public AjaxResult getUnitListByProjetctIds(AgreementInfo agreementInfo) { List list = new ArrayList<>(); try { - if(agreementInfo.getProjectId()!=null){ - list = sltAgreementInfoMapper.getUnitListByProjetctIds(agreementInfo.getProjectId()); + if(agreementInfo.getProjectIds()!=null){ + list = sltAgreementInfoMapper.getUnitListByProjetctIds(agreementInfo.getProjectIds()); } } catch (Exception e) { diff --git a/sgzb-modules/sgzb-material/src/main/resources/mapper/app/BackReceiveMapper.xml b/sgzb-modules/sgzb-material/src/main/resources/mapper/app/BackReceiveMapper.xml index 71fad48..007116d 100644 --- a/sgzb-modules/sgzb-material/src/main/resources/mapper/app/BackReceiveMapper.xml +++ b/sgzb-modules/sgzb-material/src/main/resources/mapper/app/BackReceiveMapper.xml @@ -622,7 +622,7 @@ update slt_agreement_info - set end_time = now(), + set end_time = #{record.endTime}, update_time = now(), back_id = #{record.parentId}, status = '1' @@ -631,7 +631,7 @@ update slt_agreement_info set num = #{backNum}, - end_time = now(), + end_time = #{record.endTime}, update_time = now(), back_id = #{record.parentId}, status = '1' diff --git a/sgzb-modules/sgzb-material/src/main/resources/mapper/app/LeaseOutDetailsMapper.xml b/sgzb-modules/sgzb-material/src/main/resources/mapper/app/LeaseOutDetailsMapper.xml index 8859baa..605f09e 100644 --- a/sgzb-modules/sgzb-material/src/main/resources/mapper/app/LeaseOutDetailsMapper.xml +++ b/sgzb-modules/sgzb-material/src/main/resources/mapper/app/LeaseOutDetailsMapper.xml @@ -415,7 +415,7 @@ insert into slt_agreement_info (agreement_id,type_id,ma_id,num,start_time,status,lease_id,lease_price,buy_price,type_name,model_name,replace_type_id,is_slt,company_id,lease_type,create_time,ck_remark) - values (#{agreementId},#{record.typeId},#{record.maId},#{record.outNum},now(),0,#{record.parentId},#{ma.finalPrice},#{ma.buyPrice},#{ma.typeName},#{ma.modelName},#{ma.replaceTypeId},'0',#{record.companyId},#{record.leaseType},now(),#{record.remark}); + values (#{agreementId},#{record.typeId},#{record.maId},#{record.outNum},#{record.createTime},0,#{record.parentId},#{ma.finalPrice},#{ma.buyPrice},#{ma.typeName},#{ma.modelName},#{ma.replaceTypeId},'0',#{record.companyId},#{record.leaseType},now(),#{record.remark}); + + + + UPDATE + tm_task + SET + update_time = #{updateTime} + WHERE + task_id = #{taskId} + + + + + + + UPDATE + lease_out_details + SET + create_time = #{updateTime} + WHERE + parent_id = #{id} + + + + + + UPDATE + slt_agreement_info + SET + start_time = #{updateTime} + WHERE + lease_id = #{id} + diff --git a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/SltAgreementInfoMapper.xml b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/SltAgreementInfoMapper.xml index 1e5ae5a..7759557 100644 --- a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/SltAgreementInfoMapper.xml +++ b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/SltAgreementInfoMapper.xml @@ -108,11 +108,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" UPDATE slt_agreement_info sai LEFT JOIN lease_apply_info lai ON lai.id = sai.lease_id - SET sai.is_slt = '1' + SET sai.is_slt = '2' WHERE - sai.agreement_id = #{agreementId} - AND sai.lease_type = 0 - AND lai.cost_bearing_party = #{costBearingParty} + sai.agreement_id in + + #{agreementId} + + AND sai.lease_type = 0 + AND lai.cost_bearing_party = #{costBearingParty,jdbcType=VARCHAR} update repair_cost set out_source_costs = #{outSourceCosts} where id = #{id} @@ -123,6 +126,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update repair_apply_record set is_slt = 1,update_time = now() where id = #{id} + + update bm_agreement_info bai set is_slt = 2 + WHERE + bai.agreement_id in + + #{agreementId} + + @@ -649,8 +653,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left join bm_unit_info bui on bui.unit_id = bai.unit_id left join bm_project_lot bpl ON bpl.lot_id = bai.project_id where bai.status = '1' - - and bai.project_id = #{projectId} + + and bai.project_id in + + #{projectId} + GROUP BY bai.unit_id ORDER BY bai.agreement_id desc