Commit 3c477552 authored by chenyuxi's avatar chenyuxi

feat: 瓜子相关接口提交

parent 08ca9876
......@@ -50,10 +50,8 @@ public class LGuaziOfferRecord extends BaseEntity {
/**
* 关联瓜子offerID
*/
@NotBlank(message = "关联瓜子offerID不能为空")
@Length(max = 32, message = "关联瓜子offerID不能超过32个字符")
@Schema(description = "关联瓜子offerID")
private String offerId;
private Integer offerId;
/**
* 操作内容
*/
......@@ -61,10 +59,12 @@ public class LGuaziOfferRecord extends BaseEntity {
@Schema(description = "操作内容")
private String content;
/**
* 记录来源(1:手动更新状态;2:编辑offer信息;3:发送Offer查阅短信;4:发送信息收集短信;5:(系统触发)收集短信发送成功;6:(系统触发)C端采集提交;7:(系统触发)档案审核通过;8:(系统触发)档案审核不通过;9:(系统触发)发起合同申请10:(系统触发)合同审核通过;11:(系统触发)合同归档;12:发送合同下载短信)
* 记录来源
* (1:手动更新状态;2:编辑offer信息;3:发送Offer查阅短信;4:发送信息收集短信;5:(系统触发)收集短信发送成功;6:(系统触发)C端采集提交;
* 7:档案审核;9:发起合同申请10:合同审核通过;11:合同归档;12:发送合同下载短信)
*/
@Length(max = 2, message = "记录来源(1:手动更新状态;2:编辑offer信息;3:发送Offer查阅短信;4:发送信息收集短信;5:(系统触发)收集短信发送成功;6:(系统触发)C端采集提交;7:(系统触发)档案审核通过;8:(系统触发)档案审核不通过;9:(系统触发)发起合同申请10:(系统触发)合同审核通过;11:(系统触发)合同归档;12:发送合同下载短信)不能超过2个字符")
@Schema(description = "记录来源(1:手动更新状态;2:编辑offer信息;3:发送Offer查阅短信;4:发送信息收集短信;5:(系统触发)收集短信发送成功;6:(系统触发)C端采集提交;7:(系统触发)档案审核通过;8:(系统触发)档案审核不通过;9:(系统触发)发起合同申请10:(系统触发)合同审核通过;11:(系统触发)合同归档;12:发送合同下载短信)")
@Length(max = 2, message = "记录来源不能超过2个字符")
@Schema(description = "记录来源(1:手动更新状态;2:编辑offer信息;3:发送Offer查阅短信;4:发送信息收集短信;5:(系统触发)收集短信发送成功;6:(系统触发)C端采集提交;7:档案审核通过;9:发起合同申请10:合同审核通过;11:合同归档;12:发送合同下载短信)")
private String recordFrom;
/**
* 删除标记
......
......@@ -19,6 +19,9 @@ package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.LGuaziOfferRecord;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* 瓜子offer操作日志
*
......@@ -28,4 +31,28 @@ import lombok.Data;
@Data
public class LGuaziOfferRecordVo extends LGuaziOfferRecord {
/**
* offerId集合
*/
private List<Integer> offerIds;
/**
* 发送短信结果:0成功,1失败
*/
private String sendSmsRes;
/**
* offer信息变更:
* key:变更字段中文名
* value:变更前后的值(数组0:变更前,1:变更后)
*/
private Map<String,List<String>> changeInfoMap;
/**
* 状态变更:
* 变更前后的名称(数组0:变更前,1:变更后)
*/
private List<String> changeStatusList;
}
......@@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.archives.entity.LGuaziOfferRecord;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.archives.vo.LGuaziOfferRecordVo;
/**
* 瓜子offer操作日志
......@@ -36,4 +37,26 @@ public interface LGuaziOfferRecordService extends IService<LGuaziOfferRecord> {
*/
IPage<LGuaziOfferRecord> getLGuaziOfferRecordPage(Page<LGuaziOfferRecord> page, LGuaziOfferRecord lGuaziOfferRecord);
/**
* 单个增加 操作日志
*
* @param lGuaziOfferRecordVo 瓜子offer操作日志包装类
* 传参:记录来源(recordFrom)
* 1:手动更新状态;2:编辑offer信息;3:发送Offer查阅短信;4:发送信息收集短信;
* 5:(系统触发)收集短信发送成功更新状态;6:(系统触发)C端采集提交;7:档案审核通过;8:档案审核不通过;
* 9:发起合同申请;10:合同审核通过;11:合同归档;12:发送合同下载短信)
*/
void saveRecordOne(LGuaziOfferRecordVo lGuaziOfferRecordVo);
/**
* 批量增加 操作日志
* 5:(系统触发)收集短信发送成功更新状态;
* 3:发送Offer查阅短信;
* 4:发送信息收集短信;
* 12:发送合同下载短信
* @param lGuaziOfferRecordVo 瓜子offer操作日志包装类
*/
void saveRecordBatch(LGuaziOfferRecordVo lGuaziOfferRecordVo);
}
......@@ -20,13 +20,23 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.archives.entity.LGuaziOfferRecord;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.LGuaziOfferRecordMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.LGuaziOfferRecordService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.LGuaziOfferRecordVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang.ArrayUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.text.MessageFormat;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 瓜子offer操作日志
*
......@@ -46,4 +56,151 @@ public class LGuaziOfferRecordServiceImpl extends ServiceImpl<LGuaziOfferRecordM
public IPage<LGuaziOfferRecord> getLGuaziOfferRecordPage(Page<LGuaziOfferRecord> page, LGuaziOfferRecord lGuaziOfferRecord){
return baseMapper.getLGuaziOfferRecordPage(page,lGuaziOfferRecord);
}
/**
* 单个增加 操作日志
*
* @param lGuaziOfferRecordVo 瓜子offer操作日志包装类
*/
@Override
public void saveRecordOne(LGuaziOfferRecordVo lGuaziOfferRecordVo) {
if(Common.isNotNull(lGuaziOfferRecordVo.getOfferId())){
// 生成操作内容
handleContent(lGuaziOfferRecordVo);
lGuaziOfferRecordVo.setCreateTime(LocalDateTime.now());
this.save(lGuaziOfferRecordVo);
}
}
/**
* 批量增加 操作日志
* 3:发送Offer查阅短信;
* 4:发送信息收集短信;
* 12:发送合同下载短信
* @param lGuaziOfferRecordVo 瓜子offer操作日志包装类
*/
@Override
public void saveRecordBatch(LGuaziOfferRecordVo lGuaziOfferRecordVo) {
LGuaziOfferRecord saveData;
List<LGuaziOfferRecord> saveDataList = new ArrayList<>();
if (Common.isNotKong(lGuaziOfferRecordVo.getOfferIds())){
for(Integer offerId : lGuaziOfferRecordVo.getOfferIds()){
saveData = new LGuaziOfferRecord();
saveData.setOfferId(offerId);
saveData.setRecordFrom(lGuaziOfferRecordVo.getRecordFrom());
saveData.setCreateTime(LocalDateTime.now());
// 生成操作内容
handleContent(lGuaziOfferRecordVo);
saveData.setContent(lGuaziOfferRecordVo.getContent());
saveData.setCreateBy(lGuaziOfferRecordVo.getCreateBy());
saveData.setCreateName(lGuaziOfferRecordVo.getCreateName());
saveDataList.add(saveData);
}
this.saveBatch(saveDataList);
}
}
/**
* 生成操作内容
*
* @param lGuaziOfferRecordVo 瓜子offer操作日志包装类
*/
private void handleContent(LGuaziOfferRecordVo lGuaziOfferRecordVo){
String content = "";
String statusChangeTemplate = "状态更新:{0}更新为{1}";
String sendSmsTemplate = "发送{0},发送结果:{1}";
// String infoChangeTemplate = "信息变更:{0}:由{1}更新为{2}";
// 记录来源
// 1:手动更新状态;2:编辑offer信息;3:发送Offer查阅短信;4:发送信息收集短信;
// 5:(系统触发)收集短信发送成功更新状态;6:(系统触发)C端采集提交;7:档案审核
// 9:发起合同申请;10:合同审核通过;11:合同归档;12:发送合同下载短信)
// 属于状态更新
String[] statusChangeArr = {"1", "5", "6", "7", "9", "10", "11"};
// 属于发送短信
String[] sendSmsArr = {"3", "4", "12"};
if(ArrayUtils.contains(statusChangeArr, lGuaziOfferRecordVo.getRecordFrom())){
// 状态更新
List<String> changeStatusList = lGuaziOfferRecordVo.getChangeStatusList();
if(changeStatusList.size() != 2 ){
content = "状态更新";
} else {
String beforeStatus = this.getStatusLabel(changeStatusList.get(0));
String nowStatus = this.getStatusLabel(changeStatusList.get(1));
content = MessageFormat.format(statusChangeTemplate, beforeStatus, nowStatus);
}
} else if(ArrayUtils.contains(sendSmsArr, lGuaziOfferRecordVo.getRecordFrom())){
String sendFrom = "";
String sendSmsRes = "成功";
if(CommonConstants.ONE_STRING.equals(lGuaziOfferRecordVo.getSendSmsRes())){
sendSmsRes = "失败";
}
// 发送短信
switch (lGuaziOfferRecordVo.getRecordFrom()) {
case CommonConstants.THREE_STRING:
sendFrom = "发送Offer查阅短信";
break;
case CommonConstants.FOUR_STRING:
sendFrom = "发送信息收集短信";
break;
default:
sendFrom = "发送合同下载短信";
break;
}
content = MessageFormat.format(sendSmsTemplate, sendFrom, sendSmsRes);
} else {
// 编辑offer信息
content = "信息变更:";
if(Common.isNotNull(lGuaziOfferRecordVo.getChangeInfoMap())){
for (Map.Entry<String,List<String>> entry : lGuaziOfferRecordVo.getChangeInfoMap().entrySet()) {
String fieldZhName = entry.getKey();
List<String> changeArr = entry.getValue();
if(changeArr.size() != 2 ){
continue;
}
if(Common.isEmpty(this.getStatusLabel(changeArr.get(0)))
|| Common.isEmpty(this.getStatusLabel(changeArr.get(1)))){
continue;
}
String fieldChangeContent = fieldZhName+":由"+changeArr.get(0)+"更新为"+ changeArr.get(1)+";";
content = content + fieldChangeContent;
}
}
}
// 属于系统更新的,记录创建人为 0:系统触发
String[] sysCreateArr = {"5", "6"};
if (ArrayUtils.contains(sysCreateArr, lGuaziOfferRecordVo.getRecordFrom())) {
lGuaziOfferRecordVo.setCreateBy("0");
lGuaziOfferRecordVo.setCreateName("系统触发");
}
lGuaziOfferRecordVo.setContent(content);
}
private String getStatusLabel(String statusCode){
Map<String, String> statusMap = new HashMap<>();
// 3:待发送Offer,4:待接受Offer,5:拒绝Offer,7:接受offer,9:候选人填写信息,10:取消offer,
// 12:候选人信息审核,13:待签署,8:合同审核通过,99:已归档,98:信息待收集,97:候选人审核通过
statusMap.put("3","待发送Offer");
statusMap.put("4","待接受Offer");
statusMap.put("5","拒绝Offer");
statusMap.put("7","接受offer");
statusMap.put("9","候选人填写信息");
statusMap.put("10","取消offer");
statusMap.put("12","候选人信息审核");
statusMap.put("13","待签署");
statusMap.put("8","合同审核通过");
statusMap.put("99","已归档");
statusMap.put("98","信息待收集");
statusMap.put("97","候选人审核通过");
return statusMap.get(statusCode);
}
}
......@@ -117,9 +117,9 @@ public class TGzEmpInfoServiceImpl extends ServiceImpl<TGzEmpInfoMapper, TGzEmpI
if(Common.isEmpty(gzOfferInfo)){
return R.failed("数据异常,禁止操作");
}
if(!CommonConstants.NINE_STRING.equals(gzOfferInfo.getOfferStatus())){
return R.failed("当前Offer不符合档案采集状态,禁止操作");
}
// if(!CommonConstants.NINE_STRING.equals(gzOfferInfo.getOfferStatus())){
// return R.failed("当前Offer不符合档案采集状态,禁止操作");
// }
TGzEmpInfo gzEmpInfo = this.getOne(Wrappers.<TGzEmpInfo>query().lambda()
.eq(TGzEmpInfo::getOfferId, offerId)
......@@ -128,7 +128,7 @@ public class TGzEmpInfoServiceImpl extends ServiceImpl<TGzEmpInfoMapper, TGzEmpI
// 还未生成档案,取offer里的信息
if(Common.isEmpty(gzEmpInfo)){
gzEmpInfoVo.setBizId(gzEmpInfo.getBizId());
gzEmpInfoVo.setBizId(gzOfferInfo.getBizId());
gzEmpInfoVo.setOfferId(offerId);
gzEmpInfoVo.setName(gzOfferInfo.getName());
gzEmpInfoVo.setNameAc(gzOfferInfo.getNameAc());
......
......@@ -35,6 +35,7 @@ import com.yifu.cloud.plus.v1.yifu.archives.entity.TGzOfferInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TRegisteWarningEmployee;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.EmployeeRegistrationPreMapper;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TGzOfferInfoMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.LGuaziOfferRecordService;
import com.yifu.cloud.plus.v1.yifu.archives.service.TGzOfferInfoService;
import com.yifu.cloud.plus.v1.yifu.archives.service.TRegisteWarningEmployeeService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.*;
......@@ -45,10 +46,12 @@ import com.yifu.cloud.plus.v1.yifu.common.core.util.alisms.AliSmsResult;
import com.yifu.cloud.plus.v1.yifu.common.core.util.alisms.RegistParamVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.alisms.YiFuSmsUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.UpmsDaprUtils;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.ServletOutputStream;
......@@ -79,6 +82,11 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
private final EmployeeRegistrationPreMapper registrationPreMapper;
private final LGuaziOfferRecordService lGuaziOfferRecordService;
@Autowired
private UpmsDaprUtils upmsDaprUtils;
// 禁止手动变更的状态:3:待发送Offer,9:候选人填写信息,12:候选人信息审核,13:待签署,8:合同审核通过,99:已归档,97:候选人审核通过
private final String[] forbidStatusArr = {"3", "9", "12", "13", "8","99","97"};
......@@ -143,7 +151,29 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
tGzOfferInfo.setUpdateTime(LocalDateTime.now());
this.updateById(tGzOfferInfo);
// todo 记录offer操作日志
// 记录offer操作日志
LGuaziOfferRecordVo lGuaziOfferRecordVo = new LGuaziOfferRecordVo();
Map<String,List<String>> changeInfoMap = new HashMap<>();
if(!tGzOfferInfo.getPhone().equals(findInfo.getPhone())){
List<String> valueList = new ArrayList<>();
valueList.add(findInfo.getPhone());
valueList.add(tGzOfferInfo.getPhone());
changeInfoMap.put("个人手机号",valueList);
}
if(!tGzOfferInfo.getEmail().equals(findInfo.getEmail())){
List<String> valueList = new ArrayList<>();
valueList.add(findInfo.getEmail());
valueList.add(tGzOfferInfo.getEmail());
changeInfoMap.put("个人邮箱",valueList);
}
if(changeInfoMap.size() > 0){
lGuaziOfferRecordVo.setOfferId(tGzOfferInfo.getId());
lGuaziOfferRecordVo.setRecordFrom(CommonConstants.TWO_STRING);
lGuaziOfferRecordVo.setChangeInfoMap(changeInfoMap);
lGuaziOfferRecordVo.setCreateBy(user.getId());
lGuaziOfferRecordVo.setCreateName(user.getNickname());
lGuaziOfferRecordService.saveRecordOne(lGuaziOfferRecordVo);
}
return R.ok(CommonConstants.RESULT_DATA_SUCESS);
}
......@@ -196,7 +226,9 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
.set(TGzOfferInfo::getUpdateBy, user.getId());
this.update(null, updateOfferWrapper);
// todo 记录offer操作日志
// 记录状态变更的offer操作日志 记录来源: 手动更新状态
this.saveOfferStatusRecord(tGzOfferInfo.getId(),CommonConstants.ONE_STRING,
findInfo.getOfferStatus(),tGzOfferInfo.getOfferStatus(),user.getId(),user.getNickname());
return R.ok(CommonConstants.RESULT_DATA_SUCESS);
}
......@@ -232,13 +264,25 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
return R.failed("审核结果无效");
}
// todo 审核通过执行一下2个事件:
// 审核通过, 执行一下2个事件:
if("97".equals(tGzOfferInfo.getOfferStatus())){
// todo 1、生成人员档案信息、项目档案信息
// todo 2、检查 该项目该人员是否有在途或审核通过或已归档的状态为“可用”的合同,
// 获取瓜子和皖信的字典映射
// Map<String, Map<String,String>> relDictMap = new HashMap<>();
// R<Map<String, Map<String,String>>> relDictMapR = upmsDaprUtils.getRelValueMapByOutDictType();
// if (null != relDictMapR
// && relDictMapR.getCode() == CommonConstants.SUCCESS
// && Common.isNotNull(relDictMapR.getData())) {
// relDictMap = relDictMapR.getData();
// }
// 2、检查 该项目该人员是否有在途或审核通过或已归档的状态为“可用”的合同,
// 若有则根据当前状态更新Offer状态,合同未审核通过:存【13:待签署】;合同审核通过:存【8:合同审核通过】;合同已归档:存【99:已归档】,
// 存合同信息;
String changeStatus = this.checkSaveContract(findInfo.getNationalId());
tGzOfferInfo.setOfferStatus(changeStatus);
}
// 更新状态
LambdaUpdateWrapper<TGzOfferInfo> updateOfferWrapper = new LambdaUpdateWrapper<>();
......@@ -248,11 +292,27 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
.set(TGzOfferInfo::getUpdateBy, user.getId());
this.update(null, updateOfferWrapper);
// todo 记录offer操作日志
// 记录状态变更的offer操作日志 记录来源: 档案审核
this.saveOfferStatusRecord(findInfo.getId(),CommonConstants.SEVEN_STRING,
findInfo.getOfferStatus(),tGzOfferInfo.getOfferStatus(),user.getId(),user.getNickname());
return R.ok(CommonConstants.RESULT_DATA_SUCESS);
}
/**
* todo 检查 瓜子档案审核通过后,是否需要再生成合同信息
* 该项目该人员是否有在途或审核通过或已归档的状态为“可用”的合同,
* 若有则根据当前状态更新Offer状态,合同未审核通过:存【13:待签署】;合同审核通过:存【8:合同审核通过】;合同已归档:存【99:已归档】
* @param nationalId 人员身份证号
* @return String 后续offer要更新的状态
*/
private String checkSaveContract(String nationalId){
// 默认是审核通过
String changeStatus = "97";
return changeStatus;
}
/**
* 获取当前状态下,允许更新的状态列表
*
......@@ -362,6 +422,10 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
@Override
public R<String> sendOfferAlert(TGzOfferInfoVo tGzOfferInfo) {
YifuUser user = SecurityUtils.getUser();
if (user == null || Common.isEmpty(user.getId())) {
return R.failed(CommonConstants.PLEASE_LOG_IN);
}
//获取所有满足条件的未发送offer提醒的数据
if (Common.isNotNull(tGzOfferInfo)) {
tGzOfferInfo.setOfferStatus(CommonConstants.FOUR_STRING);
......@@ -372,6 +436,12 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
}
//获取短信待发放和信息待填写的数据
List<String> errorList = new ArrayList<>();
// 发送短信成功的offer集合
List<Integer> successOfferIds = new ArrayList<>();
// 发送短信失败的offer集合
List<Integer> errorOfferIds = new ArrayList<>();
for (TGzOfferInfoVo sendVo : offerList) {
List<RegistParamVo> params = new ArrayList<>();
List<String> phones = new ArrayList<>();
......@@ -400,15 +470,32 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
LambdaUpdateWrapper<TGzOfferInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(TGzOfferInfo::getId, sendVo.getId())
.eq(TGzOfferInfo::getOfferSendStatus, CommonConstants.ONE_STRING)
.set(TGzOfferInfo::getOfferSendStatus, CommonConstants.ZERO_STRING);
.set(TGzOfferInfo::getOfferSendStatus, CommonConstants.ZERO_STRING)
.set(TGzOfferInfo::getUpdateTime, LocalDateTime.now())
.set(TGzOfferInfo::getUpdateBy, user.getId());
// 执行更新操作
this.update(updateWrapper);
// 记录发送短信成功的offerId 到集合
successOfferIds.add(sendVo.getId());
} else {
smsEmployee.setMessage("瓜子发送提醒短信失败");
employeeService.updateById(smsEmployee);
errorList.add("瓜子发送提醒短信失败");
// 记录发送短信失败的offerId 到集合
errorOfferIds.add(sendVo.getId());
}
}
// 记录批量发送短信的offer操作日志。结果:0成功,1失败
if(Common.isNotNull(successOfferIds)){
this.saveSendSmsRecord(successOfferIds,CommonConstants.THREE_STRING,CommonConstants.ZERO_STRING, user.getId(),user.getNickname());
}
if(Common.isNotNull(errorOfferIds)){
this.saveSendSmsRecord(successOfferIds,CommonConstants.THREE_STRING,CommonConstants.ONE_STRING, user.getId(),user.getNickname());
}
if (!errorList.isEmpty() && errorList.stream().allMatch(e->e.equals("瓜子发送提醒短信失败"))) {
return R.ok("瓜子发送提醒短信失败");
}
......@@ -422,6 +509,11 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
@Override
public R<String> sendCollectOfferMsg(TGzOfferInfoVo tGzOfferInfo) {
YifuUser user = SecurityUtils.getUser();
if (user == null || Common.isEmpty(user.getId())) {
return R.failed(CommonConstants.PLEASE_LOG_IN);
}
//获取所有满足条件的信息待收集、候选人填写信息的offer提醒的数据
if (Common.isNotNull(tGzOfferInfo)) {
tGzOfferInfo.setStatusList(Stream.of("9","98").collect(Collectors.toList()));
......@@ -432,6 +524,15 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
}
//获取短信信息待收集、候选人填写信息的数据
List<String> errorList = new ArrayList<>();
// 发送短信成功的offer集合
List<Integer> successOfferIds = new ArrayList<>();
// 发送短信失败的offer集合
List<Integer> errorOfferIds = new ArrayList<>();
// 记录从【信息待收集】状态触发短信的offer集合
List<Integer> changeOfferIds = new ArrayList<>();
for (TGzOfferInfoVo sendVo : offerList) {
List<RegistParamVo> params = new ArrayList<>();
List<String> phones = new ArrayList<>();
......@@ -461,15 +562,42 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
LambdaUpdateWrapper<TGzOfferInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(TGzOfferInfo::getId, sendVo.getId())
.eq(TGzOfferInfo::getOfferStatus, "98")
.set(TGzOfferInfo::getOfferStatus, "9");
.set(TGzOfferInfo::getOfferStatus, "9")
.set(TGzOfferInfo::getUpdateTime, LocalDateTime.now())
.set(TGzOfferInfo::getUpdateBy, user.getId());
// 执行更新操作
this.update(updateWrapper);
// 更新前状态是 98:信息待收集,短信发送成功后,记录状态变更
if("98".equals(sendVo.getOfferStatus())){
changeOfferIds.add(sendVo.getId());
}
// 记录发送短信成功的offerId 到集合
successOfferIds.add(sendVo.getId());
} else {
smsEmployee.setMessage("瓜子发送收集短信失败");
employeeService.updateById(smsEmployee);
errorList.add("瓜子发送收集短信失败");
// 记录发送短信失败的offerId 到集合
errorOfferIds.add(sendVo.getId());
}
}
// 记录状态变更的offer操作日志 记录来源: 5:(系统触发)收集短信发送成功
if(Common.isNotNull(changeOfferIds)){
this.saveBatchOfferStatusRecord(changeOfferIds,CommonConstants.FIVE_STRING,
"98","9",user.getId(),user.getNickname());
}
// 记录批量发送短信的offer操作日志。结果:0成功,1失败
if(Common.isNotNull(successOfferIds)){
this.saveSendSmsRecord(successOfferIds,CommonConstants.FOUR_STRING,CommonConstants.ZERO_STRING, user.getId(),user.getNickname());
}
if(Common.isNotNull(errorOfferIds)){
this.saveSendSmsRecord(successOfferIds,CommonConstants.FOUR_STRING,CommonConstants.ONE_STRING, user.getId(),user.getNickname());
}
if (!errorList.isEmpty() && errorList.stream().allMatch(e->e.equals("瓜子发送收集短信失败"))) {
return R.ok("瓜子发送收集短信失败");
}
......@@ -483,6 +611,10 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
@Override
public R<String> sendContractDownloadOfferMsg(TGzOfferInfoVo tGzOfferInfo) {
YifuUser user = SecurityUtils.getUser();
if (user == null || Common.isEmpty(user.getId())) {
return R.failed(CommonConstants.PLEASE_LOG_IN);
}
//获取所有满足条件的已归档的offer提醒的数据
if (Common.isNotNull(tGzOfferInfo)) {
tGzOfferInfo.setOfferStatus(CommonConstants.NINETY_NINE);
......@@ -493,6 +625,11 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
}
//获取已归档的数据
List<String> errorList = new ArrayList<>();
// 发送短信成功的offer集合
List<Integer> successOfferIds = new ArrayList<>();
// 发送短信失败的offer集合
List<Integer> errorOfferIds = new ArrayList<>();
for (TGzOfferInfoVo sendVo : offerList) {
List<RegistParamVo> params = new ArrayList<>();
List<String> phones = new ArrayList<>();
......@@ -517,12 +654,27 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
smsEmployee.setBizId(res.getBizId());
smsEmployee.setMessage(res.getMessage());
employeeService.updateById(smsEmployee);
// 记录发送短信成功的offerId 到集合
successOfferIds.add(sendVo.getId());
} else {
smsEmployee.setMessage("瓜子发送合同下载短信失败");
employeeService.updateById(smsEmployee);
errorList.add("瓜子发送合同下载短信失败");
// 记录发送短信失败的offerId 到集合
errorOfferIds.add(sendVo.getId());
}
}
// 记录批量发送短信的offer操作日志。结果:0成功,1失败
if(Common.isNotNull(successOfferIds)){
this.saveSendSmsRecord(successOfferIds,"12",CommonConstants.ZERO_STRING, user.getId(),user.getNickname());
}
if(Common.isNotNull(errorOfferIds)){
this.saveSendSmsRecord(successOfferIds,"12",CommonConstants.ONE_STRING, user.getId(),user.getNickname());
}
if (!errorList.isEmpty() && errorList.stream().allMatch(e->e.equals("瓜子发送合同下载短信失败"))) {
return R.ok("瓜子发送合同下载短信失败");
}
......@@ -762,7 +914,9 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
continue;
}
// todo 记录offer操作日志
// 记录状态变更的offer操作日志 记录来源: 手动更新状态
this.saveOfferStatusRecord(tGzOfferInfo.getId(),CommonConstants.ONE_STRING,
findInfo.getOfferStatus(),tGzOfferInfo.getOfferStatus(),user.getId(),user.getNickname());
}
if(Common.isEmpty(updateFailOfferList)){
......@@ -771,4 +925,84 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
return R.failed(updateFailOfferList,"存在更新失败的数据,未找到该状态下需要更新的人员信息");
}
/**
* 记录单个状态变更的offer操作日志
* @param offerId offerId
* @param recordFrom 记录来源:1:手动更新状态;7:档案审核
* @param beforeStatus 变更前状态
* @param nowStatus 当前状态
* @param userId 触发人ID
* @param nickname 触发人名称
*/
private void saveOfferStatusRecord(Integer offerId, String recordFrom,
String beforeStatus, String nowStatus, String userId, String nickname){
// 记录offer操作日志
LGuaziOfferRecordVo lGuaziOfferRecordVo = new LGuaziOfferRecordVo();
// 存变更前后的状态到 状态数组里
List<String> changeStatusList = new ArrayList<>();
changeStatusList.add(beforeStatus);
changeStatusList.add(nowStatus);
if(changeStatusList.size() > 0){
lGuaziOfferRecordVo.setOfferId(offerId);
// 记录来源: 档案审核
lGuaziOfferRecordVo.setRecordFrom(recordFrom);
lGuaziOfferRecordVo.setChangeStatusList(changeStatusList);
lGuaziOfferRecordVo.setCreateBy(userId);
lGuaziOfferRecordVo.setCreateName(nickname);
lGuaziOfferRecordService.saveRecordOne(lGuaziOfferRecordVo);
}
}
/**
* 记录批量状态变更的offer操作日志
* @param offerIds offerId集合
* @param recordFrom 记录来源:1:手动更新状态;7:档案审核
* @param beforeStatus 变更前状态
* @param nowStatus 当前状态
* @param userId 触发人ID
* @param nickname 触发人名称
*/
private void saveBatchOfferStatusRecord(List<Integer> offerIds, String recordFrom,
String beforeStatus, String nowStatus, String userId, String nickname){
// 记录offer操作日志
LGuaziOfferRecordVo lGuaziOfferRecordVo = new LGuaziOfferRecordVo();
// 存变更前后的状态到 状态数组里
List<String> changeStatusList = new ArrayList<>();
changeStatusList.add(beforeStatus);
changeStatusList.add(nowStatus);
if(changeStatusList.size() > 0){
lGuaziOfferRecordVo.setOfferIds(offerIds);
// 记录来源
lGuaziOfferRecordVo.setRecordFrom(recordFrom);
lGuaziOfferRecordVo.setChangeStatusList(changeStatusList);
lGuaziOfferRecordVo.setCreateBy(userId);
lGuaziOfferRecordVo.setCreateName(nickname);
lGuaziOfferRecordService.saveRecordBatch(lGuaziOfferRecordVo);
}
}
/**
* 记录批量发送短信的offer操作日志
* @param offerIds offerId集合
* @param recordFrom 记录来源:3:发送Offer查阅短信;4:发送信息收集短信;12:发送合同下载短信
* @param sendSmsRes 发送短信结果:0成功,1失败
* @param userId 触发人ID
* @param nickname 触发人名称
*/
private void saveSendSmsRecord(List<Integer> offerIds, String recordFrom,
String sendSmsRes, String userId, String nickname){
// 记录offer操作日志
LGuaziOfferRecordVo lGuaziOfferRecordVo = new LGuaziOfferRecordVo();
lGuaziOfferRecordVo.setOfferIds(offerIds);
lGuaziOfferRecordVo.setSendSmsRes(sendSmsRes);
// 记录来源
lGuaziOfferRecordVo.setRecordFrom(recordFrom);
lGuaziOfferRecordVo.setCreateBy(userId);
lGuaziOfferRecordVo.setCreateName(nickname);
lGuaziOfferRecordService.saveRecordBatch(lGuaziOfferRecordVo);
}
}
......@@ -11,6 +11,8 @@ import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import java.util.Map;
/**
* @Author huyc
* @Date 2022-07-18
......@@ -152,4 +154,18 @@ public class UpmsDaprUtils {
public R<SysCspDeptVo> selectCspDeptByUserDeptId(SysCspDeptVo vo) {
return HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(),daprUpmsProperties.getAppId(),"/user/inner/selectInnerCspDeptByUserDeptId", vo, SysCspDeptVo.class, SecurityConstants.FROM_IN);
}
/**
* 获取瓜子和皖信的字典映射
* @author chenyx
* @date 2025-06-11 15:57:30
* @since 1.7.12
**/
public R<Map<String, Map<String,String>>> getRelValueMapByOutDictType() {
R<Map<String, Map<String,String>>> relDictMapR = HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(),daprUpmsProperties.getAppId(),"/sysoutreldictitem/inner/getDictMap","", Map.class, SecurityConstants.FROM_IN);
if (Common.isEmpty(relDictMapR)){
return R.failed("获取瓜子和皖信的字典映射数据失败!");
}
return relDictMapR;
}
}
......@@ -18,6 +18,7 @@
package com.yifu.cloud.plus.v1.yifu.admin.api.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
......@@ -30,6 +31,8 @@ import lombok.Setter;
import org.hibernate.validator.constraints.Length;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
......@@ -79,4 +82,12 @@ public class SysOutRelDictItem extends Model<SysOutRelDictItem> {
@Schema(description = "外部端标识(gz:瓜子)")
private String clientId;
/**
* 最外边Map的key是瓜子字典的类型
* Map的Value 是 瓜子字典和皖信字典的映射列表。
* List里Map的key是瓜子的字典值,value 是皖信的字典值
*/
@TableField(exist = false)
private Map<String, Map<String,String>> relValueListByOutDictType;
}
......@@ -57,7 +57,7 @@ public class SysOutEmpFormInfoController {
*/
@Operation(description = "瓜子采集配置列表")
@GetMapping("/configList")
public R<List<SysOutEmpCategorizeFormInfoVo>> getConfigList(@RequestParam String isLookToc) {
public R<List<SysOutEmpCategorizeFormInfoVo>> getConfigList(@RequestParam(required = false) String isLookToc) {
return new R<>(sysOutEmpFormInfoService.getConfigList(isLookToc));
}
......
......@@ -17,10 +17,12 @@
package com.yifu.cloud.plus.v1.yifu.admin.controller;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysDictItem;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysOutRelDictItem;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.admin.service.SysOutRelDictItemService;
import com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
......@@ -30,6 +32,7 @@ import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
......@@ -57,6 +60,19 @@ public class SysOutRelDictItemController {
return R.ok(sysOutRelDictItemService.noPageDiy(sysOutRelDictItem));
}
/**
* 获取瓜子和皖信的字典映射
* @author chenyx
* @date 2025-06-11 15:57:30
* @since 1.7.12
**/
@Inner
@PostMapping("/inner/getDictMap")
public Map<String, Map<String,String>> getRelValueMapByOutDictType() {
return sysOutRelDictItemService.getRelValueMapByOutDictType();
}
/**
* 通过id查询外部字典值数据表
* @param id id
......
......@@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysOutRelDictItem;
import java.util.List;
import java.util.Map;
/**
......@@ -32,4 +33,6 @@ import java.util.List;
public interface SysOutRelDictItemService extends IService<SysOutRelDictItem> {
List<SysOutRelDictItem> noPageDiy(SysOutRelDictItem searchVo);
Map<String, Map<String,String>> getRelValueMapByOutDictType();
}
......@@ -20,9 +20,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysOutRelDictItem;
import com.yifu.cloud.plus.v1.yifu.admin.mapper.SysOutRelDictItemMapper;
import com.yifu.cloud.plus.v1.yifu.admin.service.SysOutRelDictItemService;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ClientNameConstants;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yifu.cloud.plus.v1.yifu.common.core.util.*;
......@@ -44,4 +48,23 @@ public class SysOutRelDictItemServiceImpl extends ServiceImpl<SysOutRelDictItemM
return null;
}
@Override
public Map<String, Map<String,String>> getRelValueMapByOutDictType() {
Map<String, Map<String,String>> resMap = new HashMap<>();
LambdaQueryWrapper<SysOutRelDictItem> relDictItemQuery = Wrappers.<SysOutRelDictItem>lambdaQuery()
.eq(SysOutRelDictItem::getClientId, ClientNameConstants.CLIENT_GZ);
List<SysOutRelDictItem> relDictItemList = this.list(relDictItemQuery);
if(Common.isNotNull(relDictItemList)){
for(SysOutRelDictItem outRelDictItem :relDictItemList){
Map<String, String> relDictItemMap = resMap.get(outRelDictItem.getDictType());
if(Common.isEmpty(relDictItemMap)){
relDictItemMap = new HashMap<>();
}
relDictItemMap.put(outRelDictItem.getValue(),outRelDictItem.getSysDictValue());
resMap.put(outRelDictItem.getDictType(),relDictItemMap);
}
}
return resMap;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment