diff --git a/resource/sqlupgrade/DM/sql202406260403.sql b/resource/sqlupgrade/DM/sql202406260403.sql new file mode 100644 index 000000000..f27cbf3c4 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202406260403.sql @@ -0,0 +1,14 @@ +create table hrsa_api_task_record +( + id number primary key , + source varchar2(500) , + api varchar2(500), + param clob , + response clob, + create_time date, + update_time date, + delete_type int default 0, + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/GS/sql202406260403.sql b/resource/sqlupgrade/GS/sql202406260403.sql new file mode 100644 index 000000000..f27cbf3c4 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202406260403.sql @@ -0,0 +1,14 @@ +create table hrsa_api_task_record +( + id number primary key , + source varchar2(500) , + api varchar2(500), + param clob , + response clob, + create_time date, + update_time date, + delete_type int default 0, + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/JC/sql202406260403.sql b/resource/sqlupgrade/JC/sql202406260403.sql new file mode 100644 index 000000000..f27cbf3c4 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202406260403.sql @@ -0,0 +1,14 @@ +create table hrsa_api_task_record +( + id number primary key , + source varchar2(500) , + api varchar2(500), + param clob , + response clob, + create_time date, + update_time date, + delete_type int default 0, + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202406260403.sql b/resource/sqlupgrade/Mysql/sql202406260403.sql new file mode 100644 index 000000000..4a8a4b313 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202406260403.sql @@ -0,0 +1,12 @@ +CREATE TABLE hrsa_api_task_record ( + id bigint(0) NOT NULL , + source varchar(500) , + api varchar(500), + param text , + response text, + tenant_key varchar(255) , + delete_type int(0) , + create_time datetime(0), + update_time datetime(0), + PRIMARY KEY (id) USING BTREE +); \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202406260403.sql b/resource/sqlupgrade/Oracle/sql202406260403.sql new file mode 100644 index 000000000..610ce393c --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202406260403.sql @@ -0,0 +1,13 @@ +create table hrsa_api_task_record +( + id number primary key , + source varchar2(500) , + api varchar2(500), + param clob , + response clob, + create_time date, + update_time date, + delete_type int default 0, + tenant_key varchar2(10) +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202406260403.sql b/resource/sqlupgrade/PG/sql202406260403.sql new file mode 100644 index 000000000..45102625b --- /dev/null +++ b/resource/sqlupgrade/PG/sql202406260403.sql @@ -0,0 +1,13 @@ +create table hrsa_api_task_record +( + id bigint primary key , + source varchar(500) , + api varchar(500), + param text , + response text, + create_time timestamp, + update_time timestamp, + delete_type int default 0, + tenant_key varchar(10) +); +/ \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202406260403.sql b/resource/sqlupgrade/SQLServer/sql202406260403.sql new file mode 100644 index 000000000..dd1b5701c --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202406260403.sql @@ -0,0 +1,13 @@ +create table hrsa_api_task_record +( + id bigint primary key , + source varchar(500) , + api varchar(500), + param ntext , + response ntext, + create_time datetime, + update_time datetime, + delete_type int default 0, + tenant_key nvarchar(10) +) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202406260403.sql b/resource/sqlupgrade/ST/sql202406260403.sql new file mode 100644 index 000000000..f27cbf3c4 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202406260403.sql @@ -0,0 +1,14 @@ +create table hrsa_api_task_record +( + id number primary key , + source varchar2(500) , + api varchar2(500), + param clob , + response clob, + create_time date, + update_time date, + delete_type int default 0, + tenant_key varchar2(10) +); +/ + diff --git a/src/com/engine/salary/entity/api/ApiTaskRecordPO.java b/src/com/engine/salary/entity/api/ApiTaskRecordPO.java new file mode 100644 index 000000000..dbb45bf9d --- /dev/null +++ b/src/com/engine/salary/entity/api/ApiTaskRecordPO.java @@ -0,0 +1,63 @@ +package com.engine.salary.entity.api; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ApiTaskRecordPO { + + /** + * 主键id + */ + private Long id; + + /** + * 来源 + */ + private String source; + + /** + * api操作 + */ + private String api; + + /** + * 参数 + */ + private String param; + /** + * 反馈 + */ + private String response; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 创建时间 + */ + private Date createTime; + /** + * 是否删除 + */ + 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/taxagent/response/CheckPasswordResponse.java b/src/com/engine/salary/entity/taxagent/response/CheckPasswordResponse.java index c4a21e6f6..a58fa44e5 100644 --- a/src/com/engine/salary/entity/taxagent/response/CheckPasswordResponse.java +++ b/src/com/engine/salary/entity/taxagent/response/CheckPasswordResponse.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.taxagent.response; +import com.engine.salary.entity.taxpayment.response.BaseResponse; import lombok.Data; /** @@ -11,11 +12,7 @@ import lombok.Data; * @version 1.0 **/ @Data -public class CheckPasswordResponse { - /** - * 接口状态 - */ - private SzyhResponseHead head; +public class CheckPasswordResponse extends BaseResponse { /** * 返回数据 */ diff --git a/src/com/engine/salary/entity/taxagent/response/CompanyRegisterInfoResponse.java b/src/com/engine/salary/entity/taxagent/response/CompanyRegisterInfoResponse.java index f0ff1c84f..4081c546e 100644 --- a/src/com/engine/salary/entity/taxagent/response/CompanyRegisterInfoResponse.java +++ b/src/com/engine/salary/entity/taxagent/response/CompanyRegisterInfoResponse.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.taxagent.response; +import com.engine.salary.entity.taxpayment.response.BaseResponse; import lombok.Data; import java.util.List; @@ -13,11 +14,8 @@ import java.util.List; * @version 1.0 **/ @Data -public class CompanyRegisterInfoResponse { - /** - * 接口状态 - */ - private SzyhResponseHead head; +public class CompanyRegisterInfoResponse extends BaseResponse { + /** * 返回数据 */ diff --git a/src/com/engine/salary/mapper/api/ApiTaskRecordMapper.java b/src/com/engine/salary/mapper/api/ApiTaskRecordMapper.java new file mode 100644 index 000000000..efb1db4d7 --- /dev/null +++ b/src/com/engine/salary/mapper/api/ApiTaskRecordMapper.java @@ -0,0 +1,72 @@ +package com.engine.salary.mapper.api; + +import com.engine.salary.entity.api.ApiTaskRecordPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface ApiTaskRecordMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(ApiTaskRecordPO apiTaskRecord); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + ApiTaskRecordPO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param apiTaskRecord 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(ApiTaskRecordPO apiTaskRecord); + + /** + * 修改,修改所有字段 + * + * @param apiTaskRecord 修改的记录 + * @return 返回影响行数 + */ + int update(ApiTaskRecordPO apiTaskRecord); + + /** + * 修改,忽略null字段 + * + * @param apiTaskRecord 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(ApiTaskRecordPO apiTaskRecord); + + /** + * 删除记录 + * + * @param apiTaskRecord 待删除的记录 + * @return 返回影响行数 + */ + int delete(ApiTaskRecordPO apiTaskRecord); + + /** + * 批量删除记录 + * @param ids 主键id集合 + */ + void deleteByIds(@Param("ids") Collection ids); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/api/ApiTaskRecordMapper.xml b/src/com/engine/salary/mapper/api/ApiTaskRecordMapper.xml new file mode 100644 index 000000000..55eb613d8 --- /dev/null +++ b/src/com/engine/salary/mapper/api/ApiTaskRecordMapper.xml @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + t + . + api + , t.create_time + , t.delete_type + , t.id + , t.param + , t.response + , t.source + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_api_task_record + + + + api, + + + create_time, + + + delete_type, + + + id, + + + param, + + + response, + + + source, + + + tenant_key, + + + update_time, + + + + + #{api}, + + + #{createTime}, + + + #{deleteType}, + + + #{id}, + + + #{param}, + + + #{response}, + + + #{source}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + UPDATE hrsa_api_task_record + + api=#{api}, + create_time=#{createTime}, + delete_type=#{deleteType}, + param=#{param}, + response=#{response}, + source=#{source}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_api_task_record + + + api=#{api}, + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + param=#{param}, + + + response=#{response}, + + + source=#{source}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_api_task_record + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_api_task_record + 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/CompanyClient.java b/src/com/engine/salary/remote/tax/client/CompanyClient.java new file mode 100644 index 000000000..502f5db81 --- /dev/null +++ b/src/com/engine/salary/remote/tax/client/CompanyClient.java @@ -0,0 +1,40 @@ +package com.engine.salary.remote.tax.client; + +import com.engine.salary.constant.SzyhApiConstant; +import com.engine.salary.entity.taxagent.response.CheckPasswordResponse; +import com.engine.salary.entity.taxagent.response.CompanyRegisterInfoResponse; +import lombok.extern.slf4j.Slf4j; +import weaver.hrm.User; + +import java.util.HashMap; +import java.util.Map; + +@Slf4j +public class CompanyClient extends TaxBaseClient { + + + public CompanyClient(Long taxAgentId, User user) { + super(taxAgentId, user); + } + + public CompanyRegisterInfoResponse getCompanyRegisterInfo(Map requestParam) { + String url = apiConfig.getHost() + SzyhApiConstant.GET_REGISTER_INFO_URL; + String requestId = request(url, requestParam); + + String getRegisterInfoFeedbackUrl = apiConfig.getHost() + SzyhApiConstant.GET_REGISTER_INFO_FEEDBACK_URL; + Map map = new HashMap<>(1); + map.put("requestId", requestId); + return response(getRegisterInfoFeedbackUrl, map, CompanyRegisterInfoResponse.class); + } + + public CheckPasswordResponse checkPassword(Map requestParam) { + + String url = apiConfig.getHost() + SzyhApiConstant.CHECK_PASSWORD_URL; + String requestId = request(url, requestParam); + + String checkPasswordFeedbackUrl = apiConfig.getHost() + SzyhApiConstant.CHECK_PASSWORD_FEEDBACK_URL; + Map map = new HashMap<>(1); + map.put("requestId", requestId); + return response(checkPasswordFeedbackUrl, map, CheckPasswordResponse.class); + } +} diff --git a/src/com/engine/salary/remote/tax/client/TaxBaseClient.java b/src/com/engine/salary/remote/tax/client/TaxBaseClient.java index 1eae80e88..41a5f3cbf 100644 --- a/src/com/engine/salary/remote/tax/client/TaxBaseClient.java +++ b/src/com/engine/salary/remote/tax/client/TaxBaseClient.java @@ -1,12 +1,21 @@ package com.engine.salary.remote.tax.client; +import com.engine.salary.constant.SzyhApiConstant; +import com.engine.salary.remote.tax.response.RequestIdResponse; import com.engine.salary.entity.taxagent.po.TaxAgentTaxReturnPO; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationApiConfigPO; +import com.engine.salary.entity.taxpayment.response.BaseResponse; +import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.taxagent.TaxAgentTaxReturnMapper; import com.engine.salary.mapper.taxdeclaration.TaxDeclareApiConfigMapper; -import com.engine.salary.util.Sm4Utils; +import com.engine.salary.util.*; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; +import weaver.general.Util; +import weaver.hrm.User; + +import java.util.HashMap; +import java.util.Map; @Slf4j public class TaxBaseClient { @@ -20,8 +29,9 @@ public class TaxBaseClient { } public Long taxAgentId; - public TaxDeclarationApiConfigPO apiConfig ; - public TaxAgentTaxReturnPO returnPO ; + public User user; + public TaxDeclarationApiConfigPO apiConfig; + public TaxAgentTaxReturnPO returnPO; public TaxBaseClient(Long taxAgentId) { this.taxAgentId = taxAgentId; @@ -35,4 +45,61 @@ public class TaxBaseClient { } this.returnPO = taxReturnPO; } + + public TaxBaseClient(Long taxAgentId, User user) { + this.taxAgentId = taxAgentId; + this.apiConfig = getTaxDeclareApiConfigMapper().getOne(); + TaxAgentTaxReturnPO taxReturnPO = getTaxAgentTaxReturnMapper().selectOneByTaxAgentId(taxAgentId); + try { + // 密码解密 + taxReturnPO.setPwd(Sm4Utils.decryptEcb(apiConfig.getAppSecret(), taxReturnPO.getPwd())); + } catch (Exception e) { + log.error("Sm4Utils.decryptEcb ---- error: {}", e.getMessage()); + } + this.returnPO = taxReturnPO; + this.user = user; + } + + public String request(String url, Map requestParam) { + String reqJson = JsonUtil.toJsonString(requestParam); + Map header = SingnatureData.initHeader(new HashMap<>(1), apiConfig.getAppKey(), apiConfig.getAppSecret()); + String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); + //记录接口 + TaskUtil taskUtil = new TaskUtil(); + taskUtil.writeApiTaskRecord(Util.null2String(taxAgentId), url, reqJson, res); + + RequestIdResponse response = JsonUtil.parseObject(res, RequestIdResponse.class); + if (response == null || response.getHead() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, "服务异常,请稍后重试")); + } + if (!SzyhApiConstant.SUCCESS_CODE.equals(response.getHead().getCode()) || response.getBody() == null) { + // 如果返回错误 + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, response.getHead().getMsg())); + } + return response.getBody().getRequestId(); + } + + public T response(String url, Map param, Class clazz) { + TaskUtil taskUtil = new TaskUtil(); + T response = null; + for (int i = 0; i < 5; i++) { + Map header = SingnatureData.initHeader(new HashMap<>(1), apiConfig.getAppKey(), apiConfig.getAppSecret()); + String res = HttpUtil.getRequest(url, header, param); + response = JsonUtil.parseBean(res, clazz); + //记录接口 + taskUtil.writeApiTaskRecord(Util.null2String(taxAgentId), url, JsonUtil.toJsonString(param), res); + // 如果税友返回错误信息 + String code = response.getHead().getCode(); + if (SzyhApiConstant.HANDLING_CODE.equals(code)) { + try { + Thread.sleep(5 * 1000); + } catch (InterruptedException e) { + log.error("", e); + } + } else { + break; + } + } + return response; + } } diff --git a/src/com/engine/salary/entity/taxagent/response/GetRequestIdResponse.java b/src/com/engine/salary/remote/tax/response/RequestIdResponse.java similarity index 75% rename from src/com/engine/salary/entity/taxagent/response/GetRequestIdResponse.java rename to src/com/engine/salary/remote/tax/response/RequestIdResponse.java index f69bf8844..ef5505021 100644 --- a/src/com/engine/salary/entity/taxagent/response/GetRequestIdResponse.java +++ b/src/com/engine/salary/remote/tax/response/RequestIdResponse.java @@ -1,5 +1,6 @@ -package com.engine.salary.entity.taxagent.response; +package com.engine.salary.remote.tax.response; +import com.engine.salary.entity.taxagent.response.SzyhResponseHead; import lombok.Data; /** @@ -11,7 +12,7 @@ import lombok.Data; * @version 1.0 **/ @Data -public class GetRequestIdResponse { +public class RequestIdResponse { /** * 接口状态 */ diff --git a/src/com/engine/salary/service/ApiTaskService.java b/src/com/engine/salary/service/ApiTaskService.java new file mode 100644 index 000000000..bdf3ac137 --- /dev/null +++ b/src/com/engine/salary/service/ApiTaskService.java @@ -0,0 +1,7 @@ +package com.engine.salary.service; + +public interface ApiTaskService { + + void writeApiTaskRecord (String source,String api,String param,String response); + +} diff --git a/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java b/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java index 8698d8e26..9bfef4bbb 100644 --- a/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java +++ b/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java @@ -10,18 +10,16 @@ import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.entity.taxagent.po.TaxAgentTaxReturnPO; import com.engine.salary.entity.taxagent.response.CheckPasswordResponse; import com.engine.salary.entity.taxagent.response.CompanyRegisterInfoResponse; -import com.engine.salary.entity.taxagent.response.GetRequestIdResponse; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationApiConfigPO; import com.engine.salary.enums.SalaryOnOffEnum; import com.engine.salary.enums.taxagent.TaxAgentTaxReturnPasswordTypeEnum; import com.engine.salary.enums.taxagent.TaxAgentTaxReturnStatusEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.taxagent.TaxAgentTaxReturnMapper; -import com.engine.salary.service.TaxAgentService; -import com.engine.salary.service.TaxAgentTaxReturnCheckService; -import com.engine.salary.service.TaxAgentTaxReturnService; -import com.engine.salary.service.TaxDeclarationApiConfigService; -import com.engine.salary.util.*; +import com.engine.salary.remote.tax.client.CompanyClient; +import com.engine.salary.service.*; +import com.engine.salary.util.SalaryAssert; +import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; @@ -57,6 +55,10 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl return ServiceUtil.getService(TaxDeclarationApiConfigServiceImpl.class, user); } + protected ApiTaskService getApiTaskService(User user) { + return ServiceUtil.getService(ApiTaskServiceImpl.class, user); + } + /** * 获取验证类型 * @@ -83,9 +85,7 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl po.setUpdateTime(new Date()); // 如果税友返回错误信息 if (!SzyhApiConstant.SUCCESS_CODE.equals(response.getHead().getCode()) || CollectionUtils.isEmpty(response.getBody())) { - po.setCheckStatus(TaxAgentTaxReturnStatusEnum.FAIL.getValue()); - po.setFailReason(response.getHead().getMsg()); - return new ArrayList<>(); + throw new SalaryRunTimeException(response.getHead().getMsg()); } // 如果税友返回验证信息 List checkFormDTOList = buildCheckDTO(saveParam, response.getBody()); @@ -109,11 +109,11 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl * @return */ protected CompanyRegisterInfoResponse getCompanyRegisterInfo(TaxDeclarationApiConfigPO apiConfig, TaxAgentTaxReturnPO taxAgentTaxReturnPO, TaxAgentTaxReturnSaveParam saveParam) { - TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(taxAgentTaxReturnPO.getTaxAgentId()); + Long taxAgentId = taxAgentTaxReturnPO.getTaxAgentId(); + TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(taxAgentId); if (taxAgentPO == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100545, "个税扣缴义务人不存在")); } - String url = apiConfig.getHost() + SzyhApiConstant.GET_REGISTER_INFO_URL; Map requestParam = new HashMap<>(4); requestParam.put("bizNo", IdGenerator.generate()); requestParam.put("qymc", taxAgentPO.getName()); @@ -122,40 +122,11 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl if (StringUtils.isNotEmpty(saveParam.getTaxRegistrationNumber())) { requestParam.put("djxhid", saveParam.getTaxRegistrationNumber()); } - String reqJson = JsonUtil.toJsonString(requestParam); - 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("getCompanyRegisterInfo1 === params:{} === res : {}", reqJson, res); - GetRequestIdResponse getRequestIdResponse = JsonUtil.parseBean(res, GetRequestIdResponse.class); - if (getRequestIdResponse == null || getRequestIdResponse.getHead() == null) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, "服务异常,请稍后重试")); - } - taxAgentTaxReturnPO.setCheckStatus(TaxAgentTaxReturnStatusEnum.NOT_COMMIT.getValue()); - taxAgentTaxReturnPO.setUpdateTime(new Date()); - // 如果税友返回错误信息 - if (!SzyhApiConstant.SUCCESS_CODE.equals(getRequestIdResponse.getHead().getCode()) || getRequestIdResponse.getBody() == null) { - taxAgentTaxReturnPO.setCheckStatus(TaxAgentTaxReturnStatusEnum.FAIL.getValue()); - taxAgentTaxReturnPO.setFailReason(getRequestIdResponse.getHead().getMsg()); - return null; - } - try { - Thread.sleep(5 * 1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - String requestId = getRequestIdResponse.getBody().getRequestId(); - String getRegisterInfoFeedbackUrl = apiConfig.getHost() + SzyhApiConstant.GET_REGISTER_INFO_FEEDBACK_URL; - Map feedbackHeader = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); - Map map = new HashMap<>(1); - map.put("requestId", requestId); - String companyRegisterInfoResponseRes = HttpUtil.getRequest(getRegisterInfoFeedbackUrl, feedbackHeader, map); - log.info("getCompanyRegisterInfo2 === requestId:{} === res : {}", requestId, companyRegisterInfoResponseRes); - return JsonUtil.parseBean(companyRegisterInfoResponseRes, CompanyRegisterInfoResponse.class); + return new CompanyClient(taxAgentId, user).getCompanyRegisterInfo(requestParam); } + private List buildCheckDTO(TaxAgentTaxReturnSaveParam saveParam, List registerInfos) { List checkFormDTOList = new ArrayList<>(); for (int i = 1; i <= registerInfos.size(); i++) { @@ -194,7 +165,7 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl if (taxAgentPO == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100545, "个税扣缴义务人不存在")); } - String url = apiConfig.getHost() + SzyhApiConstant.CHECK_PASSWORD_URL; + Long taxAgentId = taxAgentPO.getId(); Map requestParam = new HashMap<>(16); requestParam.put("bizNo", IdGenerator.generate()); requestParam.put("qymc", taxAgentPO.getName()); @@ -214,38 +185,8 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl requestParam.put("bmbh", saveParam.getDepartmentCode()); requestParam.put("bmmc", saveParam.getDepartmentName()); } - String reqJson = JsonUtil.toJsonString(requestParam); - 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("checkPassword1 === reqJson :{} === res : {}", reqJson, res); - GetRequestIdResponse response = JsonUtil.parseObject(res, GetRequestIdResponse.class); - if (response == null || response.getHead() == null) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, "服务异常,请稍后重试")); - } - taxAgentTaxReturnPO.setUpdateTime(new Date()); - if (!SzyhApiConstant.SUCCESS_CODE.equals(response.getHead().getCode()) || response.getBody() == null) { - // 如果返回错误 - taxAgentTaxReturnPO.setCheckStatus(TaxAgentTaxReturnStatusEnum.FAIL.getValue()); - taxAgentTaxReturnPO.setFailReason(response.getHead().getMsg()); - return null; - } - - try { - Thread.sleep(5 * 1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - String checkPasswordFeedbackUrl = apiConfig.getHost() + SzyhApiConstant.CHECK_PASSWORD_FEEDBACK_URL; - Map feedbackHeader = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); - Map map = new HashMap<>(1); - String requestId = response.getBody().getRequestId(); - map.put("requestId", requestId); - res = HttpUtil.getRequest(checkPasswordFeedbackUrl, feedbackHeader, map); - log.info("checkPassword2 === requestId :{} === res : {}", requestId, res); - return JsonUtil.parseBean(res, CheckPasswordResponse.class); + return new CompanyClient(taxAgentId, user).checkPassword(requestParam); } /** diff --git a/src/com/engine/salary/service/impl/ApiTaskServiceImpl.java b/src/com/engine/salary/service/impl/ApiTaskServiceImpl.java new file mode 100644 index 000000000..107edf704 --- /dev/null +++ b/src/com/engine/salary/service/impl/ApiTaskServiceImpl.java @@ -0,0 +1,53 @@ +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.api.ApiTaskRecordPO; +import com.engine.salary.mapper.api.ApiTaskRecordMapper; +import com.engine.salary.service.ApiTaskService; +import com.engine.salary.service.TaxAgentService; +import com.engine.salary.util.db.IdGenerator; +import com.engine.salary.util.db.MapperProxyFactory; +import lombok.extern.slf4j.Slf4j; +import weaver.hrm.User; + +import java.util.Date; + +/** + * api任务调度服务 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Slf4j +public class ApiTaskServiceImpl extends Service implements ApiTaskService { + + private ApiTaskRecordMapper getApiTaskRecordMapper() { + return MapperProxyFactory.getProxy(ApiTaskRecordMapper.class); + } + + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + @Override + public void writeApiTaskRecord(String source, String api, String param, String response) { + log.info("source:{} , api:{} , param:{} , response : {}", source, api, param, response); + Date now = new Date(); + ApiTaskRecordPO build = ApiTaskRecordPO.builder() + .id(IdGenerator.generate()) + .source(source) + .api(api) + .param(param) + .response(response) + .createTime(now) + .updateTime(now) + .deleteType(0) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + getApiTaskRecordMapper().insertIgnoreNull(build); + } +} diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index 10785a692..9da19ccfb 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -23,7 +23,7 @@ import com.engine.salary.entity.salarysob.po.SalarySobTaxReportRulePO; import com.engine.salary.entity.taxagent.bo.TaxAgentTaxReturnBO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.entity.taxagent.po.TaxAgentTaxReturnPO; -import com.engine.salary.entity.taxagent.response.GetRequestIdResponse; +import com.engine.salary.remote.tax.response.RequestIdResponse; import com.engine.salary.entity.taxapiflow.bo.TaxApiFlowBO; import com.engine.salary.entity.taxapiflow.po.TaxDeclarationApiFlowRecordPO; import com.engine.salary.entity.taxdeclaration.bo.*; @@ -1008,6 +1008,9 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe requestParam.put("skssq", SalaryDateUtil.getFormatYYYYMM(taxDeclareRecord.getTaxCycle())); // 申报类型 requestParam.put("sblx", reportType + ""); + + + // 请求 String reqJson = JsonUtil.toJsonString(requestParam); @@ -1015,7 +1018,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe Map params = new HashMap<>(1); Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); - GetRequestIdResponse getRequestIdResponse = JsonUtil.parseObject(res, GetRequestIdResponse.class); + RequestIdResponse getRequestIdResponse = JsonUtil.parseObject(res, RequestIdResponse.class); log.info("更正申报请求数据1:=== params:{} ,getRequestIdResponse:{}", res, getRequestIdResponse); diff --git a/src/com/engine/salary/util/TaskUtil.java b/src/com/engine/salary/util/TaskUtil.java new file mode 100644 index 000000000..9b498d316 --- /dev/null +++ b/src/com/engine/salary/util/TaskUtil.java @@ -0,0 +1,37 @@ +package com.engine.salary.util; + +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.api.ApiTaskRecordPO; +import com.engine.salary.mapper.api.ApiTaskRecordMapper; +import com.engine.salary.util.db.IdGenerator; +import com.engine.salary.util.db.MapperProxyFactory; +import lombok.extern.slf4j.Slf4j; + +import java.util.Date; + +@Slf4j +public class TaskUtil { + + private ApiTaskRecordMapper getApiTaskRecordMapper() { + return MapperProxyFactory.getProxy(ApiTaskRecordMapper.class); + } + + public void writeApiTaskRecord(String source, String api, String param, String response) { + log.info("source:{} , api:{} , param:{} , response : {}", source, api, param, response); + Date now = new Date(); + ApiTaskRecordPO build = ApiTaskRecordPO.builder() + .id(IdGenerator.generate()) + .source(source) + .api(api) + .param(param) + .response(response) + .createTime(now) + .updateTime(now) + .deleteType(0) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + getApiTaskRecordMapper().insertIgnoreNull(build); + } + + +}