Merge remote-tracking branch 'origin/beetlsql3-dev' into beetlsql3-dev

beetlsql3-dev
Mlxa0324 2 years ago
commit 5e731b96fa

@ -135,7 +135,8 @@ public class UserConsoleController {
@PostMapping(MODEL + "/update.json")
@Function("user.edit")
@ResponseBody
public JsonResult update(@Validated(ValidateConfig.UPDATE.class) CoreUser user) {
public JsonResult update(@Validated(ValidateConfig.UPDATE.class) CoreUser user, @SCoreUser CoreUser coreUser) {
user.setId(coreUser.getId());
boolean success = userConsoleService.updateTemplate(user);
if (success) {
this.platformService.clearFunctionCache();

@ -1,505 +0,0 @@
package util.convertPDF;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;
import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import org.apache.poi.hslf.usermodel.*;
import org.apache.poi.xslf.usermodel.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static util.convertPDF.PDFConverUtil.TypeEnum.*;
/**
* : <br>
* PDF
*
* @Author: lx
* @Date: 2022/12/13 16:26
*/
public final class PDFConverUtil {
final private static Map<TypeEnum, List<String>> types = new HashMap<>();
public static enum TypeEnum {
WORD, EXCEL, PPT, PPTX, IMG, OTHER
}
static {
types.put(WORD, Arrays.asList("DOC", "DOCX"));
types.put(EXCEL, Arrays.asList("XLS", "XLSX"));
types.put(PPT, Arrays.asList("PPT"));
types.put(PPTX, Arrays.asList("PPTX"));
// types.put(IMG, Arrays.asList("JPEG", "JPG", "PNG"));
types.put(OTHER, Arrays.asList("OOXML", "RTF HTML", "OpenDocument", "EPUB", "XPS", "SWF"));
}
/**
* @param inputStream
* @param outputStream pdf
**/
public static boolean imgToPdf(InputStream inputStream, OutputStream outputStream) {
Document document = null; PdfWriter pdfWriter = null;
try {
// 创建文档,设置PDF页面的大小 A2-A9, 个人觉得A3最合适
document = new Document(PageSize.A6, 0, 0, 0, 0);
// 新建pdf文档,具体逻辑看.getInstance方法
pdfWriter = PdfWriter.getInstance(document, outputStream);
document.open();
document.newPage();
// 将文件流转换为字节流,便于格式转换
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] bytes = new byte[1024];
int length = 0 ;
while (-1 != (length = bufferedInputStream.read(bytes))) {
byteArrayOutputStream.write(bytes, 0, length);
}
// 处理img图片
Image image = Image.getInstance(byteArrayOutputStream.toByteArray());
float height = image.getHeight();
float width = image.getWidth();
float percent = 0.0f;
// 设置像素或者长宽高,将会影响图片的清晰度,因为只是对图片放大或缩小
if (height > width) {
// A4 - A9
percent = PageSize.A6.getHeight() / height * 100;
} else {
percent = PageSize.A6.getWidth() / width * 100;
}
image.setAlignment(Image.MIDDLE);
image.scalePercent(percent);
// 将图片放入文档中完成pdf转换
document.add(image);
System.out.println("image转换完毕");
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
close(document, pdfWriter);
closeOutput(outputStream);
closeInput(inputStream);
}
return true;
}
/**
* @param inputStream
* @param outputStream pdf
**/
public static boolean wordToPdfByAspose(InputStream inputStream, OutputStream outputStream) {
// 验证License 若不验证则转化出的pdf文档会有水印产生
if (!getLicense()) {
return false;
}
try {
// 将源文件保存在com.aspose.words.Document中具体的转换格式依靠里面的save方法
com.aspose.words.Document doc = new com.aspose.words.Document(inputStream);
// 全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF,EPUB, XPS, SWF 相互转换
doc.save(outputStream, SaveFormat.PDF);
System.out.println("word转换完毕");
} catch (Exception e) {
e.printStackTrace();
return false;
}finally {
closeOutput(outputStream);
closeInput(inputStream);
}
return true;
}
/**
*
* @param outputStream
*/
private static void closeOutput(OutputStream outputStream) {
if (outputStream != null) {
try {
outputStream.flush();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*
* @param inputStream
*/
private static void closeInput(InputStream inputStream) {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static void close(Document document, PdfWriter pdfWriter) {
if (document != null) {
document.close();
}
if (pdfWriter != null) {
pdfWriter.close();
}
}
// 官方文档的要求 无需理会
public static boolean getLicense() {
boolean result = false;
try {
String s = "<License>\n" +
" <Data>\n" +
" <Products>\n" +
" <Product>Aspose.Total for Java</Product>\n" +
" <Product>Aspose.Words for Java</Product>\n" +
" </Products>\n" +
" <EditionType>Enterprise</EditionType>\n" +
" <SubscriptionExpiry>20991231</SubscriptionExpiry>\n" +
" <LicenseExpiry>20991231</LicenseExpiry>\n" +
" <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>\n" +
" </Data>\n" +
" <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>\n" +
"</License>";
ByteArrayInputStream is = new ByteArrayInputStream(s.getBytes());
License aposeLic = new License();
aposeLic.setLicense(is);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* @param inputStream
* @param outputStream pdf
**/
public static boolean excelToPdf(InputStream inputStream, OutputStream outputStream) {
// 验证License 若不验证则转化出的pdf文档会有水印产生
if (!getExcelLicense()) {
return false;
}
try {
// 原始excel路径
com.aspose.cells.Workbook wb = new com.aspose.cells.Workbook(inputStream);
com.aspose.cells.PdfSaveOptions pdfSaveOptions = new com.aspose.cells.PdfSaveOptions();
pdfSaveOptions.setOnePagePerSheet(false);
int[] autoDrawSheets={3};
//当excel中对应的sheet页宽度太大时在PDF中会拆断并分页。此处等比缩放。
autoDraw(wb,autoDrawSheets);
int[] showSheets={0};
//隐藏workbook中不需要的sheet页。
printSheetPage(wb,showSheets);
wb.save(outputStream, pdfSaveOptions);
System.out.println("excel转换完毕");
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}finally {
closeOutput(outputStream);
closeInput(inputStream);
}
return true;
}
/**
* sheet
* @param wb
* @param page sheet
*/
public static void autoDraw(com.aspose.cells.Workbook wb,int[] page){
if(null!=page&&page.length>0){
for (int i = 0; i < page.length; i++) {
wb.getWorksheets().get(i).getHorizontalPageBreaks().clear();
wb.getWorksheets().get(i).getVerticalPageBreaks().clear();
}
}
}
/**
* workbooksheet
*
* @param wb
* @param page sheet
*/
public static void printSheetPage(com.aspose.cells.Workbook wb, int[] page) {
for (int i = 1; i < wb.getWorksheets().getCount(); i++) {
wb.getWorksheets().get(i).setVisible(false);
}
if (null == page || page.length == 0) {
wb.getWorksheets().get(0).setVisible(true);
} else {
for (int i = 0; i < page.length; i++) {
wb.getWorksheets().get(i).setVisible(true);
}
}
}
public static boolean getExcelLicense() {
boolean result = false;
try {
String s = "<License>\n" +
" <Data>\n" +
" <Products>\n" +
" <Product>Aspose.Cells for Java</Product>\n" +
" </Products>\n" +
" <EditionType>Enterprise</EditionType>\n" +
" <SubscriptionExpiry>29991231</SubscriptionExpiry>\n" +
" <LicenseExpiry>29991231</LicenseExpiry>\n" +
" <SerialNumber>evilrule</SerialNumber>\n" +
" </Data>\n" +
" <Signature>evilrule</Signature>\n" +
"</License>";
ByteArrayInputStream is = new ByteArrayInputStream(s.getBytes());
com.aspose.cells.License aposeLic = new com.aspose.cells.License();
aposeLic.setLicense(is);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* pptToPdf
* @param inputStream
* @param outputStream
* @return
*/
public static boolean pptToPdf(InputStream inputStream, OutputStream outputStream) {
Document document = null;
HSLFSlideShow hslfSlideShow = null;
PdfWriter pdfWriter = null;
try {
hslfSlideShow = new HSLFSlideShow(inputStream);
// 获取ppt文件页面
Dimension dimension = hslfSlideShow.getPageSize();
document = new Document();
// pdfWriter实例
pdfWriter = PdfWriter.getInstance(document, outputStream);
document.open();
PdfPTable pdfPTable = new PdfPTable(1);
List<HSLFSlide> hslfSlideList = hslfSlideShow.getSlides();
for (int i=0; i < hslfSlideList.size(); i++) {
HSLFSlide hslfSlide = hslfSlideList.get(i);
// 设置字体, 解决中文乱码
for (HSLFShape shape : hslfSlide.getShapes()) {
if (shape instanceof HSLFTextShape) {
HSLFTextShape textShape = (HSLFTextShape) shape;
for (HSLFTextParagraph textParagraph : textShape.getTextParagraphs()) {
for (HSLFTextRun textRun : textParagraph.getTextRuns()) {
textRun.setFontFamily("宋体");
}
}
}
}
BufferedImage bufferedImage = new BufferedImage((int)dimension.getWidth(), (int)dimension.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2d = bufferedImage.createGraphics();
graphics2d.setPaint(Color.white);
graphics2d.setFont(new java.awt.Font("宋体", java.awt.Font.PLAIN, 12));
hslfSlide.draw(graphics2d);
graphics2d.dispose();
Image image = Image.getInstance(bufferedImage, null);
image.scalePercent(50f);
// 写入单元格
pdfPTable.addCell(new PdfPCell(image, true));
document.add(image);
}
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
close(document, pdfWriter);
closeOutput(outputStream);
closeInput(inputStream);
}
System.out.println("ppt转换完毕");
return true;
}
/**
* pptxToPdf
* @param inputStream
* @param outputStream
* @return
*/
public static boolean pptxToPdf(InputStream inputStream, OutputStream outputStream) {
Document document = null;
XMLSlideShow slideShow = null;
PdfWriter pdfWriter = null;
try {
slideShow = new XMLSlideShow(inputStream);
Dimension dimension = slideShow.getPageSize();
document = new Document();
pdfWriter = PdfWriter.getInstance(document, outputStream);
document.open();
PdfPTable pdfPTable = new PdfPTable(1);
List<XSLFSlide> slideList = slideShow.getSlides();
for (int i = 0, row = slideList.size(); i < row; i++) {
XSLFSlide slide = slideList.get(i);
// 设置字体, 解决中文乱码
for (XSLFShape shape : slide.getShapes()) {
if (shape instanceof XSLFTextShape) {
XSLFTextShape textShape = (XSLFTextShape) shape;
for (XSLFTextParagraph textParagraph : textShape.getTextParagraphs()) {
for (XSLFTextRun textRun : textParagraph.getTextRuns()) {
textRun.setFontFamily("宋体");
}
}
}
}
BufferedImage bufferedImage = new BufferedImage((int)dimension.getWidth(), (int)dimension.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2d = bufferedImage.createGraphics();
graphics2d.setPaint(Color.white);
graphics2d.setFont(new java.awt.Font("宋体", java.awt.Font.PLAIN, 12));
slide.draw(graphics2d);
graphics2d.dispose();
Image image = Image.getInstance(bufferedImage, null);
image.scalePercent(50f);
// 写入单元格
pdfPTable.addCell(new PdfPCell(image, true));
document.add(image);
}
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
close(document, pdfWriter);
closeOutput(outputStream);
closeInput(inputStream);
}
System.out.println("pptx转换完毕");
return true;
}
/**
* : <br>
*
*
* @return {@link boolean}
* @Author: lx
* @Date: 2022/12/13 16:37
*/
public static boolean convertToPDFByFileNameSuffix(String fileName, InputStream inputStream, OutputStream outputStream) {
String fileSuffix = getFileSuffix(fileName).toUpperCase();
if (types.get(WORD).contains(fileSuffix)) {
return wordToPdfByAspose(inputStream, outputStream);
}
if (types.get(EXCEL).contains(fileSuffix)) {
return excelToPdf(inputStream, outputStream);
}
if (types.get(PPT).contains(fileSuffix)) {
return pptToPdf(inputStream, outputStream);
}
if (types.get(PPTX).contains(fileSuffix)) {
return pptxToPdf(inputStream, outputStream);
}
// if (types.get(IMG).contains(fileSuffix)) {
// return imgToPdf(inputStream, outputStream);
// }
if (types.get(OTHER).contains(fileSuffix)) {
return wordToPdfByAspose(inputStream, outputStream);
}
return false;
}
/**
* PDF
* @param fileName
* @return
*/
public static boolean isCreatePdf(String fileName) {
return types.values().stream().anyMatch(item -> item.contains(getFileSuffix(fileName).toUpperCase()));
}
/**
* : <br>
*
*
* @param fileName
* @return {@link String}
* @Author: lx
* @Date: 2022/12/13 21:51
*/
private static String getFileSuffix(String fileName) {
if (!fileName.contains(".")) {
throw new RuntimeException("非法的文件名,文件名必须要有文件类型!");
}
String[] split = fileName.split("\\.");
return split[split.length - 1];
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -5,7 +5,7 @@ import cn.hutool.core.thread.ThreadUtil;
import com.ibeetl.admin.core.entity.BaseEntity;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import util.convertPDF.PDFConverUtil;
import util.convertPDF.PDFConvertUtil;
import java.io.BufferedInputStream;
import java.io.File;
@ -13,7 +13,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import static util.convertPDF.PDFConverUtil.isCreatePdf;
import static util.convertPDF.PDFConvertUtil.isCreatePdf;
@Slf4j
@SuppressWarnings("ALL")
@ -329,7 +329,7 @@ public class FileEntity extends BaseEntity {
fileEntity.set("cvPDFUrl", relativePdfName);
ThreadUtil.execute(() -> {
// 根据类型来转换成为pdf
PDFConverUtil.convertToPDFByFileNameSuffix(absoluteUrl, inputStream, outputStream);
PDFConvertUtil.convertToPDFByFileNameSuffix(absoluteUrl, inputStream, outputStream);
});
}
}catch (IOException e) {

@ -79,6 +79,11 @@ public class Student extends BaseEntity implements AbstractToken {
private Date addTime ;
/**
*
*/
private String codeFrom;
//组织机构ID
private Long orgId ;
@ -294,4 +299,12 @@ public class Student extends BaseEntity implements AbstractToken {
public void setStudentQq(String studentQq) {
this.studentQq = studentQq;
}
public String getCodeFrom() {
return codeFrom;
}
public void setCodeFrom(String codeFrom) {
this.codeFrom = codeFrom;
}
}

@ -2,7 +2,10 @@ package com.ibeetl.jlw.entity;
import javax.validation.constraints.NotNull;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.ibeetl.admin.core.entity.BaseEntity;
import org.apache.commons.lang3.StringUtils;
import org.beetl.sql.annotation.entity.*;
import com.ibeetl.admin.core.util.ValidateConfig;
@ -11,6 +14,8 @@ import com.ibeetl.admin.core.annotation.Dict;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
/*
* --
@ -40,6 +45,7 @@ public class StudentHandsOnTaskReport extends BaseEntity{
//文件地址PDF
private String reportFile ;
private Map<String, Object> reportFileMap;
//报告分值
@ -234,4 +240,15 @@ public class StudentHandsOnTaskReport extends BaseEntity{
public void setStudentId(Long studentId) {
this.studentId = studentId;
}
public Map<String, Object> getReportFileMap() {
if (StringUtils.isNotEmpty(reportFile)) {
return JSONObject.parseObject(reportFile, new TypeReference<Map<String, Object>>(){});
}
return reportFileMap;
}
public void setReportFileMap(Map<String, Object> reportFileMap) {
this.reportFileMap = reportFileMap;
}
}

@ -26,11 +26,11 @@ public class TeacherOpenCourseKnowledgePoint extends BaseEntity{
private Long teacherOpenCourseKnowledgePointId ;
//课程开课ID
@Dict(type = "course_info.course_info_name.course_info_status=1,course_info_type=1")
@Dict(type = "teacher_open_course.teacher_open_course_title.teacher_open_course_status=1")
private Long teacherOpenCourseId ;
//章节ID
@Dict(type="course_info.course_info_name.course_info_status=1")
@Dict(type="teacher_open_course_merge_course_info.course_info_name.course_info_status=1")
private Long chapterId ;
//知识点标题
@ -53,6 +53,13 @@ public class TeacherOpenCourseKnowledgePoint extends BaseEntity{
private Long userId ;
/**
*
*/
@Dict(type="teacher_open_course_hands_on.hands_on_name.1=1")
private Long handsOnId;
//是否删除 1删除0未删除
/*逻辑删除标志*/
@InsertIgnore
@ -180,5 +187,11 @@ public class TeacherOpenCourseKnowledgePoint extends BaseEntity{
this.delFlag = delFlag;
}
public Long getHandsOnId() {
return handsOnId;
}
public void setHandsOnId(Long handsOnId) {
this.handsOnId = handsOnId;
}
}

@ -94,9 +94,16 @@ public class StudentHandsOnTaskReportService extends CoreBaseService<StudentHand
String msg = "";
StudentHandsOnTaskReport studentHandsOnTaskReport = studentHandsOnTaskReportQuery.pojo();
Long handsOnTaskId = studentHandsOnTaskReport.getHandsOnTaskId();
StudentHandsOnTaskReport studentHandsOnTaskReport1 = this.sqlManager.lambdaQuery(StudentHandsOnTaskReport.class).andEq(StudentHandsOnTaskReport::getHandsOnTaskId, handsOnTaskId).singleSimple();
if (handsOnTaskId == null) {
return JsonResult.success();
}
StudentHandsOnTaskReport studentHandsOnTaskReport1 = this.sqlManager.lambdaQuery(StudentHandsOnTaskReport.class)
.andEq(StudentHandsOnTaskReport::getHandsOnTaskId, handsOnTaskId).singleSimple();
if (studentHandsOnTaskReport1 != null) {
deleteById(studentHandsOnTaskReport1.getStudentHandsOnTaskReportId());
studentHandsOnTaskReport1.setReportScore(studentHandsOnTaskReportQuery.getReportScore());
studentHandsOnTaskReport1.setReportComment(studentHandsOnTaskReportQuery.getReportComment());
update(studentHandsOnTaskReport1);
return JsonResult.success();
}
if (StringUtils.isNotEmpty(studentHandsOnTaskReport.getReportFile())) {
studentHandsOnTaskReport.setReportScore(BigDecimal.valueOf(100));

@ -4,7 +4,6 @@ package com.ibeetl.jlw.service;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.ReUtil;
import cn.jlw.util.ToolUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
@ -591,8 +590,9 @@ public class StudentService extends CoreBaseService<Student>{
String schoolClassId = "";
// 通过名字查询院校信息,如果查询不到就告诉前台需要先去添加院校
String[] classSplit = className.split("_");
List<SchoolClass> schoolClass = schoolClassDao.createLambdaQuery()
.andEq(SchoolClass::getClassName, className)
.andEq(SchoolClass::getClassName, classSplit[0])
.andEq(SchoolClass::getClassStatus, 1)
.select();
@ -601,7 +601,7 @@ public class StudentService extends CoreBaseService<Student>{
// 通过名字没查询到院校的时候
if(ObjectUtil.isEmpty(schoolClass)) {
// 正则取院校ID
schoolClassId = ReUtil.get("\\d+", className, 0);
schoolClassId = classSplit[1];
Assert.notBlank(schoolClassId, "请先添加班级信息:{}", className);
}
@ -618,6 +618,7 @@ public class StudentService extends CoreBaseService<Student>{
pojo.setStudentStatus(1);
pojo.setStudentPassword("123qwe");
pojo.setAddTime(date);
pojo.setCodeFrom("导入");
save(pojo);
String code = pojo.createCode();//TODO 可改规则

@ -1,5 +1,6 @@
package com.ibeetl.jlw.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.jlw.util.ToolUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
@ -9,7 +10,9 @@ import com.ibeetl.admin.core.web.JsonResult;
import com.ibeetl.admin.core.web.JsonReturnCode;
import com.ibeetl.jlw.dao.TeacherOpenCourseKnowledgePointDao;
import com.ibeetl.jlw.entity.TeacherOpenCourseKnowledgePoint;
import com.ibeetl.jlw.entity.TeacherOpenCourseKnowledgePointRelation;
import com.ibeetl.jlw.web.query.TeacherOpenCourseKnowledgePointQuery;
import com.ibeetl.jlw.web.query.TeacherOpenCourseKnowledgePointRelationQuery;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.beetl.sql.core.SqlId;
@ -22,6 +25,7 @@ import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* Service
@ -35,6 +39,7 @@ import java.util.List;
public class TeacherOpenCourseKnowledgePointService extends CoreBaseService<TeacherOpenCourseKnowledgePoint> implements DeleteResourcesBy{
@Autowired private TeacherOpenCourseKnowledgePointDao teacherOpenCourseKnowledgePointDao;
@Autowired private TeacherOpenCourseKnowledgePointRelationService relationService;
public PageQuery<TeacherOpenCourseKnowledgePoint>queryByCondition(PageQuery query){
PageQuery ret = teacherOpenCourseKnowledgePointDao.queryByCondition(query);
@ -44,7 +49,23 @@ public class TeacherOpenCourseKnowledgePointService extends CoreBaseService<Teac
public PageQuery<TeacherOpenCourseKnowledgePoint>queryByConditionQuery(PageQuery query){
PageQuery ret = teacherOpenCourseKnowledgePointDao.queryByConditionQuery(query);
queryListAfter(ret.getList());
List<TeacherOpenCourseKnowledgePoint> list = ret.getList();
if (CollectionUtil.isNotEmpty(list)) {
List<Long> collect = list.stream().map(TeacherOpenCourseKnowledgePoint::getTeacherOpenCourseKnowledgePointId).collect(Collectors.toList());
TeacherOpenCourseKnowledgePointRelationQuery relationQuery = new TeacherOpenCourseKnowledgePointRelationQuery();
relationQuery.setTeacherOpenCourseKnowledgePointIdPlural(CollectionUtil.join(collect, ","));
List<TeacherOpenCourseKnowledgePointRelation> openCourseKnowledgePointRelations = relationService.getValuesByQueryNotWithPermission(relationQuery);
for (TeacherOpenCourseKnowledgePoint teacherOpenCourseKnowledgePoint : list) {
TeacherOpenCourseKnowledgePointRelation relation = openCourseKnowledgePointRelations.stream().filter(v ->
v.getTeacherOpenCourseKnowledgePointId().equals(teacherOpenCourseKnowledgePoint.getTeacherOpenCourseKnowledgePointId())).findFirst().orElse(null);
if (relation != null) {
teacherOpenCourseKnowledgePoint.setHandsOnId(relation.getBussinessId());
}
}
}
queryListAfter(list);
return ret;
}

@ -218,6 +218,7 @@ public class UniversitiesCollegesService extends CoreBaseService<UniversitiesCol
Assert.isTrue(user.isUniAdmin(), "该接口只有学校管理管理员可以使用!");
Long userId = user.getId();
Long orgId = user.getOrgId();
CoreUser dbUser = coreUserService.getUserById(userId);
// 设置登录时间和最后登录时间
@ -229,7 +230,7 @@ public class UniversitiesCollegesService extends CoreBaseService<UniversitiesCol
universitiesCollegesUserInfo.setCoreUser(dbUser);
// 院校信息
UniversitiesColleges universitiesColleges = (UniversitiesColleges) webPlatformService.getUserInfoFromSessionByIdentity(user);
UniversitiesColleges universitiesColleges = universitiesCollegesDao.getByOrgId(orgId);
universitiesCollegesUserInfo.setUniversitiesColleges(universitiesColleges);
// 院校权限信息

@ -8,6 +8,7 @@ import com.ibeetl.jlw.enums.GenderEnum;
import java.util.Date;
import java.util.List;
import static cn.hutool.core.util.ObjectUtil.defaultIfBlank;
import static cn.hutool.core.util.ObjectUtil.defaultIfNull;
import static com.ibeetl.jlw.enums.GenderEnum.UN_KNOW;
@ -49,6 +50,13 @@ public class StudentQuery extends PageParam {
@Query(name = "QQ", display = false)
private String studentQq;
/**
*
*
*
*/
private String codeFrom;
private String studentStatuses;
// 学生编号或者姓名
@ -243,6 +251,15 @@ public class StudentQuery extends PageParam {
this.endTime = endTime;
}
public String getCodeFrom() {
return codeFrom;
}
public void setCodeFrom(String codeFrom) {
this.codeFrom = codeFrom;
}
public static class StudentTemp{ //临时学生类
private Long studentsId;
@ -367,6 +384,7 @@ public class StudentQuery extends PageParam {
pojo.setHeadImg(this.getHeadImg());
pojo.setStudentWeixinInfo(this.getStudentWeixinInfo());
pojo.setStudentQq(this.getStudentQq());
pojo.setCodeFrom(defaultIfBlank(this.getCodeFrom(), "注册"));
return pojo;
}

@ -17,6 +17,7 @@ queryByCondition
t.add_time,
t.org_id,
t.user_id,
t.code_from,
a.class_name,b.universities_colleges_name,
@if(!isEmpty(log)){
d.resources_application_id,

@ -67,7 +67,18 @@ queryByCondition
@if(!isEmpty(studentName)){
and t2.student_name =#studentName#
@}
@if(!isEmpty(teacherId)){
and t.teacher_id =#teacherId#
@}
@if(!isEmpty(teacherIdPlural)){
and find_in_set(t.teacher_id,#teacherIdPlural#)
@}
@if(!isEmpty(studentId)){
and t.student_id =#studentId#
@}
@if(!isEmpty(studentIdPlural)){
and find_in_set(t.student_id,#studentIdPlural#)
@}
queryByConditionQuery
===
@ -136,6 +147,18 @@ queryByConditionQuery
@if(!isEmpty(studentName)){
and t2.student_name =#studentName#
@}
@if(!isEmpty(teacherId)){
and t.teacher_id =#teacherId#
@}
@if(!isEmpty(teacherIdPlural)){
and find_in_set(t.teacher_id,#teacherIdPlural#)
@}
@if(!isEmpty(studentId)){
and t.student_id =#studentId#
@}
@if(!isEmpty(studentIdPlural)){
and find_in_set(t.student_id,#studentIdPlural#)
@}
@ -268,6 +291,18 @@ getStudentHandsOnTaskReportValues
@if(!isEmpty(userId)){
and t.user_id =#userId#
@}
@if(!isEmpty(teacherId)){
and t.teacher_id =#teacherId#
@}
@if(!isEmpty(teacherIdPlural)){
and find_in_set(t.teacher_id,#teacherIdPlural#)
@}
@if(!isEmpty(studentId)){
and t.student_id =#studentId#
@}
@if(!isEmpty(studentIdPlural)){
and find_in_set(t.student_id,#studentIdPlural#)
@}
getValuesByQuery
@ -326,6 +361,18 @@ getValuesByQuery
@if(!isEmpty(userIdPlural)){
and find_in_set(t.user_id,#userIdPlural#)
@}
@if(!isEmpty(teacherId)){
and t.teacher_id =#teacherId#
@}
@if(!isEmpty(teacherIdPlural)){
and find_in_set(t.teacher_id,#teacherIdPlural#)
@}
@if(!isEmpty(studentId)){
and t.student_id =#studentId#
@}
@if(!isEmpty(studentIdPlural)){
and find_in_set(t.student_id,#studentIdPlural#)
@}
getValuesByQueryNotWithPermission
@ -384,6 +431,18 @@ getValuesByQueryNotWithPermission
@if(!isEmpty(userIdPlural)){
and find_in_set(t.user_id,#userIdPlural#)
@}
@if(!isEmpty(teacherId)){
and t.teacher_id =#teacherId#
@}
@if(!isEmpty(teacherIdPlural)){
and find_in_set(t.teacher_id,#teacherIdPlural#)
@}
@if(!isEmpty(studentId)){
and t.student_id =#studentId#
@}
@if(!isEmpty(studentIdPlural)){
and find_in_set(t.student_id,#studentIdPlural#)
@}
getReportList
===

@ -50,6 +50,9 @@ queryByCondition
@if(!isEmpty(resourcesInfoContent)){
and t.resources_info_content =#resourcesInfoContent#
@}
@if(!isEmpty(resourcesInfoStatus)){
and t.resources_info_status =#resourcesInfoStatus#
@}
@if(isEmpty(resourcesInfoStatus)){
@// 默认为空不查询删除状态的数据
and t.resources_info_status != 0
@ -108,6 +111,9 @@ queryByConditionQuery
@if(!isEmpty(resourcesInfoContent)){
and t.resources_info_content =#resourcesInfoContent#
@}
@if(!isEmpty(resourcesInfoStatus)){
and t.resources_info_status =#resourcesInfoStatus#
@}
@if(isEmpty(resourcesInfoStatus)){
@// 默认为空不查询删除状态的数据
and t.resources_info_status != 0
@ -144,7 +150,7 @@ logicDeleteTeacherOpenCourseMergeResourcesInfo
update teacher_open_course_merge_resources_info set resources_info_status = 0
where 1 = 1
and find_in_set(teacher_open_course_merge_resources_info_id,#ids#) and resources_info_status != 0
and find_in_set(teacher_open_course_merge_resources_info_id,#ids#)
getByIds
===
@ -239,6 +245,9 @@ getTeacherOpenCourseMergeResourcesInfoValues
@if(!isEmpty(resourcesInfoContent)){
and t.resources_info_content =#resourcesInfoContent#
@}
@if(!isEmpty(resourcesInfoStatus)){
and t.resources_info_status =#resourcesInfoStatus#
@}
@if(!isEmpty(orgId)){
and t.org_id =#orgId#
@}
@ -283,6 +292,9 @@ getValuesByQuery
@if(!isEmpty(resourcesInfoContent)){
and t.resources_info_content =#resourcesInfoContent#
@}
@if(!isEmpty(resourcesInfoStatus)){
and t.resources_info_status =#resourcesInfoStatus#
@}
@if(!isEmpty(orgId)){
and t.org_id =#orgId#
@}
@ -332,6 +344,9 @@ getValuesByQueryNotWithPermission
@if(!isEmpty(resourcesInfoContent)){
and t.resources_info_content =#resourcesInfoContent#
@}
@if(!isEmpty(resourcesInfoStatus)){
and t.resources_info_status =#resourcesInfoStatus#
@}
@if(!isEmpty(orgId)){
and t.org_id =#orgId#
@}
@ -390,6 +405,9 @@ getExcelValues
@if(!isEmpty(resourcesInfoContent)){
and t.resources_info_content =#resourcesInfoContent#
@}
@if(!isEmpty(resourcesInfoStatus)){
and t.resources_info_status =#resourcesInfoStatus#
@}
@if(!isEmpty(orgId)){
and t.org_id =#orgId#
@}
@ -440,6 +458,9 @@ getExcelValues
@if(!isEmpty(resourcesInfoContent)){
and t.resources_info_content =#resourcesInfoContent#
@}
@if(!isEmpty(resourcesInfoStatus)){
and t.resources_info_status =#resourcesInfoStatus#
@}
@if(!isEmpty(orgId)){
and t.org_id =#orgId#
@}

@ -73,7 +73,7 @@ layui.define([ 'form', 'laydate', 'table' ], function(exports) {
},
{
field : 'undefinedYD',
field : 'codeFrom',
title : '账号来源',align: "center"
},
{

@ -38,7 +38,12 @@
<div class="grid-demo grid-demo-bg1" style="text-align: center;padding-top: 20%;">
<div class="layui-upload">
<div class="layui-upload-list">
<img class="layui-upload-img" id="demo1" width='200' src="${userCenterData.coreUser.headImg!''}" height='200' style="border:2px solid #cccccc;border-radius:50%; overflow:hidden;"/>
<!--#if(userCenterData.coreUser.headImg== null || userCenterData.coreUser.headImg==''){-->
<img src="${ctxPath}//plugins/head_img.jpg" class="layui-upload-img" id="demo1" width='200' height='200' style="border:2px solid #cccccc;border-radius:50%; overflow:hidden;"/>
<!--#}else{-->
<img class="layui-upload-img" id="demo1" width='200' src="${ctxPath}${userCenterData.coreUser.headImg!''}" height='200' style="border:2px solid #cccccc;border-radius:50%; overflow:hidden;"/>
<!--#}-->
<p id="demoText"></p>
</div>
<div style="width: 95px;margin-left: 35%;">
@ -72,7 +77,7 @@
<div class="layui-input-inline">
<div class="layui-form-mid" data-value="${userCenterData.coreUser.password!''}">********</div>
<div class="layui-form-mid">
<a style="cursor: pointer;" class="edit" title="登录密码" name="password">
<a style="cursor: pointer;" class="edit_pwd" title="登录密码" name="password">
<i class="iconfont" style="font-size: 20px;">&#xebd8;</i>
</a>
</div>
@ -116,7 +121,7 @@
<div class="layui-inline">
<label class="layui-form-label">院校名称:</label>
<div class="layui-form-mid">${userCenterData.universitiesColleges.universitiesCollegesName!''}</div>
<div class="layui-form-mid">
<div class="layui-form-mid" style="display:none;">
<a class="edit" title="院校名称" name="universitiesCollegesName" style="cursor: pointer;">
<i class="iconfont" style="font-size: 20px;">&#xebd8;</i>
</a>
@ -130,7 +135,9 @@
<div class="layui-input-inline">
<div class="layui-form-mid">${userCenterData.universitiesColleges.universitiesCollegesContacts!''}</div>
<div class="layui-form-mid">
<a class="edit" title="联系人" name="universitiesCollegesContacts" style="cursor: pointer;">
<a class="edit" title="联系人" name="universitiesCollegesContacts"
data-value="${userCenterData.universitiesColleges.universitiesCollegesContacts!''}"
style="cursor: pointer;">
<i class="iconfont" style="font-size: 20px;">&#xebd8;</i>
</a>
</div>
@ -143,7 +150,7 @@
<div class="layui-input-inline">
<div class="layui-form-mid">${userCenterData.universitiesColleges.universitiesCollegesContactsMobile!''}</div>
<div class="layui-form-mid">
<a class="edit" title="联系电话" name="universitiesCollegesContactsMobile" style="cursor: pointer;">
<a class="edit" title="联系电话" name="universitiesCollegesContactsMobile" data-value="${userCenterData.universitiesColleges.universitiesCollegesContactsMobile!''}" style="cursor: pointer;">
<i class="iconfont" style="font-size: 20px;">&#xebd8;</i>
</a>
</div>
@ -156,9 +163,7 @@
<div class="layui-input-inline">
<div class="layui-form-mid">${userCenterData.universitiesColleges.universitiesCollegesProvince!''} ${userCenterData.universitiesColleges.universitiesCollegesCity!''}</div>
<div class="layui-form-mid">
<a id="edit_local" title="所在地"
province="${userCenterData.universitiesColleges.universitiesCollegesProvince!''}"
city="${userCenterData.universitiesColleges.universitiesCollegesCity!''}" style="cursor: pointer;">
<a id="edit_local" title="所在地" style="cursor: pointer;">
<i class="iconfont" style="font-size: 20px;">&#xebd8;</i>
</a>
</div>
@ -219,29 +224,45 @@
</div>
</div>
<!--所在地 编辑-->
<div style="display: none" id="receivingAddress_demo">
<div id="receivingAddress">
<div style="display: none;padding-top: 20px" class="layui-form" id="receivingAddress_demo">
<div class="layui-inline layui-form-item">
<label class="layui-form-label">所属省份</label>
<label class="layui-form-label">所属地区</label>
<div class="layui-input-inline">
<select name="universitiesCollegesProvince" class="province" lay-verify="required" lay-search
lay-filter="province">
<option value="">省份</option>
</select>
</div>
</div>
<div class="layui-inline layui-form-item">
<label class="layui-form-label">所属城市:</label>
<div class="layui-input-inline">
<select name="universitiesCollegesCity" class="city" lay-verify="required" lay-search lay-filter="city">
<select name="universitiesCollegesCity" class="city" lay-verify="required" lay-search
lay-filter="city">
<option value="">地级市</option>
</select>
</div>
</div>
</div>
<div id="changePassword_dialog" style="padding-top: 20px;display: none;">
<div class="layui-form" action="" style="width: 90%;margin: 0 auto;">
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-inline">
<input type="password" name="password" lay-verify="required" placeholder="请输入密码!" autocomplete="off"
class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">密码需要大于等于6</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">确认密码</label>
<div class="layui-input-inline">
<input type="password" name="password2" lay-verify="required" placeholder="请再次输入密码!"
autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">两次密码需相等!</div>
</div>
</div>
</div>
<input type="hidden" name="userId" value="${userCenterData.universitiesColleges.universitiesCollegesId}">
</form>
<!--#} -->
<script>
@ -250,12 +271,11 @@
,element = layui.element
,layer = layui.layer
,form = layui.form;
form.render();
//常规使用 - 普通图片上传
var uploadInst = upload.render({
elem: '#test1'
,url: 'https://httpbin.org/post' //此处用的是第三方的 http 请求演示,实际使用时改成您自己的上传接口即可。
,url:Common.ctxPath + '/jlw/file/update.do' //此处用的是第三方的 http 请求演示,实际使用时改成您自己的上传接口即可。
,before: function(obj){
//预读本地文件示例不支持ie8
obj.preview(function(index, file, result){
@ -271,7 +291,12 @@
return layer.msg('上传失败');
}
//上传成功的一些操作
//……
let param = {
"id": '${userCenterData.coreUser.id}',
"headImg":res.data.src
};
var url = "/admin/user/update.json";
updata(url,param);
$('#demoText').html(''); //置空上传失败的状态
}
,error: function(){
@ -290,44 +315,64 @@
}
}
});
$(".edit_pwd").click(function () {
layer.open({
title: '密码修改'
, type:1
, content: $("#changePassword_dialog")
, btn: ['确定', '关闭']
,area: ['491px', '280px']
, shadeClose: true
, yes: function (index, layero) {
var password = $("#changePassword_dialog input[name='password']").val();
if($.isEmpty(password)){
Common.error("请输入密码!");
return;
}
if(password.length < 6){
Common.error("密码需<span style='color: red;'>大于等于6</span>");
return;
}
var password2 = $("#changePassword_dialog input[name='password2']").val();
if($.isEmpty(password2)){
Common.error("请再次输入密码!");
return;
}
if(password != password2){
Common.error("两次密码不相同!");
return;
}
let param = {
"password":password2,
"id": '${userCenterData.coreUser.id}'};
var url = "/admin/user/editPassword.json";
updata(url,param);
layer.close(index);
},
btn2: function (index, layero) {
layer.close(index);
}
});
});
$(".edit").click(function () {
var name = $(this).attr("name");
var title = $(this).attr("title");
var value= $(this).data('value')
layer.open({
title: '编辑'
, content: '<div class="layui-inline" id="addRoom">\n' +
' <label class="layui-form-label">' + title + '</label>\n' +
' <div class="layui-input-inline">\n' +
' <input type="text" id=' + name + ' name=' + name + ' class="layui-input" >\n' +
' <input type="text" id=' + name + ' name=' + name + ' value='+value+' class="layui-input" >\n' +
' </div>\n' +
' </div>'
, btn: ['确定', '关闭']
, shadeClose: true
, yes: function (index, layero) {
return;
let param = {
"teacherOpenCourseScheduleSessionClassName": $("#addRoom input[name='teacherOpenCourseScheduleSessionClassName']").val(),
"teacherOpenCourseScheduleSessionClassParentId": data.teacherOpenCourseScheduleSessionClassId,
};
layer.load();
setTimeout(function () {
var url = "/jlw/xx/add.json";
if (!$.isEmpty(id)) {
url = "/jlw/xx/edit.json"
}
var ret = Common.postAjax(url, param);
layer.msg(ret.code == 0 ? "操作成功!" : ret.msg, {
offset: ['50%'],
icon: ret.code == 0 ? 1 : 2,
time: 1500 //2秒关闭如果不配置默认是3秒
}, function () {
if (ret.code == 0) {
parent.Lib.tableRefresh();
teacherOpenCourseScheduleSessionClassTable();
}
});
}, 10);
let param = {"id": '${userCenterData.coreUser.id}'};
param[name]=$("#addRoom input[name=" + name + "]").val();
var url = "/admin/user/update.json";
updata(url,param);
layer.close(index);
},
btn2: function (index, layero) {
@ -336,8 +381,6 @@
});
});
$("#edit_local").click(function () {
var provinceText = $(this).attr("province"), cityText=$(this).attr("city");
$.Reappearance($("#receivingAddress"),provinceText,cityText);//返显区域
layer.open({
title: '所在地'
,type:1
@ -346,39 +389,42 @@
, area: ['730px', '400px']
, shadeClose: true
, success:function () {
$.Reappearance("#receivingAddress_demo", "${userCenterData.universitiesColleges.universitiesCollegesProvince}", "${userCenterData.universitiesColleges.universitiesCollegesCity}");//返显区域
form.render('select');
}
, yes: function (index, layero) {
return
let param = {
"teacherOpenCourseScheduleSessionClassName": $("#addRoom input[name='teacherOpenCourseScheduleSessionClassName']").val(),
"teacherOpenCourseScheduleSessionClassParentId": data.teacherOpenCourseScheduleSessionClassId,
"universitiesCollegesProvince": $("#receivingAddress_demo select[name='universitiesCollegesProvince']").val(),
"universitiesCollegesCity": $("#receivingAddress_demo select[name='universitiesCollegesCity']").val(),
"id": '${userCenterData.coreUser.id}'
};
var url = "/admin/user/update.json";
updata(url,param);
layer.close(index);
},
btn2: function (index, layero) {
layer.close(index);
}
});
});
function updata(url,param){
layer.load();
setTimeout(function () {
var url = "/jlw/xx/add.json";
if (!$.isEmpty(id)) {
url = "/jlw/xx/edit.json"
}
var ret = Common.postAjax(url, param);
layer.msg(ret.code == 0 ? "操作成功!" : ret.msg, {
offset: ['50%'],
icon: ret.code == 0 ? 1 : 2,
time: 1500 //2秒关闭如果不配置默认是3秒
}, function () {
layer.closeAll()
if (ret.code == 0) {
parent.Lib.tableRefresh();
}
});
}, 10);
layer.close(index);
},
btn2: function (index, layero) {
layer.close(index);
}
});
});
form.render();
});
</script>

Loading…
Cancel
Save