Commit cc91e9a2 authored by hongguangwu's avatar hongguangwu

1.7.21-权限

parent 8353c8b7
...@@ -51,7 +51,7 @@ public class EmployeeRegistrationPre extends BaseEntity { ...@@ -51,7 +51,7 @@ public class EmployeeRegistrationPre extends BaseEntity {
@Schema(description = "入职日期") @Schema(description = "入职日期")
private Date joinLeaveDate; private Date joinLeaveDate;
@Schema(description = "状态,0短信待发送,1信息待填写,2信息待审核,3拒绝入职,4已完成") @Schema(description = "状态,0短信待发送,1信息待填写,2信息待审核,3拒绝入职,4已完成,5已确认离职")
private String processStatus; private String processStatus;
@Schema(description = "前端客服") @Schema(description = "前端客服")
...@@ -195,4 +195,10 @@ public class EmployeeRegistrationPre extends BaseEntity { ...@@ -195,4 +195,10 @@ public class EmployeeRegistrationPre extends BaseEntity {
*/ */
@Schema(description = "是否拒绝入职: 0 是 1 ") @Schema(description = "是否拒绝入职: 0 是 1 ")
private String isRefuse; private String isRefuse;
/**
* 是否已确认离职: 0 是 1 否
* 2026-03-31 逻辑参考拒绝入职
*/
@Schema(description = "是否已确认离职: 0 是 1 ")
private String isLeave;
} }
...@@ -369,4 +369,11 @@ public class TEmployeeContractPre extends BaseEntity { ...@@ -369,4 +369,11 @@ public class TEmployeeContractPre extends BaseEntity {
*/ */
@Schema(description = "是否拒绝入职: 0 是 1 ") @Schema(description = "是否拒绝入职: 0 是 1 ")
private String isRefuse; private String isRefuse;
/**
* 是否已确认离职: 0 是 1 否
* 2026-03-31 逻辑参考拒绝入职
*/
@Schema(description = "是否已确认离职: 0 是 1 ")
private String isLeave;
} }
...@@ -9,6 +9,7 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreSearchVo; ...@@ -9,6 +9,7 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreSearchVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.SendMessageUpdateVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.SendMessageUpdateVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.BaseSearchVO;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser; import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.MenuUtil; import com.yifu.cloud.plus.v1.yifu.common.dapr.util.MenuUtil;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog; import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
...@@ -87,6 +88,17 @@ public class EmployeeRegistrationPreController { ...@@ -87,6 +88,17 @@ public class EmployeeRegistrationPreController {
return employeeRegistrationPreService.updateRegistById(employeeRegistrationPre); return employeeRegistrationPreService.updateRegistById(employeeRegistrationPre);
} }
/**
* 离职确认更新自动化的信息(通过身份证与项目编码)
*/
@Operation(summary = "离职确认更新自动化的信息(通过身份证与项目编码)", description = "离职确认更新自动化的信息(通过身份证与项目编码)")
@Inner
@PostMapping("/inner/leaveToUpdateInfoByCardAndDeptNo" )
public Boolean leaveToUpdateInfoByCardAndDeptNo(@RequestBody BaseSearchVO paramVo) {
return employeeRegistrationPreService.leaveToUpdateInfoByCardAndDeptNo(paramVo);
}
/** /**
* 入职待建档表 批量导出 * 入职待建档表 批量导出
* @author huych * @author huych
......
...@@ -9,13 +9,11 @@ import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeContractPreHistory; ...@@ -9,13 +9,11 @@ import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeContractPreHistory;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TEmployeeContractInfoMapper; import com.yifu.cloud.plus.v1.yifu.archives.mapper.TEmployeeContractInfoMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmployeeContractPreHistoryService; import com.yifu.cloud.plus.v1.yifu.archives.service.TEmployeeContractPreHistoryService;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmployeeContractPreService; import com.yifu.cloud.plus.v1.yifu.archives.service.TEmployeeContractPreService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpProjectStatusVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.*;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeAutoRegistRevokeVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeContractPreSearchVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeContractPreVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil; import com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.BaseSearchVO;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser; import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.MenuUtil; import com.yifu.cloud.plus.v1.yifu.common.dapr.util.MenuUtil;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog; import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
...@@ -345,4 +343,14 @@ public class TEmployeeContractPreController { ...@@ -345,4 +343,14 @@ public class TEmployeeContractPreController {
public R<TEmployeeContractPre> getInfoByRegistId(@RequestParam("registId" ) String registId) { public R<TEmployeeContractPre> getInfoByRegistId(@RequestParam("registId" ) String registId) {
return tEmployeeContractPreService.getInfoByRegistId(registId); return tEmployeeContractPreService.getInfoByRegistId(registId);
} }
/**
* 查询是否有处理中的自动化的合同(通过身份证与项目编码)
*/
@Operation(summary = "查询是否有处理中的自动化的合同(通过身份证与项目编码)", description = "查询是否有处理中的自动化的合同(通过身份证与项目编码)")
@Inner
@PostMapping("/inner/judgeHaveProcessingContracnt" )
public Boolean judgeHaveProcessingContracnt(@RequestBody BaseSearchVO paramVo) {
return tEmployeeContractPreService.judgeHaveProcessingContracnt(paramVo);
}
} }
...@@ -9,6 +9,7 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreSearchVo; ...@@ -9,6 +9,7 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreSearchVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.SendMessageUpdateVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.SendMessageUpdateVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.BaseSearchVO;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
...@@ -56,6 +57,8 @@ public interface EmployeeRegistrationPreService extends IService<EmployeeRegistr ...@@ -56,6 +57,8 @@ public interface EmployeeRegistrationPreService extends IService<EmployeeRegistr
*/ */
R updateRegistById(EmployeeRegistrationPre employeeRegistrationPre); R updateRegistById(EmployeeRegistrationPre employeeRegistrationPre);
Boolean leaveToUpdateInfoByCardAndDeptNo(BaseSearchVO paramVo);
/** /**
* 入职确认信息信息修改 * 入职确认信息信息修改
* @param employeeRegistrationPre 入职确认信息表 * @param employeeRegistrationPre 入职确认信息表
......
...@@ -9,6 +9,7 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeAutoRegistRevokeVo; ...@@ -9,6 +9,7 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeAutoRegistRevokeVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeContractPreSearchVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeContractPreSearchVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeContractPreVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeContractPreVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.BaseSearchVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
...@@ -105,4 +106,6 @@ public interface TEmployeeContractPreService extends IService<TEmployeeContractP ...@@ -105,4 +106,6 @@ public interface TEmployeeContractPreService extends IService<TEmployeeContractP
R contractUrg(String id); R contractUrg(String id);
R<TEmployeeContractPre> getInfoByRegistId(String registId); R<TEmployeeContractPre> getInfoByRegistId(String registId);
boolean judgeHaveProcessingContracnt(BaseSearchVO paramVo);
} }
...@@ -258,9 +258,10 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi ...@@ -258,9 +258,10 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
@Override @Override
public R updateRegistById(EmployeeRegistrationPre employeeRegistrationPre) { public R updateRegistById(EmployeeRegistrationPre employeeRegistrationPre) {
EmployeeRegistrationPre updatePre = baseMapper.selectById(employeeRegistrationPre.getId()); EmployeeRegistrationPre updatePre = baseMapper.selectById(employeeRegistrationPre.getId());
//状态:0短信待发送,1信息待填写,2信息待审核,3拒绝入职,4已完成 //状态:0短信待发送,1信息待填写,2信息待审核,3拒绝入职,4已完成,5已确认离职
if (Common.isEmpty(updatePre) || (updatePre.getProcessStatus().equals(CommonConstants.THREE_STRING) if (Common.isEmpty(updatePre) || (updatePre.getProcessStatus().equals(CommonConstants.THREE_STRING)
|| updatePre.getProcessStatus().equals(CommonConstants.FOUR_STRING))) { || updatePre.getProcessStatus().equals(CommonConstants.FOUR_STRING)
|| updatePre.getProcessStatus().equals(CommonConstants.FIVE_STRING))) {
return R.failed(CommonConstants.NO_DATA_TO_HANDLE); return R.failed(CommonConstants.NO_DATA_TO_HANDLE);
} }
YifuUser user = SecurityUtils.getUser(); YifuUser user = SecurityUtils.getUser();
...@@ -339,6 +340,83 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi ...@@ -339,6 +340,83 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
return R.ok(); return R.ok();
} }
// 离职确认时清理待办
@Override
public Boolean leaveToUpdateInfoByCardAndDeptNo(BaseSearchVO paramVo) {
List<EmployeeRegistrationPre> registrationPreList = baseMapper.selectList(Wrappers.<EmployeeRegistrationPre>query().lambda()
.eq(EmployeeRegistrationPre::getDeptNo, paramVo.getDeptNo())
.eq(EmployeeRegistrationPre::getEmpIdcard, paramVo.getEmpIdCard())
.in(EmployeeRegistrationPre::getProcessStatus, Arrays.asList("0","1","2","4")));
if (Common.isNotNull(registrationPreList)) {
String userName = paramVo.getResultIdOneStatus();
StringBuilder sb;
TEmployeePreLog preLog;
for (EmployeeRegistrationPre updatePre : registrationPreList) {
updatePre.setProcessStatus(CommonConstants.FIVE_STRING);
updatePre.setIsLeave(CommonConstants.ZERO_STRING);
baseMapper.updateById(updatePre);
sb = new StringBuilder("档案");
try {
//处理社保待办信息
R<Boolean> booleanR = socialDaprUtils.updateLeaveSocialPreInfo(updatePre.getId());
if (null != booleanR && booleanR.getData().booleanValue()){
if (sb.length() == 0){
sb.append("社保");
}else {
sb.append("/社保");
}
}
//处理公积金待办信息
booleanR = socialDaprUtils.updateLeaveFundPreInfo(updatePre.getId());
if (null != booleanR && booleanR.getData().booleanValue()){
if (sb.length() == 0){
sb.append("公积金");
}else {
sb.append("/公积金");
}
}
//处理商险待办信息
BaseSearchVO insuranceSearchVo = new BaseSearchVO();
insuranceSearchVo.setRegisterId(updatePre.getId());
insuranceSearchVo.setOperator(userName);
booleanR = insuranceDaprUtil.leaveInsurancePreByRegisterId(insuranceSearchVo);
if (null != booleanR && booleanR.getData().booleanValue()){
if (sb.length() == 0){
sb.append("商险");
}else {
sb.append("/商险");
}
}
//处理合同待办信息
LambdaUpdateWrapper<TEmployeeContractPre> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(TEmployeeContractPre::getRegisterId, updatePre.getId());
updateWrapper.set(TEmployeeContractPre::getIsLeave,CommonConstants.ZERO_STRING);
int res = contractPreMapper.update(null,updateWrapper);
if (res > 0){
if (sb.length() == 0){
sb.append("合同");
}else {
sb.append("/合同");
}
}
} catch (Exception e) {
log.error("调用社保商险服务更新数据异常", e);
}
//增加操作日期
preLog = new TEmployeePreLog();
preLog.setCreateTime(LocalDateTime.now());
preLog.setCreateName(userName);
preLog.setUpdateTime(LocalDateTime.now());
preLog.setPreId(updatePre.getId());
preLog.setDiffTitle("人员离职确认联动删除的待办:"+sb);
preLog.setMenuInfo("入职建档");
tEmployeePreLogService.save(preLog);
}
}
return true;
}
@Override @Override
@Transactional @Transactional
public String saveRegistPreInfo(EmployeeRegistrationPreVo preVo) { public String saveRegistPreInfo(EmployeeRegistrationPreVo preVo) {
...@@ -1351,6 +1429,7 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi ...@@ -1351,6 +1429,7 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
.lambda().eq(EmployeeRegistrationPre::getId, updateVo.getId()) .lambda().eq(EmployeeRegistrationPre::getId, updateVo.getId())
.in(EmployeeRegistrationPre::getProcessStatus, CommonConstants.processStatus) .in(EmployeeRegistrationPre::getProcessStatus, CommonConstants.processStatus)
.eq(EmployeeRegistrationPre::getIsRefuse,CommonConstants.ONE_STRING) .eq(EmployeeRegistrationPre::getIsRefuse,CommonConstants.ONE_STRING)
.eq(EmployeeRegistrationPre::getIsLeave,CommonConstants.ONE_STRING)
.last(CommonConstants.LAST_ONE_SQL)); .last(CommonConstants.LAST_ONE_SQL));
if (Common.isNotNull(updatePre)) { if (Common.isNotNull(updatePre)) {
if (CommonConstants.ZERO_STRING.equals(updatePre.getProcessStatus())) { if (CommonConstants.ZERO_STRING.equals(updatePre.getProcessStatus())) {
...@@ -1403,6 +1482,7 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi ...@@ -1403,6 +1482,7 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
.eq(EmployeeRegistrationPre::getDeptId, updateVo.getDeptId()) .eq(EmployeeRegistrationPre::getDeptId, updateVo.getDeptId())
.eq(EmployeeRegistrationPre::getProcessStatus, CommonConstants.ZERO_STRING) .eq(EmployeeRegistrationPre::getProcessStatus, CommonConstants.ZERO_STRING)
.eq(EmployeeRegistrationPre::getIsRefuse,CommonConstants.ONE_STRING) .eq(EmployeeRegistrationPre::getIsRefuse,CommonConstants.ONE_STRING)
.eq(EmployeeRegistrationPre::getIsLeave,CommonConstants.ONE_STRING)
.last(CommonConstants.LAST_ONE_SQL)); .last(CommonConstants.LAST_ONE_SQL));
if (Common.isNotNull(updatePre)) { if (Common.isNotNull(updatePre)) {
updatePre.setProcessStatus(CommonConstants.ONE_STRING); updatePre.setProcessStatus(CommonConstants.ONE_STRING);
......
package com.yifu.cloud.plus.v1.yifu.archives.service.impl; package com.yifu.cloud.plus.v1.yifu.archives.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.WriteSheet;
...@@ -22,6 +21,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.constant.ClientNameConstants; ...@@ -22,6 +21,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.constant.ClientNameConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.SecurityConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.SecurityConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.*; import com.yifu.cloud.plus.v1.yifu.common.core.util.*;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.BaseSearchVO;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser; import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.SocialDaprUtils; import com.yifu.cloud.plus.v1.yifu.common.dapr.util.SocialDaprUtils;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.UpmsDaprUtils; import com.yifu.cloud.plus.v1.yifu.common.dapr.util.UpmsDaprUtils;
...@@ -742,6 +742,7 @@ public class TEmployeeContractPreServiceImpl extends ServiceImpl<TEmployeeContra ...@@ -742,6 +742,7 @@ public class TEmployeeContractPreServiceImpl extends ServiceImpl<TEmployeeContra
.ne(TEmployeeContractPre::getProcessStatus, CommonConstants.TEN_STRING) .ne(TEmployeeContractPre::getProcessStatus, CommonConstants.TEN_STRING)
.ne(TEmployeeContractPre::getProcessStatus, CommonConstants.ELEVEN_STRING) .ne(TEmployeeContractPre::getProcessStatus, CommonConstants.ELEVEN_STRING)
.ne(TEmployeeContractPre::getIsRefuse, CommonConstants.ZERO_STRING) .ne(TEmployeeContractPre::getIsRefuse, CommonConstants.ZERO_STRING)
.ne(TEmployeeContractPre::getIsLeave, CommonConstants.ZERO_STRING)
.last(CommonConstants.LAST_ONE_SQL)); .last(CommonConstants.LAST_ONE_SQL));
if (Common.isNotNull(contractPre)) { if (Common.isNotNull(contractPre)) {
//如果是已完结判断合同申请数据在不在用 //如果是已完结判断合同申请数据在不在用
...@@ -1258,4 +1259,22 @@ public class TEmployeeContractPreServiceImpl extends ServiceImpl<TEmployeeContra ...@@ -1258,4 +1259,22 @@ public class TEmployeeContractPreServiceImpl extends ServiceImpl<TEmployeeContra
.eq(TEmployeeContractPre::getRegisterId, registId) .eq(TEmployeeContractPre::getRegisterId, registId)
.last(CommonConstants.LAST_ONE_SQL))); .last(CommonConstants.LAST_ONE_SQL)));
} }
// 获取处理中的自动化合同(2线下签待审核、6签署中
@Override
public boolean judgeHaveProcessingContracnt(BaseSearchVO paramVo) {
if (Common.isNotNull(paramVo.getEmpIdCard()) && Common.isNotNull(paramVo.getDeptNo())) {
TEmployeeContractPre pre = baseMapper.selectOne(Wrappers.<TEmployeeContractPre>query().lambda()
.eq(TEmployeeContractPre::getIsRefuse, CommonConstants.ONE_STRING)
.eq(TEmployeeContractPre::getIsLeave, CommonConstants.ONE_STRING)
.in(TEmployeeContractPre::getProcessStatus, Arrays.asList("2","6"))
.eq(TEmployeeContractPre::getEmpIdcard, paramVo.getEmpIdCard())
.eq(TEmployeeContractPre::getDeptNo, paramVo.getDeptNo())
.last(CommonConstants.LAST_ONE_SQL));
// 找到了才阻断,不允许离职确认
return pre != null;
} else {
return false;
}
}
} }
...@@ -122,6 +122,9 @@ ...@@ -122,6 +122,9 @@
<if test="employeeRegistrationPre.isRefuse != null and employeeRegistrationPre.isRefuse.trim() != ''"> <if test="employeeRegistrationPre.isRefuse != null and employeeRegistrationPre.isRefuse.trim() != ''">
AND a.IS_REFUSE = #{employeeRegistrationPre.isRefuse} AND a.IS_REFUSE = #{employeeRegistrationPre.isRefuse}
</if> </if>
<if test="employeeRegistrationPre.isLeave != null and employeeRegistrationPre.isLeave.trim() != ''">
AND a.IS_LEAVE = #{employeeRegistrationPre.isLeave}
</if>
<if test="employeeRegistrationPre.id != null and employeeRegistrationPre.id.trim() != ''"> <if test="employeeRegistrationPre.id != null and employeeRegistrationPre.id.trim() != ''">
AND a.id = #{employeeRegistrationPre.id} AND a.id = #{employeeRegistrationPre.id}
</if> </if>
...@@ -236,7 +239,9 @@ ...@@ -236,7 +239,9 @@
a.contract_type, a.contract_type,
if(a.data_source = '1','客户端','客服端') data_source, if(a.data_source = '1','客户端','客服端') data_source,
a.expected_collection_time, a.expected_collection_time,
if(a.process_status = '0','短信待发送',if(a.process_status = '1','信息待填写',if(a.process_status = '2','信息待审核','拒绝入职'))) process_status case a.process_status when '0' then '短信待发送' when '1' then '信息待填写' when '2' then '信息待审核'
when '3' then '拒绝入职' when '4' then '已完成' when '5' then '已确认离职' else '-' end process_status
FROM employee_registration_pre a FROM employee_registration_pre a
<where> <where>
1=1 1=1
......
...@@ -182,6 +182,9 @@ ...@@ -182,6 +182,9 @@
<if test="tEmployeeContractPre.isRefuse != null and tEmployeeContractPre.isRefuse.trim() != ''"> <if test="tEmployeeContractPre.isRefuse != null and tEmployeeContractPre.isRefuse.trim() != ''">
AND a.IS_REFUSE = #{tEmployeeContractPre.isRefuse} AND a.IS_REFUSE = #{tEmployeeContractPre.isRefuse}
</if> </if>
<if test="tEmployeeContractPre.isLeave != null and tEmployeeContractPre.isLeave.trim() != ''">
AND a.IS_LEAVE = #{tEmployeeContractPre.isLeave}
</if>
<if test="tEmployeeContractPre.id != null and tEmployeeContractPre.id.trim() != ''"> <if test="tEmployeeContractPre.id != null and tEmployeeContractPre.id.trim() != ''">
AND a.id = #{tEmployeeContractPre.id} AND a.id = #{tEmployeeContractPre.id}
</if> </if>
...@@ -308,7 +311,7 @@ ...@@ -308,7 +311,7 @@
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
FROM t_employee_contract_pre a FROM t_employee_contract_pre a
<where> <where>
1=1 and a.IS_REFUSE ='1' 1=1 and a.IS_REFUSE ='1' and a.IS_LEAVE ='1'
<include refid="tEmployeeContractPre_where"/> <include refid="tEmployeeContractPre_where"/>
</where> </where>
order by a.create_time desc order by a.create_time desc
...@@ -422,7 +425,7 @@ ...@@ -422,7 +425,7 @@
if(#{type} = '1',concat('自动化手动-',a.customer_username),concat('自动化自动-',a.customer_username)) preName if(#{type} = '1',concat('自动化手动-',a.customer_username),concat('自动化自动-',a.customer_username)) preName
FROM t_employee_contract_pre a,(select @i:=0) as itable FROM t_employee_contract_pre a,(select @i:=0) as itable
<where> <where>
1=1 and a.IS_REFUSE ='1' 1=1 and a.IS_REFUSE ='1' and a.IS_LEAVE ='1'
AND a.id in AND a.id in
<foreach item="idStr" index="index" collection="idList" open="(" separator="," close=")"> <foreach item="idStr" index="index" collection="idList" open="(" separator="," close=")">
#{idStr} #{idStr}
...@@ -438,7 +441,7 @@ ...@@ -438,7 +441,7 @@
SELECT SELECT
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
FROM t_employee_contract_pre a FROM t_employee_contract_pre a
where a.process_status = '0' and a.expected_confirm_time is not null and a.IS_REFUSE ='1' where a.process_status = '0' and a.expected_confirm_time is not null and a.IS_REFUSE ='1' and a.IS_LEAVE ='1'
and DATE_FORMAT(a.expected_confirm_time,"%Y-%m-%d") <![CDATA[ <= ]]> CURDATE() and DATE_FORMAT(a.expected_confirm_time,"%Y-%m-%d") <![CDATA[ <= ]]> CURDATE()
group by a.customer_user_loginname group by a.customer_user_loginname
</select> </select>
...@@ -452,6 +455,6 @@ ...@@ -452,6 +455,6 @@
and DATE_FORMAT(a.expected_collection_time,"%Y-%m-%d") <![CDATA[ <= ]]> CURDATE() and DATE_FORMAT(a.expected_collection_time,"%Y-%m-%d") <![CDATA[ <= ]]> CURDATE()
and ((a.timeout_elec_sign = '0' and a.process_status = '0' and a.sign_type = '0') or and ((a.timeout_elec_sign = '0' and a.process_status = '0' and a.sign_type = '0') or
<!-- 1,3,5,7,11 改为 1 ,5 (待发起、发起失败 --> <!-- 1,3,5,7,11 改为 1 ,5 (待发起、发起失败 -->
a.process_status in ('1','5')) and a.IS_REFUSE ='1' a.process_status in ('1','5')) and a.IS_REFUSE ='1' and a.IS_LEAVE ='1'
</select> </select>
</mapper> </mapper>
...@@ -750,5 +750,38 @@ public class ArchivesDaprUtil { ...@@ -750,5 +750,38 @@ public class ArchivesDaprUtil {
return res; return res;
} }
/**
* @Description: 查询是否有处理中的自动化的合同
* @Author: hgw
* @Date: 2026-03-30
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.Boolean>
**/
public R<Boolean> judgeHaveProcessingContracnt(BaseSearchVO paramVo){
R<Boolean> res = HttpDaprUtil.invokeMethodPost(
daprArchivesProperties.getAppUrl(),daprArchivesProperties.getAppId()
,"/temployeecontractpre/inner/judgeHaveProcessingContracnt"
, paramVo, Boolean.class, SecurityConstants.FROM_IN);
if (Common.isEmpty(res)){
return R.failed("查询是否有处理中的自动化的合同失败!");
}
return res;
}
/**
* @Description: 离职确认更新自动化的信息
* @Author: hgw
* @Date: 2026-03-30
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.Boolean>
**/
public R<Boolean> leaveToUpdateInfoByCardAndDeptNo(BaseSearchVO paramVo){
R<Boolean> res = HttpDaprUtil.invokeMethodPost(
daprArchivesProperties.getAppUrl(),daprArchivesProperties.getAppId()
,"/temployeecontractpre/inner/leaveToUpdateInfoByCardAndDeptNo"
, paramVo, Boolean.class, SecurityConstants.FROM_IN);
if (Common.isEmpty(res)){
return R.failed("离职确认更新自动化的信息失败!");
}
return res;
}
} }
...@@ -145,6 +145,14 @@ public class InsuranceDaprUtil { ...@@ -145,6 +145,14 @@ public class InsuranceDaprUtil {
} }
return res; return res;
} }
public R<Boolean> leaveInsurancePreByRegisterId(BaseSearchVO paramVo) {
R<Boolean> res = HttpDaprUtil.invokeMethodPost(daprInsurancesProperties.getAppUrl(),daprInsurancesProperties.getAppId()
,"/temployeeinsurancepre/inner/leaveInsurancePreByRegisterId", paramVo, Boolean.class, SecurityConstants.FROM_IN);
if (Common.isEmpty(res)){
return R.failed("离职确认更新商险待办数据!");
}
return res;
}
/** /**
* @param paramVo 查询参数,主要是身份证与项目编码 * @param paramVo 查询参数,主要是身份证与项目编码
* @Description: 查询人员的已减完成的商险(返回值,则表示有未减完成的商险 * @Description: 查询人员的已减完成的商险(返回值,则表示有未减完成的商险
...@@ -223,4 +231,21 @@ public class InsuranceDaprUtil { ...@@ -223,4 +231,21 @@ public class InsuranceDaprUtil {
,"/insuranceDetail/inner/batchUpdateInsuranceReplaceTagByParamList", paramMap, Object.class, SecurityConstants.FROM_IN); ,"/insuranceDetail/inner/batchUpdateInsuranceReplaceTagByParamList", paramMap, Object.class, SecurityConstants.FROM_IN);
} }
/**
* @Description: 查询是否有处理中的自动化的商险
* @Author: hgw
* @Date: 2026-03-30
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.Boolean>
**/
public R<Boolean> judgeHaveProcessingInsurance(BaseSearchVO paramVo){
R<Boolean> res = HttpDaprUtil.invokeMethodPost(
daprInsurancesProperties.getAppUrl(),daprInsurancesProperties.getAppId()
,"/temployeeinsurancepre/inner/judgeHaveProcessingInsurance"
, paramVo, Boolean.class, SecurityConstants.FROM_IN);
if (Common.isEmpty(res)){
return R.failed("查询是否有处理中的自动化的商险失败!");
}
return res;
}
} }
...@@ -376,6 +376,13 @@ public class SocialDaprUtils { ...@@ -376,6 +376,13 @@ public class SocialDaprUtils {
, Object.class, SecurityConstants.FROM_IN); , Object.class, SecurityConstants.FROM_IN);
} }
// 离职确认联动清理待办
public R<Boolean> updateLeaveSocialPreInfo(String id){
return HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl()
, daprProperties.getAppId(),"/tdispatchinfopre/updateLeaveSocialPreInfo" , id
, Object.class, SecurityConstants.FROM_IN);
}
/** /**
* @Author fxj * @Author fxj
* @Description 删除未处理的公积金待购买信息 * @Description 删除未处理的公积金待购买信息
...@@ -392,6 +399,10 @@ public class SocialDaprUtils { ...@@ -392,6 +399,10 @@ public class SocialDaprUtils {
return HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(), return HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(),
"/tdispatchinfopre/updateRefuseFundPreInfo", id, Boolean.class, SecurityConstants.FROM_IN); "/tdispatchinfopre/updateRefuseFundPreInfo", id, Boolean.class, SecurityConstants.FROM_IN);
} }
public R<Boolean> updateLeaveFundPreInfo(String id) {
return HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(),
"/tdispatchinfopre/updateLeaveFundPreInfo", id, Boolean.class, SecurityConstants.FROM_IN);
}
/** /**
* @Author fxj * @Author fxj
...@@ -474,4 +485,21 @@ public class SocialDaprUtils { ...@@ -474,4 +485,21 @@ public class SocialDaprUtils {
} }
return res; return res;
} }
/**
* @Description: 查询是否有处理中的自动化的合同
* @Author: hgw
* @Date: 2026-03-30
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.Boolean>
**/
public R<Boolean> judgeHaveProcessingSocialOrFund(BaseSearchVO paramVo){
R<Boolean> res = HttpDaprUtil.invokeMethodPost(
daprProperties.getAppUrl(),daprProperties.getAppId()
,"/tdispatchinfopre/inner/judgeHaveProcessingSocialOrFund"
, paramVo, Boolean.class, SecurityConstants.FROM_IN);
if (Common.isEmpty(res)){
return R.failed("查询是否有处理中的自动化的社保公积金失败!");
}
return res;
}
} }
...@@ -32,6 +32,7 @@ public class RegistConstants { ...@@ -32,6 +32,7 @@ public class RegistConstants {
public static final String MESSAGE_FINISH = "已处理"; public static final String MESSAGE_FINISH = "已处理";
public static final String BACK_RECEIVE = "拒绝入职"; public static final String BACK_RECEIVE = "拒绝入职";
public static final String IS_LEAVE = "已确认离职";
// //
public static final String BASE_REASON_TYPE = "1"; public static final String BASE_REASON_TYPE = "1";
......
...@@ -57,7 +57,8 @@ public class EmployeeRegistration extends BaseEntity { ...@@ -57,7 +57,8 @@ public class EmployeeRegistration extends BaseEntity {
@Schema(description = "入/离职日期") @Schema(description = "入/离职日期")
private Date joinLeaveDate; private Date joinLeaveDate;
@Schema(description = "处理状态,0已接收,1未处理,2已处理,3拒绝入职") // 20260330:5已确认离职(部分用4做已完成状态)
@Schema(description = "处理状态,0已接收,1未处理,2已处理,3拒绝入职,5已确认离职")
private String processStatus; private String processStatus;
@Schema(description = "登记人") @Schema(description = "登记人")
......
...@@ -26,6 +26,7 @@ import com.yifu.cloud.plus.v1.csp.vo.EmployeeRegistrationLeaveSearchVo; ...@@ -26,6 +26,7 @@ import com.yifu.cloud.plus.v1.csp.vo.EmployeeRegistrationLeaveSearchVo;
import com.yifu.cloud.plus.v1.csp.vo.EmployeeRegistrationLeaveTableVo; import com.yifu.cloud.plus.v1.csp.vo.EmployeeRegistrationLeaveTableVo;
import com.yifu.cloud.plus.v1.csp.vo.ErrorInfoVo; import com.yifu.cloud.plus.v1.csp.vo.ErrorInfoVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.BaseServiceParamListVO; import com.yifu.cloud.plus.v1.yifu.common.core.vo.BaseServiceParamListVO;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser; import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
...@@ -194,7 +195,7 @@ public class EmployeeRegistrationLeaveController { ...@@ -194,7 +195,7 @@ public class EmployeeRegistrationLeaveController {
@Operation(summary = "批量确认-离职待办", description = "批量确认-离职待办") @Operation(summary = "批量确认-离职待办", description = "批量确认-离职待办")
@SysLog("批量确认-离职待办(与单个确认分开,是因为单个确认还有编辑功能,批量仅改状态") @SysLog("批量确认-离职待办(与单个确认分开,是因为单个确认还有编辑功能,批量仅改状态")
@PostMapping("/doSureBatch") @PostMapping("/doSureBatch")
public R<String> doSureBatch(@RequestBody BatchSureLeaveVo vo) { public R<List<ErrorMessage>> doSureBatch(@RequestBody BatchSureLeaveVo vo) {
if (null == vo || vo.getIds() == null || vo.getIds().isEmpty()){ if (null == vo || vo.getIds() == null || vo.getIds().isEmpty()){
return R.failed(CommonConstants.PARAM_IS_NOT_ERROR); return R.failed(CommonConstants.PARAM_IS_NOT_ERROR);
} }
......
...@@ -26,6 +26,7 @@ import com.yifu.cloud.plus.v1.csp.vo.BatchSureLeaveVo; ...@@ -26,6 +26,7 @@ import com.yifu.cloud.plus.v1.csp.vo.BatchSureLeaveVo;
import com.yifu.cloud.plus.v1.csp.vo.EmployeeRegistrationLeaveSearchVo; import com.yifu.cloud.plus.v1.csp.vo.EmployeeRegistrationLeaveSearchVo;
import com.yifu.cloud.plus.v1.csp.vo.EmployeeRegistrationLeaveTableVo; import com.yifu.cloud.plus.v1.csp.vo.EmployeeRegistrationLeaveTableVo;
import com.yifu.cloud.plus.v1.csp.vo.ErrorInfoVo; import com.yifu.cloud.plus.v1.csp.vo.ErrorInfoVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.BaseServiceParamListVO; import com.yifu.cloud.plus.v1.yifu.common.core.vo.BaseServiceParamListVO;
...@@ -72,7 +73,7 @@ public interface EmployeeRegistrationLeaveService extends IService<EmployeeRegis ...@@ -72,7 +73,7 @@ public interface EmployeeRegistrationLeaveService extends IService<EmployeeRegis
BatchSureLeaveVo initBatchSureInfo(); BatchSureLeaveVo initBatchSureInfo();
// 批量确认(不含编辑) // 批量确认(不含编辑)
R<String> doSureBatch(BatchSureLeaveVo vo); R<List<ErrorMessage>> doSureBatch(BatchSureLeaveVo vo);
// 每天下午三点、三点二十推送续保待派单数据 // 每天下午三点、三点二十推送续保待派单数据
void autoDoLeave(); void autoDoLeave();
......
...@@ -289,7 +289,7 @@ ...@@ -289,7 +289,7 @@
a.position, a.position,
if(a.feedback_type = '1','入职','离职') feedback_type, if(a.feedback_type = '1','入职','离职') feedback_type,
a.join_leave_date, a.join_leave_date,
if(a.process_status= '0','已接收',if(a.process_status= '1','待处理',if(a.process_status= '2','已处理','拒绝入职'))) process_status, case a.process_status when '0' then '已接收' when '1' then '待处理' when '2' then '已处理' when '3' then '拒绝入职' when '5' then '已确认离职' else '-' end process_status,
a.registor_username, a.registor_username,
a.emp_deptname, a.emp_deptname,
a.create_time a.create_time
...@@ -314,7 +314,7 @@ ...@@ -314,7 +314,7 @@
a.position, a.position,
if(a.feedback_type = '1','入职','离职') feedback_type, if(a.feedback_type = '1','入职','离职') feedback_type,
a.join_leave_date, a.join_leave_date,
if(a.process_status= '0','已接收',if(a.process_status= '1','待处理',if(a.process_status= '2','已处理','拒绝入职'))) process_status, case a.process_status when '0' then '已接收' when '1' then '待处理' when '2' then '已处理' when '3' then '拒绝入职' when '5' then '已确认离职' else '-' end process_status,
a.registor_username, a.registor_username,
a.emp_deptname, a.emp_deptname,
a.create_time a.create_time
...@@ -384,7 +384,7 @@ ...@@ -384,7 +384,7 @@
a.position, a.position,
if(a.feedback_type = '1','入职','离职') feedback_type, if(a.feedback_type = '1','入职','离职') feedback_type,
a.join_leave_date, a.join_leave_date,
if(a.process_status= '0','已接收',if(a.process_status= '1','待处理',if(a.process_status= '2','已处理','拒绝入职'))) process_status, case a.process_status when '0' then '已接收' when '1' then '待处理' when '2' then '已处理' when '3' then '拒绝入职' when '5' then '已确认离职' else '-' end process_status,
a.registor_username, a.registor_username,
a.create_time, a.create_time,
a.customer_username, a.customer_username,
......
...@@ -165,4 +165,11 @@ public class TEmployeeInsurancePre extends BaseEntity { ...@@ -165,4 +165,11 @@ public class TEmployeeInsurancePre extends BaseEntity {
*/ */
@Schema(description = "是否拒绝入职: 0 是 1 ") @Schema(description = "是否拒绝入职: 0 是 1 ")
private String isRefuse; private String isRefuse;
/**
* 是否已确认离职: 0 是 1 否
* 2026-03-31 逻辑参考拒绝入职
*/
@Schema(description = "是否已确认离职: 0 是 1 ")
private String isLeave;
} }
...@@ -373,6 +373,16 @@ public class TEmployeeInsurancePreController { ...@@ -373,6 +373,16 @@ public class TEmployeeInsurancePreController {
return tEmployeeInsurancePreService.refuseInsurancePreByRegisterId(preVo); return tEmployeeInsurancePreService.refuseInsurancePreByRegisterId(preVo);
} }
@Operation(description = "拒绝入职更新商险待办数据")
@Inner
@PostMapping("/inner/leaveInsurancePreByRegisterId")
public Boolean leaveInsurancePreByRegisterId(@RequestBody BaseSearchVO preVo) {
if (null == preVo || preVo.getRegisterId() == null){
return false;
}
return tEmployeeInsurancePreService.leaveInsurancePreByRegisterId(preVo);
}
/** /**
* 通过id查询商险待签订任务记录表 * 通过id查询商险待签订任务记录表
* @param registId * @param registId
...@@ -383,4 +393,15 @@ public class TEmployeeInsurancePreController { ...@@ -383,4 +393,15 @@ public class TEmployeeInsurancePreController {
public R<TEmployeeInsurancePre> getInfoByRegistId(@RequestParam("registId" ) String registId) { public R<TEmployeeInsurancePre> getInfoByRegistId(@RequestParam("registId" ) String registId) {
return tEmployeeInsurancePreService.getInfoByRegistId(registId); return tEmployeeInsurancePreService.getInfoByRegistId(registId);
} }
/**
* 查询是否有处理中的自动化的商险(通过身份证与项目编码)
*/
@Operation(summary = "查询是否有处理中的自动化的商险(通过身份证与项目编码)", description = "查询是否有处理中的自动化的商险(通过身份证与项目编码)")
@Inner
@PostMapping("/inner/judgeHaveProcessingInsurance" )
public Boolean judgeHaveProcessingInsurance(@RequestBody BaseSearchVO paramVo) {
return tEmployeeInsurancePreService.judgeHaveProcessingInsurance(paramVo);
}
} }
...@@ -136,6 +136,10 @@ public interface TEmployeeInsurancePreService extends IService<TEmployeeInsuranc ...@@ -136,6 +136,10 @@ public interface TEmployeeInsurancePreService extends IService<TEmployeeInsuranc
Boolean delInsurancePreByRegisterId(BaseSearchVO preVo); Boolean delInsurancePreByRegisterId(BaseSearchVO preVo);
Boolean refuseInsurancePreByRegisterId(BaseSearchVO preVo); Boolean refuseInsurancePreByRegisterId(BaseSearchVO preVo);
Boolean leaveInsurancePreByRegisterId(BaseSearchVO preVo);
R<TEmployeeInsurancePre> getInfoByRegistId(String registId); R<TEmployeeInsurancePre> getInfoByRegistId(String registId);
boolean judgeHaveProcessingInsurance(BaseSearchVO paramVo);
} }
...@@ -1049,6 +1049,54 @@ public class TEmployeeInsurancePreServiceImpl extends ServiceImpl<TEmployeeInsur ...@@ -1049,6 +1049,54 @@ public class TEmployeeInsurancePreServiceImpl extends ServiceImpl<TEmployeeInsur
updateWrapper.set(TEmployeeInsurancePre::getIsRefuse, CommonConstants.ZERO_STRING); updateWrapper.set(TEmployeeInsurancePre::getIsRefuse, CommonConstants.ZERO_STRING);
return this.update(updateWrapper); return this.update(updateWrapper);
} }
@Override
public Boolean leaveInsurancePreByRegisterId(BaseSearchVO preVo) {
// 查询是否有商险已投保未过期且有效的商险数据,若有则将替换标签更新为"可替换"并添加替换说明
TEmployeeInsurancePre insurancePre = baseMapper.selectOne(
Wrappers.<TEmployeeInsurancePre>query()
.lambda()
.eq(TEmployeeInsurancePre::getRegisterId, preVo.getRegisterId())
.last(CommonConstants.LAST_ONE_SQL)
);
if (null != insurancePre && null != insurancePre.getInsurancesId()) {
// 查询对应的商险信息(已投保、未过期且有效)
TInsuranceDetail insuranceDetail = detailService.getOne(
Wrappers.<TInsuranceDetail>query()
.lambda()
.eq(TInsuranceDetail::getId, insurancePre.getInsurancesId())
.eq(TInsuranceDetail::getIsEffect, CommonConstants.ZERO_INT)
.eq(TInsuranceDetail::getIsOverdue, CommonConstants.ZERO_INT)
.eq(TInsuranceDetail::getBuyHandleStatus, CommonConstants.THREE_INT)
.eq(TInsuranceDetail::getDeleteFlag, CommonConstants.ZERO_INT),
false // 不抛出异常,允许返回 null
);
if (null != insuranceDetail) {
try {
// 设置替换标签为"可替换"
insuranceDetail.setReplaceTag(InsurancesConstants.INSURANCE_REPLACE_TAG_REPLACE);
// 构建替换说明:时间 + 操作人员 + 原因
String operateTime = DateUtil.dateToString(new Date(), DateUtil.DATETIME_PATTERN_MINUTE);
String operator = Common.isEmpty(preVo.getOperator()) ? "系统" : preVo.getOperator();
String replaceRemark = String.format("%s-客服%s-对人员进行离职确认操作", operateTime, operator);
insuranceDetail.setReplaceRemark(replaceRemark);
// 更新数据库
detailService.updateById(insuranceDetail);
} catch (Exception e) {
log.error("更新商险替换标签失败,商险 ID: {}", insuranceDetail.getId(), e);
throw new RuntimeException("更新商险替换标签失败:" + e.getMessage());
}
}
}
LambdaUpdateWrapper<TEmployeeInsurancePre> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(TEmployeeInsurancePre::getRegisterId, preVo.getRegisterId());
updateWrapper.set(TEmployeeInsurancePre::getIsLeave, CommonConstants.ZERO_STRING);
return this.update(updateWrapper);
}
@Override @Override
public R<TEmployeeInsurancePre> getInfoByRegistId(String registId) { public R<TEmployeeInsurancePre> getInfoByRegistId(String registId) {
if (Common.isEmpty(registId)){ if (Common.isEmpty(registId)){
...@@ -1060,4 +1108,22 @@ public class TEmployeeInsurancePreServiceImpl extends ServiceImpl<TEmployeeInsur ...@@ -1060,4 +1108,22 @@ public class TEmployeeInsurancePreServiceImpl extends ServiceImpl<TEmployeeInsur
.in(TEmployeeInsurancePre::getProcessStatus, Arrays.asList("3","4","7")) .in(TEmployeeInsurancePre::getProcessStatus, Arrays.asList("3","4","7"))
.eq(TEmployeeInsurancePre::getRegisterId, registId).last(CommonConstants.LAST_ONE_SQL))); .eq(TEmployeeInsurancePre::getRegisterId, registId).last(CommonConstants.LAST_ONE_SQL)));
} }
// 获取处理中的自动化商险(3待投保、4投保中、7待缴费
@Override
public boolean judgeHaveProcessingInsurance(BaseSearchVO paramVo) {
if (Common.isNotNull(paramVo.getEmpIdCard()) && Common.isNotNull(paramVo.getDeptNo())) {
TEmployeeInsurancePre pre = baseMapper.selectOne(Wrappers.<TEmployeeInsurancePre>query().lambda()
.in(TEmployeeInsurancePre::getProcessStatus, Arrays.asList("3","4","7"))
.eq(TEmployeeInsurancePre::getIsRefuse, CommonConstants.ONE_STRING)
.eq(TEmployeeInsurancePre::getIsLeave, CommonConstants.ONE_STRING)
.eq(TEmployeeInsurancePre::getEmpIdcard, paramVo.getEmpIdCard())
.eq(TEmployeeInsurancePre::getDeptNo, paramVo.getDeptNo())
.last(CommonConstants.LAST_ONE_SQL));
// 找到了才阻断,不允许离职确认
return pre != null;
} else {
return false;
}
}
} }
...@@ -110,6 +110,9 @@ ...@@ -110,6 +110,9 @@
<if test="tEmployeeInsurancePre.isRefuse != null and tEmployeeInsurancePre.isRefuse.trim() != ''"> <if test="tEmployeeInsurancePre.isRefuse != null and tEmployeeInsurancePre.isRefuse.trim() != ''">
AND a.IS_REFUSE = #{tEmployeeInsurancePre.isRefuse} AND a.IS_REFUSE = #{tEmployeeInsurancePre.isRefuse}
</if> </if>
<if test="tEmployeeInsurancePre.isLeave != null and tEmployeeInsurancePre.isLeave.trim() != ''">
AND a.IS_LEAVE = #{tEmployeeInsurancePre.isLeave}
</if>
<if test="tEmployeeInsurancePre.id != null and tEmployeeInsurancePre.id.trim() != ''"> <if test="tEmployeeInsurancePre.id != null and tEmployeeInsurancePre.id.trim() != ''">
AND a.id = #{tEmployeeInsurancePre.id} AND a.id = #{tEmployeeInsurancePre.id}
</if> </if>
...@@ -246,7 +249,7 @@ ...@@ -246,7 +249,7 @@
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
FROM t_employee_insurance_pre a FROM t_employee_insurance_pre a
<where> <where>
1=1 and a.IS_REFUSE ='1' 1=1 and a.IS_REFUSE ='1' and a.IS_LEAVE ='1'
<include refid="tEmployeeInsurancePre_where"/> <include refid="tEmployeeInsurancePre_where"/>
</where> </where>
order by a.create_time desc order by a.create_time desc
...@@ -314,7 +317,7 @@ ...@@ -314,7 +317,7 @@
ELSE "" END as error_info ELSE "" END as error_info
FROM t_employee_insurance_pre a FROM t_employee_insurance_pre a
<where> <where>
1=1 and a.IS_REFUSE = '1' 1=1 and a.IS_REFUSE ='1' and a.IS_LEAVE ='1'
<include refid="tEmployeeInsurancePre_where"/> <include refid="tEmployeeInsurancePre_where"/>
</where> </where>
order by a.create_time desc order by a.create_time desc
...@@ -327,7 +330,7 @@ ...@@ -327,7 +330,7 @@
SELECT SELECT
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
FROM t_employee_insurance_pre a FROM t_employee_insurance_pre a
where a.process_status = '0' and a.IS_REFUSE = '1' and DATE_FORMAT(a.expected_collection_time,"%Y-%m-%d") = CURDATE() where a.process_status = '0' and a.IS_REFUSE ='1' and a.IS_LEAVE ='1' and DATE_FORMAT(a.expected_collection_time,"%Y-%m-%d") = CURDATE()
group by a.customer_user_loginname group by a.customer_user_loginname
</select> </select>
...@@ -336,6 +339,6 @@ ...@@ -336,6 +339,6 @@
id id
FROM t_employee_insurance_pre a FROM t_employee_insurance_pre a
<!-- 可发起状态有 0 1 2 5 改为 0 1 2 (待确认、待派单、派单失败) --> <!-- 可发起状态有 0 1 2 5 改为 0 1 2 (待确认、待派单、派单失败) -->
where a.process_status in ('0','1','2') and a.IS_REFUSE = '1' and DATE_FORMAT(a.expected_collection_time,"%Y-%m-%d") <![CDATA[ <= ]]> CURDATE() where a.process_status in ('0','1','2') and a.IS_REFUSE ='1' and a.IS_LEAVE ='1' and DATE_FORMAT(a.expected_collection_time,"%Y-%m-%d") <![CDATA[ <= ]]> CURDATE()
</select> </select>
</mapper> </mapper>
...@@ -683,5 +683,11 @@ public class TDispatchInfoPre extends BaseEntity { ...@@ -683,5 +683,11 @@ public class TDispatchInfoPre extends BaseEntity {
*/ */
@Schema(description = "是否拒绝入职: 0 是 1 ") @Schema(description = "是否拒绝入职: 0 是 1 ")
private String isRefuse; private String isRefuse;
/**
* 是否已确认离职: 0 是 1 否
* 2026-03-31 逻辑参考拒绝入职
*/
@Schema(description = "是否已确认离职: 0 是 1 ")
private String isLeave;
} }
...@@ -8,6 +8,7 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreVo; ...@@ -8,6 +8,7 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; 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.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.BaseSearchVO;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser; import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.MenuUtil; import com.yifu.cloud.plus.v1.yifu.common.dapr.util.MenuUtil;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog; import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
...@@ -458,6 +459,18 @@ public class TDispatchInfoPreController { ...@@ -458,6 +459,18 @@ public class TDispatchInfoPreController {
public Boolean updateRefuseFundPreInfo(@RequestBody String id) { public Boolean updateRefuseFundPreInfo(@RequestBody String id) {
return tDispatchInfoPreService.updateRefuseFundPreInfo(id); return tDispatchInfoPreService.updateRefuseFundPreInfo(id);
} }
/**
* @Author hgw
* @Description 离职确认更新非流程中的公积金待购买数据
* @Param
* @return
**/
@Operation(description = "离职确认更新非流程中的公积金待购买数据")
@Inner
@PostMapping("/updateLeaveFundPreInfo")
public Boolean updateLeaveFundPreInfo(@RequestBody String id) {
return tDispatchInfoPreService.updateLeaveFundPreInfo(id);
}
/** /**
* 派单当日9点统一推送确认信息 公积金可以通用 * 派单当日9点统一推送确认信息 公积金可以通用
...@@ -509,4 +522,22 @@ public class TDispatchInfoPreController { ...@@ -509,4 +522,22 @@ public class TDispatchInfoPreController {
public Boolean updateRefuseSocialPreInfo(@RequestBody String id) { public Boolean updateRefuseSocialPreInfo(@RequestBody String id) {
return tDispatchInfoPreService.updateRefuseSocialPreInfo(id); return tDispatchInfoPreService.updateRefuseSocialPreInfo(id);
} }
@Operation(description = "拒绝入职更新非流程中的社保待购买数据")
@Inner
@PostMapping("/updateLeaveSocialPreInfo")
public Boolean updateLeaveSocialPreInfo(@RequestBody String id) {
return tDispatchInfoPreService.updateLeaveSocialPreInfo(id);
}
/**
* 查询是否有处理中的自动化的合同(通过身份证与项目编码)
*/
@Operation(summary = "查询是否有处理中的自动化的合同(通过身份证与项目编码)", description = "查询是否有处理中的自动化的合同(通过身份证与项目编码)")
@Inner
@PostMapping("/inner/judgeHaveProcessingSocialOrFund" )
public Boolean judgeHaveProcessingSocialOrFund(@RequestBody BaseSearchVO paramVo) {
return tDispatchInfoPreService.judgeHaveProcessingSocialOrFund(paramVo);
}
} }
...@@ -7,6 +7,7 @@ import com.yifu.cloud.plus.v1.csp.vo.EmployeeRegistrationCustomerUserUpdateVo; ...@@ -7,6 +7,7 @@ import com.yifu.cloud.plus.v1.csp.vo.EmployeeRegistrationCustomerUserUpdateVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeePreSocialListVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeePreSocialListVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeRegistrationPreVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.BaseSearchVO;
import com.yifu.cloud.plus.v1.yifu.social.entity.TDispatchInfoPre; import com.yifu.cloud.plus.v1.yifu.social.entity.TDispatchInfoPre;
import com.yifu.cloud.plus.v1.yifu.social.vo.TDispatchInfoPreSearchVo; import com.yifu.cloud.plus.v1.yifu.social.vo.TDispatchInfoPreSearchVo;
...@@ -110,6 +111,10 @@ public interface TDispatchInfoPreService extends IService<TDispatchInfoPre> { ...@@ -110,6 +111,10 @@ public interface TDispatchInfoPreService extends IService<TDispatchInfoPre> {
R<TDispatchInfoPre> getInfoByRegistId(String registId,String type); R<TDispatchInfoPre> getInfoByRegistId(String registId,String type);
Boolean updateRefuseSocialPreInfo(String id); Boolean updateRefuseSocialPreInfo(String id);
Boolean updateLeaveSocialPreInfo(String id);
Boolean updateRefuseFundPreInfo(String id); Boolean updateRefuseFundPreInfo(String id);
Boolean updateLeaveFundPreInfo(String id);
boolean judgeHaveProcessingSocialOrFund(BaseSearchVO paramVo);
} }
...@@ -1082,6 +1082,17 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap ...@@ -1082,6 +1082,17 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap
return this.update(updateWrapper); return this.update(updateWrapper);
} }
@Override
public Boolean updateLeaveSocialPreInfo(String id) {
//更新未处理的社保待购买信息
LambdaUpdateWrapper<TDispatchInfoPre> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(TDispatchInfoPre::getIsLeave, CommonConstants.ZERO_STRING);
updateWrapper.in(TDispatchInfoPre::getTypeSub,CommonConstants.ZERO_STRING);
updateWrapper.in(TDispatchInfoPre::getProcessStatus, Arrays.asList("0", "1", "2", "4","8"));
updateWrapper.eq(TDispatchInfoPre::getRegisterId, id);
return this.update(updateWrapper);
}
@Override @Override
public Boolean updateRefuseFundPreInfo(String id) { public Boolean updateRefuseFundPreInfo(String id) {
...@@ -1093,4 +1104,34 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap ...@@ -1093,4 +1104,34 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap
updateWrapper.eq(TDispatchInfoPre::getRegisterId, id); updateWrapper.eq(TDispatchInfoPre::getRegisterId, id);
return this.update(updateWrapper); return this.update(updateWrapper);
} }
@Override
public Boolean updateLeaveFundPreInfo(String id) {
//删除未处理的公积金待购买信息
LambdaUpdateWrapper<TDispatchInfoPre> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(TDispatchInfoPre::getIsLeave, CommonConstants.ZERO_STRING);
updateWrapper.in(TDispatchInfoPre::getTypeSub,CommonConstants.ONE_STRING);
updateWrapper.in(TDispatchInfoPre::getProcessStatus, Arrays.asList("0", "1", "2", "4","8"));
updateWrapper.eq(TDispatchInfoPre::getRegisterId, id);
return this.update(updateWrapper);
}
// 获取处理中的自动化社保公积金(3待审核、5待办理、6办理中)
@Override
public boolean judgeHaveProcessingSocialOrFund(BaseSearchVO paramVo) {
if (Common.isNotNull(paramVo.getEmpIdCard()) && Common.isNotNull(paramVo.getDeptNo())) {
TDispatchInfoPre pre = baseMapper.selectOne(Wrappers.<TDispatchInfoPre>query().lambda()
.in(TDispatchInfoPre::getProcessStatus, Arrays.asList("3", "5", "6"))
.eq(TDispatchInfoPre::getIsRefuse, CommonConstants.ONE_STRING)
.eq(TDispatchInfoPre::getIsLeave, CommonConstants.ONE_STRING)
.eq(TDispatchInfoPre::getEmpIdcard, paramVo.getEmpIdCard())
.eq(TDispatchInfoPre::getDeptNo, paramVo.getDeptNo())
.eq(TDispatchInfoPre::getTypeSub, paramVo.getType())
.last(CommonConstants.LAST_ONE_SQL));
// 找到了才阻断,不允许离职确认
return pre != null;
} else {
return false;
}
}
} }
...@@ -213,6 +213,9 @@ ...@@ -213,6 +213,9 @@
<if test="tDispatchInfoPre.isRefuse != null and tDispatchInfoPre.isRefuse.trim() != ''"> <if test="tDispatchInfoPre.isRefuse != null and tDispatchInfoPre.isRefuse.trim() != ''">
AND a.IS_REFUSE = #{tDispatchInfoPre.isRefuse} AND a.IS_REFUSE = #{tDispatchInfoPre.isRefuse}
</if> </if>
<if test="tDispatchInfoPre.isLeave != null and tDispatchInfoPre.isLeave.trim() != ''">
AND a.IS_LEAVE = #{tDispatchInfoPre.isLeave}
</if>
<if test="tDispatchInfoPre.id != null and tDispatchInfoPre.id.trim() != ''"> <if test="tDispatchInfoPre.id != null and tDispatchInfoPre.id.trim() != ''">
AND a.ID = #{tDispatchInfoPre.id} AND a.ID = #{tDispatchInfoPre.id}
</if> </if>
...@@ -340,6 +343,9 @@ ...@@ -340,6 +343,9 @@
<if test="tDispatchInfoPre.isRefuse != null and tDispatchInfoPre.isRefuse.trim() != ''"> <if test="tDispatchInfoPre.isRefuse != null and tDispatchInfoPre.isRefuse.trim() != ''">
AND a.IS_REFUSE = #{tDispatchInfoPre.isRefuse} AND a.IS_REFUSE = #{tDispatchInfoPre.isRefuse}
</if> </if>
<if test="tDispatchInfoPre.isLeave != null and tDispatchInfoPre.isLeave.trim() != ''">
AND a.IS_LEAVE = #{tDispatchInfoPre.isLeave}
</if>
<if test="tDispatchInfoPre.id != null and tDispatchInfoPre.id.trim() != ''"> <if test="tDispatchInfoPre.id != null and tDispatchInfoPre.id.trim() != ''">
AND a.ID = #{tDispatchInfoPre.id} AND a.ID = #{tDispatchInfoPre.id}
</if> </if>
...@@ -678,7 +684,7 @@ ...@@ -678,7 +684,7 @@
DATE_FORMAT(t.APPLY_START_DATE,'%Y-%m-%d') <![CDATA[ <= ]]> DATE_FORMAT(CURDATE(),'%Y-%m-%d') and DATE_FORMAT(CURDATE(),'%Y-%m-%d') <![CDATA[ <= ]]> IFNULL(t.APPLY_END_DATE,DATE_FORMAT(CURDATE(),'%Y-%m-%d')) DATE_FORMAT(t.APPLY_START_DATE,'%Y-%m-%d') <![CDATA[ <= ]]> DATE_FORMAT(CURDATE(),'%Y-%m-%d') and DATE_FORMAT(CURDATE(),'%Y-%m-%d') <![CDATA[ <= ]]> IFNULL(t.APPLY_END_DATE,DATE_FORMAT(CURDATE(),'%Y-%m-%d'))
) c on c.DEPART_NAME = a.SOCIAL_HOUSEHOLD_NAME ) c on c.DEPART_NAME = a.SOCIAL_HOUSEHOLD_NAME
<where> <where>
a.DELETE_FLAG = '0' and a.IS_REFUSE ='1' a.DELETE_FLAG = '0' and a.IS_REFUSE ='1' and a.IS_LEAVE ='1'
<include refid="tDispatchInfoPre_other_where"/> <include refid="tDispatchInfoPre_other_where"/>
</where> </where>
GROUP BY a.id GROUP BY a.id
...@@ -693,7 +699,7 @@ ...@@ -693,7 +699,7 @@
,a.FUND_START_DATE ,a.FUND_START_DATE
FROM t_dispatch_info_pre a FROM t_dispatch_info_pre a
<where> <where>
a.DELETE_FLAG = '0' and a.IS_REFUSE ='1' a.DELETE_FLAG = '0' and a.IS_REFUSE ='1' and a.IS_LEAVE ='1'
<include refid="tDispatchInfoPre_other_where"/> <include refid="tDispatchInfoPre_other_where"/>
</where> </where>
order by a.create_time desc order by a.create_time desc
...@@ -728,7 +734,7 @@ ...@@ -728,7 +734,7 @@
if(#{type} = '1',concat('自动化手动-',a.customer_username),concat('自动化自动-',a.customer_username)) preName if(#{type} = '1',concat('自动化手动-',a.customer_username),concat('自动化自动-',a.customer_username)) preName
FROM t_dispatch_info_pre a,(select @i:=0) as itable FROM t_dispatch_info_pre a,(select @i:=0) as itable
<where> <where>
1=1 and a.IS_REFUSE='1' 1=1 and a.IS_REFUSE ='1' and a.IS_LEAVE ='1'
AND a.id in AND a.id in
<foreach item="idStr" index="index" collection="idList" open="(" separator="," close=")"> <foreach item="idStr" index="index" collection="idList" open="(" separator="," close=")">
#{idStr} #{idStr}
...@@ -765,7 +771,7 @@ ...@@ -765,7 +771,7 @@
) c on c.DEPART_NAME = a.PROVIDENT_HOUSEHOLD_NAME ) c on c.DEPART_NAME = a.PROVIDENT_HOUSEHOLD_NAME
,(select @i:=0) as itable ,(select @i:=0) as itable
<where> <where>
1=1 and a.IS_REFUSE='1' 1=1 and a.IS_REFUSE ='1' and a.IS_LEAVE ='1'
AND a.id in AND a.id in
<foreach item="idStr" index="index" collection="idList" open="(" separator="," close=")"> <foreach item="idStr" index="index" collection="idList" open="(" separator="," close=")">
#{idStr} #{idStr}
...@@ -784,7 +790,7 @@ ...@@ -784,7 +790,7 @@
where where
a.expected_collection_time is not null and type_sub = '0' a.expected_collection_time is not null and type_sub = '0'
and DATE_FORMAT(a.expected_collection_time,"%Y-%m-%d") <![CDATA[ <= ]]> CURDATE() and DATE_FORMAT(a.expected_collection_time,"%Y-%m-%d") <![CDATA[ <= ]]> CURDATE()
and a.process_status = '0' and a.IS_REFUSE='1' and a.process_status = '0' and a.IS_REFUSE ='1' and a.IS_LEAVE ='1'
group by a.customer_user_login_name group by a.customer_user_login_name
</select> </select>
...@@ -795,7 +801,7 @@ ...@@ -795,7 +801,7 @@
where where
a.expected_collection_time is not null and type_sub = '1' a.expected_collection_time is not null and type_sub = '1'
and DATE_FORMAT(a.expected_collection_time,"%Y-%m-%d") <![CDATA[ <= ]]> CURDATE() and DATE_FORMAT(a.expected_collection_time,"%Y-%m-%d") <![CDATA[ <= ]]> CURDATE()
and a.process_status = '0' and a.IS_REFUSE='1' and a.process_status = '0' and a.IS_REFUSE ='1' and a.IS_LEAVE ='1'
group by a.customer_user_login_name group by a.customer_user_login_name
</select> </select>
...@@ -808,7 +814,7 @@ ...@@ -808,7 +814,7 @@
and DATE_FORMAT(a.expected_collection_time,"%Y-%m-%d") <![CDATA[ <= ]]> CURDATE() and DATE_FORMAT(a.expected_collection_time,"%Y-%m-%d") <![CDATA[ <= ]]> CURDATE()
<!-- '1','2','4','8','9' 改为 '1','2'--> <!-- '1','2','4','8','9' 改为 '1','2'-->
and a.process_status in ('1','2') and a.process_status in ('1','2')
and a.type_sub = '0' and a.IS_REFUSE='1' and a.type_sub = '0' and a.IS_REFUSE ='1' and a.IS_LEAVE ='1'
</select> </select>
<select id="getAllUnDisDataIdFundList" resultType="java.lang.String"> <select id="getAllUnDisDataIdFundList" resultType="java.lang.String">
...@@ -819,6 +825,6 @@ ...@@ -819,6 +825,6 @@
a.expected_collection_time is not null a.expected_collection_time is not null
and DATE_FORMAT(a.expected_collection_time,"%Y-%m-%d") <![CDATA[ <= ]]> CURDATE() and DATE_FORMAT(a.expected_collection_time,"%Y-%m-%d") <![CDATA[ <= ]]> CURDATE()
and a.process_status in ('1','2','4','8','9') and a.process_status in ('1','2','4','8','9')
and a.type_sub = '1' and a.IS_REFUSE='1' and a.type_sub = '1' and a.IS_REFUSE ='1' and a.IS_LEAVE ='1'
</select> </select>
</mapper> </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