Browse Source

人员组织导入导出服务

luojing 5 years ago
parent
commit
88e4e50cb0

+ 44 - 48
o2server/x_organization_assemble_control/src/main/java/com/x/organization/assemble/control/jaxrs/export/ActionExportAll.java

@@ -26,7 +26,7 @@ import com.x.organization.core.entity.UnitDuty_;
 import com.x.organization.core.entity.Unit_;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
@@ -50,7 +50,8 @@ public class ActionExportAll extends BaseAction {
 	List<Identity> allIdentityList = new ArrayList<>();
 	List<UnitDuty> allDutyList = new ArrayList<>();
 	List<Group> allGroupList = new ArrayList<>();
-	Workbook wb = new HSSFWorkbook();
+	//Workbook wb = new HSSFWorkbook();
+	Workbook wb = new XSSFWorkbook();
 	
 	protected ActionResult<Wo> execute( HttpServletRequest request, EffectivePerson effectivePerson, Boolean stream ) throws Exception {
 		ActionResult<Wo> result = new ActionResult<>();
@@ -73,7 +74,7 @@ public class ActionExportAll extends BaseAction {
 			e.printStackTrace();
 		}
 		
-		fileName = "person_export_" + DateTools.formatDate(new Date()) + ".xls";
+		fileName = "person_export_" + DateTools.formatDate(new Date()) + ".xlsx";
 		//创建说明sheet
 		this.createNoticeSheet();
 		
@@ -270,7 +271,7 @@ public class ActionExportAll extends BaseAction {
 			
 			// 先创建表头
 			row = sheet.createRow(0);
-			row.createCell(0).setCellValue("人员姓名 *");
+			row.createCell(0).setCellValue("人员姓名 *");
 			row.createCell(1).setCellValue("员工账号 *");
 			row.createCell(2).setCellValue("手机号码 *");
 			row.createCell(3).setCellValue("人员编号");
@@ -384,32 +385,45 @@ public class ActionExportAll extends BaseAction {
 			for (int i = 0; i < groupList.size(); i++) {
 				group = groupList.get(i);
 				row = sheet.createRow(i + 1);
+				int forNumber = i+1;
 				List<String> personList = group.getPersonList();
 				List<String> unitList = group.getUnitList();
 				List<String> groupsList = group.getGroupList();
-				System.out.println("personList="+personList.size());
+				/*System.out.println("personList="+personList.size());
 				System.out.println("unitList="+unitList.size());
-				System.out.println("groupsList="+groupsList.size());
-				if(ListTools.isNotEmpty(personList)){
-					for(String personId : personList){
-						Person person = emc.flag(personId, Person.class);
-						if(person != null){
-							row.createCell(0).setCellValue(group.getName());
-							row.createCell(1).setCellValue(group.getUnique());
-							row.createCell(2).setCellValue(person.getUnique());
-							row.createCell(3).setCellValue("");
-							row.createCell(4).setCellValue("");
-						}else{
-							row.createCell(0).setCellValue(group.getName());
-							row.createCell(1).setCellValue(group.getUnique());
-							row.createCell(2).setCellValue("");
-							row.createCell(3).setCellValue("");
-							row.createCell(4).setCellValue("");
-						}
-					} 
-					
-					/*if(ListTools.isNotEmpty(unitList)){
+				System.out.println("groupsList="+groupsList.size());*/
+				if(ListTools.isEmpty(personList) && ListTools.isEmpty(unitList) && ListTools.isEmpty(groupsList)){
+					row.createCell(0).setCellValue(group.getName());
+					row.createCell(1).setCellValue(group.getUnique());
+					row.createCell(2).setCellValue("");
+					row.createCell(3).setCellValue("");
+					row.createCell(4).setCellValue("");
+					row.createCell(5).setCellValue(group.getDescription());
+				}else{
+					if(ListTools.isNotEmpty(personList)){
+						for(String personId : personList){
+							Person person = emc.flag(personId, Person.class);
+							if(person != null){
+								row.createCell(0).setCellValue(group.getName());
+								row.createCell(1).setCellValue(group.getUnique());
+								row.createCell(2).setCellValue(person.getUnique());
+								row.createCell(3).setCellValue("");
+								row.createCell(4).setCellValue("");
+							}else{
+								row.createCell(0).setCellValue(group.getName());
+								row.createCell(1).setCellValue(group.getUnique());
+								row.createCell(2).setCellValue("");
+								row.createCell(3).setCellValue("");
+								row.createCell(4).setCellValue("");
+							}
+							row.createCell(5).setCellValue(group.getDescription());
+						} 
+						
+					}
+					if(ListTools.isNotEmpty(unitList)){
 						for(String unitId : unitList){
+							forNumber++;
+							row = sheet.createRow(forNumber);
 							Unit unit = emc.flag(unitId, Unit.class);
 							if(unit != null){
 								row.createCell(0).setCellValue(group.getName());
@@ -424,17 +438,13 @@ public class ActionExportAll extends BaseAction {
 								row.createCell(3).setCellValue("");
 								row.createCell(4).setCellValue("");
 							}
+							row.createCell(5).setCellValue(group.getDescription());
 						} 
-					}else{
-						row.createCell(0).setCellValue(group.getName());
-						row.createCell(1).setCellValue(group.getUnique());
-						row.createCell(2).setCellValue("");
-						row.createCell(3).setCellValue("");
-						row.createCell(4).setCellValue("");
 					}
-					
 					if(ListTools.isNotEmpty(groupsList)){
 						for(String groupId : groupsList){
+							forNumber++;
+							row = sheet.createRow(forNumber);
 							Group grouptemp = emc.flag(groupId, Group.class);
 							if(grouptemp != null){
 								row.createCell(0).setCellValue(group.getName());
@@ -449,25 +459,11 @@ public class ActionExportAll extends BaseAction {
 								row.createCell(3).setCellValue("");
 								row.createCell(4).setCellValue("");
 							}
+							row.createCell(5).setCellValue(group.getDescription());
 						} 
-					}else{
-						row.createCell(0).setCellValue(group.getName());
-						row.createCell(1).setCellValue(group.getUnique());
-						row.createCell(2).setCellValue("");
-						row.createCell(3).setCellValue("");
-						row.createCell(4).setCellValue("");
-					}*/
-					
-				}else{
-					row.createCell(0).setCellValue(group.getName());
-					row.createCell(1).setCellValue(group.getUnique());
-					row.createCell(2).setCellValue("");
-					row.createCell(3).setCellValue("");
-					row.createCell(4).setCellValue("");
+					}
 				}
 				
-				
-				row.createCell(5).setCellValue(group.getDescription());
 			}
 		}
 	}

+ 35 - 23
o2server/x_organization_assemble_control/src/main/java/com/x/organization/assemble/control/jaxrs/inputperson/ActionInputAll.java

@@ -39,7 +39,6 @@ import com.google.gson.JsonParser;
 
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.entity.annotation.CheckPersistType;
 import com.x.base.core.entity.type.GenderType;
 import com.x.base.core.project.x_organization_assemble_control;
 import com.x.base.core.project.annotation.FieldDescribe;
@@ -156,6 +155,7 @@ class ActionInputAll extends BaseAction {
 	
 	private void scanUnit(Business business, XSSFWorkbook workbook) throws Exception {
 	//导入组织信息
+		System.out.println("开始导入人员组织所有数据--------start");
 			Sheet sheet = workbook.getSheetAt(1);
 			configuratorUnit = new UnitSheetConfigurator(workbook, sheet);
 			unit = this.scanUnitList(configuratorUnit, sheet);
@@ -189,11 +189,15 @@ class ActionInputAll extends BaseAction {
 						
 						if(wholeFlag){
 							//保存组织,人员
+							System.out.println("开始导入组织信息--------");
 							this.persistUnit(workbook, configuratorUnit, unit);
+							System.out.println("开始导入人员信息--------");
 							this.persistPerson(business,workbook, configuratorPerson, person);
+							System.out.println("开始导入身份信息--------");
 							identity = this.scanIdentityList(business,configuratorIdentity, sheet);
 							//保存身份
 							this.persistIdentity(workbook, configuratorIdentity, identity);
+							System.out.println("开始导入职务信息--------");
 							//保存职务
 							duty = this.scanDutyList(business,configuratorIdentity, sheet);
 							this.persistDuty(workbook, configuratorDuty, duty);
@@ -201,8 +205,10 @@ class ActionInputAll extends BaseAction {
 							//保存群组
 							//校验群组
 							wholeFlag = this.checkGroup(business,workbook,person,unit);
+							System.out.println("开始导入群组信息--------");
 							this.scanGroup(business,workbook,person,unit);
 							this.persistGroup(business,workbook, configuratorGroup, group);
+							System.out.println("开始导入人员组织所有数据--------end");
 						}
 													
 				}
@@ -220,7 +226,7 @@ class ActionInputAll extends BaseAction {
 				if (null != row) {
 					String name = configurator.getCellStringValue(row.getCell(configurator.getNameColumn()));
 					String key = configurator.getCellStringValue(row.getCell(configurator.getUniqueColumn()));
-					System.out.println("职务name="+name+"_职务value="+key);
+					//System.out.println("职务name="+name+"_职务value="+key);
 					if(StringUtils.isNotEmpty(name) && StringUtils.isNotEmpty(key)){
 						dutyMap.put(key, name);
 						
@@ -481,13 +487,15 @@ class ActionInputAll extends BaseAction {
 						unitList.add(u.getId());
 						groupItem.setUnitList(unitList);
 					}
-					if(StringUtils.isNoneEmpty(groupCode)){
+					if(StringUtils.isNotEmpty(groupCode)){
 						groupItem.setGroupCode(groupCode);
 						Group groupobj = emc.flag(groupCode, Group.class);
 						 if(groupobj != null){
 							 List<String> groupList = new ArrayList<>();
 							 groupList.add(groupobj.getId());
 							 groupItem.setGroupList(groupList);
+						 }else{
+							 
 						 }
 					}
 					
@@ -535,17 +543,17 @@ class ActionInputAll extends BaseAction {
 						CriteriaBuilder cb = em.getCriteriaBuilder();
 						CriteriaQuery<Identity> cq = cb.createQuery(Identity.class);
 						Root<Identity> root = cq.from(Identity.class);
-						System.out.println("personid="+personObj.getId());
+						//System.out.println("personid="+personObj.getId());
 						Predicate p = cb.equal(root.get(Identity_.person), personObj.getId());		
 						identitys = em.createQuery(cq.select(root).where(p)).getResultList();
 					}
-					System.out.println("identitys="+identitys.size());
+					//System.out.println("identitys="+identitys.size());
 					
 					if(ListTools.isNotEmpty(identitys)){
 						List<String> didylist = new ArrayList<>();
 						for (Identity identity : identitys) {
 							if(unitId.equals(identity.getUnit())){
-								System.out.println("unitCode="+unitCode);
+								//System.out.println("unitCode="+unitCode);
 								didylist.add(identity.getDistinguishedName());
 							}
 						}
@@ -569,7 +577,7 @@ class ActionInputAll extends BaseAction {
 		EntityManagerContainer emc = business.entityManagerContainer();
 		boolean validate = true;
 		for (UnitItem o : unit) {
-			System.out.println("正在校验用户:{}."+ o.getName());
+			//System.out.println("正在校验组织:{}."+ o.getName());
 			if (StringUtils.isEmpty(o.getName())) {
 				this.setUnitMemo(workbook, configurator, o, "组织名称不能为空.");
 				validate = false;
@@ -617,7 +625,7 @@ class ActionInputAll extends BaseAction {
 		EntityManagerContainer emc = business.entityManagerContainer();
 		boolean validate = true;
 		for (PersonItem o : person) {
-			System.out.println("正在校验用户:{}."+ o.getName());
+			//System.out.println("正在校验用户:{}."+ o.getName());
 			if (StringUtils.isEmpty(o.getName())) {
 				this.setPersonMemo(workbook, configurator, o, "人员姓名不能为空.");
 				validate = false;
@@ -687,7 +695,7 @@ class ActionInputAll extends BaseAction {
 				String unique = configurator.getCellStringValue(row.getCell(configurator.getUniqueColumn()));
 				String unitCode = configurator.getCellStringValue(row.getCell(configurator.getUnitCodeColumn()));
 				String dutyCode = configurator.getCellStringValue(row.getCell(configurator.getDutyCodeColumn()));
-				System.out.println("正在校验人员 :{}."+ unique);
+				//System.out.println("正在校验人员身份 :{}."+ unique);
 				boolean personcheck = false;
 				boolean unitcheck = false;
 				IdentityItem identityItem = new IdentityItem();
@@ -783,7 +791,7 @@ class ActionInputAll extends BaseAction {
 				String personCode = configurator.getCellStringValue(row.getCell(configurator.getPersonCodeColumn()));
 				String unitCode = configurator.getCellStringValue(row.getCell(configurator.getUnitCodeColumn()));
 				
-				System.out.println("正在校验群组 :{}."+ name);
+				//System.out.println("正在校验群组 :{}."+ name);
 				boolean personcheck = false;
 				boolean unitcheck = false;
 				GroupItem groupItem = new GroupItem();
@@ -802,7 +810,6 @@ class ActionInputAll extends BaseAction {
 				
 				Person person = null;
 				person = emc.flag(personCode, Person.class);
-				System.out.println("personCode="+personCode);
 				if(person != null){
 					personcheck = true;
 				}else{
@@ -861,10 +868,11 @@ class ActionInputAll extends BaseAction {
 				o.copyTo(unitObject);
 				
 				String resp = this.saveUnit("unit", unitObject);
-				System.out.println("respMass="+resp);
+				
 				if("".equals(resp)){
 					this.setUnitMemo(workbook, configurator, o, "已导入.");
 				}else{
+					System.out.println("respMass="+resp);
 					this.setUnitMemo(workbook, configurator, o, resp);
 				}
 				
@@ -872,7 +880,7 @@ class ActionInputAll extends BaseAction {
 		}
 	}
 	private void persistPerson(Business business,XSSFWorkbook workbook, PersonSheetConfigurator configurator, List<PersonItem> personItems) throws Exception {
-		EntityManagerContainer emc = business.entityManagerContainer();
+		//EntityManagerContainer emc = business.entityManagerContainer();
 		for (List<PersonItem> list : ListTools.batch(personItems, 200)) {
 			for (PersonItem o : list) {
 				logger.debug("正在保存人员:{}.", o.getName());
@@ -880,9 +888,9 @@ class ActionInputAll extends BaseAction {
 				o.copyTo(personObject);
 				
 				String resp = this.savePerson("person", personObject);
-				System.out.println("respMass="+resp);
+				
 				if("".equals(resp)){
-					if((!o.getAttributes().isEmpty()) && o.getAttributes().containsKey("idNumber") && StringUtils.isNotEmpty(o.getAttributes().get("idNumber"))){
+					/*if((!o.getAttributes().isEmpty()) && o.getAttributes().containsKey("idNumber") && StringUtils.isNotEmpty(o.getAttributes().get("idNumber"))){
 						
 						Person person = null;
 						person = emc.flag(o.getUnique(), Person.class);
@@ -896,9 +904,10 @@ class ActionInputAll extends BaseAction {
 							String respAttribute = this.savePersonAttribute("personattribute",personAttribute);
 							System.out.println("respAttribute="+respAttribute);
 						}
-					}
+					}*/
 					this.setPersonMemo(workbook, configurator, o, "已导入.");
 				}else{
+					System.out.println("respMass="+resp);
 					this.setPersonMemo(workbook, configurator, o, resp);
 				}
 				
@@ -914,10 +923,11 @@ class ActionInputAll extends BaseAction {
 				o.copyTo(identityObject);
 				
 				String resp = this.saveIdentity("identity", identityObject);
-				System.out.println("respMass="+resp);
+				
 				if("".equals(resp)){
 					this.setIdentityMemo(workbook, configurator, o, "已导入.");
 				}else{
+					System.out.println("respMass="+resp);
 					this.setIdentityMemo(workbook, configurator, o, resp);
 				}
 				
@@ -965,16 +975,21 @@ class ActionInputAll extends BaseAction {
 					if(ListTools.isNotEmpty(o.getGroupList())){
 						groupList.addAll(o.getGroupList());
 					}
+					if(StringUtils.isNotEmpty(o.getGroupCode())){
+						Group gp = emc.flag(o.getGroupCode(), Group.class);
+						groupList.add(gp.getId());
+					}
 					
 					g.setPersonList(personList);
 					g.setUnitList(unitList);
 					g.setGroupList(groupList);
 					
 					String respEdit = this.editGroup("group/"+g.getId(), g);
-					System.out.println("respEditMass="+respEdit);
+					
 					if("".equals(respEdit)){
 						this.setGroupMemo(workbook, configurator, o, "已导入.");
 					}else{
+						System.out.println("respEditMass="+respEdit);
 						this.setGroupMemo(workbook, configurator, o, respEdit);
 					}
 					
@@ -996,10 +1011,11 @@ class ActionInputAll extends BaseAction {
 					o.copyTo(groupObject);
 					
 					String resp = this.saveGroup("group", groupObject);
-					System.out.println("respMass="+resp);
+					
 					if("".equals(resp)){
 						this.setGroupMemo(workbook, configurator, o, "已导入.");
 					}else{
+						System.out.println("respMass="+resp);
 						this.setGroupMemo(workbook, configurator, o, resp);
 					}
 				}
@@ -1093,22 +1109,18 @@ class ActionInputAll extends BaseAction {
 	
 	private boolean getDuty(String path, String dutyCode,List<String> identityLists) throws Exception{
 		boolean checkduty = false;
-		System.out.println("getDuty_path="+path);
 		ActionResponse resp =  ThisApplication.context().applications()
 				.getQuery(x_organization_assemble_control.class, path);
-		System.out.println("getDuty_resp="+resp.toString());
 		JsonObject jsonObject = new JsonParser().parse(resp.toString()).getAsJsonObject();
 		JsonArray jsonArray = null;
 		//jsonArray = new JsonParser().parse(jsonObject.getAsJsonObject().get("data").getAsString()).getAsJsonArray();
 		jsonArray = jsonObject.getAsJsonArray("data");
 		if(jsonArray.size()>0){
-			System.out.println("getDuty="+jsonArray.size());
 			Iterator it = jsonArray.iterator();
 		    while(it.hasNext()){
 		        JsonElement e = (JsonElement)it.next();
 		        //JsonElement转换为JavaBean对象
 		        UnitDuty unitduty= gson.fromJson(e, UnitDuty.class);
-		        System.out.println("getDutyUnique="+unitduty.getUnique());
 		        if(dutyCode.equals(unitduty.getUnique())){
 		        	checkduty = true;
 		        	UnitDuty dutyObject = new UnitDuty();

+ 300 - 0
o2server/x_organization_assemble_control/src/main/java/com/x/organization/assemble/control/jaxrs/inputperson/ActionWipeAll.java

@@ -0,0 +1,300 @@
+package com.x.organization.assemble.control.jaxrs.inputperson;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.persistence.EntityManager;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+import com.x.base.core.project.tools.ListTools;
+import com.x.organization.assemble.control.Business;
+import com.x.organization.assemble.control.ThisApplication;
+import com.x.organization.core.entity.Group;
+import com.x.organization.core.entity.Group_;
+import com.x.organization.core.entity.Identity;
+import com.x.organization.core.entity.Person;
+import com.x.organization.core.entity.PersonAttribute;
+import com.x.organization.core.entity.PersonAttribute_;
+import com.x.organization.core.entity.Unit;
+import com.x.organization.core.entity.UnitDuty;
+import com.x.organization.core.entity.UnitDuty_;
+import com.x.organization.core.entity.Unit_;
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.base.core.entity.annotation.CheckPersistType;
+import com.x.base.core.entity.annotation.CheckRemoveType;
+import com.x.base.core.project.x_organization_assemble_control;
+import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.cache.ApplicationCache;
+import com.x.base.core.project.connection.ActionResponse;
+import com.x.base.core.project.gson.GsonPropertyObject;
+import com.x.base.core.project.http.ActionResult;
+import com.x.base.core.project.http.EffectivePerson;
+import com.x.base.core.project.logger.Logger;
+import com.x.base.core.project.logger.LoggerFactory;
+
+/**
+ * 清空人员组织数据
+ */
+public class ActionWipeAll extends BaseAction {
+	
+	private static  Logger logger = LoggerFactory.getLogger(ActionWipeAll.class);
+	List<Unit> allUnitList = new ArrayList<>();
+	List<Person> allPersonList = new ArrayList<>();
+	List<Identity> allIdentityList = new ArrayList<>();
+	List<UnitDuty> allDutyList = new ArrayList<>();
+	List<Group> allGroupList = new ArrayList<>();
+	
+	protected ActionResult<Wo> execute(  EffectivePerson effectivePerson ) throws Exception {
+		ActionResult<Wo> result = new ActionResult<>();
+		Wo wo = new Wo();
+		Business business = null;
+		
+		// 先获取需要删除的数据
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			System.out.println("开始删除人员组织所有数据--------start");
+			 business = new Business(emc);
+			this.listUnit(business);
+			this.listPerson(business);
+			this.listIdentity(business);
+			this.listDuty(business);
+			this.listGroup(business);
+			
+			emc.beginTransaction( UnitDuty.class );
+			emc.beginTransaction( Group.class );
+			emc.beginTransaction( Identity.class );
+			emc.beginTransaction( Person.class );
+			//emc.beginTransaction( Unit.class );
+			System.out.println("开始删除职务--------");
+			this.deleteDutys(emc,business);
+			System.out.println("开始删除群组--------");
+			this.deleteGroups(emc,business);
+			System.out.println("开始删除身份--------");
+			this.deleteIdentitys(emc,business);
+			System.out.println("开始删除人员--------");
+			this.deletePersons(emc,business);
+			System.out.println("开始删除组织--------");
+			this.deleteUnits(emc,business);
+			emc.commit();
+			
+			ApplicationCache.notify(UnitDuty.class);
+			ApplicationCache.notify(Group.class);
+			ApplicationCache.notify(Identity.class);
+			ApplicationCache.notify(Person.class);
+			ApplicationCache.notify(Unit.class);
+			
+			wo.setFlag("success");
+			System.out.println("开始删除人员组织所有数据--------end");
+		} catch (Exception e) {
+			logger.info("系统在查询所有组织人员信息时发生异常。" );
+			wo.setFlag("fail");
+			e.printStackTrace();
+		}
+		
+			
+		result.setData(wo);
+		return result;
+	}
+	
+	private void listUnit(Business business) throws Exception {
+		List<Unit> topUnitList = new ArrayList<>();
+		topUnitList = this.listTopUnit(business);
+		if(ListTools.isNotEmpty(topUnitList)){
+			allUnitList.addAll(topUnitList);
+			for (Unit unitItem : topUnitList) {
+				List<Unit> ulist= this.listSubNested(business, unitItem);
+				if(ListTools.isNotEmpty(ulist)){
+					allUnitList.addAll(ulist);
+				}
+			}
+		}
+		
+		if(ListTools.isNotEmpty(allUnitList)){
+			//allUnitList = business.unit().sort(allUnitList);
+			allUnitList = allUnitList.stream().sorted(Comparator.comparing(Unit::getLevel).reversed()).collect(Collectors.toList());
+		}
+	}
+	
+	private void listPerson(Business business) throws Exception {
+		EntityManager em = business.entityManagerContainer().get(Person.class);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<Person> cq = cb.createQuery(Person.class);
+		Root<Person> root = cq.from(Person.class);
+		allPersonList = em.createQuery(cq.select(root)).getResultList();
+	}
+	
+	private void listIdentity(Business business) throws Exception {
+		EntityManager em = business.entityManagerContainer().get(Identity.class);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<Identity> cq = cb.createQuery(Identity.class);
+		Root<Identity> root = cq.from(Identity.class);
+		allIdentityList = em.createQuery(cq.select(root)).getResultList();
+	}
+	
+	private void listDuty(Business business) throws Exception {
+		EntityManager em = business.entityManagerContainer().get(UnitDuty.class);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<UnitDuty> cq = cb.createQuery(UnitDuty.class);
+		Root<UnitDuty> root = cq.from(UnitDuty.class);
+		allDutyList = em.createQuery(cq.select(root)).getResultList();
+	}
+	
+	private void listGroup(Business business) throws Exception {
+		EntityManager em = business.entityManagerContainer().get(Group.class);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<Group> cq = cb.createQuery(Group.class);
+		Root<Group> root = cq.from(Group.class);
+		allGroupList = em.createQuery(cq.select(root)).getResultList();
+	}
+
+	private List<Unit> listTopUnit(Business business) throws Exception {
+		EntityManager em = business.entityManagerContainer().get(Unit.class);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<Unit> cq = cb.createQuery(Unit.class);
+		Root<Unit> root = cq.from(Unit.class);
+		Predicate p = cb.equal(root.get(Unit_.level), 1);
+		List<Unit> os = em.createQuery(cq.select(root).where(p)).getResultList();
+		return os;
+	}
+	
+	private List<Unit> listSubNested(Business business,Unit unit) throws Exception {
+		List<Unit> os = business.unit().listSubNestedObject(unit);
+		return os;
+	}
+	
+	private void deleteUnits(EntityManagerContainer emc,Business business) throws Exception{
+		if(ListTools.isNotEmpty(allUnitList)){
+			/*for(Unit unit : allUnitList){
+				//this.deleteEntity("unit/"+unit.getId());
+				//emc.remove( unit , CheckRemoveType.all );
+			}*/
+			for(int i=0; i<allUnitList.size();i++){
+				Unit unit = allUnitList.get(i);
+				business.entityManagerContainer().beginTransaction(Unit.class);
+				business.entityManagerContainer().remove(unit, CheckRemoveType.all);
+				business.entityManagerContainer().commit();
+			}
+		}
+		
+	}
+	
+	private void deletePersons(EntityManagerContainer emc,Business business) throws Exception{
+		if(ListTools.isNotEmpty(allPersonList)){
+			for(Person person : allPersonList){
+				business.entityManagerContainer().beginTransaction(Person.class);
+				business.entityManagerContainer().remove(person, CheckRemoveType.all);
+				//emc.remove( person , CheckRemoveType.all );
+			}
+			business.entityManagerContainer().commit();
+		}
+		
+	}
+	
+	private void deleteIdentitys(EntityManagerContainer emc,Business business) throws Exception{
+		if(ListTools.isNotEmpty(allIdentityList)){
+			for(Identity identity : allIdentityList){
+				//this.deleteEntity("identity/"+identity.getId());
+				//emc.remove( identity , CheckRemoveType.all );
+				business.entityManagerContainer().beginTransaction(Identity.class);
+				business.entityManagerContainer().remove(identity, CheckRemoveType.all);
+			}
+			business.entityManagerContainer().commit();
+		}
+		
+	}
+	
+	private void deleteDutys(EntityManagerContainer emc,Business business) throws Exception{
+		if(ListTools.isNotEmpty(allDutyList)){
+			for(UnitDuty unitDuty : allDutyList){
+				//this.deleteEntity("unitduty/"+unitDuty.getId());
+				//emc.remove( unitDuty , CheckRemoveType.all );
+				business.entityManagerContainer().beginTransaction(UnitDuty.class);
+				business.entityManagerContainer().remove(unitDuty, CheckRemoveType.all);
+				business.entityManagerContainer().commit();
+			}
+		}
+		
+	}
+	
+	private void deleteGroups(EntityManagerContainer emc,Business business) throws Exception{
+		if(ListTools.isNotEmpty(allGroupList)){
+			for(Group group : allGroupList){
+				if(group != null){
+					//this.deleteEntity("group/"+group.getId());
+					//emc.remove( group , CheckRemoveType.all );
+					this.removeGroupMember(business,group);
+					
+					business.entityManagerContainer().beginTransaction(Group.class);
+					business.entityManagerContainer().remove(group, CheckRemoveType.all);
+					business.entityManagerContainer().commit();
+				}
+				
+			}
+		}
+		
+	}
+	
+	private void removeGroupMember(Business business, Group group) throws Exception {
+		EntityManager em = business.entityManagerContainer().get(Group.class);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<Group> cq = cb.createQuery(Group.class);
+		Root<Group> root = cq.from(Group.class);
+		Predicate p = cb.isMember(group.getId(), root.get(Group_.groupList));
+		List<Group> os = em.createQuery(cq.select(root).where(p)).getResultList();
+		
+		for (Group o : os) {
+			o.getGroupList().remove(group.getId());
+			business.entityManagerContainer().beginTransaction(Group.class);
+			business.entityManagerContainer().remove(o, CheckRemoveType.all);
+		}
+		business.entityManagerContainer().commit();
+		
+	}
+	
+	private String deleteEntity(String path) throws Exception{
+		ActionResponse resp =  ThisApplication.context().applications()
+				.deleteQuery(x_organization_assemble_control.class, path);
+		return resp.getMessage();
+	}
+	
+	private List<PersonAttribute> listAttributeWithPerson(Business business,String personId) throws Exception{
+		EntityManager em = business.entityManagerContainer().get(PersonAttribute.class);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<PersonAttribute> cq = cb.createQuery(PersonAttribute.class);
+		Root<PersonAttribute> root = cq.from(PersonAttribute.class);
+		Predicate p = cb.equal(root.get(PersonAttribute_.person), personId);
+		List<PersonAttribute> os = em.createQuery(cq.select(root).where(p)).getResultList();
+		return os;
+	}
+	
+	private List<UnitDuty> listDutyWithIdentity(Business business,String identityId) throws Exception{
+		EntityManager em = business.entityManagerContainer().get(UnitDuty.class);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<UnitDuty> cq = cb.createQuery(UnitDuty.class);
+		Root<UnitDuty> root = cq.from(UnitDuty.class);
+		Predicate p = cb.isMember(identityId, root.get(UnitDuty_.identityList));
+		List<UnitDuty> os = em.createQuery(cq.select(root).where(p)).getResultList();
+		return os;
+	}
+
+	public static class Wo extends GsonPropertyObject {
+
+		@FieldDescribe("返回的结果标识")
+		private String flag;
+
+		public String getFlag() {
+			return flag;
+		}
+
+		public void setFlag(String flag) {
+			this.flag = flag;
+		}
+
+	}
+
+}

+ 16 - 0
o2server/x_organization_assemble_control/src/main/java/com/x/organization/assemble/control/jaxrs/inputperson/InputPersonAction.java

@@ -82,5 +82,21 @@ public class InputPersonAction extends StandardJaxrsAction {
 		}
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
+	
+	@JaxrsMethodDescribe(value = "清空人员组织数据.", action = ActionWipeAll.class)
+	@GET
+	@Path("wipe")
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void wipeAll(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request) {
+		ActionResult<ActionWipeAll.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionWipeAll().execute(effectivePerson); 
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
 
 }