From aaff1db4bcd0d2bb9664ae951ef4c04cf9d9dd46 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期二, 10 三月 2026 16:23:15 +0800
Subject: [PATCH] lsh#
---
rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/FlowStepInstanceServiceImpl.java | 89 +++++++++++++++++++++++++++++++++++++++-----
1 files changed, 78 insertions(+), 11 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/FlowStepInstanceServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/FlowStepInstanceServiceImpl.java
index e8c182e..7df23d7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/FlowStepInstanceServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/FlowStepInstanceServiceImpl.java
@@ -1,5 +1,8 @@
package com.vincent.rsf.server.system.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.vincent.rsf.server.manager.entity.Task;
+import com.vincent.rsf.server.manager.service.TaskService;
import com.vincent.rsf.server.system.entity.FlowInstance;
import com.vincent.rsf.server.system.mapper.FlowStepInstanceMapper;
import com.vincent.rsf.server.system.entity.FlowStepInstance;
@@ -10,26 +13,90 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.util.Date;
+
@Service("flowStepInstanceService")
public class FlowStepInstanceServiceImpl extends ServiceImpl<FlowStepInstanceMapper, FlowStepInstance> implements FlowStepInstanceService {
@Autowired
- private FlowInstanceService flowInstanceService;
+ private TaskService taskService;
@Override
@Transactional(rollbackFor = Exception.class)
public boolean jumpCurrent(Long id) {
- FlowStepInstance flowStepInstance = getById(id);
- if (flowStepInstance == null || flowStepInstance.getFlowInstanceId() == null) {
- return false;
- }
+ try{
+ FlowStepInstance flowStepInstance = getById(id);
+ if (flowStepInstance == null || flowStepInstance.getFlowInstanceId() == null) {
+ return false;
+ }
+ Date now = new Date();
+ String taskNo = flowStepInstance.getTaskNo();
+ Task one = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, taskNo));
- FlowInstance flowInstance = new FlowInstance();
- flowInstance.setId(flowStepInstance.getFlowInstanceId());
- flowInstance.setCurrentStepCode(flowStepInstance.getStepCode());
- flowInstance.setCurrentStepOrder(flowStepInstance.getStepOrder());
- flowInstance.setUpdateTime(new java.util.Date());
- return flowInstanceService.updateById(flowInstance);
+ //妫�娴嬪綋鍓嶆楠�
+ FlowStepInstance flowStepInstanceNow = getOne(new LambdaQueryWrapper<FlowStepInstance>()
+ .eq(FlowStepInstance::getWmsNowTaskStatus, one.getTaskStatus())
+ .eq(FlowStepInstance::getTaskNo, taskNo)
+ .eq(FlowStepInstance::getFlowInstanceNo, flowStepInstance.getFlowInstanceNo())
+ .ge(FlowStepInstance::getStatus, (short) 1)
+ .ne(FlowStepInstance::getStatus, (short) 3).last("limit 1"));
+ if (flowStepInstanceNow == null) {
+ return false;
+ }
+ int stepOrderDifference = flowStepInstanceNow.getStepOrder() - flowStepInstance.getStepOrder();
+ if (stepOrderDifference>0) {//鍥為��
+ for (int i = 1; i <= stepOrderDifference; i++) {
+ FlowStepInstance flowStepInstanceUpdate = getOne(new LambdaQueryWrapper<FlowStepInstance>()
+ .eq(FlowStepInstance::getTaskNo, taskNo)
+ .eq(FlowStepInstance::getStepOrder, flowStepInstance.getStepOrder()+i)
+ .eq(FlowStepInstance::getFlowInstanceNo, flowStepInstance.getFlowInstanceNo())
+ .last("limit 1"));
+ if (flowStepInstanceUpdate==null) {
+ return false;
+ }
+ flowStepInstanceUpdate.setStatus((short)0);
+ flowStepInstanceUpdate.setErrorMessage(flowStepInstanceUpdate.getErrorMessage()+now+"浜哄伐璋冩暣;");
+ flowStepInstanceUpdate.setErrorCode(now.toString());
+ flowStepInstanceUpdate.setUpdateTime(now);
+ updateById(flowStepInstanceUpdate);
+ }
+ } else if (stepOrderDifference<0) {//璺宠浆
+ for (int i = 1; i <= -stepOrderDifference; i++) {
+ FlowStepInstance flowStepInstanceUpdate = getOne(new LambdaQueryWrapper<FlowStepInstance>()
+ .eq(FlowStepInstance::getTaskNo, taskNo)
+ .eq(FlowStepInstance::getStepOrder, flowStepInstance.getStepOrder()-i)
+ .eq(FlowStepInstance::getFlowInstanceNo, flowStepInstance.getFlowInstanceNo())
+ .last("limit 1"));
+ if (flowStepInstanceUpdate==null) {
+ return false;
+ }
+ flowStepInstanceUpdate.setStatus((short)3);
+ flowStepInstanceUpdate.setErrorMessage(flowStepInstanceUpdate.getErrorMessage()+now+"浜哄伐璋冩暣;");
+ flowStepInstanceUpdate.setErrorCode(now.toString());
+ flowStepInstanceUpdate.setUpdateTime(now);
+ updateById(flowStepInstanceUpdate);
+ }
+ }
+
+ flowStepInstance.setErrorMessage(flowStepInstance.getErrorMessage()+now+"浜哄伐璋冩暣;");
+ flowStepInstance.setErrorCode(now.toString());
+ flowStepInstance.setUpdateTime(now);
+ flowStepInstance.setStatus((short)1);
+ updateById(flowStepInstance);
+
+
+ one.setTaskStatus(flowStepInstance.getWmsNowTaskStatus());
+ taskService.updateById(one);
+ } catch (Exception e) {
+ throw new RuntimeException("浜哄伐璋冩暣鍑洪敊锛�" + e);
+ }
+// FlowInstance flowInstance = new FlowInstance();
+// flowInstance.setId(flowStepInstance.getFlowInstanceId());
+// flowInstance.setCurrentStepCode(flowStepInstance.getStepCode());
+// flowInstance.setCurrentStepOrder(flowStepInstance.getStepOrder());
+// flowInstance.setUpdateTime(new java.util.Date());
+// flowInstanceService.updateById(flowInstance);
+ return true;
}
}
--
Gitblit v1.9.1