package cn.com.mbp.hr.employee.OutSourcing.mvc;
import java.util.Locale;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import cn.com.mbp.common.acount.security.UserInfoDetails;
import cn.com.mbp.common.mvc.ProcessResult;
import cn.com.mbp.hr.common.entity.TOutSourcing;
import cn.com.mbp.hr.employee.OutSourcing.service.OutSourcingServicelocal;
/**
* <p>机能名: 基本设计 /外派信息</p>
* <p>功能说明:员工外派信息明细</p>
* <p>式样书:基本设计_外派信息.xls</p>
* @version 1.0 2011/3/21
* @author 张蕾(s1011524)
*/
@Controller
@RequestMapping("/employee/{employeeid}/OutSourcingdetail")
public class OutSourcingdetailController {
@Autowired
private OutSourcingServicelocal service;
@Autowired
private MessageSource message;
/**
* 画面初期化
* @param employeeid 员工ID
* @param model 初始化画面参数
* @return /employee/OutSourcingdetail.jsp
*/
@RequestMapping( method=RequestMethod.GET)
public String doInit(@PathVariable Integer employeeid,ModelMap model){
OutSourcingdetailForm form=new OutSourcingdetailForm();
model.addAttribute(form);
model.addAttribute("employeeid",employeeid);
model.addAttribute("isNew", true);
return "/employee/OutSourcingdetail";
}
/**
* 保存信息
* @param form 外派信息
* @param result 信息验证
* @param employeeid 员工ID
* @param model 初始化画面参数
* @return /employee/OutSourcing.jsp
*/
@RequestMapping( method=RequestMethod.POST)
public String doSave(@Valid OutSourcingdetailForm form, BindingResult result,@PathVariable Integer employeeid,ModelMap model){
if(result.hasErrors()){
model.addAttribute("employeeid",employeeid);
model.addAttribute("isNew", true);
return "/employee/OutSourcingdetail";
}
UserInfoDetails user = (UserInfoDetails) SecurityContextHolder
.getContext().getAuthentication().getPrincipal();
model.addAttribute("employeeid", employeeid);
model.addAttribute("isNew", true);
if(service.checkType(form,user.getUserid()) == 0){
model.addAttribute(ProcessResult.KEY, new ProcessResult(ProcessResult.NG, message.getMessage("CheckType.error.Typenotmatchout", new String[]{form.getDeptno().toString()}, Locale.getDefault())));
return "/employee/OutSourcingdetail";
}
if(service.checkType(form,user.getUserid()) == 1){
model.addAttribute(ProcessResult.KEY, new ProcessResult(ProcessResult.NG, message.getMessage("CheckType.error.Typenotmatchgroup", new String[]{form.getDeptno().toString()}, Locale.getDefault())));
return "/employee/OutSourcingdetail";
}
if(service.checkDept(form,user.getUserid()) == 0){
model.addAttribute(ProcessResult.KEY, new ProcessResult(ProcessResult.NG, message.getMessage("CheckDept.error.DeptnoExist", new String[]{form.getDeptno().toString()}, Locale.getDefault())));
return "/employee/OutSourcingdetail";
}else{
service.saveOutSourcing(form,employeeid);
return "redirect:/employee/"+employeeid+"/OutSourcing.html";
}
}
/**
* 修改外派信息画面
* @param outsourcingid 外派ID
* @param model 初始化画面参数
* @return /employee/OutSourcingdetail.jsp
*/
@RequestMapping(value = "/{outsourcingid}", method=RequestMethod.GET)
public String doDetail(@PathVariable Integer employeeid,@PathVariable Integer outsourcingid, ModelMap model){
OutSourcingdetailForm form = new OutSourcingdetailForm();
TOutSourcing t = service.getOutSourcingById(outsourcingid);
form.setOutsourcingid(t.getOutsourcingid());
form.setEmployeeid(t.getEmployeeid());
form.setOuttype(t.getOuttype());
form.setStartdate(t.getStartdate());
form.setEnddate(t.getEnddate());
form.setDestination(t.getDestination());
form.setDeptno(t.getDeptno());
form.setGroupname(t.getGroupname());
form.setUpdatedate(t.getUpdatedate());
//TODO 负责人信息未设定
model.addAttribute(form);
model.addAttribute("employeeid",employeeid);
return "/employee/OutSourcingdetail";
}
/**
* 保存修改
* @param employeeid 员工ID
* @param outsourcingid 外派ID
* @param model 初始化画面参数
* @param form 外派信息
* @param result 信息验证
* @return /employee/OutSourcingdetail.jsp
*/
@RequestMapping(value = "/{outsourcingid}", method=RequestMethod.POST)
public String doUpdate(@PathVariable Integer employeeid,@PathVariable Integer outsourcingid, ModelMap model,
@Valid OutSourcingdetailForm form, BindingResult result){
if(result.hasErrors()){
model.addAttribute("employeeid",employeeid);
return "/employee/OutSourcingdetail";
}
UserInfoDetails user = (UserInfoDetails) SecurityContextHolder
.getContext().getAuthentication().getPrincipal();
model.addAttribute("employeeid", employeeid);
model.addAttribute("isNew", true);
if(service.checkType(form,user.getUserid()) == 0){
model.addAttribute(ProcessResult.KEY, new ProcessResult(ProcessResult.NG, message.getMessage("CheckType.error.Typenotmatchout", new String[]{form.getDeptno().toString()}, Locale.getDefault())));
return "/employee/OutSourcingdetail";
}
if(service.checkType(form,user.getUserid()) == 1){
model.addAttribute(ProcessResult.KEY, new ProcessResult(ProcessResult.NG, message.getMessage("CheckType.error.Typenotmatchgroup", new String[]{form.getDeptno().toString()}, Locale.getDefault())));
return "/employee/OutSourcingdetail";
}
if(service.checkDept(form,user.getUserid()) == 0){
model.addAttribute(ProcessResult.KEY, new ProcessResult(ProcessResult.NG, message.getMessage("CheckDept.error.DeptnoExist", new String[]{form.getDeptno().toString()}, Locale.getDefault())));
return "/employee/OutSourcingdetail";
}else{
service.updateOutSourcing(Integer.valueOf(outsourcingid), form);
return "redirect:/employee/"+employeeid+"/OutSourcing.html";
}
}
/**
* 删除外派信息
* @param form 外派信息
* @param result 信息验证
* @param employeeid 员工ID
* @param outsourcingid 外派ID
* @return redirect:/employee/OutSourcing/员工ID.html
*/
@RequestMapping(value = "/{outsourcingid}/delete", method=RequestMethod.POST)
public String doDelete(@Valid OutSourcingdetailForm form, BindingResult result,@PathVariable int employeeid,@PathVariable int outsourcingid){
service.deleteOutSourcing(form, outsourcingid);
return "redirect:/employee/"+employeeid+"/OutSourcing.html";
}
}