金蝶shr怎么将单行表职业信息表中的加入公司日期展示到员工基本信息中

今日遇到此需求,做一下笔记,8.6版本配置实现(估计8.5版本以上的都支持),

8.2版本还需要开发才能实现

 8.6版本通过配置实现思路:

先找到员工基本信息form视图,添加以下内容

<field name="p_joinDate" schemeField="pp.joinDate" readonly="true" label="加入公司日期 " dataType="date" />

schemeField表示结构配置中员工基本信息和职业信息的关系配置,如下图

name取的字段名字只要和表单界面取的名字不一样就行,dataType表示取出的字段类型,按照需要来填写

8.2版本需要二开扩展handler实现类

路径如下:com.kingdee.eas.hr.emp.web.handler.EmployeeEditHandlerExt.java

重写afterInitModel方法,通过人员的ID将职业信息表的数据查询出来put到coreBaseInfo

代码示例:

    /**
     * 创建模型后初始化实体model的值
     * 把职业信息的实体信息set到coreBaseInfo,这样员工基本信息界面也能配置职业信息中的字段信息
     * @param request
     * @param response
     * @param coreBaseInfo
     * @throws SHRWebException
     */
    @Override
    protected void afterInitModel(HttpServletRequest request, HttpServletResponse response, CoreBaseInfo coreBaseInfo)
            throws SHRWebException {
        super.afterInitModel(request, response, coreBaseInfo);
        if (coreBaseInfo.getId() != null) {
            String personId = coreBaseInfo.getId().toString();
            try {
                IPersonPosition iPersonPosition = PersonPositionFactory.getRemoteInstance();
                FilterInfo filter = new FilterInfo();
                FilterItemInfo filterItemInfo = new FilterItemInfo("person.id", personId);
                filter.getFilterItems().add(filterItemInfo);
                if (iPersonPosition.exists(filter)) {
                    String oql = "select * where person.id='" + personId + "'";
                    PersonPositionInfo personPositionInfo = iPersonPosition.getPersonPositionInfo(oql);
                    Enumeration e = personPositionInfo.keys();
                    while (e.hasMoreElements()) {
                        String key = (String) e.nextElement();
                        if (!key.equals("id") && !key.equals("person")) {
                            coreBaseInfo.put(key, personPositionInfo.get(key));
                        }
                    }
                }
            } catch (EASBizException e) {
                e.printStackTrace();
            } catch (BOSException e) {
                e.printStackTrace();
            }
        }
    }

写完后打包,重启服务,配置员工基本信息的视图(只查看,不修改,若是改的话还需要重写afterSave方法,把改的值更新到职业信息)

<field name="enterDate"   readonly="true"  label="入职日期"  dataType="date" />
name="enterDate" 就直接配置职业信息实体的字段即可,dataType是必须要加的,不加的话点击修改按钮后会出现null
不加dataType的效果

加上后,编辑界面便能正常展示

猜测是因为不加datatype界面无法加载input框,会出现后台虽然返回了值,但是无法展示在对应的input里面(不加的时候,不会有input而是一个span标签展示数据)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值