package com.ruoyi.sales.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.mapper.CustomerMapper; import com.ruoyi.basic.pojo.Customer; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.sales.dto.SalesLedgerDto; import com.ruoyi.sales.mapper.SalesLedgerMapper; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; import com.ruoyi.sales.pojo.SalesLedger; import com.ruoyi.sales.pojo.SalesLedgerProduct; import com.ruoyi.sales.service.ISalesLedgerService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 销售台账Service业务层处理 * * @author ruoyi * @date 2025-05-08 */ @Service @AllArgsConstructor public class SalesLedgerServiceImpl extends ServiceImpl implements ISalesLedgerService { private SalesLedgerMapper salesLedgerMapper; private CustomerMapper customerMapper; private SalesLedgerProductMapper salesLedgerProductMapper; @Override public List selectSalesLedgerList(SalesLedger salesLedger) { return salesLedgerMapper.selectList(new LambdaQueryWrapper<>()); } public List getSalesLedgerWithProducts() { List ledgers = salesLedgerMapper.selectList(new LambdaQueryWrapper<>()); List products = salesLedgerProductMapper.selectList(new LambdaQueryWrapper<>()); Map> productMap = products.stream() .collect(Collectors.groupingBy(SalesLedgerProduct::getSalesLedgerId)); return ledgers.stream().map(ledger -> { SalesLedgerDto dto = new SalesLedgerDto(); org.springframework.beans.BeanUtils.copyProperties(ledger, dto); List ledgerProducts = productMap.getOrDefault(ledger.getId(), Collections.emptyList()); if (!ledgerProducts.isEmpty()) { dto.setHasChildren(true); dto.setChildren(ledgerProducts); } return dto; }).collect(Collectors.toList()); } @Override public SalesLedger selectSalesLedgerById(Long id) { return salesLedgerMapper.selectById(id); } @Override public int deleteSalesLedgerByIds(Long[] ids) { return salesLedgerMapper.deleteBatchIds(Arrays.asList(ids)); } public int addOrUpdateSalesLedger(SalesLedger salesLedger) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Customer::getId, salesLedger.getCustomerId()); Customer customer = customerMapper.selectOne(queryWrapper); if (customer == null) { throw new BaseException("未查询到对应的 Customer 信息"); } salesLedger.setCustomerName(customer.getCustomerName()); salesLedger.setTenantId(customer.getTenantId()); return saveOrUpdates(salesLedger); } private int saveOrUpdates(SalesLedger salesLedger) { if (salesLedger.getId() == null) { return salesLedgerMapper.insert(salesLedger); } else { return salesLedgerMapper.updateById(salesLedger); } } }