苍穹代码笔记
作者:互联网
文章目录
一、弹窗操作
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