本文包含多个技术操作说明,包括获取变更字段名称、密码加密修改、自定义样式去除滚动条、对象映射方法、获取APPID、Dataset与动态对象转换、SQL查询、单据流程属性、获取表单标识、组织关系及权限获取、判断管理员身份、插件操作、URL转换、本地开发环境配置、HR权限配置、创建Dataset、判断全功能用户、获取人员信息、预览地址获取、单据体合计、页面打开与操作、账号多人登录、动态修改面板名称、URL拼接跳转、代码打开页面、业务字段变动获取、附件地址解密、获取附件流生成下载地址、查询表单元数据字段等。
1、获取变更字段名称
this.getModel().getChangeDesc();
2、修改密码
修改密码 1. 通过String encrypt1 = PasswordEncryptUtil.getEncryptePasswordWithSalt(password, LoginUtils.getCorrectUserIDSalt(fid)); 这个方法生成加密密码。其中password为明文密码,fid为t_sec_user的主键。 2. 生成密码后,通过update/insert,修改t_sec_user_u表的fpassword为第一步的值,fpswhisstr值将旧的值和第一步获取的值,通过“,”拼接在一起。fislocked修改为0,ferrcount修改为0。
3、自定义样式:
去掉滚动条: overflow:hidden 大文本摘要模式如何只锁定摘要: textarea.kd-input-textarea.kd-input-size-middle.kd-input-borderless.kd-input-no-resize._1S-MadLf._7OkOLO3-.fP5zEpbC.Vd99Dgx4._2QP5fB-K.primary-text-in-light{ pointer-events: none; }
4、映射方法
@SuppressWarnings("unchecked") public static <T> T cast(Object obj) { return (T) obj; }
5、获取APPID
AppInfo appInfo = AppMetadataCache.getAppInfo("app编码"); String appId = appInfo.getId();
6、Dataset 转换为动态对象
ORM.create().toPlainDynamicObjectCollection()
7、将dynamicObjectCollection 转回为 DataSet
ORMUtil.toDataSet(orgrDyAll)
8、查询哪个基础资料
查询分析器,数据库选择:系统库,执行sql:SELECT fnumber FROM t_meta_entitydesign WHERE fid = '1VX2M+PT8GHU';
9、单据流程属性
https://developer.kingdee.com/article/319911049011465472?productLineId=29&isKnowledge=2
10、获取表单标识
((IListView)this.getView().getParentView()).getBillFormId();
11、获取业务单元、行政组织
List<Long> orgIds = new ArrayList<>(); orgIds.add(100000L); // 根据业务单元获取行政组织 List<Long> adminOrgIds = OrgUnitServiceHelper.getAdminOrgRelation(orgIds, true); // 根据行政组织获取业务单元 List<Long> orgUnitIds = OrgUnitServiceHelper.getAdminOrgRelation(orgIds, false);
12、获取权限
//获取当前人员有权限的组织 HasPermOrgResult userHasPermOrgs = PermissionServiceHelper.getUserHasPermOrgs(Long.parseLong(RequestContext.get().getUserId())) //有权的组 织 List<Long> hasPermOrgs = userHasPermOrgs.getHasPermOrgs(); //是否全部组织有权 boolean hasallOrg = userHasPermOrgs.hasAllOrgPerm();
13、判断当前用户是否管理员
PermissionServiceHelper.isAdminUser(UserServiceHelper.getCurrentUserId());
14、操作插件加载所有字段
@Override public void onPreparePropertys(PreparePropertysEventArgs e) { super.onPreparePropertys(e); List<String> fieldKeys = e.getFieldKeys(); fieldKeys.addAll(this.billEntityType.getAllFields().keySet()); }
15、获取操作插件传递的信息,类似界面显示参数
CaseInsensitiveMap map = (CaseInsensitiveMap) this.getOption().getVariables();
16、字段下提示
FieldTip fieldTip = new FieldTip(); fieldTip.setLevel(FieldTip.FieldTipsLevel.Info); fieldTip.setFieldKey(DeliveryRecordConst.PIGBATCH);
17、客户端自定义调用指令
this.getView().executeClientCommand(String command. Object... args)方法调用的指令
18、转换url地址 外部可以直接下载,但不是长期有效
EncreptSessionUtils.encryptSession(url)
19、本地开发环境调度计划、工作流无法调试需要在Debug加此参数
System.setProperty("mg.consumer.register","true");//该参微false,本节点将不会消费mq消息 System.setProperty("mq.debug.queue.tag","test");
20、本地开发环境免密登录配置
System.setProperty("login.type","STANDALONE");
21、HR权限
22、创建Dataset
String[] fields = { "number" //后面跟你其他的字段 }; DataType[] flowDataTypes = { DataType.StringType //后面跟你其他的字段 }; Collection<Object[]> coll = new ArrayList<>();//创建显示行字段 Object[] tempData = new Object[fields.length]; tempData[0] = "张三"; coll.add(tempData); RowMeta createRowMeta = RowMetaFactory.createRowMeta(fields, flowDataTypes); CollectionInput collectionInput = new CollectionInput(createRowMeta, coll); DataSet createDataSet = Algo.create(this.getClass().getName()).createDataSet(collectionInput);
23、判断全功能用户
kd.bos.permission.api.PermissionService#isSuperUser
24、获取人员信息(HR核心人力)
List<Map<String, Object>> erManFileList = PersonExternalService.getInstance().invokeGetCardFields(Collections.singletonList(ermanfileId));
25、获取预览地址
1、FileServiceFactory.getAttachmentFileService().preview("fileName", "url", RequestContext.get().getUserAgent()); 2、UrlService.getAttachmentPreviewUrl("url")
26、单据体动态合计
kd.bos.form.control.EntryGrid.setFloatButtomData(Map<String, String>)
27、如何在代码中打开一个页面,获取到页面对象(View)
//通过如下代码获取到FormView对象,通过FormView对象操作界面 public static IFormView createAddView(String formId, Map<String, Object> customParams) { FormShowParameter parameter = getShowParameter(formId); for (Map.Entry<String, Object> param : customParams.entrySet()) { String key = param.getKey(); Object value = param.getValue(); parameter.setCustomParam(key, value); } invokeFormServiceMethod(parameter); return SessionManager.getCurrent().getView(parameter.getPageId()); } public static FormShowParameter getShowParameter(String formId) { FormShowParameter parameter; MainEntityType mainEntityType = EntityMetadataCache.getDataEntityType(formId); if (mainEntityType.getClass().equals(BasedataEntityType.class)) { parameter = new BaseShowParameter(); } else if (mainEntityType.getClass().equals(BillEntityType.class)) { parameter = new BillShowParameter(); } else { parameter = new FormShowParameter(); } parameter.setStatus(OperationStatus.ADDNEW); parameter.getOpenStyle().setShowType(ShowType.MainNewTabPage); parameter.getOpenStyle().setTargetKey("tabap"); parameter.setFormId(formId); return parameter; } private static void invokeFormServiceMethod(FormShowParameter parameter) { ReflectUtils.invokeCosmicMethod("kd.bos.service.ServiceFactory", "FormService", "createConfig", parameter); ReflectUtils.invokeCosmicMethod("kd.bos.service.ServiceFactory", "FormService", "batchInvokeAction", parameter.getPageId(), "[{\"key\":\"\",\"methodName\":\"loadData\",\"args\":[],\"postData\":[]}]"); }
28、账号多人登录
29、动态修改Flex面板名称
// 调整面板标题 Map<String, Object> props = new HashMap<String, Object>(1); props.put(ClientProperties.Text, new LocaleString("自定义标题")); this.getView().updateControlMetadata(KEY_FLEXPANEL1, props);
30、拼接URL跳转应用首页
https://vip.kingdee.com/article/528297139219451648?productLineId=29&isKnowledge=2&lang=zh-CN
31、代码打开苍穹页面
https://vip.kingdee.com/article/387946074860349696?productLineId=29&isKnowledge=2&lang=zh-CN
32、改动过的业务字段
DynamicObject dynamicObject= e.getDataEntities()[0]; DataEntityState dataEntityState=dynamicObject.getDataEntityState(); //实体在填写完默认值之后,改动过的业务字段 dataEntityState.getBizChangedProperties(); //返回指定实体中所有变更的属性列表 dataEntityState.GetDirtyProperties();
33、附件地址解密
FileServiceExtFactory.getAttachFileServiceExt().getRealPath("加密路径");附件解密
34、获取附件流,生成临时下载地址
InputStream in = FileServiceFactory.getAttachmentFileService().getInputStream("绝对路径"); CacheFactory.getCommonCacheFactory().getTempFileCache().saveAsUrl(attachment.get("name").toString(), in, 2 * 60 * 60);
35、代码查询表单下的所有元数据字段
已知formId即表单id,需要代码查询表单下的所有元数据字段。 MainEntityType entityType = EntityMetadataCache.getDataEntityType(formId); FormMetadata formMetadata = (FormMetadata) MetadataDao.readRuntimeMeta(MetadataDao.getIdByNumber(entityType.getName(), MetaCategory.Form), MetaCategory.Form); for (ControlAp control : formMetadata.getItems()) { if (control instanceof FieldAp) { String visible = control.getVisible(); boolean hidden = control.isHidden(); String localeValue_zh_cn = control.getName().getLocaleValue_zh_CN(); } }
36、代码添加、删除许可
/** * 添加用户许可 * @param userIds 用户许可集合 * @param permitNumber 许可编码 */ public static void addUserPermit(List<Long> userIds,String permitNumber){ List<Long> longs = LicenseServiceHelper.addUserListByGroupId(permitNumber, userIds); Set<Long> userSet = listToSet(userIds); LicenseServiceHelper.syncUserGroup(userSet);//许可更新 } /** * 删除用户许可 * @param userIds * @param permitNumber */ public static void deleteUserPermit(List<Long> userIds,String permitNumber){ Set<Long> userSet = listToSet(userIds); LicenseServiceHelper.deleteUserLicGroup(userSet,true); }
一些常用SDK
HRPermissionServiceHelper HR权限服务
PermissionServiceHelper 平台权限服务
UserServiceHelper 人员数据服务
BosPrintServiceHelper 新打印服务
AttachmentFieldServiceHelper 附件字段服务帮助类
AttachmentServiceHelper 附件帮助服务类
TimeServiceHelper 时间服务
PropertyHelper 属性判断工具
SystemParamServiceHelper 系统参数服务
CalResultQueryService 核算名单/薪资明细结果查询
HRQueryEntityHelper HR 查询实体数据查询工具类
PushServiceHelper 消息推送服务
PromptServiceHelper 提示语服务
OrgUnitServiceHelper 组织单元服务
OrgServiceHelper 组织服务类
OperationServiceHelper 单据操作服务
MutexHelper 网络互斥帮助类
ImageServiceHelper 图片服务帮助类
HSPMServiceHelper 人员信息服务
HRMsgCollaborationServiceHelper 消息协同服务
FlexHelper 弹性域帮助类
FilterServiceHelper 过滤方案服务帮助类
DeleteServiceHelper 单据删除服务
SaveServiceHelper 单据保存服务
BusinessDataServiceHelper 业务数据服务
BaseDataRefrenceHelper 基础资料引用检查帮助类
AppMetaServiceHelper 应用元数据服务帮助类
AppMetadataCache 应用元数据服务类,用于获取应用元数据的信息
FileService 文件服务
——————————————————————————————持续更新...
推荐阅读