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

本文包含多个技术操作说明,包括获取变更字段名称、密码加密修改、自定义样式去除滚动条、对象映射方法、获取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权限

如何初始化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、改动过的业务字段

    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

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








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





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