个税对接,个税申报接口
This commit is contained in:
parent
615813c478
commit
50658012a1
|
|
@ -0,0 +1,36 @@
|
|||
create table hrsa_tax_declare_record
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int default 0,
|
||||
tenant_key varchar2(10),
|
||||
tax_agent_id number,
|
||||
salary_month varchar2(10),
|
||||
tax_cycle varchar2(10),
|
||||
remark varchar2(1000),
|
||||
request_id varchar2(100),
|
||||
tax_declare_type number,
|
||||
tax_declare_status number
|
||||
);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add display_update_icon number;
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_pay_amount varchar2(255);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add person_num int;
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_declare_error_msg varchar2(1000);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_paid_amount varchar2(255);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_pure_paid_amount varchar2(255);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
create table hrsa_tax_declare_record
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int default 0,
|
||||
tenant_key varchar2(10),
|
||||
tax_agent_id number,
|
||||
salary_month varchar2(10),
|
||||
tax_cycle varchar2(10),
|
||||
remark varchar2(1000),
|
||||
request_id varchar2(100),
|
||||
tax_declare_type number,
|
||||
tax_declare_status number
|
||||
);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add display_update_icon number;
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_pay_amount varchar2(255);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add person_num int;
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_declare_error_msg varchar2(1000);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_paid_amount varchar2(255);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_pure_paid_amount varchar2(255);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
create table hrsa_tax_declare_record
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int default 0,
|
||||
tenant_key varchar2(10),
|
||||
tax_agent_id number,
|
||||
salary_month varchar2(10),
|
||||
tax_cycle varchar2(10),
|
||||
remark varchar2(1000),
|
||||
request_id varchar2(100),
|
||||
tax_declare_type number,
|
||||
tax_declare_status number
|
||||
);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add display_update_icon number;
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_pay_amount varchar2(255);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add person_num int;
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_declare_error_msg varchar2(1000);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_paid_amount varchar2(255);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_pure_paid_amount varchar2(255);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
create table hrsa_tax_declare_record
|
||||
(
|
||||
id bigint primary key comment 'ID' ,
|
||||
create_time datetime comment '创建时间' ,
|
||||
update_time datetime comment '修改时间' ,
|
||||
creator bigint comment '创建人id' ,
|
||||
delete_type int default 0 comment '是否删除' ,
|
||||
tenant_key varchar(10) comment '租户KEY' ,
|
||||
tax_agent_id bigint comment '个税扣缴义务人id' ,
|
||||
salary_month varchar(10) comment '薪资所属月' ,
|
||||
tax_cycle varchar(10) comment '税款所属期' ,
|
||||
remark varchar(1000) comment '备注' ,
|
||||
request_id varchar(100) comment '供应商第三方系统返回的requestid' ,
|
||||
tax_declare_type tinyint comment '申报类型' ,
|
||||
tax_declare_status tinyint comment '申报状态'
|
||||
)
|
||||
;
|
||||
|
||||
alter table hrsa_tax_declare_record add display_update_icon tinyint
|
||||
;
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_pay_amount varchar(255)
|
||||
;
|
||||
|
||||
alter table hrsa_tax_declare_record add person_num int
|
||||
;
|
||||
alter table hrsa_tax_declare_record add tax_declare_error_msg varchar(1000)
|
||||
;
|
||||
alter table hrsa_tax_declare_record add tax_paid_amount varchar(255)
|
||||
;
|
||||
alter table hrsa_tax_declare_record add tax_pure_paid_amount varchar(255)
|
||||
;
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
create table hrsa_tax_declare_record
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int default 0,
|
||||
tenant_key varchar2(10),
|
||||
tax_agent_id number,
|
||||
salary_month varchar2(10),
|
||||
tax_cycle varchar2(10),
|
||||
remark varchar2(1000),
|
||||
request_id varchar2(100),
|
||||
tax_declare_type number,
|
||||
tax_declare_status number
|
||||
)
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add display_update_icon number
|
||||
/
|
||||
alter table hrsa_tax_declare_record add tax_pay_amount varchar2(255)
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add person_num int
|
||||
/
|
||||
alter table hrsa_tax_declare_record add tax_declare_error_msg varchar2(1000)
|
||||
/
|
||||
alter table hrsa_tax_declare_record add tax_paid_amount varchar2(255)
|
||||
/
|
||||
alter table hrsa_tax_declare_record add tax_pure_paid_amount varchar2(255)
|
||||
/
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
create table hrsa_tax_declare_record
|
||||
(
|
||||
id bigint primary key ,
|
||||
create_time timestamp,
|
||||
update_time timestamp,
|
||||
creator bigint,
|
||||
delete_type int default 0,
|
||||
tenant_key varchar(10),
|
||||
tax_agent_id bigint,
|
||||
salary_month varchar(10),
|
||||
tax_cycle varchar(10),
|
||||
remark varchar(1000),
|
||||
request_id varchar(100),
|
||||
tax_declare_type smallint,
|
||||
tax_declare_status smallint
|
||||
);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add display_update_icon smallint;
|
||||
/
|
||||
alter table hrsa_tax_declare_record add tax_pay_amount varchar(255);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add person_num int;
|
||||
/
|
||||
alter table hrsa_tax_declare_record add tax_declare_error_msg varchar(1000);
|
||||
/
|
||||
alter table hrsa_tax_declare_record add tax_paid_amount varchar(255);
|
||||
/
|
||||
alter table hrsa_tax_declare_record add tax_pure_paid_amount varchar(255);
|
||||
/
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
create table hrsa_tax_declare_record
|
||||
(
|
||||
id bigint primary key ,
|
||||
create_time datetime,
|
||||
update_time datetime,
|
||||
creator bigint,
|
||||
delete_type int default 0,
|
||||
tenant_key nvarchar(10),
|
||||
tax_agent_id bigint,
|
||||
salary_month nvarchar(10),
|
||||
tax_cycle nvarchar(10),
|
||||
remark nvarchar(1000),
|
||||
request_id nvarchar(100),
|
||||
tax_declare_type tinyint,
|
||||
tax_declare_status tinyint
|
||||
)
|
||||
GO
|
||||
|
||||
|
||||
alter table hrsa_tax_declare_record add display_update_icon tinyint
|
||||
GO
|
||||
alter table hrsa_tax_declare_record add tax_pay_amount nvarchar(255)
|
||||
GO
|
||||
|
||||
alter table hrsa_tax_declare_record add person_num int
|
||||
GO
|
||||
alter table hrsa_tax_declare_record add tax_declare_error_msg nvarchar(1000)
|
||||
GO
|
||||
alter table hrsa_tax_declare_record add tax_paid_amount nvarchar(255)
|
||||
GO
|
||||
alter table hrsa_tax_declare_record add tax_pure_paid_amount nvarchar(255)
|
||||
GO
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
create table hrsa_tax_declare_record
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int default 0,
|
||||
tenant_key varchar2(10),
|
||||
tax_agent_id number,
|
||||
salary_month varchar2(10),
|
||||
tax_cycle varchar2(10),
|
||||
remark varchar2(1000),
|
||||
request_id varchar2(100),
|
||||
tax_declare_type number,
|
||||
tax_declare_status number
|
||||
);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add display_update_icon number;
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_pay_amount varchar2(255);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add person_num int;
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_declare_error_msg varchar2(1000);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_paid_amount varchar2(255);
|
||||
/
|
||||
|
||||
alter table hrsa_tax_declare_record add tax_pure_paid_amount varchar2(255);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package com.engine.salary.mapper.taxagent;
|
||||
|
||||
/**
|
||||
* @description: 个税申报
|
||||
* @author: xiajun
|
||||
* @modified By: xiajun
|
||||
* @date: Created in 2022/11/2 5:46 PM
|
||||
* @version:v1.0
|
||||
*/
|
||||
public interface TaxDeclareRecordMapper {
|
||||
}
|
||||
|
|
@ -0,0 +1,187 @@
|
|||
package com.engine.salary.service;
|
||||
|
||||
import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationRateDTO;
|
||||
import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO;
|
||||
import com.engine.salary.entity.taxdeclaration.po.TaxDeclareRecordPO;
|
||||
|
||||
import java.time.YearMonth;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* @description: 个税申报
|
||||
* @author: xiajun
|
||||
* @modified By: xiajun
|
||||
* @date: Created in 2022/11/2 5:48 PM
|
||||
* @version:v1.0
|
||||
*/
|
||||
public interface TaxDeclareRecordService {
|
||||
|
||||
/**
|
||||
* 查询个税申报记录
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
TaxDeclareRecordPO getById(Long id);
|
||||
|
||||
// /**
|
||||
// * 查询个税申报记录
|
||||
// *
|
||||
// * @param ids
|
||||
// * @param tenantKey
|
||||
// * @return
|
||||
// */
|
||||
// List<TaxDeclareRecordPO> listByIds(Collection<Long> ids, String tenantKey);
|
||||
//
|
||||
// /**
|
||||
// * 查询个税申报记录
|
||||
// *
|
||||
// * @param taxCycleRange
|
||||
// * @param tenantKey
|
||||
// * @return
|
||||
// */
|
||||
// List<TaxDeclareRecordPO> listByTaxCycleRange(YearMonthRange taxCycleRange, String tenantKey);
|
||||
//
|
||||
// /**
|
||||
// * 根据个税扣缴义务人id、税款所属期查询个税申报记录
|
||||
// *
|
||||
// * @param taxAgentIds
|
||||
// * @param taxCycle
|
||||
// * @param tenantKey
|
||||
// * @return
|
||||
// */
|
||||
// List<TaxDeclareRecordPO> listByTaxCycleAndTaxAgentIds(YearMonth taxCycle, Collection<Long> taxAgentIds, String tenantKey);
|
||||
//
|
||||
// /**
|
||||
// * 根据个税扣缴义务人id、薪资所属月查询个税申报记录
|
||||
// *
|
||||
// * @param salaryMonth
|
||||
// * @param taxAgentIds
|
||||
// * @param tenantKey
|
||||
// * @return
|
||||
// */
|
||||
// List<TaxDeclareRecordPO> listBySalaryMonthAndTaxAgentIds(YearMonth salaryMonth, Collection<Long> taxAgentIds, String tenantKey);
|
||||
//
|
||||
// /**
|
||||
// * 查询个税申报记录
|
||||
// *
|
||||
// * @param queryParam
|
||||
// * @param tenantKey
|
||||
// * @return
|
||||
// */
|
||||
// Page<TaxDeclareRecordPO> listPageByParam(TaxDeclarationListQueryParam queryParam, Long employeeId, String tenantKey);
|
||||
//
|
||||
// /**
|
||||
// * 生成申报表
|
||||
// *
|
||||
// * @param saveParam
|
||||
// * @param employeeId
|
||||
// * @param tenantKey
|
||||
// */
|
||||
// void save(TaxDeclarationSaveParam saveParam, Long employeeId, String tenantKey);
|
||||
|
||||
|
||||
/**
|
||||
* 刷新数据
|
||||
*
|
||||
* @param id
|
||||
* @param employeeId
|
||||
* @param tenantKey
|
||||
*/
|
||||
void refreshData(Long id, Long employeeId, String tenantKey);
|
||||
|
||||
/**
|
||||
* 更新个税申报表的待刷新数据的标识
|
||||
*
|
||||
* @param id
|
||||
* @param employeeId
|
||||
* @param tenantKey
|
||||
*/
|
||||
void updateIcon(Long id, Integer displayIcon, Long employeeId, String tenantKey);
|
||||
|
||||
/**
|
||||
* 因为薪资核算结果发生变动,所以需要更新个税申报表的待刷新数据的标识
|
||||
*
|
||||
* @param taxCycle
|
||||
* @param taxAgentIds
|
||||
* @param tenantKey
|
||||
*/
|
||||
void updateByTaxCycleAndTaxAgentIds(YearMonth taxCycle, Collection<Long> taxAgentIds, String tenantKey);
|
||||
|
||||
/**
|
||||
* 判断是否有权限可查看个税申报表
|
||||
*
|
||||
* @param taxDeclaration
|
||||
* @param employeeId
|
||||
* @param tenantKey
|
||||
* @return
|
||||
*/
|
||||
boolean checkByAuthority(TaxDeclarationPO taxDeclaration, Long employeeId, String tenantKey);
|
||||
|
||||
/**
|
||||
* 根据id删除
|
||||
*
|
||||
* @param ids
|
||||
* @param tenantKey
|
||||
*/
|
||||
void deleteByIds(Collection<Long> ids, String tenantKey);
|
||||
|
||||
/**
|
||||
* 个税申报
|
||||
*
|
||||
* @param id
|
||||
* @param tenantKey
|
||||
*/
|
||||
void declare(Long id, Long employeeId, String tenantKey);
|
||||
|
||||
/**
|
||||
* 个税申报获取反馈
|
||||
*
|
||||
* @param id
|
||||
* @param tenantKey
|
||||
*/
|
||||
void getDeclareFeedback(Long id, TaxDeclarationRateDTO taxDeclarationRate, Long employeeId, String tenantKey);
|
||||
|
||||
/**
|
||||
* 作废
|
||||
*
|
||||
* @param id
|
||||
* @param tenantKey
|
||||
*/
|
||||
void cancelDeclare(Long id, Long employeeId, String tenantKey);
|
||||
|
||||
/**
|
||||
* 获取作废反馈
|
||||
*
|
||||
* @param id
|
||||
* @param tenantKey
|
||||
*/
|
||||
void getCancelFeedback(Long id, TaxDeclarationRateDTO taxDeclarationRate, Long employeeId, String tenantKey);
|
||||
|
||||
/**
|
||||
* 更正申报
|
||||
*
|
||||
* @param id
|
||||
* @param employeeId
|
||||
* @param tenantKey
|
||||
*/
|
||||
void updateDeclare(Long id, Long employeeId, String tenantKey);
|
||||
|
||||
/**
|
||||
* 税局端申报状态查询
|
||||
*
|
||||
* @param id
|
||||
* @param employeeId
|
||||
* @param tenantKey
|
||||
*/
|
||||
String queryDeclareStatus(Long id, Long employeeId, String tenantKey);
|
||||
|
||||
/**
|
||||
* 税局端申报明细查询
|
||||
*
|
||||
* @param id
|
||||
* @param employeeId
|
||||
* @param tenantKey
|
||||
*/
|
||||
String queryCompanyIncomes(Long id, Long employeeId, String tenantKey);
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -7,6 +7,7 @@ import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationListDTO;
|
|||
import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationDetailListQueryParam;
|
||||
import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam;
|
||||
import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam;
|
||||
import com.engine.salary.entity.taxdeclaration.param.TaxDeclareRecordParam;
|
||||
import com.engine.salary.service.TaxDeclarationExcelService;
|
||||
import com.engine.salary.service.TaxDeclarationService;
|
||||
import com.engine.salary.service.impl.TaxDeclarationExcelServiceImpl;
|
||||
|
|
@ -16,9 +17,12 @@ import com.engine.salary.util.SalaryDateUtil;
|
|||
import com.engine.salary.util.page.PageInfo;
|
||||
import com.engine.salary.wrapper.TaxDeclarationDetailWrapper;
|
||||
import com.engine.salary.wrapper.TaxDeclarationWrapper;
|
||||
import com.engine.salary.wrapper.TaxDeclareRecordWrapper;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.v3.oas.annotations.parameters.RequestBody;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import weaver.hrm.HrmUserVarify;
|
||||
import weaver.hrm.User;
|
||||
|
||||
|
|
@ -33,6 +37,9 @@ import java.io.UnsupportedEncodingException;
|
|||
import java.net.URLEncoder;
|
||||
import java.text.ParseException;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
@Slf4j
|
||||
|
|
@ -54,6 +61,11 @@ public class TaxDeclarationController {
|
|||
return ServiceUtil.getService(TaxDeclarationDetailWrapper.class, user);
|
||||
}
|
||||
|
||||
private TaxDeclareRecordWrapper getTaxDeclareRecordWrapper(User user) {
|
||||
return ServiceUtil.getService(TaxDeclareRecordWrapper.class, user);
|
||||
}
|
||||
|
||||
|
||||
//个税申报表列表
|
||||
@POST
|
||||
@Path("/list")
|
||||
|
|
@ -139,4 +151,288 @@ public class TaxDeclarationController {
|
|||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 刷新个税申报表的待刷新标识
|
||||
*
|
||||
* @param param 更新参数
|
||||
* @return
|
||||
*/
|
||||
@Path("/updateIcon")
|
||||
@ApiOperation("刷新个税申报表的待刷新标识")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String updateIcon(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody TaxDeclareRecordParam param) {
|
||||
taxDeclareRecordWrapper.updateIcon(param.getTaxDeclareRecordId(), UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey());
|
||||
return WeaResult.success(null);
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<Long, TaxDeclarationInfoDTO>(user).run(getTaxDeclarationWrapper(user)::getTaxDeclarationInfoById, taxDeclarationId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 个税申报表生成
|
||||
*
|
||||
* @param ids 个税申报记录id
|
||||
* @return
|
||||
*/
|
||||
@Path("/delete")
|
||||
@ApiOperation("个税申报表生成")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<Object> delete(@RequestBody Collection<Long> ids) {
|
||||
taxDeclareRecordWrapper.delete(ids, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey());
|
||||
return WeaResult.success(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 个税申报表是否已经生成
|
||||
*
|
||||
* @param index 进度缓存索引
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getRate")
|
||||
@ApiOperation("个税申报表是否已经生成")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<TaxDeclarationRateDTO> getRate(@RequestParam(value = "index") String index) {
|
||||
TaxDeclarationRateDTO rateDTO = taxDeclareRecordWrapper.getRate(index, TenantContext.getCurrentTenantKey());
|
||||
return WeaResult.success(rateDTO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取个税申报记录下的个税申报表TAB
|
||||
*
|
||||
* @param id 个税申报记录id
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getTaxDeclarationTab")
|
||||
@ApiOperation("获取个税申报记录下的个税申报表TAB")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<List<TaxDeclarationTabDTO>> getTaxDeclarationTab(@RequestParam(value = "id") Long id) {
|
||||
List<TaxDeclarationTabDTO> taxDeclarationTab = taxDeclareRecordWrapper.getTaxDeclarationTab(id, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey());
|
||||
return WeaResult.success(taxDeclarationTab);
|
||||
}
|
||||
|
||||
/**
|
||||
* 在线申报
|
||||
*
|
||||
* @param taxDeclareRecordParam 在线申报参数
|
||||
* @return
|
||||
*/
|
||||
@Path("/declare")
|
||||
@ApiOperation("在线申报")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<Object> declare(@RequestBody @Validated TaxDeclareRecordParam taxDeclareRecordParam) {
|
||||
String cacheKey = taxDeclareRecordWrapper.declare(taxDeclareRecordParam.getTaxDeclareRecordId(), UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey());
|
||||
return WeaResult.success(cacheKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取在线申报反馈
|
||||
*
|
||||
* @param taxDeclareRecordParam 申报反馈参数
|
||||
* @return
|
||||
*/
|
||||
@Path("/getDeclareFeedback")
|
||||
@ApiOperation("获取在线申报反馈")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<Object> getDeclareFeedback(@RequestBody @Validated TaxDeclareRecordParam taxDeclareRecordParam) {
|
||||
String cacheKey = taxDeclareRecordWrapper.getDeclareFeedback(taxDeclareRecordParam.getTaxDeclareRecordId(), UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey());
|
||||
return WeaResult.success(cacheKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 作废
|
||||
*
|
||||
* @param taxDeclareRecordParam 作废参数
|
||||
* @return
|
||||
*/
|
||||
@Path("/cancel")
|
||||
@ApiOperation("作废")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<Object> cancel(@RequestBody @Validated TaxDeclareRecordParam taxDeclareRecordParam) {
|
||||
String cacheKey = taxDeclareRecordWrapper.cancelDeclare(taxDeclareRecordParam.getTaxDeclareRecordId(), UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey());
|
||||
return WeaResult.success(cacheKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取作废反馈
|
||||
*
|
||||
* @param taxDeclareRecordParam 作废反馈参数
|
||||
* @return
|
||||
*/
|
||||
@Path("/getCancelFeedback")
|
||||
@ApiOperation("获取作废反馈")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<Object> getCancelFeedback(@RequestBody @Validated TaxDeclareRecordParam taxDeclareRecordParam) {
|
||||
String cacheKey = taxDeclareRecordWrapper.getCancelFeedback(taxDeclareRecordParam.getTaxDeclareRecordId(), UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey());
|
||||
return WeaResult.success(cacheKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更正申报
|
||||
*
|
||||
* @param taxDeclareRecordParam 更正申报参数
|
||||
* @return
|
||||
*/
|
||||
@Path("/updateDeclare")
|
||||
@ApiOperation("更正申报")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<Object> updateDeclare(@RequestBody @Validated TaxDeclareRecordParam taxDeclareRecordParam) {
|
||||
String cacheKey = taxDeclareRecordWrapper.updateDeclare(taxDeclareRecordParam.getTaxDeclareRecordId(), UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey());
|
||||
return WeaResult.success(cacheKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 税局端申报状态查询
|
||||
*
|
||||
* @param taxDeclareRecordParam 查询参数
|
||||
* @return
|
||||
*/
|
||||
@Path("/queryDeclareStatus")
|
||||
@ApiOperation("税局端申报状态查询")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<Object> queryDeclareStatus(@RequestBody @Validated TaxDeclareRecordParam taxDeclareRecordParam) {
|
||||
String res = taxDeclareRecordWrapper.queryDeclareStatus(taxDeclareRecordParam.getTaxDeclareRecordId(), UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey());
|
||||
return WeaResult.success(res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 税局端申报明细查询
|
||||
*
|
||||
* @param taxDeclareRecordParam 查询申报明细参数
|
||||
* @return
|
||||
*/
|
||||
@Path("/queryCompanyIncomes")
|
||||
@ApiOperation("税局端申报明细查询")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<Object> queryCompanyIncomes(@RequestBody @Validated TaxDeclareRecordParam taxDeclareRecordParam) {
|
||||
String res = taxDeclareRecordWrapper.queryCompanyIncomes(taxDeclareRecordParam.getTaxDeclareRecordId(), UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey());
|
||||
return WeaResult.success(res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新数据
|
||||
*
|
||||
* @param taxDeclareRecordParam 刷新数据参数
|
||||
* @return
|
||||
*/
|
||||
@Path("/refreshData")
|
||||
@ApiOperation("刷新数据")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<Object> refreshData(@RequestBody @Validated TaxDeclareRecordParam taxDeclareRecordParam) {
|
||||
String cacheKey = taxDeclareRecordWrapper.refreshData(taxDeclareRecordParam.getTaxDeclareRecordId(), UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey());
|
||||
return WeaResult.success(cacheKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 个税申报表详情列表
|
||||
*
|
||||
* @param queryParam 查询条件
|
||||
* @return
|
||||
*/
|
||||
@Path("/detail/list")
|
||||
@ApiOperation("个税申报表申报数据列表")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<WeaTable<?>> listTaxDeclarationValue(@RequestBody TaxDeclarationValueListQueryParam queryParam) {
|
||||
WeaTable<?> weaTable = taxDeclareRecordWrapper.listValuePage(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey());
|
||||
return WeaResult.success(weaTable);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出个税申报表申报数据
|
||||
*
|
||||
* @param queryParam 导出参数
|
||||
* @return
|
||||
*/
|
||||
@Path("/detail/export")
|
||||
@ApiOperation("导出个税申报表申报数据")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<Map<String, Object>> exportTaxDeclaration(@RequestBody @Validated TaxDeclarationValueListQueryParam queryParam) {
|
||||
Map<String, Object> map = taxDeclareRecordWrapper.exportTaxDeclarationValue(queryParam, UserContext.getCurrentUser());
|
||||
return WeaResult.success(map);
|
||||
}
|
||||
|
||||
/**
|
||||
* 个税申报表申报数据-人员未报送列表
|
||||
*
|
||||
* @param queryParam 查询条件
|
||||
* @return
|
||||
*/
|
||||
@Path("/employee/list4NotDeclare")
|
||||
@ApiOperation("个税申报表申报数据-人员未报送列表")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<WeaTable<AbnormalEmployeeListDTO>> listEmployee4NotDeclare(@RequestBody @Validated AbnormalEmployeeListQueryParam queryParam) {
|
||||
WeaTable<AbnormalEmployeeListDTO> weaTable = taxDeclareRecordWrapper.listEmployeePage4NotDeclare(queryParam, TenantContext.getCurrentTenantKey());
|
||||
return WeaResult.success(weaTable);
|
||||
}
|
||||
|
||||
/**
|
||||
* 个税申报表申报数据-报送人员无申报数据列表
|
||||
*
|
||||
* @param queryParam 查询条件
|
||||
* @return
|
||||
*/
|
||||
@Path("/employee/list4NoValue")
|
||||
@ApiOperation("个税申报表申报数据-报送人员无申报数据列表")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<WeaTable<AbnormalEmployeeListDTO>> listEmployee4NoValue(@RequestBody @Validated AbnormalEmployeeListQueryParam queryParam) {
|
||||
WeaTable<AbnormalEmployeeListDTO> weaTable = taxDeclareRecordWrapper.listEmployeePage4NoValue(queryParam, TenantContext.getCurrentTenantKey());
|
||||
return WeaResult.success(weaTable);
|
||||
}
|
||||
|
||||
/**
|
||||
* 个税申报表申报数据-申报失败列表
|
||||
*
|
||||
* @param queryParam 查询条件
|
||||
* @return
|
||||
*/
|
||||
@Path("/employee/list4Fail")
|
||||
@ApiOperation("个税申报表申报数据-申报失败列表")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<WeaTable<FailEmployeeListDTO>> listEmployee4Fail(@RequestBody @Validated AbnormalEmployeeListQueryParam queryParam) {
|
||||
WeaTable<FailEmployeeListDTO> weaTable = taxDeclareRecordWrapper.listEmployeePage4Fail(queryParam, TenantContext.getCurrentTenantKey());
|
||||
return WeaResult.success(weaTable);
|
||||
}
|
||||
|
||||
/**
|
||||
* 个税申报表申报数据-导出人员未报送列表
|
||||
*
|
||||
* @param queryParam 查询条件
|
||||
* @return
|
||||
*/
|
||||
@Path("/employee/export4NotDeclare")
|
||||
@ApiOperation("个税申报表申报数据-导出人员未报送列表")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<Map<String, Object>> exportEmployee4NotDeclare(@RequestBody @Validated AbnormalEmployeeListQueryParam queryParam) {
|
||||
Map<String, Object> map = taxDeclareRecordWrapper.exportEmployee4NotDeclare(queryParam, UserContext.getCurrentUser());
|
||||
return WeaResult.success(map);
|
||||
}
|
||||
|
||||
/**
|
||||
* 个税申报表申报数据-导出报送人员无申报数据列表
|
||||
*
|
||||
* @param queryParam 查询条件
|
||||
* @return
|
||||
*/
|
||||
@Path("/employee/export4NoValue")
|
||||
@ApiOperation("个税申报表申报数据-导出报送人员无申报数据列表")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<Map<String, Object>> exportEmployee4NoValue(@RequestBody @Validated AbnormalEmployeeListQueryParam queryParam) {
|
||||
Map<String, Object> map = taxDeclareRecordWrapper.exportEmployee4NoValue(queryParam, UserContext.getCurrentUser());
|
||||
return WeaResult.success(map);
|
||||
}
|
||||
|
||||
/**
|
||||
* 个税申报表申报数据-导出申报失败列表
|
||||
*
|
||||
* @param queryParam 导出参数
|
||||
* @return
|
||||
*/
|
||||
@Path("/employee/export4Fail")
|
||||
@ApiOperation("个税申报表申报数据-导出申报失败列表")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public WeaResult<Map<String, Object>> exportEmployee4Fail(@RequestBody @Validated AbnormalEmployeeListQueryParam queryParam) {
|
||||
Map<String, Object> map = taxDeclareRecordWrapper.exportEmployee4Fail(queryParam, UserContext.getCurrentUser());
|
||||
return WeaResult.success(map);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,753 @@
|
|||
package com.engine.salary.wrapper;
|
||||
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.service.SalaryCacheService;
|
||||
import com.engine.salary.service.TaxAgentService;
|
||||
import com.engine.salary.service.TaxDeclarationExcelService;
|
||||
import com.engine.salary.service.TaxDeclarationService;
|
||||
import com.weaver.common.component.form.WeaForm;
|
||||
import com.weaver.common.component.table.WeaTable;
|
||||
import com.weaver.common.component.table.page.Page;
|
||||
import com.weaver.common.component.table.permission.Permission;
|
||||
import com.weaver.common.distribution.genid.IdGenerator;
|
||||
import com.weaver.common.hr.util.Util;
|
||||
import com.weaver.common.hrm.service.HrmCommonEmployeeService;
|
||||
import com.weaver.common.threadPool.ThreadPoolUtil;
|
||||
import com.weaver.common.threadPool.constant.ModulePoolEnum;
|
||||
import com.weaver.common.threadPool.entity.LocalRunnable;
|
||||
import com.weaver.datasecurity.interceptor.DSTenantKeyThreadVar;
|
||||
import com.weaver.framework.util.JsonUtil;
|
||||
import com.weaver.hrm.salary.cache.SalaryCacheKey;
|
||||
import com.weaver.hrm.salary.common.excel.ExcelExportParam;
|
||||
import com.weaver.hrm.salary.constant.SalaryConstant;
|
||||
import com.weaver.hrm.salary.entity.taxagent.po.TaxAgentPO;
|
||||
import com.weaver.hrm.salary.entity.taxdeclaration.dto.*;
|
||||
import com.weaver.hrm.salary.entity.taxdeclaration.param.AbnormalEmployeeListQueryParam;
|
||||
import com.weaver.hrm.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam;
|
||||
import com.weaver.hrm.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam;
|
||||
import com.weaver.hrm.salary.entity.taxdeclaration.param.TaxDeclarationValueListQueryParam;
|
||||
import com.weaver.hrm.salary.entity.taxdeclaration.po.*;
|
||||
import com.weaver.hrm.salary.enums.salarysob.IncomeCategoryEnum;
|
||||
import com.weaver.hrm.salary.enums.taxdeclaration.TaxAgentRangeEnum;
|
||||
import com.weaver.hrm.salary.enums.taxdeclaration.TaxDeclareStatusEnum;
|
||||
import com.weaver.hrm.salary.enums.taxdeclaration.TaxDeclareTypeEnum;
|
||||
import com.weaver.hrm.salary.exception.SalaryNullException;
|
||||
import com.weaver.hrm.salary.exception.SalaryRunTimeException;
|
||||
import com.weaver.hrm.salary.service.*;
|
||||
import com.weaver.hrm.salary.util.*;
|
||||
import com.weaver.teams.domain.EntityType;
|
||||
import com.weaver.teams.domain.user.SimpleEmployee;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.compress.utils.Lists;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.YearMonth;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @description: 个税申报
|
||||
* @author: xiajun
|
||||
* @modified By: xiajun
|
||||
* @date: Created in 2022/11/10 9:24 AM
|
||||
* @version:v1.0
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class TaxDeclareRecordWrapper extends Service {
|
||||
|
||||
|
||||
private TaxDeclareRecordService taxDeclareRecordService;
|
||||
|
||||
private TaxAgentService taxAgentService;
|
||||
|
||||
private HrmCommonEmployeeService hrmCommonEmployeeService;
|
||||
|
||||
private SalaryCacheService salaryCacheService;
|
||||
|
||||
private TaxDeclarationService taxDeclarationService;
|
||||
|
||||
private TaxDeclarationValueService taxDeclarationValueService;
|
||||
|
||||
private TaxDeclarationExcelService taxDeclarationExcelService;
|
||||
|
||||
private TaxDeclareEmployeeService taxDeclareEmployeeService;
|
||||
|
||||
private TaxDeclareFailService taxDeclareFailService;
|
||||
|
||||
/**
|
||||
* 个税申报记录列表
|
||||
*
|
||||
* @param queryParam
|
||||
* @param employeeId
|
||||
* @param tenantKey
|
||||
* @return
|
||||
*/
|
||||
public WeaTable<TaxDeclareRecordListDTO> listPage(TaxDeclarationListQueryParam queryParam, Long employeeId, String tenantKey) {
|
||||
Page<TaxDeclareRecordPO> page = taxDeclareRecordService.listPageByParam(queryParam, employeeId, tenantKey);
|
||||
Page<TaxDeclareRecordListDTO> dtoPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal(), page.isSearchCount());
|
||||
if (CollectionUtils.isNotEmpty(page.getRecords())) {
|
||||
// 查询个税扣缴义务人
|
||||
Set<Long> taxAgentIds = SalaryEntityUtil.properties(page.getRecords(), TaxDeclareRecordPO::getTaxAgentId);
|
||||
List<TaxAgentPO> taxAgents = taxAgentService.listByIds(taxAgentIds, tenantKey);
|
||||
// 查询人员姓名
|
||||
List<Long> employeeIds = SalaryEntityUtil.properties(page.getRecords(), TaxDeclareRecordPO::getCreator, Collectors.toList());
|
||||
List<SimpleEmployee> simpleEmployees = hrmCommonEmployeeService.getEmployeeByIds(employeeIds, tenantKey);
|
||||
|
||||
List<TaxDeclareRecordListDTO> dtoList = Lists.newArrayList();
|
||||
Map<Long, String> taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgentPO::getId, TaxAgentPO::getName);
|
||||
Map<Long, String> simpleEmployeeNameMap = SalaryEntityUtil.convert2Map(simpleEmployees, SimpleEmployee::getEmployeeId, SimpleEmployee::getName);
|
||||
for (TaxDeclareRecordPO taxDeclareRecord : page.getRecords()) {
|
||||
TaxDeclareTypeEnum taxDeclareTypeEnum = SalaryEnumUtil.enumMatchByValue(taxDeclareRecord.getTaxDeclareType(), TaxDeclareTypeEnum.class);
|
||||
TaxDeclareStatusEnum taxDeclareStatusEnum = SalaryEnumUtil.enumMatchByValue(taxDeclareRecord.getTaxDeclareStatus(), TaxDeclareStatusEnum.class);
|
||||
TaxDeclareRecordListDTO taxDeclareRecordListDTO = new TaxDeclareRecordListDTO()
|
||||
.setId(taxDeclareRecord.getId())
|
||||
.setTaxAgentId(taxDeclareRecord.getTaxAgentId())
|
||||
.setTaxAgentName(taxAgentNameMap.get(taxDeclareRecord.getTaxAgentId()))
|
||||
.setSalaryMonth(taxDeclareRecord.getSalaryMonth())
|
||||
.setTaxCycle(taxDeclareRecord.getTaxCycle())
|
||||
.setTaxDeclareType(taxDeclareTypeEnum)
|
||||
.setTaxDeclareTypeDesc(taxDeclareTypeEnum == null ? "" : SalaryI18nUtil.getI18nLabel(taxDeclareTypeEnum.getLabelId(), taxDeclareTypeEnum.getDefaultLabel()))
|
||||
.setTaxDeclareStatus(taxDeclareStatusEnum)
|
||||
.setTaxDeclareStatusDesc(taxDeclareStatusEnum == null ? "" : SalaryI18nUtil.getI18nLabel(taxDeclareStatusEnum.getLabelId(), taxDeclareStatusEnum.getDefaultLabel()))
|
||||
.setTaxPaidAmount(SalaryEntityUtil.thousandthConvert(taxDeclareRecord.getTaxPaidAmount()))
|
||||
.setOperateEmployeeId(taxDeclareRecord.getCreator())
|
||||
.setOperateEmployeeName(simpleEmployeeNameMap.get(taxDeclareRecord.getCreator()))
|
||||
.setOperateTime(SalaryDateUtil.getFormatLocalDateTime(taxDeclareRecord.getCreateTime()))
|
||||
.setDescription(taxDeclareRecord.getRemark())
|
||||
.setDisplayIcon(Objects.equals(taxDeclareRecord.getDisplayUpdateIcon(), 1));
|
||||
dtoList.add(taxDeclareRecordListDTO);
|
||||
}
|
||||
dtoPage.setRecords(dtoList);
|
||||
}
|
||||
// 转换成前端所需的数据格式
|
||||
WeaTable<TaxDeclareRecordListDTO> weaTable = SalaryFormatUtil.<TaxDeclareRecordListDTO>getInstance()
|
||||
.buildTable(TaxDeclareRecordListDTO.class, dtoPage);
|
||||
for (int i = 0; i < dtoPage.getRecords().size(); i++) {
|
||||
TaxDeclareRecordListDTO dto = dtoPage.getRecords().get(i);
|
||||
List<Permission> permissions = weaTable.getOperatesPermission().get(i);
|
||||
for (int j = 0; j < permissions.size(); j++) {
|
||||
Permission permission = permissions.get(j);
|
||||
if (j == 1 && (dto.getTaxDeclareStatus() != TaxDeclareStatusEnum.NOT_DECLARE || dto.getTaxDeclareType() != TaxDeclareTypeEnum.NORMAL_DECLARE)) {
|
||||
permission.setVisible(false);
|
||||
permission.setDisabled(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
return weaTable;
|
||||
}
|
||||
|
||||
/**
|
||||
* 个税申报表明细列表
|
||||
*
|
||||
* @param queryParam 列表查询条件
|
||||
* @param tenantKey 租户key
|
||||
* @return
|
||||
*/
|
||||
public WeaTable<?> listValuePage(TaxDeclarationValueListQueryParam queryParam, Long employeeId, String tenantKey) {
|
||||
// 查询个税申报表
|
||||
TaxDeclarationPO taxDeclaration = taxDeclarationService.getById(queryParam.getTaxDeclarationId(), tenantKey);
|
||||
// 判断是否有权限查看
|
||||
boolean canSee = taxDeclareRecordService.checkByAuthority(taxDeclaration, employeeId, tenantKey);
|
||||
if (!canSee) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156515, "对不起,您暂时没有权限查看"));
|
||||
}
|
||||
String pageUid = "taxDeclarationValueList";
|
||||
SalaryPageUtil.handlePageSize(pageUid, queryParam);
|
||||
// 查询个税申报表详情
|
||||
Page<TaxDeclarationValuePO> page = taxDeclarationValueService.listPageByTaxDeclarationIds(
|
||||
new Page<>(queryParam.getCurrent(), queryParam.getPageSize(), true), Collections.singleton(queryParam.getTaxDeclarationId()), tenantKey);
|
||||
TaxDeclarationValueListDTO taxDeclarationValueListDTO = taxDeclarationValueService.convert2List(taxDeclaration, page.getRecords(), tenantKey);
|
||||
Page<Map<String, Object>> dtoPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal(), page.isSearchCount());
|
||||
dtoPage.setRecords(taxDeclarationValueListDTO.getData());
|
||||
// 转成前端所需的格式
|
||||
WeaTable<Map<String, Object>> weaTable = new WeaTable<>();
|
||||
weaTable.setColumns(taxDeclarationValueListDTO.getColumns());
|
||||
weaTable.setPage(dtoPage);
|
||||
weaTable.setModule(SalaryConstant.MODULE);
|
||||
weaTable.setPageUid(pageUid);
|
||||
return weaTable;
|
||||
}
|
||||
|
||||
/**
|
||||
* 未报送的人员列表
|
||||
*
|
||||
* @param queryParam
|
||||
* @param tenantKey
|
||||
* @return
|
||||
*/
|
||||
public WeaTable<AbnormalEmployeeListDTO> listEmployeePage4NotDeclare(AbnormalEmployeeListQueryParam queryParam, String tenantKey) {
|
||||
String pageUid = "abnormalEmployeeList4NoDeclare";
|
||||
SalaryPageUtil.handlePageSize(pageUid, queryParam);
|
||||
WeaTable<AbnormalEmployeeListDTO> weaTable = listEmployeePage("NotDeclare", queryParam, tenantKey);
|
||||
weaTable.setPageUid(pageUid);
|
||||
return weaTable;
|
||||
}
|
||||
|
||||
/**
|
||||
* 没有申报数据的人员列表
|
||||
*
|
||||
* @param queryParam
|
||||
* @param tenantKey
|
||||
* @return
|
||||
*/
|
||||
public WeaTable<AbnormalEmployeeListDTO> listEmployeePage4NoValue(AbnormalEmployeeListQueryParam queryParam, String tenantKey) {
|
||||
String pageUid = "abnormalEmployeeList4NoValue";
|
||||
SalaryPageUtil.handlePageSize(pageUid, queryParam);
|
||||
WeaTable<AbnormalEmployeeListDTO> weaTable = listEmployeePage("NoValue", queryParam, tenantKey);
|
||||
weaTable.setPageUid(pageUid);
|
||||
return weaTable;
|
||||
}
|
||||
|
||||
/**
|
||||
* 申报失败的人员列表
|
||||
*
|
||||
* @param queryParam
|
||||
* @param tenantKey
|
||||
* @return
|
||||
*/
|
||||
public WeaTable<FailEmployeeListDTO> listEmployeePage4Fail(AbnormalEmployeeListQueryParam queryParam, String tenantKey) {
|
||||
String pageUid = "failEmployeeList";
|
||||
SalaryPageUtil.handlePageSize(pageUid, queryParam);
|
||||
// 查询个税申报记录
|
||||
TaxDeclareRecordPO taxDeclareRecord = taxDeclareRecordService.getById(queryParam.getTaxDeclareRecordId(), tenantKey);
|
||||
// 查询申报失败的数据
|
||||
Page<TaxDeclareFailPO> page = new Page<>(queryParam.getCurrent(), queryParam.getPageSize(), true);
|
||||
page = taxDeclareFailService.listPageByTaxDeclareRecordIds(page, Collections.singleton(taxDeclareRecord.getId()), tenantKey);
|
||||
// 转换成dto
|
||||
Page<FailEmployeeListDTO> dtoPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal(), page.isSearchCount());
|
||||
dtoPage.setRecords(taxDeclareFailService.convert2FailEmployeeList(taxDeclareRecord, page.getRecords(), tenantKey));
|
||||
// 转成前端所需的格式
|
||||
return SalaryFormatUtil.<FailEmployeeListDTO>getInstance().buildTable(FailEmployeeListDTO.class, dtoPage);
|
||||
}
|
||||
|
||||
private WeaTable<AbnormalEmployeeListDTO> listEmployeePage(String key, AbnormalEmployeeListQueryParam queryParam, String tenantKey) {
|
||||
WeaTable<AbnormalEmployeeListDTO> weaTable;
|
||||
// 查询个税申报记录
|
||||
TaxDeclareRecordPO taxDeclareRecord = taxDeclareRecordService.getById(queryParam.getTaxDeclareRecordId(), tenantKey);
|
||||
queryParam.setTaxAgentId(taxDeclareRecord.getTaxAgentId());
|
||||
queryParam.setTaxCycle(taxDeclareRecord.getTaxCycle());
|
||||
if (StringUtils.isEmpty(queryParam.getKeyword())) {
|
||||
// 查询个税申报记录的人员
|
||||
Page<TaxDeclareEmployeePO> page = new Page<>(queryParam.getCurrent(), queryParam.getPageSize(), true);
|
||||
if (StringUtils.equals("NotDeclare", key)) {
|
||||
page = taxDeclareEmployeeService.listPage4NotDeclareByParam(queryParam, tenantKey);
|
||||
} else if (StringUtils.equals("NoValue", key)) {
|
||||
page = taxDeclareEmployeeService.listPage4NoValueByParam(queryParam, tenantKey);
|
||||
}
|
||||
Page<AbnormalEmployeeListDTO> dtoPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal(), page.isSearchCount());
|
||||
dtoPage.setRecords(taxDeclareEmployeeService.convert2AbnormalEmployeeList(taxDeclareRecord, page.getRecords(), tenantKey));
|
||||
// 转换成前端所需的格式
|
||||
weaTable = SalaryFormatUtil.<AbnormalEmployeeListDTO>getInstance().buildTable(AbnormalEmployeeListDTO.class, dtoPage);
|
||||
} else {
|
||||
// 查询条件中包含"keyword"时,不好通过SQL分页,所以在内存中分页
|
||||
List<TaxDeclareEmployeePO> taxDeclareEmployees = Collections.emptyList();
|
||||
if (StringUtils.equals("NotDeclare", key)) {
|
||||
taxDeclareEmployees = taxDeclareEmployeeService.list4NotDeclareByParam(queryParam, tenantKey);
|
||||
} else if (StringUtils.equals("NoValue", key)) {
|
||||
taxDeclareEmployees = taxDeclareEmployeeService.list4NoValueByParam(queryParam, tenantKey);
|
||||
}
|
||||
List<AbnormalEmployeeListDTO> dtos = taxDeclareEmployeeService.convert2AbnormalEmployeeList(taxDeclareRecord, taxDeclareEmployees, tenantKey)
|
||||
.stream()
|
||||
.filter(e -> StringUtils.contains(e.getEmployeeName(), queryParam.getKeyword())
|
||||
|| StringUtils.contains(e.getJobNum(), queryParam.getKeyword())
|
||||
|| StringUtils.contains(e.getCardNum(), queryParam.getKeyword()))
|
||||
.collect(Collectors.toList());
|
||||
Page<AbnormalEmployeeListDTO> dtoPage = new Page<>(queryParam.getCurrent(), queryParam.getPageSize(), dtos.size(), true);
|
||||
dtoPage.setRecords(SalaryPageUtil.subList((int) dtoPage.getCurrent(), (int) dtoPage.getSize(), dtos));
|
||||
// 转换成前端所需的格式
|
||||
weaTable = SalaryFormatUtil.<AbnormalEmployeeListDTO>getInstance().buildTable(AbnormalEmployeeListDTO.class, dtoPage);
|
||||
}
|
||||
return weaTable;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取个税申报记录的表单
|
||||
*
|
||||
* @param id
|
||||
* @param tenantKey
|
||||
* @return
|
||||
*/
|
||||
public WeaForm getForm(Long id, Long employeeId, String tenantKey) {
|
||||
TaxDeclareRecordFormDTO formDTO = new TaxDeclareRecordFormDTO();
|
||||
formDTO.setTaxAgentRange(TaxAgentRangeEnum.SELECT_TAX_AGENT);
|
||||
// 判断当前是否开启了分权
|
||||
Boolean openDevolution = taxAgentService.isOpenDevolution(tenantKey);
|
||||
Boolean isChief = taxAgentService.isChief(employeeId, tenantKey);
|
||||
// 转换成前端所需的数据格式
|
||||
WeaForm weaForm = SalaryFormatUtil.<TaxDeclareRecordFormDTO>getInstance().buildForm(TaxDeclareRecordFormDTO.class, formDTO);
|
||||
weaForm.getItems().forEach((k, v) -> {
|
||||
if (StringUtils.equals("salaryMonth", k)) {
|
||||
Map<String, Object> otherParams = new HashMap<>();
|
||||
otherParams.put("type", "month");
|
||||
v.setOtherParams(otherParams);
|
||||
}
|
||||
// 未开启分权,没有"作为管理员的个税扣缴义务人"
|
||||
if (!openDevolution && StringUtils.equals("taxAgentRange", k)) {
|
||||
v.getOptions().remove(1);
|
||||
}
|
||||
// 开启分权,但不是总管理员,没有"所有个税扣缴义务人"
|
||||
if (openDevolution && !isChief && StringUtils.equals("taxAgentRange", k)) {
|
||||
v.getOptions().remove(0);
|
||||
}
|
||||
});
|
||||
return weaForm;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取个税申报记录下的个税申报表TAB
|
||||
*
|
||||
* @param id
|
||||
* @param tenantKey
|
||||
* @return
|
||||
*/
|
||||
public List<TaxDeclarationTabDTO> getTaxDeclarationTab(Long id, Long employeeId, String tenantKey) {
|
||||
// 查询个税申报记录
|
||||
TaxDeclareRecordPO taxDeclareRecord = taxDeclareRecordService.getById(id, tenantKey);
|
||||
// 查询个税申报记录下的个税申报表
|
||||
List<TaxDeclarationPO> taxDeclarations = taxDeclarationService.listByTaxCycleAndTaxAgentIds(YearMonth.parse(taxDeclareRecord.getTaxCycle()),
|
||||
Collections.singleton(taxDeclareRecord.getTaxAgentId()), tenantKey);
|
||||
taxDeclarations = taxDeclarations.stream()
|
||||
.filter(e -> Objects.equals(e.getControlView(), 0) || Objects.equals(e.getCreator(), employeeId))
|
||||
.collect(Collectors.toList());
|
||||
Map<Integer, TaxDeclarationPO> taxDeclarationMap = SalaryEntityUtil.convert2Map(taxDeclarations, TaxDeclarationPO::getIncomeCategory);
|
||||
List<TaxDeclarationTabDTO> tabs = Lists.newArrayList();
|
||||
for (IncomeCategoryEnum incomeCategoryEnum : IncomeCategoryEnum.values()) {
|
||||
TaxDeclarationPO taxDeclaration = taxDeclarationMap.get(incomeCategoryEnum.getValue());
|
||||
if (taxDeclaration != null) {
|
||||
TaxDeclarationTabDTO taxDeclarationTabDTO = new TaxDeclarationTabDTO()
|
||||
.setTabName(SalaryI18nUtil.getI18nLabel(incomeCategoryEnum.getLabelId(), incomeCategoryEnum.getDefaultLabel()))
|
||||
.setIncomeCategory(incomeCategoryEnum)
|
||||
.setTaxDeclarationId(taxDeclaration.getId());
|
||||
tabs.add(taxDeclarationTabDTO);
|
||||
}
|
||||
}
|
||||
return tabs;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询个税申报表的基本信息
|
||||
*
|
||||
* @param id 个税申报表id
|
||||
* @param tenantKey 租户key
|
||||
* @return
|
||||
*/
|
||||
public TaxDeclarationInfoDTO getTaxDeclarationInfoById(Long id, String tenantKey) {
|
||||
// 查询个税申报表
|
||||
TaxDeclareRecordPO taxDeclareRecord = taxDeclareRecordService.getById(id, tenantKey);
|
||||
if (Objects.isNull(taxDeclareRecord)) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98877, "个税申报表不存在或已删除"));
|
||||
}
|
||||
AbnormalEmployeeListQueryParam queryParam = new AbnormalEmployeeListQueryParam()
|
||||
.setTaxDeclareRecordId(taxDeclareRecord.getId())
|
||||
.setTaxAgentId(taxDeclareRecord.getTaxAgentId())
|
||||
.setTaxCycle(taxDeclareRecord.getTaxCycle());
|
||||
// 查询是否存在有未报送的人
|
||||
List<TaxDeclareEmployeePO> notDeclareTaxDeclareEmployees = taxDeclareEmployeeService.list4NotDeclareByParam(queryParam, tenantKey);
|
||||
// 查询是否存在没有申报数据的人
|
||||
List<TaxDeclareEmployeePO> noValueTaxDeclareEmployees = taxDeclareEmployeeService.list4NoValueByParam(queryParam, tenantKey);
|
||||
// 查询是否存在申报失败的人
|
||||
List<TaxDeclareFailPO> taxDeclareFails = taxDeclareFailService.listByTaxDeclareRecordIds(Collections.singleton(taxDeclareRecord.getId()), tenantKey);
|
||||
// 查询个税扣缴义务人
|
||||
TaxAgentPO taxAgentPO = taxAgentService.getById(taxDeclareRecord.getTaxAgentId(), tenantKey);
|
||||
TaxDeclareTypeEnum taxDeclareTypeEnum = SalaryEnumUtil.enumMatchByValue(taxDeclareRecord.getTaxDeclareType(), TaxDeclareTypeEnum.class);
|
||||
TaxDeclareStatusEnum taxDeclareStatusEnum = SalaryEnumUtil.enumMatchByValue(taxDeclareRecord.getTaxDeclareStatus(), TaxDeclareStatusEnum.class);
|
||||
return new TaxDeclarationInfoDTO()
|
||||
.setSalaryMonth(taxDeclareRecord.getSalaryMonth())
|
||||
.setTaxCycle(taxDeclareRecord.getTaxCycle())
|
||||
.setTaxAgentId(taxDeclareRecord.getTaxAgentId())
|
||||
.setTaxAgentName(Optional.ofNullable(taxAgentPO).map(TaxAgentPO::getName).orElse(""))
|
||||
.setDeclareType(taxDeclareTypeEnum)
|
||||
.setDeclareTypeDesc(taxDeclareTypeEnum == null ? "" : SalaryI18nUtil.getI18nLabel(taxDeclareTypeEnum.getLabelId(), taxDeclareTypeEnum.getDefaultLabel()))
|
||||
.setDeclareStatus(taxDeclareStatusEnum)
|
||||
.setDeclareStatusDesc(taxDeclareStatusEnum == null ? "" : SalaryI18nUtil.getI18nLabel(taxDeclareStatusEnum.getLabelId(), taxDeclareStatusEnum.getDefaultLabel()))
|
||||
.setDeclareErrorMsg(taxDeclareRecord.getTaxDeclareErrorMsg())
|
||||
.setDisplayIcon(Objects.equals(taxDeclareRecord.getDisplayUpdateIcon(), 1))
|
||||
.setDeclareFailSize(taxDeclareFails.size())
|
||||
.setAbnormalSize(notDeclareTaxDeclareEmployees.size() + noValueTaxDeclareEmployees.size())
|
||||
.setTaxPaidAmount(SalaryEntityUtil.thousandthConvert(taxDeclareRecord.getTaxPaidAmount()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
* @param saveParam 保存参数
|
||||
* @param employeeId 人员id
|
||||
* @param tenantKey 租户key
|
||||
*/
|
||||
public String save(TaxDeclarationSaveParam saveParam, Long employeeId, String tenantKey) {
|
||||
TaxDeclarationRateDTO taxDeclarationRate = new TaxDeclarationRateDTO().setStatus(true)
|
||||
.setIndex(Util.null2String(IdGenerator.generate()))
|
||||
.setMsg(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 95836, "生成申报表"));
|
||||
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION, taxDeclarationRate.getIndex(), taxDeclarationRate);
|
||||
LocalRunnable localRunnable = new LocalRunnable() {
|
||||
@Override
|
||||
public void execute() {
|
||||
try {
|
||||
DSTenantKeyThreadVar.tenantKey.set(tenantKey);
|
||||
taxDeclareRecordService.save(saveParam, employeeId, tenantKey);
|
||||
taxDeclarationRate.setStatus(true).setFinish(true);
|
||||
} catch (SalaryRunTimeException e) {
|
||||
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage());
|
||||
} catch (Exception e) {
|
||||
log.error("个税申报表生成报错:{}", e.getMessage(), e);
|
||||
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 187276, "个税申报表生成报错:") + e.getMessage());
|
||||
} finally {
|
||||
DSTenantKeyThreadVar.tenantKey.remove();
|
||||
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION, taxDeclarationRate.getIndex(), taxDeclarationRate);
|
||||
}
|
||||
}
|
||||
};
|
||||
ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "saveTaxDeclaration", localRunnable);
|
||||
return taxDeclarationRate.getIndex();
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新个税申报表的待刷新数据的标识
|
||||
*
|
||||
* @param id
|
||||
* @param employeeId
|
||||
* @param tenantKey
|
||||
*/
|
||||
public void updateIcon(Long id, Long employeeId, String tenantKey) {
|
||||
taxDeclareRecordService.updateIcon(id, NumberUtils.INTEGER_ZERO, employeeId, tenantKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除个税申报表
|
||||
*
|
||||
* @param ids
|
||||
* @param employeeId
|
||||
* @param tenantKey
|
||||
*/
|
||||
public void delete(Collection<Long> ids, Long employeeId, String tenantKey) {
|
||||
taxDeclareRecordService.deleteByIds(ids, tenantKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取个税申报表是否已经生成
|
||||
*
|
||||
* @param index
|
||||
* @param tenantKey
|
||||
* @return
|
||||
*/
|
||||
public TaxDeclarationRateDTO getRate(String index, String tenantKey) {
|
||||
return salaryCacheService.get(SalaryCacheKey.TAX_DECLARATION, index, TaxDeclarationRateDTO.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 申报
|
||||
*
|
||||
* @param id
|
||||
* @param tenantKey
|
||||
*/
|
||||
public String declare(Long id, Long employeeId, String tenantKey) {
|
||||
checkBefore(id);
|
||||
TaxDeclarationRateDTO taxDeclarationRate = new TaxDeclarationRateDTO().setStatus(true).setIndex(Util.null2String(id))
|
||||
.setMsg(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 156454, "在线申报"));
|
||||
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION, taxDeclarationRate.getIndex(), taxDeclarationRate);
|
||||
LocalRunnable localRunnable = new LocalRunnable() {
|
||||
@Override
|
||||
public void execute() {
|
||||
try {
|
||||
DSTenantKeyThreadVar.tenantKey.set(tenantKey);
|
||||
taxDeclareRecordService.declare(id, employeeId, tenantKey);
|
||||
taxDeclarationRate.setFinish(true);
|
||||
} catch (SalaryRunTimeException | SalaryNullException e) {
|
||||
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage());
|
||||
} catch (Exception e) {
|
||||
log.error("在线申报失败:{}", e.getMessage(), e);
|
||||
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 187274, "在线申报失败:") + e.getMessage());
|
||||
} finally {
|
||||
DSTenantKeyThreadVar.tenantKey.remove();
|
||||
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION, taxDeclarationRate.getIndex(), taxDeclarationRate);
|
||||
}
|
||||
}
|
||||
};
|
||||
ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "declare", localRunnable);
|
||||
return taxDeclarationRate.getIndex();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取申报反馈
|
||||
*
|
||||
* @param id
|
||||
* @param tenantKey
|
||||
*/
|
||||
public String getDeclareFeedback(Long id, Long employeeId, String tenantKey) {
|
||||
checkBefore(id);
|
||||
TaxDeclarationRateDTO taxDeclarationRate = new TaxDeclarationRateDTO().setStatus(true).setIndex(Util.null2String(id))
|
||||
.setMsg(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 182680, "获取申报反馈"));
|
||||
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION, taxDeclarationRate.getIndex(), taxDeclarationRate);
|
||||
LocalRunnable localRunnable = new LocalRunnable() {
|
||||
@Override
|
||||
public void execute() {
|
||||
try {
|
||||
taxDeclareRecordService.getDeclareFeedback(id, taxDeclarationRate, employeeId, tenantKey);
|
||||
taxDeclarationRate.setFinish(true);
|
||||
} catch (SalaryRunTimeException | SalaryNullException e) {
|
||||
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage());
|
||||
} catch (Exception e) {
|
||||
log.error("获取申报反馈失败:{}", e.getMessage(), e);
|
||||
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 187255, "获取申报反馈失败:") + e.getMessage());
|
||||
} finally {
|
||||
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION, taxDeclarationRate.getIndex(), taxDeclarationRate);
|
||||
}
|
||||
}
|
||||
};
|
||||
ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "getDeclareFeedback", localRunnable);
|
||||
return taxDeclarationRate.getIndex();
|
||||
}
|
||||
|
||||
/**
|
||||
* 作废
|
||||
*
|
||||
* @param id
|
||||
* @param tenantKey
|
||||
*/
|
||||
public String cancelDeclare(Long id, Long employeeId, String tenantKey) {
|
||||
checkBefore(id);
|
||||
TaxDeclarationRateDTO taxDeclarationRate = new TaxDeclarationRateDTO().setStatus(true).setIndex(Util.null2String(id))
|
||||
.setMsg(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 158842, "作废申报"));
|
||||
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION, taxDeclarationRate.getIndex(), taxDeclarationRate);
|
||||
LocalRunnable localRunnable = new LocalRunnable() {
|
||||
@Override
|
||||
public void execute() {
|
||||
try {
|
||||
taxDeclareRecordService.cancelDeclare(id, employeeId, tenantKey);
|
||||
taxDeclarationRate.setFinish(true);
|
||||
} catch (SalaryRunTimeException | SalaryNullException e) {
|
||||
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage());
|
||||
} catch (Exception e) {
|
||||
log.error("作废申报失败:{}", e.getMessage(), e);
|
||||
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 187272, "作废申报失败:") + e.getMessage());
|
||||
} finally {
|
||||
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION, taxDeclarationRate.getIndex(), taxDeclarationRate);
|
||||
}
|
||||
}
|
||||
};
|
||||
ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "cancel", localRunnable);
|
||||
return taxDeclarationRate.getIndex();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取作废反馈
|
||||
*
|
||||
* @param id
|
||||
* @param tenantKey
|
||||
*/
|
||||
public String getCancelFeedback(Long id, Long employeeId, String tenantKey) {
|
||||
checkBefore(id);
|
||||
TaxDeclarationRateDTO taxDeclarationRate = new TaxDeclarationRateDTO().setStatus(true).setIndex(Util.null2String(id))
|
||||
.setMsg(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 182681, "获取作废申报反馈"));
|
||||
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION, taxDeclarationRate.getIndex(), taxDeclarationRate);
|
||||
LocalRunnable localRunnable = new LocalRunnable() {
|
||||
@Override
|
||||
public void execute() {
|
||||
try {
|
||||
taxDeclareRecordService.getCancelFeedback(id, taxDeclarationRate, employeeId, tenantKey);
|
||||
taxDeclarationRate.setFinish(true);
|
||||
} catch (SalaryRunTimeException | SalaryNullException e) {
|
||||
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage());
|
||||
} catch (Exception e) {
|
||||
log.error("获取作废反馈结果失败:{}", e.getMessage(), e);
|
||||
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 187270, "获取作废反馈结果失败:") + e.getMessage());
|
||||
} finally {
|
||||
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION, taxDeclarationRate.getIndex(), taxDeclarationRate);
|
||||
}
|
||||
}
|
||||
};
|
||||
ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "getCancelFeedback", localRunnable);
|
||||
return taxDeclarationRate.getIndex();
|
||||
}
|
||||
|
||||
/**
|
||||
* 更正申报
|
||||
*
|
||||
* @param id
|
||||
* @param employeeId
|
||||
* @param tenantKey
|
||||
* @return
|
||||
*/
|
||||
public String updateDeclare(Long id, Long employeeId, String tenantKey) {
|
||||
checkBefore(id);
|
||||
TaxDeclarationRateDTO taxDeclarationRate = new TaxDeclarationRateDTO().setStatus(true).setIndex(Util.null2String(id))
|
||||
.setMsg(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 177637, "更正申报"));
|
||||
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION, taxDeclarationRate.getIndex(), taxDeclarationRate);
|
||||
LocalRunnable localRunnable = new LocalRunnable() {
|
||||
@Override
|
||||
public void execute() {
|
||||
try {
|
||||
taxDeclareRecordService.updateDeclare(id, employeeId, tenantKey);
|
||||
taxDeclarationRate.setFinish(true);
|
||||
} catch (SalaryRunTimeException | SalaryNullException e) {
|
||||
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage());
|
||||
} catch (Exception e) {
|
||||
log.error("更正申报失败:{}", e.getMessage(), e);
|
||||
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 187269, "更正申报失败:") + e.getMessage());
|
||||
} finally {
|
||||
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION, taxDeclarationRate.getIndex(), taxDeclarationRate);
|
||||
}
|
||||
}
|
||||
};
|
||||
ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "updateDeclare", localRunnable);
|
||||
return taxDeclarationRate.getIndex();
|
||||
}
|
||||
|
||||
/**
|
||||
* 税局端申报状态查询
|
||||
*
|
||||
* @param id
|
||||
* @param employeeId
|
||||
* @param tenantKey
|
||||
* @return
|
||||
*/
|
||||
public String queryDeclareStatus(Long id, Long employeeId, String tenantKey) {
|
||||
return taxDeclareRecordService.queryDeclareStatus(id, employeeId, tenantKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 税局端申报明细查询
|
||||
*
|
||||
* @param id
|
||||
* @param employeeId
|
||||
* @param tenantKey
|
||||
* @return
|
||||
*/
|
||||
public String queryCompanyIncomes(Long id, Long employeeId, String tenantKey) {
|
||||
return taxDeclareRecordService.queryCompanyIncomes(id, employeeId, tenantKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新数据
|
||||
*
|
||||
* @param id
|
||||
* @param employeeId
|
||||
* @param tenantKey
|
||||
* @return
|
||||
*/
|
||||
public String refreshData(Long id, Long employeeId, String tenantKey) {
|
||||
checkBefore(id);
|
||||
TaxDeclarationRateDTO taxDeclarationRate = new TaxDeclarationRateDTO().setStatus(true).setIndex(Util.null2String(id))
|
||||
.setMsg(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 156447, "刷新数据"));
|
||||
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION, taxDeclarationRate.getIndex(), taxDeclarationRate);
|
||||
LocalRunnable localRunnable = new LocalRunnable() {
|
||||
@Override
|
||||
public void execute() {
|
||||
try {
|
||||
DSTenantKeyThreadVar.tenantKey.set(tenantKey);
|
||||
taxDeclareRecordService.refreshData(id, employeeId, tenantKey);
|
||||
taxDeclarationRate.setFinish(true);
|
||||
} catch (SalaryRunTimeException | SalaryNullException e) {
|
||||
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage());
|
||||
} catch (Exception e) {
|
||||
log.error("刷新数据失败:{}", e.getMessage(), e);
|
||||
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 187268, "刷新数据失败:") + e.getMessage());
|
||||
} finally {
|
||||
DSTenantKeyThreadVar.tenantKey.remove();
|
||||
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION, taxDeclarationRate.getIndex(), taxDeclarationRate);
|
||||
}
|
||||
}
|
||||
};
|
||||
ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "refreshData", localRunnable);
|
||||
return taxDeclarationRate.getIndex();
|
||||
}
|
||||
|
||||
private void checkBefore(Long id) {
|
||||
TaxDeclarationRateDTO taxDeclarationRate = salaryCacheService.get(SalaryCacheKey.TAX_DECLARATION, Util.null2String(id), TaxDeclarationRateDTO.class);
|
||||
if (taxDeclarationRate != null && !taxDeclarationRate.isFinish()) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(182691, "当前正处于「{0}」中,请稍后再试").replace("{0}", taxDeclarationRate.getMsg()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出个税申报明细列表
|
||||
*
|
||||
* @param queryParam
|
||||
* @param simpleEmployee
|
||||
* @return
|
||||
*/
|
||||
public Map<String, Object> exportTaxDeclarationValue(TaxDeclarationValueListQueryParam queryParam, SimpleEmployee simpleEmployee) {
|
||||
ExcelExportParam excelExportParam = new ExcelExportParam()
|
||||
.setBiz(String.valueOf(IdGenerator.generate()))
|
||||
.setModule(EntityType.hrmsalary.name())
|
||||
.setFunction("exportTaxDeclarationValue");
|
||||
LocalRunnable localRunnable = new LocalRunnable() {
|
||||
@Override
|
||||
public void execute() {
|
||||
taxDeclarationExcelService.exportTaxDeclarationValue(excelExportParam, queryParam, simpleEmployee);
|
||||
}
|
||||
};
|
||||
ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "exportTaxDeclarationValue", localRunnable);
|
||||
return JsonUtil.parseMap(excelExportParam, Object.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出未报送的人员列表
|
||||
*
|
||||
* @param queryParam
|
||||
* @param simpleEmployee
|
||||
* @return
|
||||
*/
|
||||
public Map<String, Object> exportEmployee4NotDeclare(AbnormalEmployeeListQueryParam queryParam, SimpleEmployee simpleEmployee) {
|
||||
ExcelExportParam excelExportParam = new ExcelExportParam()
|
||||
.setBiz(String.valueOf(IdGenerator.generate()))
|
||||
.setModule(EntityType.hrmsalary.name())
|
||||
.setFunction("exportEmployee4NotDeclare");
|
||||
LocalRunnable localRunnable = new LocalRunnable() {
|
||||
@Override
|
||||
public void execute() {
|
||||
taxDeclarationExcelService.exportEmployee4NotDeclare(excelExportParam, queryParam, simpleEmployee);
|
||||
}
|
||||
};
|
||||
ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "exportEmployee4NotDeclare", localRunnable);
|
||||
return JsonUtil.parseMap(excelExportParam, Object.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出没有申报数据的人员列表
|
||||
*
|
||||
* @param queryParam
|
||||
* @param simpleEmployee
|
||||
* @return
|
||||
*/
|
||||
public Map<String, Object> exportEmployee4NoValue(AbnormalEmployeeListQueryParam queryParam, SimpleEmployee simpleEmployee) {
|
||||
ExcelExportParam excelExportParam = new ExcelExportParam()
|
||||
.setBiz(String.valueOf(IdGenerator.generate()))
|
||||
.setModule(EntityType.hrmsalary.name())
|
||||
.setFunction("exportEmployee4NoValue");
|
||||
LocalRunnable localRunnable = new LocalRunnable() {
|
||||
@Override
|
||||
public void execute() {
|
||||
taxDeclarationExcelService.exportEmployee4NoValue(excelExportParam, queryParam, simpleEmployee);
|
||||
}
|
||||
};
|
||||
ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "exportEmployee4NoValue", localRunnable);
|
||||
return JsonUtil.parseMap(excelExportParam, Object.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出申报失败的人员列表
|
||||
*
|
||||
* @param queryParam
|
||||
* @param simpleEmployee
|
||||
* @return
|
||||
*/
|
||||
public Map<String, Object> exportEmployee4Fail(AbnormalEmployeeListQueryParam queryParam, SimpleEmployee simpleEmployee) {
|
||||
ExcelExportParam excelExportParam = new ExcelExportParam()
|
||||
.setBiz(String.valueOf(IdGenerator.generate()))
|
||||
.setModule(EntityType.hrmsalary.name())
|
||||
.setFunction("exportEmployee4Fail");
|
||||
LocalRunnable localRunnable = new LocalRunnable() {
|
||||
@Override
|
||||
public void execute() {
|
||||
taxDeclarationExcelService.exportEmployee4Fail(excelExportParam, queryParam, simpleEmployee);
|
||||
}
|
||||
};
|
||||
ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "exportEmployee4Fail", localRunnable);
|
||||
return JsonUtil.parseMap(excelExportParam, Object.class);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue