From 321463932df6197835116b32a6d61d884452aefc Mon Sep 17 00:00:00 2001 From: yaodan <1421553879@qq.com> Date: Sat, 29 Apr 2023 03:26:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E5=BC=80=E8=AF=BE?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=8E=88=E6=9D=83=E8=AF=BE=E6=97=B6=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E8=AF=BE=E7=A8=8B=E5=AE=9E=E8=AE=AD=EF=BC=88=E6=9C=AA?= =?UTF-8?q?=E5=AE=8C=E6=95=B4=EF=BC=8C=E8=BF=98=E5=B7=AE=E9=A2=98=E7=9B=AE?= =?UTF-8?q?=E6=B2=A1=E5=A4=8D=E5=88=B6=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ibeetl/jlw/dao/HandsOnDao.java | 2 + .../java/com/ibeetl/jlw/entity/HandsOn.java | 24 +- .../ibeetl/jlw/service/HandsOnService.java | 4 + .../TeacherOpenCourseHandsOnService.java | 309 ++++++++++++++---- ...acherOpenCourseMergeCourseInfoService.java | 149 +++------ .../ibeetl/jlw/web/query/HandsOnQuery.java | 4 +- web/src/main/resources/sql/jlw/handsOn.md | 36 ++ .../sql/jlw/handsOnSimulationTasks.md | 2 +- 8 files changed, 338 insertions(+), 192 deletions(-) diff --git a/web/src/main/java/com/ibeetl/jlw/dao/HandsOnDao.java b/web/src/main/java/com/ibeetl/jlw/dao/HandsOnDao.java index 91dfff8c..bcc3d4eb 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/HandsOnDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/HandsOnDao.java @@ -25,4 +25,6 @@ public interface HandsOnDao extends BaseMapper{ int updateGivenByIds(HandsOnQuery handsOnQuery); List getByIds(String ids); List getValuesByQuery(HandsOnQuery handsOnQuery); + + List getValuesByQueryNotPermission(HandsOnQuery handsOnQuery); } diff --git a/web/src/main/java/com/ibeetl/jlw/entity/HandsOn.java b/web/src/main/java/com/ibeetl/jlw/entity/HandsOn.java index 3dfc71bf..232b7f9f 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/HandsOn.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/HandsOn.java @@ -1,16 +1,12 @@ package com.ibeetl.jlw.entity; -import javax.validation.constraints.NotNull; - -import com.ibeetl.admin.core.annotation.Query; +import com.ibeetl.admin.core.annotation.Dict; import com.ibeetl.admin.core.entity.BaseEntity; -import org.beetl.sql.annotation.entity.*; - import com.ibeetl.admin.core.util.ValidateConfig; +import org.beetl.sql.annotation.entity.AssignID; +import org.beetl.sql.annotation.entity.AutoID; -import com.ibeetl.admin.core.annotation.Dict; - -import java.math.BigDecimal; +import javax.validation.constraints.NotNull; import java.util.Date; /* @@ -48,6 +44,13 @@ public class HandsOn extends BaseEntity{ private Date addTime; private Long orgId; + private Long userId; + //附件 + private String trainingData; + + private Integer handsOnStatus; + + public Date getAddTime() { return addTime; } @@ -80,11 +83,6 @@ public class HandsOn extends BaseEntity{ this.trainingData = trainingData; } - private Long userId; - //附件 - private String trainingData; - - private Integer handsOnStatus; public Integer getHandsOnStatus() { return handsOnStatus; diff --git a/web/src/main/java/com/ibeetl/jlw/service/HandsOnService.java b/web/src/main/java/com/ibeetl/jlw/service/HandsOnService.java index 2884a97a..817031df 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/HandsOnService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/HandsOnService.java @@ -180,4 +180,8 @@ public class HandsOnService extends CoreBaseService{ } + + public List getValuesByQueryNotPermission(HandsOnQuery handsOnQuery) { + return handsOnDao.getValuesByQueryNotPermission(handsOnQuery); + } } diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnService.java index 70015e0d..4eece74f 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseHandsOnService.java @@ -2,6 +2,7 @@ package com.ibeetl.jlw.service; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.NumberUtil; import cn.jlw.util.ToolUtils; import com.alibaba.fastjson.JSON; @@ -14,6 +15,7 @@ import com.ibeetl.admin.core.web.JsonReturnCode; import com.ibeetl.jlw.dao.TeacherOpenCourseHandsOnDao; import com.ibeetl.jlw.entity.*; import com.ibeetl.jlw.entity.vo.StudentHandsOnVO; +import com.ibeetl.jlw.enums.GlobalUpStatusEnum; import com.ibeetl.jlw.enums.HandsOnTaskEnum; import com.ibeetl.jlw.web.query.*; import lombok.extern.slf4j.Slf4j; @@ -26,11 +28,14 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import javax.annotation.Nullable; import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; +import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser; + /** * 教师开课-课程实操 Service * 当分布式ID开启后请勿使用insert(*,true) @@ -40,49 +45,75 @@ import java.util.stream.Collectors; @Transactional @Validated @Slf4j -public class TeacherOpenCourseHandsOnService extends CoreBaseService implements DeleteResourcesBy{ - - @Autowired private TeacherOpenCourseHandsOnDao teacherOpenCourseHandsOnDao; - @Autowired private HandsOnService handsOnService; - @Autowired private TeacherOpenCourseHandsOnSimulationTasksService teacherOpenCourseHandsOnSimulationTasksService; - @Autowired private HandsOnSimulationTasksService handsOnSimulationTasksService; - @Autowired private HandsOnAchievementService handsOnAchievementService; - @Autowired private StudentService studentService; - - @Autowired private StudentHandsOnTaskVideoService videoService; - @Autowired private StudentHandsOnTaskPptService pptService; - @Autowired private StudentHandsOnTaskStepService stepService; - @Autowired private StudentHandsOnTaskTheoryService theoryService; - @Autowired private StudentHandsOnTaskReportService reportService; - - @Autowired private TeacherOpenCourseScoreDashboardService teacherOpenCourseScoreDashboardService; - - - - public PageQueryqueryByCondition(PageQuery query){ - PageQuery ret = teacherOpenCourseHandsOnDao.queryByCondition(query); +public class TeacherOpenCourseHandsOnService extends CoreBaseService implements DeleteResourcesBy { + + @Autowired + private TeacherOpenCourseHandsOnDao teacherOpenCourseHandsOnDao; + @Autowired + private HandsOnService handsOnService; + @Autowired + private TeacherOpenCourseHandsOnSimulationTasksService teacherOpenCourseHandsOnSimulationTasksService; + @Autowired + private HandsOnSimulationTasksService handsOnSimulationTasksService; + @Autowired + private HandsOnAchievementService handsOnAchievementService; + @Autowired + private StudentService studentService; + + @Autowired + private StudentHandsOnTaskVideoService videoService; + @Autowired + private StudentHandsOnTaskPptService pptService; + @Autowired + private StudentHandsOnTaskStepService stepService; + @Autowired + private StudentHandsOnTaskTheoryService theoryService; + @Autowired + private StudentHandsOnTaskReportService reportService; + + @Autowired + private TeacherOpenCourseScoreDashboardService teacherOpenCourseScoreDashboardService; + + @Autowired + private HandsOnSimulationTasksAssessmentService handsOnSimulationTasksAssessmentService; + + @Autowired + private TeacherOpenCourseHandsOnSimulationTasksAssessmentService teacherOpenCourseHandsOnSimulationTasksAssessmentService; + + @Autowired + private HandsOnSimulationTasksFileService handsOnSimulationTasksFileService; + + @Autowired + private TeacherOpenCourseHandsOnSimulationTasksFileService teacherOpenCourseHandsOnSimulationTasksFileService; + + // 这里简单使用一个雪花算法,来生成新的ID + private static final Snowflake snowflake = new Snowflake(); + + + public PageQuery queryByCondition(PageQuery query) { + PageQuery ret = teacherOpenCourseHandsOnDao.queryByCondition(query); queryListAfter(ret.getList()); return ret; } - public PageQueryqueryByConditionQuery(PageQuery query){ - PageQuery ret = teacherOpenCourseHandsOnDao.queryByConditionQuery(query); + public PageQuery queryByConditionQuery(PageQuery query) { + PageQuery ret = teacherOpenCourseHandsOnDao.queryByConditionQuery(query); queryListAfter(ret.getList()); return ret; } - public void deleteByList(List list){ + public void deleteByList(List list) { String ids = ""; ToolUtils.deleteNullList(list); - for(int i=0;null != list && i teacherOpenCourseHandsOnList = new ArrayList<>(); try { @@ -98,11 +129,12 @@ public class TeacherOpenCourseHandsOnService extends CoreBaseService0){ - for(int i=0;i 0) { + for (int i = 0; i < teacherOpenCourseHandsOnList.size(); i++) { TeacherOpenCourseHandsOn teacherOpenCourseHandsOn = teacherOpenCourseHandsOnList.get(i); teacherOpenCourseHandsOn.setUserId(teacherOpenCourseHandsOnQuery.getUserId()); teacherOpenCourseHandsOn.setOrgId(teacherOpenCourseHandsOnQuery.getOrgId()); @@ -112,7 +144,7 @@ public class TeacherOpenCourseHandsOnService extends CoreBaseService 0; - if(!flag){ + if (!flag) { msg = "更新指定参数失败"; } - }else{ + } else { msg = "指定参数为空"; } return msg; } - public List getValues (Object paras){ + public List getValues(Object paras) { return sqlManager.select(SqlId.of("jlw.teacherOpenCourseHandsOn.getTeacherOpenCourseHandsOnValues"), TeacherOpenCourseHandsOn.class, paras); } - public List getValuesByQuery (TeacherOpenCourseHandsOnQuery teacherOpenCourseHandsOnQuery){ + public List getValuesByQuery(TeacherOpenCourseHandsOnQuery teacherOpenCourseHandsOnQuery) { return teacherOpenCourseHandsOnDao.getValuesByQuery(teacherOpenCourseHandsOnQuery); } - public List getValuesByQueryNotWithPermission (TeacherOpenCourseHandsOnQuery teacherOpenCourseHandsOnQuery){ + public List getValuesByQueryNotWithPermission(TeacherOpenCourseHandsOnQuery teacherOpenCourseHandsOnQuery) { return teacherOpenCourseHandsOnDao.getValuesByQueryNotWithPermission(teacherOpenCourseHandsOnQuery); } - public TeacherOpenCourseHandsOn getInfo (Long handsOnId){ + public TeacherOpenCourseHandsOn getInfo(Long handsOnId) { TeacherOpenCourseHandsOnQuery teacherOpenCourseHandsOnQuery = new TeacherOpenCourseHandsOnQuery(); teacherOpenCourseHandsOnQuery.setHandsOnId(handsOnId); List list = teacherOpenCourseHandsOnDao.getValuesByQuery(teacherOpenCourseHandsOnQuery); - if(null != list && list.size()>0){ + if (null != list && list.size() > 0) { return list.get(0); - }else{ + } else { return null; } } - public TeacherOpenCourseHandsOn getInfo (TeacherOpenCourseHandsOnQuery teacherOpenCourseHandsOnQuery){ + public TeacherOpenCourseHandsOn getInfo(TeacherOpenCourseHandsOnQuery teacherOpenCourseHandsOnQuery) { List list = teacherOpenCourseHandsOnDao.getValuesByQuery(teacherOpenCourseHandsOnQuery); - if(null != list && list.size()>0){ + if (null != list && list.size() > 0) { return list.get(0); - }else{ + } else { return null; } } /** * 同步课程实操 - * @param courseInfoId 课程id + * + * @param courseInfoId 课程id * @param teacherOpenCourseId 开课ID * @return */ @@ -191,7 +224,7 @@ public class TeacherOpenCourseHandsOnService extends CoreBaseService getHandsOnList(GetHandsOnListParam param) { PageQuery teacherOpenCourseHandsOns = teacherOpenCourseHandsOnDao.getHandsOnList(param.getPageQuery()); - handsOnListHandler(teacherOpenCourseHandsOns.getList(),param); + handsOnListHandler(teacherOpenCourseHandsOns.getList(), param); return teacherOpenCourseHandsOns; } + public List getHandsOnListNotPage(GetHandsOnListParam param) { List teacherOpenCourseHandsOns = teacherOpenCourseHandsOnDao.getHandsOnListNotPage(param); - handsOnListHandler(teacherOpenCourseHandsOns,param); + handsOnListHandler(teacherOpenCourseHandsOns, param); return teacherOpenCourseHandsOns; } - private void handsOnListHandler(List teacherOpenCourseHandsOnLists,GetHandsOnListParam param){ + private void handsOnListHandler(List teacherOpenCourseHandsOnLists, GetHandsOnListParam param) { List handIds = teacherOpenCourseHandsOnLists.stream().map(TeacherOpenCourseHandsOnList::getHandsOnId).collect(Collectors.toList()); List achievementList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(handIds)) { @@ -239,7 +272,6 @@ public class TeacherOpenCourseHandsOnService extends CoreBaseService> getExcelValues(TeacherOpenCourseHandsOnQuery teacherOpenCourseHandsOnQuery) { return teacherOpenCourseHandsOnDao.getExcelValues(teacherOpenCourseHandsOnQuery); } @@ -300,7 +332,6 @@ public class TeacherOpenCourseHandsOnService extends CoreBaseService taskTheoryList = theoryService.getValuesByQueryNotWithPermission(theoryQuery); if (CollectionUtils.isNotEmpty(taskTheoryList)) { BigDecimal videoScore = taskTheoryList.stream().map(StudentHandsOnTaskTheory::getTheoryScore).reduce(BigDecimal.ZERO, BigDecimal::add); - bigDecimal = bigDecimal.add(videoScore == null ? BigDecimal.ZERO: videoScore); + bigDecimal = bigDecimal.add(videoScore == null ? BigDecimal.ZERO : videoScore); decimal = decimal.add(BigDecimal.ONE); } - }else if(HandsOnTaskEnum.TASK_PRACTICAL_TRAINING.status.equals(task.getTaskType())) { + } else if (HandsOnTaskEnum.TASK_PRACTICAL_TRAINING.status.equals(task.getTaskType())) { StudentHandsOnTaskStepQuery stepQuery = new StudentHandsOnTaskStepQuery(); stepQuery.setHandsOnTaskId(taskId); stepQuery.setStudentId(studentId); @@ -394,25 +426,25 @@ public class TeacherOpenCourseHandsOnService extends CoreBaseService reportList =reportService.getValuesByQueryNotWithPermission(reportQuery); + List reportList = reportService.getValuesByQueryNotWithPermission(reportQuery); if (CollectionUtils.isNotEmpty(reportList)) { StudentHandsOnTaskReport taskTheory = reportList.get(0); BigDecimal videoScore = taskTheory.getReportScore(); - bigDecimal = bigDecimal.add(videoScore == null ? BigDecimal.ZERO: videoScore); + bigDecimal = bigDecimal.add(videoScore == null ? BigDecimal.ZERO : videoScore); decimal = decimal.add(BigDecimal.ONE); } } } - int schedule = NumberUtil.div(decimal, BigDecimal.valueOf(tasksList.size()),2).multiply(BigDecimal.valueOf(100)).intValue(); + int schedule = NumberUtil.div(decimal, BigDecimal.valueOf(tasksList.size()), 2).multiply(BigDecimal.valueOf(100)).intValue(); studentHandsOnVO.setSchedule(schedule); - }else { + } else { studentHandsOnVO.setSchedule(0); } studentHandsOnVO.setStudentScore(bigDecimal); @@ -428,17 +460,156 @@ public class TeacherOpenCourseHandsOnService extends CoreBaseService courseInfoIdPair) { + + Date now = new Date(); + CoreUser currentUser = getUser(); + if (currentUser==null){ + throw new PlatformException("请先登录"); + } + HandsOnQuery handsOnQuery = new HandsOnQuery(); + //归属课程 + handsOnQuery.setCourseInfoId(courseInfoId); + // 已上架的 + handsOnQuery.setHandsOnStatus(GlobalUpStatusEnum.UP.getCode()); + List handsOnList = handsOnService.getValuesByQuery(handsOnQuery); + + if (CollectionUtils.isEmpty(handsOnList)) { + return; + } + + //handsOnList 转换为 TeacherOpenCourseHandsOn + + // 拷贝部分字段映射 + // 拷贝 + List teacherOpenCourseHandsOnList = new ArrayList<>(BeanUtil.copyToList(handsOnList, TeacherOpenCourseHandsOn.class)); + + + + Map handsOnIdOldToNewMap = new HashMap<>(); + + for (TeacherOpenCourseHandsOn teacherOpenCourseHandsOn : teacherOpenCourseHandsOnList) { + Long handsOnIdTemp = teacherOpenCourseHandsOn.getHandsOnId(); + String courseChildNodeTemp = teacherOpenCourseHandsOn.getCourseChildNode(); + + Long newHandsOnId = snowflake.nextId(); + handsOnIdOldToNewMap.put(handsOnIdTemp, newHandsOnId); + teacherOpenCourseHandsOn.setCourseChildNode(courseInfoIdPair.get(Long.parseLong(courseChildNodeTemp)).toString()); + teacherOpenCourseHandsOn.setHandsOnId(newHandsOnId); + teacherOpenCourseHandsOn.setTeacherOpenCourseId(teacherOpenCourseId); + //别问我这里为什么放这个,他们自己的代码就是这样的 + teacherOpenCourseHandsOn.setCourseInfoId(teacherOpenCourseId); + teacherOpenCourseHandsOn.setOrgId(currentUser.getOrgId()); + teacherOpenCourseHandsOn.setUserId(currentUser.getId()); + teacherOpenCourseHandsOn.setAddTime(now); + } + // 批量插入 + insertBatch(teacherOpenCourseHandsOnList); + + String handsOnIds = handsOnIdOldToNewMap.keySet().stream().map(String::valueOf).collect(Collectors.joining(",")); + HandsOnSimulationTasksQuery handsOnSimulationTasksQuery = new HandsOnSimulationTasksQuery(); + handsOnSimulationTasksQuery.setHandsOnIdPlural(handsOnIds); + List handsOnSimulationTasksList = handsOnSimulationTasksService.getValuesByQuery(handsOnSimulationTasksQuery); + + // 拷贝部分字段映射 + // 拷贝 + List teacherOpenCourseHandsOnSimulationTasksList = new ArrayList<>(BeanUtil.copyToList(handsOnSimulationTasksList, TeacherOpenCourseHandsOnSimulationTasks.class)); + + + + Map simulationTaskOldToNewMap = new HashMap<>(); + + teacherOpenCourseHandsOnSimulationTasksList.forEach(teacherOpenCourseHandsOnSimulationTasks -> { + Long newHandsOnId = handsOnIdOldToNewMap.get(teacherOpenCourseHandsOnSimulationTasks.getHandsOnId()); + teacherOpenCourseHandsOnSimulationTasks.setHandsOnId(newHandsOnId); + teacherOpenCourseHandsOnSimulationTasks.setTeacherOpenCourseId(teacherOpenCourseId); + teacherOpenCourseHandsOnSimulationTasks.setOrgId(currentUser.getOrgId()); + teacherOpenCourseHandsOnSimulationTasks.setUserId(currentUser.getId()); + teacherOpenCourseHandsOnSimulationTasks.setAddTime(now); + + Long oldTaskId = teacherOpenCourseHandsOnSimulationTasks.getTaskId(); + Long newTaskId = snowflake.nextId(); + simulationTaskOldToNewMap.put(oldTaskId, newTaskId); + teacherOpenCourseHandsOnSimulationTasks.setTaskId(newTaskId); + }); + + // 批量插入 + teacherOpenCourseHandsOnSimulationTasksService.insertBatch(teacherOpenCourseHandsOnSimulationTasksList); + + + HandsOnSimulationTasksAssessmentQuery handsOnSimulationTasksAssessmentQuery = new HandsOnSimulationTasksAssessmentQuery(); + handsOnSimulationTasksAssessmentQuery.setHandsOnIdPlural(handsOnIds); + + List handsOnSimulationTasksAssessmentList = handsOnSimulationTasksAssessmentService.getValuesByQuery(handsOnSimulationTasksAssessmentQuery); + + // 拷贝部分字段映射 + // 拷贝 + List teacherOpenCourseHandsOnSimulationTasksAssessmentList = new ArrayList<>(BeanUtil.copyToList(handsOnSimulationTasksAssessmentList, TeacherOpenCourseHandsOnSimulationTasksAssessment.class)); + + teacherOpenCourseHandsOnSimulationTasksAssessmentList.forEach(teacherOpenCourseHandsOnSimulationTasksAssessment -> { + teacherOpenCourseHandsOnSimulationTasksAssessment.setHandsOnTaskId(simulationTaskOldToNewMap.get(teacherOpenCourseHandsOnSimulationTasksAssessment.getHandsOnTaskId())); + teacherOpenCourseHandsOnSimulationTasksAssessment.setHandsOnId(handsOnIdOldToNewMap.get(teacherOpenCourseHandsOnSimulationTasksAssessment.getHandsOnId())); + + teacherOpenCourseHandsOnSimulationTasksAssessment.setOrgId(currentUser.getOrgId()); + teacherOpenCourseHandsOnSimulationTasksAssessment.setUserId(currentUser.getId()); + teacherOpenCourseHandsOnSimulationTasksAssessment.setHandsOnSimulationTasksAssessmentId(snowflake.nextId()); + teacherOpenCourseHandsOnSimulationTasksAssessment.setAddTime(now); + }); + + // 批量插入 + teacherOpenCourseHandsOnSimulationTasksAssessmentService.insertBatch(teacherOpenCourseHandsOnSimulationTasksAssessmentList); + + + HandsOnSimulationTasksFileQuery handsOnSimulationTasksFileQuery = new HandsOnSimulationTasksFileQuery(); + handsOnSimulationTasksFileQuery.setHandsOnIdPlural(handsOnIds); + + + List handsOnSimulationTasksFileList = handsOnSimulationTasksFileService.getValuesByQuery(handsOnSimulationTasksFileQuery); + + // 拷贝部分字段映射 + // 拷贝 + List teacherOpenCourseHandsOnSimulationTasksFileList = new ArrayList<>(BeanUtil.copyToList(handsOnSimulationTasksFileList, TeacherOpenCourseHandsOnSimulationTasksFile.class)); + + + teacherOpenCourseHandsOnSimulationTasksFileList.forEach(item -> { + item.setTaskId(simulationTaskOldToNewMap.get(item.getTaskId())); + item.setHandsOnId(handsOnIdOldToNewMap.get(item.getHandsOnId())); + item.setTeacherOpenCourseId(teacherOpenCourseId); + item.setOrgId(currentUser.getOrgId()); + item.setUserId(currentUser.getId()); + item.setTaskFileId(snowflake.nextId()); + item.setAddTime(now); + }); + + // 批量插入 + teacherOpenCourseHandsOnSimulationTasksFileService.insertBatch(teacherOpenCourseHandsOnSimulationTasksFileList); + + + + } } diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java index 4b137dbf..0cbcb2f3 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java @@ -109,6 +109,10 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService idSet = courseInfoList.stream().filter(item -> Integer.valueOf(2).equals(item.getCourseInfoType())) - .map(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoId).collect(toSet()); + Set idSet = courseInfoList.stream().filter(item -> Integer.valueOf(2).equals(item.getCourseInfoType())).map(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoId).collect(toSet()); if (ObjectUtil.isNotEmpty(idSet)) { teacherOpenCourseQuestionSettingService.deleteSettingAndSnapByIds(join(idSet.toArray(), ",")); @@ -266,9 +269,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService questionSettingOptions, Map courseInfoIdPair) { + public JsonResult addCourseAndQuestionWithQuestionSnap(@Validated(ValidateConfig.ADD.class) @NotNull(message = "开课题目信息不能为空!") TeacherOpenCourseMergeCourseInfoQuery mergeCourseInfoQuery, @Nullable List questionSettingOptions, Map courseInfoIdPair) { getParentCourseIdIfTypeEquals2(mergeCourseInfoQuery); // 添加开课课程表 @@ -324,12 +325,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService pIdpt = TeacherOpenCourseMergeCourseInfo::getCourseInfoParentId; // 课程节点的信息 - TeacherOpenCourseMergeCourseInfo courseTargetInfo = lambdaQuery - .andEq(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseId, teacherOpenCourseId) - .andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoStatus, 1) - .andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoType, 1) - .and(lambdaQuery.condition().andEq(pIdpt, "").orIsNull(pIdpt)) - .single(); + TeacherOpenCourseMergeCourseInfo courseTargetInfo = lambdaQuery.andEq(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseId, teacherOpenCourseId).andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoStatus, 1).andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoType, 1).and(lambdaQuery.condition().andEq(pIdpt, "").orIsNull(pIdpt)).single(); return courseTargetInfo; } @@ -432,23 +428,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService map = new HashMap<>();//获取需要的表头的列 @@ -598,8 +578,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService copyToList, - final Long parentId, ConcurrentHashMap courseInfoIdPair) { + public void batchUpdateSomeMergeId(List copyToList, final Long parentId, ConcurrentHashMap courseInfoIdPair) { // 转换成线程安全的集合,来并行操作。 List safeList = new CopyOnWriteArrayList<>(copyToList); @@ -630,8 +609,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService courseInfoIdPair = new HashMap<>(initCourseInfoIdPair); // 查找列表中所有的ID - Set mergeCourseInfoIdSet = copyToList.stream() - .map(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoId).collect(toSet()); + Set mergeCourseInfoIdSet = copyToList.stream().map(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoId).collect(toSet()); for (Long oldId : mergeCourseInfoIdSet) { // 只取第一次ID对,后面加进来的丢弃 @@ -654,8 +632,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService copyToList, - CopyOnWriteArrayList result) { + public void treeListConvertArrayList(List copyToList, CopyOnWriteArrayList result) { // 启用并行操作,使用线程安全的集合用来保存 copyToList.stream().parallel().forEach(item -> { result.add(BeanUtil.copyProperties(item, TeacherOpenCourseMergeCourseInfo.class)); @@ -727,8 +704,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService courseInfoList, - @NotEmpty(message = "ID对不能为空!") Map somecourseInfoIdPair) { + public void updateSpecifyMergeCourseInfoIdTargetList(List courseInfoList, @NotEmpty(message = "ID对不能为空!") Map somecourseInfoIdPair) { for (TeacherOpenCourseMergeCourseInfo courseInfo : courseInfoList) { if (somecourseInfoIdPair.containsKey(courseInfo.getTeacherOpenCourseMergeCourseInfoId())) { courseInfo.setTeacherOpenCourseMergeCourseInfoId(somecourseInfoIdPair.get(courseInfo.getTeacherOpenCourseMergeCourseInfoId())); @@ -750,8 +726,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService copyFromCourseInfo(@NotEmpty(message = "系统课程ID不能为空!") Set courseInfoIds, - @NotNull(message = "开课ID不能为空!") final Long teacherOpenCourseId) { + public Map copyFromCourseInfo(@NotEmpty(message = "系统课程ID不能为空!") Set courseInfoIds, @NotNull(message = "开课ID不能为空!") final Long teacherOpenCourseId) { ConcurrentHashMap courseInfoIdPair = new ConcurrentHashMap<>(16); // 查询是否绑定过课程 @@ -802,8 +777,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService mapping = MapUtil.of("courseInfoId", "teacherOpenCourseMergeCourseInfoId"); mapping.put("orderIndex", "teacherOpenCourseMergeCourseInfoOrder"); CopyOptions copyOptions = CopyOptions.create().setFieldMapping(mapping); - List copyToList = - BeanUtil.copyToList(chapterList, TeacherOpenCourseMergeCourseInfo.class, copyOptions); + List copyToList = BeanUtil.copyToList(chapterList, TeacherOpenCourseMergeCourseInfo.class, copyOptions); result.addAll(copyToList); } @@ -817,8 +791,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService courseInfoIds, - @NotNull(message = "开课ID不能为空!") final Long teacherOpenCourseId) { + public void importCourseInfo(@NotEmpty(message = "系统课程ID不能为空!") Set courseInfoIds, @NotNull(message = "开课ID不能为空!") final Long teacherOpenCourseId) { // 拷贝课程章节。返回的Map是不可修改的。 Map courseInfoIdPair = copyFromCourseInfo(courseInfoIds, teacherOpenCourseId); @@ -842,6 +815,9 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService getTreeByTeacherOpenCourseId( - @NotNull(message = "开课ID不能为空!") final Long teacherOpenCourseId) { + public Tree getTreeByTeacherOpenCourseId(@NotNull(message = "开课ID不能为空!") final Long teacherOpenCourseId) { // 查询开课下的课程章节小节等所有信息 - List courseInfoList = teacherOpenCourseMergeCourseInfoDao - .getByOpenCourseId(teacherOpenCourseId); + List courseInfoList = teacherOpenCourseMergeCourseInfoDao.getByOpenCourseId(teacherOpenCourseId); // 有@Dict注解的时候,再开启 // dictParser(courseInfoList); @@ -976,19 +946,15 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService filteredResourcesInfoList = resourcesInfoCopyOnWriteArrayList.stream() - .filter(it -> it.getTeacherOpenCourseMergeCourseInfoId().equals(courseInfoId)) - .sorted((o1, o2) -> { - if (ObjectUtil.isAllNotEmpty(o1.getOrderIndex(), o2.getOrderIndex())) { - return o1.getOrderIndex().compareTo(o2.getOrderIndex()); - } - return 0; - }).collect(Collectors.toList()); + List filteredResourcesInfoList = resourcesInfoCopyOnWriteArrayList.stream().filter(it -> it.getTeacherOpenCourseMergeCourseInfoId().equals(courseInfoId)).sorted((o1, o2) -> { + if (ObjectUtil.isAllNotEmpty(o1.getOrderIndex(), o2.getOrderIndex())) { + return o1.getOrderIndex().compareTo(o2.getOrderIndex()); + } + return 0; + }).collect(Collectors.toList()); // 获取课程ids - String courseInfoIds = filteredResourcesInfoList.stream().map(TeacherOpenCourseMergeResourcesInfo::getTeacherOpenCourseMergeCourseInfoId) - .map(Objects::toString) - .collect(Collectors.joining(",")); + String courseInfoIds = filteredResourcesInfoList.stream().map(TeacherOpenCourseMergeResourcesInfo::getTeacherOpenCourseMergeCourseInfoId).map(Objects::toString).collect(Collectors.joining(",")); // 删除临时变量中的资源,提升下次查找的速度 resourcesInfoCopyOnWriteArrayList.removeIf(it -> courseInfoIds.contains(it.getTeacherOpenCourseMergeCourseInfoId().toString())); @@ -1083,14 +1049,10 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService courseInfoList, - @NotNull Long filterTeacherOpenCourseMergeCourseInfoId, - Collection result) { + public void getCourseResourcesByList(@NotNull Collection courseInfoList, @NotNull Long filterTeacherOpenCourseMergeCourseInfoId, Collection result) { for (TeacherOpenCourseMergeCourseInfo courseInfo : courseInfoList) { // 先处理掉一些不合规的数据。防止死循环,过滤掉父类ID是他自己的情况 - if (courseInfo.getCourseInfoParentId() == null - || courseInfo.getCourseInfoParentId().equals(courseInfo.getTeacherOpenCourseMergeCourseInfoId()) - || courseInfo.getTeacherOpenCourseMergeCourseInfoId().equals(filterTeacherOpenCourseMergeCourseInfoId)) { + if (courseInfo.getCourseInfoParentId() == null || courseInfo.getCourseInfoParentId().equals(courseInfo.getTeacherOpenCourseMergeCourseInfoId()) || courseInfo.getTeacherOpenCourseMergeCourseInfoId().equals(filterTeacherOpenCourseMergeCourseInfoId)) { continue; } // 处理关系 @@ -1111,16 +1073,13 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService courseInfoList, - @NotNull Long filterTeacherOpenCourseMergeCourseInfoId, - TeacherOpenCourseMergeCourseInfo result) { + public void getTreeCourseResourcesByList(@NotNull Collection courseInfoList, @NotNull Long filterTeacherOpenCourseMergeCourseInfoId, TeacherOpenCourseMergeCourseInfo result) { List tempList = new ArrayList<>(); Iterator iterator = courseInfoList.iterator(); while (iterator.hasNext()) { TeacherOpenCourseMergeCourseInfo courseInfo = iterator.next(); // 先处理掉一些不合规的数据。防止死循环,过滤掉父类ID是他自己的情况 - if (courseInfo.getCourseInfoParentId() == null - || courseInfo.getCourseInfoParentId().equals(courseInfo.getTeacherOpenCourseMergeCourseInfoId())) { + if (courseInfo.getCourseInfoParentId() == null || courseInfo.getCourseInfoParentId().equals(courseInfo.getTeacherOpenCourseMergeCourseInfoId())) { iterator.remove(); continue; } @@ -1239,14 +1198,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService result = teacherOpenCourseMergeCourseInfoDao.createLambdaQuery() - .andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoType, mergeCourseInfo.getCourseInfoType()) - .andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoParentId, mergeCourseInfo.getCourseInfoParentId()) - .andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoStatus, 1) - .andNotEq(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoId, id) - .asc(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoOrder) - .limit(1, 1) - .select(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoOrder); + List result = teacherOpenCourseMergeCourseInfoDao.createLambdaQuery().andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoType, mergeCourseInfo.getCourseInfoType()).andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoParentId, mergeCourseInfo.getCourseInfoParentId()).andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoStatus, 1).andNotEq(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoId, id).asc(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoOrder).limit(1, 1).select(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoOrder); if (CollectionUtil.isEmpty(result)) { throw new PlatformException("已处于置顶状态!"); @@ -1262,15 +1214,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService result = teacherOpenCourseMergeCourseInfoDao.createLambdaQuery() - .andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoType, mergeCourseInfo.getCourseInfoType()) - .andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoParentId, mergeCourseInfo.getCourseInfoParentId()) - .andLess(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoOrder, defaultIfNull(mergeCourseInfo.getTeacherOpenCourseMergeCourseInfoOrder(), 50)) - .andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoStatus, 1) - .andNotEq(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoId, id) - .desc(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoOrder) - .limit(1, 2) - .select(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoOrder); + List result = teacherOpenCourseMergeCourseInfoDao.createLambdaQuery().andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoType, mergeCourseInfo.getCourseInfoType()).andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoParentId, mergeCourseInfo.getCourseInfoParentId()).andLess(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoOrder, defaultIfNull(mergeCourseInfo.getTeacherOpenCourseMergeCourseInfoOrder(), 50)).andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoStatus, 1).andNotEq(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoId, id).desc(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoOrder).limit(1, 2).select(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoOrder); if (CollectionUtil.isEmpty(result)) { throw new PlatformException("已处于置顶状态!"); @@ -1293,15 +1237,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService result = teacherOpenCourseMergeCourseInfoDao.createLambdaQuery() - .andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoType, mergeCourseInfo.getCourseInfoType()) - .andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoParentId, mergeCourseInfo.getCourseInfoParentId()) - .andGreat(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoOrder, defaultIfNull(mergeCourseInfo.getTeacherOpenCourseMergeCourseInfoOrder(), 50)) - .andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoStatus, 1) - .andNotEq(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoId, id) - .asc(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoOrder) - .limit(1, 2) - .select(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoOrder); + List result = teacherOpenCourseMergeCourseInfoDao.createLambdaQuery().andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoType, mergeCourseInfo.getCourseInfoType()).andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoParentId, mergeCourseInfo.getCourseInfoParentId()).andGreat(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoOrder, defaultIfNull(mergeCourseInfo.getTeacherOpenCourseMergeCourseInfoOrder(), 50)).andEq(TeacherOpenCourseMergeCourseInfo::getCourseInfoStatus, 1).andNotEq(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoId, id).asc(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoOrder).limit(1, 2).select(TeacherOpenCourseMergeCourseInfo::getTeacherOpenCourseMergeCourseInfoOrder); if (CollectionUtil.isEmpty(result)) { throw new PlatformException("已处于置底状态!"); @@ -1370,14 +1306,11 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService item.getTeacherOpenCourseMergeCourseInfoId().equals(id)).findFirst().get(); + TeacherOpenCourseMergeCourseInfo selfElement = allElement.stream().filter(item -> item.getTeacherOpenCourseMergeCourseInfoId().equals(id)).findFirst().get(); // 左侧元素 - TeacherOpenCourseMergeCourseInfo leftElement = allElement.stream() - .filter(item -> item.getTeacherOpenCourseMergeCourseInfoId().equals(leftId)).findFirst().orElse(null); + TeacherOpenCourseMergeCourseInfo leftElement = allElement.stream().filter(item -> item.getTeacherOpenCourseMergeCourseInfoId().equals(leftId)).findFirst().orElse(null); // 右侧元素 - TeacherOpenCourseMergeCourseInfo rightElement = allElement.stream() - .filter(item -> item.getTeacherOpenCourseMergeCourseInfoId().equals(rightId)).findFirst().orElse(null); + TeacherOpenCourseMergeCourseInfo rightElement = allElement.stream().filter(item -> item.getTeacherOpenCourseMergeCourseInfoId().equals(rightId)).findFirst().orElse(null); // 定义排序值 BigDecimal clacedOrder = null; diff --git a/web/src/main/java/com/ibeetl/jlw/web/query/HandsOnQuery.java b/web/src/main/java/com/ibeetl/jlw/web/query/HandsOnQuery.java index c6cc2027..42c2d6be 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/query/HandsOnQuery.java +++ b/web/src/main/java/com/ibeetl/jlw/web/query/HandsOnQuery.java @@ -34,6 +34,8 @@ public class HandsOnQuery extends PageParam { @Query(name = "数据集", display = false) private String trainingData; + private Integer handsOnStatus; + private String courseInfoIds; private Long courseInfoId_0; @@ -60,7 +62,7 @@ public class HandsOnQuery extends PageParam { this.courseInfoIds = courseInfoIds; } - private Integer handsOnStatus; + public Integer getHandsOnStatus() { return handsOnStatus; diff --git a/web/src/main/resources/sql/jlw/handsOn.md b/web/src/main/resources/sql/jlw/handsOn.md index 3bca7449..878371da 100644 --- a/web/src/main/resources/sql/jlw/handsOn.md +++ b/web/src/main/resources/sql/jlw/handsOn.md @@ -195,6 +195,9 @@ getValuesByQuery @if(!isEmpty(courseInfoId)){ and t.course_info_id =#courseInfoId# @} + @if(!isEmpty(courseInfoIds)){ + and t.course_info_id in (#text(courseInfoIds)#) + @} @if(!isEmpty(courseChildNode)){ and t.course_child_node =#courseChildNode# @} @@ -212,6 +215,39 @@ getValuesByQuery @} +getValuesByQueryNotPermission +=== + +* 根据不为空的参数进行查询(无权限) + + select t.* + from hands_on t + where 1=1 + @if(!isEmpty(handsOnId)){ + and t.hands_on_id =#handsOnId# + @} + @if(!isEmpty(courseInfoId)){ + and t.course_info_id =#courseInfoId# + @} + @if(!isEmpty(courseInfoIds)){ + and t.course_info_id in (#text(courseInfoIds)#) + @} + @if(!isEmpty(courseChildNode)){ + and t.course_child_node =#courseChildNode# + @} + @if(!isEmpty(handsOnName)){ + and t.hands_on_name =#handsOnName# + @} + @if(!isEmpty(handsOnRecommend)){ + and t.hands_on_recommend =#handsOnRecommend# + @} + @if(!isEmpty(teacherOpenCourseId)){ + and t.teacher_open_course_id =#teacherOpenCourseId# + @} + @if(!isEmpty(handsOnStatus)){ + and t.hands_on_status =#handsOnStatus# + @} + queryObjectByHandsOnIds === diff --git a/web/src/main/resources/sql/jlw/handsOnSimulationTasks.md b/web/src/main/resources/sql/jlw/handsOnSimulationTasks.md index 631da68d..25eb2ab9 100644 --- a/web/src/main/resources/sql/jlw/handsOnSimulationTasks.md +++ b/web/src/main/resources/sql/jlw/handsOnSimulationTasks.md @@ -338,7 +338,7 @@ getValuesByQuery and t.hands_on_id =#handsOnId# @} @if(!isEmpty(handsOnIdPlural)){ - and find_in_set(t.hands_on_id,#handsOnIdPlural#) + and t.hands_on_id in (#text(handsOnIdPlural)#) @} @if(!isEmpty(taskType)){ and t.task_type =#taskType#