学生导入

beetlsql3-dev
Mlxa0324 2 years ago
parent 3514a5220a
commit a28aaf7874

@ -57,10 +57,12 @@ public class KeyExpiredListener extends KeyExpirationEventMessageListener {
try {
String messageAsString = new String(message.getBody(), StandardCharsets.UTF_8);
log.info("有用户的token到期{}", messageAsString);
// 用户token到期事件
if (messageAsString.indexOf(TOKEN_KEY) == 0) {
log.info("有用户的token到期{}", messageAsString);
String token = messageAsString.replace(TOKEN_KEY + ":", "");
List<String> audience = JWT.decode(token).getAudience();
Map<String, Claim> claims = JWT.decode(token).getClaims();

@ -0,0 +1,108 @@
package com.ibeetl.jlw.entity.dto;
import com.ibeetl.admin.core.annotation.ExcelRequireIgnore;
import com.ibeetl.admin.core.util.excelGroupValidation.ExcelFile;
import com.ibeetl.jlw.entity.Student;
import com.ibeetl.jlw.enums.GenderEnum;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.FieldNameConstants;
import java.util.Date;
import java.util.function.Function;
import static cn.hutool.core.util.ObjectUtil.defaultIfNull;
/**
* : <br>
* ,
*
*
* @Author: lx
* @Date: 2023/2/5 23:50
*/
@Data
@FieldNameConstants
@ToString
@ExcelFile(fileHeadTemplate = "universitiesCollegesName|universityFacultyName|universitySystemName|classId|studentName|studentSn|studentMobile|studentEmail",
fileMappingTemplate = "universitiesCollegesName=院校名称|universityFacultyName=院系名称|universitySystemName=专业名称|classId=班级名称|studentName=学生姓名|studentSn=学号|studentMobile=电话|studentEmail=邮箱",
datasheetHidden = true, enableDataValidation = true)
public class StudentBatchImportAdminDTO {
/**
* @ExcelRequireIgnore
*/
@ExcelRequireIgnore
private String universitiesCollegesName ;
/**
*
*/
// @ExcelValidation(datasourceMethod = "com.ibeetl.jlw.service.SchoolClassService.getAllSchoolClassWithOrgId")
private String universityFacultyName ;
/**
*
*/
// @ExcelValidation(datasourceMethod = "com.ibeetl.jlw.service.SchoolClassService.getAllSchoolClassWithOrgId")
private String universitySystemName ;
/**
*
*/
// @ExcelValidation(datasourceMethod = "com.ibeetl.jlw.service.SchoolClassService.getAllSchoolClassWithOrgId")
private String classId ;
/**
*
*/
private String studentName ;
/**
*
*/
private String studentSn ;
/**
*
*/
private String studentMobile ;
/**
*
*/
@ExcelRequireIgnore
private String studentEmail ;
/**
*
*
* @param importPojo
* @param function
* @return
*/
public static Student pojo(StudentBatchImportAdminDTO importPojo, Function<String, Long> classIdFunction, Function<Student, Student> function) {
Student build = Student.builder()
// .classId(longValuesOf(importPojo.getClassId()))
.classId(classIdFunction.apply(importPojo.getClassId()))
.studentName(importPojo.getStudentName())
.studentSn(importPojo.getStudentSn())
.studentMobile(importPojo.getStudentMobile())
.studentEmail(importPojo.getStudentEmail())
.studentStatus(1)
.studentGender(GenderEnum.UN_KNOW)
.studentPassword("123qwe")
.addTime(new Date())
.codeFrom("导入")
.build();
return function.apply(build);
}
/**
*
*
* @param importPojo
* @return
*/
public static Student pojo(StudentBatchImportAdminDTO importPojo) {
return pojo(importPojo, o -> Long.valueOf(defaultIfNull(o, "-1")), e -> e);
}
}

@ -16,6 +16,7 @@ import static cn.hutool.core.util.ObjectUtil.defaultIfNull;
/**
* : <br>
* ,
*
*
* @Author: lx
* @Date: 2023/2/5 23:50
@ -23,11 +24,21 @@ import static cn.hutool.core.util.ObjectUtil.defaultIfNull;
@Data
@FieldNameConstants
@ToString
@ExcelFile(fileHeadTemplate = "classId|studentName|studentSn|studentMobile|studentEmail",
fileMappingTemplate = "classId=班级名称|studentName=学生姓名|studentSn=学号|studentMobile=电话|studentEmail=邮箱",
@ExcelFile(fileHeadTemplate = "universityFacultyName|universitySystemName|classId|studentName|studentSn|studentMobile|studentEmail",
fileMappingTemplate = "universityFacultyName=院系名称|universitySystemName=专业名称|classId=班级名称|studentName=学生姓名|studentSn=学号|studentMobile=电话|studentEmail=邮箱",
datasheetHidden = true, enableDataValidation = true)
public class StudentBatchImportDTO {
public class StudentBatchImportUniAdminDTO {
/**
*
*/
// @ExcelValidation(datasourceMethod = "com.ibeetl.jlw.service.SchoolClassService.getAllSchoolClassWithOrgId")
private String universityFacultyName ;
/**
*
*/
// @ExcelValidation(datasourceMethod = "com.ibeetl.jlw.service.SchoolClassService.getAllSchoolClassWithOrgId")
private String universitySystemName ;
/**
*
*/
@ -60,7 +71,7 @@ public class StudentBatchImportDTO {
* @param function
* @return
*/
public static Student pojo(StudentBatchImportDTO importPojo, Function<String, Long> classIdFunction, Function<Student, Student> function) {
public static Student pojo(StudentBatchImportUniAdminDTO importPojo, Function<String, Long> classIdFunction, Function<Student, Student> function) {
Student build = Student.builder()
// .classId(longValuesOf(importPojo.getClassId()))
.classId(classIdFunction.apply(importPojo.getClassId()))
@ -84,7 +95,7 @@ public class StudentBatchImportDTO {
* @param importPojo
* @return
*/
public static Student pojo(StudentBatchImportDTO importPojo) {
public static Student pojo(StudentBatchImportUniAdminDTO importPojo) {
return pojo(importPojo, o -> Long.valueOf(defaultIfNull(o, "-1")), e -> e);
}

@ -1,6 +1,5 @@
package com.ibeetl.jlw.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.RandomUtil;
@ -10,18 +9,22 @@ import com.ibeetl.admin.core.service.CoreBaseService;
import com.ibeetl.admin.core.util.PlatformException;
import com.ibeetl.jlw.dao.SchoolClassDao;
import com.ibeetl.jlw.entity.SchoolClass;
import com.ibeetl.jlw.entity.UniversitiesColleges;
import com.ibeetl.jlw.web.query.SchoolClassQuery;
import org.beetl.sql.core.SqlId;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.query.interfacer.StrongValue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import static cn.hutool.core.collection.CollUtil.getFirst;
import static cn.hutool.core.util.ObjectUtil.defaultIfBlank;
import static com.ibeetl.admin.core.util.ListUtils.getDuplicateElements;
@ -35,6 +38,9 @@ import static com.ibeetl.admin.core.util.ListUtils.getDuplicateElements;
public class SchoolClassService extends CoreBaseService<SchoolClass>{
@Autowired private SchoolClassDao schoolClassDao;
@Autowired
@Lazy
private UniversitiesCollegesService universitiesCollegesService;
public PageQuery<SchoolClass>queryByCondition(PageQuery query){
PageQuery ret = schoolClassDao.queryByCondition(query);
@ -131,4 +137,77 @@ public class SchoolClassService extends CoreBaseService<SchoolClass>{
return SpringUtil.getBean(SchoolClassDao.class).getAllSchoolClass(null);
}
public SchoolClass getByName(String name, Long orgId) {
SchoolClassQuery query = new SchoolClassQuery();
query.setClassStatus(1);
query.setClassName(name.trim());
if (orgId != null) {
query.setOrgId(orgId);
}
return getFirst(getValuesByQueryNotWithPermission(query));
}
public SchoolClass getByName (String name){
return getByName(name, null);
}
/**
*
* @param name
* @param orgId
* @return
*/
public SchoolClass getByNameOrCreate(String name, Long orgId, Long userId, Long universityFacultyId, Long universitySystemId) {
SchoolClass schoolClass = getByName(name, orgId);
if (schoolClass != null) {
return schoolClass;
}
// 根据机构ID查找是否已经创建过的班级直接取之前的部分数据作为插入的数据
SchoolClassQuery schoolClassQuery = new SchoolClassQuery();
schoolClassQuery.setOrgId(orgId);
SchoolClass anyOne = getFirst(getValuesByQueryNotWithPermission(schoolClassQuery));
// 根据名字未查询到数据的话,就插入院系表
if (anyOne != null) {
SchoolClass insertSchoolClass = new SchoolClass();
insertSchoolClass.setUniversitiesCollegesId(anyOne.getUniversitiesCollegesId());
insertSchoolClass.setUniversityFacultyId(anyOne.getUniversityFacultyId());
insertSchoolClass.setUniversitySystemId(anyOne.getUniversitySystemId());
insertSchoolClass.setClassName(name);
insertSchoolClass.setClassSn(RandomUtil.randomNumbers(6));
insertSchoolClass.setClassStatus(1);
insertSchoolClass.setAddTime(new Date());
insertSchoolClass.setOrgId(orgId);
insertSchoolClass.setUserId(userId);
insert(insertSchoolClass);
return insertSchoolClass;
}
// 如果没有老数据,则就按照最简单的数据进行插入,后期再进各个模块修改详细数据
else {
// 通过机构ID查询院校信息
UniversitiesColleges universitiesColleges = universitiesCollegesService.getByOrgId(orgId);
SchoolClass insertSchoolClass = new SchoolClass();
if (universitiesColleges != null) {
insertSchoolClass.setUniversitiesCollegesId(universitiesColleges.getUniversitiesCollegesId());
}
insertSchoolClass.setUniversityFacultyId(universityFacultyId);
insertSchoolClass.setUniversitySystemId(universitySystemId);
insertSchoolClass.setClassName(name);
insertSchoolClass.setClassSn(RandomUtil.randomNumbers(6));
insertSchoolClass.setClassStatus(1);
insertSchoolClass.setAddTime(new Date());
insertSchoolClass.setOrgId(orgId);
insertSchoolClass.setUserId(userId);
insert(insertSchoolClass);
return insertSchoolClass;
}
}
}

@ -23,7 +23,6 @@ import com.ibeetl.admin.core.web.JsonReturnCode;
import com.ibeetl.jlw.dao.SchoolClassDao;
import com.ibeetl.jlw.dao.StudentDao;
import com.ibeetl.jlw.entity.*;
import com.ibeetl.jlw.entity.dto.StudentBatchImportDTO;
import com.ibeetl.jlw.entity.vo.StudentLogAnalysisVO;
import com.ibeetl.jlw.entity.vo.StudentLoginLogVO;
import com.ibeetl.jlw.entity.vo.StudentUseLogVO;
@ -430,6 +429,7 @@ public class StudentService extends CoreBaseService<Student>{
student.setStudentPassword(StringUtils.isNotBlank(student.getStudentPassword())?student.getStudentPassword():"123qwe");
student.setAddTime(date);
student.setStudentStatus(1);
student.setCodeFrom(defaultIfNull(student.getCodeFrom(), "注册"));
this.save(student);
String code = student.createCode();
@ -963,7 +963,7 @@ public class StudentService extends CoreBaseService<Student>{
}
public void validateStudentSnListIsExistsThrow(List<Student> list, MyValidateExcelCellDataListener<StudentBatchImportDTO> listener) {
public void validateStudentSnListIsExistsThrow(List<Student> list, MyValidateExcelCellDataListener listener) {
if (CollectionUtil.isEmpty(list)) {
return;
}

@ -32,6 +32,7 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static cn.hutool.core.collection.CollUtil.getFirst;
import static com.ibeetl.admin.core.enums.MenuEnums.JT_01;
import static com.ibeetl.admin.core.enums.MenuEnums.JT_S_04;
import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser;
@ -120,6 +121,8 @@ public class UniversitiesCollegesService extends CoreBaseService<UniversitiesCol
u.setUniversitiesCollegesAuthCode(RandomUtil.randomString(6));
universitiesCollegesDao.updateTemplateById(u);
universitiesColleges.setUniversitiesCollegesAuthCode(u.getUniversitiesCollegesAuthCode());
corePlatformService.clearDictCache();
return true;
}
@ -323,4 +326,30 @@ public class UniversitiesCollegesService extends CoreBaseService<UniversitiesCol
return SpringUtil.getBean(UniversitiesCollegesDao.class).getAllUniversitiesColleges();
}
public UniversitiesColleges getByName(String name) {
UniversitiesCollegesQuery query = new UniversitiesCollegesQuery();
query.setUniversitiesCollegesStatus(1);
query.setUniversitiesCollegesName(name.trim());
return getFirst(getValuesByQuery(query));
}
public UniversitiesColleges getByNameOrCreate(String name) {
UniversitiesColleges universitiesColleges = getByName(name);
if (universitiesColleges != null) {
return universitiesColleges;
}
UniversitiesColleges insertPO = new UniversitiesColleges();
insertPO.setUniversitiesCollegesName(name);
insertPO.setUniversitiesCollegesStatus(1);
insertPO.setAddTime(new Date());
// universitiesColleges.setOrgId(0L); 这里的orgId 在add方法里存值
insertPO.setUserId(1L);
add(insertPO);
return insertPO;
}
}

@ -11,6 +11,7 @@ import com.ibeetl.admin.core.util.PlatformException;
import com.ibeetl.admin.core.web.JsonResult;
import com.ibeetl.admin.core.web.JsonReturnCode;
import com.ibeetl.jlw.dao.UniversityFacultyDao;
import com.ibeetl.jlw.entity.UniversitiesColleges;
import com.ibeetl.jlw.entity.UniversityFaculty;
import com.ibeetl.jlw.web.query.UniversityFacultyQuery;
import org.apache.commons.lang3.StringUtils;
@ -26,6 +27,8 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import static cn.hutool.core.collection.CollUtil.getFirst;
/**
* Service
@ -38,6 +41,8 @@ public class UniversityFacultyService extends CoreBaseService<UniversityFaculty>
@Autowired private UniversityFacultyDao universityFacultyDao;
@Autowired private CorePlatformService corePlatformService;
@Autowired
private UniversitiesCollegesService universitiesCollegesService;
public PageQuery<UniversityFaculty>queryByCondition(PageQuery query){
PageQuery ret = universityFacultyDao.queryByCondition(query);
@ -182,4 +187,77 @@ public class UniversityFacultyService extends CoreBaseService<UniversityFaculty>
return groupMap;
}
public UniversityFaculty getByName(String name, Long orgId) {
UniversityFacultyQuery query = new UniversityFacultyQuery();
query.setUniversityFacultyStatus(1);
query.setUniversityFacultyName(name.trim());
if (orgId != null) {
query.setOrgId(orgId);
}
return getFirst(getValuesByQueryNotWithPermission(query));
}
/**
*
* @param name
* @param orgId
* @return
*/
public UniversityFaculty getByNameOrCreate(String name, Long orgId, Long userId) {
UniversityFaculty universityFaculty = getByName(name, orgId);
if (universityFaculty != null) {
return universityFaculty;
}
// 根据机构ID查找是否已经创建过的院系直接取之前的部分数据作为插入的数据
UniversityFacultyQuery facultyQuery = new UniversityFacultyQuery();
facultyQuery.setOrgId(orgId);
UniversityFaculty anyOne = getFirst(getValuesByQueryNotWithPermission(facultyQuery));
// 根据名字未查询到数据的话,就插入院系表
if (anyOne != null) {
UniversityFaculty faculty = new UniversityFaculty();
faculty.setUniversityFacultyStatus(1);
faculty.setUniversityFacultyName(name);
faculty.setUniversityFacultyAddTime(new Date());
faculty.setUniversityFacultyContact(anyOne.getUniversityFacultyContact());
faculty.setUniversityFacultyContactTel(anyOne.getUniversityFacultyContactTel());
faculty.setUniversityFacultyContactAddress(anyOne.getUniversityFacultyContactAddress());
faculty.setUniversitiesCollegesId(anyOne.getUniversitiesCollegesId());
faculty.setUniversityFacultyStatus(1);
faculty.setUserId(orgId);
faculty.setOrgId(userId);
insert(faculty);
return faculty;
}
// 如果没有老数据,则就按照最简单的数据进行插入,后期再进各个模块修改详细数据
else {
// 通过机构ID查询院校信息
UniversitiesColleges universitiesColleges = universitiesCollegesService.getByOrgId(orgId);
UniversityFaculty faculty = new UniversityFaculty();
if (universitiesColleges != null) {
faculty.setUniversitiesCollegesId(universitiesColleges.getUniversitiesCollegesId());
}
faculty.setUniversityFacultyName(name);
faculty.setUniversityFacultyStatus(1);
faculty.setUniversityFacultyAddTime(new Date());
faculty.setUserId(orgId);
faculty.setOrgId(userId);
insert(faculty);
return faculty;
}
}
public UniversityFaculty getByName (String name){
return getByName(name, null);
}
}

@ -26,6 +26,8 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import static cn.hutool.core.collection.CollUtil.getFirst;
/**
* Service
@ -38,6 +40,8 @@ public class UniversitySystemService extends CoreBaseService<UniversitySystem>{
@Autowired private UniversitySystemDao universitySystemDao;
@Autowired private CorePlatformService corePlatformService;
@Autowired
private UniversitiesCollegesService universitiesCollegesService;
public PageQuery<UniversitySystem>queryByCondition(PageQuery query){
PageQuery ret = universitySystemDao.queryByCondition(query);
@ -146,6 +150,69 @@ public class UniversitySystemService extends CoreBaseService<UniversitySystem>{
return universitySystemDao.getValuesByQueryNotWithPermission(universitySystemQuery);
}
public UniversitySystem getByName (String name, Long orgId){
UniversitySystemQuery query = new UniversitySystemQuery();
query.setUniversitySystemStatus(1);
query.setUniversitySystemName(name.trim());
if (query != null) {
query.setOrgId(orgId);
}
return getFirst(universitySystemDao.getValuesByQueryNotWithPermission(query));
}
public UniversitySystem getByName (String name){
return getByName(name, null);
}
/**
*
* @param name
* @param orgId
* @return
*/
public UniversitySystem getByNameOrCreate(String name, Long orgId, Long userId, Long universityFacultyId) {
UniversitySystem universitySystem = getByName(name, orgId);
if (universitySystem != null) {
return universitySystem;
}
// 根据机构ID查找是否已经创建过专业直接取之前的部分数据作为插入的数据
UniversitySystemQuery systemQuery = new UniversitySystemQuery();
systemQuery.setOrgId(orgId);
UniversitySystem anyOne = getFirst(getValuesByQueryNotWithPermission(systemQuery));
// 根据名字未查询到数据的话,就插入院系表
if (anyOne != null) {
UniversitySystem system = new UniversitySystem();
system.setUniversitySystemName(name);
system.setUniversitySystemContact(anyOne.getUniversitySystemContact());
system.setUniversitySystemContactTel(anyOne.getUniversitySystemContactTel());
system.setUniversityFacultyId(anyOne.getUniversityFacultyId());
system.setUniversitySystemAddTime(new Date());
system.setUniversitySystemStatus(1);
system.setUserId(userId);
system.setOrgId(orgId);
insert(system);
return system;
}
// 如果没有老数据,则就按照最简单的数据进行插入,后期再进各个模块修改详细数据
else {
UniversitySystem system = new UniversitySystem();
system.setUniversitySystemName(name);
system.setUniversityFacultyId(universityFacultyId);
system.setUniversitySystemAddTime(new Date());
system.setUniversitySystemStatus(1);
system.setUserId(userId);
system.setOrgId(orgId);
insert(system);
return system;
}
}
public UniversitySystem getInfo (Long universitySystemId){
UniversitySystemQuery universitySystemQuery = new UniversitySystemQuery();
universitySystemQuery.setUniversitySystemId(universitySystemId);

@ -204,6 +204,7 @@ public class CourseInfoController{
}
courseInfoQuery.setAddTime(new Date());
courseInfoQuery.setUserId(coreUser.getId());
courseInfoQuery.setOrgId(coreUser.getOrgId());
CourseInfo courseInfo = courseInfoService.add(courseInfoQuery);
//移除缓存

@ -76,8 +76,9 @@ public class SchoolClassController extends BaseController {
/* 前端接口 */
@GetMapping(API + "/getList.do")
@ResponseBody
public JsonResult<List<SchoolClass>> getList(SchoolClassQuery condition, @SCoreUser CoreUser coreUser) {
if (!coreUser.isAdmin()) {
public JsonResult<List<SchoolClass>> getList(SchoolClassQuery condition) {
CoreUser coreUser = getUser();
if (null != coreUser && !coreUser.isAdmin()) {
condition.setOrgId(coreUser.getOrgId());
}
List<SchoolClass>list = schoolClassService.getValuesByQueryNotWithPermission(condition);

@ -24,7 +24,8 @@ import com.ibeetl.admin.core.util.TimeTool;
import com.ibeetl.admin.core.web.JsonResult;
import com.ibeetl.jlw.dao.SchoolClassDao;
import com.ibeetl.jlw.entity.*;
import com.ibeetl.jlw.entity.dto.StudentBatchImportDTO;
import com.ibeetl.jlw.entity.dto.StudentBatchImportAdminDTO;
import com.ibeetl.jlw.entity.dto.StudentBatchImportUniAdminDTO;
import com.ibeetl.jlw.entity.vo.StudentLogAnalysisVO;
import com.ibeetl.jlw.entity.vo.StudentLoginLogVO;
import com.ibeetl.jlw.entity.vo.StudentUseLogVO;
@ -39,7 +40,6 @@ import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.xssf.usermodel.*;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.query.LambdaQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
@ -67,8 +67,7 @@ import static cn.jlw.util.excel.ExcelUtil.standardName;
import static com.ibeetl.admin.console.service.OrgConsoleService.setObjectOrgId;
import static com.ibeetl.admin.core.util.ExcelUtil.convertData;
import static com.ibeetl.admin.core.util.ExcelUtil.write;
import static com.ibeetl.admin.core.util.StreamUtils.listJoin;
import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser;
import static com.ibeetl.admin.core.util.excelGroupValidation.ExcelUtil.createExcel;
import static com.ibeetl.admin.core.web.JsonReturnCode.DIY_ERROR;
import static com.ibeetl.jlw.web.IpAddressController.ipAddressMap;
import static java.util.function.UnaryOperator.identity;
@ -136,6 +135,8 @@ public class StudentController extends BaseController{
@Autowired
FileService fileService;
@Autowired
private UniversityFacultyService universityFacultyService;
/* 前端接口 */
@ -2786,16 +2787,22 @@ public class StudentController extends BaseController{
@SneakyThrows
@GetMapping({ API + "/exportBatchTemplate.do", MODEL + "/downloadTemplate.json" })
@ResponseBody
public void exportBatchTemplate() {
Assert.notNull(getUser(), "请登录后再操作");
public void exportBatchTemplate(@SCoreUser CoreUser coreUser) {
String filename = StrUtil.format("批量学生导入模板{}.xlsx", System.currentTimeMillis());
setExcelResponse(filename);
// 输出 Excel
com.ibeetl.admin.core.util.excelGroupValidation.ExcelUtil.createExcel(Arrays.asList(new StudentBatchImportDTO()), response.getOutputStream());
if (coreUser.isAdmin()) {
// 输出 Excel
createExcel(Arrays.asList(new StudentBatchImportAdminDTO()), response.getOutputStream());
}
else if(coreUser.isUniAdmin()) {
// 输出 Excel
createExcel(Arrays.asList(new StudentBatchImportUniAdminDTO()), response.getOutputStream());
}
throw new RuntimeException("该接口仅支持超管和管理员操作!");
}
/**
@ -2803,62 +2810,72 @@ public class StudentController extends BaseController{
*
* excel
* @param file
* @param coreUser IDID
* @return {@link JsonResult}
* @Author: 87966
* @Date: 2022/11/28 10:04
*/
@SneakyThrows
@PostMapping({MODEL + "/importTemplate.json", API + "/importBatchTemplate.do"})
@PostMapping({MODEL + "/uniAdminImportBatchTemplate.json", API + "/uniAdminImportBatchTemplate.do"})
@ResponseBody
public JsonResult importBatchTemplate(@NotNull(message = "导入的文件不能为空!") MultipartFile file, @SCoreUser CoreUser coreUser) {
public JsonResult uniAdminImportBatchTemplate(@NotNull(message = "导入的文件不能为空!") MultipartFile file, @SCoreUser CoreUser coreUser) {
try {
Assert.isNull(getStudent(), "学生无法访问该接口");
// 输出 Excel, 有判断空值的操作
MyValidateExcelCellDataListener<StudentBatchImportDTO> listener = new MyValidateExcelCellDataListener<>();
MyValidateExcelCellDataListener<StudentBatchImportUniAdminDTO> listener = new MyValidateExcelCellDataListener<>();
ExcelUtil.readExcelNotContainHeader(file, StudentBatchImportDTO.class, listener);
ExcelUtil.readExcelNotContainHeader(file, StudentBatchImportUniAdminDTO.class, listener);
// 判断错误的结果集
Assert.isTrue(CollectionUtil.isEmpty(listener.getFailMessage()), JSONUtil.toJsonStr(listener.getFailMessage()));
// 类型转换
List<Student> list = listener.getData().stream().map(item -> {
// 存的是班级名称只是叫做classId而已
String classId = item.getClassId();
return StudentBatchImportDTO.pojo(item, importClassIdAsString -> {
SchoolClass params = new SchoolClass();
params.setClassName(classId);
params.setClassStatus(1);
params.setOrgId(coreUser.getOrgId());
LambdaQuery<SchoolClass> schoolClassLambdaQuery = schoolClassDao.createLambdaQuery()
.andEq(SchoolClass::getClassStatus, 1);
// 超管不用传机构ID
if (!coreUser.isAdmin()) {
schoolClassLambdaQuery.andEq(SchoolClass::getOrgId, coreUser.getOrgId());
}
List<SchoolClass> classList = schoolClassLambdaQuery
.andLike(SchoolClass::getClassName, "%"+classId+"%")
.select();
consumerPutErrorMessage(classList, (cl) -> {
List<SchoolClass> tempList = (List<SchoolClass>) cl;
Assert.isTrue(CollectionUtil.isNotEmpty(classList),
"班级名称:【{}】未模糊匹配到任何班级!", classId);
// 模糊搜索到重复的班级名称
String repetitiveClassNames = listJoin(classList, SchoolClass::getClassName);
Assert.isFalse(tempList.size() > 1,
"提交的班级名称{},查询到多个【{}】,请修改后再来尝试!", classId, repetitiveClassNames);
}, listener);
if (classList.size() == 1) {
return classList.get(0).getClassId();
}
return null;
// 查询这个院校已经存在的院系
UniversityFaculty universityFaculty = universityFacultyService.getByNameOrCreate(
item.getUniversityFacultyName(), coreUser.getOrgId(), coreUser.getId());
// 查询这个院校已经存在的专业
UniversitySystem universitySystem = universitySystemService.getByNameOrCreate(
item.getUniversitySystemName(), coreUser.getOrgId(), coreUser.getId(), universityFaculty.getUniversityFacultyId());
// 查询这个院校已经存在的专业
SchoolClass schoolClass = schoolClassService.getByNameOrCreate(item.getClassId(),
coreUser.getOrgId(), coreUser.getId(), universityFaculty.getUniversityFacultyId(),
universitySystem.getUniversitySystemId());
return StudentBatchImportUniAdminDTO.pojo(item, importClassIdAsString -> {
return schoolClass.getClassId();
// LambdaQuery<SchoolClass> schoolClassLambdaQuery = schoolClassDao.createLambdaQuery()
// .andEq(SchoolClass::getClassStatus, 1);
//
// // 超管不用传机构ID
// if (!coreUser.isAdmin()) {
// schoolClassLambdaQuery.andEq(SchoolClass::getOrgId, coreUser.getOrgId());
// }
// List<SchoolClass> classList = schoolClassLambdaQuery
// .andLike(SchoolClass::getClassName, "%"+classId+"%")
// .select();
//
//
// consumerPutErrorMessage(classList, (cl) -> {
// List<SchoolClass> tempList = (List<SchoolClass>) cl;
// Assert.isTrue(CollectionUtil.isNotEmpty(classList),
// "班级名称:【{}】未模糊匹配到任何班级!", classId);
//
// // 模糊搜索到重复的班级名称
// String repetitiveClassNames = listJoin(classList, SchoolClass::getClassName);
// Assert.isFalse(tempList.size() > 1,
// "提交的班级名称{},查询到多个【{}】,请修改后再来尝试!", classId, repetitiveClassNames);
// }, listener);
//
// if (classList.size() == 1) {
// return classList.get(0).getClassId();
// }
//
// return null;
}, identity());
})
.collect(Collectors.toList());
@ -2892,6 +2909,83 @@ public class StudentController extends BaseController{
return JsonResult.successMessage("导入成功!");
}
/**
* : <br>
*
* excel
* @param file
* @param coreUser IDID
* @return {@link JsonResult}
* @Author: 87966
* @Date: 2022/11/28 10:04
*/
@SneakyThrows
@PostMapping({MODEL + "/adminImportTemplate.json", API + "/adminImportBatchTemplate.do"})
@ResponseBody
public JsonResult adminImportBatchTemplate(@NotNull(message = "导入的文件不能为空!") MultipartFile file, @SCoreUser CoreUser coreUser) {
try {
Assert.isNull(getStudent(), "学生无法访问该接口");
// 输出 Excel, 有判断空值的操作
MyValidateExcelCellDataListener<StudentBatchImportAdminDTO> listener = new MyValidateExcelCellDataListener<>();
ExcelUtil.readExcelNotContainHeader(file, StudentBatchImportAdminDTO.class, listener);
// 判断错误的结果集
Assert.isTrue(CollectionUtil.isEmpty(listener.getFailMessage()), JSONUtil.toJsonStr(listener.getFailMessage()));
// 类型转换
List<Student> list = listener.getData().stream().map(item -> {
// 查询这个院校已经存在的院系
UniversitiesColleges universitiesColleges = universitiesCollegesService.getByNameOrCreate(item.getUniversitiesCollegesName());
// 查询这个院校已经存在的院系
UniversityFaculty universityFaculty = universityFacultyService.getByNameOrCreate(
item.getUniversityFacultyName(), universitiesColleges.getOrgId(), universitiesColleges.getUserId());
// 查询这个院校已经存在的专业
UniversitySystem universitySystem = universitySystemService.getByNameOrCreate(
item.getUniversitySystemName(), universitiesColleges.getOrgId(), universitiesColleges.getUserId(), universityFaculty.getUniversityFacultyId());
// 查询这个院校已经存在的专业
SchoolClass schoolClass = schoolClassService.getByNameOrCreate(item.getClassId(),
universitiesColleges.getOrgId(), universitiesColleges.getUserId(), universityFaculty.getUniversityFacultyId(),
universitySystem.getUniversitySystemId());
return StudentBatchImportAdminDTO.pojo(item, importClassIdAsString -> schoolClass.getClassId(), identity());
})
.collect(Collectors.toList());
// 设置机构ID
try {
setObjectOrgId(list, (e) -> {
SchoolClass params = new SchoolClass();
params.setClassId(e.getClassId());
params.setClassStatus(1);
SchoolClass sc = schoolClassDao.templateOne(params);
if (sc != null) {
return sc.getOrgId();
}
return null;
}, true);
}catch (Exception e) {
log.error(e.getMessage());
}
studentService.validateStudentSnListIsExistsThrow(list, listener);
// 再次判断错误的结果集
Assert.isTrue(CollectionUtil.isEmpty(listener.getFailMessage()), JSONUtil.toJsonStr(listener.getFailMessage()));
// 导入并添加身份信息
list.forEach(studentService::add);
}
catch (IllegalArgumentException exception) {
return JsonResult.failMessage(exception.getMessage()).setCode(DIY_ERROR.getCode());
}
return JsonResult.successMessage("导入成功!");
}
/**
*

@ -1,6 +1,9 @@
package com.ibeetl.jlw.web;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.jlw.Interceptor.SCoreUser;
import cn.jlw.validate.ValidateConfig;
@ -15,6 +18,7 @@ import com.ibeetl.jlw.entity.UniversitiesCollegesJurisdictionCurriculumResources
import com.ibeetl.jlw.service.UniversitiesCollegesJurisdictionCurriculumResourcesService;
import com.ibeetl.jlw.service.UniversitiesCollegesService;
import com.ibeetl.jlw.web.query.UniversitiesCollegesJurisdictionCurriculumResourcesQuery;
import com.ibeetl.jlw.web.query.UniversitiesCollegesQuery;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.beetl.sql.core.engine.PageQuery;
@ -24,6 +28,7 @@ import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
@ -225,7 +230,18 @@ public class UniversitiesCollegesJurisdictionCurriculumResourcesController{
*/
@PostMapping(MODEL + "/getAllAuthCourseInfoByOrgId.json")
@ResponseBody
public JsonResult getAllAuthCourseInfoByOrgId(Long orgId, @SCoreUser CoreUser coreUser){
public JsonResult getAllAuthCourseInfoByOrgId(@RequestParam(required = false) Long orgId, @RequestParam(required = false) Long universitiesCollegesId, String applicationIds, @SCoreUser CoreUser coreUser){
Assert.isFalse(ObjectUtil.isAllEmpty(orgId, universitiesCollegesId), "orgId机构ID或universitiesCollegesId 院校ID不能同时为空");
if (orgId == null) {
UniversitiesCollegesQuery universitiesCollegesQuery = new UniversitiesCollegesQuery();
universitiesCollegesQuery.setUniversitiesCollegesId(universitiesCollegesId);
universitiesCollegesQuery.setUniversitiesCollegesStatus(1);
UniversitiesColleges universitiesColleges = CollectionUtil.getFirst(universitiesCollegesService.getValuesByQuery(universitiesCollegesQuery));
orgId = universitiesColleges.getOrgId();
}
return JsonResult.success(universitiesCollegesJurisdictionCurriculumResourcesService.getAllAuthCourseInfoStrByOrgId(orgId));
}

@ -67,69 +67,138 @@ queryAllAuthCourseInfoByCondition
===
* 根据不为空的参数进行分页查询,查询理论课程类型的课程清单
select
@pageTag(){
*
@}
from (
select
@pageTag(){
t.*,
ta.*,
t.use_type,
t.use_start_time,
t.use_end_time,
t.second_level_name,
t.second_level_logo,
ta.`course_info_id`,
ta.`course_info_full_id`,
ta.`course_info_name`,
ta.`course_info_thumbnail`,
ta.`course_label_id`,
ta.`course_info_basics_count`,
ta.`course_info_content`,
ta.`course_info_status`,
ta.`course_info_type`,
ta.`course_info_parent_id`,
ta.`course_video_id`,
ta.`course_courseware_id`,
ta.`course_enclosure_ids`,
ta.`resources_question_ids`,
ta.`resources_competition_ids`,
ta.`resources_training_ids`,
ta.`order_index`,
ta.`add_time`,
ta.org_id,
ta.user_id,
tb.universities_colleges_name,
(select course_label_type from course_label where course_label_id = ta.course_label_id limit 1) as course_label_type,
(select course_label_name from course_label where course_label_id = ta.course_label_id limit 1) as course_label_name,
ta.add_time
@}
tc.course_label_type,
tc.course_label_name
from course_info ta
left join course_label tc on tc.course_label_id = ta.course_label_id and tc.course_label_status = 1
left join universities_colleges_jurisdiction_curriculum_resources t on ta.course_info_id = t.course_info_id and ta.course_info_status = 1
@if(!isEmpty(universitiesCollegesJurisdictionCurriculumResourcesId)){
and t.universities_colleges_jurisdiction_curriculum_resources_id =#universitiesCollegesJurisdictionCurriculumResourcesId#
@}
@if(!isEmpty(universitiesCollegesId)){
and t.universities_colleges_id =#universitiesCollegesId#
@}
@if(!isEmpty(type)){
and t.type =#type#
@}
@if(!isEmpty(courseInfoId)){
and t.course_info_id =#courseInfoId#
@}
@if(!isEmpty(courseInfoName)){
and ta.course_info_name like #'%'+courseInfoName+'%'#
@}
@if(!isEmpty(typeId)){
and t.type_id =#typeId#
@}
@if(!isEmpty(useType)){
and t.use_type =#useType#
@}
@if(!isEmpty(useStartTime)){
and t.use_start_time =#useStartTime#
@}
@if(!isEmpty(useEndTime)){
and t.use_end_time =#useEndTime#
@}
@if(!isEmpty(secondLevelName)){
and t.second_level_name =#secondLevelName#
@}
@if(!isEmpty(secondLevelLogo)){
and t.second_level_logo =#secondLevelLogo#
@}
@if(!isEmpty(addTime)){
and t.add_time =#addTime#
@}
@if(!isEmpty(orgId)){
and t.org_id =#orgId#
@}
@if(!isEmpty(userId)){
and t.user_id =#userId#
@}
@if(!isEmpty(universitiesCollegesJurisdictionExperimentalSystemId)){
and t.universities_colleges_jurisdiction_experimental_system_id =#universitiesCollegesJurisdictionExperimentalSystemId#
@}
left join universities_colleges tb on tb.universities_colleges_id = t.universities_colleges_id and tb.universities_colleges_status = 1
where 1=1
AND ta.course_info_status = 1
AND ta.course_info_type = 1
AND tc.course_label_type = '理论课程类'
@if(!isEmpty(universitiesCollegesJurisdictionCurriculumResourcesId)){
and t.universities_colleges_jurisdiction_curriculum_resources_id =#universitiesCollegesJurisdictionCurriculumResourcesId#
@}
@if(!isEmpty(universitiesCollegesId)){
and t.universities_colleges_id =#universitiesCollegesId#
@}
@if(!isEmpty(type)){
and t.type =#type#
@}
@if(!isEmpty(courseInfoId)){
and t.course_info_id =#courseInfoId#
@}
@if(!isEmpty(courseInfoName)){
and ta.course_info_name like #'%'+courseInfoName+'%'#
@}
@if(!isEmpty(typeId)){
and t.type_id =#typeId#
@}
@if(!isEmpty(useType)){
and t.use_type =#useType#
@}
@if(!isEmpty(useStartTime)){
and t.use_start_time =#useStartTime#
@}
@if(!isEmpty(useEndTime)){
and t.use_end_time =#useEndTime#
@}
@if(!isEmpty(secondLevelName)){
and t.second_level_name =#secondLevelName#
@}
@if(!isEmpty(secondLevelLogo)){
and t.second_level_logo =#secondLevelLogo#
@}
@if(!isEmpty(addTime)){
and t.add_time =#addTime#
@}
@if(!isEmpty(orgId)){
and t.org_id =#orgId#
@}
@if(!isEmpty(userId)){
and t.user_id =#userId#
@}
@if(!isEmpty(universitiesCollegesJurisdictionExperimentalSystemId)){
and t.universities_colleges_jurisdiction_experimental_system_id =#universitiesCollegesJurisdictionExperimentalSystemId#
@}
@if(!isEmpty(universitiesCollegesId)){
union
select
t.use_type,
t.use_start_time,
t.use_end_time,
t.second_level_name,
t.second_level_logo,
ta.`course_info_id`,
ta.`course_info_full_id`,
ta.`course_info_name`,
ta.`course_info_thumbnail`,
ta.`course_label_id`,
ta.`course_info_basics_count`,
ta.`course_info_content`,
ta.`course_info_status`,
ta.`course_info_type`,
ta.`course_info_parent_id`,
ta.`course_video_id`,
ta.`course_courseware_id`,
ta.`course_enclosure_ids`,
ta.`resources_question_ids`,
ta.`resources_competition_ids`,
ta.`resources_training_ids`,
ta.`order_index`,
ta.`add_time`,
ta.org_id,
ta.user_id,
null as universities_colleges_name,
tc.course_label_type,
tc.course_label_name
from course_info ta
left join course_label tc on tc.course_label_id = ta.course_label_id and tc.course_label_status = 1
left join universities_colleges_jurisdiction_curriculum_resources t on ta.course_info_id = t.course_info_id and 0
where 1
AND tc.course_label_type = '理论课程类'
AND ta.course_info_status = 1
AND ta.course_info_type = 1
AND ta.org_id = (
select org_id from universities_colleges where universities_colleges_id = #universitiesCollegesId# limit 1
)
@}
) tt
deleteUniversitiesCollegesJurisdictionCurriculumResourcesByIds
===
@ -165,9 +234,9 @@ getUniversitiesCollegesJurisdictionCurriculumResourcesValues
@if(!isEmpty(universitiesCollegesId)){
and t.universities_colleges_id =#universitiesCollegesId#
@}
@if(!isEmpty(courseInfoName)){
and ta.course_info_name like #'%'+courseInfoName+'%'#
@}
@if(!isEmpty(courseInfoName)){
and ta.course_info_name like #'%'+courseInfoName+'%'#
@}
@if(!isEmpty(type)){
and t.type =#type#
@}
@ -346,7 +415,7 @@ getAllAuthCourseInfoByOrgId
tb.*,
TRUE as is_update,
tc.use_type,
(CASE a.use_type WHEN 1 THEN '购买' WHEN 2 THEN '试用' WHEN 12 THEN '购买+试用' END) as use_type_text,
(CASE tc.use_type WHEN 1 THEN '购买' WHEN 2 THEN '试用' WHEN 12 THEN '购买+试用' END) as use_type_text,
tc.use_start_time,
tc.use_end_time,
tc.second_level_name,

@ -44,6 +44,17 @@ layui.define([ 'form', 'laydate', 'table' ], function(exports) {
field : 'courseLabelName',
title : '课程标签',
},
{
field : 'userId',
title : '课程来源',
templet: function (d) {
if(d.userId == null || d.userId == 1) {
return '系统授权'
} else {
return '院校添加'
}
},
},
{
field : 'useType',
title : '使用级别',
@ -51,23 +62,31 @@ layui.define([ 'form', 'laydate', 'table' ], function(exports) {
return d.useType === 0 ? '不使用'
: d.useType === 1 ? '购买'
: d.useType === 2 ? '试用'
: '';
// 默认试用,会有一些课程,在清单中,但不属于授权的
: '试用';
},
},
{
field : 'useStartTime',
title : '开始时间',
templet: function (d) {
return d.useStartTime ? d.useStartTime : '-'
},
},
{
field : 'useEndTime',
title : '结束时间',
templet: function (d) {
return d.useEndTime ? d.useEndTime : '-'
},
},
{
field : '_endStatus_',
title : '到期状态',
templet: function (d) {
// 默认在用,会有一些课程,在清单中,但不属于授权的
if (!d.useEndTime) {
return '';
return '<span class="layui-badge layui-bg-green">在用<span>';
}
return new Date(d.useEndTime).getTime() < new Date().getTime()
?

Loading…
Cancel
Save