Merge branch 'release/个税版本' into custom/艾志工业
This commit is contained in:
commit
59da7230c8
|
|
@ -0,0 +1,38 @@
|
|||
create table hrsa_deduction_amount
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int,
|
||||
tenant_key varchar2(10),
|
||||
tax_agent_id number,
|
||||
year varchar2(100),
|
||||
employee_id number,
|
||||
employee_type number,
|
||||
employee_name varchar2(100),
|
||||
job_num varchar2(100),
|
||||
card_type number,
|
||||
card_num varchar2(100),
|
||||
nationality varchar2(200),
|
||||
deduct_flag number,
|
||||
successfully_declared number,
|
||||
declare_status number,
|
||||
declare_error_msg varchar2(1000)
|
||||
);
|
||||
/
|
||||
|
||||
create table hrsa_deduction_amount_record
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int,
|
||||
tenant_key varchar2(10),
|
||||
tax_agent_id number,
|
||||
year varchar2(100),
|
||||
request_id varchar2(100)
|
||||
);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
create table hrsa_deduction_amount
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int,
|
||||
tenant_key varchar2(10),
|
||||
tax_agent_id number,
|
||||
year varchar2(100),
|
||||
employee_id number,
|
||||
employee_type number,
|
||||
employee_name varchar2(100),
|
||||
job_num varchar2(100),
|
||||
card_type number,
|
||||
card_num varchar2(100),
|
||||
nationality varchar2(200),
|
||||
deduct_flag number,
|
||||
successfully_declared number,
|
||||
declare_status number,
|
||||
declare_error_msg varchar2(1000)
|
||||
);
|
||||
/
|
||||
|
||||
create table hrsa_deduction_amount_record
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int,
|
||||
tenant_key varchar2(10),
|
||||
tax_agent_id number,
|
||||
year varchar2(100),
|
||||
request_id varchar2(100)
|
||||
);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
create table hrsa_deduction_amount
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int,
|
||||
tenant_key varchar2(10),
|
||||
tax_agent_id number,
|
||||
year varchar2(100),
|
||||
employee_id number,
|
||||
employee_type number,
|
||||
employee_name varchar2(100),
|
||||
job_num varchar2(100),
|
||||
card_type number,
|
||||
card_num varchar2(100),
|
||||
nationality varchar2(200),
|
||||
deduct_flag number,
|
||||
successfully_declared number,
|
||||
declare_status number,
|
||||
declare_error_msg varchar2(1000)
|
||||
);
|
||||
/
|
||||
|
||||
create table hrsa_deduction_amount_record
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int,
|
||||
tenant_key varchar2(10),
|
||||
tax_agent_id number,
|
||||
year varchar2(100),
|
||||
request_id varchar2(100)
|
||||
);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
CREATE TABLE hrsa_deduction_amount
|
||||
(
|
||||
id bigint(0),
|
||||
create_time datetime(0),
|
||||
update_time datetime(0),
|
||||
creator bigint(0),
|
||||
delete_type int(0),
|
||||
tenant_key varchar(10),
|
||||
tax_agent_id bigint(0),
|
||||
year varchar(100),
|
||||
employee_id bigint(0),
|
||||
employee_type tinyint(0),
|
||||
employee_name varchar(100),
|
||||
job_num varchar(100),
|
||||
card_type tinyint(0),
|
||||
card_num varchar(100),
|
||||
nationality varchar(200),
|
||||
deduct_flag tinyint(0),
|
||||
successfully_declared tinyint(0),
|
||||
declare_status tinyint(0),
|
||||
declare_error_msg varchar(3000),
|
||||
PRIMARY KEY (id) USING BTREE
|
||||
);
|
||||
|
||||
CREATE TABLE hrsa_deduction_amount_record
|
||||
(
|
||||
id bigint(0),
|
||||
create_time datetime(0),
|
||||
update_time datetime(0),
|
||||
creator bigint(0),
|
||||
delete_type int(0),
|
||||
tenant_key varchar(10),
|
||||
tax_agent_id bigint(0),
|
||||
year varchar(255),
|
||||
request_id varchar(100),
|
||||
PRIMARY KEY (id) USING BTREE
|
||||
);
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
create table hrsa_deduction_amount
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int,
|
||||
tenant_key varchar2(10),
|
||||
tax_agent_id number,
|
||||
year varchar2(100),
|
||||
employee_id number,
|
||||
employee_type number,
|
||||
employee_name varchar2(100),
|
||||
job_num varchar2(100),
|
||||
card_type number,
|
||||
card_num varchar2(100),
|
||||
nationality varchar2(200),
|
||||
deduct_flag number,
|
||||
successfully_declared number,
|
||||
declare_status number,
|
||||
declare_error_msg varchar2(1000)
|
||||
)
|
||||
/
|
||||
|
||||
create table hrsa_deduction_amount_record
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int,
|
||||
tenant_key varchar2(10),
|
||||
tax_agent_id number,
|
||||
year varchar2(100),
|
||||
request_id varchar2(100)
|
||||
)
|
||||
/
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
create table hrsa_deduction_amount
|
||||
(
|
||||
id bigint primary key ,
|
||||
create_time timestamp,
|
||||
update_time timestamp,
|
||||
creator bigint,
|
||||
delete_type int,
|
||||
tenant_key varchar(10),
|
||||
tax_agent_id bigint,
|
||||
year varchar(100),
|
||||
employee_id bigint,
|
||||
employee_type smallint,
|
||||
employee_name varchar(100),
|
||||
job_num varchar(100),
|
||||
card_type smallint,
|
||||
card_num varchar(100),
|
||||
nationality varchar(200),
|
||||
deduct_flag smallint,
|
||||
successfully_declared smallint,
|
||||
declare_status smallint,
|
||||
declare_error_msg varchar(3000)
|
||||
);
|
||||
/
|
||||
|
||||
create table hrsa_deduction_amount_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,
|
||||
year varchar(100),
|
||||
request_id varchar(100)
|
||||
);
|
||||
/
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
create table hrsa_deduction_amount
|
||||
(
|
||||
id bigint primary key ,
|
||||
create_time datetime,
|
||||
update_time datetime,
|
||||
creator bigint,
|
||||
delete_type int,
|
||||
tenant_key nvarchar(10),
|
||||
tax_agent_id bigint,
|
||||
year nvarchar(100),
|
||||
employee_id bigint,
|
||||
employee_type tinyint,
|
||||
employee_name nvarchar(100),
|
||||
job_num nvarchar(100),
|
||||
card_type tinyint,
|
||||
card_num nvarchar(100),
|
||||
nationality nvarchar(255),
|
||||
deduct_flag tinyint,
|
||||
successfully_declared tinyint,
|
||||
declare_status tinyint,
|
||||
declare_error_msg nvarchar(3000)
|
||||
)
|
||||
GO
|
||||
|
||||
create table hrsa_deduction_amount_record
|
||||
(
|
||||
id bigint primary key ,
|
||||
create_time datetime,
|
||||
update_time datetime,
|
||||
creator bigint,
|
||||
delete_type int,
|
||||
tenant_key nvarchar(10),
|
||||
tax_agent_id bigint,
|
||||
year nvarchar(100),
|
||||
request_id nvarchar(100)
|
||||
)
|
||||
GO
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
create table hrsa_deduction_amount
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int,
|
||||
tenant_key varchar2(10),
|
||||
tax_agent_id number,
|
||||
year varchar2(100),
|
||||
employee_id number,
|
||||
employee_type number,
|
||||
employee_name varchar2(100),
|
||||
job_num varchar2(100),
|
||||
card_type number,
|
||||
card_num varchar2(100),
|
||||
nationality varchar2(200),
|
||||
deduct_flag number,
|
||||
successfully_declared number,
|
||||
declare_status number,
|
||||
declare_error_msg varchar2(1000)
|
||||
);
|
||||
/
|
||||
|
||||
create table hrsa_deduction_amount_record
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int,
|
||||
tenant_key varchar2(10),
|
||||
tax_agent_id number,
|
||||
year varchar2(100),
|
||||
request_id varchar2(100)
|
||||
);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package com.api.salary.web;
|
||||
|
||||
import javax.ws.rs.Path;
|
||||
|
||||
/**
|
||||
* 年收入不足6万元的纳税人暂不预扣预缴税款扣除名单
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Path("/bs/hrmsalary/deductionAmount")
|
||||
public class DeductionAmountController extends com.engine.salary.web.DeductionAmountController {
|
||||
}
|
||||
|
|
@ -96,15 +96,18 @@ public class CheckStopSalaryAction implements Action {
|
|||
List<TaxAgentPO> taxAgentPOS = getTaxAgentMapper().listByName(taxAgentName);
|
||||
if(CollectionUtils.isEmpty(taxAgentPOS)){
|
||||
requestInfo.getRequestManager().setMessage("个税扣缴义务人不存在!");
|
||||
log.error("停薪检查异常 requestId:{} msg:{}", requestInfo.getRequestid(), taxAgentName + "个税扣缴义务人不存在!");
|
||||
return FAILURE_AND_CONTINUE;
|
||||
}
|
||||
Long taxAgentId = Long.valueOf( taxAgentPOS.get(0).getId() );
|
||||
Long employeeId = Long.valueOf(importDataMap.getOrDefault("员工id", "-1").toString());
|
||||
if( importDataMap.get("最后发薪日期") == null || StringUtils.isBlank(importDataMap.get("最后发薪日期").toString())){
|
||||
requestInfo.getRequestManager().setMessage("缺少最后发薪日期字段!");
|
||||
log.error("停薪检查异常 requestId:{} msg:{}", requestInfo.getRequestid(), "缺少最后发薪日期字段!");
|
||||
return FAILURE_AND_CONTINUE;
|
||||
}else if(SalaryDateUtil.stringToDate(importDataMap.get("最后发薪日期").toString()) == null){
|
||||
requestInfo.getRequestManager().setMessage("最后发薪日期格式错误,格式为yyyy-MM-dd");
|
||||
log.error("停薪检查异常 requestId:{} msg:{}", requestInfo.getRequestid(), "最后发薪日期格式错误,格式为yyyy-MM-dd" + importDataMap.get("最后发薪日期").toString());
|
||||
return FAILURE_AND_CONTINUE;
|
||||
}
|
||||
|
||||
|
|
@ -115,15 +118,17 @@ public class CheckStopSalaryAction implements Action {
|
|||
List<SalaryArchivePO> salaryArchiveList = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().taxAgentId(taxAgentId).employeeId(employeeId).deleteType(NumberUtils.INTEGER_ZERO).build());
|
||||
if(CollectionUtils.isEmpty(salaryArchiveList)){
|
||||
requestInfo.getRequestManager().setMessage("该个税扣缴义务人下该员工不存在薪资档案,请检查后重试!");
|
||||
log.error("停薪检查异常 requestId:{} msg:{}", requestInfo.getRequestid(), taxAgentId +"_"+ employeeId+"该个税扣缴义务人下该员工不存在薪资档案,请检查后重试!");
|
||||
return FAILURE_AND_CONTINUE;
|
||||
}
|
||||
if(salaryArchiveList.size() > 1){
|
||||
requestInfo.getRequestManager().setMessage("该个税扣缴义务人下该员工存在多条薪资档案记录,请检查后重试!");
|
||||
log.error("停薪检查异常 requestId:{} msg:{}", requestInfo.getRequestid(), taxAgentId +"_"+ employeeId+"该个税扣缴义务人下该员工存在多条薪资档案记录,请检查后重试!");
|
||||
return FAILURE_AND_CONTINUE;
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("停薪校验异常", e);
|
||||
log.error("停薪检查异常", e);
|
||||
requestInfo.getRequestManager().setMessage(e.getMessage());
|
||||
return FAILURE_AND_CONTINUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -107,15 +107,18 @@ public class StopSalaryAction implements Action {
|
|||
List<TaxAgentPO> taxAgentPOS = getTaxAgentMapper().listByName(taxAgentName);
|
||||
if(CollectionUtils.isEmpty(taxAgentPOS)){
|
||||
requestInfo.getRequestManager().setMessage("个税扣缴义务人不存在!");
|
||||
log.error("停薪异常 requestId:{} msg:{}", requestInfo.getRequestid(), taxAgentName + "个税扣缴义务人不存在!");
|
||||
return FAILURE_AND_CONTINUE;
|
||||
}
|
||||
Long taxAgentId = Long.valueOf( taxAgentPOS.get(0).getId() );
|
||||
Long employeeId = Long.valueOf(importDataMap.getOrDefault("员工id", "-1").toString());
|
||||
if( importDataMap.get("最后发薪日期") == null || StringUtils.isBlank(importDataMap.get("最后发薪日期").toString())){
|
||||
requestInfo.getRequestManager().setMessage("缺少最后发薪日期字段!");
|
||||
log.error("停薪异常 requestId:{} msg:{}", requestInfo.getRequestid(), "缺少最后发薪日期字段!");
|
||||
return FAILURE_AND_CONTINUE;
|
||||
}else if(SalaryDateUtil.stringToDate(importDataMap.get("最后发薪日期").toString()) == null){
|
||||
requestInfo.getRequestManager().setMessage("最后发薪日期格式错误,格式为yyyy-MM-dd");
|
||||
log.error("停薪异常 requestId:{} msg:{}", requestInfo.getRequestid(), "最后发薪日期格式错误,格式为yyyy-MM-dd" + importDataMap.get("最后发薪日期").toString());
|
||||
return FAILURE_AND_CONTINUE;
|
||||
}
|
||||
|
||||
|
|
@ -123,10 +126,12 @@ public class StopSalaryAction implements Action {
|
|||
List<SalaryArchivePO> salaryArchiveList = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().taxAgentId(taxAgentId).employeeId(employeeId).deleteType(NumberUtils.INTEGER_ZERO).build());
|
||||
if(CollectionUtils.isEmpty(salaryArchiveList)){
|
||||
requestInfo.getRequestManager().setMessage("该个税扣缴义务人下该员工不存在薪资档案,请检查后重试!");
|
||||
log.error("停薪异常 requestId:{} msg:{}", requestInfo.getRequestid(), taxAgentId +"_"+ employeeId+"该个税扣缴义务人下该员工不存在薪资档案,请检查后重试!");
|
||||
return FAILURE_AND_CONTINUE;
|
||||
}
|
||||
if(salaryArchiveList.size() > 1){
|
||||
requestInfo.getRequestManager().setMessage("该个税扣缴义务人下该员工存在多条薪资档案记录,请检查后重试!");
|
||||
log.error("停薪异常 requestId:{} msg:{}", requestInfo.getRequestid(), taxAgentId +"_"+ employeeId+"该个税扣缴义务人下该员工存在多条薪资档案记录,请检查后重试!");
|
||||
return FAILURE_AND_CONTINUE;
|
||||
}
|
||||
// 设置最后发薪日期
|
||||
|
|
|
|||
|
|
@ -0,0 +1,126 @@
|
|||
package com.engine.salary.entity.deductionamount.dto;
|
||||
|
||||
import com.engine.salary.annotation.TableTitle;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 人员报送记录
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
//hrsa_deduction_amount
|
||||
public class DeductionAmountDTO {
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 个税扣缴义务人ID
|
||||
*/
|
||||
private Long taxAgentId;
|
||||
|
||||
|
||||
/**
|
||||
* 税款所属年度
|
||||
*/
|
||||
@TableTitle(title = "税款所属年度", dataIndex = "year", key = "year")
|
||||
private String year;
|
||||
/**
|
||||
* 人员id
|
||||
*/
|
||||
private Long employeeId;
|
||||
|
||||
/**
|
||||
* 姓名
|
||||
*/
|
||||
@TableTitle(title = "姓名", dataIndex = "employeeName", key = "employeeName")
|
||||
private String employeeName;
|
||||
|
||||
/**
|
||||
* 人员类型
|
||||
*/
|
||||
private Integer employeeType;
|
||||
|
||||
/**
|
||||
* 工号
|
||||
*/
|
||||
@TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum")
|
||||
private String jobNum;
|
||||
|
||||
/**
|
||||
* 证件号码
|
||||
*/
|
||||
@TableTitle(title = "证件号码", dataIndex = "cardNum", key = "cardNum")
|
||||
private String cardNum;
|
||||
|
||||
/**
|
||||
* 证件类型
|
||||
*/
|
||||
private Integer cardType;
|
||||
|
||||
/**
|
||||
* 国籍
|
||||
*/
|
||||
@TableTitle(title = "国籍", dataIndex = "nationality", key = "nationality")
|
||||
private String nationality;
|
||||
|
||||
/**
|
||||
* 是否扣除
|
||||
*/
|
||||
@TableTitle(title = "是否扣除", dataIndex = "deductFlag", key = "deductFlag")
|
||||
private Integer deductFlag;
|
||||
|
||||
/**
|
||||
* 报送状态
|
||||
*/
|
||||
@TableTitle(title = "报送状态", dataIndex = "declareStatusName", key = "declareStatusName")
|
||||
private String declareStatusName;
|
||||
private Integer declareStatus;
|
||||
|
||||
private String declareErrorMsg;
|
||||
|
||||
|
||||
/**
|
||||
* 是否成功报送过
|
||||
*/
|
||||
private Integer successfullyDeclared;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 创建人id
|
||||
*/
|
||||
private Long creator;
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
*/
|
||||
private Integer deleteType;
|
||||
|
||||
/**
|
||||
* 租户KEY
|
||||
*/
|
||||
private String tenantKey;
|
||||
|
||||
//主键id集合
|
||||
private Collection<Long> ids;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
package com.engine.salary.entity.deductionamount.param;
|
||||
|
||||
import com.engine.salary.util.valid.DataCheck;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 扣除名单查询参数
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class DeductionAmountAddParam {
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 个税扣缴义务人id
|
||||
*/
|
||||
@DataCheck(require = true, message = "参数错误,个税扣缴义务人id不能为空")
|
||||
private Long taxAgentId;
|
||||
|
||||
/**
|
||||
* 税款所属年度
|
||||
*/
|
||||
@DataCheck(require = true, message = "参数错误,税款所属年度参数格式错误")
|
||||
private String year;
|
||||
|
||||
/**
|
||||
* 报送人员ids
|
||||
*/
|
||||
private List<Long> employeeDeclareIds;
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package com.engine.salary.entity.deductionamount.param;
|
||||
|
||||
import com.engine.salary.util.valid.DataCheck;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 扣除名单查询参数
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class DeductionAmountConfirmParam {
|
||||
|
||||
// 个税扣缴义务人id
|
||||
@DataCheck(require = true, message = "参数错误,个税扣缴义务人id不能为空")
|
||||
private Long taxAgentId;
|
||||
|
||||
// 税款所属年度
|
||||
@DataCheck(require = true, message = "参数错误,税款所属年度参数格式错误")
|
||||
private String year;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
package com.engine.salary.entity.deductionamount.param;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 扣除名单查询参数
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class DeductionAmountDeleteParam {
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
private List<Long> ids;
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
package com.engine.salary.entity.deductionamount.param;
|
||||
|
||||
import com.engine.salary.util.valid.DataCheck;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 扣除名单查询参数
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class DeductionAmountEditParam {
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@DataCheck(require = true, message = "参数错误,id不能为空")
|
||||
private Long id;
|
||||
|
||||
@DataCheck(require = true, message = "请选择是否扣除")
|
||||
private Integer deductFlag;
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
package com.engine.salary.entity.deductionamount.param;
|
||||
|
||||
import com.engine.salary.util.valid.DataCheck;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 扣除名单查询参数
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class DeductionAmountFeedBackParam {
|
||||
|
||||
// 个税扣缴义务人id
|
||||
@DataCheck(require = true, message = "参数错误,个税扣缴义务人id不能为空")
|
||||
private Long taxAgentId;
|
||||
|
||||
// 税款所属年度
|
||||
@DataCheck(require = true, message = "参数错误,税款所属年度参数格式错误")
|
||||
private String year;
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
package com.engine.salary.entity.deductionamount.param;
|
||||
|
||||
import com.engine.salary.common.BaseQueryParam;
|
||||
import com.engine.salary.util.valid.DataCheck;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 扣除名单查询参数
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class DeductionAmountListParam extends BaseQueryParam {
|
||||
|
||||
/**
|
||||
* 个税扣缴义务人id
|
||||
*/
|
||||
@DataCheck(require = true, message = "参数错误,个税扣缴义务人id不能为空")
|
||||
private Long taxAgentId;
|
||||
|
||||
/**
|
||||
* 税款所属年度
|
||||
*/
|
||||
@DataCheck(require = true, message = "参数错误,税款所属年度参数格式错误")
|
||||
private String year;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package com.engine.salary.entity.deductionamount.param;
|
||||
|
||||
import com.engine.salary.util.valid.DataCheck;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 扣除名单查询参数
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class DeductionAmountOnlineQueryParam {
|
||||
|
||||
// 个税扣缴义务人id
|
||||
@DataCheck(require = true, message = "参数错误,个税扣缴义务人id不能为空")
|
||||
private Long taxAgentId;
|
||||
|
||||
// 税款所属年度
|
||||
@DataCheck(require = true, message = "参数错误,税款所属年度参数格式错误")
|
||||
private String year;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package com.engine.salary.entity.deductionamount.param;
|
||||
|
||||
import com.engine.salary.util.valid.DataCheck;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 扣除名单查询参数
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class DeductionAmountQueryParam {
|
||||
|
||||
// 个税扣缴义务人id
|
||||
@DataCheck(require = true, message = "参数错误,个税扣缴义务人id不能为空")
|
||||
private Long taxAgentId;
|
||||
|
||||
// 税款所属年度
|
||||
@DataCheck(require = true, message = "参数错误,税款所属年度参数格式错误")
|
||||
private String year;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
package com.engine.salary.entity.deductionamount.po;
|
||||
|
||||
import com.engine.hrmelog.annotation.ElogTransform;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 扣除名单
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
//hrsa_deduction_amount
|
||||
public class DeductionAmountPO {
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@ElogTransform(name = "ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 个税扣缴义务人ID
|
||||
*/
|
||||
@ElogTransform(name = "个税扣缴义务人ID")
|
||||
private Long taxAgentId;
|
||||
|
||||
|
||||
/**
|
||||
* 税款所属年度
|
||||
*/
|
||||
@ElogTransform(name = "税款所属年度")
|
||||
private String year;
|
||||
/**
|
||||
* 人员id
|
||||
*/
|
||||
@ElogTransform(name = "人员id")
|
||||
private Long employeeId;
|
||||
|
||||
/**
|
||||
* 姓名
|
||||
*/
|
||||
@ElogTransform(name = "姓名")
|
||||
private String employeeName;
|
||||
|
||||
/**
|
||||
* 人员类型
|
||||
*/
|
||||
@ElogTransform(name = "人员类型")
|
||||
private Integer employeeType;
|
||||
|
||||
/**
|
||||
* 工号
|
||||
*/
|
||||
@ElogTransform(name = "工号")
|
||||
private String jobNum;
|
||||
|
||||
/**
|
||||
* 国籍
|
||||
*/
|
||||
@ElogTransform(name = "国籍")
|
||||
private String nationality;
|
||||
|
||||
/**
|
||||
* 证件号码
|
||||
*/
|
||||
@ElogTransform(name = "证件号码")
|
||||
private String cardNum;
|
||||
|
||||
/**
|
||||
* 证件类型
|
||||
*/
|
||||
@ElogTransform(name = "证件类型")
|
||||
private Integer cardType;
|
||||
|
||||
/**
|
||||
* 是否扣除
|
||||
*/
|
||||
@ElogTransform(name = "是否扣除")
|
||||
private Integer deductFlag;
|
||||
/**
|
||||
* 是否成功报送过
|
||||
*/
|
||||
@ElogTransform(name = "是否成功报送过")
|
||||
private Integer successfullyDeclared;
|
||||
|
||||
/**
|
||||
* 报送状态
|
||||
*/
|
||||
@ElogTransform(name = "报送状态")
|
||||
private Integer declareStatus;
|
||||
|
||||
/**
|
||||
* 申报失败的错误信息
|
||||
*/
|
||||
@ElogTransform(name = "失败的错误信息")
|
||||
private String declareErrorMsg;
|
||||
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ElogTransform(name = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
@ElogTransform(name = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 创建人id
|
||||
*/
|
||||
@ElogTransform(name = "创建人id")
|
||||
private Long creator;
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
*/
|
||||
@ElogTransform(name = "是否删除")
|
||||
private Integer deleteType;
|
||||
|
||||
/**
|
||||
* 租户KEY
|
||||
*/
|
||||
@ElogTransform(name = "租户KEY")
|
||||
private String tenantKey;
|
||||
|
||||
//主键id集合
|
||||
private Collection<Long> ids;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
package com.engine.salary.entity.deductionamount.po;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 扣减报送记录
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
//"hrsa_employee_declare_record")
|
||||
public class DeductionAmountRecordPO {
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
private Long id;
|
||||
/**
|
||||
* 个税扣缴义务人
|
||||
*/
|
||||
private Long taxAgentId;
|
||||
/**
|
||||
* 税款所属年
|
||||
*/
|
||||
private String year;
|
||||
/**
|
||||
* 请求的requestId
|
||||
*/
|
||||
private String requestId;
|
||||
/**
|
||||
* 租户key
|
||||
*/
|
||||
private String tenantKey;
|
||||
/**
|
||||
* 创建人id
|
||||
*/
|
||||
private Long creator;
|
||||
/**
|
||||
* 是否删除
|
||||
*/
|
||||
private Integer deleteType;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
private Collection<Long> ids;
|
||||
}
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
package com.engine.salary.entity.extemp.dto;
|
||||
|
||||
|
||||
import com.engine.hrmelog.annotation.ElogTransform;
|
||||
import com.engine.salary.annotation.TableTitle;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 外部人员
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
//hrsa_external_employee
|
||||
@ElogTransform( name = "非系统人员")
|
||||
public class ExtEmpDTO {
|
||||
|
||||
@ElogTransform(name = "主键id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 姓名
|
||||
*/
|
||||
@TableTitle(title = "姓名", dataIndex = "username", key = "username")
|
||||
private String username;
|
||||
|
||||
/**
|
||||
* 部门
|
||||
*/
|
||||
@TableTitle(title = "部门", dataIndex = "departmentName", key = "departmentName")
|
||||
private String departmentName;
|
||||
|
||||
|
||||
/**
|
||||
* 分部
|
||||
*/
|
||||
@TableTitle(title = "分部", dataIndex = "subcompanyName", key = "subcompanyName")
|
||||
private String subcompanyName;
|
||||
|
||||
/**
|
||||
* 入职日期
|
||||
*/
|
||||
@TableTitle(title = "入职日期", dataIndex = "companystartdate", key = "companystartdate")
|
||||
private String companystartdate;
|
||||
|
||||
|
||||
/**
|
||||
* 工号
|
||||
*/
|
||||
@TableTitle(title = "工号", dataIndex = "workcode", key = "workcode")
|
||||
private String workcode;
|
||||
|
||||
}
|
||||
|
|
@ -1,5 +1,7 @@
|
|||
package com.engine.salary.entity.taxdeclaration.bo;
|
||||
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.engine.salary.annotation.SalaryFormulaVar;
|
||||
import com.engine.salary.constant.SalaryDefaultTenantConstant;
|
||||
import com.engine.salary.entity.datacollection.AddUpSituation;
|
||||
|
|
@ -20,7 +22,6 @@ import com.engine.salary.util.SalaryEntityUtil;
|
|||
import com.engine.salary.util.db.IdGenerator;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -49,29 +50,116 @@ public class TaxDeclarationCommon implements TaxDeclarationStrategy {
|
|||
|
||||
List<TaxDeclarationValuePO> taxDeclarationValues = Lists.newArrayListWithExpectedSize(employeeIdKeyMap.size());
|
||||
for (Map.Entry<Long, List<SalaryAcctEmployeePO>> employeeIdEntry : employeeIdKeyMap.entrySet()) {
|
||||
// 取最后一次薪资核算记录的核算结果作为个税申报表的数据来源
|
||||
SalaryAcctEmployeePO lastSalaryAcctEmployee = SalaryEntityUtil.findFirst(employeeIdEntry.getValue());
|
||||
for (SalaryAcctEmployeePO salaryAcctEmployee : employeeIdEntry.getValue()) {
|
||||
SalaryAcctRecordPO salaryAcctRecord = taxDeclareContext.getSalaryAcctRecordMap().get(salaryAcctEmployee.getSalaryAcctRecordId());
|
||||
SalaryAcctRecordPO lastSalaryAcctRecord = taxDeclareContext.getSalaryAcctRecordMap().get(lastSalaryAcctEmployee.getSalaryAcctRecordId());
|
||||
if (salaryAcctRecord.getCreateTime().compareTo(lastSalaryAcctRecord.getCreateTime()) > 0) {
|
||||
lastSalaryAcctEmployee = salaryAcctEmployee;
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, String> valueMap = Maps.newHashMap();
|
||||
for (TaxReportColumnPO taxReportColumn : taxDeclareContext.getTaxReportColumns()) {
|
||||
SalarySobTaxReportRulePO salarySobTaxReportRule = taxDeclareContext.getSalarySobTaxReportRuleMap()
|
||||
.get(lastSalaryAcctEmployee.getSalarySobId() + "-" + taxReportColumn.getReportColumnDataIndex());
|
||||
List<SalaryAcctResultPO> salaryAcctResultValue = salaryAcctResultValueMap.get(lastSalaryAcctEmployee.getId());
|
||||
String value = "";
|
||||
if (salarySobTaxReportRule != null && salaryAcctResultValue != null) {
|
||||
value = salaryAcctResultValue.stream()
|
||||
.filter(result -> result.getSalaryItemId().equals(salarySobTaxReportRule.getSalaryItemId()))
|
||||
.findFirst()
|
||||
.orElse(new SalaryAcctResultPO())
|
||||
.getResultValue();
|
||||
|
||||
List<String> firstValueList = Lists.newArrayList(
|
||||
"taxFreeIncome",
|
||||
"endowmentInsurance",
|
||||
"medicalInsurance",
|
||||
"unemploymentInsurance",
|
||||
"housingProvidentFund",
|
||||
"addUpChildEducation",
|
||||
"addUpHousingLoanInterest",
|
||||
"addUpHousingRent",
|
||||
"addUpSupportElderly",
|
||||
"addUpContinuingEducation",
|
||||
"addUpInfantCare",
|
||||
"annuity",
|
||||
"commercialHealthInsurance",
|
||||
"taxDeferredEndowmentInsurance",
|
||||
"other",
|
||||
"allowedDonation",
|
||||
"taxDeduction",
|
||||
"description",
|
||||
"addUpAdvanceTax");
|
||||
|
||||
List<String> lastValueList = Lists.newArrayList(
|
||||
"addUpIncome",
|
||||
"addUpTaxFreeIncome",
|
||||
"addUpSubtraction",
|
||||
"addUpSpecialDeduction",
|
||||
"addUpOtherDeduction",
|
||||
"addUpAllowedDonation",
|
||||
"addUpTaxableIncome",
|
||||
"taxRate",
|
||||
"quickDeductionFactor",
|
||||
"addUpTaxPayable",
|
||||
"addUpTaxDeduction"
|
||||
);
|
||||
|
||||
List<String> mergeValueList = Lists.newArrayList(
|
||||
"income",
|
||||
"refundedOrSupplementedTax"
|
||||
);
|
||||
|
||||
//取第一次值
|
||||
if (firstValueList.contains(taxReportColumn.getReportColumnDataIndex())) {
|
||||
SalaryAcctEmployeePO lastSalaryAcctEmployee = SalaryEntityUtil.findFirst(employeeIdEntry.getValue());
|
||||
for (SalaryAcctEmployeePO salaryAcctEmployee : employeeIdEntry.getValue()) {
|
||||
SalaryAcctRecordPO salaryAcctRecord = taxDeclareContext.getSalaryAcctRecordMap().get(salaryAcctEmployee.getSalaryAcctRecordId());
|
||||
SalaryAcctRecordPO lastSalaryAcctRecord = taxDeclareContext.getSalaryAcctRecordMap().get(lastSalaryAcctEmployee.getSalaryAcctRecordId());
|
||||
if (salaryAcctRecord.getCreateTime().compareTo(lastSalaryAcctRecord.getCreateTime()) < 0) {
|
||||
lastSalaryAcctEmployee = salaryAcctEmployee;
|
||||
}
|
||||
}
|
||||
SalarySobTaxReportRulePO salarySobTaxReportRule = taxDeclareContext.getSalarySobTaxReportRuleMap()
|
||||
.get(lastSalaryAcctEmployee.getSalarySobId() + "-" + taxReportColumn.getReportColumnDataIndex());
|
||||
List<SalaryAcctResultPO> salaryAcctResultValue = salaryAcctResultValueMap.get(lastSalaryAcctEmployee.getId());
|
||||
if (salarySobTaxReportRule != null && salaryAcctResultValue != null) {
|
||||
value = salaryAcctResultValue.stream()
|
||||
.filter(result -> result.getSalaryItemId().equals(salarySobTaxReportRule.getSalaryItemId()))
|
||||
.findFirst()
|
||||
.orElse(new SalaryAcctResultPO())
|
||||
.getResultValue();
|
||||
}
|
||||
value = StrUtil.isNotBlank(value) ? value : Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue()) ? "0.00" : "";
|
||||
}
|
||||
//取多次累计值
|
||||
else if (mergeValueList.contains(taxReportColumn.getReportColumnDataIndex()) && Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue())) {
|
||||
List<SalaryAcctEmployeePO> employeePOS = employeeIdEntry.getValue();
|
||||
BigDecimal income = new BigDecimal("0.00");
|
||||
for (SalaryAcctEmployeePO salaryAcctEmployeePO : employeePOS) {
|
||||
SalarySobTaxReportRulePO incomeRule = taxDeclareContext.getSalarySobTaxReportRuleMap()
|
||||
.get(salaryAcctEmployeePO.getSalarySobId() + "-" + taxReportColumn.getReportColumnDataIndex());
|
||||
List<SalaryAcctResultPO> salaryAcctResultValue = salaryAcctResultValueMap.get(salaryAcctEmployeePO.getId());
|
||||
if (incomeRule != null && salaryAcctResultValue != null) {
|
||||
String incomeValue = salaryAcctResultValue.stream()
|
||||
.filter(result -> result.getSalaryItemId().equals(incomeRule.getSalaryItemId()))
|
||||
.findFirst()
|
||||
.orElse(new SalaryAcctResultPO())
|
||||
.getResultValue();
|
||||
if (StrUtil.isNotBlank(incomeValue) && NumberUtil.isNumber(incomeValue)) {
|
||||
income = income.add(new BigDecimal(incomeValue));
|
||||
}
|
||||
}
|
||||
}
|
||||
value = income.toPlainString();
|
||||
}
|
||||
//取最后一次值
|
||||
else {
|
||||
SalaryAcctEmployeePO lastSalaryAcctEmployee = SalaryEntityUtil.findFirst(employeeIdEntry.getValue());
|
||||
for (SalaryAcctEmployeePO salaryAcctEmployee : employeeIdEntry.getValue()) {
|
||||
SalaryAcctRecordPO salaryAcctRecord = taxDeclareContext.getSalaryAcctRecordMap().get(salaryAcctEmployee.getSalaryAcctRecordId());
|
||||
SalaryAcctRecordPO lastSalaryAcctRecord = taxDeclareContext.getSalaryAcctRecordMap().get(lastSalaryAcctEmployee.getSalaryAcctRecordId());
|
||||
if (salaryAcctRecord.getCreateTime().compareTo(lastSalaryAcctRecord.getCreateTime()) > 0) {
|
||||
lastSalaryAcctEmployee = salaryAcctEmployee;
|
||||
}
|
||||
}
|
||||
SalarySobTaxReportRulePO salarySobTaxReportRule = taxDeclareContext.getSalarySobTaxReportRuleMap()
|
||||
.get(lastSalaryAcctEmployee.getSalarySobId() + "-" + taxReportColumn.getReportColumnDataIndex());
|
||||
List<SalaryAcctResultPO> salaryAcctResultValue = salaryAcctResultValueMap.get(lastSalaryAcctEmployee.getId());
|
||||
if (salarySobTaxReportRule != null && salaryAcctResultValue != null) {
|
||||
value = salaryAcctResultValue.stream()
|
||||
.filter(result -> result.getSalaryItemId().equals(salarySobTaxReportRule.getSalaryItemId()))
|
||||
.findFirst()
|
||||
.orElse(new SalaryAcctResultPO())
|
||||
.getResultValue();
|
||||
}
|
||||
value = StrUtil.isNotBlank(value) ? value : Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue()) ? "0.00" : "";
|
||||
}
|
||||
value = StringUtils.isNotBlank(value) ? value : Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue()) ? "0.00" : "";
|
||||
valueMap.put(taxReportColumn.getReportColumnDataIndex(), value);
|
||||
}
|
||||
TaxDeclarationValuePO taxDeclarationValue = TaxDeclarationValuePO.builder()
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ public class FailEmployeeListDTO {
|
|||
private String errorMsg;
|
||||
|
||||
//所得项目
|
||||
@TableTitle(title = "所得项目", dataIndex = "incomeCategory", key = "incomeCategory")
|
||||
@ExcelHead(title = "所得项目", dataIndex = "incomeCategory")
|
||||
// @TableTitle(title = "所得项目", dataIndex = "incomeCategory", key = "incomeCategory")
|
||||
// @ExcelHead(title = "所得项目", dataIndex = "incomeCategory")
|
||||
private String incomeCategory;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ package com.engine.salary.enums.employeedeclare;
|
|||
|
||||
import com.engine.salary.enums.BaseEnum;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 人员报送状态
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
|
|
@ -43,4 +45,13 @@ public enum DeclareStatusEnum implements BaseEnum<Integer> {
|
|||
public Integer getLabelId() {
|
||||
return labelId;
|
||||
}
|
||||
|
||||
public static DeclareStatusEnum getByValue(Integer value) {
|
||||
for (DeclareStatusEnum e : DeclareStatusEnum.values()) {
|
||||
if (Objects.equals(e.getValue(), value)) {
|
||||
return e;
|
||||
}
|
||||
}
|
||||
return NOT_DECLARE;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,74 @@
|
|||
package com.engine.salary.mapper.deductionamount;
|
||||
|
||||
import com.engine.salary.entity.deductionamount.po.DeductionAmountPO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public interface DeductionAmountMapper {
|
||||
|
||||
/**
|
||||
* 查询所有记录
|
||||
*
|
||||
* @return 返回集合,没有返回空List
|
||||
*/
|
||||
List<DeductionAmountPO> listAll();
|
||||
|
||||
/**
|
||||
* 条件查询
|
||||
*
|
||||
* @return 返回集合,没有返回空List
|
||||
*/
|
||||
List<DeductionAmountPO> listSome(DeductionAmountPO deductionAmount);
|
||||
|
||||
|
||||
/**
|
||||
* 根据主键查询
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 返回记录,没有返回null
|
||||
*/
|
||||
DeductionAmountPO getById(Long id);
|
||||
|
||||
/**
|
||||
* 新增,忽略null字段
|
||||
*
|
||||
* @param deductionAmount 新增的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int insertIgnoreNull(DeductionAmountPO deductionAmount);
|
||||
|
||||
|
||||
/**
|
||||
* 修改,修改所有字段
|
||||
*
|
||||
* @param deductionAmount 修改的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int update(DeductionAmountPO deductionAmount);
|
||||
|
||||
/**
|
||||
* 修改,忽略null字段
|
||||
*
|
||||
* @param deductionAmount 修改的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int updateIgnoreNull(DeductionAmountPO deductionAmount);
|
||||
|
||||
/**
|
||||
* 删除记录
|
||||
*
|
||||
* @param deductionAmount 待删除的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int delete(DeductionAmountPO deductionAmount);
|
||||
|
||||
/**
|
||||
* 批量删除记录
|
||||
*
|
||||
* @param ids 主键id集合
|
||||
*/
|
||||
void deleteByIds(@Param("ids") Collection<Long> ids);
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,375 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.engine.salary.mapper.deductionamount.DeductionAmountMapper">
|
||||
<resultMap id="BaseResultMap" type="com.engine.salary.entity.deductionamount.po.DeductionAmountPO">
|
||||
<result column="card_num" property="cardNum"/>
|
||||
<result column="card_type" property="cardType"/>
|
||||
<result column="create_time" property="createTime"/>
|
||||
<result column="creator" property="creator"/>
|
||||
<result column="declare_status" property="declareStatus"/>
|
||||
<result column="deduct_flag" property="deductFlag"/>
|
||||
<result column="delete_type" property="deleteType"/>
|
||||
<result column="employee_id" property="employeeId"/>
|
||||
<result column="employee_name" property="employeeName"/>
|
||||
<result column="employee_type" property="employeeType"/>
|
||||
<result column="id" property="id"/>
|
||||
<result column="job_num" property="jobNum"/>
|
||||
<result column="successfully_declared" property="successfullyDeclared"/>
|
||||
<result column="declare_error_msg" property="declareErrorMsg"/>
|
||||
<result column="tax_agent_id" property="taxAgentId"/>
|
||||
<result column="tenant_key" property="tenantKey"/>
|
||||
<result column="update_time" property="updateTime"/>
|
||||
<result column="year" property="year"/>
|
||||
<result column="nationality" property="nationality"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 表字段 -->
|
||||
<sql id="baseColumns">
|
||||
t
|
||||
.
|
||||
card_num
|
||||
, t.card_type
|
||||
, t.create_time
|
||||
, t.creator
|
||||
, t.declare_status
|
||||
, t.deduct_flag
|
||||
, t.delete_type
|
||||
, t.employee_id
|
||||
, t.employee_name
|
||||
, t.employee_type
|
||||
, t.id
|
||||
, t.job_num
|
||||
, t.successfully_declared
|
||||
, t.declare_error_msg
|
||||
, t.tax_agent_id
|
||||
, t.tenant_key
|
||||
, t.update_time
|
||||
, t.year
|
||||
, t.nationality
|
||||
</sql>
|
||||
|
||||
<!-- 查询全部 -->
|
||||
<select id="listAll" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="baseColumns"/>
|
||||
FROM hrsa_deduction_amount t
|
||||
WHERE delete_type = 0
|
||||
</select>
|
||||
|
||||
<!-- 根据主键获取单条记录 -->
|
||||
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
|
||||
SELECT
|
||||
<include refid="baseColumns"/>
|
||||
FROM hrsa_deduction_amount t
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</select>
|
||||
|
||||
<!-- 条件查询 -->
|
||||
<select id="listSome" resultMap="BaseResultMap"
|
||||
parameterType="com.engine.salary.entity.deductionamount.po.DeductionAmountPO">
|
||||
SELECT
|
||||
<include refid="baseColumns"/>
|
||||
FROM hrsa_deduction_amount t
|
||||
WHERE delete_type = 0
|
||||
<if test="cardNum != null">
|
||||
AND card_num = #{cardNum}
|
||||
</if>
|
||||
<if test="cardType != null">
|
||||
AND card_type = #{cardType}
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
AND create_time = #{createTime}
|
||||
</if>
|
||||
<if test="creator != null">
|
||||
AND creator = #{creator}
|
||||
</if>
|
||||
<if test="declareStatus != null">
|
||||
AND declare_status = #{declareStatus}
|
||||
</if>
|
||||
<if test="deductFlag != null">
|
||||
AND deduct_flag = #{deductFlag}
|
||||
</if>
|
||||
<if test="deleteType != null">
|
||||
AND delete_type = #{deleteType}
|
||||
</if>
|
||||
<if test="employeeId != null">
|
||||
AND employee_id = #{employeeId}
|
||||
</if>
|
||||
<if test="employeeName != null">
|
||||
AND employee_name = #{employeeName}
|
||||
</if>
|
||||
<if test="employeeType != null">
|
||||
AND employee_type = #{employeeType}
|
||||
</if>
|
||||
<if test="id != null">
|
||||
AND id = #{id}
|
||||
</if>
|
||||
<if test="jobNum != null">
|
||||
AND job_num = #{jobNum}
|
||||
</if>
|
||||
<if test="successfullyDeclared != null">
|
||||
AND successfully_declared = #{successfullyDeclared}
|
||||
</if>
|
||||
<if test="declareErrorMsg != null">
|
||||
AND declare_error_msg = #{declareErrorMsg}
|
||||
</if>
|
||||
<if test="taxAgentId != null">
|
||||
AND tax_agent_id = #{taxAgentId}
|
||||
</if>
|
||||
<if test="tenantKey != null">
|
||||
AND tenant_key = #{tenantKey}
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
AND update_time = #{updateTime}
|
||||
</if>
|
||||
<if test="year != null">
|
||||
AND year = #{year}
|
||||
</if>
|
||||
<if test="nationality != null">
|
||||
AND nationality = #{nationality}
|
||||
</if>
|
||||
<if test="ids != null and ids.size()>0">
|
||||
AND id IN
|
||||
<foreach collection="ids" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</if>
|
||||
ORDER BY id DESC
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 插入不为NULL的字段 -->
|
||||
<insert id="insertIgnoreNull" parameterType="com.engine.salary.entity.deductionamount.po.DeductionAmountPO">
|
||||
INSERT INTO hrsa_deduction_amount
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
|
||||
<if test="cardNum != null">
|
||||
card_num,
|
||||
</if>
|
||||
<if test="cardType != null">
|
||||
card_type,
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
create_time,
|
||||
</if>
|
||||
<if test="creator != null">
|
||||
creator,
|
||||
</if>
|
||||
<if test="declareStatus != null">
|
||||
declare_status,
|
||||
</if>
|
||||
<if test="deductFlag != null">
|
||||
deduct_flag,
|
||||
</if>
|
||||
<if test="deleteType != null">
|
||||
delete_type,
|
||||
</if>
|
||||
<if test="employeeId != null">
|
||||
employee_id,
|
||||
</if>
|
||||
<if test="employeeName != null">
|
||||
employee_name,
|
||||
</if>
|
||||
<if test="employeeType != null">
|
||||
employee_type,
|
||||
</if>
|
||||
<if test="id != null">
|
||||
id,
|
||||
</if>
|
||||
<if test="jobNum != null">
|
||||
job_num,
|
||||
</if>
|
||||
<if test="successfullyDeclared != null">
|
||||
successfully_declared,
|
||||
</if>
|
||||
<if test="declareErrorMsg != null">
|
||||
declare_error_msg,
|
||||
</if>
|
||||
<if test="taxAgentId != null">
|
||||
tax_agent_id,
|
||||
</if>
|
||||
<if test="tenantKey != null">
|
||||
tenant_key,
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time,
|
||||
</if>
|
||||
<if test="year != null">
|
||||
year,
|
||||
</if>
|
||||
<if test="nationality != null">
|
||||
nationality,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
|
||||
<if test="cardNum != null">
|
||||
#{cardNum},
|
||||
</if>
|
||||
<if test="cardType != null">
|
||||
#{cardType},
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
#{createTime},
|
||||
</if>
|
||||
<if test="creator != null">
|
||||
#{creator},
|
||||
</if>
|
||||
<if test="declareStatus != null">
|
||||
#{declareStatus},
|
||||
</if>
|
||||
<if test="deductFlag != null">
|
||||
#{deductFlag},
|
||||
</if>
|
||||
<if test="deleteType != null">
|
||||
#{deleteType},
|
||||
</if>
|
||||
<if test="employeeId != null">
|
||||
#{employeeId},
|
||||
</if>
|
||||
<if test="employeeName != null">
|
||||
#{employeeName},
|
||||
</if>
|
||||
<if test="employeeType != null">
|
||||
#{employeeType},
|
||||
</if>
|
||||
<if test="id != null">
|
||||
#{id},
|
||||
</if>
|
||||
<if test="jobNum != null">
|
||||
#{jobNum},
|
||||
</if>
|
||||
<if test="successfullyDeclared != null">
|
||||
#{successfullyDeclared},
|
||||
</if>
|
||||
<if test="declareErrorMsg != null">
|
||||
#{declareErrorMsg},
|
||||
</if>
|
||||
<if test="taxAgentId != null">
|
||||
#{taxAgentId},
|
||||
</if>
|
||||
<if test="tenantKey != null">
|
||||
#{tenantKey},
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
#{updateTime},
|
||||
</if>
|
||||
<if test="year != null">
|
||||
#{year},
|
||||
</if>
|
||||
<if test="nationality != null">
|
||||
#{nationality},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
|
||||
<!-- 更新,更新全部字段 -->
|
||||
<update id="update" parameterType="com.engine.salary.entity.deductionamount.po.DeductionAmountPO">
|
||||
UPDATE hrsa_deduction_amount
|
||||
<set>
|
||||
card_num=#{cardNum},
|
||||
card_type=#{cardType},
|
||||
create_time=#{createTime},
|
||||
creator=#{creator},
|
||||
declare_status=#{declareStatus},
|
||||
deduct_flag=#{deductFlag},
|
||||
delete_type=#{deleteType},
|
||||
employee_id=#{employeeId},
|
||||
employee_name=#{employeeName},
|
||||
employee_type=#{employeeType},
|
||||
job_num=#{jobNum},
|
||||
successfully_declared=#{successfullyDeclared},
|
||||
declare_error_msg=#{declareErrorMsg},
|
||||
tax_agent_id=#{taxAgentId},
|
||||
tenant_key=#{tenantKey},
|
||||
update_time=#{updateTime},
|
||||
year=#{year},
|
||||
nationality=#{nationality},
|
||||
</set>
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</update>
|
||||
|
||||
|
||||
<!-- 更新不为NULL的字段 -->
|
||||
<update id="updateIgnoreNull" parameterType="com.engine.salary.entity.deductionamount.po.DeductionAmountPO">
|
||||
UPDATE hrsa_deduction_amount
|
||||
<set>
|
||||
<if test="cardNum != null">
|
||||
card_num=#{cardNum},
|
||||
</if>
|
||||
<if test="cardType != null">
|
||||
card_type=#{cardType},
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
create_time=#{createTime},
|
||||
</if>
|
||||
<if test="creator != null">
|
||||
creator=#{creator},
|
||||
</if>
|
||||
<if test="declareStatus != null">
|
||||
declare_status=#{declareStatus},
|
||||
</if>
|
||||
<if test="deductFlag != null">
|
||||
deduct_flag=#{deductFlag},
|
||||
</if>
|
||||
<if test="deleteType != null">
|
||||
delete_type=#{deleteType},
|
||||
</if>
|
||||
<if test="employeeId != null">
|
||||
employee_id=#{employeeId},
|
||||
</if>
|
||||
<if test="employeeName != null">
|
||||
employee_name=#{employeeName},
|
||||
</if>
|
||||
<if test="employeeType != null">
|
||||
employee_type=#{employeeType},
|
||||
</if>
|
||||
<if test="jobNum != null">
|
||||
job_num=#{jobNum},
|
||||
</if>
|
||||
<if test="successfullyDeclared != null">
|
||||
successfully_declared=#{successfullyDeclared},
|
||||
</if>
|
||||
<if test="declareErrorMsg != null">
|
||||
declare_error_msg=#{declareErrorMsg},
|
||||
</if>
|
||||
<if test="taxAgentId != null">
|
||||
tax_agent_id=#{taxAgentId},
|
||||
</if>
|
||||
<if test="tenantKey != null">
|
||||
tenant_key=#{tenantKey},
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time=#{updateTime},
|
||||
</if>
|
||||
<if test="year != null">
|
||||
year=#{year},
|
||||
</if>
|
||||
<if test="nationality != null">
|
||||
nationality=#{nationality},
|
||||
</if>
|
||||
</set>
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</update>
|
||||
|
||||
|
||||
<!-- 根据主键删除记录 -->
|
||||
<delete id="delete">
|
||||
UPDATE hrsa_deduction_amount
|
||||
SET delete_type=1
|
||||
WHERE id = #{id}
|
||||
AND delete_type = 0
|
||||
</delete>
|
||||
|
||||
<delete id="deleteByIds">
|
||||
UPDATE hrsa_deduction_amount
|
||||
SET delete_type = 1
|
||||
WHERE delete_type = 0
|
||||
AND id IN
|
||||
<foreach collection="ids" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
package com.engine.salary.mapper.deductionamount;
|
||||
|
||||
import com.engine.salary.entity.deductionamount.po.DeductionAmountRecordPO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public interface DeductionAmountRecordMapper {
|
||||
|
||||
/**
|
||||
* 查询所有记录
|
||||
*
|
||||
* @return 返回集合,没有返回空List
|
||||
*/
|
||||
List<DeductionAmountRecordPO> listAll();
|
||||
|
||||
/**
|
||||
* 条件查询
|
||||
*
|
||||
* @return 返回集合,没有返回空List
|
||||
*/
|
||||
List<DeductionAmountRecordPO> listSome(DeductionAmountRecordPO deductionAmountRecord);
|
||||
|
||||
|
||||
/**
|
||||
* 根据主键查询
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 返回记录,没有返回null
|
||||
*/
|
||||
DeductionAmountRecordPO getById(Long id);
|
||||
|
||||
|
||||
DeductionAmountRecordPO getByTaxAgentIdAndYear(@Param("taxAgentId")Long taxAgentId,@Param("year") String year);
|
||||
|
||||
/**
|
||||
* 新增,忽略null字段
|
||||
*
|
||||
* @param deductionAmountRecord 新增的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int insertIgnoreNull(DeductionAmountRecordPO deductionAmountRecord);
|
||||
|
||||
/**
|
||||
* 修改,修改所有字段
|
||||
*
|
||||
* @param deductionAmountRecord 修改的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int update(DeductionAmountRecordPO deductionAmountRecord);
|
||||
|
||||
/**
|
||||
* 修改,忽略null字段
|
||||
*
|
||||
* @param deductionAmountRecord 修改的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int updateIgnoreNull(DeductionAmountRecordPO deductionAmountRecord);
|
||||
|
||||
/**
|
||||
* 删除记录
|
||||
*
|
||||
* @param deductionAmountRecord 待删除的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int delete(DeductionAmountRecordPO deductionAmountRecord);
|
||||
|
||||
/**
|
||||
* 批量删除记录
|
||||
* @param ids 主键id集合
|
||||
*/
|
||||
void deleteByIds(@Param("ids") Collection<Long> ids);
|
||||
|
||||
void deleteByTaxAgentIdAndYear(@Param("taxAgentId")Long taxAgentId,@Param("year") String year);
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,239 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.engine.salary.mapper.deductionamount.DeductionAmountRecordMapper">
|
||||
<resultMap id="BaseResultMap" type="com.engine.salary.entity.deductionamount.po.DeductionAmountRecordPO">
|
||||
<result column="create_time" property="createTime"/>
|
||||
<result column="creator" property="creator"/>
|
||||
<result column="delete_type" property="deleteType"/>
|
||||
<result column="id" property="id"/>
|
||||
<result column="request_id" property="requestId"/>
|
||||
<result column="tax_agent_id" property="taxAgentId"/>
|
||||
<result column="tenant_key" property="tenantKey"/>
|
||||
<result column="update_time" property="updateTime"/>
|
||||
<result column="year" property="year"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 表字段 -->
|
||||
<sql id="baseColumns">
|
||||
t
|
||||
.
|
||||
create_time
|
||||
, t.creator
|
||||
, t.delete_type
|
||||
, t.id
|
||||
, t.request_id
|
||||
, t.tax_agent_id
|
||||
, t.tenant_key
|
||||
, t.update_time
|
||||
, t.year
|
||||
</sql>
|
||||
|
||||
<!-- 查询全部 -->
|
||||
<select id="listAll" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="baseColumns"/>
|
||||
FROM hrsa_deduction_amount_record t
|
||||
WHERE delete_type = 0
|
||||
</select>
|
||||
|
||||
<!-- 根据主键获取单条记录 -->
|
||||
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
|
||||
SELECT
|
||||
<include refid="baseColumns"/>
|
||||
FROM hrsa_deduction_amount_record t
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</select>
|
||||
|
||||
<select id="getByTaxAgentIdAndYear" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="baseColumns"/>
|
||||
FROM hrsa_deduction_amount_record t
|
||||
WHERE delete_type = 0
|
||||
AND tax_agent_id=#{taxAgentId}
|
||||
AND year=#{year}
|
||||
</select>
|
||||
|
||||
<!-- 条件查询 -->
|
||||
<select id="listSome" resultMap="BaseResultMap"
|
||||
parameterType="com.engine.salary.entity.deductionamount.po.DeductionAmountRecordPO">
|
||||
SELECT
|
||||
<include refid="baseColumns"/>
|
||||
FROM hrsa_deduction_amount_record t
|
||||
WHERE delete_type = 0
|
||||
<if test="createTime != null">
|
||||
AND create_time = #{createTime}
|
||||
</if>
|
||||
<if test="creator != null">
|
||||
AND creator = #{creator}
|
||||
</if>
|
||||
<if test="deleteType != null">
|
||||
AND delete_type = #{deleteType}
|
||||
</if>
|
||||
<if test="id != null">
|
||||
AND id = #{id}
|
||||
</if>
|
||||
<if test="requestId != null">
|
||||
AND request_id = #{requestId}
|
||||
</if>
|
||||
<if test="taxAgentId != null">
|
||||
AND tax_agent_id = #{taxAgentId}
|
||||
</if>
|
||||
<if test="tenantKey != null">
|
||||
AND tenant_key = #{tenantKey}
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
AND update_time = #{updateTime}
|
||||
</if>
|
||||
<if test="year != null">
|
||||
AND year = #{year}
|
||||
</if>
|
||||
<if test="ids != null and ids.size()>0">
|
||||
AND id IN
|
||||
<foreach collection="ids" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</if>
|
||||
ORDER BY id DESC
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 插入不为NULL的字段 -->
|
||||
<insert id="insertIgnoreNull" parameterType="com.engine.salary.entity.deductionamount.po.DeductionAmountRecordPO">
|
||||
INSERT INTO hrsa_deduction_amount_record
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
|
||||
<if test="createTime != null">
|
||||
create_time,
|
||||
</if>
|
||||
<if test="creator != null">
|
||||
creator,
|
||||
</if>
|
||||
<if test="deleteType != null">
|
||||
delete_type,
|
||||
</if>
|
||||
<if test="id != null">
|
||||
id,
|
||||
</if>
|
||||
<if test="requestId != null">
|
||||
request_id,
|
||||
</if>
|
||||
<if test="taxAgentId != null">
|
||||
tax_agent_id,
|
||||
</if>
|
||||
<if test="tenantKey != null">
|
||||
tenant_key,
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time,
|
||||
</if>
|
||||
<if test="year != null">
|
||||
year,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
|
||||
<if test="createTime != null">
|
||||
#{createTime},
|
||||
</if>
|
||||
<if test="creator != null">
|
||||
#{creator},
|
||||
</if>
|
||||
<if test="deleteType != null">
|
||||
#{deleteType},
|
||||
</if>
|
||||
<if test="id != null">
|
||||
#{id},
|
||||
</if>
|
||||
<if test="requestId != null">
|
||||
#{requestId},
|
||||
</if>
|
||||
<if test="taxAgentId != null">
|
||||
#{taxAgentId},
|
||||
</if>
|
||||
<if test="tenantKey != null">
|
||||
#{tenantKey},
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
#{updateTime},
|
||||
</if>
|
||||
<if test="year != null">
|
||||
#{year},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<!-- 更新,更新全部字段 -->
|
||||
<update id="update" parameterType="com.engine.salary.entity.deductionamount.po.DeductionAmountRecordPO">
|
||||
UPDATE hrsa_deduction_amount_record
|
||||
<set>
|
||||
create_time=#{createTime},
|
||||
creator=#{creator},
|
||||
delete_type=#{deleteType},
|
||||
request_id=#{requestId},
|
||||
tax_agent_id=#{taxAgentId},
|
||||
tenant_key=#{tenantKey},
|
||||
update_time=#{updateTime},
|
||||
year=#{year},
|
||||
</set>
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</update>
|
||||
|
||||
|
||||
<!-- 更新不为NULL的字段 -->
|
||||
<update id="updateIgnoreNull" parameterType="com.engine.salary.entity.deductionamount.po.DeductionAmountRecordPO">
|
||||
UPDATE hrsa_deduction_amount_record
|
||||
<set>
|
||||
<if test="createTime != null">
|
||||
create_time=#{createTime},
|
||||
</if>
|
||||
<if test="creator != null">
|
||||
creator=#{creator},
|
||||
</if>
|
||||
<if test="deleteType != null">
|
||||
delete_type=#{deleteType},
|
||||
</if>
|
||||
<if test="requestId != null">
|
||||
request_id=#{requestId},
|
||||
</if>
|
||||
<if test="taxAgentId != null">
|
||||
tax_agent_id=#{taxAgentId},
|
||||
</if>
|
||||
<if test="tenantKey != null">
|
||||
tenant_key=#{tenantKey},
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time=#{updateTime},
|
||||
</if>
|
||||
<if test="year != null">
|
||||
year=#{year},
|
||||
</if>
|
||||
</set>
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</update>
|
||||
|
||||
|
||||
<!-- 根据主键删除记录 -->
|
||||
<delete id="delete">
|
||||
UPDATE hrsa_deduction_amount_record
|
||||
SET delete_type=1
|
||||
WHERE id = #{id}
|
||||
AND delete_type = 0
|
||||
</delete>
|
||||
|
||||
<delete id="deleteByIds">
|
||||
UPDATE hrsa_deduction_amount_record
|
||||
SET delete_type = 1
|
||||
WHERE delete_type = 0
|
||||
AND id IN
|
||||
<foreach collection="ids" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<delete id="deleteByTaxAgentIdAndYear">
|
||||
UPDATE hrsa_deduction_amount_record
|
||||
SET delete_type = 1
|
||||
WHERE delete_type = 0
|
||||
AND tax_agent_id=#{taxAgentId}
|
||||
AND year=#{year}
|
||||
</delete>
|
||||
</mapper>
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
package com.engine.salary.remote.tax.client;
|
||||
|
||||
import com.engine.salary.enums.taxagent.TaxAgentTaxReturnPasswordTypeEnum;
|
||||
import com.engine.salary.remote.tax.request.deductionAmount.ConfirmPreDeductRequest;
|
||||
import com.engine.salary.remote.tax.request.deductionAmount.QueryDeductionAmountRequest;
|
||||
import com.engine.salary.remote.tax.response.deductionAmount.ConfirmFeedbackResponse;
|
||||
import com.engine.salary.util.HttpUtil;
|
||||
import com.engine.salary.util.JsonUtil;
|
||||
import com.engine.salary.util.SingnatureData;
|
||||
import com.engine.salary.util.TaskUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import weaver.general.Util;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 申报扣减客户端
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Slf4j
|
||||
public class DeductionAmountClient extends TaxBaseClient {
|
||||
|
||||
public DeductionAmountClient(Long taxAgentId) {
|
||||
super(taxAgentId);
|
||||
}
|
||||
|
||||
public String query(String taxYear) {
|
||||
|
||||
String url = super.apiConfig.getHost() + "gateway/iit/deductionAmount/queryPreDeduct";
|
||||
QueryDeductionAmountRequest queryDeductionAmountRequest = new QueryDeductionAmountRequest();
|
||||
queryDeductionAmountRequest.setNsrsbh(returnPO.getTaxCode());
|
||||
queryDeductionAmountRequest.setBizNo(UUID.randomUUID().toString().replace("-", ""));
|
||||
queryDeductionAmountRequest.setQymc(returnPO.getTaxAgentName());
|
||||
queryDeductionAmountRequest.setDjxhid(StringUtils.isNotEmpty(returnPO.getTaxRegistrationNumber()) ? returnPO.getTaxRegistrationNumber() : null);
|
||||
queryDeductionAmountRequest.setAreaid(returnPO.getAreaCode());
|
||||
queryDeductionAmountRequest.setBmbh(StringUtils.isNotEmpty(returnPO.getDepartmentCode()) ? returnPO.getDepartmentCode() : null);
|
||||
boolean realNamePwd = TaxAgentTaxReturnPasswordTypeEnum.REAL_NAME_PASSWORD.getValue().equals(returnPO.getPasswordType());
|
||||
queryDeductionAmountRequest.setSbmm(realNamePwd ? null : returnPO.getPwd());
|
||||
queryDeductionAmountRequest.setJmsbmm("1");
|
||||
queryDeductionAmountRequest.setSmzh(realNamePwd ? returnPO.getRealAccount() : null);
|
||||
queryDeductionAmountRequest.setSmmm(realNamePwd ? returnPO.getPwd() : null);
|
||||
queryDeductionAmountRequest.setJmsmmm("1");
|
||||
queryDeductionAmountRequest.setMmlx("" + returnPO.getPasswordType());
|
||||
queryDeductionAmountRequest.setSkssnd(taxYear);
|
||||
|
||||
String reqJson = JsonUtil.toJsonString(queryDeductionAmountRequest);
|
||||
log.info("queryDeductionAmountRequest params --- \n{}\n", reqJson);
|
||||
Map<String, String> params = new HashMap<>(1);
|
||||
Map<String, String> header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret());
|
||||
|
||||
// 开始请求
|
||||
String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE);
|
||||
log.info("queryDeductionAmountRequest res --- {}", res);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
public String confirm(String year, List<ConfirmPreDeductRequest.kczg> kczglb) {
|
||||
|
||||
String url = super.apiConfig.getHost() + "gateway/iit/deductionAmount/confirmPreDeduct";
|
||||
ConfirmPreDeductRequest request = new ConfirmPreDeductRequest();
|
||||
request.setNsrsbh(returnPO.getTaxCode());
|
||||
request.setBizNo(UUID.randomUUID().toString().replace("-", ""));
|
||||
request.setQymc(returnPO.getTaxAgentName());
|
||||
request.setDjxhid(StringUtils.isNotEmpty(returnPO.getTaxRegistrationNumber()) ? returnPO.getTaxRegistrationNumber() : null);
|
||||
request.setAreaid(returnPO.getAreaCode());
|
||||
request.setBmbh(StringUtils.isNotEmpty(returnPO.getDepartmentCode()) ? returnPO.getDepartmentCode() : null);
|
||||
boolean realNamePwd = TaxAgentTaxReturnPasswordTypeEnum.REAL_NAME_PASSWORD.getValue().equals(returnPO.getPasswordType());
|
||||
request.setSbmm(realNamePwd ? null : returnPO.getPwd());
|
||||
request.setJmsbmm("1");
|
||||
request.setSmzh(realNamePwd ? returnPO.getRealAccount() : null);
|
||||
request.setSmmm(realNamePwd ? returnPO.getPwd() : null);
|
||||
request.setJmsmmm("1");
|
||||
request.setMmlx("" + returnPO.getPasswordType());
|
||||
request.setSkssnd(year);
|
||||
request.setKczglb(kczglb);
|
||||
|
||||
String requestId = request(url, JsonUtil.parseMap(request, Object.class));
|
||||
return requestId;
|
||||
}
|
||||
|
||||
public ConfirmFeedbackResponse feedback(String requestId) {
|
||||
TaskUtil taskUtil = new TaskUtil();
|
||||
|
||||
String url = super.apiConfig.getHost() + "gateway/iit/deductionAmount/getPreDeductConfirmFeedback";
|
||||
|
||||
Map<String, String> param = new HashMap<>(1);
|
||||
param.put("requestId", requestId);
|
||||
|
||||
Map<String, String> header = SingnatureData.initHeader(new HashMap<>(1), apiConfig.getAppKey(), apiConfig.getAppSecret());
|
||||
String res = HttpUtil.getRequest(url, header, param);
|
||||
taskUtil.writeApiTaskRecord(Util.null2String(taxAgentId), url, JsonUtil.toJsonString(param), res);
|
||||
ConfirmFeedbackResponse response = JsonUtil.parseBean(res, ConfirmFeedbackResponse.class);
|
||||
return response;
|
||||
}
|
||||
}
|
||||
|
|
@ -39,10 +39,10 @@ public class EmployeeClient extends TaxBaseClient {
|
|||
mergedEmployeeArchivesRequest.setBmbh(StringUtils.isNotEmpty(returnPO.getDepartmentCode()) ? returnPO.getDepartmentCode() : null);
|
||||
boolean realNamePwd = TaxAgentTaxReturnPasswordTypeEnum.REAL_NAME_PASSWORD.getValue().equals(returnPO.getPasswordType());
|
||||
mergedEmployeeArchivesRequest.setSbmm(realNamePwd ? null : returnPO.getPwd());
|
||||
mergedEmployeeArchivesRequest.setJmsbmm("0");
|
||||
mergedEmployeeArchivesRequest.setJmsbmm("1");
|
||||
mergedEmployeeArchivesRequest.setSmzh(realNamePwd ? returnPO.getRealAccount() : null);
|
||||
mergedEmployeeArchivesRequest.setSmmm(realNamePwd ? returnPO.getPwd() : null);
|
||||
mergedEmployeeArchivesRequest.setJmsmmm("0");
|
||||
mergedEmployeeArchivesRequest.setJmsmmm("1");
|
||||
mergedEmployeeArchivesRequest.setMmlx("" + returnPO.getPasswordType());
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,96 @@
|
|||
package com.engine.salary.remote.tax.request.deductionAmount;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ConfirmPreDeductRequest {
|
||||
/**
|
||||
* 外部业务编号 必填:是 外部业务编号,唯一,幂等需要,最长64位,建议使用UUID
|
||||
*/
|
||||
private String bizNo;
|
||||
/**
|
||||
* 企业名称 必填:是 代报企业全称
|
||||
*/
|
||||
private String qymc;
|
||||
/**
|
||||
* 密码类型 必填:否 默认不传则设置为0, 0表示申报密码;2表示实名账号实名密码
|
||||
*/
|
||||
private String mmlx;
|
||||
/**
|
||||
* 实名账号 必填:选择必填 当mmlx=2时,必填
|
||||
*/
|
||||
private String smzh;
|
||||
/**
|
||||
* 实名密码 必填:选择必填 当mmlx=2时,必填
|
||||
*/
|
||||
private String smmm;
|
||||
/**
|
||||
* 加密实名密码 必填:否 默认不传则设置为0,0表示不加密;1表示加密 参考3.4代报、实名密码加密说明
|
||||
*/
|
||||
private String jmsmmm;
|
||||
/**
|
||||
* 登记序号 必填:否 存在多个登记序号时,需要指定传入一个.例:10117440105249764755
|
||||
*/
|
||||
private String djxhid;
|
||||
/**
|
||||
* 税号 必填:是 扣缴单位纳税人识别号
|
||||
*/
|
||||
private String nsrsbh;
|
||||
/**
|
||||
* 地区编号 必填:是 6位行政区划代码,精确到市级,例如:440100,参考省市区编码
|
||||
*/
|
||||
private String areaid;
|
||||
/**
|
||||
* 部门编号 必填:否 分部门代报时必传
|
||||
*/
|
||||
private String bmbh;
|
||||
/**
|
||||
* 部门名称 必填:否
|
||||
*/
|
||||
private String bmmc;
|
||||
/**
|
||||
* 申报密码 必填:条件必填 当mmlx=0时,必填
|
||||
*/
|
||||
private String sbmm;
|
||||
/**
|
||||
* 加密申报密码 必填:否 默认不传则设置为0,0表示不加密;1表示加密
|
||||
*/
|
||||
private String jmsbmm;
|
||||
/**
|
||||
* 税款所属年度 必填:必填 yyyy
|
||||
*/
|
||||
private String skssnd;
|
||||
|
||||
/**
|
||||
* 扣除资格列表
|
||||
*/
|
||||
private List<kczg> kczglb;
|
||||
|
||||
|
||||
@Data
|
||||
public static class kczg {
|
||||
/**
|
||||
* 姓名
|
||||
*/
|
||||
private String xm;
|
||||
/**
|
||||
* 证件类型 见证件类型字典
|
||||
*/
|
||||
private String zzlx;
|
||||
/**
|
||||
* 证件号码 证件号码
|
||||
*/
|
||||
private String zzhm;
|
||||
/**
|
||||
* 国籍
|
||||
*/
|
||||
private String gj;
|
||||
/**
|
||||
* 扣除标识 是/否
|
||||
*/
|
||||
private String kcbs;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
package com.engine.salary.remote.tax.request.deductionAmount;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class QueryDeductionAmountRequest {
|
||||
/**
|
||||
* 外部业务编号 必填:是 外部业务编号,唯一,幂等需要,最长64位,建议使用UUID
|
||||
*/
|
||||
private String bizNo;
|
||||
/**
|
||||
* 企业名称 必填:是 代报企业全称
|
||||
*/
|
||||
private String qymc;
|
||||
/**
|
||||
* 密码类型 必填:否 默认不传则设置为0, 0表示申报密码;2表示实名账号实名密码
|
||||
*/
|
||||
private String mmlx;
|
||||
/**
|
||||
* 实名账号 必填:选择必填 当mmlx=2时,必填
|
||||
*/
|
||||
private String smzh;
|
||||
/**
|
||||
* 实名密码 必填:选择必填 当mmlx=2时,必填
|
||||
*/
|
||||
private String smmm;
|
||||
/**
|
||||
* 加密实名密码 必填:否 默认不传则设置为0,0表示不加密;1表示加密 参考3.4代报、实名密码加密说明
|
||||
*/
|
||||
private String jmsmmm;
|
||||
/**
|
||||
* 登记序号 必填:否 存在多个登记序号时,需要指定传入一个.例:10117440105249764755
|
||||
*/
|
||||
private String djxhid;
|
||||
/**
|
||||
* 税号 必填:是 扣缴单位纳税人识别号
|
||||
*/
|
||||
private String nsrsbh;
|
||||
/**
|
||||
* 地区编号 必填:是 6位行政区划代码,精确到市级,例如:440100,参考省市区编码
|
||||
*/
|
||||
private String areaid;
|
||||
/**
|
||||
* 部门编号 必填:否 分部门代报时必传
|
||||
*/
|
||||
private String bmbh;
|
||||
/**
|
||||
* 部门名称 必填:否
|
||||
*/
|
||||
private String bmmc;
|
||||
/**
|
||||
* 申报密码 必填:条件必填 当mmlx=0时,必填
|
||||
*/
|
||||
private String sbmm;
|
||||
/**
|
||||
* 加密申报密码 必填:否 默认不传则设置为0,0表示不加密;1表示加密
|
||||
*/
|
||||
private String jmsbmm;
|
||||
/**
|
||||
* 税款所属年度 必填:必填 yyyy
|
||||
*/
|
||||
private String skssnd;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
package com.engine.salary.remote.tax.response.deductionAmount;
|
||||
|
||||
import com.engine.salary.entity.taxpayment.response.BaseResponse;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 扣除名单确认反馈
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ConfirmFeedbackResponse extends BaseResponse {
|
||||
|
||||
/**
|
||||
* 返回数据
|
||||
*/
|
||||
private Body body;
|
||||
|
||||
/**
|
||||
* 神州云合接口返回状态实体类
|
||||
**/
|
||||
@Data
|
||||
public static class Body {
|
||||
|
||||
/**
|
||||
* 总人数
|
||||
*/
|
||||
private String zrs;
|
||||
/**
|
||||
* 成功人数
|
||||
*/
|
||||
private String cgrs;
|
||||
/**
|
||||
* 失败人数
|
||||
*/
|
||||
private String sbrs;
|
||||
/**
|
||||
* 扣除确认失败列表
|
||||
*/
|
||||
private List<kcqrsb> kcqrsblb;
|
||||
|
||||
@Data
|
||||
public static class kcqrsb {
|
||||
|
||||
/**
|
||||
* 姓名
|
||||
*/
|
||||
private String xm;
|
||||
/**
|
||||
* 证件类型 见证件类型字典
|
||||
*/
|
||||
private String zzlx;
|
||||
/**
|
||||
* 证件号码 证件号码
|
||||
*/
|
||||
private String zzhm;
|
||||
/**
|
||||
* 国籍
|
||||
*/
|
||||
private String gj;
|
||||
/**
|
||||
* 失败原因
|
||||
*/
|
||||
private String sbyy;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -25,6 +25,9 @@ public class SalaryStatisticsEmployeeSalaryQueryParam extends BaseQueryParam {
|
|||
// 关键字
|
||||
private String keyword;
|
||||
|
||||
//人员ids
|
||||
private List<Long> employeeIds;
|
||||
|
||||
// 起始年月
|
||||
private String startDateStr;
|
||||
private Date startDate;
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import com.engine.salary.entity.salarysob.po.SalarySobPO;
|
|||
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
|
||||
import com.engine.salary.enums.UserStatusEnum;
|
||||
import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum;
|
||||
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
|
||||
import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum;
|
||||
import com.engine.salary.mapper.salaryacct.SalaryAcctEmployeeMapper;
|
||||
import com.engine.salary.report.common.constant.SalaryConstant;
|
||||
|
|
@ -248,12 +249,23 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala
|
|||
List<SalaryAcctRecordPO> salaryAcctRecordPOS = getSalaryAcctRecordService(user).listAll();
|
||||
Map<Long, Integer> salaryAcctRecordMap = SalaryEntityUtil.convert2Map(salaryAcctRecordPOS, SalaryAcctRecordPO::getId, SalaryAcctRecordPO::getAcctTimes);
|
||||
|
||||
List<SalaryItemPO> salaryItemPOList = getSalaryItemService(user).listAll();
|
||||
Map<Long, String> itemDataTypeMap = SalaryEntityUtil.convert2Map(salaryItemPOList, SalaryItemPO::getId, SalaryItemPO::getDataType);
|
||||
|
||||
|
||||
Map<Long, List<SalaryAcctResultPO>> acctResultValueList = SalaryEntityUtil.group2Map(salaryStatisticsEmployeeDetailResult.getSalaryAcctResultValueList(), SalaryAcctResultPO::getSalaryAcctEmpId);
|
||||
Map<Long, Map<String, String>> acctResultValueMap = new HashMap<>();
|
||||
Map<Long, Map<String, Object>> acctResultValueMap = new HashMap<>();
|
||||
acctResultValueList.forEach((k, v) -> {
|
||||
Map<String, String> map = new HashMap();
|
||||
Map<String, Object> map = new HashMap();
|
||||
v.forEach(l -> {
|
||||
map.put(l.getSalaryItemId() + "", l.getResultValue());
|
||||
String dataType = itemDataTypeMap.getOrDefault(l.getSalaryItemId(), "string");
|
||||
SalaryDataTypeEnum typeEnum = SalaryDataTypeEnum.parseByValue(dataType);
|
||||
String resultValue = l.getResultValue();
|
||||
if (typeEnum == SalaryDataTypeEnum.NUMBER && NumberUtil.isNumber(resultValue)) {
|
||||
map.put(l.getSalaryItemId() + "", Double.valueOf(resultValue));
|
||||
} else {
|
||||
map.put(l.getSalaryItemId() + "", resultValue);
|
||||
}
|
||||
});
|
||||
acctResultValueMap.put(k, map);
|
||||
});
|
||||
|
|
@ -265,7 +277,7 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala
|
|||
Map<String, Object> map;
|
||||
for (SalaryAcctEmployeePO se : salaryStatisticsEmployeeDetailResult.getSalaryAcctEmployeeList()) {
|
||||
map = Maps.newHashMap();
|
||||
Map<String, String> resultValueMap = Optional.ofNullable(acctResultValueMap.get(se.getId())).orElse(Maps.newHashMap());
|
||||
Map<String, Object> resultValueMap = Optional.ofNullable(acctResultValueMap.get(se.getId())).orElse(Maps.newHashMap());
|
||||
Map<String, Object> finalMap = map;
|
||||
resultValueMap.forEach((k, v) -> {
|
||||
finalMap.put(k + SalaryConstant.DYNAMIC_SUFFIX, v);
|
||||
|
|
@ -332,6 +344,13 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala
|
|||
List<Long> employeeIds = employeeList.stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList());
|
||||
salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter(acctEmp -> employeeIds.contains(acctEmp.getEmployeeId())).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
//人员浏览按钮筛选
|
||||
List<Long> employeeIds = queryParam.getEmployeeIds();
|
||||
if(CollectionUtils.isNotEmpty(employeeIds)){
|
||||
salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter(acctEmp -> employeeIds.contains(acctEmp.getEmployeeId())).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) {
|
||||
return new PageInfo<>();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
package com.engine.salary.service;
|
||||
|
||||
import com.engine.salary.component.PageInfo;
|
||||
import com.engine.salary.entity.deductionamount.dto.DeductionAmountDTO;
|
||||
import com.engine.salary.entity.deductionamount.param.*;
|
||||
|
||||
/**
|
||||
* 年收入不足6万元的纳税人暂不预扣预缴税款扣除名单
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
public interface DeductionAmountService {
|
||||
|
||||
PageInfo<DeductionAmountDTO> list(DeductionAmountListParam param);
|
||||
|
||||
void add(DeductionAmountAddParam param);
|
||||
|
||||
void edit(DeductionAmountEditParam param);
|
||||
|
||||
void delete(DeductionAmountDeleteParam param);
|
||||
|
||||
Object query(DeductionAmountOnlineQueryParam param);
|
||||
|
||||
String confirm(DeductionAmountConfirmParam param);
|
||||
|
||||
String feedback(DeductionAmountFeedBackParam param);
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
package com.engine.salary.service;
|
||||
|
||||
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
|
||||
import com.engine.salary.entity.extemp.dto.ExtEmpDTO;
|
||||
import com.engine.salary.entity.extemp.param.ExtEmpImportParam;
|
||||
import com.engine.salary.entity.extemp.param.ExtEmpQueryParam;
|
||||
import com.engine.salary.entity.extemp.param.ExtEmpSaveParam;
|
||||
|
|
@ -19,7 +20,7 @@ public interface ExtEmpService {
|
|||
|
||||
List<ExtEmpPO> list(ExtEmpQueryParam param);
|
||||
|
||||
PageInfo<ExtEmpPO> listPage (ExtEmpQueryParam param);
|
||||
PageInfo<ExtEmpDTO> listPage (ExtEmpQueryParam param);
|
||||
|
||||
void save(ExtEmpSaveParam po);
|
||||
|
||||
|
|
|
|||
|
|
@ -1650,7 +1650,7 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction
|
|||
}
|
||||
|
||||
private void setExistedDataMap(AddUpDeductionOnlineRequestWrapper requestWrapper) {
|
||||
List<Long> taxAgentIds = SalaryEntityUtil.properties(requestWrapper.getSalaryArchiveList(), SalaryArchivePO::getTaxAgentId, Collectors.toList());
|
||||
Set<Long> taxAgentIds = SalaryEntityUtil.properties(requestWrapper.getSalaryArchiveList(), SalaryArchivePO::getTaxAgentId);
|
||||
List<AddUpDeduction> poList = getAddUpDeductionMapper().listSome(AddUpDeduction.builder().declareMonth(requestWrapper.getRequestPOList().get(0).getTaxYearMonth()).taxAgentIds(taxAgentIds).build());
|
||||
requestWrapper.setExistedDataMap(SalaryEntityUtil.convert2Map(poList, e -> e.getTaxAgentId() + "-" + e.getEmployeeId(), AddUpDeduction::getId));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,255 @@
|
|||
package com.engine.salary.service.impl;
|
||||
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.component.PageInfo;
|
||||
import com.engine.salary.constant.SalaryDefaultTenantConstant;
|
||||
import com.engine.salary.constant.SzyhApiConstant;
|
||||
import com.engine.salary.entity.deductionamount.dto.DeductionAmountDTO;
|
||||
import com.engine.salary.entity.deductionamount.param.*;
|
||||
import com.engine.salary.entity.deductionamount.po.DeductionAmountPO;
|
||||
import com.engine.salary.entity.deductionamount.po.DeductionAmountRecordPO;
|
||||
import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO;
|
||||
import com.engine.salary.enums.SalaryOnOffEnum;
|
||||
import com.engine.salary.enums.employeedeclare.CardTypeEnum;
|
||||
import com.engine.salary.enums.employeedeclare.DeclareStatusEnum;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.mapper.deductionamount.DeductionAmountMapper;
|
||||
import com.engine.salary.mapper.deductionamount.DeductionAmountRecordMapper;
|
||||
import com.engine.salary.mapper.employeedeclare.EmployeeDeclareMapper;
|
||||
import com.engine.salary.remote.tax.client.DeductionAmountClient;
|
||||
import com.engine.salary.remote.tax.request.deductionAmount.ConfirmPreDeductRequest;
|
||||
import com.engine.salary.remote.tax.response.deductionAmount.ConfirmFeedbackResponse;
|
||||
import com.engine.salary.service.DeductionAmountService;
|
||||
import com.engine.salary.util.SalaryEntityUtil;
|
||||
import com.engine.salary.util.SalaryI18nUtil;
|
||||
import com.engine.salary.util.db.IdGenerator;
|
||||
import com.engine.salary.util.db.MapperProxyFactory;
|
||||
import com.engine.salary.util.page.SalaryPageUtil;
|
||||
import com.engine.salary.util.valid.ValidUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 年收入不足6万元的纳税人暂不预扣预缴税款扣除名单
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Slf4j
|
||||
public class DeductionAmountServiceImpl extends Service implements DeductionAmountService {
|
||||
|
||||
private DeductionAmountRecordMapper getDeductionAmountRecordMapper() {
|
||||
return MapperProxyFactory.getProxy(DeductionAmountRecordMapper.class);
|
||||
}
|
||||
|
||||
private DeductionAmountMapper getDeductionAmountMapper() {
|
||||
return MapperProxyFactory.getProxy(DeductionAmountMapper.class);
|
||||
}
|
||||
|
||||
private EmployeeDeclareMapper getEmployeeDeclareMapper() {
|
||||
return MapperProxyFactory.getProxy(EmployeeDeclareMapper.class);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public PageInfo<DeductionAmountDTO> list(DeductionAmountListParam param) {
|
||||
ValidUtil.doValidator(param);
|
||||
|
||||
List<DeductionAmountPO> deductionAmountPOS = getDeductionAmountMapper().listSome(DeductionAmountPO.builder().year(param.getYear()).taxAgentId(param.getTaxAgentId()).build());
|
||||
|
||||
List<DeductionAmountDTO> list = deductionAmountPOS.stream()
|
||||
.map(deductionAmountPO -> DeductionAmountDTO.builder()
|
||||
.id(deductionAmountPO.getId())
|
||||
.taxAgentId(deductionAmountPO.getEmployeeId())
|
||||
.year(deductionAmountPO.getYear())
|
||||
.employeeId(deductionAmountPO.getEmployeeId())
|
||||
.employeeName(deductionAmountPO.getEmployeeName())
|
||||
.employeeType(deductionAmountPO.getEmployeeType())
|
||||
.jobNum(deductionAmountPO.getJobNum())
|
||||
.nationality(deductionAmountPO.getNationality())
|
||||
.cardNum(deductionAmountPO.getCardNum())
|
||||
.cardType(deductionAmountPO.getCardType())
|
||||
.declareStatus(deductionAmountPO.getDeclareStatus())
|
||||
.declareStatusName(DeclareStatusEnum.getByValue(deductionAmountPO.getDeclareStatus()).getDefaultLabel())
|
||||
.declareErrorMsg(deductionAmountPO.getDeclareErrorMsg())
|
||||
.deductFlag(deductionAmountPO.getDeductFlag())
|
||||
.successfullyDeclared(deductionAmountPO.getSuccessfullyDeclared())
|
||||
.creator(deductionAmountPO.getCreator())
|
||||
.createTime(deductionAmountPO.getCreateTime())
|
||||
.updateTime(deductionAmountPO.getUpdateTime())
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), list, DeductionAmountDTO.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(DeductionAmountAddParam param) {
|
||||
ValidUtil.doValidator(param);
|
||||
|
||||
//已存在
|
||||
List<DeductionAmountPO> deductionAmountPOS = getDeductionAmountMapper().listSome(DeductionAmountPO.builder().taxAgentId(param.getTaxAgentId()).year(param.getYear()).build());
|
||||
List<Long> oldIds = SalaryEntityUtil.properties(deductionAmountPOS, DeductionAmountPO::getEmployeeId, Collectors.toList());
|
||||
|
||||
//本次新增
|
||||
List<Long> employeeDeclareIds = param.getEmployeeDeclareIds();
|
||||
List<EmployeeDeclarePO> employeeDeclarePOS = getEmployeeDeclareMapper().listSome(EmployeeDeclarePO.builder().ids(employeeDeclareIds).build());
|
||||
|
||||
Date now = new Date();
|
||||
employeeDeclarePOS.stream()
|
||||
.filter(employeeDeclarePO -> !oldIds.contains(employeeDeclarePO.getEmployeeId()))
|
||||
.map(employeeDeclarePO -> DeductionAmountPO.builder()
|
||||
.id(IdGenerator.generate())
|
||||
.taxAgentId(employeeDeclarePO.getTaxAgentId())
|
||||
.year(param.getYear())
|
||||
.employeeId(employeeDeclarePO.getEmployeeId())
|
||||
.employeeName(employeeDeclarePO.getEmployeeName())
|
||||
.employeeType(employeeDeclarePO.getEmployeeType())
|
||||
.jobNum(employeeDeclarePO.getJobNum())
|
||||
.cardNum(employeeDeclarePO.getCardNum())
|
||||
.cardType(employeeDeclarePO.getCardType())
|
||||
.nationality(employeeDeclarePO.getNationality())
|
||||
.declareStatus(DeclareStatusEnum.NOT_DECLARE.getValue())
|
||||
.deductFlag(SalaryOnOffEnum.ON.getValue())
|
||||
.successfullyDeclared(SalaryOnOffEnum.OFF.getValue())
|
||||
.creator((long) user.getUID())
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.build())
|
||||
.forEach(deductionAmountPO -> getDeductionAmountMapper().insertIgnoreNull(deductionAmountPO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void edit(DeductionAmountEditParam param) {
|
||||
ValidUtil.doValidator(param);
|
||||
|
||||
DeductionAmountPO po = getDeductionAmountMapper().getById(param.getId());
|
||||
if (po == null) {
|
||||
throw new SalaryRunTimeException("扣除名单不存在");
|
||||
}
|
||||
|
||||
po.setDeductFlag(param.getDeductFlag());
|
||||
getDeductionAmountMapper().updateIgnoreNull(po);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(DeductionAmountDeleteParam param) {
|
||||
if (CollUtil.isEmpty(param.getIds())) {
|
||||
return;
|
||||
}
|
||||
param.getIds().forEach(id -> {
|
||||
getDeductionAmountMapper().delete(DeductionAmountPO.builder().id(id).build());
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object query(DeductionAmountOnlineQueryParam param) {
|
||||
Long taxAgentId = param.getTaxAgentId();
|
||||
DeductionAmountClient deductionAmountClient = new DeductionAmountClient(taxAgentId);
|
||||
return deductionAmountClient.query(param.getYear());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String confirm(DeductionAmountConfirmParam param) {
|
||||
ValidUtil.doValidator(param);
|
||||
Long taxAgentId = param.getTaxAgentId();
|
||||
String year = param.getYear();
|
||||
List<DeductionAmountPO> deductionAmountPOS = getDeductionAmountMapper().listSome(DeductionAmountPO.builder().taxAgentId(taxAgentId).year(year).build());
|
||||
List<ConfirmPreDeductRequest.kczg> kczglb = deductionAmountPOS.stream()
|
||||
.map(deductionAmountPO -> {
|
||||
ConfirmPreDeductRequest.kczg kczg = new ConfirmPreDeductRequest.kczg();
|
||||
kczg.setXm(deductionAmountPO.getEmployeeName());
|
||||
kczg.setZzhm(deductionAmountPO.getCardNum());
|
||||
kczg.setZzlx(CardTypeEnum.getByValue(deductionAmountPO.getCardType()).getDefaultLabel());
|
||||
kczg.setGj(deductionAmountPO.getNationality());
|
||||
kczg.setKcbs(SalaryOnOffEnum.parseByValue(deductionAmountPO.getDeductFlag()).getDefaultLabel());
|
||||
return kczg;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
DeductionAmountClient deductionAmountClient = new DeductionAmountClient(taxAgentId);
|
||||
String requestId = deductionAmountClient.confirm(year, kczglb);
|
||||
|
||||
//更新状态
|
||||
deductionAmountPOS.forEach(deductionAmountPO -> {
|
||||
deductionAmountPO.setDeclareStatus(DeclareStatusEnum.DECLARING.getValue());
|
||||
getDeductionAmountMapper().updateIgnoreNull(deductionAmountPO);
|
||||
});
|
||||
|
||||
//插入记录
|
||||
getDeductionAmountRecordMapper().deleteByTaxAgentIdAndYear(taxAgentId, year);
|
||||
DeductionAmountRecordPO recordPO = DeductionAmountRecordPO.builder()
|
||||
.id(IdGenerator.generate())
|
||||
.taxAgentId(taxAgentId)
|
||||
.year(year)
|
||||
.requestId(requestId)
|
||||
.creator((long) user.getUID())
|
||||
.createTime(new Date())
|
||||
.updateTime(new Date())
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build();
|
||||
getDeductionAmountRecordMapper().insertIgnoreNull(recordPO);
|
||||
|
||||
return requestId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String feedback(DeductionAmountFeedBackParam param) {
|
||||
Long taxAgentId = param.getTaxAgentId();
|
||||
String year = param.getYear();
|
||||
DeductionAmountRecordPO recordPO = getDeductionAmountRecordMapper().getByTaxAgentIdAndYear(taxAgentId, year);
|
||||
|
||||
if (recordPO == null) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(175337, "请先点击报送扣除名单,再点击反馈"));
|
||||
}
|
||||
|
||||
String requestId = recordPO.getRequestId();
|
||||
DeductionAmountClient deductionAmountClient = new DeductionAmountClient(taxAgentId);
|
||||
ConfirmFeedbackResponse feedback = deductionAmountClient.feedback(requestId);
|
||||
|
||||
if (feedback == null || feedback.getHead() == null) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, "服务异常,请稍后重试"));
|
||||
}
|
||||
// 如果税友返回错误信息
|
||||
String code = feedback.getHead().getCode();
|
||||
if (SzyhApiConstant.HANDLING_CODE.equals(code) || SzyhApiConstant.TASK_HANDLING_CODE.equals(code)) {
|
||||
//进行中的任务,重试
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(175337, "任务还在处理中,请稍后点击反馈"));
|
||||
}
|
||||
|
||||
if (!SzyhApiConstant.SUCCESS_CODE.equals(code)) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, feedback.getHead().getMsg()));
|
||||
}
|
||||
|
||||
List<DeductionAmountPO> deductionAmountPOS = getDeductionAmountMapper().listSome(DeductionAmountPO.builder().taxAgentId(taxAgentId).year(year).build());
|
||||
|
||||
List<ConfirmFeedbackResponse.Body.kcqrsb> kcqrsblb = feedback.getBody().getKcqrsblb();
|
||||
Map<String, String> failMap = SalaryEntityUtil.convert2Map(kcqrsblb, ConfirmFeedbackResponse.Body.kcqrsb::getZzhm, ConfirmFeedbackResponse.Body.kcqrsb::getSbyy);
|
||||
|
||||
deductionAmountPOS.forEach(deductionAmountPO -> {
|
||||
String cardNum = deductionAmountPO.getCardNum();
|
||||
if (failMap.containsKey(cardNum)) {
|
||||
deductionAmountPO.setDeclareStatus(DeclareStatusEnum.DECLARE_FAIL.getValue());
|
||||
deductionAmountPO.setDeclareErrorMsg(failMap.get(cardNum));
|
||||
} else {
|
||||
deductionAmountPO.setDeclareStatus(DeclareStatusEnum.DECLARE_SUCCESS.getValue());
|
||||
deductionAmountPO.setSuccessfullyDeclared(SalaryOnOffEnum.ON.getValue());
|
||||
}
|
||||
getDeductionAmountMapper().updateIgnoreNull(deductionAmountPO);
|
||||
});
|
||||
|
||||
return String.format("成功%s条,失败%s条", feedback.getBody().getCgrs(), feedback.getBody().getSbrs());
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -749,9 +749,7 @@ public class EmployeeDeclareServiceImpl extends Service implements EmployeeDecla
|
|||
}
|
||||
// 更新员工的报送状态
|
||||
if (CollectionUtils.isNotEmpty(needUpdateEmployeeDeclares)) {
|
||||
//todo
|
||||
needUpdateEmployeeDeclares.forEach(getEmployeeDeclareMapper()::updateIgnoreNull);
|
||||
// updateBatchById(needUpdateEmployeeDeclares);
|
||||
}
|
||||
// 删除原来的人员报送记录
|
||||
getEmployeeDeclareRecordService(user).deleteByTaxCycleAndTaxAgentId(param.getTaxCycle(), param.getTaxAgentId());
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.engine.core.impl.Service;
|
|||
import com.engine.salary.config.SalaryElogConfig;
|
||||
import com.engine.hrmelog.entity.dto.LoggerContext;
|
||||
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
|
||||
import com.engine.salary.entity.extemp.dto.ExtEmpDTO;
|
||||
import com.engine.salary.entity.extemp.param.ExtEmpImportParam;
|
||||
import com.engine.salary.entity.extemp.param.ExtEmpQueryParam;
|
||||
import com.engine.salary.entity.extemp.param.ExtEmpSaveParam;
|
||||
|
|
@ -83,9 +84,21 @@ public class ExtEmpServiceImpl extends Service implements ExtEmpService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<ExtEmpPO> listPage(ExtEmpQueryParam param) {
|
||||
public PageInfo<ExtEmpDTO> listPage(ExtEmpQueryParam param) {
|
||||
List<ExtEmpPO> extEmpPOS = list(param);
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), extEmpPOS, ExtEmpPO.class);
|
||||
|
||||
List<ExtEmpDTO> list = extEmpPOS.stream().map(po -> {
|
||||
return ExtEmpDTO.builder()
|
||||
.id(po.getId())
|
||||
.username(po.getUsername())
|
||||
.departmentName(po.getDepartmentName())
|
||||
.subcompanyName(po.getSubcompanyName())
|
||||
.companystartdate(po.getCompanystartdate())
|
||||
.workcode(po.getWorkcode())
|
||||
.build();
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), list, ExtEmpDTO.class);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -85,6 +85,8 @@ import java.util.concurrent.LinkedBlockingDeque;
|
|||
import java.util.regex.Matcher;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.engine.salary.sys.constant.SalarySysConstant.SALARY_ACCT_SYNC_TYPE;
|
||||
|
||||
import static com.engine.salary.constant.SalaryFormulaFieldConstant.SALARY_PATTERN;
|
||||
|
||||
/**
|
||||
|
|
@ -204,6 +206,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
private VariableItemService getVariableItemService(User user) {
|
||||
return ServiceUtil.getService(VariableItemServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) {
|
||||
return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user);
|
||||
}
|
||||
|
|
@ -910,6 +913,8 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
// 12.4、是否采用系统算税
|
||||
TaxDeclarationFunctionEnum taxDeclarationFunction = getSalarySysConfService(user).getTaxDeclaration();
|
||||
// 12.5、多线程运算,运算结果存放在临时表中
|
||||
//是否同步计算
|
||||
boolean isSync = "0".equals(getSalarySysConfService(user).getValueByCode(SALARY_ACCT_SYNC_TYPE));
|
||||
for (List<SalaryAcctEmployeePO> acctEmployeePOS : partition) {
|
||||
SalaryAcctCalculateBO salaryAcctCalculateBO = new SalaryAcctCalculateBO()
|
||||
.setSalaryAcctRecordPO(salaryAcctRecordPO)
|
||||
|
|
@ -932,13 +937,17 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
.setTaxDeclarationFunction(taxDeclarationFunction)
|
||||
.setTaxIds(taxIds);
|
||||
List<SalarySobBackItemPO> finalSalarySobBackItems = salarySobBackItems;
|
||||
LocalRunnable localRunnable = new LocalRunnable() {
|
||||
@Override
|
||||
public void execute() {
|
||||
getSalaryAcctCalculateService(user).calculate(salaryAcctCalculateBO, simpleEmployee, finalSalarySobBackItems);
|
||||
}
|
||||
};
|
||||
ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.HRM, "salaryAcctCalculate", localRunnable);
|
||||
if (isSync) {
|
||||
getSalaryAcctCalculateService(user).calculate(salaryAcctCalculateBO, simpleEmployee, finalSalarySobBackItems);
|
||||
} else {
|
||||
LocalRunnable localRunnable = new LocalRunnable() {
|
||||
@Override
|
||||
public void execute() {
|
||||
getSalaryAcctCalculateService(user).calculate(salaryAcctCalculateBO, simpleEmployee, finalSalarySobBackItems);
|
||||
}
|
||||
};
|
||||
ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.HRM, "salaryAcctCalculate", localRunnable);
|
||||
}
|
||||
}
|
||||
// 13、等待所有子线程执行完毕
|
||||
childMonitor.await();
|
||||
|
|
@ -967,7 +976,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
getSalaryAcctProgressService(user).finish(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), true);
|
||||
|
||||
//更新薪资核算记录最后操作日期
|
||||
getSalaryAcctRecordService(user).updateDate(salaryAcctRecordPO.getId(),new Date());
|
||||
getSalaryAcctRecordService(user).updateDate(salaryAcctRecordPO.getId(), new Date());
|
||||
|
||||
stopWatch.stop();
|
||||
log.info(stopWatch.prettyPrint());
|
||||
|
|
@ -975,6 +984,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
// 记录日志
|
||||
// 查询操作日志的targetName
|
||||
String targetName = getSalaryAcctRecordService(user).getLogTargetNameById(calculateParam.getSalaryAcctRecordId());
|
||||
Collection<Long> ids = calculateParam.getIds();
|
||||
if (CollectionUtils.isNotEmpty(ids)) {
|
||||
targetName += ids;
|
||||
}
|
||||
LoggerContext<SalaryCheckResultPO> loggerContext = new LoggerContext<>();
|
||||
loggerContext.setUser(user);
|
||||
loggerContext.setTargetId(String.valueOf(calculateParam.getSalaryAcctRecordId()));
|
||||
|
|
|
|||
|
|
@ -830,27 +830,72 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
|
|||
if (declareFeedBackStatusEnum == DeclareFeedBackStatusEnum.DECLARE_FAIL) {
|
||||
List<Map> failInfoList = JsonUtil.parseList(Util.null2String(declareTaxFeedbackResponse.getBody().getOrDefault("fknr", "")).replace("\\\"", "\""), Map.class);
|
||||
for (Map map : failInfoList) {
|
||||
String msg = Util.null2String(map.get("msg"));
|
||||
if (StringUtils.isNotEmpty(msg)) {
|
||||
errorMsg.add(msg);
|
||||
}
|
||||
List<List> details = JsonUtil.parseList(map.get("details"), List.class);
|
||||
if (details != null) {
|
||||
for (List detail : details) {
|
||||
String employeeName = Util.null2String(detail.get(0));
|
||||
String cardNum = Util.null2String(detail.get(2));
|
||||
String incomeCategoryCode = Util.null2String(detail.get(4));
|
||||
TaxDeclareFailPO taxDeclareFailPO = TaxDeclareFailPO.builder().id(IdGenerator.generate()).taxDeclareRecordId(taxDeclareRecord.getId()).employeeName(employeeName).cardNum(cardNum).incomeCategory(incomeCategoryCode).errorMsg(msg).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).creator((long) user.getUID()).deleteType(DeleteTypeEnum.NOT_DELETED.getValue()).createTime(now).updateTime(now).build();
|
||||
taxDeclareFails.add(taxDeclareFailPO);
|
||||
// 流量使用记录
|
||||
EmployeeDeclarePO employeeDeclarePO = employeeInfoMap.get(employeeName + "-" + cardNum);
|
||||
if (Objects.isNull(employeeDeclarePO)) {
|
||||
continue;
|
||||
if (map.containsKey("details")) {
|
||||
List<List> details = JsonUtil.parseList(map.get("details"), List.class);
|
||||
if (details != null) {
|
||||
for (List detail : details) {
|
||||
String employeeName = Util.null2String(detail.get(0));
|
||||
String cardNum = Util.null2String(detail.get(2));
|
||||
String detailMsg = Util.null2String(detail.get(1));
|
||||
errorMsg.add("【" + employeeName + "】" + detailMsg);
|
||||
TaxDeclareFailPO taxDeclareFailPO = TaxDeclareFailPO.builder()
|
||||
.id(IdGenerator.generate())
|
||||
.taxDeclareRecordId(taxDeclareRecord.getId())
|
||||
.employeeName(employeeName)
|
||||
.cardNum(cardNum)
|
||||
.incomeCategory("")
|
||||
.errorMsg(detailMsg)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.creator((long) user.getUID())
|
||||
.deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.build();
|
||||
taxDeclareFails.add(taxDeclareFailPO);
|
||||
// 流量使用记录
|
||||
EmployeeDeclarePO employeeDeclarePO = employeeInfoMap.get(employeeName + "-" + cardNum);
|
||||
if (Objects.isNull(employeeDeclarePO)) {
|
||||
continue;
|
||||
}
|
||||
TaxDeclarationApiFlowRecordPO flowDetailPO = TaxApiFlowBO.buildTaxDeclarationApiFlowRecordPO(apiFlowUpdateWrapper, taxDeclareRecord.getTaxAgentId(), employeeDeclarePO.getEmployeeId());
|
||||
flowDetailPO.setResultStatus(TaxAgentTaxReturnStatusEnum.FAIL.getValue());
|
||||
apiFlowUpdateWrapper.getApiFlowDetailPOList().add(flowDetailPO);
|
||||
employeeInfoMap.remove(employeeName + "-" + cardNum);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (map.containsKey("employeeList")) {
|
||||
List<Map> emps = JsonUtil.parseList(map.get("employeeList"), Map.class);
|
||||
if (emps != null) {
|
||||
for (Map detail : emps) {
|
||||
String employeeName = Util.null2String(detail.get("xm"));
|
||||
String cardNum = Util.null2String(detail.get("zzhm"));
|
||||
String detailMsg = Util.null2String(detail.get("cwxx"));
|
||||
errorMsg.add("【" + employeeName + "】" + detailMsg);
|
||||
TaxDeclareFailPO taxDeclareFailPO = TaxDeclareFailPO.builder()
|
||||
.id(IdGenerator.generate()).
|
||||
taxDeclareRecordId(taxDeclareRecord.getId())
|
||||
.employeeName(employeeName)
|
||||
.cardNum(cardNum)
|
||||
.incomeCategory("")
|
||||
.errorMsg(detailMsg)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.creator((long) user.getUID())
|
||||
.deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.build();
|
||||
taxDeclareFails.add(taxDeclareFailPO);
|
||||
// 流量使用记录
|
||||
EmployeeDeclarePO employeeDeclarePO = employeeInfoMap.get(employeeName + "-" + cardNum);
|
||||
if (Objects.isNull(employeeDeclarePO)) {
|
||||
continue;
|
||||
}
|
||||
TaxDeclarationApiFlowRecordPO flowDetailPO = TaxApiFlowBO.buildTaxDeclarationApiFlowRecordPO(apiFlowUpdateWrapper, taxDeclareRecord.getTaxAgentId(), employeeDeclarePO.getEmployeeId());
|
||||
flowDetailPO.setResultStatus(TaxAgentTaxReturnStatusEnum.FAIL.getValue());
|
||||
apiFlowUpdateWrapper.getApiFlowDetailPOList().add(flowDetailPO);
|
||||
employeeInfoMap.remove(employeeName + "-" + cardNum);
|
||||
}
|
||||
TaxDeclarationApiFlowRecordPO flowDetailPO = TaxApiFlowBO.buildTaxDeclarationApiFlowRecordPO(apiFlowUpdateWrapper, taxDeclareRecord.getTaxAgentId(), employeeDeclarePO.getEmployeeId());
|
||||
flowDetailPO.setResultStatus(TaxAgentTaxReturnStatusEnum.FAIL.getValue());
|
||||
apiFlowUpdateWrapper.getApiFlowDetailPOList().add(flowDetailPO);
|
||||
employeeInfoMap.remove(employeeName + "-" + cardNum);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,6 +71,11 @@ public class SalarySysConstant {
|
|||
*/
|
||||
public static final String SALARY_ACCT_EMPLOYEE_RULE = "salaryAcctEmployeeRule";
|
||||
|
||||
/**
|
||||
* 是否采用线程池,同步异步。空/1异步, 0同步
|
||||
*/
|
||||
public static final String SALARY_ACCT_SYNC_TYPE = "SALARY_ACCT_SYNC_TYPE";
|
||||
|
||||
/**
|
||||
* 工资单二次验证方式
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -42,6 +42,11 @@ import java.util.stream.Collectors;
|
|||
@Slf4j
|
||||
public class AutoSyncEmpArchiveStartDateJob extends BaseCronJob {
|
||||
|
||||
private String syncInsuranceArchive;
|
||||
private String syncSalaryArchive;
|
||||
|
||||
private String allStayAddToPay;
|
||||
private String allGotoFixed;
|
||||
private SalaryArchiveService getSalaryArchiveService(User user) {
|
||||
return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user);
|
||||
}
|
||||
|
|
@ -55,12 +60,6 @@ public class AutoSyncEmpArchiveStartDateJob extends BaseCronJob {
|
|||
return ServiceUtil.getService(SIArchivesServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private String syncInsuranceArchive;
|
||||
private String syncSalaryArchive;
|
||||
|
||||
private String allStayAddToPay;
|
||||
private String allGotoFixed;
|
||||
|
||||
private SalaryArchiveBiz getSalaryArchiveMapper = new SalaryArchiveBiz();
|
||||
|
||||
private SocialSchemeMapper getSocialSchemeMapper() {
|
||||
|
|
|
|||
|
|
@ -31,6 +31,13 @@ import java.util.*;
|
|||
*/
|
||||
public class AutoSyncResignationEmpArchiveJob extends BaseCronJob {
|
||||
|
||||
private String syncInsuranceArchive;
|
||||
private String syncSalaryArchive;
|
||||
|
||||
private String allStayAddToPay;
|
||||
private String allGotoFixed;
|
||||
|
||||
|
||||
private SalaryArchiveService getSalaryArchiveService(User user) {
|
||||
return ServiceUtil.getService(SalaryArchiveServiceImpl.class,user);
|
||||
}
|
||||
|
|
@ -73,39 +80,43 @@ public class AutoSyncResignationEmpArchiveJob extends BaseCronJob {
|
|||
}
|
||||
cal.add(Calendar.MONTH, preMonthValue);
|
||||
Map<Long, String> resignationMap = getSalaryEmployeeService(user).getResignationMapByDate(SalaryDateUtil.getFormatDate(cal.getTime()));
|
||||
// 获取离职人员中没有设置最后发薪日期的薪资档案
|
||||
List<SalaryArchivePO> salaryArchivePOS = getSalaryArchiveService(user).listPayEndDateIsNull(new ArrayList<>(resignationMap.keySet()));
|
||||
Date now = new Date();
|
||||
List<SalaryArchivePO> needUpdateSalaryArchiveList = new ArrayList<>();
|
||||
for(SalaryArchivePO archive : salaryArchivePOS){
|
||||
String dismissDate = resignationMap.get(archive.getEmployeeId());
|
||||
if (StringUtils.isNotBlank(dismissDate)) {
|
||||
archive.setPayEndDate(SalaryDateUtil.dateStrToLocalDate(dismissDate));
|
||||
archive.setUpdateTime(now);
|
||||
needUpdateSalaryArchiveList.add(archive);
|
||||
|
||||
if (StringUtils.isBlank(syncSalaryArchive) || !StringUtils.equals(syncSalaryArchive, "false")) {
|
||||
// 获取离职人员中没有设置最后发薪日期的薪资档案
|
||||
List<SalaryArchivePO> salaryArchivePOS = getSalaryArchiveService(user).listPayEndDateIsNull(new ArrayList<>(resignationMap.keySet()));
|
||||
Date now = new Date();
|
||||
List<SalaryArchivePO> needUpdateSalaryArchiveList = new ArrayList<>();
|
||||
for(SalaryArchivePO archive : salaryArchivePOS){
|
||||
String dismissDate = resignationMap.get(archive.getEmployeeId());
|
||||
if (StringUtils.isNotBlank(dismissDate)) {
|
||||
archive.setPayEndDate(SalaryDateUtil.dateStrToLocalDate(dismissDate));
|
||||
archive.setUpdateTime(now);
|
||||
needUpdateSalaryArchiveList.add(archive);
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(needUpdateSalaryArchiveList)) {
|
||||
getSalaryArchiveMapper.batchUpdate(needUpdateSalaryArchiveList);
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(needUpdateSalaryArchiveList)) {
|
||||
getSalaryArchiveMapper.batchUpdate(needUpdateSalaryArchiveList);
|
||||
}
|
||||
|
||||
// 获取离职人员中没有设置最后缴纳月的社保福利档案
|
||||
if (StringUtils.isBlank(syncInsuranceArchive) || !StringUtils.equals(syncInsuranceArchive, "false")) {
|
||||
// 获取离职人员中没有设置最后缴纳月的社保福利档案
|
||||
// List<InsuranceArchivesBaseInfoPO> needSyncList = siArchivesBiz.listEndDateIsNull(new ArrayList<>(resignationMap.keySet()));
|
||||
List<InsuranceArchivesBaseInfoPO> needSyncList = getSIArchivesService(user).listEndDateIsNull(new ArrayList<>(resignationMap.keySet()));
|
||||
// 设置社保、公积金最后缴纳月
|
||||
for(InsuranceArchivesBaseInfoPO po : needSyncList){
|
||||
String dismissDate = resignationMap.get(po.getEmployeeId());
|
||||
if (StringUtils.isNotEmpty(dismissDate)) {
|
||||
dismissDate = StringUtils.substring(dismissDate,0,7);
|
||||
// 更新社保最后缴纳月
|
||||
Long socialArchivesId = po.getSocialArchivesId();
|
||||
getSocialSchemeMapper().updateEndTime(socialArchivesId, dismissDate);
|
||||
// 更新公积金最后缴纳月
|
||||
Long fundArchivesId = po.getFundArchivesId();
|
||||
getFundSchemeMapper().updateEndTime(fundArchivesId, dismissDate);
|
||||
// 更新企业年金及其他福利最后缴纳月
|
||||
Long otherArchivesId = po.getOtherArchivesId();
|
||||
getOtherSchemeMapper().updateEndTime(otherArchivesId, dismissDate);
|
||||
List<InsuranceArchivesBaseInfoPO> needSyncList = getSIArchivesService(user).listEndDateIsNull(new ArrayList<>(resignationMap.keySet()));
|
||||
// 设置社保、公积金最后缴纳月
|
||||
for(InsuranceArchivesBaseInfoPO po : needSyncList){
|
||||
String dismissDate = resignationMap.get(po.getEmployeeId());
|
||||
if (StringUtils.isNotEmpty(dismissDate)) {
|
||||
dismissDate = StringUtils.substring(dismissDate,0,7);
|
||||
// 更新社保最后缴纳月
|
||||
Long socialArchivesId = po.getSocialArchivesId();
|
||||
getSocialSchemeMapper().updateEndTime(socialArchivesId, dismissDate);
|
||||
// 更新公积金最后缴纳月
|
||||
Long fundArchivesId = po.getFundArchivesId();
|
||||
getFundSchemeMapper().updateEndTime(fundArchivesId, dismissDate);
|
||||
// 更新企业年金及其他福利最后缴纳月
|
||||
Long otherArchivesId = po.getOtherArchivesId();
|
||||
getOtherSchemeMapper().updateEndTime(otherArchivesId, dismissDate);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,94 @@
|
|||
package com.engine.salary.web;
|
||||
|
||||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.salary.component.PageInfo;
|
||||
import com.engine.salary.entity.deductionamount.dto.DeductionAmountDTO;
|
||||
import com.engine.salary.entity.deductionamount.param.*;
|
||||
import com.engine.salary.util.ResponseResult;
|
||||
import com.engine.salary.wrapper.DeductionAmountWrapper;
|
||||
import io.swagger.v3.oas.annotations.parameters.RequestBody;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import weaver.hrm.HrmUserVarify;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.Context;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
|
||||
/**
|
||||
* 年收入不足6万元的纳税人暂不预扣预缴税款扣除名单
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Slf4j
|
||||
public class DeductionAmountController {
|
||||
|
||||
private DeductionAmountWrapper getDeductionAmountWrapper(User user) {
|
||||
return ServiceUtil.getService(DeductionAmountWrapper.class, user);
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/list")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DeductionAmountListParam param) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<DeductionAmountListParam, PageInfo<DeductionAmountDTO>>(user).run(getDeductionAmountWrapper(user)::list, param);
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/add")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String add(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DeductionAmountAddParam param) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<DeductionAmountAddParam, Object>(user).run(getDeductionAmountWrapper(user)::add, param);
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/edit")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String edit(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DeductionAmountEditParam param) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<DeductionAmountEditParam, Object>(user).run(getDeductionAmountWrapper(user)::edit, param);
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/delete")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String delete(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DeductionAmountDeleteParam param) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<DeductionAmountDeleteParam, Object>(user).run(getDeductionAmountWrapper(user)::delete, param);
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/query")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String query(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DeductionAmountOnlineQueryParam param) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<DeductionAmountOnlineQueryParam, Object>(user).run(getDeductionAmountWrapper(user)::query, param);
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/confirm")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String confirm(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DeductionAmountConfirmParam param) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<DeductionAmountConfirmParam, String>(user).run(getDeductionAmountWrapper(user)::confirm, param);
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/feedback")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String feedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DeductionAmountFeedBackParam param) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<DeductionAmountFeedBackParam, String>(user).run(getDeductionAmountWrapper(user)::feedback, param);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
package com.engine.salary.web;
|
||||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.salary.entity.extemp.dto.ExtEmpDTO;
|
||||
import com.engine.salary.entity.extemp.param.ExtEmpImportParam;
|
||||
import com.engine.salary.entity.extemp.param.ExtEmpQueryParam;
|
||||
import com.engine.salary.entity.extemp.param.ExtEmpSaveParam;
|
||||
|
|
@ -48,7 +49,7 @@ public class ExtEmpController {
|
|||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ExtEmpQueryParam param) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<ExtEmpQueryParam, PageInfo<ExtEmpPO>>(user).run(getExtEmpWrapper(user)::listPage, param);
|
||||
return new ResponseResult<ExtEmpQueryParam, PageInfo<ExtEmpDTO>>(user).run(getExtEmpWrapper(user)::listPage, param);
|
||||
}
|
||||
|
||||
@POST
|
||||
|
|
|
|||
|
|
@ -0,0 +1,55 @@
|
|||
package com.engine.salary.wrapper;
|
||||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.component.PageInfo;
|
||||
import com.engine.salary.entity.deductionamount.dto.DeductionAmountDTO;
|
||||
import com.engine.salary.entity.deductionamount.param.*;
|
||||
import com.engine.salary.service.DeductionAmountService;
|
||||
import com.engine.salary.service.impl.DeductionAmountServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import weaver.hrm.User;
|
||||
|
||||
/**
|
||||
* 年收入不足6万元的纳税人暂不预扣预缴税款扣除名单
|
||||
* <p>Copyright: Copyright (c) 2023</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Slf4j
|
||||
public class DeductionAmountWrapper extends Service {
|
||||
private DeductionAmountService getDeductionAmountService(User user) {
|
||||
return ServiceUtil.getService(DeductionAmountServiceImpl.class, user);
|
||||
}
|
||||
|
||||
public PageInfo<DeductionAmountDTO> list(DeductionAmountListParam param) {
|
||||
return getDeductionAmountService(user).list(param);
|
||||
}
|
||||
|
||||
public void add(DeductionAmountAddParam param) {
|
||||
getDeductionAmountService(user).add(param);
|
||||
}
|
||||
|
||||
public void edit(DeductionAmountEditParam param) {
|
||||
getDeductionAmountService(user).edit(param);
|
||||
}
|
||||
|
||||
public void delete(DeductionAmountDeleteParam param) {
|
||||
getDeductionAmountService(user).delete(param);
|
||||
}
|
||||
|
||||
public Object query(DeductionAmountOnlineQueryParam param) {
|
||||
return getDeductionAmountService(user).query(param);
|
||||
}
|
||||
|
||||
public String confirm(DeductionAmountConfirmParam param) {
|
||||
return getDeductionAmountService(user).confirm(param);
|
||||
}
|
||||
|
||||
public String feedback(DeductionAmountFeedBackParam param) {
|
||||
return getDeductionAmountService(user).feedback(param);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ package com.engine.salary.wrapper;
|
|||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.entity.extemp.dto.ExtEmpDTO;
|
||||
import com.engine.salary.entity.extemp.param.ExtEmpImportParam;
|
||||
import com.engine.salary.entity.extemp.param.ExtEmpQueryParam;
|
||||
import com.engine.salary.entity.extemp.param.ExtEmpSaveParam;
|
||||
|
|
@ -30,7 +31,7 @@ public class ExtEmpWrapper extends Service {
|
|||
}
|
||||
|
||||
|
||||
public PageInfo<ExtEmpPO> listPage(ExtEmpQueryParam param) {
|
||||
public PageInfo<ExtEmpDTO> listPage(ExtEmpQueryParam param) {
|
||||
return getExtEmpService(user).listPage(param);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,9 +7,9 @@ import java.util.List;
|
|||
|
||||
public class ParseTaxApi {
|
||||
public static void main(String[] args) {
|
||||
// readExcel("H:\\code\\salary\\test\\ApiDes.xlsx");
|
||||
readExcel("H:\\code\\salary\\test\\ApiDes.xlsx");
|
||||
|
||||
readExcel2("H:\\code\\salary\\test\\ApiDes.xlsx");
|
||||
// readExcel2("H:\\code\\salary\\test\\ApiDes.xlsx");
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue