宁波精华 - 删除离职账套中存在的核算人员temp

This commit is contained in:
Harryxzy 2024-05-20 13:25:24 +08:00
parent 97ebbf19f4
commit 336bb1fc9d
5 changed files with 70 additions and 0 deletions

View File

@ -117,4 +117,11 @@ public interface SalaryAcctEmployeeMapper {
* @return 返回记录没有返回null
*/
SalaryAcctEmployeePO getById(Long id);
/**
* 根据核算记录id员工id删除
* @param salaryAcctRecordId
* @param empIdList
*/
void deleteByIdAndEmpIds(@Param("id") Long salaryAcctRecordId, @Param("empIds") List<Long> empIdList);
}

View File

@ -1131,6 +1131,17 @@
</foreach>
</delete>
<delete id="deleteByIdAndEmpIds">
update hrsa_salary_acct_emp
set delete_type=1
where delete_type=0
and id=#{id}
and employee_id in
<foreach collection="empIds" open="(" item="employeeId" separator="," close=")">
#{employeeId}
</foreach>
</delete>
<resultMap id="BaseResultMap" type="com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO">
<result column="id" property="id"/>

View File

@ -256,4 +256,9 @@ public interface SalaryAcctEmployeeService {
*/
List<SalaryAcctEmployeePO> listByTaxAgentAndSalaryMonth(List<Long> taxAgentIds, Set<Date> salaryMonths);
/**
* 宁波精华二开 - 删除离职账套中包含的人员
* @param salaryAcctRecordId
*/
void deleteResignationEmp(Long salaryAcctRecordId);
}

View File

@ -2,9 +2,11 @@ package com.engine.salary.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import com.api.formmode.mybatis.util.SqlProxyHandle;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.common.LocalDateRange;
import com.engine.salary.config.SalaryElogConfig;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.hrmelog.entity.dto.LoggerContext;
@ -40,6 +42,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import weaver.general.BaseBean;
import weaver.hrm.User;
import java.util.*;
@ -121,11 +124,17 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct
@Override
public List<SalaryAcctEmployeePO> listBySalaryAcctRecordId(Long salaryAcctRecordId) {
if (salaryAcctRecordId == null) {
return null;
}
return getSalaryAcctEmployeeMapper().listSome(SalaryAcctEmployeePO.builder().salaryAcctRecordId(salaryAcctRecordId).build());
}
@Override
public List<SalaryAcctEmployeePO> listBySalaryAcctRecordIds(Collection<Long> salaryAcctRecordIds) {
if (CollectionUtils.isEmpty(salaryAcctRecordIds)) {
return Collections.emptyList();
}
return getSalaryAcctEmployeeMapper().listSome(SalaryAcctEmployeePO.builder().salaryAcctRecordIds(salaryAcctRecordIds).build());
}
@ -754,4 +763,40 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct
return getSalaryAcctEmployeeMapper().listSome(SalaryAcctEmployeePO.builder().taxAgentIds(taxAgentIds).salaryMonths(salaryMonths).build());
}
@Override
public void deleteResignationEmp(Long salaryAcctRecordId) {
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId);
if (salaryAcctRecordPO == null) {
throw new SalaryRunTimeException("薪资核算记录不存在或已被删除!");
}
BaseBean baseBean = new BaseBean();
List<Long> needDeleteSobIds = Arrays.asList(baseBean.getPropValue("nbjhSalary", "needDeleteSobIds").split(","))
.stream()
.filter(NumberUtil::isNumber)
.map(Long::valueOf).collect(Collectors.toList());
if (needDeleteSobIds.contains(salaryAcctRecordPO.getSalarySobId())) {
List<Long> resignationSobIds = Arrays.asList(baseBean.getPropValue("nbjhSalary", "dimissionSobIds").split(","))
.stream()
.filter(NumberUtil::isNumber)
.map(Long::valueOf).collect(Collectors.toList());
// TODO 是否需要限制与当前账套在同一个个税扣缴义务人下
// 获取本月离职账套中的薪资核算记录
LocalDateRange dateRange = new LocalDateRange(salaryAcctRecordPO.getSalaryMonth(), salaryAcctRecordPO.getSalaryMonth());
List<SalaryAcctRecordPO> salaryAcctRecordPOS = getSalaryAcctRecordService(user).listBySalarySobIdsAndSalaryMonth(resignationSobIds, dateRange);
List<Long> resignationAcctRecordIds = SalaryEntityUtil.properties(salaryAcctRecordPOS, SalaryAcctRecordPO::getId, Collectors.toList());
// 获取离职账套中本月所包含的人员
List<SalaryAcctEmployeePO> resignationAcctEmployeeList = listBySalaryAcctRecordIds(resignationAcctRecordIds);
List<Long> empIdList = resignationAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getEmployeeId).collect(Collectors.toList());
// 从本次核算中删除离职人员
deleteByIdAndEmpIds(salaryAcctRecordId, empIdList);
}
}
private void deleteByIdAndEmpIds(Long salaryAcctRecordId, List<Long> empIdList) {
if (salaryAcctRecordId == null || CollectionUtils.isEmpty(empIdList)) {
return;
}
getSalaryAcctEmployeeMapper().deleteByIdAndEmpIds(salaryAcctRecordId, empIdList);
}
}

View File

@ -56,6 +56,8 @@ public class SalaryAcctEmployeeWrapper extends Service {
* @return
*/
public PageInfo<SalaryAccEmployeeListDTO> listPage(SalaryAcctEmployeeQueryParam queryParam) {
// 宁波精华二开 - 删除离职账套中包含的人员
getSalaryAcctEmployeeService(user).deleteResignationEmp(queryParam.getSalaryAcctRecordId());
// 查询薪资核算人员人员
PageInfo<SalaryAcctEmployeePO> page = getSalaryAcctEmployeeService(user).listPageByParam(queryParam);
// 转换成列表dto