Merge remote-tracking branch 'refs/remotes/惠信/qms/yf' into qms/develop

This commit is contained in:
曹鹏飞 2026-04-22 13:28:55 +08:00
commit 2e2111c0ba
5 changed files with 72 additions and 59 deletions

View File

@ -38,9 +38,6 @@ public class QmsCoaTaskController extends BaseController {
@Resource
private IQmsCoaTaskService coaTaskService;
@Resource
private List<ISendMessageService> sendMessageServices;
@Resource
private IQmsTodoItemService todoItemService;

View File

@ -43,14 +43,14 @@ public class QmsQualityInspectorController extends BaseController {
}
/**
* 删除质检人员传入 userId删除该用户所有关联记录启用状态下不允许删除
* 删除质检人员传入 id删除该用户所有关联记录启用状态下不允许删除
*
* @param userId 员工ID
* @param id 质检人员主表ID
*/
@Transactional
@PostMapping("delete")
public ApiResult<Void> delete(@NotNull Long userId) {
qualityInspectorService.delete(userId);
public ApiResult<Void> delete(@NotNull Long id) {
qualityInspectorService.delete(id);
return ApiResult.success();
}
@ -73,13 +73,13 @@ public class QmsQualityInspectorController extends BaseController {
}
/**
* 员工ID查询质检人员详情物料和物料类别分开返回不分页
* ID查询质检人员详情物料和物料类别分开返回不分页
*
* @param userId 员工IDuser.id
* @param id 质检人员主表ID
*/
@GetMapping("detail")
public ApiResult<QmsQualityInspectorDetailVO> detail(@NotNull Long userId) {
return ApiResult.success(qualityInspectorService.getDetailByUserId(userId));
public ApiResult<QmsQualityInspectorDetailVO> detail(@NotNull Long id) {
return ApiResult.success(qualityInspectorService.getDetailByUserId(id));
}
/**
@ -88,7 +88,7 @@ public class QmsQualityInspectorController extends BaseController {
@Transactional
@PostMapping("updateStatus")
public ApiResult<Void> updateStatus(@Valid @RequestBody QmsQualityInspectorStatusQO request) {
qualityInspectorService.updateStatus(request.getUserId(), request.getEnable());
qualityInspectorService.updateStatus(request.getId(), request.getEnable());
return ApiResult.success();
}
@ -105,12 +105,12 @@ public class QmsQualityInspectorController extends BaseController {
/**
* 取消转办将该质检人所有记录的转办人清空
*
* @param userId 员工ID
* @param id 质检人员主表ID
*/
@Transactional
@PostMapping("cancelTransfer")
public ApiResult<Void> cancelTransfer(@NotNull Long userId) {
qualityInspectorService.cancelTransfer(userId);
public ApiResult<Void> cancelTransfer(@NotNull Long id) {
qualityInspectorService.cancelTransfer(id);
return ApiResult.success();
}

View File

@ -10,10 +10,10 @@ import lombok.Data;
public class QmsQualityInspectorStatusQO {
/**
* 质检人ID必传
* 质检人员主表ID必传
*/
@NotNull(message = "质检人ID不能为空")
private Long userId;
@NotNull(message = "ID不能为空")
private Long id;
/**
* 状态true=启用false=禁用

View File

@ -31,9 +31,9 @@ public interface IQmsQualityInspectorService extends IService<QmsQualityInspecto
void add(QmsQualityInspectorAddQO request);
/**
* 删除质检人员传入 userId删除该用户所有关联记录启用状态不允许删除
* 删除质检人员传入主表 id删除该用户所有关联记录启用状态不允许删除
*/
void delete(Long userId);
void delete(Long id);
/**
* 修改质检人员的物料/物料类别追加或删除
@ -46,14 +46,14 @@ public interface IQmsQualityInspectorService extends IService<QmsQualityInspecto
IPage<QmsQualityInspectorVO> search(QmsQualityInspectorSearchQO request);
/**
* 员工IDuser_id查询质检人员详情物料和物料类别分开返回不分页
* 主表 id 查询质检人员详情物料和物料类别分开返回不分页
*/
QmsQualityInspectorDetailVO getDetailByUserId(Long userId);
QmsQualityInspectorDetailVO getDetailByUserId(Long id);
/**
* 修改状态将该质检人的所有记录状态全改
*/
void updateStatus(Long userId, Boolean enable);
void updateStatus(Long id, Boolean enable);
/**
* 转办将该质检人所有记录设置转办人
@ -63,7 +63,7 @@ public interface IQmsQualityInspectorService extends IService<QmsQualityInspecto
/**
* 取消转办将该质检人所有记录的转办人清空
*/
void cancelTransfer(Long userId);
void cancelTransfer(Long id);
/**
* userId 查询当前用户绑定的物料列表支持物料编号/类别/描述过滤分页

View File

@ -139,7 +139,7 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
.setUpdateBy(operator)
.setUpdateTime(now);
save(inspector);
Long inspectorId = inspector.getUserId();
Long inspectorId = inspector.getId();
// 批量插入物料明细
if (!CollectionUtils.isEmpty(request.getMaterialIds())) {
@ -181,11 +181,9 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
@Transactional
@Override
public void delete(Long userId) {
// 查询主表记录
QmsQualityInspector inspector = lambdaQuery()
.eq(QmsQualityInspector::getUserId, userId)
.one();
public void delete(Long id) {
// 按主表 id 查主表记录
QmsQualityInspector inspector = getById(id);
if (Objects.isNull(inspector)) {
throw new NflgException(STATE.BusinessError, "该质检人员不存在");
}
@ -193,16 +191,15 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
if (Boolean.TRUE.equals(inspector.getEnable())) {
throw new NflgException(STATE.BusinessError, "该质检人员处于启用状态,不允许删除,请先禁用后再删除");
}
Long inspectorId = inspector.getId();
// 删除两张明细表
materialItemService.lambdaUpdate()
.eq(QmsInspectorMaterialItem::getInspectorId, inspectorId)
.eq(QmsInspectorMaterialItem::getInspectorId, id)
.remove();
materialCategoryItemService.lambdaUpdate()
.eq(QmsInspectorMaterialCategoryItem::getInspectorId, inspectorId)
.eq(QmsInspectorMaterialCategoryItem::getInspectorId, id)
.remove();
// 删除主表
removeById(inspectorId);
removeById(id);
}
// ========================= 修改物料/物料类别 =========================
@ -221,16 +218,28 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
if (Objects.isNull(inspector)) {
throw new NflgException(STATE.BusinessError, "该质检人员不存在");
}
Long inspectorId = inspector.getUserId();
Long inspectorId = inspector.getId();
Integer inspectionType = inspector.getInspectionType();
// 追加物料
if (!CollectionUtils.isEmpty(request.getAddMaterialIds())) {
// 校验这些物料是否已被任意质检员绑定含自己
// 校验这些物料是否已被相同 inspectionType 的质检员绑定
List<QmsInspectorMaterialItem> conflictMaterials = materialItemService.lambdaQuery()
.in(QmsInspectorMaterialItem::getMaterialId, request.getAddMaterialIds())
.list();
if (!conflictMaterials.isEmpty()) {
throw new NflgException(STATE.BusinessError, "追加的物料中存在已被质检员绑定的物料,不允许重复追加");
// 查冲突记录对应的质检员 inspectionType
List<Long> conflictInspectorIds = conflictMaterials.stream()
.map(QmsInspectorMaterialItem::getInspectorId)
.distinct()
.collect(Collectors.toList());
boolean sameTypeConflict = lambdaQuery()
.in(QmsQualityInspector::getId, conflictInspectorIds)
.eq(QmsQualityInspector::getInspectionType, inspectionType)
.exists();
if (sameTypeConflict) {
throw new NflgException(STATE.BusinessError, "追加的物料中存在已被相同质检类型的质检员绑定的物料,不允许重复追加");
}
}
List<QmsInspectorMaterialItem> toAdd = request.getAddMaterialIds().stream()
.map(materialId -> new QmsInspectorMaterialItem()
@ -256,13 +265,23 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
if (!CollectionUtils.isEmpty(request.getAddMaterialCategoryCodes())) {
Map<String, Long> codeToIdMap = getCategoryCodeToIdMap(request.getAddMaterialCategoryCodes());
List<Long> addCategoryIds = new ArrayList<>(codeToIdMap.values());
// 校验这些物料类别是否已被任意质检员绑定含自己
// 校验这些物料类别是否已被相同 inspectionType 的质检员绑定
if (!addCategoryIds.isEmpty()) {
List<QmsInspectorMaterialCategoryItem> conflictCategories = materialCategoryItemService.lambdaQuery()
.in(QmsInspectorMaterialCategoryItem::getMaterialCategoryId, addCategoryIds)
.list();
if (!conflictCategories.isEmpty()) {
throw new NflgException(STATE.BusinessError, "追加的物料类别中存在已被质检员绑定的类别,不允许重复追加");
List<Long> conflictInspectorIds = conflictCategories.stream()
.map(QmsInspectorMaterialCategoryItem::getInspectorId)
.distinct()
.collect(Collectors.toList());
boolean sameTypeConflict = lambdaQuery()
.in(QmsQualityInspector::getId, conflictInspectorIds)
.eq(QmsQualityInspector::getInspectionType, inspectionType)
.exists();
if (sameTypeConflict) {
throw new NflgException(STATE.BusinessError, "追加的物料类别中存在已被相同质检类型的质检员绑定的类别,不允许重复追加");
}
}
}
List<QmsInspectorMaterialCategoryItem> toAdd = new ArrayList<>();
@ -304,15 +323,15 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
}
@Override
public QmsQualityInspectorDetailVO getDetailByUserId(Long userId) {
// user_id 查主表取到 inspector.id 后再查两张明细表
QmsQualityInspector inspector = lambdaQuery()
.eq(QmsQualityInspector::getUserId, userId)
.one();
public QmsQualityInspectorDetailVO getDetailByUserId(Long id) {
// 按主表 id 查主表
QmsQualityInspector inspector = getById(id);
if (Objects.isNull(inspector)) {
return null;
}
Long userId = inspector.getUserId();
// user 信息
User user = userService.getById(userId);
@ -351,9 +370,9 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
detail.setDeptLeaderName(null);
detail.setPositionName(positionName);
// userId 查物料列表和物料类别列表明细表 inspector_id 存的是 user.id
detail.setMaterials(baseMapper.getMaterialsByInspectorId(userId));
detail.setCategories(baseMapper.getCategoriesByInspectorId(userId));
// 用主表 id 查明细表
detail.setMaterials(baseMapper.getMaterialsByInspectorId(id));
detail.setCategories(baseMapper.getCategoriesByInspectorId(id));
return detail;
}
@ -362,25 +381,22 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
@Transactional
@Override
public void updateStatus(Long userId, Boolean enable) {
public void updateStatus(Long id, Boolean enable) {
// 仅在改为启用时做校验
if (Boolean.TRUE.equals(enable)) {
QmsQualityInspector inspector = lambdaQuery()
.eq(QmsQualityInspector::getUserId, userId)
.one();
QmsQualityInspector inspector = getById(id);
if (Objects.isNull(inspector)) {
throw new NflgException(STATE.BusinessError, "该质检人员不存在");
}
Long inspectorId = inspector.getId();
// 查当前人员绑定的物料ID列表
List<QmsInspectorMaterialItem> myMaterials = materialItemService.lambdaQuery()
.eq(QmsInspectorMaterialItem::getInspectorId, inspectorId)
.eq(QmsInspectorMaterialItem::getInspectorId, id)
.list();
// 查当前人员绑定的物料类别ID列表
List<QmsInspectorMaterialCategoryItem> myCategories = materialCategoryItemService.lambdaQuery()
.eq(QmsInspectorMaterialCategoryItem::getInspectorId, inspectorId)
.eq(QmsInspectorMaterialCategoryItem::getInspectorId, id)
.list();
// 校验物料是否已被其他启用的质检员接管
@ -391,7 +407,7 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
// 查其他人员中是否有相同物料绑定排除自己
List<QmsInspectorMaterialItem> conflictItems = materialItemService.lambdaQuery()
.in(QmsInspectorMaterialItem::getMaterialId, myMaterialIds)
.ne(QmsInspectorMaterialItem::getInspectorId, inspectorId)
.ne(QmsInspectorMaterialItem::getInspectorId, id)
.list();
if (!conflictItems.isEmpty()) {
// 进一步判断接管人员是否处于启用状态
@ -416,7 +432,7 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
.collect(Collectors.toList());
List<QmsInspectorMaterialCategoryItem> conflictItems = materialCategoryItemService.lambdaQuery()
.in(QmsInspectorMaterialCategoryItem::getMaterialCategoryId, myCategoryIds)
.ne(QmsInspectorMaterialCategoryItem::getInspectorId, inspectorId)
.ne(QmsInspectorMaterialCategoryItem::getInspectorId, id)
.list();
if (!conflictItems.isEmpty()) {
List<Long> conflictInspectorIds = conflictItems.stream()
@ -435,7 +451,7 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
}
lambdaUpdate()
.eq(QmsQualityInspector::getUserId, userId)
.eq(QmsQualityInspector::getId, id)
.set(QmsQualityInspector::getEnable, enable)
.set(QmsQualityInspector::getUpdateBy, UserUtil.getUserName())
.set(QmsQualityInspector::getUpdateTime, LocalDateTime.now())
@ -459,9 +475,9 @@ public class QmsQualityInspectorServiceImpl extends ServiceImpl<QmsQualityInspec
@Transactional
@Override
public void cancelTransfer(Long userId) {
public void cancelTransfer(Long id) {
lambdaUpdate()
.eq(QmsQualityInspector::getUserId, userId)
.eq(QmsQualityInspector::getId, id)
.set(QmsQualityInspector::getChangeUserId, null)
.set(QmsQualityInspector::getUpdateBy, UserUtil.getUserName())
.set(QmsQualityInspector::getUpdateTime, LocalDateTime.now())