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);