فهرست منبع

历史时实报表导出问题

yanliming 1 سال پیش
والد
کامیت
708678a1d9
1فایلهای تغییر یافته به همراه165 افزوده شده و 63 حذف شده
  1. 165 63
      web/src/main/java/com/jpsoft/employment/modules/base/controller/GenerateReportController.java

+ 165 - 63
web/src/main/java/com/jpsoft/employment/modules/base/controller/GenerateReportController.java

@@ -1,6 +1,7 @@
 package com.jpsoft.employment.modules.base.controller;
 
 import com.github.pagehelper.Page;
+import com.jpsoft.employment.config.OSSConfig;
 import com.jpsoft.employment.modules.common.dto.MessageResult;
 import com.jpsoft.employment.modules.common.dto.Sort;
 import com.jpsoft.employment.modules.common.utils.OSSUtil;
@@ -10,12 +11,19 @@ import com.jpsoft.employment.modules.base.entity.GenerateReport;
 import com.jpsoft.employment.modules.base.service.GenerateReportService;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -26,11 +34,14 @@ public class GenerateReportController {
 
     @Autowired
     private GenerateReportService generateReportService;
-	
-	
-	@ApiOperation(value="创建空记录")
+
+    @Autowired
+    private OSSConfig ossConfig;
+
+
+    @ApiOperation(value = "创建空记录")
     @GetMapping("create")
-    public MessageResult<GenerateReport> create(){
+    public MessageResult<GenerateReport> create() {
         MessageResult<GenerateReport> msgResult = new MessageResult<>();
 
         GenerateReport generateReport = new GenerateReport();
@@ -41,14 +52,14 @@ public class GenerateReportController {
         return msgResult;
     }
 
-    @ApiOperation(value="添加信息")
+    @ApiOperation(value = "添加信息")
     @PostMapping("add")
-    public MessageResult<GenerateReport> add(@RequestBody GenerateReport generateReport,@RequestAttribute String subject){
+    public MessageResult<GenerateReport> add(@RequestBody GenerateReport generateReport, @RequestAttribute String subject) {
         MessageResult<GenerateReport> msgResult = new MessageResult<>();
 
         try {
             generateReport.setId(UUID.randomUUID().toString());
-			generateReport.setDelFlag(false);
+            generateReport.setDelFlag(false);
             generateReport.setCreateBy(subject);
             generateReport.setCreateTime(new Date());
 
@@ -61,9 +72,8 @@ public class GenerateReportController {
                 msgResult.setResult(false);
                 msgResult.setMessage("数据库添加失败");
             }
-        }
-        catch(Exception ex){
-            logger.error(ex.getMessage(),ex);
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
 
             msgResult.setResult(false);
             msgResult.setMessage(ex.getMessage());
@@ -72,9 +82,9 @@ public class GenerateReportController {
         return msgResult;
     }
 
-    @ApiOperation(value="获取信息")
+    @ApiOperation(value = "获取信息")
     @GetMapping("edit/{id}")
-    public MessageResult<GenerateReport> edit(@PathVariable("id") String id){
+    public MessageResult<GenerateReport> edit(@PathVariable("id") String id) {
         MessageResult<GenerateReport> msgResult = new MessageResult<>();
 
         try {
@@ -87,9 +97,8 @@ public class GenerateReportController {
                 msgResult.setResult(false);
                 msgResult.setMessage("数据库不存在该记录!");
             }
-        }
-        catch(Exception ex){
-            logger.error(ex.getMessage(),ex);
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
 
             msgResult.setResult(false);
             msgResult.setMessage(ex.getMessage());
@@ -98,15 +107,15 @@ public class GenerateReportController {
         return msgResult;
     }
 
-    @ApiOperation(value="更新用户")
+    @ApiOperation(value = "更新用户")
     @PostMapping("update")
-    public MessageResult<GenerateReport> update(@RequestBody GenerateReport generateReport,@RequestAttribute String subject){
+    public MessageResult<GenerateReport> update(@RequestBody GenerateReport generateReport, @RequestAttribute String subject) {
         MessageResult<GenerateReport> msgResult = new MessageResult<>();
 
         try {
-		    generateReport.setUpdateBy(subject);
+            generateReport.setUpdateBy(subject);
             generateReport.setUpdateTime(new Date());
-		
+
             int affectCount = generateReportService.update(generateReport);
 
             if (affectCount > 0) {
@@ -116,9 +125,8 @@ public class GenerateReportController {
                 msgResult.setResult(false);
                 msgResult.setMessage("数据库更新失败");
             }
-        }
-        catch(Exception ex){
-            logger.error(ex.getMessage(),ex);
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
 
             msgResult.setResult(false);
             msgResult.setMessage(ex.getMessage());
@@ -127,19 +135,19 @@ public class GenerateReportController {
         return msgResult;
     }
 
-    @ApiOperation(value="删除用户")
+    @ApiOperation(value = "删除用户")
     @PostMapping("delete/{id}")
-    public MessageResult<GenerateReport> delete(@PathVariable("id") String id,@RequestAttribute String subject){
+    public MessageResult<GenerateReport> delete(@PathVariable("id") String id, @RequestAttribute String subject) {
         MessageResult<GenerateReport> msgResult = new MessageResult<>();
 
         try {
-			
-			GenerateReport generateReport = generateReportService.get(id);
+
+            GenerateReport generateReport = generateReportService.get(id);
             generateReport.setDelFlag(true);
             generateReport.setUpdateBy(subject);
             generateReport.setUpdateTime(new Date());
-			
-			int affectCount = generateReportService.update(generateReport);
+
+            int affectCount = generateReportService.update(generateReport);
 
             if (affectCount > 0) {
                 msgResult.setResult(true);
@@ -147,9 +155,8 @@ public class GenerateReportController {
                 msgResult.setResult(false);
                 msgResult.setMessage("数据库删除失败");
             }
-        }
-        catch(Exception ex){
-            logger.error(ex.getMessage(),ex);
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
 
             msgResult.setResult(false);
             msgResult.setMessage(ex.getMessage());
@@ -159,9 +166,9 @@ public class GenerateReportController {
     }
 
 
-    @ApiOperation(value="批量删除")
+    @ApiOperation(value = "批量删除")
     @PostMapping("batchDelete")
-    public MessageResult<Integer> batchDelete(@RequestBody List<String> idList,@RequestAttribute String subject){
+    public MessageResult<Integer> batchDelete(@RequestBody List<String> idList, @RequestAttribute String subject) {
         MessageResult<Integer> msgResult = new MessageResult<>();
 
         try {
@@ -183,9 +190,8 @@ public class GenerateReportController {
                 msgResult.setResult(false);
                 msgResult.setMessage("删除失败");
             }
-        }
-        catch(Exception ex){
-            logger.error(ex.getMessage(),ex);
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
 
             msgResult.setResult(false);
             msgResult.setMessage(ex.getMessage());
@@ -194,48 +200,144 @@ public class GenerateReportController {
         return msgResult;
     }
 
-    @ApiOperation(value="列表")
-    @RequestMapping(value = "pageList",method = RequestMethod.POST)
-    public MessageResult<Map> pageList(
+    @ApiOperation(value = "列表")
+    @RequestMapping(value = "pageList", method = RequestMethod.POST)
+    public MessageResult<Object> pageList(
             String dateRange,
-            @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
-            @RequestParam(value="pageSize",defaultValue="20") int pageSize,
-            HttpServletRequest request){
-        String subject = (String)request.getAttribute("subject");
+            @RequestParam(value = "pageIndex", defaultValue = "1") int pageIndex,
+            @RequestParam(value = "pageSize", defaultValue = "20") int pageSize,
+            @RequestParam(value = "exportFlag", defaultValue = "false") Boolean exportFlag,
+            HttpServletRequest request) {
+        String subject = (String) request.getAttribute("subject");
 
         //当前用户ID
         System.out.println(subject);
 
-        MessageResult<Map> msgResult = new MessageResult<>();
+        MessageResult<Object> msgResult = new MessageResult<>();
 
-        Map<String,Object> searchParams = new HashMap<>();
+        try{
+            Map<String, Object> searchParams = new HashMap<>();
 
-        List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("create_time","desc"));
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("create_time", "desc"));
 
-        if (StringUtils.isNotEmpty(dateRange)) {
-            String[] date = dateRange.split(",");
-            String startTime = date[0] + " 00:00:00";
-            String endTime = date[1] + " 23:59:59";
-            searchParams.put("startTime", startTime);
-            searchParams.put("endTime", endTime);
-        }
+            if (StringUtils.isNotEmpty(dateRange)) {
+                String[] date = dateRange.split(",");
+                String startTime = date[0] + " 00:00:00";
+                String endTime = date[1] + " 23:59:59";
+                searchParams.put("startTime", startTime);
+                searchParams.put("endTime", endTime);
+            }
 
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            Page<GenerateReport> page = generateReportService.pageSearch(searchParams, pageIndex, pageSize, true, sortList);
+
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+            List<Map> mapList = new ArrayList<>();
+
+            for (GenerateReport generateReport : page) {
+                Map map = new HashMap();
+                if (generateReport.getDate() != null) {
+                    String dateStr = sdf.format(generateReport.getDate());
+                    generateReport.setDateStr(dateStr);
+                }
+
+                map.put("dateStr", generateReport.getDateStr());
+                map.put("loginNum", generateReport.getLoginNum());
+                map.put("totalLoginNum", generateReport.getTotalLoginNum());
+                map.put("personNum", generateReport.getPersonNum());
+                map.put("totalPersonNum", generateReport.getTotalPersonNum());
+                map.put("totalJobInformation", generateReport.getTotalJobInformation());
+                map.put("dailyPersonRegNum", generateReport.getDailyPersonRegNum());
+                map.put("totalPersonRegNum", generateReport.getTotalPersonRegNum());
+                map.put("enterpriseNum", generateReport.getEnterpriseNum());
+                map.put("totalEnterpriseNum", generateReport.getTotalEnterpriseNum());
+                map.put("recruitNum", generateReport.getRecruitNum());
+                map.put("totalRecruitNum", generateReport.getTotalRecruitNum());
+                map.put("totalRecruitStatusNum", generateReport.getTotalRecruitStatusNum());
+                map.put("jobInformationNum", generateReport.getJobInformationNum());
+                map.put("jobRequirementNum", generateReport.getJobRequirementNum());
+                map.put("totalJobRequirementNum", generateReport.getTotalJobRequirementNum());
+
+                mapList.add(map);
+            }
 
-        Page<GenerateReport> page = generateReportService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
 
-        for (GenerateReport generateReport:page) {
-            if(generateReport.getDate()!=null){
-                String dateStr = sdf.format(generateReport.getDate());
-                generateReport.setDateStr(dateStr);
+            if (exportFlag) {
+                String filePath = exportXls(mapList);
+                msgResult.setData(filePath);
+            } else {
+                Map<String, Object> dataMap = new HashMap<>();
+                dataMap.put("data", mapList);
+                msgResult.setData(dataMap);
             }
-        }
 
+            msgResult.setResult(true);
 
-        msgResult.setResult(true);
-        msgResult.setData(PojoUtils.pageWrapper(page));
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
+            msgResult.setResult(false);
+        }
 
         return msgResult;
     }
+
+
+    private String exportXls(List<Map> mapList) {
+        String downloadUrl = "";
+
+        Workbook workbook = new HSSFWorkbook();
+        Sheet sheet = workbook.createSheet();
+
+        //表头
+        Row rowTitle = sheet.createRow(0);
+
+        String[] titles = new String[]{"序号", "日期", "新增登录人数", "累计登录人数", "今日注册人数", "累计注册人数", "新增求职登记人数", "累计求职登记人数", "累计简历数",
+                "新增线上认证企业数量", "累计认证企业数量", "新增岗位发布数量", "实时发布岗位数", "累计发布岗位数", "岗位需求人数", "累计岗位需求人数", "今日报名人数"};
+
+        for (int i = 0; i < titles.length; i++) {
+            Cell cell = rowTitle.createCell(i);
+            cell.setCellValue(titles[i]);
+        }
+
+        for (int i = 0; i < mapList.size(); i++) {
+            Map<String, Object> map = mapList.get(i);
+
+            Row row = sheet.createRow(i + 1);
+
+            int colIndex = 0;
+            row.createCell(colIndex++).setCellValue(i + 1);
+            row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("dateStr"), ""));
+            row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("loginNum"), ""));
+            row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("totalLoginNum"), ""));
+            row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("dailyPersonRegNum"), ""));
+            row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("totalPersonRegNum"), ""));
+            row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("personNum"), ""));
+            row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("totalPersonNum"), ""));
+            row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("totalJobInformation"), ""));
+            row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("enterpriseNum"), ""));
+            row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("totalEnterpriseNum"), ""));
+            row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("recruitNum"), ""));
+            row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("totalRecruitNum"), ""));
+            row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("totalRecruitStatusNum"), ""));
+            row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("jobRequirementNum"), ""));
+            row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("totalJobRequirementNum"), ""));
+            row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("jobInformationNum"), ""));
+        }
+
+        ByteArrayOutputStream output = new ByteArrayOutputStream();
+
+        try {
+            workbook.write(output);
+
+            byte[] buffer = output.toByteArray();
+            ByteArrayInputStream input = new ByteArrayInputStream(buffer);
+
+            downloadUrl = OSSUtil.upload(ossConfig, "generateReportList", "历史统计日报表.xls", input);
+        } catch (Exception ex) {
+            logger.error(ex.getMessage(), ex);
+        }
+
+        return downloadUrl;
+    }
 }