
# 1、业务背景
### 功能诉求
单据头有一个字段:项目负责人。另外,单据上有一些敏感字段,这些字段只能让项目负责人以及项目负责人的领导才能看见,一般业务员是不能看到这些字段。
### 方案分析
目前标准产品中,字段权限方案的配置只能通过用户直接授权、通用角色授权配置,但是这些都只能指定用户或者角色对这些字段可见还是不可见,没有办法动态设置。
# 2、解决方案
```
package kd.hr.hrt.dada.demo.LicenseCheck;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.servicehelper.user.UserServiceHelper;
import java.util.*;
public class BillFieldVisible extends AbstractBillPlugIn {
@Override
public void afterBindData(EventObject e) {
//get current user
Long userId = UserServiceHelper.getCurrentUserId();
//get chargerid from bill
DynamicObject dynamicObject = (DynamicObject) this.getModel().getValue("my_testbasedata");
Long chargerId = dynamicObject.getLong("id");
boolean isCurrentUserCharger = getProjectChargerList(userId, chargerId);
if (!isCurrentUserCharger)
handelField();
}
private void handelField() {
for (Field filed : Field.values()) {
this.getView().setVisible(false, filed.name());
}
}
private Boolean getProjectChargerList(Long currentUser, Long projectCharger) {
//1.get all positioninfo belongs to the charger
List<Long> userIds = new ArrayList<>(1);
userIds.add(projectCharger);
List<Map<String, Object>> userPositionList = UserServiceHelper.getP