人员F7控件,模糊搜索区分同名人员的解决方案
# 业务背景
业务单据上的人员字段,模糊搜索时如果存在同名人员,无法有效区分
![image.webp](/download/0100a096f53240d04936b14cd10de039419e.webp)
# 痛点分析
- 当前系统手机号、身份证号属于敏感信息,不便对外展示;
- 人员基本信息(包括手机号、身份证)等依然无法有效区分人员,特别是对财务人员来说,更关注的是具体哪个部门的哪个人;
- 单据通常是以部门的维度来做区分,所以人员选择时候,以部门来做辨别是有效方式,但是人员职位信息是分录的形式,F7模糊查询结果页不支持分录的展示。
# 解决方案
1. 在人员基本信息界面扩展一个文本字段,用来记录职位信息当中的部门长名称
![image.webp](/download/010039289255ff9c4445a2bdee068c796ba5.webp)
2. 在系统参数界面配置二开的字段展示
![image.webp](/download/0100113df7d84f414ae594f09a4372e1de37.webp)
3. 返回表单设计器界面,在save操作上绑定二开插件
![image.webp](/download/0100c245c475351a497c9308a0a7c295cebb.webp)
4. 插件处理逻辑:取人员任职信息的主职的部门长名称,如果人员没有主职部门,则默认取第一个。
# 代码示例
```
package kd.hr.hrt.dada.demo.LicenseCheck;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.entity.OrmLocaleValue;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.args.BeforeOperationArgs;
public class UserFieldListPlugin extends AbstractOperationServicePlugIn {
private final static String KEY_ENTRYENTITY = "entryentity";
@Override
public void beforeExecuteOperationTransaction(BeforeOperationArgs e) {
String longName;
for (DynamicObject dynamicObject : e.getDataEntities()) {
//get position entries
DynamicObjectCollection entryList = dynamicObject.getDynamicObjectCollection(KEY_ENTRYENTITY);
for (DynamicObject object : entryList) {
//get position incharge,otherwise choose first
if ((Boolean) object.get("isincharge") == true) {
getFullname(object, dynamicObject);
return;
}
}
getFullname(entryList.get(0), dynamicObject);
}
}
private void getFullname(DynamicObject object, DynamicObject dynamicObject) {
DynamicObject orgStructureInfo = (DynamicObject) object.get("orgstructure");
String fullname = ((OrmLocaleValue) orgStructureInfo.get("fullname")).getLocaleValue_zh_CN();
dynamicObject.set("mylongname", fullname);
}
}
```
# 效果展示
人员信息详情页数据展示:
![image.webp](/download/0100f8a396742f1a4e9ca0a542890ed8da50.webp)
人员F7选择界面数据展示:
![image.webp](/download/0100d74401fab019401e90244ccd8ca1ce7b.webp)
# 注意事项
- 文本字段长默认为varchar(50),有些长名称长度会远超50,所以在表单设计器上设置字段长度,或者通过sql的方式来修改字段长度,脚本示例:
```
alter table t_sec_user modify column fk_mylongname varhcar(256)
```
- 因为长名称文字较长,下拉框无法显示完整,可以在系统参数配置页面设置下拉列宽,来调整长名称的显示
配置如图:
![image.webp](/download/01004145c6899cce4148aac8ffff2edb2ea3.webp)
最终效果展示:
![image.webp](/download/0100da2dab976cda468da969c41540dc108d.webp)
# 参考资料
[操作插件](https://vip.kingdee.com/knowledge/specialDetail/218022218066869248?category=238612178977499648&id=225569169830609664&productLineId=29&lang=zh-CN)
人员F7控件,模糊搜索区分同名人员的解决方案
# 业务背景业务单据上的人员字段,模糊搜索时如果存在同名人员,无法有效区分![image.webp](/download/0100a096f53240d04936b14cd10de0394...
点击下载文档
本文2024-09-23 00:47:28发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-141756.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章