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 implements IJeecgOrderMainService { @Autowired private JeecgOrderMainMapper jeecgOrderMainMapper; @Autowired private JeecgOrderCustomerMapper jeecgOrderCustomerMapper; @Autowired private JeecgOrderTicketMapper jeecgOrderTicketMapper; @Override @Transactional public void saveMain(JeecgOrderMain jeecgOrderMain, List jeecgOrderCustomerList, List 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 jeecgOrderCustomerList, List 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 jeecgOrderCustomerList, List 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 jeecgOrderTickets = jeecgOrderTicketMapper.selectTicketsByMainId(jeecgOrderMain.getId()); List 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 jeecgOrderCustomers = jeecgOrderCustomerMapper.selectCustomersByMainId(jeecgOrderMain.getId()); List 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 idList) { for(Serializable id:idList) { jeecgOrderMainMapper.deleteById(id); jeecgOrderTicketMapper.deleteTicketsByMainId(id.toString()); jeecgOrderCustomerMapper.deleteCustomersByMainId(id.toString()); } } }