其他分享
首页 > 其他分享> > 苍穹代码笔记

苍穹代码笔记

作者:互联网

文章目录

一、弹窗操作

1、获取父页面的视图和模型

IFormView parentView = this.getView().getParentView();
IDataModel parentModel = parentView.getModel();

2、父页面给子页面传值

1、FormShowParameter
--父页面
FormShowParameter formShowParameter = this.getView().getFormShowParameter();
formShowParameter.setCustomParam("你要传过去的标识","你要传过去的内容")
--子页面
FormShowParameter formShowParameter = this.getView().getFormShowParameter();
formShowParameter.getCustomParam("你传过来的标识")

2、把数据放在缓存中
--父页面
this.getView.getPageCache.put("放在缓存的key值","放在缓存的value值");
--子页面
IFormView parentView = this.getView().getParentView();//通过父类的view获取父类的缓存
IPageCache pageCache = parentView.getPageCache();
pageCache.get("放在缓存的key值");

3、给点击事件新增弹窗

1、
2、新增弹窗
 //创建弹出页面对象,FormShowParameter表示弹出页面为动态表单
FormShowParameter ShowParameter = new FormShowParameter();
//设置弹出页面的编码
ShowParameter.setFormId(KEY_POP_FORM);
//设置弹出页面标题
ShowParameter.setCaption("您的请假天数大于3天,请填写工作交接安排说明");
//设置页面关闭回调方法
//CloseCallBack参数:回调插件,回调标识
ShowParameter.setCloseCallBack(new CloseCallBack(this, KEY_LEAVE_DAYS));
//设置弹出页面打开方式,支持模态,新标签等
ShowParameter.getOpenStyle().setShowType(ShowType.Modal);
//弹出页面对象赋值给父页面
 this.getView().showForm(ShowParameter);

4、从子页面中对父页面操作

1、获取父页面的视图和模型
IFormView parentView = this.getView().getParentView();
IDataModel parentModel = parentView.getModel();
2、操作代码
。。。。。。
例:parentModel.setVisible(false,"需要隐藏的控件");
3、将上述操作的修改完的内容发送给父页面
this.getView().sendFormAction(parentView);

5、弹窗回调事件

 /**
  * 页面关闭回调事件
  * @param closedCallBackEvent
  */
  @Override
public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
    super.closedCallBack(closedCallBackEvent);
    //判断标识是否匹配,并验证返回值不为空,不验证返回值可能会报空指针
    if (StringUtils.equals(closedCallBackEvent.getActionId(), KEY_LEAVE_DAYS) && null != closedCallBackEvent.getReturnData()) {
        //这里返回对象为Object,可强转成相应的其他类型,
        // 单条数据可用String类型传输,返回多条数据可放入map中,也可使用json等方式传输
        HashMap<String, String> returnData = (HashMap<String, String>) closedCallBackEvent.getReturnData();
        this.getModel().setValue(KEY_WORK_ARRANGE, returnData.get(KEY_WORK_ARRANGE));
        this.getModel().setValue(KEY_REMARK, returnData.get(KEY_REMARK));
    }
}

6、获取父页面的标识符

FormShowParameter formShowParameter = this.getView().getFormShowParameter();
String formId = formShowParameter.getParentFormId();

二、单据体操作

1、给单据体的某个单元格赋值

this.getModel().setValue("单元格标识符",设置的内容,行数);

2、获取选中行

int[] selectRows = ((EntryGrid)this.getControl("单据体标识符")).getSelectRows();

3、新增行

int newRowIndex = this.getModel().createNewEntryRow("单据体标识符");

4、设置冻结列

EntryGrid entry = getView().getControl("单据体标识");   
Optional.ofNullable(entry).ifPresent(e -> {                
         e.setColumnProperty("列1", ClientProperties.IsFixed, true);  
         e.setColumnProperty("列2", ClientProperties.IsFixed, true);
});

效果图:
原:
|列1|列2|列3|列4|列5|列6|列7|列8|列9|
|数1|数2|数3|数4|数5|数6|数7|数8|数9|
|数1|数2|数3|数4|数5|数6|数7|数8|数9|
冻结:(列1和列2被冻结,不能动,其他的列可拖动)
{|列1|列2|}    列3|列4|列5|列6|列7|列8|列9|
{|数1|数2|}    数3|数4|数5|数6|数7|数8|数9|
{|数1|数2|}    数3|数4|数5|数6|数7|数8|数9|

三、多选基础资料

1、通过基础资料id查询单据id

QFilter qfilter = new QFilter("单据下的多选基础资料标识符.fbasedataid.id",QCP.equals,基础资料id);
DynamicObjectCollection collection = 
	QueryServiceHelper.query("单据标识符",
	"id,单据下的多选基础资料标识符,单据下的多选基础资料标识符.fbasedataid,单据下的多选基础资料标识符.fbasedataid.id",
	new QFilter[]{qfilter});
long id = collection.getLong("id");

2、


四、表单操作

1、隐藏、锁定控件

IFormView view = this.getView();
view.setVisible(false,"需要隐藏的控件标识符");//false - 隐藏 true - 关闭隐藏
view.setVisible(false,"需要隐藏的控件标识符","需要隐藏的控件标识符2");//false - 隐藏 true - 关闭隐藏
view.setEnable(false,"需要锁定的控件标识符");//false - 关闭锁定
view.setEnable(false,"需要锁定的控件标识符","需要锁定的控件标识符2");//false - 锁定 true - 关闭锁定

2、获取当前登入人 - 信息

long userId = UserServiceHelper.getCurrentUserId();
2、获取当前登入人公司
UserServiceHelper.getUserMainOrgId(userId)
3、获取当前登入人部门
@SuppressWarnings("deprecation")
Map<String, Object> mapOrg = OrgServiceHelper.getCompanyfromOrg(Long.valueOf(UserServiceHelper.getUserMainOrgId(userId)));

3、给标签赋值

Label label = this.getView().getControl("标签的标识符");
label.setText("要设置的值");

4、


5、代码调用插件

OperationResult operationResult = this.getView().invokeOperation("需要调用的操作,比如submit");

6、苍穹判断字符为空

import kd.bos.dataentity.utils.StringUtils;
StringUtils.isNotBlack("需要判断的字符串");

7、返回错误信息和返回信息

this.getView().showErrorNotification("错误信息");
this.getView().showSuccessNotification("成功信息");

8、设置日期范围控件的最大最小值

DateRangeEdit headFieldEdit = this.getView().getControl("日期控件标识"); 
1、最小值
headFieldEdit.setMinDate(new Date());
2、最大值
headFieldEdit.setMaxDate(new Date());

9、F7过滤点击事件

1、实现监听类
implements BeforeF7SelectListener
2、添加监听事件
BasedataEdit basedataEdit = this.getView().getControl("需要过滤的控件");
basedataEdit.addBeforeF7SelectListener(this);
3、判断当前操作是否为当前控件
FormOperate formOperate = (FormOperate) args.getSource();
String operateKey = formOperate.getOperateKey();
4、给过滤添加过滤条件
QFilter qFilter = new QFilter(过滤条件);
//设置列表过滤条件
ListShowParameter showParameter=(ListShowParameter)evt.getFormShowParameter();
showParameter.getListFilterParameter().setFilter(qFilter);

10、设置徽标

1、获取设置徽标的控件 - 这里是列表上的按钮,使用的标识符为toolbarap
Toolbar toolbar = this.getView().getControl("toolbarap");
2、设置徽标格式,具体的到社区搜索徽标
toolbar.setBadgeInfo(USER_LIST_TBMAIN_DIS_BEGIN, getBadgeInfo());
3、徽标设置
    private BadgeInfo getBadgeInfo () {
        BadgeInfo badgeInfo = new BadgeInfo();
        badgeInfo.setCount(1);//设置数量
        return badgeInfo;
    }

11、判断用户是否为车间责任人

public Boolean isIncharge () {
        //获取当前操作人
        long userId = UserServiceHelper.getCurrentUserId();
        List<Long> userIds = new ArrayList<>();
        userIds.add(userId);
        List<Map<String, Object>> list = UserServiceHelper.get(userIds);
        Map<String, Object> userEntity = list.get(0);
        List<Map<String, Object>> posList = (List<Map<String, Object>>) userEntity.get("entryentity");
        boolean isincharge = (boolean) posList.get(0).get("isincharge"); // 是否为负责人
        return isincharge;
    }

12、循环 iterator

Iterator<String> it=map.iterator();
while(it.hasNext()) {
	String key = it.next();
	System.out.println("key="+key+",value="+setting.get(key));
}

13、设置颜色

@Override
    public void afterBindData(EventObject e) {
        super.afterBindData(e);
        HashMap<String, Object> item = new HashMap<>();
        HashMap<String, Object> map = new HashMap<>();
        if (this.getModel().getValue("billstatus") != null) {
            if (this.getModel().getValue("billstatus").equals("A")) {
                map.put(ClientProperties.ForeColor, "yellow");
            } else if (this.getModel().getValue("billstatus").equals("B")) {
                map.put(ClientProperties.ForeColor, "blue");
            } else if (this.getModel().getValue("billstatus").equals("C")) {
                map.put(ClientProperties.ForeColor, "orange");
            } else if (this.getModel().getValue("billstatus").equals("D")) {
                map.put(ClientProperties.ForeColor, "pink");
            } else if (this.getModel().getValue("billstatus").equals("E")) {
                map.put(ClientProperties.ForeColor, "grey");
            } else if (this.getModel().getValue("billstatus").equals("F")) {
                map.put(ClientProperties.ForeColor, "red");
            } else {
                map.put(ClientProperties.ForeColor, "#fffff");
            }
            item.put("item", map);
            this.getView().updateControlMetadata("billstatus", item);
        }
    }

14、BigDecimal值比较

1、判断正负数
int r=amount1.compareTo(BigDecimal.ZERO);
if(r < 0){//为负,amount1 < 0}

15、刷新界面

this.getView().updateView();

16、


17、


18、


19、


20、


五、列表操作

1、刷新列表

((IListView) this.getView()).refresh();

2、


六、工作流

1、当前审批人

1、列表插件中引入工作流插件
    public void beforeCreateListDataProvider(BeforeCreateListDataProviderArgs args) {
        //获取当前工作流审核人
        args.setListDataProvider(new UserApplyWorkFlowPlugin());
    }
2、工作流插件
public class UserApplyWorkFlowPlugin extends ListDataProvider {
	//当前审批人在列表上的字段
    private String USER_APPLY_NEXTOR = DisEnum.KEY_USER_APPLY_NEXTOR.getName();
    /*加载数据列表*/
    @Override
    public DynamicObjectCollection getData(int start, int limit) {
        DynamicObjectCollection rows = super.getData(start, limit);
        if (rows.isEmpty()){return rows;}
        if (!rows.get(0).getDataEntityType().getProperties().containsKey(USER_APPLY_NEXTOR)) {
            //无列,无需处理
            return rows;
        }
        for (DynamicObject row:rows){
            Map<String, List<BizProcessStatus>> map = WorkflowServiceHelper.getBizProcessStatus(new String[]{row.get("id").toString()});
            List<BizProcessStatus> value = map.get(row.get("id").toString());
            if (value != null && value.size() > 0){
                BizProcessStatus biz = value.get(0);
                if (biz.getParticipantName()!= null){
                    row.set(USER_APPLY_NEXTOR,biz.getCurrentNodeName() + "|" + biz.getParticipantName());
                }
            }
        }
        return rows;
    }
}

2、


七、

1、


2、


八、

1、


2、


九、

1、


2、


十、

1、


2、


十一、

1、


2、


十二、

1、


2、


十三、

1、


2、


十四、

1、


2、


十五、

1、


2、


十六、

1、


2、


十七、

1、


十八、

1、


2、


十九、

1、


2、


二十、

1、


2、


二十一、

1、


2、


二十二、

1、


2、


二十三、

1、


2、


二十四、

1、


2、


十四、

1、


2、


十五、

1、


2、


十六、

1、


2、


十七、

1、


十八、

1、


2、


十九、

1、


2、


二十、

1、


2、


二十一、

1、


2、


二十二、

1、


2、


二十三、

1、


2、


二十四、

1、


2、


标签:getView,控件,get,苍穹,代码,笔记,new,标识符,页面
来源: https://blog.csdn.net/shhbshdis/article/details/116460432