Quellcode durchsuchen

扫描统计管理-导出

haogh vor 11 Monaten
Ursprung
Commit
9b63640a05

+ 69 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/ScanStatExportResult.java

@@ -0,0 +1,69 @@
+package com.qmth.paper.library.business.bean.result;
+
+import com.qmth.boot.tools.excel.annotation.ExcelColumn;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description 扫描统计导出
+ */
+public class ScanStatExportResult implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ExcelColumn(name = "扫描员", index = 0)
+    private String scanner;
+
+    @ExcelColumn(name = "扫描图片(张)", index = 1)
+    private int pictureCount;
+
+    @ExcelColumn(name = "扫描学生数", index = 2)
+    private int studentCount;
+
+    @ExcelColumn(name = "扫描日期", index = 3)
+    private String scanDateStr;
+
+    @ApiModelProperty(value = "操作员ID")
+    private Long createId;
+
+    public String getScanner() {
+        return scanner;
+    }
+
+    public void setScanner(String scanner) {
+        this.scanner = scanner;
+    }
+
+    public int getPictureCount() {
+        return pictureCount;
+    }
+
+    public void setPictureCount(int pictureCount) {
+        this.pictureCount = pictureCount;
+    }
+
+    public int getStudentCount() {
+        return studentCount;
+    }
+
+    public void setStudentCount(int studentCount) {
+        this.studentCount = studentCount;
+    }
+
+    public String getScanDateStr() {
+        return scanDateStr;
+    }
+
+    public void setScanDateStr(String scanDateStr) {
+        this.scanDateStr = scanDateStr;
+    }
+
+    public Long getCreateId() {
+        return createId;
+    }
+
+    public void setCreateId(Long createId) {
+        this.createId = createId;
+    }
+}

+ 3 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperLibraryMapper.java

@@ -3,6 +3,7 @@ package com.qmth.paper.library.business.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.paper.library.business.bean.result.ScanStatExportResult;
 import com.qmth.paper.library.business.bean.result.ScanStatResult;
 import com.qmth.paper.library.business.bean.result.TaskStudentResult;
 import com.qmth.paper.library.business.entity.PaperLibrary;
@@ -29,4 +30,6 @@ public interface PaperLibraryMapper extends BaseMapper<PaperLibrary> {
     IPage<ScanStatResult> listScanStat(@Param("page") Page<ScanStatResult> page, @Param("schoolId") Long schoolId, @Param("scanDate") String scanDate, @Param("scanner") String scanner);
 
     int countScanStudentByScannerAndDate(@Param("createId") Long createId, @Param("scanDate") String scanDate);
+
+    List<ScanStatExportResult> listScanStatExport(@Param("schoolId") Long schoolId, @Param("scanDateStr") String scanDateStr, @Param("scanner") String scanner);
 }

+ 5 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperScanStatService.java

@@ -2,13 +2,18 @@ package com.qmth.paper.library.business.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.paper.library.business.bean.result.ScanStatExportResult;
 import com.qmth.paper.library.business.bean.result.ScanStatResult;
 import com.qmth.paper.library.business.entity.PaperLibrary;
 
+import java.util.List;
+
 /**
  * @Description 扫描统计
  */
 public interface PaperScanStatService extends IService<PaperLibrary> {
 
     IPage<ScanStatResult> pageScanStat(Long scanDate, String scanner, Integer pageNumber, Integer pageSize);
+
+    List<ScanStatExportResult> listScanStat(Long scanDate, String scanner);
 }

+ 20 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperScanStatServiceImpl.java

@@ -3,6 +3,7 @@ package com.qmth.paper.library.business.service.impl;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.paper.library.business.bean.result.ScanStatExportResult;
 import com.qmth.paper.library.business.bean.result.ScanStatResult;
 import com.qmth.paper.library.business.entity.PaperLibrary;
 import com.qmth.paper.library.business.mapper.PaperLibraryMapper;
@@ -19,6 +20,7 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.text.ParseException;
 import java.util.Date;
+import java.util.List;
 
 @Service
 public class PaperScanStatServiceImpl extends ServiceImpl<PaperLibraryMapper, PaperLibrary> implements PaperScanStatService {
@@ -46,6 +48,24 @@ public class PaperScanStatServiceImpl extends ServiceImpl<PaperLibraryMapper, Pa
         return scanStatPage;
     }
 
+    @Override
+    public List<ScanStatExportResult> listScanStat(Long scanDate, String scanner) {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        String scanDateStr = null;
+        if(scanDate != null && scanDate > 0) {
+            scanDateStr = DateFormatUtils.format(scanDate, SystemConstant.SHORT_DATE_PATTERN);
+        }
+
+        List<ScanStatExportResult> scanStatList = baseMapper.listScanStatExport(schoolId, scanDateStr, scanner);
+        for(ScanStatExportResult scanStatExportResult : scanStatList) {
+            //设置扫描学生数
+            int studentCount = paperLibraryService.countScanStudentByScannerAndDate(scanStatExportResult.getCreateId(), scanStatExportResult.getScanDateStr());
+            scanStatExportResult.setStudentCount(studentCount);
+        }
+
+        return scanStatList;
+    }
+
     private Long getLongDate(String dateStr) {
         Date date;
         try {

+ 27 - 0
paper-library-business/src/main/resources/mapper/PaperLibraryMapper.xml

@@ -102,4 +102,31 @@
             pl.create_id = #{createId} and  date_format( FROM_UNIXTIME( pl.create_time / 1000 ), '%Y-%m-%d')=#{scanDate}
     </select>
 
+    <select id="listScanStatExport" resultType="com.qmth.paper.library.business.bean.result.ScanStatExportResult">
+        SELECT
+        u.login_name scanner,
+        p.create_id createId,
+        date_format( FROM_UNIXTIME( p.create_time / 1000 ), '%Y-%m-%d' ) scanDateStr,
+        count( 1 ) pictureCount
+        FROM
+        paper_library p,
+        paper_scan_task t,
+        sys_user u
+        WHERE
+        p.paper_scan_task_id = t.id
+        AND u.id = p.create_id
+        AND t.school_id = #{schoolId}
+        <if test="scanDateStr != null and scanDateStr != ''">
+            and  date_format( FROM_UNIXTIME( p.create_time / 1000 ), '%Y-%m-%d')=#{scanDateStr}
+        </if>
+        <if test="scanner != null and scanner != ''">
+            and  u.login_name=#{scanner}
+        </if>
+        GROUP BY
+        u.login_name,
+        p.create_id,
+        date_format( FROM_UNIXTIME( p.create_time / 1000 ), '%Y-%m-%d')
+        order by date_format( FROM_UNIXTIME( p.create_time / 1000 ), '%Y-%m-%d')
+    </select>
+
 </mapper>

+ 29 - 0
paper-library/src/main/java/com/qmth/paper/library/api/PaperScanStatController.java

@@ -1,9 +1,14 @@
 package com.qmth.paper.library.api;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.boot.tools.excel.ExcelWriter;
+import com.qmth.boot.tools.excel.enums.ExcelType;
+import com.qmth.paper.library.business.bean.result.ScanStatExportResult;
 import com.qmth.paper.library.business.service.PaperScanStatService;
 import com.qmth.paper.library.common.contant.ApiPrefixConstant;
 import com.qmth.paper.library.common.contant.SystemConstant;
+import com.qmth.paper.library.common.enums.ExceptionResultEnum;
 import com.qmth.paper.library.common.util.Result;
 import com.qmth.paper.library.common.util.ResultUtil;
 import io.swagger.annotations.*;
@@ -13,8 +18,12 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.List;
 
 /**
  * @Description 扫描统计控制类
@@ -37,4 +46,24 @@ public class PaperScanStatController {
         return ResultUtil.ok(paperScanStatService.pageScanStat(scanDate, scanner, pageNumber, pageSize));
     }
 
+    @ApiOperation(value = "导出")
+    @PostMapping(value = "/export")
+    public void export(@ApiParam(value = "扫描日期") @RequestParam(value = "scanDate", required = false) Long scanDate,
+            @ApiParam(value = "扫描员") @RequestParam(value = "scanner", required = false) String scanner, HttpServletResponse response) {
+        try {
+            String fileName = URLEncoder.encode("扫描统计", "UTF-8");
+            response.setHeader("Content-Disposition", "inline; filename=" + fileName + ".xlsx");
+            response.setContentType("application/vnd.ms-excel");
+            ExcelWriter writer = ExcelWriter.create(ExcelType.XLSX);
+            List<ScanStatExportResult> scanStatList = paperScanStatService.listScanStat(scanDate, scanner);
+            if (CollectionUtils.isEmpty(scanStatList)) {
+                throw ExceptionResultEnum.ERROR.exception("未开始扫描");
+            }
+            writer.writeObjects("扫描统计", null, ScanStatExportResult.class, scanStatList.iterator());
+            writer.output(response.getOutputStream());
+        } catch (IOException e) {
+            throw ExceptionResultEnum.ERROR.exception(e.getMessage());
+        }
+    }
+
 }