TextbookServiceImpl.java 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package com.xjrsoft.module.textbook.service.impl;
  2. import cn.hutool.core.util.StrUtil;
  3. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.github.yulichang.base.MPJBaseServiceImpl;
  6. import com.xjrsoft.module.textbook.dto.TextbookPageDto;
  7. import com.xjrsoft.module.textbook.entity.Textbook;
  8. import com.xjrsoft.module.textbook.entity.TextbookClassRelation;
  9. import com.xjrsoft.module.textbook.entity.TextbookSubscriptionRecord;
  10. import com.xjrsoft.module.textbook.mapper.TextbookClassRelationMapper;
  11. import com.xjrsoft.module.textbook.mapper.TextbookMapper;
  12. import com.xjrsoft.module.textbook.mapper.TextbookSubscriptionRecordMapper;
  13. import com.xjrsoft.module.textbook.service.ITextbookService;
  14. import com.xjrsoft.module.textbook.vo.TextbookPageVo;
  15. import com.xjrsoft.module.textbook.vo.TextbookSubscriptionClassVo;
  16. import com.xjrsoft.module.textbook.vo.TextbookSubscriptionRecordVo;
  17. import lombok.AllArgsConstructor;
  18. import org.springframework.stereotype.Service;
  19. import org.springframework.transaction.annotation.Transactional;
  20. import java.util.ArrayList;
  21. import java.util.List;
  22. import java.util.Objects;
  23. import java.util.stream.Collectors;
  24. /**
  25. * @title: 教材管理
  26. * @Author szs
  27. * @Date: 2023-12-25
  28. * @Version 1.0
  29. */
  30. @Service
  31. @AllArgsConstructor
  32. public class TextbookServiceImpl extends MPJBaseServiceImpl<TextbookMapper, Textbook> implements ITextbookService {
  33. private final TextbookMapper textbookTextbookMapper;
  34. private final TextbookClassRelationMapper textbookTextbookClassRelationMapper;
  35. private final TextbookSubscriptionRecordMapper textbookTextbookSubscriptionRecordMapper;
  36. @Override
  37. @Transactional(rollbackFor = Exception.class)
  38. public Boolean add(Textbook textbook) {
  39. textbookTextbookMapper.insert(textbook);
  40. for (TextbookClassRelation textbookClassRelation : textbook.getTextbookClassRelationList()) {
  41. textbookClassRelation.setTextbookId(textbook.getId());
  42. textbookTextbookClassRelationMapper.insert(textbookClassRelation);
  43. }
  44. for (TextbookSubscriptionRecord textbookSubscriptionRecord : textbook.getTextbookSubscriptionRecordList()) {
  45. textbookSubscriptionRecord.setWfTextbookSubscriptionId(textbook.getId());
  46. textbookTextbookSubscriptionRecordMapper.insert(textbookSubscriptionRecord);
  47. }
  48. return true;
  49. }
  50. @Override
  51. @Transactional(rollbackFor = Exception.class)
  52. public Boolean update(Textbook textbook) {
  53. textbookTextbookMapper.updateById(textbook);
  54. //********************************* TextbookClassRelation 增删改 开始 *******************************************/
  55. {
  56. // 查出所有子级的id
  57. List<TextbookClassRelation> textbookClassRelationList = textbookTextbookClassRelationMapper.selectList(Wrappers.lambdaQuery(TextbookClassRelation.class).eq(TextbookClassRelation::getTextbookId, textbook.getId()).select(TextbookClassRelation::getId));
  58. List<Long> textbookClassRelationIds = textbookClassRelationList.stream().map(TextbookClassRelation::getId).collect(Collectors.toList());
  59. //原有子表单 没有被删除的主键
  60. List<Long> textbookClassRelationOldIds = textbook.getTextbookClassRelationList().stream().map(TextbookClassRelation::getId).filter(Objects::nonNull).collect(Collectors.toList());
  61. //找到需要删除的id
  62. List<Long> textbookClassRelationRemoveIds = textbookClassRelationIds.stream().filter(item -> !textbookClassRelationOldIds.contains(item)).collect(Collectors.toList());
  63. for (TextbookClassRelation textbookClassRelation : textbook.getTextbookClassRelationList()) {
  64. //如果不等于空则修改
  65. if (textbookClassRelation.getId() != null) {
  66. textbookTextbookClassRelationMapper.updateById(textbookClassRelation);
  67. }
  68. //如果等于空 则新增
  69. else {
  70. //已经不存在的id 删除
  71. textbookClassRelation.setTextbookId(textbook.getId());
  72. textbookTextbookClassRelationMapper.insert(textbookClassRelation);
  73. }
  74. }
  75. //已经不存在的id 删除
  76. if(textbookClassRelationRemoveIds.size() > 0){
  77. textbookTextbookClassRelationMapper.deleteBatchIds(textbookClassRelationRemoveIds);
  78. }
  79. }
  80. //********************************* TextbookClassRelation 增删改 结束 *******************************************/
  81. //********************************* TextbookSubscriptionRecord 增删改 开始 *******************************************/
  82. {
  83. // 查出所有子级的id
  84. List<TextbookSubscriptionRecord> textbookSubscriptionRecordList = textbookTextbookSubscriptionRecordMapper.selectList(Wrappers.lambdaQuery(TextbookSubscriptionRecord.class).eq(TextbookSubscriptionRecord::getWfTextbookSubscriptionId, textbook.getId()).select(TextbookSubscriptionRecord::getId));
  85. List<Long> textbookSubscriptionRecordIds = textbookSubscriptionRecordList.stream().map(TextbookSubscriptionRecord::getId).collect(Collectors.toList());
  86. //原有子表单 没有被删除的主键
  87. List<Long> textbookSubscriptionRecordOldIds = textbook.getTextbookSubscriptionRecordList().stream().map(TextbookSubscriptionRecord::getId).filter(Objects::nonNull).collect(Collectors.toList());
  88. //找到需要删除的id
  89. List<Long> textbookSubscriptionRecordRemoveIds = textbookSubscriptionRecordIds.stream().filter(item -> !textbookSubscriptionRecordOldIds.contains(item)).collect(Collectors.toList());
  90. for (TextbookSubscriptionRecord textbookSubscriptionRecord : textbook.getTextbookSubscriptionRecordList()) {
  91. //如果不等于空则修改
  92. if (textbookSubscriptionRecord.getId() != null) {
  93. textbookTextbookSubscriptionRecordMapper.updateById(textbookSubscriptionRecord);
  94. }
  95. //如果等于空 则新增
  96. else {
  97. //已经不存在的id 删除
  98. textbookSubscriptionRecord.setWfTextbookSubscriptionId(textbook.getId());
  99. textbookTextbookSubscriptionRecordMapper.insert(textbookSubscriptionRecord);
  100. }
  101. }
  102. //已经不存在的id 删除
  103. if(textbookSubscriptionRecordRemoveIds.size() > 0){
  104. textbookTextbookSubscriptionRecordMapper.deleteBatchIds(textbookSubscriptionRecordRemoveIds);
  105. }
  106. }
  107. //********************************* TextbookSubscriptionRecord 增删改 结束 *******************************************/
  108. return true;
  109. }
  110. @Override
  111. @Transactional(rollbackFor = Exception.class)
  112. public Boolean delete(List<Long> ids) {
  113. textbookTextbookMapper.deleteBatchIds(ids);
  114. textbookTextbookClassRelationMapper.delete(Wrappers.lambdaQuery(TextbookClassRelation.class).in(TextbookClassRelation::getTextbookId, ids));
  115. textbookTextbookSubscriptionRecordMapper.delete(Wrappers.lambdaQuery(TextbookSubscriptionRecord.class).in(TextbookSubscriptionRecord::getWfTextbookSubscriptionId, ids));
  116. return true;
  117. }
  118. @Override
  119. public Page<TextbookPageVo> getPage(Page<TextbookPageDto> page, TextbookPageDto dto) {
  120. return textbookTextbookMapper.getPage(page, dto);
  121. }
  122. @Override
  123. public List<TextbookSubscriptionRecordVo> subscriptionList(Long id) {
  124. List<TextbookSubscriptionRecordVo> recordVos = textbookTextbookMapper.subscriptionList(id);
  125. for (TextbookSubscriptionRecordVo recordVo : recordVos) {
  126. if(StrUtil.isEmpty(recordVo.getClassIds())){
  127. continue;
  128. }
  129. String[] split = recordVo.getClassIds().split(",");
  130. List<String> ids = new ArrayList<>();
  131. for (String classId : split) {
  132. ids.add(classId.trim());
  133. }
  134. List<TextbookSubscriptionClassVo> classInfo = textbookTextbookMapper.getClassInfo(ids);
  135. String useClass = "";
  136. for (int i = 0; i < classInfo.size(); i ++){
  137. if(i >= 1){
  138. useClass += ",";
  139. }
  140. TextbookSubscriptionClassVo classVo = classInfo.get(i);
  141. useClass += classVo.getName();
  142. }
  143. recordVo.setUseClass(useClass);
  144. }
  145. return recordVos;
  146. }
  147. }