package com.seeyon.ctp.workflow.devnode;
import java.util.Map;
import java.util.UUID;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.seeyon.ctp.common.AppContext;
import com.seeyon.ctp.organization.bo.V3xOrgMember;
import com.seeyon.ctp.organization.manager.OrgManager;
import com.seeyon.ctp.organization.manager.OrgManagerDirect;
import com.seeyon.ctp.workflow.supernode.BaseSuperNodeAction;
import com.seeyon.ctp.workflow.supernode.SuperNodeResponse;
/**
* 跨单位调动人员节点。
*
* @author 朱二阳
*
*/
public class MoveMemberNodeAction extends BaseSuperNodeAction {
private static final Log logger = LogFactory
.getLog(MoveMemberNodeAction.class);
/**
* 节点动作撤销。
*/
public void cancelAction(String token, String activityId) {
}
/**
* 确认节点动作执行。
*/
public SuperNodeResponse confirmAction(String token, String activityId,
Map<String, Object> params) {
return this.executeAction(token, activityId, params);
}
/**
* 动作执行方法。
*
* @param token
* 外部调用节点的依据。
* @param activityId
* 节点实例的唯一标识。
* @param params
* 节点执行的上下文信息,通过CTP_FORM_DATA key可以获取表单数据。
* @return 执行结果。
*/
public SuperNodeResponse executeAction(String token, String activityId,
Map<String, Object> params) {
SuperNodeResponse response = new SuperNodeResponse();
OrgManager orgManager = (OrgManager) AppContext.getBean("orgManager");
OrgManagerDirect orgManagerDirect = (OrgManagerDirect) AppContext
.getBean("orgManagerDirect");
Map<String, Object> data = getFormData(params);
try {
V3xOrgMember member = orgManager.getMemberById(Long.parseLong(data
.get("调出人员").toString()));
member.setOrgAccountId(Long.parseLong(data.get("调往单位").toString()));
member.setOrgDepartmentId(Long.parseLong(data.get("调往部门")
.toString()));
member.setOrgPostId(Long.parseLong(data.get("岗位").toString()));
member.setOrgLevelId(Long.parseLong(data.get("职务级别").toString()));
orgManagerDirect.updateMember(member);
response.setDataId(String.valueOf(UUID.randomUUID()
.getMostSignificantBits()));
response.setReturnCode(1);
response.setReturnMsg("跨单位调动人员节点处理成功");
} catch (Throwable e) {
logger.info("跨单位调动人员失败", e);
response.setReturnCode(0);
response.setReturnMsg("跨单位调动人员节点处理失败");
}
return null;
}
private Map getFormData(Map<String, Object> params) {
return (Map) params.get("CTP_FORM_DATA");
}
/**
* 节点标识。
*/
public String getNodeId() {
return "dev_node_move";
}
public String getNodeName() {
return "跨单位调动人员";
}
/**
* 选择时的显示顺序。
*/
public int getOrder() {
return 4;
}
}