From a2317d0b597ba8e7159d1faa9658dfeae344ea20 Mon Sep 17 00:00:00 2001 From: xiaozhequ <792962424@qq.com> Date: Mon, 24 Jun 2024 13:47:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E5=8F=AF=E6=9D=83=E9=99=90?= =?UTF-8?q?=E6=9B=B4=E6=94=B9=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/course/dto/CourseQueryDto.java | 9 +- .../service/impl/CourseServiceImpl.java | 138 +++++++++++------- 2 files changed, 84 insertions(+), 63 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/dto/CourseQueryDto.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/dto/CourseQueryDto.java index 0bca46f6..141d7ec6 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/dto/CourseQueryDto.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/dto/CourseQueryDto.java @@ -131,12 +131,5 @@ public class CourseQueryDto { * 登录人id */ private String userId; - /** - * 任务课件id - */ - private List courseIds; - /** - * 项目id - */ - private Long projectId; + } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java index d5d4ad10..75e84b1e 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java @@ -262,17 +262,7 @@ public class CourseServiceImpl implements ICourseService { public PageList findPage(int pageIndex, int pageSize, CourseQueryDto dto) { List filters = createFilters(dto); List filters2 = createFilters(dto); - String sql = "SELECT\n" + - "\ts.id \n" + - "FROM\n" + - "\tboe.student s \n" + - "WHERE\n" + - "\ts.deleted = 0 \n" + - "\tAND s.type = 1 \n" + - "\tAND s.pid = ?1\n" + - "\tand s.student_id=?2 "; - List list = courseTeacherDao.sqlFindList(sql,dto.getProjectId(),dto.getOrgAid()); -// String aid=getCurrent().getAccountId(); + List list = getStrings(dto); //有权限的查询,也同时查询出创建人的数据,在权限上 if(TempFilterConfig.Manager_CourseFile_ByOrgIds) { if(dto.getIsSystemAdmin()==null || !dto.getIsSystemAdmin()) { @@ -284,18 +274,17 @@ public class CourseServiceImpl implements ICourseService { List strings = Arrays.asList(split); // filters.add(FieldFilters.or(FieldFilters.in("orgId",strings),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); filters.add((FieldFilters.in("orgId",strings))); -// filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); - if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()&& !list.isEmpty()){ - filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",dto.getCourseIds()))); - }else{ + if(!list.isEmpty()){ + filters2.add(FieldFilters.or(FieldFilters.in("id",list),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); + }else { filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); } }else { // filters.add(FieldFilters.or(FieldFilters.eq("orgId",dto.getOrgIds()),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); filters.add(FieldFilters.eq("orgId",dto.getOrgIds())); - if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()&& !list.isEmpty()){ - filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",dto.getCourseIds()))); - }else{ + if(!list.isEmpty()){ + filters2.add(FieldFilters.or(FieldFilters.in("id",list),FieldFilters.eq("sysCreateAid",dto.getOrgAid()))); + }else { filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); } } @@ -304,9 +293,10 @@ public class CourseServiceImpl implements ICourseService { //log.info("【"+dto.getOrgAid()+"】 机构ids没有, 只查询自己创建的课程"); //没有机构权限,只能查出自己创建的 // filters.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); - if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()&& !list.isEmpty()){ - filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",dto.getCourseIds()))); - }else{ + if(!list.isEmpty()){ + filters2.add(FieldFilters.or(FieldFilters.eq("sysCreateAid",dto.getOrgAid()),FieldFilters.in("id",list))); + } + else { filters2.add(FieldFilters.eq("sysCreateAid",dto.getOrgAid())); } } @@ -314,21 +304,6 @@ public class CourseServiceImpl implements ICourseService { //log.info("【"+dto.getOrgAid()+"】IsSystemAdmin is true 不过机构过滤,查询全部"); } } -// List listFields=new ArrayList<>(); -// List listFields1=new ArrayList<>(); -// String sql="SELECT name FROM "+Course.class.getSimpleName()+" WHERE sys_create_aid =?1"; -// String sql1="select name from "+Course.class.getSimpleName()+" where org_id in (?1)"; -// try { -// listFields1=courseDao.findListFields(sql,"965342027497607168"); -// listFields = courseDao.findListFields(sql1, "123"); -// } catch (Exception e) { -// throw new RuntimeException(e); -// } -// List collect1 = Stream.concat(listFields1.stream(), listFields.stream()) -// .distinct() -// .collect(Collectors.toList()); -// paginate(collect1, pageIndex, pageSize); - //自动添加过滤已删除 filters.add(FieldFilters.eq("deleted",false)); @@ -353,28 +328,17 @@ public class CourseServiceImpl implements ICourseService { // 使用distinct()配合自定义的去重条件 .filter(distinctByKey(c -> c.getId())) .collect(Collectors.toList()); -// long startTime = System.nanoTime(); // PageList rs=courseDao.findPage(pageIndex, pageSize, filters, oc); // long endTime = System.nanoTime(); -// // 计算并转换执行时间为秒 -// double durationInSeconds = (endTime - startTime) / 1_000_000_000.0; -// System.out.printf("方法执行时间: %.6f 秒%n", durationInSeconds); //log.info("查询出的条数:"+rs.getCount()); - if(dto.getCourseIds()!=null&&!dto.getCourseIds().isEmpty()){ - //查出属于机构的课程和创建人的课程 - List courseIds = mergedList.stream().map(Course::getId).collect(Collectors.toList()); - //找出courseIds和dto.getCourseIds的差集 - List collect = dto.getCourseIds().stream().filter(courseIds::contains).collect(Collectors.toList()); - //将属于项目内课程 但不属于组织机构和创建人的课程设置为无权限 - if (!collect.isEmpty()){ - mergedList.forEach(e->{ - if (collect.contains(e.getId())){ - e.setIsPermission(false); - }else { - e.setIsPermission(true); - } - }); - } + if(!mergedList.isEmpty()){ + mergedList.forEach(e->{ + if(list.contains(e.getId())){ + e.setIsPermission(false); + }else { + e.setIsPermission(true); + } + }); } List paginate = paginate(mergedList, pageIndex, pageSize); PageList rs=new PageList<>(); @@ -382,6 +346,70 @@ public class CourseServiceImpl implements ICourseService { rs.setList(paginate); return rs; } + + private List getStrings(CourseQueryDto dto) { + List list=new ArrayList<>(); + if(StringUtil.isNotBlank(dto.getOrgIds())){ + if(dto.getOrgIds().contains(",")){ + String[] split = dto.getOrgIds().split(","); + List strings = Arrays.asList(split); + String sql = "SELECT DISTINCT\n" + + "pt.course_id\n" + + "FROM\n" + + "boe.student s INNER JOIN boe.project_task pt on s.pid=pt.project_id inner join boe_base.boe_course c on c.id=pt.course_id\n" + + "\n" + + "WHERE\n" + + "\n" + + "s.deleted = 0 \n" + + "and pt.deleted=0\n" + + "and c.deleted=0\n" + + "AND s.type = 1 \n" + + "AND s.student_id = ?1\n" + + "and c.org_id not in(?2)\n" + + "and c.sys_create_aid !=?3"; + list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),strings,dto.getOrgAid()); + } + else { + String sql = "SELECT DISTINCT\n" + + "pt.course_id\n" + + "FROM\n" + + "boe.student s INNER JOIN boe.project_task pt on s.pid=pt.project_id inner join boe_base.boe_course c on c.id=pt.course_id\n" + + "\n" + + "WHERE\n" + + "\n" + + "s.deleted = 0 \n" + + "and pt.deleted=0\n" + + "and c.deleted=0\n" + + "AND s.type = 1 \n" + + "AND s.student_id = ?1\n" + + "and c.org_id !=?2\n" + + "and c.sys_create_aid !=?3"; + list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(), dto.getOrgIds(),dto.getOrgAid()); + } + }else { + String sql = "SELECT DISTINCT\n" + + "pt.course_id\n" + + "FROM\n" + + "boe.student s INNER JOIN boe.project_task pt on s.pid=pt.project_id inner join boe_base.boe_course c on c.id=pt.course_id\n" + + "\n" + + "WHERE\n" + + "\n" + + "s.deleted = 0 \n" + + "and pt.deleted=0\n" + + "and c.deleted=0\n" + + "AND s.type = 1 \n" + + "AND s.student_id = ?1\n" + + "and c.sys_create_aid !=?2"; + list = courseTeacherDao.sqlFindList(sql, dto.getOrgAid(),dto.getOrgAid()); + } + Listlist1=new ArrayList<>(); + for (Object obj : list) { + list1.add(obj.toString()); + } + + return list1; + } + public static List paginate(List list, int pageNumber, int pageSize) { if (list == null || list.isEmpty() || pageNumber <= 0 || pageSize <= 0) { return null;