From 894b9cd1fc97da00c477cda53f312f0085d8796b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 10 Mar 2025 15:31:33 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=89=A3=E9=99=A4=E5=90=8D=E5=8D=95?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=202=E3=80=81=E6=89=A3=E9=99=A4=E5=90=8D?= =?UTF-8?q?=E5=8D=95=E7=A1=AE=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/web/DeductionAmountController.java | 15 + .../param/DeductionAmountAddParam.java | 45 ++ .../param/DeductionAmountConfirmParam.java | 31 ++ .../DeductionAmountOnlineQueryParam.java | 31 ++ .../param/DeductionAmountQueryParam.java | 31 ++ .../deductionamount/po/DeductionAmountPO.java | 128 +++++ .../DeductionAmountMapper.java | 74 +++ .../deductionamount/DeductionAmountMapper.xml | 345 ++++++++++++++ .../tax/client/DeductionAmountClient.java | 93 ++++ .../remote/tax/client/EmployeeClient.java | 4 +- .../ConfirmPreDeductRequest.java | 95 ++++ .../QueryDeductionAmountRequest.java | 64 +++ .../service/DeductionAmountService.java | 19 + .../impl/DeductionAmountServiceImpl.java | 112 +++++ .../salary/web/DeductionAmountController.java | 442 ++++++++++++++++++ .../wrapper/DeductionAmountWrapper.java | 34 ++ test/ParseTaxApi.java | 4 +- 17 files changed, 1563 insertions(+), 4 deletions(-) create mode 100644 src/com/api/salary/web/DeductionAmountController.java create mode 100644 src/com/engine/salary/entity/deductionamount/param/DeductionAmountAddParam.java create mode 100644 src/com/engine/salary/entity/deductionamount/param/DeductionAmountConfirmParam.java create mode 100644 src/com/engine/salary/entity/deductionamount/param/DeductionAmountOnlineQueryParam.java create mode 100644 src/com/engine/salary/entity/deductionamount/param/DeductionAmountQueryParam.java create mode 100644 src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java create mode 100644 src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.java create mode 100644 src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.xml create mode 100644 src/com/engine/salary/remote/tax/client/DeductionAmountClient.java create mode 100644 src/com/engine/salary/remote/tax/request/deductionAmount/ConfirmPreDeductRequest.java create mode 100644 src/com/engine/salary/remote/tax/request/deductionAmount/QueryDeductionAmountRequest.java create mode 100644 src/com/engine/salary/service/DeductionAmountService.java create mode 100644 src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java create mode 100644 src/com/engine/salary/web/DeductionAmountController.java create mode 100644 src/com/engine/salary/wrapper/DeductionAmountWrapper.java diff --git a/src/com/api/salary/web/DeductionAmountController.java b/src/com/api/salary/web/DeductionAmountController.java new file mode 100644 index 000000000..b18635031 --- /dev/null +++ b/src/com/api/salary/web/DeductionAmountController.java @@ -0,0 +1,15 @@ +package com.api.salary.web; + +import javax.ws.rs.Path; + +/** + * 年收入不足6万元的纳税人暂不预扣预缴税款扣除名单 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Path("/bs/hrmsalary/deductionAmount") +public class DeductionAmountController extends com.engine.salary.web.DeductionAmountController { +} diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountAddParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountAddParam.java new file mode 100644 index 000000000..0deb8966f --- /dev/null +++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountAddParam.java @@ -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; + +/** + * 扣除名单查询参数 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @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 employeeDeclareIds; +} diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountConfirmParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountConfirmParam.java new file mode 100644 index 000000000..e5fe93593 --- /dev/null +++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountConfirmParam.java @@ -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; + +/** + * 扣除名单查询参数 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @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; + +} diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountOnlineQueryParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountOnlineQueryParam.java new file mode 100644 index 000000000..cd5c8f2ee --- /dev/null +++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountOnlineQueryParam.java @@ -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; + +/** + * 扣除名单查询参数 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @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; + +} diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountQueryParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountQueryParam.java new file mode 100644 index 000000000..d6b87fb23 --- /dev/null +++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountQueryParam.java @@ -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; + +/** + * 扣除名单查询参数 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @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; + +} diff --git a/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java b/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java new file mode 100644 index 000000000..d3ae06169 --- /dev/null +++ b/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java @@ -0,0 +1,128 @@ +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 Byte employeeType; + + /** + * 工号 + */ + @ElogTransform(name = "工号") + private String jobNum; + + /** + * 证件号码 + */ + @ElogTransform(name = "证件号码") + private String cardNum; + + /** + * 证件类型 + */ + @ElogTransform(name = "证件类型") + private Byte cardType; + + /** + * 报送状态 + */ + @ElogTransform(name = "报送状态") + private Byte declareStatus; + + /** + * 是否扣除 + */ + @ElogTransform(name = "是否扣除") + private Byte deductFlag; + /** + * 是否成功报送过 + */ + @ElogTransform(name = "是否成功报送过") + private Byte successfullyDeclared; + + + /** + * 创建时间 + */ + @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 ids; + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.java b/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.java new file mode 100644 index 000000000..352d00a2e --- /dev/null +++ b/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.java @@ -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 listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List 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 ids); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.xml b/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.xml new file mode 100644 index 000000000..f41492135 --- /dev/null +++ b/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.xml @@ -0,0 +1,345 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + 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.tax_agent_id + , t.tenant_key + , t.update_time + , t.year + + + + + + + + + + + + + + + INSERT INTO hrsa_deduction_amount + + + + card_num, + + + card_type, + + + create_time, + + + creator, + + + declare_status, + + + deduct_flag, + + + delete_type, + + + employee_id, + + + employee_name, + + + employee_type, + + + id, + + + job_num, + + + successfully_declared, + + + tax_agent_id, + + + tenant_key, + + + update_time, + + + year, + + + + + #{cardNum}, + + + #{cardType}, + + + #{createTime}, + + + #{creator}, + + + #{declareStatus}, + + + #{deductFlag}, + + + #{deleteType}, + + + #{employeeId}, + + + #{employeeName}, + + + #{employeeType}, + + + #{id}, + + + #{jobNum}, + + + #{successfullyDeclared}, + + + #{taxAgentId}, + + + #{tenantKey}, + + + #{updateTime}, + + + #{year}, + + + + + + + + UPDATE hrsa_deduction_amount + + 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}, + tax_agent_id=#{taxAgentId}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + year=#{year}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_deduction_amount + + + 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}, + + + tax_agent_id=#{taxAgentId}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + year=#{year}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_deduction_amount + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_deduction_amount + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/remote/tax/client/DeductionAmountClient.java b/src/com/engine/salary/remote/tax/client/DeductionAmountClient.java new file mode 100644 index 000000000..bb9b92e9c --- /dev/null +++ b/src/com/engine/salary/remote/tax/client/DeductionAmountClient.java @@ -0,0 +1,93 @@ +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.util.HttpUtil; +import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.SingnatureData; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +/** + * 申报扣减客户端 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @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 params = new HashMap<>(1); + Map 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 confirmPreDeduct(String year) { + + String url = super.apiConfig.getHost() + "gateway/iit/deductionAmount/queryPreDeduct"; + 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(null); + + String reqJson = JsonUtil.toJsonString(request); + log.info("queryDeductionAmountRequest params --- \n{}\n", reqJson); + Map params = new HashMap<>(1); + Map 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; + } +} diff --git a/src/com/engine/salary/remote/tax/client/EmployeeClient.java b/src/com/engine/salary/remote/tax/client/EmployeeClient.java index 480d00e53..5a246b398 100644 --- a/src/com/engine/salary/remote/tax/client/EmployeeClient.java +++ b/src/com/engine/salary/remote/tax/client/EmployeeClient.java @@ -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()); diff --git a/src/com/engine/salary/remote/tax/request/deductionAmount/ConfirmPreDeductRequest.java b/src/com/engine/salary/remote/tax/request/deductionAmount/ConfirmPreDeductRequest.java new file mode 100644 index 000000000..035c90543 --- /dev/null +++ b/src/com/engine/salary/remote/tax/request/deductionAmount/ConfirmPreDeductRequest.java @@ -0,0 +1,95 @@ +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 kczglb; + + + public static class kczg { + /** + * 姓名 + */ + private String xm; + /** + * 证件类型 见证件类型字典 + */ + private String zzlx; + /** + * 证件号码 证件号码 + */ + private String zzhm; + /** + * 国籍 + */ + private String gj; + /** + * 扣除标识 是/否 + */ + private String kcbs; + } + +} diff --git a/src/com/engine/salary/remote/tax/request/deductionAmount/QueryDeductionAmountRequest.java b/src/com/engine/salary/remote/tax/request/deductionAmount/QueryDeductionAmountRequest.java new file mode 100644 index 000000000..1aaa0a3a1 --- /dev/null +++ b/src/com/engine/salary/remote/tax/request/deductionAmount/QueryDeductionAmountRequest.java @@ -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; + +} diff --git a/src/com/engine/salary/service/DeductionAmountService.java b/src/com/engine/salary/service/DeductionAmountService.java new file mode 100644 index 000000000..a72534724 --- /dev/null +++ b/src/com/engine/salary/service/DeductionAmountService.java @@ -0,0 +1,19 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.deductionamount.param.DeductionAmountAddParam; +import com.engine.salary.entity.deductionamount.param.DeductionAmountOnlineQueryParam; + +/** + * 年收入不足6万元的纳税人暂不预扣预缴税款扣除名单 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public interface DeductionAmountService { + + Object query(DeductionAmountOnlineQueryParam queryParam); + + void add(DeductionAmountAddParam param); +} diff --git a/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java b/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java new file mode 100644 index 000000000..e501287a7 --- /dev/null +++ b/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java @@ -0,0 +1,112 @@ +package com.engine.salary.service.impl; + + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.entity.deductionamount.param.DeductionAmountAddParam; +import com.engine.salary.entity.deductionamount.param.DeductionAmountOnlineQueryParam; +import com.engine.salary.entity.deductionamount.po.DeductionAmountPO; +import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; +import com.engine.salary.mapper.deductionamount.DeductionAmountMapper; +import com.engine.salary.mapper.employeedeclare.EmployeeDeclareMapper; +import com.engine.salary.remote.tax.client.DeductionAmountClient; +import com.engine.salary.service.*; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.valid.ValidUtil; +import lombok.extern.slf4j.Slf4j; +import weaver.hrm.User; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 年收入不足6万元的纳税人暂不预扣预缴税款扣除名单 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Slf4j +public class DeductionAmountServiceImpl extends Service implements DeductionAmountService { + + private DeductionAmountMapper getDeductionAmountMapper() { + return MapperProxyFactory.getProxy(DeductionAmountMapper.class); + } + + private EmployeeDeclareMapper getEmployeeDeclareMapper() { + return MapperProxyFactory.getProxy(EmployeeDeclareMapper.class); + } + + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + + private SalaryArchiveService getSalaryArchiveService(User user) { + return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user); + } + + private TaxDeclarationApiConfigService getTaxDeclarationApiConfigService(User user) { + return ServiceUtil.getService(TaxDeclarationApiConfigServiceImpl.class, user); + } + + private TaxAgentTaxReturnService getTaxAgentTaxReturnService(User user) { + return ServiceUtil.getService(TaxAgentTaxReturnServiceImpl.class, user); + } + + private EmployeeDeclareRecordService getEmployeeDeclareRecordService(User user) { + return ServiceUtil.getService(EmployeeDeclareRecordServiceImpl.class, user); + } + + private TaxDeclarationApiBillingService getTaxDeclarationApiBillingService(User user) { + return ServiceUtil.getService(TaxDeclarationApiBillingServiceImpl.class, user); + } + + @Override + public Object query(DeductionAmountOnlineQueryParam queryParam) { + Long taxAgentId = queryParam.getTaxAgentId(); + DeductionAmountClient deductionAmountClient = new DeductionAmountClient(taxAgentId); + return deductionAmountClient.query(queryParam.getYear()); + } + + @Override + public void add(DeductionAmountAddParam param) { + ValidUtil.doValidator(param); + + //已存在 + List deductionAmountPOS = getDeductionAmountMapper().listSome(DeductionAmountPO.builder().taxAgentId(param.getTaxAgentId()).year(param.getYear()).build()); + List oldIds = SalaryEntityUtil.properties(deductionAmountPOS, DeductionAmountPO::getEmployeeId, Collectors.toList()); + + //本次新增 + List employeeDeclareIds = param.getEmployeeDeclareIds(); + List employeeDeclarePOS = getEmployeeDeclareMapper().listSome(EmployeeDeclarePO.builder().ids(employeeDeclareIds).build()); + +// employeeDeclarePOS.stream() +// .filter(employeeDeclarePO -> !oldIds.contains(employeeDeclarePO.getEmployeeId())) +// .map(employeeDeclarePO -> { +// DeductionAmountPO.builder() +// .id(employeeDeclarePO.getEmployeeId()) +// .taxAgentId(employeeDeclarePO.getEmployeeId()) +// .year(param.getYear()) +// .employeeId(employeeDeclarePO.getEmployeeId()) +// .employeeName(employeeDeclarePO.getEmployeeName()) +// .employeeType(employeeDeclarePO.getEmployeeId()) +// .jobNum(employeeDeclarePO.getEmployeeId()) +// .cardNum(employeeDeclarePO.getEmployeeId()) +// .cardType(employeeDeclarePO.getEmployeeId()) +// .declareStatus(employeeDeclarePO.getEmployeeId()) +// .deductFlag(employeeDeclarePO.getEmployeeId()) +// .successfullyDeclared(employeeDeclarePO.getEmployeeId()) +// .creator(employeeId) +// .createTime(now) +// .updateTime(now) +// .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) +// .deleteType(NumberUtils.INTEGER_ZERO) +// }); + } +} diff --git a/src/com/engine/salary/web/DeductionAmountController.java b/src/com/engine/salary/web/DeductionAmountController.java new file mode 100644 index 000000000..e9ad983fc --- /dev/null +++ b/src/com/engine/salary/web/DeductionAmountController.java @@ -0,0 +1,442 @@ +package com.engine.salary.web; + + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.deductionamount.param.DeductionAmountAddParam; +import com.engine.salary.entity.deductionamount.param.DeductionAmountOnlineQueryParam; +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万元的纳税人暂不预扣预缴税款扣除名单 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Slf4j +public class DeductionAmountController { + + private DeductionAmountWrapper getDeductionAmountWrapper(User user) { + return ServiceUtil.getService(DeductionAmountWrapper.class, user); + } + + @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(user).run(getDeductionAmountWrapper(user)::add, param); + } + + @POST + @Path("/query") + @Produces(MediaType.APPLICATION_JSON) + public String queryPreDeduct(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DeductionAmountOnlineQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getDeductionAmountWrapper(user)::query, queryParam); + } + +// @POST +// @Path("/confirmPreDeduct") +// @Produces(MediaType.APPLICATION_JSON) +// public String queryPreDeduct(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DeductionAmountConfirmParam param) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult(user).run(getDeductionAmountWrapper(user)::confirm, param); +// } + +// /** +// * 人员报送-个税扣缴义务人列表 +// * +// * @param param 查询条件 +// * @return +// */ +// @POST +// @Path("/taxAgentDeclareList") +// @Produces(MediaType.APPLICATION_JSON) +// public String taxAgentDeclareList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentDeclareListQueryParam param) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult>(user).run(getEmployeeDeclareWrapper(user)::taxAgentDeclareList, param); +// } +// +// /** +// * 人员报送-全部人员列表 +// * +// * @param queryParam 查询条件 +// * @return +// */ +// @POST +// @Path("/list") +// @Produces(MediaType.APPLICATION_JSON) +// public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareListQueryParam queryParam) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult>(user).run(getEmployeeDeclareWrapper(user)::list, queryParam); +// } +// +// /** +// * 人员报送-本月新增人员列表 +// * +// * @param queryParam 查询条件 +// * @return +// */ +// @POST +// @Path("/list4Add") +// @Produces(MediaType.APPLICATION_JSON) +// public String list4Add(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareAddListQueryParam queryParam) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult>(user).run(getEmployeeDeclareWrapper(user)::list4Add, queryParam); +// } +// +// /** +// * 人员报送-本月信息变动列表 +// * +// * @param queryParam 查询条件 +// * @return +// */ +// @POST +// @Path("/list4Update") +// @Produces(MediaType.APPLICATION_JSON) +// public String list4Update(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareListQueryParam queryParam) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult>(user).run(getEmployeeDeclareWrapper(user)::list4Update, queryParam); +// } +// +// /** +// * 人员报送-本月报送失败人员列表 +// * +// * @param queryParam 查询条件 +// * @return +// */ +// @POST +// @Path("/list4Fail") +// @Produces(MediaType.APPLICATION_JSON) +// public String list4Fail(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareFailListQueryParam queryParam) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult>(user).run(getEmployeeDeclareWrapper(user)::list4Fail, queryParam); +// } +// +// /** +// * 人员报送-获取新建或编辑的表单 +// * +// * @param id 报送人员列表的主键id +// * @return +// */ +// @GET +// @Path("/getForm") +// @Produces(MediaType.APPLICATION_JSON) +// public String getForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult>(user).run(getEmployeeDeclareWrapper(user)::getForm, id); +// } +// +//// @GetMapping("/getBatchUpdateForm") +//// @ApiOperation("人员报送-获取批量编辑的表单") +//// @Produces(MediaType.APPLICATION_JSON) +//// public WeaResult getBatchUpdateForm() { +//// WeaForm weaForm = employeeDeclareWrapper.getBatchUpdateForm(); +//// return WeaResult.success(weaForm); +//// } +//// +//// @GetMapping("/getSearchCondition") +//// @ApiOperation("人员报送-获取高级搜索条件") +//// @Produces(MediaType.APPLICATION_JSON) +//// public WeaResult getSearchCondition() { +//// WeaSearchCondition searchCondition = employeeDeclareWrapper.getSearchCondition(); +//// return WeaResult.success(searchCondition); +//// } +// +// /** +// * 人员报送-新增人员/编辑人员保存 +// * +// * @param saveParam 保存参数 +// * @return +// */ +// @POST +// @Path("/save") +// @Produces(MediaType.APPLICATION_JSON) +// public String save(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareSaveParam saveParam) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult>(user).run(getEmployeeDeclareWrapper(user)::save, saveParam); +// } +// +//// /** +//// * 人员报送-批量编辑 +//// * +//// * @param batchUpdateParam 批量编辑参数 +//// * @return +//// */ +//// @Path("/batchUpdate") +//// @ApiOperation("人员报送-批量编辑") +//// @Produces(MediaType.APPLICATION_JSON) +//// public WeaResult batchUpdate(@RequestBody @Validated EmployeeDeclareBatchUpdateParam batchUpdateParam) { +//// employeeDeclareWrapper.batchUpdate(batchUpdateParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()); +//// return WeaResult.success(null); +//// } +// +// /** +// * 人员报送-删除 +// * +// * @param ids 待删除的主键id +// * @return +// */ +// @POST +// @Path("/delete") +// @Produces(MediaType.APPLICATION_JSON) +// public String deleteByIds(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Collection ids) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult, String>(user).run(getEmployeeDeclareWrapper(user)::deleteByIds, ids); +// } +// +// /** +// * 人员报送-刷新数据 +// * +// * @param refreshParam 刷新数据的参数 +// * @return +// */ +// @POST +// @Path("/refresh") +// @Produces(MediaType.APPLICATION_JSON) +// public String refresh(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareRefreshParam refreshParam) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult(user).run(getEmployeeDeclareWrapper(user)::refresh, refreshParam); +// } +// +// /** +// * 人员报送-获取整体的报送情况 +// * +// * @param employeeDeclareParam 获取整体的报送情况的参数 +// * @return +// */ +// @POST +// @Path("/getDeclareInfo") +// @Produces(MediaType.APPLICATION_JSON) +// public String getDeclareInfo(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareParam employeeDeclareParam) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult(user).run(getEmployeeDeclareWrapper(user)::getDeclareInfo, employeeDeclareParam); +// } +// +// /** +// * 人员报送-全部报送 +// * +// * @param employeeDeclareParam 在线报送 +// * @return +// */ +// @POST +// @Path("/declare") +// @Produces(MediaType.APPLICATION_JSON) +// public String declare(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareParam employeeDeclareParam) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult(user).run(getEmployeeDeclareWrapper(user)::declare, employeeDeclareParam); +// } +// +// /** +// * 人员报送-获取报送结果反馈 +// * +// * @param employeeDeclareParam 获取反馈 +// * @return +// */ +// @POST +// @Path("/getDeclareFeedback") +// @Produces(MediaType.APPLICATION_JSON) +// public String getDeclareFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareParam employeeDeclareParam) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult(user).run(getEmployeeDeclareWrapper(user)::getDeclareFeedback, employeeDeclareParam); +// } +// +// +// /** +// * 人员报送-后端业务逻辑是否已经完成 +// * +// * @param index 进度索引 +// * @return +// */ +// @GET +// @Path("/getRate") +// @Produces(MediaType.APPLICATION_JSON) +// public String getRate(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "index") String index) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult(user).run(getEmployeeDeclareWrapper(user)::getRate, index); +// } +// +// /** +// * 人员报送-下载导入模板 +// * +// * @param queryParam 导出参数 +// * @return +// */ +// @POST +// @Path("/exportTemplate") +// @Produces(MediaType.APPLICATION_OCTET_STREAM) +// public Response exportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareImportParam queryParam) { +// +// try { +// User user = HrmUserVarify.getUser(request, response); +// XSSFWorkbook workbook = getEmployeeDeclareWrapper(user).exportTemplate(queryParam); +// String fileName = "人员信息采集导入模板-" + LocalDate.now(); +// try { +// fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); +// } catch (UnsupportedEncodingException e) { +// e.printStackTrace(); +// } +// +// StreamingOutput output = outputStream -> { +// workbook.write(outputStream); +// outputStream.flush(); +// }; +// response.setContentType("application/octet-stream"); +// return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); +// } catch (Exception e) { +// log.error("人员报送-人员信息采集导入模板异常", e); +// throw e; +// } +// } +// +// /** +// * 人员报送-导入预览 +// * +// * @param queryParam 导出参数 +// * @return +// */ +// @POST +// @Path("/preview") +// @Produces(MediaType.APPLICATION_JSON) +// public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareImportParam queryParam) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult>(user).run(getEmployeeDeclareWrapper(user)::preview, queryParam); +// } +// +// /** +// * 人员报送-导入 +// * +// * @param queryParam 导出参数 +// * @return +// */ +// @POST +// @Path("/importData") +// @Produces(MediaType.APPLICATION_JSON) +// public String importData(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareImportParam queryParam) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult>(user).run(getEmployeeDeclareWrapper(user)::importData, queryParam); +// } +// +// +// /** +// * 人员报送-导出全部人员 +// * +// * @param param 导出参数 +// * @return +// */ +// @POST +// @Path("/export") +// @Produces(MediaType.APPLICATION_OCTET_STREAM) +// public Response export(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareListQueryParam param) { +// +// try { +// User user = HrmUserVarify.getUser(request, response); +// XSSFWorkbook workbook = getEmployeeDeclareWrapper(user).export(param); +// String fileName = "人员信息采集-" + LocalDate.now(); +// try { +// fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); +// } catch (UnsupportedEncodingException e) { +// e.printStackTrace(); +// } +// +// StreamingOutput output = outputStream -> { +// workbook.write(outputStream); +// outputStream.flush(); +// }; +// response.setContentType("application/octet-stream"); +// return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); +// } catch (Exception e) { +// log.error("人员报送-导出全部人员异常", e); +// throw e; +// } +// } + +// /** +// * 人员报送-导出本月新增人员 +// * +// * @param queryParam 导出参数 +// * @return +// */ +// @Path("/export4Add") +// @ApiOperation("人员报送-导出本月新增人员") +// @Produces(MediaType.APPLICATION_JSON) +// public WeaResult export4Add(@RequestBody @Validated EmployeeDeclareAddListQueryParam queryParam) { +// Map exportMap = employeeDeclareWrapper.export4Add(queryParam, UserContext.getCurrentUser()); +// return WeaResult.success(exportMap); +// } +// +// /** +// * 人员报送-导出本月信息变动人员 +// * +// * @param queryParam 导出参数 +// * @return +// */ +// @Path("/export4Update") +// @ApiOperation("人员报送-导出本月信息变动人员") +// @Produces(MediaType.APPLICATION_JSON) +// public WeaResult export4Update(@RequestBody @Validated EmployeeDeclareListQueryParam queryParam) { +// Map exportMap = employeeDeclareWrapper.export4Update(queryParam, UserContext.getCurrentUser()); +// return WeaResult.success(exportMap); +// } +// +// /** +// * 人员报送-导出本月报送失败的人员 +// * +// * @param queryParam 导出参数 +// * @return +// */ +// @Path("/export4Fail") +// @ApiOperation("人员报送-导出本月报送失败的人员") +// @Produces(MediaType.APPLICATION_JSON) +// public WeaResult export4Fail(@RequestBody @Validated EmployeeDeclareFailListQueryParam queryParam) { +// Map exportMap = employeeDeclareWrapper.export4Fail(queryParam, UserContext.getCurrentUser()); +// return WeaResult.success(exportMap); +// } +// +// @Path("/getImportParam") +// @ApiOperation("人员报送-获取导入参数") +// @Produces(MediaType.APPLICATION_JSON) +// public WeaResult getAcctResultImportParams() { +// String tenantKey = TenantContext.getCurrentTenantKey(); +// Long currentEmployeeId = UserContext.getCurrentEmployeeId(); +// return WeaResult.success(salaryBatchService.buildImportParam("importEmployeeDeclare", +// "importEmployeeDeclare", +// SalaryI18nUtil.getI18nLabel(tenantKey, currentEmployeeId, 158769, "人员信息报送"), +// null, +// null)); +// } +// +// /** +// * 人员报送-导出导入模板 +// * +// * @param importParam 获取导入模板 +// * @return +// */ +// @Path("/exportTemplate") +// @ApiOperation("人员报送-导出导入模板") +// @Produces(MediaType.APPLICATION_JSON) +// public WeaResult exportTemplate(@RequestBody @Validated EmployeeDeclareImportParam importParam) { +// Map exportMap = employeeDeclareWrapper.exportTemplate(importParam, UserContext.getCurrentUser()); +// return WeaResult.success(exportMap); +// } + + + //4.2.5年收入不足6万元的纳税人暂不预扣预缴税款 + + +} diff --git a/src/com/engine/salary/wrapper/DeductionAmountWrapper.java b/src/com/engine/salary/wrapper/DeductionAmountWrapper.java new file mode 100644 index 000000000..697621d67 --- /dev/null +++ b/src/com/engine/salary/wrapper/DeductionAmountWrapper.java @@ -0,0 +1,34 @@ +package com.engine.salary.wrapper; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.entity.deductionamount.param.DeductionAmountAddParam; +import com.engine.salary.entity.deductionamount.param.DeductionAmountOnlineQueryParam; +import com.engine.salary.service.*; +import com.engine.salary.service.impl.*; +import lombok.extern.slf4j.Slf4j; +import weaver.hrm.User; + +/** + * 年收入不足6万元的纳税人暂不预扣预缴税款扣除名单 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Slf4j +public class DeductionAmountWrapper extends Service { + private DeductionAmountService getDeductionAmountService(User user) { + return ServiceUtil.getService(DeductionAmountServiceImpl.class, user); + } + + + public Object query(DeductionAmountOnlineQueryParam queryParam) { + return getDeductionAmountService(user).query(queryParam); + } + + public void add(DeductionAmountAddParam param) { + getDeductionAmountService(user).add(param); + } +} diff --git a/test/ParseTaxApi.java b/test/ParseTaxApi.java index 716d56807..56bb4a986 100644 --- a/test/ParseTaxApi.java +++ b/test/ParseTaxApi.java @@ -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"); }