开发小技巧原创
金蝶云社区-云社区用户6QzL0379
云社区用户6QzL0379
10人赞赏了该文章 673次浏览 未经作者许可,禁止转载编辑于2024年10月16日 08:59:33
summary-icon摘要由AI智能服务提供

该文本提供了多种编程和开发相关的操作和方法,包括密码加密修改、样式自定义、类型转换、权限获取、数据集操作、界面交互、附件处理、插件开发以及系统配置等方面的内容。文本还涉及了如何在代码中实现特定的业务逻辑,如获取变更字段描述、更新数据库信息、加载插件、修改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权限

如何初始化HR权限

HR权限数据维度管理

关联权限项

二开业务如何配置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、账号多人登录

1726042609152.jpg

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

WorkflowServiceHelper  工作流

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 文件服务








——————————————————————————————持续更新...





图标赞 10
10人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
3人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0