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

193 lines
7.5 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 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;
import com.engine.recruit.exception.CustomizeRunTimeException;
import com.engine.recruit.service.InductionManageService;
import com.engine.recruit.util.RecruitMessageUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.common.DateUtil;
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 {
private static final String MOBILE_APPID_COLLECT = RecruitModeUtil.getRecruitPropValue("MOBILE_APPID_COLLECT");
@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(",");
if (StringUtils.isBlank(MOBILE_APPID_COLLECT)) {
throw new CustomizeRunTimeException("未获取到对应移动建模ID请检查配置文件");
}
RecordSet rs = new RecordSet();
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("未配置免登陆访问用户,经检查移动建模应用配置");
}
for (String billId : split) {
// 判断是否已发送信息采集,已发送的不重复发送
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;
}
}
// 根据入职管理信息完善信息采集表单
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);
// 构建建模表基本数据
RecruitRecordSet.buildModeBaseFields(dataMap, creator);
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);
dataMap.put("modedatastatus", "1");
// 发送短信
String mobile = Util.null2String(dataMap.get("sjh"));
String messageContent = RecruitModeUtil.getRecruitPropValue("COLLECT_MESSAGE_CONTENT");
if (StringUtils.isBlank(messageContent)) {
throw new CustomizeRunTimeException("未获取到短信内容,请检查配置");
} else {
RecruitMessageUtils.sendSMS(mobile, messageContent);
}
// 插入数据
RecruitRecordSet.insertData(dataMap, "uf_jcl_xxcj");
int id = RecruitRecordSet.refreshRight(uuid, "uf_jcl_xxcj", formModeId, creator);
// 更新状态为已发送,反填信息采集ID
rs.executeUpdate("update uf_jcl_rzgl set xxcj = ? ,xxcjid = ? where id = ? ", InfoCollectEnum.HAS_SENT.getId(), id, billId);
}
return null;
}
@Override
public Map<String, Object> checkLoginInfo(Map<String, Object> param) {
RecordSet rs = new RecordSet();
HashMap<String, Object> map = new HashMap<>(2);
String mobile = Util.null2String(param.get("mobile"));
String pwd = Util.null2String(param.get("pwd"));
// 校验当前链接的有效期
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("当前链接已失效");
}
}
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")));
} else {
throw new CustomizeRunTimeException("手机号或密码错误");
}
return map;
}
@Override
public Map<String, Object> infoSubmit(String id) {
RecordSet rs = new RecordSet();
rs.executeQuery("update uf_jcl_rzgl set xxcj = 2 where id = ?", id);
return null;
}
/**
* 随机八位不重复登录密码,含数字、字母
*
* @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();
}
}