package org.fireflow.demo.workflow.ext;
import java.util.ArrayList;
import java.util.List;
import org.fireflow.demo.FireflowDemoDao;
import org.fireflow.demo.hr.bean.Organization;
import org.fireflow.demo.security.bean.UserRole;
import org.fireflow.demo.workflow.WorkflowUtil;
import org.fireflow.engine.modules.ousystem.Department;
import org.fireflow.engine.modules.ousystem.Group;
import org.fireflow.engine.modules.ousystem.Role;
import org.fireflow.engine.modules.ousystem.User;
import org.fireflow.engine.modules.ousystem.impl.OUSystemConnectorEmptyImpl;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
public class OkErpOUSystemConnector extends OUSystemConnectorEmptyImpl {
private FireflowDemoDao dao = null;
public FireflowDemoDao getDao() {
return dao;
}
public void setDao(FireflowDemoDao dao) {
this.dao = dao;
}
public Dao dao(){
return dao;
}
@Override
public List<Department> findAllTopDepartments() {
List<Organization> orgList = dao().query(Organization.class, Cnd.where("parentCode","=","0"));
List<Department> result = new ArrayList<Department>();
if (orgList!=null){
for (Organization org : orgList){
Department dept = WorkflowUtil.convertAppDept2FireflowDept(org);
result.add(dept);
}
}
return result;
}
@Override
public List<Department> findChildDepartments(String parentId) {
List<Organization> orgList = dao().query(Organization.class, Cnd.where("parentCode","=",parentId));
List<Department> result = new ArrayList<Department>();
if (orgList!=null){
for (Organization org : orgList){
Department dept = WorkflowUtil.convertAppDept2FireflowDept(org);
result.add(dept);
}
}
return result;
}
@Override
public Department findDepartmentById(String id) {
Organization org = dao().fetch(Organization.class, id);
if (org!=null){
Department dept = WorkflowUtil.convertAppDept2FireflowDept(org);
return dept;
}
return null;
}
@Override
public Group findGroupById(String id) {
org.fireflow.demo.security.bean.Group org = dao().fetch(org.fireflow.demo.security.bean.Group.class, id);
if (org!=null){
Group dept = WorkflowUtil.convertAppGroup2FireflowGroup(org);
return dept;
}
return null;
}
@Override
public Role findRoleById(String id) {
org.fireflow.demo.security.bean.Role org = dao().fetch(org.fireflow.demo.security.bean.Role.class, id);
if (org!=null){
Role dept = WorkflowUtil.convertAppRole2FireflowRole(org);
return dept;
}
return null;
}
@Override
public User findUserById(String userId) {
org.fireflow.demo.security.bean.User appUser = dao().fetch(org.fireflow.demo.security.bean.User.class, userId);
if (appUser!=null){
User u = WorkflowUtil.convertAppUser2FireflowUser(appUser);
return u;
}
return null;
}
/**
* TODO 暂不递归查找用户
*/
@Override
public List<User> findUsersInDepartment(String deptId) {
List<org.fireflow.demo.security.bean.User> uList = dao().query(org.fireflow.demo.security.bean.User.class,
Cnd.where("orgCode","=",deptId));
List<User> result = new ArrayList<User>();
if (uList!=null){
for (org.fireflow.demo.security.bean.User u: uList){
User fireUser = WorkflowUtil.convertAppUser2FireflowUser(u);
result.add(fireUser);
}
}
return result;
}
@Override
public List<User> findUsersInGroup(String groupId) {
List<org.fireflow.demo.security.bean.User> uList = dao().query(org.fireflow.demo.security.bean.User.class,
Cnd.where("groupCode","=",groupId));
List<User> result = new ArrayList<User>();
if (uList!=null){
for (org.fireflow.demo.security.bean.User u: uList){
User fireUser = WorkflowUtil.convertAppUser2FireflowUser(u);
result.add(fireUser);
}
}
return result;
}
@Override
public List<User> findUsersInRole(String roleId) {
String sqlStr = "select t.*,'' as roleNames from T_security_user t,T_security_user_role t2 where t.login_name=t2.user_code and t2.role_code=@roleCode";
Sql sql = Sqls.create(sqlStr);
sql.params().set("roleCode", roleId);
sql.setCallback(Sqls.callback.entities());
sql.setEntity(dao().getEntity(org.fireflow.demo.security.bean.User.class));
dao.execute(sql);
List<org.fireflow.demo.security.bean.User> list = sql.getList(org.fireflow.demo.security.bean.User.class);
List<User> result = new ArrayList<User>();
if (list!=null){
for (org.fireflow.demo.security.bean.User u: list){
User fireUser = WorkflowUtil.convertAppUser2FireflowUser(u);
result.add(fireUser);
}
}
return result;
}
}