From 96aacfa1de3d80e1ae559ad62c98fa34eac69ee8 Mon Sep 17 00:00:00 2001 From: kylin L <452061493@qq.com> Date: Sun, 2 Jun 2024 20:34:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E6=9B=B4=E6=96=B0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E9=83=A8=E9=97=A8=E7=9A=84=E6=9D=83=E9=99=90?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E5=AD=97=E6=AE=B5=20ancestors?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zdxt/app/task/UpdateDeptTask.java | 77 +++++++++++++++++++ .../zdxt/app/task/UserInfoAndDeptTask.java | 41 +++++++++- .../system/dept/mapper/DeptMapper.java | 3 + .../system/dept/service/DeptServiceImpl.java | 11 +++ .../system/dept/service/IDeptService.java | 3 + .../resources/mapper/system/DeptMapper.xml | 13 ++++ 6 files changed, 145 insertions(+), 3 deletions(-) create mode 100644 lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/task/UpdateDeptTask.java diff --git a/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/task/UpdateDeptTask.java b/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/task/UpdateDeptTask.java new file mode 100644 index 00000000..9016276a --- /dev/null +++ b/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 deptList = deptService.selectDeptAll(); + for (Dept dept : deptList) { + List 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 convertAncestors(Dept dept, List deptList, List 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; + } +} diff --git a/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/task/UserInfoAndDeptTask.java b/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/task/UserInfoAndDeptTask.java index 5805be76..32e65415 100644 --- a/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/task/UserInfoAndDeptTask.java +++ b/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 ancUrls = new ArrayList<>(); + List ancs = this.convertAncestors(dataArr, parentId, ancUrls); + String anc = String.join(",", ancs); + } + + + } catch (IOException e) { + e.printStackTrace(); + } + } + + + private List convertAncestors(JSONArray dataList, String curParentId, List 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; diff --git a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/mapper/DeptMapper.java b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/mapper/DeptMapper.java index 68b9dd13..9c872fb0 100644 --- a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/mapper/DeptMapper.java +++ b/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 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); /** * 修改子元素关系 diff --git a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/service/DeptServiceImpl.java b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/service/DeptServiceImpl.java index 2df452d1..b53cf121 100644 --- a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/service/DeptServiceImpl.java +++ b/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 selectDeptAll() + { + return deptMapper.selectDeptAll(); + } + + @Override + public int updateAncestorsById(Dept dept) { + return deptMapper.updateAncestorsById(dept); + } } diff --git a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/service/IDeptService.java b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/service/IDeptService.java index 6758929a..883da2cc 100644 --- a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/service/IDeptService.java +++ b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/dept/service/IDeptService.java @@ -160,4 +160,7 @@ public interface IDeptService public List selectDeptListHole(Dept dept); public List selectDeptTreeNotRole(Dept dept); + + public List selectDeptAll(); + public int updateAncestorsById(Dept dept); } diff --git a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/resources/mapper/system/DeptMapper.xml b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/resources/mapper/system/DeptMapper.xml index 92fa74ce..8eba5ce2 100644 --- a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/resources/mapper/system/DeptMapper.xml +++ b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/resources/mapper/system/DeptMapper.xml @@ -53,6 +53,19 @@ fullname, isMappingUnit, srzUnitId, taskId from sys_dept d + + + update sys_dept + + ancestors = #{ancestors}, + update_time = sysdate() + + where dept_id = #{deptId} + + + SELECT LAST_INSERT_ID()