如何查看自己的以及离职人员的单据

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

如何查看自己的以及离职人员的单据

# 业务背景 单据配置了数据规则:只允许当前登录人查看自己创建的单据。如果一旦该人员离职,那么他创建的单据就没有人可以看到了。目前数据规则还无法做到类似单据交接的功能:既能看到创建人自己的单据,同时还能看到离职人员创建的单据。 # 解决方案 核心思路:通过开发自定义比较符,做到不仅能够查看自己创建的单据,还能查看到我负责交接的离职人员创建的单据,具体效果图如下: ![image.webp](/download/010014a438bcc44a42b1861c192e5004237b.webp) # 实现步骤 1. 开发平台新建一张单据,具体设计如图: ![image.webp](/download/0100fbdef0b63d2e4ac2ab50e271a07de6c3.webp) **设计说明:** 核心字段有两个:一个是交接人,即有人员离职后,这些人员所创建的单据要转给此交接人;另一个是离职员工分录,顾名思义,该分录记录的就是离职人员。同时,新增表单插件,做相关逻辑校验,插件配置如图: ![image.webp](/download/01004d6f326e9ff743bd876d610b32502bf4.webp) 插件校验逻辑:1、如果离职人员本身也是交接人员,那么就不能保存,需要将该人员名下的离职人员分录也分配给交接人;2、如果对应的【用户禁用】状态是未禁用,则不允许保存。 ``` package kd.hr.hrt.dada.demo.LicenseCheck; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.utils.StringUtils; import kd.bos.form.control.events.BeforeItemClickEvent; import kd.bos.form.plugin.AbstractFormPlugin; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import java.util.EventObject; public class MyFormPlugin extends AbstractFormPlugin { private final static String OPERATION_KEY = "bar_save"; private final static String KEY_MAINBAR = "tbmain"; @Override public void registerListener(EventObject e) { this.addItemClickListeners(KEY_MAINBAR); } @Override public void beforeItemClick(BeforeItemClickEvent evt) { if (StringUtils.equals(OPERATION_KEY, evt.getItemKey())) { DynamicObjectCollection collection = this.getModel().getEntryEntity("yf_leave_user_entry"); for (DynamicObject object : collection) { DynamicObject leaveUser = (DynamicObject) object.get("leave_user"); //如果离职人员用户禁用装填是非禁用,则不允许保存 if (!(boolean) leaveUser.get("isforbidden")) { this.getView().showMessage(String.format("用户%s尚未被禁用", leaveUser.get("name"))); } //如果离职人员也存在离职人员名单,则需要将其名下维护的人员也自动转到新的交接人员手中 QFilter userFilter = new QFilter("reveiver", QCP.equals, leaveUser.get("id")); DynamicObject leaveUsersList = BusinessDataServiceHelper.loadSingle("yf_employeemapping", "id", new QFilter[]{userFilter}); if (leaveUsersList != null) { this.getView().showMessage(String.format("用户%存在未交接人员名单,请处理", leaveUser.get("name"))); } } } } } ``` 2. 新增自定义比较符,配置如下: ![image.webp](/download/0100b5c7ed2671094c2eafc2ada3d13eb9a8.webp)其中解析类代码如下: ``` package kd.hr.hrt.dada.demo.LicenseCheck; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.filter.AbstractFilterContantParser; import kd.bos.entity.filter.FilterContantParserArgs; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.user.UserServiceHelper; import java.util.ArrayList; import java.util.List; public class EmployeeTransferFilter extends AbstractFilterContantParser { @Override protected QFilter getQFilter(FilterContantParserArgs filterContantParserArgs) { String filedName = filterContantParserArgs.getFieldName(); List<String> userList = new ArrayList<>(); String selectedFiled = "reveiver,yf_leave_user_entry.leave_user"; Long userId = UserServiceHelper.getCurrentUserId(); QFilter userFilter = new QFilter("reveiver", QCP.equals, userId); DynamicObject object = BusinessDataServiceHelper.loadSingle("yf_employeemapping", selectedFiled, new QFilter[]{userFilter}); DynamicObjectCollection collection = (DynamicObjectCollection) object.get("yf_leave_user_entry"); for (DynamicObject dynamicObject : collection) { userList.add((String) ((DynamicObject) dynamicObject.get("leave_user")).get("number")); } userList.add((String) object.get("reveiver.number")); QFilter qFilter = new QFilter(filedName, QCP.in, userList); return qFilter; } @Override protected String getScriptFilter(FilterContantParserArgs filterContantParserArgs) { return null; } } ``` 3. 自定义比较符开发完成后,在需要配置数据规则的单据设计器上,找到创建人字段,并给该字段配置自定义比较符,详细配置如下: ![image.webp](/download/010019e736e1174c4d09841f54be19a19587.webp) 4. 修改数据规则方案,具体配置如下: ![image.webp](/download/010056c10fcf5e074b6b82b7b78137bbe4d8.webp) 5. 给相关人员配置数据规则,配置详情如图: ![image.webp](/download/01000a72be80893e4d92a1eda9696418b38b.webp) # 补充说明 - 本方案通过自定义比较符开发,实现了离职人员单据交接功能,在实际业务场景中,可能存在多种个性化数据规则方案,在标准功能比较符不满足要求的情况下,都可以参考此思路来处理; - 本方案在设计人员交接映射功能时,采用的是表单的方式,表单会默认自带单据编号、附件面板、创建人等额外字段,如果想要界面简洁,可采用布局的方式,完全自行开发,此方案着重讲述核心功能实现逻辑; - 此方案中使用的是直接授权,也可以采用通用角色授权方式,具体如何使用数据规则依照实际场景配置即可。 # 相关资料 [如何开发自定义比较符](https://vip.kingdee.com/article/515966338796243200?productLineId=29&lang=zh-CN) [自定义比较符功能二开插件](https://vip.kingdee.com/article/312168194611615488?productLineId=29&isKnowledge=2&lang=zh-CN)

如何查看自己的以及离职人员的单据

# 业务背景单据配置了数据规则:只允许当前登录人查看自己创建的单据。如果一旦该人员离职,那么他创建的单据就没有人可以看到了。目前数...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息