feat(inspection): 批量删除检验标准功能
- 在控制器中新增批量删除接口,支持接收多个检验标准ID - 服务层实现批量删除逻辑,包含检验标准及其关联检测项和检测项内容的级联删除 - 删除操作增加发布状态校验,已发布标准禁止删除 - 新增事务控制,保证删除过程的原子性 - 优化检验标准详情查询,包含检测项及其内容详细信息 - 实现新增、编辑和暂存检验标准时检测项及内容的同步处理机制 - 采用异常抛出反馈业务错误,提升系统稳定性和错误可追踪性
This commit is contained in:
parent
8680c34da9
commit
afe72bbce9
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue