fix:【FCJDFDXTXS-151】新增多个aid查询

This commit is contained in:
yangxinyu
2025-12-16 13:29:31 +08:00
parent eedaf13711
commit 7756edf122
3 changed files with 25 additions and 10 deletions

View File

@@ -1221,12 +1221,12 @@ public class StudyCourseApi extends ApiBaseController{
* @return 资源学习情况分页集合
*/
@RequestMapping(value="/contents",method = {RequestMethod.GET,RequestMethod.POST})
public JsonResponse<PageList<StudyCourseItem>> findPage(Pagination pager,String courseId,String contentId,String name,Integer status){
public JsonResponse<PageList<StudyCourseItem>> findPage(Pagination pager,String courseId,String contentId,String name,Integer status,String aid){
if(StringUtils.isBlank(courseId)){
return error("无课程信息");
}
try {
PageList<StudyCourseItem> rs = studyService.findItemPage(pager.getPageIndex(), pager.getPageSize(), null, contentId, courseId, name, status);
PageList<StudyCourseItem> rs = studyService.findItemPage(pager.getPageIndex(), pager.getPageSize(), null, contentId, courseId, name, status,aid);
return success(rs);
}catch(Exception e) {
log.error("【资源学习情况分页查询】错误:{}", e.getMessage());
@@ -1246,7 +1246,7 @@ public class StudyCourseApi extends ApiBaseController{
* @return 资源学习情况分页集合
*/
@RequestMapping(value = "/contents-exam", method = {RequestMethod.GET, RequestMethod.POST})
public JsonResponse<PageList<StudyCourseItem>> findPageExam(Pagination pager, String courseId, String contentId, String name, Integer status) {
public JsonResponse<PageList<StudyCourseItem>> findPageExam(Pagination pager, String courseId, String contentId, String name, Integer status,String aid) {
if (StringUtils.isBlank(courseId)) {
return error("无课程信息");
}
@@ -1258,7 +1258,7 @@ public class StudyCourseApi extends ApiBaseController{
return success(new PageList<>());
}
// 分页查询资源学习信息(只查询有考试信息的部分)
PageList<StudyCourseItem> rs = studyService.findItemPage(pager.getPageIndex(), pager.getPageSize(), null, contentId, courseId, name, status);
PageList<StudyCourseItem> rs = studyService.findItemPage(pager.getPageIndex(), pager.getPageSize(), null, contentId, courseId, name, status,aid);
// 拼接考试信息
List<StudyCourseItem> studyCourseItems = rs.getList();
if (studyCourseItems != null && !studyCourseItems.isEmpty() && !studyExams.isEmpty()) {
@@ -1286,7 +1286,7 @@ public class StudyCourseApi extends ApiBaseController{
* @return 资源学习情况分页集合
*/
@RequestMapping(value = "/contents-assess", method = {RequestMethod.GET, RequestMethod.POST})
public JsonResponse<PageList<StudyCourseItem>> findPageAssess(Pagination pager, String courseId, String contentId, String name, Integer status) {
public JsonResponse<PageList<StudyCourseItem>> findPageAssess(Pagination pager, String courseId, String contentId, String name, Integer status,String aid) {
if (StringUtils.isBlank(courseId)) {
return error("无课程信息");
}
@@ -1301,7 +1301,7 @@ public class StudyCourseApi extends ApiBaseController{
return success(new PageList<>());
}
// 分页查询资源学习信息(只查询有评估信息的部分)
PageList<StudyCourseItem> rs = studyService.findItemPage(pager.getPageIndex(), pager.getPageSize(), null, contentId, courseId, name, status);
PageList<StudyCourseItem> rs = studyService.findItemPage(pager.getPageIndex(), pager.getPageSize(), null, contentId, courseId, name, status,aid);
// 拼接评估信息
List<StudyCourseItem> studyCourseItems = rs.getList();
if (studyCourseItems != null && !studyCourseItems.isEmpty() && !studyAssesses.isEmpty()) {

View File

@@ -100,7 +100,7 @@ public interface IStudyService {
* @param status 用户学习状态1-未开始2-已完成3-进行中)
* @return 资源学习情况分页集合
*/
PageList<StudyCourseItem> findItemPage(int pageIndex, int pageSize, List<String> ids, String contentId, String courseId, String name, Integer status);
PageList<StudyCourseItem> findItemPage(int pageIndex, int pageSize, List<String> ids, String contentId, String courseId, String name, Integer status,String aid);
/**
* 为courseContents列表设置展示名称章名+节名 或 课程名+节名)

View File

@@ -249,7 +249,7 @@ public class StudyServiceImpl implements IStudyService{
* @return 资源学习情况分页集合
*/
@Override
public PageList<StudyCourseItem> findItemPage(int pageIndex, int pageSize, List<String> ids, String contentId, String courseId,String name,Integer status) {
public PageList<StudyCourseItem> findItemPage(int pageIndex, int pageSize, List<String> ids, String contentId, String courseId,String name,Integer status,String aid) {
QueryBuilder query = QueryBuilder.from(StudyCourseItem.class);
query.setPageIndex(pageIndex);
query.setPageSize(pageSize);
@@ -268,6 +268,11 @@ public class StudyServiceImpl implements IStudyService{
if(StringUtils.isNotBlank(name)) {
query.addFilter(FieldFilters.like("aname", name));
}
// 25.12.16新增 aid筛选
if(StringUtils.isNotBlank(aid)){
String aidList=aid;
query.addFilter(FieldFilters.in("aid",aidList.split( ",")));
}
int pageIndex2 = (pageIndex-1)*10;
if(status!=null) {
if(status==3) {
@@ -290,15 +295,25 @@ public class StudyServiceImpl implements IStudyService{
return scItemDao.findPage(query.builder());
}
}
// 25.12.16新增提前处理aid数组供后续SQL拼接使用
String aidSqlFilter = "";
// 存储aid的SQL筛选片段
if(StringUtils.isNotBlank(aid)){
String[] aidArray = aid.split(",");
// 拼接aid的in筛选
aidSqlFilter = "and item.aid in ('" + String.join("','", aidArray) + "') ";
}
// 未传输status的情况查询所有资源学习情况数据
String sql = "select a.id, a.course_id, a.course_name, a.aname, " + "IFNULL(b.finish_time, '0') as finish_time, IFNULL(b.progress, 0) as progress, IFNULL(b.status, 1) as status " + ",b.score,b.item_id,b.aid,b.content_id " + "from (select id, course_id, course_name, aname, 0, 1 from boe_study_course where course_id = '" + courseId + "'" + (StringUtils.isBlank(name) ? "" : "and aname like '%" + name + "%'") + ") a " + "inner join " + "(select bsc.id, bsc.course_id, bsc.course_name, bsc.aname, item.id as item_id,item.finish_time, item.progress, item.status,MAX(item.score) score,item.aid,item.content_id " + "from boe_study_course bsc left join boe_study_course_item item on item.course_id = bsc.course_id and item.study_id = bsc.id " + "where bsc.course_id = '" + courseId + "'" +
(StringUtils.isBlank(contentId) ? "" : "and item.content_id = '" + contentId + "'") +
(StringUtils.isBlank(name) ? "" : "and item.aname like '%" + name +"%'") + " group by bsc.id) b " +
//aidSqlFilter拼接aid筛选条件
(StringUtils.isBlank(name) ? "" : "and item.aname like '%" + name +"%'") + aidSqlFilter+" group by bsc.id) b " +
"on a.course_id = b.course_id and a.id = b.id " +
"group by a.id limit "+ pageIndex2+","+ pageSize+";";
String sql2 = "select count(*) as total from (select a.id, a.course_id, a.course_name, a.aname, " + "IFNULL(b.finish_time, 0) as finish_time, IFNULL(b.progress, 0) as progress, IFNULL(b.status, 1) as status " + "from (select id, course_id, course_name, aname, 0, 1 from boe_study_course where course_id = '" + courseId + "'" + (StringUtils.isBlank(name) ? "" : "and aname like '%" + name + "%'") + ") a " + "inner join " + "(select bsc.id, bsc.course_id, bsc.course_name, bsc.aname, item.finish_time, item.progress, item.status " + "from boe_study_course bsc left join boe_study_course_item item on item.course_id = bsc.course_id and item.study_id = bsc.id " + "where bsc.course_id = '" + courseId + "'" +
(StringUtils.isBlank(contentId) ? "" : "and item.content_id = '" + contentId + "'") +
(StringUtils.isBlank(name) ? "" : "and item.aname like '%" + name +"%'") +
//aidSqlFilter拼接aid筛选条件
(StringUtils.isBlank(name) ? "" : "and item.aname like '%" + name +"%'") +aidSqlFilter+
" group by bsc.id) b " +
"on a.course_id = b.course_id and a.id = b.id " +
"group by a.id) as total";