/** * 审核处理 * * @return */ @RequestMapping( value = "auditDetailView", method = {RequestMethod.GET, RequestMethod.POST}) public ModelAndView auditDetailView(HttpServletRequest request) { ModelAndView modelView = createModelAndViewWithSign("audit_detail", request); // 获取请假申请信息 String id = HttpRequestUtil.getInst().getString("id"); // 1、获取报销信息 Expense expense = expenseService.getExpenseById(id); if (null == expense) { throw new VyiyunBusinessException("记录已被撤销或不存在!"); } // 如果已审核 if (CommonAppType.Status.已报销.value().equals(expense.getStatus())) { return expenseDetailView(request); } // 获取报销费用 ExpenseFee expenseFee = new ExpenseFee(); expenseFee.setExpenseId(id); List<ExpenseFee> listExpenseFee = expenseFeeService.getExpenseFee(expenseFee); if (!CollectionUtils.isEmpty(listExpenseFee)) { List<Map<String, Object>> dataMap = new ArrayList<Map<String, Object>>(); Map<String, Object> temp = null; SystemStatusCache<Object> systemStatusCache = SystemCacheUtil.getInstance().getSystemStatusCache(); for (ExpenseFee ex : listExpenseFee) { temp = ex.getPersistentState(); temp.put( "categoryDisplay", systemStatusCache.getSystemStatusValue( HttpRequestUtil.getInst().getCurrentCorpId(), "CostCategory", ex.getCategory())); dataMap.add(temp); } modelView.addObject("listExpenseFee", dataMap); } // 获取当前审核人 modelView.addObject("expenseInfo", expense); WeixinUser weixinUser = HttpRequestUtil.getInst().getCurrentWeixinUser(); // 2、已审核人 报销人 待审核人 待带报销人 // 获取当前审核人 EntityAccount entityAccount = new EntityAccount(); entityAccount.setEntityId(id); entityAccount.setEntityType(CommonAppType.EntityType.BX.value()); entityAccount.setInvalid(false); Map<String, Object> params = new HashMap<String, Object>(); params.put("orderBy", "UpdateTime desc"); // 判断当前报销审批是否完成 List<EntityAccount> entityAccountList = (List<EntityAccount>) entityAccountService.getEntityAccount(entityAccount); // 待审核 StringBuffer alreadyUser = new StringBuffer(); // 权限用户 List<EntityAccount> entityAccounts = new ArrayList<EntityAccount>(); if (!CollectionUtils.isEmpty(entityAccountList)) { for (EntityAccount ea : entityAccountList) { // 获取有效数据 if (!ea.getInvalid()) { if (CommonAppType.PersonType.SH.value().equals(ea.getPersonType())) { if (!ea.getDealResult().equals("0")) { alreadyUser.append(",").append(ea.getAccountName()); } else if (ea.getDealResult().equals("0")) { entityAccounts.add(ea); } } else if (CommonAppType.PersonType.CW.value().equals(ea.getPersonType())) { if (!ea.getDealResult().equals("0")) { alreadyUser.append(",").append(ea.getAccountName()); } else if (ea.getDealResult().equals("0") && CommonAppType.Status.待报销.value().equals(expense.getStatus())) { entityAccounts.add(ea); } } } } // 当前审核人必须是一位 if (entityAccounts.size() == 1) { modelView.addObject("entityAccount", entityAccounts.get(0)); modelView.addObject("auditor", entityAccounts.get(0).getAccountName()); } else if (entityAccounts.size() > 1) { throw new VyiyunException("数据错误,当前审核人必须是一位!"); } else if (entityAccounts.isEmpty()) { return expenseDetailView(request); } // 当前非审核人 if (!entityAccounts.get(0).getAccountId().equals(weixinUser.getUserid())) { return expenseDetailView(request); } if (alreadyUser.length() > 0) { alreadyUser.deleteCharAt(0); } modelView.addObject("alreadyUser", alreadyUser); modelView.addObject("shList", entityAccountList); } else { return expenseDetailView(request); } // 3、获取报销附件 // 处理附件信息 List<Accessory> accessoryList = accessoryService.getAccessoryByEntityId(id); if (!CollectionUtils.isEmpty(accessoryList)) { modelView.addObject("accessoryInfor", accessoryList); } // BUG #62 修改 zb.shen 2015年12月25日 start. modelView.addObject("flag", HttpRequestUtil.getInst().getString("flag")); // BUG #62 修改 zb.shen 2015年12月25日 end. return modelView; }