该文本提供了多种编程和开发相关的操作和方法,包括密码加密修改、样式自定义、类型转换、权限获取、数据集操作、界面交互、附件处理、插件开发以及系统配置等方面的内容。文本还涉及了如何在代码中实现特定的业务逻辑,如获取变更字段描述、更新数据库信息、加载插件、修改Flex面板标题、生成和解密URL地址等。此外,还提到了SDK和工具类的使用,以支持各种业务场景下的开发需求。
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、动态修改Flex面板标题
// 调整面板标题 Map<String, Object> props = new HashMap<String, Object>(1); props.put(ClientProperties.Text, new LocaleString("自定义标题")); this.getView().updateControlMetadata(KEY_FLEXPANEL1, props);
33、附件地址解密
FileServiceExtFactory.getAttachFileServiceExt().getRealPath("加密路径");附件解密
34、获取附件流,生成临时下载地址
InputStream in = FileServiceFactory.getAttachmentFileService().getInputStream("绝对路径"); CacheFactory.getCommonCacheFactory().getTempFileCache().saveAsUrl(attachment.get("name").toString(), in, 2 * 60 * 60);
一些常用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 文件服务
——————————————————————————————持续更新...
推荐阅读
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *