Browse Source

Merge remote-tracking branch 'origin/dev_v3.0.0' into dev_v3.0.0

wangliang 3 years ago
parent
commit
4fa6c0a953

+ 42 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/CreatePdfUtil.java

@@ -1,6 +1,7 @@
 package com.qmth.distributed.print.business.util;
 
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ReflectUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -8,7 +9,6 @@ import com.google.gson.Gson;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.cache.CreatePdfCacheUtil;
 import com.qmth.distributed.print.business.entity.*;
-import com.qmth.distributed.print.business.service.BasicCardRuleService;
 import com.qmth.teachcloud.common.enums.DrawRuleEnum;
 import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
 import com.qmth.distributed.print.business.enums.PrintMethodEnum;
@@ -824,14 +824,54 @@ public class CreatePdfUtil {
         studentHtml = studentHtml.replaceAll("\\$\\{examRoom\\}", examDetail.getExamRoom());
         studentHtml = studentHtml.replaceAll("\\$\\{paperNumber\\}", examDetailCourse.getPaperNumber());
 
+        List<StudentExtendDto> studentExtendDtos = createExtendObject(t, basicCardRule);
+        for (StudentExtendDto extendDto : studentExtendDtos) {
+            studentHtml = studentHtml.replaceAll("\\$\\{"+extendDto.getFieldName()+"\\}", String.valueOf(extendDto.getValue()));
+        }
+
         //学生题卡
         BasicAttachment examStudentAttachment = printCommonService.saveAttachmentHtml(examDetail.getSchoolId() + "|" + examDetailCourse.getCourseCode() + "|" + t.getTicketNumber(), studentHtml, userId, examStudentPdfList);
         t.setAttachmentId(examStudentAttachment.getId());
         return examStudentAttachment;
     }
 
+    /**
+     * 题卡规则字段
+     * @param examStudent 考生对象
+     * @param basicCardRule 题卡规则对象
+     * @return
+     */
     private List<StudentExtendDto> createExtendObject(ExamStudent examStudent, BasicCardRule basicCardRule){
-        return null;
+        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<>();
+        if(requiredFieldsJson.size() > 0){
+            for (JSONObject jsonObject : requiredFieldsJson) {
+                StudentExtendDto studentExtendDto = new StudentExtendDto();
+                String code = String.valueOf(jsonObject.get("code"));
+                studentExtendDto.setFieldName(code);
+                String upperCode = code.substring(0, 1).toUpperCase() + code.substring(1);
+                Object value = ReflectUtil.getFieldValue(examStudent, "get"+upperCode);
+                ReflectUtil.setFieldValue(studentExtendDto, "set"+ upperCode, value);
+                studentExtendDtos.add(studentExtendDto);
+            }
+        }
+        List<JSONObject> extendFieldsJson = JSONArray.parseArray(basicCardRule.getExtendFields(), JSONObject.class);
+        if(extendFieldsJson.size() > 0){
+            for (JSONObject jsonObject : extendFieldsJson) {
+                StudentExtendDto studentExtendDto = new StudentExtendDto();
+                String code = String.valueOf(jsonObject.get("code"));
+                studentExtendDto.setFieldName(code);
+                String upperCode = code.substring(0, 1).toUpperCase() + code.substring(1);
+                Object value = ReflectUtil.getFieldValue(examStudent, "get"+upperCode);
+                if(value == null){
+                    value = studentExtendMap.get(code);
+                }
+                ReflectUtil.setFieldValue(studentExtendDto, "set"+ upperCode, value);
+                studentExtendDtos.add(studentExtendDto);
+            }
+        }
+        return studentExtendDtos;
     }
 
     /**

+ 2 - 1
distributed-print-business/src/main/resources/mapper/ExamCardMapper.xml

@@ -187,7 +187,8 @@
                 AND a.course_code = #{courseCode}
                 AND a.paper_number = #{paperNumber}
                 AND c.status = 'SUBMIT'
-                AND c.make_method != 'SELECT'
+                AND (c.make_method != 'SELECT'
+                    or (c.make_method != 'SELECT' and c.type = 'GENERIC' and c.create_method != 'UPLOAD'))
     </select>
     <select id="listPage" resultMap="BaseResultMap">
         select * from exam_card