weaver-hrm-salary/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServic...

285 lines
15 KiB
Java
Raw Normal View History

2022-04-01 18:25:24 +08:00
package com.engine.salary.service.impl;
import com.engine.core.impl.Service;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.salaryarchive.dto.TaxAgentAdjustRecordListDTO;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveTaxAgentQueryParam;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveTaxAgentSaveParam;
import com.engine.salary.entity.salaryarchive.param.TaxAgentAdjustRecordQueryParam;
import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.archive.SalaryArchiveMapper;
import com.engine.salary.mapper.archive.SalaryArchiveTaxAgentMapper;
import com.engine.salary.service.SalaryArchiveTaxAgentService;
import com.engine.salary.service.TaxAgentService;
import com.engine.salary.util.SalaryI18nUtil;
2022-04-02 15:34:27 +08:00
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.PageUtil;
2022-04-01 18:25:24 +08:00
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
2022-04-02 15:34:27 +08:00
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
2022-04-01 18:25:24 +08:00
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
import java.util.List;
/**
* 薪资档案-个税扣缴义务人
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
public class SalaryArchiveTaxAgentServiceImpl extends Service implements SalaryArchiveTaxAgentService {
private static final Logger log = LoggerFactory.getLogger(SalaryArchiveTaxAgentServiceImpl.class);
private SalaryArchiveMapper salaryArchiveMapper;
private SalaryArchiveTaxAgentMapper salaryArchiveTaxAgentMapper;
private TaxAgentService taxAgentService;
// private SalaryBatchService salaryBatchService;
@Override
public SalaryArchiveTaxAgentPO getById(Long salaryArchiveTaxAgentId) {
return salaryArchiveTaxAgentMapper.getById(salaryArchiveTaxAgentId);
}
2022-04-02 15:34:27 +08:00
@Override
public PageInfo<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordListPage(TaxAgentAdjustRecordQueryParam queryParam) {
PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize());
List<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordListDTOS = salaryArchiveTaxAgentMapper.taxAgentAdjustRecordList(queryParam);
PageInfo<TaxAgentAdjustRecordListDTO> pageInfo = new PageInfo<TaxAgentAdjustRecordListDTO>(taxAgentAdjustRecordListDTOS, TaxAgentAdjustRecordListDTO.class);
return pageInfo;
}
2022-04-01 18:25:24 +08:00
@Override
public List<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam queryParam) {
return salaryArchiveTaxAgentMapper.taxAgentAdjustRecordList(queryParam);
}
/**
* 获取未生效
*
* @param salaryArchiveId
* @return
*/
private SalaryArchiveTaxAgentPO getIneffectiveTaxAgent(Long salaryArchiveId) {
List<SalaryArchiveTaxAgentPO> ineffectiveTaxAgentList = salaryArchiveTaxAgentMapper.getIneffectiveTaxAgentList(SalaryArchiveTaxAgentQueryParam.builder().salaryArchiveId(salaryArchiveId).effectiveTime(new Date()).build());
return CollectionUtils.isNotEmpty(ineffectiveTaxAgentList) ? ineffectiveTaxAgentList.get(0) : null;
}
/**
* 获取当前已生效
*
* @param salaryArchiveId
* @return
*/
@Override
public SalaryArchiveTaxAgentPO getEffectiveTaxAgent(Long salaryArchiveId) {
List<SalaryArchiveTaxAgentPO> effectiveTaxAgentList = salaryArchiveTaxAgentMapper.getEffectiveTaxAgentList(SalaryArchiveTaxAgentQueryParam.builder().salaryArchiveId(salaryArchiveId).effectiveTime(new Date()).build());
return CollectionUtils.isNotEmpty(effectiveTaxAgentList) ? effectiveTaxAgentList.get(0) : null;
}
@Override
public String saveTaxAgent(SalaryArchiveTaxAgentSaveParam saveParam) {
// 校验参数
SalaryArchiveTaxAgentSaveParam.checkParam(saveParam);
// 薪资档案
SalaryArchivePO salaryArchive = salaryArchiveMapper.getById(saveParam.getSalaryArchiveId());
// 获取当前已生效
SalaryArchiveTaxAgentPO effectiveTaxAgent = getEffectiveTaxAgent(saveParam.getSalaryArchiveId());
// 获取当前已生效之前的
List<SalaryArchiveTaxAgentPO> salaryArchiveTaxAgents = Lists.newArrayList();
if (effectiveTaxAgent != null) {
salaryArchiveTaxAgents = salaryArchiveTaxAgentMapper.getTaxAgentLtTimeBySalaryArchiveId(
SalaryArchiveTaxAgentQueryParam
.builder()
.salaryArchiveId(saveParam.getSalaryArchiveId())
.effectiveTime(effectiveTaxAgent.getEffectiveTime())
.build());
}
// 获取未生效数据
SalaryArchiveTaxAgentPO ineffectiveTaxAgent = getIneffectiveTaxAgent(saveParam.getSalaryArchiveId());
// 待保存生效时间
Date saveEffectiveTime = saveParam.getEffectiveTime();
// 当天
Date today = new Date();
// 1.检验是否可以调整
if (effectiveTaxAgent != null) {
// 当前已经生效的时间
Date effectiveTime = effectiveTaxAgent.getEffectiveTime();
// 1.1 如果早于<当前已生效
if (saveEffectiveTime.before(effectiveTime)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100429, "生效日期不可早于当前已生效的调整日期"));
// 1.2 如果等于当前已生效
} else if (saveEffectiveTime.equals(effectiveTime)) {
if (CollectionUtils.isNotEmpty(salaryArchiveTaxAgents) && salaryArchiveTaxAgents.get(0).getTaxAgentId().equals(saveParam.getTaxAgentId())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100432, "调整前后不可相同"));
}
if (ineffectiveTaxAgent != null && ineffectiveTaxAgent.getTaxAgentId().equals(saveParam.getTaxAgentId())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100434, "与未生效的调整后不可相同"));
}
// 1.3 如果>已经生效且<=今天
} else if (saveEffectiveTime.after(effectiveTime) && !saveEffectiveTime.after(today)) {
if (effectiveTaxAgent.getTaxAgentId().equals(saveParam.getTaxAgentId())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100432, "调整前后不可相同"));
}
if (ineffectiveTaxAgent != null && ineffectiveTaxAgent.getTaxAgentId().equals(saveParam.getTaxAgentId())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100434, "与未生效的调整后不可相同"));
}
// 1.4 如果>今天
} else if (saveEffectiveTime.after(today) && effectiveTaxAgent.getTaxAgentId().equals(saveParam.getTaxAgentId())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100432, "调整前后不可相同"));
}
} else if (ineffectiveTaxAgent != null && ineffectiveTaxAgent.getTaxAgentId().equals(saveParam.getTaxAgentId())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100434, "与未生效的调整后不可相同"));
}
// 2.数据处理
// 2.数据处理,有的就先删后增
if (effectiveTaxAgent != null && saveEffectiveTime.equals(effectiveTaxAgent.getEffectiveTime())) {
salaryArchiveTaxAgentMapper.delete(SalaryArchiveTaxAgentPO.builder().id(effectiveTaxAgent.getId()).build());
}
if (ineffectiveTaxAgent != null && saveEffectiveTime.after(today)) {
salaryArchiveTaxAgentMapper.delete(SalaryArchiveTaxAgentPO.builder().id(ineffectiveTaxAgent.getId()).build());
}
insertTaxAgent(salaryArchive, saveParam);
// 3.todo 日志处理
return StringUtils.EMPTY;
}
/**
* 插入
*
* @param salaryArchive
* @param saveParam
*/
private void insertTaxAgent(SalaryArchivePO salaryArchive, SalaryArchiveTaxAgentSaveParam saveParam) {
long employeeId = user.getUID();
Date now = new Date();
SalaryArchiveTaxAgentPO salaryArchiveTaxAgent = SalaryArchiveTaxAgentPO.builder()
// .id(IdGenerator.generate())
.salaryArchiveId(saveParam.getSalaryArchiveId())
.employeeId(salaryArchive.getEmployeeId())
.effectiveTime(saveParam.getEffectiveTime())
.adjustReason(saveParam.getAdjustReason())
// 调整后
.taxAgentId(saveParam.getTaxAgentId())
.operator(employeeId)
.operateTime(now)
.createTime(now)
.updateTime(now)
.creator(employeeId)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build();
salaryArchiveTaxAgentMapper.insertIgnoreNull(salaryArchiveTaxAgent);
}
@Override
public String deleteTaxAgent(Long salaryArchiveTaxAgentId) {
SalaryArchiveTaxAgentPO salaryArchiveTaxAgent = salaryArchiveTaxAgentMapper.getById(salaryArchiveTaxAgentId);
if (salaryArchiveTaxAgent == null) {
return StringUtils.EMPTY;
}
if (salaryArchiveTaxAgent.getEffectiveTime().after(new Date())) {
salaryArchiveTaxAgent.setDeleteType(1);
// 删除未生效数据
salaryArchiveTaxAgentMapper.delete(salaryArchiveTaxAgent);
}
return StringUtils.EMPTY;
}
2022-04-02 15:34:27 +08:00
@Override
public XSSFWorkbook exportAdjustRecordList(TaxAgentAdjustRecordQueryParam queryParam) {
return null;
2022-04-01 18:25:24 +08:00
// // 1.工作簿名称
// String nameI18n = SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 99978, "个税扣缴义务人调整记录");
// excelSheetData.setSheetName(nameI18n);
// String[] header = {
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 85429, "姓名"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 86187, "员工状态"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 86185, "部门"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 85433, "调整前"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 85434, "调整后"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 85431, "调整原因"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 85904, "生效日期"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 85435, "操作人"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 85436, "操作时间"),
// SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 84961, "备注")
// };
// // 2.表头
// excelSheetData.setHeaders(Collections.singletonList(header));
//
// // 获取记录
// List<TaxAgentAdjustRecordListDTO> list = salaryArchiveTaxAgentMapper.taxAgentAdjustRecordList(queryParam, currentTenantKey);
// List<TaxAgentAdjustRecordListDTO> listAll = salaryArchiveTaxAgentMapper.taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam.builder().build(), currentTenantKey);
// // 个税扣缴义务人
// Collection<TaxAgentListDTO> taxAgentList = taxAgentService.findAll(currentTenantKey);
// // 人员信息赋值
// list.forEach(m -> {
// if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) {
// listAll.removeIf(a -> a.getId().equals(m.getId()));
// }
// Optional<TaxAgentAdjustRecordListDTO> optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId())).findFirst();
// m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : "");
// Optional<TaxAgentListDTO> optionalBefore = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustBefore())).findFirst();
// m.setAdjustBefore(optionalBefore.isPresent() ? optionalBefore.get().getName() : "");
// Optional<TaxAgentListDTO> optionalAfter = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustAfter())).findFirst();
// m.setAdjustAfter(optionalAfter.isPresent() ? optionalAfter.get().getName() : "");
//
// m.setEmployeeStatus(SalaryUserStatusEnum.getDefaultLabelByValue(m.getEmployeeStatus(), currentEmployeeId, currentTenantKey));
// m.setAdjustReason(SalaryArchiveTaxAgentAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason(), currentEmployeeId, currentTenantKey));
// });
// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// List<List<Object>> rows = new ArrayList<>();
// for (TaxAgentAdjustRecordListDTO dto : list) {
// List<Object> row = new ArrayList<>();
// row.add(dto.getUsername());
// row.add(dto.getEmployeeStatus());
// row.add(dto.getDepartmentName());
// row.add(dto.getAdjustBefore());
// row.add(dto.getAdjustAfter());
// row.add(dto.getAdjustReason());
// row.add(dto.getEffectiveTime() + "");
// row.add(dto.getOperator());
// row.add(format.format(dto.getOperateTime()));
// row.add(dto.getDescription());
// rows.add(row);
// }
// // 3.表数据
// excelSheetData.setRows(rows);
//
// sheetList.add(excelSheetData);
//
// salaryBatchService.simpleExportExcel(ExportExcelInfo.builder()
// .bizId(map.get("biz").toString())
// .flag(true)
// .userId(currentEmployeeId)
// .eteamsId(eteamsId)
// .tenantKey(currentTenantKey)
// .operator(username)
// .module(map.get("module").toString())
// .fileName(nameI18n + SalaryDateUtil.getFormatLocalDateTime(LocalDateTime.now()))
// .handlerName(map.get("function").toString())
// .dataType(nameI18n)
// .function(map.get("function").toString()).build(), sheetList);
2022-04-02 15:34:27 +08:00
}
2022-04-01 18:25:24 +08:00
@Override
public SalaryArchiveTaxAgentPO getAdjustBeforeTaxAgent(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent) {
List<SalaryArchiveTaxAgentPO> salaryArchiveTaxAgents = salaryArchiveTaxAgentMapper.getAdjustBeforeTaxAgent(
SalaryArchiveTaxAgentPO
.builder()
.salaryArchiveId(salaryArchiveTaxAgent.getSalaryArchiveId())
.effectiveTime(salaryArchiveTaxAgent.getEffectiveTime())
.build());
return CollectionUtils.isNotEmpty(salaryArchiveTaxAgents) ? salaryArchiveTaxAgents.get(0) : null;
}
}