泛微ecology9 建模表通过execl批量导入数据时对导入的数据进行处理(导入转换接口)

泛微ecology9 建模表通过execl批量导入数据时对导入的数据进行处理(导入转换接口)

需求说明

需求的起因是因为导入人员工资时需要展示人员的部门和职位等信息,但由于人员的组织经常变动,通过修改execl的方式维护太麻烦,希望能改成直接导入的时候这些信息用系统自带的。这种时候就可以用到批量导入的导入转换接口

代码实现

java 复制代码
package com.weaver.formmode.interfaces.impl;

import java.util.Map;

import weaver.conn.RecordSet;
import weaver.file.ExcelParseForPOI;
import weaver.formmode.interfaces.ImportFieldTransActionPOI;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;

/**
 * 建模导入自动填充:部门ID、工号、岗位ID
 * @author liron
 */
public class BringOutPersonnelInformation implements ImportFieldTransActionPOI {

    private final BaseBean log = new BaseBean();

    @Override
    public String getTransValue(Map<String, Object> param, User user, ExcelParseForPOI excelParse, int row, int col) {
        try {
            // 字段信息
            String fieldName = Util.null2String(param.get("fieldname"));
            String sheetIndex = Util.null2String(param.get("sheetindex"));

            // 第3列(索引2)获取 人员ID
            String loginId = Util.null2String(excelParse.getValue(sheetIndex, row, 4));
            String cellValue = Util.null2String(excelParse.getValue(sheetIndex, row, col));

            // 人员ID为空直接返回
            if (loginId.isEmpty()) {
                return cellValue;
            }

            // 根据字段名自动查询对应值
            switch (fieldName) {
                case "bm":
                    cellValue = getUserInfo(loginId, "departmentid");
                    break;
                case "zw":
                    cellValue = getUserInfo(loginId, "jobtitle");
                    break;
                default:
                    break;
            }
            return cellValue;

        } catch (Exception e) {
            log.writeLog("[导入人员信息] 异常:" + e.getMessage());
            return "";
        }
    }

    /**
     * 公共查询方法:根据人员ID获取 hrmresource 表任意字段
     */
    private String getUserInfo(String loginId, String field) {
        RecordSet rs = new RecordSet(); // 必须每次新建,防止并发错乱
        String sql = "select " + field + " from hrmresource where loginId = ?";

        // 防SQL注入,使用 ? 占位符
        rs.executeQuery(sql, loginId);

        if (rs.next()) {
            return Util.null2String(rs.getString(field));
        }
        return "";
    }
}
相关推荐
E-cology4 小时前
【泛微低代码开发平台e-builder】使用HTML组件实现页面中部分区域自定义开发
前端·低代码·泛微·e-builder
sugar156911 天前
陀螺匠目录结构
crm·oa·陀螺匠
后青春期的诗go17 天前
泛微OA-E9与第三方系统集成开发企业级实战记录(八)
java·接口·金蝶·泛微·oa·集成开发·对接
后青春期的诗go18 天前
泛微OA-E9与第三方系统集成开发企业级实战记录(九)
java·金蝶·erp·泛微·oa·集成开发·e9
平头也疯狂2 个月前
RuoYi Office 全景介绍:一个平台管好整个企业
微服务·vue3·springboot·crm·oa·企业管理系统
Jeking2174 个月前
新一代 Workflow 编辑器Unione Flow Editor :OA 审批流程实现案例
流程图·workflow·oa·unione flow·flow editor·unione cloud
stu_kk5 个月前
Ecology9明细表中添加操作按钮与弹窗功能技术分享
前端·oa
stu_kk5 个月前
泛微Ecology9实现流程界面隐藏按钮
java·oa
爱敲代码的憨仔10 个月前
分布式协同自动化办公系统-工作流引擎-流程设计
java·flowable·oa