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