123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- package org.jeecg.modules.demo.test.service.impl;
- import java.io.Serializable;
- import java.util.Collection;
- import java.util.List;
- import java.util.stream.Collectors;
- import org.jeecg.modules.demo.test.entity.JeecgOrderCustomer;
- import org.jeecg.modules.demo.test.entity.JeecgOrderMain;
- import org.jeecg.modules.demo.test.entity.JeecgOrderTicket;
- import org.jeecg.modules.demo.test.mapper.JeecgOrderCustomerMapper;
- import org.jeecg.modules.demo.test.mapper.JeecgOrderMainMapper;
- import org.jeecg.modules.demo.test.mapper.JeecgOrderTicketMapper;
- import org.jeecg.modules.demo.test.service.IJeecgOrderMainService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- /**
- * @Description: 订单
- * @Author: jeecg-boot
- * @Date: 2019-02-15
- * @Version: V1.0
- */
- @Service
- public class JeecgOrderMainServiceImpl extends ServiceImpl<JeecgOrderMainMapper, JeecgOrderMain> implements IJeecgOrderMainService {
- @Autowired
- private JeecgOrderMainMapper jeecgOrderMainMapper;
- @Autowired
- private JeecgOrderCustomerMapper jeecgOrderCustomerMapper;
- @Autowired
- private JeecgOrderTicketMapper jeecgOrderTicketMapper;
- @Override
- @Transactional
- public void saveMain(JeecgOrderMain jeecgOrderMain, List<JeecgOrderCustomer> jeecgOrderCustomerList, List<JeecgOrderTicket> jeecgOrderTicketList) {
- jeecgOrderMainMapper.insert(jeecgOrderMain);
- if (jeecgOrderCustomerList != null) {
- for (JeecgOrderCustomer entity : jeecgOrderCustomerList) {
- entity.setOrderId(jeecgOrderMain.getId());
- jeecgOrderCustomerMapper.insert(entity);
- }
- }
- if (jeecgOrderTicketList != null) {
- for (JeecgOrderTicket entity : jeecgOrderTicketList) {
- entity.setOrderId(jeecgOrderMain.getId());
- jeecgOrderTicketMapper.insert(entity);
- }
- }
- }
- @Override
- @Transactional
- public void updateMain(JeecgOrderMain jeecgOrderMain, List<JeecgOrderCustomer> jeecgOrderCustomerList, List<JeecgOrderTicket> jeecgOrderTicketList) {
- jeecgOrderMainMapper.updateById(jeecgOrderMain);
- //1.先删除子表数据
- jeecgOrderTicketMapper.deleteTicketsByMainId(jeecgOrderMain.getId());
- jeecgOrderCustomerMapper.deleteCustomersByMainId(jeecgOrderMain.getId());
- //2.子表数据重新插入
- if (jeecgOrderCustomerList != null) {
- for (JeecgOrderCustomer entity : jeecgOrderCustomerList) {
- entity.setOrderId(jeecgOrderMain.getId());
- jeecgOrderCustomerMapper.insert(entity);
- }
- }
- if (jeecgOrderTicketList != null) {
- for (JeecgOrderTicket entity : jeecgOrderTicketList) {
- entity.setOrderId(jeecgOrderMain.getId());
- jeecgOrderTicketMapper.insert(entity);
- }
- }
- }
- /**
- * 一对多维护逻辑改造 LOWCOD-315
- * @param jeecgOrderMain
- * @param jeecgOrderCustomerList
- * @param jeecgOrderTicketList
- */
- @Override
- @Transactional
- public void updateCopyMain(JeecgOrderMain jeecgOrderMain, List<JeecgOrderCustomer> jeecgOrderCustomerList, List<JeecgOrderTicket> jeecgOrderTicketList) {
- jeecgOrderMainMapper.updateById(jeecgOrderMain);
- // 循环前台传过来的数据
- for (JeecgOrderTicket ticket:jeecgOrderTicketList){
- // 先查询子表数据库
- JeecgOrderTicket orderTicket = jeecgOrderTicketMapper.selectById(ticket.getId());
- if(orderTicket == null){
- // 当传过来的id数据库不存在时,说明数据库没有,走新增逻辑
- ticket.setOrderId(jeecgOrderMain.getId());
- jeecgOrderTicketMapper.insert(ticket);
- break;
- }
- if(orderTicket.getId().equals(ticket.getId())){
- // 传过来的id和数据库id一至时,说明数据库存在该数据,走更新逻辑
- jeecgOrderTicketMapper.updateById(ticket);
- }
- }
- for (JeecgOrderCustomer customer:jeecgOrderCustomerList){
- // 先查询子表数据库
- JeecgOrderCustomer customers = jeecgOrderCustomerMapper.selectById(customer.getId());
- if(customers == null){
- // 当传过来的id数据库不存在时,说明数据库没有,走新增逻辑
- customer.setOrderId(jeecgOrderMain.getId());
- jeecgOrderCustomerMapper.insert(customer);
- break;
- }
- if(customers.getId().equals(customer.getId())){
- //TODO 传过来的id和数据库id一至时,说明数据库存在该数据,走更新逻辑
- jeecgOrderCustomerMapper.updateById(customer);
- }
- }
- // 当跟新和删除之后取差集, 当传过来的id不存在,而数据库存在时,说明已删除,走删除逻辑
- List<JeecgOrderTicket> jeecgOrderTickets = jeecgOrderTicketMapper.selectTicketsByMainId(jeecgOrderMain.getId());
- List<JeecgOrderTicket> collect = jeecgOrderTickets.stream()
- .filter(item -> !jeecgOrderTicketList.stream()
- .map(e -> e.getId())
- .collect(Collectors.toList())
- .contains(item.getId()))
- .collect(Collectors.toList());
- // for循环删除id
- for (JeecgOrderTicket ticket:collect){
- jeecgOrderTicketMapper.deleteById(ticket.getId());
- }
- List<JeecgOrderCustomer> jeecgOrderCustomers = jeecgOrderCustomerMapper.selectCustomersByMainId(jeecgOrderMain.getId());
- List<JeecgOrderCustomer> customersCollect = jeecgOrderCustomers.stream()
- .filter(item -> !jeecgOrderCustomerList.stream()
- .map(e -> e.getId())
- .collect(Collectors.toList())
- .contains(item.getId()))
- .collect(Collectors.toList());
- //TODO for循环删除id
- for (JeecgOrderCustomer c:customersCollect){
- jeecgOrderCustomerMapper.deleteById(c.getId());
- }
- }
- @Override
- @Transactional
- public void delMain(String id) {
- jeecgOrderMainMapper.deleteById(id);
- jeecgOrderTicketMapper.deleteTicketsByMainId(id);
- jeecgOrderCustomerMapper.deleteCustomersByMainId(id);
- }
- @Override
- @Transactional
- public void delBatchMain(Collection<? extends Serializable> idList) {
- for(Serializable id:idList) {
- jeecgOrderMainMapper.deleteById(id);
- jeecgOrderTicketMapper.deleteTicketsByMainId(id.toString());
- jeecgOrderCustomerMapper.deleteCustomersByMainId(id.toString());
- }
- }
- }
|