فهرست منبع

巡查结果下载优化

周箭河 4 سال پیش
والد
کامیت
7cd50ab09c

+ 92 - 0
mec-util/src/main/java/com/ym/mec/util/excel/POIUtil.java

@@ -795,4 +795,96 @@ public class POIUtil {
 		return workbook;
 	}
 
+	/**
+	 * 将数据集dataset导出到fileName文件中
+	 *
+	 * @param headColumns  导出文件的列名
+	 * @param fieldColumns
+	 * @param dataset      数据源
+	 * @return
+	 * @throws IOException
+	 * @throws NoSuchMethodException
+	 * @throws InvocationTargetException
+	 * @throws IllegalAccessException
+	 */
+	public static <T> HSSFWorkbook multipleHeaderExportExcel(List<String[]> headers, String[] fieldColumns, List<T> dataset) throws IOException, IllegalAccessException,
+			InvocationTargetException, NoSuchMethodException {
+		if (headers == null || headers.size()<=0) {
+			throw new UtilException("excel列名不能为空");
+		}
+		if (dataset == null) {
+			throw new UtilException("数据集不能为空");
+		}
+		/*if (dataset.size() > MAX_DATA_SIZE) {
+			throw new UtilException("数据集太大,不能导出.最大数据集不能超过" + MAX_DATA_SIZE);
+		}*/
+		HSSFWorkbook workbook = new HSSFWorkbook();
+		HSSFCellStyle style = workbook.createCellStyle(); // 获取单元格样式
+		/************** 设置单元格样式 *************/
+		style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 垂直
+		style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平
+		style.setWrapText(true);
+		HSSFFont font = workbook.createFont();
+		font.setColor(HSSFFont.COLOR_NORMAL);
+		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
+		style.setFont(font);
+
+		HSSFSheet sheet = workbook.createSheet(); // 创建sheet
+		// 设置表头
+		// 创建第一行
+		HSSFCell cell = null;
+		int k =0;
+		for (String[] headColumns : headers) {
+			HSSFRow row1 = sheet.createRow(k);
+			for (int i = 0; i < headColumns.length; i++) {
+				// 创建列
+				cell = row1.createCell(i);
+				// 定义单元格为字符串类型
+				cell.setCellType(HSSFCell.CELL_TYPE_STRING);
+				// 设置单元格的样式
+				cell.setCellStyle(style);
+				// 设置单元格的值
+				cell.setCellValue(headColumns[i]);
+			}
+			k++;
+		}
+
+		HSSFRow row = null;
+		// 添加数据
+		T data = null;
+		Object obj = null;
+		StandardEvaluationContext context = null;
+		for (int i = 1; i <= dataset.size(); i++) {
+			data = dataset.get(i - 1);
+			if (data != null) {
+
+				context = new StandardEvaluationContext(data);
+				row = sheet.createRow(i+headers.size()-1);
+				for (int j = 0; j < fieldColumns.length; j++) {
+					cell = row.createCell(j);
+					try {
+						if(data instanceof Map) {
+							obj = PropertyUtils.getNestedProperty(data, fieldColumns[j]);
+						}else {
+							obj = expressionParser.parseExpression(fieldColumns[j]).getValue(context);
+						}
+						if (obj instanceof Date) {
+							obj = sdf.format(obj);
+						}
+
+					} catch (Exception e) {
+						LOGGER.warn(e.getMessage());
+						obj = null;
+					}
+					if (obj != null) {
+						cell.setCellValue(obj.toString());
+					} else {
+						cell.setCellValue("");
+					}
+				}
+			}
+		}
+		return workbook;
+	}
+
 }

+ 43 - 3
mec-web/src/main/java/com/ym/mec/web/controller/InspectionItemPlanConclusionController.java

@@ -1,5 +1,7 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.biz.dal.dao.InspectionItemPlanDao;
+import com.ym.mec.biz.dal.entity.InspectionItemPlan;
 import com.ym.mec.biz.service.InspectionItemPlanConclusionService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -10,6 +12,8 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.ss.util.CellRangeAddressList;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -25,6 +29,8 @@ import java.util.*;
 public class InspectionItemPlanConclusionController extends BaseController {
     @Autowired
     private InspectionItemPlanConclusionService InspectionItemPlanConclusionService;
+    @Autowired
+    private InspectionItemPlanDao inspectionItemPlanDao;
 
     @ApiOperation(value = "获取日程的巡查结果")
     @GetMapping("/getPlanConclusion")
@@ -59,15 +65,49 @@ public class InspectionItemPlanConclusionController extends BaseController {
                 });
             });
 
-            List<String> bodyList = new ArrayList<>();
+            List<String> bodyList = new LinkedList<>();
             conclusions.get(0).forEach((key, vak) -> {
                 bodyList.add(key);
             });
+            InspectionItemPlan planInfo = inspectionItemPlanDao.getPlanInfo(planId);
+            String dateTime = DateUtil.dateToString(planInfo.getPlanStart(), "yyyy-MM-dd") + " " + DateUtil.dateToString(planInfo.getPlanStart(), "HH:mm") + "~" + DateUtil.dateToString(planInfo.getPlanEnd(), "HH:mm");
+            String[] header = {"所属分部", planInfo.getOrganName(), "", "合作单位", planInfo.getCooperationName(), "", "巡查乐团", planInfo.getMusicGroupName(), "", "", "", "", "", "", "", ""};
+            String[] header1 = {"乐团主管", planInfo.getRealName(), "", "巡查时间", dateTime, "", "提交时间", DateUtil.dateToString(planInfo.getSubmitedTime(), "yyyy-MM-dd HH:mm"), "", "", "", "", "", "", ""};
+            String[] header2 = {"处理方式", planInfo.getMemo(), "", "", "", "", "", "", "", "", "", "", "", "", "", ""};
+            String[] header3 = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""};
+            String[] header4 = {"巡查项目", "课前管理", "", "", "", "", "课中管理", "", "", "", "", "", "", "课后管理", "", ""};
+            String[] header5 = {"", "老师是否提前准备板书(本课内容、作业)", "老师是否佩戴工牌", "老师是否仪容仪表整洁", "老师是否携带乐器", "老师是否携带教学资料、设备", "老师是否合理安排学员座位", "乐器箱包、书包是否摆放整齐", "课堂纪律是否保持良好", "老师是否全程站立教学", "老师是否全程使用节拍器或教学音频", "是否发现学员需要更换新乐器", "老师是否将上课照片/视频发送到声部群", "老师是否保持教室环境卫生", "老师是否关好所有电源、门窗", "老师是否有序组织学员放学"};
+
+            List<String[]> headers = new LinkedList<>();
+            headers.add(header);
+            headers.add(header1);
+            headers.add(header2);
+            headers.add(header3);
+            headers.add(header4);
+            headers.add(header5);
 
             String[] body = bodyList.toArray(new String[bodyList.size()]);
 
-            String[] header = {"老师", "老师是否提前准备板书(本课内容、作业)", "老师是否佩戴工牌", "老师是否仪容仪表整洁", "老师是否携带乐器", "老师是否携带教学资料、设备", "老师是否合理安排学员座位", "乐器箱包、书包是否摆放整齐", "课堂纪律是否保持良好", "老师是否全程站立教学", "老师是否全程使用节拍器或教学音频", "是否发现学员需要更换新乐器", "老师是否将上课照片/视频发送到声部群", "老师是否保持教室环境卫生", "老师是否关好所有电源、门窗", "老师是否有序组织学员放学"};
-            HSSFWorkbook workbook = POIUtil.exportExcel(header, body, conclusions);
+
+            HSSFWorkbook workbook = POIUtil.multipleHeaderExportExcel(headers, body, conclusions);
+            //合并单元格处理
+            CellRangeAddressList cellRangeAddressList = new CellRangeAddressList();
+            cellRangeAddressList.addCellRangeAddress(0, 1, 0, 2);
+            cellRangeAddressList.addCellRangeAddress(0, 4, 0, 5);
+            cellRangeAddressList.addCellRangeAddress(0, 7, 0, 8);
+            cellRangeAddressList.addCellRangeAddress(1, 1, 1, 2);
+            cellRangeAddressList.addCellRangeAddress(1, 4, 1, 5);
+            cellRangeAddressList.addCellRangeAddress(1, 7, 1, 8);
+            cellRangeAddressList.addCellRangeAddress(2, 1, 2, 2);
+            cellRangeAddressList.addCellRangeAddress(3, 0, 3, 15);
+            cellRangeAddressList.addCellRangeAddress(4, 0, 5, 0);
+            cellRangeAddressList.addCellRangeAddress(4, 1, 4, 5);
+            cellRangeAddressList.addCellRangeAddress(4, 6, 4, 12);
+            cellRangeAddressList.addCellRangeAddress(4, 13, 4, 15);
+
+            for (CellRangeAddress cellRangeAddress : cellRangeAddressList.getCellRangeAddresses()) {
+                workbook.getSheetAt(0).addMergedRegion(cellRangeAddress);
+            }
 
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=inspectionItemPlanConclusion-" + DateUtil.getDate(new Date()) + ".xls");