给指定用户生成制定课程的证书

This commit is contained in:
wyn
2026-06-05 15:44:53 +08:00
parent 5b77220ae5
commit 156862a0c5
4 changed files with 88 additions and 10 deletions

View File

@@ -494,12 +494,6 @@ public class ClassController {
}
}
}
// @RequestMapping("/createCertificateNo")
// public R createCertificateNo() {
// String certificateNo = classEntityService.getNextCertificateNo("B", "");
// log.info("========certificateNo========="+certificateNo);
// return R.ok(certificateNo);
// }
//结班
@RequestMapping("/closeClass")
@Transactional
@@ -646,7 +640,4 @@ public class ClassController {
List<UserCertificate> userCertificate = userCertificateService.list(wrapper);
return R.ok().put("userCertificate",userCertificate);
}
}

View File

@@ -105,7 +105,9 @@ public interface ClassEntityService extends IService<ClassEntity> {
List userScoreList(Map<String,Object> params);
List<Map<String,Object>> classCourseInfoClassId(int classId,int courseId);
Map<String,Object> getClassCourseInfoByClassId(int classId, int courseId);
List<Map<String,Object>> classCourseInfoClassId(int classId, int courseId);
R closeClass(Map<String,Object> params);

View File

@@ -1692,7 +1692,37 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
}
return resultList;
}
@Override
public Map<String,Object> getClassCourseInfoByClassId(int classId, int courseId) {
ClassEntity classEntity = this.baseMapper.selectById(classId);
MPJLambdaWrapper<CourseEntity> wrapper = new MPJLambdaWrapper<>();
wrapper.selectAll(CourseEntity.class);
wrapper.leftJoin(ClassCourse.class, ClassCourse::getCourseId, CourseEntity::getId);
wrapper.leftJoin(ClassModel.class, ClassModel::getId, ClassCourse::getModelId);
wrapper.eq(ClassModel::getId, classEntity.getModelId());
if (courseId!=0){
wrapper.eq(CourseEntity::getId,courseId);
}
CourseEntity course = courseDao.selectOne(wrapper);
Map<String,Object> candk = new HashMap<>();
MPJLambdaWrapper<CourseCatalogueChapterEntity> w = new MPJLambdaWrapper<>();
w.leftJoin(CourseCatalogueChapterVideoEntity.class,CourseCatalogueChapterVideoEntity::getChapterId,CourseCatalogueChapterEntity::getId);
w.eq(CourseCatalogueChapterEntity::getCourseId,course.getId());
w.selectSum(CourseCatalogueChapterVideoEntity::getDuration);
Map<String,Object> map = courseCatalogueChapterDao.selectJoinMap(w);
double duration = Double.parseDouble(map.get("duration").toString());
double minute = duration/60;
double keshi = Math.ceil(minute/45);
candk.put("courseId",course.getId());
candk.put("courseTitle",course.getTitle());
candk.put("courseETitle",course.getEtitle());
candk.put("titleAbbr",course.getTitleAbbr());
candk.put("keshi",keshi);
return candk;
}
@Override
public List<Map<String,Object>> classCourseInfoClassId(int classId,int courseId) {
List<Map<String,Object>> res = new ArrayList<>();

View File

@@ -1,5 +1,6 @@
package com.peanut.modules.master.controller;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
@@ -38,6 +39,10 @@ public class UserCertificateController {
private CourseMedicalService courseMedicalService;
@Autowired
private CourseToMedicalService courseToMedicalService;
@Autowired
private MyUserService userService;
@Autowired
private ClassEntityService classEntityService;
//小班自考证书列表
@RequestMapping("/userClassAndZKCertificateList")
@@ -278,6 +283,56 @@ public class UserCertificateController {
}
@RequestMapping("/createCertificateNo")
public R createCertificateNo(@RequestBody Map<String,Object> params){
ClassEntity classEntity = classEntityService.getById(params.get("classId").toString());
String type = params.get("type").toString();
List<String> certificateNoList = new ArrayList<>();
Map<String,Object> classCourseInfo = classEntityService.getClassCourseInfoByClassId(classEntity.getId(),0);
String pinyin = classCourseInfo.get("titleAbbr").toString();
String tels = params.get("tels").toString();
List<String> telList = Arrays.asList(tels.split(","));
List<MyUserEntity> userList = userService.list(new LambdaQueryWrapper<MyUserEntity>()
.in(MyUserEntity::getTel, telList));
for (int i=0;i<userList.size();i++){
MyUserEntity user = userList.get(i);
UserCertificate userCertificate = new UserCertificate();
userCertificate.setTitle(classEntity.getTitle());
userCertificate.setType(type);
userCertificate.setLabelId(5);
userCertificate.setUserId(user.getId());
userCertificate.setClassId(classEntity.getId());
String certificateNo = classEntityService.getNextCertificateNo(type,pinyin);
userCertificate.setCertificateNo(certificateNo);
userCertificate.setCourseId((Integer) classCourseInfo.get("courseId"));
if (StringUtils.isNotEmpty(user.getPhoto())&&StringUtils.isNotEmpty(user.getName())){
String startYear = DateUtil.year(classEntity.getStartTime())+"";
String startMonth = DateUtil.month(classEntity.getStartTime())+1+"";
String startDay = DateUtil.dayOfMonth(classEntity.getStartTime())+"";
String endYear = DateUtil.year(classEntity.getEndTime())+"";
String endMonth = DateUtil.month(classEntity.getEndTime())+1+"";
String endDay = DateUtil.dayOfMonth(classEntity.getEndTime())+"";
double keshiTotal = (double)classCourseInfo.get("keshi");
String keshi = (keshiTotal+"").replace(".0","");
String courseTitle = classCourseInfo.get("courseTitle").toString();
if (courseTitle.contains("")){
courseTitle = courseTitle.substring(0,courseTitle.indexOf(""));
}
String[] des = {startYear,startMonth,startDay,endYear,endMonth,endDay,
classEntity.getTitle(),courseTitle,keshi};
String[] edes = {classCourseInfo.get("courseETitle").toString(),keshi};
String url = userCertificateService.generateCertificate(type,certificateNo,user.getPhoto(),user.getName(),
des, edes, endYear,endMonth,endDay);
userCertificate.setCertificateUrl(url);
}
userCertificateService.save(userCertificate);
certificateNoList.add(user.getTel());
}
return R.ok().put("certificateNoList",certificateNoList);
}
}