From cbb7c5476d99c916e4e44fafa297f99b8f9d18c9 Mon Sep 17 00:00:00 2001
From: zjh <15615273395@163.com>
Date: Tue, 21 Apr 2026 17:24:31 +0800
Subject: [PATCH] =?UTF-8?q?selectValueByMoreParam=E6=9F=A5=E8=AF=A2?=
=?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../service/XdapDeptUsersService.java | 4 +-
.../impl/EngineParamDetailServiceImpl.java | 221 +++++++++---------
.../impl/XdapDeptUsersServiceImpl.java | 3 +-
3 files changed, 111 insertions(+), 117 deletions(-)
diff --git a/src/main/java/com/xdap/self_development/service/XdapDeptUsersService.java b/src/main/java/com/xdap/self_development/service/XdapDeptUsersService.java
index 732e553..1dbc421 100644
--- a/src/main/java/com/xdap/self_development/service/XdapDeptUsersService.java
+++ b/src/main/java/com/xdap/self_development/service/XdapDeptUsersService.java
@@ -6,8 +6,8 @@ import com.xdap.api.moudle.user.pojo.XdapUsers;
import com.xdap.self_development.domain.view.UserInfoView;
import javax.validation.constraints.NotBlank;
-import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
/**
*
@@ -36,5 +36,5 @@ public interface XdapDeptUsersService {
UserInfoView getUserInfo(@NotBlank(message = "用户不能为空") String userId);
// 通过用户ID批量查询用户
- List selectUserByIds(List userIds);
+ List selectUserByIds(Set userIds);
}
diff --git a/src/main/java/com/xdap/self_development/service/impl/EngineParamDetailServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/EngineParamDetailServiceImpl.java
index 29978f5..fef053c 100644
--- a/src/main/java/com/xdap/self_development/service/impl/EngineParamDetailServiceImpl.java
+++ b/src/main/java/com/xdap/self_development/service/impl/EngineParamDetailServiceImpl.java
@@ -9,7 +9,6 @@ import com.alibaba.excel.write.metadata.style.WriteFont;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.fastjson.JSON;
-import com.alibaba.nacos.client.naming.utils.CollectionUtils;
import com.definesys.mpaas.query.MpaasQuery;
import com.definesys.mpaas.query.MpaasQueryFactory;
import com.xdap.api.moudle.user.pojo.XdapUsers;
@@ -31,7 +30,6 @@ import com.xdap.self_development.listener.EngineParamDetailListener;
import com.xdap.self_development.service.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
-import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@@ -101,8 +99,8 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
List parameters = selectParamByIsUserId(allParameters, userId);
List templates = bd.getBusinessDatabase()
- .eq("status", "COMPLETE")
- .doQuery(TemplatePojo.class);
+ .eq("status", "COMPLETE")
+ .doQuery(TemplatePojo.class);
if (ObjectUtils.isEmpty(templates)) {
throw new CommonException("未找到未找到已发布的参数模板");
}
@@ -383,13 +381,13 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
try {
EasyExcel.read(
file.getInputStream(),
- EngineParamDetailExcel.class,
- new EngineParamDetailListener(
- bd,
- modelPojo,
- userId
- )
- ).build().readAll();
+ EngineParamDetailExcel.class,
+ new EngineParamDetailListener(
+ bd,
+ modelPojo,
+ userId
+ )
+ ).build().readAll();
} catch (IOException e) {
log.error("导入失败IO异常");
} catch (RuntimeException e) {
@@ -505,6 +503,10 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
*/
@Override
public Map> selectValueByMoreParam(EngineParamDetailRequest request) {
+ List engineParamDetailDTOS = new ArrayList<>();
+ List paramDetails = new ArrayList<>();
+
+ // 获取当前机型
DataEntryEngineModelPojo model = bd.getBusinessDatabase()
.eq("id", request.getEngineModelID())
.doQueryFirst(DataEntryEngineModelPojo.class);
@@ -512,119 +514,110 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
throw new CommonException("机型不存在,请检查");
}
- List subsystemParts = request.getSubsystemParts();
- if (CollectionUtils.isEmpty(subsystemParts)) {
- return new LinkedHashMap<>();
- }
-
- List subsystemList = new ArrayList<>();
- List partsList = new ArrayList<>();
- for (String item : subsystemParts) {
- String[] split = item.split("-");
- if (split.length != 2) {
+ // 根据条件过滤查询
+ Set subsystemSet = new HashSet<>();
+ Set typeSet = new HashSet<>();
+ request.getSubsystemParts().forEach(subsystemType -> {
+ if (subsystemType.split("-").length != 2) {
throw new CommonException("查询条件异常,需子系统-零部件名称,若零部件为空则传入“/”");
}
- subsystemList.add(split[0]);
- partsList.add(split[1]);
- }
+ String subsystem = subsystemType.split("-")[0];
+ String type = subsystemType.split("-")[1];
+ subsystemSet.add(subsystem);
+ typeSet.add(type);
+ });
- MpaasQuery mpaasQuery = bd.getBusinessDatabase()
- .conjuctionAnd()
- .and()
+ MpaasQuery query = bd.getBusinessDatabase()
.eq("engine_model_id", model.getId())
- .in("subsystem_name", subsystemList)
- .in("parts_name", partsList)
+ .in("subsystem_name", subsystemSet)
+ .in("parts_name", typeSet)
.eq("parameter_source", "数据平台手工录入");
- // 版本号处理
- Integer version = ObjectUtils.defaultIfNull(request.getParameterVersion(), model.getVersionNumber());
- mpaasQuery.eq("major_version", version);
-
- // 按填写人/责任人 动态拼接条件
- String filledById = request.getFilledById();
- String responsiblePersonId = request.getResponsiblePersonId();
- if (StringUtils.isNotEmpty(filledById)) {
- mpaasQuery.conjuctionAnd()
- .or()
- .eq("last_updated_by", filledById)
- .eq("filled_by", filledById);
- } else if (StringUtils.isNotEmpty(responsiblePersonId)) {
- mpaasQuery
- .conjuctionAnd()
- .and()
- .eq("responsible_person_id", responsiblePersonId);
+ //若传入填写人则查询填写人需要填写的参数
+ if (ObjectUtils.isNotEmpty(request.getFilledById())) {
+ query.eq("last_updated_by", request.getFilledById());
+ query.eq("major_version", model.getVersionNumber());
+ } else if (ObjectUtils.isNotEmpty(request.getResponsiblePersonId())) {
+ //若传入责任人则查询责任人需要分发的参数
+ query.eq("responsible_person_id", request.getResponsiblePersonId());
+ query.eq("major_version", model.getVersionNumber());
+ } else {
+ Integer version = model.getVersionNumber();
+ if (request.getParameterVersion() != null) {
+ version = request.getParameterVersion();
+ }
+ query.eq("major_version", version);
}
- // 查询所有参数详情
- List paramDetails = mpaasQuery.doQuery(EngineParamDetailPojo.class);
- if (CollectionUtils.isEmpty(paramDetails)) {
- return new LinkedHashMap<>();
+ List pojoList = query.doQuery(EngineParamDetailPojo.class);
+
+ if (ObjectUtils.isNotEmpty(request.getFilledById()) && pojoList.isEmpty()) {
+ query.eq("filled_by", request.getFilledById());
+ query.eq("major_version", model.getVersionNumber());
+ paramDetails.addAll(query.doQuery(EngineParamDetailPojo.class));
+ } else {
+ paramDetails.addAll(pojoList);
}
- // 批量查询
- Set paramIds = paramDetails.stream()
- .map(EngineParamDetailPojo::getParameterId)
- .filter(ObjectUtils::isNotEmpty)
- .collect(Collectors.toSet());
- Map paramIdToUnitMap = new HashMap<>();
- if (!CollectionUtils.isEmpty(paramIds)) {
- List parameters = bd.getBusinessDatabase()
- .in("id", paramIds)
- .doQuery(ParameterPojo.class);
- paramIdToUnitMap = parameters.stream()
- .collect(Collectors.toMap(ParameterPojo::getId, ParameterPojo::getUnit, (v1, v2) -> v1));
- }
-
- // 5.2 批量提取用户ID → 批量查用户信息
- Set userIds = new HashSet<>();
- paramDetails.forEach(pojo -> {
- if (StringUtils.isNotEmpty(pojo.getFilledBy())) userIds.add(pojo.getFilledBy());
- if (StringUtils.isNotEmpty(pojo.getResponsiblePersonId())) userIds.add(pojo.getResponsiblePersonId());
+ Set userList = new HashSet<>();
+ Set parameterList = new HashSet<>();
+ paramDetails.forEach(item -> {
+ if (ObjectUtils.isNotEmpty(item.getFilledBy())) {
+ userList.add(item.getFilledBy());
+ }
+ if (ObjectUtils.isNotEmpty(item.getResponsiblePersonId())) {
+ userList.add(item.getResponsiblePersonId());
+ }
+ parameterList.add(item.getParameterId());
});
- Map userIdToUserMap = new HashMap<>();
- if (!CollectionUtils.isEmpty(userIds)) {
- List users = xdapDeptUsersService.selectUserByIds(new ArrayList<>(userIds));
- userIdToUserMap = users.stream()
- .collect(Collectors.toMap(XdapUsers::getId, u -> u, (v1, v2) -> v1));
+
+ List users = xdapDeptUsersService.selectUserByIds(userList);
+ Map usersMap = users.stream()
+ .collect(Collectors.toMap(XdapUsers::getId, user -> user));
+ List parameterPojos = bd.getBusinessDatabase()
+ .in("id", parameterList)
+ .doQuery(ParameterPojo.class);
+ Map parameterPojoMap = parameterPojos.stream()
+ .collect(Collectors.toMap(ParameterPojo::getId, parameterPojo -> parameterPojo));
+
+ // 构建返回
+ for (EngineParamDetailPojo detail : paramDetails) {
+ EngineParamDetailDTO engineParamDetailDTO = new EngineParamDetailDTO();
+ BeanUtils.copyProperties(detail, engineParamDetailDTO);
+
+ engineParamDetailDTO.setFilledBy(null);
+ engineParamDetailDTO.setFiller(null);
+ engineParamDetailDTO.setResPerson(null);
+ engineParamDetailDTO.setResPersonId(null);
+ engineParamDetailDTO.setIsDistributedFilled(0);
+ engineParamDetailDTO.setIsDistributedRes(0);
+
+ if (ObjectUtils.isNotEmpty(detail.getFilledBy())) {
+ XdapUsers filler = usersMap.getOrDefault(detail.getFilledBy(), null);
+ engineParamDetailDTO.setFiller(filler);
+ engineParamDetailDTO.setFilledBy(ObjectUtils.isEmpty(filler) ? "" : filler.getUsername());
+ engineParamDetailDTO.setIsDistributedFilled(1);
+ }
+ if (ObjectUtils.isNotEmpty(detail.getResponsiblePersonId())) {
+ XdapUsers responsiblePerson = usersMap.getOrDefault(detail.getResponsiblePersonId(), null);
+ engineParamDetailDTO.setResPerson(responsiblePerson);
+ engineParamDetailDTO.setResPersonId(ObjectUtils.isEmpty(responsiblePerson) ? "" : responsiblePerson.getUsername());
+ engineParamDetailDTO.setIsDistributedRes(1);
+ }
+
+ engineParamDetailDTO.setUnit(null);
+ if (ObjectUtils.isNotEmpty(detail.getParameterId())) {
+ ParameterPojo parameter = parameterPojoMap.getOrDefault(detail.getParameterId(), null);
+ engineParamDetailDTO.setUnit(ObjectUtils.isEmpty(parameter) ? "" : parameter.getUnit());
+ }
+
+ engineParamDetailDTO.setId(detail.getId());
+ engineParamDetailDTO.setApprovalId(detail.getApprovalId());
+ engineParamDetailDTOS.add(engineParamDetailDTO);
}
- // 转换
- Map finalUserIdToUserMap = userIdToUserMap;
- Map finalParamIdToUnitMap = paramIdToUnitMap;
- List detailDTOList = paramDetails.stream().map(detail -> {
- EngineParamDetailDTO dto = new EngineParamDetailDTO();
- BeanUtils.copyProperties(detail, dto);
- dto.setFilledBy(null);
- dto.setFiller(null);
- dto.setResPerson(null);
- dto.setResPersonId(null);
- dto.setIsDistributedFilled(0);
- dto.setIsDistributedRes(0);
- dto.setUnit(null);
- String filledBy = detail.getFilledBy();
- if (StringUtils.isNotEmpty(filledBy)) {
- XdapUsers filler = finalUserIdToUserMap.get(filledBy);
- dto.setFiller(filler);
- dto.setFilledBy(filler == null ? "" : filler.getUsername());
- dto.setIsDistributedFilled(1);
- }
- String resId = detail.getResponsiblePersonId();
- if (StringUtils.isNotEmpty(resId)) {
- XdapUsers resPerson = finalUserIdToUserMap.get(resId);
- dto.setResPerson(resPerson);
- dto.setResPersonId(resPerson == null ? "" : resPerson.getUsername());
- dto.setIsDistributedRes(1);
- }
-
- String paramId = detail.getParameterId();
- if (ObjectUtils.isNotEmpty(paramId)) {
- dto.setUnit(finalParamIdToUnitMap.get(paramId));
- }
-
- dto.setId(detail.getId());
- dto.setApprovalId(detail.getApprovalId());
- return dto;
- })
+ // 排序返回
+ List detailDTOList = engineParamDetailDTOS.stream()
.sorted(Comparator
.comparing(EngineParamDetailDTO::getSubsystemName, Collator.getInstance(Locale.CHINA))
.thenComparing(EngineParamDetailDTO::getParameterName, Collator.getInstance(Locale.CHINA))
@@ -868,8 +861,8 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
public List selectAllByNewVersion() {
//读取已通过审核的版本COMPLETE(已完成)
List templates = bd.getBusinessDatabase()
- .eq("status", "COMPLETE")
- .doQuery(TemplatePojo.class);
+ .eq("status", "COMPLETE")
+ .doQuery(TemplatePojo.class);
if (ObjectUtils.isEmpty(templates)) {
throw new CommonException("未找到未找到已发布的参数模板");
}
@@ -880,7 +873,7 @@ public class EngineParamDetailServiceImpl implements EngineParamDetailService {
.collect(Collectors.toList());
List templateAndParameters = bd.getBusinessDatabase()
.in("template_id", templateIds)
- .doQuery(TemplateAndParameterPojo.class);
+ .doQuery(TemplateAndParameterPojo.class);
List pIds = templateAndParameters.stream()
.map(TemplateAndParameterPojo::getParameterId)
.collect(Collectors.toList());
diff --git a/src/main/java/com/xdap/self_development/service/impl/XdapDeptUsersServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/XdapDeptUsersServiceImpl.java
index 6f3fb98..145871d 100644
--- a/src/main/java/com/xdap/self_development/service/impl/XdapDeptUsersServiceImpl.java
+++ b/src/main/java/com/xdap/self_development/service/impl/XdapDeptUsersServiceImpl.java
@@ -17,6 +17,7 @@ import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Set;
import java.util.stream.Collectors;
/**
@@ -232,7 +233,7 @@ public class XdapDeptUsersServiceImpl implements XdapDeptUsersService {
}
@Override
- public List selectUserByIds(List userIds) {
+ public List selectUserByIds(Set userIds) {
List users = bd.getSystemDatabase()
.in("id", userIds)
.doQuery(XdapUsers.class);