Browse Source

定时更新数据库部门的权限路径字段 ancestors

v2
蟑螂恶霸 2 years ago
parent
commit
96aacfa1de
  1. 77
      lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/task/UpdateDeptTask.java
  2. 41
      lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/task/UserInfoAndDeptTask.java
  3. 3
      lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/mapper/DeptMapper.java
  4. 11
      lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/service/DeptServiceImpl.java
  5. 3
      lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/service/IDeptService.java
  6. 13
      lib/EmergencyService/zdxtEmergencyAuthService/src/main/resources/mapper/system/DeptMapper.xml

77
lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/task/UpdateDeptTask.java

@ -0,0 +1,77 @@
package com.zdxt.app.task;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.zdxt.auth.common.utils.StringUtils;
import com.zdxt.auth.dto.UserBean;
import com.zdxt.auth.feign.UserApi;
import com.zdxt.auth.project.system.dept.service.IDeptService;
import com.zdxt.auth.project.system.dict.service.IDictDataService;
import com.zdxt.auth.project.system.user.service.IUserService;
import com.zdxt.domain.auth.Dept;
import com.zdxt.domain.auth.DictData;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.MessageDigest;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Author: kylin
* @Date: 2024/5/9 2:58 下午
* @Version: 1.0
* @Desc: TODO
*/
@Component("UpdateDeptTask")
public class UpdateDeptTask {
@Autowired private IDeptService deptService;
private static final Logger log = LoggerFactory.getLogger(UpdateDeptTask.class);
public void run(){
this.updateAncestors();
}
public void updateAncestors() {
// 先查出所有部门的id,parentId 信息
List<Dept> deptList = deptService.selectDeptAll();
for (Dept dept : deptList) {
List<String> ancs = new ArrayList<>();
ancs = convertAncestors(dept, deptList, ancs);
ancs.add("0");
Collections.reverse(ancs);
String anc = String.join(",", ancs);
dept.setAncestors(anc);
deptService.updateAncestorsById(dept);
log.info("{} -> {}", dept.getDeptId(), anc);
}
}
private List<String> convertAncestors(Dept dept, List<Dept> deptList, List<String> ancs) {
for (Dept tmp : deptList) {
if (dept.getParentId().equals(tmp.getDeptId()) && !dept.getDeptId().equals(tmp.getDeptId())) {
ancs.add(tmp.getDeptId());
return convertAncestors(tmp, deptList, ancs);
}
}
return ancs;
}
}

41
lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/task/UserInfoAndDeptTask.java

@ -66,7 +66,7 @@ public class UserInfoAndDeptTask {
public void run(){
this.userInfoAndDept();
this.testRun2();
}
/**
@ -166,11 +166,46 @@ public class UserInfoAndDeptTask {
}
}
public void testRun2() {
String path = "/uploadPath/tmp.txt"; // 替换为你的JSON文件路径
try {
String deptInfoJson = new String(Files.readAllBytes(Paths.get(path)), StandardCharsets.UTF_8);
System.out.println(deptInfoJson);
JSONArray dataArr = JSONArray.parseArray(deptInfoJson);
for (int i = 0; i < dataArr.size(); i++) {
JSONObject jsonObject = dataArr.getJSONObject(i);
String parentId = jsonObject.getString("parent_id");
List<String> ancUrls = new ArrayList<>();
List<String> ancs = this.convertAncestors(dataArr, parentId, ancUrls);
String anc = String.join(",", ancs);
}
} catch (IOException e) {
e.printStackTrace();
}
}
private List<String> convertAncestors(JSONArray dataList, String curParentId, List<String> ancUrls) {
if ("1".equals(curParentId)) { return ancUrls; }
for (int i = 0; i < dataList.size(); i++) {
JSONObject data = dataList.getJSONObject(i);
String deptParentId = data.getString("parent_id");
if (curParentId.equals(deptParentId)) {
String anc = data.getString("id");
ancUrls.add(anc);
break;
}
}
return convertAncestors(dataList, curParentId, ancUrls);
}
public void testRun() {
String path = "/uploadPath/userInfo.txt"; // 替换为你的JSON文件路径
// String path = "/uploadPath/detpInfo.txt"; // 替换为你的JSON文件路径
String path = "/uploadPath/detpInfo.txt"; // 替换为你的JSON文件路径
try {
int page = 0;
int pageSize = 20;

3
lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/mapper/DeptMapper.java

@ -13,6 +13,8 @@ import org.apache.ibatis.annotations.Param;
public interface DeptMapper
{
public List<Dept> selectDeptAll();
/**
* 新增部门同步金蝶数据时使用
* @param dept
@ -90,6 +92,7 @@ public interface DeptMapper
*/
public int updateDept(Dept dept);
public int updateDeptByOrganizationId(Dept dept);
public int updateAncestorsById(Dept dept);
/**
* 修改子元素关系

11
lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/service/DeptServiceImpl.java

@ -466,4 +466,15 @@ public class DeptServiceImpl implements IDeptService
resMap.put("updateNum", updateNum);
return resMap;
}
@Override
public List<Dept> selectDeptAll()
{
return deptMapper.selectDeptAll();
}
@Override
public int updateAncestorsById(Dept dept) {
return deptMapper.updateAncestorsById(dept);
}
}

3
lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/service/IDeptService.java

@ -160,4 +160,7 @@ public interface IDeptService
public List<Dept> selectDeptListHole(Dept dept);
public List<Ztree> selectDeptTreeNotRole(Dept dept);
public List<Dept> selectDeptAll();
public int updateAncestorsById(Dept dept);
}

13
lib/EmergencyService/zdxtEmergencyAuthService/src/main/resources/mapper/system/DeptMapper.xml

@ -53,6 +53,19 @@
fullname, isMappingUnit, srzUnitId, taskId from sys_dept d
</sql>
<select id="selectDeptAll" resultMap="DeptResult">
select d.dept_id, d.parent_id from sys_dept d
</select>
<update id="updateAncestorsById" parameterType="Dept">
update sys_dept
<set>
<if test="ancestors != null and ancestors != ''">ancestors = #{ancestors},</if>
update_time = sysdate()
</set>
where dept_id = #{deptId}
</update>
<insert id="insertDeptIsKingDee" parameterType="Dept" keyProperty="deptId" useGeneratedKeys="true">
<selectKey resultType="java.lang.Long" keyProperty="deptId" order="AFTER" >
SELECT LAST_INSERT_ID()

Loading…
Cancel
Save