个税申报开关

This commit is contained in:
Harryxzy 2022-11-08 11:22:56 +08:00
parent dc4f4d9032
commit 1fb96be58b
8 changed files with 83 additions and 31 deletions

View File

@ -9,9 +9,11 @@ Oracle数据库中常见报错问题
-- 删除原表HRSA_SALARY_TEMPLATE数据
delete from HRSA_SALARY_TEMPLATE;
alter TABLE HRSA_SALARY_TEMPLATE MODIFY SALARY_ITEM_SETTING NULL;
alter table HRSA_SALARY_TEMPLATE modify salary_item_setting long;
alter table HRSA_SALARY_TEMPLATE modify salary_item_setting CLOB;
insert into HRSA_SALARY_TEMPLATE select * from HRSA_SALARY_TEMPLAT_TEMPT ;
alter TABLE HRSA_SALARY_TEMPLATE MODIFY SALARY_ITEM_SETTING NOT NULL;
drop table HRSA_SALARY_TEMPLAT_TEMPT;

View File

@ -16,6 +16,8 @@ import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.salaryacct.SalaryAcctRecordMapper;
import com.engine.salary.service.*;
import com.engine.salary.sys.service.SalarySysConfService;
import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl;
import com.engine.salary.util.SalaryDateUtil;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
@ -65,6 +67,10 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
return ServiceUtil.getService(SalarySendServiceImpl.class, user);
}
private SalarySysConfService getSalarySysConfService(User user){
return ServiceUtil.getService(SalarySysConfServiceImpl.class,user);
}
// private SalaryCheckResultService salaryCheckResultService;
//
// private SalaryCheckResultDetailService salaryCheckResultDetailService;
@ -85,6 +91,7 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
return ServiceUtil.getService(SalaryAcctReportServiceImpl.class, user);
}
@Override
public SalaryAcctRecordPO getById(Long id) {
return getSalaryAcctRecordMapper().getById(id);
@ -296,17 +303,8 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
//获取账套下的所有核算结果
List<SalaryAcctRecordPO> salaryAcctRecords = listByTaxCycle(taxCycleYearRange,salarySobIds);
// 如果某个月税款所属期还未申报不可以新建之后月份的薪资核算
SalaryAcctRecordPO notDeclaredSalaryAcctRecordPO = salaryAcctRecords.stream()
.filter(e -> !Objects.equals(e.getStatus(), SalaryAcctRecordStatusEnum.DECLARED.getValue())
&& e.getTaxCycle().before(SalaryDateUtil.localDateToDate(salarySobCycleDTO.getTaxCycle().atDay(1))))
.findAny()
.orElse(null);
if (Objects.nonNull(notDeclaredSalaryAcctRecordPO)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98751, "税款所属期{0}的薪资核算结果还未申报,不能新建税款所属期{1}的薪资核算")
.replace("{0}", SalaryDateUtil.localDate2YearMonth(notDeclaredSalaryAcctRecordPO.getTaxCycle()).toString())
.replace("{1}", salarySobCycleDTO.getTaxCycle().toString()));
}
// 是否关闭个税申报功能
Boolean haveClosedTaxDeclaration = getSalarySysConfService(user).haveClosedTaxDeclaration();
// 如果某个月税款所属期已经归档了不可以新建之前月份的薪资核算
SalaryAcctRecordPO hasArchivedSalaryAcctRecordPO = salaryAcctRecords.stream()
.filter(e -> Objects.equals(e.getStatus(), SalaryAcctRecordStatusEnum.ARCHIVED.getValue())
@ -318,17 +316,33 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
.replace("{0}", SalaryDateUtil.localDate2YearMonth(hasArchivedSalaryAcctRecordPO.getTaxCycle()).toString())
.replace("{1}", salarySobCycleDTO.getTaxCycle().toString()));
}
// 如果某个月税款所属期已经申报了不可以新建本月以及之前月份的薪资核算
SalaryAcctRecordPO hasDeclaredSalaryAcctRecordPO = salaryAcctRecords.stream()
.filter(e -> Objects.equals(e.getStatus(), SalaryAcctRecordStatusEnum.DECLARED.getValue())
&& e.getTaxCycle().compareTo(SalaryDateUtil.localDateToDate(salarySobCycleDTO.getTaxCycle().atDay(1))) >= 0)
.findAny()
.orElse(null);
if (Objects.nonNull(hasDeclaredSalaryAcctRecordPO)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98753, "税款所属期{0}的薪资核算结果已经申报,不能新建税款所属期{1}的薪资核算")
.replace("{0}", SalaryDateUtil.localDate2YearMonth(hasDeclaredSalaryAcctRecordPO.getTaxCycle()).toString())
.replace("{1}", salarySobCycleDTO.getTaxCycle().toString()));
if(!haveClosedTaxDeclaration){
// 开启了个税申报功能
// 如果某个月税款所属期还未申报不可以新建之后月份的薪资核算
SalaryAcctRecordPO notDeclaredSalaryAcctRecordPO = salaryAcctRecords.stream()
.filter(e -> !Objects.equals(e.getStatus(), SalaryAcctRecordStatusEnum.DECLARED.getValue())
&& e.getTaxCycle().before(SalaryDateUtil.localDateToDate(salarySobCycleDTO.getTaxCycle().atDay(1))))
.findAny()
.orElse(null);
if (Objects.nonNull(notDeclaredSalaryAcctRecordPO)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98751, "税款所属期{0}的薪资核算结果还未申报,不能新建税款所属期{1}的薪资核算")
.replace("{0}", SalaryDateUtil.localDate2YearMonth(notDeclaredSalaryAcctRecordPO.getTaxCycle()).toString())
.replace("{1}", salarySobCycleDTO.getTaxCycle().toString()));
}
// 如果某个月税款所属期已经申报了不可以新建本月以及之前月份的薪资核算
SalaryAcctRecordPO hasDeclaredSalaryAcctRecordPO = salaryAcctRecords.stream()
.filter(e -> Objects.equals(e.getStatus(), SalaryAcctRecordStatusEnum.DECLARED.getValue())
&& e.getTaxCycle().compareTo(SalaryDateUtil.localDateToDate(salarySobCycleDTO.getTaxCycle().atDay(1))) >= 0)
.findAny()
.orElse(null);
if (Objects.nonNull(hasDeclaredSalaryAcctRecordPO)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98753, "税款所属期{0}的薪资核算结果已经申报,不能新建税款所属期{1}的薪资核算")
.replace("{0}", SalaryDateUtil.localDate2YearMonth(hasDeclaredSalaryAcctRecordPO.getTaxCycle()).toString())
.replace("{1}", salarySobCycleDTO.getTaxCycle().toString()));
}
}
}
@ -454,7 +468,7 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "薪资所属月为空"));
}
// 查询税款所在年的该个税扣缴义务人所有薪资核算记录
//获取账套所属个税扣缴义务人的核算记录
// 获取账套所属个税扣缴义务人的核算记录
SalarySobPO salarySobPO = getSalarySobService(user).getById(salaryAcctRecordPO.getSalarySobId());
Long taxAgentId = salarySobPO.getTaxAgentId();
//查询扣缴义务人下的所有账套
@ -474,8 +488,12 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
}
//撤回工资单
getSalarySendService(user).revokeSalaryBill(salaryAcctRecordId);
//删除个税申报表(个税申报表个税申报表详情往期累计情况)
getTaxDeclarationService(user).delete(salaryAcctRecordPO);
Boolean haveClosedTaxDeclaration = getSalarySysConfService(user).haveClosedTaxDeclaration();
if(!haveClosedTaxDeclaration){
// 开启了个税申报功能
// 删除个税申报表(个税申报表个税申报表详情往期累计情况)
getTaxDeclarationService(user).delete(salaryAcctRecordPO);
}
// 更新薪资核算记录的状态
salaryAcctRecordPO.setStatus(SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue());
salaryAcctRecordPO.setUpdateTime(new Date());

View File

@ -45,4 +45,9 @@ public class SalarySysConstant {
*/
public static final String AES_ENCRYPT_IN_PROGRESS = "AES_ENCRYPT_IN_PROGRESS";
public static final String ENCRYPT_IN_PROGRESS = "ENCRYPT_PROGRESS_";
/**
* 需要申报功能
*/
public static final String TAX_DECLARATION_FUNCTION = "taxDeclarationFunction";
}

View File

@ -39,4 +39,9 @@ public class AppSettingSaveParam {
*/
private String isOpenEncrypt;
/**
* 是否关闭个税申报
*/
private String operateTaxDeclaration;
}

View File

@ -12,8 +12,8 @@ import org.apache.commons.lang3.StringUtils;
* @version 1.0
**/
public enum TaxDeclarationFunctionEnum implements BaseEnum<String> {
OPEN("OPEN", "开启", 1),
CLOSURE("CLOSURE", "关闭", 1),
OPEN("OPEN", "开启申报功能", 1),
CLOSURE("CLOSURE", "关闭申报功能", 1),
REBOOT("REBOOT", "重启", 1);
private String value;

View File

@ -29,6 +29,12 @@ public interface SalarySysConfService {
*/
boolean operateTaxDeclarationFunction(TaxDeclarationFunctionEnum flag);
/**
* 是否关闭了个税申报功能
* @return BOOLEAN
*/
public Boolean haveClosedTaxDeclaration();
SalarySysConfPO getOneByCode(String code);
List<SalarySysConfPO> listSome(SalarySysConfPO build);

View File

@ -138,9 +138,9 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe
@Override
public boolean operateTaxDeclarationFunction(TaxDeclarationFunctionEnum flag) {
Date date = new Date();
SalarySysConfPO taxDeclarationFunction = getSalarySysConfMapper().getOneByCode("taxDeclarationFunction");
SalarySysConfPO taxDeclarationFunction = getSalarySysConfMapper().getOneByCode(TAX_DECLARATION_FUNCTION);
if (taxDeclarationFunction == null) {
taxDeclarationFunction = SalarySysConfPO.builder().id(IdGenerator.generate()).confKey("taxDeclarationFunction").confValue(flag.getValue()).title(flag.getDefaultLabel()).module("taxDeclaration").orderWeight(0).createTime(date).updateTime(date).deleteType(0).build();
taxDeclarationFunction = SalarySysConfPO.builder().id(IdGenerator.generate()).confKey(TAX_DECLARATION_FUNCTION).confValue(flag.getValue()).title(flag.getDefaultLabel()).module("taxDeclaration").orderWeight(0).createTime(date).updateTime(date).deleteType(0).build();
getSalarySysConfMapper().insertIgnoreNull(taxDeclarationFunction);
} else {
TaxDeclarationFunctionEnum oldFunctionEnum = TaxDeclarationFunctionEnum.parseByValue(taxDeclarationFunction.getConfValue());
@ -165,6 +165,22 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe
return true;
}
/**
* @description 是否关闭需要申报功能
* @return Boolean
* @author Harryxzy
* @date 2022/11/7 17:05
*/
public Boolean haveClosedTaxDeclaration(){
SalarySysConfPO taxDeclarationFunction = salarySysConfService.getOneByCode(TAX_DECLARATION_FUNCTION);
if(taxDeclarationFunction != null && taxDeclarationFunction.getConfValue().equals(TaxDeclarationFunctionEnum.CLOSURE.getValue())){
// 关闭
return true;
}
return false;
}
@Override
public SalarySysConfPO getOneByCode(String code) {
return getSalarySysConfMapper().getOneByCode(code);

View File

@ -51,16 +51,16 @@ public class SalarySystemConfigController {
*
* @param request
* @param response
* @param flag
* @param param
* @return
*/
@POST
@Path("/operateTaxDeclarationFunction")
@Produces(MediaType.APPLICATION_JSON)
public String operateTaxDeclarationFunction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody String flag) {
public String operateTaxDeclarationFunction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AppSettingSaveParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<TaxDeclarationFunctionEnum, Boolean>(user).run(getSalarySystemConfigWrapper(user)::operateTaxDeclarationFunction, TaxDeclarationFunctionEnum.parseByValue(flag));
return new ResponseResult<TaxDeclarationFunctionEnum, Boolean>(user).run(getSalarySystemConfigWrapper(user)::operateTaxDeclarationFunction, TaxDeclarationFunctionEnum.parseByValue(param.getOperateTaxDeclaration()));
}
/**