refactor(qms): 重构质检员PQC机型绑定功能

- 将QmsQualityInspectorDetailVO中的pqcModels字段类型从List<QmsQualityInspectorPqcModelVO>改为List<String>
- 移除QmsQualityInspectorPqcModelVO中的pqcRuleId字段
- 删除QmsQualityInspectorVO中的pqcModelNos字段
- 新增QmsInspectorModelItem实体类用于存储质检员机型明细
- 新增IQmsInspectorModelItemService接口及其实现类
- 新增QmsInspectorModelItemMapper及相关XML配置文件
- 修改QmsQualityInspectorServiceImpl中PQC机型绑定逻辑,使用新的机型明细表进行数据操作
- 移除旧的PQC检验规则服务依赖和相关处理方法
- 简化机型绑定保存和查询逻辑,直接操作机型明细表
This commit is contained in:
曹鹏飞 2026-06-13 20:56:44 +08:00
parent 39534370ec
commit 7b0ead0275
9 changed files with 148 additions and 124 deletions

View File

@ -63,5 +63,5 @@ public class QmsQualityInspectorDetailVO {
/**
* PQC绑定机型列表
*/
private List<QmsQualityInspectorPqcModelVO> pqcModels;
private List<String> pqcModels;
}

View File

@ -8,10 +8,6 @@ import lombok.Data;
@Data
public class QmsQualityInspectorPqcModelVO {
/**
* PQC规则ID
*/
private Long pqcRuleId;
/**
* 机型编号

View File

@ -61,11 +61,6 @@ public class QmsQualityInspectorVO {
*/
private Integer inspectionType;
/**
* PQC绑定机型编号列表
*/
private List<String> pqcModelNos;
/**
* 转办人ID
*/

View File

@ -0,0 +1,63 @@
package com.nflg.wms.repository.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 质检员机型明细表
* </p>
*
* @author 代码生成器生成
* @since 2025
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("qms_inspector_model_item")
public class QmsInspectorModelItem implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
/**
* 质检员ID (qms_quality_inspector.id)
*/
private Long inspectorId;
/**
* 机型编号
*/
private String modelNo;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 修改人
*/
private String updateBy;
/**
* 修改时间
*/
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,16 @@
package com.nflg.wms.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nflg.wms.repository.entity.QmsInspectorModelItem;
/**
* <p>
* 质检员机型明细 Mapper 接口
* </p>
*
* @author 代码生成器生成
* @since 2025
*/
public interface QmsInspectorModelItemMapper extends BaseMapper<QmsInspectorModelItem> {
}

View File

@ -0,0 +1,16 @@
package com.nflg.wms.repository.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.wms.repository.entity.QmsInspectorModelItem;
/**
* <p>
* 质检员机型明细 服务类
* </p>
*
* @author 代码生成器生成
* @since 2025
*/
public interface IQmsInspectorModelItemService extends IService<QmsInspectorModelItem> {
}

View File

@ -0,0 +1,22 @@
package com.nflg.wms.repository.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.wms.repository.entity.QmsInspectorModelItem;
import com.nflg.wms.repository.mapper.QmsInspectorModelItemMapper;
import com.nflg.wms.repository.service.IQmsInspectorModelItemService;
import org.springframework.stereotype.Service;
/**
* <p>
* 质检员机型明细 服务实现类
* </p>
*
* @author 代码生成器生成
* @since 2025
*/
@Service
public class QmsInspectorModelItemServiceImpl
extends ServiceImpl<QmsInspectorModelItemMapper, QmsInspectorModelItem>
implements IQmsInspectorModelItemService {
}

View File

@ -15,25 +15,9 @@ import com.nflg.wms.common.pojo.qo.QmsQualityInspectorTransferQO;
import com.nflg.wms.common.pojo.qo.QmsQualityInspectorUpdateQO;
import com.nflg.wms.common.pojo.vo.*;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.repository.entity.QmsInspectorMaterialCategoryItem;
import com.nflg.wms.repository.entity.QmsInspectorMaterialItem;
import com.nflg.wms.repository.entity.QmsPqcInspectionRule;
import com.nflg.wms.repository.entity.QmsQcMaterialCategory;
import com.nflg.wms.repository.entity.QmsQualityInspector;
import com.nflg.wms.repository.entity.User;
import com.nflg.wms.repository.entity.*;
import com.nflg.wms.repository.mapper.QmsQualityInspectorMapper;
import com.nflg.wms.repository.service.IQmsInspectorMaterialCategoryItemService;
import com.nflg.wms.repository.service.IQmsInspectorMaterialItemService;
import com.nflg.wms.repository.entity.Department;
import com.nflg.wms.repository.entity.Position;
import com.nflg.wms.repository.entity.UserInterior;
import com.nflg.wms.repository.service.IDepartmentService;
import com.nflg.wms.repository.service.IPositionService;
import com.nflg.wms.repository.service.IUserInteriorService;
import com.nflg.wms.repository.service.IQmsQcMaterialCategoryService;
import com.nflg.wms.repository.service.IQmsQualityInspectorService;
import com.nflg.wms.repository.service.IQmsPqcInspectionRuleService;
import com.nflg.wms.repository.service.IUserService;
import com.nflg.wms.repository.service.*;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -77,7 +61,7 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
private IPositionService positionService;
@Resource
private IQmsPqcInspectionRuleService pqcInspectionRuleService;
private IQmsInspectorModelItemService inspectorModelItemService;
// ========================= 工具方法 =========================
@ -95,105 +79,35 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
.collect(Collectors.toMap(QmsQcMaterialCategory::getCategoryCode, QmsQcMaterialCategory::getId));
}
private List<String> normalizeModelNos(List<String> modelNos) {
if (CollectionUtils.isEmpty(modelNos)) {
return Collections.emptyList();
}
return modelNos.stream()
.filter(Objects::nonNull)
.map(String::trim)
.filter(modelNo -> !modelNo.isEmpty())
.distinct()
.collect(Collectors.toList());
}
private void savePqcModelBindings(Long inspectorId, List<String> modelNos) {
List<String> normalizedModelNos = normalizeModelNos(modelNos);
if (!normalizedModelNos.isEmpty()) {
List<String> existingModelNos = pqcInspectionRuleService.lambdaQuery()
.in(QmsPqcInspectionRule::getModelNo, normalizedModelNos)
.list()
.stream()
.map(QmsPqcInspectionRule::getModelNo)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
if (existingModelNos.size() != normalizedModelNos.size()) {
List<String> missingModelNos = normalizedModelNos.stream()
.filter(modelNo -> !existingModelNos.contains(modelNo))
.collect(Collectors.toList());
throw new NflgException(STATE.BusinessError, "PQC机型规则不存在" + String.join(",", missingModelNos));
}
inspectorModelItemService.lambdaUpdate()
.eq(QmsInspectorModelItem::getInspectorId, inspectorId)
.remove();
inspectorModelItemService.saveBatch(modelNos.stream()
.map(modelNo -> {
QmsInspectorModelItem item = new QmsInspectorModelItem();
item.setInspectorId(inspectorId);
item.setModelNo(modelNo);
item.setCreateBy(UserUtil.getUserName());
item.setCreateTime(LocalDateTime.now());
return item;
})
.collect(Collectors.toList())
);
}
pqcInspectionRuleService.lambdaUpdate()
.eq(QmsPqcInspectionRule::getInspectorId, inspectorId)
.set(QmsPqcInspectionRule::getInspectorId, null)
.update();
if (normalizedModelNos.isEmpty()) {
return;
}
pqcInspectionRuleService.lambdaUpdate()
.in(QmsPqcInspectionRule::getModelNo, normalizedModelNos)
.set(QmsPqcInspectionRule::getInspectorId, inspectorId)
.set(QmsPqcInspectionRule::getUpdateBy, UserUtil.getUserId())
.set(QmsPqcInspectionRule::getUpdateName, UserUtil.getUserName())
.set(QmsPqcInspectionRule::getUpdateTime, LocalDateTime.now())
.update();
}
private List<QmsQualityInspectorPqcModelVO> getPqcModelsByInspectorId(Long inspectorId) {
private List<String> getPqcModelsByInspectorId(Long inspectorId) {
if (inspectorId == null) {
return Collections.emptyList();
}
return pqcInspectionRuleService.lambdaQuery()
.eq(QmsPqcInspectionRule::getInspectorId, inspectorId)
.orderByAsc(QmsPqcInspectionRule::getModelNo)
return inspectorModelItemService.lambdaQuery()
.eq(QmsInspectorModelItem::getInspectorId, inspectorId)
.list()
.stream()
.map(rule -> {
QmsQualityInspectorPqcModelVO vo = new QmsQualityInspectorPqcModelVO();
vo.setPqcRuleId(rule.getId());
vo.setModelNo(rule.getModelNo());
vo.setPqcRuleCode(rule.getPqcRuleCode());
vo.setRuleVersion(rule.getRuleVersion());
return vo;
})
.collect(Collectors.toList());
}
private void fillPqcModelNos(List<QmsQualityInspectorVO> records) {
if (CollectionUtils.isEmpty(records)) {
return;
}
List<Long> inspectorIds = records.stream()
.filter(vo -> Objects.equals(vo.getInspectionType(), 2))
.map(QmsQualityInspectorVO::getId)
.map(QmsInspectorModelItem::getModelNo)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
if (inspectorIds.isEmpty()) {
return;
}
Map<Long, List<String>> modelNoMap = pqcInspectionRuleService.lambdaQuery()
.in(QmsPqcInspectionRule::getInspectorId, inspectorIds)
.list()
.stream()
.collect(Collectors.groupingBy(
QmsPqcInspectionRule::getInspectorId,
Collectors.mapping(QmsPqcInspectionRule::getModelNo,
Collectors.collectingAndThen(Collectors.toList(), modelNos -> modelNos.stream()
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList())))
));
records.forEach(vo -> {
if (Objects.equals(vo.getInspectionType(), 2)) {
vo.setPqcModelNos(modelNoMap.getOrDefault(vo.getId(), Collections.emptyList()));
}
});
}
private QmsQualityInspector getPqcInspector(Long id) {
@ -365,10 +279,9 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
.eq(QmsInspectorMaterialCategoryItem::getInspectorId, id)
.remove();
if (Objects.equals(inspector.getInspectionType(), 2)) {
pqcInspectionRuleService.lambdaUpdate()
.eq(QmsPqcInspectionRule::getInspectorId, inspector.getId())
.set(QmsPqcInspectionRule::getInspectorId, null)
.update();
inspectorModelItemService.lambdaUpdate()
.eq(QmsInspectorModelItem::getInspectorId, inspector.getId())
.remove();
}
// 删除主表
removeById(id);
@ -500,9 +413,7 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
@Override
public IPage<QmsQualityInspectorVO> search(QmsQualityInspectorSearchQO request) {
IPage<QmsQualityInspectorVO> page = baseMapper.searchPage(request, new Page<>(request.getPage(), request.getPageSize()));
fillPqcModelNos(page.getRecords());
return page;
return baseMapper.searchPage(request, new Page<>(request.getPage(), request.getPageSize()));
}
@Override

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nflg.wms.repository.mapper.QmsInspectorModelItemMapper">
</mapper>