Commit 1e321e22 authored by huyuchen's avatar huyuchen

huych-合同自动化代码提交

parent fea597b5
......@@ -123,10 +123,10 @@ public class TEmployeeContractPre extends BaseEntity {
private String contractTerm;
@Schema(description = "合同年限-年")
private String contractDuratioYear;
private String contractDurationYear;
@Schema(description = "合同年限-月")
private String contractDuratioMonth;
private String contractDurationMonth;
@Schema(description = "合同试用期开始时间")
private Date periodStart;
......
......@@ -105,7 +105,7 @@ public class TRegisteWarningEmployee extends BaseEntity {
@Schema(description = "短信回执内容")
private String message;
@Schema(description = "类型 1 待建档 2 带完整")
@Schema(description = "类型 1 待建档 2 带完整 3Offer收集短信")
private String type;
}
......@@ -2,12 +2,10 @@ package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 合同待签订任务记录表
......@@ -16,7 +14,7 @@ import java.util.Date;
* @date 2025-06-11 14:15:53
*/
@Data
public class TEmployeeContractPreExportVo extends RowIndex implements Serializable {
public class TEmployeeContractPreExportVo implements Serializable {
@ExcelAttribute(name = "项目名称")
......@@ -52,10 +50,10 @@ public class TEmployeeContractPreExportVo extends RowIndex implements Serializab
/**
* 入职日期
*/
@ExcelAttribute(name = "入职日期", isDate = true)
@ExcelAttribute(name = "入职日期")
@Schema(description = "入职日期")
@ExcelProperty("入职日期")
private Date joinLeaveDate;
private String joinLeaveDate;
@ExcelAttribute(name = "合同类型")
@Schema(description = "合同类型")
......@@ -85,17 +83,17 @@ public class TEmployeeContractPreExportVo extends RowIndex implements Serializab
/**
* 预计确认时间
*/
@ExcelAttribute(name = "预计确认时间", isDate = true)
@ExcelAttribute(name = "预计确认时间")
@Schema(description = "预计确认时间")
@ExcelProperty("预计确认时间")
private Date expectedConfirmTime;
private String expectedConfirmTime;
/**
* 预计发起时间
*/
@ExcelAttribute(name = "预计发起时间", isDate = true)
@ExcelAttribute(name = "预计发起时间")
@Schema(description = "预计发起时间")
@ExcelProperty("预计发起时间")
private Date expectedCollectionTime;
private String expectedCollectionTime;
@ExcelAttribute(name = "状态")
@Schema(description = "状态")
......
......@@ -21,6 +21,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDate;
import java.util.List;
/**
* 瓜子offer信息接收表
......@@ -46,4 +47,10 @@ public class TGzOfferInfoVo extends TGzOfferInfo {
*/
private LocalDate createTimeEnd;
/**
* 批量发送短信使用
*/
@Schema(description = "选中ID,id数组")
private List<String> idList;
}
......@@ -127,4 +127,17 @@ public class TGzOfferInfoController {
return tGzOfferInfoService.importDiy(file.getInputStream());
}
/**
* 新增瓜子offer信息接收表
* @param tGzOfferInfo 瓜子offer信息接收表
* @return R
*/
@Operation(summary = "单个/批量发送Offer提醒", description = "单个/批量发送Offer提醒")
@SysLog("单个/批量发送Offer提醒" )
@PostMapping("/sendOfferAlert")
public R<Boolean> sendOfferAlert(@RequestBody TGzOfferInfoVo tGzOfferInfo) {
return tGzOfferInfoService.sendOfferAlert(tGzOfferInfo);
}
}
......@@ -25,6 +25,8 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.TGzOfferInfoVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 瓜子offer信息接收表
*
......@@ -39,4 +41,11 @@ public interface TGzOfferInfoMapper extends BaseMapper<TGzOfferInfo> {
* @return IPage<TGzOfferInfoVo>
*/
IPage<TGzOfferInfoVo> getTGzOfferInfoPage(Page<TGzOfferInfoVo> page, @Param("tGzOfferInfo") TGzOfferInfoVo tGzOfferInfo);
/**
* 瓜子offer信息接收表简单分页查询
* @param tGzOfferInfo 瓜子offer信息接收表
* @return IPage<TGzOfferInfoVo>
*/
List<TGzOfferInfoVo> getTGzOfferInfoSendAlertList(@Param("tGzOfferInfo") TGzOfferInfoVo tGzOfferInfo);
}
......@@ -19,10 +19,9 @@ package com.yifu.cloud.plus.v1.yifu.archives.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TGzOfferInfoVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TGzOfferInfo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TGzOfferInfoVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
......@@ -62,4 +61,6 @@ public interface TGzOfferInfoService extends IService<TGzOfferInfo> {
R<List<ErrorMessage>> importDiy(InputStream inputStream);
R sendOfferAlert(TGzOfferInfoVo tGzOfferInfo);
}
......@@ -22,26 +22,25 @@ import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.excel.util.ListUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysDict;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysOutEmpFormInfo;
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.TGzOfferInfoService;
import com.yifu.cloud.plus.v1.yifu.archives.service.TRegisteWarningEmployeeService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.MessageTempleteVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TGzOfferInfoImportVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ExcelUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TGzOfferInfoVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.util.*;
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.security.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
......@@ -50,14 +49,9 @@ import org.apache.commons.lang.ArrayUtils;
import org.springframework.stereotype.Service;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 瓜子offer信息接收表
......@@ -70,6 +64,10 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGzOfferInfo> implements TGzOfferInfoService {
private final TRegisteWarningEmployeeService employeeService;
private final EmployeeRegistrationPreMapper registrationPreMapper;
/**
* 瓜子offer信息接收表简单分页查询
* @param tGzOfferInfo 瓜子offer信息接收表
......@@ -261,6 +259,83 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
}
return R.ok(errorMessageList);
}
@Override
public R sendOfferAlert(TGzOfferInfoVo tGzOfferInfo) {
//获取所有满足条件的未发送offer提醒的数据
if (Common.isNotNull(tGzOfferInfo)) {
tGzOfferInfo.setOfferSendStatus(CommonConstants.ONE_STRING);
List<TGzOfferInfoVo> offerList = baseMapper.getTGzOfferInfoSendAlertList(tGzOfferInfo);
if (Common.isNotNull(offerList) && !offerList.isEmpty()) {
if (Common.isNotNull(offerList) && offerList.size() >200) {
return R.failed("短信批量发送单次最多两百条");
}
//获取短信待发放和信息待填写的数据
List<String> errorList = new ArrayList<>();
List<RegistParamVo> params = new ArrayList<>();
List<String> phones = new ArrayList<>();
for (TGzOfferInfoVo sendVo : offerList) {
RegistParamVo paramVo = new RegistParamVo();
AliSmsResult res;
paramVo.setName(sendVo.getName());
phones.add(sendVo.getPhone());
//生成短信发送的记录
TRegisteWarningEmployee smsEmployee = new TRegisteWarningEmployee();
smsEmployee.setEmpName(sendVo.getName());
smsEmployee.setEmpPhone(sendVo.getPhone());
smsEmployee.setEmpIdcard(sendVo.getNationalId());
smsEmployee.setSendDate(DateUtil.getCurrentDateTime());
smsEmployee.setSendMethod(CommonConstants.ONE_INT);
smsEmployee.setWarningId(sendVo.getId().toString());
smsEmployee.setType(CommonConstants.THREE_STRING);
employeeService.save(smsEmployee);
params.add(paramVo);
res = sendMessage(phones, params);
if (null != res && null != res.getBizId()) {
//发送成功
smsEmployee.setBizId(res.getBizId());
smsEmployee.setMessage(res.getMessage());
employeeService.updateById(smsEmployee);
//更新Offer信息接收表发送状态为已发送
LambdaUpdateWrapper<TGzOfferInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(TGzOfferInfo::getId, sendVo.getId())
.in(TGzOfferInfo::getOfferSendStatus, CommonConstants.ONE_STRING)
.set(TGzOfferInfo::getOfferSendStatus, CommonConstants.ZERO_STRING);
// 执行更新操作
this.update(updateWrapper);
} else {
smsEmployee.setMessage("短信发送失败");
employeeService.updateById(smsEmployee);
errorList.add("短信发送失败");
}
}
if (!errorList.isEmpty() && errorList.stream().allMatch(e->e.equals("短信发送失败"))) {
return R.ok("短信发送失败");
}
return R.ok();
} else {
return R.failed(CommonConstants.NO_DATA_TO_HANDLE);
}
}
return R.failed(CommonConstants.PARAM_IS_NOT_ERROR);
}
/**
* @Description: 批量发送短信
* @Author: huych
* @Date: 2025/3/18 17:02
* @return:
**/
public AliSmsResult sendMessage (List<String> phones,List<RegistParamVo> params ) {
List<String> signNames = new ArrayList<>();
MessageTempleteVo templeteVo = registrationPreMapper.selectTempleteVo(CommonConstants.TWO_STRING);
for (int i=0;i<phones.size();i++){
signNames.add(templeteVo.getSignName());
}
return YiFuSmsUtil.sendRegistBatchSms(phones, params, signNames, templeteVo.getTempleteCode());
}
private void importTDispatchExportLog(List<TGzOfferInfoImportVo> excelVOList, List<ErrorMessage> errorMessageList) {
// 个性化校验逻辑
ErrorMessage errorMsg;
......
......@@ -30,8 +30,8 @@
<result property="contractStart" column="contract_start"/>
<result property="contractEnd" column="contract_end"/>
<result property="situation" column="situation"/>
<result property="contractDuratioYear" column="contract_duration_year"/>
<result property="contractDuratioMonth" column="contract_duration_month"/>
<result property="contractDurationYear" column="contract_duration_year"/>
<result property="contractDurationMonth" column="contract_duration_month"/>
<result property="contractTerm" column="CONTRACT_TERM"/>
<result property="periodStart" column="period_start"/>
<result property="periodEnd" column="period_end"/>
......@@ -233,11 +233,11 @@
<if test="tEmployeeContractPre.situation != null and tEmployeeContractPre.situation.trim() != ''">
AND a.situation = #{tEmployeeContractPre.situation}
</if>
<if test="tEmployeeContractPre.contractDuratioYear != null and tEmployeeContractPre.contractDuratioYear.trim() != ''">
AND a.contract_duration_year = #{tEmployeeContractPre.contractDuratioYear}
<if test="tEmployeeContractPre.contractDurationYear != null and tEmployeeContractPre.contractDurationYear.trim() != ''">
AND a.contract_duration_year = #{tEmployeeContractPre.contractDurationYear}
</if>
<if test="tEmployeeContractPre.contractDuratioMonth != null and tEmployeeContractPre.contractDuratioMonth.trim() != ''">
AND a.contract_duration_month = #{tEmployeeContractPre.contractDuratioMonth}
<if test="tEmployeeContractPre.contractDurationMonth != null and tEmployeeContractPre.contractDurationMonth.trim() != ''">
AND a.contract_duration_month = #{tEmployeeContractPre.contractDurationMonth}
</if>
<if test="tEmployeeContractPre.periodStart != null">
AND a.period_start = #{tEmployeeContractPre.periodStart}
......@@ -392,14 +392,8 @@
a.emp_idcard,
a.emp_phone,
a.position,
a.join_leave_date,
CASE WHEN a.contract_type=0 THEN "标准合同"
WHEN a.contract_type =1 THEN "劳务协议"
WHEN a.contract_type =2 THEN "实习协议"
WHEN a.contract_type =3 THEN "劳务派遣合同"
WHEN a.contract_type =4 THEN "非全日制"
WHEN a.contract_type =5 THEN "其他合同"
ELSE a.contract_type END as contract_type,
DATE_FORMAT(a.join_leave_date,'%Y-%m-%d') join_leave_date,
a.contract_type,
a.signatory,
a.customer_username,
if(a.sign_type = '0','线下签','电子签') sign_type,
......
......@@ -118,6 +118,12 @@
<if test="tGzOfferInfo.id != null">
AND a.id = #{tGzOfferInfo.id}
</if>
<if test="tGzOfferInfo.idList != null">
AND a.id in
<foreach item="idStr" index="index" collection="tGzOfferInfo.idList" open="(" separator="," close=")">
#{idStr}
</foreach>
</if>
<if test="tGzOfferInfo.bizId != null and tGzOfferInfo.bizId.trim() != ''">
AND a.biz_id = #{tGzOfferInfo.bizId}
</if>
......@@ -252,4 +258,16 @@
</where>
ORDER by a.create_time desc,a.id desc
</select>
<!--tGzOfferInfo待发送短信数据查询-->
<select id="getTGzOfferInfoSendAlertList" resultMap="tGzOfferInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_gz_offer_info a
<where>
a.del_flag = '0'
<include refid="tGzOfferInfo_where"/>
</where>
ORDER by a.create_time desc,a.id desc
</select>
</mapper>
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