feat(inspection): 批量删除检验标准功能

- 在控制器中新增批量删除接口,支持接收多个检验标准ID
- 服务层实现批量删除逻辑,包含检验标准及其关联检测项和检测项内容的级联删除
- 删除操作增加发布状态校验,已发布标准禁止删除
- 新增事务控制,保证删除过程的原子性
- 优化检验标准详情查询,包含检测项及其内容详细信息
- 实现新增、编辑和暂存检验标准时检测项及内容的同步处理机制
- 采用异常抛出反馈业务错误,提升系统稳定性和错误可追踪性
This commit is contained in:
曹鹏飞 2026-04-16 18:27:05 +08:00
parent 8680c34da9
commit afe72bbce9
2 changed files with 58 additions and 0 deletions

View File

@ -93,4 +93,13 @@ public class QmsInspectionStandardController extends BaseController {
public ApiResult<QmsInspectionStandardDetailVO> detail(@RequestParam @NotNull(message = "ID不能为空") Long id) {
return ApiResult.success(inspectionStandardControllerService.getDetail(id));
}
/**
* 批量删除检验标准
*/
@PostMapping("delete")
public ApiResult<Void> delete(@Valid @RequestBody IdsQO request) {
inspectionStandardControllerService.delete(request.getIds());
return ApiResult.success();
}
}

View File

@ -83,6 +83,55 @@ public class QmsInspectionStandardControllerService {
inspectionStandardService.enable(id, enable);
}
/**
* 批量删除检验标准
* @param ids 检验标准ID列表
*/
@Transactional(rollbackFor = Exception.class)
public void delete(List<Long> ids) {
if (ids == null || ids.isEmpty()) {
return;
}
for (Long id : ids) {
// 1. 校验检验标准是否存在
QmsInspectionStandard standard = inspectionStandardService.getById(id);
if (standard == null) {
continue;
}
// 2. 已发布的标准不允许删除
if (standard.getPublishStatus() != null && standard.getPublishStatus() == 1) {
throw new NflgException(com.nflg.wms.common.constant.STATE.BusinessError,
"已发布的检验标准不允许删除ID: " + id);
}
// 3. 查询该检验标准下所有检测项
List<QmsInspectionStandardItem> items = inspectionStandardItemService.lambdaQuery()
.eq(QmsInspectionStandardItem::getInspectionStandardId, id)
.list();
List<Long> itemIds = items.stream()
.map(QmsInspectionStandardItem::getId)
.collect(Collectors.toList());
// 4. 删除检测项内容
if (!itemIds.isEmpty()) {
inspectionStandardItemContentService.lambdaUpdate()
.in(QmsInspectionStandardItemContent::getInspectionStandardItemId, itemIds)
.remove();
}
// 5. 删除检测项
if (!itemIds.isEmpty()) {
inspectionStandardItemService.removeByIds(itemIds);
}
// 6. 删除检验标准
inspectionStandardService.removeById(id);
}
}
/**
* 查询检验标准详情包含检测项列表
* @param id 检验标准ID