时点花名册功能完成

聚才林产品功能
Chengliang 7 months ago
parent c050bdb59e
commit 78e602f3d0

@ -1,5 +1,9 @@
package com.engine.jclproduct.service;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
@ -62,4 +66,13 @@ public interface EmployeeRecordReportService {
*/
Map<String, Object> caluResourece(Map<String, Object> params);
/**
* @Description:
* @Author: liang.cheng
* @Date: 2024/11/1 11:42 AM
* @param: [request, response]
* @return: org.apache.poi.xssf.usermodel.XSSFWorkbook
*/
XSSFWorkbook reportExport(Map<String, Object> params);
}

@ -11,16 +11,15 @@ import com.engine.jclproduct.entity.vo.TimeResourceVo;
import com.engine.jclproduct.entity.vo.TransferResourceVo;
import com.engine.jclproduct.service.EmployeeRecordReportService;
import com.engine.jclproduct.utils.EmploymentUtil;
import com.engine.jclproduct.utils.ExcelUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import weaver.common.DateUtil;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.company.DepartmentComInfo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -168,7 +167,7 @@ public class EmployeeRecordReportServiceImpl extends Service implements Employee
});
resultMap.put("caluResourceVos",caluResourceVos);
//3.构建上下级关系
List<CaluResourceVo> topLevelResources = new ArrayList<>();
@ -194,6 +193,31 @@ public class EmployeeRecordReportServiceImpl extends Service implements Employee
return resultMap;
}
@Override
public XSSFWorkbook reportExport(Map<String, Object> params) {
String sheetName = "管理幅度统计";
Map<String, Object> map = caluResourece(params);
List<CaluResourceVo> caluResourceVos =(List<CaluResourceVo>) map.get("caluResourceVos");
List<Object> headerList = Arrays.asList("部门名称","期初人数","入职人数","转正人数","离职人数","调入人数","调出人数","期末人数");
List<List<Object>> rows = new LinkedList<>();
for (CaluResourceVo hr : caluResourceVos) {
List<Object> row = new LinkedList<>();
row.add(hr.getDepartmentName());
row.add(hr.getStartNumber());
row.add(hr.getEntryNumber());
row.add(hr.getTransferNumber());
row.add(hr.getLeaveNumber());
row.add(hr.getOnNumber());
row.add(hr.getOutNumber());
row.add(hr.getEndNumber());
rows.add(row);
}
List<List<Object>> excelSheetData = new ArrayList<>();
excelSheetData.add(headerList);
excelSheetData.addAll(rows);
return ExcelUtil.genWorkbookV2(excelSheetData, sheetName);
}
private String buildtransferResoureceSql(Map<String, Object> params) {
String pointValue = Util.null2String(params.get("pointValue"));
String startDate = Util.null2String(params.get("startDate"));

@ -0,0 +1,72 @@
package com.engine.jclproduct.utils;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.xssf.usermodel.*;
import java.util.List;
/**
* @Author liang.cheng
* @Date 2024/11/1 4:56 PM
* @Description:
* @Version 1.0
*/
public class ExcelUtil {
public static XSSFWorkbook genWorkbookV2(List<List<Object>> rowList, String sheetName) {
XSSFWorkbook workbook = new XSSFWorkbook();
// 设置title样式
XSSFCellStyle titleCellStyle = workbook.createCellStyle();
XSSFFont titleFont = workbook.createFont();
titleFont.setFontName("仿宋");
titleFont.setFontHeightInPoints((short) 15);
titleCellStyle.setFont(titleFont);
titleCellStyle.setAlignment(HorizontalAlignment.CENTER);
titleCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());//背景色
titleCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// 设置主体样式
XSSFCellStyle cellStyle = workbook.createCellStyle();
XSSFFont font = workbook.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short) 10);// 设置字体大小
cellStyle.setFont(font);// 选择需要用到的字体格式
cellStyle.setWrapText(true);
XSSFSheet sheet = workbook.createSheet(sheetName);
//自适应宽度
sheet.autoSizeColumn(0, true);
//默认列宽
sheet.setDefaultColumnWidth(25);
//默认行高
sheet.setDefaultRowHeightInPoints(18);
for (int rowIndex = 0; rowIndex < rowList.size(); rowIndex++) {
List<Object> infoList = rowList.get(rowIndex);
XSSFRow row = sheet.createRow(rowIndex);
for (int cellIndex = 0; cellIndex < infoList.size(); cellIndex++) {
XSSFCell cell = row.createCell(cellIndex);
if (rowIndex == 0) {
cell.setCellStyle(titleCellStyle);
} else {
cell.setCellStyle(cellStyle);
}
Object o = infoList.get(cellIndex);
if (o instanceof String) {
cell.setCellType(CellType.STRING);
cell.setCellValue(String.valueOf(o));
} else if (o instanceof Boolean) {
cell.setCellType(CellType.BOOLEAN);
cell.setCellValue(String.valueOf(o));
} else {
cell.setCellType(CellType.STRING);
cell.setCellValue(o == null ? "" : o.toString());
}
}
}
return workbook;
}
}

@ -6,6 +6,7 @@ import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.jclproduct.service.EmployeeRecordReportService;
import com.engine.jclproduct.service.impl.EmployeeRecordReportServiceImpl;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
@ -16,6 +17,11 @@ import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.StreamingOutput;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.Map;
@ -46,4 +52,25 @@ public class EmployeeRecordReportAction {
}
return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect);
}
@GET
@Path("/employee/export")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response reportExport(@Context HttpServletRequest request, @Context HttpServletResponse response) {
User user = HrmUserVarify.getUser(request, response);
XSSFWorkbook workbook = getService(user).reportExport(ParamUtil.request2Map(request));
String time = LocalDate.now().toString();
String fileName = "报表导出" + time;
try {
fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
StreamingOutput output = outputStream -> {
workbook.write(outputStream);
outputStream.flush();
};
response.setContentType("application/octet-stream");
return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build();
}
}

Loading…
Cancel
Save