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