@ -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 ( ) ) ;
}
}
}