学生导入

beetlsql3-dev
Mlxa0324 2 years ago
parent f14c011f33
commit 1db566f572

@ -89,8 +89,7 @@ public class BeetlConf {
@Bean
public BeetlTemplateCustomize beetlTemplateCustomize() {
return new BeetlTemplateCustomize() {
public void customize(GroupTemplate groupTemplate) {
return groupTemplate -> {
groupTemplate.registerFunctionPackage("platform", platFormService);
groupTemplate.registerFunctionPackage("queryCondition", new QueryParser());
groupTemplate.registerFunctionPackage("dict", dictDownQueryFunction);
@ -240,7 +239,6 @@ public class BeetlConf {
}
return new ArrayList<String>();
});
}
};
}

@ -9,6 +9,7 @@ import org.beetl.core.Function;
import org.springframework.stereotype.Component;
@Component
@Deprecated
public class SessionFunction implements Function {
CorePlatformService platFormService = SpringUtil.getBean(CorePlatformService.class);

@ -10,6 +10,8 @@ public enum JsonReturnCode {
FAIL ("500","内部失败"),
ACCESS_ERROR ("403","禁止访问"),
NOT_FOUND ("404","页面未发现"),
// 目前用在导入excel的时候异常的返回
DIY_ERROR ("5000","自定义异常");
private String code;
private String desc;

@ -1,6 +1,8 @@
package cn.jlw.util.excel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* <p>
@ -12,6 +14,8 @@ import lombok.Data;
* @modified
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ExcelFailRecord {
private Integer row;

@ -1,7 +1,6 @@
package com.ibeetl.jlw.entity.dto;
import com.ibeetl.admin.core.util.excelGroupValidation.ExcelFile;
import com.ibeetl.admin.core.util.excelGroupValidation.ExcelValidation;
import com.ibeetl.jlw.entity.Student;
import com.ibeetl.jlw.enums.GenderEnum;
import lombok.Data;
@ -11,7 +10,7 @@ import lombok.experimental.FieldNameConstants;
import java.util.Date;
import java.util.function.Function;
import static cn.jlw.util.excel.ExcelUtil.longValuesOf;
import static cn.hutool.core.util.ObjectUtil.defaultIfNull;
/**
* : <br>
@ -31,7 +30,7 @@ public class StudentBatchImportDTO {
/**
*
*/
@ExcelValidation(datasourceMethod = "com.ibeetl.jlw.service.SchoolClassService.getAllSchoolClassWithOrgId")
// @ExcelValidation(datasourceMethod = "com.ibeetl.jlw.service.SchoolClassService.getAllSchoolClassWithOrgId")
private String classId ;
/**
*
@ -59,9 +58,10 @@ public class StudentBatchImportDTO {
* @param function
* @return
*/
public static Student pojo(StudentBatchImportDTO importPojo, Function<Student, Student> function) {
public static Student pojo(StudentBatchImportDTO importPojo, Function<String, Long> classIdFunction, Function<Student, Student> function) {
Student build = Student.builder()
.classId(longValuesOf(importPojo.getClassId()))
// .classId(longValuesOf(importPojo.getClassId()))
.classId(classIdFunction.apply(importPojo.getClassId()))
.studentName(importPojo.getStudentName())
.studentSn(importPojo.getStudentSn())
.studentMobile(importPojo.getStudentMobile())
@ -83,7 +83,7 @@ public class StudentBatchImportDTO {
* @return
*/
public static Student pojo(StudentBatchImportDTO importPojo) {
return pojo(importPojo, e -> e);
return pojo(importPojo, o -> Long.valueOf(defaultIfNull(o, "-1")), e -> e);
}
}

@ -977,7 +977,7 @@ public class StudentService extends CoreBaseService<Student>{
// 这里固定列索引,省事
listener.putFailMessage(
errorRowIndex, 4, StrUtil.format("本次上传的文件中,存在重复的的学生编号:\"{}\"", duplicateElement));
errorRowIndex, 2, StrUtil.format("本次上传的文件中,存在重复的的学生编号:\"{}\"", duplicateElement));
}
// 查询库里已经存在的编号

@ -16,9 +16,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import static com.ibeetl.admin.core.util.StreamUtils.listJoin;
/**
@ -65,11 +63,39 @@ public class UniversitiesCollegesJurisdictionCurriculumResourcesService extends
return sqlManager.select(SqlId.of("jlw.universitiesCollegesJurisdictionCurriculumResources.getUniversitiesCollegesJurisdictionCurriculumResourcesValues"),UniversitiesCollegesJurisdictionCurriculumResources.class,paras);
}
/**
* ID
* @param orgId
* @return
*/
public List<CourseInfo> getAuthCourseInfoByOrgId(Long orgId){
return universitiesCollegesJurisdictionCurriculumResourcesDao.getAuthCourseInfoByOrgId(orgId);
}
/**
* ID
* @param orgId
* @return
*/
public String getAuthCourseInfoStrByOrgId(Long orgId){
return listJoin(universitiesCollegesJurisdictionCurriculumResourcesDao.getAuthCourseInfoByOrgId(orgId), CourseInfo::getCourseInfoId);
}
/**
* ID
* @param coreUser
* @return
*/
public List<CourseInfo> getAuthCourseInfoByCoreUser(CoreUser coreUser){
return universitiesCollegesJurisdictionCurriculumResourcesDao.getAuthCourseInfoByOrgId(coreUser.getOrgId());
}
/**
* ID
* @param coreUser
* @return
*/
public String getAuthCourseInfoStrByCoreUser(CoreUser coreUser){
return listJoin(universitiesCollegesJurisdictionCurriculumResourcesDao.getAuthCourseInfoByOrgId(coreUser.getOrgId()), CourseInfo::getCourseInfoId);
}
}

@ -1,5 +1,6 @@
package com.ibeetl.jlw.web;
import cn.hutool.core.util.StrUtil;
import cn.jlw.Interceptor.GetFile;
import cn.jlw.Interceptor.RFile;
import cn.jlw.Interceptor.SCoreUser;
@ -20,6 +21,7 @@ import com.ibeetl.jlw.enums.MatchTypeEnum;
import com.ibeetl.jlw.enums.QuestionBusinessTypeEnum;
import com.ibeetl.jlw.service.CourseInfoService;
import com.ibeetl.jlw.service.ResourcesQuestionService;
import com.ibeetl.jlw.service.UniversitiesCollegesJurisdictionCurriculumResourcesService;
import com.ibeetl.jlw.web.query.CourseInfoQuery;
import com.ibeetl.jlw.web.query.ResourcesQuestionQuery;
import org.apache.commons.lang3.StringUtils;
@ -46,10 +48,12 @@ import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.*;
import static cn.hutool.core.util.ArrayUtil.join;
import static cn.hutool.core.util.ObjectUtil.defaultIfNull;
import static cn.jlw.util.excel.ExcelUtil.standardName;
/**
@ -71,6 +75,7 @@ public class ResourcesQuestionController{
FileService fileService;
@Autowired private CourseInfoService courseInfoService;
@Autowired private UniversitiesCollegesJurisdictionCurriculumResourcesService universitiesCollegesJurisdictionCurriculumResourcesService;
/* 前端接口 */
@ -155,6 +160,13 @@ public class ResourcesQuestionController{
if (coreUser.isUniAdmin()) {
condition.setOrgIdPlural(join(Arrays.asList(coreUser.getOrgId(), 1L, null).toArray(), ","));
// 查询已经授权的课程ID
Serializable courseInfoIds = defaultIfNull(condition.getCourseInfoId(), condition.getCourseInfoIds());
Serializable ifNullCourseInfoIds = defaultIfNull(courseInfoIds,
universitiesCollegesJurisdictionCurriculumResourcesService.getAuthCourseInfoStrByOrgId(coreUser.getOrgId()));
// 如果为空字符串,那么代表这个学校,还没有授权的课程,所以是不会显示任何东西的。
condition.setCourseInfoIds(StrUtil.blankToDefault(String.valueOf(ifNullCourseInfoIds), "未授权应用"));
}
resourcesQuestionService.queryByCondition(page);
return JsonResult.success(page);

@ -56,6 +56,7 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import static cn.jlw.token.TokenService.getMap;
@ -65,9 +66,11 @@ 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.web.JsonReturnCode.DIY_ERROR;
import static com.ibeetl.jlw.web.IpAddressController.ipAddressMap;
import static java.util.function.UnaryOperator.identity;
/**
@ -2811,17 +2814,51 @@ public class StudentController extends BaseController{
try {
Assert.isNull(getStudent(), "学生无法访问该接口");
// 输出 Excel
// 输出 Excel, 有判断空值的操作
MyValidateExcelCellDataListener<StudentBatchImportDTO> listener = new MyValidateExcelCellDataListener<>();
ExcelUtil.readExcelNotContainHeader(file, StudentBatchImportDTO.class, listener);
// 判断错误的结果集
Assert.isTrue(CollectionUtil.isEmpty(listener.getFailMessage()), JSONUtil.toJsonStr(listener.getFailMessage()));
// 类型转换
List<Student> list = listener.getData().stream().map(StudentBatchImportDTO::pojo)
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());
List<SchoolClass> classList = schoolClassDao.createLambdaQuery()
.andEq(SchoolClass::getClassStatus, 1)
.andEq(SchoolClass::getOrgId, coreUser.getOrgId())
.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());
// 设置机构ID
try {
setObjectOrgId(list, (e) -> {
SchoolClass params = new SchoolClass();
params.setClassId(e.getClassId());
@ -2832,6 +2869,9 @@ public class StudentController extends BaseController{
}
return null;
}, true);
}catch (Exception e) {
log.error(e.getMessage());
}
studentService.validateStudentSnListIsExistsThrow(list, listener);
// 再次判断错误的结果集
@ -2843,6 +2883,21 @@ public class StudentController extends BaseController{
catch (IllegalArgumentException exception) {
return JsonResult.failMessage(exception.getMessage()).setCode(DIY_ERROR.getCode());
}
return JsonResult.successMessage("导入成功!");
}
/**
*
* @param t
* @param tConsumer
* @param listener
*/
private void consumerPutErrorMessage(Object t, Consumer tConsumer, MyValidateExcelCellDataListener listener) {
try {
tConsumer.accept(t);
}catch (Exception e) {
listener.putFailMessage(e.getMessage());
}
}
}

@ -15,3 +15,5 @@ FNP.reUtil = cn.hutool.core.util.ReUtil
FNP.dateUtil =cn.hutool.core.date.DateUtil
# map\u5DE5\u5177\u7C7B
FNP.mapUtil =com.ibeetl.admin.core.util.map.MapUtil
# \u53EF\u4EE5\u67E5\u8BE2\u6388\u6743\u8BFE\u7A0B\u5217\u8868\u7684
FNP.authCourseInfoUtil =com.ibeetl.jlw.service.UniversitiesCollegesJurisdictionCurriculumResourcesService

@ -41,6 +41,10 @@ queryByCondition
@}
@if(!isEmpty(courseInfoIds)){
and find_in_set(t.course_info_id,#courseInfoIds#)
@// 未授权任何应用的话,这里直接返回空数据
@if(courseInfoIds == '未授权应用'){
and false
@}
@}
@if(!isEmpty(courseInfoId)){
and t.course_info_id =#courseInfoId#

@ -31,8 +31,10 @@
<div class="layui-inline">
<label class="layui-form-label">授权院校:</label>
<div class="layui-input-inline">
<!-- 时间久远,忘记这里是干啥的,先注释吧 -->
<!-- universities_colleges.universities_colleges_name.universities_colleges_status=1,not find_in_set(universities_colleges_id,IFNULL((SELECT group_concat(universities_colleges_id) FROM universities_colleges_jurisdiction_experimental_system WHERE FIND_IN_SET(use_type,'1,2')),-1))-->
<layui:simpleDictSelect style='layui-input-inline' value="${universitiesCollegesId}"
type="universities_colleges.universities_colleges_name.universities_colleges_status=1,not find_in_set(universities_colleges_id,IFNULL((SELECT group_concat(universities_colleges_id) FROM universities_colleges_jurisdiction_experimental_system WHERE FIND_IN_SET(use_type,'1,2')),-1))"
type="universities_colleges.universities_colleges_name.universities_colleges_status=1"
id="universitiesCollegesId" name="universitiesCollegesId"
layFilter="select_universitiesColleges"/>
</div>

Loading…
Cancel
Save