槽液任务处理删除

liweidong
张乾翔 4 weeks ago
parent 29d608705c
commit 0f31e605d0
  1. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/LiquidTankTaskController.java
  2. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/ILiquidTankTaskService.java
  3. 91
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/LiquidTankTaskServiceImpl.java

@ -310,12 +310,12 @@ public class LiquidTankTaskController extends BladeController {
/**
* [槽液检测任务] 逻辑删除
*/
// @PostMapping("/remove")
// @ApiOperationSupport(order = 61)
// @Operation(summary = "逻辑删除", description = "传入ids")
// public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
// return R.status(service.deleteLogic(Func.toLongList(ids)));
// }
@GetMapping("/remove")
@ApiOperationSupport(order = 61)
@Operation(summary = "逻辑删除", description = "传入ids,仅允许删除【正常完成】或【异常完成】状态的任务,会级联删除关联的历史记录")
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return service.removeWithCheck(ids);
}
/**
* [槽液检测任务] 导出Excel

@ -77,4 +77,14 @@ public interface ILiquidTankTaskService extends BaseService<LiquidTankTask> {
void checkRemind();
void checkOut();
/**
* 删除任务(带状态校验)
* 只允许删除正常完成异常完成状态的任务
* 会级联删除关联的历史记录(LiquidTankTaskHi)
*
* @param ids 任务ID集合
* @return R
*/
R removeWithCheck(String ids);
}

@ -6,6 +6,7 @@ package org.springblade.desk.quality.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.cron.task.Task;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.Resource;
@ -632,4 +633,94 @@ public class LiquidTankTaskServiceImpl extends BaseServiceImpl<LiquidTankTaskMap
hiService.save(hi);
return task;
}
@Transactional
@Override
public R removeWithCheck(String ids) {
List<Long> idList = Func.toLongList(ids);
if (idList == null || idList.isEmpty()) {
return R.fail("请选择要删除的任务");
}
// 校验每个任务的状态,只允许删除已完成的任务
List<Long> canDeleteIds = new ArrayList<>();
List<String> cannotDeleteReasons = new ArrayList<>();
for (Long id : idList) {
LiquidTankTask task = baseMapper.selectById(id);
if (task == null) {
cannotDeleteReasons.add("ID:" + id + " 任务不存在");
continue;
}
// 只允许删除以下状态的任务:
// S_FINISH_OK(11): 正常结束
// S_FINISH_FAILED(10): 异常结束
if (task.getStatus().equals(LiquidTankTaskConst.S_FINISH_OK)
|| task.getStatus().equals(LiquidTankTaskConst.S_FINISH_FAILED)) {
canDeleteIds.add(id);
} else {
String statusName = getStatusName(task.getStatus());
cannotDeleteReasons.add("ID:" + id + " 当前状态【" + statusName + "】不允许删除");
}
}
// 如果有不能删除的任务,返回错误信息
if (!cannotDeleteReasons.isEmpty()) {
String errorMsg = String.join("; ", cannotDeleteReasons);
throw new RuntimeException("以下任务无法删除:" + errorMsg);
}
// 执行删除操作(包含关联数据)
if (!canDeleteIds.isEmpty()) {
for (Long taskId : canDeleteIds) {
// 关联的历史记录
hiService.remove(new LambdaQueryWrapper<LiquidTankTaskHi>()
.eq(LiquidTankTaskHi::getLiquidTankTaskId, taskId));
// 删除
basicDeleteLogic(java.util.Collections.singletonList(taskId));
}
return R.success();
}
return R.success();
}
/**
* 获取状态名称
*/
private String getStatusName(Integer status) {
if (status == null) {
return "未知";
}
switch (status) {
case 0:
return "初始化";
case 1:
return "待接收";
case 2:
return "待检测";
case 3:
return "已填报";
case 4:
return "待编辑加药量";
case 5:
return "待审核";
case 6:
return "待领药";
case 8:
return "待复检";
case 9:
return "待下发";
case 10:
return "异常结束";
case 11:
return "正常结束";
case 12:
return "暂存";
default:
return "未知状态(" + status + ")";
}
}
}

Loading…
Cancel
Save