shenzhidan 2026-02-24 15:50:20 +08:00
commit 098b509643
22 changed files with 208 additions and 14 deletions

View File

@ -89,6 +89,12 @@ public class ArchivesController {
archivesService.downloadReviewRevision(qry);
return Response.buildSuccess();
}
@ApiOperation("单独下载安全培训教材或课程讲义")
@PostMapping("/downloadClassCur")
public Response downloadClassCur(@RequestBody ArchivesQry qry) {
archivesService.downloadClassCur(qry);
return Response.buildSuccess();
}
}

View File

@ -13,6 +13,7 @@ import com.zcloud.edu.dto.resource.CurriculumUpdateStateCmd;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -37,6 +38,7 @@ public class CurriculumController {
@ApiOperation("分页")
@PostMapping("/list")
@PreAuthorize("@pms.hasAnyPermission('gfd-kcgl','qyd-kcgl')")
public PageResponse<CurriculumCO> page(@RequestBody CurriculumPageQry qry) {
return curriculumService.listPage(qry);
}

View File

@ -10,6 +10,7 @@ import com.zcloud.edu.dto.clientobject.resource.ExamPaperCO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@ -40,6 +41,7 @@ public class ExamPaperController {
@ApiOperation("试卷分页")
@PostMapping("/list")
@PreAuthorize("@pms.hasAnyPermission('gfd-sjgl','qyd-sjgl')")
public PageResponse<ExamPaperCO> page(@RequestBody ExamPaperPageQry qry) {
return examPaperService.listPage(qry);
}

View File

@ -11,6 +11,7 @@ import com.zcloud.edu.dto.resource.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -49,6 +50,7 @@ public class TeacherController {
@ApiOperation("分页")
@PostMapping("/list")
@PreAuthorize("@pms.hasAnyPermission('gfd-jsgl')")
public PageResponse<TeacherCO> page(@RequestBody TeacherPageQry qry) {
return teacherService.listPage(qry);
}

View File

@ -11,6 +11,7 @@ import com.zcloud.edu.dto.resource.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -49,6 +50,7 @@ public class VideoCoursewareController {
@ApiOperation("分页")
@PostMapping("/list")
@PreAuthorize("@pms.hasAnyPermission('gfd-kjgl','qyd-kjgl')")
public PageResponse<VideoCoursewareCO> page(@RequestBody VideoCoursewarePageQry qry) {
return videoCoursewareService.listPage(qry);
}

View File

@ -889,5 +889,56 @@ public class ArchivesQueryExe {
throw new RuntimeException(e);
}
}
public ClassArchivesDTO downloadClassCurById(ArchivesQry qry){
HashMap<String, Object> params = new HashMap<String, Object>();
// 班级信息
ClassDO classDO = classRepository.getByClassId(qry.getClassId());
// 班级课程
ClassCurriculumDO classCurriculumDO = classCurriculumRepository.getInfoById(qry.getClassCurriculumIdLong());
List<ClassCurriculumChapterDO> classCurriculumChapterDOList = classCurriculumChapterRepository.listByClassCurriculumId(classCurriculumDO.getClassCurriculumId());
ClassCurriculumCO classCurriculumCO = new ClassCurriculumCO();
BeanUtils.copyProperties(classCurriculumDO, classCurriculumCO);
List<ClassCurriculumChapterCO> classCurriculumChapterCOList = classCurriculumChapterCoConvertor.converDOsToCOs(classCurriculumChapterDOList);
List<ClassCurriculumChapterCO> resultList = Tools.buildEntityTree(classCurriculumChapterCOList, "classCurriculumChapterId", "parentId", "childCurriculumChapterCOList", "0");
classCurriculumCO.setCurriculumChapterCOList(resultList);
List<ClassCurriculumCO> curList = new ArrayList<>();
curList.add(classCurriculumCO);
ClassArchivesDTO classArchivesDTO = new ClassArchivesDTO();
classArchivesDTO.setClassName(classDO.getName());
SSOUser ssoUser = AuthContext.getCurrentUser();
classArchivesDTO.setCorpinfoId(ssoUser.getTenantId());
classArchivesDTO.setClassCurriculumList(curList);
// 新增档案下载记录
ArchivesPdfFileE archivesPdfFileE = new ArchivesPdfFileE();
archivesPdfFileE.init("class_curriculum", classCurriculumDO.getClassCurriculumId(), 2, ssoUser.getTenantId(), classDO.getName()+"-"+classCurriculumDO.getCurriculumName()+"安全培训教材");
ArchivesPdfFileDO archivesPdfFileDO = new ArchivesPdfFileDO();
BeanUtils.copyProperties(archivesPdfFileE, archivesPdfFileDO);
archivesPdfFileRepository.save(archivesPdfFileDO);
classArchivesDTO.setArchivesPdfFileId(archivesPdfFileDO.getId());
return classArchivesDTO;
}
@Async("archivesAsyncExecutor")
public void execteDownloadClassCur(ClassArchivesDTO params){
try {
byte[] word = execteClassCurriculumInfo(params.getClassCurriculumList().get(0));
List<byte[]> byteArrayList = new ArrayList<>();
byteArrayList.add(word);
byte[] pdf = WordToPdfUtil.mergeWordToPdf(byteArrayList);
String filepath = zcloudImgFilesFacade.saveFile(pdf, params.getClassName()+"-"+params.getClassCurriculumList().get(0).getCurriculumName()+"-安全培训教材或课程讲义-"+ DateUtil.getSdfTimes()+".pdf","classArchives", params.getCorpinfoId());
ArchivesPdfFileE archivesPdfFileE = new ArchivesPdfFileE();
archivesPdfFileE.initEdit(params.getArchivesPdfFileId(), filepath, 1, null);
ArchivesPdfFileDO archivesPdfFileDO = new ArchivesPdfFileDO();
BeanUtils.copyProperties(archivesPdfFileE, archivesPdfFileDO);
archivesPdfFileRepository.updateById(archivesPdfFileDO);
} catch (Exception e){
e.printStackTrace();
// throw new RuntimeException(e);
}
}
}

View File

@ -101,7 +101,7 @@ public class StudentQueryExe {
ClassE classE = new ClassE();
BeanUtils.copyProperties(classDO, classE);
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("classId", studentDO.getClassId());
params.put("eqClassId", studentDO.getClassId());
// 课程信息
List<ClassCurriculumDO> curEList = classCurriculumRepository.listAll(params);
List<ClassCurriculumE> classCurList = BeanUtil.copyToList(curEList, ClassCurriculumE.class);

View File

@ -68,5 +68,12 @@ public class ArchivesServiceImpl implements ArchivesServiceI {
archivesQueryExe.execteDownloadReviewInfo(classArchivesDTO);
System.out.println("下载成功");
}
@Override
public void downloadClassCur(ArchivesQry qry) {
ClassArchivesDTO classArchivesDTO = archivesQueryExe.downloadClassCurById(qry);
archivesQueryExe.execteDownloadClassCur(classArchivesDTO);
System.out.println("下载成功");
}
}

View File

@ -18,5 +18,6 @@ public interface ArchivesServiceI {
void downloadPersonArchives(ArchivesQry qry);
void downloadClassArchives(ArchivesQry qry);
void downloadReviewRevision(ArchivesQry qry);
void downloadClassCur(ArchivesQry qry);
}

View File

@ -30,6 +30,7 @@ public class ArchivesQry {
private Long stuId;
private String classId;
private String classCurriculumId;
private Long classCurriculumIdLong;
}

View File

@ -30,6 +30,6 @@ public class TeacherPageQry extends PageQuery {
@ApiModelProperty(name = "eqCorpinfoId", value = "企业ID")
private Long corpinfoId;
private String menuPath;
}

View File

@ -40,6 +40,8 @@ public class VideoCoursewarePageQry extends PageQuery {
@ApiModelProperty(name = "questionNum", value = "习题数量")
private String questionNum;
private String menuPath;
}

View File

@ -0,0 +1,80 @@
package com.zcloud.edu.domain.enums;
import lombok.Getter;
import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
*
*/
@Getter
public enum MenuEnum {
//股份端
//教师管理
GFDJSGL("/edu/container/supervision/resourceManage/teacherManage/list", "gfd-jsgl"),
//课件管理
GFDKJGL("/edu/container/supervision/resourceManage/courseware/list", "gfd-kjgl"),
//课程管理
GFDKCGL("/edu/container/supervision/resourceManage/courseManage/list", "gfd-kcgl"),
//试卷管理
GFDSJGL("/edu/container/supervision/resourceManage/testPaperManage/list", "gfd-sjgl"),
//企业端
//课件管理
QYDKJGL("/edu/container/branchCompany/resourceManage/courseware/list", "qyd-kjgl"),
//课程管理
QYDKCGL("/edu/container/branchCompany/resourceManage/courseManage/list", "qyd-kcgl"),
//试卷管理
QYDSJGL("/edu/container/branchCompany/resourceManage/testPaperManage/list", "qyd-sjgl"),
;
;
private final String path;
private final String menuKey;
private static final Map<String, MenuEnum> PATH_MAP =
Arrays.stream(values())
.collect(Collectors.toMap(MenuEnum::getPath, Function.identity()));
MenuEnum(String path, String menuKey) {
this.path = path;
this.menuKey = menuKey;
}
public String getPath() {
return path;
}
public String getMenuKey() {
return menuKey;
}
// 通过name获取枚举
public static MenuEnum getByPath(String path) {
return PATH_MAP.get(path);
}
// 通过path获取age
public static String getMenuKeyByPath(String path) {
MenuEnum entry = PATH_MAP.get(path);
return entry != null ? entry.getMenuKey() : null;
}
// 使用示例
public static void main(String[] args) {
// 获取整个枚举
MenuEnum entry = MenuEnum.getByPath("张三");
if (entry != null) {
System.out.println("MenuKey: " + entry.getMenuKey()); // 输出: MenuKey: 25
}
// 直接获取值
String age = MenuEnum.getMenuKeyByPath("李四");
System.out.println("李四的年龄: " + age); // 输出: 李四的年龄: 30
}
}

View File

@ -1,8 +1,9 @@
package com.zcloud.edu.persistence.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.datascope.annotation.DataScope;
import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.edu.persistence.dataobject.CurriculumDO;
import org.apache.ibatis.annotations.Mapper;
@ -15,9 +16,12 @@ import java.util.Map;
* @Date 2026-01-09 13:45:38
*/
@Mapper
@DataScopes({
@DataScope(method = "getListPage", menuPerms = ""),
})
public interface CurriculumMapper extends BaseMapper<CurriculumDO> {
IPage<CurriculumDO> getListPage(IPage<CurriculumDO> iPage, Map<String, Object> params);
IPage<CurriculumDO> getListPage(IPage<CurriculumDO> iPage, Map<String, Object> params, String menuPerms);
CurriculumDO getInfoById(Long id);
}

View File

@ -2,6 +2,8 @@ package com.zcloud.edu.persistence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.datascope.annotation.DataScope;
import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.edu.persistence.dataobject.ExamPaperDO;
import org.apache.ibatis.annotations.Mapper;
@ -15,9 +17,12 @@ import java.util.Map;
* @Date 2026-01-09 17:04:42
*/
@Mapper
@DataScopes({
@DataScope(method = "listPage", menuPerms = ""),
})
public interface ExamPaperMapper extends BaseMapper<ExamPaperDO> {
IPage<ExamPaperDO> listPage(IPage<ExamPaperDO> iPage, Map<String, Object> params);
IPage<ExamPaperDO> listPage(IPage<ExamPaperDO> iPage, Map<String, Object> params, String menuPerms);
ExamPaperDO getInfoById(Long id);

View File

@ -1,7 +1,8 @@
package com.zcloud.edu.persistence.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.datascope.annotation.DataScope;
import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.edu.persistence.dataobject.TeacherDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@ -17,9 +18,12 @@ import java.util.Map;
* @Date 2025-11-26 17:04:44
*/
@Mapper
@DataScopes({
@DataScope(method = "getTeacherPage", menuPerms = ""),
})
public interface TeacherMapper extends BaseMapper<TeacherDO> {
IPage<TeacherDO> getTeacherPage(IPage<TeacherDO> page, Map<String, Object> params);
IPage<TeacherDO> getTeacherPage(IPage<TeacherDO> page, Map<String, Object> params, String menuPerms);
List<TeacherDO> getTeacherList(@Param("params")Map<String, Object> params);

View File

@ -1,7 +1,8 @@
package com.zcloud.edu.persistence.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.datascope.annotation.DataScope;
import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.edu.persistence.dataobject.VideoCoursewareDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@ -17,11 +18,14 @@ import java.util.Map;
* @Date 2025-11-27 14:05:32
*/
@Mapper
@DataScopes({
@DataScope(method = "getVideoCoursewarePage", menuPerms = ""),
})
public interface VideoCoursewareMapper extends BaseMapper<VideoCoursewareDO> {
VideoCoursewareDO getInfoById(@Param("id") Long id);
IPage<VideoCoursewareDO> getVideoCoursewarePage(IPage<VideoCoursewareDO> page,@Param("params")Map<String, Object> params);
IPage<VideoCoursewareDO> getVideoCoursewarePage(IPage<VideoCoursewareDO> page, @Param("params")Map<String, Object> params,@Param("menuPerms")String menuPerms);
List<VideoCoursewareDO> getVideoCoursewareList(@Param("params")Map<String, Object> params);

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.common.PageHelper;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.edu.domain.enums.MenuEnum;
import com.zcloud.edu.persistence.dataobject.CurriculumDO;
import com.zcloud.edu.persistence.mapper.CurriculumMapper;
import com.zcloud.edu.persistence.repository.resource.CurriculumRepository;
@ -29,7 +30,11 @@ public class CurriculumRepositoryImpl extends BaseRepositoryImpl<CurriculumMappe
@Override
public PageResponse<CurriculumDO> listPage(Map<String, Object> params) {
IPage<CurriculumDO> iPage = new Query<CurriculumDO>().getPage(params);
IPage<CurriculumDO> result = curriculumMapper.getListPage(iPage, params);
String menuPerms = "";
if (!org.springframework.util.ObjectUtils.isEmpty(params.get("menuPath"))){
menuPerms = MenuEnum.getMenuKeyByPath(params.get("menuPath").toString());
}
IPage<CurriculumDO> result = curriculumMapper.getListPage(iPage, params,menuPerms);
return PageHelper.pageToResponse(result, result.getRecords());
}

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.common.PageHelper;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.edu.domain.enums.MenuEnum;
import com.zcloud.edu.persistence.dataobject.ExamPaperDO;
import com.zcloud.edu.persistence.mapper.ExamPaperMapper;
import com.zcloud.edu.persistence.repository.resource.ExamPaperRepository;
@ -30,7 +31,11 @@ public class ExamPaperRepositoryImpl extends BaseRepositoryImpl<ExamPaperMapper,
@Override
public PageResponse<ExamPaperDO> listPage(Map<String, Object> params) {
IPage<ExamPaperDO> iPage = new Query<ExamPaperDO>().getPage(params);
IPage<ExamPaperDO> result = examPaperMapper.listPage(iPage, params);
String menuPerms = "";
if (!org.springframework.util.ObjectUtils.isEmpty(params.get("menuPath"))){
menuPerms = MenuEnum.getMenuKeyByPath(params.get("menuPath").toString());
}
IPage<ExamPaperDO> result = examPaperMapper.listPage(iPage, params,menuPerms);
return PageHelper.pageToResponse(result, result.getRecords());
}

View File

@ -1,6 +1,7 @@
package com.zcloud.edu.persistence.repository.impl.resource;
import com.jjb.saas.framework.repository.common.PageHelper;
import com.zcloud.edu.domain.enums.MenuEnum;
import com.zcloud.edu.persistence.dataobject.TeacherDO;
import com.zcloud.edu.persistence.mapper.TeacherMapper;
import com.zcloud.edu.persistence.repository.resource.TeacherRepository;
@ -30,7 +31,11 @@ public class TeacherRepositoryImpl extends BaseRepositoryImpl<TeacherMapper, Tea
@Override
public PageResponse<TeacherDO> listPage(Map<String, Object> params) {
IPage<TeacherDO> iPage = new Query<TeacherDO>().getPage(params);
IPage<TeacherDO> result = teacherMapper.getTeacherPage(iPage, params);
String menuPerms = "";
if (!org.springframework.util.ObjectUtils.isEmpty(params.get("menuPath"))){
menuPerms = MenuEnum.getMenuKeyByPath(params.get("menuPath").toString());
}
IPage<TeacherDO> result = teacherMapper.getTeacherPage(iPage, params,menuPerms);
return PageHelper.pageToResponse(result, result.getRecords());
}

View File

@ -1,6 +1,7 @@
package com.zcloud.edu.persistence.repository.impl.resource;
import com.jjb.saas.framework.repository.common.PageHelper;
import com.zcloud.edu.domain.enums.MenuEnum;
import com.zcloud.edu.persistence.dataobject.VideoCoursewareDO;
import com.zcloud.edu.persistence.mapper.VideoCoursewareMapper;
import com.zcloud.edu.persistence.repository.resource.VideoCoursewareRepository;
@ -31,7 +32,11 @@ public class VideoCoursewareRepositoryImpl extends BaseRepositoryImpl<VideoCours
@Override
public PageResponse<VideoCoursewareDO> listPage(Map<String, Object> params) {
IPage<VideoCoursewareDO> iPage = new Query<VideoCoursewareDO>().getPage(params);
IPage<VideoCoursewareDO> result = videoCoursewareMapper.getVideoCoursewarePage(iPage, params);
String menuPerms = "";
if (!org.springframework.util.ObjectUtils.isEmpty(params.get("menuPath"))){
menuPerms = MenuEnum.getMenuKeyByPath(params.get("menuPath").toString());
}
IPage<VideoCoursewareDO> result = videoCoursewareMapper.getVideoCoursewarePage(iPage, params,menuPerms);
return PageHelper.pageToResponse(result, result.getRecords());
}

View File

@ -16,7 +16,8 @@
co.corp_name,
c.video_total_time curriculumVideoTotalTime,
c.curriculum_introduce,
c.cover_path
c.cover_path,
cc.catalogue_level
from
class_curriculum cc