gongchunyi
2026-06-28 86379aae223a16fed59d46f915ade96ef987b8d2
src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceServiceImpl.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.aftersalesservice.dto.AfterSalesProductDto;
import com.ruoyi.aftersalesservice.dto.AfterSalesServiceNewDto;
import com.ruoyi.aftersalesservice.dto.CountDto;
import com.ruoyi.aftersalesservice.mapper.AfterSalesServiceMapper;
@@ -28,9 +29,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -61,8 +60,54 @@
        Long tenantId = SecurityUtils.getLoginUser().getTenantId();
        SysDept sysDept = sysDeptMapper.selectDeptById(tenantId);
        IPage<AfterSalesServiceNewDto> afterSalesServiceIPage = afterSalesServiceMapper.listPage(page, afterSalesService);
        List<Long> allSalesLedgerIds = afterSalesServiceIPage.getRecords().stream()
                .map(AfterSalesServiceNewDto::getSalesLedgerId)
                .filter(Objects::nonNull)
                .distinct()
                .collect(Collectors.toList());
        Map<Long, List<SalesLedgerProduct>> salesLedgerProductsMap;
        if (!allSalesLedgerIds.isEmpty()) {
            List<SalesLedgerProduct> allProducts = salesLedgerProductService.list(
                    new QueryWrapper<SalesLedgerProduct>().lambda()
                            .in(SalesLedgerProduct::getSalesLedgerId, allSalesLedgerIds)
            );
            salesLedgerProductsMap = allProducts.stream()
                    .collect(Collectors.groupingBy(SalesLedgerProduct::getSalesLedgerId));
        } else {
            salesLedgerProductsMap = new HashMap<>();
        }
        afterSalesServiceIPage.getRecords().forEach(item -> {
            item.setDeptName(sysDept.getDeptName());
            try {
                if (org.apache.commons.lang3.StringUtils.isNotEmpty(item.getAfterSalesProducts())) {
                    List<AfterSalesProductDto> afterSalesProductList = JSON.parseArray(item.getAfterSalesProducts(), AfterSalesProductDto.class);
                    List<Long> selectedIds = afterSalesProductList.stream().map(AfterSalesProductDto::getId).collect(Collectors.toList());
                    if (!selectedIds.isEmpty()) {
                        List<SalesLedgerProduct> ledgerProducts = salesLedgerProductsMap.getOrDefault(item.getSalesLedgerId(), new java.util.ArrayList<>());
                        List<SalesLedgerProduct> matchedProducts = ledgerProducts.stream()
                                .filter(p -> selectedIds.contains(p.getId()))
                                .collect(Collectors.toList());
                        matchedProducts.forEach(p -> {
                            afterSalesProductList.stream()
                                    .filter(ap -> ap.getId().equals(p.getId()))
                                    .findFirst()
                                    .ifPresent(ap -> p.setAfterSalesQuantity(ap.getAfterSalesQuantity()));
                        });
                        SalesLedgerDto salesLedgerDto = new SalesLedgerDto();
                        salesLedgerDto.setProductData(matchedProducts);
                        item.setSalesLedgerDto(salesLedgerDto);
                    }
                }
            } catch (Exception e) {
                log.error("解析售后产品失败", e);
            }
        });
        return afterSalesServiceIPage;
    }
@@ -70,7 +115,7 @@
    @Override
    public boolean addAfterSalesServiceDto(AfterSalesServiceNewDto afterSalesServiceNewDto) {
        afterSalesServiceNewDto.setStatus(1);
        if (afterSalesServiceNewDto.getProductModelIdList() != null && !afterSalesServiceNewDto.getProductModelIdList().isEmpty() ) {
        if (afterSalesServiceNewDto.getProductModelIdList() != null && !afterSalesServiceNewDto.getProductModelIdList().isEmpty()) {
            String productModelIds = afterSalesServiceNewDto.getProductModelIdList().stream()
                    .map(String::valueOf)
                    .collect(Collectors.joining(","));
@@ -80,14 +125,14 @@
            afterSalesServiceNewDto.setAfterSalesProducts(JSON.toJSONString(afterSalesServiceNewDto.getAfterSalesProductList()));
        }
        SysUser sysUser = sysUserMapper.selectUserById(afterSalesServiceNewDto.getCheckUserId());
        if(sysUser == null) throw new RuntimeException("审核人不存在");
        if (sysUser == null) throw new RuntimeException("审核人不存在");
        afterSalesServiceNewDto.setCheckNickName(sysUser.getNickName());
        if (StringUtils.isEmpty(afterSalesServiceNewDto.getAfterSalesServiceNo())) {
            String string = OrderUtils.countAfterServiceTodayByCreateTime(afterSalesServiceMapper, "SH_");
            afterSalesServiceNewDto.setAfterSalesServiceNo(string);
        }
        boolean saved = this.save(afterSalesServiceNewDto);
        if (saved && afterSalesServiceNewDto.getSalesLedgerId() != null) {
            try {
                SalesLedger salesLedger = salesLedgerService.getById(afterSalesServiceNewDto.getSalesLedgerId());
@@ -95,10 +140,10 @@
                    Long entryUserId = Long.parseLong(salesLedger.getEntryPerson());
                    String webPath = "/customerService/afterSalesHandling?afterSalesServiceNo=" + afterSalesServiceNewDto.getAfterSalesServiceNo();
                    sysNoticeService.simpleNoticeByUser(
                        "新增售后单通知",
                        "您录入的销售订单有一条新的售后记录,售后单号:" + afterSalesServiceNewDto.getAfterSalesServiceNo(),
                        Collections.singletonList(entryUserId),
                        webPath
                            "新增售后单通知",
                            "您录入的销售订单有一条新的售后记录,售后单号:" + afterSalesServiceNewDto.getAfterSalesServiceNo(),
                            Collections.singletonList(entryUserId),
                            webPath
                    );
                }
            } catch (Exception e) {
@@ -114,7 +159,7 @@
        SalesLedger byId = salesLedgerService.getById(afterSalesService.getSalesLedgerId());
        List<Long> collect = Arrays.stream(afterSalesService.getProductModelIds().split(",")).map(Long::valueOf).collect(Collectors.toList());
        List<SalesLedgerProduct> list = salesLedgerProductService.list(new QueryWrapper<SalesLedgerProduct>().lambda().in(SalesLedgerProduct::getId, collect));
        if (StringUtils.isNotEmpty(afterSalesService.getAfterSalesProducts())) {
            List<com.ruoyi.aftersalesservice.dto.AfterSalesProductDto> afterSalesProductList = com.alibaba.fastjson2.JSON.parseArray(afterSalesService.getAfterSalesProducts(), com.ruoyi.aftersalesservice.dto.AfterSalesProductDto.class);
            for (SalesLedgerProduct product : list) {
@@ -131,7 +176,7 @@
        BeanUtils.copyProperties(afterSalesService, afterSalesServiceNewDto);
        SalesLedgerDto salesLedgerDto = new SalesLedgerDto();
        BeanUtils.copyProperties(byId, salesLedgerDto);
        salesLedgerDto.setProductData( list);
        salesLedgerDto.setProductData(list);
        afterSalesServiceNewDto.setSalesLedgerDto(salesLedgerDto);
        return afterSalesServiceNewDto;
    }