فهرست منبع

解耦屎山代码

superb 1 سال پیش
والد
کامیت
43b352e6be

+ 33 - 1
common/src/main/java/com/koobietech/eas/common/constant/Gender.java

@@ -1,5 +1,37 @@
 package com.koobietech.eas.common.constant;
 
 public enum Gender {
-    MALE, FEMALE
+    MALE("男", "M" ), FEMALE("女", "F");
+
+
+
+    private String key;
+
+    private String value;
+
+    public static String getkeyByString(String key){
+        return Gender.FEMALE.getKey().equals(key) ? Gender.FEMALE.getValue() : Gender.MALE.getValue();
+    }
+
+    Gender(String value, String key) {
+        this.key = key;
+        this.value = value;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
 }

+ 6 - 3
controller/src/main/java/com/koobietech/eas/controller/EasStuProfileController.java

@@ -16,9 +16,12 @@ public class EasStuProfileController {
     private EasStuProfileService easStuProfileService;
 
     @PostMapping("/StuProfileDownload")
-    public JsonResult StuProfileDownload(@RequestBody  EasArcTlsStudents easArcTlsStudents,@RequestParam Integer manager_id) throws FileNotFoundException {
-
-        return easStuProfileService.StuProfileDownload(easArcTlsStudents,manager_id);
+    public JsonResult StuProfileDownload(@RequestBody EasArcTlsStudents easArcTlsStudents, @RequestParam Integer manager_id) throws FileNotFoundException {
+        //StuProfileDownload返回值是boolean,这里用JsonResult包装一下 加上if判断
+        if (easStuProfileService.StuProfileDownload(easArcTlsStudents, manager_id)) {
+            return JsonResult.ok("下载成功");
+        }
+        return JsonResult.fail("下载失败");
     }
 
 

+ 1 - 1
service/src/main/java/com/koobietech/eas/service/EasStuProfileService.java

@@ -6,5 +6,5 @@ import com.koobietech.eas.mbg.model.EasArcTlsStudents;
 import java.io.FileNotFoundException;
 
 public interface EasStuProfileService {
-    JsonResult StuProfileDownload(EasArcTlsStudents easArcTlsStudents,Integer manager_id) throws FileNotFoundException;
+    boolean StuProfileDownload(EasArcTlsStudents easArcTlsStudents,Integer manager_id) throws FileNotFoundException;
 }

+ 84 - 88
service/src/main/java/com/koobietech/eas/service/impl/EasStuProfileServiceImpl.java

@@ -1,6 +1,8 @@
 package com.koobietech.eas.service.impl;
 
 import com.koobietech.eas.common.constant.FileType;
+import com.koobietech.eas.common.constant.Gender;
+import com.koobietech.eas.common.exception.EasException;
 import com.koobietech.eas.common.result.JsonResult;
 import com.koobietech.eas.common.utils.DateUtils;
 import com.koobietech.eas.common.utils.StudentArchiveGenerator;
@@ -33,125 +35,127 @@ import java.util.*;
 @Service
 public class EasStuProfileServiceImpl implements EasStuProfileService {
 
-    private static final Logger LOGGER = LoggerFactory.getLogger(EasStuProfileServiceImpl.class);
     private static final String TEMPLATE_PATH = "temp/StuRegistTemp.docx";
     private static final String PHOTO_PATH = "temp/kun.jpeg";
 
     @Resource
     private EasArcTlsStudentsMapper easArcTlsStudentsMapper;
-
     @Resource
     private PasswordEncoder passwordEncoder;
-
     @Resource
     private EasSysStudentMapper easSysStudentMapper;
-
     @Resource
     private EasArcArchivesMapper easArcArchivesMapper;
-
     @Resource
     private EasArchivesFilesService easArchivesFilesService;
-
     @Override
-    public JsonResult StuProfileDownload(EasArcTlsStudents easArcTlsStudents,Integer manager_id) {
-        LOGGER.info("开始学员档案导出:{}", easArcTlsStudents);
+    public boolean StuProfileDownload(EasArcTlsStudents easArcTlsStudents, Integer manager_id) {
 
         try (InputStream wordStream = getClass().getClassLoader().getResourceAsStream(TEMPLATE_PATH)) {
             assert wordStream != null;
             try (XWPFDocument doc = new XWPFDocument(wordStream)) {
-
-                Map<String, Object> map = new HashMap<>();
-                map.put("student_name", easArcTlsStudents.getStudentName());
-
-                //调用内部类方法 把MF转换成 男女
-                map.put("gender", convertToGender(easArcTlsStudents.getGender()));
-
-                map.put("major", easArcTlsStudents.getMajor());
-                map.put("grade", easArcTlsStudents.getGrade());
-
-                //调用自定义的时间格式转换器 把前端传过来的带时分秒时间转换成 2019年12月12日
-                map.put("enrollment_date", DateUtils.convertToYearMonthDay(easArcTlsStudents.getEnrollmentDate()));
-
-                map.put("phone", easArcTlsStudents.getPhone());
-                map.put("university", easArcTlsStudents.getUniversity());
-                map.put("student_idnumber", easArcTlsStudents.getStudentIdnumber());
-                map.put("avatar", getClass().getClassLoader().getResourceAsStream(PHOTO_PATH));
-
                 //调用内部类方法 生成学号
                 String studentNumber = generateStudentNumber(easArcTlsStudents);
-                map.put("student_number", studentNumber);
 
+                Map<String, Object> map = generateDataMap(easArcTlsStudents, studentNumber);
                 replacePlaceholders(doc, map);
                 //saveDocument(doc);
-
                 //将easArcTlsStudents 保存到数据库
-                easArcTlsStudentsMapper.insert(easArcTlsStudents);
-
-                //使用BeanUtils 将easArcTlsStudents 转换成 eassysstudent
-                EasSysStudent easSysStudents = new EasSysStudent();
-                BeanUtils.copyProperties(easArcTlsStudents,easSysStudents);
-                //设置初始密码 使用 passwordEncoder 设置初始密码为123456
-                easSysStudents.setPasswd(passwordEncoder.encode("123456"));
-                easSysStudents.setDisabled("N");
-
-                easSysStudentMapper.insert(easSysStudents);
-
-                //组合成档案对象 保存到数据库
-                /**
-                 CREATE TABLE `eas_arc_archives` (
-            1     `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-            1     `archive_number` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '文件电子档案号',
-            1     `student_number` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '当前电子档案归属那一个学员档案下',
-            1     `file_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '文件存储的路径',
-            1     `arctype` int(11) DEFAULT NULL COMMENT '文件类型Id',
-            1     `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-            1     `modify_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
-            1     `validity_time` datetime DEFAULT NULL COMMENT '档案有效期截至时间',
-            1     `manager_id` int(11) DEFAULT NULL COMMENT '档案归属负责人',
-            ?     `create_date` date DEFAULT NULL COMMENT '档案创建时间, 用于文件归档用',
-            ?     `create_uid` int(11) DEFAULT NULL COMMENT '创建用户ID',
-                 PRIMARY KEY (`id`) USING BTREE
-                 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='文件档案表';
-                 */
+                boolean isTlsStudentsInsert = insertEasArcTlsStudents(easArcTlsStudents);
+                if (!isTlsStudentsInsert) {
+                    throw new EasException("EasArcTlsStudents保存失败", 8000);
+                }
+                boolean isSysStudentsInsert = insertEasSysStudents(easArcTlsStudents);
+                if (!isSysStudentsInsert) {
+                    throw new EasException("EasSysStudents保存失败", 8001);
+                }
+                boolean isEasArcArchives = insertEasArcArchives(easArcTlsStudents, studentNumber, manager_id);
+                if (!isEasArcArchives) {
+                    throw new EasException("EasArcArchives保存失败", 8002);
+                }
+            }
+        } catch (IOException e) {
+            return false;
+        }
+        return true;
+    }
+
+
+    private Map<String, Object> generateDataMap(EasArcTlsStudents easArcTlsStudents, String studentNumber) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("student_name", easArcTlsStudents.getStudentName());
+        map.put("gender", convertToGender(easArcTlsStudents.getGender()));
+        map.put("major", easArcTlsStudents.getMajor());
+        map.put("grade", easArcTlsStudents.getGrade());
+        map.put("enrollment_date", DateUtils.convertToYearMonthDay(easArcTlsStudents.getEnrollmentDate()));
+        map.put("phone", easArcTlsStudents.getPhone());
+        map.put("university", easArcTlsStudents.getUniversity());
+        map.put("student_idnumber", easArcTlsStudents.getStudentIdnumber());
+        map.put("avatar", getClass().getClassLoader().getResourceAsStream(PHOTO_PATH));
+        map.put("student_number", studentNumber);
+        return map;
+    }
+
+    public boolean insertEasArcArchives(EasArcTlsStudents easArcTlsStudents, String studentNumber, Integer managerId) {
+        try (InputStream wordStream = getClass().getClassLoader().getResourceAsStream(TEMPLATE_PATH)) {
+            assert wordStream != null;
+            try (XWPFDocument doc = new XWPFDocument(wordStream)) {
+                // 生成档案号
                 String archiveCode = StudentArchiveGenerator.generateArchiveCode(studentNumber, String.valueOf(FileType.DOCX));
+
+                // 保存学员档案文件
                 ArchivesDto archivesDto = easArchivesFilesService.saveArchiveStudentsFile(easArcTlsStudents.getStudentIdnumber(), doc);
                 String filePath = archivesDto.getPath();
-                String arctype = archivesDto.getFileType();
-                Date creat_time = DateUtils.convertToYearMonthDayToDate(new Date());
-                Date modify_time = new Date();
+                String arcType = archivesDto.getFileType();
 
-                //validity_time 暂且设置成create_date + 1年
+                // 设置时间和有效期
+                Date createTime = DateUtils.convertToYearMonthDayToDate(new Date());
+                Date modifyTime = new Date();
                 Calendar calendar = Calendar.getInstance();
-                calendar.setTime(creat_time);
+                assert createTime != null;
+                calendar.setTime(createTime);
                 calendar.add(Calendar.YEAR, 1);
-                Date create_date = calendar.getTime();
-
-                int create_uid = 0;
+                Date validityTime = calendar.getTime();
 
+                // 创建 EasArcArchives 对象并设置属性
                 EasArcArchives easArcArchives = new EasArcArchives();
                 easArcArchives.setArchiveNumber(archiveCode);
                 easArcArchives.setStudentNumber(studentNumber);
                 easArcArchives.setFilePath(filePath);
-                easArcArchives.setArctype(arctype);
-                easArcArchives.setCreateTime(creat_time);
-                easArcArchives.setModifyTime(modify_time);
-                easArcArchives.setValidityTime(create_date);
-                easArcArchives.setManagerId(manager_id);
-                easArcArchives.setCreateUid(create_uid);
+                easArcArchives.setArctype(arcType);
+                easArcArchives.setCreateTime(createTime);
+                easArcArchives.setModifyTime(modifyTime);
+                easArcArchives.setValidityTime(validityTime);
+                easArcArchives.setManagerId(managerId);
+                easArcArchives.setCreateUid(1);
                 easArcArchives.setCreateDate(new Date());
 
-                easArcArchivesMapper.insert(easArcArchives);
-
-
+                // 插入到数据库
+                int result = easArcArchivesMapper.insert(easArcArchives);
 
+                // 返回是否成功插入数据库
+                return result > 0;
             }
         } catch (IOException e) {
-            LOGGER.error("学员档案导出失败:{}", e.getMessage(), e);
-            return JsonResult.fail("学员档案导出失败!");
+            e.printStackTrace();
+            return false;
         }
+    }
 
-        LOGGER.info("学员档案导出成功!");
-        return JsonResult.ok("学员档案导出成功!");
+
+    private boolean insertEasSysStudents(EasArcTlsStudents easArcTlsStudents) {
+        EasSysStudent easSysStudents = new EasSysStudent();
+        BeanUtils.copyProperties(easArcTlsStudents, easSysStudents);
+        //设置初始密码 使用 passwordEncoder 设置初始密码为123456
+        easSysStudents.setPasswd(passwordEncoder.encode("123456"));
+        easSysStudents.setDisabled("N");
+        easSysStudents.setAvatar("占位图片.jpg");
+        return easSysStudentMapper.insert(easSysStudents) == 1;
+    }
+
+    private boolean insertEasArcTlsStudents(EasArcTlsStudents easArcTlsStudents) {
+        //判断是否插入成功 成功的话返回true 不成功的话返回false
+        return easArcTlsStudentsMapper.insert(easArcTlsStudents) == 1;
     }
 
     private String generateStudentNumber(EasArcTlsStudents easArcTlsStudents) {
@@ -164,13 +168,7 @@ public class EasStuProfileServiceImpl implements EasStuProfileService {
     }
 
     private String convertToGender(String gender) {
-        if (gender.equals("M")) {
-            return "男";
-        } else if (gender.equals("F")) {
-            return "女";
-        } else {
-            return "未知";
-        }
+        return Gender.getkeyByString(gender);
     }
 
     private void replacePlaceholders(XWPFDocument document, Map<String, Object> map) {
@@ -194,7 +192,7 @@ public class EasStuProfileServiceImpl implements EasStuProfileService {
                                     cell.setText(cellText.replace(placeholder, value.toString()));
                                 }
                             } catch (IOException | InvalidFormatException e) {
-                                throw new RuntimeException(e);
+                                throw new EasException(e.getMessage());
                             }
                         }
                     });
@@ -202,6 +200,4 @@ public class EasStuProfileServiceImpl implements EasStuProfileService {
             }
         }
     }
-}
-
-
+}