//因dao层插入组织方法必须为库中存在其父组织的才能插入,故导入的excel数据中需先插入父级组织,后插入子级组织
public static void sortInsertOrg(Map<String,Organize> db,Map<String,Organize> sheet,Organize org){
if(db.get(org.getParentId())!=null){ //判断父组织是否在数据库表中存在,若存在,则插入数据库
System.out.println(org.getId() + ":的父组织:"+org.getParentId()+"存在,插入数据库 ~");
db.put(org.getId(), org);
}else if(sheet.get(org.getParentId())!=null){ //父组织不存在数据库中,判断导入的excel数据中是否有其父组织,有则递归判断该父组织的父组织
sortInsertOrg(db,sheet,sheet.get(org.getParentId())); //递归判断该父组织的父组织
sortInsertOrg(db,sheet,org); //递归判断完父组织后再次尝试插入当前组织
}else{
System.out.println(org.getId()+"not found ~");
}
}
public static void main(String[] args) {
Map<String,Organize> db = new HashMap<String, Organize>();
Map<String,Organize> sheet = new HashMap<String, Organize>();
Organize org1 = new Organize();
org1.setId("002");
org1.setParentId("001");
Organize org4 = new Organize();
org4.setId("003");
org4.setParentId("002");
Organize org2 = new Organize();
org2.setId("004");
org2.setParentId("003");
Organize org3 = new Organize();
org3.setId("005");
org3.setParentId("004");
db.put(org1.getId(),org1);
sheet.put(org2.getId(),org2);
sheet.put(org4.getId(),org4);
sortInsertOrg(db,sheet,org3);
}