cuidi пре 1 година
родитељ
комит
25ded5b94c

+ 28 - 1
controller/src/main/java/com/koobietech/eas/controller/EasArcTlsAttendanceController.java

@@ -9,8 +9,11 @@ import com.koobietech.eas.mbg.model.EasEduClassroom;
 import com.koobietech.eas.service.EasArcTlsAttendanceService;
 import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import java.io.IOException;
+import java.io.InputStream;
 
 @RestController
 @RequestMapping("/attendance")
@@ -43,7 +46,7 @@ public class EasArcTlsAttendanceController {
         if (isExist) {
             System.out.println("!!!!!已经存在,转到更新方法");
             return update(attendance);
-        }else{
+        } else {
             System.out.println("!!!!!不存在,正在执行添加方法");
             boolean isAdded = easArcTlsAttendanceService.add(attendance);
             if (isAdded) {
@@ -74,4 +77,28 @@ public class EasArcTlsAttendanceController {
         }
         return JsonResult.fail("更新签到记录失败");
     }
+
+    @PostMapping(value = "/importExcelAttendance")
+    @Operation(summary = "Excel导入学生考勤信息",description = "用于Excel导入学生考勤信息")
+    public JsonResult importExcelAttendance(MultipartFile excelFile) {
+        InputStream inputStream = null;
+        Boolean aBoolean;
+        try {
+            inputStream = excelFile.getInputStream();
+            aBoolean = easArcTlsAttendanceService.importExcelAttendance(inputStream);
+        } catch (IOException e) {
+            aBoolean = false;
+        } finally {
+            try {
+                inputStream.close();
+            } catch (IOException e) {
+
+            }
+        }
+        if (aBoolean == true) {
+            return JsonResult.ok();
+        }
+        return JsonResult.fail();
+
+    }
 }

+ 1 - 1
controller/src/main/resources/application-local.yaml

@@ -1,5 +1,5 @@
 server:
-  port: 8080
+  port: 8081
 spring:
   datasource:
     url: jdbc:mysql://127.0.0.1:3306/eas?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=true&tinyInt1isBit=false

+ 3 - 0
service/src/main/java/com/koobietech/eas/service/EasArcTlsAttendanceService.java

@@ -3,6 +3,7 @@ package com.koobietech.eas.service;
 import com.koobietech.eas.common.result.PageData;
 import com.koobietech.eas.mbg.model.EasArcTlsAttendance;
 
+import java.io.InputStream;
 import java.util.List;
 
 public interface EasArcTlsAttendanceService {
@@ -17,4 +18,6 @@ public interface EasArcTlsAttendanceService {
     boolean isExist(EasArcTlsAttendance attendance);
 
     List<EasArcTlsAttendance> getStudentList(Long scheduleId);
+
+    Boolean importExcelAttendance(InputStream inputStream);
 }

+ 41 - 7
service/src/main/java/com/koobietech/eas/service/impl/EasArcTlsAttendanceServiceImpl.java

@@ -1,7 +1,9 @@
 package com.koobietech.eas.service.impl;
 
 import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.ExcelImportUtil;
 import cn.afterturn.easypoi.excel.entity.ExportParams;
+import cn.afterturn.easypoi.excel.entity.ImportParams;
 import cn.hutool.core.bean.BeanUtil;
 import com.koobietech.eas.common.constant.FileType;
 import com.koobietech.eas.common.exception.EasException;
@@ -19,6 +21,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
 import java.time.LocalDate;
 import java.time.ZoneOffset;
 import java.util.*;
@@ -179,7 +183,37 @@ public class EasArcTlsAttendanceServiceImpl implements EasArcTlsAttendanceServic
                 .collect(Collectors.toList());
     }
 
-    public boolean saveStudentAttendanceArchive(EasArcTlsAttendance attendance){
+    @Override
+    public Boolean importExcelAttendance(InputStream inputStream) {
+        ImportParams importParams = new ImportParams();
+        importParams.setTitleRows(1);
+        importParams.setHeadRows(1);
+        try {
+            List<EasArcTlsAttendancePojo> attendance = ExcelImportUtil.importExcel(inputStream,
+                    EasArcTlsAttendancePojo.class, importParams);
+            for (EasArcTlsAttendancePojo attendancePojo : attendance) {
+                attendancePojo.setCreateTime(new Date());
+                EasArcTlsAttendance easArcTlsAttendance = new EasArcTlsAttendance();
+                BeanUtil.copyProperties(attendancePojo, easArcTlsAttendance);
+                easArcTlsAttendanceMapper.insert(easArcTlsAttendance);
+                saveStudentAttendanceArchive(easArcTlsAttendance);
+            }
+        } catch (FileNotFoundException e) {
+            throw new EasException(e.getMessage());
+        } catch (Exception e) {
+            throw new EasException(e.getMessage());
+        } finally {
+            try {
+                if (inputStream != null) {
+                    inputStream.close();
+                }
+            } catch (Exception e) {
+            }
+        }
+        return true;
+    }
+
+    public boolean saveStudentAttendanceArchive(EasArcTlsAttendance attendance) {
         EasArcTlsAttendanceExample easArcTlsAttendanceExample = new EasArcTlsAttendanceExample();
         EasArcTlsAttendanceExample.Criteria criteria = easArcTlsAttendanceExample.createCriteria();
         criteria.andStudentNumberEqualTo(attendance.getStudentNumber());
@@ -191,24 +225,24 @@ public class EasArcTlsAttendanceServiceImpl implements EasArcTlsAttendanceServic
         easArcArchives.setArchiveNumber(archivesDto.getArchiveCode());
         easArcArchives.setFilePath(archivesDto.getPath());
         easArcArchives.setCreateTime(new Date());
-        easArcArchives.setCreateUid( SecurityUtils.getLoginUid().intValue() );
+        easArcArchives.setCreateUid(SecurityUtils.getLoginUid().intValue());
         easArcArchives.setModifyTime(new Date());
         easArcArchives.setArctype(FileType.XLSX.name());
-        easArcArchives.setManagerId( SecurityUtils.getLoginUid().intValue() );
-        easArcArchives.setValidityTime( new Date(LocalDate.now().plusMonths(20)
-                .atStartOfDay().toInstant(ZoneOffset.UTC).toEpochMilli()) );
+        easArcArchives.setManagerId(SecurityUtils.getLoginUid().intValue());
+        easArcArchives.setValidityTime(new Date(LocalDate.now().plusMonths(20)
+                .atStartOfDay().toInstant(ZoneOffset.UTC).toEpochMilli()));
         int insert = arcArchivesMapper.insert(easArcArchives);
         return insert == 1;
     }
 
     private ArchivesDto saveEasArcTlsAttendanceToExcel(List<EasArcTlsAttendance> easArcTlsAttendances, String studentNumber) {
         List<EasArcTlsAttendancePojo> arcTlsAttendanceList = new ArrayList<>();
-        for (EasArcTlsAttendance tlsAttendance: easArcTlsAttendances) {
+        for (EasArcTlsAttendance tlsAttendance : easArcTlsAttendances) {
             EasArcTlsAttendancePojo easArcTlsAttendancePojo = new EasArcTlsAttendancePojo();
             BeanUtil.copyProperties(tlsAttendance, easArcTlsAttendancePojo);
             arcTlsAttendanceList.add(easArcTlsAttendancePojo);
         }
-        ExportParams params   = new ExportParams("学员签到表", "签到");
+        ExportParams params = new ExportParams("学员签到表", "签到");
         Workbook workbook = ExcelExportUtil.exportExcel(params,
                 EasArcTlsScoresPojo.class, arcTlsAttendanceList);
         ArchivesDto archivesDto = easArchivesFilesService.saveArchiveFile(studentNumber, workbook);