单据展示页面上按钮处理
# 一、调用接口


## 1.1 入参-接口
{"billMainId":"220634a94c0911ea961a0d46bb66012b","scene":"VIEW"}
POST /bill/billdata/getBillDataAndTemplateByBillMainId
## 1.2 出参
appId=e3d5e4757ff911e88b19ab9f95e30e91
```
--|data
----|billData
------|appId
------|billButtons ** 这里控制所有的按钮展示
------|billCode
------|
```
# 二、底层追踪
## 2.1 查询方法

ctrl+h

多次调用本方法.

buttonKeyList -> VIEW_FLOW
languageKey=ADD_VOUCHER
## 底层后置加载loadData
package com.epoch.ifp.voucher.service.handler;

```
public enum VoucherButtonEnum implements II18nKeyEnum {
V_PUSH_VOUCHER("凭证推送", "V_PUSH_VOUCHER"),
VIEW_CREATE_VOUCHER("预览并生成凭证", "VIEW_CREATE_VOUCHER"),
CONFIRM_VOUCHER("确认生成", "CONFIRM_VOUCHER"),
BATCH_CONFIRM_VOUCHER("批量确认生成", "BATCH_CONFIRM_VOUCHER"),
BATCH_PUSH_VOUCHER("批量凭证推送", "BATCH_PUSH_VOUCHER"),
VALIDATE_VOUCHER("验证凭证", "VALIDATE_VOUCHER"),
REVERSED_VOUCHER("冲销凭证", "REVERSED_VOUCHER"),
ADD_VOUCHER("添加凭证", "ADD_VOUCHER"),
DELETE_VOUCHER("删除凭证", "DELETE_VOUCHER");
```
# 三、修正方案
## 方案一、重置classes.每次更新。
产品后续可能变更,暂不处理
## 方案二、重写Controller重置删除。
```
BillButtonUtils.removeCustomButtons(billdataVO,scene);
boolean defaultRemoveButton=(scene == BOSceneEnum.EXAMINE_APPROVAL && !billDefineTemplate.isShowSave() && CollectionUtils.isNotEmpty(billdataVO.getBillButtons()));
if (defaultRemoveButton) {
var14 = billdataVO.getBillButtons().iterator();
while(var14.hasNext()) {
BOButtonVO billButton = (BOButtonVO)var14.next();
if (billButton.getId().equals(BillButtonEnum.SAVE.name())) {
billdataVO.getBillButtons().remove(billButton);
break;
}
}
}
```
