表单字段根据项目负责人进行显隐控制

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:2

表单字段根据项目负责人进行显隐控制

# 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.getPosition(userIds); //traverse all the psotion and get the org supervisor Set<Long> userSet = new HashSet<>(); userPositionList.forEach(stringObjectMap -> { List<Map<String, Object>> dynamicObject1 = (List) stringObjectMap.get("entryentity"); DynamicObject dynamicObject2 = (DynamicObject) dynamicObject1.get(0).get("dpt"); Long orgId = dynamicObject2.getLong("id"); List<Long> userIds2 = UserServiceHelper.getManagersOfOrg(orgId); userSet.addAll(userIds2); }); //traversal supervisor list and judge if current user is in the list for (Long aLong : userSet) { if (aLong.longValue() == currentUser.longValue()) return true; } return false; } private enum Field { field1, field2, field3, } } ``` # 3、方案的可推广价值 - 如何根据人员职位获取人员所在公司 - 如何控制表单字段显隐

表单字段根据项目负责人进行显隐控制

# 1、业务背景 ### 功能诉求单据头有一个字段:项目负责人。另外,单据上有一些敏感字段,这些字段只能让项目负责人以及项目负责人的领...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息