|
|
|
|
@ -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 + ")"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|