|
@@ -12,6 +12,7 @@ import com.qmth.distributed.print.business.entity.*;
|
|
import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
|
|
import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
|
|
import com.qmth.distributed.print.business.enums.PrintMethodEnum;
|
|
import com.qmth.distributed.print.business.enums.PrintMethodEnum;
|
|
import com.qmth.distributed.print.business.service.ExamDetailService;
|
|
import com.qmth.distributed.print.business.service.ExamDetailService;
|
|
|
|
+import com.qmth.distributed.print.business.service.ExamStudentService;
|
|
import com.qmth.distributed.print.business.service.PrintCommonService;
|
|
import com.qmth.distributed.print.business.service.PrintCommonService;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.entity.*;
|
|
import com.qmth.teachcloud.common.entity.*;
|
|
@@ -90,6 +91,9 @@ public class CreatePdfUtil {
|
|
@Resource
|
|
@Resource
|
|
ExamDetailService examDetailService;
|
|
ExamDetailService examDetailService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ ExamStudentService examStudentService;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 创建登记表
|
|
* 创建登记表
|
|
*
|
|
*
|
|
@@ -363,13 +367,11 @@ public class CreatePdfUtil {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 替换html通用模版
|
|
|
|
|
|
+ * 替换html通用模版中的条码信息
|
|
*
|
|
*
|
|
- * @param examCardDetail 题卡详细内容
|
|
|
|
|
|
+ * @param content 题卡详细内容
|
|
*/
|
|
*/
|
|
- public String replaceHtmlTemplate(ExamCardDetail examCardDetail) {
|
|
|
|
- String content = examCardDetail.getHtmlContent();
|
|
|
|
- log.info("contentTemp:{}", content);
|
|
|
|
|
|
+ public String resetHtmlTemplateBar(String content) {
|
|
content = content.replaceAll("<img src=\"data:image/png;base64,\\$\\{examNumber\\}\">", "");
|
|
content = content.replaceAll("<img src=\"data:image/png;base64,\\$\\{examNumber\\}\">", "");
|
|
content = content.replaceAll("\\$\\{examNumberStr\\}", "");
|
|
content = content.replaceAll("\\$\\{examNumberStr\\}", "");
|
|
return content;
|
|
return content;
|
|
@@ -784,8 +786,7 @@ public class CreatePdfUtil {
|
|
*/
|
|
*/
|
|
public BasicAttachment examStudentHtml(String studentContent, ExamStudent examStudent, ExamDetail examDetail, ExamDetailCourse examDetailCourse, Long userId, List<PdfDto> examStudentPdfList, BasicCardRule basicCardRule) throws IOException {
|
|
public BasicAttachment examStudentHtml(String studentContent, ExamStudent examStudent, ExamDetail examDetail, ExamDetailCourse examDetailCourse, Long userId, List<PdfDto> examStudentPdfList, BasicCardRule basicCardRule) throws IOException {
|
|
String studentHtml = studentContent;
|
|
String studentHtml = studentContent;
|
|
- if(examStudent.getId() != null) {
|
|
|
|
- if (Objects.nonNull(examStudent.getExtendFields())) {
|
|
|
|
|
|
+ /*if (Objects.nonNull(examStudent.getExtendFields())) {
|
|
JSONArray jsonObjectExtend = (JSONArray) JSONArray.parse(examStudent.getExtendFields());//扩展字段
|
|
JSONArray jsonObjectExtend = (JSONArray) JSONArray.parse(examStudent.getExtendFields());//扩展字段
|
|
if (Objects.nonNull(jsonObjectExtend)) {
|
|
if (Objects.nonNull(jsonObjectExtend)) {
|
|
int i = 0;
|
|
int i = 0;
|
|
@@ -795,46 +796,47 @@ public class CreatePdfUtil {
|
|
i++;
|
|
i++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- }
|
|
|
|
- //生成学生考号条码并将图片转成base64
|
|
|
|
- if (Objects.nonNull(examStudent.getTicketNumber())) {
|
|
|
|
- studentHtml = studentHtml.replaceAll("\\$\\{examNumber\\}", GoogleBarCodeUtil.createBarCode(examStudent.getTicketNumber(), false));
|
|
|
|
- }
|
|
|
|
- studentHtml = studentHtml.replaceAll("\\$\\{examNumberStr\\}", examStudent.getTicketNumber());
|
|
|
|
- //随机生成学生试卷条码并将图片转成base64
|
|
|
|
- if (Objects.nonNull(examStudent.getPaperType())) {
|
|
|
|
- studentHtml = studentHtml.replaceAll("\\$\\{paperType\\}", GoogleBarCodeUtil.createBarCode(SystemConstant.convertPaperType(examStudent.getPaperType()), false));
|
|
|
|
- }
|
|
|
|
- Map<String, Object> map = ConvertUtil.analyzeDateAndTime(examDetail.getExamStartTime(), examDetail.getExamEndTime());
|
|
|
|
- String examDate = Objects.nonNull(map.get("date")) ? (String) map.get("date") : "";
|
|
|
|
- String examTime = Objects.nonNull(map.get("time")) ? (String) map.get("time") : "";
|
|
|
|
- studentHtml = studentHtml.replaceAll("\\$\\{examDate\\}", examDate);
|
|
|
|
- studentHtml = studentHtml.replaceAll("\\$\\{examTime\\}", examTime);
|
|
|
|
|
|
+ }*/
|
|
|
|
+ // 生成学生考号条码并将图片转成base64
|
|
|
|
+ studentHtml = studentHtml.replaceAll("\\$\\{examNumber\\}", examStudent != null && examStudent.getTicketNumber() != null ? GoogleBarCodeUtil.createBarCode(examStudent.getTicketNumber(), false) : "");
|
|
|
|
+ studentHtml = studentHtml.replaceAll("\\$\\{examNumberStr\\}", examStudent != null && examStudent.getTicketNumber() != null ? examStudent.getTicketNumber() : "");
|
|
|
|
+ // 随机生成学生试卷条码并将图片转成base64
|
|
|
|
+ studentHtml = studentHtml.replaceAll("\\$\\{paperType\\}", examStudent != null && examStudent.getPaperType() != null ? GoogleBarCodeUtil.createBarCode(SystemConstant.convertPaperType(examStudent.getPaperType()), false) : "");
|
|
|
|
+ // 替换考生卷型
|
|
|
|
+ studentHtml = studentHtml.replaceAll("\\$\\{paperTypeName\\}", examStudent != null && examStudent.getPaperType() != null ? examStudent.getPaperType() : "");
|
|
|
|
+
|
|
|
|
+ // 根据题卡规则必选字段,替换相应值,没有则“”
|
|
|
|
+ List<StudentExtendDto> studentExtendDtos = createExtendObject(examStudent, basicCardRule);
|
|
|
|
+ for (StudentExtendDto extendDto : studentExtendDtos) {
|
|
|
|
+ studentHtml = studentHtml.replaceAll("\\$\\{" + extendDto.getFieldName() + "\\}", String.valueOf(extendDto.getValue()));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 时间需要特殊处理
|
|
|
|
+ Map<String, Object> map = ConvertUtil.analyzeDateAndTime(examDetail.getExamStartTime(), examDetail.getExamEndTime());
|
|
|
|
+ String examDate = Objects.nonNull(map.get("date")) ? (String) map.get("date") : "";
|
|
|
|
+ String examTime = Objects.nonNull(map.get("time")) ? (String) map.get("time") : "";
|
|
|
|
+ studentHtml = studentHtml.replaceAll("\\$\\{examDate\\}", examDate);
|
|
|
|
+ studentHtml = studentHtml.replaceAll("\\$\\{examTime\\}", examTime);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 以下值通过createExtendObject动态设置了,暂时屏蔽(2022-03-11 by xf)
|
|
|
|
+ /*
|
|
studentHtml = studentHtml.replaceAll("\\$\\{ticketNumber\\}", examStudent.getTicketNumber());
|
|
studentHtml = studentHtml.replaceAll("\\$\\{ticketNumber\\}", examStudent.getTicketNumber());
|
|
studentHtml = studentHtml.replaceAll("\\$\\{siteNumber\\}", examStudent.getSiteNumber());
|
|
studentHtml = studentHtml.replaceAll("\\$\\{siteNumber\\}", examStudent.getSiteNumber());
|
|
- if (StringUtils.isNotEmpty(examStudent.getPaperType())) {
|
|
|
|
- studentHtml = studentHtml.replaceAll("\\$\\{paperTypeName\\}", examStudent.getPaperType());
|
|
|
|
- }
|
|
|
|
studentHtml = studentHtml.replaceAll("\\$\\{studentCode\\}", examStudent.getStudentCode());
|
|
studentHtml = studentHtml.replaceAll("\\$\\{studentCode\\}", examStudent.getStudentCode());
|
|
studentHtml = studentHtml.replaceAll("\\$\\{studentName\\}", examStudent.getStudentName());
|
|
studentHtml = studentHtml.replaceAll("\\$\\{studentName\\}", examStudent.getStudentName());
|
|
studentHtml = studentHtml.replaceAll("\\$\\{courseName\\}", examDetailCourse.getCourseName());
|
|
studentHtml = studentHtml.replaceAll("\\$\\{courseName\\}", examDetailCourse.getCourseName());
|
|
studentHtml = studentHtml.replaceAll("\\$\\{courseCode\\}", examDetailCourse.getCourseCode());
|
|
studentHtml = studentHtml.replaceAll("\\$\\{courseCode\\}", examDetailCourse.getCourseCode());
|
|
studentHtml = studentHtml.replaceAll("\\$\\{examPlace\\}", examDetail.getExamPlace());
|
|
studentHtml = studentHtml.replaceAll("\\$\\{examPlace\\}", examDetail.getExamPlace());
|
|
studentHtml = studentHtml.replaceAll("\\$\\{examRoom\\}", examDetail.getExamRoom());
|
|
studentHtml = studentHtml.replaceAll("\\$\\{examRoom\\}", examDetail.getExamRoom());
|
|
- studentHtml = studentHtml.replaceAll("\\$\\{paperNumber\\}", examDetailCourse.getPaperNumber());
|
|
|
|
|
|
+ studentHtml = studentHtml.replaceAll("\\$\\{paperNumber\\}", examDetailCourse.getPaperNumber());*/
|
|
|
|
|
|
- List<StudentExtendDto> studentExtendDtos = createExtendObject(examStudent, basicCardRule);
|
|
|
|
- for (StudentExtendDto extendDto : studentExtendDtos) {
|
|
|
|
- studentHtml = studentHtml.replaceAll("\\$\\{" + extendDto.getFieldName() + "\\}", String.valueOf(extendDto.getValue()));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //学生题卡
|
|
|
|
- BasicAttachment examStudentAttachment = printCommonService.saveAttachmentHtml(examDetail.getSchoolId() + "|" + examDetailCourse.getCourseCode() + "|" + examStudent.getTicketNumber(), studentHtml, userId, examStudentPdfList);
|
|
|
|
|
|
+ //学生题卡
|
|
|
|
+ BasicAttachment examStudentAttachment = printCommonService.saveAttachmentHtml(examDetail.getSchoolId() + "|" + examDetailCourse.getCourseCode() + (examStudent != null && examStudent.getTicketNumber() != null ? "|" + examStudent.getTicketNumber() : ""), studentHtml, userId, examStudentPdfList);
|
|
|
|
+ if(examStudent != null) {
|
|
examStudent.setAttachmentId(examStudentAttachment.getId());
|
|
examStudent.setAttachmentId(examStudentAttachment.getId());
|
|
- return examStudentAttachment;
|
|
|
|
- } else {
|
|
|
|
- return printCommonService.saveAttachmentHtml(examDetail.getSchoolId() + "|" + examDetailCourse.getCourseCode() + "|" + examStudent.getTicketNumber(), studentHtml, userId, examStudentPdfList);
|
|
|
|
}
|
|
}
|
|
|
|
+ return examStudentAttachment;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -842,35 +844,38 @@ public class CreatePdfUtil {
|
|
*
|
|
*
|
|
* @param examStudent 考生对象
|
|
* @param examStudent 考生对象
|
|
* @param basicCardRule 题卡规则对象
|
|
* @param basicCardRule 题卡规则对象
|
|
- * @return
|
|
|
|
*/
|
|
*/
|
|
private List<StudentExtendDto> createExtendObject(ExamStudent examStudent, BasicCardRule basicCardRule) {
|
|
private List<StudentExtendDto> createExtendObject(ExamStudent examStudent, BasicCardRule basicCardRule) {
|
|
|
|
+ ExamStudentPdfInfoDto examStudentPdfInfoDto = examStudent == null ? null : examStudentService.getByStudentId(examStudent.getId());
|
|
List<JSONObject> requiredFieldsJson = JSONArray.parseArray(basicCardRule.getRequiredFields(), JSONObject.class);
|
|
List<JSONObject> requiredFieldsJson = JSONArray.parseArray(basicCardRule.getRequiredFields(), JSONObject.class);
|
|
- Map<String, Object> studentExtendMap = JSONArray.parseArray(examStudent.getExtendFields(), JSONObject.class).stream().collect(Collectors.toMap(k -> String.valueOf(k.get("code")), v -> v.get("value")));
|
|
|
|
List<StudentExtendDto> studentExtendDtos = new ArrayList<>();
|
|
List<StudentExtendDto> studentExtendDtos = new ArrayList<>();
|
|
if (requiredFieldsJson.size() > 0) {
|
|
if (requiredFieldsJson.size() > 0) {
|
|
for (JSONObject jsonObject : requiredFieldsJson) {
|
|
for (JSONObject jsonObject : requiredFieldsJson) {
|
|
StudentExtendDto studentExtendDto = new StudentExtendDto();
|
|
StudentExtendDto studentExtendDto = new StudentExtendDto();
|
|
String code = String.valueOf(jsonObject.get("code"));
|
|
String code = String.valueOf(jsonObject.get("code"));
|
|
studentExtendDto.setFieldName(code);
|
|
studentExtendDto.setFieldName(code);
|
|
- Object value = ReflectUtil.getFieldValue(examStudent, code);
|
|
|
|
|
|
+ Object value = examStudentPdfInfoDto == null ? null : ReflectUtil.getFieldValue(examStudentPdfInfoDto, code);
|
|
studentExtendDto.setValue(value == null ? "" : value);
|
|
studentExtendDto.setValue(value == null ? "" : value);
|
|
studentExtendDtos.add(studentExtendDto);
|
|
studentExtendDtos.add(studentExtendDto);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
List<JSONObject> extendFieldsJson = JSONArray.parseArray(basicCardRule.getExtendFields(), JSONObject.class);
|
|
List<JSONObject> extendFieldsJson = JSONArray.parseArray(basicCardRule.getExtendFields(), JSONObject.class);
|
|
if (extendFieldsJson.size() > 0) {
|
|
if (extendFieldsJson.size() > 0) {
|
|
|
|
+ Map<String, Object> studentExtendMap = null;
|
|
|
|
+ if (examStudentPdfInfoDto != null && StringUtils.isNotBlank(examStudentPdfInfoDto.getExtendFields())) {
|
|
|
|
+ studentExtendMap = JSONArray.parseArray(examStudentPdfInfoDto.getExtendFields(), JSONObject.class).stream().collect(Collectors.toMap(k -> String.valueOf(k.get("code")), v -> v.get("value")));
|
|
|
|
+ }
|
|
for (JSONObject jsonObject : extendFieldsJson) {
|
|
for (JSONObject jsonObject : extendFieldsJson) {
|
|
boolean enable = Boolean.parseBoolean(jsonObject.get("enable").toString());
|
|
boolean enable = Boolean.parseBoolean(jsonObject.get("enable").toString());
|
|
- if (!enable) {
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
|
|
+// if (!enable) {
|
|
|
|
+// continue;
|
|
|
|
+// }
|
|
StudentExtendDto studentExtendDto = new StudentExtendDto();
|
|
StudentExtendDto studentExtendDto = new StudentExtendDto();
|
|
String code = String.valueOf(jsonObject.get("code"));
|
|
String code = String.valueOf(jsonObject.get("code"));
|
|
studentExtendDto.setFieldName(code);
|
|
studentExtendDto.setFieldName(code);
|
|
- Object value = ReflectUtil.getFieldValue(examStudent, code);
|
|
|
|
|
|
+ Object value = examStudentPdfInfoDto == null ? null : ReflectUtil.getFieldValue(examStudentPdfInfoDto, code);
|
|
if (value == null) {
|
|
if (value == null) {
|
|
- value = studentExtendMap.get(code);
|
|
|
|
|
|
+ value = studentExtendMap == null ? null : studentExtendMap.get(code);
|
|
}
|
|
}
|
|
studentExtendDto.setValue(value == null ? "" : value);
|
|
studentExtendDto.setValue(value == null ? "" : value);
|
|
studentExtendDtos.add(studentExtendDto);
|
|
studentExtendDtos.add(studentExtendDto);
|