package foundation.org; import foundation.capacity.ActorTarget; import foundation.capacity.TargetType; import foundation.dao.Filter; import foundation.dao.bizlogic.ICodeProvider; import foundation.data.entity.Entity; import foundation.data.entity.EntitySet; import foundation.data.meta.field.Field; import foundation.data.object.DataObject; import foundation.json.IJSONProvider; import foundation.json.IJSONWriter; import foundation.util.ID; import foundation.util.Util; public class Position implements IJSONProvider { private String id; private String code; private String name; private String buId; private String comapnyId; private int level; private String levelField; private String duty; private Org org; private BU bu; public Position() { } public void load(Entity entity) throws Exception { id = entity.getString("id"); code = entity.getString("code"); name = entity.getString("name"); buId = entity.getString("bu_id"); comapnyId = entity.getString("comapny_id"); level = entity.getInteger("level_no", 1); levelField = "level" + level; duty = entity.getString("duty"); } public static Position loadPosition(String positionId) throws Exception { DataObject dataObject = DataObject.getInstance("md_position"); Entity entity = dataObject.getTableEntity(positionId); if (entity == null) { return null; } Position position = new Position(); position.load(entity); return position; } public static EntitySet createPostion(String companyId, String buId, String actorId, String actorName) throws Exception { DataObject dataObject = DataObject.getInstance("md_bu_org"); Filter filter = new Filter(); if (Util.isEmpty(companyId)) { filter.add("company_id", companyId); } if (Util.isEmpty(buId)) { filter.add("bu_id", buId); } EntitySet entitySet = dataObject.getBrowseEntitySet(filter); dataObject = DataObject.getInstance("md_position"); EntitySet positionSet = dataObject.createTableEntitySet(); Entity positionEntity = dataObject.createTableEmptyEntity(); ICodeProvider codeProvider = ICodeProvider.getInstance(new Field("code"), "Code-Position"); String positionId, positionCode, positionName; for (Entity entity : entitySet) { buId = entity.getString("bu_id"); companyId = entity.getString("company_id"); positionCode = codeProvider.nextval(buId + companyId); positionName = actorName + "(" + entity.getString("company_name") + entity.getString("bu_name") + ")"; positionId = ID.newValue(); positionEntity.set("id", positionId); positionEntity.set("bu_id", buId); positionEntity.set("company_id", companyId); positionEntity.set("parent_id", "0"); positionEntity.set("category_code", TargetType.Position); positionEntity.set("code", positionCode); positionEntity.set("name", positionName); positionEntity.set("is_delete", "F"); Position position = new Position(); position.load(positionEntity); ActorTarget.createInstance(actorId, position); positionSet.append(positionEntity); } return positionSet; } public String getLevelField() { return levelField; } public String getId() { return id; } public String getCode() { return code; } public String getName() { return name; } public String getBUId() { return buId; } public String getDuty() { return duty; } public void setOrg(Org org) { this.org = org; } public Org getOrg() { return org; } public BU getBU() { return bu; } public void setBU(BU bu) { this.bu = bu; } public String getComapnyId() { return comapnyId; } public void setComapnyId(String comapnyId) { this.comapnyId = comapnyId; } @Override public void writeJSON(IJSONWriter writer) { writer.beginObject(); writeJSONBody(writer); writer.endObject(); } public void writeJSONBody(IJSONWriter writer) { writer.write("id", id); writer.write("code", code); writer.write("name", name); writer.write("duty", duty); } }