115 lines
4.6 KiB
Java
115 lines
4.6 KiB
Java
package com.engine.salary.service.impl;
|
|
|
|
import com.engine.common.util.ServiceUtil;
|
|
import com.engine.core.impl.Service;
|
|
import com.engine.salary.constant.SalaryDefaultTenantConstant;
|
|
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
|
|
import com.engine.salary.entity.taxagent.param.TaxAgentSaveBaseParam;
|
|
import com.engine.salary.entity.taxagent.po.TaxAgentBasePO;
|
|
import com.engine.salary.enums.SalaryOnOffEnum;
|
|
import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum;
|
|
import com.engine.salary.exception.SalaryRunTimeException;
|
|
import com.engine.salary.mapper.taxagent.TaxAgentBaseMapper;
|
|
import com.engine.salary.service.SIAccountService;
|
|
import com.engine.salary.service.SalaryAcctRecordService;
|
|
import com.engine.salary.service.TaxAgentBaseService;
|
|
import com.engine.salary.util.SalaryI18nUtil;
|
|
import com.engine.salary.util.db.MapperProxyFactory;
|
|
import dm.jdbc.util.IdGenerator;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import weaver.hrm.User;
|
|
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 个税扣缴义务人基本信息
|
|
* <p>Copyright: Copyright (c) 2022</p>
|
|
* <p>Company: 泛微软件</p>
|
|
*
|
|
* @author qiantao
|
|
* @version 1.0
|
|
**/
|
|
public class TaxAgentBaseServiceImpl extends Service implements TaxAgentBaseService {
|
|
|
|
private TaxAgentBaseMapper getTaxAgentBaseMapper() {
|
|
return MapperProxyFactory.getProxy(TaxAgentBaseMapper.class);
|
|
}
|
|
|
|
private SalaryAcctRecordService getSalaryAcctRecordService(User user) {
|
|
return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user);
|
|
}
|
|
|
|
private SIAccountService getSIAccountService(User user) {
|
|
return ServiceUtil.getService(SIAccountServiceImpl.class, user);
|
|
}
|
|
|
|
public TaxAgentBaseServiceImpl() {
|
|
}
|
|
|
|
@Override
|
|
public Boolean isOpenDevolution() {
|
|
TaxAgentBasePO base = getBaseInfo();
|
|
return (base != null && base.getDevolutionStatus() == 1) ? Boolean.TRUE : Boolean.FALSE;
|
|
}
|
|
|
|
@Override
|
|
public TaxAgentBasePO getBaseInfo() {
|
|
List<TaxAgentBasePO> list = getTaxAgentBaseMapper().listAll();
|
|
return CollectionUtils.isEmpty(list) ? null : list.get(0);
|
|
}
|
|
|
|
@Override
|
|
public String save(TaxAgentSaveBaseParam saveBaseParam) {
|
|
if (saveBaseParam.getDevolutionStatus() == null) {
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误"));
|
|
}
|
|
// 检查使用中的数据
|
|
boolean isUnable = checkUsedData();
|
|
if (isUnable) {
|
|
if (saveBaseParam.getDevolutionStatus()) {
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(117395, "当前有未归档的核算数据,全部归档后才可以启用分权"));
|
|
} else {
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(117396, "当前有未归档的核算数据,全部归档后才可以停用分权"));
|
|
}
|
|
}
|
|
TaxAgentBasePO base = getBaseInfo();
|
|
Date now = new Date();
|
|
Integer devolutionStatus = saveBaseParam.getDevolutionStatus() ? SalaryOnOffEnum.ON.getValue() : SalaryOnOffEnum.OFF.getValue();
|
|
if (base == null) {
|
|
getTaxAgentBaseMapper().insertIgnoreNull(
|
|
TaxAgentBasePO.builder()
|
|
.id(IdGenerator.generate())
|
|
.devolutionStatus(devolutionStatus)
|
|
.createTime(now)
|
|
.updateTime(now)
|
|
.creator((long) user.getUID())
|
|
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
|
.build());
|
|
} else {
|
|
base.setUpdateTime(now);
|
|
base.setDevolutionStatus(devolutionStatus);
|
|
getTaxAgentBaseMapper().updateIgnoreNull(base);
|
|
}
|
|
return StringUtils.EMPTY;
|
|
}
|
|
|
|
/**
|
|
* 检查是否有未归档数据
|
|
*
|
|
* @return
|
|
*/
|
|
private boolean checkUsedData() {
|
|
// 检查是否核算
|
|
// todo 1.社保福利档案是否有核算未归档
|
|
Boolean checkedValue = false;//= getSIAccountService(user).changeAdminUnfiledCheck();
|
|
// todo 2.薪资核算是否有核算未归档
|
|
List<SalaryAcctRecordPO> salaryAcctRecords = getSalaryAcctRecordService(user).listByStatus(SalaryAcctRecordStatusEnum.NOT_ARCHIVED);// getSalaryAcctRecordService(user).listByStatusAndEmployeeId(SalaryAcctRecordStatusEnum.NOT_ARCHIVED, currentTenantKey);
|
|
if (CollectionUtils.isNotEmpty(salaryAcctRecords) || checkedValue) {
|
|
return Boolean.TRUE;
|
|
}
|
|
return Boolean.FALSE;
|
|
}
|
|
}
|