f3c0997f8434f67209bdba560d55d461be0a30bc.svn-base 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. package org.jeecg.modules.demo.test.service.impl;
  2. import java.io.Serializable;
  3. import java.util.Collection;
  4. import java.util.List;
  5. import java.util.stream.Collectors;
  6. import org.jeecg.modules.demo.test.entity.JeecgOrderCustomer;
  7. import org.jeecg.modules.demo.test.entity.JeecgOrderMain;
  8. import org.jeecg.modules.demo.test.entity.JeecgOrderTicket;
  9. import org.jeecg.modules.demo.test.mapper.JeecgOrderCustomerMapper;
  10. import org.jeecg.modules.demo.test.mapper.JeecgOrderMainMapper;
  11. import org.jeecg.modules.demo.test.mapper.JeecgOrderTicketMapper;
  12. import org.jeecg.modules.demo.test.service.IJeecgOrderMainService;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.transaction.annotation.Transactional;
  16. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  17. /**
  18. * @Description: 订单
  19. * @Author: jeecg-boot
  20. * @Date: 2019-02-15
  21. * @Version: V1.0
  22. */
  23. @Service
  24. public class JeecgOrderMainServiceImpl extends ServiceImpl<JeecgOrderMainMapper, JeecgOrderMain> implements IJeecgOrderMainService {
  25. @Autowired
  26. private JeecgOrderMainMapper jeecgOrderMainMapper;
  27. @Autowired
  28. private JeecgOrderCustomerMapper jeecgOrderCustomerMapper;
  29. @Autowired
  30. private JeecgOrderTicketMapper jeecgOrderTicketMapper;
  31. @Override
  32. @Transactional
  33. public void saveMain(JeecgOrderMain jeecgOrderMain, List<JeecgOrderCustomer> jeecgOrderCustomerList, List<JeecgOrderTicket> jeecgOrderTicketList) {
  34. jeecgOrderMainMapper.insert(jeecgOrderMain);
  35. if (jeecgOrderCustomerList != null) {
  36. for (JeecgOrderCustomer entity : jeecgOrderCustomerList) {
  37. entity.setOrderId(jeecgOrderMain.getId());
  38. jeecgOrderCustomerMapper.insert(entity);
  39. }
  40. }
  41. if (jeecgOrderTicketList != null) {
  42. for (JeecgOrderTicket entity : jeecgOrderTicketList) {
  43. entity.setOrderId(jeecgOrderMain.getId());
  44. jeecgOrderTicketMapper.insert(entity);
  45. }
  46. }
  47. }
  48. @Override
  49. @Transactional
  50. public void updateMain(JeecgOrderMain jeecgOrderMain, List<JeecgOrderCustomer> jeecgOrderCustomerList, List<JeecgOrderTicket> jeecgOrderTicketList) {
  51. jeecgOrderMainMapper.updateById(jeecgOrderMain);
  52. //1.先删除子表数据
  53. jeecgOrderTicketMapper.deleteTicketsByMainId(jeecgOrderMain.getId());
  54. jeecgOrderCustomerMapper.deleteCustomersByMainId(jeecgOrderMain.getId());
  55. //2.子表数据重新插入
  56. if (jeecgOrderCustomerList != null) {
  57. for (JeecgOrderCustomer entity : jeecgOrderCustomerList) {
  58. entity.setOrderId(jeecgOrderMain.getId());
  59. jeecgOrderCustomerMapper.insert(entity);
  60. }
  61. }
  62. if (jeecgOrderTicketList != null) {
  63. for (JeecgOrderTicket entity : jeecgOrderTicketList) {
  64. entity.setOrderId(jeecgOrderMain.getId());
  65. jeecgOrderTicketMapper.insert(entity);
  66. }
  67. }
  68. }
  69. /**
  70. * 一对多维护逻辑改造 LOWCOD-315
  71. * @param jeecgOrderMain
  72. * @param jeecgOrderCustomerList
  73. * @param jeecgOrderTicketList
  74. */
  75. @Override
  76. @Transactional
  77. public void updateCopyMain(JeecgOrderMain jeecgOrderMain, List<JeecgOrderCustomer> jeecgOrderCustomerList, List<JeecgOrderTicket> jeecgOrderTicketList) {
  78. jeecgOrderMainMapper.updateById(jeecgOrderMain);
  79. // 循环前台传过来的数据
  80. for (JeecgOrderTicket ticket:jeecgOrderTicketList){
  81. // 先查询子表数据库
  82. JeecgOrderTicket orderTicket = jeecgOrderTicketMapper.selectById(ticket.getId());
  83. if(orderTicket == null){
  84. // 当传过来的id数据库不存在时,说明数据库没有,走新增逻辑
  85. ticket.setOrderId(jeecgOrderMain.getId());
  86. jeecgOrderTicketMapper.insert(ticket);
  87. break;
  88. }
  89. if(orderTicket.getId().equals(ticket.getId())){
  90. // 传过来的id和数据库id一至时,说明数据库存在该数据,走更新逻辑
  91. jeecgOrderTicketMapper.updateById(ticket);
  92. }
  93. }
  94. for (JeecgOrderCustomer customer:jeecgOrderCustomerList){
  95. // 先查询子表数据库
  96. JeecgOrderCustomer customers = jeecgOrderCustomerMapper.selectById(customer.getId());
  97. if(customers == null){
  98. // 当传过来的id数据库不存在时,说明数据库没有,走新增逻辑
  99. customer.setOrderId(jeecgOrderMain.getId());
  100. jeecgOrderCustomerMapper.insert(customer);
  101. break;
  102. }
  103. if(customers.getId().equals(customer.getId())){
  104. //TODO 传过来的id和数据库id一至时,说明数据库存在该数据,走更新逻辑
  105. jeecgOrderCustomerMapper.updateById(customer);
  106. }
  107. }
  108. // 当跟新和删除之后取差集, 当传过来的id不存在,而数据库存在时,说明已删除,走删除逻辑
  109. List<JeecgOrderTicket> jeecgOrderTickets = jeecgOrderTicketMapper.selectTicketsByMainId(jeecgOrderMain.getId());
  110. List<JeecgOrderTicket> collect = jeecgOrderTickets.stream()
  111. .filter(item -> !jeecgOrderTicketList.stream()
  112. .map(e -> e.getId())
  113. .collect(Collectors.toList())
  114. .contains(item.getId()))
  115. .collect(Collectors.toList());
  116. // for循环删除id
  117. for (JeecgOrderTicket ticket:collect){
  118. jeecgOrderTicketMapper.deleteById(ticket.getId());
  119. }
  120. List<JeecgOrderCustomer> jeecgOrderCustomers = jeecgOrderCustomerMapper.selectCustomersByMainId(jeecgOrderMain.getId());
  121. List<JeecgOrderCustomer> customersCollect = jeecgOrderCustomers.stream()
  122. .filter(item -> !jeecgOrderCustomerList.stream()
  123. .map(e -> e.getId())
  124. .collect(Collectors.toList())
  125. .contains(item.getId()))
  126. .collect(Collectors.toList());
  127. //TODO for循环删除id
  128. for (JeecgOrderCustomer c:customersCollect){
  129. jeecgOrderCustomerMapper.deleteById(c.getId());
  130. }
  131. }
  132. @Override
  133. @Transactional
  134. public void delMain(String id) {
  135. jeecgOrderMainMapper.deleteById(id);
  136. jeecgOrderTicketMapper.deleteTicketsByMainId(id);
  137. jeecgOrderCustomerMapper.deleteCustomersByMainId(id);
  138. }
  139. @Override
  140. @Transactional
  141. public void delBatchMain(Collection<? extends Serializable> idList) {
  142. for(Serializable id:idList) {
  143. jeecgOrderMainMapper.deleteById(id);
  144. jeecgOrderTicketMapper.deleteTicketsByMainId(id.toString());
  145. jeecgOrderCustomerMapper.deleteCustomersByMainId(id.toString());
  146. }
  147. }
  148. }