From ae8043f1e91ebd94fc7a1ace25493d74b2faa523 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Sat, 21 Dec 2024 14:31:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E4=BA=BA=E9=BB=98=E8=AE=A4=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wflow/service/CustomListenService.java | 11 ++++ .../service/impl/CustomListenServiceImpl.java | 64 +++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 src/main/java/com/wflow/service/CustomListenService.java create mode 100644 src/main/java/com/wflow/service/impl/CustomListenServiceImpl.java diff --git a/src/main/java/com/wflow/service/CustomListenService.java b/src/main/java/com/wflow/service/CustomListenService.java new file mode 100644 index 0000000..10b0b16 --- /dev/null +++ b/src/main/java/com/wflow/service/CustomListenService.java @@ -0,0 +1,11 @@ +package com.wflow.service; + +/** + * 流程里面的监听器Service + */ +public interface CustomListenService { + + void updateFormData(String instanceId, String fieldId, String val); + + void updateFormDataNow(String instanceId, String fieldId, Integer type); +} diff --git a/src/main/java/com/wflow/service/impl/CustomListenServiceImpl.java b/src/main/java/com/wflow/service/impl/CustomListenServiceImpl.java new file mode 100644 index 0000000..6238360 --- /dev/null +++ b/src/main/java/com/wflow/service/impl/CustomListenServiceImpl.java @@ -0,0 +1,64 @@ +package com.wflow.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.wflow.bean.entity.WflowFormData; +import com.wflow.mapper.WflowFormDataMapper; +import com.wflow.service.CustomListenService; +import lombok.val; +import org.flowable.engine.RuntimeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +@Service("customListenService") +public class CustomListenServiceImpl implements CustomListenService { + @Lazy + @Autowired + RuntimeService runtimeService; + @Lazy + @Autowired + private WflowFormDataMapper formDataMapper; + + @Override + public void updateFormData(String instanceId, String fieldId, String val) { + WflowFormData data = new WflowFormData(); + data.setInstanceId(instanceId); + data.setFieldId(fieldId); + data.setFieldValue(val); + formDataMapper.update(data, new LambdaQueryWrapper() + .eq(WflowFormData::getInstanceId, instanceId) + .eq(WflowFormData::getFieldId, fieldId)); + Map dataMap = new HashMap<>(); + dataMap.put(fieldId, val); + runtimeService.setVariables(instanceId, dataMap); + } + + @Override + public void updateFormDataNow(String instanceId, String fieldId, Integer type) { + String val; + Date date = new Date(); + if (type == 1) { + val = DateUtil.format(date,"yyyy-MM-dd"); + } else if (type == 2){ + val = DateUtil.format(date,"yyyy-MM-dd HH:mm"); + } else { + val = DateUtil.format(date,"yyyy-MM-dd HH:mm:ss"); + } + WflowFormData data = new WflowFormData(); + data.setInstanceId(instanceId); + data.setFieldId(fieldId); + data.setFieldValue(val); + formDataMapper.update(data, new LambdaQueryWrapper() + .eq(WflowFormData::getInstanceId, instanceId) + .eq(WflowFormData::getFieldId, fieldId)); + Map dataMap = new HashMap<>(); + dataMap.put(fieldId, val); + runtimeService.setVariables(instanceId, dataMap); + } + +}