递归遍历子部门获取部门号

    技术2022-07-12  72

    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; } }

     

    Processed: 0.010, SQL: 9