From 1a316551c8e46b793904090cfa84781bf77fef2a Mon Sep 17 00:00:00 2001
From: zhangf <1603559716@qq.com>
Date: 星期三, 11 九月 2024 15:51:49 +0800
Subject: [PATCH] 增加科目类别
---
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThstatisticServiceImpl.java | 77 +++
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/enums/StudentFinishStatus.java | 41 ++
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/InstitutionVo.java | 10
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/TripartiteInterfaceController.java | 31 +
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThExamRecordServiceImpl.java | 7
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThStudyRecordManagerService.java | 3
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThSubjectTypeController.java | 44 ++
ruoyi-system/src/main/java/com/ruoyi/system/domain/ThAccessAddress.java | 15
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/vo/ThTrainVO.java | 12
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/req/ThStudyDetailReqDTO.java | 2
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThSubjectTypeServiceImpl.java | 80 ++++
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThExamRecordQuery.java | 5
exam-system/src/main/resources/mapper/institutionaccess/ThStudentBatchMapper.xml | 55 ++
exam-system/src/main/resources/mapper/institutionaccess/ThStudyDetailMapper.xml | 13
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThStudyRecordManagerController.java | 4
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThBatchQuery.java | 7
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/vo/ThSubjectTypeVO.java | 14
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThSubjectType.java | 17
exam-system/src/main/resources/mapper/institutionaccess/ThExamRecordMapper.xml | 26 +
ruoyi-system/src/main/java/com/ruoyi/system/service/InstitutionalManagerService.java | 2
ruoyi-admin/src/main/resources/application.yml | 2
exam-system/src/main/resources/mapper/institutionaccess/ThBatchMapper.xml | 42 +
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThStudyDetail.java | 2
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThExamRecordService.java | 4
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/mapper/ThSubjectTypeMapper.java | 11
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThBatch.java | 5
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThStudentBatchService.java | 10
ruoyi-common/src/main/java/com/ruoyi/common/utils/HttpClientUtil.java | 150 +++++++
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/mapper/ThStudentBatchMapper.java | 10
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/config/ExecutorConfig.java | 4
ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java | 5
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/req/ThBatchReqDTO.java | 6
ruoyi-system/src/main/java/com/ruoyi/system/domain/enums/AccessAddressType.java | 40 ++
ruoyi-system/src/main/java/com/ruoyi/system/service/ThAccessAddressService.java | 8
ruoyi-system/src/main/java/com/ruoyi/system/domain/req/InstitutionModStatusReqDTO.java | 1
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InstitutionalManagerServiceImpl.java | 40 +
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/TripartiteInterfaceServiceImpl.java | 74 +++
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/ResultVO.java | 16
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudentBatchServiceImpl.java | 16
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/resp/ThStatisticRespDTO.java | 15
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThBatchManagerServiceImpl.java | 46 ++
ruoyi-system/src/main/java/com/ruoyi/system/mapper/ThAccessAddressMapper.java | 12
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThstatisticController.java | 21 +
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/mapper/ThExamRecordMapper.java | 4
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/vo/ThBatchVO.java | 6
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThstatisticService.java | 10
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThSubjectTypeService.java | 14
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThStatisticQuery.java | 23 +
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/resp/ThPlatformStudentRespDTO.java | 1
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ThAccessAddressServiceImpl.java | 17
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudyRecordManagerServiceImpl.java | 71 +++
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThStudyDetailQuery.java | 6
exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/TripartiteInterfaceService.java | 1
ruoyi-system/src/main/java/com/ruoyi/system/domain/InstitutionalManager.java | 2
54 files changed, 1,094 insertions(+), 66 deletions(-)
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/config/ExecutorConfig.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/config/ExecutorConfig.java
index 555e1f0..d25c863 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/config/ExecutorConfig.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/config/ExecutorConfig.java
@@ -15,8 +15,8 @@
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
-@Configuration
-@EnableAsync
+/*@Configuration
+@EnableAsync*/
public class ExecutorConfig implements AsyncConfigurer {
private Logger logger = LoggerFactory.getLogger(ExecutorConfig.class);
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThStudyRecordManagerController.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThStudyRecordManagerController.java
index d5d0da0..263f50f 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThStudyRecordManagerController.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThStudyRecordManagerController.java
@@ -20,6 +20,10 @@
startPage();
return getDataTable(thStudyRecordManagerService.listByPage(query));
}
+ @GetMapping("/idcard")
+ public AjaxResult getStudyRecordByIdcard(ThStudyDetailQuery query) {
+ return success(thStudyRecordManagerService.getStudyRecordByIdcard(query));
+ }
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThSubjectTypeController.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThSubjectTypeController.java
new file mode 100644
index 0000000..c50eaa8
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThSubjectTypeController.java
@@ -0,0 +1,44 @@
+package com.gkhy.exam.institutionalaccess.controller;
+
+import com.gkhy.exam.institutionalaccess.model.query.ThStatisticQuery;
+import com.gkhy.exam.institutionalaccess.service.ThSubjectTypeService;
+import com.ruoyi.common.constant.CacheConstants;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.redis.RedisCache;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.PostConstruct;
+
+@RestController
+@RequestMapping("/th/subject/type")
+public class ThSubjectTypeController extends BaseController {
+ private static final Logger log = LoggerFactory.getLogger(ThSubjectTypeController.class);
+ @Autowired
+ private ThSubjectTypeService thSubjectTypeService;
+ @Autowired
+ private RedisCache redisCache;
+ //缓存科目信息
+ @PostConstruct
+ private void initThSubjectType() {
+ //清除redis缓存
+ String key = CacheConstants.THREE_SUBJECT_TYPE;
+ if (redisCache.hasKey(key)) {
+ redisCache.deleteObject(key);
+ }
+ thSubjectTypeService.subjectTypeCache();
+ log.info("【组织架构信息】已加入缓存");
+ }
+
+ @GetMapping("/tree")
+ private AjaxResult getTree() {
+ return AjaxResult.success(thSubjectTypeService.getTree());
+ }
+
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThstatisticController.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThstatisticController.java
new file mode 100644
index 0000000..d888c0d
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/ThstatisticController.java
@@ -0,0 +1,21 @@
+package com.gkhy.exam.institutionalaccess.controller;
+
+import com.gkhy.exam.institutionalaccess.model.query.ThStatisticQuery;
+import com.gkhy.exam.institutionalaccess.service.ThstatisticService;
+import com.ruoyi.common.core.domain.AjaxResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/th/statistic")
+public class ThstatisticController {
+ @Autowired
+ private ThstatisticService thstatisticService;
+ @GetMapping("/count")
+ private AjaxResult getStatistic(ThStatisticQuery thStatisticQuery) {
+ return AjaxResult.success(thstatisticService.getStatistic(thStatisticQuery));
+ }
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/TripartiteInterfaceController.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/TripartiteInterfaceController.java
index bdbaf50..1fe9fcb 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/TripartiteInterfaceController.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/controller/TripartiteInterfaceController.java
@@ -1,17 +1,26 @@
package com.gkhy.exam.institutionalaccess.controller;
import com.alibaba.fastjson2.JSONObject;
+import com.alibaba.fastjson2.TypeReference;
+import com.gkhy.exam.institutionalaccess.enums.*;
+import com.gkhy.exam.institutionalaccess.model.req.*;
+import com.gkhy.exam.institutionalaccess.model.resp.ThPlatformStudentRespDTO;
import com.gkhy.exam.institutionalaccess.service.TripartiteInterfaceService;
import com.ruoyi.common.annotation.RepeatedClick;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.signature.AESUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
@RequestMapping("/gov-server/receive")
@@ -96,7 +105,7 @@
* 课程
* @param args
*/
- /*public static void main(String[] args) {
+ /* public static void main(String[] args) {
List<ThCourseReqDTO> list = new ArrayList<>();
ThCourseReqDTO thCourseReqDTO = new ThCourseReqDTO();
thCourseReqDTO.setUuid("20bded7f-660c-4380-b7f9-00f3976e1875");
@@ -189,7 +198,12 @@
thBatchReqDTO.setBatchName("第一期2024");
thBatchReqDTO.setTrainOrgName("测试机构");
thBatchReqDTO.setHaveExam(HaveExam.YES.getStatus());
- thBatchReqDTO.setStatus(OpenStatus.NO.getStatus());
+ thBatchReqDTO.setStatus(OpenStatus.START.getStatus());
+ thBatchReqDTO.setActualEndTime(LocalDateTime.now());
+ thBatchReqDTO.setActualStartTime(null);
+ thBatchReqDTO.setExpectEndTime(LocalDateTime.now());
+ thBatchReqDTO.setExpectStartTime(LocalDateTime.now());
+ thBatchReqDTO.setSubjectCode("201");
thBatchReqDTO.setDelFlag((byte)0);
thBatchReqDTO.setBatchLessonNum(new BigDecimal(40));
List<ThBatchCourseReqDTO> courseList = new ArrayList<>();
@@ -233,7 +247,7 @@
/**
* 学生信息上报
*/
- /* public static void main(String[] args) {
+ /* public static void main(String[] args) {
ThStudentReqDTO thStudentReqDTO = new ThStudentReqDTO();
thStudentReqDTO.setUuid("5096d539-9ec4-499e-a7ef-3fc1c688ba51");
thStudentReqDTO.setName("李四fafas");
@@ -306,7 +320,7 @@
/**
*
*/
- /*public static void main(String[] args) {
+ public static void main(String[] args) {
List<ThStudyDetailReqDTO> list = new ArrayList<>();
ThStudyDetailReqDTO thStudyDetailReqDTO = new ThStudyDetailReqDTO();
thStudyDetailReqDTO.setUuid("8c061cb1-8560-43b8-abe4-04ae8e763f59");
@@ -319,6 +333,7 @@
thStudyDetailReqDTO.setChapterUuid("d5cd3b26-be11-4ffe-8a34-283c49c85253");
thStudyDetailReqDTO.setDuration(4567l);
thStudyDetailReqDTO.setTrainOrgName("测试");
+ thStudyDetailReqDTO.setCompleteStatus(StudentFinishStatus.YES.getStatus());
thStudyDetailReqDTO.setStartTime(LocalDateTime.now());
thStudyDetailReqDTO.setFinishTime(LocalDateTime.now());
thStudyDetailReqDTO.setVideoUrl("hhtht");
@@ -345,10 +360,12 @@
String encrypt = AESUtils.encrypt(jsonString);
System.out.println(encrypt);
- }*/
+ }
/* public static void main(String[] args) {
- String decrypt = AESUtils.decrypt("");
+ String decrypt = AESUtils.decrypt("BhSazFtvofCRelDGgefpPEYzIR9eUed3RV52ThGuzib1FyirNEW8Dri7WBJBKDKAn8+bNbL2HydRalakvoNA6oP/AM/sYpxDvO4pwaJPvYkow8crP8qPcB+vnDoJRCpvChl6RIBc4+oMONh6gsX6FA==");
+ ThPlatformStudentRespDTO studentRespDTO = JSONObject.parseObject(decrypt, new TypeReference<ThPlatformStudentRespDTO>() {});
System.out.println(decrypt);
+ System.out.println(studentRespDTO);
}*/
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThBatch.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThBatch.java
index 080697a..c50b17e 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThBatch.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThBatch.java
@@ -30,6 +30,11 @@
// private Byte finishStatus;
//删除标志(0代表存在 2代表删除)
private Byte delFlag;
+ private LocalDateTime actualStartTime;
+ private LocalDateTime actualEndTime;
+ private LocalDateTime expectStartTime;
+ private LocalDateTime expectEndTime;
+ private String subjectCode;
/** 创建者 */
private String createBy;
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThStudyDetail.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThStudyDetail.java
index 5bed643..f6d2bb6 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThStudyDetail.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThStudyDetail.java
@@ -38,6 +38,8 @@
private String videoUrl;
private String lessonReportUrl;
+ private Byte completeStatus;
+
//删除标志(0代表存在 2代表删除)
private Byte delFlag;
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThSubjectType.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThSubjectType.java
new file mode 100644
index 0000000..3d1e817
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/entity/ThSubjectType.java
@@ -0,0 +1,17 @@
+package com.gkhy.exam.institutionalaccess.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+
+@TableName("th_subject_type")
+@Data
+public class ThSubjectType {
+ @TableId(type = IdType.AUTO)
+ private Long id;
+ private String name;
+ private String code;
+ private String parentCode;
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/enums/StudentFinishStatus.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/enums/StudentFinishStatus.java
new file mode 100644
index 0000000..c075083
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/enums/StudentFinishStatus.java
@@ -0,0 +1,41 @@
+package com.gkhy.exam.institutionalaccess.enums;
+
+public enum StudentFinishStatus {
+ //完成(0否,1是)
+ NO((byte)0,"未结束"),
+ YES((byte)1,"结束"),
+ ;
+
+ private Byte status;
+ private String desc;
+
+ StudentFinishStatus(Byte status, String desc) {
+ this.status = status;
+ this.desc = desc;
+ }
+
+ public Byte getStatus() {
+ return status;
+ }
+
+ public void setStatus(Byte status) {
+ this.status = status;
+ }
+
+ public String getDesc() {
+ return desc;
+ }
+
+ public void setDesc(String desc) {
+ this.desc = desc;
+ }
+
+ public static StudentFinishStatus get(Byte status) {
+ for (StudentFinishStatus finishStatus : StudentFinishStatus.values()) {
+ if (finishStatus.getStatus() == status) {
+ return finishStatus;
+ }
+ }
+ return null;
+ }
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/mapper/ThExamRecordMapper.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/mapper/ThExamRecordMapper.java
index 560e342..2431834 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/mapper/ThExamRecordMapper.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/mapper/ThExamRecordMapper.java
@@ -4,7 +4,9 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gkhy.exam.institutionalaccess.entity.ThExamRecord;
import com.gkhy.exam.institutionalaccess.model.query.ThExamRecordQuery;
+import com.gkhy.exam.institutionalaccess.model.query.ThStatisticQuery;
import com.gkhy.exam.institutionalaccess.model.vo.ThExamRecordVO;
+import com.gkhy.exam.institutionalaccess.model.vo.ThTrainVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@@ -18,4 +20,6 @@
List<ThExamRecord> getByUuids(@Param("examUuids") List<String> examUuids);
Integer insertBatch(@Param("list") List<ThExamRecord> list);
+
+ List<ThTrainVO> getStatistic(@Param("query") ThStatisticQuery thStatisticQuery);
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/mapper/ThStudentBatchMapper.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/mapper/ThStudentBatchMapper.java
index d62630c..2ba9bdb 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/mapper/ThStudentBatchMapper.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/mapper/ThStudentBatchMapper.java
@@ -2,10 +2,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gkhy.exam.institutionalaccess.entity.ThStudentBatch;
-import com.gkhy.exam.institutionalaccess.model.vo.ThStatisticStudentVO;
-import com.gkhy.exam.institutionalaccess.model.vo.ThStudentBatchCourseVO;
-import com.gkhy.exam.institutionalaccess.model.vo.ThStudentBatchVO;
-import com.gkhy.exam.institutionalaccess.model.vo.ThStudentCourseVO;
+import com.gkhy.exam.institutionalaccess.model.query.ThStatisticQuery;
+import com.gkhy.exam.institutionalaccess.model.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@@ -35,4 +33,8 @@
List<ThStudentBatch> getByIdCards(@Param("idcards") List<String> idcards);
List<ThStudentBatchVO> getStudentBatchVOByCourseUuid(@Param("courseUuid") String courseUuid);
+
+ List<ThTrainVO> getStatistic(@Param("query") ThStatisticQuery thStatisticQuery);
+
+ List<ThTrainVO> getStatisticHaveExam(@Param("query") ThStatisticQuery thStatisticQuery);
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/mapper/ThSubjectTypeMapper.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/mapper/ThSubjectTypeMapper.java
new file mode 100644
index 0000000..9d48631
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/mapper/ThSubjectTypeMapper.java
@@ -0,0 +1,11 @@
+package com.gkhy.exam.institutionalaccess.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.exam.institutionalaccess.entity.ThSubjectType;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Repository
+@Mapper
+public interface ThSubjectTypeMapper extends BaseMapper<ThSubjectType> {
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThBatchQuery.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThBatchQuery.java
index 9321e8d..0dfd673 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThBatchQuery.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThBatchQuery.java
@@ -2,6 +2,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
import java.util.Date;
@@ -10,9 +11,11 @@
public class ThBatchQuery {
private Long institutionId;
private String batchName;
- @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startTime;
- @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endTime;
+ private String trainOrgName;
+ private String subjectCode;
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThExamRecordQuery.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThExamRecordQuery.java
index 597d7ca..f9477ae 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThExamRecordQuery.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThExamRecordQuery.java
@@ -2,6 +2,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
import java.util.Date;
@@ -10,8 +11,8 @@
public class ThExamRecordQuery {
private String name;
private String idcard;
- @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startTime;
- @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endTime;
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThStatisticQuery.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThStatisticQuery.java
new file mode 100644
index 0000000..b2a6159
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThStatisticQuery.java
@@ -0,0 +1,23 @@
+package com.gkhy.exam.institutionalaccess.model.query;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author zf
+ * @email 1603559716@qq.com
+ * @date 2024/8/7 15:48
+ * @description ThStatisticQuery
+ */
+@Data
+public class ThStatisticQuery {
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date startTime;
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date endTime;
+ private String trainOrgName;
+ private String subjectCode;
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThStudyDetailQuery.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThStudyDetailQuery.java
index fbdd596..1b67ddc 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThStudyDetailQuery.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/query/ThStudyDetailQuery.java
@@ -2,6 +2,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
import java.util.Date;
@@ -11,9 +12,9 @@
private String idcard;
private String name;
private String courseUuid;
- @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startTime;
- @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endTime;
private Integer pageNum;
@@ -21,4 +22,5 @@
/** 每页显示记录数 */
private Integer pageSize;
private Integer startSize;
+ private Long institutionId;
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/req/ThBatchReqDTO.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/req/ThBatchReqDTO.java
index 5fdef51..3ba3322 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/req/ThBatchReqDTO.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/req/ThBatchReqDTO.java
@@ -4,6 +4,7 @@
import lombok.Data;
import java.math.BigDecimal;
+import java.time.LocalDateTime;
import java.util.List;
@Data
@@ -17,5 +18,10 @@
private Byte status;
private BigDecimal batchLessonNum;
private Byte delFlag;
+ private LocalDateTime actualStartTime;
+ private LocalDateTime actualEndTime;
+ private LocalDateTime expectStartTime;
+ private LocalDateTime expectEndTime;
+ private String subjectCode;
private List<ThBatchCourseReqDTO> courseList;
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/req/ThStudyDetailReqDTO.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/req/ThStudyDetailReqDTO.java
index 10854f8..265a49e 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/req/ThStudyDetailReqDTO.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/req/ThStudyDetailReqDTO.java
@@ -28,6 +28,8 @@
private Long finishPosition;
private String videoUrl;
private String lessonReportUrl;
+ //该批次培训状态是否全部完成(0未完成,1完成)
+ private Byte completeStatus;
private List<ThStudyTrackReqDTO> trackList;
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/resp/ThPlatformStudentRespDTO.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/resp/ThPlatformStudentRespDTO.java
index 5b8df7c..3b1a572 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/resp/ThPlatformStudentRespDTO.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/resp/ThPlatformStudentRespDTO.java
@@ -6,7 +6,6 @@
@Data
public class ThPlatformStudentRespDTO {
- private String studentUuid;
private String name;
private String idcard;
private List<ThPlatformBatchRespDTO> batchList;
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/resp/ThStatisticRespDTO.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/resp/ThStatisticRespDTO.java
new file mode 100644
index 0000000..c1a434b
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/resp/ThStatisticRespDTO.java
@@ -0,0 +1,15 @@
+package com.gkhy.exam.institutionalaccess.model.resp;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class ThStatisticRespDTO {
+ private String institutionName;
+ private Integer studentCount;
+ private Integer finishCount;
+ private Integer eaxmStudentCount;
+ private Integer passCount;
+ private BigDecimal passRate;
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/vo/ThBatchVO.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/vo/ThBatchVO.java
index cbaeab4..2193041 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/vo/ThBatchVO.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/vo/ThBatchVO.java
@@ -19,6 +19,12 @@
private Integer studentCount;
//删除标志(0代表存在 2代表删除)
private Byte delFlag;
+ private LocalDateTime actualStartTime;
+ private LocalDateTime actualEndTime;
+ private LocalDateTime expectStartTime;
+ private LocalDateTime expectEndTime;
+ private String subjectName;
+ private String subjectCode;
/** 创建者 */
private String createBy;
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/vo/ThSubjectTypeVO.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/vo/ThSubjectTypeVO.java
new file mode 100644
index 0000000..b88a036
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/vo/ThSubjectTypeVO.java
@@ -0,0 +1,14 @@
+package com.gkhy.exam.institutionalaccess.model.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ThSubjectTypeVO {
+ private Long id;
+ private String name;
+ private String code;
+ private String parentCode;
+ private List<ThSubjectTypeVO> children;
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/vo/ThTrainVO.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/vo/ThTrainVO.java
new file mode 100644
index 0000000..ed43ab9
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/model/vo/ThTrainVO.java
@@ -0,0 +1,12 @@
+package com.gkhy.exam.institutionalaccess.model.vo;
+
+import lombok.Data;
+
+@Data
+public class ThTrainVO {
+ private Long institutionId;
+ private Integer studentCount;
+ private Integer finishCount;
+ private Integer passCount;
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThExamRecordService.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThExamRecordService.java
index 8ce2016..88f878d 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThExamRecordService.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThExamRecordService.java
@@ -3,7 +3,9 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.gkhy.exam.institutionalaccess.entity.ThExamRecord;
import com.gkhy.exam.institutionalaccess.model.query.ThExamRecordQuery;
+import com.gkhy.exam.institutionalaccess.model.query.ThStatisticQuery;
import com.gkhy.exam.institutionalaccess.model.vo.ThExamRecordVO;
+import com.gkhy.exam.institutionalaccess.model.vo.ThTrainVO;
import org.springframework.scheduling.annotation.Async;
import java.util.List;
@@ -16,4 +18,6 @@
List<ThExamRecord> getByUuids(List<String> examUuids);
//@Async("SocketTaskExecutor")
Integer insertBatch(List<ThExamRecord> examRecordList);
+
+ List<ThTrainVO> getStatistic(ThStatisticQuery thStatisticQuery);
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThStudentBatchService.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThStudentBatchService.java
index 6ad88d4..9266418 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThStudentBatchService.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThStudentBatchService.java
@@ -3,10 +3,8 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.gkhy.exam.institutionalaccess.entity.ThStudentBatch;
-import com.gkhy.exam.institutionalaccess.model.vo.ThStatisticStudentVO;
-import com.gkhy.exam.institutionalaccess.model.vo.ThStudentBatchCourseVO;
-import com.gkhy.exam.institutionalaccess.model.vo.ThStudentBatchVO;
-import com.gkhy.exam.institutionalaccess.model.vo.ThStudentCourseVO;
+import com.gkhy.exam.institutionalaccess.model.query.ThStatisticQuery;
+import com.gkhy.exam.institutionalaccess.model.vo.*;
import org.springframework.scheduling.annotation.Async;
import java.util.List;
@@ -36,4 +34,8 @@
List<ThStudentBatchVO> getStudentBatchVOByBatchUuid(String batchUuid);
List<ThStudentBatchVO> getStudentBatchVOByCourseUuid(String courseUuid);
+
+ List<ThTrainVO> getStatistic(ThStatisticQuery thStatisticQuery);
+
+ List<ThTrainVO> getStatisticHaveExam(ThStatisticQuery thStatisticQuery);
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThStudyRecordManagerService.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThStudyRecordManagerService.java
index 0bf3156..0da8897 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThStudyRecordManagerService.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThStudyRecordManagerService.java
@@ -1,10 +1,13 @@
package com.gkhy.exam.institutionalaccess.service;
import com.gkhy.exam.institutionalaccess.model.query.ThStudyDetailQuery;
+import com.gkhy.exam.institutionalaccess.model.resp.ThPlatformStudentRespDTO;
import com.gkhy.exam.institutionalaccess.model.vo.ThStudyDetailVO;
import java.util.List;
public interface ThStudyRecordManagerService {
List<ThStudyDetailVO> listByPage(ThStudyDetailQuery query);
+
+ ThPlatformStudentRespDTO getStudyRecordByIdcard(ThStudyDetailQuery query);
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThSubjectTypeService.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThSubjectTypeService.java
new file mode 100644
index 0000000..19e0f77
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThSubjectTypeService.java
@@ -0,0 +1,14 @@
+package com.gkhy.exam.institutionalaccess.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.exam.institutionalaccess.entity.ThSubjectType;
+import com.gkhy.exam.institutionalaccess.model.vo.ThSubjectTypeVO;
+
+import java.util.List;
+
+public interface ThSubjectTypeService extends IService<ThSubjectType> {
+ void subjectTypeCache();
+ List<ThSubjectType> getSubjectTypeList();
+
+ List<ThSubjectTypeVO> getTree();
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThstatisticService.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThstatisticService.java
new file mode 100644
index 0000000..6e32010
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/ThstatisticService.java
@@ -0,0 +1,10 @@
+package com.gkhy.exam.institutionalaccess.service;
+
+import com.gkhy.exam.institutionalaccess.model.query.ThStatisticQuery;
+import com.gkhy.exam.institutionalaccess.model.resp.ThStatisticRespDTO;
+
+import java.util.List;
+
+public interface ThstatisticService {
+ List<ThStatisticRespDTO> getStatistic(ThStatisticQuery thStatisticQuery);
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/TripartiteInterfaceService.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/TripartiteInterfaceService.java
index bc393cf..d2ab937 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/TripartiteInterfaceService.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/TripartiteInterfaceService.java
@@ -22,4 +22,5 @@
AjaxResult receiveBatchOpen(JSONObject jsonObject);
AjaxResult receiveBatchEnd(JSONObject jsonObject);
+
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThBatchManagerServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThBatchManagerServiceImpl.java
index 2c4f659..34efd7f 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThBatchManagerServiceImpl.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThBatchManagerServiceImpl.java
@@ -1,14 +1,10 @@
package com.gkhy.exam.institutionalaccess.service.serviceImpl;
-import com.gkhy.exam.institutionalaccess.entity.ThBatchCourse;
-import com.gkhy.exam.institutionalaccess.entity.ThBatchCourseChapter;
-import com.gkhy.exam.institutionalaccess.entity.ThStudentBatch;
-import com.gkhy.exam.institutionalaccess.entity.ThStudyDetail;
+import com.gkhy.exam.institutionalaccess.entity.*;
import com.gkhy.exam.institutionalaccess.enums.FinishStatus;
import com.gkhy.exam.institutionalaccess.model.query.ThBatchQuery;
import com.gkhy.exam.institutionalaccess.model.resp.ThBatchCourseRespDTO;
-import com.gkhy.exam.institutionalaccess.model.resp.ThCourseChapterRespDTO;
import com.gkhy.exam.institutionalaccess.model.resp.ThStudentCourseRespDTO;
import com.gkhy.exam.institutionalaccess.model.resp.ThStudentStudyRespDTO;
import com.gkhy.exam.institutionalaccess.model.vo.*;
@@ -23,7 +19,6 @@
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
-import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
@Service("ThBatchManagerService")
@@ -38,6 +33,8 @@
private ThStudyDetailService thStudyDetailService;
@Autowired
private ThBatchCourseChapterService thBatchCourseChapterService;
+ @Autowired
+ private ThSubjectTypeService subjectTypeService;
@Override
public List<ThBatchVO> listByPage(ThBatchQuery query) {
@@ -51,6 +48,7 @@
List<ThBatchCourseChapter> chapterList = thBatchCourseChapterService.getListByBatchUuids(batchUuids);
for (ThBatchVO thBatchVO : thBatchVOS) {
+ thBatchVO.setSubjectName(getObtainSuperiors(thBatchVO.getSubjectCode()));
//课程
List<ThBatchCourseVO> collect = batchCourseList.stream()
.filter(bc -> bc.getBatchUuid().equals(thBatchVO.getUuid()))
@@ -181,4 +179,40 @@
}
return respDTOS;
}
+
+ public String getObtainSuperiors(String code){
+ List<ThSubjectType> subjectTypeList = subjectTypeService.getSubjectTypeList();
+ if(StringUtils.isEmpty(code)){
+ return "未知";
+ }
+ StringBuffer stringBuffer = new StringBuffer();
+ String subjectName = "未知";
+ ThSubjectType currentSubject = getThSubejctInfoByCode(subjectTypeList,code);
+ if(currentSubject != null){
+ subjectName = currentSubject.getName();
+ }
+ //一级
+ if(code.length() == 1){
+ stringBuffer.append(subjectName);
+ }
+ //二级
+ if(code.length() == 3){
+ ThSubjectType parentSubject = getThSubejctInfoByCode(subjectTypeList,currentSubject.getParentCode());
+ stringBuffer.append(parentSubject.getName()).append("/").append(subjectName);
+ }
+ //三级
+ if(code.length() == 5){
+ ThSubjectType parentSubject = getThSubejctInfoByCode(subjectTypeList,currentSubject.getParentCode());
+ ThSubjectType grandpaSubject = getThSubejctInfoByCode(subjectTypeList,parentSubject.getParentCode());
+ stringBuffer.append(grandpaSubject.getName()).append("/").append(parentSubject.getName()).append("/").append(subjectName);
+ }
+ return stringBuffer.toString();
+ }
+ public ThSubjectType getThSubejctInfoByCode(List<ThSubjectType> list, String code){
+ List<ThSubjectType> selectList = list.stream().filter(subjectType -> subjectType.getCode().equals(code)).collect(Collectors.toList());
+ if(selectList.size() > 0){
+ return selectList.get(0);
+ }
+ return null;
+ }
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThExamRecordServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThExamRecordServiceImpl.java
index 8c990dd..1eb55a2 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThExamRecordServiceImpl.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThExamRecordServiceImpl.java
@@ -6,7 +6,9 @@
import com.gkhy.exam.institutionalaccess.entity.ThExamRecord;
import com.gkhy.exam.institutionalaccess.mapper.ThExamRecordMapper;
import com.gkhy.exam.institutionalaccess.model.query.ThExamRecordQuery;
+import com.gkhy.exam.institutionalaccess.model.query.ThStatisticQuery;
import com.gkhy.exam.institutionalaccess.model.vo.ThExamRecordVO;
+import com.gkhy.exam.institutionalaccess.model.vo.ThTrainVO;
import com.gkhy.exam.institutionalaccess.service.ThExamRecordService;
import com.ruoyi.common.enums.coalmineEnums.DeleteStatusEnum;
import org.springframework.beans.factory.annotation.Autowired;
@@ -45,4 +47,9 @@
public Integer insertBatch(List<ThExamRecord> examRecordList){
return baseMapper.insertBatch(examRecordList);
}
+
+ @Override
+ public List<ThTrainVO> getStatistic(ThStatisticQuery thStatisticQuery) {
+ return baseMapper.getStatistic(thStatisticQuery);
+ }
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudentBatchServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudentBatchServiceImpl.java
index 0552e57..3d6ee13 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudentBatchServiceImpl.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudentBatchServiceImpl.java
@@ -6,10 +6,8 @@
import com.gkhy.exam.institutionalaccess.entity.ThStudentBatch;
import com.gkhy.exam.institutionalaccess.mapper.ThStudentBatchMapper;
-import com.gkhy.exam.institutionalaccess.model.vo.ThStatisticStudentVO;
-import com.gkhy.exam.institutionalaccess.model.vo.ThStudentBatchCourseVO;
-import com.gkhy.exam.institutionalaccess.model.vo.ThStudentBatchVO;
-import com.gkhy.exam.institutionalaccess.model.vo.ThStudentCourseVO;
+import com.gkhy.exam.institutionalaccess.model.query.ThStatisticQuery;
+import com.gkhy.exam.institutionalaccess.model.vo.*;
import com.gkhy.exam.institutionalaccess.service.ThStudentBatchService;
import com.ruoyi.common.enums.coalmineEnums.DeleteStatusEnum;
import org.springframework.beans.factory.annotation.Autowired;
@@ -101,4 +99,14 @@
public List<ThStudentBatchVO> getStudentBatchVOByCourseUuid(String courseUuid) {
return studentBatchMapper.getStudentBatchVOByCourseUuid(courseUuid);
}
+
+ @Override
+ public List<ThTrainVO> getStatistic(ThStatisticQuery thStatisticQuery) {
+ return studentBatchMapper.getStatistic(thStatisticQuery);
+ }
+
+ @Override
+ public List<ThTrainVO> getStatisticHaveExam(ThStatisticQuery thStatisticQuery) {
+ return studentBatchMapper.getStatisticHaveExam(thStatisticQuery);
+ }
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudyRecordManagerServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudyRecordManagerServiceImpl.java
index 8a4a0a6..0f36892 100644
--- a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudyRecordManagerServiceImpl.java
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThStudyRecordManagerServiceImpl.java
@@ -1,23 +1,39 @@
package com.gkhy.exam.institutionalaccess.service.serviceImpl;
+import com.alibaba.fastjson2.JSONObject;
+import com.alibaba.fastjson2.TypeReference;
import com.gkhy.exam.institutionalaccess.entity.*;
+import com.ruoyi.system.domain.enums.AccessAddressType;
import com.gkhy.exam.institutionalaccess.model.query.ThStudyDetailQuery;
+import com.gkhy.exam.institutionalaccess.model.resp.ThPlatformStudentRespDTO;
import com.gkhy.exam.institutionalaccess.model.vo.ThStudyAuthVO;
import com.gkhy.exam.institutionalaccess.model.vo.ThStudyDetailVO;
import com.gkhy.exam.institutionalaccess.model.vo.ThStudyTrackVO;
import com.gkhy.exam.institutionalaccess.service.*;
import com.gkhy.exam.institutionalaccess.utils.ConvertTimeUtils;
+import com.ruoyi.common.utils.HttpClientUtil;
+import com.gkhy.exam.noncoalmine.model.vo.ReturnVO;
+import com.ruoyi.common.constant.ResultConstants;
+import com.ruoyi.common.exception.BusinessException;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.signature.AESUtils;
+import com.ruoyi.system.domain.ThAccessAddress;
+import com.ruoyi.system.service.ThAccessAddressService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
import java.util.stream.Collectors;
@Service("ThStudyRecordManagerService")
public class ThStudyRecordManagerServiceImpl implements ThStudyRecordManagerService {
+ private Logger logger = LoggerFactory.getLogger(ThStudyRecordManagerServiceImpl.class);
+
@Autowired
private ThStudyDetailService thStudyDetailService;
@Autowired
@@ -32,6 +48,8 @@
private ThBatchService thBatchService;
@Autowired
private ThStudentService studentService;;
+ @Autowired
+ private ThAccessAddressService thAccessAddressService;
@Override
public List<ThStudyDetailVO> listByPage(ThStudyDetailQuery query) {
@@ -100,5 +118,54 @@
return thStudyDetailVOS;
}
+ @Override
+ public ThPlatformStudentRespDTO getStudyRecordByIdcard(ThStudyDetailQuery query) {
+ if(StringUtils.isEmpty(query.getIdcard())){
+ throw new BusinessException(this.getClass(), ResultConstants.PARAM_ERROR_NULL,"学生身份证不可为空");
+ }
+ if(query.getInstitutionId() == null){
+ throw new BusinessException(this.getClass(), ResultConstants.PARAM_ERROR_NULL,"学生所属机构不可为空");
+ }
+ //获取该机构访问路径
+ ThAccessAddress accessAddress = thAccessAddressService.getByInstitutionIdAndType(query.getInstitutionId(), AccessAddressType.STUDY_RECORD.getType());
+ Map<String,String> params = new HashMap<>();
+ params.put("idcard",query.getIdcard());
+ String json = HttpClientUtil.doGet(accessAddress.getUrl(), params);
+
+ ReturnVO<String> returnVo = JSONObject.parseObject(json, new TypeReference<ReturnVO<String>>() {});
+ if(returnVo.getCode() == null || returnVo.getCode() != 200){
+ throw new ServiceException("获取三方数据数据异常");
+ }
+ ThPlatformStudentRespDTO thPlatformStudentRespDTO = null;
+ if(!StringUtils.isEmpty(returnVo.getData())){
+ String decrypt = "";
+ try {
+ decrypt = AESUtils.decrypt(returnVo.getData());
+ }catch (Exception e){
+ throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR,"解密异常");
+ }
+ if(!StringUtils.isEmpty(decrypt)){
+ try {
+ thPlatformStudentRespDTO = JSONObject.parseObject(decrypt, new TypeReference<ThPlatformStudentRespDTO>() {});
+
+ }catch (Exception e){
+ logger.error("学习实时记录反序列化失败!");
+ throw new BusinessException(this.getClass(), ResultConstants.SERIALIZE_ERROR);
+
+ }
+ }
+
+ }
+
+ return thPlatformStudentRespDTO;
+ }
+
+ public static void main(String[] args) {
+ Map<String,String> params = new HashMap<>();
+ params.put("idcard","652201198009174020");
+ String s = HttpClientUtil.doGet("https://app.lgb360.com/egress/xj/getStuDetail", params);
+ System.out.println(s);
+ }
+
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThSubjectTypeServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThSubjectTypeServiceImpl.java
new file mode 100644
index 0000000..76b5621
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThSubjectTypeServiceImpl.java
@@ -0,0 +1,80 @@
+package com.gkhy.exam.institutionalaccess.service.serviceImpl;
+
+import com.alibaba.fastjson2.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gkhy.exam.institutionalaccess.entity.ThSubjectType;
+import com.gkhy.exam.institutionalaccess.mapper.ThSubjectTypeMapper;
+import com.gkhy.exam.institutionalaccess.model.vo.ThSubjectTypeVO;
+import com.gkhy.exam.institutionalaccess.service.ThSubjectTypeService;
+import com.ruoyi.common.constant.CacheConstants;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author zf
+ * @email 1603559716@qq.com
+ * @date 2024/8/6 15:09
+ * @description ThSubjectTypeServiceImpl
+ */
+@Service("ThSubjectTypeService")
+public class ThSubjectTypeServiceImpl extends ServiceImpl<ThSubjectTypeMapper, ThSubjectType> implements ThSubjectTypeService {
+ @Autowired
+ private RedisCache redisCache;
+ @Override
+ public void subjectTypeCache() {
+ List<ThSubjectType> thSubjectTypes = baseMapper.selectList(new LambdaQueryWrapper<>());
+ redisCache.setCacheObject(CacheConstants.THREE_SUBJECT_TYPE, thSubjectTypes);
+ }
+
+ @Override
+ public List<ThSubjectType> getSubjectTypeList() {
+ JSONArray arrayCache = SpringUtils.getBean(RedisCache.class).getCacheObject(CacheConstants.THREE_SUBJECT_TYPE);
+ if (StringUtils.isNotNull(arrayCache))
+ {
+ return arrayCache.toList(ThSubjectType.class);
+ }else {
+ return baseMapper.selectList(new LambdaQueryWrapper<>());
+
+ }
+
+ }
+
+ @Override
+ public List<ThSubjectTypeVO> getTree() {
+ List<ThSubjectType> subjectTypeList = getSubjectTypeList();
+ List<ThSubjectTypeVO> children = getChildren(subjectTypeList, "0");
+
+ return children;
+ }
+ private List<ThSubjectTypeVO> getChildren(List<ThSubjectType> thSubjectTypes, String parentCode){
+
+ List<ThSubjectTypeVO> thSubjectTypeVOList = new ArrayList<>();
+ List<ThSubjectType> selectList = thSubjectTypes
+ .stream()
+ .filter(thSubjectType -> thSubjectType.getParentCode().equals(parentCode))
+ .collect(Collectors.toList());
+ for (ThSubjectType thSubjectType : selectList) {
+ ThSubjectTypeVO thSubjectTypeVO = new ThSubjectTypeVO();
+ thSubjectTypeVO.setId(thSubjectType.getId());
+ thSubjectTypeVO.setName(thSubjectType.getName());
+ thSubjectTypeVO.setCode(thSubjectType.getCode());
+ thSubjectTypeVO.setParentCode(thSubjectType.getParentCode());
+ //获取孩子节点
+ thSubjectTypeVO.setChildren(getChildren(thSubjectTypes, thSubjectType.getCode()));
+ thSubjectTypeVOList.add(thSubjectTypeVO);
+ }
+ return thSubjectTypeVOList;
+ }
+
+
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThstatisticServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThstatisticServiceImpl.java
new file mode 100644
index 0000000..93be721
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/institutionalaccess/service/serviceImpl/ThstatisticServiceImpl.java
@@ -0,0 +1,77 @@
+package com.gkhy.exam.institutionalaccess.service.serviceImpl;
+
+import com.gkhy.exam.institutionalaccess.model.query.ThStatisticQuery;
+import com.gkhy.exam.institutionalaccess.model.resp.ThStatisticRespDTO;
+import com.gkhy.exam.institutionalaccess.model.vo.ThTrainVO;
+import com.gkhy.exam.institutionalaccess.service.ThExamRecordService;
+import com.gkhy.exam.institutionalaccess.service.ThStudentBatchService;
+import com.gkhy.exam.institutionalaccess.service.ThstatisticService;
+import com.ruoyi.system.domain.InstitutionalManager;
+import com.ruoyi.system.service.InstitutionalManagerService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+@Service("ThstatisticService")
+public class ThstatisticServiceImpl implements ThstatisticService {
+ @Autowired
+ private InstitutionalManagerService institutionalManagerService;
+ @Autowired
+ private ThStudentBatchService thStudentBatchService;
+ @Autowired
+ private ThExamRecordService thExamRecordService;
+ @Override
+ public List<ThStatisticRespDTO> getStatistic(ThStatisticQuery thStatisticQuery) {
+ //获取所有平台
+ List<InstitutionalManager> allList = institutionalManagerService.getAllList();
+ //获取培训人员数量
+ List<ThTrainVO> thTrainVOS = thStudentBatchService.getStatistic(thStatisticQuery);
+ //获取考试数据
+ List<ThTrainVO> examList = thExamRecordService.getStatistic(thStatisticQuery);
+
+ //获取有考试的学生人数
+ List<ThTrainVO> sudentCountList = thStudentBatchService.getStatisticHaveExam(thStatisticQuery);
+
+ List<ThStatisticRespDTO> thStatisticRespDTOList = new ArrayList<ThStatisticRespDTO>();
+ //循环平台
+ for (InstitutionalManager institutionalManager : allList) {
+ List<ThTrainVO> selectTrainVoList = thTrainVOS.stream().filter(thTrainVO -> thTrainVO.getInstitutionId().equals(institutionalManager.getId())).collect(Collectors.toList());
+ ThStatisticRespDTO thStatisticRespDTO = new ThStatisticRespDTO();
+ thStatisticRespDTO.setInstitutionName(institutionalManager.getInstitutionalName());
+ if(selectTrainVoList.size() > 0){
+ thStatisticRespDTO.setStudentCount(selectTrainVoList.get(0).getStudentCount());
+ thStatisticRespDTO.setFinishCount(selectTrainVoList.get(0).getFinishCount());
+ }else {
+ thStatisticRespDTO.setStudentCount(0);
+ thStatisticRespDTO.setFinishCount(0);
+ }
+ List<ThTrainVO> selectExamList = examList.stream().filter(thTrainVO -> thTrainVO.getInstitutionId().equals(institutionalManager.getId())).collect(Collectors.toList());
+ if(selectExamList.size() > 0){
+ thStatisticRespDTO.setPassCount(selectExamList.get(0).getPassCount());
+ }else {
+ thStatisticRespDTO.setPassCount(0);
+ }
+ //考试合格率
+ List<ThTrainVO> selectList = sudentCountList.stream().filter(s -> s.getInstitutionId().equals(institutionalManager.getId())).collect(Collectors.toList());
+ int examStudentCount = 0;
+ if(selectList.size() > 0){
+ examStudentCount = selectList.get(0).getStudentCount();
+ }
+ thStatisticRespDTO.setEaxmStudentCount(examStudentCount);
+ if(examStudentCount > 0){
+ thStatisticRespDTO.setPassRate((new BigDecimal(thStatisticRespDTO.getPassCount()).divide(new BigDecimal(examStudentCount), 2, BigDecimal.ROUND_HALF_UP)).multiply(new BigDecimal(100)));
+ }else {
+ thStatisticRespDTO.setPassRate(new BigDecimal(0));
+ }
+ thStatisticRespDTOList.add(thStatisticRespDTO);
+
+ }
+
+ return thStatisticRespDTOList;
+ }
+}
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 6d089ce..4db8897 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
@@ -5,7 +5,6 @@
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson2.JSONObject;
import com.alibaba.fastjson2.TypeReference;
-import com.gkhy.exam.institutionalaccess.config.ExecutorConfig;
import com.gkhy.exam.institutionalaccess.entity.*;
import com.gkhy.exam.institutionalaccess.enums.*;
import com.gkhy.exam.institutionalaccess.model.req.*;
@@ -60,9 +59,10 @@
private ThStudyDetailService studyDetailService;
@Autowired
private ThExamRecordService examRecordService;
-
@Autowired
private ThBatchCourseChapterService batchCourseChapterService;
+ @Autowired
+ private ThSubjectTypeService subjectTypeService;
@Override
public boolean receiveQuestionBank(JSONObject jsonObject) {
@@ -163,10 +163,10 @@
errorDataRespDTOS.add(new ThErrorDataRespDTO(courseReqDTO.getUuid(),"课程名称不可为空"));
continue;
}
- if(StringUtils.isEmpty(courseReqDTO.getTrainOrgName())){
- errorDataRespDTOS.add(new ThErrorDataRespDTO(courseReqDTO.getUuid(),"培训机构名称不可为空"));
+ /*if(StringUtils.isEmpty(courseReqDTO.getTrainOrgName())){
+ errorDataRespDTOS.add(new ThErrorDataRespDTO(courseReqDTO.getUuid(),"所属培训机构统一社会信用代码不可为空"));
continue;
- }
+ }*/
if(courseReqDTO.getLessonNum() == null){
errorDataRespDTOS.add(new ThErrorDataRespDTO(courseReqDTO.getUuid(),"课程总课时不可为空"));
continue;
@@ -546,7 +546,7 @@
throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"学生删除标识不符合规范");
}
if (StringUtils.isEmpty(studentReqDTO.getTrainOrgName())){
- errorDataRespDTOS.add(new ThErrorDataRespDTO(studentReqDTO.getUuid(),"培训机构名称不可为空"));
+ errorDataRespDTOS.add(new ThErrorDataRespDTO(studentReqDTO.getUuid(),"所属培训机构统一社会信用代码不可为空"));
continue;
}
if(StringUtils.isEmpty(studentReqDTO.getBatchUuid())){
@@ -728,6 +728,8 @@
List<ThCourse> thCourseList = courseService.getByUuidList(reqCourseUuids);
//获取章节
List<ThCourseChapter> thCourseChapterList = courseChapterService.getByUuids(reqChapterUuids);
+ //获取科目类别
+ List<ThSubjectType> subjectTypeList = subjectTypeService.getSubjectTypeList();
//校验
List<ThErrorDataRespDTO> errorDataRespDTOS = new ArrayList<>();
List<ThBatchReqDTO> saveBatchReqDTOList = new ArrayList<>();
@@ -742,8 +744,25 @@
errorDataRespDTOS.add(new ThErrorDataRespDTO(batchReqDTO.getUuid(),"班次(班级)名称不可为空"));
continue;
}
+ if(StringUtils.isEmpty(batchReqDTO.getSubjectCode())){
+ errorDataRespDTOS.add(new ThErrorDataRespDTO(batchReqDTO.getUuid(),"班次(班级)科目类别不可为空"));
+ continue;
+ }
+ if(batchReqDTO.getExpectEndTime() == null){
+ errorDataRespDTOS.add(new ThErrorDataRespDTO(batchReqDTO.getUuid(),"班次(班级)预期开始时间不可为空"));
+ continue;
+ }
+ if(batchReqDTO.getExpectStartTime() == null){
+ errorDataRespDTOS.add(new ThErrorDataRespDTO(batchReqDTO.getUuid(),"班次(班级)预期结束时间不可为空"));
+ continue;
+ }
+ List<ThSubjectType> selectSubjectTypeList = subjectTypeList.stream().filter(st -> st.getCode().equals(batchReqDTO.getSubjectCode())).collect(Collectors.toList());
+ if(selectSubjectTypeList.size() == 0){
+ errorDataRespDTOS.add(new ThErrorDataRespDTO(batchReqDTO.getUuid(),"班次(班级)科目类别不合法"));
+ continue;
+ }
if(StringUtils.isEmpty(batchReqDTO.getTrainOrgName())){
- errorDataRespDTOS.add(new ThErrorDataRespDTO(batchReqDTO.getUuid(),"培训机构名称不可为空"));
+ errorDataRespDTOS.add(new ThErrorDataRespDTO(batchReqDTO.getUuid(),"所属培训机构统一社会信用代码不可为空"));
continue;
}
if(batchReqDTO.getHaveExam() == null || HaveExam.get(batchReqDTO.getHaveExam()) == null){
@@ -752,6 +771,14 @@
}
if(batchReqDTO.getStatus() == null || OpenStatus.get(batchReqDTO.getStatus()) == null ){
errorDataRespDTOS.add(new ThErrorDataRespDTO(batchReqDTO.getUuid(),"批次(班级)状态标识不符合规范"));
+ continue;
+ }
+ if(batchReqDTO.getStatus().equals(OpenStatus.START.getStatus()) && batchReqDTO.getActualStartTime() == null){
+ errorDataRespDTOS.add(new ThErrorDataRespDTO(batchReqDTO.getUuid(),"开班后,实际开班时间不可为空"));
+ continue;
+ }
+ if(batchReqDTO.getStatus().equals(OpenStatus.END.getStatus()) && batchReqDTO.getActualEndTime() == null){
+ errorDataRespDTOS.add(new ThErrorDataRespDTO(batchReqDTO.getUuid(),"结班,实际结束时间不可为空"));
continue;
}
if(batchReqDTO.getBatchLessonNum() == null){
@@ -1287,6 +1314,7 @@
List<ThStudentBatch> thStudentBatches = studentBatchService.getByIdCards(idcards);
List<ThBatchCourseChapter> batchCourseChapters = batchCourseChapterService.getByChapterUuids(chapterUuids);
//校验
+ List<ThStudentBatch> updateStudentBatchList = new ArrayList<>();
List<ThErrorDataRespDTO> errorDataRespDTOS = new ArrayList<>();
List<ThStudyDetailReqDTO> saveStudyDetailReqDTOS = new ArrayList<>();
for (ThStudyDetailReqDTO studentDetailReqDTO : thStudyDetailReqDTOS) {
@@ -1325,11 +1353,15 @@
continue;
}
if(StringUtils.isEmpty(studentDetailReqDTO.getTrainOrgName())){
- errorDataRespDTOS.add(new ThErrorDataRespDTO(studentDetailReqDTO.getUuid(),"培训机构名称不可为空"));
+ errorDataRespDTOS.add(new ThErrorDataRespDTO(studentDetailReqDTO.getUuid(),"所属培训机构统一社会信用代码不可为空"));
continue;
}
if(studentDetailReqDTO.getFinishStatus() == null || FinishStatus.get(studentDetailReqDTO.getFinishStatus()) == null){
- errorDataRespDTOS.add(new ThErrorDataRespDTO(studentDetailReqDTO.getUuid(),"完成状态不规范"));
+ errorDataRespDTOS.add(new ThErrorDataRespDTO(studentDetailReqDTO.getUuid(),"章节学习状态不规范"));
+ continue;
+ }
+ if(studentDetailReqDTO.getCompleteStatus() == null || StudentFinishStatus.get(studentDetailReqDTO.getCompleteStatus()) == null){
+ errorDataRespDTOS.add(new ThErrorDataRespDTO(studentDetailReqDTO.getUuid(),"该学生在此批次(班级)学习状态不规范"));
continue;
}
if(studentDetailReqDTO.getDuration() == null){
@@ -1425,6 +1457,13 @@
continue;
}
saveStudyDetailReqDTOS.add(studentDetailReqDTO);
+
+ //判断需要修改的批次学生
+ if(studentDetailReqDTO.getCompleteStatus().equals(FinishStatus.YES.getStatus())){
+ ThStudentBatch thStudentBatch = StudentBatchSelectList.get(0);
+ thStudentBatch.setFinishStatus(studentDetailReqDTO.getCompleteStatus());
+ updateStudentBatchList.add(thStudentBatch);
+ }
}
//获取历史记录
@@ -1532,6 +1571,11 @@
for (List<ThStudyTrack> thStudyTracks : splitSaveTrackList) {
studyTrackService.insertBatch(thStudyTracks);
}
+ //修改学生完成状态
+ List<List<ThStudentBatch>> splitUpdateThStudentBatchList = ListUtil.split(updateStudentBatchList, 500);
+ for (List<ThStudentBatch> studentBatcheList : splitUpdateThStudentBatchList) {
+ studentBatchService.updateBatch(studentBatcheList);
+ }
return AjaxResult.success(errorDataRespDTOS);
}
@@ -1603,7 +1647,7 @@
continue;
}
if(StringUtils.isEmpty(examRecordReqDTO.getTrainOrgName())){
- errorDataRespDTOS.add(new ThErrorDataRespDTO(examRecordReqDTO.getUuid(),"培训机构名称不可为空"));
+ errorDataRespDTOS.add(new ThErrorDataRespDTO(examRecordReqDTO.getUuid(),"所属培训机构统一社会信用代码不可为空"));
continue;
}
if(StringUtils.isEmpty(examRecordReqDTO.getExamName())){
@@ -1757,6 +1801,7 @@
thBatch.setStatus(OpenStatus.START.getStatus());
thBatch.setUpdateTime(LocalDateTime.now());
thBatch.setUpdateBy(institutionUser.getInstitutionalName());
+ thBatch.setActualStartTime(LocalDateTime.now());
batchService.updateById(thBatch);
return AjaxResult.success();
}
@@ -1798,10 +1843,11 @@
thBatch.setStatus(OpenStatus.END.getStatus());
thBatch.setUpdateTime(LocalDateTime.now());
thBatch.setUpdateBy(institutionUser.getInstitutionalName());
+ thBatch.setActualEndTime(LocalDateTime.now());
batchService.updateById(thBatch);
- studentBatchService.updateFinishStatusByBatchUuid(thBatchEndReqDTO.getBatchUuid());
return AjaxResult.success();
}
+
private void validateStudyDetail(ThStudyDetailReqDTO studentDetailReqDTO) {
@@ -1836,7 +1882,7 @@
throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"课程章节不存在");
}
if(StringUtils.isEmpty(studentDetailReqDTO.getTrainOrgName())){
- throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"培训机构名称不可为空");
+ throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"所属培训机构统一社会信用代码不可为空");
}
if(studentDetailReqDTO.getFinishStatus() == null || FinishStatus.get(studentDetailReqDTO.getFinishStatus()) == null){
throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"完成状态不规范");
@@ -1936,7 +1982,7 @@
throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"实名认证照不可为空");
}
if (StringUtils.isEmpty(studentReqDTO.getTrainOrgName())){
- throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"培训机构名称不可为空");
+ throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"所属培训机构统一社会信用代码不可为空");
}
/*if(CollectionUtils.isEmpty(studentReqDTO.getBatchUuids())){
throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"关联课程uuidd不可为空");
@@ -1970,7 +2016,7 @@
throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"课程名称不可为空");
}
if(StringUtils.isEmpty(courseReqDTO.getTrainOrgName())){
- throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"培训机构名称不可为空");
+ throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"所属培训机构统一社会信用代码不可为空");
}
if(courseReqDTO.getLessonNum() == null){
throw new BusinessException(this.getClass(), ResultConstants.THREE_INSTITUTION_PARAMM_NULL,"总课时不可为空");
diff --git a/exam-system/src/main/resources/mapper/institutionaccess/ThBatchMapper.xml b/exam-system/src/main/resources/mapper/institutionaccess/ThBatchMapper.xml
index ea40be5..a3ddd68 100644
--- a/exam-system/src/main/resources/mapper/institutionaccess/ThBatchMapper.xml
+++ b/exam-system/src/main/resources/mapper/institutionaccess/ThBatchMapper.xml
@@ -8,11 +8,17 @@
batch_name,
institution_id,
institution_name,
+ train_org_name,
have_exam,
status,
del_flag,
create_time,
- update_time
+ update_time,
+ actual_start_time,
+ actual_end_time,
+ expect_start_time,
+ expect_end_time,
+ subject_code
from th_batch where del_flag = 0
<if test="query.institutionId != null">
and institution_id = #{query.institutionId}
@@ -20,11 +26,17 @@
<if test="query.batchName != null and query.batchName != ''">
and batch_name like concat('%', #{query.batchaName}, '%')
</if>
+ <if test="query.subjectCode != null and query.subjectCode != ''">
+ and subject_code like concat(#{query.subjectCode}, '%')
+ </if>
+ <if test="query.trainOrgName != null and query.trainOrgName != ''">
+ and train_org_name = #{query.trainOrgName}, '%')
+ </if>
<if test="query.startTime != null"><!-- 开始时间检索 -->
- and date_format(d.create_time,'%y-%m-%d') >= date_format(#{query.startTime},'%y-%m-%d')
+ and date_format(actual_start_time,'%y-%m-%d') >= date_format(#{query.startTime},'%y-%m-%d')
</if>
<if test="query.endTime != null"><!-- 结束时间检索 -->
- and date_format(d.create_time,'%y-%m-%d') <= date_format(#{query.endTime},'%y-%m-%d')
+ and date_format(actual_start_time,'%y-%m-%d') <= date_format(#{query.endTime},'%y-%m-%d')
</if>
order by id desc
@@ -32,11 +44,12 @@
<!--批量插入-->
<insert id="insertBatch">
INSERT INTO th_batch (id, uuid, institution_id, institution_name,batch_name,have_exam,status,
- batch_lesson_num,train_org_name, del_flag,create_time,update_time,create_by,update_by) VALUES
+ batch_lesson_num,train_org_name, del_flag,create_time,update_time,create_by,update_by,
+ actual_start_time,actual_end_time,expect_start_time,expect_end_time,subject_code) VALUES
<foreach collection="batchList" separator="," item="item">
(#{item.id},#{item.uuid},#{item.institutionId},#{item.institutionName},#{item.batchName},#{item.haveExam},#{item.status},
#{item.batchLessonNum},#{item.trainOrgName},#{item.delFlag},#{item.createTime},
- #{item.updateTime},#{item.createBy},#{item.updateBy})
+ #{item.updateTime},#{item.createBy},#{item.updateBy},#{item.actualStartTime},#{item.actualEndTime},#{item.expectStartTime},#{item.expectEndTime},#{item.subjectCode})
</foreach>
</insert>
@@ -76,7 +89,22 @@
update_by = #{item.updateBy},
</if>
<if test="item.updateTime != null" >
- update_time = #{item.updateTime}
+ update_time = #{item.updateTime},
+ </if>
+ <if test="item.actualStartTime != null" >
+ actual_start_time = #{item.actualStartTime},
+ </if>
+ <if test="item.actualEndTime != null" >
+ actual_end_time = #{item.actualEndTime},
+ </if>
+ <if test="item.expectStartTime != null" >
+ expect_start_time = #{item.expectStartTime},
+ </if>
+ <if test="item.expectEndTime != null" >
+ expect_end_time = #{item.expectEndTime},
+ </if>
+ <if test="item.subjectCode != null and item.subjectCode != ''" >
+ subject_code = #{item.subjectCode}
</if>
</set>
where id = #{item.id}
@@ -122,7 +150,7 @@
<select id="getByUuids" resultType="com.gkhy.exam.institutionalaccess.entity.ThBatch">
select id, uuid, institution_id, institution_name,batch_name,have_exam,status,
- batch_lesson_num,train_org_name
+ batch_lesson_num,train_org_name,actual_start_time,actual_end_time,expect_start_time,expect_end_time,subject_code
from th_batch
where del_flag = 0 and uuid in
<foreach collection="batchUuids" item="uuid" index ="index" open="(" close=")" separator=",">
diff --git a/exam-system/src/main/resources/mapper/institutionaccess/ThExamRecordMapper.xml b/exam-system/src/main/resources/mapper/institutionaccess/ThExamRecordMapper.xml
index 08e9404..0f7bb27 100644
--- a/exam-system/src/main/resources/mapper/institutionaccess/ThExamRecordMapper.xml
+++ b/exam-system/src/main/resources/mapper/institutionaccess/ThExamRecordMapper.xml
@@ -46,5 +46,31 @@
</foreach>
</select>
+ <select id="getStatistic" resultType="com.gkhy.exam.institutionalaccess.model.vo.ThTrainVO">
+ SELECT
+ e.institution_id,
+ count( e.institution_id ) passCount
+ FROM
+ th_exam_record e
+ LEFT JOIN th_batch b ON e.batch_uuid = b.uuid
+ WHERE
+ e.del_flag = 0
+ AND e.exam_is_pass = 1
+ AND b.have_exam = 1
+ <if test="query.subjectCode != null and query.subjectCode != ''">
+ and b.subject_code like concat(#{query.subjectCode}, '%')
+ </if>
+ <if test="query.trainOrgName != null and query.trainOrgName != ''">
+ and b.train_org_name = #{query.trainOrgName}, '%')
+ </if>
+ <if test="query.startTime != null"><!-- 开始时间检索 -->
+ and date_format(b.actual_start_time,'%y-%m-%d') >= date_format(#{query.startTime},'%y-%m-%d')
+ </if>
+ <if test="query.endTime != null"><!-- 结束时间检索 -->
+ and date_format(b.actual_start_time,'%y-%m-%d') <= date_format(#{query.endTime},'%y-%m-%d')
+ </if>
+ GROUP BY
+ e.institution_id
+ </select>
</mapper>
diff --git a/exam-system/src/main/resources/mapper/institutionaccess/ThStudentBatchMapper.xml b/exam-system/src/main/resources/mapper/institutionaccess/ThStudentBatchMapper.xml
index 3884fef..6cff219 100644
--- a/exam-system/src/main/resources/mapper/institutionaccess/ThStudentBatchMapper.xml
+++ b/exam-system/src/main/resources/mapper/institutionaccess/ThStudentBatchMapper.xml
@@ -127,7 +127,7 @@
</select>
<select id="getByIdCards" resultType="com.gkhy.exam.institutionalaccess.entity.ThStudentBatch" >
- select idcard, name, sex, phone, auth_photo,train_org_name, institution_id, institution_name,
+ select id,uuid,idcard, name, sex, phone, auth_photo,train_org_name, institution_id, institution_name,
industry,occupation,post,finish_status,batch_uuid from th_student_batch where del_flag = 0 and idcard in
<foreach collection="idcards" item="idcard" index ="index" open="(" close=")" separator=",">
#{idcard}
@@ -147,5 +147,58 @@
AND bc.course_uuid = #{courseUuid}
</select>
+ <select id="getStatistic" resultType="com.gkhy.exam.institutionalaccess.model.vo.ThTrainVO">
+ SELECT
+ sb.institution_id,
+ count( sb.institution_id ) studentCount,
+ sum(case when sb.finish_status=1 then 1 else 0 end) finishCount
+
+ FROM
+ th_student_batch sb
+ LEFT JOIN th_batch b ON sb.batch_uuid = b.uuid
+ WHERE
+ sb.del_flag = 0
+ <if test="query.subjectCode != null and query.subjectCode != ''">
+ and b.subject_code like concat(#{query.subjectCode}, '%')
+ </if>
+ <if test="query.trainOrgName != null and query.trainOrgName != ''">
+ and b.train_org_name = #{query.trainOrgName}, '%')
+ </if>
+ <if test="query.startTime != null"><!-- 开始时间检索 -->
+ and date_format(b.actual_start_time,'%y-%m-%d') >= date_format(#{query.startTime},'%y-%m-%d')
+ </if>
+ <if test="query.endTime != null"><!-- 结束时间检索 -->
+ and date_format(b.actual_start_time,'%y-%m-%d') <= date_format(#{query.endTime},'%y-%m-%d')
+ </if>
+ GROUP BY
+ sb.institution_id
+ </select>
+ <select id="getStatisticHaveExam" resultType="com.gkhy.exam.institutionalaccess.model.vo.ThTrainVO">
+ SELECT
+ sb.institution_id,
+ count( sb.institution_id ) studentCount,
+ sum(case when sb.finish_status=1 then 1 else 0 end) finishCount
+
+ FROM
+ th_student_batch sb
+ LEFT JOIN th_batch b ON sb.batch_uuid = b.uuid
+ WHERE
+ sb.del_flag = 0
+ AND b.have_exam = 1
+ <if test="query.subjectCode != null and query.subjectCode != ''">
+ and b.subject_code like concat(#{query.subjectCode}, '%')
+ </if>
+ <if test="query.trainOrgName != null and query.trainOrgName != ''">
+ and b.train_org_name = #{query.trainOrgName}, '%')
+ </if>
+ <if test="query.startTime != null"><!-- 开始时间检索 -->
+ and date_format(b.actual_start_time,'%y-%m-%d') >= date_format(#{query.startTime},'%y-%m-%d')
+ </if>
+ <if test="query.endTime != null"><!-- 结束时间检索 -->
+ and date_format(b.actual_start_time,'%y-%m-%d') <= date_format(#{query.endTime},'%y-%m-%d')
+ </if>
+ GROUP BY
+ sb.institution_id
+ </select>
</mapper>
diff --git a/exam-system/src/main/resources/mapper/institutionaccess/ThStudyDetailMapper.xml b/exam-system/src/main/resources/mapper/institutionaccess/ThStudyDetailMapper.xml
index bce3e7d..19c708b 100644
--- a/exam-system/src/main/resources/mapper/institutionaccess/ThStudyDetailMapper.xml
+++ b/exam-system/src/main/resources/mapper/institutionaccess/ThStudyDetailMapper.xml
@@ -20,7 +20,8 @@
d.finish_position,
d.video_url,
d.lesson_report_url,
- d.create_time
+ d.create_time,
+ d.complete_status
FROM
th_study_detail d
where d.del_flag = 0
@@ -70,12 +71,13 @@
<insert id="insertBatch">
INSERT INTO th_study_detail (id,uuid,serial_num, idcard,institution_id, institution_name,course_uuid, train_org_name,batch_uuid,chapter_uuid,
- finish_status,duration,start_time,finish_time,start_position,finish_position,video_url,lesson_report_url,del_flag,create_time,update_time,create_by,update_by) VALUES
+ finish_status,duration,start_time,finish_time,start_position,finish_position,video_url,lesson_report_url,del_flag,create_time,update_time,create_by,update_by,
+ complete_status) VALUES
<foreach collection="list" separator="," item="item">
(#{item.id},#{item.uuid},#{item.serialNum},#{item.idcard},#{item.institutionId},#{item.institutionName},#{item.courseUuid},#{item.trainOrgName},#{item.batchUuid},#{item.chapterUuid},
#{item.finishStatus},#{item.duration},#{item.startTime},
#{item.finishTime},#{item.startPosition},#{item.finishPosition},#{item.videoUrl},#{item.lessonReportUrl},#{item.delFlag},#{item.createTime},
- #{item.updateTime},#{item.createBy},#{item.updateBy})
+ #{item.updateTime},#{item.createBy},#{item.updateBy},#{item.completeStatus})
</foreach>
</insert>
<update id="updateBatch" parameterType="java.util.List" >
@@ -140,7 +142,10 @@
update_by = #{item.updateBy},
</if>
<if test="item.updateTime != null" >
- update_time = #{item.updateTime}
+ update_time = #{item.updateTime},
+ </if>
+ <if test="item.completeStatus != null" >
+ complete_status = #{item.completeStatus}
</if>
</set>
where id = #{item.id}
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 51689f6..ab0aec9 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -36,7 +36,7 @@
# 国际化资源文件路径
basename: i18n/messages
profiles:
- active: pro
+ active: dev
# 文件上传
servlet:
multipart:
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java
index dd9207c..566fdf7 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java
@@ -57,4 +57,9 @@
* 七天内访问请求token次数
*/
public static final String THREE_TOKEN_CNT_KEY = "swspkmas:three_token_cnt:";
+
+ /**
+ * 三陪类型
+ */
+ public static final String THREE_SUBJECT_TYPE = "swspkmas:three_subject_type";
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/ResultVO.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/ResultVO.java
new file mode 100644
index 0000000..a1f0c51
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/ResultVO.java
@@ -0,0 +1,16 @@
+package com.ruoyi.common.core.domain.model;
+
+import lombok.Data;
+
+/**
+ * @author zf
+ * @email 1603559716@qq.com
+ * @date 2024/7/29 10:06
+ * @description ResultVO
+ */
+@Data
+public class ResultVO<T> {
+ private Integer code;
+ private String msg;
+ private T data;
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/HttpClientUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/HttpClientUtil.java
new file mode 100644
index 0000000..9978029
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/HttpClientUtil.java
@@ -0,0 +1,150 @@
+package com.ruoyi.common.utils;
+
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.http.NameValuePair;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+
+public class HttpClientUtil {
+
+ /**
+ * 带参数的get请求
+ * @param url
+ * @param param
+ * @return String
+ */
+ public static String doGet(String url, Map<String, String> param) {
+ // 创建Httpclient对象
+ CloseableHttpClient httpclient = HttpClients.createDefault();
+
+ String resultString = "";
+ CloseableHttpResponse response = null;
+ try {
+ // 创建uri
+ URIBuilder builder = new URIBuilder(url);
+ if (param != null) {
+ for (String key : param.keySet()) {
+ builder.addParameter(key, param.get(key));
+ }
+ }
+ URI uri = builder.build();
+ // 创建http GET请求
+ HttpGet httpGet = new HttpGet(uri);
+ // 执行请求
+ response = httpclient.execute(httpGet);
+ // 判断返回状态是否为200
+ if (response.getStatusLine().getStatusCode() == 200) {
+ resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ if (response != null) {
+ response.close();
+ }
+ httpclient.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ return resultString;
+ }
+
+ /**
+ * 不带参数的get请求
+ * @param url
+ * @return String
+ */
+ public static String doGet(String url) {
+ return doGet(url, null);
+ }
+
+ /**
+ * 带参数的post请求
+ * @param url
+ * @param param
+ * @return String
+ */
+ public static String doPost(String url, String param) {
+ // 创建Httpclient对象
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ CloseableHttpResponse response = null;
+ String resultString = "";
+ try {
+ // 创建Http Post请求
+ HttpPost httpPost = new HttpPost(url);
+ // 创建参数列表
+ StringEntity bodyData = new StringEntity(param.toString(), "UTF-8");
+ httpPost.setEntity(bodyData);
+ // 执行http请求
+ response = httpClient.execute(httpPost);
+ resultString = EntityUtils.toString(response.getEntity(), "utf-8");
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ response.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ return resultString;
+ }
+
+ /**
+ * 不带参数的post请求
+ * @param url
+ * @return String
+ */
+ public static String doPost(String url) {
+ return doPost(url, null);
+ }
+
+ /**
+ * 传送json类型的post请求
+ * @param url
+ * @param json
+ * @return String
+ */
+ public static String doPostJson(String url, String json) {
+ // 创建Httpclient对象
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ CloseableHttpResponse response = null;
+ String resultString = "";
+ try {
+ // 创建Http Post请求
+ HttpPost httpPost = new HttpPost(url);
+ // 创建请求内容
+ StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
+ httpPost.setEntity(entity);
+ // 执行http请求
+ response = httpClient.execute(httpPost);
+ resultString = EntityUtils.toString(response.getEntity(), "utf-8");
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ response.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ return resultString;
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/InstitutionalManager.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/InstitutionalManager.java
index b00232d..0324f6f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/InstitutionalManager.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/InstitutionalManager.java
@@ -50,4 +50,6 @@
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
+
+ private String reason;
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/ThAccessAddress.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/ThAccessAddress.java
new file mode 100644
index 0000000..9507112
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/ThAccessAddress.java
@@ -0,0 +1,15 @@
+package com.ruoyi.system.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+
+@TableName("th_access_address")
+@Data
+public class ThAccessAddress {
+ private Long id;
+ private Long institutionId;
+ private Byte type;
+ private String url;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/enums/AccessAddressType.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/enums/AccessAddressType.java
new file mode 100644
index 0000000..b5508af
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/enums/AccessAddressType.java
@@ -0,0 +1,40 @@
+package com.ruoyi.system.domain.enums;
+
+public enum AccessAddressType {
+ NOTICE((byte)0,"通知"),
+ STUDY_RECORD((byte)1,"学习记录"),
+ ;
+
+ private Byte type;
+ private String desc;
+
+ AccessAddressType(Byte type, String desc) {
+ this.type = type;
+ this.desc = desc;
+ }
+
+ public Byte getType() {
+ return type;
+ }
+
+ public void setType(Byte type) {
+ this.type = type;
+ }
+
+ public String getDesc() {
+ return desc;
+ }
+
+ public void setDesc(String desc) {
+ this.desc = desc;
+ }
+
+ public static AccessAddressType get(Byte status) {
+ for (AccessAddressType accessAddressType : AccessAddressType.values()) {
+ if (accessAddressType.getType() == status) {
+ return accessAddressType;
+ }
+ }
+ return null;
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/req/InstitutionModStatusReqDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/req/InstitutionModStatusReqDTO.java
index 0b1259c..951cb4a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/req/InstitutionModStatusReqDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/req/InstitutionModStatusReqDTO.java
@@ -6,4 +6,5 @@
public class InstitutionModStatusReqDTO {
private Long id;
private Byte status;
+ private String reason;
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/InstitutionVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/InstitutionVo.java
new file mode 100644
index 0000000..f868108
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/InstitutionVo.java
@@ -0,0 +1,10 @@
+package com.ruoyi.system.domain.vo;
+
+import lombok.Data;
+
+@Data
+public class InstitutionVo {
+ private String institutionName;
+ private Byte status;
+ private String reason;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/ThAccessAddressMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/ThAccessAddressMapper.java
new file mode 100644
index 0000000..e59b541
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/ThAccessAddressMapper.java
@@ -0,0 +1,12 @@
+package com.ruoyi.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.system.domain.ThAccessAddress;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Repository
+@Mapper
+public interface ThAccessAddressMapper extends BaseMapper<ThAccessAddress> {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/InstitutionalManagerService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/InstitutionalManagerService.java
index bd3f1f5..86ce2f5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/InstitutionalManagerService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/InstitutionalManagerService.java
@@ -27,4 +27,6 @@
int modStatus(InstitutionModStatusReqDTO reqDTO);
List<InstitutionalManager> selectInstitutionInfo();
+
+ List<InstitutionalManager> getAllList();
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ThAccessAddressService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ThAccessAddressService.java
new file mode 100644
index 0000000..7570ea9
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ThAccessAddressService.java
@@ -0,0 +1,8 @@
+package com.ruoyi.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.system.domain.ThAccessAddress;
+
+public interface ThAccessAddressService extends IService<ThAccessAddress> {
+ ThAccessAddress getByInstitutionIdAndType(Long institutionId, Byte type);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InstitutionalManagerServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InstitutionalManagerServiceImpl.java
index 5bdccdc..86e1884 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InstitutionalManagerServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InstitutionalManagerServiceImpl.java
@@ -1,15 +1,26 @@
package com.ruoyi.system.service.impl;
+import com.alibaba.fastjson2.JSONObject;
+import com.alibaba.fastjson2.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.constant.ResultConstants;
import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.model.ResultVO;
import com.ruoyi.common.enums.InstitutionStatus;
+import com.ruoyi.common.exception.BusinessException;
+import com.ruoyi.common.signature.AESUtils;
+import com.ruoyi.common.utils.HttpClientUtil;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.InstitutionalManager;
+import com.ruoyi.system.domain.ThAccessAddress;
+import com.ruoyi.system.domain.enums.AccessAddressType;
import com.ruoyi.system.domain.query.InstitutionManagerQuery;
import com.ruoyi.system.domain.req.InstitutionModStatusReqDTO;
+import com.ruoyi.system.domain.vo.InstitutionVo;
+import com.ruoyi.system.mapper.ThAccessAddressMapper;
import com.ruoyi.system.service.InstitutionalManagerService;
import com.ruoyi.system.domain.req.InstitutionalManagerAddReqDTO;
import com.ruoyi.system.domain.req.InstitutionalManagerModReqDTO;
@@ -17,16 +28,19 @@
import com.ruoyi.common.enums.coalmineEnums.DeleteStatusEnum;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.RandomUtil;
+import com.ruoyi.system.service.ThAccessAddressService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import java.util.List;
+import java.util.*;
@Service("InstitutionalManagerService")
public class InstitutionalManagerServiceImpl extends ServiceImpl<InstitutionalManagerMapper, InstitutionalManager> implements InstitutionalManagerService {
@Autowired
private InstitutionalManagerMapper institutionalManagerMapper;
+ @Autowired
+ private ThAccessAddressService thAccessAddressService;
@Override
public int add(InstitutionalManagerAddReqDTO reqDTO) {
@@ -88,10 +102,25 @@
@Override
public int modStatus(InstitutionModStatusReqDTO reqDTO) {
- InstitutionalManager institutionalManager = new InstitutionalManager();
+ //获取该机构信息
+ InstitutionalManager institutionalManager = this.getById(reqDTO.getId());
+ //获取该机构访问路径
+ ThAccessAddress accessAddress = thAccessAddressService.getByInstitutionIdAndType(reqDTO.getId(), AccessAddressType.NOTICE.getType());
+ //推送到机构
+ InstitutionVo institutionVo = new InstitutionVo();
+ institutionVo.setInstitutionName(institutionalManager.getInstitutionalName());
+ institutionVo.setStatus(reqDTO.getStatus());
+ institutionVo.setReason(reqDTO.getReason());
+ /* String json = HttpClientUtil.doPost(accessAddress.getUrl(), JSONObject.toJSONString(institutionVo));
+ ResultVO<String> returnVo = JSONObject.parseObject(json, new TypeReference<ResultVO<String>>() {});
+ if(returnVo.getCode() == null || returnVo.getCode() != 200){
+ throw new ServiceException("推送平台信息异常");
+ }*/
institutionalManager.setId(reqDTO.getId());
institutionalManager.setStatus(reqDTO.getStatus());
- return institutionalManagerMapper.updateById(institutionalManager);
+ institutionalManager.setReason(reqDTO.getReason());
+ int i = institutionalManagerMapper.updateById(institutionalManager);
+ return i;
}
@Override
@@ -99,6 +128,11 @@
return institutionalManagerMapper.selectList(new LambdaQueryWrapper<InstitutionalManager>().eq(InstitutionalManager::getDelFlag,DeleteStatusEnum.NO.getStatus()));
}
+ @Override
+ public List<InstitutionalManager> getAllList() {
+ return institutionalManagerMapper.selectList(new LambdaQueryWrapper<InstitutionalManager>().eq(InstitutionalManager::getDelFlag,DeleteStatusEnum.NO.getStatus()));
+ }
+
//生成编码
private Long generateCode() {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ThAccessAddressServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ThAccessAddressServiceImpl.java
new file mode 100644
index 0000000..e5bda90
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ThAccessAddressServiceImpl.java
@@ -0,0 +1,17 @@
+package com.ruoyi.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.system.domain.ThAccessAddress;
+import com.ruoyi.system.mapper.ThAccessAddressMapper;
+import com.ruoyi.system.service.ThAccessAddressService;
+import org.springframework.stereotype.Service;
+
+@Service("thAccessAddressService")
+public class ThAccessAddressServiceImpl extends ServiceImpl<ThAccessAddressMapper, ThAccessAddress> implements ThAccessAddressService {
+
+ public ThAccessAddress getByInstitutionIdAndType(Long institutionId, Byte type) {
+ return baseMapper.selectOne(new LambdaQueryWrapper<ThAccessAddress>().eq(ThAccessAddress::getInstitutionId, institutionId)
+ .eq(ThAccessAddress::getType, type));
+ }
+}
--
Gitblit v1.9.2