Browse Source

添加协同办公oa获取组织机构的树形

master
dimengzhe 3 months ago
parent
commit
b3870144f5
  1. 3
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java
  2. 26
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/OaSysOrganizationVo.java
  3. 6
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/SysOrganizationFeign.java
  4. 5
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/SysOrganizationFeignFallback.java
  5. 6
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationMapper.java
  6. 66
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationMapper.xml
  7. 52
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationRest.java
  8. 44
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationService.java

3
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java

@ -400,6 +400,9 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
flowTask1.setCreateTime(comment.getTime());
flowTask1.setTaskUserInfos(ll);
flowTask1.setComment(build);
flowTask1.setProcDefId(flowTask.getProcDefId());
flowTask1.setProcVars(flowTask.getProcVars());
flowTask1.setTaskDefKey(histIns.getActivityId());
hisFlowList.add(flowTask1);
} else {
flowTask.setComment(build);

26
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/OaSysOrganizationVo.java

@ -0,0 +1,26 @@
package com.yxt.anrui.portal.api.sysorganization;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2025/1/15
**/
@Data
public class OaSysOrganizationVo {
@ApiModelProperty("部门/组织sid")
private String sid;
@ApiModelProperty("部门/组织名称|员工姓名")
private String name;
@ApiModelProperty("组织全路径")
private String orgSidPath;
@ApiModelProperty("部门所在路径(机构名称,不包含集团,取第一个/后的所有)")
private String orgNamePath;
}

6
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/SysOrganizationFeign.java

@ -105,6 +105,12 @@ public interface SysOrganizationFeign {
@GetMapping("/selectAppOrganization")
public ResultBean<Map<String, Object>> selectAppOrganization(@RequestParam(value = "sid", required = false) String sid);
@ApiOperation("手机OA获取组织架构")
@ResponseBody
@GetMapping("/selectAppOrganization2")
public ResultBean<Map<String, Object>> selectAppOrganization2(@RequestParam(value = "sid", required = false) String sid);
@ApiOperation("组织架构")
@ResponseBody
@GetMapping("/selectListOrg")

5
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysorganization/SysOrganizationFeignFallback.java

@ -117,6 +117,11 @@ public class SysOrganizationFeignFallback implements SysOrganizationFeign {
return ResultBean.fireFail().setMsg("接口anrui_portal/sysorganization/selectAppOrganization无法访问");
}
@Override
public ResultBean<Map<String, Object>> selectAppOrganization2(String sid) {
return null;
}
@Override
public ResultBean<List<SysOrgVo>> selectListOrg() {
return null;

6
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationMapper.java

@ -50,8 +50,12 @@ public interface SysOrganizationMapper extends BaseMapper<SysOrganization> {
List<AppContactSysOrganizationVo> selectAppOrganization();
List<OaSysOrganizationVo> selectAppOrganization2();
List<AppContactSysOrganizationVo> selectAppOrganizationByPsid(@Param("psid") String psid);
List<OaSysOrganizationVo> selectAppOrganizationByPsid2(@Param("psid") String psid);
List<SysOrgVo> treeList(String psid);
SysOrganization selectOrgCode();
@ -134,7 +138,7 @@ public interface SysOrganizationMapper extends BaseMapper<SysOrganization> {
List<SysOrganizationVo> tranTwo(String sid);
List<SysOrganizationVo> tranThree(@Param("sid") String sid,@Param("deptSid") String deptSid);
List<SysOrganizationVo> tranThree(@Param("sid") String sid, @Param("deptSid") String deptSid);
List<SysOrganizationVo> tranfour(String sid);

66
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationMapper.xml

@ -77,6 +77,15 @@
WHERE org.psid = (SELECT sid FROM sys_organization WHERE psid = '0')
</select>
<select id="selectAppOrganization2"
resultType="com.yxt.anrui.portal.api.sysorganization.OaSysOrganizationVo">
SELECT sid,
name,
IF((SELECT count(1) FROM sys_organization WHERE psid = org.sid) = 0, org.orgSidPath, '') orgSidPath
FROM sys_organization org
WHERE org.psid = (SELECT sid FROM sys_organization WHERE psid = '0')
</select>
<select id="selectAppOrganizationByPsid"
resultType="com.yxt.anrui.portal.api.sysorganization.AppContactSysOrganizationVo">
SELECT org.sid,
@ -87,6 +96,15 @@
WHERE org.psid = #{psid}
</select>
<select id="selectAppOrganizationByPsid2"
resultType="com.yxt.anrui.portal.api.sysorganization.OaSysOrganizationVo">
SELECT org.sid,
org.name,
IF((SELECT count(1) FROM sys_organization WHERE psid = org.sid) = 0, org.orgSidPath, '') orgSidPath
FROM sys_organization org
WHERE org.psid = #{psid}
</select>
<select id="treeList" resultType="com.yxt.anrui.portal.api.sysorganization.SysOrgVo">
SELECT so.name, so.psid, so.id, so.sid, so.orgSidPath, so.orgCode
FROM sys_organization so
@ -108,7 +126,8 @@
<select id="selectOrgCodeByPsid" resultType="com.yxt.anrui.portal.api.sysorganization.SysOrganization">
SELECT *
FROM sys_organization LIMIT 0,1
FROM sys_organization
LIMIT 0,1
</select>
<select id="selectTreeList" resultType="com.yxt.anrui.portal.api.sysorganization.SysOrgListVo">
@ -189,8 +208,8 @@
<select id="selectByOrgDeptSid" resultType="com.yxt.anrui.portal.api.sysorganization.SysOrgStaffVo">
select distinct si.name staffName, si.sid staffSid, su.sid userSid
from sys_staff_org so
left join sys_staffinfo si on so.staffSid = si.sid
left join sys_user su on su.staffSid = si.sid
left join sys_staffinfo si on so.staffSid = si.sid
left join sys_user su on su.staffSid = si.sid
where so.orgSid = #{orgDeptSid}
and si.personTypeKey != '01'
</select>
@ -198,8 +217,8 @@
<select id="selectByOrgDeptSid2" resultType="com.yxt.anrui.portal.api.sysorganization.SysOrgStaffVo">
select distinct si.name staffName, si.sid staffSid, su.sid userSid
from sys_staff_org so
left join sys_staffinfo si on so.staffSid = si.sid
left join sys_user su on su.staffSid = si.sid
left join sys_staffinfo si on so.staffSid = si.sid
left join sys_user su on su.staffSid = si.sid
where so.orgSid = #{orgDeptSid}
</select>
@ -256,9 +275,9 @@
SELECT *
FROM sys_organization
WHERE (
orgAttributeKey = 'fwz_002'
OR orgAttributeKey = 'fwz_003'
)
orgAttributeKey = 'fwz_002'
OR orgAttributeKey = 'fwz_003'
)
AND psid = #{sid}
</select>
@ -267,15 +286,15 @@
FROM sys_organization
WHERE orgAttributeKey = 'fwz_001'
AND (
psid =
(SELECT psid
FROM sys_organization
WHERE sid = #{sid})
OR sid =
(SELECT psid
FROM sys_organization
WHERE sid = #{sid})
)
psid =
(SELECT psid
FROM sys_organization
WHERE sid = #{sid})
OR sid =
(SELECT psid
FROM sys_organization
WHERE sid = #{sid})
)
AND sid != #{sid}
</select>
@ -285,7 +304,7 @@
WHERE orgAttributeKey = 'fwz_001'
AND sid != #{deptSid}
AND (psid = #{sid}
OR sid = #{sid})
OR sid = #{sid})
</select>
<select id="tranfour" resultType="com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo">
@ -299,9 +318,9 @@
SELECT *
FROM sys_organization
WHERE (
orgAttributeKey = 'fwz_002'
OR orgAttributeKey = 'fwz_003'
)
orgAttributeKey = 'fwz_002'
OR orgAttributeKey = 'fwz_003'
)
AND psid =
(SELECT psid
FROM sys_organization
@ -316,9 +335,8 @@
AND psid = #{sid}
</select>
<select id="selectStaffListByUseOrgSid" resultType="com.yxt.anrui.portal.api.sysorganization.SysFinanceVo">
SELECT DISTINCT
u.sid userSid,
s.`name`
SELECT DISTINCT u.sid userSid,
s.`name`
FROM sys_user as u
LEFT JOIN sys_user_role as ur ON u.sid = ur.userSid
LEFT JOIN sys_staffinfo as s ON u.staffSid = s.sid

52
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationRest.java

@ -121,8 +121,8 @@ public class SysOrganizationRest implements SysOrganizationFeign {
}
@Override
public ResultBean<List<SysOrganizationVo>> tranThree(String sid,String deptSid) {
return new ResultBean<List<SysOrganizationVo>>().success().setData(sysOrganizationService.tranThree(sid,deptSid));
public ResultBean<List<SysOrganizationVo>> tranThree(String sid, String deptSid) {
return new ResultBean<List<SysOrganizationVo>>().success().setData(sysOrganizationService.tranThree(sid, deptSid));
}
@Override
@ -151,12 +151,12 @@ public class SysOrganizationRest implements SysOrganizationFeign {
String zgStaffSid = dto.getZgStaffSid();
//分管人员的sid
String fgStaffSid = dto.getFgStaffSid();
if(StringUtils.isNotBlank(zgStaffSid)){
if (StringUtils.isNotBlank(zgStaffSid)) {
SysStaffinfo sysStaffinfo = sysStaffInfoService.fetchBySid(zgStaffSid);
sysOrganization.setManagerName(sysStaffinfo.getName());
SysUserVo sysUser = sysUserService.selectByStaffsid(zgStaffSid);
sysOrganization.setManagerSid(sysUser.getSid());
}else{
} else {
sysOrganization.setManagerName("");
sysOrganization.setManagerSid("");
}
@ -169,9 +169,9 @@ public class SysOrganizationRest implements SysOrganizationFeign {
}
}
//查询所有该orgSid的staffSid的类型为员工的
List<SysStaffOrg> staffList = sysStaffOrgService.selectStaffByOrgSid(sid,"3");
List<SysStaffOrg> staffList = sysStaffOrgService.selectStaffByOrgSid(sid, "3");
staffList.removeAll(Collections.singleton(null));
if(!staffList.isEmpty()){
if (!staffList.isEmpty()) {
//更新关联表中的orgName和orgNamePath以及orgSidPath
//查询该部门的全部信息
ResultBean resultBean = sysOrganizationService.updateStaffList(sysOrganization);
@ -198,15 +198,15 @@ public class SysOrganizationRest implements SysOrganizationFeign {
//查询分管人员
List<String> stringList1 = new ArrayList<>();
List<String> reduce1 = new ArrayList<>();
if(StringUtils.isNotBlank(fgStaffSid)){
if (StringUtils.isNotBlank(fgStaffSid)) {
stringList1 = Arrays.asList(fgStaffSid.split(","));
reduce1 = stringList1.stream().filter(item -> !stringList.contains(item)).collect(toList());
}else{
} else {
reduce1 = stringList;
}
String orgSid1 = sysStaffOrgService.getOrgByOrgSid(sid);
if(reduce1.size()>0){
for (String s : reduce1){
if (reduce1.size() > 0) {
for (String s : reduce1) {
//查询该人员的组织机构list
List<SysStaffOrgVo> sysStaffOrgVos = sysStaffOrgService.selectByStaffS(s);
List<String> orgList = new ArrayList<>();
@ -221,10 +221,10 @@ public class SysOrganizationRest implements SysOrganizationFeign {
}
}
}
if(!orgList.contains(orgSid1)){
if (!orgList.contains(orgSid1)) {
//根据staffSid查询token
String token = sysUserService.selectByStaffsid(s).getToken();
if(StringUtils.isNotBlank(token)){
if (StringUtils.isNotBlank(token)) {
//清空该token
redisUtil.remove(token);
}
@ -293,7 +293,7 @@ public class SysOrganizationRest implements SysOrganizationFeign {
vo.setFgStaffSid(fgSids);
SysUser sysUser = sysUserService.fetchBySid(entity.getManagerSid());
if(sysUser != null){
if (sysUser != null) {
vo.setZgStaffSid(sysUser.getStaffSid());
vo.setZgNames(entity.getManagerName());
}
@ -319,6 +319,22 @@ public class SysOrganizationRest implements SysOrganizationFeign {
return new ResultBean<Map<String, Object>>().success().setData(map);
}
@Override
public ResultBean<Map<String, Object>> selectAppOrganization2(String sid) {
Map<String, Object> map = new HashMap<>();
List<Map<String, Object>> nameList = sysOrganizationService.selectOrgNameList(sid);
List<OaSysOrganizationVo> list = null;
if (StringUtils.isBlank(sid)) { // 组织架构
list = sysOrganizationService.selectAppOrganization2();
} else { // 组织架构子集
list = sysOrganizationService.selectAppOrganizationSub2(sid);
}
map.put("nameList", nameList);
map.put("list", list);
return new ResultBean<Map<String, Object>>().success().setData(map);
}
@Override
public ResultBean<List<SysOrgVo>> selectListOrg() {
ResultBean<List<SysOrgVo>> rb = ResultBean.fireFail();
@ -340,12 +356,12 @@ public class SysOrganizationRest implements SysOrganizationFeign {
@Override
public ResultBean<List<SysOrgVo>> getListOrgByBrandSid(String orgSid, String brandSid) {
return sysOrganizationService.getListOrgByBrandSid(orgSid,brandSid);
return sysOrganizationService.getListOrgByBrandSid(orgSid, brandSid);
}
@Override
public ResultBean<List<SysOrgVo>> getListOrgByBrandSidNo(String orgSid, String brandSid) {
return sysOrganizationService.getListOrgByBrandSidNo(orgSid,brandSid);
return sysOrganizationService.getListOrgByBrandSidNo(orgSid, brandSid);
}
@Override
@ -451,7 +467,7 @@ public class SysOrganizationRest implements SysOrganizationFeign {
@Override
public ResultBean<SysOrganizationVo> selectByPSid(String sid, String name) {
return sysOrganizationService.selectByPSid(sid,name);
return sysOrganizationService.selectByPSid(sid, name);
}
@Override
@ -482,7 +498,7 @@ public class SysOrganizationRest implements SysOrganizationFeign {
public ResultBean<List<SysFinanceVo>> selectFinance(String orgPath, String userSid) {
ResultBean<List<SysFinanceVo>> rb = ResultBean.fireFail();
String useOrgSid = sysStaffOrgService.getOrgSidByPath(orgPath).getData();
List<SysFinanceVo> list = sysOrganizationService.selectBy("金融服务部",useOrgSid);
List<SysFinanceVo> list = sysOrganizationService.selectBy("金融服务部", useOrgSid);
list.removeAll(Collections.singleton(null));
list = list.stream().filter(v -> StringUtils.isNotBlank(v.getUserSid())).collect(toList());
return rb.success().setData(list);
@ -496,7 +512,7 @@ public class SysOrganizationRest implements SysOrganizationFeign {
@Override
public ResultBean<List<SysOrganization>> selectByOrgCodeAndPsid(String orgCode, String pSid) {
ResultBean rb = ResultBean.fireFail();
List<SysOrganization> sysOrganization = sysOrganizationService.selectByOrgCodeAndPsid(orgCode,pSid);
List<SysOrganization> sysOrganization = sysOrganizationService.selectByOrgCodeAndPsid(orgCode, pSid);
return rb.success().setData(sysOrganization);
}

44
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysorganization/SysOrganizationService.java

@ -31,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import static java.util.stream.Collectors.toList;
@ -347,6 +348,26 @@ public class SysOrganizationService extends MybatisBaseService<SysOrganizationMa
return list;
}
public List<OaSysOrganizationVo> selectAppOrganization2() {
List<OaSysOrganizationVo> list = baseMapper.selectAppOrganization2();
list.stream().forEach(vo -> {
if (StringUtils.isNotBlank(vo.getOrgSidPath())) {
String orgNamePath = "";
String result = vo.getOrgSidPath().split("/", 2)[1];
List<String> orgList = Arrays.asList(result.split("/"));
for (int i = 0; i < orgList.size(); i++) {
String name = fetchBySid(orgList.get(i)).getName();
orgNamePath = orgNamePath + name;
if (i != orgList.size() - 1) {
orgNamePath = orgNamePath + "/";
}
}
vo.setOrgNamePath(orgNamePath);
}
});
return list;
}
public List<AppContactSysOrganizationVo> selectAppOrganizationSub(String psid) {
List<AppContactSysOrganizationVo> list = baseMapper.selectAppOrganizationByPsid(psid);
list.stream().forEach(vo -> {
@ -357,6 +378,29 @@ public class SysOrganizationService extends MybatisBaseService<SysOrganizationMa
return list;
}
public List<OaSysOrganizationVo> selectAppOrganizationSub2(String psid) {
List<OaSysOrganizationVo> list = baseMapper.selectAppOrganizationByPsid2(psid);
list.stream().forEach(vo -> {
if (StringUtils.isNotBlank(vo.getOrgSidPath())) {
// 使用 StringBuilder 进行字符串拼接
StringBuilder orgNamePath = new StringBuilder();
String result = vo.getOrgSidPath().split("/", 2)[1];
List<String> orgList = Arrays.asList(result.split("/"));
// 遍历组织ID列表,拼接名称路径
for (int i = 0; i < orgList.size(); i++) {
String name = fetchBySid(orgList.get(i)).getName();
orgNamePath.append(name);
if (i != orgList.size() - 1) {
orgNamePath.append("/");
}
}
// 设置生成的组织名称路径
vo.setOrgNamePath(orgNamePath.toString());
}
});
return list;
}
/**
* @param
* @description: 获取组织架构即使用组织下拉框

Loading…
Cancel
Save