소스 검색

Merge remote-tracking branch 'origin/master'

master
梁超 1 개월 전
부모
커밋
1d097dad8c

+ 17
- 0
gly-base-core/src/main/java/cn/com/taiji/core/entity/log/LogBillInterface.java 파일 보기

@@ -0,0 +1,17 @@
package cn.com.taiji.core.entity.log;

import cn.com.taiji.core.entity.AbstractInterfaceLog;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import javax.persistence.Entity;
import javax.persistence.Table;

@Getter
@Setter
@Accessors(chain = true)
@Entity
@Table(name = "LOG_BILL_INTERFACE")
public class LogBillInterface extends AbstractInterfaceLog {
}

+ 17
- 0
gly-base-core/src/main/java/cn/com/taiji/core/entity/log/LogOcrInterface.java 파일 보기

@@ -0,0 +1,17 @@
package cn.com.taiji.core.entity.log;

import cn.com.taiji.core.entity.AbstractInterfaceLog;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import javax.persistence.Entity;
import javax.persistence.Table;

@Getter
@Setter
@Accessors(chain = true)
@Entity
@Table(name = "LOG_OCR_INTERFACE")
public class LogOcrInterface extends AbstractInterfaceLog {
}

+ 22
- 0
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ods/bill/model/BillOpenModel.java 파일 보기

@@ -2,6 +2,7 @@ package cn.com.taiji.core.model.comm.protocol.ods.bill.model;

import cn.com.taiji.common.model.BaseModel;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;

@@ -10,65 +11,86 @@ import lombok.Setter;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class BillOpenModel extends BaseModel {
/** 设备盘号或纳税人识别号 */
@JsonProperty("mid")
private String mid;

/** 发票类型代码 */
@JsonProperty("invoice_type")
private String invoiceType;

/** 发票请求流水 */
@JsonProperty("invoice_serial")
private String invoiceSerial;

/** 开票类型0-开票,1-红冲 */
@JsonProperty("open_type")
private String openType;

/** 购货方税号 */
@JsonProperty("buyer_taxno")
private String buyerTaxno;

/** 购货方名称 */
@JsonProperty("buyer_name")
private String buyerName;

/** 购货方地址电话 */
@JsonProperty("buyer_adphone")
private String buyerAdphone;

/** 购货方银行账号 */
@JsonProperty("buyer_bank")
private String buyerBank;

/** 清单标识0无,1是 */
@JsonProperty("list_flag")
private String listFlag;

/** 商品信息 */
@JsonProperty("product_info")
private String productInfo;

/** 备注 */
@JsonProperty("remark")
private String remark;

/** 联系手机号 */
@JsonProperty("mobile")
private String mobile;

/** 复核人 */
@JsonProperty("reviewer")
private String reviewer;

/** 开票人 */
@JsonProperty("biller")
private String biller;

/** 收款人 */
@JsonProperty("payee")
private String payee;

/** 原发票代码,冲红必填 */
@JsonProperty("older_invoice_code")
private String olderInvoiceCode;

/** 原发票号码,冲红必填 */
@JsonProperty("older_invoice_num")
private String olderInvoiceNum;

/** 版式文件 */
@JsonProperty("is_format")
private String isFormat;

/** 推送手机号 */
@JsonProperty("push_mobile")
private String pushMobile;

/** 自然人 */
@JsonProperty("is_personal")
private String isPersonal;

/** 订单编号列表 */
@JsonProperty("orderno_list")
private String ordernoList;
}

+ 7
- 0
gly-base-core/src/main/java/cn/com/taiji/core/repo/jpa/log/LogBillInterfaceRepo.java 파일 보기

@@ -0,0 +1,7 @@
package cn.com.taiji.core.repo.jpa.log;

import cn.com.taiji.common.repo.jpa.AbstractJpaRepo;
import cn.com.taiji.core.entity.log.LogBillInterface;

public interface LogBillInterfaceRepo extends AbstractJpaRepo<LogBillInterface, String> {
}

+ 7
- 0
gly-base-core/src/main/java/cn/com/taiji/core/repo/jpa/log/LogOcrInterfaceRepo.java 파일 보기

@@ -0,0 +1,7 @@
package cn.com.taiji.core.repo.jpa.log;

import cn.com.taiji.common.repo.jpa.AbstractJpaRepo;
import cn.com.taiji.core.entity.log.LogOcrInterface;

public interface LogOcrInterfaceRepo extends AbstractJpaRepo<LogOcrInterface, String> {
}

+ 3
- 6
zhywpt-service-ods/src/main/java/cn/com/taiji/ods/manager/bill/BillOpenManager.java 파일 보기

@@ -1,12 +1,9 @@
package cn.com.taiji.ods.manager.bill;

import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.core.model.comm.protocol.ods.bill.*;
import cn.com.taiji.core.model.comm.protocol.ods.bill.BillOpenRequest;
import cn.com.taiji.core.model.comm.protocol.ods.bill.BillCommResponse;

public interface BillOpenManager {
BillCommResponse serviceOpen(BillOpenRequest request) throws ServiceHandleException;

BillCommResponse serviceReversal(BillReversalRequest request) throws ServiceHandleException;

BillOrderPushLogResponse serviceOrderPush(BillOrderPushLogRequest req) throws ServiceHandleException;
BillCommResponse serviceHandle(BillOpenRequest request) throws ServiceHandleException;
}

+ 23
- 54
zhywpt-service-ods/src/main/java/cn/com/taiji/ods/manager/bill/BillOpenManagerImpl.java 파일 보기

@@ -3,97 +3,66 @@ package cn.com.taiji.ods.manager.bill;
import cn.com.taiji.common.manager.AbstractManager;
import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.common.pub.json.JsonTools;
import cn.com.taiji.core.manager.tools.http.HttpClientUtil;
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeRequest;
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse;
import cn.com.taiji.core.model.comm.protocol.ods.bill.*;
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError;
import cn.com.taiji.core.entity.log.LogBillInterface;
import cn.com.taiji.core.manager.comm.LogManager;
import cn.com.taiji.core.model.comm.protocol.ods.bill.BillCommResponse;
import cn.com.taiji.core.model.comm.protocol.ods.bill.BillOpenRequest;
import cn.com.taiji.core.repo.jpa.log.LogBillInterfaceRepo;
import cn.com.taiji.ods.model.bill.HltResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.HttpServerErrorException;

import java.io.IOException;

@Service
public class BillOpenManagerImpl extends AbstractManager implements BillOpenManager {
public class BillOpenManagerImpl extends AbstractManager
implements BillOpenManager, LogManager<BillOpenRequest, BillCommResponse, LogBillInterface> {
Logger logger = LoggerFactory.getLogger(BillOpenManagerImpl.class);

@Autowired
private HltService hltService;

@Value("${orderNotice.url}")
private String orderNoticeUrl;

@Override
public BillCommResponse serviceOpen(BillOpenRequest request) throws ServiceHandleException {
return processRequest(request, BillCommResponse.class);
}

// 订单补推
@Override
public BillCommResponse serviceReversal(BillReversalRequest request) throws ServiceHandleException {
return processRequest(request, BillCommResponse.class);
}
@Autowired
private LogBillInterfaceRepo logRepo;

@Override
public BillOrderPushLogResponse serviceOrderPush(BillOrderPushLogRequest req) throws ServiceHandleException {
logger.info("请求发票订单请求参数:{}", req);
String response = null;
try {
response = HttpClientUtil.sendPost(orderNoticeUrl, req.toJson(), null);
} catch (IOException e) {
e.printStackTrace();
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("接口错误:发票订单补推响应异常!");
}
logger.info("请求发票订单响应参数:{}", response);
if (StringUtils.hasText(response)) {
try {
return JsonTools.json2Object(response, BillOrderPushLogResponse.class);
} catch (IOException e) {
logger.error("发票订单补推响应异常:{}", e.getMessage(), e);
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("接口错误:发票订单补推响应异常!");
}

} else {
logger.error("发票订单补推响应异常");
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("接口错误:发票订单补推响应异常!");
}
}

/** 统一处理请求*/
private <T extends AbstractSignTypeRequest<?>, R extends AbstractSignTypeResponse> R processRequest(
T request, Class<R> responseClass) throws ServiceHandleException {
public BillCommResponse serviceHandle(BillOpenRequest request) throws ServiceHandleException {
logger.info("请求汇联通开始,请求参数: {}", request);
long begin = System.currentTimeMillis();
try {
HltResponse response = hltService.postHlt(request.toJson());
logger.info("请求汇联通结束,响应参数: {}", response);

if ("0000".equals(response.getRespCode())) {
try {
return JsonTools.json2Object(response.getData(), responseClass);
BillCommResponse commResponse = JsonTools.json2Object(response.getData(), BillCommResponse.class);
return onSuccess(request, commResponse, LogBillInterface.class, System.currentTimeMillis() - begin);
} catch (IOException e) {
logger.error("汇联通响应解析异常: {}", e.getMessage(), e);
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("接口错误:汇联通接口返回值格式错误!");
throw exception(request, LogBillInterface.class, "接口错误:汇联通接口返回值格式错误!");
}
} else {
logger.error("汇联通响应异常,状态码: {}, 错误信息: {}", response.getRespCode(), response.getRespMessage());
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException(
throw exception(request, LogBillInterface.class,
String.format("接口错误:汇联通响应异常!状态码:%s,错误信息:%s", response.getRespCode(), response.getRespMessage()));
}
} catch (HttpClientErrorException | HttpServerErrorException e) {
logger.error("HTTP请求异常,状态码: {}, 错误信息: {}", e.getStatusCode(), e.getResponseBodyAsString(), e);
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException(
throw exception(request, LogBillInterface.class,
String.format("接口错误:HTTP请求异常!状态码:%s,错误信息:%s", e.getStatusCode(), e.getResponseBodyAsString()));
} catch (Exception e) {
logger.error("请求汇联通异常: {}", e.getMessage(), e);
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("接口错误:请求汇联通异常!");
throw exception(request, LogBillInterface.class, "接口错误:请求汇联通异常!");
}
}

@Override
public void doSaveLog(BillOpenRequest request, BillCommResponse response, LogBillInterface log) {
logger.info("enter do save log");
logRepo.persist(log);
}
}

+ 9
- 0
zhywpt-service-ods/src/main/java/cn/com/taiji/ods/manager/bill/BillOrderPushManager.java 파일 보기

@@ -0,0 +1,9 @@
package cn.com.taiji.ods.manager.bill;

import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.core.model.comm.protocol.ods.bill.BillOrderPushLogResponse;
import cn.com.taiji.core.model.comm.protocol.ods.bill.BillOrderPushLogRequest;

public interface BillOrderPushManager {
BillOrderPushLogResponse serviceHandle(BillOrderPushLogRequest request) throws ServiceHandleException;
}

+ 60
- 0
zhywpt-service-ods/src/main/java/cn/com/taiji/ods/manager/bill/BillOrderPushManagerImpl.java 파일 보기

@@ -0,0 +1,60 @@
package cn.com.taiji.ods.manager.bill;

import cn.com.taiji.common.manager.AbstractManager;
import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.common.pub.json.JsonTools;
import cn.com.taiji.core.entity.log.LogBillInterface;
import cn.com.taiji.core.manager.comm.LogManager;
import cn.com.taiji.core.manager.tools.http.HttpClientUtil;
import cn.com.taiji.core.model.comm.protocol.ods.bill.BillOrderPushLogRequest;
import cn.com.taiji.core.model.comm.protocol.ods.bill.BillOrderPushLogResponse;
import cn.com.taiji.core.repo.jpa.log.LogBillInterfaceRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.io.IOException;

@Service
public class BillOrderPushManagerImpl extends AbstractManager
implements BillOrderPushManager, LogManager<BillOrderPushLogRequest, BillOrderPushLogResponse, LogBillInterface> {

@Value("${orderNotice.url}")
private String orderNoticeUrl;

@Autowired
private LogBillInterfaceRepo logRepo;

@Override
public BillOrderPushLogResponse serviceHandle(BillOrderPushLogRequest request) throws ServiceHandleException {
logger.info("请求发票订单请求参数:{}", request);
long begin = System.currentTimeMillis();
String response = null;
try {
response = HttpClientUtil.sendPost(orderNoticeUrl, request.toJson(), null);
} catch (IOException e) {
e.printStackTrace();
throw exception(request, LogBillInterface.class, "接口错误:发票订单补推响应异常!");
}
logger.info("请求发票订单响应参数:{}", response);
if (hasText(response)) {
try {
BillOrderPushLogResponse pushLogResponse = JsonTools.json2Object(response, BillOrderPushLogResponse.class);
return onSuccess(request, pushLogResponse, LogBillInterface.class, System.currentTimeMillis() - begin);
} catch (IOException e) {
logger.error("发票订单补推响应异常:{}", e.getMessage(), e);
throw exception(request, LogBillInterface.class, "接口错误:发票订单补推响应异常!");
}

} else {
logger.error("发票订单补推响应异常");
throw exception(request, LogBillInterface.class, "接口错误:发票订单补推响应异常!");
}
}

@Override
public void doSaveLog(BillOrderPushLogRequest request, BillOrderPushLogResponse response, LogBillInterface log) {
logger.info("enter do save log");
logRepo.persist(log);
}
}

+ 9
- 0
zhywpt-service-ods/src/main/java/cn/com/taiji/ods/manager/bill/BillReversalManager.java 파일 보기

@@ -0,0 +1,9 @@
package cn.com.taiji.ods.manager.bill;

import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.core.model.comm.protocol.ods.bill.BillReversalRequest;
import cn.com.taiji.core.model.comm.protocol.ods.bill.BillCommResponse;

public interface BillReversalManager {
BillCommResponse serviceHandle(BillReversalRequest request) throws ServiceHandleException;
}

+ 71
- 0
zhywpt-service-ods/src/main/java/cn/com/taiji/ods/manager/bill/BillReversalManagerImpl.java 파일 보기

@@ -0,0 +1,71 @@
package cn.com.taiji.ods.manager.bill;

import cn.com.taiji.common.manager.AbstractManager;
import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.common.pub.json.JsonTools;
import cn.com.taiji.core.entity.log.LogBillInterface;
import cn.com.taiji.core.manager.comm.LogManager;
import cn.com.taiji.core.model.comm.protocol.ods.bill.BillCommResponse;
import cn.com.taiji.core.model.comm.protocol.ods.bill.BillReversalRequest;
import cn.com.taiji.core.repo.jpa.log.LogBillInterfaceRepo;
import cn.com.taiji.ods.model.bill.HltResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.HttpServerErrorException;

import java.io.IOException;

@Service
public class BillReversalManagerImpl extends AbstractManager
implements BillReversalManager, LogManager<BillReversalRequest, BillCommResponse, LogBillInterface> {
Logger logger = LoggerFactory.getLogger(BillReversalManagerImpl.class);

@Autowired
private HltService hltService;

@Autowired
private LogBillInterfaceRepo logRepo;

@Override
public BillCommResponse serviceHandle(BillReversalRequest request) throws ServiceHandleException {

logger.info("请求汇联通开始,请求参数: {}", request);
long begin = System.currentTimeMillis();
try {
HltResponse response = hltService.postHlt(request.toJson());
logger.info("请求汇联通结束,响应参数: {}", response);

if ("0000".equals(response.getRespCode())) {
try {
BillCommResponse commResponse = JsonTools.json2Object(response.getData(), BillCommResponse.class);
return onSuccess(request, commResponse, LogBillInterface.class, System.currentTimeMillis() - begin);
} catch (IOException e) {
logger.error("汇联通响应解析异常: {}", e.getMessage(), e);
throw exception(request, LogBillInterface.class, "接口错误:汇联通接口返回值格式错误!");
}
} else {
logger.error("汇联通响应异常,状态码: {}, 错误信息: {}", response.getRespCode(), response.getRespMessage());
throw exception(request, LogBillInterface.class,
String.format("接口错误:汇联通响应异常!状态码:%s,错误信息:%s", response.getRespCode(), response.getRespMessage()));
}
} catch (HttpClientErrorException | HttpServerErrorException e) {
logger.error("HTTP请求异常,状态码: {}, 错误信息: {}", e.getStatusCode(), e.getResponseBodyAsString(), e);
throw exception(request, LogBillInterface.class,
String.format("接口错误:HTTP请求异常!状态码:%s,错误信息:%s", e.getStatusCode(), e.getResponseBodyAsString()));
} catch (Exception e) {
logger.error("请求汇联通异常: {}", e.getMessage(), e);
throw exception(request, LogBillInterface.class, "接口错误:请求汇联通异常!");
}
}

@Override
@Transactional
public void doSaveLog(BillReversalRequest request, BillCommResponse response, LogBillInterface log) {
logger.info("enter do save log");
logRepo.persist(log);
}
}

+ 1
- 1
zhywpt-service-ods/src/main/java/cn/com/taiji/ods/manager/bill/HltServiceImpl.java 파일 보기

@@ -37,7 +37,7 @@ public class HltServiceImpl implements HltService {
HltResponse response;
try {
// 发送请求
System.out.println("==>"+hltRequest.toJson());
System.out.println("加密后==>"+hltRequest.toJson());
String res = HttpClientUtil.sendPost(hltUrl, hltRequest.toJson(), null);
response = JsonTools.json2Object(res, HltResponse.class);
// 对返回的数据进行解密

+ 9
- 3
zhywpt-service-ods/src/main/java/cn/com/taiji/ods/manager/handler/BillOpenServiceHandler.java 파일 보기

@@ -11,6 +11,8 @@ import cn.com.taiji.core.model.comm.protocol.ods.bill.BillOpenRequest;
import cn.com.taiji.core.model.comm.protocol.ods.bill.BillOrderPushLogRequest;
import cn.com.taiji.core.model.comm.protocol.ods.bill.BillReversalRequest;
import cn.com.taiji.ods.manager.bill.BillOpenManager;
import cn.com.taiji.ods.manager.bill.BillOrderPushManager;
import cn.com.taiji.ods.manager.bill.BillReversalManager;
import com.zgglyun.common.model.AbstractHttpRequestInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -23,17 +25,21 @@ public class BillOpenServiceHandler extends AbstractOdsServiceHandler<BillOpenCm

@Autowired
private BillOpenManager billOpenManager;
@Autowired
private BillReversalManager billReversalManager;
@Autowired
private BillOrderPushManager billOrderPushManager;

@Override
protected <T extends AbstractSignTypeRequest<?>> AbstractSignTypeResponse handleInternal(T request, SignJsonRequest jsonReq, AbstractHttpRequestInfo reqInfo) throws ServiceHandleException {
BillOpenCmd cmd = BillOpenCmd.fromIfCode(jsonReq.getIfCode());
switch (cmd) {
case OPEN:
return billOpenManager.serviceOpen((BillOpenRequest) request);
return billOpenManager.serviceHandle((BillOpenRequest) request);
case REVERSAL:
return billOpenManager.serviceReversal((BillReversalRequest) request);
return billReversalManager.serviceHandle((BillReversalRequest) request);
case ORDERPUSH:
return billOpenManager.serviceOrderPush((BillOrderPushLogRequest) request);
return billOrderPushManager.serviceHandle((BillOrderPushLogRequest) request);
default:
throw FileProtocolSystemError.NOT_SUPPORT.toHandleException(jsonReq.getIfCode());
}

Loading…
취소
저장