import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class readTxt {
public static void main(String[] args) throws IOException {
String encoding = "GBK";
File aa = new File("D:/1.txt");//存企业微信部门列表json格式
File diapipei = new File("D:/2.txt");//放要转换的xxx/xxxx/xxx/xx部门形式
InputStreamReader read = new InputStreamReader(new FileInputStream(aa), encoding);
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
StringBuffer sb = new StringBuffer();
while ((lineTxt = bufferedReader.readLine()) != null) {
sb.append(lineTxt);
}
JSONArray jsonArray = JSONArray.parseArray(sb.toString());
List<province> pro = new ArrayList<province>();
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject json = jsonArray.getJSONObject(i);
String name = json.getString("name");
String id = json.getString("id");
String pid = json.getString("parentid");
province pi = new province();
pi.setId(id);
pi.setName(name);
pi.setPid(pid);
pro.add(pi);
}
//读2.txt
InputStreamReader read1 = new InputStreamReader(new FileInputStream(diapipei), encoding);
BufferedReader bufferedReader1 = new BufferedReader(read1);
String lineTxt1 = null;
while ((lineTxt1 = bufferedReader1.readLine()) != null) {
String getid = toid(pro,lineTxt1);
System.out.println(getid);
}
read.close();
}
@Data
static class province{
private String name;
private String id;
private String pid;
}
public static String toid(List<province> array,String aa){
String [] mao = aa.split(";");//有多个部门用;(这里对有2个部门的处理)
if(mao.length>1){
String aa1 = mao[0];
String [] len1 = aa1.split("/");
Boolean tou1 = len1[0].matches("^([1-9]\\d*)|(([1-9]\\d*|0)\\.\\d+)$");//判断是否为数字
aa1 = pipei(tou1,array,len1, aa1);
aa1 = toid(array, aa1);
String aa2 = mao[1];
String [] len2 = aa2.split("/");
Boolean tou2 = len2[0].matches("^([1-9]\\d*)|(([1-9]\\d*|0)\\.\\d+)$");
aa2 = pipei(tou2,array,len2, aa2);
aa2 = toid(array, aa2);
aa = aa1+";"+aa2;
}
else {
String[] len = aa.split("/");
Boolean tou = len[0].matches("^([1-9]\\d*)|(([1-9]\\d*|0)\\.\\d+)$");
if (len.length > 1) {//如果还有子部门
aa = pipei(tou, array, len, aa);
aa = toid(array, aa);
}
}
return aa;
}
public static String pipei(Boolean boo,List<province> array,String [] len,String aa){
if(boo){//如果头部为数字替换"xx/xxx"
for(int i=0;i<array.size();i++){
if(array.get(i).getName().equals(len[1])&&array.get(i).getPid().equals(len[0])){
String newname = array.get(i).getId();
String older = len[0]+"/"+len[1];
aa = aa.replace(older,newname);
break;
}
}
}
else {//头部为文字替换“xxx”
for(int i=0;i<array.size();i++){
if(array.get(i).getName().equals(len[0])){
String newname = array.get(i).getId();
String older = len[0];
aa = aa.replaceFirst(older,newname);
break;
}
}
}
return aa;
}
}
通过递归遍历子部门获取部门号--企业微信接口获取json格式部门列表
最新推荐文章于 2024-04-25 08:30:00 发布