Przeglądaj źródła

fix 修复 流程重新提交报错问题

疯狂的狮子Li 11 miesięcy temu
rodzic
commit
50fd75bfdd

+ 1 - 1
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceBizExtServiceImpl.java

@@ -39,7 +39,7 @@ public class FlwInstanceBizExtServiceImpl implements IFlwInstanceBizExtService {
             .eq(FlowInstanceBizExt::getInstanceId, bo.getInstanceId()));
         if (flowInstanceBizExt != null) {
             flowInstanceBizExt.setBusinessTitle(convert.getBusinessTitle());
-            return baseMapper.insertOrUpdate(convert);
+            return baseMapper.insertOrUpdate(flowInstanceBizExt);
         }
         return baseMapper.insertOrUpdate(convert);
     }

+ 5 - 5
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java

@@ -110,6 +110,11 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
         variables.put(BUSINESS_ID, businessId);
         FlowInstance flowInstance = flowInstanceMapper.selectOne(new LambdaQueryWrapper<>(FlowInstance.class)
             .eq(FlowInstance::getBusinessId, businessId));
+        FlowInstanceBizExtBo extBo = startProcessBo.getFlowInstanceBizExtBo();
+        if (ObjectUtil.isEmpty(extBo)) {
+            extBo = new FlowInstanceBizExtBo();
+            startProcessBo.setFlowInstanceBizExtBo(extBo);
+        }
         if (ObjectUtil.isNotNull(flowInstance)) {
             BusinessStatusEnum.checkStartStatus(flowInstance.getFlowStatus());
             List<Task> taskList = taskService.list(new FlowTask().setInstanceId(flowInstance.getId()));
@@ -122,12 +127,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
             buildFlowInstanceBizExt(flowInstance, startProcessBo.getFlowInstanceBizExtBo());
             return dto;
         }
-        FlowInstanceBizExtBo extBo = startProcessBo.getFlowInstanceBizExtBo();
         String businessCode;
-        if (ObjectUtil.isEmpty(extBo)) {
-            extBo = new FlowInstanceBizExtBo();
-            startProcessBo.setFlowInstanceBizExtBo(extBo);
-        }
         // 生成业务编号
         if (StringUtils.isBlank(extBo.getBusinessCode())) {
             //todo 按照自己业务自行修改

+ 4 - 1
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java

@@ -108,10 +108,10 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
         long day = DateUtil.betweenDay(bo.getStartDate(), bo.getEndDate(), true);
         // 截止日期也算一天
         bo.setLeaveDays((int) day + 1);
+        bo.setApplyCode(System.currentTimeMillis() + StrUtil.EMPTY);
         TestLeave add = MapstructUtils.convert(bo, TestLeave.class);
         if (StringUtils.isBlank(add.getStatus())) {
             add.setStatus(BusinessStatusEnum.DRAFT.getStatus());
-            add.setApplyCode(System.currentTimeMillis() + StrUtil.EMPTY);
         }
         boolean flag = baseMapper.insert(add) > 0;
         if (flag) {
@@ -126,6 +126,9 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
         long day = DateUtil.betweenDay(bo.getStartDate(), bo.getEndDate(), true);
         // 截止日期也算一天
         bo.setLeaveDays((int) day + 1);
+        if (ObjectUtil.isNull(bo.getId())) {
+            bo.setApplyCode(System.currentTimeMillis() + StrUtil.EMPTY);
+        }
         TestLeave leave = MapstructUtils.convert(bo, TestLeave.class);
         boolean flag = baseMapper.insertOrUpdate(leave);
         if (flag) {

+ 1 - 1
script/sql/update/update_2.4.1-2.5.0.sql

@@ -56,4 +56,4 @@ create table flow_instance_biz_ext (
 )  ENGINE = InnoDB COMMENT '流程实例业务扩展表';
 
 ALTER TABLE `test_leave`
-    ADD COLUMN `apply_code` varchar(50) NULL DEFAULT NULL COMMENT '申请编号' AFTER `tenant_id`;
+    ADD COLUMN `apply_code` varchar(50) NOT NULL COMMENT '申请编号' AFTER `tenant_id`;