package com.engine.recruit.service.impl; import cn.hutool.core.convert.Convert; import com.engine.core.impl.Service; import com.engine.recruit.conn.ApplicantCommonInfo; import com.engine.recruit.conn.CheckRepeatResume; import com.engine.recruit.conn.RecruitDataMap; import com.engine.recruit.conn.RecruitRecordSet; import com.engine.recruit.entity.record.ApplicantRecordPo; import com.engine.recruit.enums.ApplicantOperateEnum; import com.engine.recruit.enums.ApplicationStatusEnum; import com.engine.recruit.enums.RecordOperateEnum; import com.engine.recruit.exception.CustomizeRunTimeException; import com.engine.recruit.service.ApplicantResumeService; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import weaver.common.DateUtil; import weaver.conn.RecordSet; import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil; import weaver.formmode.setup.ModeRightInfo; import weaver.general.Util; import weaver.hrm.resource.ResourceComInfo; import java.util.*; /** * @author:dxfeng * @createTime: 2023/09/20 * @version: 1.0 */ public class ApplicantResumeServiceImpl extends Service implements ApplicantResumeService { @Override public Map getApplicantsName(String ids) { Map returnMap = new HashMap<>(1); RecordSet rs = new RecordSet(); String[] split = ids.split(","); List> list = new ArrayList<>(); for (String id : split) { rs.executeQuery("select xm from uf_jcl_yppc where id = ?", id); if (rs.next()) { Map rowMap = new HashMap<>(); rowMap.put("id", id); rowMap.put("name", rs.getString("xm")); list.add(rowMap); } } returnMap.put("rows", list); return returnMap; } @Override public Map getInterviewInfoById(String id) { Map returnMap = new HashMap<>(16); String sql = "select a.ypz,b.xm,a.ypzw,b.tdsj,b.sjhm,b.dzyx,a.msfs,a.mshj ,a.msc,a.msg ,a.ptmsg,a.msrq,a.msdd ,a.msfkr from uf_jcl_ms a inner join uf_jcl_yppc b on a.ypz = b.id where a.id = ?"; RecordSet rs = new RecordSet(); rs.executeQuery(sql, id); if (rs.next()) { // 应聘者 returnMap.put("ypz", createApplicantBrowserMap(rs.getString("ypz"), rs.getString("xm"))); // 应聘职位 returnMap.put("ypzw", createAppliedPositionBrowserMap(rs.getString("ypzw"))); // 投递时间 returnMap.put("tdsj", createApplicantBrowserMap(rs.getString("tdsj"))); // 手机号码 returnMap.put("sjhm", createApplicantBrowserMap(rs.getString("sjhm"))); // 电子邮箱 returnMap.put("dzyx", createApplicantBrowserMap(rs.getString("dzyx"))); // 面试方式 returnMap.put("msfs", createApplicantBrowserMap(rs.getString("msfs"))); // 面试环节 returnMap.put("mshj", createApplicantBrowserMap(rs.getString("mshj"))); // 面试轮次 returnMap.put("msc", createApplicantBrowserMap(rs.getString("msc"))); // 面试官 returnMap.put("msg", createResourceBrowserMap(rs.getString("msg"))); // 陪同面试官 returnMap.put("ptmsg", createResourceBrowserMap(rs.getString("ptmsg"))); // 面试日期 returnMap.put("msrq", createApplicantBrowserMap(rs.getString("msrq"))); // 面试地址 returnMap.put("msdd", createApplicantBrowserMap(rs.getString("msdd"))); } return returnMap; } @Override public Map getDisplayLayoutId(Map params) { Map returnMap = new HashMap<>(); String layoutId = Util.null2String(params.get("layoutid")); String modeId = Util.null2String(params.get("modeId")); returnMap.put("layoutId", layoutId); RecordSet rs = new RecordSet(); rs.executeQuery("select layoutname from modehtmllayout where modeid = ? and id = ?", modeId, layoutId); if (rs.next()) { String layoutName = rs.getString("layoutname"); // 获取相同名称的显示布局ID rs.executeQuery("select id from modehtmllayout where type = 0 and modeid = ? and layoutname =?", modeId, layoutName); if (rs.next()) { returnMap.put("layoutId", rs.getString("id")); } } return returnMap; } @Override public Map getTabCount(Map params) { Map returnMap = new HashMap<>(); String billId = Util.null2String(params.get("billid")); List countList = new ArrayList<>(); RecordSet rs = new RecordSet(); // 部门筛选反馈 rs.executeQuery("select count(id) as num from uf_jcl_bmsxfk where ypz = ?", billId); if (rs.next()) { countList.add(rs.getInt("num")); } // 笔试 rs.executeQuery("select count(id) as num from uf_jcl_bs where ypz = ?", billId); if (rs.next()) { countList.add(rs.getInt("num")); } // 面试 rs.executeQuery("select count(id) as num from uf_jcl_ms where ypz = ?", billId); if (rs.next()) { countList.add(rs.getInt("num")); } // 背调 rs.executeQuery("select count(id) as num from uf_jcl_bd where ypz = ?", billId); if (rs.next()) { countList.add(rs.getInt("num")); } // 薪酬谈判 rs.executeQuery("select count(id) as num from uf_jcl_xctp where ypz = ?", billId); if (rs.next()) { countList.add(rs.getInt("num")); } // 历史投递记录 rs.executeQuery("select xm,sjhm from uf_jcl_yppc where id = ?", billId); if (rs.next()) { rs.executeQuery("select count(id) as num from uf_jcl_yppc where xm=? and sjhm =?", rs.getString("xm"), rs.getString("sjhm")); if (rs.next()) { countList.add(rs.getInt("num")); } } else { countList.add(0); } returnMap.put("countList", countList); return returnMap; } @Override public Map updateApplicantsInfo(Map params) { Map returnMap = new HashMap<>(); String operateType = Util.null2String(params.get("operateType")); RecordSet rs = new RecordSet(); if (ApplicantOperateEnum.ELIMINATE.getOperateType().equals(operateType)) { // 淘汰 String ids = Util.null2String(params.get("ids")); rs.executeUpdate("update uf_jcl_yppc set zt = ? where id in (" + ids + ")", ApplicationStatusEnum.OBSOLETE.getValue()); // 插入应聘过程 String dateTime = DateUtil.getDateTime(); for (String s : ids.split(",")) { ApplicantRecordPo recordPo = ApplicantRecordPo.builder() .billId(s) .operateTime(dateTime) .user(user) .recordOperateType(RecordOperateEnum.ELIMINATE) .build(); recordPo.execute(); } returnMap.put("msg", "操作成功"); } else if (ApplicantOperateEnum.TRANSFER.getOperateType().equals(operateType)) { // 转移阶段 String dqypjd = Util.null2String(params.get("dqypjd")); String billid = Util.null2String(params.get("billid")); Map otherParam = new HashMap<>(); otherParam.put("sourceStep", ApplicantCommonInfo.getCurrentStep(billid).getDescription()); // 查询当前阶段的阶段类型 rs.executeQuery("select jdlx from uf_jcl_zpjdsz where id = ?", dqypjd); if (rs.next()) { String jdlx = rs.getString("jdlx"); rs.executeUpdate("update uf_jcl_yppc set zpjd = ?,dqypjd = ? where id = ?", dqypjd, jdlx, billid); returnMap.put("msg", "操作成功"); } else { throw new CustomizeRunTimeException("转移阶段失败"); } otherParam.put("targetStep", ApplicantCommonInfo.getCurrentStep(billid).getDescription()); // 插入应聘过程 ApplicantRecordPo recordPo = ApplicantRecordPo.builder() .billId(billid) .operateTime(DateUtil.getDateTime()) .user(user) .recordOperateType(RecordOperateEnum.TRANSFER_STAGE) .otherParam(otherParam) .build(); recordPo.execute(); } else if (ApplicantOperateEnum.ASSIGN.getOperateType().equals(operateType)) { // 分配职位 String billid = Util.null2String(params.get("billid")); String ypzw = Util.null2String(params.get("ypzw")); rs.executeUpdate("update uf_jcl_yppc set ypzw = ? where id = ?", ypzw, billid); returnMap.put("msg", "操作成功"); } else if (ApplicantOperateEnum.ARCHIVE.getOperateType().equals(operateType)) { // 归档人才库 String gdyy = Util.null2String(params.get("gdyy")); String gdxxyy = Util.null2String(params.get("gdxxyy")); String ids = Util.null2String(params.get("ids")); if (StringUtils.isNotBlank(ids)) { String[] split = ids.split(","); String dateTime = DateUtil.getDateTime(); for (String id : split) { rs.executeUpdate("update uf_jcl_yppc set gdyy = ?,gdxxyy = ? where id = ? ", gdyy, gdxxyy, id); // 建模推送建模 archiveTalentPool(id, false); // 更新应聘状态为已归档 rs.executeUpdate("update uf_jcl_yppc set zt = ? where id = ? ", ApplicationStatusEnum.ARCHIVED.getValue(), id); // 插入应聘过程 Map otherParam = new HashMap<>(); otherParam.put("gdyy", gdyy); otherParam.put("gdxxyy", gdxxyy); ApplicantRecordPo recordPo = ApplicantRecordPo.builder() .billId(id) .operateTime(dateTime) .user(user) .recordOperateType(RecordOperateEnum.ARCHIVE_TALENT_POOL) .otherParam(otherParam) .build(); recordPo.execute(); } } else { returnMap.put("msg", "请至少选择一条数据"); } } else if (ApplicantOperateEnum.REFERRAL.getOperateType().equals(operateType)) { // 转推其他职位 String sourceId = Util.null2String(params.get("sourceId")); String ypzw = Util.null2String(params.get("ypzw")); String zplc = null; rs.executeQuery("select zplc from uf_jcl_zp_zpzw where id = ?", ypzw); if (rs.next()) { zplc = rs.getString("zplc"); } rs.executeQuery("select * from uf_jcl_yppc where id = ?", sourceId); Map mainDataMap = RecruitRecordSet.getSingleRecordMap(rs); // 构建新数据 mainDataMap.put("ypzw", ypzw); mainDataMap.put("zplc", zplc); mainDataMap.put("zpjd", null); mainDataMap.put("dqypjd", null); mainDataMap.put("zt", ApplicationStatusEnum.CANDIDATE.getValue()); RecruitRecordSet.buildModeInsertFields(mainDataMap, user.getUID()); String uuid = UUID.randomUUID().toString(); mainDataMap.put("modeuuid", uuid); // 移除不需要插入的字段 mainDataMap.remove("id"); mainDataMap.remove("requestId"); mainDataMap.remove("form_biz_id"); // 插入数据 RecruitRecordSet.insertData(mainDataMap, "uf_jcl_yppc"); // 权限重构 rs.executeQuery("select id,formmodeid from uf_jcl_yppc where modeuuid='" + uuid + "'"); if (rs.next()) { //建模数据的id int targetId = Util.getIntValue(rs.getString("id")); int formModeId = Util.getIntValue(rs.getString("formmodeid")); ModeRightInfo modeRightInfo = new ModeRightInfo(); modeRightInfo.setNewRight(true); //新建的时候添加共享 modeRightInfo.editModeDataShare(user.getUID(), formModeId, targetId); // 复制明细表数据 rs.executeUpdate("insert into uf_jcl_yppc_dt1 (mainid,xxmc,xl,zy,kssj,jssj) select ?,xxmc,xl,zy,kssj,jssj from uf_jcl_yppc_dt1 where mainid = ?", targetId, sourceId); rs.executeUpdate("insert into uf_jcl_yppc_dt2 (mainid,gsmc,kssj,jssj,gw,sqyxk,lzyy,gzzz) select ?,gsmc,kssj,jssj,gw,sqyxk,lzyy,gzzz from uf_jcl_yppc_dt2 where mainid = ?", targetId, sourceId); rs.executeUpdate("insert into uf_jcl_yppc_dt3 (mainid,xmmc,kssj,jssj,drjs,xmms) select ?,xmmc,kssj,jssj,drjs,xmms from uf_jcl_yppc_dt3 where mainid = ?", targetId, sourceId); rs.executeUpdate("insert into uf_jcl_yppc_dt4 (mainid,yylx,zwcd) select ?,yylx,zwcd from uf_jcl_yppc_dt4 where mainid = ?", targetId, sourceId); } } return returnMap; } @Override public Map fullOriginalResumeId(Map params) { int imageFileId = Convert.toInt(params.get("imageFileId")); int resumeId = Convert.toInt(params.get("resumeId")); int secCategory = Convert.toInt(RecruitModeUtil.getRecruitPropValue("APPLICANTS_RESUMES_CATEGORY")); RecordSet rs = new RecordSet(); try { int docId = RecruitModeUtil.createDocId(secCategory, imageFileId, user); // TODO 更新原始简历信息,设置应聘状态未待分配 rs.executeUpdate("update uf_jcl_jlzjb set jlfj=?,ocr=1 where id = ?", docId, resumeId); } catch (Exception e) { throw new RuntimeException(e); } return new HashMap<>(); } @Override public Map checkRepeatResume(Map param) { String name = Util.null2String(param.get("xm")); String mobile = Util.null2String(param.get("sjhm")); String positionId = Util.null2String(param.get("ypzw")); Map returnMap = new HashMap<>(); // 判断是否黑名单 boolean joinBlackList = CheckRepeatResume.joinBlackList(name, mobile); if (joinBlackList) { throw new CustomizeRunTimeException("保存失败,当前录入应聘者为黑名单人员"); } List> repeatPositionResumeList = CheckRepeatResume.getRepeatPositionResumeList(name, mobile, positionId); if (CollectionUtils.isNotEmpty(repeatPositionResumeList)) { throw new CustomizeRunTimeException("保存失败,该人员已有相同的应聘中的职位"); } return returnMap; } /** * 构建普通数据格式 * * @param value * @return */ private Map createApplicantBrowserMap(String value) { if (StringUtils.isBlank(value)) { return null; } Map browserMap = new HashMap<>(1); browserMap.put("value", value); return browserMap; } /** * 构建应聘者浏览按钮值 * * @param id * @param name * @return */ private Map createApplicantBrowserMap(String id, String name) { Map browserMap = new HashMap<>(2); if (StringUtils.isBlank(id)) { return browserMap; } browserMap.put("value", id); List> objList = new ArrayList<>(); Map obj = new HashMap<>(2); obj.put("id", id); obj.put("name", name); objList.add(obj); browserMap.put("specialobj", objList); return browserMap; } /** * 构建应聘职位浏览按钮 * * @param id * @return */ private Map createAppliedPositionBrowserMap(String id) { Map browserMap = new HashMap<>(2); if (StringUtils.isBlank(id)) { return browserMap; } browserMap.put("value", id); RecordSet rs = new RecordSet(); rs.executeQuery("select zpzwmc from uf_jcl_zp_zpzw where id = ?", id); if (rs.next()) { List> objList = new ArrayList<>(); Map obj = new HashMap<>(2); obj.put("id", id); obj.put("name", rs.getString("zpzwmc")); objList.add(obj); browserMap.put("specialobj", objList); } return browserMap; } /** * 构建人员浏览按钮值 * * @param ids * @return */ private Map createResourceBrowserMap(String ids) { Map browserMap = new HashMap<>(2); if (StringUtils.isBlank(ids)) { return browserMap; } browserMap.put("value", ids); List> objList = new ArrayList<>(); String[] split = ids.split(","); try { ResourceComInfo resourceComInfo = new ResourceComInfo(); for (String s : split) { Map obj = new HashMap<>(2); obj.put("id", s); obj.put("name", resourceComInfo.getLastname(s)); objList.add(obj); } } catch (Exception e) { throw new RuntimeException(e); } browserMap.put("specialobj", objList); return browserMap; } /** * 归档人才库 * * @param applicantId 应聘者ID * @param joinBlacklist 是否加入黑名单 */ public void archiveTalentPool(String applicantId, boolean joinBlacklist) { RecordSet rs = new RecordSet(); String name = ""; String mobile = ""; String talentPoolId = ""; rs.executeQuery("select xm,sjhm from uf_jcl_yppc where id = ?", applicantId); if (rs.next()) { name = rs.getString("xm"); mobile = rs.getString("sjhm"); } rs.executeQuery("select id from uf_jcl_rck where xm = ? and sjhm = ?", name, mobile); if (rs.next()) { talentPoolId = rs.getString("id"); } // 推送建模主表数据 Map dataMap = new RecruitDataMap<>(); String uuid = UUID.randomUUID().toString(); dataMap.put("modeuuid", uuid); int formModeId = -1; rs.executeQuery("select id from modeinfo where formid =( select id from workflow_bill where tablename = 'uf_jcl_rck' )"); if (rs.next()) { formModeId = rs.getInt("id"); } dataMap.put("formmodeid", formModeId); // 构建建模表基本数据 RecruitRecordSet.buildModeInsertFields(dataMap, user.getUID()); rs.executeQuery("select * from uf_jcl_yppc where id = ?", applicantId); if (rs.next()) { dataMap.put("sfz", RecruitModeUtil.parseBlankToNull(rs.getString("sfz"))); dataMap.put("jlzp", RecruitModeUtil.parseBlankToNull(rs.getString("jlzp"))); dataMap.put("zhypzw", RecruitModeUtil.parseBlankToNull(rs.getString("ypzw"))); dataMap.put("ysjl", RecruitModeUtil.parseBlankToNull(rs.getString("ysjl"))); dataMap.put("jlly", RecruitModeUtil.parseBlankToNull(rs.getString("jlly"))); dataMap.put("xm", RecruitModeUtil.parseBlankToNull(rs.getString("xm"))); dataMap.put("xb", RecruitModeUtil.parseBlankToNull(rs.getString("xb"))); dataMap.put("sjhm", RecruitModeUtil.parseBlankToNull(rs.getString("sjhm"))); dataMap.put("dzyx", RecruitModeUtil.parseBlankToNull(rs.getString("dzyx"))); dataMap.put("csrq", RecruitModeUtil.parseBlankToNull(rs.getString("csrq"))); dataMap.put("nl", RecruitModeUtil.parseBlankToNull(rs.getString("nl"))); dataMap.put("zgxl", RecruitModeUtil.parseBlankToNull(rs.getString("zgxl"))); dataMap.put("zgxw", RecruitModeUtil.parseBlankToNull(rs.getString("zgxw"))); dataMap.put("byyx", RecruitModeUtil.parseBlankToNull(rs.getString("byyx"))); dataMap.put("zy", RecruitModeUtil.parseBlankToNull(rs.getString("zy"))); dataMap.put("hyzk", RecruitModeUtil.parseBlankToNull(rs.getString("hyzk"))); dataMap.put("gzjy", RecruitModeUtil.parseBlankToNull(rs.getString("gzjy"))); dataMap.put("zzzt", RecruitModeUtil.parseBlankToNull(rs.getString("zzzt"))); dataMap.put("dqszd", RecruitModeUtil.parseBlankToNull(rs.getString("dqszd"))); dataMap.put("zhtdsj", RecruitModeUtil.parseBlankToNull(rs.getString("tdsj"))); dataMap.put("cjr", RecruitModeUtil.parseBlankToNull(rs.getString("cjr"))); dataMap.put("zwpj", RecruitModeUtil.parseBlankToNull(rs.getString("zwpj"))); dataMap.put("mz", RecruitModeUtil.parseBlankToNull(rs.getString("mz"))); dataMap.put("jg", RecruitModeUtil.parseBlankToNull(rs.getString("jg"))); dataMap.put("zzmm", RecruitModeUtil.parseBlankToNull(rs.getString("zzmm"))); dataMap.put("sgcm", RecruitModeUtil.parseBlankToNull(rs.getString("sgcm"))); dataMap.put("tzkg", RecruitModeUtil.parseBlankToNull(rs.getString("tzkg"))); // 归档阶段 dataMap.put("gdjd", RecruitModeUtil.parseBlankToNull(rs.getString("dqypjd"))); dataMap.put("gdyy", RecruitModeUtil.parseBlankToNull(rs.getString("gdyy"))); dataMap.put("gdxxyy", RecruitModeUtil.parseBlankToNull(rs.getString("gdxxyy"))); } // 历史投递次数 rs.executeQuery("select count(id) as num from uf_jcl_yppc where xm=? and sjhm =?", rs.getString("xm"), rs.getString("sjhm")); if (rs.next()) { dataMap.put("lstdcs", rs.getInt("num")); } // 是否加入黑名单 if (joinBlacklist) { dataMap.put("sfjrhmd", 0); // 归档原因黑名单 dataMap.put("gdyy", 16); } else { dataMap.put("sfjrhmd", 1); } RecruitRecordSet.insertData(dataMap, "uf_jcl_rck"); refreshRight(uuid, formModeId, applicantId); // 删除人才库原来的数据 rs.executeUpdate("delete from uf_jcl_rck where id = ? ", talentPoolId); rs.executeUpdate("delete from uf_jcl_rck_dt1 where mainid = ? ", talentPoolId); rs.executeUpdate("delete from uf_jcl_rck_dt2 where mainid = ? ", talentPoolId); rs.executeUpdate("delete from uf_jcl_rck_dt3 where mainid = ? ", talentPoolId); rs.executeUpdate("delete from uf_jcl_rck_dt4 where mainid = ? ", talentPoolId); } /** * 权限重构 * * @param uuid UUID * @param formModeId 建模ID * @param applicantId 应聘者ID */ private void refreshRight(String uuid, int formModeId, String applicantId) { RecordSet rs = new RecordSet(); rs.executeQuery("select id from uf_jcl_rck where modeuuid='" + uuid + "'"); if (rs.next()) { //建模数据的id int bid = Util.getIntValue(rs.getString("id")); ModeRightInfo modeRightInfo = new ModeRightInfo(); modeRightInfo.setNewRight(true); //新建的时候添加共享 modeRightInfo.editModeDataShare(user.getUID(), formModeId, bid); // 插入明细表数据 rs.executeQuery("select * from uf_jcl_yppc_dt1 where mainid = ? ", applicantId); List> insertList = new ArrayList<>(); while (rs.next()) { List paramList = new ArrayList<>(); // mainid paramList.add(bid); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("xxmc"))); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("xl"))); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("zy"))); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("kssj"))); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("jssj"))); insertList.add(paramList); } for (List list : insertList) { rs.executeUpdate("insert into uf_jcl_rck_dt1 (mainid, xxmc, xl, zy, kssj, jssj) values (?, ?, ?, ?, ?, ?)", list); } rs.executeQuery("select * from uf_jcl_yppc_dt2 where mainid = ? ", applicantId); insertList = new ArrayList<>(); while (rs.next()) { List paramList = new ArrayList<>(); // mainid paramList.add(bid); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("gsmc"))); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("kssj"))); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("jssj"))); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("gw"))); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("gzzz"))); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("sqyxk"))); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("lzyy"))); insertList.add(paramList); } for (List list : insertList) { rs.executeUpdate("insert into uf_jcl_rck_dt2 (mainid, gsmc, kssj, jssj, gw, gzzz, sqyxk, lzyy) values (?, ?, ?, ?, ?, ?, ?, ?)", list); } rs.executeQuery("select * from uf_jcl_yppc_dt3 where mainid = ? ", applicantId); insertList = new ArrayList<>(); while (rs.next()) { List paramList = new ArrayList<>(); // mainid paramList.add(bid); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("xmmc"))); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("kssj"))); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("jssj"))); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("drjs"))); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("xmms"))); insertList.add(paramList); } for (List list : insertList) { rs.executeUpdate("insert into uf_jcl_rck_dt3 (mainid, xmmc, kssj, jssj, drjs, xmms) values (?, ?, ?, ?, ?, ?)", list); } rs.executeQuery("select * from uf_jcl_yppc_dt4 where mainid = ? ", applicantId); insertList = new ArrayList<>(); while (rs.next()) { List paramList = new ArrayList<>(); // mainid paramList.add(bid); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("yylx"))); paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("zwcd"))); insertList.add(paramList); } for (List list : insertList) { rs.executeUpdate("insert into uf_jcl_rck_dt4 (mainid, yylx, zwcd) values (?, ?, ?)", list); } } } }