diff --git a/src/com/engine/zhuyou/controller/CommonFormModeController.java b/src/com/engine/zhuyou/controller/CommonFormModeController.java index 55a6336..a1e07ba 100644 --- a/src/com/engine/zhuyou/controller/CommonFormModeController.java +++ b/src/com/engine/zhuyou/controller/CommonFormModeController.java @@ -1,12 +1,10 @@ package com.engine.zhuyou.controller; -import cn.hutool.core.date.DateUtil; -import com.engine.ais.util.BzExcelExpUtil; import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; -import com.engine.kq.biz.KQLeaveRulesDetailComInfo; import com.engine.zhuyou.service.CommonFormModeService; import com.engine.zhuyou.service.impl.CommonFormModeServiceImpl; +import com.engine.zhuyou.util.BzExcelExpUtil; import com.google.gson.Gson; import org.apache.commons.lang3.StringUtils; import org.apache.poi.xssf.streaming.SXSSFWorkbook; @@ -15,7 +13,6 @@ import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; -import weaver.interfaces.ais.comInfo.PropBean; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -26,19 +23,14 @@ 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.math.BigDecimal; +import java.io.IOException; +import java.io.OutputStream; import java.net.URLEncoder; -import java.text.DecimalFormat; -import java.text.SimpleDateFormat; -import java.time.LocalDate; import java.util.ArrayList; -import java.util.Date; import java.util.HashMap; -import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Set; public class CommonFormModeController { @@ -73,7 +65,6 @@ public class CommonFormModeController { @Path("/getExcelHrm") @Produces({MediaType.APPLICATION_JSON}) public Response getExcelHrm(@Context HttpServletRequest request, @Context HttpServletResponse response) { - User user = HrmUserVarify.getUser(request, response); BaseBean bb = new BaseBean(); bb.writeLog("getExcelHrm into start."); RecordSet rs = new RecordSet(); @@ -85,18 +76,30 @@ public class CommonFormModeController { if (StringUtils.isEmpty(rq)) { rq = weaver.common.DateUtil.getCurrentDate(); } + String bhParam = Util.null2String(params.get("bh")); + String ygxmParam = Util.null2String(params.get("ygxm")); + String gcParam = Util.null2String(params.get("gc")); + String bmParam = Util.null2String(params.get("bm")); + String zwParam = Util.null2String(params.get("zw")); + String qfParam = Util.null2String(params.get("qf")); + String zzParam = Util.null2String(params.get("zz")); + String zgdjParam = Util.null2String(params.get("zgdj")); + String jhParam = Util.null2String(params.get("jh")); + String bbParam = Util.null2String(params.get("bb")); List> titleList = new ArrayList<>(); Map title = null; - String titles[] = {"编号", "姓名", "部门", "工程", "职务", "区分", "职种", "资格等级", "级号", "班别"}; + String[] titles = {"编号", "姓名", "工程", "部门", "职务", "区分", "职种", "资格等级", "级号", "班别"}; for (String ti : titles) { title = new HashMap<>(); title.put("rowSpan", 3); title.put("title", ti); - title.put("width", 30 * 256); + title.put("width", 10 * 256); title.put("colSpan", 1); titleList.add(title); } + bb.writeLog("getExcelHrm titles:" + titles.length); + String billid = bb.getPropValue("zhuyou_prop_zm", "rsbgjl_table_billid"); if (StringUtils.isEmpty(billid)) { billid = "-198"; @@ -134,44 +137,136 @@ public class CommonFormModeController { String jhmc = rs.getString("jhmc"); String bbmc = rs.getString("bbmc"); + String qfName = null; + if (StringUtils.isNotEmpty(qf)) { + qfName = getSelectNameMain("qf", billid, qf); + } + String zzName = null; + if (StringUtils.isNotEmpty(zz)) { + zzName = getSelectNameMain("zz", billid, zz); + } + + if (StringUtils.isNotEmpty(bhParam)) { + if (StringUtils.isEmpty(gh) || !gh.contains(bhParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(ygxmParam)) { + if (StringUtils.isEmpty(lastname) || !lastname.contains(ygxmParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(gcParam)) { + if (StringUtils.isEmpty(gcmc) || !gcmc.contains(gcParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(bmParam)) { + if (StringUtils.isEmpty(bmmc) || !bmmc.contains(bmParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(zwParam)) { + if (StringUtils.isEmpty(jobactivitymark) || !jobactivitymark.contains(zwParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(qfParam)) { + if (StringUtils.isEmpty(qfName) || !qfName.contains(qfParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(zzParam)) { + if (StringUtils.isEmpty(zzName) || !zzName.contains(zzParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(zgdjParam)) { + if (StringUtils.isEmpty(zgdjName) || !zgdjName.contains(zgdjParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(jhParam)) { + if (StringUtils.isEmpty(jhmc) || !jhmc.contains(jhParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(bbParam)) { + if (StringUtils.isEmpty(bbmc) || !bbmc.contains(bbParam)) { + continue; + } + } List data = new ArrayList<>(); data.add(gh); data.add(lastname); - data.add(bmmc); data.add(gcmc); + data.add(bmmc); data.add(jobactivitymark); - data.add(getSelectNameMain("qf", billid, qf)); - data.add(getSelectNameMain("zz", billid, zz)); + data.add(qfName); + data.add(zzName); data.add(zgdjName); data.add(jhmc); data.add(bbmc); dataList.add(data); } + + bb.writeLog("getExcelHrm dataList:" + dataList); + LinkedHashMap workbookObj = new LinkedHashMap<>(); SXSSFWorkbook workbook = new SXSSFWorkbook(); - Map sheet = new HashMap<>(); - sheet.put("titleList", titleList); - sheet.put("sheetName", "历史花名册"); - sheet.put("sheetTitle", "历史花名册"); - sheet.put("dataList", dataList); - List lsSheet = new ArrayList<>(); - lsSheet.add(sheet); - workbookObj.put("sheet", lsSheet); - workbookObj.put("fileName", "历史花名册"); - BzExcelExpUtil bzExcelExpUtil = new BzExcelExpUtil(); - Integer nBack = bzExcelExpUtil.createSheetBz(workbook, workbookObj); - bb.writeLog("getExcelHrm nBack:" + nBack); + try { + workbook = new SXSSFWorkbook(); + Map sheet = new HashMap<>(); + sheet.put("titleList", titleList); + sheet.put("sheetName", "历史花名册"); + sheet.put("sheetTitle", "历史花名册"); + sheet.put("dataList", dataList); + List lsSheet = new ArrayList<>(); + lsSheet.add(sheet); + workbookObj.put("sheet", lsSheet); + workbookObj.put("fileName", "历史花名册"); - String filename = URLEncoder.encode("历史花名册", "utf-8"); - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); - response.setHeader("Content-Disposition", "Attachment;Filename=" + filename + ".xlsx"); - response.setHeader("Cache-Control", "no-cache"); + BzExcelExpUtil bzExcelExpUtil = new BzExcelExpUtil(); + Integer nBack = bzExcelExpUtil.createSheetBz(workbook, workbookObj); + bb.writeLog("getExcelHrm nBack:" + nBack); - output = outputStream -> { - workbook.write(outputStream); - outputStream.flush(); - }; + String filename = URLEncoder.encode("历史花名册", "utf-8"); + + // 使用 JAX-RS 方式设置响应头 + SXSSFWorkbook finalWorkbook = workbook; + return Response.ok(new StreamingOutput() { + @Override + public void write(OutputStream outputStream) throws IOException { + try (OutputStream os = outputStream; + SXSSFWorkbook wb = finalWorkbook) { + wb.write(os); + os.flush(); + } finally { + // 确保SXSSF临时文件被清理 + if (finalWorkbook != null) { + finalWorkbook.dispose(); + } + } + } + }) + .header("Content-Disposition", "attachment; filename=" + filename + ".xlsx") + .header("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") + .header("Cache-Control", "no-cache") + .build(); + } catch (Exception e) { + bb.writeLog("getExcelHrm error:" + e); + // 发生异常时关闭workbook + if (workbook != null) { + try { + workbook.close(); + workbook.dispose(); + } catch (Exception ex) { + bb.writeLog("Error closing workbook: " + ex); + } + } + throw e; // 重新抛出异常以便上层处理 + } } catch (Exception e) { bb.writeLog("getExcelHrm error:" + e); } diff --git a/src/com/engine/zhuyou/service/impl/CommonFormModeServiceImpl.java b/src/com/engine/zhuyou/service/impl/CommonFormModeServiceImpl.java index 9ead4ca..1ff92a4 100644 --- a/src/com/engine/zhuyou/service/impl/CommonFormModeServiceImpl.java +++ b/src/com/engine/zhuyou/service/impl/CommonFormModeServiceImpl.java @@ -17,15 +17,25 @@ public class CommonFormModeServiceImpl extends Service implements CommonFormMode public BaseBean bb = new BaseBean(); @Override - public Map getAllState(Map param) { - bb.writeLog("getAllState param:" + param); + public Map getAllState(Map params) { + bb.writeLog("getAllState param:" + params); Map resultMap = new HashMap<>(); try { - String rq = Util.null2String(param.get("rq")); + String rq = Util.null2String(params.get("rq")); if (StringUtils.isEmpty(rq)) { rq = DateUtil.getCurrentDate(); } - // 结转额度 + String bhParam = Util.null2String(params.get("bh")); + String ygxmParam = Util.null2String(params.get("ygxm")); + String gcParam = Util.null2String(params.get("gc")); + String bmParam = Util.null2String(params.get("bm")); + String zwParam = Util.null2String(params.get("zw")); + String qfParam = Util.null2String(params.get("qf")); + String zzParam = Util.null2String(params.get("zz")); + String zgdjParam = Util.null2String(params.get("zgdj")); + String jhParam = Util.null2String(params.get("jh")); + String bbParam = Util.null2String(params.get("bb")); + // 人事变更记录表billid String billid = bb.getPropValue("zhuyou_prop_zm", "rsbgjl_table_billid"); if (StringUtils.isEmpty(billid)) { billid = "-198"; @@ -65,15 +75,75 @@ public class CommonFormModeServiceImpl extends Service implements CommonFormMode String bbmc = rs.getString("bbmc"); String sxrq = rs.getString("sxrq"); + String qfName = null; + if (StringUtils.isNotEmpty(qf)) { + qfName = getSelectNameMain("qf", billid, qf); + } + String zzName = null; + if (StringUtils.isNotEmpty(zz)) { + zzName = getSelectNameMain("zz", billid, zz); + } + + if (StringUtils.isNotEmpty(bhParam)) { + if (StringUtils.isEmpty(gh) || !gh.contains(bhParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(ygxmParam)) { + if (StringUtils.isEmpty(lastname) || !lastname.contains(ygxmParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(gcParam)) { + if (StringUtils.isEmpty(gcmc) || !gcmc.contains(gcParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(bmParam)) { + if (StringUtils.isEmpty(bmmc) || !bmmc.contains(bmParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(zwParam)) { + if (StringUtils.isEmpty(jobactivitymark) || !jobactivitymark.contains(zwParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(qfParam)) { + if (StringUtils.isEmpty(qfName) || !qfName.contains(qfParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(zzParam)) { + if (StringUtils.isEmpty(zzName) || !zzName.contains(zzParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(zgdjParam)) { + if (StringUtils.isEmpty(zgdjName) || !zgdjName.contains(zgdjParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(jhParam)) { + if (StringUtils.isEmpty(jhmc) || !jhmc.contains(jhParam)) { + continue; + } + } + if (StringUtils.isNotEmpty(bbParam)) { + if (StringUtils.isEmpty(bbmc) || !bbmc.contains(bbParam)) { + continue; + } + } + Map info = new HashMap<>(); info.put("ryid", xm); info.put("xm", lastname); info.put("gh", gh); - info.put("bm", bmmc); info.put("gc", gcmc); + info.put("bm", bmmc); info.put("zw", jobactivitymark); - info.put("qf", getSelectNameMain("qf", billid, qf)); - info.put("zz", getSelectNameMain("zz", billid, zz)); + info.put("qf", qfName); + info.put("zz", zzName); info.put("zgdj", zgdjName); info.put("jh", jhmc); info.put("bb", bbmc); @@ -97,17 +167,16 @@ public class CommonFormModeServiceImpl extends Service implements CommonFormMode colMapList.add(colMap); colMap = new HashMap<>(); colMap.put("colSpan", "1"); - colMap.put("dataIndex", "bm"); - colMap.put("width", "100"); - colMap.put("title", "部门"); - colMapList.add(colMap); - colMap = new HashMap<>(); - colMap.put("colSpan", "1"); colMap.put("dataIndex", "gc"); colMap.put("width", "100"); colMap.put("title", "工程"); colMapList.add(colMap); - + colMap = new HashMap<>(); + colMap.put("colSpan", "1"); + colMap.put("dataIndex", "bm"); + colMap.put("width", "100"); + colMap.put("title", "部门"); + colMapList.add(colMap); colMap = new HashMap<>(); colMap.put("colSpan", "1"); colMap.put("dataIndex", "zw"); diff --git a/src/com/engine/zhuyou/util/BzExcelExpUtil.java b/src/com/engine/zhuyou/util/BzExcelExpUtil.java new file mode 100644 index 0000000..98e0b31 --- /dev/null +++ b/src/com/engine/zhuyou/util/BzExcelExpUtil.java @@ -0,0 +1,1205 @@ +package com.engine.zhuyou.util; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.api.doc.detail.util.ooxml.commons.DocUtils; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Font; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.IndexedColors; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.VerticalAlignment; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.ss.util.RegionUtil; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.StringUtil; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.ais.comInfo.PropBean; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.UUID; +import java.util.stream.Collectors; + +public class BzExcelExpUtil extends BaseBean { + + BaseBean baseBean=new BaseBean(); + + /* + * 导出数据 + * */ + public Integer createSheetBz(SXSSFWorkbook workbook,Map workBook) throws Exception { + Integer back = 0; + try { + // 创建工作簿对象 + List lsSheet = (List) workBook.get("sheet"); + String fileName = Util.null2String(workBook.get("fileName")); + if (fileName.length() == 0||true) { + fileName = "" + UUID.randomUUID();//解决lunix下中文文件无法生成问题 + } + for (int sheetNum = 0; sheetNum < lsSheet.size(); sheetNum++) { + Map mySheet = (Map) lsSheet.get(sheetNum); + String mySheetName = Util.null2String(mySheet.get("sheetName")); + String sheetTitle = Util.null2String(mySheet.get("sheetTitle")); + List sheetMemo = (List) mySheet.get("sheetMemo"); + List titleList = (List) mySheet.get("titleList"); + List dataList = (List) mySheet.get("dataList"); + + + Sheet sheet = workbook.createSheet(mySheetName); // 创建工作表 + + int rowIdx = 0; + // 产生表格标题行 + Row rowm = sheet.createRow(rowIdx); + Cell cellTiltle = rowm.createCell(0); + + CellStyle titleStyle = this.getTitleStyle(workbook);//获取列头样式对象 + CellStyle memoStyle = this.getMemoStyle(workbook);//获取备注样式对象 + CellStyle columnTopStyle = this.getColumnTopStyle(workbook);//获取列头样式对象 + CellStyle cellStyle = this.getCellStyle(workbook); //单元格样式对象 + + int mergedRegion = titleList.size() - 1; + if (mergedRegion > 15) { + mergedRegion = 15; + } + mergedRegion = getColLength(titleList); + + CellRangeAddress region = new CellRangeAddress(rowIdx, ++rowIdx, 0, mergedRegion); + RegionUtil.setBorderBottom(BorderStyle.THIN, region, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, region, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, region, sheet); + RegionUtil.setBorderTop(BorderStyle.THIN, region, sheet); + sheet.addMergedRegion(region); + cellTiltle.setCellStyle(titleStyle); + cellTiltle.setCellValue(sheetTitle); + + // 设置列宽 + for (int i = 0; i < titleList.size(); i++) { + Map titleConfig = (Map)titleList.get(i); + Integer width = (Integer) titleConfig.get("width"); + if (width != null) { + // 设置列宽,单位是1/256个字符宽度 + sheet.setColumnWidth(i, width); + } + } + + for (int i = 0; sheetMemo != null && i < sheetMemo.size(); i++) { + rowm = sheet.createRow(++rowIdx); + Cell cellMemo = rowm.createCell(0); + region = new CellRangeAddress(rowIdx, ++rowIdx, 0, mergedRegion); + RegionUtil.setBorderBottom(BorderStyle.THIN, region, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, region, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, region, sheet); + RegionUtil.setBorderTop(BorderStyle.THIN, region, sheet); + sheet.addMergedRegion(region); + cellMemo.setCellStyle(memoStyle); + cellMemo.setCellValue(Util.null2String(sheetMemo.get(i))); + } + + rowIdx = this.initDynamicTitle(sheet, titleList, columnTopStyle, rowIdx); + + //将查询出的数据设置到sheet对应的单元格中 + for (int i = 0; dataList != null && i < dataList.size(); i++) { + List obj = (List) dataList.get(i);//遍历每个对象 + Row row = sheet.createRow(i + rowIdx + 1);//创建所需的行数 + + for (int j = 0; j < obj.size(); j++) { + Cell cell = null; //设置单元格的数据类型 + cell = row.createCell(j, CellType.STRING); + cell.setCellValue(Util.null2String(obj.get(j))); //设置单元格的值 + cell.setCellStyle(cellStyle); //设置单元格样式 + } + } + + } + + if (workbook != null) { + back = 1; + } + } catch (Exception e) { + e.printStackTrace(); + } + + return back; + } + + /* + * 列头单元格样式 + */ + private CellStyle getTitleStyle(SXSSFWorkbook workbook) { + // 设置字体 + Font font = workbook.createFont(); + //设置字体大小 + font.setFontHeightInPoints((short) 14); + //字体加粗 + font.setBold(true); + //设置字体名字 + font.setFontName("宋体"); + //设置样式; + CellStyle style = workbook.createCellStyle(); + //设置底边框; + style.setBorderBottom(BorderStyle.THIN); + //设置底边框颜色; + style.setBottomBorderColor(IndexedColors.BLACK.index); + //设置左边框; + style.setBorderLeft(BorderStyle.THIN); + //设置左边框颜色; + style.setLeftBorderColor(IndexedColors.BLACK.index); + //设置右边框; + style.setBorderRight(BorderStyle.THIN); + //设置右边框颜色; + style.setRightBorderColor(IndexedColors.BLACK.index); + //设置顶边框; + style.setBorderTop(BorderStyle.THIN); + //设置顶边框颜色; + style.setTopBorderColor(IndexedColors.BLACK.index); + //在样式用应用设置的字体; + style.setFont(font); + //设置自动换行; + style.setWrapText(false); + //设置水平对齐的样式为居中对齐; + style.setAlignment(HorizontalAlignment.CENTER); + //设置垂直对齐的样式为居中对齐; + style.setVerticalAlignment(VerticalAlignment.CENTER); + return style; + + } + + /* + * 列头单元格样式 + */ + private CellStyle getMemoStyle(SXSSFWorkbook workbook) { + // 设置字体 + Font font = workbook.createFont(); + //设置字体大小 + font.setFontHeightInPoints((short) 10); + //字体加粗 + font.setBold(true); + //设置字体名字 + font.setFontName("宋体"); + //设置样式; + CellStyle style = workbook.createCellStyle(); + //设置底边框; + style.setBorderBottom(BorderStyle.THIN); + //设置底边框颜色; + style.setBottomBorderColor(IndexedColors.BLACK.index); + //设置左边框; + style.setBorderLeft(BorderStyle.THIN); + //设置左边框颜色; + style.setLeftBorderColor(IndexedColors.BLACK.index); + //设置右边框; + style.setBorderRight(BorderStyle.THIN); + //设置右边框颜色; + style.setRightBorderColor(IndexedColors.BLACK.index); + //设置顶边框; + style.setBorderTop(BorderStyle.THIN); + //设置顶边框颜色; + style.setTopBorderColor(IndexedColors.BLACK.index); + //在样式用应用设置的字体; + style.setFont(font); + //设置自动换行; + style.setWrapText(false); + //设置水平对齐的样式为居中对齐; + style.setAlignment(HorizontalAlignment.LEFT); + //设置垂直对齐的样式为居中对齐; + style.setVerticalAlignment(VerticalAlignment.CENTER); + + return style; + + } + + /* + * 列头单元格样式 + */ + private CellStyle getColumnTopStyle(SXSSFWorkbook workbook) { + // 设置字体 + Font font = workbook.createFont(); + //设置字体大小 + font.setFontHeightInPoints((short) 11); + //字体加粗 + font.setBold(true); + //设置字体名字 + font.setFontName("宋体"); + //设置样式; + CellStyle style = workbook.createCellStyle(); + //设置底边框; + style.setBorderBottom(BorderStyle.THIN); + //设置底边框颜色; + style.setBottomBorderColor(IndexedColors.BLACK.index); + //设置左边框; + style.setBorderLeft(BorderStyle.THIN); + //设置左边框颜色; + style.setLeftBorderColor(IndexedColors.BLACK.index); + //设置右边框; + style.setBorderRight(BorderStyle.THIN); + //设置右边框颜色; + style.setRightBorderColor(IndexedColors.BLACK.index); + //设置顶边框; + style.setBorderTop(BorderStyle.THIN); + //设置顶边框颜色; + style.setTopBorderColor(IndexedColors.BLACK.index); + //在样式用应用设置的字体; + style.setFont(font); + //设置自动换行; + style.setWrapText(true); + //设置水平对齐的样式为居中对齐; + style.setAlignment(HorizontalAlignment.CENTER); + //设置垂直对齐的样式为居中对齐; + style.setVerticalAlignment(VerticalAlignment.CENTER); + + return style; + + } + + /* + * 列数据信息单元格样式 + */ + private CellStyle getCellStyle(SXSSFWorkbook workbook) { + // 设置字体 + Font font = workbook.createFont(); + //设置字体大小 + //font.setFontHeightInPoints((short)10); + //字体加粗 + //font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); + //设置字体名字 + font.setFontName("宋体"); + //设置样式; + CellStyle style = workbook.createCellStyle(); + //设置底边框; + style.setBorderBottom(BorderStyle.THIN); + //设置底边框颜色; + style.setBottomBorderColor(IndexedColors.BLACK.index); + //设置左边框; + style.setBorderLeft(BorderStyle.THIN); + //设置左边框颜色; + style.setLeftBorderColor(IndexedColors.BLACK.index); + //设置右边框; + style.setBorderRight(BorderStyle.THIN); + //设置右边框颜色; + style.setRightBorderColor(IndexedColors.BLACK.index); + //设置顶边框; + style.setBorderTop(BorderStyle.THIN); + //设置顶边框颜色; + style.setTopBorderColor(IndexedColors.BLACK.index); + //在样式用应用设置的字体; + style.setFont(font); + //设置自动换行; + style.setWrapText(false); + //设置水平对齐的样式为居中对齐; + style.setAlignment(HorizontalAlignment.CENTER); + //设置垂直对齐的样式为居中对齐; + style.setVerticalAlignment(VerticalAlignment.CENTER); + + return style; + + } + + /** + * 获取具体总共有多少列 + * @param columns + * @return + */ + private int getColLength(List columns) { + int length = -1;// 从0开始计算单元格的 + for(int i =0 ; i < columns.size() ; i++){ + Map column = (Map) columns.get(i); + if (column.get("children") != null) { + List childchildColumns = (List) column.get("children"); + length += getColLength(childchildColumns) + 1; + } else { + length++; + } + } + return length; + } + + public int initDynamicTitle(Sheet sheet, List columns, CellStyle columnTopStyle, int rowIdx) { + int cur_rowIndx = rowIdx+1; + //title 总行数 + int title_rows = cur_rowIndx+getRowNums(columns)-1; + createHeaderRow(sheet, cur_rowIndx, 0,columns,columnTopStyle,title_rows); + return title_rows; + } + + /** + * 获取具体总共有多少行 + */ + public int getRowNums(List columns) { + int cnt = 1; + for (int i = 0; i < columns.size(); i++) { + Map column = (Map) columns.get(i); + if (column.get("children") != null) { + List childchildColumns = (List) column.get("children"); + int tmpcnt = 1+getRowNums(childchildColumns); + if(tmpcnt > cnt){ + cnt = tmpcnt; + } + } + } + if(cnt > 1){ + return cnt; + }else{ + return 1; + } + } + + /** + * 创建表头 + */ + private int createHeaderRow(Sheet sheet, int index, int cellIndex, + List columnName, CellStyle columnTopStyle, int title_rows) { + Row row = sheet.getRow(index) == null ? sheet.createRow(index) : sheet.getRow(index); + int rows = getRowNums(columnName); + for (int i = 0, exportFieldTitleSize = columnName.size(); i < exportFieldTitleSize; i++) { + Map column = (Map) columnName.get(i); + String title = Util.null2String(column.get("title")); + createStringCell(row, cellIndex, title, columnTopStyle); + if (column.get("children") != null) { + List childchildColumns = (List) column.get("children"); + // 保持原来的 + int tempCellIndex = cellIndex; + cellIndex = createHeaderRow(sheet, rows == 1 ? index : index + 1, cellIndex, childchildColumns,columnTopStyle, + title_rows); + if (childchildColumns.size() > 1) { + addMergedRegion(sheet, index, index, tempCellIndex, cellIndex - 1); + } + cellIndex--; + }else{ + addMergedRegion(sheet, index, title_rows, cellIndex, cellIndex); + } + cellIndex++; + } + return cellIndex; + } + + /** + * 创建文本类型的Cell + */ + public void createStringCell(Row row, int cellIndex, String title, CellStyle columnTopStyle) { + Cell cellRowName = row.createCell(cellIndex); //创建列头对应个数的单元格 + cellRowName.setCellType(CellType.STRING); //设置列头单元格的数据类型 + cellRowName.setCellValue(title); //设置列头单元格的值 + cellRowName.setCellStyle(columnTopStyle); //设置列头单元格样式 + } + + /** + * 合并单元格 + * @param sheet + * @param firstRow + * @param lastRow + * @param firstCol + * @param lastCol + */ + public void addMergedRegion(Sheet sheet, int firstRow, int lastRow, int firstCol, int lastCol) { + try { + if(firstRow == lastRow && firstCol == lastCol){ + return ; + } + CellRangeAddress region = new CellRangeAddress(firstRow, lastRow, firstCol, lastCol); + RegionUtil.setBorderBottom(BorderStyle.THIN, region, sheet); + RegionUtil.setBorderLeft(BorderStyle.THIN, region, sheet); + RegionUtil.setBorderRight(BorderStyle.THIN, region, sheet); + RegionUtil.setBorderTop(BorderStyle.THIN, region, sheet); + sheet.addMergedRegion(region); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public Map readExcel(String imagefileid,String templateType, String excelType){ + Map result=new HashMap<>(); + RecordSet rs=new RecordSet(); + try { + int imid = Util.getIntValue(imagefileid); + InputStream imagefileInputStream = DocUtils.getImagefileInputStream(imid); + Workbook workbook=new HSSFWorkbook(); + if (excelType.equals(".xls")){ + workbook = new HSSFWorkbook(imagefileInputStream); + }else { + workbook = new XSSFWorkbook(imagefileInputStream); + } + Map fieldValues = readColumn(workbook,templateType); + if("0".equals(templateType)){ + List va=new ArrayList<>(); + //上传文件的数据去重 + for (String key : fieldValues.keySet()){ + if ( !StringUtil.isEmpty(key) && ! result.containsValue(fieldValues.get(key))){ + result.put(key,fieldValues.get(key)); + va.add(Util.null2String(fieldValues.get(key))); + } + } + //与数据库数据验重 + List weightList=new ArrayList<>(); + String s = String.join(",", va); + String checkWeightSql="select gwjc from uf_Budgetposition where gwjc in ( " +s+" )"; + rs.executeQuery(checkWeightSql); + while (rs.next()){ + String gwjc = Util.null2String(rs.getString("gwjc")); + if (!StringUtil.isEmpty(gwjc)){ + weightList.add(gwjc); + } + } + if (weightList.size()>0){ + result.put("code",500); + result.put("msg","系统中已存在:"+String.join(",",weightList)+"岗位"); + return result; + } + result.put("code",200); + result.put("msg",s); + + }else if ("1".equals(templateType)){ + List va=new ArrayList<>(); + //上传文件的数据去重 + for (String key : fieldValues.keySet()){ + Object value = fieldValues.get(key); + List v=new ArrayList<>(); + if (!Objects.isNull(value)){ + v=(List) value; + } + if (!StringUtil.isEmpty(key) && ! result.containsValue(v)){ + result.put(key,v); + va.add(v); + } + } + //检查部门和编制岗位是否合法 + List l1=new ArrayList<>(); + List l2=new ArrayList<>(); + for(List l:va){ + if (!l1.contains(l.get(0))){ + l1.add(l.get(0)); + } + if (!l2.contains(l.get(1))){ + l2.add(l.get(1)); + } + } + StringBuilder checkExistResult=new StringBuilder(); + String queryDeptSql="select count(*) as number from hrmdepartment where departmentname=? and canceled != 1"; + for (Object l : l1){ + rs.executeQuery(queryDeptSql,l); + String number=""; + while (rs.next()){ + number=Util.null2String(rs.getString("number")); + } + if(StringUtil.isEmpty(number) || "0".equals(number)){ + checkExistResult.append("部门:"+l+"不存在").append(System.getProperty("line.separator")); + } + } + String queryJobsSql="select count(*) as number from uf_budgetposition where gwjc=? and gwzt=0 and sfsc=1"; + for (Object l : l2){ + rs.executeQuery(queryJobsSql,l); + String number=""; + while (rs.next()){ + number=Util.null2String(rs.getString("number")); + } + if(StringUtil.isEmpty(number) || "0".equals(number)){ + checkExistResult.append("编制岗位:"+l+"不存在").append(System.getProperty("line.separator")); + } + } + if (checkExistResult.length()>0){ + result.put("code",500); + result.put("msg",checkExistResult); + return result; + } + //与数据库数据验重 + List weightList=new ArrayList<>(); + String checkWeightSql="select t5.departmentname,t5.gwjc " + + "from ( " + + " select t3.departmentname,t4.gwjc " + + " from uf_Departmentposit t1 " + + " left join uf_Departmentposit_dt1 t2 on t2.mainid=t1.id " + + " left join hrmdepartment t3 on t3.id=t1.bm " + + " left join uf_Budgetposition t4 on t4.id=t2.bzgw " + + ")t5 " + + "where t5.departmentname = ? and t5.gwjc=? "; + rs.executeBatchSql(checkWeightSql,va); + for (List l:va){ + rs.executeQuery(checkWeightSql,l.get(0),l.get(1)); + while (rs.next()){ + String departmentname = Util.null2String(rs.getString("departmentname")); + String gwjc = Util.null2String(rs.getString("gwjc")); + if (!StringUtil.isEmpty(departmentname) && !StringUtil.isEmpty(gwjc)){ + weightList.add("部门:"+departmentname+" 岗位:"+gwjc+"已存在"); + } + } + } + if (weightList.size()>0){ + result.put("code",500); + result.put("msg","系统中已存在:"+String.join(",",weightList)+"岗位"); + return result; + } + result.put("code",200); + result.put("msg",va); + }else if ("2".equals(templateType)){ + List va=new ArrayList<>(); + //上传文件的数据去重 + for (String key : fieldValues.keySet()){ + Object value = fieldValues.get(key); + List v=new ArrayList<>(); + if (!Objects.isNull(value)){ + v=(List) value; + } + if (!StringUtil.isEmpty(key) && ! result.containsValue(v)){ + result.put(key,v); + va.add(v); + } + } + //检查部门和编制岗位是否合法 + StringBuilder checkExistResult=new StringBuilder(); + String querySql="select count(*) as number " + + "from uf_departmentposit t1 " + + "left join uf_departmentposit_dt1 t2 " + + "on t2.mainid = t1.id " + + "left join hrmdepartment t3 " + + "on t3.id = t1.bm " + + "left join uf_budgetposition t4 " + + "on t4.id = t2.bzgw " + + "where t3.departmentname=? and t4.gwjc=?"; + for (List l:va){ + String number=""; + rs.executeQuery(querySql,l.get(0),l.get(1)); + while (rs.next()){ + number = Util.null2String(rs.getString("number")); + } + if(StringUtil.isEmpty(number) || "0".equals(number)){ + checkExistResult.append("部门:"+l.get(0)+" 编制岗位: "+l.get(1)+" 对照关系不存在").append(System.getProperty("line.separator")); + } + } + if (checkExistResult.length()>0){ + result.put("code",500); + result.put("msg",checkExistResult); + return result; + } + //数据库去重 + List weightList=new ArrayList<>(); + String number =""; + String checkSql="select count(*) as number " + + "from uf_bmbz t1 " + + "left join hrmdepartment t2 " + + "on t2.id= t1.bm " + + "left join uf_budgetposition t3 " + + "on t3.id=t1.gw " + + "where t2.departmentname=? and t3.gwjc=?"; + for (List l:va){ + rs.executeQuery(checkSql,l.get(0),l.get(1)); + while (rs.next()){ + number = Util.null2String(rs.getString("number")); + } + if (!"0".equals(number)){ + weightList.add("部门:"+l.get(0)+" 编制岗位:"+l.get(1)+"的分配关系已存在"); + } + } + if (weightList.size()>0){ + result.put("code",500); + result.put("msg","系统中已存在:"+String.join(",",weightList)+"岗位"); + return result; + } + result.put("code",200); + result.put("msg",va); + }else if ("3".equals(templateType)){ + List va=new ArrayList<>(); + //上传文件的数据去重 + for (String key : fieldValues.keySet()){ + Object value = fieldValues.get(key); + List v=new ArrayList<>(); + if (!Objects.isNull(value)){ + v=(List) value; + } + if (!StringUtil.isEmpty(key) && ! result.containsValue(v)){ + result.put(key,v); + va.add(v); + } + } + //检查员工编号是否正确 + StringBuilder checkExistResult=new StringBuilder(); + String checkWorkCodeSql="select count(*) as number from hrmresource where workcode =? and lastname =? "; + for (List l:va){ + String number=""; + rs.executeQuery(checkWorkCodeSql,l.get(1),l.get(0)); + while (rs.next()){ + number = Util.null2String(rs.getString("number")); + } + if (StringUtil.isEmpty(number) || "0".equals(number)){ + checkExistResult.append("姓名:"+l.get(0)+" 员工编号:"+l.get(1)+" 不存在").append(System.getProperty("line.separator")); + } + } + if(checkExistResult.length()>0){ + result.put("code",500); + result.put("msg",checkExistResult); + return result; + } + //检查L计划表中是否已经存在 + String checkExistSql="select count(*) as number from uf_ljh where xm=? and ygbh=? "; + for (List l:va){ + String number=""; + rs.executeQuery(checkExistSql,l.get(0),l.get(1)); + while (rs.next()){ + number = Util.null2String(rs.getString("number")); + } + if (StringUtil.isEmpty(number) || "0".equals(number)){ + checkExistResult.append("姓名:"+l.get(0)+"员工编号:"+l.get(1)+" 已加入L计划表").append(System.getProperty("line.separator")); + } + } + if(checkExistResult.length()>0){ + result.put("code",500); + result.put("msg",checkExistResult); + return result; + } + result.put("code",200); + result.put("msg",va); + } + + }catch (Exception e){ + new BaseBean().writeLog("uploadDatas Exception: " +e); + } + + + return result; + } + + public Map readColumn(Workbook workbook,String templateType){ + Map result = new HashMap<>(); + try { + Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表 + if ("0".equals(templateType)){ + //获取第一列 + for (int i=3;i cells = new ArrayList<>(); + cells.add(cell0Value); + cells.add(cell1Value); + result.put(i+"",cells); + } + }else if ("2".equals(templateType)){ + for (int i=3;i cells = new ArrayList<>(); + cells.add(cell0Value); + cells.add(cell1Value); + cells.add(cell2Value); + cells.add(cell3Value); + result.put(i+"",cells); + } + }else if ("3".equals(templateType)){ + for (int i=3;i cells = new ArrayList<>(); + cells.add(cell0Value); + cells.add(cell1Value); + cells.add(cell2Value); + result.put(i+"",cells); + } + } + }catch(Exception e){ + baseBean.writeLog("readColumn exception: "+e); + } + + return result; + } + + + /** + * 插入数据库 + * @param insertMap + * @param templateType + * @param user + */ + public void insertExcel(Map insertMap, String templateType, User user){ + RecordSet rs=new RecordSet(); + Integer userId = Util.getIntValue(Util.null2String(user.getUID())); + int userType = user.getType(); + try { + String nowDate = cn.hutool.core.date.DateUtil.format(new Date(), "yyyy-MM-dd"); + String nowTime = cn.hutool.core.date.DateUtil.format(new Date(), "HH:mm:ss"); + if ("0".equals(templateType)){ + String staffJobsModeId = PropBean.getUfPropValue("staffJobsModeId"); + String msg = Util.null2String(insertMap.get("msg")); + if (!StringUtil.isEmpty(msg)){ + String[] msgSplit = msg.split(","); + List tmpList=new ArrayList<>(); + List tmp=new ArrayList<>(); + for (String m:msgSplit){ + tmp.add(m); + tmp.add(staffJobsModeId); + tmp.add(userId); + tmp.add(nowDate); + tmp.add(nowTime); + tmp.add(0); + tmpList.add(tmp); + } + String insertSql="insert into uf_Budgetposition (gwjc,formmodeid,modedatacreater,modedatecreatedate,modedatecreatetime,gwzt) " + + "values(?,?,?,?,?,?)"; + rs.executeBatchSql(insertSql,tmpList); + } + }else if ("1".equals(templateType)){ + String DeptJobsReflectionModeId = PropBean.getUfPropValue("staffDeptJobsReflectionModeId"); + Object msgObj = insertMap.get("msg"); + List deptList = new ArrayList<>(); + if(!Objects.isNull(msgObj)){ + List msg=(List) msgObj; + List existDeptList = new ArrayList<>(); + //先将部门插入主表 start + //获取所有需要插入的部门name + for (List m:msg){ + //m->[部门name,编制岗位name] + deptList.add(m.get(0)); + } + //查出已有的部门 + String getDeptSql="select distinct t2.departmentname from uf_departmentposit t1 " + + "left join hrmdepartment t2 on t2.id = t1.bm"; + rs.executeQuery(getDeptSql); + while (rs.next()){ + String departmentname = Util.null2String(rs.getString("departmentname")); + if(StringUtil.isEmpty(departmentname)){ + existDeptList.add(departmentname); + } + } + //插入uf_departmentposit不存在的部门 + List deptTmpList=deptList.stream().filter(e->{return !existDeptList.contains(e);}).collect(Collectors.toList()); + if (deptTmpList.size()>0){ + List deptIdTmpList=new ArrayList<>(); + String getDeptIdSql="select id from hrmdepartment where departmentname=?"; + for (Object e : deptTmpList){ + rs.executeQuery(getDeptIdSql, Util.null2String(e)); + while (rs.next()){ + deptIdTmpList.add(Util.null2String(rs.getString("id"))); + } + } + if (deptIdTmpList.size()>0){ + List insertList = new ArrayList<>(); + List tmpList = new ArrayList<>(); + String insertDeptSql="insert into uf_departmentposit (bm,formmodeid,modedatacreater,modedatacreatertype," + + "modedatacreatedate,modedatacreatetime) values (?,?,?,?,?,?)"; + for (int i=0; i(); + tmpList.add(deptIdTmpList.get(i)); + tmpList.add(DeptJobsReflectionModeId); + tmpList.add(userId); + tmpList.add(userType); + tmpList.add(nowDate); + tmpList.add(nowTime); + insertList.add(tmpList); + } + if (insertList.size()>0){ + rs.executeBatchSql(insertDeptSql,insertList); + } + + } + } + //先将部门插入主表 end + //获取所有插入的部门的id和所有需要插入的编制岗位的id + //需要的数据格式:djList=([部门id,编制岗位id],......) + //msg数据格式:([部门name,编制岗位name],......) + List djList = new ArrayList<>(); + List tList=new ArrayList<>(); + String getDeptIdSql="select id,departmentname from hrmdepartment where departmentname=?"; + String getJobsIdSql="select id,gwjc from uf_budgetposition where gwjc=?"; + for (List m:msg){ + if (m.size() == 2){ + String dept = Util.null2String(m.get(0)); + String jobs = Util.null2String(m.get(1)); + if(!StringUtil.isEmpty(dept) && !StringUtil.isEmpty(jobs)){ + tList=new ArrayList<>(); + //处理部门 + rs.executeQuery(getDeptIdSql,dept); + while (rs.next()){ + String id = Util.null2String(rs.getString("id")); + tList.add(id); + } + //处理岗位 + rs.executeQuery(getJobsIdSql,jobs); + while (rs.next()){ + String id = Util.null2String(rs.getString("id")); + tList.add(id); + } + djList.add(tList); + } + } + } + //插入明细表mainid和bzgw + //根据部门id获取mainid + List insertList=new ArrayList<>(); + List tmpList=new ArrayList<>(); + String queryMainIdSql="select id from uf_departmentposit where bm = ? "; + for (List dj:djList){ + rs.executeQuery(queryMainIdSql,dj.get(0)); + while (rs.next()){ + String id = Util.null2String(rs.getString("id")); + tmpList.addAll(dj); + tmpList.add(id); + insertList.add(tmpList); + } + } + //插入 + String insertSql="insert into uf_departmentposit_dt1 (mainid,bzgw,zt,sfsc) values (?,?,?,?)"; + for (List list:insertList){ + rs.executeUpdate(insertSql,list.get(2),list.get(1),0,1); + } + } + }else if ("2".equals(templateType)){ + String staffDeptJobsAllocationModeId = PropBean.getUfPropValue("staffDeptJobsAllocationModeId"); + Object msgObj = insertMap.get("msg"); + if (!Objects.isNull(msgObj)){ + List msg=(List) msgObj; + List tmpList=new ArrayList<>(); + List tmp=new ArrayList<>(); + String queryDeptIdSql="select id from hrmdepartment where departmentname = ?"; + String queryJobsIdSql="select id from uf_budgetposition where gwjc = ?"; + for (List m:msg){ + tmp.add(m.get(2)); + tmp.add(m.get(3)); + rs.executeQuery(queryDeptIdSql,m.get(0)); + while (rs.next()){ + tmp.add(Util.null2String(rs.getString("id"))); + } + rs.executeQuery(queryJobsIdSql,m.get(1)); + while (rs.next()){ + tmp.add(Util.null2String(rs.getString("id"))); + } + tmp.add(staffDeptJobsAllocationModeId); + tmp.add(userId); + tmp.add(nowDate); + tmp.add(nowTime); + tmp.add(0); + tmp.add(1); + tmpList.add(tmp); + } + String insertSql="insert into uf_bmbz (bzs,bzshtg,bm,gw,formmodeid,modedatacreater,modedatecreatedate,modedatecreatetime,zt,sfsc) " + + "values(?,?,?,?,?,?,?,?,?,?)"; + rs.executeBatchSql(insertSql,tmpList); + } + } else if ("3".equals(templateType)) { + String staffLPlanModeId = PropBean.getUfPropValue("staffLPlanModeId"); + String companyId = PropBean.getUfPropValue("ssgs_field_id"); + String staffJobsField = PropBean.getUfPropValue("staffJobsField"); + Object msgObj = insertMap.get("msg"); + if (!Objects.isNull(msgObj)){ + List msg=(List) msgObj; + List tmpList=new ArrayList<>(); + List tmp=new ArrayList<>(); + String querySql1="select t1.id, t1.departmentid, t2."+companyId+" from hrmresource t1 " + + "left join cus_fielddata on t2.id = t1.id and scopeid=-1 where t1.workcode = ?"; + String querySql2="select t2."+staffJobsField+" from hrmresource t1 " + + "left join cus_fielddata on t2.id = t1.id and scopeid=3 where t1.workcode = ?"; + for (List m:msg){ + tmp.add(m.get(1)); + rs.executeQuery(querySql1,m.get(1)); + while (rs.next()){ + tmp.add(Util.null2String(rs.getString("id"))); + tmp.add(Util.null2String(rs.getString(companyId))); + tmp.add(Util.null2String(rs.getString("departmentid"))); + } + rs.executeQuery(querySql2,m.get(1)); + while (rs.next()){ + tmp.add(Util.null2String(rs.getString(staffJobsField))); + } + tmp.add(staffLPlanModeId); + tmp.add(userId); + tmp.add(nowDate); + tmp.add(nowTime); + tmp.add(0); + tmpList.add(tmp); + } + String insertSql="insert into uf_ljh (ygbh,xm,szgs,bm,gw,formmodeid,modedatacreater,modedatecreatedate,modedatecreatetime,zt) " + + "values(?,?,?,?,?,?,?,?,?,?)"; + rs.executeBatchSql(insertSql,tmpList); + } + } + + }catch (Exception e){ + baseBean.writeLog("insertExcel exception: "+e); + } + } + + public List> doDatas(String templateType,String sheetNo){ + List> list = new ArrayList<>(); + List> resultList = new ArrayList<>(); + Map tmp = new HashMap<>(); + List tmpList=new ArrayList<>(); + RecordSet rs= new RecordSet(); + if ("0".equals(templateType)){ + + }else if ("1".equals(templateType)){ + if("1".equals(sheetNo)){ + String queryDeptSql="select departmentname from hrmdepartment where (canceled is null or canceled = 0 )"; + rs.executeQuery(queryDeptSql); + while (rs.next()){ + String departmentname = Util.null2String(rs.getString("departmentname")); + tmp = new HashMap<>(); + tmp.put("department", departmentname); + list.add(tmp); + } + String queryJobsSql="select gwjc from uf_budgetposition where gwzt=0 and sfsc=1"; + rs.executeQuery(queryJobsSql); + while (rs.next()){ + String gwjc = Util.null2String(rs.getString("gwjc")); + tmpList.add(gwjc); + } + //整合数据 + if(tmpList.size()<=list.size()){ + for (int i =0;i map = list.get(i); + if(i>=tmpList.size()){ + map.put("jobs",""); + }else { + map.put("jobs",tmpList.get(i)); + } + resultList.add(map); + } + }else { + for (int i =0;i map = new HashMap<>(); + if(i>=list.size()){ + map.put("department",""); + }else { + map = list.get(i); + } + map.put("jobs",tmpList.get(i)); + resultList.add(map); + } + } + }else { + String querySql="select t3.departmentname , t4.gwjc ,t2.zt" + + "from uf_departmentposit t1 " + + "left join uf_departmentposit_dt1 t2 " + + "on t2.mainid = t1.id " + + "left join hrmdepartment t3 " + + "on t3.id= t1.bm " + + "left join uf_budgetposition t4 " + + "on t4.id = t2.bzgw " + + "where t2.sfsc = 1 "; + rs.executeQuery(querySql); + while (rs.next()) { + String departmentname = Util.null2String(rs.getString("departmentname")); + String jobsname = Util.null2String(rs.getString("gwjc")); + String status = Util.null2String(rs.getString("zt")); + String statusName=""; + if (!StringUtil.isEmpty(status)){ + if ("0".equals(status)){ + statusName="启用"; + }else { + statusName="停用"; + } + } + tmp = new HashMap<>(); + tmp.put("department", departmentname); + tmp.put("jobs", jobsname); + tmp.put("status", statusName); + list.add(tmp); + } + resultList.addAll(list); + } + + }else if ("2".equals(templateType)){ + if ("1".equals(sheetNo)){ + String querySql="select t3.departmentname,t4.gwjc " + + "from uf_departmentposit t1 " + + "left join uf_departmentposit_dt1 t2 " + + "on t2.mainid = t1.id " + + "left join hrmdepartment t3 " + + "on t3.id = t1.bm " + + "left join uf_budgetposition t4 " + + "on t4.id = t2.bzgw " + + "where t2.zt=0 and t2.sfsc= 1 "; + rs.executeQuery(querySql); + while (rs.next()){ + String departmentname = Util.null2String(rs.getString("departmentname")); + String gwjc = Util.null2String(rs.getString("gwjc")); + tmp = new HashMap<>(); + tmp.put("department", departmentname); + tmp.put("jobs", gwjc); + list.add(tmp); + } + resultList.addAll(list); + }else if ("2".equals(sheetNo)){ + String statusName=""; + String querySql="select t2.departmentname,t3.gwjc,t1.bzs,t1.bzshtg,t1.zt" + + "from uf_bmbz t1 " + + "left join hrmdepartment t2 " + + "on t2.id = t1.bm " + + "left join uf_budgetposition t3 " + + "on t3.id= t1.gw " + + "where t1.sfsc=1"; + rs.executeQuery(querySql); + while (rs.next()){ + String departmentname = Util.null2String(rs.getString("departmentname")); + String jobs = Util.null2String(rs.getString("gwjc")); + String staffnum = Util.null2String(rs.getString("bzs")); + String staffnumContract = Util.null2String(rs.getString("bzshtg")); + String status = Util.null2String(rs.getString("zt")); + if(!StringUtil.isEmpty(status)){ + if ("0".equals(status)){ + statusName="启用"; + }else { + statusName="停用"; + } + } + tmp = new HashMap<>(); + tmp.put("department", departmentname); + tmp.put("jobs", jobs); + tmp.put("staffNum", staffnum); + tmp.put("staffNumContract", staffnumContract); + tmp.put("status", statusName); + list.add(tmp); + } + resultList.addAll(list); + } + + }else if ("3".equals(templateType)){ + if ("1".equals(sheetNo)){ + String querySql="select lastname,workcode from hrmresource where status in (0,1,2,3)"; + rs.executeQuery(querySql); + while (rs.next()){ + String lastname = Util.null2String(rs.getString("lastname")); + String workcode = Util.null2String(rs.getString("workcode")); + tmp = new HashMap<>(); + tmp.put("lastname", lastname); + tmp.put("workcode", workcode); + list.add(tmp); + } + }else if ("2".equals(sheetNo)){ + String statusname=""; + String querySql="select xm,ygbh,yjljhsxrq,zt from uf_ljh"; + rs.executeQuery(querySql); + while (rs.next()){ + String lastname = Util.null2String(rs.getString("xm")); + String workcode = Util.null2String(rs.getString("ygbh")); + String startdate = Util.null2String(rs.getString("yjljhsxrq")); + String status = Util.null2String(rs.getString("zt")); + if (!StringUtil.isEmpty(status)){ + if ("0".equals(status)){ + statusname="未开始"; + } + if ("1".equals(status)){ + statusname="进行中"; + } + if ("2".equals(status)){ + statusname="已结束"; + } + if ("3".equals(status)){ + statusname="已撤销"; + } + } + tmp = new HashMap<>(); + tmp.put("lastname", lastname); + tmp.put("workcode", workcode); + tmp.put("startdate", startdate); + tmp.put("status", statusname); + list.add(tmp); + } + } + + resultList.addAll(list); + } + + return resultList; + } + + public String createExcel(String templateType){ + List> list = new ArrayList<>(); + String url=""; + Integer sheetNo=0; + if ("0".equals(templateType)){ + long currentTimeMillis = System.currentTimeMillis(); + String fileName="StaffJobs("+currentTimeMillis+").xlsx"; + exportExcel(fileName, + "/aifs01/weaver/ecology/staff/template", + "/aifs01/weaver/ecology/staff/template/StaffJobs.xlsx", list,null,templateType); + url="/aifs01/weaver/ecology/staff/template/"+fileName; + } else if ("1".equals(templateType)) { + long currentTimeMillis = System.currentTimeMillis(); + String fileName="StaffDeptJobsReflection("+currentTimeMillis+").xlsx"; + doDatas(templateType,null); + exportExcel(fileName, + "/aifs01/weaver/ecology/staff/template", + "/aifs01/weaver/ecology/staff/template/StaffDeptJobsReflection.xlsx", list,null,templateType); + url="/aifs01/weaver/ecology/staff/template/"+fileName; + }else if ("2".equals(templateType)) { + list = doDatas(templateType, "1"); + List> list1 = doDatas(templateType, "2"); + long currentTimeMillis = System.currentTimeMillis(); + String fileName="DeptStaffAllocation("+currentTimeMillis+").xlsx"; + exportExcel(fileName, + "/aifs01/weaver/ecology/staff/template", + "/aifs01/weaver/ecology/staff/template/DeptStaffAllocation.xlsx", list,list1,templateType); + url="/aifs01/weaver/ecology/staff/template/"+fileName; + }else if ("3".equals(templateType)) { + list = doDatas(templateType, null); + long currentTimeMillis = System.currentTimeMillis(); + String fileName="LPlan("+currentTimeMillis+").xlsx"; + exportExcel(fileName, + "/aifs01/weaver/ecology/staff/template", + "/aifs01/weaver/ecology/staff/template/LPlan.xlsx", list,null,templateType); + url="/aifs01/weaver/ecology/staff/template/"+fileName; + } + return url; + } + + + /** + * 生成最新模版 + * @param fileName + * @param exportPath + * @param templateFilePath + * @param list + * @return + */ + public static String exportExcel(String fileName, String exportPath, String templateFilePath, List> list,List> list2,String templateType) { + if("2".equals(templateType)){ + ExcelWriter excelWriter = EasyExcel.write(exportPath + "/" + fileName).withTemplate(templateFilePath).build(); + WriteSheet writeSheet = EasyExcel.writerSheet(1).build(); + excelWriter.fill(list, writeSheet); + WriteSheet writeSheet1 = EasyExcel.writerSheet(2).build(); + excelWriter.fill(list2, writeSheet1); + excelWriter.finish(); + }else{ + ExcelWriter excelWriter = EasyExcel.write(exportPath + "/" + fileName).withTemplate(templateFilePath).build(); + WriteSheet writeSheet = EasyExcel.writerSheet(1).build(); + excelWriter.fill(list, writeSheet); + excelWriter.finish(); + } + + return null; + } + +}