package com.norteksoft.bs.rank.web;
import java.util.ArrayList;
import java.util.List;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.springframework.beans.factory.annotation.Required;
import com.norteksoft.acs.base.web.struts2.CRUDActionSupport;
import com.norteksoft.product.api.ApiFactory;
import com.norteksoft.product.orm.Page;
import com.norteksoft.product.util.ContextUtils;
import com.norteksoft.product.util.PageUtils;
import com.norteksoft.product.web.struts2.CrudActionSupport;
import com.norteksoft.bs.rank.entity.Superior;
import com.norteksoft.bs.rank.entity.Subordinate;
import com.norteksoft.bs.rank.enumeration.SubordinateType;
import com.norteksoft.bs.rank.service.RankManager;
import com.norteksoft.bs.rank.service.RankUserManager;
@Namespace("/rank")
@ParentPackage("default")
@Results( { @Result(name = CrudActionSupport.RELOAD, location = "list", type = "redirectAction") })
public class RankAction extends CRUDActionSupport<Superior> {
private static final long serialVersionUID = 1L;
private Page<Superior> page = new Page<Superior>(0, true);
private RankManager rankManager;
private RankUserManager rankUserManager;
private Long id;
private Superior dataDictionaryRank;
private List<String> userInfos=new ArrayList<String>();//以分号隔开的人员列表信息:infoName;infoId;type;loginName(真名/部门名称/工作组;用户id/部门id/工作组id;类型(人员,部门,工作组);登录名)
private String userNames="";//逗号隔开的人员名称
private List<Subordinate> dataDictRankUsers;
private String dictIds;
@Required
public void setRankManager(RankManager rankManager) {
this.rankManager = rankManager;
}
@Required
public void setRankUserManager(RankUserManager rankUserManager) {
this.rankUserManager = rankUserManager;
}
@Action("input")
public String input() throws Exception{
if(id!=null){
dataDictRankUsers=rankUserManager.getDataDictRankUsersByRank(id);
userInfos.removeAll(userInfos);
userNames="";
for(Subordinate ddru:dataDictRankUsers){
userNames+=ddru.getName()+",";
userInfos.add(ddru.getName()+";"+(ddru.getTargetId()==null?"":ddru.getTargetId())+";"+(ddru.getSubordinateType()!=null?ddru.getSubordinateType().getIndex():SubordinateType.USER.getIndex())+";"+(ddru.getLoginName()==null?"":ddru.getLoginName()));
}
if(userNames.indexOf(",")>0){
userNames=userNames.substring(0,userNames.lastIndexOf(","));
}
}
return "input";
}
@Override
@Action("delete")
public String delete() throws Exception {
rankManager.deleteDataDictRanks(dictIds);
ApiFactory.getBussinessLogService().log("上下级关系管理", "删除上下级关系",ContextUtils.getSystemId("bs"));
this.renderText("ok");
return null;
}
@Action("list")
public String list(){
return SUCCESS;
}
@Action("list-data")
public String listData() throws Exception {
if(page.getPageSize()>1){
rankManager.getDataDictRanksPage(page);
renderText(PageUtils.pageToJson(page));
ApiFactory.getBussinessLogService().log("上下级关系管理", "查看上下级关系列表",ContextUtils.getSystemId("bs"));
return null;
}
return SUCCESS;
}
@Override
protected void prepareModel() throws Exception {
if(id==null){
dataDictionaryRank = new Superior();
}else{
dataDictionaryRank = rankManager.getDataDictRankById(id);
}
}
@Override
@Action("save")
public String save() throws Exception {
rankManager.saveDataDictRank(dataDictionaryRank,userInfos);
id = dataDictionaryRank.getId();
addActionMessage("<font class=\"onSuccess\"><nobr>保存成功!</nobr></font>");
ApiFactory.getBussinessLogService().log("上下级关系管理", "保存上下级关系",ContextUtils.getSystemId("bs"));
return input();
}
@Action("user-tree")
public String showUserTree() throws Exception {
return SUCCESS;
}
@Action("dept-tree")
public String showDeptTree() throws Exception {
return SUCCESS;
}
@Action("group-tree")
public String showGroupTree() throws Exception {
return SUCCESS;
}
@Action("superior-user-tree")
public String showSuperiorUserTree() throws Exception {
return SUCCESS;
}
public Superior getModel() {
return dataDictionaryRank;
}
public Page<Superior> getPage() {
return page;
}
public void setPage(Page<Superior> page) {
this.page = page;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public List<String> getUserInfos() {
return userInfos;
}
public void setUserInfos(List<String> userInfos) {
this.userInfos = userInfos;
}
public String getUserNames() {
return userNames;
}
public void setUserNames(String userNames) {
this.userNames = userNames;
}
public List<Subordinate> getDataDictRankUsers() {
return dataDictRankUsers;
}
public String getDictIds() {
return dictIds;
}
public void setDictIds(String dictIds) {
this.dictIds = dictIds;
}
}