weaver-hrm-recruit/src/weaver/formmode/recruit/modeexpand/written/BatchAddWrittenResultModeEx...

218 lines
8.8 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package weaver.formmode.recruit.modeexpand.written;
import com.engine.recruit.conn.RecruitRecordSet;
import com.engine.recruit.util.RecruitMessageUtils;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import weaver.common.DateUtil;
import weaver.conn.RecordSet;
import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew;
import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.soa.workflow.request.*;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* <p>聚才林招聘</p>
* 批量安排笔试推笔试结果
*
* @author:dxfeng
* @createTime: 2023/09/21
* @version: 1.0
*/
public class BatchAddWrittenResultModeExpand extends AbstractModeExpandJavaCodeNew {
private static final String MODE_TABLE_NAME = "uf_jcl_bs";
private static final RecordSet recordSet = new RecordSet();
@Override
public Map<String, String> doModeExpand(Map<String, Object> param) {
Map<String, String> result = new HashMap<>();
try {
RequestInfo requestInfo = (RequestInfo) param.get("RequestInfo");
if (requestInfo != null) {
int formModeId = -1;
RecordSet rs = new RecordSet();
rs.executeQuery("select id from modeinfo where formid =( select id from workflow_bill where tablename = ? )", MODE_TABLE_NAME);
if (rs.next()) {
formModeId = rs.getInt("id");
}
MainTableInfo mainTableInfo = requestInfo.getMainTableInfo();
Property[] properties = mainTableInfo.getProperty();
Map<String, Object> mainDataMap = new HashMap<>();
for (Property property : properties) {
mainDataMap.put(property.getName(), property.getValue());
}
// 填充建模数据基本信息
User user = (User) param.get("user");
mainDataMap.put("formmodeid", formModeId);
mainDataMap.put("modedatacreater", user.getUID());
String dateTime = DateUtil.getFullDate();
String[] split = dateTime.split(" ");
mainDataMap.put("modedatacreatedate", split[0]);
mainDataMap.put("modedatacreatetime", split[1]);
mainDataMap.put("modedatamodifier", null);
mainDataMap.put("modedatamodifydatetime", null);
mainDataMap.put("modedatacreatertype", "0");
mainDataMap.put("bsapid", requestInfo.getRequestid());
List<Map<String, Object>> detailMapList = new ArrayList<>();
DetailTableInfo detailTableInfo = requestInfo.getDetailTableInfo();
DetailTable detailTable = detailTableInfo.getDetailTable(0);
Row[] rows = detailTable.getRow();
for (Row row : rows) {
Map<String, Object> detailDataMap = new HashMap<>(mainDataMap);
Cell[] cells = row.getCell();
for (Cell cell : cells) {
detailDataMap.put(cell.getName(), cell.getValue());
}
detailMapList.add(detailDataMap);
}
for (Map<String, Object> detailDataMap : detailMapList) {
List<List<Object>> paramList = new ArrayList<>();
buildParamList(detailDataMap, paramList);
if (CollectionUtils.isNotEmpty(paramList)) {
String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreatertype, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, pcid, ypz, ypzw, bsmc, bssj, bssm, tdsj, bsapid, sjh, yx ) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
for (List<Object> objects : paramList) {
String uuid = UUID.randomUUID().toString();
objects.add(0, uuid);
rs.executeUpdate(insertSql, objects);
RecruitRecordSet.refreshRight(uuid, MODE_TABLE_NAME, formModeId, user.getUID());
}
}
}
// 发送信息
int billId = Util.getIntValue(requestInfo.getRequestid());
sendMessage(billId);
}
} catch (Exception e) {
new BaseBean().writeLog(e);
result.put("errmsg", "自定义出错信息");
result.put("flag", "false");
}
return result;
}
/**
* 构建批量插入数据集合
*
* @param map 表单参数
* @param paramList 待插入数据集合
*/
private void buildParamList(Map<String, Object> map, List<List<Object>> paramList) {
List<Object> param = new ArrayList<>();
// 填充建模表相关字段
param.add(map.get("modedatacreatertype"));
param.add(map.get("formmodeid"));
param.add(map.get("modedatacreater"));
param.add(map.get("modedatacreatedate"));
param.add(map.get("modedatacreatetime"));
param.add(map.get("modedatamodifier"));
param.add(map.get("modedatamodifydatetime"));
// 表单字段
// 批次ID
param.add(map.get("pcid"));
// 应聘者
param.add(map.get("ypz"));
// 应聘职位
param.add(map.get("ypzw"));
//笔试名称
param.add(map.get("bsmc"));
// 笔试时间
param.add(map.get("bssj"));
// 笔试说明
param.add(map.get("bssm"));
param.add(map.get("tdsj"));
param.add(map.get("bsapid"));
param.add(map.get("sjh"));
param.add(map.get("yx"));
paramList.add(param);
}
private void sendMessage(int billId) {
String querySql = "select b.ypz,b.ypzw,b.sjh,b.yx,a.yjtzmb ,a.bssj ,a.bsdd,a.yjnr,a.tzypz from uf_jcl_apbs a \n" +
"left join uf_jcl_apbs_dt1 b on a.id = b.mainid where a.id = ?";
recordSet.executeQuery(querySql, billId);
String yjnr;
String tzypz = "";
List<WrittenPerson> writtenPersonList = new ArrayList<>();
while (recordSet.next()) {
yjnr = recordSet.getString("yjnr");
tzypz = recordSet.getString("tzypz");
Pattern patten = Pattern.compile("\\$(.*?)\\$");//编译正则表达式
Matcher matcher = patten.matcher(yjnr);// 指定要匹配的字符串
StringBuffer sb = new StringBuffer();
while (matcher.find()) { //此处find每次被调用后会偏移到下一个匹配
matcher.appendReplacement(sb, Util.null2String(recordSet.getString(matcher.group().replace("$", ""))));
}
matcher.appendTail(sb);
writtenPersonList.add(WrittenPerson.builder()
.name(Util.null2String(recordSet.getString("ypz")))
.jobName(Util.null2String(recordSet.getString("ypzw")))
.time(Util.null2String(recordSet.getString("bssj")))
.phone(Util.null2String(recordSet.getString("sjh")))
.email(Util.null2String(recordSet.getString("yx")))
.address(Util.null2String(recordSet.getString("bsdd")))
.content(Util.null2String(sb)).build());
}
for (WrittenPerson writtenPerson : writtenPersonList) {
Map<String, Object> params = new HashMap<>();
String[] strings = tzypz.split(",");
for (String s : strings) {
switch (s) {
case "0":
// 邮件
params.put("sendTo", writtenPerson.getEmail());
params.put("emailTitle", RecruitModeUtil.getEmailTitle(s));
params.put("emailContent", writtenPerson.getContent());
RecruitMessageUtils.SendEmail(params);
break;
case "1":
// 短信
params.put("receiver", writtenPerson.getPhone());
params.put("content", writtenPerson.getContent());
RecruitMessageUtils.sendSMS(params);
break;
default:
break;
}
}
}
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
private static class WrittenPerson {
String name;
String jobName;
String time;
String address;
String phone;
String email;
String content;
}
}