|
@@ -1,19 +1,39 @@
|
|
|
package com.keao.edu.user.controller;
|
|
|
|
|
|
|
|
|
+import com.keao.edu.auth.api.entity.SysUser;
|
|
|
import com.keao.edu.common.controller.BaseController;
|
|
|
import com.keao.edu.common.entity.HttpResponseResult;
|
|
|
+import com.keao.edu.common.exception.BizException;
|
|
|
import com.keao.edu.common.page.PageInfo;
|
|
|
import com.keao.edu.common.tenant.OrganContextHolder;
|
|
|
import com.keao.edu.common.tenant.TenantContextHolder;
|
|
|
+import com.keao.edu.user.dao.SubjectDao;
|
|
|
+import com.keao.edu.user.entity.Subject;
|
|
|
import com.keao.edu.user.entity.Teacher;
|
|
|
+import com.keao.edu.user.enums.TeacherSettlementTypeEnum;
|
|
|
import com.keao.edu.user.page.TeacherQueryInfo;
|
|
|
import com.keao.edu.user.service.TeacherService;
|
|
|
+import com.keao.edu.util.collection.MapUtil;
|
|
|
+import com.keao.edu.util.date.DateUtil;
|
|
|
+import com.keao.edu.util.excel.POIUtil;
|
|
|
+import com.keao.edu.util.iniFile.IniFileEntity;
|
|
|
+import com.keao.edu.util.iniFile.IniFileUtil;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
+import org.springframework.util.ResourceUtils;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.File;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.OutputStream;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* 系统配置控制层
|
|
@@ -23,48 +43,167 @@ import org.springframework.web.bind.annotation.*;
|
|
|
@RequestMapping(value = "teacher")
|
|
|
public class TeacherController extends BaseController {
|
|
|
|
|
|
- @Autowired
|
|
|
- private TeacherService teacherService;
|
|
|
+ @Autowired
|
|
|
+ private TeacherService teacherService;
|
|
|
+ @Autowired
|
|
|
+ private SubjectDao subjectDao;
|
|
|
|
|
|
- @ApiOperation(value = "教师列表")
|
|
|
- @GetMapping(value = "list")
|
|
|
+ @ApiOperation(value = "教师列表")
|
|
|
+ @GetMapping(value = "list")
|
|
|
@PreAuthorize("@pcs.hasPermissions('teacher/list')")
|
|
|
- public HttpResponseResult<PageInfo<Teacher>> list(TeacherQueryInfo queryInfo) {
|
|
|
+ public HttpResponseResult<PageInfo<Teacher>> list(TeacherQueryInfo queryInfo) {
|
|
|
/*if(queryInfo.getOrganId() != null){
|
|
|
queryInfo.setOrganIds(organizationService.getChildOrganIds(queryInfo.getOrganId(),true));
|
|
|
}*/
|
|
|
- return succeed(teacherService.queryTeacherPage(queryInfo));
|
|
|
- }
|
|
|
+ return succeed(teacherService.queryTeacherPage(queryInfo));
|
|
|
+ }
|
|
|
|
|
|
- @ApiOperation(value = "修改教师")
|
|
|
- @PostMapping(value = "update")
|
|
|
+ @ApiOperation(value = "修改教师")
|
|
|
+ @PostMapping(value = "update")
|
|
|
@PreAuthorize("@pcs.hasPermissions('teacher/update')")
|
|
|
- public HttpResponseResult update(@RequestBody Teacher teacher) {
|
|
|
- teacherService.updateTeacher(teacher);
|
|
|
- return succeed();
|
|
|
- }
|
|
|
+ public HttpResponseResult update(@RequestBody Teacher teacher) {
|
|
|
+ teacherService.updateTeacher(teacher);
|
|
|
+ return succeed();
|
|
|
+ }
|
|
|
|
|
|
- @ApiOperation(value = "新增教师")
|
|
|
- @PostMapping(value = "add")
|
|
|
+ @ApiOperation(value = "新增教师")
|
|
|
+ @PostMapping(value = "add")
|
|
|
@PreAuthorize("@pcs.hasPermissions('teacher/add')")
|
|
|
- public HttpResponseResult add(@RequestBody Teacher teacher) {
|
|
|
- teacher.setTenantId(TenantContextHolder.getTenantId());
|
|
|
- teacher.setOrganId(OrganContextHolder.getOrganId());
|
|
|
- return succeed(teacherService.add(teacher));
|
|
|
- }
|
|
|
-
|
|
|
- @ApiOperation(value = "查询教师")
|
|
|
- @GetMapping(value = "get")
|
|
|
+ public HttpResponseResult add(@RequestBody Teacher teacher) {
|
|
|
+ teacher.setTenantId(TenantContextHolder.getTenantId());
|
|
|
+ teacher.setOrganId(OrganContextHolder.getOrganId());
|
|
|
+ return succeed(teacherService.add(teacher));
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "查询教师")
|
|
|
+ @GetMapping(value = "get")
|
|
|
@PreAuthorize("@pcs.hasPermissions('teacher/get')")
|
|
|
- public HttpResponseResult<Teacher> get(Integer id) {
|
|
|
- return succeed(teacherService.get(id));
|
|
|
- }
|
|
|
+ public HttpResponseResult<Teacher> get(Integer id) {
|
|
|
+ return succeed(teacherService.get(id));
|
|
|
+ }
|
|
|
|
|
|
- @ApiOperation(value = "删除教师")
|
|
|
- @PostMapping(value = "del")
|
|
|
+ @ApiOperation(value = "删除教师")
|
|
|
+ @PostMapping(value = "del")
|
|
|
@PreAuthorize("@pcs.hasPermissions('teacher/del')")
|
|
|
- public HttpResponseResult del(Integer id) {
|
|
|
- teacherService.del(id);
|
|
|
- return succeed();
|
|
|
- }
|
|
|
+ public HttpResponseResult del(Integer id) {
|
|
|
+ teacherService.del(id);
|
|
|
+ return succeed();
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "导入老师")
|
|
|
+ @PostMapping(value = "importTeacher")
|
|
|
+ @PreAuthorize("@pcs.hasPermissions('teacher/importTeacher')")
|
|
|
+ public HttpResponseResult<List<Teacher>> importTeacher(@RequestParam("file") MultipartFile file) throws IOException {
|
|
|
+ String tenantId = TenantContextHolder.getTenantId();
|
|
|
+ Integer organId = OrganContextHolder.getOrganId();
|
|
|
+
|
|
|
+ Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(file.getInputStream(), 2, file.getOriginalFilename());
|
|
|
+
|
|
|
+ File columnFile = ResourceUtils.getFile("classpath:" + "columnMapper.ini");
|
|
|
+ List<IniFileEntity> columns = IniFileUtil.readIniFile(columnFile).get("teacher");
|
|
|
+ List<Subject> subSubjects = subjectDao.findSubSubjects();
|
|
|
+ List<Teacher> teachers = new ArrayList<>();
|
|
|
+ sheetsListMap.keySet().forEach(e -> {
|
|
|
+ List<Map<String, Object>> sheet = sheetsListMap.get(e);
|
|
|
+ for (Map<String, Object> row : sheet) {
|
|
|
+ SysUser user = new SysUser();
|
|
|
+ Map<String, Object> objectMap = new HashMap<>();
|
|
|
+
|
|
|
+ for (String s : row.keySet()) {
|
|
|
+ for (IniFileEntity column : columns) {
|
|
|
+ if (!s.equals(column.getKey())) continue;
|
|
|
+ objectMap.put(column.getValue(), row.get(s));
|
|
|
+
|
|
|
+ if (column.getValue().equals("phone")) {
|
|
|
+ user.setPhone(row.get(s).toString());
|
|
|
+ }
|
|
|
+ if (column.getValue().equals("realName")) {
|
|
|
+ user.setRealName(row.get(s).toString());
|
|
|
+ }
|
|
|
+ if (column.getValue().equals("salary")) {
|
|
|
+ objectMap.put("salary", new BigDecimal(row.get(s).toString()));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (column.getValue().equals("subjectIdList")) {
|
|
|
+ if (row.get(s) == null) {
|
|
|
+ throw new BizException("专业不能为空");
|
|
|
+ }
|
|
|
+ String[] subjects = row.get(s).toString().split(",");
|
|
|
+ String subjectIds = "";
|
|
|
+ for (String subject : subjects) {
|
|
|
+ boolean has = false;
|
|
|
+ for (Subject subSubject : subSubjects) {
|
|
|
+ if (subject.equals(subSubject.getName())) {
|
|
|
+ has = true;
|
|
|
+ subjectIds = subjectIds + "," + subSubject.getId();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!has) {
|
|
|
+ throw new BizException(subject + "专业不存在,请核查");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ objectMap.put("subjectIdList", subjectIds.substring(1, subjectIds.length() - 1));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (column.getValue().equals("salarySettlementType")) {
|
|
|
+ for (TeacherSettlementTypeEnum settlementType : TeacherSettlementTypeEnum.values()) {
|
|
|
+ if (settlementType.getMsg().equals(row.get(s).toString())) {
|
|
|
+ objectMap.put("salarySettlementType", settlementType);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ Teacher teacher = MapUtil.mapToJavaBean(Teacher.class, objectMap);
|
|
|
+ teacher.setSysUser(user);
|
|
|
+ teacher.setTenantId(tenantId);
|
|
|
+ teacher.setOrganId(organId);
|
|
|
+ teacherService.add(teacher);
|
|
|
+ teachers.add(teacher);
|
|
|
+ } catch (Exception ex) {
|
|
|
+ ex.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ return succeed(teachers);
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "获取导入模板")
|
|
|
+ @GetMapping(value = "getImportTemplate")
|
|
|
+ @PreAuthorize("@pcs.hasPermissions('teacher/getImportTemplate')")
|
|
|
+ public void getImportTemplate(HttpServletResponse response) throws IOException {
|
|
|
+ File file = ResourceUtils.getFile("classpath:" + "columnMapper.ini");
|
|
|
+ Map<String, List<IniFileEntity>> stringListMap = IniFileUtil.readIniFile(file);
|
|
|
+ List<IniFileEntity> columns = stringListMap.get("teacher");
|
|
|
+
|
|
|
+ OutputStream outputStream = response.getOutputStream();
|
|
|
+ try {
|
|
|
+ String[] header = columns.stream().map(IniFileEntity::getKey).toArray(String[]::new);
|
|
|
+
|
|
|
+ List<Teacher> teachers = new ArrayList<>();
|
|
|
+
|
|
|
+ HSSFWorkbook workbook = POIUtil.exportExcel(header, null, teachers);
|
|
|
+ response.setContentType("application/octet-stream");
|
|
|
+ response.setHeader("Content-Disposition", "attachment;filename=teacher-" + DateUtil.getDate(new Date()) + ".xls");
|
|
|
+ response.flushBuffer();
|
|
|
+ outputStream = response.getOutputStream();
|
|
|
+ workbook.write(outputStream);
|
|
|
+ outputStream.flush();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ if (outputStream != null) {
|
|
|
+ try {
|
|
|
+ outputStream.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|