From 05a54025b1ae843f9d21a4450ec05c9e420e7f24 Mon Sep 17 00:00:00 2001
From: zf <1603559716@qq.com>
Date: 星期四, 28 九月 2023 10:47:37 +0800
Subject: [PATCH] bug修改

---
 exam-system/src/main/java/com/gkhy/exam/coalmine/service/impl/EduResourcesManagerServiceImpl.java |  407 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 407 insertions(+), 0 deletions(-)

diff --git a/exam-system/src/main/java/com/gkhy/exam/coalmine/service/impl/EduResourcesManagerServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/coalmine/service/impl/EduResourcesManagerServiceImpl.java
new file mode 100644
index 0000000..56459e9
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/coalmine/service/impl/EduResourcesManagerServiceImpl.java
@@ -0,0 +1,407 @@
+package com.gkhy.exam.coalmine.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.gkhy.exam.coalmine.entity.ExaminerManage;
+import com.gkhy.exam.coalmine.entity.ExaminerManageOperateTypeBind;
+import com.gkhy.exam.coalmine.entity.TeacherManage;
+import com.gkhy.exam.coalmine.entity.TeacherManageOperateTypeBind;
+import com.gkhy.exam.coalmine.model.dto.req.*;
+import com.gkhy.exam.coalmine.model.dto.resp.GetExaminerOperateTypesRespDTO;
+import com.gkhy.exam.coalmine.model.dto.resp.GetExaminerRespDTO;
+import com.gkhy.exam.coalmine.model.dto.resp.GetTeacherOperateTypesRespDTO;
+import com.gkhy.exam.coalmine.model.dto.resp.GetTeacherRespDTO;
+import com.gkhy.exam.coalmine.service.EduResourcesManagerService;
+import com.gkhy.exam.coalmine.service.baseService.ExaminerManageOperateTypeBindService;
+import com.gkhy.exam.coalmine.service.baseService.ExaminerManageService;
+import com.gkhy.exam.coalmine.service.baseService.TeacherManageOperateTypeBindService;
+import com.gkhy.exam.coalmine.service.baseService.TeacherManageService;
+import com.ruoyi.common.constant.CacheConstants;
+import com.ruoyi.common.constant.ResultConstants;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.enums.coalmineEnums.DeleteStatusEnum;
+import com.ruoyi.common.enums.coalmineEnums.EnableStatusEnum;
+import com.ruoyi.common.exception.BusinessException;
+import com.ruoyi.file.entity.AttachmentInfo;
+import com.ruoyi.file.service.AttachmentInfoService;
+import com.ruoyi.system.domain.bo.SysOperateTypeWholeNameBO;
+import com.ruoyi.system.service.SysOperateTypeService;
+import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author Mr.huang
+ * @decription
+ * @date 2023/9/11 16:04
+ */
+@Service
+public class EduResourcesManagerServiceImpl implements EduResourcesManagerService {
+
+    @Resource
+    private ExaminerManageService examinerManageService;
+
+    @Resource
+    private TeacherManageService teacherManageService;
+
+    @Resource
+    private AttachmentInfoService attachmentInfoService;
+
+    @Resource
+    private SysOperateTypeService operateTypeService;
+
+    @Resource
+    private RedisCache redisCache;
+
+    @Resource
+    private ExaminerManageOperateTypeBindService examinerManageOperateTypeBindService;
+
+    @Resource
+    private TeacherManageOperateTypeBindService teacherManageOperateTypeBindService;
+
+    @Override
+    @Transactional
+    public AjaxResult saveExaminer(ExaminerManageAddReqDTO reqDTO) {
+        ExaminerManage examinerByCode = examinerManageService.getExaminerByCode(reqDTO.getCode());
+        if (examinerByCode != null)
+            throw new BusinessException(this.getClass(),ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"身份证已存在");
+        ExaminerManage examinerManage = new ExaminerManage();
+        BeanUtils.copyProperties(reqDTO,examinerManage);
+        examinerManage.setDelFlag(DeleteStatusEnum.NO.getStatus());
+        examinerManage.setStatus(EnableStatusEnum.YES.getStatus());
+        boolean save = examinerManageService.save(examinerManage);
+        if (!save)
+            throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"考评员信息保存失败");
+        if (!CollectionUtils.isEmpty(reqDTO.getOperateTypes())){
+            ArrayList<ExaminerManageOperateTypeBind> binds = new ArrayList<>();
+            for (ExaminerManageAddOperateTypeReqDTO operateType : reqDTO.getOperateTypes()) {
+                ExaminerManageOperateTypeBind examinerManageOperateTypeBind = new ExaminerManageOperateTypeBind();
+                BeanUtils.copyProperties(operateType,examinerManageOperateTypeBind);
+                examinerManageOperateTypeBind.setDelFlag(DeleteStatusEnum.NO.getStatus());
+                examinerManageOperateTypeBind.setExaminerManageId(examinerManage.getId());
+                binds.add(examinerManageOperateTypeBind);
+            }
+            boolean saveBatch = examinerManageOperateTypeBindService.saveBatch(binds);
+            if (!saveBatch)
+                throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"考评员工种数据保存失败");
+        }
+        return AjaxResult.success("新增成功");
+    }
+
+
+    @Override
+    @Transactional
+    public AjaxResult removeExaminerById(Long id) {
+        ExaminerManage manage = examinerManageService.getExaminerById(id);
+        if (manage == null)
+            return AjaxResult.success("删除成功");
+        manage.setDelFlag(DeleteStatusEnum.YES.getStatus());
+        boolean save = examinerManageService.updateById(manage);
+        if (!save)
+            throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"考评员信息删除失败");
+        removeOldExaminerManageOperateTypeBind(id);
+        return AjaxResult.success("删除成功");
+    }
+
+    private void removeOldExaminerManageOperateTypeBind(Long id){
+        List<ExaminerManageOperateTypeBind> binds = examinerManageOperateTypeBindService.listByExaminerManageId(id);
+        if (!CollectionUtils.isEmpty(binds)){
+            binds = binds.stream().map(bind -> {
+                bind.setDelFlag(DeleteStatusEnum.YES.getStatus());
+                return bind;
+            }).collect(Collectors.toList());
+            boolean updateBatchById = examinerManageOperateTypeBindService.updateBatchById(binds);
+            if (!updateBatchById)
+                throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"考评员信息修改失败");
+        }
+    }
+
+    private void removeOldTeacherManageOperateTypeBind(Long id){
+        List<TeacherManageOperateTypeBind> binds = teacherManageOperateTypeBindService.listByTeacherManageId(id);
+        if (!CollectionUtils.isEmpty(binds)){
+            binds = binds.stream().map(bind -> {
+                bind.setDelFlag(DeleteStatusEnum.YES.getStatus());
+                return bind;
+            }).collect(Collectors.toList());
+            boolean updateBatchById = teacherManageOperateTypeBindService.updateBatchById(binds);
+            if (!updateBatchById)
+                throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"教师信息修改失败");
+        }
+    }
+
+    @Override
+    @Transactional
+    public AjaxResult updateExaminerById(ExaminerManageUpdateReqDTO reqDTO) {
+        ExaminerManage examinerByCode = examinerManageService.getExaminerByCode(reqDTO.getCode());
+        if (examinerByCode != null && examinerByCode.getId() != reqDTO.getId())
+            throw new BusinessException(this.getClass(),ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"身份证已存在");
+        ExaminerManage examinerManage = new ExaminerManage();
+        BeanUtils.copyProperties(reqDTO,examinerManage,"id");
+        boolean save = examinerManageService.updateById(examinerManage);
+        if (!save)
+            throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"考评员信息修改失败");
+        removeOldExaminerManageOperateTypeBind(reqDTO.getId());
+        if (!CollectionUtils.isEmpty(reqDTO.getOperateTypes())){
+            ArrayList<ExaminerManageOperateTypeBind> binds = new ArrayList<>();
+            for (ExaminerManageAddOperateTypeReqDTO operateType : reqDTO.getOperateTypes()) {
+                ExaminerManageOperateTypeBind examinerManageOperateTypeBind = new ExaminerManageOperateTypeBind();
+                BeanUtils.copyProperties(operateType,examinerManageOperateTypeBind);
+                examinerManageOperateTypeBind.setDelFlag(DeleteStatusEnum.NO.getStatus());
+                examinerManageOperateTypeBind.setExaminerManageId(examinerManage.getId());
+                binds.add(examinerManageOperateTypeBind);
+            }
+            boolean saveBatch = examinerManageOperateTypeBindService.saveBatch(binds);
+            if (!saveBatch)
+                throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"考评员工种数据保存失败");
+        }
+        return AjaxResult.success("修改成功");
+    }
+
+    private AttachmentInfo getAttachmentInfoById(Long id){
+        if (id != null){
+            AttachmentInfo attachmentInfo = attachmentInfoService.findById(id);
+            return attachmentInfo;
+        }
+        return null;
+    }
+
+    @Override
+    public AjaxResult getExaminerById(Long id) {
+        ExaminerManage manage = examinerManageService.getExaminerById(id);
+        GetExaminerRespDTO dto = getExaminerRespDTO(manage);
+        return AjaxResult.success(dto);
+    }
+
+    private GetExaminerRespDTO getExaminerRespDTO(ExaminerManage manage) {
+        GetExaminerRespDTO dto = new GetExaminerRespDTO();
+        if (manage == null)
+            return null;
+        BeanUtils.copyProperties(manage,dto);
+        dto.setQaAttachment(getAttachmentInfoById(manage.getQaAttachment()));
+        dto.setPhotoAttachment(getAttachmentInfoById(manage.getPhotoAttachment()));
+        LambdaQueryWrapper<ExaminerManageOperateTypeBind> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ExaminerManageOperateTypeBind::getExaminerManageId,manage.getId())
+                .eq(ExaminerManageOperateTypeBind::getDelFlag,DeleteStatusEnum.NO.getStatus());
+        List<ExaminerManageOperateTypeBind> list = examinerManageOperateTypeBindService.list(wrapper);
+        if (CollectionUtils.isEmpty(list))
+            return dto;
+        Boolean flag = redisCache.hasKey(CacheConstants.SYS_OPERATE_TYPE_NAME_KEY);
+        Map<Long, SysOperateTypeWholeNameBO> map;
+        if (flag){
+            operateTypeService.resetOperateTypeCache();
+        }
+        map  = redisCache.getCacheObject(CacheConstants.SYS_OPERATE_TYPE_NAME_KEY);
+        List<GetExaminerOperateTypesRespDTO> getExaminerOperateTypesRespDTOS = new ArrayList<>();
+        for (ExaminerManageOperateTypeBind examinerManageOperateTypeBind : list) {
+            GetExaminerOperateTypesRespDTO operateTypesRespDTO = new GetExaminerOperateTypesRespDTO();
+            BeanUtils.copyProperties(examinerManageOperateTypeBind,operateTypesRespDTO);
+            SysOperateTypeWholeNameBO sysOperateTypeWholeNameBO = map.get(examinerManageOperateTypeBind.getOperateTypeId());
+            if (sysOperateTypeWholeNameBO != null){
+                BeanUtils.copyProperties(sysOperateTypeWholeNameBO,operateTypesRespDTO);
+            }
+            getExaminerOperateTypesRespDTOS.add(operateTypesRespDTO);
+        }
+        dto.setOperateTypes(getExaminerOperateTypesRespDTOS);
+        return dto;
+    }
+
+
+    @Override
+    public List<GetExaminerRespDTO> selectAll(Integer isCm) {
+        LambdaQueryWrapper<ExaminerManage> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ExaminerManage::getDelFlag,DeleteStatusEnum.NO.getStatus())
+                .eq(ExaminerManage::getIsCm,isCm);
+        List<ExaminerManage> list = examinerManageService.list(wrapper);
+        if (CollectionUtils.isEmpty(list))
+            return new ArrayList<>();
+        List<GetExaminerRespDTO> dtos = new ArrayList<>();
+        for (ExaminerManage manage : list) {
+            GetExaminerRespDTO dto = getExaminerRespDTO(manage);
+            dtos.add(dto);
+        }
+        return dtos;
+    }
+
+    @Override
+    @Transactional
+    public AjaxResult saveTeacher(TeacherManageAddReqDTO reqDTO) {
+        TeacherManage teacherManage = teacherManageService.getTeacherByCode(reqDTO.getCode());
+        if (teacherManage != null)
+            throw new BusinessException(this.getClass(),ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"身份证已存在");
+        teacherManage = new TeacherManage();
+        BeanUtils.copyProperties(reqDTO,teacherManage);
+        teacherManage.setDelFlag(DeleteStatusEnum.NO.getStatus());
+        teacherManage.setStatus(EnableStatusEnum.YES.getStatus());
+        boolean save = teacherManageService.save(teacherManage);
+        if (!save)
+            throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"教师信息保存失败");
+        if (!CollectionUtils.isEmpty(reqDTO.getOperateTypes())){
+            ArrayList<TeacherManageOperateTypeBind> binds = new ArrayList<>();
+            for (TeacherManageAddOperateTypeReqDTO operateType : reqDTO.getOperateTypes()) {
+                TeacherManageOperateTypeBind teacherManageOperateTypeBind = new TeacherManageOperateTypeBind();
+                BeanUtils.copyProperties(operateType,teacherManageOperateTypeBind);
+                teacherManageOperateTypeBind.setDelFlag(DeleteStatusEnum.NO.getStatus());
+                teacherManageOperateTypeBind.setTeacherManageId(teacherManage.getId());
+                binds.add(teacherManageOperateTypeBind);
+            }
+            boolean saveBatch = teacherManageOperateTypeBindService.saveBatch(binds);
+            if (!saveBatch)
+                throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"教师工种数据保存失败");
+        }
+        return AjaxResult.success("新增成功");
+    }
+
+    @Override
+    @Transactional
+    public AjaxResult updateTeacherById(TeacherManageUpdateReqDTO reqDTO) {
+        TeacherManage teacherByCode = teacherManageService.getTeacherByCode(reqDTO.getCode());
+        if (teacherByCode != null && teacherByCode.getId() != reqDTO.getId())
+            throw new BusinessException(this.getClass(),ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"身份证已存在");
+        TeacherManage teacherManage = new TeacherManage();
+        BeanUtils.copyProperties(reqDTO,teacherManage,"id");
+        boolean save = teacherManageService.updateById(teacherManage);
+        if (!save)
+            throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"教师信息修改失败");
+        removeOldTeacherManageOperateTypeBind(reqDTO.getId());
+        if (!CollectionUtils.isEmpty(reqDTO.getOperateTypes())){
+            ArrayList<TeacherManageOperateTypeBind> binds = new ArrayList<>();
+            for (TeacherManageAddOperateTypeReqDTO operateType : reqDTO.getOperateTypes()) {
+                TeacherManageOperateTypeBind examinerManageOperateTypeBind = new TeacherManageOperateTypeBind();
+                BeanUtils.copyProperties(operateType,examinerManageOperateTypeBind);
+                examinerManageOperateTypeBind.setDelFlag(DeleteStatusEnum.NO.getStatus());
+                examinerManageOperateTypeBind.setTeacherManageId(teacherManage.getId());
+                binds.add(examinerManageOperateTypeBind);
+            }
+            boolean saveBatch = teacherManageOperateTypeBindService.saveBatch(binds);
+            if (!saveBatch)
+                throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"教师工种数据保存失败");
+        }
+        return AjaxResult.success("修改成功");
+    }
+
+    @Override
+    public AjaxResult removeTeacherById(Long id) {
+        TeacherManage manage = teacherManageService.getTeacherById(id);
+        if (manage == null)
+            return AjaxResult.success("删除成功");
+        manage.setDelFlag(DeleteStatusEnum.YES.getStatus());
+        boolean save = teacherManageService.updateById(manage);
+        if (!save)
+            throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"教师信息删除失败");
+        removeOldTeacherManageOperateTypeBind(id);
+        return AjaxResult.success("删除成功");
+    }
+
+    @Override
+    public AjaxResult getTeacherById(Long id) {
+        TeacherManage manage = teacherManageService.getTeacherById(id);
+        GetTeacherRespDTO dto = getTeacherRespDTO(manage);
+        return AjaxResult.success(dto);
+    }
+
+    private GetTeacherRespDTO getTeacherRespDTO(TeacherManage manage) {
+        GetTeacherRespDTO dto = new GetTeacherRespDTO();
+        if (manage == null)
+            return null;
+        BeanUtils.copyProperties(manage,dto);
+        dto.setQaAttachment(getAttachmentInfoById(manage.getQaAttachment()));
+        dto.setPhotoAttachment(getAttachmentInfoById(manage.getPhotoAttachment()));
+        LambdaQueryWrapper<TeacherManageOperateTypeBind> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(TeacherManageOperateTypeBind::getTeacherManageId,manage.getId())
+                .eq(TeacherManageOperateTypeBind::getDelFlag,DeleteStatusEnum.NO.getStatus());
+        List<TeacherManageOperateTypeBind> list = teacherManageOperateTypeBindService.list(wrapper);
+        if (CollectionUtils.isEmpty(list))
+            return dto;
+        Boolean flag = redisCache.hasKey(CacheConstants.SYS_OPERATE_TYPE_NAME_KEY);
+        Map<Long, SysOperateTypeWholeNameBO> map;
+        if (flag){
+            operateTypeService.resetOperateTypeCache();
+        }
+        map  = redisCache.getCacheObject(CacheConstants.SYS_OPERATE_TYPE_NAME_KEY);
+        List<GetTeacherOperateTypesRespDTO> getTeacherOperateTypesRespDTOS = new ArrayList<>();
+        for (TeacherManageOperateTypeBind examinerManageOperateTypeBind : list) {
+            GetTeacherOperateTypesRespDTO operateTypesRespDTO = new GetTeacherOperateTypesRespDTO();
+            BeanUtils.copyProperties(examinerManageOperateTypeBind,operateTypesRespDTO);
+            SysOperateTypeWholeNameBO sysOperateTypeWholeNameBO = map.get(examinerManageOperateTypeBind.getOperateTypeId());
+            if (sysOperateTypeWholeNameBO != null){
+                BeanUtils.copyProperties(sysOperateTypeWholeNameBO,operateTypesRespDTO);
+            }
+            getTeacherOperateTypesRespDTOS.add(operateTypesRespDTO);
+        }
+        dto.setOperateTypes(getTeacherOperateTypesRespDTOS);
+        return dto;
+    }
+
+    @Override
+    public List<GetTeacherRespDTO> selectTeacherAll(Integer isCm) {
+        LambdaQueryWrapper<TeacherManage> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(TeacherManage::getDelFlag,DeleteStatusEnum.NO.getStatus())
+                .eq(TeacherManage::getIsCm,isCm);
+        List<TeacherManage> list = teacherManageService.list(wrapper);
+        if (CollectionUtils.isEmpty(list))
+            return new ArrayList<>();
+        List<GetTeacherRespDTO> dtos = new ArrayList<>();
+        for (TeacherManage manage : list) {
+            GetTeacherRespDTO dto = getTeacherRespDTO(manage);
+            dtos.add(dto);
+        }
+        return dtos;
+
+    }
+
+    @Override
+    public AjaxResult updateStatus(TeacherManageUpdateStatusReqDTO reqDTO) {
+        TeacherManage manage = teacherManageService.getTeacherById(reqDTO.getId());
+        if (manage == null)
+            return AjaxResult.success("数据不存在");
+        manage.setStatus(reqDTO.getStatus());
+        boolean save = teacherManageService.updateById(manage);
+        if (!save)
+            throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"教师状态变更失败");
+        return AjaxResult.success("教师状态变更成功");
+    }
+
+    @Override
+    public AjaxResult updateExaminerStatus(ExaminerManageUpdateStatusReqDTO reqDTO) {
+        ExaminerManage manage = examinerManageService.getExaminerById(reqDTO.getId());
+        if (manage == null)
+            return AjaxResult.success("数据不存在");
+        manage.setStatus(reqDTO.getStatus());
+        boolean save = examinerManageService.updateById(manage);
+        if (!save)
+            throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"考评员状态变更失败");
+        return AjaxResult.success("教师状态变更成功");
+    }
+
+    @Override
+    public AjaxResult deleteExaminerBindOperateType(Long id) {
+        ExaminerManageOperateTypeBind manage = examinerManageOperateTypeBindService.getNoDeleteById(id);
+        if (manage == null)
+            return AjaxResult.success("数据不存在");
+        manage.setDelFlag(DeleteStatusEnum.YES.getStatus());
+        boolean save = examinerManageOperateTypeBindService.updateById(manage);
+        if (!save)
+            throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"考评员关联工种删除失败");
+        return AjaxResult.success("考评员关联工种删除失败");
+    }
+
+    @Override
+    public AjaxResult deleteTeacherBindOperateType(Long id) {
+        TeacherManageOperateTypeBind manage = teacherManageOperateTypeBindService.getNoDeleteById(id);
+        if (manage == null)
+            return AjaxResult.success("数据不存在");
+        manage.setDelFlag(DeleteStatusEnum.YES.getStatus());
+        boolean save = teacherManageOperateTypeBindService.updateById(manage);
+        if (!save)
+            throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR_DATABASE_FAIL,"教师关联工种删除失败");
+        return AjaxResult.success("教师关联工种删除失败");
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.2