修改供应商管理功能

This commit is contained in:
funny 2026-04-21 10:30:09 +08:00
parent 8448a11c05
commit 60317a60f2
7 changed files with 176 additions and 4 deletions

View File

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

View File

@ -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;
}

View File

@ -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<QmsSupplierSqeUserVO> users;
/**
* 统一启用状态所有关联记录均启用时为true否则为false

View File

@ -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;
}

View File

@ -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<QmsSupplierSqeMap> {
*/
IPage<QmsSupplierSqeMapVO> searchMap(@Param("request") QmsSupplierSqeSearchQO request, Page<QmsSupplierSqeMapVO> page);
/**
* 平铺查询每行一条关联记录 userId/userName Service 层聚合为 List
*/
List<QmsSupplierSqeMapFlatVO> searchMapFlat(@Param("request") QmsSupplierSqeSearchQO request);
/**
* userId 查询关联的供应商列表支持供应商过滤分页
*/

View File

@ -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<QmsSupplierSqeMapM
@Override
public IPage<QmsSupplierSqeMapVO> searchMap(QmsSupplierSqeSearchQO request) {
return baseMapper.searchMap(request, new Page<>(request.getPage(), request.getPageSize()));
// 1. 查平铺列表
List<QmsSupplierSqeMapFlatVO> flatList = baseMapper.searchMapFlat(request);
// 2. supplierId 聚合保持原始排序LinkedHashMap
Map<Long, QmsSupplierSqeMapVO> 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<QmsSupplierSqeMapVO> 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<QmsSupplierSqeMapVO> pageList = allList.subList(fromIndex, toIndex);
Page<QmsSupplierSqeMapVO> result = new Page<>(page, pageSize, total);
result.setRecords(pageList);
return result;
}
@Transactional

View File

@ -32,6 +32,36 @@
ORDER BY qssm.supplier_id DESC
</select>
<!-- 平铺查询:每行一条关联记录,含 userId/userName供 Service 聚合为 List -->
<select id="searchMapFlat" resultType="com.nflg.wms.common.pojo.vo.QmsSupplierSqeMapFlatVO">
SELECT
qssm.supplier_id,
us.supplier_code,
us.supplier_name,
qssm.user_id,
u.user_name,
qssm.enable,
qssm.create_time,
qssm.create_by,
qssm.update_time,
qssm.update_by
FROM qms_supplier_sqe_map qssm
LEFT JOIN user_supplier us ON us.id = qssm.supplier_id
LEFT JOIN "user" u ON u.id = qssm.user_id
<where>
<if test="request.supplierCode != null and request.supplierCode != ''">
AND us.supplier_code ilike concat('%', #{request.supplierCode}, '%')
</if>
<if test="request.supplierName != null and request.supplierName != ''">
AND us.supplier_name ilike concat('%', #{request.supplierName}, '%')
</if>
<if test="request.userName != null and request.userName != ''">
AND u.user_name ilike concat('%', #{request.userName}, '%')
</if>
</where>
ORDER BY qssm.supplier_id DESC, qssm.user_id ASC
</select>
<!-- 按 userId 查询关联的供应商列表(支持供应商过滤) -->
<select id="getSuppliersByUserId" resultType="com.nflg.wms.common.pojo.vo.QmsUserSupplierVO">
SELECT