泛微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 "";
    }
}
相关推荐
钛生智能18 小时前
OA 流程定制全参数详解(十):画流程图与美化——从“能跑”到“好看”的最后一公里
流程图·办公自动化·oa·协同办公·oa办公系统
钛生智能4 天前
OA 流程定制全参数详解(七):流程的生命周期——启用、停用、导出、导入
java·办公自动化·oa·协同办公·oa办公系统
钛生智能8 天前
OA 流程定制全参数详解(六):流转结束进入新流程——流程的“接力棒”
办公自动化·oa·协同办公·oa办公系统
钛生智能8 天前
OA 流程定制全参数详解(五):并行处理——流程的“多线程”
办公自动化·oa·协同办公·oa办公系统
钛生智能9 天前
OA 流程定制全参数详解(三):环节信息——流程中最核心、参数最多的部分
运维·办公自动化·oa·协同办公·oa办公系统
RestCloud14 天前
iPaaS集成平台如何打通ERP、CRM、OA等异构系统
数据治理·crm·erp·ipaas·oa·集成平台
洞察物理世界25 天前
【SI_10BASE-T1S】基于OA的10BASE-T1S PMA测试方案
车载以太网·oa·pma·10base-t1s
大龄码农有梦想1 个月前
企业工作流系统如何设计用户、部门、角色、岗位、动态关系五类流程办理人?
工作流引擎·flowable·流程引擎·oa·工作流系统·选人规则·bpm平台
大龄码农有梦想1 个月前
工作流中的子流程节点能否驳回到父流程?
工作流引擎·流程引擎·oa·bpm·子流程·驳回·退回
大龄码农有梦想1 个月前
开源流程引擎 Camunda 如何实现任意节点跳转?
工作流引擎·流程引擎·camunda·oa·bpn·流程跳转·会签