This commit is contained in:
钱涛 2024-01-04 15:35:23 +08:00
parent 482c461ce9
commit f3fa6c6f32
12 changed files with 155 additions and 373 deletions

View File

@ -26,4 +26,9 @@ public class TaxDeclarationValueListQueryParam extends BaseQueryParam {
//导出excel时加密的密码")
private String sharePassword;
/**
* 姓名或者工号
*/
private String keyword;
}

View File

@ -23,32 +23,76 @@ import java.util.Date;
//hrsa_tax_report_column
public class TaxReportColumnPO {
//name = 主键id
/**
* 主键id
*/
private Long id;
//name = 报表类型
/**
* 报表类型
*/
private String taxReportType;
//name = 所得项目
/**
* 所得项目
*/
private String incomeCategory;
//name = 申报表的列名
/**
* 申报表的列名
*/
private String reportColumnName;
//name = 申报表的列名多语言标签
/**
* 申报表的列名多语言标签
*/
private Integer reportColumnLabel;
//name = 申报表的列索引
/**
* 申报表的列索引
*/
private String reportColumnDataIndex;
//name = 数值类型
/**
* 数值类型
*/
private String dataType;
//name = 个税对接时的参数key
/**
* 个税对接时的参数key
*/
private String requestParamKey;
//name = 租户key
/**
* 是否是对比字段1是0否
*/
private Integer contrastType;
/**
* 租户key
*/
private String tenantKey;
//name = 创建人id
/**
* 创建人id
*/
private Long creator;
//name = 是否删除
/**
* 是否删除
*/
private Integer deleteType;
//name = 创建时间
/**
* 创建时间
*/
private Date createTime;
//name = 更新时间
/**
* 更新时间
*/
private Date updateTime;
Collection<Long> ids;
Collection<Integer> contrastTypes;
}

View File

@ -1,9 +1,7 @@
package com.engine.salary.mapper.taxdeclaration;
import com.engine.salary.entity.taxdeclaration.po.TaxReportColumnPO;
import org.apache.ibatis.annotations.Param;
import java.util.Collection;
import java.util.List;
public interface TaxReportColumnMapper {
@ -21,60 +19,4 @@ public interface TaxReportColumnMapper {
* @return 返回集合没有返回空List
*/
List<TaxReportColumnPO> listSome(TaxReportColumnPO taxReportColumn);
/**
* 根据主键查询
*
* @param id 主键
* @return 返回记录没有返回null
*/
TaxReportColumnPO getById(Long id);
/**
* 新增忽略null字段
*
* @param taxReportColumn 新增的记录
* @return 返回影响行数
*/
int insertIgnoreNull(TaxReportColumnPO taxReportColumn);
/**
* 批量插入
*
* @param taxReportColumn
*/
void batchInsert(@Param("collection") List<TaxReportColumnPO> taxReportColumn);
/**
* 修改修改所有字段
*
* @param taxReportColumn 修改的记录
* @return 返回影响行数
*/
int update(TaxReportColumnPO taxReportColumn);
/**
* 修改忽略null字段
*
* @param taxReportColumn 修改的记录
* @return 返回影响行数
*/
int updateIgnoreNull(TaxReportColumnPO taxReportColumn);
/**
* 删除记录
*
* @param taxReportColumn 待删除的记录
* @return 返回影响行数
*/
int delete(TaxReportColumnPO taxReportColumn);
/**
* 批量删除记录
*
* @param ids 主键id集合
*/
void deleteByIds(@Param("ids") Collection<Long> ids);
}

View File

@ -15,6 +15,7 @@
<result column="data_type" property="dataType"/>
<result column="request_param_key" property="requestParamKey"/>
<result column="report_column_label" property="reportColumnLabel"/>
<result column="contrast_type" property="contrastType"/>
</resultMap>
<!-- 表字段 -->
@ -34,6 +35,7 @@
, t.data_type
, t.request_param_key
, t.report_column_label
, t.contrast_type
</sql>
<!-- 查询全部 -->
@ -98,299 +100,23 @@
<if test="reportColumnLabel != null">
AND report_column_label = #{reportColumnLabel}
</if>
<if test="contrastType != null">
AND contrast_type = #{contrastType}
</if>
<if test="ids != null and ids.size()>0">
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="contrastTypes != null and contrastTypes.size()>0">
AND contrast_type IN
<foreach collection="contrastTypes" open="(" item="contrastType" separator="," close=")">
#{contrastType}
</foreach>
</if>
ORDER BY id
</select>
<!-- 插入不为NULL的字段 -->
<insert id="insertIgnoreNull" parameterType="com.engine.salary.entity.taxdeclaration.po.TaxReportColumnPO">
INSERT INTO hrsa_tax_report_column
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="updateTime != null">
update_time,
</if>
<if test="creator != null">
creator,
</if>
<if test="deleteType != null">
delete_type,
</if>
<if test="tenantKey != null">
tenant_key,
</if>
<if test="taxReportType != null">
tax_report_type,
</if>
<if test="incomeCategory != null">
income_category,
</if>
<if test="reportColumnName != null">
report_column_name,
</if>
<if test="reportColumnDataIndex != null">
report_column_data_index,
</if>
<if test="dataType != null">
data_type,
</if>
<if test="requestParamKey != null">
request_param_key,
</if>
<if test="reportColumnLabel != null">
report_column_label,
</if>
</trim>
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id},
</if>
<if test="createTime != null">
#{createTime},
</if>
<if test="updateTime != null">
#{updateTime},
</if>
<if test="creator != null">
#{creator},
</if>
<if test="deleteType != null">
#{deleteType},
</if>
<if test="tenantKey != null">
#{tenantKey},
</if>
<if test="taxReportType != null">
#{taxReportType},
</if>
<if test="incomeCategory != null">
#{incomeCategory},
</if>
<if test="reportColumnName != null">
#{reportColumnName},
</if>
<if test="reportColumnDataIndex != null">
#{reportColumnDataIndex},
</if>
<if test="dataType != null">
#{dataType},
</if>
<if test="requestParamKey != null">
#{requestParamKey},
</if>
<if test="reportColumnLabel != null">
#{reportColumnLabel},
</if>
</trim>
</insert>
<insert id="batchInsert">
INSERT INTO hrsa_tax_report_column
(
id,
create_time,
update_time,
creator,
delete_type,
tenant_key,
tax_report_type,
income_category,
report_column_name,
report_column_data_index,
data_type,
request_param_key,
report_column_label
)
VALUES
(
<foreach collection="collection" item="item" separator=",">
#{item.id},
#{item.createTime},
#{item.updateTime},
#{item.creator},
#{item.deleteType},
#{item.tenantKey},
#{item.taxReportType},
#{item.incomeCategory},
#{item.reportColumnName},
#{item.reportColumnDataIndex},
#{item.dataType},
#{item.requestParamKey},
#{item.reportColumnLabel}
</foreach>
)
</insert>
<insert id="batchInsert" databaseId="oracle">
INSERT INTO hrsa_tax_report_column (
id,
create_time,
update_time,
creator,
delete_type,
tenant_key,
tax_report_type,
income_category,
report_column_name,
report_column_data_index,
data_type,
request_param_key,
report_column_label
)
<foreach collection="collection" item="item" separator="union all">
select
#{item.id,jdbcType=DOUBLE},
#{item.createTime,jdbcType=DATE},
#{item.updateTime,jdbcType=DATE},
#{item.creator,jdbcType=DOUBLE},
#{item.deleteType,jdbcType=INTEGER},
#{item.tenantKey,jdbcType=VARCHAR},
#{item.taxReportType,jdbcType=INTEGER},
#{item.incomeCategory,jdbcType=INTEGER},
#{item.reportColumnName,jdbcType=VARCHAR},
#{item.reportColumnDataIndex,jdbcType=VARCHAR},
#{item.dataType,jdbcType=VARCHAR},
#{item.requestParamKey,jdbcType=VARCHAR},
#{item.reportColumnLabel,jdbcType=INTEGER}
from dual
</foreach>
</insert>
<insert id="batchInsert" databaseId="sqlserver">
<foreach collection="collection" item="item" separator=";">
INSERT INTO hrsa_tax_report_column (
id,
create_time,
update_time,
creator,
delete_type,
tenant_key,
tax_report_type,
income_category,
report_column_name,
report_column_data_index,
data_type,
request_param_key,
report_column_label
)
VALUES
(
#{item.id},
#{item.createTime},
#{item.updateTime},
#{item.creator},
#{item.deleteType},
#{item.tenantKey},
#{item.taxReportType},
#{item.incomeCategory},
#{item.reportColumnName},
#{item.reportColumnDataIndex},
#{item.dataType},
#{item.requestParamKey},
#{item.reportColumnLabel}
)
</foreach>
</insert>
<!-- 更新,更新全部字段 -->
<update id="update" parameterType="com.engine.salary.entity.taxdeclaration.po.TaxReportColumnPO">
UPDATE hrsa_tax_report_column
<set>
create_time=#{createTime},
update_time=#{updateTime},
creator=#{creator},
delete_type=#{deleteType},
tenant_key=#{tenantKey},
tax_report_type=#{taxReportType},
income_category=#{incomeCategory},
report_column_name=#{reportColumnName},
report_column_data_index=#{reportColumnDataIndex},
data_type=#{dataType},
request_param_key=#{requestParamKey},
report_column_label=#{reportColumnLabel},
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 更新不为NULL的字段 -->
<update id="updateIgnoreNull" parameterType="com.engine.salary.entity.taxdeclaration.po.TaxReportColumnPO">
UPDATE hrsa_tax_report_column
<set>
<if test="createTime != null">
create_time=#{createTime},
</if>
<if test="updateTime != null">
update_time=#{updateTime},
</if>
<if test="creator != null">
creator=#{creator},
</if>
<if test="deleteType != null">
delete_type=#{deleteType},
</if>
<if test="tenantKey != null">
tenant_key=#{tenantKey},
</if>
<if test="taxReportType != null">
tax_report_type=#{taxReportType},
</if>
<if test="incomeCategory != null">
income_category=#{incomeCategory},
</if>
<if test="reportColumnName != null">
report_column_name=#{reportColumnName},
</if>
<if test="reportColumnDataIndex != null">
report_column_data_index=#{reportColumnDataIndex},
</if>
<if test="dataType != null">
data_type=#{dataType},
</if>
<if test="requestParamKey != null">
request_param_key=#{requestParamKey},
</if>
<if test="reportColumnLabel != null">
report_column_label=#{reportColumnLabel},
</if>
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 根据主键删除记录 -->
<delete id="delete">
UPDATE hrsa_tax_report_column
SET delete_type=1
WHERE id = #{id}
AND delete_type = 0
</delete>
<delete id="deleteByIds">
UPDATE hrsa_tax_report_column
SET delete_type = 1
WHERE delete_type = 0
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

View File

@ -81,6 +81,19 @@ public interface TaxDeclareRecordService {
*/
void save(TaxDeclarationSaveParam saveParam);
/**
* 税局端申报明细查询
*
* @param id
*/
String queryCompanyIncomes(Long id);
/**
* 对比线上和线下算税
* @param id
*/
void contrast(Long id);
/**
* 刷新数据
@ -179,12 +192,7 @@ public interface TaxDeclareRecordService {
*/
String queryDeclareStatus(Long id);
/**
* 税局端申报明细查询
*
* @param id
*/
String queryCompanyIncomes(Long id);
void updateById(TaxDeclareRecordPO taxDeclareRecord);

View File

@ -28,5 +28,5 @@ public interface TaxReportColumnService {
* @param incomeCategory
* @return
*/
List<TaxReportColumnPO> listByIncomeCategory(IncomeCategoryEnum incomeCategory);
List<TaxReportColumnPO> listByIncomeCategory(IncomeCategoryEnum incomeCategory, Integer... contrastTypes);
}

View File

@ -197,7 +197,7 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar
public XSSFWorkbook downloadTemplate(DownloadTemplateParam param) {
TaxDeclarationPO declarationPO = getTaxDeclarationService(user).getById(param.getTaxDeclarationId());
IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(declarationPO.getIncomeCategory());
List<TaxReportColumnPO> taxReportColumnPOS = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum);
List<TaxReportColumnPO> taxReportColumnPOS = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum,0);
List<Object> heads = new ArrayList<>();
@ -247,7 +247,7 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar
TaxDeclarationPO declarationPO = getTaxDeclarationService(user).getById(param.getTaxDeclarationId());
IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(declarationPO.getIncomeCategory());
List<TaxReportColumnPO> taxReportColumnPOS = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum);
List<TaxReportColumnPO> taxReportColumnPOS = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum,0);
List<String> taxReportColumnNames = SalaryEntityUtil.properties(taxReportColumnPOS, TaxReportColumnPO::getReportColumnName, Collectors.toList());
List<TaxDeclarationValuePO> taxDeclarationValuePOS = getTaxDeclarationValueService(user).listByTaxDeclarationId(declarationPO.getId());

View File

@ -41,6 +41,8 @@ import weaver.hrm.User;
import java.util.*;
import java.util.stream.Collectors;
import static weaver.conn.ExternalDataSourceManager.list;
/**
* 个税申报表
* <p>Copyright: Copyright (c) 2023</p>
@ -109,7 +111,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar
public TaxDeclarationValueListDTO convert2List(TaxDeclarationPO taxDeclaration, List<TaxDeclarationValuePO> taxDeclarationValues) {
// 查询个税申报表表头
IncomeCategoryEnum incomeCategoryEnum = SalaryEnumUtil.enumMatchByValue(taxDeclaration.getIncomeCategory(), IncomeCategoryEnum.class);
List<TaxReportColumnPO> taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum);
List<TaxReportColumnPO> taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum, 0);
// 人员id
Set<Long> employeeIds = SalaryEntityUtil.properties(taxDeclarationValues, TaxDeclarationValuePO::getEmployeeId);
// 查询报送的人员
@ -272,7 +274,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar
}
//正常薪资的表头
List<TaxReportColumnPO> taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.WAGES_AND_SALARIES);
List<TaxReportColumnPO> taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.WAGES_AND_SALARIES, 0);
Map<String, String> valueMap = Maps.newHashMap();
for (TaxReportColumnPO taxReportColumn : taxReportColumns) {
String value = Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue()) ? "0.00" : "";
@ -328,4 +330,22 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar
})).collect(Collectors.toList());
batchSave(autoAddValuePOs);
}
public void contrast(Long taxDeclarationId) {
TaxDeclarationPO declarationPO = getTaxDeclarationService(user).getById(taxDeclarationId);
if (declarationPO == null) {
throw new SalaryRunTimeException("无申报表");
}
TaxDeclarationPO taxDeclarationPO;
if (CollectionUtils.isNotEmpty(list)) {
if (list.size() > 1) {
throw new SalaryRunTimeException("存在多条正常工资薪金申报表数据");
}
taxDeclarationPO = list.get(0);
} else {
}
}
}

View File

@ -1113,6 +1113,12 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
return res;
}
@Override
public void contrast(Long id) {
}
@Override
public void updateById(TaxDeclareRecordPO taxDeclareRecord) {
getTaxDeclareRecordMapper().updateIgnoreNull(taxDeclareRecord);

View File

@ -7,6 +7,7 @@ import com.engine.salary.mapper.taxdeclaration.TaxReportColumnMapper;
import com.engine.salary.service.TaxReportColumnService;
import com.engine.salary.util.db.MapperProxyFactory;
import java.util.Arrays;
import java.util.List;
/**
@ -17,7 +18,7 @@ import java.util.List;
* @author qiantao
* @version 1.0
**/
public class TaxReportColumnServiceImpl extends Service implements TaxReportColumnService {
public class TaxReportColumnServiceImpl extends Service implements TaxReportColumnService {
private TaxReportColumnMapper getTaxReportColumnMapper() {
return MapperProxyFactory.getProxy(TaxReportColumnMapper.class);
@ -26,11 +27,11 @@ public class TaxReportColumnServiceImpl extends Service implements TaxReportCol
@Override
public List<TaxReportColumnPO> listAll() {
return getTaxReportColumnMapper().listAll();
return getTaxReportColumnMapper().listAll();
}
@Override
public List<TaxReportColumnPO> listByIncomeCategory(IncomeCategoryEnum incomeCategory) {
return getTaxReportColumnMapper().listSome(TaxReportColumnPO.builder().incomeCategory(incomeCategory.getValue().toString()).build());
public List<TaxReportColumnPO> listByIncomeCategory(IncomeCategoryEnum incomeCategory, Integer... contrastTypes) {
return getTaxReportColumnMapper().listSome(TaxReportColumnPO.builder().contrastTypes(Arrays.asList(contrastTypes)).incomeCategory(incomeCategory.getValue().toString()).build());
}
}

View File

@ -364,6 +364,21 @@ public class TaxDeclarationController {
return new ResponseResult<Long, String>(user).run(getTaxDeclareRecordWrapper(user)::queryCompanyIncomes, taxDeclareRecordParam.getTaxDeclareRecordId());
}
/**
* 对比算税过程
* @param request
* @param response
* @param taxDeclareRecordParam
* @return
*/
@POST
@Path("/contrast")
@Produces(MediaType.APPLICATION_JSON)
public String contrast(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam taxDeclareRecordParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, String>(user).run(getTaxDeclareRecordWrapper(user)::contrast, taxDeclareRecordParam.getTaxDeclareRecordId());
}
/**
* 刷新数据
*

View File

@ -636,6 +636,11 @@ public class TaxDeclareRecordWrapper extends Service {
return getTaxDeclareRecordService(user).queryCompanyIncomes(id);
}
public void contrast(Long id) {
getTaxDeclareRecordService(user).contrast(id);
}
/**
* 刷新数据
*
@ -714,6 +719,11 @@ public class TaxDeclareRecordWrapper extends Service {
return getTaxDeclarationExcelService(user).exportEmployee4Fail(queryParam);
}
/**
* 新增表单
* @param param
* @return
*/
public TaxDeclareRecordDetailFormDTO getAddForm(TaxDeclareRecordDetailFormParam param) {
TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(param.getTaxDeclarationId());
@ -722,7 +732,7 @@ public class TaxDeclareRecordWrapper extends Service {
}
// 查询个税申报表列
List<TaxReportColumnPO> taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclaration.getIncomeCategory()));
List<TaxReportColumnPO> taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclaration.getIncomeCategory()),0);
//当前税款所属期报送成功且状态正常的人员
List<EmployeeDeclarePO> employeeDeclarePOS = getEmployeeDeclareService(user).listByParam(
EmployeeDeclareListQueryParam
@ -765,6 +775,11 @@ public class TaxDeclareRecordWrapper extends Service {
getTaxDeclarationValueService(user).edit(param);
}
/**
* 详细信息
* @param id
* @return
*/
public TaxDeclareRecordDetailFormDTO detailInfo(Long id) {
TaxDeclarationValuePO declarationValuePO = getTaxDeclarationValueService(user).getById(id);
TaxDeclarationPO taxDeclarationPO = getTaxDeclarationService(user).getById(declarationValuePO.getTaxDeclarationId());
@ -783,7 +798,7 @@ public class TaxDeclareRecordWrapper extends Service {
}
EmployeeDeclarePO employeeDeclarePO = employeeDeclarePOS.get(0);
// 查询个税申报表列
List<TaxReportColumnPO> taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclarationPO.getIncomeCategory()));
List<TaxReportColumnPO> taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclarationPO.getIncomeCategory()),0);
return TaxDeclareRecordDetailFormDTO
.builder()
.id(id)