升级作废申报

This commit is contained in:
钱涛 2024-06-27 11:19:34 +08:00
parent 65fcfb8fac
commit 68467fbe46
5 changed files with 42 additions and 32 deletions

View File

@ -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<String, Object> body;

View File

@ -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<String, Object> requestParam, Map<String, String> 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<String, Object> requestParam){
public UpdateDeclareResponse correct(Map<String, Object> requestParam) {
String url = apiConfig.getHost() + SzyhApiConstant.UPDATE_DECLARE;
String requestId = request(url, requestParam);
String feedbackUrl = apiConfig.getHost() + SzyhApiConstant.UPDATE_DECLARE_FEEDBACK;
Map<String, String> map = new HashMap<>(1);
map.put("requestId", requestId);
return response(feedbackUrl, map, UpdateDeclareResponse.class);
String feedbackUrl = apiConfig.getHost() + SzyhApiConstant.UPDATE_DECLARE_FEEDBACK;
Map<String, String> responseParam = new HashMap<>(1);
responseParam.put("requestId", requestId);
return response(feedbackUrl, responseParam, UpdateDeclareResponse.class);
}
}

View File

@ -136,7 +136,7 @@ public interface TaxDeclareRecordService {
*
* @param id
*/
void cancelDeclare(Long id, Integer reportType);
void cancelDeclare(Long id, Integer reportType,TaxDeclarationRateDTO taxDeclarationRate);
/**
* 获取作废反馈

View File

@ -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<String, Object> 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<String, String> params = new HashMap<>(1);
Map<String, String> header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret());
String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE);
log.info("作废申报返回数据:" + res);
DeclareTaxResponse declareTaxResponse = JsonUtil.parseObject(res, DeclareTaxResponse.class);
if (Objects.isNull(declareTaxResponse) || Objects.isNull(declareTaxResponse.getHead())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156449, "服务异常"));
Map<String, String> 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<String> 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);
// 记录日志

View File

@ -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());