weaver-hrm-recruit/src/com/engine/recruit/service/impl/InductionManageServiceImpl....

193 lines
7.5 KiB
Java
Raw Normal View History

2023-10-24 15:26:07 +08:00
package com.engine.recruit.service.impl;
import com.engine.core.impl.Service;
import com.engine.recruit.conn.RecruitDataMap;
import com.engine.recruit.conn.RecruitRecordSet;
import com.engine.recruit.enums.InfoCollectEnum;
import com.engine.recruit.enums.PositionOperateEnum;
2023-10-24 17:41:46 +08:00
import com.engine.recruit.exception.CustomizeRunTimeException;
2023-10-24 15:26:07 +08:00
import com.engine.recruit.service.InductionManageService;
import com.engine.recruit.util.RecruitMessageUtils;
import org.apache.commons.lang3.StringUtils;
2023-10-30 18:33:14 +08:00
import weaver.common.DateUtil;
2023-10-24 15:26:07 +08:00
import weaver.conn.RecordSet;
import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil;
import weaver.general.Util;
import java.util.*;
/**
* @author:dxfeng
* @createTime: 2023/10/23
* @version: 1.0
*/
public class InductionManageServiceImpl extends Service implements InductionManageService {
2023-10-31 14:34:05 +08:00
private static final String MOBILE_APPID_COLLECT = RecruitModeUtil.getRecruitPropValue("MOBILE_APPID_COLLECT");
2023-10-24 15:26:07 +08:00
@Override
public Map<String, Object> updateInductionManageInfo(Map<String, Object> param) {
String operateType = Util.null2String(param.get("operateType"));
if (PositionOperateEnum.PREPARE.getOperateType().equals(operateType)) {
// 发起入职准备
// 反填流程信息到建模表
}
return null;
}
@Override
public Map<String, Object> sendCollectInfo(Map<String, Object> param) {
String ids = Util.null2String(param.get("ids"));
String[] split = ids.split(",");
2023-10-31 14:34:05 +08:00
if (StringUtils.isBlank(MOBILE_APPID_COLLECT)) {
throw new CustomizeRunTimeException("未获取到对应移动建模ID请检查配置文件");
}
2023-10-24 15:26:07 +08:00
RecordSet rs = new RecordSet();
2023-10-31 14:34:05 +08:00
rs.executeQuery("select noLoginUser from mobileappbaseinfo where id = ?", MOBILE_APPID_COLLECT);
int creator = -1;
if (rs.next()) {
creator = rs.getInt("noLoginUser");
}
if (-1 == creator) {
throw new CustomizeRunTimeException("未配置免登陆访问用户,经检查移动建模应用配置");
}
2023-10-24 15:26:07 +08:00
for (String billId : split) {
2023-10-24 17:41:46 +08:00
// 判断是否已发送信息采集,已发送的不重复发送
rs.executeQuery("select a.id from uf_jcl_xxcj a inner join uf_jcl_rzgl b on a.xm = b.xm and a.sjh = b.sjhm where b.id = ? ", billId);
if (rs.next()) {
if (StringUtils.isNotBlank(rs.getString("id"))) {
continue;
}
}
2023-10-24 15:26:07 +08:00
// 根据入职管理信息完善信息采集表单
Map<String, Object> 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_xxcj' )");
if (rs.next()) {
formModeId = rs.getInt("id");
}
dataMap.put("formmodeid", formModeId);
// 构建建模表基本数据
2023-10-31 14:34:05 +08:00
RecruitRecordSet.buildModeBaseFields(dataMap, creator);
2023-10-24 15:26:07 +08:00
rs.executeQuery("select * from uf_jcl_rzgl where id = ? ", billId);
if (rs.next()) {
dataMap.put("xm", RecruitModeUtil.parseBlankToNull(rs.getString("xm")));
dataMap.put("sfzh", RecruitModeUtil.parseBlankToNull(rs.getString("sfzh")));
dataMap.put("nl", RecruitModeUtil.parseBlankToNull(rs.getString("nl")));
dataMap.put("xb", RecruitModeUtil.parseBlankToNull(rs.getString("xb")));
dataMap.put("sjh", RecruitModeUtil.parseBlankToNull(rs.getString("sjhm")));
dataMap.put("yx", RecruitModeUtil.parseBlankToNull(rs.getString("dzyx")));
}
// 生成登录密码
String password = generatePassword();
dataMap.put("mm", password);
2023-10-31 14:34:05 +08:00
dataMap.put("modedatastatus", "1");
2023-10-24 15:26:07 +08:00
// 发送短信
String mobile = Util.null2String(dataMap.get("sjh"));
String messageContent = RecruitModeUtil.getRecruitPropValue("COLLECT_MESSAGE_CONTENT");
if (StringUtils.isBlank(messageContent)) {
2023-10-24 17:41:46 +08:00
throw new CustomizeRunTimeException("未获取到短信内容,请检查配置");
2023-10-24 15:26:07 +08:00
} else {
RecruitMessageUtils.sendSMS(mobile, messageContent);
}
// 插入数据
RecruitRecordSet.insertData(dataMap, "uf_jcl_xxcj");
2023-10-31 14:34:05 +08:00
int id = RecruitRecordSet.refreshRight(uuid, "uf_jcl_xxcj", formModeId, creator);
2023-10-24 15:26:07 +08:00
// 更新状态为已发送,反填信息采集ID
2023-10-24 17:41:46 +08:00
rs.executeUpdate("update uf_jcl_rzgl set xxcj = ? ,xxcjid = ? where id = ? ", InfoCollectEnum.HAS_SENT.getId(), id, billId);
2023-10-24 15:26:07 +08:00
}
return null;
}
@Override
public Map<String, Object> checkLoginInfo(Map<String, Object> param) {
2023-10-24 17:41:46 +08:00
RecordSet rs = new RecordSet();
2023-10-26 16:04:05 +08:00
HashMap<String, Object> map = new HashMap<>(2);
2023-10-24 17:41:46 +08:00
String mobile = Util.null2String(param.get("mobile"));
String pwd = Util.null2String(param.get("pwd"));
2023-10-30 18:33:14 +08:00
// 校验当前链接的有效期
rs.executeQuery("select * from uf_jcl_rzgl where sjhm = ? ", mobile);
if (rs.next()) {
// 当前关联入职已取消入职/已入职;点击提示当前链接已失效,且不可操作
String entryStatus = rs.getString("rzzt");
if ("1".equals(entryStatus) || "2".equals(entryStatus)) {
throw new CustomizeRunTimeException("当前链接已失效");
}
// 当前信息采集链接的地址默认有效期为发出日期~预计入职日期
String date = rs.getString("yjrzrq");
int compDate = DateUtil.compDate(DateUtil.getCurrentDate(), date);
if (compDate < 0) {
throw new CustomizeRunTimeException("当前链接已失效");
}
2023-10-26 16:04:05 +08:00
}
rs.executeQuery("select id from uf_jcl_xxcj where sjh = ? and mm = ?", mobile, pwd);
if (rs.next()) {
map.put("id", Util.getIntValue(rs.getString("id")));
2023-10-30 18:33:14 +08:00
} else {
throw new CustomizeRunTimeException("手机号或密码错误");
2023-10-26 16:04:05 +08:00
}
return map;
}
@Override
public Map<String, Object> infoSubmit(String id) {
2023-10-30 18:33:14 +08:00
RecordSet rs = new RecordSet();
rs.executeQuery("update uf_jcl_rzgl set xxcj = 2 where id = ?", id);
2023-10-26 16:04:05 +08:00
return null;
2023-10-24 15:26:07 +08:00
}
/**
* 随机八位不重复登录密码含数字字母
*
* @return 登录密码
*/
private String generatePassword() {
String letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
String numbers = "0123456789";
String characters = letters + numbers;
List<Character> randomChars = new ArrayList<>();
Random random = new Random();
// 随机取得一个字母
randomChars.add(letters.charAt(random.nextInt(letters.length())));
// 随机取得一个数字
randomChars.add(numbers.charAt(random.nextInt(numbers.length())));
// 随机取得六个字符(字母或数字)
for (int i = 0; i < 6; i++) {
randomChars.add(characters.charAt(random.nextInt(characters.length())));
}
// 打乱字符的顺序
Collections.shuffle(randomChars);
// 将字符列表转为字符串
StringBuilder sb = new StringBuilder();
for (char c : randomChars) {
sb.append(c);
}
return sb.toString();
}
}