package com.sobey.cmop.mvc.web.apply;
import java.util.Map;
import javax.servlet.ServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.sobey.cmop.mvc.comm.BaseController;
import com.sobey.cmop.mvc.constant.ApplyConstant;
import com.sobey.cmop.mvc.constant.AuditConstant;
import com.sobey.cmop.mvc.entity.Apply;
import com.sobey.framework.utils.Servlets;
/**
* ApplyController负责服务申请的管理
*
* @author liukai
*
*/
@Controller
@RequestMapping(value = "/apply")
public class ApplyController extends BaseController {
private static final String REDIRECT_SUCCESS_URL = "redirect:/apply/";
/**
* 显示所有的apply list
*/
@RequestMapping(value = { "list", "" })
public String list(@RequestParam(value = "page", defaultValue = "1") int pageNumber,
@RequestParam(value = "page.size", defaultValue = PAGE_SIZE) int pageSize, Model model,
ServletRequest request) {
Map<String, Object> searchParams = Servlets.getParametersStartingWith(request, REQUEST_PREFIX);
model.addAttribute("page", comm.applyService.getApplyPageable(searchParams, pageNumber, pageSize));
// 将搜索条件编码成字符串,分页的URL
model.addAttribute("searchParams", Servlets.encodeParameterStringWithPrefix(searchParams, REQUEST_PREFIX));
return "apply/applyList";
}
/**
* 跳转到新增申请单页面
*/
@RequestMapping(value = "/save", method = RequestMethod.GET)
public String createForm(Model model) {
return "apply/applyForm";
}
/**
* 新增申请单
*/
@RequestMapping(value = "/save", method = RequestMethod.POST)
public String save(RedirectAttributes redirectAttributes, Apply apply) {
comm.applyService.saveApplyByServiceType(apply, ApplyConstant.ServiceType.基础设施.toInteger());
redirectAttributes.addFlashAttribute("message", "创建服务申请 " + apply.getTitle() + " 成功");
return REDIRECT_SUCCESS_URL + "?applyId=" + apply.getId();
}
/**
* 跳转到修改页面
*/
@RequestMapping(value = "/update/{id}", method = RequestMethod.GET)
public String updateForm(@PathVariable("id") Integer id, Model model) {
model.addAttribute("apply", comm.applyService.getApply(id));
return "apply/applyForm";
}
/**
* 修改
*/
@RequestMapping(value = "/update", method = RequestMethod.POST)
public String update(@RequestParam(value = "id") Integer id, @RequestParam(value = "serviceTag") String serviceTag,
@RequestParam(value = "serviceStart") String serviceStart,
@RequestParam(value = "serviceEnd") String serviceEnd, @RequestParam(value = "priority") Integer priority,
@RequestParam(value = "description") String description, RedirectAttributes redirectAttributes) {
Apply apply = comm.applyService.getApply(id);
apply.setServiceTag(serviceTag);
apply.setServiceStart(serviceStart);
apply.setServiceEnd(serviceEnd);
apply.setPriority(priority);
apply.setDescription(description);
comm.applyService.saveOrUpateApply(apply);
redirectAttributes.addFlashAttribute("message", "修改服务申请 " + apply.getTitle() + " 成功");
return REDIRECT_SUCCESS_URL;
}
/**
* 删除
*/
@RequestMapping(value = "delete/{id}")
public String delete(@PathVariable("id") Integer id, RedirectAttributes redirectAttributes) {
comm.applyService.deleteApply(id);
redirectAttributes.addFlashAttribute("message", "删除申请单成功");
return REDIRECT_SUCCESS_URL;
}
/**
* 跳转到详情页面
*/
@RequestMapping(value = "/detail/{id}", method = RequestMethod.GET)
public String detail(@PathVariable("id") Integer id, Model model) {
Apply apply = comm.applyService.getApply(id);
model.addAttribute("apply", apply);
// 根据审批状态获得服务申请的审批记录(只取最新的,当前的审批记录.即audit的状态为1)
model.addAttribute("audits",
comm.auditService.getAuditListByApplyIdAndStatus(id, AuditConstant.AuditStatus.有效.toInteger()));
model.addAttribute("sumCost", comm.costService.costPrice(apply));
return "apply/applyDetail";
}
/**
* 服务申请Apply提交审批.
*/
@RequestMapping(value = "/audit/{id}", method = RequestMethod.GET)
public String audit(@PathVariable("id") Integer id, RedirectAttributes redirectAttributes) {
Apply apply = comm.applyService.getApply(id);
String message = comm.applyService.saveAuditByApply(apply);
redirectAttributes.addFlashAttribute("message", message);
return REDIRECT_SUCCESS_URL;
}
}