java导入text文件

该Java方法用于从TXT文件中导入数据,支持增量和覆盖两种方式。首先,读取GBK编码的TXT文件,逐行处理数据,解析每行数据并创建数据对象。然后,根据数据类型插入对应的字段,如打卡日期、组织全称、员工信息等。如果数据格式不正确,方法会返回错误信息。最后,使用批量插入将数据保存到数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * 插入导入的记录
 *
 * @param url
 * @return
 */
public ApiResponse insertImportOriginBigData(String url, String importType) {

    boolean flag = true;
    if (importType.equals("increment")) {
        flag = incrementOriginBigDataInsert(url);
    } else if (importType.equals("cover")) {
        flag = coverOriginBigDataInsert(url);

    }

    if (flag == true) {
        Map<String, Object> details = Params.of("showResult", "导入数据成功!");
        return ApiResponse.success("提交成功!", details);
    } else {
        Map<String, Object> details = Params.of("showResult", "请检查数据!");
        return ApiResponse.success("提交失败!", details);
    }


}


//增量数据记录导入
public boolean incrementOriginBigDataInsert(String file) {
    String userId = SecurityContext.getCurrentUser().getId();
    String companyId = String.valueOf(SecurityContext.getCurrentUser().getProperty("COMPANY_ID"));

    boolean flag = true;
    //查询大数据类型
    Map<String, Object> param = new HashMap<String, Object>();
    param.put("code", "ORIGIN_BIG_DATA_TYPE");
    List<AttCommonWordBook> attCommonWordBookList = dao.queryForList(AttCommonWordBook.class, "query.att_common_wordbook.code", param);

    List<AttOriginBigData> list = new ArrayList<AttOriginBigData>();
    try {
        BufferedReader br = null;// 编码方式为utf-8,txt保存时编码方式也要选择为utf-8
        try {
            br = new BufferedReader((new InputStreamReader(new FileInputStream(new File(file)), "GBK")));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        String line;
        try {
            while ((line = br.readLine()) != null) {
                String originBigData = line.trim();//得到每行数据

                String[] originBigDataArray = originBigData.split("\\|");//解析每行数据

                if(originBigDataArray.length!=10) {
                    flag = false;
                    return flag;
                }

                if (originBigDataArray != null && originBigDataArray.length > 0) {


                    AttOriginBigData attOriginBigData = new AttOriginBigData();
                    String id = Dao.getUUID();
                    attOriginBigData.setId(id);
                    /** 打卡日期 **/
                    if (originBigDataArray[0].contains("null")) {
                        attOriginBigData.setLockinDay("");
                    } else {
                        attOriginBigData.setLockinDay(originBigDataArray[0]);
                    }
                    /** 导入组织全称 **/
                    if (originBigDataArray[1].contains("null")) {
                        attOriginBigData.setOrgName("");
                    } else {
                        attOriginBigData.setOrgName(originBigDataArray[1]);
                    }
                    /** 导入科室 **/
                    if (originBigDataArray[2].contains("null")) {
                        attOriginBigData.setOfficeName("");
                    } else {
                        attOriginBigData.setOfficeName(originBigDataArray[2]);
                    }

                    if (originBigDataArray[3].contains("null")) {
                        attOriginBigData.setEmpCode("");
                    } else {

                        Map<String, Object> params = new HashMap<String, Object>();
                        params.put("empCode", originBigDataArray[3]);
                        params.put("companyId", companyId);


                        EmployeeBaseInfo employeeBaseInfo = dao.queryForObjectQuietly(EmployeeBaseInfo.class, "query.getEmpInfo", params);
                        if (employeeBaseInfo != null) {
                            /** 员工姓名 **/
                            attOriginBigData.setEmpName(employeeBaseInfo.getEmpName());
                            attOriginBigData.setOfficeId(employeeBaseInfo.getOfficeId());
                            attOriginBigData.setDeptId(employeeBaseInfo.getDepartmentId());
                        }
                        /** 员工编号 **/
                        attOriginBigData.setEmpCode(originBigDataArray[3]);
                    }
                    /** 导入手机号 **/
                    if (originBigDataArray[4].contains("null")) {
                        attOriginBigData.setPhone("");
                    } else {
                        attOriginBigData.setPhone(originBigDataArray[4]);
                    }
                    /** 上班时间 **/
                    if (originBigDataArray[5].contains("null")) {
                        attOriginBigData.setMinLockinTime("");
                    } else {
                        attOriginBigData.setMinLockinTime(originBigDataArray[5]);
                    }
                    /** 下班时间 **/
                    if (originBigDataArray[6].contains("null")) {
                        attOriginBigData.setMaxLockinTime("");
                    } else {
                        attOriginBigData.setMaxLockinTime(originBigDataArray[6]);
                    }
                    /** 停留时长 **/
                    if (originBigDataArray[7].contains("null")) {
                        attOriginBigData.setDuration(Double.valueOf(0));
                    } else {
                        attOriginBigData.setDuration(Double.valueOf(originBigDataArray[7]));
                    }
                    /** 上班情况 **/
                    if (originBigDataArray[8].contains("null")) {
                        attOriginBigData.setOnWorkType("");
                    } else {
                        /** 上班情况ID(对应ATT_COMMON_WORDBOOK.ID) **/
                        if (attCommonWordBookList != null && attCommonWordBookList.size() > 0) {
                            for (AttCommonWordBook attCommonWordBook : attCommonWordBookList) {
                                if (attCommonWordBook.getName().equals(originBigDataArray[8])) {

                                    attOriginBigData.setOnWorkTypeId(attCommonWordBook.getId());
                                }
                            }
                        }
                        attOriginBigData.setOnWorkType(originBigDataArray[8]);
                    }

                    /** 下班情况 **/
                    if (originBigDataArray[9].contains("null")) {
                        attOriginBigData.setOutWorkType("");
                    } else {
                        /** 下班情况ID(对应ATT_COMMON_WORDBOOK.ID) **/
                        if (attCommonWordBookList != null && attCommonWordBookList.size() > 0) {
                            for (AttCommonWordBook attCommonWordBook : attCommonWordBookList) {
                                if (attCommonWordBook.getName().equals(originBigDataArray[9])) {

                                    attOriginBigData.setOutWorkTypeId(attCommonWordBook.getId());
                                }

                            }
                        }
                        attOriginBigData.setOutWorkType(originBigDataArray[9]);
                    }

                    /** 创建人 **/
                    attOriginBigData.setCreatedBy(userId);
                    /** 创建时间 **/
                    attOriginBigData.setCreatedDate(new Date());
                    /** 最后修改人  **/
                    attOriginBigData.setLastUpdatedBy(userId);
                    /** 最后修改时间 **/
                    attOriginBigData.setLastUpdatedDate(new Date());
                    /**是否删除**/
                    attOriginBigData.setIsDelete(0);
                    list.add(attOriginBigData);

                }

            }

        } catch (IOException e) {
            e.printStackTrace();
        }

        int result[] = dao.batchInsert(AttOriginBigData.class, list);

        for (int i : result) {
            if (i == 0) {
                flag = false;
            }
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

    return flag;
}

//覆盖数据记录导入
public boolean coverOriginBigDataInsert(String file) {
    String userId = SecurityContext.getCurrentUser().getId();
    String companyId = String.valueOf(SecurityContext.getCurrentUser().getProperty("COMPANY_ID"));

    boolean flag = true;
    //查询大数据类型
    Map<String, Object> param = new HashMap<String, Object>();
    param.put("code", "ORIGIN_BIG_DATA_TYPE");
    List<AttCommonWordBook> attCommonWordBookList = dao.queryForList(AttCommonWordBook.class, "query.att_common_wordbook.code", param);

    List<AttOriginBigData> list = new ArrayList<AttOriginBigData>();
    try {
        BufferedReader br = null;// 编码方式为utf-8,txt保存时编码方式也要选择为utf-8
        try {
            br = new BufferedReader((new InputStreamReader(new FileInputStream(new File(file)), "GBK")));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        String line;
        try {
            while ((line = br.readLine()) != null) {
                String originBigData = line.trim();//得到每行数据

                String[] originBigDataArray = originBigData.split("\\|");//解析每行数据

                if(originBigDataArray.length!=10) {
                    flag = false;
                    return flag;
                }

                /** 打卡日期 **/
                String lockinDay = "";
                String orgName= "";
                String officeName = "";
                String empCode = "";
                if (originBigDataArray[0].contains("null")) {
                    lockinDay = "";
                } else {
                    lockinDay = originBigDataArray[0];
                }

                /** 导入组织全称 **/
                if (originBigDataArray[1].contains("null")) {
                    orgName="";
                } else {
                    orgName=originBigDataArray[1];
                }
                /** 导入科室 **/
                if (originBigDataArray[2].contains("null")) {
                    officeName = "";
                } else {
                    officeName = originBigDataArray[2];
                }

                if (originBigDataArray[3].contains("null")) {
                    empCode = "";
                } else {
                    /** 员工编号 **/
                    empCode = originBigDataArray[3];
                }

                //查询是否存在导入信息
                Map<String, Object> originBigDataParam = new HashMap<String, Object>();
                originBigDataParam.put("empCode", empCode);
                originBigDataParam.put("orgName", orgName);
                originBigDataParam.put("officeName", officeName);
                originBigDataParam.put("lockinDay", lockinDay);

                //查询是否存在导入记录
                List<AttOriginBigData> oldOriginBigDataList = dao.queryForList(AttOriginBigData.class, "query.att_origin_big_data_by", originBigDataParam);

                if (oldOriginBigDataList != null && oldOriginBigDataList.size() > 0) {
                    for (AttOriginBigData oldOriginBigData : oldOriginBigDataList) {
                        //如果存在导入记录,将数据删除,重新导入
                        if (oldOriginBigData != null) {
                            oldOriginBigData.setIsDelete(1);
                            oldOriginBigData.setLastUpdatedDate(new Date());
                            oldOriginBigData.setLastUpdatedBy(userId);
                            dao.update(AttOriginBigData.class, oldOriginBigData);

                        }

                    }
                }


                if (originBigDataArray != null && originBigDataArray.length > 0) {

                    AttOriginBigData attOriginBigData = new AttOriginBigData();
                    String id = Dao.getUUID();
                    attOriginBigData.setId(id);
                    /** 打卡日期 **/
                    attOriginBigData.setLockinDay(lockinDay);

                    /** 导入组织全称 **/

                    attOriginBigData.setOrgName(orgName);

                    /** 导入科室 **/
                    attOriginBigData.setOfficeName(officeName);

                    if (empCode != "") {
                        Map<String, Object> params = new HashMap<String, Object>();
                        params.put("empCode", empCode);
                        params.put("companyId", companyId);

                        EmployeeBaseInfo employeeBaseInfo = dao.queryForObjectQuietly(EmployeeBaseInfo.class, "query.getEmpInfo", params);
                        if (employeeBaseInfo != null) {
                            /** 员工姓名 **/
                            attOriginBigData.setEmpName(employeeBaseInfo.getEmpName());
                            attOriginBigData.setOfficeId(employeeBaseInfo.getOfficeId());
                            attOriginBigData.setDeptId(employeeBaseInfo.getDepartmentId());
                        }

                    }

                    /** 员工编号 **/
                    attOriginBigData.setEmpCode(empCode);

                    /** 导入手机号 **/
                    if (originBigDataArray[4].contains("null")) {
                        attOriginBigData.setPhone("");
                    } else {
                        attOriginBigData.setPhone(originBigDataArray[4]);
                    }
                    /** 上班时间 **/
                    if (originBigDataArray[5].contains("null")) {
                        attOriginBigData.setMinLockinTime("");
                    } else {
                        attOriginBigData.setMinLockinTime(originBigDataArray[5]);
                    }
                    /** 下班时间 **/
                    if (originBigDataArray[6].contains("null")) {
                        attOriginBigData.setMaxLockinTime("");
                    } else {
                        attOriginBigData.setMaxLockinTime(originBigDataArray[6]);
                    }
                    /** 停留时长 **/
                    if (originBigDataArray[7].contains("null")) {
                        attOriginBigData.setDuration(Double.valueOf(0));
                    } else {
                        attOriginBigData.setDuration(Double.valueOf(originBigDataArray[7]));
                    }
                    /** 上班情况 **/
                    if (originBigDataArray[8].contains("null")) {
                        attOriginBigData.setOnWorkType("");
                    } else {
                        /** 上班情况ID(对应ATT_COMMON_WORDBOOK.ID) **/
                        if (attCommonWordBookList != null && attCommonWordBookList.size() > 0) {
                            for (AttCommonWordBook attCommonWordBook : attCommonWordBookList) {
                                if (attCommonWordBook.getName().equals(originBigDataArray[8])) {

                                    attOriginBigData.setOnWorkTypeId(attCommonWordBook.getId());
                                }
                            }
                        }
                        attOriginBigData.setOnWorkType(originBigDataArray[8]);
                    }

                    /** 下班情况 **/
                    if (originBigDataArray[9].contains("null")) {
                        attOriginBigData.setOutWorkType("");
                    } else {
                        /** 下班情况ID(对应ATT_COMMON_WORDBOOK.ID) **/
                        if (attCommonWordBookList != null && attCommonWordBookList.size() > 0) {
                            for (AttCommonWordBook attCommonWordBook : attCommonWordBookList) {
                                if (attCommonWordBook.getName().equals(originBigDataArray[9])) {

                                    attOriginBigData.setOutWorkTypeId(attCommonWordBook.getId());
                                }

                            }
                        }
                        attOriginBigData.setOutWorkType(originBigDataArray[9]);
                    }

                    /** 创建人 **/
                    attOriginBigData.setCreatedBy(userId);
                    /** 创建时间 **/
                    attOriginBigData.setCreatedDate(new Date());
                    /** 最后修改人  **/
                    attOriginBigData.setLastUpdatedBy(userId);
                    /** 最后修改时间 **/
                    attOriginBigData.setLastUpdatedDate(new Date());
                    /**是否删除**/
                    attOriginBigData.setIsDelete(0);

                    list.add(attOriginBigData);

                }

            }

        } catch (IOException e) {
            e.printStackTrace();
        }

        int result[] = dao.batchInsert(AttOriginBigData.class, list);

        for (int i : result) {
            if (i == 0) {
                flag = false;
            }
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

    return flag;
}

public List<Map<String, Object>> getattCommonWordBookList(){
    if(dao==null){
        dao = Dao.get();
    }
    return dao.queryForListMap("query.att_common_wordbook.code", Params.of("code", "ORIGIN_BIG_DATA_TYPE"));

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值