diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/SystemUserServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/SystemUserServiceImpl.java index b7ecf8f98..a5b2c3c7b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/SystemUserServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/SystemUserServiceImpl.java @@ -11,9 +11,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gexin.fastjson.JSON; +import com.wflow.bean.entity.WflowModels; +import com.wflow.mapper.WflowModelsMapper; import com.zhgd.exception.CustomException; import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.execption.OpenAlertException; @@ -50,6 +53,13 @@ import com.zhgd.xmgl.util.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; +import org.flowable.engine.HistoryService; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.TaskService; +import org.flowable.engine.history.HistoricProcessInstance; +import org.flowable.engine.history.HistoricProcessInstanceQuery; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.task.api.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; @@ -148,6 +158,12 @@ public class SystemUserServiceImpl extends ServiceImpl getToken(Map map) { @@ -1186,16 +1202,56 @@ public class SystemUserServiceImpl extends ServiceImpl map) { String id = MapUtils.getString(map, "id"); - String projectSn = MapUtils.getString(map, "projectSn"); - SystemUser systemUser = getById(id); - if (systemUser == null) { - throw new OpenAlertException(MessageUtil.get("notFindErr")); + // 判断是否存在工作流的流程中 + List list = historyService.createHistoricProcessInstanceQuery().unfinished().list(); + Set processDefinitionId = list.stream().map(l -> l.getProcessDefinitionId()).collect(Collectors.toSet()); + List models = wflowModelsMapper.selectList(Wrappers.lambdaQuery() + .in(WflowModels::getProcessDefId, processDefinitionId)); + List modelName = new ArrayList<>(); + for (WflowModels model : models) { + List userIds = new ArrayList<>(); + JSONObject process = JSONObject.parseObject(model.getProcess()); + JSONArray assignedUser1 = process.getJSONObject("props").getJSONArray("assignedUser"); + if (assignedUser1 != null) { + for (int i = 0; i < assignedUser1.size(); i++) { + JSONObject jsonObject = assignedUser1.getJSONObject(i); + userIds.add(jsonObject.getString("id")); + } + } + getUserIds(process.getJSONObject("children"), userIds); + if (userIds.contains(id)) { + modelName.add(model.getFormName()); + } } - if (systemUser.getAccountType() == 10) { - //新用户 - deleteTenantOrSupplier(id, projectSn); - } else { - deleteUser(id); + if (modelName.size() > 0) { + throw new CustomException("该人员有正在进行中审批流程,请完成流程后再删除账号", HttpStatus.INTERNAL_SERVER_ERROR); + } +// String projectSn = MapUtils.getString(map, "projectSn"); +// SystemUser systemUser = getById(id); +// if (systemUser == null) { +// throw new OpenAlertException(MessageUtil.get("notFindErr")); +// } +// if (systemUser.getAccountType() == 10) { +// //新用户 +// deleteTenantOrSupplier(id, projectSn); +// } else { +// deleteUser(id); +// } + } + + private void getUserIds(JSONObject children, List userIds) { + if (children != null) { + JSONObject props = children.getJSONObject("props"); + if (props != null) { + getUserIds(children.getJSONObject("children"), userIds); + JSONArray assignedUser = props.getJSONArray("assignedUser"); + if (assignedUser != null) { + for (int i = 0; i < assignedUser.size(); i++) { + JSONObject jsonObject = assignedUser.getJSONObject(i); + userIds.add(jsonObject.getString("id")); + } + } + } } } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzProjectOrgServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzProjectOrgServiceImpl.java index d482be39a..357efea5d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzProjectOrgServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzProjectOrgServiceImpl.java @@ -2,11 +2,17 @@ package com.zhgd.xmgl.modules.xz.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.wflow.bean.entity.WflowModels; +import com.wflow.mapper.WflowModelsMapper; +import com.zhgd.exception.CustomException; import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.system.query.QueryGenerator; import com.zhgd.xmgl.modules.xz.entity.XzProjectOrg; @@ -16,13 +22,15 @@ import com.zhgd.xmgl.util.PageUtil; import com.zhgd.xmgl.util.RefUtil; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; +import org.flowable.engine.HistoryService; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.history.HistoricProcessInstance; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.HashMap; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -37,6 +45,13 @@ public class XzProjectOrgServiceImpl extends ServiceImpl queryPageList(HashMap paramMap) { QueryWrapper queryWrapper = getQueryWrapper(paramMap); @@ -148,6 +163,45 @@ public class XzProjectOrgServiceImpl extends ServiceImpl list = historyService.createHistoricProcessInstanceQuery().unfinished().list(); + Set processDefinitionId = list.stream().map(l -> l.getProcessDefinitionId()).collect(Collectors.toSet()); + List models = wflowModelsMapper.selectList(Wrappers.lambdaQuery() + .in(WflowModels::getProcessDefId, processDefinitionId)); + List modelName = new ArrayList<>(); + for (WflowModels model : models) { + List orgIds = new ArrayList<>(); + JSONObject process = JSONObject.parseObject(model.getProcess()); + JSONArray branchs = process.getJSONObject("children").getJSONArray("branchs"); + if (branchs != null && branchs.size() > 0) { + for (int i = 0; i < branchs.size(); i++) { + JSONArray groups = branchs.getJSONObject(i).getJSONObject("props").getJSONArray("groups"); + if (groups != null && groups.size() > 0) { + for (int j = 0; j < groups.size(); j++) { + JSONArray conditions = groups.getJSONObject(j).getJSONArray("conditions"); + if (conditions != null && conditions.size() > 0) { + for (int k = 0; k < conditions.size(); k++) { + JSONArray value = conditions.getJSONObject(k).getJSONArray("value"); + if (value != null && value.size() > 0) { + for (int z = 0; z < value.size(); z++) { + JSONObject jsonObject = value.getJSONObject(z); + orgIds.add(jsonObject.getString("id")); + } + } + } + } + } + } + } + } + if (orgIds.contains(id)) { + modelName.add(model.getFormName()); + } + } + if (modelName.size() > 0) { + throw new CustomException("该组织有正在进行中审批流程,请完成流程后再删除", HttpStatus.INTERNAL_SERVER_ERROR); + } + XzProjectOrg xzProjectOrg = baseMapper.selectById(id); if (xzProjectOrg == null) { throw new OpenAlertException("未找到对应实体"); diff --git a/src/main/resources/lib/wflow-server-1.0-SNAPSHOT.jar b/src/main/resources/lib/wflow-server-1.0-SNAPSHOT.jar index 7901dabef..1d105ff55 100644 Binary files a/src/main/resources/lib/wflow-server-1.0-SNAPSHOT.jar and b/src/main/resources/lib/wflow-server-1.0-SNAPSHOT.jar differ