diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/FlowOrgRepositoryServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/FlowOrgRepositoryServiceImpl.java index d3f8434c2..453909769 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/FlowOrgRepositoryServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/FlowOrgRepositoryServiceImpl.java @@ -1,14 +1,20 @@ package com.zhgd.xmgl.modules.basicdata.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.wflow.bean.do_.DeptDo; import com.wflow.bean.do_.RoleDo; import com.wflow.bean.do_.UserDeptDo; import com.wflow.bean.do_.UserDo; +import com.wflow.bean.entity.WflowModelPerms; +import com.wflow.bean.entity.WflowModels; import com.wflow.bean.vo.ModelGroupVo; import com.wflow.bean.vo.OrgTreeVo; import com.wflow.bean.vo.UserVo; +import com.wflow.mapper.WflowModelPermsMapper; +import com.wflow.mapper.WflowModelsMapper; import com.wflow.service.OrgRepositoryService; import com.zhgd.xmgl.modules.basicdata.entity.BaseRoleUser; import com.zhgd.xmgl.modules.basicdata.entity.Company; @@ -43,9 +49,45 @@ public class FlowOrgRepositoryServiceImpl implements OrgRepositoryService { @Autowired private XzProjectOrgMapper xzProjectOrgMapper; + @Autowired + private WflowModelPermsMapper modelPermsMapper; + + @Autowired + private WflowModelsMapper wflowModelsMapper; + @Override public List getModelsByPerm(String userId) { - return null; + List list = new ArrayList<>(); + Long xzProjectOrgId = systemUserMapper.selectById(userId).getXzProjectOrgId(); +// XzProjectOrg xzProjectOrg = xzProjectOrgMapper.selectById(xzProjectOrgId); +// List orgList = new ArrayList<>(); +// getList(xzProjectOrg.getParentId(), orgList); +// List collect = orgList.stream().map(o -> o.getId()).collect(Collectors.toList()); +// collect.add(xzProjectOrgId); +// List deptFormIds = modelPermsMapper.selectList(Wrappers.lambdaQuery().eq(WflowModelPerms::getPermType, "dept") +// .in(WflowModelPerms::getOrgId, collect)).stream().map(m -> m.getFormId()).collect(Collectors.toList()); + if (xzProjectOrgId == null) { + return list; + } + List userOrgIds = modelPermsMapper.selectList(Wrappers.lambdaQuery().eq(WflowModelPerms::getPermType, "user") + .eq(WflowModelPerms::getOrgId, userId)).stream().map(m -> m.getOrgId()).collect(Collectors.toList()); + userOrgIds.add(xzProjectOrgId.toString()); + List formIds = modelPermsMapper.selectList(Wrappers.lambdaQuery().in(WflowModelPerms::getOrgId, userOrgIds)).stream().map(w -> w.getFormId()).collect(Collectors.toList()); + List permIds = modelPermsMapper.selectList(null).stream().map(w -> w.getFormId()).collect(Collectors.toList()); + List wflowModels = wflowModelsMapper.selectList(Wrappers.lambdaQuery().in(WflowModels::getFormId, formIds).or().notIn(WflowModels::getFormId, permIds)); + for (int i = 0; i < wflowModels.size(); i++) { + ModelGroupVo.Form form = JSON.parseObject(JSONObject.toJSONString(wflowModels.get(i)), ModelGroupVo.Form.class); + list.add(form); + } + return list; + } + + private void getList(Long deptId, List orgList){ + XzProjectOrg parentId = xzProjectOrgMapper.selectOne(Wrappers.lambdaQuery().eq(XzProjectOrg::getId, deptId)); + if (parentId != null) { + getList(parentId.getParentId(), orgList); + orgList.add(parentId); + } } @Override diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/mapper/XzProjectOrgMapper.java b/src/main/java/com/zhgd/xmgl/modules/xz/mapper/XzProjectOrgMapper.java index cae69e042..371ea7d72 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/mapper/XzProjectOrgMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/mapper/XzProjectOrgMapper.java @@ -32,6 +32,6 @@ public interface XzProjectOrgMapper extends BaseMapper { * @param deptId 父部门 * @return 子部门列表,type字段固定返回固定值 dept */ - @Select("SELECT id id, dept_name `name`, 'dept' AS 'type' FROM xz_project_org WHERE parent_id=#{deptId} AND project_sn = #{projectSn}") + @Select("SELECT id id, dept_name `name`, 'dept' AS 'type' FROM xz_project_org WHERE parent_id=#{deptId} AND project_sn = #{projectSn} AND status = 0") List selectByDept(@Param("deptId") String deptId, @Param("projectSn") String projectSn); } 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 ce26556e7..bca7fb41d 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