金蝶云苍穹工具栏上提示消息事件案例

2020-08-17  本文已影响0人  涎涎

前置条件

新建请假申请单单据

新建请假类型基础资料

新建请假天数初始表

新建完成记得授权

添加数据

在请假天数初始表里添加多条数据,记得剩余天数字段也要添加数据

编码

package kd.bos.plugin.leave.message;

import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.utils.StringUtils;
import kd.bos.entity.datamodel.IDataModel;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.QueryServiceHelper;

/**
 * <p>Title: LeaveBillPopWindowPlugin</p>
 * <p>
 *    Description:
 *    试验成功
 * </p>
 * <p>Copyright: Copyright (c) 2020</p>
 * @author xx
 * @date 2020年3月21日
 * @version 1.0
 */
public class LeaveBillPopWindowPlugin extends AbstractBillPlugIn {

    //请假申请单中的请假类型的标识
    private final String KEY_LEAVE_TYPE = "leavetype";
    //请假申请单中的请假人的标识
    private final String KEY_PERSON = "person";
    //请假剩余天数基础资料的页面编码
//    private final String KEY_LEAVE_DAYS_PAGE = "9z8e_gjt_hr_qjts";
    private final String KEY_LEAVE_DAYS_PAGE = "op_qjtscsb";
    //请假剩余天数基础资料中的剩余天数的标识
    private final String KEY_UNUSE_DAYS = "unusedays";
    //提醒天数
    private final Integer REMIND_DAYS = 3;

    /**
     * <p>Title: propertyChanged</p>
     * <p>
     *    Description:
     * 控件改变事件,在页面上打开即时触发值更新即可,不需要注册监听
     * 选择请假类型之后判断该用户该类型下的剩余天数,如果小于3天则弹框提醒
     * </p>
     * <p>Copyright: Copyright (c) 2020</p>
     * @author xx
     * @date 2020年3月21日
     * @param param the bare_field_name
     * @param e
     * @see kd.bos.entity.datamodel.events.IDataModelChangeListener#propertyChanged(kd.bos.entity.datamodel.events.PropertyChangedArgs)
     * @version 1.0
     */
    @Override
    public void propertyChanged(PropertyChangedArgs e) {
        super.propertyChanged(e);
        //获取改变的控件的标识名,如果是请假类型,则去获取剩余请假天数
        String name = e.getProperty().getName();
        if (StringUtils.equals(KEY_LEAVE_TYPE, name)) {
            //获取页面数据模型
            IDataModel model = this.getModel();
            //获取页面person和leavetype对应的动态数据模型对象
            DynamicObject personObj = (DynamicObject) model.getValue(KEY_PERSON);
            DynamicObject leaveTypeObj = (DynamicObject) model.getValue(KEY_LEAVE_TYPE);
            if (null != personObj && null != leaveTypeObj) {
                //获取person和leavetype对应的主键id
                Long personID = (Long) personObj.getPkValue();
                Long leaveTypeID = (Long) leaveTypeObj.getPkValue();
                //组装查询条件,条件对象QFilter,参数:属性名,相关条件,属性值(类似于sql的单个适配条件)
                QFilter person = new QFilter(KEY_PERSON, QCP.equals, personID);
                QFilter leaveType = new QFilter(KEY_LEAVE_TYPE, QCP.equals, leaveTypeID);
                //组装两个条件为同时成立的关系(类似于sql几个条件之间的关系)
                QFilter[] qFilters = {person.and(leaveType)};
                //根据组装好的用户和请假类型去用户请假天数基础资料中获取剩余天数
                // 参数为:1.请假天数基础资料的编码;2.需查询的属性;3.查询条件
                // 返回的是请假天数基础资料对象,只包含了需查询的属性
                DynamicObject leaveDays = QueryServiceHelper.queryOne(KEY_LEAVE_DAYS_PAGE, KEY_UNUSE_DAYS, qFilters);
                //根据返回的用户剩余请假天数对象获取假期剩余天数
                int unuseDays = leaveDays.getInt(KEY_UNUSE_DAYS);
                if (0 < unuseDays && REMIND_DAYS > unuseDays) {
                    //如果大于0天小于3天则弹出提示消息
                    this.getView().showTipNotification("您的假期天数少于3天了,要省着用哦~");
                } else if (unuseDays <= 0) {
                    //如果小于等于0天则弹出错误提示
                    this.getView().showErrorNotification("您的假期天数剩余0天,不允许休假哦!");
                }
            }
        }
    }
}

预览测试

在请假申请单中预览测试,在填写到请假类型时则触发事件

以上就是我关于 金蝶云苍穹工具栏上提示消息事件案例 知识点整理与总结的全部内容,希望对你有帮助。。。。。。。


分割线

上一篇下一篇

猜你喜欢

热点阅读