|
@@ -0,0 +1,133 @@
|
|
|
+package com.xjrsoft.module.textbook.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
+import com.xjrsoft.module.textbook.dto.TextbookPageDto;
|
|
|
+import com.xjrsoft.module.textbook.entity.Textbook;
|
|
|
+import com.xjrsoft.module.textbook.entity.TextbookClassRelation;
|
|
|
+import com.xjrsoft.module.textbook.entity.TextbookSubscriptionRecord;
|
|
|
+import com.xjrsoft.module.textbook.mapper.TextbookClassRelationMapper;
|
|
|
+import com.xjrsoft.module.textbook.mapper.TextbookMapper;
|
|
|
+import com.xjrsoft.module.textbook.mapper.TextbookSubscriptionRecordMapper;
|
|
|
+import com.xjrsoft.module.textbook.service.ITextbookService;
|
|
|
+import com.xjrsoft.module.textbook.vo.TextbookPageVo;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+* @title: 教材管理
|
|
|
+* @Author szs
|
|
|
+* @Date: 2023-12-25
|
|
|
+* @Version 1.0
|
|
|
+*/
|
|
|
+@Service
|
|
|
+@AllArgsConstructor
|
|
|
+public class TextbookServiceImpl extends MPJBaseServiceImpl<TextbookMapper, Textbook> implements ITextbookService {
|
|
|
+ private final TextbookMapper textbookTextbookMapper;
|
|
|
+
|
|
|
+ private final TextbookClassRelationMapper textbookTextbookClassRelationMapper;
|
|
|
+ private final TextbookSubscriptionRecordMapper textbookTextbookSubscriptionRecordMapper;
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean add(Textbook textbook) {
|
|
|
+ textbookTextbookMapper.insert(textbook);
|
|
|
+ for (TextbookClassRelation textbookClassRelation : textbook.getTextbookClassRelationList()) {
|
|
|
+ textbookClassRelation.setTextbookId(textbook.getId());
|
|
|
+ textbookTextbookClassRelationMapper.insert(textbookClassRelation);
|
|
|
+ }
|
|
|
+ for (TextbookSubscriptionRecord textbookSubscriptionRecord : textbook.getTextbookSubscriptionRecordList()) {
|
|
|
+ textbookSubscriptionRecord.setWfTextbookSubscriptionId(textbook.getId());
|
|
|
+ textbookTextbookSubscriptionRecordMapper.insert(textbookSubscriptionRecord);
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean update(Textbook textbook) {
|
|
|
+ textbookTextbookMapper.updateById(textbook);
|
|
|
+ //********************************* TextbookClassRelation 增删改 开始 *******************************************/
|
|
|
+ {
|
|
|
+ // 查出所有子级的id
|
|
|
+ List<TextbookClassRelation> textbookClassRelationList = textbookTextbookClassRelationMapper.selectList(Wrappers.lambdaQuery(TextbookClassRelation.class).eq(TextbookClassRelation::getTextbookId, textbook.getId()).select(TextbookClassRelation::getId));
|
|
|
+ List<Long> textbookClassRelationIds = textbookClassRelationList.stream().map(TextbookClassRelation::getId).collect(Collectors.toList());
|
|
|
+ //原有子表单 没有被删除的主键
|
|
|
+ List<Long> textbookClassRelationOldIds = textbook.getTextbookClassRelationList().stream().map(TextbookClassRelation::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ //找到需要删除的id
|
|
|
+ List<Long> textbookClassRelationRemoveIds = textbookClassRelationIds.stream().filter(item -> !textbookClassRelationOldIds.contains(item)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ for (TextbookClassRelation textbookClassRelation : textbook.getTextbookClassRelationList()) {
|
|
|
+ //如果不等于空则修改
|
|
|
+ if (textbookClassRelation.getId() != null) {
|
|
|
+ textbookTextbookClassRelationMapper.updateById(textbookClassRelation);
|
|
|
+ }
|
|
|
+ //如果等于空 则新增
|
|
|
+ else {
|
|
|
+ //已经不存在的id 删除
|
|
|
+ textbookClassRelation.setTextbookId(textbook.getId());
|
|
|
+ textbookTextbookClassRelationMapper.insert(textbookClassRelation);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //已经不存在的id 删除
|
|
|
+ if(textbookClassRelationRemoveIds.size() > 0){
|
|
|
+ textbookTextbookClassRelationMapper.deleteBatchIds(textbookClassRelationRemoveIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //********************************* TextbookClassRelation 增删改 结束 *******************************************/
|
|
|
+
|
|
|
+ //********************************* TextbookSubscriptionRecord 增删改 开始 *******************************************/
|
|
|
+ {
|
|
|
+ // 查出所有子级的id
|
|
|
+ List<TextbookSubscriptionRecord> textbookSubscriptionRecordList = textbookTextbookSubscriptionRecordMapper.selectList(Wrappers.lambdaQuery(TextbookSubscriptionRecord.class).eq(TextbookSubscriptionRecord::getWfTextbookSubscriptionId, textbook.getId()).select(TextbookSubscriptionRecord::getId));
|
|
|
+ List<Long> textbookSubscriptionRecordIds = textbookSubscriptionRecordList.stream().map(TextbookSubscriptionRecord::getId).collect(Collectors.toList());
|
|
|
+ //原有子表单 没有被删除的主键
|
|
|
+ List<Long> textbookSubscriptionRecordOldIds = textbook.getTextbookSubscriptionRecordList().stream().map(TextbookSubscriptionRecord::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ //找到需要删除的id
|
|
|
+ List<Long> textbookSubscriptionRecordRemoveIds = textbookSubscriptionRecordIds.stream().filter(item -> !textbookSubscriptionRecordOldIds.contains(item)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ for (TextbookSubscriptionRecord textbookSubscriptionRecord : textbook.getTextbookSubscriptionRecordList()) {
|
|
|
+ //如果不等于空则修改
|
|
|
+ if (textbookSubscriptionRecord.getId() != null) {
|
|
|
+ textbookTextbookSubscriptionRecordMapper.updateById(textbookSubscriptionRecord);
|
|
|
+ }
|
|
|
+ //如果等于空 则新增
|
|
|
+ else {
|
|
|
+ //已经不存在的id 删除
|
|
|
+ textbookSubscriptionRecord.setWfTextbookSubscriptionId(textbook.getId());
|
|
|
+ textbookTextbookSubscriptionRecordMapper.insert(textbookSubscriptionRecord);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //已经不存在的id 删除
|
|
|
+ if(textbookSubscriptionRecordRemoveIds.size() > 0){
|
|
|
+ textbookTextbookSubscriptionRecordMapper.deleteBatchIds(textbookSubscriptionRecordRemoveIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //********************************* TextbookSubscriptionRecord 增删改 结束 *******************************************/
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean delete(List<Long> ids) {
|
|
|
+ textbookTextbookMapper.deleteBatchIds(ids);
|
|
|
+ textbookTextbookClassRelationMapper.delete(Wrappers.lambdaQuery(TextbookClassRelation.class).in(TextbookClassRelation::getTextbookId, ids));
|
|
|
+ textbookTextbookSubscriptionRecordMapper.delete(Wrappers.lambdaQuery(TextbookSubscriptionRecord.class).in(TextbookSubscriptionRecord::getWfTextbookSubscriptionId, ids));
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<TextbookPageVo> getPage(Page<TextbookPageDto> page, TextbookPageDto dto) {
|
|
|
+ return textbookTextbookMapper.getPage(page, dto);
|
|
|
+ }
|
|
|
+}
|