diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/util/StreamUtils.java b/admin-core/src/main/java/com/ibeetl/admin/core/util/StreamUtils.java
new file mode 100644
index 00000000..d8b75228
--- /dev/null
+++ b/admin-core/src/main/java/com/ibeetl/admin/core/util/StreamUtils.java
@@ -0,0 +1,44 @@
+package com.ibeetl.admin.core.util;
+
+import cn.hutool.core.collection.CollectionUtil;
+
+import java.util.Collection;
+import java.util.Objects;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * 功能描述:
+ *
+ * @author: mlx
+ * @description:
+ * @date: 2023/2/8 23:01
+ * @version: 1.0
+ */
+public class StreamUtils {
+
+ /**
+ * List指定字段,并返回join后的值
+ * @param list
+ * @param function
+ * @param delimiter
+ * @return
+ * @param
+ * @param
+ */
+ public static String listJoin(Collection list, Function function, CharSequence delimiter) {
+ return CollectionUtil.newArrayList(list).stream().map(function).map(Objects::toString).collect(Collectors.joining(delimiter));
+ }
+
+ /**
+ * List指定字段,并返回join后的值
+ * @param list
+ * @param function
+ * @return
+ * @param
+ * @param
+ */
+ public static String listJoin(Collection list, Function function) {
+ return CollectionUtil.newArrayList(list).stream().map(function).map(Objects::toString).collect(Collectors.joining(","));
+ }
+}
diff --git a/web/src/main/java/com/ibeetl/jlw/entity/QuestionLogSummary.java b/web/src/main/java/com/ibeetl/jlw/entity/QuestionLogSummary.java
index dc6a1775..ed43a175 100644
--- a/web/src/main/java/com/ibeetl/jlw/entity/QuestionLogSummary.java
+++ b/web/src/main/java/com/ibeetl/jlw/entity/QuestionLogSummary.java
@@ -12,7 +12,7 @@ import lombok.EqualsAndHashCode;
import org.beetl.sql.annotation.entity.AssignID;
import org.beetl.sql.annotation.entity.InsertIgnore;
import org.beetl.sql.annotation.entity.UpdateIgnore;
-import org.beetl.sql.fetch.annotation.FetchOne;
+import org.beetl.sql.fetch.annotation.FetchSql;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@@ -65,7 +65,7 @@ public class QuestionLogSummary extends BaseEntity{
*/
@UpdateIgnore
@InsertIgnore
- @FetchOne("personId")
+ @FetchSql("select t.*, '' as student_password from student t where student_id = #personId#")
@DictDeep
private Student studentInfo;
diff --git a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourse.java b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourse.java
index 607f4ffd..3ad1dcfb 100644
--- a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourse.java
+++ b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourse.java
@@ -54,7 +54,7 @@ public class TeacherOpenCourse extends BaseEntity{
@InsertIgnore
private String teacherOpenCourseStatusText;
- @FetchSql("select t.teacher_id, ta.teacher_name, ta.teacher_sn, teacher_open_course_merge_teacher_auth_code from teacher_open_course_merge_teacher t " +
+ @FetchSql("select t.teacher_id, ta.teacher_name, ta.teacher_job_number, teacher_open_course_merge_teacher_auth_code from teacher_open_course_merge_teacher t " +
"left join teacher ta on ta.teacher_id = t.teacher_id " +
"where t.teacher_open_course_id = #teacherOpenCourseId# and t.teacher_open_course_merge_teacher_status = 1 " +
"order by teacher_id limit 1 ")
@@ -106,7 +106,7 @@ public class TeacherOpenCourse extends BaseEntity{
public static class MergeTeacherInfo {
private Long teacherId;
private String teacherName;
- private String teacherSn;
+ private String teacherJobNumber;
private String teacherOpenCourseMergeTeacherAuthCode;
}
@Setter
diff --git a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseMergeStudent.java b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseMergeStudent.java
index 071cdf12..673c8422 100644
--- a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseMergeStudent.java
+++ b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseMergeStudent.java
@@ -10,6 +10,7 @@ import org.beetl.sql.annotation.entity.InsertIgnore;
import org.beetl.sql.annotation.entity.UpdateIgnore;
import org.beetl.sql.fetch.annotation.Fetch;
import org.beetl.sql.fetch.annotation.FetchOne;
+import org.beetl.sql.fetch.annotation.FetchSql;
import javax.validation.constraints.NotNull;
import java.util.Date;
@@ -58,7 +59,7 @@ public class TeacherOpenCourseMergeStudent extends BaseEntity{
private Long studentId ;
- @FetchOne("studentId")
+ @FetchSql("select t.*, '' as student_password from student t where student_id = #studentId#")
@DictDeep
@UpdateIgnore
@InsertIgnore
diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeSchoolClassService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeSchoolClassService.java
index 8fafaaff..a33d24a3 100644
--- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeSchoolClassService.java
+++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeSchoolClassService.java
@@ -1,15 +1,24 @@
package com.ibeetl.jlw.service;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.json.JSONUtil;
import cn.jlw.util.ToolUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
+import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.service.CoreBaseService;
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.TeacherOpenCourseMergeSchoolClassDao;
+import com.ibeetl.jlw.dao.TeacherOpenCourseMergeStudentDao;
+import com.ibeetl.jlw.entity.Student;
import com.ibeetl.jlw.entity.TeacherOpenCourseMergeSchoolClass;
+import com.ibeetl.jlw.entity.TeacherOpenCourseMergeStudent;
+import com.ibeetl.jlw.web.query.StudentQuery;
import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeSchoolClassQuery;
+import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeStudentQuery;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.beetl.sql.core.SqlId;
@@ -20,10 +29,16 @@ import org.springframework.transaction.annotation.Transactional;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
+import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser;
+import static com.ibeetl.jlw.enums.OpenCourseMergeJoinTypeEnum.class_join;
+import static com.ibeetl.jlw.web.query.TeacherOpenCourseMergeSchoolClassQuery.jsonToPO;
+import static java.util.stream.Collectors.joining;
+
/**
* 开课关联班级 Service
* 当分布式ID开启后请勿使用insert(*,true)
@@ -35,6 +50,10 @@ import java.util.stream.Collectors;
public class TeacherOpenCourseMergeSchoolClassService extends CoreBaseService implements DeleteResourcesBy{
@Autowired private TeacherOpenCourseMergeSchoolClassDao teacherOpenCourseMergeSchoolClassDao;
+ @Autowired private TeacherOpenCourseMergeStudentDao teacherOpenCourseMergeStudentDao;
+ @Autowired private TeacherOpenCourseMergeStudentService teacherOpenCourseMergeStudentService;
+ @Autowired
+ private StudentService studentService;
public PageQueryqueryByCondition(PageQuery query){
PageQuery ret = teacherOpenCourseMergeSchoolClassDao.queryByCondition(query);
@@ -190,4 +209,98 @@ public class TeacherOpenCourseMergeSchoolClassService extends CoreBaseService list = jsonToPO(json);
+
+ if (!list.isEmpty()) {
+ final Long teacherOpenCourseId = list.get(0).getTeacherOpenCourseId();
+
+ final CoreUser coreUser = getUser();
+ final Date now = new Date();
+ final Long orgId = coreUser.getOrgId();
+
+ list.forEach(item -> {
+ Assert.notNull(item.getSchoolClassId(), "班级ID为必传参数!");
+ Assert.notNull(item.getTeacherOpenCourseId(), "教师开课ID为必传参数!");
+
+ item.setTeacherOpenCourseMergeSchoolClassAddTime(now);
+ item.setTeacherOpenCourseMergeSchoolClassStatus(1);
+ item.setOrgId(orgId);
+ });
+
+
+ // 获取导入的班级IDs
+ final String classIds = list.stream().map(
+ o -> o.getSchoolClassId().toString()).distinct().collect(joining(","));
+ TeacherOpenCourseMergeStudentQuery studentQuery = new TeacherOpenCourseMergeStudentQuery();
+ studentQuery.setTeacherOpenCourseSchoolClassMergeStudentAddTime(now);
+ studentQuery.setTeacherOpenCourseId(teacherOpenCourseId);
+
+ // 查询开课和班级已经关联的数据
+ final TeacherOpenCourseMergeSchoolClassQuery paras = new TeacherOpenCourseMergeSchoolClassQuery();
+ paras.setTeacherOpenCourseId(teacherOpenCourseId);
+ paras.setSchoolClassIdPlural(classIds);
+ paras.setTeacherOpenCourseMergeSchoolClassStatus(1);
+ final List valueList = getValuesByQuery(paras);
+ if (CollectionUtil.isNotEmpty(valueList)) {
+ String deleteIds = valueList.stream().map(
+ o -> o.getTeacherOpenCourseMergeSchoolClassId().toString()).collect(joining(","));
+ deleteTeacherOpenCourseMergeSchoolClass(deleteIds);
+ }
+ // 偷懒,再转换成json丢进去
+ query.setTeacherOpenCourseMergeSchoolClassJsonStr(JSONUtil.toJsonStr(list));
+ // 添加班级列表
+ String msg = addAll(query);
+
+ // 添加成功的话,则添加这些班级里的所有状态正常的学生到开课中
+ if (StringUtils.isBlank(msg)) {
+ // 这里会有一些散客的学生,尽量先过滤数据,进行批量插入。不要先删再新增
+ StudentQuery sq = new StudentQuery();
+ sq.setStudentStatus(1);
+ sq.setClassIds(classIds);
+ List studentList = studentService.getValuesByQuery(sq);
+
+ // 或者学生的Ids
+ // 查询班级方式加入的学生
+ TeacherOpenCourseMergeStudentQuery existsStudentQuery = new TeacherOpenCourseMergeStudentQuery();
+ existsStudentQuery.setTeacherOpenCourseSchoolClassMergeStudentStatus(1);
+ existsStudentQuery.setTeacherOpenCourseId(teacherOpenCourseId);
+ existsStudentQuery.setTeacherOpenCourseSchoolClassMergeStudentJoinType(class_join);
+ List studentDelList =
+ teacherOpenCourseMergeStudentService.getValuesByQueryNotWithPermission(existsStudentQuery);
+
+ // 获取关联表要删除的主键Ids
+ String idsDelAdString = CollectionUtil.emptyIfNull(studentDelList).stream().map(
+ o -> o.getTeacherOpenCourseSchoolClassMergeStudentId().toString()).collect(joining(","));
+ // 删除 班级方式加入的学生
+ teacherOpenCourseMergeStudentDao.deleteByIds(idsDelAdString);
+
+ // 构建入库的学生列表
+ List mergeStudentList = studentList.stream()
+ .map(o -> {
+ TeacherOpenCourseMergeStudent mergeStudent = new TeacherOpenCourseMergeStudent();
+
+ mergeStudent.setStudentId(o.getStudentId());
+ mergeStudent.setTeacherOpenCourseId(teacherOpenCourseId);
+ mergeStudent.setTeacherOpenCourseSchoolClassMergeStudentStatus(1);
+ mergeStudent.setTeacherOpenCourseSchoolClassMergeStudentAddTime(now);
+ mergeStudent.setTeacherOpenCourseSchoolClassMergeStudentJoinType(class_join);
+ mergeStudent.setOrgId(orgId);
+
+ return mergeStudent;
+ }).collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
+
+ // 批量插入
+ teacherOpenCourseMergeStudentService.insertBatch(mergeStudentList);
+ return JsonResult.successMessage("新增成功");
+ }
+
+ return JsonResult.failMessage("新增失败," + msg);
+ }
+
+ return JsonResult.failMessage("新增失败, 请检查传递的参数!");
+ }
}
diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeStudentService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeStudentService.java
index 878c37cf..9b04533c 100644
--- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeStudentService.java
+++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeStudentService.java
@@ -32,6 +32,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import static com.ibeetl.admin.core.util.StreamUtils.listJoin;
import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser;
import static com.ibeetl.jlw.enums.OpenCourseMergeJoinTypeEnum.student_join;
@@ -46,7 +47,6 @@ import static com.ibeetl.jlw.enums.OpenCourseMergeJoinTypeEnum.student_join;
@Slf4j
public class TeacherOpenCourseMergeStudentService extends CoreBaseService implements DeleteResourcesBy{
-
@Autowired private UserConsoleService userConsoleService;
@Autowired private TeacherOpenCourseMergeStudentDao teacherOpenCourseMergeStudentDao;
@Autowired private TeacherOpenCourseMergeTeacherDao teacherOpenCourseMergeTeacherDao;
@@ -95,11 +95,23 @@ public class TeacherOpenCourseMergeStudentService extends CoreBaseService studentDelList = getValuesByQueryNotWithPermission(existsStudentQuery);
+ // 获取关联表要删除的主键Ids
+ String idsDelAdString = listJoin(studentDelList, TeacherOpenCourseMergeStudent::getTeacherOpenCourseSchoolClassMergeStudentId);
+ teacherOpenCourseMergeStudentDao.deleteByIds(idsDelAdString);
+
ToolUtils.deleteNullList(teacherOpenCourseMergeStudentList);
if(null != teacherOpenCourseMergeStudentList && teacherOpenCourseMergeStudentList.size()>0){
for(int i=0;i jsonToPO(String json) {
+ if (json != null && json.length() > 0 && JSONUtil.isTypeJSON(json)) {
+ if (JSONUtil.isTypeJSONArray(json)) {
+ return JSONUtil.toList(json, TeacherOpenCourseMergeSchoolClassQuery.class);
+ }
+ else if(JSONUtil.isTypeJSONObject(json)) {
+ return Collections.singletonList(JSONUtil.toBean(json, TeacherOpenCourseMergeSchoolClassQuery.class));
+ }
+ }
+
+ return Collections.emptyList();
+ }
}