From 9f6d07b4eb72dfce7fb52ad35dffdf18096ca135 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 23 九月 2026 13:38:05 +0800
Subject: [PATCH] 增加新功能
---
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TFleetServiceImpl.java | 126 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 126 insertions(+), 0 deletions(-)
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TFleetServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TFleetServiceImpl.java
index cd79643..2f11a67 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TFleetServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TFleetServiceImpl.java
@@ -1,10 +1,28 @@
package com.ruoyi.other.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.other.api.domain.TFleet;
+import com.ruoyi.other.api.domain.TGroupCompany;
+import com.ruoyi.other.api.dto.FleetExcelDTO;
+import com.ruoyi.other.api.dto.FleetQueryDTO;
import com.ruoyi.other.mapper.TFleetMapper;
import com.ruoyi.other.service.TFleetService;
+import com.ruoyi.other.service.TGroupCompanyService;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
/**
* <p>
@@ -17,4 +35,112 @@
@Service
public class TFleetServiceImpl extends ServiceImpl<TFleetMapper, TFleet> implements TFleetService {
+ private static final int ENABLED = 1;
+ private static final int DISABLED = 0;
+
+ @Resource
+ private TGroupCompanyService groupCompanyService;
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public String importFleets(List<FleetExcelDTO> items) {
+ if (items == null || items.isEmpty()) {
+ throw new ServiceException("导入数据不能为空");
+ }
+ Set<String> fleetNames = new HashSet<>();
+ Set<String> companyNames = new HashSet<>();
+ int row = 1;
+ for (FleetExcelDTO item : items) {
+ row++;
+ if (item == null || !StringUtils.hasText(item.getFleetName())) {
+ throw new ServiceException("第" + row + "行车队名称不能为空");
+ }
+ String fleetName = item.getFleetName().trim();
+ if (fleetName.length() > 128) {
+ throw new ServiceException("第" + row + "行车队名称不能超过128个字符");
+ }
+ if (!StringUtils.hasText(item.getCompanyName())) {
+ throw new ServiceException("第" + row + "行所属公司不能为空");
+ }
+ parseStatus(item.getStatus(), row);
+ if (!fleetNames.add(fleetName) || lambdaQuery().eq(TFleet::getFleetName, fleetName).count() > 0) {
+ throw new ServiceException("第" + row + "行车队名称已存在或重复");
+ }
+ companyNames.add(item.getCompanyName().trim());
+ }
+ // 批量查询公司名称 -> ID
+ Map<String, Integer> companyMap = groupCompanyService.lambdaQuery()
+ .in(TGroupCompany::getName, companyNames)
+ .list()
+ .stream()
+ .collect(Collectors.toMap(TGroupCompany::getName, TGroupCompany::getId, (a, b) -> a));
+ row = 1;
+ for (FleetExcelDTO item : items) {
+ row++;
+ String companyName = item.getCompanyName().trim();
+ if (!companyMap.containsKey(companyName)) {
+ throw new ServiceException("第" + row + "行所属公司不存在:" + companyName);
+ }
+ }
+ LocalDateTime now = LocalDateTime.now();
+ for (FleetExcelDTO item : items) {
+ TFleet fleet = new TFleet();
+ fleet.setCompanyId(companyMap.get(item.getCompanyName().trim()));
+ fleet.setFleetName(item.getFleetName().trim());
+ fleet.setContactName(trim(item.getContactName()));
+ fleet.setContactPhone(trim(item.getContactPhone()));
+ fleet.setRemark(trim(item.getRemark()));
+ fleet.setStatus(parseStatus(item.getStatus(), 0));
+ fleet.setDelFlag(false);
+ fleet.setCreateTime(now);
+ save(fleet);
+ }
+ return "成功导入" + items.size() + "条车队数据";
+ }
+
+ @Override
+ public List<FleetExcelDTO> selectExportList(FleetQueryDTO query) {
+ FleetQueryDTO safe = query == null ? new FleetQueryDTO() : query;
+ List<TFleet> fleets = lambdaQuery()
+ .like(StringUtils.hasText(safe.getFleetName()), TFleet::getFleetName, safe.getFleetName())
+ .eq(safe.getCompanyId() != null, TFleet::getCompanyId, safe.getCompanyId())
+ .eq(safe.getStatus() != null, TFleet::getStatus, safe.getStatus())
+ .orderByDesc(TFleet::getId)
+ .list();
+ if (fleets == null || fleets.isEmpty()) {
+ return new ArrayList<>();
+ }
+ Set<Integer> companyIds = fleets.stream()
+ .map(TFleet::getCompanyId)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toSet());
+ Map<Integer, String> nameMap = companyIds.isEmpty() ? Collections.emptyMap()
+ : groupCompanyService.listByIds(companyIds).stream()
+ .collect(Collectors.toMap(TGroupCompany::getId, TGroupCompany::getName, (a, b) -> a));
+ return fleets.stream().map(item -> {
+ FleetExcelDTO dto = new FleetExcelDTO();
+ dto.setFleetName(item.getFleetName());
+ dto.setCompanyName(nameMap.get(item.getCompanyId()));
+ dto.setContactName(item.getContactName());
+ dto.setContactPhone(item.getContactPhone());
+ dto.setStatus(item.getStatus() == null ? null : String.valueOf(item.getStatus()));
+ dto.setRemark(item.getRemark());
+ return dto;
+ }).collect(Collectors.toList());
+ }
+
+ private String trim(String value) {
+ return value == null ? null : value.trim();
+ }
+
+ private Integer parseStatus(String value, int row) {
+ if (!StringUtils.hasText(value) || "1".equals(value.trim()) || "启用".equals(value.trim())) {
+ return ENABLED;
+ }
+ if ("0".equals(value.trim()) || "停用".equals(value.trim())) {
+ return DISABLED;
+ }
+ throw new ServiceException((row > 0 ? "第" + row + "行" : "") + "启用状态错误");
+ }
+
}
--
Gitblit v1.7.1