This commit is contained in:
钱涛 2023-04-23 18:00:30 +08:00
parent f4ebcf987c
commit 5c936a0334
4 changed files with 45 additions and 26 deletions

View File

@ -6,7 +6,6 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctCalculateBO;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctCalculatePriorityBO;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultBO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctProgressDTO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
@ -26,6 +25,7 @@ import com.engine.salary.service.impl.*;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.valid.ValidUtil;
import com.google.common.collect.Lists;
import com.weaver.util.threadPool.ThreadPoolUtil;
import com.weaver.util.threadPool.constant.ModulePoolEnum;
@ -35,6 +35,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang.math.NumberUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import weaver.hrm.User;
@ -148,17 +149,26 @@ public class SalaryAcctManager extends Service {
* 核算已归档后需要重新核算某一项
*/
public void supplementAcctRecord(SalaryAcctSupplementParam param) {
ValidUtil.doValidator(param);
List<Long> salaryItemIds = Arrays.stream(param.getSalaryItemStrIds().split(",")).map(Long::valueOf).collect(Collectors.toList());
param.setSalaryItemIds(salaryItemIds);
if(CollectionUtils.isEmpty(salaryItemIds)){
throw new SalaryRunTimeException("薪资项目为空!");
}
calculate(param);
}
/**
* 薪资核算-核算
*
*
* @param calculateParam 薪资核算的参数
*/
public void calculate(SalaryAcctSupplementParam calculateParam) {
log.info("开始核算V1{}", calculateParam);
log.info("补算开始{}", calculateParam);
//当前登陆人员
DataCollectionEmployee simpleEmployee = new DataCollectionEmployee();
@ -245,12 +255,7 @@ public class SalaryAcctManager extends Service {
// 10根据id查询其他合并计税的薪资核算记录
List<SalaryAcctRecordPO> otherSalaryAcctRecordPOS = getSalaryAcctRecordService(user).listById4OtherConsolidatedTax(salaryAcctRecordPO.getId());
// 11查询本次核算人员
List<SalaryAcctEmployeePO> salaryAcctEmployeePOS;
if (CollectionUtils.isEmpty(calculateParam.getIds())) {
salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId());
} else {
salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listByIds(calculateParam.getIds());
}
List<SalaryAcctEmployeePO> salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId());
if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(103378, "薪资核算人员不能为空"));
}
@ -314,10 +319,7 @@ public class SalaryAcctManager extends Service {
} catch (Exception e) {
log.info("薪资核算出错:{}", e.getMessage(), e);
// throw new SalaryRunTimeException(e);
getSalaryAcctProgressService(user).fail("SalaryCacheKey.ACCT_PROGRESS" + calculateParam.getSalaryAcctRecordId(), SalaryI18nUtil.getI18nLabel(99642, "薪资核算出错") + ": " + e.getMessage());
} finally {
// 数据库字段加密用
}
}
@ -331,15 +333,15 @@ public class SalaryAcctManager extends Service {
// 查询薪资核算结果的临时存储
List<SalaryAcctResultTempPO> salaryAcctResultTempPOS = getSalaryAcctResultTempService(user).listByCalculateKey(calculateKey);
// 删除原来的薪资核算结果
if (CollectionUtils.isNotEmpty(calculateParam.getIds())) {
getSalaryAcctResultMapper().deleteBySalaryAcctEmpIds(calculateParam.getIds());
} else {
getSalaryAcctResultMapper().deleteBySalaryAcctRecordIds(Collections.singleton(calculateParam.getSalaryAcctRecordId()));
getSalaryAcctReportService(user).deleteBySalaryAcctRecordId(calculateParam.getSalaryAcctRecordId());
}
List<Long> salaryItemIds = calculateParam.getSalaryItemIds();
getSalaryAcctResultMapper().deleteBySalaryAcctRecordIdAndSalaryItemIds(calculateParam.getSalaryAcctRecordId(), salaryItemIds);
// 保存薪资的薪资核算结果
List<SalaryAcctResultPO> salaryAcctResultPOS = SalaryAcctResultBO.convert2ResultPO(salaryAcctResultTempPOS);
// batchSave(salaryAcctResultPOS);
List<SalaryAcctResultPO> salaryAcctResultPOS = salaryAcctResultTempPOS.stream().filter(salaryAcctResultTempPO -> salaryItemIds.contains(salaryAcctResultTempPO.getSalaryItemId())).map(e -> {
SalaryAcctResultPO salaryAcctResult = new SalaryAcctResultPO();
BeanUtils.copyProperties(e, salaryAcctResult);
return salaryAcctResult;
}).collect(Collectors.toList());
getSalaryAcctResultService(user).batchSave(salaryAcctResultPOS);
//保存核算报表数据
// List<SalaryAcctResultReportPO> salaryAcctResultReportPOS = SalaryAcctResultReportBO.convert2ReportPO(salaryAcctResultTempPOS, calculateParam.getEmps());
// getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS);

View File

@ -6,7 +6,7 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Collection;
import java.util.List;
/**
* 薪资补充核算的参数
@ -22,13 +22,12 @@ import java.util.Collection;
@AllArgsConstructor
public class SalaryAcctSupplementParam {
//核算人员的id,不是employeeId而是salaryAcctEmpId
private Collection<Long> ids;
@DataCheck(require = true,message = "参数错误薪资核算记录ID不能为空")
private Long salaryAcctRecordId;
@DataCheck(require = true,message = "参数错误薪资项目ID不能为空")
private String salaryItemIds;
private String salaryItemStrIds;
private List<Long> salaryItemIds;
}

View File

@ -96,7 +96,7 @@ public interface SalaryAcctResultMapper {
void deleteBySalaryAcctEmpIds(@Param("salaryAcctEmpIds") Collection<Long> salaryAcctEmpIds);
/**
* 根据薪资核算id薪资项目id删除薪资核算结果
* 根据薪资核算人员id薪资项目id删除薪资核算结果
*
* @param salaryAcctEmpIds
* @param salaryItemIds
@ -104,6 +104,14 @@ public interface SalaryAcctResultMapper {
void deleteByAcctEmpIdsAndSalaryItemIds(@Param("salaryAcctEmpIds") Collection<Long> salaryAcctEmpIds,
@Param("salaryItemIds") Collection<Long> salaryItemIds);
/**
*
* @param salaryAcctRecordId
* @param salaryItemIds
*/
void deleteBySalaryAcctRecordIdAndSalaryItemIds(@Param("salaryAcctRecordId") Long salaryAcctRecordId,
@Param("salaryItemIds") Collection<Long> salaryItemIds);
/**
* 根据薪资核算id删除薪资核算结果
*

View File

@ -535,6 +535,16 @@
</foreach>
</delete>
<delete id="deleteBySalaryAcctRecordIdAndSalaryItemIds">
DELETE FROM hrsa_salary_acct_result
WHERE delete_type = 0
AND salary_acct_record_id =#{salaryAcctRecordId}
AND salary_item_id IN
<foreach collection="salaryItemIds" open="(" item="salaryItemId" separator="," close=")">
#{salaryItemId}
</foreach>
</delete>
<delete id="deleteByIds">
DELETE FROM hrsa_salary_acct_result
WHERE delete_type = 0