|
|
@ -5,7 +5,10 @@ import com.github.yulichang.toolkit.JoinWrappers;
|
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
|
import io.seata.spring.annotation.GlobalTransactional;
|
|
|
|
import io.seata.spring.annotation.GlobalTransactional;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
|
|
|
|
|
import com.alibaba.ttl.TtlRunnable;
|
|
|
|
|
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
|
import org.dromara.common.core.constant.DmsConstants;
|
|
|
|
import org.dromara.common.core.constant.DmsConstants;
|
|
|
|
import org.dromara.common.core.exception.ServiceException;
|
|
|
|
import org.dromara.common.core.exception.ServiceException;
|
|
|
|
import org.dromara.common.core.utils.DateUtils;
|
|
|
|
import org.dromara.common.core.utils.DateUtils;
|
|
|
@ -30,11 +33,14 @@ import org.dromara.dms.mapper.*;
|
|
|
|
import org.dromara.dms.service.IDmsBillsLubeInstanceService;
|
|
|
|
import org.dromara.dms.service.IDmsBillsLubeInstanceService;
|
|
|
|
import org.dromara.workflow.api.RemoteWorkflowService;
|
|
|
|
import org.dromara.workflow.api.RemoteWorkflowService;
|
|
|
|
import org.dromara.workflow.api.domain.RemoteCompleteTask;
|
|
|
|
import org.dromara.workflow.api.domain.RemoteCompleteTask;
|
|
|
|
|
|
|
|
import org.dromara.workflow.api.domain.RemoteStartProcess;
|
|
|
|
|
|
|
|
import org.dromara.workflow.api.domain.RemoteStartProcessReturn;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import org.springframework.util.ObjectUtils;
|
|
|
|
import org.springframework.util.ObjectUtils;
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -43,6 +49,7 @@ import java.util.stream.Collectors;
|
|
|
|
* @author zch
|
|
|
|
* @author zch
|
|
|
|
* @date 2025-03-25
|
|
|
|
* @date 2025-03-25
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
@Service
|
|
|
|
@Service
|
|
|
|
public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceService {
|
|
|
|
public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceService {
|
|
|
@ -290,7 +297,7 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer
|
|
|
|
// 设置润滑详情对象的润滑ID
|
|
|
|
// 设置润滑详情对象的润滑ID
|
|
|
|
queryBillsLubeDetail.setLubeInstanceId(newestBillsLubeInstance.getLubeInstanceId());
|
|
|
|
queryBillsLubeDetail.setLubeInstanceId(newestBillsLubeInstance.getLubeInstanceId());
|
|
|
|
List<LubricationDetail> dmsBillsLubeDetails = dmsBillsLubeDetailMapper.selectDmsBillsLubeDetailJoinList(queryBillsLubeDetail);
|
|
|
|
List<LubricationDetail> dmsBillsLubeDetails = dmsBillsLubeDetailMapper.selectDmsBillsLubeDetailJoinList(queryBillsLubeDetail);
|
|
|
|
newestBillsLubeInstance.setDmsBillsLubeDetails(dmsBillsLubeDetails);
|
|
|
|
newestBillsLubeInstance.setDmsBillsLubeDetailList(dmsBillsLubeDetails);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return newestBillsLubeInstance;
|
|
|
|
return newestBillsLubeInstance;
|
|
|
@ -315,8 +322,6 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer
|
|
|
|
Long userId = LoginHelper.getUserId();
|
|
|
|
Long userId = LoginHelper.getUserId();
|
|
|
|
String userName = LoginHelper.getLoginUser()==null ? LoginHelper.getUsername() :LoginHelper.getLoginUser().getNickname();
|
|
|
|
String userName = LoginHelper.getLoginUser()==null ? LoginHelper.getUsername() :LoginHelper.getLoginUser().getNickname();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取润滑状态,如果为空则设置为待润滑状态
|
|
|
|
// 获取润滑状态,如果为空则设置为待润滑状态
|
|
|
|
String lubeStatus = StringUtils.isEmpty(dmsBillsLubeInstance.getLubeStatus()) ?
|
|
|
|
String lubeStatus = StringUtils.isEmpty(dmsBillsLubeInstance.getLubeStatus()) ?
|
|
|
|
DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_TO_LUBE : dmsBillsLubeInstance.getLubeStatus();
|
|
|
|
DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_TO_LUBE : dmsBillsLubeInstance.getLubeStatus();
|
|
|
@ -330,19 +335,50 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer
|
|
|
|
updateInstance.setLubeInstanceId(dmsBillsLubeInstance.getLubeInstanceId());
|
|
|
|
updateInstance.setLubeInstanceId(dmsBillsLubeInstance.getLubeInstanceId());
|
|
|
|
updateInstance.setLubeStatus(DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_LUBING);
|
|
|
|
updateInstance.setLubeStatus(DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_LUBING);
|
|
|
|
updateInstance.setRealBeginTime(currentDate);
|
|
|
|
updateInstance.setRealBeginTime(currentDate);
|
|
|
|
//updateInstance.setUpdateBy(userId);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 更新润滑工单信息
|
|
|
|
// 【工作流启动】创建远程启动流程对象
|
|
|
|
this.updateByBo(updateInstance);
|
|
|
|
RemoteStartProcess startProcess = new RemoteStartProcess();
|
|
|
|
|
|
|
|
// 设置润滑工作流程代码
|
|
|
|
|
|
|
|
startProcess.setFlowCode(DmsConstants.DMS_BILLS_LUBE_INSTANCE_WF_CODE);
|
|
|
|
|
|
|
|
// 获取业务ID(润滑实例ID)
|
|
|
|
|
|
|
|
String businessId = dmsBillsLubeInstance.getLubeInstanceId().toString();
|
|
|
|
|
|
|
|
// 设置业务ID
|
|
|
|
|
|
|
|
startProcess.setBusinessId(businessId);
|
|
|
|
|
|
|
|
// 启动工作流程
|
|
|
|
|
|
|
|
RemoteStartProcessReturn remoteStartProcessReturn = remoteWorkflowService.startWorkFlow(startProcess);
|
|
|
|
|
|
|
|
// 获取任务ID
|
|
|
|
|
|
|
|
Long taskId = remoteStartProcessReturn.getTaskId();
|
|
|
|
|
|
|
|
// 如果任务ID为空,抛出流程启动失败异常
|
|
|
|
|
|
|
|
if (StringUtils.isNull(taskId)) {
|
|
|
|
|
|
|
|
throw new ServiceException("润滑工作流启动失败");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// 【异步线程上下文传递】解决Sa-Token在异步线程中丢失的问题
|
|
|
|
|
|
|
|
// 1. 【捕获Token】: 在主线程中获取当前用户的Token
|
|
|
|
|
|
|
|
final String tokenValue = StpUtil.getTokenValue();
|
|
|
|
|
|
|
|
// 2. 【异步更新工作流】: 使用TtlRunnable包装异步任务,确保ThreadLocal变量传递
|
|
|
|
|
|
|
|
CompletableFuture.runAsync(TtlRunnable.get(() -> {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
// 3. 【设置上下文】: 在异步线程中恢复Token上下文
|
|
|
|
|
|
|
|
StpUtil.setTokenValue(tokenValue);
|
|
|
|
|
|
|
|
// 4. 【执行业务】: 更新润滑工单的工作流信息
|
|
|
|
|
|
|
|
updateLubeWorkFlow(updateInstance, taskId);
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
// 【错误处理】记录异常但不影响主流程
|
|
|
|
|
|
|
|
log.error("异步更新润滑工作流失败,getBillsLubeCode: {}, 错误: {}",
|
|
|
|
|
|
|
|
dmsBillsLubeInstance.getBillsLubeCode(), e.getMessage(), e);
|
|
|
|
|
|
|
|
// 可以考虑记录到失败表,后续补偿处理
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 更新润滑工单明细状态
|
|
|
|
// 更新润滑工单明细状态
|
|
|
|
bo.setBeginTime(currentDate);
|
|
|
|
bo.setBeginTime(currentDate);
|
|
|
|
bo.setMaintStatus(DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_LUBING);
|
|
|
|
bo.setMaintStatus(DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_LUBING);
|
|
|
|
dmsBillsLubeDetailMapper.updateById(MapstructUtils.convert(bo, DmsBillsLubeDetail.class));
|
|
|
|
int i = dmsBillsLubeDetailMapper.updateById(MapstructUtils.convert(bo, DmsBillsLubeDetail.class));
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
// 润滑中状态只需更新润滑工单明细
|
|
|
|
// 润滑中状态只需更新润滑工单明细
|
|
|
|
//bo.setUpdateBy(userId);
|
|
|
|
//bo.setUpdateBy(userId);
|
|
|
|
dmsBillsLubeDetailMapper.updateById(MapstructUtils.convert(bo, DmsBillsLubeDetail.class));
|
|
|
|
int i = dmsBillsLubeDetailMapper.updateById(MapstructUtils.convert(bo, DmsBillsLubeDetail.class));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
@ -364,21 +400,11 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer
|
|
|
|
// 根据润滑工单ID查询润滑实例信息
|
|
|
|
// 根据润滑工单ID查询润滑实例信息
|
|
|
|
DmsBillsLubeInstanceVo dmsBillsLubeInstance = this.queryById(lubeInstanceId);
|
|
|
|
DmsBillsLubeInstanceVo dmsBillsLubeInstance = this.queryById(lubeInstanceId);
|
|
|
|
|
|
|
|
|
|
|
|
// 获取工作流任务ID
|
|
|
|
|
|
|
|
Long taskId = dmsBillsLubeInstance.getWfDefinitionId();
|
|
|
|
|
|
|
|
// 创建远程完成任务的实例
|
|
|
|
|
|
|
|
RemoteCompleteTask completeTask = new RemoteCompleteTask();
|
|
|
|
|
|
|
|
// 设置任务ID
|
|
|
|
|
|
|
|
completeTask.setTaskId(taskId);
|
|
|
|
|
|
|
|
// 调用远程服务完成任务,返回任务执行状态
|
|
|
|
|
|
|
|
boolean taskFlag = remoteWorkflowService.completeTask(completeTask);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取润滑状态,如果为空则设置为待润滑状态
|
|
|
|
// 获取润滑状态,如果为空则设置为待润滑状态
|
|
|
|
String lubeStatus = StringUtils.isEmpty(dmsBillsLubeInstance.getLubeStatus()) ?
|
|
|
|
String lubeStatus = StringUtils.isEmpty(dmsBillsLubeInstance.getLubeStatus()) ?
|
|
|
|
DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_TO_LUBE : dmsBillsLubeInstance.getLubeStatus();
|
|
|
|
DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_TO_LUBE : dmsBillsLubeInstance.getLubeStatus();
|
|
|
|
|
|
|
|
|
|
|
|
// 验证润滑状态
|
|
|
|
// 【状态验证】验证润滑状态
|
|
|
|
if (lubeStatus.equals(DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_COMPLETE)) {
|
|
|
|
if (lubeStatus.equals(DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_COMPLETE)) {
|
|
|
|
throw new ServiceException("已经润滑完成");
|
|
|
|
throw new ServiceException("已经润滑完成");
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -391,14 +417,14 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer
|
|
|
|
Date currentDate = DateUtils.getNowDate();
|
|
|
|
Date currentDate = DateUtils.getNowDate();
|
|
|
|
Long userId = LoginHelper.getUserId();
|
|
|
|
Long userId = LoginHelper.getUserId();
|
|
|
|
|
|
|
|
|
|
|
|
// 查询所有相关的润滑明细
|
|
|
|
// 【查询相关明细】查询所有相关的润滑明细
|
|
|
|
MPJLambdaWrapper<DmsBillsLubeDetail> detailWrapper = JoinWrappers.lambda(DmsBillsLubeDetail.class)
|
|
|
|
MPJLambdaWrapper<DmsBillsLubeDetail> detailWrapper = JoinWrappers.lambda(DmsBillsLubeDetail.class)
|
|
|
|
.selectAll(DmsBillsLubeDetail.class)
|
|
|
|
.selectAll(DmsBillsLubeDetail.class)
|
|
|
|
.eq(DmsBillsLubeDetail::getLubeInstanceId, lubeInstanceId);
|
|
|
|
.eq(DmsBillsLubeDetail::getLubeInstanceId, lubeInstanceId);
|
|
|
|
|
|
|
|
|
|
|
|
List<DmsBillsLubeDetailVo> lubeDetails = dmsBillsLubeDetailMapper.selectJoinList(DmsBillsLubeDetailVo.class, detailWrapper);
|
|
|
|
List<DmsBillsLubeDetailVo> lubeDetails = dmsBillsLubeDetailMapper.selectJoinList(DmsBillsLubeDetailVo.class, detailWrapper);
|
|
|
|
|
|
|
|
|
|
|
|
/**获取未完成的润滑明细,并且需要排除当前提交完成的润滑明细*/
|
|
|
|
/**【筛选未完成明细】获取未完成的润滑明细,并且需要排除当前提交完成的润滑明细*/
|
|
|
|
List<DmsBillsLubeDetailVo> inCompleteLubeDetails = lubeDetails.stream()
|
|
|
|
List<DmsBillsLubeDetailVo> inCompleteLubeDetails = lubeDetails.stream()
|
|
|
|
.filter(lubeDetail -> !lubeDetail.getBillsLubeDetailId().equals(bo.getBillsLubeDetailId())
|
|
|
|
.filter(lubeDetail -> !lubeDetail.getBillsLubeDetailId().equals(bo.getBillsLubeDetailId())
|
|
|
|
&& (lubeDetail.getMaintStatus() == null
|
|
|
|
&& (lubeDetail.getMaintStatus() == null
|
|
|
@ -407,17 +433,35 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer
|
|
|
|
|| lubeDetail.getMaintStatus().equals(Long.valueOf(DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_LUBING))))
|
|
|
|
|| lubeDetail.getMaintStatus().equals(Long.valueOf(DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_LUBING))))
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
/**如果已经没有未完成的,则需要将工单修改成已完成,并更新结束时间*/
|
|
|
|
/**【整体完成处理】如果已经没有未完成的,则需要将工单修改成已完成,并完成工作流*/
|
|
|
|
if (inCompleteLubeDetails == null || inCompleteLubeDetails.isEmpty()) {
|
|
|
|
if (inCompleteLubeDetails == null || inCompleteLubeDetails.isEmpty()) {
|
|
|
|
DmsBillsLubeInstanceBo updateInstance = new DmsBillsLubeInstanceBo();
|
|
|
|
DmsBillsLubeInstanceBo updateInstance = new DmsBillsLubeInstanceBo();
|
|
|
|
updateInstance.setLubeInstanceId(lubeInstanceId);
|
|
|
|
updateInstance.setLubeInstanceId(lubeInstanceId);
|
|
|
|
updateInstance.setLubeStatus(DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_COMPLETE);
|
|
|
|
updateInstance.setLubeStatus(DmsConstants.DMS_BILLS_LUBE_INSTANCE_STATUS_COMPLETE);
|
|
|
|
updateInstance.setRealEndTime(currentDate);
|
|
|
|
updateInstance.setRealEndTime(currentDate);
|
|
|
|
// updateInstance.setUpdateBy(userId);
|
|
|
|
|
|
|
|
|
|
|
|
// 【工作流完成】完成润滑工作流
|
|
|
|
|
|
|
|
Long taskId = dmsBillsLubeInstance.getWfDefinitionId();
|
|
|
|
|
|
|
|
if (taskId != null) {
|
|
|
|
|
|
|
|
RemoteCompleteTask remoteCompleteTask = new RemoteCompleteTask();
|
|
|
|
|
|
|
|
remoteCompleteTask.setTaskId(taskId);
|
|
|
|
|
|
|
|
remoteCompleteTask.setMessage("润滑工单完成,自动推进");
|
|
|
|
|
|
|
|
// 【关键】设置消息类型为非null的List(避免原始错误)
|
|
|
|
|
|
|
|
List<String> messageTypes = new ArrayList<>();
|
|
|
|
|
|
|
|
messageTypes.add("system"); // 系统消息
|
|
|
|
|
|
|
|
remoteCompleteTask.setMessageType(messageTypes);
|
|
|
|
|
|
|
|
// 完成工作流任务
|
|
|
|
|
|
|
|
boolean taskCompleted = remoteWorkflowService.completeTask(remoteCompleteTask);
|
|
|
|
|
|
|
|
if (!taskCompleted) {
|
|
|
|
|
|
|
|
log.error("润滑工作流完成失败,taskId: {}", taskId);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 更新润滑工单状态
|
|
|
|
this.updateByBo(updateInstance);
|
|
|
|
this.updateByBo(updateInstance);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 更新润滑明细状态为已完成
|
|
|
|
// 【更新明细状态】更新润滑明细状态为已完成
|
|
|
|
bo.setEndTime(currentDate);
|
|
|
|
bo.setEndTime(currentDate);
|
|
|
|
//bo.setUpdateBy(userId);
|
|
|
|
//bo.setUpdateBy(userId);
|
|
|
|
bo.setMaintStatus(String.valueOf(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_COMPLETE));
|
|
|
|
bo.setMaintStatus(String.valueOf(DmsConstants.DMS_BILLS_MAINT_INSTANCE_STATUS_COMPLETE));
|
|
|
@ -450,5 +494,45 @@ public class DmsBillsLubeInstanceServiceImpl implements IDmsBillsLubeInstanceSer
|
|
|
|
return baseMapper.updateById(entity) > 0;
|
|
|
|
return baseMapper.updateById(entity) > 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 【异步工作流更新方法】更新润滑工单的工作流信息
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param updateInstance 润滑工单更新对象
|
|
|
|
|
|
|
|
* @param taskId 工作流任务ID
|
|
|
|
|
|
|
|
* @return 更新是否成功
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private Boolean updateLubeWorkFlow(DmsBillsLubeInstanceBo updateInstance, Long taskId) {
|
|
|
|
|
|
|
|
// 【设置工作流任务ID】将工作流任务ID设置到润滑工单中
|
|
|
|
|
|
|
|
updateInstance.setWfDefinitionId(taskId);
|
|
|
|
|
|
|
|
// 【更新润滑工单信息】保存工作流相关信息
|
|
|
|
|
|
|
|
DmsBillsLubeInstanceVo dmsBillsLubeInstanceVo = this.updateByBo(updateInstance);
|
|
|
|
|
|
|
|
if (ObjectUtils.isEmpty(dmsBillsLubeInstanceVo)){
|
|
|
|
|
|
|
|
// 【更新失败处理】润滑工单更新失败,记录错误并返回false
|
|
|
|
|
|
|
|
log.error("润滑工单工作流信息更新失败,lubeInstanceId: {}", updateInstance.getLubeInstanceId());
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 【自动推进工作流】完成第一步任务,推进到下一步
|
|
|
|
|
|
|
|
RemoteCompleteTask remoteCompleteTask = new RemoteCompleteTask();
|
|
|
|
|
|
|
|
// 设置任务ID
|
|
|
|
|
|
|
|
remoteCompleteTask.setTaskId(taskId);
|
|
|
|
|
|
|
|
// 设置完成消息
|
|
|
|
|
|
|
|
remoteCompleteTask.setMessage("润滑工单启动,自动推进");
|
|
|
|
|
|
|
|
// 【关键】设置消息类型为非null的List(避免原始错误)
|
|
|
|
|
|
|
|
List<String> messageTypes = new ArrayList<>();
|
|
|
|
|
|
|
|
messageTypes.add("system"); // 系统消息
|
|
|
|
|
|
|
|
remoteCompleteTask.setMessageType(messageTypes);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 【执行任务完成】推进工作流到下一步
|
|
|
|
|
|
|
|
boolean taskCompleted = remoteWorkflowService.completeTask(remoteCompleteTask);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!taskCompleted) {
|
|
|
|
|
|
|
|
// 工作流推进失败,记录日志但不抛异常(避免影响主流程)
|
|
|
|
|
|
|
|
log.error("润滑工作流自动推进失败,taskId: {}", taskId);
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return taskCompleted;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|