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 01/22] =?UTF-8?q?1=E3=80=81=E6=89=A3=E9=99=A4=E5=90=8D?= =?UTF-8?q?=E5=8D=95=E6=9F=A5=E8=AF=A2=202=E3=80=81=E6=89=A3=E9=99=A4?= =?UTF-8?q?=E5=90=8D=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"); } From 12bbfeceae045480081e915101fda3e5f48c211a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 11 Mar 2025 11:15:08 +0800 Subject: [PATCH 02/22] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=89=A3=E9=99=A4?= =?UTF-8?q?=E5=90=8D=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deductionamount/po/DeductionAmountPO.java | 10 ++-- .../impl/DeductionAmountServiceImpl.java | 48 ++++++++++--------- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java b/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java index d3ae06169..642b98098 100644 --- a/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java +++ b/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java @@ -53,7 +53,7 @@ public class DeductionAmountPO { * 人员类型 */ @ElogTransform(name = "人员类型") - private Byte employeeType; + private Integer employeeType; /** * 工号 @@ -71,24 +71,24 @@ public class DeductionAmountPO { * 证件类型 */ @ElogTransform(name = "证件类型") - private Byte cardType; + private Integer cardType; /** * 报送状态 */ @ElogTransform(name = "报送状态") - private Byte declareStatus; + private Integer declareStatus; /** * 是否扣除 */ @ElogTransform(name = "是否扣除") - private Byte deductFlag; + private Integer deductFlag; /** * 是否成功报送过 */ @ElogTransform(name = "是否成功报送过") - private Byte successfullyDeclared; + private Integer successfullyDeclared; /** diff --git a/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java b/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java index e501287a7..7fd9c25bb 100644 --- a/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java +++ b/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java @@ -3,6 +3,7 @@ package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.deductionamount.param.DeductionAmountAddParam; import com.engine.salary.entity.deductionamount.param.DeductionAmountOnlineQueryParam; import com.engine.salary.entity.deductionamount.po.DeductionAmountPO; @@ -15,8 +16,10 @@ 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 org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -86,27 +89,28 @@ public class DeductionAmountServiceImpl extends Service implements DeductionAmou 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) -// }); + Date now = new Date(); + 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.getEmployeeType()) + .jobNum(employeeDeclarePO.getJobNum()) + .cardNum(employeeDeclarePO.getCardNum()) + .cardType(employeeDeclarePO.getCardType()) + .declareStatus(0) + .deductFlag(1) + .successfullyDeclared(0) + .creator((long)user.getUID()) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .deleteType(NumberUtils.INTEGER_ZERO); + }); } } From a119e7c7cde6a6e117ab5be81d58dcba65ef43db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 12 Mar 2025 13:55:59 +0800 Subject: [PATCH 03/22] =?UTF-8?q?=E6=89=A3=E9=99=A4=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/DeductionAmountDTO.java | 123 ++++++++++++++++++ .../param/DeductionAmountListParam.java | 36 +++++ .../deductionamount/po/DeductionAmountPO.java | 6 + .../deductionamount/DeductionAmountMapper.xml | 15 +++ .../tax/client/DeductionAmountClient.java | 9 +- .../ConfirmPreDeductRequest.java | 1 + .../service/DeductionAmountService.java | 12 +- .../impl/DeductionAmountServiceImpl.java | 109 ++++++++++++---- .../salary/web/DeductionAmountController.java | 24 +++- .../wrapper/DeductionAmountWrapper.java | 21 ++- 10 files changed, 320 insertions(+), 36 deletions(-) create mode 100644 src/com/engine/salary/entity/deductionamount/dto/DeductionAmountDTO.java create mode 100644 src/com/engine/salary/entity/deductionamount/param/DeductionAmountListParam.java diff --git a/src/com/engine/salary/entity/deductionamount/dto/DeductionAmountDTO.java b/src/com/engine/salary/entity/deductionamount/dto/DeductionAmountDTO.java new file mode 100644 index 000000000..d5a2d3fcb --- /dev/null +++ b/src/com/engine/salary/entity/deductionamount/dto/DeductionAmountDTO.java @@ -0,0 +1,123 @@ +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 = "declareStatus", key = "declareStatus") + private Integer declareStatus; + + + /** + * 是否成功报送过 + */ + private Integer successfullyDeclared; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 创建人id + */ + private Long creator; + + /** + * 是否删除 + */ + private Integer deleteType; + + /** + * 租户KEY + */ + private String tenantKey; + + //主键id集合 + private Collection ids; + +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountListParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountListParam.java new file mode 100644 index 000000000..0ce30402b --- /dev/null +++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountListParam.java @@ -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; + +/** + * 扣除名单查询参数 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @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; + +} diff --git a/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java b/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java index 642b98098..731a211da 100644 --- a/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java +++ b/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java @@ -61,6 +61,12 @@ public class DeductionAmountPO { @ElogTransform(name = "工号") private String jobNum; + /** + * 国籍 + */ + @ElogTransform(name = "国籍") + private String nationality; + /** * 证件号码 */ diff --git a/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.xml b/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.xml index f41492135..db85a9649 100644 --- a/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.xml +++ b/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.xml @@ -19,6 +19,7 @@ + @@ -42,6 +43,7 @@ , t.tenant_key , t.update_time , t.year + , t.nationality @@ -118,6 +120,9 @@ AND year = #{year} + + AND nationality = #{nationality} + AND id IN @@ -184,6 +189,9 @@ year, + + nationality, + @@ -237,6 +245,9 @@ #{year}, + + #{nationality}, + @@ -261,6 +272,7 @@ tenant_key=#{tenantKey}, update_time=#{updateTime}, year=#{year}, + nationality=#{nationality}, WHERE id = #{id} AND delete_type = 0 @@ -318,6 +330,9 @@ year=#{year}, + + nationality=#{nationality}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/remote/tax/client/DeductionAmountClient.java b/src/com/engine/salary/remote/tax/client/DeductionAmountClient.java index bb9b92e9c..32e129c94 100644 --- a/src/com/engine/salary/remote/tax/client/DeductionAmountClient.java +++ b/src/com/engine/salary/remote/tax/client/DeductionAmountClient.java @@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.UUID; @@ -60,7 +61,7 @@ public class DeductionAmountClient extends TaxBaseClient { - public String confirmPreDeduct(String year) { + public String confirmPreDeduct(String year, List kczglb ) { String url = super.apiConfig.getHost() + "gateway/iit/deductionAmount/queryPreDeduct"; ConfirmPreDeductRequest request = new ConfirmPreDeductRequest(); @@ -78,16 +79,16 @@ public class DeductionAmountClient extends TaxBaseClient { request.setJmsmmm("1"); request.setMmlx("" + returnPO.getPasswordType()); request.setSkssnd(year); - request.setKczglb(null); + request.setKczglb(kczglb); String reqJson = JsonUtil.toJsonString(request); - log.info("queryDeductionAmountRequest params --- \n{}\n", reqJson); + log.info("confirmPreDeduct 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); + log.info("confirmPreDeduct res --- {}", res); return res; } } diff --git a/src/com/engine/salary/remote/tax/request/deductionAmount/ConfirmPreDeductRequest.java b/src/com/engine/salary/remote/tax/request/deductionAmount/ConfirmPreDeductRequest.java index 035c90543..635c146ec 100644 --- a/src/com/engine/salary/remote/tax/request/deductionAmount/ConfirmPreDeductRequest.java +++ b/src/com/engine/salary/remote/tax/request/deductionAmount/ConfirmPreDeductRequest.java @@ -69,6 +69,7 @@ public class ConfirmPreDeductRequest { private List kczglb; + @Data public static class kczg { /** * 姓名 diff --git a/src/com/engine/salary/service/DeductionAmountService.java b/src/com/engine/salary/service/DeductionAmountService.java index a72534724..16a86ffbe 100644 --- a/src/com/engine/salary/service/DeductionAmountService.java +++ b/src/com/engine/salary/service/DeductionAmountService.java @@ -1,6 +1,10 @@ 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.DeductionAmountAddParam; +import com.engine.salary.entity.deductionamount.param.DeductionAmountConfirmParam; +import com.engine.salary.entity.deductionamount.param.DeductionAmountListParam; import com.engine.salary.entity.deductionamount.param.DeductionAmountOnlineQueryParam; /** @@ -13,7 +17,13 @@ import com.engine.salary.entity.deductionamount.param.DeductionAmountOnlineQuery **/ public interface DeductionAmountService { - Object query(DeductionAmountOnlineQueryParam queryParam); + PageInfo list(DeductionAmountListParam param); void add(DeductionAmountAddParam param); + + Object query(DeductionAmountOnlineQueryParam param); + + Object confirm(DeductionAmountConfirmParam param); + + } diff --git a/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java b/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java index 7fd9c25bb..73083cf2b 100644 --- a/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java +++ b/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java @@ -3,17 +3,25 @@ package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.component.PageInfo; import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.deductionamount.dto.DeductionAmountDTO; import com.engine.salary.entity.deductionamount.param.DeductionAmountAddParam; +import com.engine.salary.entity.deductionamount.param.DeductionAmountConfirmParam; +import com.engine.salary.entity.deductionamount.param.DeductionAmountListParam; 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.enums.SalaryOnOffEnum; +import com.engine.salary.enums.employeedeclare.CardTypeEnum; 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.remote.tax.request.deductionAmount.ConfirmPreDeductRequest; import com.engine.salary.service.*; import com.engine.salary.util.SalaryEntityUtil; 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; @@ -70,11 +78,35 @@ public class DeductionAmountServiceImpl extends Service implements DeductionAmou 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()); + public PageInfo list(DeductionAmountListParam param) { + ValidUtil.doValidator(param); + + List deductionAmountPOS = getDeductionAmountMapper().listSome(DeductionAmountPO.builder().year(param.getYear()).taxAgentId(param.getTaxAgentId()).build()); + + List list = deductionAmountPOS.stream().map(deductionAmountPO -> { + return 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()) + .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 @@ -92,25 +124,54 @@ public class DeductionAmountServiceImpl extends Service implements DeductionAmou Date now = new Date(); 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.getEmployeeType()) - .jobNum(employeeDeclarePO.getJobNum()) - .cardNum(employeeDeclarePO.getCardNum()) - .cardType(employeeDeclarePO.getCardType()) - .declareStatus(0) - .deductFlag(1) - .successfullyDeclared(0) - .creator((long)user.getUID()) - .createTime(now) - .updateTime(now) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .deleteType(NumberUtils.INTEGER_ZERO); - }); + .map(employeeDeclarePO -> DeductionAmountPO.builder() + .id(employeeDeclarePO.getEmployeeId()) + .taxAgentId(employeeDeclarePO.getEmployeeId()) + .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(0) + .deductFlag(1) + .successfullyDeclared(0) + .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 Object query(DeductionAmountOnlineQueryParam param) { + Long taxAgentId = param.getTaxAgentId(); + DeductionAmountClient deductionAmountClient = new DeductionAmountClient(taxAgentId); + return deductionAmountClient.query(param.getYear()); + } + + @Override + public Object confirm(DeductionAmountConfirmParam param) { + ValidUtil.doValidator(param); + Long taxAgentId = param.getTaxAgentId(); + String year = param.getYear(); + List deductionAmountPOS = getDeductionAmountMapper().listSome(DeductionAmountPO.builder().taxAgentId(taxAgentId).year(year).build()); + List 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); + return deductionAmountClient.confirmPreDeduct(year, kczglb); } } diff --git a/src/com/engine/salary/web/DeductionAmountController.java b/src/com/engine/salary/web/DeductionAmountController.java index e9ad983fc..819598cb9 100644 --- a/src/com/engine/salary/web/DeductionAmountController.java +++ b/src/com/engine/salary/web/DeductionAmountController.java @@ -2,7 +2,11 @@ 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.DeductionAmountAddParam; +import com.engine.salary.entity.deductionamount.param.DeductionAmountConfirmParam; +import com.engine.salary.entity.deductionamount.param.DeductionAmountListParam; import com.engine.salary.entity.deductionamount.param.DeductionAmountOnlineQueryParam; import com.engine.salary.util.ResponseResult; import com.engine.salary.wrapper.DeductionAmountWrapper; @@ -34,6 +38,14 @@ public class DeductionAmountController { 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>(user).run(getDeductionAmountWrapper(user)::list, param); + } + @POST @Path("/add") @Produces(MediaType.APPLICATION_JSON) @@ -45,9 +57,17 @@ public class DeductionAmountController { @POST @Path("/query") @Produces(MediaType.APPLICATION_JSON) - public String queryPreDeduct(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DeductionAmountOnlineQueryParam queryParam) { + public String query(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DeductionAmountOnlineQueryParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getDeductionAmountWrapper(user)::query, queryParam); + return new ResponseResult(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(user).run(getDeductionAmountWrapper(user)::confirm, param); } // @POST diff --git a/src/com/engine/salary/wrapper/DeductionAmountWrapper.java b/src/com/engine/salary/wrapper/DeductionAmountWrapper.java index 697621d67..c9bada6fa 100644 --- a/src/com/engine/salary/wrapper/DeductionAmountWrapper.java +++ b/src/com/engine/salary/wrapper/DeductionAmountWrapper.java @@ -2,10 +2,14 @@ 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.DeductionAmountAddParam; +import com.engine.salary.entity.deductionamount.param.DeductionAmountConfirmParam; +import com.engine.salary.entity.deductionamount.param.DeductionAmountListParam; import com.engine.salary.entity.deductionamount.param.DeductionAmountOnlineQueryParam; -import com.engine.salary.service.*; -import com.engine.salary.service.impl.*; +import com.engine.salary.service.DeductionAmountService; +import com.engine.salary.service.impl.DeductionAmountServiceImpl; import lombok.extern.slf4j.Slf4j; import weaver.hrm.User; @@ -23,12 +27,19 @@ public class DeductionAmountWrapper extends Service { return ServiceUtil.getService(DeductionAmountServiceImpl.class, user); } - - public Object query(DeductionAmountOnlineQueryParam queryParam) { - return getDeductionAmountService(user).query(queryParam); + public PageInfo list(DeductionAmountListParam param) { + return getDeductionAmountService(user).list(param); } public void add(DeductionAmountAddParam param) { getDeductionAmountService(user).add(param); } + + public Object query(DeductionAmountOnlineQueryParam param) { + return getDeductionAmountService(user).query(param); + } + + public Object confirm(DeductionAmountConfirmParam param) { + return getDeductionAmountService(user).confirm(param); + } } From bad6928f34da84ad53d509211e1bb07812e4a4b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 14 Mar 2025 15:56:28 +0800 Subject: [PATCH 04/22] =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E5=90=8D=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/DeductionAmountDeleteParam.java | 27 ++ .../service/DeductionAmountService.java | 7 +- .../impl/DeductionAmountServiceImpl.java | 18 +- .../salary/web/DeductionAmountController.java | 386 ------------------ .../wrapper/DeductionAmountWrapper.java | 9 +- 5 files changed, 48 insertions(+), 399 deletions(-) create mode 100644 src/com/engine/salary/entity/deductionamount/param/DeductionAmountDeleteParam.java diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountDeleteParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountDeleteParam.java new file mode 100644 index 000000000..922884a44 --- /dev/null +++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountDeleteParam.java @@ -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; + +/** + * 扣除名单查询参数 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DeductionAmountDeleteParam { + /** + * ID + */ + private List ids; +} diff --git a/src/com/engine/salary/service/DeductionAmountService.java b/src/com/engine/salary/service/DeductionAmountService.java index 16a86ffbe..6e005cbc2 100644 --- a/src/com/engine/salary/service/DeductionAmountService.java +++ b/src/com/engine/salary/service/DeductionAmountService.java @@ -2,10 +2,7 @@ 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.DeductionAmountAddParam; -import com.engine.salary.entity.deductionamount.param.DeductionAmountConfirmParam; -import com.engine.salary.entity.deductionamount.param.DeductionAmountListParam; -import com.engine.salary.entity.deductionamount.param.DeductionAmountOnlineQueryParam; +import com.engine.salary.entity.deductionamount.param.*; /** * 年收入不足6万元的纳税人暂不预扣预缴税款扣除名单 @@ -21,6 +18,8 @@ public interface DeductionAmountService { void add(DeductionAmountAddParam param); + void delete(DeductionAmountDeleteParam param); + Object query(DeductionAmountOnlineQueryParam param); Object confirm(DeductionAmountConfirmParam param); diff --git a/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java b/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java index 73083cf2b..700e8c622 100644 --- a/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java +++ b/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java @@ -1,15 +1,13 @@ package com.engine.salary.service.impl; +import cn.hutool.core.collection.CollUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.component.PageInfo; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.deductionamount.dto.DeductionAmountDTO; -import com.engine.salary.entity.deductionamount.param.DeductionAmountAddParam; -import com.engine.salary.entity.deductionamount.param.DeductionAmountConfirmParam; -import com.engine.salary.entity.deductionamount.param.DeductionAmountListParam; -import com.engine.salary.entity.deductionamount.param.DeductionAmountOnlineQueryParam; +import com.engine.salary.entity.deductionamount.param.*; import com.engine.salary.entity.deductionamount.po.DeductionAmountPO; import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; import com.engine.salary.enums.SalaryOnOffEnum; @@ -106,7 +104,7 @@ public class DeductionAmountServiceImpl extends Service implements DeductionAmou .build(); }).collect(Collectors.toList()); - return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), list, DeductionAmountDTO.class); + return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), list, DeductionAmountDTO.class); } @Override @@ -147,6 +145,16 @@ public class DeductionAmountServiceImpl extends Service implements DeductionAmou .forEach(deductionAmountPO -> getDeductionAmountMapper().insertIgnoreNull(deductionAmountPO)); } + @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(); diff --git a/src/com/engine/salary/web/DeductionAmountController.java b/src/com/engine/salary/web/DeductionAmountController.java index 819598cb9..6c0950cd7 100644 --- a/src/com/engine/salary/web/DeductionAmountController.java +++ b/src/com/engine/salary/web/DeductionAmountController.java @@ -70,393 +70,7 @@ public class DeductionAmountController { return new ResponseResult(user).run(getDeductionAmountWrapper(user)::confirm, param); } -// @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 index c9bada6fa..9b03e533d 100644 --- a/src/com/engine/salary/wrapper/DeductionAmountWrapper.java +++ b/src/com/engine/salary/wrapper/DeductionAmountWrapper.java @@ -4,10 +4,7 @@ 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.DeductionAmountAddParam; -import com.engine.salary.entity.deductionamount.param.DeductionAmountConfirmParam; -import com.engine.salary.entity.deductionamount.param.DeductionAmountListParam; -import com.engine.salary.entity.deductionamount.param.DeductionAmountOnlineQueryParam; +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; @@ -35,6 +32,10 @@ public class DeductionAmountWrapper extends Service { getDeductionAmountService(user).add(param); } + public void delete(DeductionAmountDeleteParam param) { + getDeductionAmountService(user).delete(param); + } + public Object query(DeductionAmountOnlineQueryParam param) { return getDeductionAmountService(user).query(param); } From 660a2718a132bd7cf459ef12d760ed589a82eca0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 17 Mar 2025 18:59:16 +0800 Subject: [PATCH 05/22] =?UTF-8?q?=E6=89=A3=E5=87=8F=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E5=92=8C=E5=8F=8D=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/DeductionAmountFeedBackParam.java | 30 +++++++++++++++++++ .../tax/client/DeductionAmountClient.java | 22 +++++++++----- .../service/DeductionAmountService.java | 2 +- .../impl/DeductionAmountServiceImpl.java | 14 +++++++-- .../salary/web/DeductionAmountController.java | 22 ++++++++++---- .../wrapper/DeductionAmountWrapper.java | 4 +++ 6 files changed, 77 insertions(+), 17 deletions(-) create mode 100644 src/com/engine/salary/entity/deductionamount/param/DeductionAmountFeedBackParam.java diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountFeedBackParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountFeedBackParam.java new file mode 100644 index 000000000..9cd7ad6f5 --- /dev/null +++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountFeedBackParam.java @@ -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; + +/** + * 扣除名单查询参数 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @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 = "参数错误,requestId不能为空") + private String requestId; + +} diff --git a/src/com/engine/salary/remote/tax/client/DeductionAmountClient.java b/src/com/engine/salary/remote/tax/client/DeductionAmountClient.java index 32e129c94..2eb13159d 100644 --- a/src/com/engine/salary/remote/tax/client/DeductionAmountClient.java +++ b/src/com/engine/salary/remote/tax/client/DeductionAmountClient.java @@ -9,10 +9,7 @@ import com.engine.salary.util.SingnatureData; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; +import java.util.*; /** * 申报扣减客户端 @@ -60,10 +57,9 @@ public class DeductionAmountClient extends TaxBaseClient { } + public String confirm(String year, List kczglb ) { - public String confirmPreDeduct(String year, List kczglb ) { - - String url = super.apiConfig.getHost() + "gateway/iit/deductionAmount/queryPreDeduct"; + String url = super.apiConfig.getHost() + "gateway/iit/deductionAmount/confirmPreDeduct"; ConfirmPreDeductRequest request = new ConfirmPreDeductRequest(); request.setNsrsbh(returnPO.getTaxCode()); request.setBizNo(UUID.randomUUID().toString().replace("-", "")); @@ -91,4 +87,16 @@ public class DeductionAmountClient extends TaxBaseClient { log.info("confirmPreDeduct res --- {}", res); return res; } + + public String feedback(String requestId) { + String url = super.apiConfig.getHost() + "gateway/iit/deductionAmount/getPreDeductConfirmFeedback"; + + Map params = new HashMap<>(1); + params.put("requestId", requestId); + log.info("getPreDeductConfirmFeedback requestId --- \n{}\n", requestId); + Map header = SingnatureData.initHeader(Collections.emptyMap(), apiConfig.getAppKey(), apiConfig.getAppSecret()); + String res = HttpUtil.getRequest(url, header, params); + log.info("getPreDeductConfirmFeedback res --- {}", res); + return res; + } } diff --git a/src/com/engine/salary/service/DeductionAmountService.java b/src/com/engine/salary/service/DeductionAmountService.java index 6e005cbc2..7d8b49879 100644 --- a/src/com/engine/salary/service/DeductionAmountService.java +++ b/src/com/engine/salary/service/DeductionAmountService.java @@ -24,5 +24,5 @@ public interface DeductionAmountService { Object confirm(DeductionAmountConfirmParam param); - + void feedback(DeductionAmountFeedBackParam param); } diff --git a/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java b/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java index 700e8c622..4855fd950 100644 --- a/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java +++ b/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java @@ -18,6 +18,7 @@ import com.engine.salary.remote.tax.client.DeductionAmountClient; import com.engine.salary.remote.tax.request.deductionAmount.ConfirmPreDeductRequest; import com.engine.salary.service.*; import com.engine.salary.util.SalaryEntityUtil; +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; @@ -123,8 +124,8 @@ public class DeductionAmountServiceImpl extends Service implements DeductionAmou employeeDeclarePOS.stream() .filter(employeeDeclarePO -> !oldIds.contains(employeeDeclarePO.getEmployeeId())) .map(employeeDeclarePO -> DeductionAmountPO.builder() - .id(employeeDeclarePO.getEmployeeId()) - .taxAgentId(employeeDeclarePO.getEmployeeId()) + .id(IdGenerator.generate()) + .taxAgentId(employeeDeclarePO.getTaxAgentId()) .year(param.getYear()) .employeeId(employeeDeclarePO.getEmployeeId()) .employeeName(employeeDeclarePO.getEmployeeName()) @@ -180,6 +181,13 @@ public class DeductionAmountServiceImpl extends Service implements DeductionAmou }).collect(Collectors.toList()); DeductionAmountClient deductionAmountClient = new DeductionAmountClient(taxAgentId); - return deductionAmountClient.confirmPreDeduct(year, kczglb); + return deductionAmountClient.confirm(year, kczglb); + } + + @Override + public void feedback(DeductionAmountFeedBackParam param) { + DeductionAmountClient deductionAmountClient = new DeductionAmountClient(param.getTaxAgentId()); + String feedback = deductionAmountClient.feedback(param.getRequestId()); + } } diff --git a/src/com/engine/salary/web/DeductionAmountController.java b/src/com/engine/salary/web/DeductionAmountController.java index 6c0950cd7..b900b6872 100644 --- a/src/com/engine/salary/web/DeductionAmountController.java +++ b/src/com/engine/salary/web/DeductionAmountController.java @@ -4,10 +4,7 @@ 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.DeductionAmountAddParam; -import com.engine.salary.entity.deductionamount.param.DeductionAmountConfirmParam; -import com.engine.salary.entity.deductionamount.param.DeductionAmountListParam; -import com.engine.salary.entity.deductionamount.param.DeductionAmountOnlineQueryParam; +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; @@ -54,6 +51,14 @@ public class DeductionAmountController { return new ResponseResult(user).run(getDeductionAmountWrapper(user)::add, 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(user).run(getDeductionAmountWrapper(user)::delete, param); + } + @POST @Path("/query") @Produces(MediaType.APPLICATION_JSON) @@ -70,7 +75,12 @@ public class DeductionAmountController { return new ResponseResult(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(user).run(getDeductionAmountWrapper(user)::feedback, param); + } } diff --git a/src/com/engine/salary/wrapper/DeductionAmountWrapper.java b/src/com/engine/salary/wrapper/DeductionAmountWrapper.java index 9b03e533d..7a474421f 100644 --- a/src/com/engine/salary/wrapper/DeductionAmountWrapper.java +++ b/src/com/engine/salary/wrapper/DeductionAmountWrapper.java @@ -43,4 +43,8 @@ public class DeductionAmountWrapper extends Service { public Object confirm(DeductionAmountConfirmParam param) { return getDeductionAmountService(user).confirm(param); } + + public void feedback(DeductionAmountFeedBackParam param) { + getDeductionAmountService(user).feedback(param); + } } From 47dbfeb8dbdb9aac3038e483797cc0d70a076c92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 19 Mar 2025 15:26:06 +0800 Subject: [PATCH 06/22] =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E5=90=8D=E5=8D=95?= =?UTF-8?q?=E5=8F=8D=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/DeductionAmountDTO.java | 1 + .../param/DeductionAmountFeedBackParam.java | 6 +- .../deductionamount/po/DeductionAmountPO.java | 18 +- .../po/DeductionAmountRecordPO.java | 66 +++++ .../deductionamount/DeductionAmountMapper.xml | 15 ++ .../DeductionAmountRecordMapper.java | 77 ++++++ .../DeductionAmountRecordMapper.xml | 239 ++++++++++++++++++ .../tax/client/DeductionAmountClient.java | 35 ++- .../ConfirmFeedbackResponse.java | 75 ++++++ .../service/DeductionAmountService.java | 4 +- .../impl/DeductionAmountServiceImpl.java | 166 +++++++----- .../impl/EmployeeDeclareServiceImpl.java | 2 - .../salary/web/DeductionAmountController.java | 4 +- .../wrapper/DeductionAmountWrapper.java | 6 +- 14 files changed, 619 insertions(+), 95 deletions(-) create mode 100644 src/com/engine/salary/entity/deductionamount/po/DeductionAmountRecordPO.java create mode 100644 src/com/engine/salary/mapper/deductionamount/DeductionAmountRecordMapper.java create mode 100644 src/com/engine/salary/mapper/deductionamount/DeductionAmountRecordMapper.xml create mode 100644 src/com/engine/salary/remote/tax/response/deductionAmount/ConfirmFeedbackResponse.java diff --git a/src/com/engine/salary/entity/deductionamount/dto/DeductionAmountDTO.java b/src/com/engine/salary/entity/deductionamount/dto/DeductionAmountDTO.java index d5a2d3fcb..43fc7de83 100644 --- a/src/com/engine/salary/entity/deductionamount/dto/DeductionAmountDTO.java +++ b/src/com/engine/salary/entity/deductionamount/dto/DeductionAmountDTO.java @@ -85,6 +85,7 @@ public class DeductionAmountDTO { */ @TableTitle(title = "报送状态", dataIndex = "declareStatus", key = "declareStatus") private Integer declareStatus; + private String declareErrorMsg; /** diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountFeedBackParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountFeedBackParam.java index 9cd7ad6f5..111c7011e 100644 --- a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountFeedBackParam.java +++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountFeedBackParam.java @@ -24,7 +24,7 @@ public class DeductionAmountFeedBackParam { @DataCheck(require = true, message = "参数错误,个税扣缴义务人id不能为空") private Long taxAgentId; - @DataCheck(require = true, message = "参数错误,requestId不能为空") - private String requestId; - + // 税款所属年度 + @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 index 731a211da..e203655e7 100644 --- a/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java +++ b/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java @@ -79,12 +79,6 @@ public class DeductionAmountPO { @ElogTransform(name = "证件类型") private Integer cardType; - /** - * 报送状态 - */ - @ElogTransform(name = "报送状态") - private Integer declareStatus; - /** * 是否扣除 */ @@ -96,6 +90,18 @@ public class DeductionAmountPO { @ElogTransform(name = "是否成功报送过") private Integer successfullyDeclared; + /** + * 报送状态 + */ + @ElogTransform(name = "报送状态") + private Integer declareStatus; + + /** + * 申报失败的错误信息 + */ + @ElogTransform(name = "失败的错误信息") + private String declareErrorMsg; + /** * 创建时间 diff --git a/src/com/engine/salary/entity/deductionamount/po/DeductionAmountRecordPO.java b/src/com/engine/salary/entity/deductionamount/po/DeductionAmountRecordPO.java new file mode 100644 index 000000000..f476627f1 --- /dev/null +++ b/src/com/engine/salary/entity/deductionamount/po/DeductionAmountRecordPO.java @@ -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; + +/** + * 扣减报送记录 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @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 ids; +} diff --git a/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.xml b/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.xml index db85a9649..023a41f81 100644 --- a/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.xml +++ b/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.xml @@ -15,6 +15,7 @@ + @@ -39,6 +40,7 @@ , t.id , t.job_num , t.successfully_declared + , t.declare_error_msg , t.tax_agent_id , t.tenant_key , t.update_time @@ -108,6 +110,9 @@ AND successfully_declared = #{successfullyDeclared} + + AND declare_error_msg = #{declareErrorMsg} + AND tax_agent_id = #{taxAgentId} @@ -177,6 +182,9 @@ successfully_declared, + + declare_error_msg, + tax_agent_id, @@ -233,6 +241,9 @@ #{successfullyDeclared}, + + #{declareErrorMsg}, + #{taxAgentId}, @@ -268,6 +279,7 @@ employee_type=#{employeeType}, job_num=#{jobNum}, successfully_declared=#{successfullyDeclared}, + declare_error_msg=#{declareErrorMsg}, tax_agent_id=#{taxAgentId}, tenant_key=#{tenantKey}, update_time=#{updateTime}, @@ -318,6 +330,9 @@ successfully_declared=#{successfullyDeclared}, + + declare_error_msg=#{declareErrorMsg}, + tax_agent_id=#{taxAgentId}, diff --git a/src/com/engine/salary/mapper/deductionamount/DeductionAmountRecordMapper.java b/src/com/engine/salary/mapper/deductionamount/DeductionAmountRecordMapper.java new file mode 100644 index 000000000..ca2815680 --- /dev/null +++ b/src/com/engine/salary/mapper/deductionamount/DeductionAmountRecordMapper.java @@ -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 listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List 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 ids); + + void deleteByTaxAgentIdAndYear(@Param("taxAgentId")Long taxAgentId,@Param("year") String year); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/deductionamount/DeductionAmountRecordMapper.xml b/src/com/engine/salary/mapper/deductionamount/DeductionAmountRecordMapper.xml new file mode 100644 index 000000000..930371420 --- /dev/null +++ b/src/com/engine/salary/mapper/deductionamount/DeductionAmountRecordMapper.xml @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + INSERT INTO hrsa_deduction_amount_record + + + + create_time, + + + creator, + + + delete_type, + + + id, + + + request_id, + + + tax_agent_id, + + + tenant_key, + + + update_time, + + + year, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{id}, + + + #{requestId}, + + + #{taxAgentId}, + + + #{tenantKey}, + + + #{updateTime}, + + + #{year}, + + + + + + + UPDATE hrsa_deduction_amount_record + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + request_id=#{requestId}, + tax_agent_id=#{taxAgentId}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + year=#{year}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_deduction_amount_record + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + request_id=#{requestId}, + + + tax_agent_id=#{taxAgentId}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + year=#{year}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_deduction_amount_record + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_deduction_amount_record + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + UPDATE hrsa_deduction_amount_record + SET delete_type = 1 + WHERE delete_type = 0 + AND tax_agent_id=#{taxAgentId} + AND year=#{year} + + \ 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 index 2eb13159d..05c3d3482 100644 --- a/src/com/engine/salary/remote/tax/client/DeductionAmountClient.java +++ b/src/com/engine/salary/remote/tax/client/DeductionAmountClient.java @@ -3,11 +3,14 @@ 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.*; @@ -57,7 +60,7 @@ public class DeductionAmountClient extends TaxBaseClient { } - public String confirm(String year, List kczglb ) { + public String confirm(String year, List kczglb) { String url = super.apiConfig.getHost() + "gateway/iit/deductionAmount/confirmPreDeduct"; ConfirmPreDeductRequest request = new ConfirmPreDeductRequest(); @@ -77,26 +80,22 @@ public class DeductionAmountClient extends TaxBaseClient { request.setSkssnd(year); request.setKczglb(kczglb); - String reqJson = JsonUtil.toJsonString(request); - log.info("confirmPreDeduct 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("confirmPreDeduct res --- {}", res); - return res; + String requestId = request(url, JsonUtil.parseMap(request, Object.class)); + return requestId; } - public String feedback(String requestId) { + public ConfirmFeedbackResponse feedback(String requestId) { + TaskUtil taskUtil = new TaskUtil(); + String url = super.apiConfig.getHost() + "gateway/iit/deductionAmount/getPreDeductConfirmFeedback"; - Map params = new HashMap<>(1); - params.put("requestId", requestId); - log.info("getPreDeductConfirmFeedback requestId --- \n{}\n", requestId); - Map header = SingnatureData.initHeader(Collections.emptyMap(), apiConfig.getAppKey(), apiConfig.getAppSecret()); - String res = HttpUtil.getRequest(url, header, params); - log.info("getPreDeductConfirmFeedback res --- {}", res); - return res; + Map param = new HashMap<>(1); + param.put("requestId", requestId); + + Map 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; } } diff --git a/src/com/engine/salary/remote/tax/response/deductionAmount/ConfirmFeedbackResponse.java b/src/com/engine/salary/remote/tax/response/deductionAmount/ConfirmFeedbackResponse.java new file mode 100644 index 000000000..783f5f359 --- /dev/null +++ b/src/com/engine/salary/remote/tax/response/deductionAmount/ConfirmFeedbackResponse.java @@ -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; + +/** + * 扣除名单确认反馈 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @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 kcqrsblb; + + @Data + public static class kcqrsb { + + /** + * 姓名 + */ + private String xm; + /** + * 证件类型 见证件类型字典 + */ + private String zzlx; + /** + * 证件号码 证件号码 + */ + private String zzhm; + /** + * 国籍 + */ + private String gj; + /** + * 失败原因 + */ + private String sbyy; + } + } + +} diff --git a/src/com/engine/salary/service/DeductionAmountService.java b/src/com/engine/salary/service/DeductionAmountService.java index 7d8b49879..3d7da8fad 100644 --- a/src/com/engine/salary/service/DeductionAmountService.java +++ b/src/com/engine/salary/service/DeductionAmountService.java @@ -22,7 +22,7 @@ public interface DeductionAmountService { Object query(DeductionAmountOnlineQueryParam param); - Object confirm(DeductionAmountConfirmParam param); + String confirm(DeductionAmountConfirmParam param); - void feedback(DeductionAmountFeedBackParam param); + String feedback(DeductionAmountFeedBackParam param); } diff --git a/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java b/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java index 4855fd950..5b30ff10d 100644 --- a/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java +++ b/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java @@ -2,32 +2,38 @@ package com.engine.salary.service.impl; import cn.hutool.core.collection.CollUtil; -import com.engine.common.util.ServiceUtil; 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.service.*; +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 weaver.hrm.User; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -41,6 +47,10 @@ import java.util.stream.Collectors; @Slf4j public class DeductionAmountServiceImpl extends Service implements DeductionAmountService { + private DeductionAmountRecordMapper getDeductionAmountRecordMapper() { + return MapperProxyFactory.getProxy(DeductionAmountRecordMapper.class); + } + private DeductionAmountMapper getDeductionAmountMapper() { return MapperProxyFactory.getProxy(DeductionAmountMapper.class); } @@ -49,34 +59,6 @@ public class DeductionAmountServiceImpl extends Service implements DeductionAmou 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 PageInfo list(DeductionAmountListParam param) { @@ -84,26 +66,27 @@ public class DeductionAmountServiceImpl extends Service implements DeductionAmou List deductionAmountPOS = getDeductionAmountMapper().listSome(DeductionAmountPO.builder().year(param.getYear()).taxAgentId(param.getTaxAgentId()).build()); - List list = deductionAmountPOS.stream().map(deductionAmountPO -> { - return 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()) - .deductFlag(deductionAmountPO.getDeductFlag()) - .successfullyDeclared(deductionAmountPO.getSuccessfullyDeclared()) - .creator(deductionAmountPO.getCreator()) - .createTime(deductionAmountPO.getCreateTime()) - .updateTime(deductionAmountPO.getUpdateTime()) - .build(); - }).collect(Collectors.toList()); + List 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()) + .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); } @@ -134,9 +117,9 @@ public class DeductionAmountServiceImpl extends Service implements DeductionAmou .cardNum(employeeDeclarePO.getCardNum()) .cardType(employeeDeclarePO.getCardType()) .nationality(employeeDeclarePO.getNationality()) - .declareStatus(0) - .deductFlag(1) - .successfullyDeclared(0) + .declareStatus(DeclareStatusEnum.NOT_DECLARE.getValue()) + .deductFlag(SalaryOnOffEnum.OFF.getValue()) + .successfullyDeclared(SalaryOnOffEnum.OFF.getValue()) .creator((long) user.getUID()) .createTime(now) .updateTime(now) @@ -164,7 +147,7 @@ public class DeductionAmountServiceImpl extends Service implements DeductionAmou } @Override - public Object confirm(DeductionAmountConfirmParam param) { + public String confirm(DeductionAmountConfirmParam param) { ValidUtil.doValidator(param); Long taxAgentId = param.getTaxAgentId(); String year = param.getYear(); @@ -181,13 +164,78 @@ public class DeductionAmountServiceImpl extends Service implements DeductionAmou }).collect(Collectors.toList()); DeductionAmountClient deductionAmountClient = new DeductionAmountClient(taxAgentId); - return deductionAmountClient.confirm(year, kczglb); + 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 void feedback(DeductionAmountFeedBackParam param) { - DeductionAmountClient deductionAmountClient = new DeductionAmountClient(param.getTaxAgentId()); - String feedback = deductionAmountClient.feedback(param.getRequestId()); + 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 deductionAmountPOS = getDeductionAmountMapper().listSome(DeductionAmountPO.builder().taxAgentId(taxAgentId).year(year).build()); + + List kcqrsblb = feedback.getBody().getKcqrsblb(); + Map 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()); } } diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java index 643d210ca..7e7da0c23 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java @@ -706,9 +706,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()); diff --git a/src/com/engine/salary/web/DeductionAmountController.java b/src/com/engine/salary/web/DeductionAmountController.java index b900b6872..3657d6f83 100644 --- a/src/com/engine/salary/web/DeductionAmountController.java +++ b/src/com/engine/salary/web/DeductionAmountController.java @@ -72,7 +72,7 @@ public class DeductionAmountController { @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(user).run(getDeductionAmountWrapper(user)::confirm, param); + return new ResponseResult(user).run(getDeductionAmountWrapper(user)::confirm, param); } @POST @@ -80,7 +80,7 @@ public class DeductionAmountController { @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(user).run(getDeductionAmountWrapper(user)::feedback, param); + return new ResponseResult(user).run(getDeductionAmountWrapper(user)::feedback, param); } } diff --git a/src/com/engine/salary/wrapper/DeductionAmountWrapper.java b/src/com/engine/salary/wrapper/DeductionAmountWrapper.java index 7a474421f..a4f0628e9 100644 --- a/src/com/engine/salary/wrapper/DeductionAmountWrapper.java +++ b/src/com/engine/salary/wrapper/DeductionAmountWrapper.java @@ -40,11 +40,11 @@ public class DeductionAmountWrapper extends Service { return getDeductionAmountService(user).query(param); } - public Object confirm(DeductionAmountConfirmParam param) { + public String confirm(DeductionAmountConfirmParam param) { return getDeductionAmountService(user).confirm(param); } - public void feedback(DeductionAmountFeedBackParam param) { - getDeductionAmountService(user).feedback(param); + public String feedback(DeductionAmountFeedBackParam param) { + return getDeductionAmountService(user).feedback(param); } } From 10f1ec1629280b9754d58427becd62359d45c9a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 19 Mar 2025 16:03:12 +0800 Subject: [PATCH 07/22] =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E5=90=8D=E5=8D=95sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202503190103.sql | 38 +++++++++++++++++++ resource/sqlupgrade/GS/sql202503190103.sql | 38 +++++++++++++++++++ resource/sqlupgrade/JC/sql202503190103.sql | 38 +++++++++++++++++++ resource/sqlupgrade/Mysql/sql202503190103.sql | 37 ++++++++++++++++++ .../sqlupgrade/Oracle/sql202503190103.sql | 37 ++++++++++++++++++ resource/sqlupgrade/PG/sql202503190103.sql | 37 ++++++++++++++++++ .../sqlupgrade/SQLServer/sql202503190103.sql | 37 ++++++++++++++++++ resource/sqlupgrade/ST/sql202503190103.sql | 38 +++++++++++++++++++ 8 files changed, 300 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202503190103.sql create mode 100644 resource/sqlupgrade/GS/sql202503190103.sql create mode 100644 resource/sqlupgrade/JC/sql202503190103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202503190103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202503190103.sql create mode 100644 resource/sqlupgrade/PG/sql202503190103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202503190103.sql create mode 100644 resource/sqlupgrade/ST/sql202503190103.sql diff --git a/resource/sqlupgrade/DM/sql202503190103.sql b/resource/sqlupgrade/DM/sql202503190103.sql new file mode 100644 index 000000000..9940e3121 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202503190103.sql @@ -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) +); +/ + diff --git a/resource/sqlupgrade/GS/sql202503190103.sql b/resource/sqlupgrade/GS/sql202503190103.sql new file mode 100644 index 000000000..9940e3121 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202503190103.sql @@ -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) +); +/ + diff --git a/resource/sqlupgrade/JC/sql202503190103.sql b/resource/sqlupgrade/JC/sql202503190103.sql new file mode 100644 index 000000000..9940e3121 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202503190103.sql @@ -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) +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202503190103.sql b/resource/sqlupgrade/Mysql/sql202503190103.sql new file mode 100644 index 000000000..6c78f00ed --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202503190103.sql @@ -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 +); diff --git a/resource/sqlupgrade/Oracle/sql202503190103.sql b/resource/sqlupgrade/Oracle/sql202503190103.sql new file mode 100644 index 000000000..172207806 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202503190103.sql @@ -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) +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202503190103.sql b/resource/sqlupgrade/PG/sql202503190103.sql new file mode 100644 index 000000000..7f39dcf84 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202503190103.sql @@ -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) +); +/ \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202503190103.sql b/resource/sqlupgrade/SQLServer/sql202503190103.sql new file mode 100644 index 000000000..3aaee1960 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202503190103.sql @@ -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 \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202503190103.sql b/resource/sqlupgrade/ST/sql202503190103.sql new file mode 100644 index 000000000..9940e3121 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202503190103.sql @@ -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) +); +/ + From d7702d7caeb76c126a56f3842a15188fafaa48e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 19 Mar 2025 16:25:42 +0800 Subject: [PATCH 08/22] =?UTF-8?q?=E6=89=A3=E9=99=A4=E5=90=8D=E5=8D=95?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/DeductionAmountEditParam.java | 30 +++++++++++++++++++ .../deductionamount/po/DeductionAmountPO.java | 2 +- .../service/DeductionAmountService.java | 2 ++ .../impl/DeductionAmountServiceImpl.java | 13 ++++++++ .../salary/web/DeductionAmountController.java | 8 +++++ .../wrapper/DeductionAmountWrapper.java | 5 ++++ 6 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/com/engine/salary/entity/deductionamount/param/DeductionAmountEditParam.java diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountEditParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountEditParam.java new file mode 100644 index 000000000..f0e2a2412 --- /dev/null +++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountEditParam.java @@ -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; + +/** + * 扣除名单查询参数 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @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; +} diff --git a/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java b/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java index e203655e7..24bd438a2 100644 --- a/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java +++ b/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java @@ -10,7 +10,7 @@ import java.util.Collection; import java.util.Date; /** - * 人员报送记录 + * 扣除名单 */ @Data @Builder diff --git a/src/com/engine/salary/service/DeductionAmountService.java b/src/com/engine/salary/service/DeductionAmountService.java index 3d7da8fad..5609882e9 100644 --- a/src/com/engine/salary/service/DeductionAmountService.java +++ b/src/com/engine/salary/service/DeductionAmountService.java @@ -18,6 +18,8 @@ public interface DeductionAmountService { void add(DeductionAmountAddParam param); + void edit(DeductionAmountEditParam param); + void delete(DeductionAmountDeleteParam param); Object query(DeductionAmountOnlineQueryParam param); diff --git a/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java b/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java index 5b30ff10d..d36575ca8 100644 --- a/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java +++ b/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java @@ -129,6 +129,19 @@ public class DeductionAmountServiceImpl extends Service implements DeductionAmou .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())) { diff --git a/src/com/engine/salary/web/DeductionAmountController.java b/src/com/engine/salary/web/DeductionAmountController.java index 3657d6f83..617c36920 100644 --- a/src/com/engine/salary/web/DeductionAmountController.java +++ b/src/com/engine/salary/web/DeductionAmountController.java @@ -51,6 +51,14 @@ public class DeductionAmountController { return new ResponseResult(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(user).run(getDeductionAmountWrapper(user)::edit, param); + } + @POST @Path("/delete") @Produces(MediaType.APPLICATION_JSON) diff --git a/src/com/engine/salary/wrapper/DeductionAmountWrapper.java b/src/com/engine/salary/wrapper/DeductionAmountWrapper.java index a4f0628e9..a9586cafb 100644 --- a/src/com/engine/salary/wrapper/DeductionAmountWrapper.java +++ b/src/com/engine/salary/wrapper/DeductionAmountWrapper.java @@ -32,6 +32,10 @@ public class DeductionAmountWrapper extends Service { getDeductionAmountService(user).add(param); } + public void edit(DeductionAmountEditParam param) { + getDeductionAmountService(user).edit(param); + } + public void delete(DeductionAmountDeleteParam param) { getDeductionAmountService(user).delete(param); } @@ -47,4 +51,5 @@ public class DeductionAmountWrapper extends Service { public String feedback(DeductionAmountFeedBackParam param) { return getDeductionAmountService(user).feedback(param); } + } From 8a49a2ef1bba5b5c1cfc986920165b96f294deae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 27 Mar 2025 16:13:19 +0800 Subject: [PATCH 09/22] =?UTF-8?q?=E4=B8=8A=E7=BA=BF=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/WEB-INF/prop/hrmSalary.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource/WEB-INF/prop/hrmSalary.properties b/resource/WEB-INF/prop/hrmSalary.properties index d95554ef6..a10d11db3 100644 --- a/resource/WEB-INF/prop/hrmSalary.properties +++ b/resource/WEB-INF/prop/hrmSalary.properties @@ -1,5 +1,5 @@ log=false defaultCloseNonStandard149=true AESEncryptScrect=990EB004A1C862721C1513AE90038C9E -version=3.0.0.2503.01 +version=3.0.0.2503.02 openFormulaForcedEditing=false \ No newline at end of file From 97546393a499ed5edc60a8284fd060291b6ca28f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 27 Mar 2025 16:31:40 +0800 Subject: [PATCH 10/22] =?UTF-8?q?=E4=B8=8A=E7=BA=BF=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/WEB-INF/prop/hrmSalary.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource/WEB-INF/prop/hrmSalary.properties b/resource/WEB-INF/prop/hrmSalary.properties index a10d11db3..55360c99a 100644 --- a/resource/WEB-INF/prop/hrmSalary.properties +++ b/resource/WEB-INF/prop/hrmSalary.properties @@ -1,5 +1,5 @@ log=false defaultCloseNonStandard149=true AESEncryptScrect=990EB004A1C862721C1513AE90038C9E -version=3.0.0.2503.02 +version=3.0.1.2503.01 openFormulaForcedEditing=false \ No newline at end of file From 993cba21bdbe1a797761272afaa5fda50eadc6e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 31 Mar 2025 17:15:01 +0800 Subject: [PATCH 11/22] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=B3=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E5=8F=96=E5=80=BC=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bo/TaxDeclarationCommon.java | 128 +++++++++++++++--- 1 file changed, 108 insertions(+), 20 deletions(-) diff --git a/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationCommon.java b/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationCommon.java index e870f624e..19d0e742f 100644 --- a/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationCommon.java +++ b/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationCommon.java @@ -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 taxDeclarationValues = Lists.newArrayListWithExpectedSize(employeeIdKeyMap.size()); for (Map.Entry> 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 valueMap = Maps.newHashMap(); for (TaxReportColumnPO taxReportColumn : taxDeclareContext.getTaxReportColumns()) { - SalarySobTaxReportRulePO salarySobTaxReportRule = taxDeclareContext.getSalarySobTaxReportRuleMap() - .get(lastSalaryAcctEmployee.getSalarySobId() + "-" + taxReportColumn.getReportColumnDataIndex()); - List 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 firstValueList = Lists.newArrayList( + "taxFreeIncome", + "endowmentInsurance", + "medicalInsurance", + "unemploymentInsurance", + "housingProvidentFund", + "addUpChildEducation", + "addUpHousingLoanInterest", + "addUpHousingRent", + "addUpSupportElderly", + "addUpContinuingEducation", + "addUpInfantCare", + "annuity", + "commercialHealthInsurance", + "taxDeferredEndowmentInsurance", + "other", + "allowedDonation", + "taxDeduction", + "description", + "addUpAdvanceTax"); + + List lastValueList = Lists.newArrayList( + "addUpIncome", + "addUpTaxFreeIncome", + "addUpSubtraction", + "addUpSpecialDeduction", + "addUpOtherDeduction", + "addUpAllowedDonation", + "addUpTaxableIncome", + "taxRate", + "quickDeductionFactor", + "addUpTaxPayable", + "addUpTaxDeduction" + ); + + List 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 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 employeePOS = employeeIdEntry.getValue(); + BigDecimal income = new BigDecimal("0.00"); + for (SalaryAcctEmployeePO salaryAcctEmployeePO : employeePOS) { + SalarySobTaxReportRulePO incomeRule = taxDeclareContext.getSalarySobTaxReportRuleMap() + .get(salaryAcctEmployeePO.getSalarySobId() + "-" + taxReportColumn.getReportColumnDataIndex()); + List 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 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() From 1a4ab02bdce64490d1a7ea2a9ae351b388fab1fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 31 Mar 2025 18:23:12 +0800 Subject: [PATCH 12/22] =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E5=90=8D=E5=8D=95?= =?UTF-8?q?=E8=BD=AC=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deductionamount/dto/DeductionAmountDTO.java | 4 +++- .../enums/employeedeclare/DeclareStatusEnum.java | 11 +++++++++++ .../service/impl/DeductionAmountServiceImpl.java | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/entity/deductionamount/dto/DeductionAmountDTO.java b/src/com/engine/salary/entity/deductionamount/dto/DeductionAmountDTO.java index 43fc7de83..234ec01cd 100644 --- a/src/com/engine/salary/entity/deductionamount/dto/DeductionAmountDTO.java +++ b/src/com/engine/salary/entity/deductionamount/dto/DeductionAmountDTO.java @@ -83,8 +83,10 @@ public class DeductionAmountDTO { /** * 报送状态 */ - @TableTitle(title = "报送状态", dataIndex = "declareStatus", key = "declareStatus") + @TableTitle(title = "报送状态", dataIndex = "declareStatusName", key = "declareStatusName") + private String declareStatusName; private Integer declareStatus; + private String declareErrorMsg; diff --git a/src/com/engine/salary/enums/employeedeclare/DeclareStatusEnum.java b/src/com/engine/salary/enums/employeedeclare/DeclareStatusEnum.java index 2a91aafde..e0d759613 100644 --- a/src/com/engine/salary/enums/employeedeclare/DeclareStatusEnum.java +++ b/src/com/engine/salary/enums/employeedeclare/DeclareStatusEnum.java @@ -2,6 +2,8 @@ package com.engine.salary.enums.employeedeclare; import com.engine.salary.enums.BaseEnum; +import java.util.Objects; + /** * 人员报送状态 *

Copyright: Copyright (c) 2023

@@ -43,4 +45,13 @@ public enum DeclareStatusEnum implements BaseEnum { 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; + } } diff --git a/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java b/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java index d36575ca8..e6b3c6b4c 100644 --- a/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java +++ b/src/com/engine/salary/service/impl/DeductionAmountServiceImpl.java @@ -79,6 +79,7 @@ public class DeductionAmountServiceImpl extends Service implements DeductionAmou .cardNum(deductionAmountPO.getCardNum()) .cardType(deductionAmountPO.getCardType()) .declareStatus(deductionAmountPO.getDeclareStatus()) + .declareStatusName(DeclareStatusEnum.getByValue(deductionAmountPO.getDeclareStatus()).getDefaultLabel()) .declareErrorMsg(deductionAmountPO.getDeclareErrorMsg()) .deductFlag(deductionAmountPO.getDeductFlag()) .successfullyDeclared(deductionAmountPO.getSuccessfullyDeclared()) @@ -118,7 +119,7 @@ public class DeductionAmountServiceImpl extends Service implements DeductionAmou .cardType(employeeDeclarePO.getCardType()) .nationality(employeeDeclarePO.getNationality()) .declareStatus(DeclareStatusEnum.NOT_DECLARE.getValue()) - .deductFlag(SalaryOnOffEnum.OFF.getValue()) + .deductFlag(SalaryOnOffEnum.ON.getValue()) .successfullyDeclared(SalaryOnOffEnum.OFF.getValue()) .creator((long) user.getUID()) .createTime(now) From 3511c18e31ea7ceb5149787fbcbf26a907b8d9c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 1 Apr 2025 15:12:36 +0800 Subject: [PATCH 13/22] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/PushServiceImpl.java | 9 +++++++-- .../salary/service/impl/SalaryAcctRecordServiceImpl.java | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/service/impl/PushServiceImpl.java b/src/com/engine/salary/service/impl/PushServiceImpl.java index 214eae1a3..1107e43d6 100644 --- a/src/com/engine/salary/service/impl/PushServiceImpl.java +++ b/src/com/engine/salary/service/impl/PushServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; @@ -368,6 +369,12 @@ public class PushServiceImpl extends Service implements PushService { throw new SalaryRunTimeException("核算记录不存在!"); } + //查询推送配置 + List pushSettingPOS = getPushSettingMapper().listSome(PushSettingPO.builder().able(1).build()); + if(CollUtil.isEmpty(pushSettingPOS)){ + return; + } + //查询核算人员 List salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId()); @@ -406,8 +413,6 @@ public class PushServiceImpl extends Service implements PushService { CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), salaryAcctResultPOS, new ArrayList<>(), new ArrayList<>()); Map> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO); - List pushSettingPOS = getPushSettingMapper().listSome(PushSettingPO.builder().able(1).build()); - //推送记录id List recordIds = new ArrayList<>(); diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index 69c4c79f0..4ac2e690f 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -544,7 +544,7 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe //获取推送配置 -// getPushService(user).initPushConfig(salaryAcctRecordId); + getPushService(user).createPushRecord(salaryAcctRecordId); // 记录日志 From 8e3c4bfacc5d25a335ee5ad389387605646582e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 1 Apr 2025 16:43:02 +0800 Subject: [PATCH 14/22] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E9=85=8D=E7=BD=AEsql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202411190103.sql | 70 +++++++++++++++++ resource/sqlupgrade/GS/sql202411190103.sql | 70 +++++++++++++++++ resource/sqlupgrade/JC/sql202411190103.sql | 70 +++++++++++++++++ resource/sqlupgrade/Mysql/sql202411190103.sql | 36 +++++++++ .../sqlupgrade/Oracle/sql202411190103.sql | 71 ++++++++++++++++++ resource/sqlupgrade/PG/sql202411190103.sql | 71 ++++++++++++++++++ .../sqlupgrade/SQLServer/sql202411190103.sql | 75 +++++++++++++++++++ resource/sqlupgrade/ST/sql202411190103.sql | 70 +++++++++++++++++ 8 files changed, 533 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202411190103.sql create mode 100644 resource/sqlupgrade/GS/sql202411190103.sql create mode 100644 resource/sqlupgrade/JC/sql202411190103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202411190103.sql create mode 100644 resource/sqlupgrade/PG/sql202411190103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202411190103.sql create mode 100644 resource/sqlupgrade/ST/sql202411190103.sql diff --git a/resource/sqlupgrade/DM/sql202411190103.sql b/resource/sqlupgrade/DM/sql202411190103.sql new file mode 100644 index 000000000..1ed27c6fd --- /dev/null +++ b/resource/sqlupgrade/DM/sql202411190103.sql @@ -0,0 +1,70 @@ +CREATE TABLE hrsa_push_setting +( + id NUMBER(38,0) primary key NOT NULL, + name varchar2(200), + able number, + salary_sob_ids varchar2(2000), + mode_id number, + mode_name varchar2(200), + table_name varchar2(200), + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_push_setting_item +( + id NUMBER(38,0) NOT NULL, + setting_id NUMBER(38,0), + source varchar2(100), + item varchar2(200), + item_name varchar2(200), + field_name varchar2(200), + field_type number, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_push_record +( + id NUMBER(38,0) NOT NULL, + name varchar2(200), + setting_id NUMBER(38,0), + mode_id number, + table_name varchar2(100), + acct_record_id NUMBER(38,0), + type number, + status number, + start_time date, + end_time date, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_push_record_detail +( + id NUMBER(38,0) NOT NULL, + record_id NUMBER(38,0), + acct_emp_id NUMBER(38,0), + execute CLOB, + execute_time date, + status number, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/GS/sql202411190103.sql b/resource/sqlupgrade/GS/sql202411190103.sql new file mode 100644 index 000000000..1ed27c6fd --- /dev/null +++ b/resource/sqlupgrade/GS/sql202411190103.sql @@ -0,0 +1,70 @@ +CREATE TABLE hrsa_push_setting +( + id NUMBER(38,0) primary key NOT NULL, + name varchar2(200), + able number, + salary_sob_ids varchar2(2000), + mode_id number, + mode_name varchar2(200), + table_name varchar2(200), + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_push_setting_item +( + id NUMBER(38,0) NOT NULL, + setting_id NUMBER(38,0), + source varchar2(100), + item varchar2(200), + item_name varchar2(200), + field_name varchar2(200), + field_type number, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_push_record +( + id NUMBER(38,0) NOT NULL, + name varchar2(200), + setting_id NUMBER(38,0), + mode_id number, + table_name varchar2(100), + acct_record_id NUMBER(38,0), + type number, + status number, + start_time date, + end_time date, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_push_record_detail +( + id NUMBER(38,0) NOT NULL, + record_id NUMBER(38,0), + acct_emp_id NUMBER(38,0), + execute CLOB, + execute_time date, + status number, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/JC/sql202411190103.sql b/resource/sqlupgrade/JC/sql202411190103.sql new file mode 100644 index 000000000..1ed27c6fd --- /dev/null +++ b/resource/sqlupgrade/JC/sql202411190103.sql @@ -0,0 +1,70 @@ +CREATE TABLE hrsa_push_setting +( + id NUMBER(38,0) primary key NOT NULL, + name varchar2(200), + able number, + salary_sob_ids varchar2(2000), + mode_id number, + mode_name varchar2(200), + table_name varchar2(200), + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_push_setting_item +( + id NUMBER(38,0) NOT NULL, + setting_id NUMBER(38,0), + source varchar2(100), + item varchar2(200), + item_name varchar2(200), + field_name varchar2(200), + field_type number, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_push_record +( + id NUMBER(38,0) NOT NULL, + name varchar2(200), + setting_id NUMBER(38,0), + mode_id number, + table_name varchar2(100), + acct_record_id NUMBER(38,0), + type number, + status number, + start_time date, + end_time date, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_push_record_detail +( + id NUMBER(38,0) NOT NULL, + record_id NUMBER(38,0), + acct_emp_id NUMBER(38,0), + execute CLOB, + execute_time date, + status number, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202411190103.sql b/resource/sqlupgrade/Mysql/sql202411190103.sql index 9ceb2c5b9..98b55261c 100644 --- a/resource/sqlupgrade/Mysql/sql202411190103.sql +++ b/resource/sqlupgrade/Mysql/sql202411190103.sql @@ -33,3 +33,39 @@ CREATE TABLE hrsa_push_setting_item PRIMARY KEY (id) USING BTREE ); + +CREATE TABLE hrsa_push_record +( + id bigint(0) NOT NULL, + name varchar(200), + setting_id bigint(0), + mode_id int(0), + table_name varchar(100), + acct_record_id bigint(0), + type int(0), + status int(0), + start_time datetime(0), + end_time datetime(0), + creator bigint(0), + create_time datetime(0), + update_time datetime(0), + delete_type int(0), + tenant_key varchar(10), + PRIMARY KEY (id) USING BTREE +); + +CREATE TABLE hrsa_push_record_detail +( + id bigint(0) NOT NULL, + record_id bigint(0), + acct_emp_id bigint(0), + execute text, + execute_time datetime(0), + status int(0), + creator bigint(0), + create_time datetime(0), + update_time datetime(0), + delete_type int(0), + tenant_key varchar(10), + PRIMARY KEY (id) USING BTREE +); \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202411190103.sql b/resource/sqlupgrade/Oracle/sql202411190103.sql new file mode 100644 index 000000000..27e5d3cc9 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202411190103.sql @@ -0,0 +1,71 @@ +CREATE TABLE hrsa_push_setting +( + id NUMBER(38,0) primary key NOT NULL, + name varchar2(200), + able number, + salary_sob_ids varchar2(2000), + mode_id number, + mode_name varchar2(200), + table_name varchar2(200), + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +) +/ + + +CREATE TABLE hrsa_push_setting_item +( + id NUMBER(38,0) NOT NULL, + setting_id NUMBER(38,0), + source varchar2(100), + item varchar2(200), + item_name varchar2(200), + field_name varchar2(200), + field_type number, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +) +/ + + +CREATE TABLE hrsa_push_record +( + id NUMBER(38,0) NOT NULL, + name varchar2(200), + setting_id NUMBER(38,0), + mode_id number, + table_name varchar2(100), + acct_record_id NUMBER(38,0), + type number, + status number, + start_time date, + end_time date, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +) +/ + +CREATE TABLE hrsa_push_record_detail +( + id NUMBER(38,0) NOT NULL, + record_id NUMBER(38,0), + acct_emp_id NUMBER(38,0), + execute CLOB, + execute_time date, + status number, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202411190103.sql b/resource/sqlupgrade/PG/sql202411190103.sql new file mode 100644 index 000000000..0e2ba412e --- /dev/null +++ b/resource/sqlupgrade/PG/sql202411190103.sql @@ -0,0 +1,71 @@ +CREATE TABLE hrsa_push_setting +( + id bigint NOT NULL, + name varchar(200), + able int, + salary_sob_ids varchar(2000), + mode_id int, + mode_name varchar(200), + table_name varchar(200), + creator bigint, + create_time timestamp, + update_time timestamp, + delete_type int, + tenant_key varchar(10), + PRIMARY KEY (id) +); + + +CREATE TABLE hrsa_push_setting_item +( + id bigint NOT NULL, + setting_id bigint, + source varchar(100), + item varchar(200), + item_name varchar(200), + field_name varchar(200), + field_type int, + creator bigint, + create_time timestamp, + update_time timestamp, + delete_type int, + tenant_key varchar(10), + PRIMARY KEY (id) +); + + +CREATE TABLE hrsa_push_record +( + id bigint NOT NULL, + name varchar(200), + setting_id bigint, + mode_id int, + table_name varchar(100), + acct_record_id bigint, + type int, + status int, + start_time timestamp, + end_time timestamp, + creator bigint, + create_time timestamp, + update_time timestamp, + delete_type int, + tenant_key varchar(10), + PRIMARY KEY (id) +); + +CREATE TABLE hrsa_push_record_detail +( + id bigint NOT NULL, + record_id bigint, + acct_emp_id bigint, + execute text, + execute_time timestamp, + status int, + creator bigint, + create_time timestamp, + update_time timestamp, + delete_type int, + tenant_key varchar(10), + PRIMARY KEY (id) +); \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202411190103.sql b/resource/sqlupgrade/SQLServer/sql202411190103.sql new file mode 100644 index 000000000..fd993c777 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202411190103.sql @@ -0,0 +1,75 @@ +CREATE TABLE hrsa_push_setting +( + id bigint NOT NULL, + name varchar(200), + able int, + salary_sob_ids varchar(2000), + mode_id int, + mode_name varchar(200), + table_name varchar(200), + creator bigint, + create_time datetime, + update_time datetime, + delete_type int, + tenant_key varchar(10), + PRIMARY KEY (id) +) +GO + + +CREATE TABLE hrsa_push_setting_item +( + id bigint NOT NULL, + setting_id bigint, + source varchar(100), + item varchar(200), + item_name varchar(200), + field_name varchar(200), + field_type int, + creator bigint, + create_time datetime, + update_time datetime, + delete_type int, + tenant_key varchar(10), + PRIMARY KEY (id) +) +GO + + +CREATE TABLE hrsa_push_record +( + id bigint NOT NULL, + name varchar(200), + setting_id bigint, + mode_id int, + table_name varchar(100), + acct_record_id bigint, + type int, + status int, + start_time datetime, + end_time datetime, + creator bigint, + create_time datetime, + update_time datetime, + delete_type int, + tenant_key varchar(10), + PRIMARY KEY (id) +) +GO + +CREATE TABLE hrsa_push_record_detail +( + id bigint NOT NULL, + record_id bigint, + acct_emp_id bigint, + execute text, + execute_time datetime, + status int, + creator bigint, + create_time datetime, + update_time datetime, + delete_type int, + tenant_key varchar(10), + PRIMARY KEY (id) +) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202411190103.sql b/resource/sqlupgrade/ST/sql202411190103.sql new file mode 100644 index 000000000..1ed27c6fd --- /dev/null +++ b/resource/sqlupgrade/ST/sql202411190103.sql @@ -0,0 +1,70 @@ +CREATE TABLE hrsa_push_setting +( + id NUMBER(38,0) primary key NOT NULL, + name varchar2(200), + able number, + salary_sob_ids varchar2(2000), + mode_id number, + mode_name varchar2(200), + table_name varchar2(200), + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_push_setting_item +( + id NUMBER(38,0) NOT NULL, + setting_id NUMBER(38,0), + source varchar2(100), + item varchar2(200), + item_name varchar2(200), + field_name varchar2(200), + field_type number, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_push_record +( + id NUMBER(38,0) NOT NULL, + name varchar2(200), + setting_id NUMBER(38,0), + mode_id number, + table_name varchar2(100), + acct_record_id NUMBER(38,0), + type number, + status number, + start_time date, + end_time date, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_push_record_detail +( + id NUMBER(38,0) NOT NULL, + record_id NUMBER(38,0), + acct_emp_id NUMBER(38,0), + execute CLOB, + execute_time date, + status number, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + From 0777f99870c91953281b2a47b8f5f9eb2d804bd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 1 Apr 2025 17:35:29 +0800 Subject: [PATCH 15/22] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=8E=A5=E5=8F=A3=EF=BC=9B=20=E9=87=8D?= =?UTF-8?q?=E6=8E=A8=E6=8E=A5=E5=8F=A3=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/push/param/CreatePushParam.java | 29 +++ .../salary/entity/push/param/PushParam.java | 2 + .../engine/salary/service/PushService.java | 11 +- .../salary/service/impl/PushServiceImpl.java | 215 +++++------------- src/com/engine/salary/web/PushController.java | 24 +- .../engine/salary/wrapper/PushWrapper.java | 17 +- 6 files changed, 114 insertions(+), 184 deletions(-) create mode 100644 src/com/engine/salary/entity/push/param/CreatePushParam.java diff --git a/src/com/engine/salary/entity/push/param/CreatePushParam.java b/src/com/engine/salary/entity/push/param/CreatePushParam.java new file mode 100644 index 000000000..5ef10fef4 --- /dev/null +++ b/src/com/engine/salary/entity/push/param/CreatePushParam.java @@ -0,0 +1,29 @@ +package com.engine.salary.entity.push.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + + +/** + * 创建推送记录 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CreatePushParam { + + + private List salaryAcctRecordIds; + + +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/push/param/PushParam.java b/src/com/engine/salary/entity/push/param/PushParam.java index 24f8c257e..f653c639b 100644 --- a/src/com/engine/salary/entity/push/param/PushParam.java +++ b/src/com/engine/salary/entity/push/param/PushParam.java @@ -13,6 +13,8 @@ import lombok.NoArgsConstructor; public class PushParam { + private Long id; + private Long salaryAcctRecordId; diff --git a/src/com/engine/salary/service/PushService.java b/src/com/engine/salary/service/PushService.java index e84690d73..f3e5c91f9 100644 --- a/src/com/engine/salary/service/PushService.java +++ b/src/com/engine/salary/service/PushService.java @@ -58,19 +58,14 @@ public interface PushService { */ void deleteItem(Long id); - /** - * 推送一条核算记录下的所有数据 - * - * @param salaryAcctRecordId - * @return - */ - void pushOneRecord(Long salaryAcctRecordId); - void createPushRecord(Long salaryAcctRecordId); + void push(Long id); + void removeRecords(List records); PageInfo recordList(RecordListQueryParam param); PageInfo recordDetailList(RecordDetailListQueryParam param); + } diff --git a/src/com/engine/salary/service/impl/PushServiceImpl.java b/src/com/engine/salary/service/impl/PushServiceImpl.java index 1107e43d6..8503f447b 100644 --- a/src/com/engine/salary/service/impl/PushServiceImpl.java +++ b/src/com/engine/salary/service/impl/PushServiceImpl.java @@ -246,120 +246,6 @@ public class PushServiceImpl extends Service implements PushService { getPushSettingItemMapper().delete(PushSettingItemPO.builder().id(id).build()); } - @Override - public void pushOneRecord(Long salaryAcctRecordId) { - - SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); - - if (salaryAcctRecordPO == null) { - throw new SalaryRunTimeException("核算记录不存在!"); - } - - //查询核算人员 - List salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId()); - - //薪资项目 - List salaryItemPOS = getSalaryItemService(user).listAll(); - //查询薪资核算记录的薪资周期、考勤周期等 - SalarySobCycleDTO salarySobCycleDTO = getSalaryAcctRecordService(user).getSalarySobCycleById(salaryAcctRecordPO.getId()); - - SalaryAcctCalculateBO salaryAcctCalculateBO = new SalaryAcctCalculateBO() - .setSalaryAcctRecordPO(salaryAcctRecordPO) - .setSalarySobPO(new SalarySobPO()) - .setSalarySobCycleDTO(salarySobCycleDTO) - .setOtherSalaryAcctRecordPOS(new ArrayList<>()) - .setSalarySobItemPOS(new ArrayList<>()) - .setSalaryItemIdWithPriorityList(new ArrayList<>()) - .setExpressFormulas(new ArrayList<>()) - .setSalaryItemPOS(salaryItemPOS) - .setSalarySobAdjustRulePOS(new ArrayList<>()) - .setWelfareColumns(new HashMap<>()) - .setAttendQuoteFieldListDTOS(new ArrayList<>()) - .setSalaryAcctEmployeePOS(salaryAcctEmployeePOS) - .setIssuedFieldIds(new HashSet<>()) - .setChildMonitor(null) - .setResults(null) - .setCalculateKey(null) - .setVariableItems(new ArrayList<>()) - .setTaxDeclarationFunction(TaxDeclarationFunctionEnum.OPEN); - - - List employeeIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getSalaryAcctEmployeePOS(), SalaryAcctEmployeePO::getEmployeeId, Collectors.toList()); - List simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds); - - List salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getSalaryAcctEmployeePOS(), SalaryAcctEmployeePO::getId, Collectors.toList()); - List salaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); - - CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), salaryAcctResultPOS, new ArrayList<>(),new ArrayList<>()); - Map> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO); - - - List pushSettingPOS = getPushSettingMapper().listSome(PushSettingPO.builder().able(1).build()); - pushSettingPOS.stream() - .filter(po -> po.getSalarySobIds().contains(salaryAcctRecordPO.getSalarySobId())) - .forEach(setting -> { - - Long id = setting.getId(); - List pushSettingItemPOS = getPushSettingItemMapper().listSome(PushSettingItemPO.builder().settingId(id).build()); - - - //每个人插入一条 - for (SalaryAcctEmployeePO emp : salaryAcctEmployeePOS) { - //1 获取当前薪资核算人员的公式中的变量的值 - List formulaVarValues = formulaVarMap.get(emp.getEmployeeId() + "_" + emp.getTaxAgentId()); - //2 人员信息 - List empInfo = formulaVarMap.get(emp.getEmployeeId() + ""); - formulaVarValues.addAll(empInfo); - Map formulaVarValueMap = SalaryEntityUtil.convert2Map(formulaVarValues, CalculateFormulaVarBO.FormulaVarValue::getFieldId, CalculateFormulaVarBO.FormulaVarValue::getFieldValue); - - Integer modeId = setting.getModeId(); - - List fields = new ArrayList() {{ - add("formmodeid"); - add("modedatacreater"); - add("modedatacreatertype"); - add("modedatacreatedate"); - add("modedatacreatetime"); - }}; - String currDate = TimeUtil.getCurrentDateString(); - SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); - String currTime = sdf.format(new Date()); - List values = new ArrayList() {{ - add(modeId); - add(1); - add(0); - add(String.format("'%s'", currDate)); - add(String.format("'%s'", currTime)); - }}; - for (PushSettingItemPO item : pushSettingItemPOS) { - //数据库字段 - String fieldName = item.getFieldName(); - fields.add(fieldName); - // 公式变量的值 - String field = item.getItem(); - String value = formulaVarValueMap.getOrDefault(field, StringUtils.EMPTY); - PushItemFieldEnum pushItemFieldEnum = PushItemFieldEnum.parseByValue(item.getFieldType()); - values.add(pushItemFieldEnum.convertValue(value)); - } - String tableName = setting.getTableName(); - String sql = String.format("insert into %s (%s) values (%s)", tableName, String.join(",", fields), values.stream().map(Object::toString).collect(Collectors.joining(","))); - RecordSet rs = new RecordSet(); - rs.execute(sql); - - if (modeId != null) { - rs.executeQuery("select max(id) from " + tableName); - int mainId = 0; - if (rs.next()) { - mainId = rs.getInt(1); - } - ModeRightInfo ModeRightInfo = new ModeRightInfo(); - ModeRightInfo.setNewRight(true); - ModeRightInfo.editModeDataShare(1, modeId, mainId); - } - } - }); - } - @Override public void createPushRecord(Long salaryAcctRecordId) { Date now = new Date(); @@ -506,9 +392,9 @@ public class PushServiceImpl extends Service implements PushService { } ); } catch (Exception e) { - log.error("推送失败", e); + log.error("创建推送记录失败", e); removeRecords(recordIds); - throw new SalaryRunTimeException("推送失败"); + throw new SalaryRunTimeException("创建推送记录失败"); } //开始 @@ -516,62 +402,65 @@ public class PushServiceImpl extends Service implements PushService { } + @Override + public void push(Long id) { + //待推送 + PushRecordPO pushRecordPO = getPushRecordMapper().getById(id); + pushRecordPO.setStatus(PushRecordStatusEnum.RUN_WAITING.getValue()); + getPushRecordMapper().updateIgnoreNull(pushRecordPO); + + try { + pushRecordPO.setStartTime(new Date()); + pushRecordPO.setStatus(PushRecordStatusEnum.RUN_PROGRESS.getValue()); + getPushRecordMapper().updateIgnoreNull(pushRecordPO); + List pushRecordDetailPOS = getPushRecordDetailMapper().listSome(PushRecordDetailPO.builder().recordId(pushRecordPO.getId()).build()); + pushRecordDetailPOS.forEach(pushRecordDetailPO -> { + + try { + String execute = pushRecordDetailPO.getExecute(); + RecordSet rs = new RecordSet(); + rs.execute(execute); + //建模需要权限重构 + Integer modeId = pushRecordPO.getModeId(); + if (modeId != null) { + String tableName = pushRecordPO.getTableName(); + rs.executeQuery("select max(id) from " + tableName); + int mainId = 0; + if (rs.next()) { + mainId = rs.getInt(1); + } + ModeRightInfo ModeRightInfo = new ModeRightInfo(); + ModeRightInfo.setNewRight(true); + ModeRightInfo.editModeDataShare(1, modeId, mainId); + } + + pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.SUCCESS.getValue()); + } catch (Exception e) { + pushRecordDetailPO.setFail_reason(e.getMessage()); + pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.FAIL.getValue()); + } + }); + + pushRecordPO.setEndTime(new Date()); + pushRecordPO.setStatus(PushRecordStatusEnum.RUN_SUCCESS.getValue()); + } catch (Exception e) { + pushRecordPO.setFail_reason(e.getMessage()); + pushRecordPO.setStatus(PushRecordStatusEnum.RUN_FAIL.getValue()); + } + getPushRecordMapper().updateIgnoreNull(pushRecordPO); + } + /** * 启动推送 * * @param recordIds */ private void startBatchPush(List recordIds) { - - recordIds.forEach(recordId -> { - //待推送 - PushRecordPO pushRecordPO = getPushRecordMapper().getById(recordId); - pushRecordPO.setStatus(PushRecordStatusEnum.RUN_WAITING.getValue()); - getPushRecordMapper().updateIgnoreNull(pushRecordPO); - - try { - pushRecordPO.setStartTime(new Date()); - pushRecordPO.setStatus(PushRecordStatusEnum.RUN_PROGRESS.getValue()); - getPushRecordMapper().updateIgnoreNull(pushRecordPO); - List pushRecordDetailPOS = getPushRecordDetailMapper().listSome(PushRecordDetailPO.builder().recordId(pushRecordPO.getId()).build()); - pushRecordDetailPOS.forEach(pushRecordDetailPO -> { - - try { - String execute = pushRecordDetailPO.getExecute(); - RecordSet rs = new RecordSet(); - rs.execute(execute); - //建模需要权限重构 - Integer modeId = pushRecordPO.getModeId(); - if (modeId != null) { - String tableName = pushRecordPO.getTableName(); - rs.executeQuery("select max(id) from " + tableName); - int mainId = 0; - if (rs.next()) { - mainId = rs.getInt(1); - } - ModeRightInfo ModeRightInfo = new ModeRightInfo(); - ModeRightInfo.setNewRight(true); - ModeRightInfo.editModeDataShare(1, modeId, mainId); - } - - pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.SUCCESS.getValue()); - } catch (Exception e) { - pushRecordDetailPO.setFail_reason(e.getMessage()); - pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.FAIL.getValue()); - } - }); - - pushRecordPO.setEndTime(new Date()); - pushRecordPO.setStatus(PushRecordStatusEnum.RUN_SUCCESS.getValue()); - } catch (Exception e) { - pushRecordPO.setFail_reason(e.getMessage()); - pushRecordPO.setStatus(PushRecordStatusEnum.RUN_FAIL.getValue()); - } - getPushRecordMapper().updateIgnoreNull(pushRecordPO); - }); + recordIds.forEach(this::push); } + @Override public void removeRecords(List recordIds) { recordIds.forEach(recordId -> { diff --git a/src/com/engine/salary/web/PushController.java b/src/com/engine/salary/web/PushController.java index b36c06ed2..1ad8fe061 100644 --- a/src/com/engine/salary/web/PushController.java +++ b/src/com/engine/salary/web/PushController.java @@ -92,14 +92,6 @@ public class PushController { return new ResponseResult(user).run(getPushWrapper(user)::deleteItem, id); } - @POST - @Path("/push") - @Produces(MediaType.APPLICATION_JSON) - public String push(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody PushParam param) { - User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getPushWrapper(user)::push, param); - } - @POST @Path("/record/list") @Produces(MediaType.APPLICATION_JSON) @@ -115,4 +107,20 @@ public class PushController { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getPushWrapper(user)::recordDetailList, param); } + + @POST + @Path("/record/create") + @Produces(MediaType.APPLICATION_JSON) + public String createPushRecord(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody CreatePushParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getPushWrapper(user)::createPushRecord, param); + } + + @POST + @Path("/record/push") + @Produces(MediaType.APPLICATION_JSON) + public String push(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody PushParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getPushWrapper(user)::push, param); + } } diff --git a/src/com/engine/salary/wrapper/PushWrapper.java b/src/com/engine/salary/wrapper/PushWrapper.java index f59d1c934..6d557ba8f 100644 --- a/src/com/engine/salary/wrapper/PushWrapper.java +++ b/src/com/engine/salary/wrapper/PushWrapper.java @@ -35,6 +35,7 @@ public class PushWrapper extends Service { return execute; } + public PageInfo settingList(PushSettingQueryParam param) { return getPushService(user).settingList(param); } @@ -60,14 +61,20 @@ public class PushWrapper extends Service { getPushService(user).deleteItem(id); } - public void push(PushParam pushParam) { -// getPushService(user).pushOneRecord(pushParam.getSalaryAcctRecordId()); - getPushService(user).createPushRecord(pushParam.getSalaryAcctRecordId()); + public void createPushRecord(CreatePushParam param) { + param.getSalaryAcctRecordIds().forEach(id -> { + getPushService(user).createPushRecord(id); + }); } - public PageInfo recordList(RecordListQueryParam param) { + public void push(PushParam pushParam) { + getPushService(user).push(pushParam.getId()); + } - return getPushService(user).recordList(param); + + + public PageInfo recordList(RecordListQueryParam param) { + return getPushService(user).recordList(param); } public PageInfo recordDetailList(RecordDetailListQueryParam param) { From ba650b9fe63a7f2e1e34bfb0158af2f31a4d54fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 2 Apr 2025 14:59:32 +0800 Subject: [PATCH 16/22] =?UTF-8?q?=E6=8E=A8=E9=80=81=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=8F=98=E6=9B=B4=EF=BC=9B=20=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E6=98=8E=E7=BB=86=E7=8A=B6=E6=80=81=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/push/dto/PushRecordDTO.java | 5 +- .../entity/push/dto/PushRecordDetailDTO.java | 8 ++- .../entity/push/po/PushRecordDetailPO.java | 2 +- .../push/PushRecordDetailStatusEnum.java | 2 +- .../enums/push/PushRecordStatusEnum.java | 2 +- .../mapper/push/PushRecordDetailMapper.java | 5 +- .../mapper/push/PushRecordDetailMapper.xml | 59 +++++++++++++++++++ .../salary/service/impl/PushServiceImpl.java | 30 ++++------ 8 files changed, 86 insertions(+), 27 deletions(-) diff --git a/src/com/engine/salary/entity/push/dto/PushRecordDTO.java b/src/com/engine/salary/entity/push/dto/PushRecordDTO.java index af5dd4d2a..b1d34a2dd 100644 --- a/src/com/engine/salary/entity/push/dto/PushRecordDTO.java +++ b/src/com/engine/salary/entity/push/dto/PushRecordDTO.java @@ -50,7 +50,7 @@ public class PushRecordDTO { /** * 数据库表名 */ - @TableTitle(title = "记录名", dataIndex = "name", key = "name") + @TableTitle(title = "数据表名", dataIndex = "name", key = "tableName") private String tableName; @@ -59,7 +59,8 @@ public class PushRecordDTO { * * @see PushRecordStatusEnum */ - @TableTitle(title = "推送状态", dataIndex = "status", key = "status") + @TableTitle(title = "推送状态", dataIndex = "statusName", key = "statusName") + private String statusName; private Integer status; /** diff --git a/src/com/engine/salary/entity/push/dto/PushRecordDetailDTO.java b/src/com/engine/salary/entity/push/dto/PushRecordDetailDTO.java index 2807eaf69..de9d56fe5 100644 --- a/src/com/engine/salary/entity/push/dto/PushRecordDetailDTO.java +++ b/src/com/engine/salary/entity/push/dto/PushRecordDetailDTO.java @@ -33,18 +33,22 @@ public class PushRecordDetailDTO { */ private Long acctEmpId; + @TableTitle(title = "人员", dataIndex = "username",key = "username") + private String username; + /** * 执行状态 * @see com.engine.salary.enums.push.PushRecordDetailStatusEnum */ - @TableTitle(title = "执行状态", dataIndex = "status",key = "status") + @TableTitle(title = "执行状态", dataIndex = "statusName",key = "statusName") + private String statusName; private Integer status; /** * 失败原因 */ @TableTitle(title = "失败原因", dataIndex = "fail_reason",key = "status") - private String fail_reason; + private String failReason; /** * 执行sql diff --git a/src/com/engine/salary/entity/push/po/PushRecordDetailPO.java b/src/com/engine/salary/entity/push/po/PushRecordDetailPO.java index 64e27ed08..f55a9c8f0 100644 --- a/src/com/engine/salary/entity/push/po/PushRecordDetailPO.java +++ b/src/com/engine/salary/entity/push/po/PushRecordDetailPO.java @@ -45,7 +45,7 @@ public class PushRecordDetailPO { * 失败原因 */ @ElogTransform(name = "失败原因") - private String fail_reason; + private String failReason; /** * 执行sql diff --git a/src/com/engine/salary/enums/push/PushRecordDetailStatusEnum.java b/src/com/engine/salary/enums/push/PushRecordDetailStatusEnum.java index 47245a544..c303de40b 100644 --- a/src/com/engine/salary/enums/push/PushRecordDetailStatusEnum.java +++ b/src/com/engine/salary/enums/push/PushRecordDetailStatusEnum.java @@ -52,7 +52,7 @@ public enum PushRecordDetailStatusEnum implements BaseEnum { return salaryDataSourceEnum; } } - return null; + return PREPARE; } public static String getDefaultLabelByValue(Integer value) { diff --git a/src/com/engine/salary/enums/push/PushRecordStatusEnum.java b/src/com/engine/salary/enums/push/PushRecordStatusEnum.java index 7b537e28e..57321e2ad 100644 --- a/src/com/engine/salary/enums/push/PushRecordStatusEnum.java +++ b/src/com/engine/salary/enums/push/PushRecordStatusEnum.java @@ -55,7 +55,7 @@ public enum PushRecordStatusEnum implements BaseEnum { return salaryDataSourceEnum; } } - return null; + return DATA_PREPARE; } public static String getDefaultLabelByValue(Integer value) { diff --git a/src/com/engine/salary/mapper/push/PushRecordDetailMapper.java b/src/com/engine/salary/mapper/push/PushRecordDetailMapper.java index 5ad4a105f..1c63a36c2 100644 --- a/src/com/engine/salary/mapper/push/PushRecordDetailMapper.java +++ b/src/com/engine/salary/mapper/push/PushRecordDetailMapper.java @@ -1,5 +1,6 @@ package com.engine.salary.mapper.push; +import com.engine.salary.entity.push.dto.PushRecordDetailDTO; import com.engine.salary.entity.push.po.PushRecordDetailPO; import org.apache.ibatis.annotations.Param; @@ -21,7 +22,9 @@ public interface PushRecordDetailMapper { * @return 返回集合,没有返回空List */ List listSome(PushRecordDetailPO pushRecordDetail); - + + List listDTO(PushRecordDetailDTO dto); + /** * 根据主键查询 diff --git a/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml b/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml index ecbeef0cd..2f720d205 100644 --- a/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml +++ b/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml @@ -12,6 +12,7 @@ + @@ -28,6 +29,7 @@ , t.status , t.tenant_key , t.update_time + , t.fail_reason @@ -88,6 +90,53 @@ #{id} + ORDER BY id DESC + + + @@ -127,6 +176,9 @@ update_time, + + fail_reason, + @@ -159,6 +211,9 @@ #{updateTime}, + + #{failReason}, + @@ -175,6 +230,7 @@ status=#{status}, tenant_key=#{tenantKey}, update_time=#{updateTime}, + fail_reason=#{failReason}, WHERE id = #{id} AND delete_type = 0 @@ -211,6 +267,9 @@ update_time=#{updateTime}, + + fail_reason=#{failReason}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/service/impl/PushServiceImpl.java b/src/com/engine/salary/service/impl/PushServiceImpl.java index 8503f447b..64cd82e73 100644 --- a/src/com/engine/salary/service/impl/PushServiceImpl.java +++ b/src/com/engine/salary/service/impl/PushServiceImpl.java @@ -257,7 +257,7 @@ public class PushServiceImpl extends Service implements PushService { //查询推送配置 List pushSettingPOS = getPushSettingMapper().listSome(PushSettingPO.builder().able(1).build()); - if(CollUtil.isEmpty(pushSettingPOS)){ + if (CollUtil.isEmpty(pushSettingPOS)) { return; } @@ -436,9 +436,10 @@ public class PushServiceImpl extends Service implements PushService { pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.SUCCESS.getValue()); } catch (Exception e) { - pushRecordDetailPO.setFail_reason(e.getMessage()); + pushRecordDetailPO.setFailReason(e.getMessage()); pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.FAIL.getValue()); } + getPushRecordDetailMapper().updateIgnoreNull(pushRecordDetailPO); }); pushRecordPO.setEndTime(new Date()); @@ -460,7 +461,6 @@ public class PushServiceImpl extends Service implements PushService { } - @Override public void removeRecords(List recordIds) { recordIds.forEach(recordId -> { @@ -487,6 +487,7 @@ public class PushServiceImpl extends Service implements PushService { .acctRecordId(po.getAcctRecordId()) .type(po.getType()) .status(po.getStatus()) + .statusName(PushRecordStatusEnum.parseByValue(po.getStatus()).getDefaultLabel()) .startTime(po.getStartTime()) .endTime(po.getEndTime()) .build()) @@ -501,22 +502,13 @@ public class PushServiceImpl extends Service implements PushService { public PageInfo recordDetailList(RecordDetailListQueryParam param) { ValidUtil.doValidator(param); - List pushRecordDetailPOS = getPushRecordDetailMapper().listSome(PushRecordDetailPO.builder().recordId(param.getRecordId()).build()); - List listDTOS = SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pushRecordDetailPOS) - .stream() - .map(po -> PushRecordDetailDTO.builder() - .id(po.getId()) - .recordId(po.getRecordId()) - .acctEmpId(po.getAcctEmpId()) - .status(po.getStatus()) - .fail_reason(po.getFail_reason()) - .execute(po.getExecute()) - .createTime(po.getCreateTime()) - .creator(po.getCreator()) - .build()) - .collect(Collectors.toList()); - PageInfo pageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, PushRecordDetailDTO.class); - pageInfo.setTotal(pushRecordDetailPOS.size()); + List list = getPushRecordDetailMapper().listDTO(PushRecordDetailDTO.builder().recordId(param.getRecordId()).build()); + List listDTOS = SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), list); + listDTOS.forEach(dto -> dto.setStatusName(PushRecordDetailStatusEnum.parseByValue(dto.getStatus()).getDefaultLabel())); + + PageInfo pageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), PushRecordDetailDTO.class); + pageInfo.setList(listDTOS); + pageInfo.setTotal(list.size()); return pageInfo; } } From 0a78f17230cb1614ef05c840e46df2058cb5345c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 2 Apr 2025 17:05:04 +0800 Subject: [PATCH 17/22] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E8=80=97=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202504020203.sql | 6 +++ resource/sqlupgrade/GS/sql202504020203.sql | 6 +++ resource/sqlupgrade/JC/sql202504020203.sql | 6 +++ resource/sqlupgrade/Mysql/sql202504020203.sql | 3 ++ .../sqlupgrade/Oracle/sql202504020203.sql | 5 ++ resource/sqlupgrade/PG/sql202504020203.sql | 3 ++ .../sqlupgrade/SQLServer/sql202504020203.sql | 5 ++ resource/sqlupgrade/ST/sql202504020203.sql | 6 +++ .../salary/entity/push/dto/PushRecordDTO.java | 13 ++--- .../salary/entity/push/po/PushRecordPO.java | 2 +- .../mapper/push/PushRecordDetailMapper.xml | 2 +- .../salary/mapper/push/PushRecordMapper.xml | 53 +++++++++++++++++-- .../salary/service/impl/PushServiceImpl.java | 3 +- 13 files changed, 98 insertions(+), 15 deletions(-) create mode 100644 resource/sqlupgrade/DM/sql202504020203.sql create mode 100644 resource/sqlupgrade/GS/sql202504020203.sql create mode 100644 resource/sqlupgrade/JC/sql202504020203.sql create mode 100644 resource/sqlupgrade/Mysql/sql202504020203.sql create mode 100644 resource/sqlupgrade/Oracle/sql202504020203.sql create mode 100644 resource/sqlupgrade/PG/sql202504020203.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202504020203.sql create mode 100644 resource/sqlupgrade/ST/sql202504020203.sql diff --git a/resource/sqlupgrade/DM/sql202504020203.sql b/resource/sqlupgrade/DM/sql202504020203.sql new file mode 100644 index 000000000..d54eff0ca --- /dev/null +++ b/resource/sqlupgrade/DM/sql202504020203.sql @@ -0,0 +1,6 @@ +ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000); +/ + +ALTER TABLE hrsa_push_record_detail ADD fail_reason varchar2(4000); +/ + diff --git a/resource/sqlupgrade/GS/sql202504020203.sql b/resource/sqlupgrade/GS/sql202504020203.sql new file mode 100644 index 000000000..d54eff0ca --- /dev/null +++ b/resource/sqlupgrade/GS/sql202504020203.sql @@ -0,0 +1,6 @@ +ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000); +/ + +ALTER TABLE hrsa_push_record_detail ADD fail_reason varchar2(4000); +/ + diff --git a/resource/sqlupgrade/JC/sql202504020203.sql b/resource/sqlupgrade/JC/sql202504020203.sql new file mode 100644 index 000000000..d54eff0ca --- /dev/null +++ b/resource/sqlupgrade/JC/sql202504020203.sql @@ -0,0 +1,6 @@ +ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000); +/ + +ALTER TABLE hrsa_push_record_detail ADD fail_reason varchar2(4000); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202504020203.sql b/resource/sqlupgrade/Mysql/sql202504020203.sql new file mode 100644 index 000000000..f7f94d4b6 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202504020203.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_push_record ADD COLUMN fail_reason varchar(4000); + +ALTER TABLE hrsa_push_record_detail ADD COLUMN fail_reason varchar(4000) ; diff --git a/resource/sqlupgrade/Oracle/sql202504020203.sql b/resource/sqlupgrade/Oracle/sql202504020203.sql new file mode 100644 index 000000000..ea71581d2 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202504020203.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000); +/ + +ALTER TABLE hrsa_push_record_detail ADD fail_reason varchar2(4000); +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202504020203.sql b/resource/sqlupgrade/PG/sql202504020203.sql new file mode 100644 index 000000000..adb7b31e2 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202504020203.sql @@ -0,0 +1,3 @@ +alter table hrsa_push_record add fail_reason VARCHAR(4000) ; + +alter table hrsa_push_record_detail add fail_reason VARCHAR(4000) ; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202504020203.sql b/resource/sqlupgrade/SQLServer/sql202504020203.sql new file mode 100644 index 000000000..312077f79 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202504020203.sql @@ -0,0 +1,5 @@ +alter table hrsa_push_record add fail_reason VARCHAR(4000) +go + +alter table hrsa_push_record_detail add fail_reason VARCHAR(4000) +go \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202504020203.sql b/resource/sqlupgrade/ST/sql202504020203.sql new file mode 100644 index 000000000..d54eff0ca --- /dev/null +++ b/resource/sqlupgrade/ST/sql202504020203.sql @@ -0,0 +1,6 @@ +ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000); +/ + +ALTER TABLE hrsa_push_record_detail ADD fail_reason varchar2(4000); +/ + diff --git a/src/com/engine/salary/entity/push/dto/PushRecordDTO.java b/src/com/engine/salary/entity/push/dto/PushRecordDTO.java index b1d34a2dd..03243eb73 100644 --- a/src/com/engine/salary/entity/push/dto/PushRecordDTO.java +++ b/src/com/engine/salary/entity/push/dto/PushRecordDTO.java @@ -3,6 +3,7 @@ package com.engine.salary.entity.push.dto; import com.engine.hrmelog.annotation.ElogTransform; import com.engine.salary.annotation.TableTitle; import com.engine.salary.enums.push.PushRecordStatusEnum; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -66,50 +67,46 @@ public class PushRecordDTO { /** * 执行时间 */ - @TableTitle(title = "执行时间", dataIndex = "startTime", key = "startTime") + @TableTitle(title = "执行开始时间", dataIndex = "startTime", key = "startTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date startTime; /** * 结束时间 */ - @ElogTransform(name = "结束时间") + @TableTitle(title = "执行结束时间", dataIndex = "endTime", key = "endTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date endTime; /** * 推送类型,0推送,1撤回 */ - @ElogTransform(name = "推送类型") private Integer type; /** * 创建时间 */ - @ElogTransform(name = "创建时间") private Date createTime; /** * 创建人 */ - @ElogTransform(name = "创建人") private Long creator; /** * 是否已删除。0:未删除、1:已删除 */ - @ElogTransform(name = "是否已删除。0:未删除、1:已删除") private Integer deleteType; /** * 租户ID */ - @ElogTransform(name = "租户ID") private String tenantKey; /** * 更新时间 */ - @ElogTransform(name = "更新时间") private Date updateTime; diff --git a/src/com/engine/salary/entity/push/po/PushRecordPO.java b/src/com/engine/salary/entity/push/po/PushRecordPO.java index 6101e4b18..a0ed7080a 100644 --- a/src/com/engine/salary/entity/push/po/PushRecordPO.java +++ b/src/com/engine/salary/entity/push/po/PushRecordPO.java @@ -64,7 +64,7 @@ public class PushRecordPO { * 失败原因 */ @ElogTransform(name = "失败原因") - private String fail_reason; + private String failReason; /** * 开始时间 diff --git a/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml b/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml index 2f720d205..6ab97fdc5 100644 --- a/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml +++ b/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml @@ -105,7 +105,7 @@ , t.status , t.tenant_key , t.update_time - , t.fail_reason + , t.fail_reason as failReason , e.LASTNAME as username FROM hrsa_push_record_detail t left join hrsa_salary_acct_emp emp diff --git a/src/com/engine/salary/mapper/push/PushRecordMapper.xml b/src/com/engine/salary/mapper/push/PushRecordMapper.xml index 7009997ee..48e1a2765 100644 --- a/src/com/engine/salary/mapper/push/PushRecordMapper.xml +++ b/src/com/engine/salary/mapper/push/PushRecordMapper.xml @@ -3,18 +3,21 @@ + + + - - - - + + + + @@ -34,6 +37,9 @@ , t.tenant_key , t.type , t.update_time + , t.fail_reason + , t.start_time + , t.end_time @@ -98,6 +104,15 @@ AND update_time = #{updateTime} + + AND fail_reason = #{failReason} + + + AND start_time = #{startTime} + + + AND end_time = #{endTime} + AND id IN @@ -152,6 +167,15 @@ update_time, + + fail_reason, + + + start_time, + + + end_time, + @@ -193,6 +217,15 @@ #{updateTime}, + + #{failReason}, + + + #{startTime}, + + + #{endTime}, + @@ -212,6 +245,9 @@ tenant_key=#{tenantKey}, type=#{type}, update_time=#{updateTime}, + fail_reason=#{failReason}, + start_time=#{startTime}, + end_time=#{endTime}, WHERE id = #{id} AND delete_type = 0 @@ -257,6 +293,15 @@ update_time=#{updateTime}, + + fail_reason=#{failReason}, + + + start_time=#{startTime}, + + + end_time=#{endTime}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/service/impl/PushServiceImpl.java b/src/com/engine/salary/service/impl/PushServiceImpl.java index 64cd82e73..548c4b3f0 100644 --- a/src/com/engine/salary/service/impl/PushServiceImpl.java +++ b/src/com/engine/salary/service/impl/PushServiceImpl.java @@ -407,6 +407,7 @@ public class PushServiceImpl extends Service implements PushService { //待推送 PushRecordPO pushRecordPO = getPushRecordMapper().getById(id); pushRecordPO.setStatus(PushRecordStatusEnum.RUN_WAITING.getValue()); + pushRecordPO.setStartTime(new Date()); getPushRecordMapper().updateIgnoreNull(pushRecordPO); try { @@ -445,7 +446,7 @@ public class PushServiceImpl extends Service implements PushService { pushRecordPO.setEndTime(new Date()); pushRecordPO.setStatus(PushRecordStatusEnum.RUN_SUCCESS.getValue()); } catch (Exception e) { - pushRecordPO.setFail_reason(e.getMessage()); + pushRecordPO.setFailReason(e.getMessage()); pushRecordPO.setStatus(PushRecordStatusEnum.RUN_FAIL.getValue()); } getPushRecordMapper().updateIgnoreNull(pushRecordPO); From d4f45d5eb32c1e10c972d754de58500fa863b100 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 3 Apr 2025 10:49:10 +0800 Subject: [PATCH 18/22] =?UTF-8?q?=E6=89=A9=E5=B1=95=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202504030103.sql | 3 ++ resource/sqlupgrade/GS/sql202504030103.sql | 3 ++ resource/sqlupgrade/JC/sql202504030103.sql | 3 ++ resource/sqlupgrade/Mysql/sql202504030103.sql | 1 + .../sqlupgrade/Oracle/sql202504030103.sql | 2 + resource/sqlupgrade/PG/sql202504030103.sql | 1 + .../sqlupgrade/SQLServer/sql202504030103.sql | 2 + resource/sqlupgrade/ST/sql202504030103.sql | 3 ++ .../entity/push/dto/PushSettingItemDTO.java | 3 ++ .../push/param/PushSettingItemSaveParam.java | 5 ++ .../entity/push/po/PushSettingItemPO.java | 4 ++ .../enums/push/PushRecordStatusEnum.java | 16 +++--- .../mapper/push/PushSettingItemMapper.xml | 18 ++++++- .../engine/salary/service/PushService.java | 2 + .../salary/service/impl/PushServiceImpl.java | 54 +++++++++++++++++-- 15 files changed, 109 insertions(+), 11 deletions(-) create mode 100644 resource/sqlupgrade/DM/sql202504030103.sql create mode 100644 resource/sqlupgrade/GS/sql202504030103.sql create mode 100644 resource/sqlupgrade/JC/sql202504030103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202504030103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202504030103.sql create mode 100644 resource/sqlupgrade/PG/sql202504030103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202504030103.sql create mode 100644 resource/sqlupgrade/ST/sql202504030103.sql diff --git a/resource/sqlupgrade/DM/sql202504030103.sql b/resource/sqlupgrade/DM/sql202504030103.sql new file mode 100644 index 000000000..97725c02c --- /dev/null +++ b/resource/sqlupgrade/DM/sql202504030103.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER; +/ + diff --git a/resource/sqlupgrade/GS/sql202504030103.sql b/resource/sqlupgrade/GS/sql202504030103.sql new file mode 100644 index 000000000..97725c02c --- /dev/null +++ b/resource/sqlupgrade/GS/sql202504030103.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER; +/ + diff --git a/resource/sqlupgrade/JC/sql202504030103.sql b/resource/sqlupgrade/JC/sql202504030103.sql new file mode 100644 index 000000000..97725c02c --- /dev/null +++ b/resource/sqlupgrade/JC/sql202504030103.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202504030103.sql b/resource/sqlupgrade/Mysql/sql202504030103.sql new file mode 100644 index 000000000..44253d12e --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202504030103.sql @@ -0,0 +1 @@ +ALTER TABLE hrsa_push_setting_item ADD COLUMN sorted_index int(0); \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202504030103.sql b/resource/sqlupgrade/Oracle/sql202504030103.sql new file mode 100644 index 000000000..d5ea36ecf --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202504030103.sql @@ -0,0 +1,2 @@ +ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER; +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202504030103.sql b/resource/sqlupgrade/PG/sql202504030103.sql new file mode 100644 index 000000000..4dd4ec62f --- /dev/null +++ b/resource/sqlupgrade/PG/sql202504030103.sql @@ -0,0 +1 @@ +alter table hrsa_push_setting_item add sorted_index int ; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202504030103.sql b/resource/sqlupgrade/SQLServer/sql202504030103.sql new file mode 100644 index 000000000..ace32b9be --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202504030103.sql @@ -0,0 +1,2 @@ +alter table hrsa_push_setting_item add sorted_index int +go \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202504030103.sql b/resource/sqlupgrade/ST/sql202504030103.sql new file mode 100644 index 000000000..97725c02c --- /dev/null +++ b/resource/sqlupgrade/ST/sql202504030103.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER; +/ + diff --git a/src/com/engine/salary/entity/push/dto/PushSettingItemDTO.java b/src/com/engine/salary/entity/push/dto/PushSettingItemDTO.java index a45d4635f..22c8832d6 100644 --- a/src/com/engine/salary/entity/push/dto/PushSettingItemDTO.java +++ b/src/com/engine/salary/entity/push/dto/PushSettingItemDTO.java @@ -59,4 +59,7 @@ public class PushSettingItemDTO { @TableTitle(title = "字段类型", dataIndex = "fieldTypeName", key = "fieldTypeName") private String fieldTypeName; + @TableTitle(title = "排序", dataIndex = "sortedIndex", key = "sortedIndex") + private Integer sortedIndex; + } \ No newline at end of file diff --git a/src/com/engine/salary/entity/push/param/PushSettingItemSaveParam.java b/src/com/engine/salary/entity/push/param/PushSettingItemSaveParam.java index 57f46c330..d095b9697 100644 --- a/src/com/engine/salary/entity/push/param/PushSettingItemSaveParam.java +++ b/src/com/engine/salary/entity/push/param/PushSettingItemSaveParam.java @@ -59,6 +59,11 @@ public class PushSettingItemSaveParam { @DataCheck(require = true, message = "字段类型为空") private PushItemFieldEnum fieldType; + /** + * 排序 + */ + private Integer sortedIndex; + //主键id集合 private Collection ids; diff --git a/src/com/engine/salary/entity/push/po/PushSettingItemPO.java b/src/com/engine/salary/entity/push/po/PushSettingItemPO.java index ad7f97da1..71b16e335 100644 --- a/src/com/engine/salary/entity/push/po/PushSettingItemPO.java +++ b/src/com/engine/salary/entity/push/po/PushSettingItemPO.java @@ -62,6 +62,10 @@ public class PushSettingItemPO { @ElogTransform(name = "字段类型") private Integer fieldType; + + @ElogTransform(name = "排序") + private Integer sortedIndex; + /** * 租户ID */ diff --git a/src/com/engine/salary/enums/push/PushRecordStatusEnum.java b/src/com/engine/salary/enums/push/PushRecordStatusEnum.java index 57321e2ad..392985cc1 100644 --- a/src/com/engine/salary/enums/push/PushRecordStatusEnum.java +++ b/src/com/engine/salary/enums/push/PushRecordStatusEnum.java @@ -14,13 +14,15 @@ import java.util.Objects; * @version 1.0 **/ public enum PushRecordStatusEnum implements BaseEnum { - DATA_PREPARE(0, "数据构建", 87625), - DATA_FINISH(1, "构建完毕", 87625), - RUN_WAITING(2, "等待执行", 87625), - RUN_PROGRESS(3, "执行中", 85393), - RUN_COMPLETE(4, "执行完毕", 85393), - RUN_SUCCESS(5, "执行成功", 85393), - RUN_FAIL(6, "执行失败", 85393); + DATA_PREPARE(0, "准备中", 87625), + DATA_FINISH(1, "准备完毕", 87625), + RUN_PROGRESS(2, "推送中", 85393), + RUN_COMPLETE(3, "推送完毕", 85393), + RUN_SUCCESS(4, "推送成功", 85393), + RUN_FAIL(5, "推送失败", 85393), + WITHDRAW(6, "撤回中", 85393), + WITHDRAW_SUCCESS(7, "撤回成功", 85393), + WITHDRAW_FAIL(8, "撤回失败", 85393); private int value; diff --git a/src/com/engine/salary/mapper/push/PushSettingItemMapper.xml b/src/com/engine/salary/mapper/push/PushSettingItemMapper.xml index f708ed48c..2c5322940 100644 --- a/src/com/engine/salary/mapper/push/PushSettingItemMapper.xml +++ b/src/com/engine/salary/mapper/push/PushSettingItemMapper.xml @@ -12,6 +12,7 @@ + @@ -32,6 +33,7 @@ , t.setting_id , t.tenant_key , t.update_time + , t.sorted_index @@ -40,6 +42,7 @@ FROM hrsa_push_setting_item t WHERE delete_type = 0 + ORDER BY sorted_index DESC @@ -85,6 +88,9 @@ AND setting_id = #{settingId} + + + AND sorted_index = #{sortedIndex} AND tenant_key = #{tenantKey} @@ -98,7 +104,7 @@ #{id} - ORDER BY id DESC + ORDER BY sorted_index DESC @@ -137,6 +143,9 @@ setting_id, + + sorted_index, + tenant_key, @@ -175,6 +184,9 @@ #{settingId}, + + #{sortedIndex}, + #{tenantKey}, @@ -197,6 +209,7 @@ item_name=#{itemName}, source=#{source}, setting_id=#{settingId}, + sorted_index=#{sortedIndex}, tenant_key=#{tenantKey}, update_time=#{updateTime}, @@ -235,6 +248,9 @@ setting_id=#{settingId}, + + sorted_index=#{sortedIndex}, + tenant_key=#{tenantKey}, diff --git a/src/com/engine/salary/service/PushService.java b/src/com/engine/salary/service/PushService.java index f3e5c91f9..975cb77de 100644 --- a/src/com/engine/salary/service/PushService.java +++ b/src/com/engine/salary/service/PushService.java @@ -62,6 +62,8 @@ public interface PushService { void push(Long id); + void withdraw(Long id); + void removeRecords(List records); PageInfo recordList(RecordListQueryParam param); diff --git a/src/com/engine/salary/service/impl/PushServiceImpl.java b/src/com/engine/salary/service/impl/PushServiceImpl.java index 548c4b3f0..bb6f172b0 100644 --- a/src/com/engine/salary/service/impl/PushServiceImpl.java +++ b/src/com/engine/salary/service/impl/PushServiceImpl.java @@ -191,6 +191,7 @@ public class PushServiceImpl extends Service implements PushService { .fieldName(po.getFieldName()) .fieldType(PushItemFieldEnum.parseByValue(po.getFieldType())) .fieldTypeName(PushItemFieldEnum.parseByValue(po.getFieldType()).getDefaultLabel()) + .sortedIndex(po.getSortedIndex()) .build() ).collect(Collectors.toList()); @@ -212,6 +213,7 @@ public class PushServiceImpl extends Service implements PushService { .source(param.getSource()) .fieldName(param.getFieldName()) .fieldType(param.getFieldType().getValue()) + .sortedIndex(param.getSortedIndex()) .creator((long) user.getUID()) .createTime(now) .updateTime(now) @@ -232,6 +234,7 @@ public class PushServiceImpl extends Service implements PushService { po.setSource(param.getSource()); po.setFieldName(param.getFieldName()); po.setFieldType(param.getFieldType().getValue()); + po.setSortedIndex(param.getSortedIndex()); po.setUpdateTime(now); getPushSettingItemMapper().update(po); @@ -406,14 +409,12 @@ public class PushServiceImpl extends Service implements PushService { public void push(Long id) { //待推送 PushRecordPO pushRecordPO = getPushRecordMapper().getById(id); - pushRecordPO.setStatus(PushRecordStatusEnum.RUN_WAITING.getValue()); - pushRecordPO.setStartTime(new Date()); - getPushRecordMapper().updateIgnoreNull(pushRecordPO); try { pushRecordPO.setStartTime(new Date()); pushRecordPO.setStatus(PushRecordStatusEnum.RUN_PROGRESS.getValue()); getPushRecordMapper().updateIgnoreNull(pushRecordPO); + List pushRecordDetailPOS = getPushRecordDetailMapper().listSome(PushRecordDetailPO.builder().recordId(pushRecordPO.getId()).build()); pushRecordDetailPOS.forEach(pushRecordDetailPO -> { @@ -452,6 +453,53 @@ public class PushServiceImpl extends Service implements PushService { getPushRecordMapper().updateIgnoreNull(pushRecordPO); } + @Override + public void withdraw(Long id) { + //待撤回 + PushRecordPO pushRecordPO = getPushRecordMapper().getById(id); + + try { + pushRecordPO.setStartTime(new Date()); + pushRecordPO.setStatus(PushRecordStatusEnum.WITHDRAW.getValue()); + getPushRecordMapper().updateIgnoreNull(pushRecordPO); + List pushRecordDetailPOS = getPushRecordDetailMapper().listSome(PushRecordDetailPO.builder().recordId(pushRecordPO.getId()).build()); + pushRecordDetailPOS.forEach(pushRecordDetailPO -> { + + try { + String execute = pushRecordDetailPO.getExecute(); + RecordSet rs = new RecordSet(); + rs.execute(execute); + //建模需要权限重构 + Integer modeId = pushRecordPO.getModeId(); + if (modeId != null) { + String tableName = pushRecordPO.getTableName(); + rs.executeQuery("select max(id) from " + tableName); + int mainId = 0; + if (rs.next()) { + mainId = rs.getInt(1); + } + ModeRightInfo ModeRightInfo = new ModeRightInfo(); + ModeRightInfo.setNewRight(true); + ModeRightInfo.editModeDataShare(1, modeId, mainId); + } + + pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.SUCCESS.getValue()); + } catch (Exception e) { + pushRecordDetailPO.setFailReason(e.getMessage()); + pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.FAIL.getValue()); + } + getPushRecordDetailMapper().updateIgnoreNull(pushRecordDetailPO); + }); + + pushRecordPO.setEndTime(new Date()); + pushRecordPO.setStatus(PushRecordStatusEnum.WITHDRAW_SUCCESS.getValue()); + } catch (Exception e) { + pushRecordPO.setFailReason(e.getMessage()); + pushRecordPO.setStatus(PushRecordStatusEnum.WITHDRAW_FAIL.getValue()); + } + getPushRecordMapper().updateIgnoreNull(pushRecordPO); + } + /** * 启动推送 * From f4c025e078566033c65b4065482b69996eec1729 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 7 Apr 2025 09:19:47 +0800 Subject: [PATCH 19/22] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202504030103.sql | 3 + resource/sqlupgrade/GS/sql202504030103.sql | 3 + resource/sqlupgrade/JC/sql202504030103.sql | 3 + resource/sqlupgrade/Mysql/sql202504030103.sql | 4 +- .../sqlupgrade/Oracle/sql202504030103.sql | 3 + resource/sqlupgrade/PG/sql202504030103.sql | 4 +- .../sqlupgrade/SQLServer/sql202504030103.sql | 3 + resource/sqlupgrade/ST/sql202504030103.sql | 3 + .../salary/entity/push/dto/PushRecordDTO.java | 2 +- .../entity/push/po/PushRecordDetailPO.java | 5 ++ .../push/PushRecordDetailStatusEnum.java | 3 +- .../enums/push/PushRecordStatusEnum.java | 11 ++- .../mapper/push/PushRecordDetailMapper.xml | 13 +++ .../engine/salary/service/PushService.java | 2 + .../salary/service/impl/PushServiceImpl.java | 84 +++++++++---------- .../impl/SalaryAcctRecordServiceImpl.java | 5 +- 16 files changed, 97 insertions(+), 54 deletions(-) diff --git a/resource/sqlupgrade/DM/sql202504030103.sql b/resource/sqlupgrade/DM/sql202504030103.sql index 97725c02c..013d261c1 100644 --- a/resource/sqlupgrade/DM/sql202504030103.sql +++ b/resource/sqlupgrade/DM/sql202504030103.sql @@ -1,3 +1,6 @@ ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER; / +ALTER TABLE hrsa_push_record_detail ADD data_id NUMBER(38,0); +/ + diff --git a/resource/sqlupgrade/GS/sql202504030103.sql b/resource/sqlupgrade/GS/sql202504030103.sql index 97725c02c..013d261c1 100644 --- a/resource/sqlupgrade/GS/sql202504030103.sql +++ b/resource/sqlupgrade/GS/sql202504030103.sql @@ -1,3 +1,6 @@ ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER; / +ALTER TABLE hrsa_push_record_detail ADD data_id NUMBER(38,0); +/ + diff --git a/resource/sqlupgrade/JC/sql202504030103.sql b/resource/sqlupgrade/JC/sql202504030103.sql index 97725c02c..013d261c1 100644 --- a/resource/sqlupgrade/JC/sql202504030103.sql +++ b/resource/sqlupgrade/JC/sql202504030103.sql @@ -1,3 +1,6 @@ ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER; / +ALTER TABLE hrsa_push_record_detail ADD data_id NUMBER(38,0); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202504030103.sql b/resource/sqlupgrade/Mysql/sql202504030103.sql index 44253d12e..f21868d14 100644 --- a/resource/sqlupgrade/Mysql/sql202504030103.sql +++ b/resource/sqlupgrade/Mysql/sql202504030103.sql @@ -1 +1,3 @@ -ALTER TABLE hrsa_push_setting_item ADD COLUMN sorted_index int(0); \ No newline at end of file +ALTER TABLE hrsa_push_setting_item ADD COLUMN sorted_index int(0); + +ALTER TABLE hrsa_push_record_detail ADD COLUMN data_id bigint(0); diff --git a/resource/sqlupgrade/Oracle/sql202504030103.sql b/resource/sqlupgrade/Oracle/sql202504030103.sql index d5ea36ecf..8c2ab620f 100644 --- a/resource/sqlupgrade/Oracle/sql202504030103.sql +++ b/resource/sqlupgrade/Oracle/sql202504030103.sql @@ -1,2 +1,5 @@ ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER; +/ + +ALTER TABLE hrsa_push_record_detail ADD data_id NUMBER(38,0); / \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202504030103.sql b/resource/sqlupgrade/PG/sql202504030103.sql index 4dd4ec62f..a0bda613d 100644 --- a/resource/sqlupgrade/PG/sql202504030103.sql +++ b/resource/sqlupgrade/PG/sql202504030103.sql @@ -1 +1,3 @@ -alter table hrsa_push_setting_item add sorted_index int ; \ No newline at end of file +alter table hrsa_push_setting_item add sorted_index int ; + +alter table hrsa_push_record_detail add data_id bigint ; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202504030103.sql b/resource/sqlupgrade/SQLServer/sql202504030103.sql index ace32b9be..db030fdb3 100644 --- a/resource/sqlupgrade/SQLServer/sql202504030103.sql +++ b/resource/sqlupgrade/SQLServer/sql202504030103.sql @@ -1,2 +1,5 @@ alter table hrsa_push_setting_item add sorted_index int +go + +alter table hrsa_push_record_detail add data_id bigint go \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202504030103.sql b/resource/sqlupgrade/ST/sql202504030103.sql index 97725c02c..013d261c1 100644 --- a/resource/sqlupgrade/ST/sql202504030103.sql +++ b/resource/sqlupgrade/ST/sql202504030103.sql @@ -1,3 +1,6 @@ ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER; / +ALTER TABLE hrsa_push_record_detail ADD data_id NUMBER(38,0); +/ + diff --git a/src/com/engine/salary/entity/push/dto/PushRecordDTO.java b/src/com/engine/salary/entity/push/dto/PushRecordDTO.java index 03243eb73..74df0f8d4 100644 --- a/src/com/engine/salary/entity/push/dto/PushRecordDTO.java +++ b/src/com/engine/salary/entity/push/dto/PushRecordDTO.java @@ -51,7 +51,7 @@ public class PushRecordDTO { /** * 数据库表名 */ - @TableTitle(title = "数据表名", dataIndex = "name", key = "tableName") + @TableTitle(title = "数据表名", dataIndex = "tableName", key = "tableName") private String tableName; diff --git a/src/com/engine/salary/entity/push/po/PushRecordDetailPO.java b/src/com/engine/salary/entity/push/po/PushRecordDetailPO.java index f55a9c8f0..f971532e6 100644 --- a/src/com/engine/salary/entity/push/po/PushRecordDetailPO.java +++ b/src/com/engine/salary/entity/push/po/PushRecordDetailPO.java @@ -34,6 +34,11 @@ public class PushRecordDetailPO { @ElogTransform(name = "核算人员id") private Long acctEmpId; + /** + * 核算人员id + */ + private Long dataId; + /** * 执行状态 * @see com.engine.salary.enums.push.PushRecordDetailStatusEnum diff --git a/src/com/engine/salary/enums/push/PushRecordDetailStatusEnum.java b/src/com/engine/salary/enums/push/PushRecordDetailStatusEnum.java index c303de40b..c2d677d42 100644 --- a/src/com/engine/salary/enums/push/PushRecordDetailStatusEnum.java +++ b/src/com/engine/salary/enums/push/PushRecordDetailStatusEnum.java @@ -17,7 +17,8 @@ public enum PushRecordDetailStatusEnum implements BaseEnum { PREPARE(0, "待推送", 87625), SUCCESS(1, "推送成功", 85393), FAIL(2, "推送失败", 85393), - WITHDRAW(3, "已撤回", 85393); + WITHDRAW_SUCCESS(3, "已撤回", 85393), + WITHDRAW_FAIL(4, "撤回失败", 85393); private int value; diff --git a/src/com/engine/salary/enums/push/PushRecordStatusEnum.java b/src/com/engine/salary/enums/push/PushRecordStatusEnum.java index 392985cc1..3e3ea14c4 100644 --- a/src/com/engine/salary/enums/push/PushRecordStatusEnum.java +++ b/src/com/engine/salary/enums/push/PushRecordStatusEnum.java @@ -17,12 +17,11 @@ public enum PushRecordStatusEnum implements BaseEnum { DATA_PREPARE(0, "准备中", 87625), DATA_FINISH(1, "准备完毕", 87625), RUN_PROGRESS(2, "推送中", 85393), - RUN_COMPLETE(3, "推送完毕", 85393), - RUN_SUCCESS(4, "推送成功", 85393), - RUN_FAIL(5, "推送失败", 85393), - WITHDRAW(6, "撤回中", 85393), - WITHDRAW_SUCCESS(7, "撤回成功", 85393), - WITHDRAW_FAIL(8, "撤回失败", 85393); + RUN_SUCCESS(3, "推送成功", 85393), + RUN_FAIL(4, "推送失败", 85393), + WITHDRAW(5, "撤回中", 85393), + WITHDRAW_SUCCESS(6, "已撤回", 85393), + WITHDRAW_FAIL(7, "撤回失败", 85393); private int value; diff --git a/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml b/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml index 6ab97fdc5..bdbee38fc 100644 --- a/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml +++ b/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml @@ -13,6 +13,7 @@ + @@ -30,6 +31,7 @@ , t.tenant_key , t.update_time , t.fail_reason + , t.data_id @@ -106,6 +108,7 @@ , t.tenant_key , t.update_time , t.fail_reason as failReason + , t.data_id as dataId , e.LASTNAME as username FROM hrsa_push_record_detail t left join hrsa_salary_acct_emp emp @@ -179,6 +182,9 @@ fail_reason, + + data_id, + @@ -214,6 +220,9 @@ #{failReason}, + + #{dataId}, + @@ -231,6 +240,7 @@ tenant_key=#{tenantKey}, update_time=#{updateTime}, fail_reason=#{failReason}, + data_id=#{dataId}, WHERE id = #{id} AND delete_type = 0 @@ -270,6 +280,9 @@ fail_reason=#{failReason}, + + data_id=#{dataId}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/service/PushService.java b/src/com/engine/salary/service/PushService.java index 975cb77de..59a6f311d 100644 --- a/src/com/engine/salary/service/PushService.java +++ b/src/com/engine/salary/service/PushService.java @@ -60,6 +60,8 @@ public interface PushService { void createPushRecord(Long salaryAcctRecordId); + void withdrawPushRecord(Long salaryAcctRecordId); + void push(Long id); void withdraw(Long id); diff --git a/src/com/engine/salary/service/impl/PushServiceImpl.java b/src/com/engine/salary/service/impl/PushServiceImpl.java index bb6f172b0..fd1d7ec4d 100644 --- a/src/com/engine/salary/service/impl/PushServiceImpl.java +++ b/src/com/engine/salary/service/impl/PushServiceImpl.java @@ -401,10 +401,16 @@ public class PushServiceImpl extends Service implements PushService { } //开始 - startBatchPush(recordIds); + recordIds.forEach(this::push); } + @Override + public void withdrawPushRecord(Long salaryAcctRecordId) { + List pushRecordPOS = getPushRecordMapper().listSome(PushRecordPO.builder().acctRecordId(salaryAcctRecordId).status(PushRecordStatusEnum.RUN_SUCCESS.getValue()).build()); + pushRecordPOS.stream().map(PushRecordPO::getId).forEach(this::withdraw); + } + @Override public void push(Long id) { //待推送 @@ -421,22 +427,29 @@ public class PushServiceImpl extends Service implements PushService { try { String execute = pushRecordDetailPO.getExecute(); RecordSet rs = new RecordSet(); - rs.execute(execute); - //建模需要权限重构 - Integer modeId = pushRecordPO.getModeId(); - if (modeId != null) { - String tableName = pushRecordPO.getTableName(); - rs.executeQuery("select max(id) from " + tableName); - int mainId = 0; - if (rs.next()) { - mainId = rs.getInt(1); - } - ModeRightInfo ModeRightInfo = new ModeRightInfo(); - ModeRightInfo.setNewRight(true); - ModeRightInfo.editModeDataShare(1, modeId, mainId); - } + boolean success = rs.execute(execute); + if (success) { + //建模需要权限重构 + Integer modeId = pushRecordPO.getModeId(); + if (modeId != null) { + String tableName = pushRecordPO.getTableName(); + rs.executeQuery("select max(id) from " + tableName); + int mainId = 0; + if (rs.next()) { + mainId = rs.getInt(1); + } + ModeRightInfo ModeRightInfo = new ModeRightInfo(); + ModeRightInfo.setNewRight(true); + ModeRightInfo.editModeDataShare(1, modeId, mainId); - pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.SUCCESS.getValue()); + //记录数据id + pushRecordDetailPO.setDataId((long) mainId); + } + pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.SUCCESS.getValue()); + } else { + pushRecordDetailPO.setFailReason("sql执行失败"); + pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.FAIL.getValue()); + } } catch (Exception e) { pushRecordDetailPO.setFailReason(e.getMessage()); pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.FAIL.getValue()); @@ -462,31 +475,25 @@ public class PushServiceImpl extends Service implements PushService { pushRecordPO.setStartTime(new Date()); pushRecordPO.setStatus(PushRecordStatusEnum.WITHDRAW.getValue()); getPushRecordMapper().updateIgnoreNull(pushRecordPO); + + PushSettingPO pushSettingPO = getPushSettingMapper().getById(pushRecordPO.getSettingId()); + String tableName = pushSettingPO.getTableName(); + List pushRecordDetailPOS = getPushRecordDetailMapper().listSome(PushRecordDetailPO.builder().recordId(pushRecordPO.getId()).build()); pushRecordDetailPOS.forEach(pushRecordDetailPO -> { - try { - String execute = pushRecordDetailPO.getExecute(); RecordSet rs = new RecordSet(); - rs.execute(execute); - //建模需要权限重构 - Integer modeId = pushRecordPO.getModeId(); - if (modeId != null) { - String tableName = pushRecordPO.getTableName(); - rs.executeQuery("select max(id) from " + tableName); - int mainId = 0; - if (rs.next()) { - mainId = rs.getInt(1); - } - ModeRightInfo ModeRightInfo = new ModeRightInfo(); - ModeRightInfo.setNewRight(true); - ModeRightInfo.editModeDataShare(1, modeId, mainId); + String sql = String.format("delete from %s where id = %s", tableName, pushRecordDetailPO.getDataId()); + boolean execute = rs.execute(sql); + if (execute) { + pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.WITHDRAW_SUCCESS.getValue()); + } else { + pushRecordDetailPO.setFailReason("sql执行失败"); + pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.WITHDRAW_FAIL.getValue()); } - - pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.SUCCESS.getValue()); } catch (Exception e) { pushRecordDetailPO.setFailReason(e.getMessage()); - pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.FAIL.getValue()); + pushRecordDetailPO.setStatus(PushRecordDetailStatusEnum.WITHDRAW_FAIL.getValue()); } getPushRecordDetailMapper().updateIgnoreNull(pushRecordDetailPO); }); @@ -500,15 +507,6 @@ public class PushServiceImpl extends Service implements PushService { getPushRecordMapper().updateIgnoreNull(pushRecordPO); } - /** - * 启动推送 - * - * @param recordIds - */ - private void startBatchPush(List recordIds) { - recordIds.forEach(this::push); - } - @Override public void removeRecords(List recordIds) { diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index 4ac2e690f..c451f0f67 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -543,7 +543,7 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe getSalaryStatisticsReportService(user).removeReportCache(); - //获取推送配置 + //开始推送数据 getPushService(user).createPushRecord(salaryAcctRecordId); @@ -570,6 +570,9 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe // 重新核算 reCalcOrBackCalc(salaryAcctRecordPO, true); + //开始推送数据 + getPushService(user).withdrawPushRecord(salaryAcctRecordId); + // // 查询税款所在年的该个税扣缴义务人所有薪资核算记录 // // 获取账套所属个税扣缴义务人的核算记录 From c32dab5562a6b1ad323222c8ae18aca3bbbaf580 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 7 Apr 2025 13:50:34 +0800 Subject: [PATCH 20/22] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=92=A4=E5=9B=9E?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/PushServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/com/engine/salary/service/impl/PushServiceImpl.java b/src/com/engine/salary/service/impl/PushServiceImpl.java index fd1d7ec4d..ac7a8902e 100644 --- a/src/com/engine/salary/service/impl/PushServiceImpl.java +++ b/src/com/engine/salary/service/impl/PushServiceImpl.java @@ -408,6 +408,9 @@ public class PushServiceImpl extends Service implements PushService { @Override public void withdrawPushRecord(Long salaryAcctRecordId) { List pushRecordPOS = getPushRecordMapper().listSome(PushRecordPO.builder().acctRecordId(salaryAcctRecordId).status(PushRecordStatusEnum.RUN_SUCCESS.getValue()).build()); + if (CollUtil.isEmpty(pushRecordPOS)) { + return; + } pushRecordPOS.stream().map(PushRecordPO::getId).forEach(this::withdraw); } From c04dad0c4dcc77d3a2e7965599cdc5bb94fb4177 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 9 Apr 2025 14:23:38 +0800 Subject: [PATCH 21/22] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202411190103.sql | 2 +- resource/sqlupgrade/GS/sql202411190103.sql | 2 +- resource/sqlupgrade/JC/sql202411190103.sql | 2 +- resource/sqlupgrade/Mysql/sql202411190103.sql | 2 +- .../sqlupgrade/Oracle/sql202411190103.sql | 2 +- resource/sqlupgrade/PG/sql202411190103.sql | 2 +- .../sqlupgrade/SQLServer/sql202411190103.sql | 2 +- resource/sqlupgrade/ST/sql202411190103.sql | 2 +- .../entity/push/po/PushRecordDetailPO.java | 2 +- .../mapper/push/PushRecordDetailMapper.xml | 24 +++++++++---------- .../salary/service/impl/PushServiceImpl.java | 6 ++--- 11 files changed, 24 insertions(+), 24 deletions(-) diff --git a/resource/sqlupgrade/DM/sql202411190103.sql b/resource/sqlupgrade/DM/sql202411190103.sql index 1ed27c6fd..1d13e52dd 100644 --- a/resource/sqlupgrade/DM/sql202411190103.sql +++ b/resource/sqlupgrade/DM/sql202411190103.sql @@ -57,7 +57,7 @@ CREATE TABLE hrsa_push_record_detail id NUMBER(38,0) NOT NULL, record_id NUMBER(38,0), acct_emp_id NUMBER(38,0), - execute CLOB, + formula CLOB, execute_time date, status number, creator NUMBER(38,0), diff --git a/resource/sqlupgrade/GS/sql202411190103.sql b/resource/sqlupgrade/GS/sql202411190103.sql index 1ed27c6fd..1d13e52dd 100644 --- a/resource/sqlupgrade/GS/sql202411190103.sql +++ b/resource/sqlupgrade/GS/sql202411190103.sql @@ -57,7 +57,7 @@ CREATE TABLE hrsa_push_record_detail id NUMBER(38,0) NOT NULL, record_id NUMBER(38,0), acct_emp_id NUMBER(38,0), - execute CLOB, + formula CLOB, execute_time date, status number, creator NUMBER(38,0), diff --git a/resource/sqlupgrade/JC/sql202411190103.sql b/resource/sqlupgrade/JC/sql202411190103.sql index 1ed27c6fd..1d13e52dd 100644 --- a/resource/sqlupgrade/JC/sql202411190103.sql +++ b/resource/sqlupgrade/JC/sql202411190103.sql @@ -57,7 +57,7 @@ CREATE TABLE hrsa_push_record_detail id NUMBER(38,0) NOT NULL, record_id NUMBER(38,0), acct_emp_id NUMBER(38,0), - execute CLOB, + formula CLOB, execute_time date, status number, creator NUMBER(38,0), diff --git a/resource/sqlupgrade/Mysql/sql202411190103.sql b/resource/sqlupgrade/Mysql/sql202411190103.sql index 98b55261c..fdfc32280 100644 --- a/resource/sqlupgrade/Mysql/sql202411190103.sql +++ b/resource/sqlupgrade/Mysql/sql202411190103.sql @@ -59,7 +59,7 @@ CREATE TABLE hrsa_push_record_detail id bigint(0) NOT NULL, record_id bigint(0), acct_emp_id bigint(0), - execute text, + formula text, execute_time datetime(0), status int(0), creator bigint(0), diff --git a/resource/sqlupgrade/Oracle/sql202411190103.sql b/resource/sqlupgrade/Oracle/sql202411190103.sql index 27e5d3cc9..09f3ee1bd 100644 --- a/resource/sqlupgrade/Oracle/sql202411190103.sql +++ b/resource/sqlupgrade/Oracle/sql202411190103.sql @@ -59,7 +59,7 @@ CREATE TABLE hrsa_push_record_detail id NUMBER(38,0) NOT NULL, record_id NUMBER(38,0), acct_emp_id NUMBER(38,0), - execute CLOB, + formula CLOB, execute_time date, status number, creator NUMBER(38,0), diff --git a/resource/sqlupgrade/PG/sql202411190103.sql b/resource/sqlupgrade/PG/sql202411190103.sql index 0e2ba412e..5f4272388 100644 --- a/resource/sqlupgrade/PG/sql202411190103.sql +++ b/resource/sqlupgrade/PG/sql202411190103.sql @@ -59,7 +59,7 @@ CREATE TABLE hrsa_push_record_detail id bigint NOT NULL, record_id bigint, acct_emp_id bigint, - execute text, + formula text, execute_time timestamp, status int, creator bigint, diff --git a/resource/sqlupgrade/SQLServer/sql202411190103.sql b/resource/sqlupgrade/SQLServer/sql202411190103.sql index fd993c777..dd06040a8 100644 --- a/resource/sqlupgrade/SQLServer/sql202411190103.sql +++ b/resource/sqlupgrade/SQLServer/sql202411190103.sql @@ -62,7 +62,7 @@ CREATE TABLE hrsa_push_record_detail id bigint NOT NULL, record_id bigint, acct_emp_id bigint, - execute text, + formula text, execute_time datetime, status int, creator bigint, diff --git a/resource/sqlupgrade/ST/sql202411190103.sql b/resource/sqlupgrade/ST/sql202411190103.sql index 1ed27c6fd..1d13e52dd 100644 --- a/resource/sqlupgrade/ST/sql202411190103.sql +++ b/resource/sqlupgrade/ST/sql202411190103.sql @@ -57,7 +57,7 @@ CREATE TABLE hrsa_push_record_detail id NUMBER(38,0) NOT NULL, record_id NUMBER(38,0), acct_emp_id NUMBER(38,0), - execute CLOB, + formula CLOB, execute_time date, status number, creator NUMBER(38,0), diff --git a/src/com/engine/salary/entity/push/po/PushRecordDetailPO.java b/src/com/engine/salary/entity/push/po/PushRecordDetailPO.java index f971532e6..88308a8b6 100644 --- a/src/com/engine/salary/entity/push/po/PushRecordDetailPO.java +++ b/src/com/engine/salary/entity/push/po/PushRecordDetailPO.java @@ -56,7 +56,7 @@ public class PushRecordDetailPO { * 执行sql */ @ElogTransform(name = "执行sql") - private String execute; + private String formula; /** * 创建时间 diff --git a/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml b/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml index bdbee38fc..73220be28 100644 --- a/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml +++ b/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml @@ -6,7 +6,7 @@ - + @@ -24,7 +24,7 @@ , t.create_time , t.creator , t.delete_type - , t.execute + , t.formula , t.id , t.record_id , t.status @@ -68,8 +68,8 @@ AND delete_type = #{deleteType} - - AND execute = #{execute} + + AND formula = #{formula} AND id = #{id} @@ -101,7 +101,7 @@ , t.create_time , t.creator , t.delete_type - , t.execute + , t.formula , t.id , t.record_id , t.status @@ -161,8 +161,8 @@ delete_type, - - execute, + + formula, id, @@ -199,8 +199,8 @@ #{deleteType}, - - #{execute}, + + #{formula}, #{id}, @@ -234,7 +234,7 @@ create_time=#{createTime}, creator=#{creator}, delete_type=#{deleteType}, - execute=#{execute}, + formula=#{formula}, record_id=#{recordId}, status=#{status}, tenant_key=#{tenantKey}, @@ -262,8 +262,8 @@ delete_type=#{deleteType}, - - execute=#{execute}, + + formula=#{formula}, record_id=#{recordId}, diff --git a/src/com/engine/salary/service/impl/PushServiceImpl.java b/src/com/engine/salary/service/impl/PushServiceImpl.java index ac7a8902e..cf01efde8 100644 --- a/src/com/engine/salary/service/impl/PushServiceImpl.java +++ b/src/com/engine/salary/service/impl/PushServiceImpl.java @@ -378,7 +378,7 @@ public class PushServiceImpl extends Service implements PushService { .acctEmpId(emp.getId()) .recordId(record.getId()) .status(PushRecordDetailStatusEnum.PREPARE.getValue()) - .execute(sql) + .formula(sql) .createTime(now) .updateTime(now) .creator((long) user.getUID()) @@ -428,9 +428,9 @@ public class PushServiceImpl extends Service implements PushService { pushRecordDetailPOS.forEach(pushRecordDetailPO -> { try { - String execute = pushRecordDetailPO.getExecute(); + String formula = pushRecordDetailPO.getFormula(); RecordSet rs = new RecordSet(); - boolean success = rs.execute(execute); + boolean success = rs.execute(formula); if (success) { //建模需要权限重构 Integer modeId = pushRecordPO.getModeId(); From 0bcafd39344f889003338d37afb0fe4d9a2f9ef7 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 9 Apr 2025 17:20:48 +0800 Subject: [PATCH 22/22] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=AA=E7=A8=8E?= =?UTF-8?q?=E7=94=B3=E6=8A=A5=20=E4=B8=8D=E5=90=8C=E7=A8=8E=E6=AC=BE?= =?UTF-8?q?=E6=89=80=E5=B1=9E=E6=9C=9F=E6=A0=A1=E9=AA=8Cbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml | 3 +++ .../engine/salary/service/impl/TaxDeclarationServiceImpl.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml index 243855ec1..12d7e6c4a 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml @@ -143,6 +143,9 @@ AND t.tax_cycle #{taxCycleDateRange.endDate} + + AND sob.tax_agent_id = #{taxAgentId} + ORDER BY t.id DESC