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); + } + +}