diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-api/pom.xml b/pigx-flow/pigx-flow-engine/pigx-flow-engine-api/pom.xml index ee18eaff8..799c55f89 100644 --- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-api/pom.xml +++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-api/pom.xml @@ -18,11 +18,6 @@ com.pig4cloud pigx-common-core - - com.alibaba.fastjson2 - fastjson2 - 2.0.28 - com.baomidou diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/MultiInstanceHandler.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/MultiInstanceHandler.java index 66200b63f..49d90ee9e 100644 --- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/MultiInstanceHandler.java +++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/node/MultiInstanceHandler.java @@ -3,12 +3,14 @@ package com.pig4cloud.pigx.flow.engine.node; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson2.JSON; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import com.pig4cloud.pigx.flow.task.api.feign.RemoteFlowTaskService; import com.pig4cloud.pigx.flow.task.constant.ProcessInstanceConstant; import com.pig4cloud.pigx.flow.task.dto.Node; import com.pig4cloud.pigx.flow.task.dto.NodeUser; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.delegate.DelegateExecution; import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl; @@ -29,11 +31,14 @@ public class MultiInstanceHandler { private final Map assignUserStrategyMap; + private final ObjectMapper objectMapper; + /** * 解析执行人 * @param execution 流程执行对象 * @return 执行人集合 */ + @SneakyThrows public List resolveAssignee(DelegateExecution execution) { // 执行人集合 List assignList = new ArrayList<>(); @@ -47,7 +52,9 @@ public class MultiInstanceHandler { // 发起人 Object rootUserObj = execution.getVariable("root"); - NodeUser rootUser = JSON.parseArray(JSON.toJSONString(rootUserObj), NodeUser.class).get(0); + String rootUserJson = objectMapper.writeValueAsString(rootUserObj); + NodeUser rootUser = objectMapper.readValue(rootUserJson, new TypeReference>() { + }).get(0); // 节点数据 Node node = remoteFlowTaskService.queryNodeOriData(flowId, nodeId).getData(); @@ -62,7 +69,10 @@ public class MultiInstanceHandler { // 默认值 String format = StrUtil.format("{}_assignee_default_list", nodeId); Object variable = execution.getVariable(format); - List nodeUserDtos = JSON.parseArray(JSON.toJSONString(variable), NodeUser.class); + String variableJson = objectMapper.writeValueAsString(variable); + + List nodeUserDtos = objectMapper.readValue(variableJson, new TypeReference<>() { + }); if (CollUtil.isNotEmpty(nodeUserDtos)) { List collect = nodeUserDtos.stream().map(NodeUser::getId).toList(); assignList.addAll(collect); diff --git a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/service/CopyServiceTask.java b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/service/CopyServiceTask.java index 7c5fad91d..0a4a48963 100644 --- a/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/service/CopyServiceTask.java +++ b/pigx-flow/pigx-flow-engine/pigx-flow-engine-biz/src/main/java/com/pig4cloud/pigx/flow/engine/service/CopyServiceTask.java @@ -15,7 +15,7 @@ import org.flowable.engine.delegate.DelegateExecution; import org.flowable.engine.delegate.JavaDelegate; import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl; -import java.util.Date; +import java.time.LocalDateTime; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -75,7 +75,7 @@ public class CopyServiceTask implements JavaDelegate { for (String userIds : userIdList) { // 发送抄送任务 ProcessCopyDto processCopyDto = new ProcessCopyDto(); - processCopyDto.setNodeTime(new Date()); + processCopyDto.setNodeTime(LocalDateTime.now()); processCopyDto.setStartUserId(rootUser.getId()); processCopyDto.setFlowId(flowId); processCopyDto.setProcessInstanceId(execution.getProcessInstanceId()); diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/dto/ProcessCopyDto.java b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/dto/ProcessCopyDto.java index ef06c162e..f6eb84f26 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/dto/ProcessCopyDto.java +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/dto/ProcessCopyDto.java @@ -1,9 +1,8 @@ package com.pig4cloud.pigx.flow.task.dto; -import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; -import java.util.Date; +import java.time.LocalDateTime; @Data public class ProcessCopyDto { @@ -11,8 +10,7 @@ public class ProcessCopyDto { /** * 当前节点时间 */ - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - private Date nodeTime; + private LocalDateTime nodeTime; /** * 发起人 diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/FormItemVO.java b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/FormItemVO.java index 97642daed..a689526cc 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/FormItemVO.java +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/FormItemVO.java @@ -1,13 +1,13 @@ package com.pig4cloud.pigx.flow.task.vo; -import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; /** * 表单 */ @Data -@Builder +@NoArgsConstructor public class FormItemVO { private String id; @@ -29,6 +29,7 @@ public class FormItemVO { private Props props; @Data + @NoArgsConstructor public static class Props { private Object value; diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/FormRemoteSelectOptionParamVo.java b/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/FormRemoteSelectOptionParamVo.java deleted file mode 100644 index 05af3d375..000000000 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-api/src/main/java/com/pig4cloud/pigx/flow/task/vo/FormRemoteSelectOptionParamVo.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.pig4cloud.pigx.flow.task.vo; - -import lombok.Data; - -/** - * 表单远程的下拉选项 - */ -@Data -public class FormRemoteSelectOptionParamVo { - - /** - * 远程请求地址 - */ - private String remoteUrl; - -} diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/pom.xml b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/pom.xml index 075f35044..53f1f8f3c 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/pom.xml +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/pom.xml @@ -78,11 +78,6 @@ com.baomidou mybatis-plus-boot-starter - - com.alibaba.fastjson2 - fastjson2 - 2.0.28 - com.alibaba diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/mapper/ProcessMapper.java b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/mapper/ProcessMapper.java index 06e7a9710..b469ce726 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/mapper/ProcessMapper.java +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/mapper/ProcessMapper.java @@ -1,7 +1,7 @@ package com.pig4cloud.pigx.flow.task.mapper; -import com.pig4cloud.pigx.flow.task.entity.Process; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.pig4cloud.pigx.flow.task.entity.Process; import org.apache.ibatis.annotations.Mapper; /** diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/IProcessService.java b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/IProcessService.java index aabfe61ff..aa828dfae 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/IProcessService.java +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/IProcessService.java @@ -2,8 +2,8 @@ package com.pig4cloud.pigx.flow.task.service; import com.baomidou.mybatisplus.extension.service.IService; import com.pig4cloud.pigx.common.core.util.R; -import com.pig4cloud.pigx.flow.task.vo.ProcessVO; import com.pig4cloud.pigx.flow.task.entity.Process; +import com.pig4cloud.pigx.flow.task.vo.ProcessVO; /** *

diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessCopyServiceImpl.java b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessCopyServiceImpl.java index 40daf692e..806aff07f 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessCopyServiceImpl.java +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessCopyServiceImpl.java @@ -4,9 +4,9 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Dict; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.TypeReference; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.flow.task.constant.FormTypeEnum; import com.pig4cloud.pigx.flow.task.constant.ProcessInstanceConstant; @@ -19,6 +19,7 @@ import com.pig4cloud.pigx.flow.task.service.IProcessNodeDataService; import com.pig4cloud.pigx.flow.task.service.IProcessService; import com.pig4cloud.pigx.flow.task.vo.FormItemVO; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -37,6 +38,8 @@ import java.util.Map; @RequiredArgsConstructor public class ProcessCopyServiceImpl extends ServiceImpl implements IProcessCopyService { + private final ObjectMapper objectMapper; + private final IProcessService processService; private final IProcessNodeDataService nodeDataService; @@ -46,6 +49,7 @@ public class ProcessCopyServiceImpl extends ServiceImpl variableMap = JSON.parseObject(formData, new TypeReference<>() { + Map variableMap = objectMapper.readValue(formData, new TypeReference<>() { }); String nodeId = processCopy.getNodeId(); @@ -64,7 +68,8 @@ public class ProcessCopyServiceImpl extends ServiceImpl formPerms = node.getFormPerms(); - List jsonObjectList = JSON.parseArray(oaForms.getFormItems(), FormItemVO.class); + List jsonObjectList = objectMapper.readValue(oaForms.getFormItems(), new TypeReference<>() { + }); for (FormItemVO formItemVO : jsonObjectList) { String fid = formItemVO.getId(); String perm = formPerms.get(fid); diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessInstanceServiceImpl.java b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessInstanceServiceImpl.java index 9c09bc90e..8b2863a45 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessInstanceServiceImpl.java +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessInstanceServiceImpl.java @@ -7,9 +7,9 @@ import cn.hutool.core.lang.Dict; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.TypeReference; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import com.pig4cloud.pigx.admin.api.entity.SysUser; import com.pig4cloud.pigx.admin.api.feign.RemoteUserService; import com.pig4cloud.pigx.common.core.util.R; @@ -22,17 +22,15 @@ import com.pig4cloud.pigx.flow.task.constant.NodeUserTypeEnum; import com.pig4cloud.pigx.flow.task.constant.ProcessInstanceConstant; import com.pig4cloud.pigx.flow.task.dto.*; import com.pig4cloud.pigx.flow.task.entity.Process; -import com.pig4cloud.pigx.flow.task.entity.ProcessCopy; -import com.pig4cloud.pigx.flow.task.entity.ProcessInstanceRecord; -import com.pig4cloud.pigx.flow.task.entity.ProcessNodeRecord; -import com.pig4cloud.pigx.flow.task.entity.ProcessNodeRecordAssignUser; +import com.pig4cloud.pigx.flow.task.entity.*; import com.pig4cloud.pigx.flow.task.service.*; import com.pig4cloud.pigx.flow.task.utils.NodeFormatUtil; import com.pig4cloud.pigx.flow.task.vo.FormItemVO; import com.pig4cloud.pigx.flow.task.vo.NodeFormatParamVo; -import com.pig4cloud.pigx.flow.task.vo.ProcessCopyVo; import com.pig4cloud.pigx.flow.task.vo.NodeVo; +import com.pig4cloud.pigx.flow.task.vo.ProcessCopyVo; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -61,6 +59,8 @@ public class ProcessInstanceServiceImpl implements IProcessInstanceService { private final IProcessNodeRecordAssignUserService processNodeRecordAssignUserService; + private final ObjectMapper objectMapper; + /** * 启动流程 * @param processInstanceParamDto @@ -304,6 +304,7 @@ public class ProcessInstanceServiceImpl implements IProcessInstanceService { * @param nodeFormatParamVo * @return */ + @SneakyThrows @Override public R formatStartNodeShow(NodeFormatParamVo nodeFormatParamVo) { String flowId = nodeFormatParamVo.getFlowId(); @@ -334,7 +335,8 @@ public class ProcessInstanceServiceImpl implements IProcessInstanceService { .one(); String data = processNodeRecordAssignUser.getData(); - Map variableMap = JSON.parseObject(data, new TypeReference<>() { + + Map variableMap = objectMapper.readValue(data, new TypeReference<>() { }); variableMap.putAll(paramMap); paramMap.putAll(variableMap); @@ -362,7 +364,8 @@ public class ProcessInstanceServiceImpl implements IProcessInstanceService { Process oaForms = processService.getByFlowId(flowId); String process = oaForms.getProcess(); - Node nodeDto = JSON.parseObject(process, Node.class); + Node nodeDto = objectMapper.readValue(process, new TypeReference<>() { + }); List processNodeShowDtos = NodeFormatUtil.formatProcessNodeShow(nodeDto, completeNodeSet, new HashSet<>(), processInstanceId, paramMap); @@ -375,6 +378,7 @@ public class ProcessInstanceServiceImpl implements IProcessInstanceService { * @param processInstanceId * @return */ + @SneakyThrows @Override public R detail(String processInstanceId) { ProcessInstanceRecord processInstanceRecord = processInstanceRecordService.lambdaQuery() @@ -388,14 +392,16 @@ public class ProcessInstanceServiceImpl implements IProcessInstanceService { // 发起人变量数据 String formData = processInstanceRecord.getFormData(); - Map variableMap = JSON.parseObject(formData, new TypeReference<>() { + Map variableMap = objectMapper.readValue(formData, new TypeReference<>() { }); // 发起人表单权限 String process = oaForms.getProcess(); - Node nodeDto = JSON.parseObject(process, Node.class); + + Node nodeDto = objectMapper.readValue(process, Node.class); Map formPerms1 = nodeDto.getFormPerms(); - List jsonObjectList = JSON.parseArray(oaForms.getFormItems(), FormItemVO.class); + List jsonObjectList = objectMapper.readValue(oaForms.getFormItems(), new TypeReference<>() { + }); for (FormItemVO formItemVO : jsonObjectList) { String id = formItemVO.getId(); String perm = formPerms1.get(id); diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessNodeRecordServiceImpl.java b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessNodeRecordServiceImpl.java index 703c5d721..827d47507 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessNodeRecordServiceImpl.java +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/ProcessNodeRecordServiceImpl.java @@ -1,7 +1,6 @@ package com.pig4cloud.pigx.flow.task.service.impl; import cn.hutool.core.bean.BeanUtil; -import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.flow.task.constant.NodeStatusEnum; @@ -52,7 +51,7 @@ public class ProcessNodeRecordServiceImpl extends ServiceImpl impl private final Sequence flowSequence; + private final ObjectMapper objectMapper; + /** * 获取详细数据 * @param flowId @@ -68,15 +71,19 @@ public class ProcessServiceImpl extends ServiceImpl impl * @param flowId 流程ID * @return 流程详情 */ + @SneakyThrows private ProcessVO getProcessVO(String flowId) { Process oaForms = getByFlowId(flowId); String process = oaForms.getProcess(); String formItems = oaForms.getFormItems(); - Node startNode = JSON.parseObject(process, Node.class); + Node startNode = objectMapper.readValue(process, new TypeReference<>() { + }); Map formPerms = startNode.getFormPerms(); - List formItemVOList = JSON.parseArray(formItems, FormItemVO.class); + + List formItemVOList = objectMapper.readValue(formItems, new TypeReference<>() { + }); for (FormItemVO formItemVO : formItemVOList) { String perm = MapUtil.getStr(formPerms, formItemVO.getId(), ProcessInstanceConstant.FormPermClass.EDIT); formItemVO.setPerm(perm); @@ -106,7 +113,7 @@ public class ProcessServiceImpl extends ServiceImpl impl } } - oaForms.setFormItems(JSON.toJSONString(formItemVOList)); + oaForms.setFormItems(objectMapper.writeValueAsString(formItemVOList)); List selectUserNodeId = NodeUtil.selectUserNodeId(startNode); diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/TaskServiceImpl.java b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/TaskServiceImpl.java index bf977ffe5..cd0d70e14 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/TaskServiceImpl.java +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/service/impl/TaskServiceImpl.java @@ -6,8 +6,8 @@ import cn.hutool.core.lang.Dict; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.TypeReference; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.common.security.util.SecurityUtils; import com.pig4cloud.pigx.flow.task.api.feign.RemoteFlowEngineService; @@ -23,6 +23,7 @@ import com.pig4cloud.pigx.flow.task.entity.ProcessNodeRecordAssignUser; import com.pig4cloud.pigx.flow.task.service.*; import com.pig4cloud.pigx.flow.task.vo.FormItemVO; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -47,12 +48,15 @@ public class TaskServiceImpl implements ITaskService { private final IProcessInstanceRecordService processInstanceRecordService; + private final ObjectMapper objectMapper; + /** * 查询任务 * @param taskId * @param view * @return */ + @SneakyThrows @Override public R queryTask(String taskId, boolean view) { @@ -82,7 +86,7 @@ public class TaskServiceImpl implements ITaskService { if (processNodeRecordAssignUser != null) { String data = processNodeRecordAssignUser.getData(); if (StrUtil.isNotBlank(data)) { - Map collect = JSON.parseObject(data, new TypeReference>() { + Map collect = objectMapper.readValue(data, new TypeReference<>() { }); paramMap.putAll(collect); diff --git a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/utils/NodeFormatUtil.java b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/utils/NodeFormatUtil.java index 2d8dbc68f..1b6375e28 100644 --- a/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/utils/NodeFormatUtil.java +++ b/pigx-flow/pigx-flow-task/pigx-flow-task-biz/src/main/java/com/pig4cloud/pigx/flow/task/utils/NodeFormatUtil.java @@ -4,7 +4,8 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; -import com.alibaba.fastjson.JSON; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import com.pig4cloud.pigx.admin.api.entity.SysUser; import com.pig4cloud.pigx.admin.api.feign.RemoteUserService; import com.pig4cloud.pigx.common.security.util.SecurityUtils; @@ -21,6 +22,7 @@ import com.pig4cloud.pigx.flow.task.service.IProcessNodeRecordAssignUserService; import com.pig4cloud.pigx.flow.task.service.IRemoteService; import com.pig4cloud.pigx.flow.task.vo.NodeVo; import com.pig4cloud.pigx.flow.task.vo.UserVo; +import lombok.SneakyThrows; import java.util.*; import java.util.stream.Collectors; @@ -38,6 +40,7 @@ public class NodeFormatUtil { * @param processInstanceId * @param paramMap */ + @SneakyThrows public static List formatProcessNodeShow(Node node, Set completeNodeSet, Set continueNodeSet, String processInstanceId, Map paramMap) { List list = new ArrayList<>(); @@ -116,7 +119,11 @@ public class NodeFormatUtil { if (assignedType == ProcessInstanceConstant.AssignedTypeClass.SELF_SELECT) { // 发起人自选 Object variable = paramMap.get(StrUtil.format("{}_assignee_select", node.getId())); - List nodeUserDtos = JSON.parseArray(JSON.toJSONString(variable), NodeUser.class); + + ObjectMapper objectMapper = SpringUtil.getBean(ObjectMapper.class); + List nodeUserDtos = objectMapper.readValue(objectMapper.writeValueAsString(variable), + new TypeReference<>() { + }); List collect = nodeUserDtos.stream().map(w -> Long.valueOf(w.getId())).toList(); for (Long aLong : collect) { @@ -141,9 +148,11 @@ public class NodeFormatUtil { Object o = paramMap.get(formUser); if (o != null) { - String jsonString = JSON.toJSONString(o); + ObjectMapper objectMapper = SpringUtil.getBean(ObjectMapper.class); + String jsonString = objectMapper.writeValueAsString(o); if (StrUtil.isNotBlank(jsonString)) { - List nodeUserDtoList = JSON.parseArray(jsonString, NodeUser.class); + List nodeUserDtoList = objectMapper.readValue(jsonString, new TypeReference<>() { + }); List userIdList = nodeUserDtoList.stream().map(NodeUser::getId).toList(); for (Long aLong : userIdList) { userVoList.addAll(CollUtil.newArrayList(buildUser(aLong)));