1、调整仿真任务修改报工逻辑
This commit is contained in:
@@ -33,9 +33,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -62,6 +60,12 @@ public class SimulationWorkServiceImpl extends ServiceImpl<SimulationWorkMapper,
|
||||
public static final int WORK_TYPE_FINISH = 1; // 完成报工
|
||||
public static final int WORK_TYPE_EDIT = 2; // 编辑报工
|
||||
|
||||
// 应完成进度和实际完成进度的拓展属性名称集合
|
||||
private static final List<String> PROGRESS_PROPERTY_NAMES = Arrays.asList(
|
||||
SimulationTaskExtra.PROPERTY_NAME_ACTUAL_PROGRESS,
|
||||
SimulationTaskExtra.PROPERTY_NAME_SHOULD_PROGRESS
|
||||
);
|
||||
|
||||
/**
|
||||
* 更新任务应达成进度(删除旧值+保存新值)
|
||||
*/
|
||||
@@ -178,10 +182,11 @@ public class SimulationWorkServiceImpl extends ServiceImpl<SimulationWorkMapper,
|
||||
// 3. 更新报工
|
||||
boolean updateFlag = updateWrapper.eq(SimulationWork::getId, workId).update();
|
||||
|
||||
// 4. 同步更新任务实际进度(有值时才执行)
|
||||
// 4. 同步更新任务实际进度和任务应完成进度(有值时才执行)
|
||||
String actualProgress = req.getActualProgress();
|
||||
if (StringUtils.isNotBlank(actualProgress) && updateFlag) {
|
||||
syncTaskActualProgress(workId, actualProgress);
|
||||
String shouldProgress = req.getShouldProgress();
|
||||
if (updateFlag) {
|
||||
syncTaskProgress(workId, actualProgress, shouldProgress);
|
||||
}
|
||||
|
||||
return updateFlag;
|
||||
@@ -216,31 +221,57 @@ public class SimulationWorkServiceImpl extends ServiceImpl<SimulationWorkMapper,
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步更新任务实际进度:删旧存新
|
||||
* 构建待保存的任务扩展进度数据列表,非空参数才构建对应对象
|
||||
*/
|
||||
private void syncTaskActualProgress(Long workId, String actualProgress) {
|
||||
// 查询报工主数据(未查询到直接返回,不抛异常)
|
||||
private List<SimulationTaskExtra> buildTaskExtraList(String taskId, String actualProgress, String shouldProgress) {
|
||||
List<SimulationTaskExtra> extraList = new ArrayList<>(2);
|
||||
// 实际进度非空则构建
|
||||
if (StringUtils.isNotBlank(actualProgress)) {
|
||||
extraList.add(createTaskExtra(taskId, SimulationTaskExtra.PROPERTY_NAME_ACTUAL_PROGRESS, actualProgress));
|
||||
}
|
||||
// 应完成进度非空则构建
|
||||
if (StringUtils.isNotBlank(shouldProgress)) {
|
||||
extraList.add(createTaskExtra(taskId, SimulationTaskExtra.PROPERTY_NAME_SHOULD_PROGRESS, shouldProgress));
|
||||
}
|
||||
return extraList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 封装任务扩展数据对象的创建逻辑,避免重复代码
|
||||
*/
|
||||
private SimulationTaskExtra createTaskExtra(String taskId, String propertyName, String propertyValue) {
|
||||
SimulationTaskExtra taskExtra = new SimulationTaskExtra();
|
||||
taskExtra.setTaskId(taskId);
|
||||
taskExtra.setPropertyName(propertyName);
|
||||
taskExtra.setPropertyValue(propertyValue);
|
||||
return taskExtra;
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步更新任务实际进度和应完成进度:删旧存新
|
||||
*/
|
||||
private void syncTaskProgress(Long workId, String actualProgress, String shouldProgress) {
|
||||
// 1. 校验报工数据,无有效数据直接返回
|
||||
SimulationWork simulationWork = this.getById(workId);
|
||||
if (ObjectUtils.isEmpty(simulationWork) || ObjectUtils.isEmpty(simulationWork.getTaskId())) {
|
||||
if (ObjectUtils.isEmpty(simulationWork) || StringUtils.isBlank(simulationWork.getTaskId())) {
|
||||
log.warn("报工记录不存在或任务ID为空,报工ID:{}", workId);
|
||||
return;
|
||||
}
|
||||
|
||||
// 报工关联的任务uuid
|
||||
String taskId = simulationWork.getTaskId();
|
||||
|
||||
// 删除原有进度配置
|
||||
// 2. 批量删除旧的进度数据
|
||||
taskExtraService.lambdaUpdate()
|
||||
.eq(SimulationTaskExtra::getTaskId, taskId)
|
||||
.eq(SimulationTaskExtra::getPropertyName, SimulationTaskExtra.PROPERTY_NAME_ACTUAL_PROGRESS)
|
||||
.in(SimulationTaskExtra::getPropertyName, PROGRESS_PROPERTY_NAMES)
|
||||
.remove();
|
||||
|
||||
// 保存最新进度配置
|
||||
SimulationTaskExtra taskExtra = new SimulationTaskExtra();
|
||||
taskExtra.setTaskId(taskId);
|
||||
taskExtra.setPropertyName(SimulationTaskExtra.PROPERTY_NAME_ACTUAL_PROGRESS);
|
||||
taskExtra.setPropertyValue(actualProgress);
|
||||
taskExtraService.save(taskExtra);
|
||||
// 3. 构建待保存的进度数据列表,统一批量保存
|
||||
List<SimulationTaskExtra> saveList = buildTaskExtraList(taskId, actualProgress, shouldProgress);
|
||||
if (CollectionUtils.isEmpty(saveList)) {
|
||||
return;
|
||||
}
|
||||
taskExtraService.saveBatch(saveList);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user