修改供应商管理功能
This commit is contained in:
parent
8448a11c05
commit
60317a60f2
|
|
@ -438,7 +438,6 @@ public class QmsInspectionStandardControllerService {
|
||||||
Long userId = UserUtil.getUserId();
|
Long userId = UserUtil.getUserId();
|
||||||
String userName = UserUtil.getUserName();
|
String userName = UserUtil.getUserName();
|
||||||
LocalDateTime now = LocalDateTime.now();
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
|
||||||
// 2. 处理检测项列表
|
// 2. 处理检测项列表
|
||||||
processItems(qo.getInspectionStandardId(), qo.getItems(), userId, userName, now);
|
processItems(qo.getInspectionStandardId(), qo.getItems(), userId, userName, now);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,7 @@ package com.nflg.wms.common.pojo.vo;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 供应商-用户 关联 VO(按供应商聚合,每行一个供应商)
|
* 供应商-用户 关联 VO(按供应商聚合,每行一个供应商)
|
||||||
|
|
@ -26,9 +27,9 @@ public class QmsSupplierSqeMapVO {
|
||||||
private String supplierName;
|
private String supplierName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SQE用户名称(多个用逗号分隔)
|
* 关联的SQE用户列表(含 userId 和 userName)
|
||||||
*/
|
*/
|
||||||
private String userName;
|
private List<QmsSupplierSqeUserVO> users;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 统一启用状态:所有关联记录均启用时为true,否则为false
|
* 统一启用状态:所有关联记录均启用时为true,否则为false
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.nflg.wms.common.pojo.qo.QmsSupplierSqeSearchQO;
|
import com.nflg.wms.common.pojo.qo.QmsSupplierSqeSearchQO;
|
||||||
import com.nflg.wms.common.pojo.qo.QmsUserMaterialsQO;
|
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.QmsSupplierSqeMapVO;
|
||||||
import com.nflg.wms.common.pojo.vo.QmsUserSupplierVO;
|
import com.nflg.wms.common.pojo.vo.QmsUserSupplierVO;
|
||||||
import com.nflg.wms.repository.entity.QmsSupplierSqeMap;
|
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);
|
IPage<QmsSupplierSqeMapVO> searchMap(@Param("request") QmsSupplierSqeSearchQO request, Page<QmsSupplierSqeMapVO> page);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 平铺查询(每行一条关联记录,含 userId/userName,供 Service 层聚合为 List)
|
||||||
|
*/
|
||||||
|
List<QmsSupplierSqeMapFlatVO> searchMapFlat(@Param("request") QmsSupplierSqeSearchQO request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 按 userId 查询关联的供应商列表(支持供应商过滤,分页)
|
* 按 userId 查询关联的供应商列表(支持供应商过滤,分页)
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,9 @@ import com.nflg.wms.common.constant.STATE;
|
||||||
import com.nflg.wms.common.exception.NflgException;
|
import com.nflg.wms.common.exception.NflgException;
|
||||||
import com.nflg.wms.common.pojo.PageData;
|
import com.nflg.wms.common.pojo.PageData;
|
||||||
import com.nflg.wms.common.pojo.qo.QmsSupplierSqeSearchQO;
|
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.QmsSupplierSqeMapVO;
|
||||||
|
import com.nflg.wms.common.pojo.vo.QmsSupplierSqeUserVO;
|
||||||
import com.nflg.wms.common.pojo.vo.QmsUserSupplierVO;
|
import com.nflg.wms.common.pojo.vo.QmsUserSupplierVO;
|
||||||
import com.nflg.wms.common.util.UserUtil;
|
import com.nflg.wms.common.util.UserUtil;
|
||||||
import com.nflg.wms.repository.entity.QmsSupplierSqeMap;
|
import com.nflg.wms.repository.entity.QmsSupplierSqeMap;
|
||||||
|
|
@ -17,7 +19,10 @@ import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
@ -36,7 +41,56 @@ public class QmsSupplierSqeMapServiceImpl extends ServiceImpl<QmsSupplierSqeMapM
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<QmsSupplierSqeMapVO> searchMap(QmsSupplierSqeSearchQO request) {
|
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
|
@Transactional
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,36 @@
|
||||||
ORDER BY qssm.supplier_id DESC
|
ORDER BY qssm.supplier_id DESC
|
||||||
</select>
|
</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 查询关联的供应商列表(支持供应商过滤) -->
|
<!-- 按 userId 查询关联的供应商列表(支持供应商过滤) -->
|
||||||
<select id="getSuppliersByUserId" resultType="com.nflg.wms.common.pojo.vo.QmsUserSupplierVO">
|
<select id="getSuppliersByUserId" resultType="com.nflg.wms.common.pojo.vo.QmsUserSupplierVO">
|
||||||
SELECT
|
SELECT
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue