diff --git a/web-adapter/src/main/java/com/zcloud/edu/web/study/ClassController.java b/web-adapter/src/main/java/com/zcloud/edu/web/study/ClassController.java index bdb5e8e..f5f6440 100644 --- a/web-adapter/src/main/java/com/zcloud/edu/web/study/ClassController.java +++ b/web-adapter/src/main/java/com/zcloud/edu/web/study/ClassController.java @@ -7,6 +7,7 @@ import com.alibaba.cola.dto.Response; import com.alibaba.cola.dto.SingleResponse; import com.zcloud.edu.api.study.ClassServiceI; import com.zcloud.edu.dto.clientobject.study.ClassCO; +import com.zcloud.edu.dto.data.study.ClassCountDTO; import com.zcloud.edu.dto.data.study.ClassQuestionDTO; import com.zcloud.edu.dto.study.ClassAddCmd; import com.zcloud.edu.dto.study.ClassPageQry; @@ -51,6 +52,16 @@ public class ClassController { return classService.listPage(qry); } + + + + @ApiOperation("统计班级分页数据") + @PostMapping("/statisticsCount") + public SingleResponse statisticsCount(@RequestBody ClassPageQry qry) { + return classService.statisticsCount(qry); + } + + @ApiOperation("所有数据") @GetMapping("/listAll") public MultiResponse listAll() { diff --git a/web-app/src/main/java/com/zcloud/edu/command/query/study/ClassQueryExe.java b/web-app/src/main/java/com/zcloud/edu/command/query/study/ClassQueryExe.java index 80d0339..fd9c7b7 100644 --- a/web-app/src/main/java/com/zcloud/edu/command/query/study/ClassQueryExe.java +++ b/web-app/src/main/java/com/zcloud/edu/command/query/study/ClassQueryExe.java @@ -6,6 +6,7 @@ import com.jjb.saas.framework.auth.model.SSOUser; import com.jjb.saas.framework.auth.utils.AuthContext; import com.zcloud.edu.command.convertor.study.ClassCoConvertor; import com.zcloud.edu.dto.clientobject.study.ClassCO; +import com.zcloud.edu.dto.data.study.ClassCountDTO; import com.zcloud.edu.dto.data.study.ClassQuestionDTO; import com.zcloud.edu.dto.study.ClassPageQry; import com.zcloud.edu.persistence.dataobject.study.ClassDO; @@ -70,10 +71,27 @@ public class ClassQueryExe { return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex()); } - public PageResponse executeAppListPage(ClassPageQry classPageQry) { - SSOUser ssoUser = AuthContext.getCurrentUser(); + + public SingleResponse executeStatisticsCount(ClassPageQry classPageQry) { + // 如果isMyCorp不为空,则查询当前登录人所在企业数据 + if (!ObjectUtils.isEmpty(classPageQry.getIsMyCorp())){ + SSOUser ssoUser = AuthContext.getCurrentUser(); + classPageQry.setEqCorpinfoId(ssoUser.getTenantId()); + } + Map params = PageQueryHelper.toHashMap(classPageQry); + List classList = classRepository.listStatistics(params); + ClassCountDTO classCountDTO = new ClassCountDTO(); + if (classList != null && classList.size() > 0){ + classCountDTO.setClassCount(classList.size()); + classCountDTO.setStudentCount(classList.stream().mapToInt(ClassDO::getTotalCount).sum()); + } + return SingleResponse.of(classCountDTO); + } + + + + public PageResponse executeAppListPage(ClassPageQry classPageQry) { Map params = PageQueryHelper.toHashMap(classPageQry); - params.put("phone", ssoUser.getAccount()); PageResponse pageResponse = classRepository.listStuClassPage(params); List examCenterCOS = classCoConvertor.converDOsToCOs(pageResponse.getData()); return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex()); diff --git a/web-app/src/main/java/com/zcloud/edu/service/study/ClassServiceImpl.java b/web-app/src/main/java/com/zcloud/edu/service/study/ClassServiceImpl.java index a00c6b4..26ac283 100644 --- a/web-app/src/main/java/com/zcloud/edu/service/study/ClassServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/edu/service/study/ClassServiceImpl.java @@ -1,5 +1,6 @@ package com.zcloud.edu.service.study; +import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.SingleResponse; import com.zcloud.edu.api.study.ClassServiceI; @@ -8,6 +9,7 @@ import com.zcloud.edu.command.study.ClassAddExe; import com.zcloud.edu.command.study.ClassRemoveExe; import com.zcloud.edu.command.study.ClassUpdateExe; import com.zcloud.edu.dto.clientobject.study.ClassCO; +import com.zcloud.edu.dto.data.study.ClassCountDTO; import com.zcloud.edu.dto.data.study.ClassQuestionDTO; import com.zcloud.edu.dto.study.ClassAddCmd; import com.zcloud.edu.dto.study.ClassPageQry; @@ -78,5 +80,10 @@ public class ClassServiceImpl implements ClassServiceI { public PageResponse appListPage(ClassPageQry qry) { return classQueryExe.executeAppListPage(qry); } + + @Override + public SingleResponse statisticsCount(ClassPageQry qry) { + return classQueryExe.executeStatisticsCount(qry); + } } diff --git a/web-client/src/main/java/com/zcloud/edu/api/study/ClassServiceI.java b/web-client/src/main/java/com/zcloud/edu/api/study/ClassServiceI.java index 0f88b3c..9ee2211 100644 --- a/web-client/src/main/java/com/zcloud/edu/api/study/ClassServiceI.java +++ b/web-client/src/main/java/com/zcloud/edu/api/study/ClassServiceI.java @@ -1,8 +1,10 @@ package com.zcloud.edu.api.study; +import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.SingleResponse; import com.zcloud.edu.dto.clientobject.study.ClassCO; +import com.zcloud.edu.dto.data.study.ClassCountDTO; import com.zcloud.edu.dto.data.study.ClassQuestionDTO; import com.zcloud.edu.dto.study.ClassAddCmd; import com.zcloud.edu.dto.study.ClassPageQry; @@ -36,5 +38,7 @@ public interface ClassServiceI { PageResponse appListPage(ClassPageQry qry); + + SingleResponse statisticsCount(ClassPageQry qry); } diff --git a/web-client/src/main/java/com/zcloud/edu/dto/data/study/ClassCountDTO.java b/web-client/src/main/java/com/zcloud/edu/dto/data/study/ClassCountDTO.java new file mode 100644 index 0000000..4a104e8 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/edu/dto/data/study/ClassCountDTO.java @@ -0,0 +1,17 @@ +package com.zcloud.edu.dto.data.study; + +import lombok.Data; + +/** + * @author zhangyue + * @date 2026/1/22 9:56 + */ +@Data +public class ClassCountDTO { + private Integer classCount; + private Integer studentCount; + public ClassCountDTO() { + this.classCount = 0; + this.studentCount = 0; + } +} diff --git a/web-client/src/main/java/com/zcloud/edu/dto/study/ClassPageQry.java b/web-client/src/main/java/com/zcloud/edu/dto/study/ClassPageQry.java index 876bc34..3cd9a0f 100644 --- a/web-client/src/main/java/com/zcloud/edu/dto/study/ClassPageQry.java +++ b/web-client/src/main/java/com/zcloud/edu/dto/study/ClassPageQry.java @@ -33,6 +33,7 @@ public class ClassPageQry extends PageQuery { private String leEndTime; private String isMyCorp; private Long eqCorpinfoId; + private String phone; } diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/mapper/study/ClassMapper.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/mapper/study/ClassMapper.java index d4aee50..33c2b4b 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/mapper/study/ClassMapper.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/mapper/study/ClassMapper.java @@ -22,6 +22,8 @@ import java.util.Map; public interface ClassMapper extends BaseMapper { IPage listPage(IPage page, @Param("ew") QueryWrapper queryWrapper, String menuPerms); + + List listStatistics(@Param("ew") QueryWrapper queryWrapper, String menuPerms); IPage listStuClassPage(IPage page, @Param("params") Map params, String menuPerms); List countQuestionByClassId(String classId); diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/mapper/study/StudentMapper.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/mapper/study/StudentMapper.java index f3259a7..86abf92 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/mapper/study/StudentMapper.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/mapper/study/StudentMapper.java @@ -7,6 +7,7 @@ import com.zcloud.edu.persistence.mapper.po.study.StudentCountPO; import org.apache.ibatis.annotations.Mapper; import java.util.List; +import java.util.Map; /** * web-infrastructure @@ -19,5 +20,6 @@ public interface StudentMapper extends BaseMapper { long postponeUpdateStudent(String classId); List countStudentByClass(List classIds); + } diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/study/ClassRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/study/ClassRepositoryImpl.java index 131abb9..c0b93dd 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/study/ClassRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/study/ClassRepositoryImpl.java @@ -39,6 +39,16 @@ public class ClassRepositoryImpl extends BaseRepositoryImpl listStatistics(Map params) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params,"c."); + queryWrapper.orderByAsc("c.state").orderByDesc("c.create_time"); + queryWrapper.eq("c.delete_enum","FALSE"); + queryWrapper.groupBy("c.class_id"); + return classMapper.listStatistics(queryWrapper, null); + } + @Override public PageResponse listStuClassPage(Map params) { IPage iPage = new Query().getPage(params); diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/study/StudentRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/study/StudentRepositoryImpl.java index bafbc8f..70a5f99 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/study/StudentRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/study/StudentRepositoryImpl.java @@ -73,5 +73,6 @@ public class StudentRepositoryImpl extends BaseRepositoryImpl countStudentByClass(List classIds) { return studentMapper.countStudentByClass(classIds); } + } diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/study/ClassRepository.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/study/ClassRepository.java index c31cc9e..94d6a5f 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/study/ClassRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/study/ClassRepository.java @@ -16,6 +16,7 @@ import java.util.Map; */ public interface ClassRepository extends BaseRepository { PageResponse listPage(Map params); + List listStatistics(Map params); PageResponse listStuClassPage(Map params); diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/study/StudentRepository.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/study/StudentRepository.java index a8918ce..69ad773 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/study/StudentRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/study/StudentRepository.java @@ -26,5 +26,6 @@ public interface StudentRepository extends BaseRepository { Integer deleteByClassId(String classId); List countStudentByClass(List classIds); + } diff --git a/web-infrastructure/src/main/resources/mapper/study/ClassMapper.xml b/web-infrastructure/src/main/resources/mapper/study/ClassMapper.xml index 32b0e03..3c88367 100644 --- a/web-infrastructure/src/main/resources/mapper/study/ClassMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/study/ClassMapper.xml @@ -63,8 +63,18 @@ c.numberofexams FROM class c - left join training_type t on t.training_type_id = c.train_type - left join corp_info ci on ci.id = c.corpinfo_id + left join training_type t on t.training_type_id = c.train_type + left join corp_info ci on ci.id = c.corpinfo_id + ${ew.customSqlSegment} + + + diff --git a/web-infrastructure/src/main/resources/mapper/study/StudentMapper.xml b/web-infrastructure/src/main/resources/mapper/study/StudentMapper.xml index 40246d5..fc6de82 100644 --- a/web-infrastructure/src/main/resources/mapper/study/StudentMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/study/StudentMapper.xml @@ -18,12 +18,12 @@ +