From 3402a6cdef63a87cf046a8bbfdc2898bb842c93f Mon Sep 17 00:00:00 2001
From: kongzy <kongzy>
Date: 星期六, 12 十月 2024 14:09:47 +0800
Subject: [PATCH] 新增学时证书

---
 exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/TripartiteInterfaceServiceImpl.java |  142 +++++++++++++++++++++++++++++++++--------------
 1 files changed, 100 insertions(+), 42 deletions(-)

diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/TripartiteInterfaceServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/TripartiteInterfaceServiceImpl.java
index 4db8897..9bb6b63 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/TripartiteInterfaceServiceImpl.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/TripartiteInterfaceServiceImpl.java
@@ -3,6 +3,7 @@
 
 import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.TypeReference;
 import com.gkhy.exam.institutionalaccess.entity.*;
@@ -11,6 +12,7 @@
 import com.gkhy.exam.institutionalaccess.model.resp.ThErrorDataRespDTO;
 import com.gkhy.exam.institutionalaccess.model.vo.ThCourseChapterVO;
 import com.gkhy.exam.institutionalaccess.service.*;
+import com.gkhy.exam.institutionalaccess.utils.ValidatorUtils;
 import com.ruoyi.common.constant.ResultConstants;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.model.InstitutionUser;
@@ -63,9 +65,11 @@
     private ThBatchCourseChapterService batchCourseChapterService;
     @Autowired
     private ThSubjectTypeService subjectTypeService;
+    @Autowired
+    private ThCertService certService;
 
     @Override
-    public boolean receiveQuestionBank(JSONObject jsonObject) {
+    public boolean receiveQuestionBank(JSONObject jsonObject) throws Exception {
         InstitutionUser institutionUser = ThreeInContextHolder.getContext();
 
         String data = jsonObject.getString("data");
@@ -90,8 +94,11 @@
 
         }
 
-        //参数校验
-        validateQuestion(questionBankReqDTO);
+        String valdateMessage=ValidatorUtils.validateFast(questionBankReqDTO);
+        if(!StringUtils.isEmpty(valdateMessage)){
+            throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,valdateMessage);
+        }
+
         //根据uuid查询数据
         ThQuestionBank qb = questionBankService.getQuestionInfoByUuid(questionBankReqDTO.getUuid());
         boolean i = true;
@@ -102,19 +109,18 @@
             qb.setUuid(questionBankReqDTO.getUuid());
             qb.setInstitutionId(institutionUser.getId());
             qb.setInstitutionName(institutionUser.getInstitutionalName());
-            qb.setCreateTime(LocalDateTime.now());
-            qb.setUpdateTime(LocalDateTime.now());
             qb.setCreateBy(institutionUser.getInstitutionalName());
             qb.setUpdateBy(institutionUser.getInstitutionalName());
-            //qb.setDelFlag(DeleteStatusEnum.NO.getStatus());
             i = questionBankService.save(qb);
         }else {
             //修改
             BeanUtils.copyProperties(questionBankReqDTO, qb);
+            qb.setUpdateBy(institutionUser.getInstitutionalName());
             i = questionBankService.updateById(qb);
         }
         return i;
     }
+
     @Transactional
     @Override
     public AjaxResult receiveCourse(JSONObject jsonObject) {
@@ -1848,6 +1854,94 @@
         return AjaxResult.success();
     }
 
+    @Override
+    public AjaxResult receiveCerts(JSONObject jsonObject) throws Exception {
+        InstitutionUser institutionUser = ThreeInContextHolder.getContext();
+        String data = jsonObject.getString("data");
+        if(StringUtils.isEmpty(data)){
+            throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL);
+        }
+        //解密
+        String decrypt = "";
+        try {
+            decrypt = AESUtils.decrypt(data);
+        }catch (Exception e){
+            throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL);
+        }
+        //反序列化
+        List<ThCertReqDTO> thCertReqDTOs = null;
+        try {
+            thCertReqDTOs = JSONObject.parseObject(decrypt, new TypeReference<List<ThCertReqDTO>>() {});
+        }catch (Exception e){
+            logger.error("学时证书反序列化失败!");
+            throw new BusinessException(this.getClass(), ResultConstants.SERIALIZE_ERROR);
+        }
+        if(thCertReqDTOs.isEmpty() ||thCertReqDTOs.size()>50){
+            throw new BusinessException(this.getClass(), ResultConstants.RECORD_OVER_MAX);
+        }
+
+        //错误
+        List<ThErrorDataRespDTO> errorDataRespDTOS = new ArrayList<>();
+        List<ThCertReqDTO> saveCertReqDTOList = new ArrayList<>();
+        List<String> batchUuidList=thCertReqDTOs.stream().map(ThCertReqDTO::getBatchUuid).filter(batchUuid -> !StringUtils.isEmpty(batchUuid)).distinct().collect(Collectors.toList());
+        //获取批次
+        List<ThBatch> batchList = batchService.getByUuids(batchUuidList);
+
+        for(ThCertReqDTO thCertReqDTO : thCertReqDTOs){
+            String validateMessage=ValidatorUtils.validateFast(thCertReqDTO);
+            if(!StringUtils.isEmpty(validateMessage)){
+                errorDataRespDTOS.add(new ThErrorDataRespDTO(thCertReqDTO.getUuid(),validateMessage));
+                continue;
+            }
+            List<ThBatch> collect = batchList.stream().filter(batchCourse -> batchCourse.getUuid().equals(thCertReqDTO.getBatchUuid())).collect(Collectors.toList());
+            if (CollectionUtils.isEmpty(collect)) {
+                errorDataRespDTOS.add(new ThErrorDataRespDTO(thCertReqDTO.getUuid(), "批次(班级)不存在,请先添加批次(班级)"));
+                continue;
+            }
+            saveCertReqDTOList.add(thCertReqDTO);
+        }
+
+        List<ThCert> saveCertList = new ArrayList<>();
+        List<ThCert> updateCertList = new ArrayList<>();
+        for (ThCertReqDTO thCertReqDTO : saveCertReqDTOList) {
+            ThCert cert=certService.getCertByUuid(thCertReqDTO.getUuid());
+            if (cert!=null) {
+                //修改
+                BeanUtils.copyProperties(thCertReqDTO, cert);
+                cert.setUpdateBy(institutionUser.getInstitutionalName());
+                cert.setUpdateTime(LocalDateTime.now());
+                cert.setInstitutionId(institutionUser.getId());
+                cert.setInstitutionName(institutionUser.getInstitutionalName());
+                updateCertList.add(cert);
+            } else {
+                //新增
+                cert = new ThCert();
+                BeanUtils.copyProperties(thCertReqDTO, cert);
+                cert.setId(IdUtil.getSnowflake(0, 0).nextId());
+                cert.setUpdateBy(institutionUser.getInstitutionalName());
+                cert.setUpdateTime(LocalDateTime.now());
+                cert.setCreateBy(institutionUser.getInstitutionalName());
+                cert.setCreateTime(LocalDateTime.now());
+                cert.setInstitutionId(institutionUser.getId());
+                cert.setInstitutionName(institutionUser.getInstitutionalName());
+                cert.setDelFlag(DeleteStatusEnum.NO.getStatus());
+                saveCertList.add(cert);
+            }
+        }
+        //课时证书表新增
+        if(!saveCertList.isEmpty()){
+            certService.insertBatch(saveCertList);
+        }
+        //课时证书表更新
+        if(!updateCertList.isEmpty()) {
+            certService.updateBatch(updateCertList);
+        }
+        return AjaxResult.success(errorDataRespDTOS);
+    }
+
+    private void validate(){
+
+    }
 
 
     private void validateStudyDetail(ThStudyDetailReqDTO studentDetailReqDTO) {
@@ -2075,43 +2169,7 @@
     }
 
 
-    /**
-     * 校验题库组卷数据
-     * @param questionBankReqDTO
-     */
-     private void validateQuestion(ThQuestionBankReqDTO questionBankReqDTO){
 
-         if(questionBankReqDTO == null){
-             throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_ERROR);
-         }
-         if(StringUtils.isEmpty(questionBankReqDTO.getUuid()) || !UUID.checkIsUuid(questionBankReqDTO.getUuid())){
-             throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"题库组卷uuid不符合规范");
-         }
-         if(StringUtils.isEmpty(questionBankReqDTO.getUrl())){
-             throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"题库组卷预览路径不可为空");
-         }
-         if(questionBankReqDTO.getLastMonthCount() == null){
-             throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"上月题库总题目数不可为空");
-         }
-         if(questionBankReqDTO.getAddCount() == null){
-             throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"新增题目数不可为空");
-         }
-         if(questionBankReqDTO.getReduceCount() == null){
-             throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"减少题目数不可为空");
-         }
-         if(questionBankReqDTO.getBrushRate() == null){
-             throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"刷题应用率不可为空");
-         }
-         if(questionBankReqDTO.getAssemblyRate() == null){
-             throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"组卷应用率不可为空");
-         }
-         if(questionBankReqDTO.getMonth() == null){
-             throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"年月不可为空");
-         }
-         if(questionBankReqDTO.getDelFlag() == null || DeleteStatusEnum.getDeleteStatusEnum(questionBankReqDTO.getDelFlag()) == null ){
-             throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"删除标识不符合规范");
-         }
-    }
     private String generateSerialNum() {
         Long count = studyDetailService.getCount();
         String strCount = count.toString();

--
Gitblit v1.9.2