package com.cabletech.business.assess.action;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.cabletech.baseinfo.business.entity.UserInfo;
import com.cabletech.business.assess.model.AssessExaminationResult;
import com.cabletech.business.assess.model.AssessTemplate;
import com.cabletech.business.assess.service.AssessAppraiseService;
import com.cabletech.business.assess.service.AssessTemplateContentService;
import com.cabletech.business.assess.service.AssessTemplateService;
import com.cabletech.common.base.BaseAction;
import com.cabletech.common.base.SysConstant;
import com.cabletech.common.externalresources.ExternalResourcesAccessService;
import com.cabletech.common.util.DateUtil;
/**
* 年度考核评分管理
*
* @author 杨隽 2012-08-06 创建
*/
@Namespace("/assess")
@Results({
@Result(name = "view", location = "/assess/yearappraise/assess_year_appraise_view.jsp"),
@Result(name = "input", location = "/assess/yearappraise/assess_year_appraise_input.jsp"),
@Result(name = "input_second", location = "/assess/yearappraise/assess_year_appraise_input_second.jsp") })
@Action("/assessYearAppraiseAction")
public class AssessYearAppraiseAction extends
BaseAction<AssessExaminationResult, String> {
/**
* 序列化编号
*/
private static final long serialVersionUID = 1L;
/**
* 第二步输入页面路径
*/
private static final String INPUT_SECOND = "input_second";
/**
* 考核模版业务服务
*/
@Resource(name = "assessTemplateServiceImpl")
private AssessTemplateService assessTemplateService;
/**
* 考核模版服务
*/
@Resource(name = "assessTemplateContentServiceImpl")
private AssessTemplateContentService assessTemplateContentService;
/**
* 考核/检查结果业务服务
*/
@Resource(name = "assessAppraiseServiceImpl")
private AssessAppraiseService assessAppraiseService;
/**
* 外部资源访问
*/
@Resource(name = "externalResourcesAccessService")
private ExternalResourcesAccessService externalResourcesAccessService;
/**
* 考核/检查结果表单数据
*/
private AssessExaminationResult assessExaminationResult = new AssessExaminationResult();
/**
* 进入考核模板选择页面
*
* @return String
* @throws Exception
*/
public String input() {
if (StringUtils.isNotBlank(super.getParameter("id"))) {
assessExaminationResult = assessAppraiseService.view(super
.getParameter("id"));
}
AssessTemplate template = new AssessTemplate();
template.setTableType(super.getParameter("tableType"));
List<Map<String, Object>> list = assessTemplateService
.queryAssessTemplate(template);
assessExaminationResult.setTableType(super.getParameter("tableType"));
super.getRequest().setAttribute("templateList", list);
if (StringUtils.isNotBlank(super.getParameter("taskId"))) {
super.getRequest().setAttribute("taskId",
super.getParameter("taskId"));
}
return INPUT;
}
/**
* 进入考核内容输入页面
*
* @return String
* @throws Exception
*/
public String inputSecond() {
String taskId = assessExaminationResult.getTaskId();
String tableType = assessExaminationResult.getTableType();
super.getRequest().setAttribute("regionName",
externalResourcesAccessService.getSystemregionname());
AssessTemplate template = assessTemplateService
.getTemplate(assessExaminationResult.getTableId());
super.getRequest().setAttribute("tableName", template.getTableName());
// 获取模板内容
Map<String, Object> map = new HashMap<String, Object>();
map.put("tableId", assessExaminationResult.getTableId());
map.put("month", DateUtil.UtilDate2Str(
assessExaminationResult.getAppraiseMonth(), "yyyy-MM-dd"));
map.put("orgId", assessExaminationResult.getContractorId());
List<Map<String, Object>> newlist = assessTemplateContentService
.getTableItemList(map);
// 获取模板最大列数
int maxItemCount = assessTemplateContentService.getMaxTableItem(map);
if (StringUtils.isNotBlank(assessExaminationResult.getId())) {
assessExaminationResult = assessAppraiseService
.view(assessExaminationResult.getId());
assessExaminationResult.setTaskId(taskId);
assessExaminationResult.setTableType(tableType);
maxItemCount = assessExaminationResult.getLevel();
newlist = assessTemplateContentService.processList(
assessExaminationResult.getLevel(),
assessExaminationResult.getDetailList());
}
this.getRequest().setAttribute("maxitemcount", maxItemCount);
this.getRequest().setAttribute("templatecontent", newlist);
return INPUT_SECOND;
}
/**
* 进行考核评分的唯一性判断
*/
public void isExist() throws Exception {
Map<String, String> parameter = getCondition();
List<Map<String, Object>> list = assessAppraiseService
.queryResultList(parameter);
if (CollectionUtils.isEmpty(list)) {
super.outPrint("0", true);
} else {
super.outPrint("1", true);
}
}
/**
* 保存
*
* @return String
*/
public String save() {
UserInfo user = super.getUser();
assessAppraiseService.save(assessExaminationResult, user);
String url = "/assess/assessYearAppraiseAction!input.action?tableType="
+ assessExaminationResult.getTableType();
if (StringUtils.isNotBlank(assessExaminationResult.getTaskId())) {
url = "/assess/assessMonthAppraiseWaitHandledAction!list.action";
}
super.addMessage("年度考核评分成功!", url, SysConstant.SUCCESS);
return SUCCESS;
}
/**
* 查看
*
* @return String
*/
public String view() {
super.getRequest().setAttribute("regionName",
externalResourcesAccessService.getSystemregionname());
assessExaminationResult = assessAppraiseService.view(super
.getParameter("id"));
AssessTemplate template = assessTemplateService
.getTemplate(assessExaminationResult.getTableId());
super.getRequest().setAttribute("tableName", template.getTableName());
List<Map<String, Object>> list = assessTemplateContentService
.processList(assessExaminationResult.getLevel(),
assessExaminationResult.getDetailList());
assessExaminationResult.setDetailList(list);
return VIEW;
}
@Override
public AssessExaminationResult getModel() {
return assessExaminationResult;
}
/**
* 获取查询条件Map
*
* @return Map<String, String>
*/
private Map<String, String> getCondition() {
Map<String, String> parameter = new HashMap<String, String>();
if (StringUtils.isNotBlank(super.getParameter("id"))) {
parameter.put("id", super.getParameter("id"));
}
if (StringUtils.isNotBlank(super.getParameter("appraiseMonth"))) {
parameter.put("appraiseMonth", super.getParameter("appraiseMonth"));
}
if (StringUtils.isNotBlank(super.getParameter("contractorId"))) {
parameter.put("contractorId", super.getParameter("contractorId"));
}
if (StringUtils.isNotBlank(super.getParameter("tableId"))) {
parameter.put("tableId", super.getParameter("tableId"));
}
if (StringUtils.isNotBlank(super.getParameter("regionId"))) {
parameter.put("regionId", super.getParameter("regionId"));
}
return parameter;
}
@Override
protected void prepareViewModel() {
}
@Override
protected void prepareSaveModel() {
}
public AssessExaminationResult getAssessExaminationResult() {
return assessExaminationResult;
}
public void setAssessExaminationResult(
AssessExaminationResult assessExaminationResult) {
this.assessExaminationResult = assessExaminationResult;
}
}