From 68467fbe4650d2f325f05394f6d44fcd99bfa4b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 27 Jun 2024 11:19:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E4=BD=9C=E5=BA=9F=E7=94=B3?= =?UTF-8?q?=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CancelDeclareFeedbackResponse.java | 7 +--- .../remote/tax/client/DeclareClient.java | 23 ++++++++--- .../service/TaxDeclareRecordService.java | 2 +- .../impl/TaxDeclareRecordServiceImpl.java | 40 ++++++++++--------- .../wrapper/TaxDeclareRecordWrapper.java | 2 +- 5 files changed, 42 insertions(+), 32 deletions(-) diff --git a/src/com/engine/salary/entity/taxdeclaration/response/CancelDeclareFeedbackResponse.java b/src/com/engine/salary/entity/taxdeclaration/response/CancelDeclareFeedbackResponse.java index 564edd0b7..d22edac56 100644 --- a/src/com/engine/salary/entity/taxdeclaration/response/CancelDeclareFeedbackResponse.java +++ b/src/com/engine/salary/entity/taxdeclaration/response/CancelDeclareFeedbackResponse.java @@ -1,6 +1,6 @@ package com.engine.salary.entity.taxdeclaration.response; -import com.engine.salary.entity.taxagent.response.SzyhResponseHead; +import com.engine.salary.entity.taxpayment.response.BaseResponse; import lombok.Data; import java.util.Map; @@ -14,10 +14,7 @@ import java.util.Map; * @version 1.0 **/ @Data -public class CancelDeclareFeedbackResponse { - - //接口状态") - private SzyhResponseHead head; +public class CancelDeclareFeedbackResponse extends BaseResponse { //接口状态") private Map body; diff --git a/src/com/engine/salary/remote/tax/client/DeclareClient.java b/src/com/engine/salary/remote/tax/client/DeclareClient.java index 33a5e6be0..4049eb679 100644 --- a/src/com/engine/salary/remote/tax/client/DeclareClient.java +++ b/src/com/engine/salary/remote/tax/client/DeclareClient.java @@ -1,6 +1,7 @@ package com.engine.salary.remote.tax.client; import com.engine.salary.constant.SzyhApiConstant; +import com.engine.salary.entity.taxdeclaration.response.CancelDeclareFeedbackResponse; import com.engine.salary.entity.taxdeclaration.response.UpdateDeclareResponse; import lombok.extern.slf4j.Slf4j; @@ -16,24 +17,34 @@ import java.util.Map; * @version 1.0 **/ @Slf4j -public class DeclareClient extends TaxBaseClient{ +public class DeclareClient extends TaxBaseClient { public DeclareClient(Long taxAgentId) { super(taxAgentId); } + public CancelDeclareFeedbackResponse cancel(Map requestParam, Map responseParam) { + String url = apiConfig.getHost() + SzyhApiConstant.CANCEL_DECLARE; + String requestId = request(url, requestParam); + + String feedbackUrl = apiConfig.getHost() + SzyhApiConstant.CANCEL_DECLARE_FEEDBACK; + responseParam.put("requestId", requestId); + return response(feedbackUrl, responseParam, CancelDeclareFeedbackResponse.class); + } + /** * 更正申报 + * * @param requestParam */ - public UpdateDeclareResponse correct(Map requestParam){ + public UpdateDeclareResponse correct(Map requestParam) { String url = apiConfig.getHost() + SzyhApiConstant.UPDATE_DECLARE; String requestId = request(url, requestParam); - String feedbackUrl = apiConfig.getHost() + SzyhApiConstant.UPDATE_DECLARE_FEEDBACK; - Map map = new HashMap<>(1); - map.put("requestId", requestId); - return response(feedbackUrl, map, UpdateDeclareResponse.class); + String feedbackUrl = apiConfig.getHost() + SzyhApiConstant.UPDATE_DECLARE_FEEDBACK; + Map responseParam = new HashMap<>(1); + responseParam.put("requestId", requestId); + return response(feedbackUrl, responseParam, UpdateDeclareResponse.class); } } diff --git a/src/com/engine/salary/service/TaxDeclareRecordService.java b/src/com/engine/salary/service/TaxDeclareRecordService.java index 0af1b0767..35b387f7b 100644 --- a/src/com/engine/salary/service/TaxDeclareRecordService.java +++ b/src/com/engine/salary/service/TaxDeclareRecordService.java @@ -136,7 +136,7 @@ public interface TaxDeclareRecordService { * * @param id */ - void cancelDeclare(Long id, Integer reportType); + void cancelDeclare(Long id, Integer reportType,TaxDeclarationRateDTO taxDeclarationRate); /** * 获取作废反馈 diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index 8047f6783..25bcdfcaf 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -873,9 +873,10 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe } @Override - public void cancelDeclare(Long id, Integer reportType) { + public void cancelDeclare(Long id, Integer reportType, TaxDeclarationRateDTO taxDeclarationRate) { TaxDeclareRequest taxDeclareRequest = buildTaxDeclareRequest(id); TaxDeclareRecordPO taxDeclareRecord = taxDeclareRequest.getTaxDeclareRecord(); + Long taxAgentId = taxDeclareRecord.getTaxAgentId(); TaxDeclareStatusPO declareStatus = getTaxDeclareStatusService(user).getTaxDeclareStatus(id, reportType); // 更正申报成功后不能作废 @@ -886,8 +887,6 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe if (!Objects.equals(declareStatus.getTaxDeclareStatus(), TaxDeclareStatusEnum.DECLARE_SUCCESS_NO_PAY.getValue()) && !Objects.equals(declareStatus.getTaxDeclareStatus(), TaxDeclareStatusEnum.DECLARE_SUCCESS_UNPAID.getValue())) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156497, "只有申报成功,无需缴款/申报成功,未缴款的状态才能作废")); } - // 供应商信息 - TaxDeclarationApiConfigPO apiConfig = taxDeclareRequest.getTaxDeclarationApiConfig(); // 注册的企业信息-->请求参数 Map requestParam = taxDeclareRequest.getRequestParam(); // 税款所属期 @@ -895,26 +894,29 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe // 申报类型 requestParam.put("sblx", reportType + ""); // 作废银联缴款凭证 -// taxPaymentServiceFactory.get(TaxPaymentServiceTypeEnum.WITHHOLDING_VOUCHER.getValue()).cancelWithholdingVoucher(apiConfig, taxDeclareRecord, requestParam); +// ServiceUtil.getService(TaxPaymentWithholdingVoucherServiceImpl.class, user).cancelWithholdingVoucher(apiConfig, taxDeclareRecord, requestParam); // 是否清空所得 requestParam.put("sfqksd", "0"); - // 请求 - String reqJson = JsonUtil.toJsonString(requestParam); - String url = apiConfig.getHost() + SzyhApiConstant.CANCEL_DECLARE; - 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("作废申报返回数据:" + res); - DeclareTaxResponse declareTaxResponse = JsonUtil.parseObject(res, DeclareTaxResponse.class); - if (Objects.isNull(declareTaxResponse) || Objects.isNull(declareTaxResponse.getHead())) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156449, "服务异常")); + + Map responseParam = new HashMap<>(); + responseParam.put("reportType",reportType + ""); + DeclareClient declareClient = new DeclareClient(taxAgentId); + CancelDeclareFeedbackResponse cancelDeclareFeedbackResponse = declareClient.cancel(requestParam,responseParam); + + // 作废是否成功 + CancelDeclareStatusEnum cancelDeclareStatusEnum = SalaryEnumUtil.enumMatchByValue(SalaryEntityUtil.getIntValue(cancelDeclareFeedbackResponse.getBody().get("fkztbj"), 10), CancelDeclareStatusEnum.class); + if (cancelDeclareStatusEnum == CancelDeclareStatusEnum.CANCEL_FAIL) { + String feedbackBody = Util.null2String(cancelDeclareFeedbackResponse.getBody().get("fknr")).replace("\\", ""); + List errorMsgList = JsonUtil.parseList(feedbackBody, Map.class).stream().map(e -> Util.null2String(e.get("msg"))).collect(Collectors.toList()); + taxDeclarationRate.setStatus(false).setMsg(SalaryI18nUtil.getI18nLabel(156508, "作废失败:") + StringUtils.join(errorMsgList, ",")); } - if (!Objects.equals(declareTaxResponse.getHead().getCode(), SzyhApiConstant.SUCCESS_CODE)) { - throw new SalaryRunTimeException(declareTaxResponse.getHead().getMsg()); + TaxDeclareStatusEnum taxDeclareStatusEnum = SalaryEnumUtil.enumMatchByValue(SalaryEntityUtil.getIntValue(cancelDeclareFeedbackResponse.getBody().get("sbztbj"), 1), TaxDeclareStatusEnum.class); + if (taxDeclareStatusEnum == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156509, "服务异常,接口返回数据有误")); } - // 更新个税申报状态 - declareStatus.setTaxDeclareStatus(TaxDeclareStatusEnum.DECLARE_CANCELLING.getValue()); - declareStatus.setRequestId(declareTaxResponse.getBody().getRequestId()); + + //更新个税申报状态 + declareStatus.setTaxDeclareStatus(taxDeclareStatusEnum.getValue()); getTaxDeclareStatusService(user).updateTaxDeclareStatus(declareStatus, true); // 记录日志 diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index 31a03fa2f..a288693c7 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -523,7 +523,7 @@ public class TaxDeclareRecordWrapper extends Service { @Override public void execute() { try { - getTaxDeclareRecordService(user).cancelDeclare(id, param.getReportType()); + getTaxDeclareRecordService(user).cancelDeclare(id, param.getReportType(),taxDeclarationRate); taxDeclarationRate.setFinish(true); } catch (SalaryRunTimeException e) { taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage());