修复课程全路径ID,用于搜索

beetlsql3-dev
Mlxa0324 2 years ago
parent 406af60556
commit 2f7dff2763

@ -155,6 +155,38 @@ public class CourseInfoService extends CoreBaseService<CourseInfo>{
}
/**
* ID
*
*
* @param courseInfo
* @param allCourseInfoList
* @return
*/
public String getCourseInfoFullId(CourseInfo courseInfo, final List<CourseInfo> allCourseInfoList) {
if (courseInfo == null) {
return "";
}
Long courseInfoId = courseInfo.getCourseInfoId();
Long courseInfoParentId = courseInfo.getCourseInfoParentId();
if (courseInfoParentId != null && !courseInfoParentId.equals(courseInfoId)) {
CourseInfo parent = allCourseInfoList.stream()
.filter(item -> item.getCourseInfoId().equals(courseInfoParentId)).findFirst().orElse(null);
String leftId = getCourseInfoFullId(parent, allCourseInfoList);
String leftText = "";
if (StrUtil.isNotBlank(leftId)) {
leftText = leftId + "_";
}
return leftText + courseInfoId;
}
return courseInfoId.toString();
}
public CourseInfo add(CourseInfoQuery courseInfoQuery){
CourseInfo courseInfo = courseInfoQuery.pojo();
@ -191,7 +223,7 @@ public class CourseInfoService extends CoreBaseService<CourseInfo>{
String courseInfoFullId = getCourseInfoFullId(courseInfo);
CourseInfo model = new CourseInfo();
model.setCourseInfoId(courseInfo.getCourseInfoId());
model.setCourseInfoFullId(courseInfoFullId);
model.setCourseInfoFullId(StrUtil.appendIfMissing(courseInfoFullId, "_"));
updateTemplate(model);
return courseInfo;
@ -1351,4 +1383,44 @@ public class CourseInfoService extends CoreBaseService<CourseInfo>{
flushCache(id);
}
}
/**
* courseInfoFullId
*
*/
public int batchAutoUpdateCourseInfoFullId() {
// 如果这个字段不为空的数据有问题,那么去查找其他方法,这里只修改为空的数据
List<CourseInfo> allData = courseInfoDao.all();
// 这些数据需要修复
List<CourseInfo> allFullIdIsNullList = allData.stream()
.filter(item -> StrUtil.isBlank(item.getCourseInfoFullId())).collect(Collectors.toList());
List<CourseInfo> updatePOList = new ArrayList<>();
// 遍历需要修复的数据
for (CourseInfo courseInfo : allFullIdIsNullList) {
// 获取到的新的全路径ID
String courseInfoFullId = getCourseInfoFullId(courseInfo, allData);
// 用于批量更新
CourseInfo updatePO = new CourseInfo();
updatePO.setCourseInfoId(courseInfo.getCourseInfoId());
updatePO.setCourseInfoFullId(StrUtil.appendIfMissing(courseInfoFullId, "_"));
updatePOList.add(updatePO);
}
// 批量更新全路径字段
if (!updatePOList.isEmpty()) {
updateBatchTemplate(updatePOList);
log.info("修复课程全路径成功,成功修复数量:{}", allFullIdIsNullList.size());
}
else {
log.info("暂无待修复的数据!");
}
return allFullIdIsNullList.size();
}
}

@ -1,5 +1,6 @@
package com.ibeetl.jlw.web;
import cn.hutool.core.util.StrUtil;
import cn.jlw.Interceptor.RFile;
import cn.jlw.Interceptor.SCoreUser;
import com.ibeetl.admin.core.annotation.Function;
@ -21,6 +22,7 @@ import org.apache.commons.logging.LogFactory;
import org.beetl.sql.core.engine.PageQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.Assert;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@ -359,4 +361,27 @@ public class CourseInfoController{
courseInfoService.drag(id, leftId, rightId);
return JsonResult.success();
}
/**
* : <br>
* ID
*
* @param coreUser
* @return {@link JsonResult}
* @Author: lx
* @Date: 2023/3/17 22:19
*/
@GetMapping(MODEL + "/batchAutoUpdateCourseInfoFullId.json")
@Function("batchAutoUpdateCourseInfoFullId")
@ResponseBody
public JsonResult batchAutoUpdateCourseInfoFullId(@SCoreUser CoreUser coreUser) {
Assert.isTrue(coreUser.isAdmin(), "该接口只允许超管访问!");
int updateCount = courseInfoService.batchAutoUpdateCourseInfoFullId();
if (updateCount == 0) {
return JsonResult.success("暂时没有需要修复的课程!");
}
return JsonResult.success(StrUtil.format("修复课程全路径成功,成功修复数量:{}", updateCount));
}
}

@ -13,6 +13,7 @@ import com.ibeetl.admin.core.file.FileService;
import com.ibeetl.admin.core.web.JsonResult;
import com.ibeetl.jlw.entity.CourseInfo;
import com.ibeetl.jlw.entity.ResourcesInfo;
import com.ibeetl.jlw.entity.vo.ResourcesCourseInfoAuthDetailsVO;
import com.ibeetl.jlw.enums.MoveEnum;
import com.ibeetl.jlw.service.CourseInfoService;
import com.ibeetl.jlw.service.ResourcesInfoService;
@ -33,6 +34,7 @@ import org.springframework.web.servlet.ModelAndView;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
@ -40,6 +42,8 @@ import java.util.Arrays;
import java.util.List;
import static cn.hutool.core.util.ArrayUtil.join;
import static cn.hutool.core.util.ObjectUtil.defaultIfNull;
import static com.ibeetl.admin.core.util.StreamUtils.listJoin;
import static com.ibeetl.jlw.enums.AddTypeEnum.ADMIN_ADD;
import static com.ibeetl.jlw.enums.AddTypeEnum.FACULTY_ADD;
@ -145,18 +149,17 @@ public class ResourcesInfoController{
public JsonResult<PageQuery> list(ResourcesInfoQuery condition, @SCoreUser CoreUser coreUser){
PageQuery page = condition.getPageQuery();
if (!coreUser.isAdmin()) {
String courseInfoIds =
universitiesCollegesJurisdictionCurriculumResourcesService.getResourcesCourseInfoAuthDetails(coreUser.getOrgId()).getAllAuthCourseInfoIds();
if (StrUtil.isNotBlank(courseInfoIds)) {
condition.setOrgIdPlural(join(Arrays.asList(coreUser.getOrgId(), 1L, null).toArray(), ","));
condition.setCourseInfoIds(courseInfoIds);
}
// 如果为空,代表没有授权课程
else {
return JsonResult.success(page);
}
if (coreUser.isUniAdmin()) {
condition.setOrgIdPlural(join(Arrays.asList(coreUser.getOrgId(), 1L).toArray(), ","));
// 查询已经授权的课程ID。
// 理论课程授权表universities_colleges_jurisdiction_curriculum_resources查询理论课程授权给院校的数据
Serializable courseInfoIds = defaultIfNull(condition.getCourseInfoId(), condition.getCourseInfoIds());
ResourcesCourseInfoAuthDetailsVO resourcesCourseInfoAuthDetails =
universitiesCollegesJurisdictionCurriculumResourcesService.getResourcesCourseInfoAuthDetails(coreUser.getOrgId());
Serializable ifNullCourseInfoIds = defaultIfNull(courseInfoIds, listJoin(resourcesCourseInfoAuthDetails.getTheoryCourseList(), CourseInfo::getCourseInfoId));
// 如果为空字符串,那么代表这个学校,还没有授权的课程,所以是不会显示任何东西的。
condition.setCourseInfoIds(StrUtil.blankToDefault(String.valueOf(ifNullCourseInfoIds), "未授权应用"));
}
resourcesInfoService.queryByCondition(page);

@ -56,6 +56,7 @@ 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;
import static com.ibeetl.admin.core.util.StreamUtils.listJoin;
import static com.ibeetl.admin.core.util.excelGroupValidation.ExcelUtil.replaceNameName;
/**
@ -161,15 +162,13 @@ public class ResourcesQuestionController{
}
if (coreUser.isUniAdmin()) {
condition.setOrgIdPlural(join(Arrays.asList(coreUser.getOrgId(), 1L, null).toArray(), ","));
condition.setOrgIdPlural(join(Arrays.asList(coreUser.getOrgId(), 1L).toArray(), ","));
// 查询已经授权的课程ID。
// 应用课程查询resources_application_course表应用和课程的绑定关系
// 理论课程授权表universities_colleges_jurisdiction_curriculum_resources查询理论课程授权给院校的数据
// 考证类课程:查询,不需要二次授权
Serializable courseInfoIds = defaultIfNull(condition.getCourseInfoId(), condition.getCourseInfoIds());
ResourcesCourseInfoAuthDetailsVO resourcesCourseInfoAuthDetails =
universitiesCollegesJurisdictionCurriculumResourcesService.getResourcesCourseInfoAuthDetails(coreUser.getOrgId());
Serializable ifNullCourseInfoIds = defaultIfNull(courseInfoIds, resourcesCourseInfoAuthDetails.getAllAuthCourseInfoIds());
Serializable ifNullCourseInfoIds = defaultIfNull(courseInfoIds, listJoin(resourcesCourseInfoAuthDetails.getTheoryCourseList(), CourseInfo::getCourseInfoId));
// 如果为空字符串,那么代表这个学校,还没有授权的课程,所以是不会显示任何东西的。
condition.setCourseInfoIds(StrUtil.blankToDefault(String.valueOf(ifNullCourseInfoIds), "未授权应用"));

@ -37,11 +37,7 @@ queryByCondition
and t.org_id =#orgId#
@}
@if(!isEmpty(orgIdPlural)){
and (find_in_set(t.org_id, #orgIdPlural#)
@if(contain("null", orgIdPlural)){
or t.org_id is null
@}
)
and (find_in_set(ifnull(t.org_id, 1), #orgIdPlural#))
@}
@if(!isEmpty(courseInfoFullId)){
and a.course_info_full_id like #courseInfoFullId+"%"#

@ -91,11 +91,7 @@ queryByCondition
and t.org_id =#orgId#
@}
@if(!isEmpty(orgIdPlural)){
and (find_in_set(t.org_id, #orgIdPlural#)
@if(contain("null", orgIdPlural)){
or t.org_id is null
@}
)
and (find_in_set(ifnull(t.org_id, 1), #orgIdPlural#))
@}
@if(isEmpty(seeSelf) && !isEmpty(userId)){
and t.user_id =#userId#

@ -8,7 +8,9 @@
isShowGroupName 显示分组名称默认true;
filterName 过滤的分类名称多个逗号隔开只支持【应用课程类】、【理论课程类】、【考证课程类】showGroupName为false也会过滤数据。
*/
var newId = !isEmpty(id) ? id : ('select_id_' + name + '_' + @cn.hutool.core.util.RandomUtil.randomString(10));
// 传入的标签ID如果为空则生成规则 select_id_{标签name}_生成长度为10的字符串
var newId = !isEmpty(id) ? id : ('select_id_' + (name!'0') + '_' + @cn.hutool.core.util.RandomUtil.randomString(10));
-->
<select name="${name!''}" id="${newId ! ''}" lay-verify="" lay-search lay-filter="select_courseInfoIds">
<option value="">请选择</option>

Loading…
Cancel
Save