From 60317a60f232b41a7808a75d3ef6dd70bcd2597d Mon Sep 17 00:00:00 2001 From: funny <834502597@qq.com> Date: Tue, 21 Apr 2026 10:30:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BE=9B=E5=BA=94=E5=95=86?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...msInspectionStandardControllerService.java | 1 - .../pojo/vo/QmsSupplierSqeMapFlatVO.java | 62 +++++++++++++++++++ .../common/pojo/vo/QmsSupplierSqeMapVO.java | 5 +- .../common/pojo/vo/QmsSupplierSqeUserVO.java | 20 ++++++ .../mapper/QmsSupplierSqeMapMapper.java | 6 ++ .../impl/QmsSupplierSqeMapServiceImpl.java | 56 ++++++++++++++++- .../mapper/QmsSupplierSqeMapMapper.xml | 30 +++++++++ 7 files changed, 176 insertions(+), 4 deletions(-) create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsSupplierSqeMapFlatVO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsSupplierSqeUserVO.java diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsInspectionStandardControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsInspectionStandardControllerService.java index c529fb5f..8899c0ac 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsInspectionStandardControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsInspectionStandardControllerService.java @@ -438,7 +438,6 @@ public class QmsInspectionStandardControllerService { Long userId = UserUtil.getUserId(); String userName = UserUtil.getUserName(); LocalDateTime now = LocalDateTime.now(); - // 2. 处理检测项列表 processItems(qo.getInspectionStandardId(), qo.getItems(), userId, userName, now); } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsSupplierSqeMapFlatVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsSupplierSqeMapFlatVO.java new file mode 100644 index 00000000..4c494973 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsSupplierSqeMapFlatVO.java @@ -0,0 +1,62 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 供应商-用户 关联平铺 VO(每行一条关联记录,供 Service 层聚合用) + */ +@Data +public class QmsSupplierSqeMapFlatVO { + + /** + * 供应商ID + */ + private Long supplierId; + + /** + * 供应商编号 + */ + private String supplierCode; + + /** + * 供应商名称 + */ + private String supplierName; + + /** + * 用户ID + */ + private Long userId; + + /** + * 用户名称 + */ + private String userName; + + /** + * 启用状态 + */ + private Boolean enable; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 创建人 + */ + private String createBy; + + /** + * 修改时间 + */ + private LocalDateTime updateTime; + + /** + * 修改人 + */ + private String updateBy; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsSupplierSqeMapVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsSupplierSqeMapVO.java index bb1e32bd..d073b69c 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsSupplierSqeMapVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsSupplierSqeMapVO.java @@ -3,6 +3,7 @@ package com.nflg.wms.common.pojo.vo; import lombok.Data; import java.time.LocalDateTime; +import java.util.List; /** * 供应商-用户 关联 VO(按供应商聚合,每行一个供应商) @@ -26,9 +27,9 @@ public class QmsSupplierSqeMapVO { private String supplierName; /** - * SQE用户名称(多个用逗号分隔) + * 关联的SQE用户列表(含 userId 和 userName) */ - private String userName; + private List users; /** * 统一启用状态:所有关联记录均启用时为true,否则为false diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsSupplierSqeUserVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsSupplierSqeUserVO.java new file mode 100644 index 00000000..41ac7588 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsSupplierSqeUserVO.java @@ -0,0 +1,20 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; + +/** + * SQE用户简要信息(用于 QmsSupplierSqeMapVO 中的 users 列表) + */ +@Data +public class QmsSupplierSqeUserVO { + + /** + * 用户ID + */ + private Long userId; + + /** + * 用户名称 + */ + private String userName; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsSupplierSqeMapMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsSupplierSqeMapMapper.java index 1c1a1e50..82cdef43 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsSupplierSqeMapMapper.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsSupplierSqeMapMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nflg.wms.common.pojo.qo.QmsSupplierSqeSearchQO; import com.nflg.wms.common.pojo.qo.QmsUserMaterialsQO; +import com.nflg.wms.common.pojo.vo.QmsSupplierSqeMapFlatVO; import com.nflg.wms.common.pojo.vo.QmsSupplierSqeMapVO; import com.nflg.wms.common.pojo.vo.QmsUserSupplierVO; import com.nflg.wms.repository.entity.QmsSupplierSqeMap; @@ -27,6 +28,11 @@ public interface QmsSupplierSqeMapMapper extends BaseMapper { */ IPage searchMap(@Param("request") QmsSupplierSqeSearchQO request, Page page); + /** + * 平铺查询(每行一条关联记录,含 userId/userName,供 Service 层聚合为 List) + */ + List searchMapFlat(@Param("request") QmsSupplierSqeSearchQO request); + /** * 按 userId 查询关联的供应商列表(支持供应商过滤,分页) */ diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsSupplierSqeMapServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsSupplierSqeMapServiceImpl.java index 77a938ce..02c18a50 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsSupplierSqeMapServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsSupplierSqeMapServiceImpl.java @@ -7,7 +7,9 @@ import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.qo.QmsSupplierSqeSearchQO; +import com.nflg.wms.common.pojo.vo.QmsSupplierSqeMapFlatVO; import com.nflg.wms.common.pojo.vo.QmsSupplierSqeMapVO; +import com.nflg.wms.common.pojo.vo.QmsSupplierSqeUserVO; import com.nflg.wms.common.pojo.vo.QmsUserSupplierVO; import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.repository.entity.QmsSupplierSqeMap; @@ -17,7 +19,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; @@ -36,7 +41,56 @@ public class QmsSupplierSqeMapServiceImpl extends ServiceImpl searchMap(QmsSupplierSqeSearchQO request) { - return baseMapper.searchMap(request, new Page<>(request.getPage(), request.getPageSize())); + // 1. 查平铺列表 + List flatList = baseMapper.searchMapFlat(request); + + // 2. 按 supplierId 聚合(保持原始排序,LinkedHashMap) + Map grouped = new LinkedHashMap<>(); + for (QmsSupplierSqeMapFlatVO flat : flatList) { + QmsSupplierSqeMapVO vo = grouped.computeIfAbsent(flat.getSupplierId(), id -> { + QmsSupplierSqeMapVO newVo = new QmsSupplierSqeMapVO(); + newVo.setSupplierId(flat.getSupplierId()); + newVo.setSupplierCode(flat.getSupplierCode()); + newVo.setSupplierName(flat.getSupplierName()); + newVo.setEnable(flat.getEnable()); + newVo.setCreateTime(flat.getCreateTime()); + newVo.setCreateBy(flat.getCreateBy()); + newVo.setUpdateTime(flat.getUpdateTime()); + newVo.setUpdateBy(flat.getUpdateBy()); + newVo.setUsers(new ArrayList<>()); + return newVo; + }); + // 追加用户信息 + if (Objects.nonNull(flat.getUserId())) { + QmsSupplierSqeUserVO userVO = new QmsSupplierSqeUserVO(); + userVO.setUserId(flat.getUserId()); + userVO.setUserName(flat.getUserName()); + vo.getUsers().add(userVO); + } + // enable 取最严格(有一条禁用则整体禁用) + if (Boolean.FALSE.equals(flat.getEnable())) { + vo.setEnable(false); + } + // 取最晚修改时间 + if (flat.getUpdateTime() != null && (vo.getUpdateTime() == null + || flat.getUpdateTime().isAfter(vo.getUpdateTime()))) { + vo.setUpdateTime(flat.getUpdateTime()); + vo.setUpdateBy(flat.getUpdateBy()); + } + } + + // 3. 手动分页 + List allList = new ArrayList<>(grouped.values()); + int page = request.getPage(); + int pageSize = request.getPageSize(); + int total = allList.size(); + int fromIndex = Math.min((page - 1) * pageSize, total); + int toIndex = Math.min(fromIndex + pageSize, total); + List pageList = allList.subList(fromIndex, toIndex); + + Page result = new Page<>(page, pageSize, total); + result.setRecords(pageList); + return result; } @Transactional diff --git a/nflg-wms-repository/src/main/resources/mapper/QmsSupplierSqeMapMapper.xml b/nflg-wms-repository/src/main/resources/mapper/QmsSupplierSqeMapMapper.xml index 8b49cd2d..470b2f61 100644 --- a/nflg-wms-repository/src/main/resources/mapper/QmsSupplierSqeMapMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/QmsSupplierSqeMapMapper.xml @@ -32,6 +32,36 @@ ORDER BY qssm.supplier_id DESC + + +