WfTextbookSubscriptionServiceImpl.java 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package com.xjrsoft.module.textbook.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  4. import com.github.yulichang.base.MPJBaseServiceImpl;
  5. import com.xjrsoft.common.model.result.RT;
  6. import com.xjrsoft.module.oa.entity.NewsRelation;
  7. import com.xjrsoft.module.textbook.dto.AddTextbookWarehouseRecordDto;
  8. import com.xjrsoft.module.textbook.dto.UpdateWfTextbookSubscriptionDto;
  9. import com.xjrsoft.module.textbook.entity.TextbookSubscriptionRecord;
  10. import com.xjrsoft.module.textbook.entity.WfTextbookSubscriptionItem;
  11. import com.xjrsoft.module.textbook.mapper.TextbookSubscriptionRecordMapper;
  12. import com.xjrsoft.module.textbook.mapper.WfTextbookSubscriptionItemMapper;
  13. import com.xjrsoft.module.textbook.entity.WfTextbookSubscription;
  14. import com.xjrsoft.module.textbook.mapper.WfTextbookSubscriptionMapper;
  15. import com.xjrsoft.module.textbook.service.ITextbookService;
  16. import com.xjrsoft.module.textbook.service.IWfTextbookSubscriptionService;
  17. import lombok.AllArgsConstructor;
  18. import org.springframework.stereotype.Service;
  19. import org.springframework.transaction.annotation.Transactional;
  20. import java.util.Date;
  21. import java.util.List;
  22. import java.util.Objects;
  23. import java.util.stream.Collectors;
  24. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  25. /**
  26. * @title: 教材教辅征订
  27. * @Author szs
  28. * @Date: 2024-06-04
  29. * @Version 1.0
  30. */
  31. @Service
  32. @AllArgsConstructor
  33. public class WfTextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<WfTextbookSubscriptionMapper, WfTextbookSubscription> implements IWfTextbookSubscriptionService {
  34. private final WfTextbookSubscriptionMapper wfTextbookSubscriptionWfTextbookSubscriptionMapper;
  35. private final WfTextbookSubscriptionItemMapper wfTextbookSubscriptionWfTextbookSubscriptionItemMapper;
  36. private final TextbookSubscriptionRecordMapper textbookTextbookSubscriptionRecordMapper;
  37. private final ITextbookService textbookService;
  38. @Override
  39. @Transactional(rollbackFor = Exception.class)
  40. public Boolean add(WfTextbookSubscription wfTextbookSubscription) {
  41. wfTextbookSubscription.setStatus(1);
  42. wfTextbookSubscription.setCreateDate(new Date());
  43. wfTextbookSubscriptionWfTextbookSubscriptionMapper.insert(wfTextbookSubscription);
  44. for (WfTextbookSubscriptionItem wfTextbookSubscriptionItem : wfTextbookSubscription.getWfTextbookSubscriptionItemList()) {
  45. wfTextbookSubscriptionItem.setWfTextbookSubscriptionId(wfTextbookSubscription.getId());
  46. wfTextbookSubscriptionItem.setCreateDate(new Date());
  47. wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.insert(wfTextbookSubscriptionItem);
  48. }
  49. return true;
  50. }
  51. @Override
  52. @Transactional(rollbackFor = Exception.class)
  53. public Boolean update(WfTextbookSubscription wfTextbookSubscription) {
  54. wfTextbookSubscriptionWfTextbookSubscriptionMapper.updateById(wfTextbookSubscription);
  55. //********************************* WfTextbookSubscriptionItem 增删改 开始 *******************************************/
  56. {
  57. // 查出所有子级的id
  58. List<WfTextbookSubscriptionItem> wfTextbookSubscriptionItemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectList(Wrappers.lambdaQuery(WfTextbookSubscriptionItem.class).eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, wfTextbookSubscription.getId()).select(WfTextbookSubscriptionItem::getId));
  59. List<Long> wfTextbookSubscriptionItemIds = wfTextbookSubscriptionItemList.stream().map(WfTextbookSubscriptionItem::getId).collect(Collectors.toList());
  60. //原有子表单 没有被删除的主键
  61. List<Long> wfTextbookSubscriptionItemOldIds = wfTextbookSubscription.getWfTextbookSubscriptionItemList().stream().map(WfTextbookSubscriptionItem::getId).filter(Objects::nonNull).collect(Collectors.toList());
  62. //找到需要删除的id
  63. List<Long> wfTextbookSubscriptionItemRemoveIds = wfTextbookSubscriptionItemIds.stream().filter(item -> !wfTextbookSubscriptionItemOldIds.contains(item)).collect(Collectors.toList());
  64. for (WfTextbookSubscriptionItem wfTextbookSubscriptionItem : wfTextbookSubscription.getWfTextbookSubscriptionItemList()) {
  65. //如果不等于空则修改
  66. if (wfTextbookSubscriptionItem.getId() != null) {
  67. wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.updateById(wfTextbookSubscriptionItem);
  68. }
  69. //如果等于空 则新增
  70. else {
  71. //已经不存在的id 删除
  72. wfTextbookSubscriptionItem.setWfTextbookSubscriptionId(wfTextbookSubscription.getId());
  73. wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.insert(wfTextbookSubscriptionItem);
  74. }
  75. }
  76. //已经不存在的id 删除
  77. if(wfTextbookSubscriptionItemRemoveIds.size() > 0){
  78. wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.deleteBatchIds(wfTextbookSubscriptionItemRemoveIds);
  79. }
  80. }
  81. //********************************* WfTextbookSubscriptionItem 增删改 结束 *******************************************/
  82. return true;
  83. }
  84. @Override
  85. @Transactional(rollbackFor = Exception.class)
  86. public Boolean delete(List<Long> ids) {
  87. wfTextbookSubscriptionWfTextbookSubscriptionMapper.deleteBatchIds(ids);
  88. wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.delete(Wrappers.lambdaQuery(WfTextbookSubscriptionItem.class).in(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, ids));
  89. return true;
  90. }
  91. @Override
  92. @Transactional(rollbackFor = Exception.class)
  93. public Boolean changeStatus(UpdateWfTextbookSubscriptionDto dto) {
  94. WfTextbookSubscription wfTextbookSubscription = this.getById(dto.getId());
  95. if(wfTextbookSubscription == null){
  96. return false;
  97. }
  98. //点击发起征订
  99. if(wfTextbookSubscription.getStatus() == 1 && dto.getStatus() == 2){
  100. WfTextbookSubscription newW = BeanUtil.toBean(dto, WfTextbookSubscription.class);
  101. return this.updateById(newW);
  102. }
  103. //点击完成征订
  104. if(wfTextbookSubscription.getStatus() == 2 && dto.getStatus() == 3){
  105. //添加征订记录
  106. List<WfTextbookSubscriptionItem> wfTextbookSubscriptionItemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectList(Wrappers.<WfTextbookSubscriptionItem>query().lambda().eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, wfTextbookSubscription.getId()));
  107. for (WfTextbookSubscriptionItem w : wfTextbookSubscriptionItemList){
  108. textbookTextbookSubscriptionRecordMapper.insert(new TextbookSubscriptionRecord() {{
  109. setCreateDate(new Date());
  110. setTextbookId(w.getTextbookId());
  111. setWfTextbookSubscriptionId(wfTextbookSubscription.getId());
  112. setWfTextbookSubscriptionItemId(w.getId());//该字段存入征订项的id,征订项中有所属征订记录
  113. }});
  114. }
  115. WfTextbookSubscription newW = BeanUtil.toBean(dto, WfTextbookSubscription.class);
  116. return this.updateById(newW);
  117. }
  118. //点击确认入库
  119. if(wfTextbookSubscription.getStatus() == 3 && dto.getStatus() == 4){
  120. List<WfTextbookSubscriptionItem> wfTextbookSubscriptionItemList = wfTextbookSubscriptionWfTextbookSubscriptionItemMapper.selectList(Wrappers.<WfTextbookSubscriptionItem>query().lambda().eq(WfTextbookSubscriptionItem::getWfTextbookSubscriptionId, wfTextbookSubscription.getId()));
  121. for (WfTextbookSubscriptionItem w : wfTextbookSubscriptionItemList){
  122. textbookService.deliverWarehouse(new AddTextbookWarehouseRecordDto(){{
  123. setTextbookId(w.getTextbookId());
  124. setWarehouseNumber((w.getStudentSubscriptionNumber() != null ? w.getStudentSubscriptionNumber() : 0) + (w.getStudentSubscriptionNumber() != null ? w.getTeacherSubscriptionNumber() : 0));
  125. setSource("wm_manual");
  126. }});
  127. }
  128. WfTextbookSubscription newW = BeanUtil.toBean(dto, WfTextbookSubscription.class);
  129. return this.updateById(newW);
  130. }
  131. return false;
  132. }
  133. }