package com.mossle.internal.delegate.web; import java.util.Date; import java.util.List; import javax.annotation.Resource; import com.mossle.api.process.ProcessConnector; import com.mossle.api.tenant.TenantHolder; import com.mossle.api.user.UserConnector; import com.mossle.core.auth.CurrentUserHolder; import com.mossle.core.page.Page; import com.mossle.internal.delegate.persistence.domain.DelegateHistory; import com.mossle.internal.delegate.persistence.domain.DelegateInfo; import com.mossle.internal.delegate.persistence.manager.DelegateHistoryManager; import com.mossle.internal.delegate.persistence.manager.DelegateInfoManager; import com.mossle.internal.delegate.service.DelegateService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller @RequestMapping("delegate") public class DelegateController { private static Logger logger = LoggerFactory .getLogger(DelegateController.class); private JdbcTemplate jdbcTemplate; private DelegateService delegateService; private DelegateInfoManager delegateInfoManager; private DelegateHistoryManager delegateHistoryManager; private UserConnector userConnector; private CurrentUserHolder currentUserHolder; private ProcessConnector processConnector; private TenantHolder tenantHolder; /** * 自动委托列表 TODO 可以指定多个自动委托人? * * @return */ @RequestMapping("delegate-listMyDelegateInfos") public String listMyDelegateInfos(Model model) { String userId = currentUserHolder.getUserId(); List<DelegateInfo> delegateInfos = delegateInfoManager.findBy( "assignee", userId); model.addAttribute("delegateInfos", delegateInfos); return "delegate/delegate-listMyDelegateInfos"; } /** * 删除自动委托 * * @return */ @RequestMapping("delegate-removeDelegateInfo") public String removeDelegateInfo(@RequestParam("id") Long id) { delegateService.removeRecord(id); return "redirect:/delegate/delegate-listMyDelegateInfos.do"; } // ~ ====================================================================== /** * 自动委托页面 * * @return */ @RequestMapping("delegate-prepareAutoDelegate") public String prepareAutoDelegate(Model model) { String tenantId = tenantHolder.getTenantId(); Page page = processConnector.findProcessDefinitions(tenantId, new Page( 1, 100)); model.addAttribute("page", page); return "delegate/delegate-prepareAutoDelegate"; } /** * 自动委托 * * @return */ @RequestMapping("delegate-autoDelegate") public String autoDelegate( @RequestParam(value = "startTime", required = false) Date startTime, @RequestParam(value = "endTime", required = false) Date endTime, @RequestParam("processDefinitionId") String processDefinitionId, @RequestParam("taskDefinitionKey") String taskDefinitionKey, @RequestParam("attorney") String attorney) throws Exception { String userId = currentUserHolder.getUserId(); String tenantId = tenantHolder.getTenantId(); if ((processDefinitionId != null) && "".equals(processDefinitionId.trim())) { processDefinitionId = null; } if ((taskDefinitionKey != null) && "".equals(taskDefinitionKey.trim())) { taskDefinitionKey = null; } delegateService.addDelegateInfo(userId, attorney, startTime, endTime, processDefinitionId, taskDefinitionKey, tenantId); return "redirect:/delegate/delegate-listMyDelegateInfos.do"; } // ~ ====================================================================== /** * 自动委派 */ @RequestMapping("delegate-listDelegateInfos") public String listDelegateInfos(Model model) { String tenantId = tenantHolder.getTenantId(); List<DelegateInfo> delegateInfos = delegateInfoManager.findBy( "tenantId", tenantId); model.addAttribute("delegateInfos", delegateInfos); return "delegate/delegate-listDelegateInfos"; } /** * 自动委托历史 * * @return */ @RequestMapping("delegate-listDelegateHistories") public String listDelegateHistories(Model model) { String tenantId = tenantHolder.getTenantId(); List<DelegateHistory> delegateHistories = delegateHistoryManager .findBy("tenantId", tenantId); model.addAttribute("delegateHistories", delegateHistories); return "delegate/delegate-listDelegateHistories"; } // ~ ================================================== @Resource public void setDelegateService(DelegateService delegateService) { this.delegateService = delegateService; } @Resource public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } @Resource public void setDelegateInfoManager(DelegateInfoManager delegateInfoManager) { this.delegateInfoManager = delegateInfoManager; } @Resource public void setDelegateHistoryManager( DelegateHistoryManager delegateHistoryManager) { this.delegateHistoryManager = delegateHistoryManager; } @Resource public void setUserConnector(UserConnector userConnector) { this.userConnector = userConnector; } @Resource public void setCurrentUserHolder(CurrentUserHolder currentUserHolder) { this.currentUserHolder = currentUserHolder; } @Resource public void setProcessConnector(ProcessConnector processConnector) { this.processConnector = processConnector; } @Resource public void setTenantHolder(TenantHolder tenantHolder) { this.tenantHolder = tenantHolder; } }