Commit 1cd40c1c by 陈斌

解决代码合并冲突

parents e1dd0c82 2c428293
package cn.freemud.adapter; package cn.freemud.adapter;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.CommonsConstant; import cn.freemud.constant.CommonsConstant;
import cn.freemud.entities.dto.order.InvoiceCreateResponse; import cn.freemud.entities.dto.order.InvoiceCreateResponse;
import cn.freemud.entities.dto.order.OrderInvoiceResponse;
import cn.freemud.entities.dto.order.QueryInvoiceByCodesResponse; import cn.freemud.entities.dto.order.QueryInvoiceByCodesResponse;
import cn.freemud.entities.dto.pay.InvoiceCreateRequest; import cn.freemud.entities.dto.pay.InvoiceCreateRequest;
import cn.freemud.entities.dto.pay.InvoiceProductDetailRequest; import cn.freemud.entities.dto.pay.InvoiceProductDetailRequest;
...@@ -24,7 +24,10 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -24,7 +24,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Component @Component
...@@ -33,11 +36,11 @@ public class OrderInvoiceAdapter { ...@@ -33,11 +36,11 @@ public class OrderInvoiceAdapter {
@Autowired @Autowired
OrderServiceClient orderServiceClient; OrderServiceClient orderServiceClient;
// 开票参数 // 开票参数 从B端后台查询,根据商户自己建的配置开票
public static final String INVOICE_PRODUCTCODE = "3070401000000000000"; // public static final String INVOICE_PRODUCTCODE = "3070401000000000000";
public static final String INVOICE_PRODUCTNAME = "餐饮类商品"; // public static final String INVOICE_PRODUCTNAME = "餐饮类商品";
public static final String INVOICE_TAXRATE = "0.06"; // public static final String INVOICE_TAXRATE = "0.06";
public static final String INVOICE_CONTENT = "非码订单开票"; // public static final String INVOICE_CONTENT = "非码订单开票";
// 单张发票订单数量限制 // 单张发票订单数量限制
public static final Integer ORDER_INVOICE_NUM_LIMIT = 30; public static final Integer ORDER_INVOICE_NUM_LIMIT = 30;
...@@ -120,13 +123,14 @@ public class OrderInvoiceAdapter { ...@@ -120,13 +123,14 @@ public class OrderInvoiceAdapter {
} }
public InvoiceCreateRequest convert2InvoiceCreateRequest(List<OrderBeanV1> orders, CreateOrderInvoiceRequest createRequest){ public InvoiceCreateRequest convert2InvoiceCreateRequest(List<OrderBeanV1> orders
, CreateOrderInvoiceRequest createRequest, OrderInvoiceResponse orderInvoiceConfig){
InvoiceCreateRequest request = new InvoiceCreateRequest(); InvoiceCreateRequest request = new InvoiceCreateRequest();
request.setPartnerId(createRequest.getPartnerId()); request.setPartnerId(createRequest.getPartnerId());
request.setInvoiceTerminalCode(CommonsConstant.CONSTANTS_TWO_STRING); request.setInvoiceTerminalCode(CommonsConstant.CONSTANTS_TWO_STRING);
request.setOrgCode(null); request.setOrgCode(null);
request.setPushChannelType(null); request.setPushChannelType(null);
request.setInvoiceTypeCode(InvoiceTypeCodeEnum.ELECTRONIC_INVOICE.getBwType()); request.setInvoiceTypeCode(InvoiceTypeCodeEnum.getBwType(orderInvoiceConfig.getInvoiceType()));
request.setInvoiceNo(UUID.randomUUID().toString().replaceAll("-", "")); request.setInvoiceNo(UUID.randomUUID().toString().replaceAll("-", ""));
request.setDrawer(createRequest.getDrawer()); request.setDrawer(createRequest.getDrawer());
request.setPriceTaxMark(CommonsConstant.CONSTANTS_ONE_STRING); //含税标记 request.setPriceTaxMark(CommonsConstant.CONSTANTS_ONE_STRING); //含税标记
...@@ -144,14 +148,14 @@ public class OrderInvoiceAdapter { ...@@ -144,14 +148,14 @@ public class OrderInvoiceAdapter {
BigDecimal actualPayAmount2yuan = actualPayAmount.divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); BigDecimal actualPayAmount2yuan = actualPayAmount.divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
InvoiceProductDetailRequest invoiceDetailRequest = new InvoiceProductDetailRequest(); InvoiceProductDetailRequest invoiceDetailRequest = new InvoiceProductDetailRequest();
invoiceDetailRequest.setProductCode(INVOICE_PRODUCTCODE); invoiceDetailRequest.setProductCode(orderInvoiceConfig.getProductCode());
invoiceDetailRequest.setProductName(INVOICE_PRODUCTNAME); invoiceDetailRequest.setProductName(orderInvoiceConfig.getProductName());
invoiceDetailRequest.setProductSpecification(""); invoiceDetailRequest.setProductSpecification("");
invoiceDetailRequest.setGoodsUnit(""); invoiceDetailRequest.setGoodsUnit("");
invoiceDetailRequest.setGoodsQuantity(CommonsConstant.CONSTANTS_ONE_INTEGER); invoiceDetailRequest.setGoodsQuantity(CommonsConstant.CONSTANTS_ONE_INTEGER);
invoiceDetailRequest.setGoodsPrice(actualPayAmount2yuan); invoiceDetailRequest.setGoodsPrice(actualPayAmount2yuan);
invoiceDetailRequest.setGoodsTotalPrice(actualPayAmount2yuan); invoiceDetailRequest.setGoodsTotalPrice(actualPayAmount2yuan);
invoiceDetailRequest.setGoodsTaxRate(new BigDecimal(INVOICE_TAXRATE).setScale(2, BigDecimal.ROUND_HALF_UP)); invoiceDetailRequest.setGoodsTaxRate(new BigDecimal(orderInvoiceConfig.getTaxRate()).setScale(2, BigDecimal.ROUND_HALF_UP));
BigDecimal goodsTotalTax = invoiceDetailRequest.getGoodsTotalPrice() BigDecimal goodsTotalTax = invoiceDetailRequest.getGoodsTotalPrice()
.multiply(invoiceDetailRequest.getGoodsTaxRate()).setScale(2, BigDecimal.ROUND_HALF_UP); .multiply(invoiceDetailRequest.getGoodsTaxRate()).setScale(2, BigDecimal.ROUND_HALF_UP);
invoiceDetailRequest.setGoodsTotalTax(goodsTotalTax); invoiceDetailRequest.setGoodsTotalTax(goodsTotalTax);
...@@ -161,16 +165,16 @@ public class OrderInvoiceAdapter { ...@@ -161,16 +165,16 @@ public class OrderInvoiceAdapter {
} }
public OrderInvoiceRequest convert2OrderInvoiceRequest(InvoiceCreateRequest invoiceCreateRequest, InvoiceCreateResponse invoiceData public OrderInvoiceRequest convert2OrderInvoiceRequest(InvoiceCreateRequest invoiceCreateRequest, InvoiceCreateResponse invoiceData
, List<String> orderCodes, String memberId ){ , OrderInvoiceResponse orderInvoiceConfig, List<String> orderCodes, String memberId ){
OrderInvoiceRequest request = new OrderInvoiceRequest(); OrderInvoiceRequest request = new OrderInvoiceRequest();
request.setPartnerId(invoiceCreateRequest.getPartnerId()); request.setPartnerId(invoiceCreateRequest.getPartnerId());
request.setInvoiceType(InvoiceTypeCodeEnum.ELECTRONIC_INVOICE.getFmType()); request.setInvoiceType(orderInvoiceConfig.getInvoiceType());
request.setContent(INVOICE_CONTENT); request.setContent(orderInvoiceConfig.getContent());
request.setAmount(invoiceCreateRequest.getProductDetailList().get(0).getGoodsTotalPrice().multiply(new BigDecimal(100)).intValue()); request.setAmount(invoiceCreateRequest.getProductDetailList().get(0).getGoodsTotalPrice().multiply(new BigDecimal(100)).intValue());
request.setInvoiceUrl(invoiceData.getScanUrl()); request.setInvoiceUrl(invoiceData.getScanUrl());
request.setUserId(memberId); request.setUserId(memberId);
request.setInvoiceNo(invoiceCreateRequest.getInvoiceNo()); request.setInvoiceNo(invoiceCreateRequest.getInvoiceNo());
request.setTaxRate(INVOICE_TAXRATE); request.setTaxRate(orderInvoiceConfig.getTaxRate());
request.setPickUpNo(invoiceData.getCode()); request.setPickUpNo(invoiceData.getCode());
request.setEndingDate(DateUtils.convert2Date(invoiceData.getEndingDate())); request.setEndingDate(DateUtils.convert2Date(invoiceData.getEndingDate()));
request.setOrderCodes(orderCodes); request.setOrderCodes(orderCodes);
......
package cn.freemud.entities.dto.openplatform;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class QueryInvoiceConfigRequest {
@ApiModelProperty("商户号")
private String partnerId;
}
package cn.freemud.entities.dto.order;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class OrderInvoiceResponse {
@ApiModelProperty("主键")
private Integer id;
@ApiModelProperty("商户号")
private String partnerId;
@ApiModelProperty("渠道类型")
private String channelType;
@ApiModelProperty("渠道名称")
private String channelName;
@ApiModelProperty("税号")
private String taxNo;
@ApiModelProperty("发票类型,{4-增值税专用发票,7-增值税普通发票,26-增值税电子发票,25-增值税卷式发票,28-增值税专用电子发票}")
private Integer invoiceType;
@ApiModelProperty("appKey")
private String appKey;
@ApiModelProperty("appSercret")
private String appSercret;
@ApiModelProperty("token")
private String token;
@ApiModelProperty("userName")
private String userName;
@ApiModelProperty("盐值,加密盐")
private String salt;
@ApiModelProperty("发票说明")
private String remark;
@ApiModelProperty("状态 0启用 1禁用")
private Integer state;
@ApiModelProperty(value = "税收分类编码")
private String productCode;
@ApiModelProperty(value = "商品名称")
private String productName;
@ApiModelProperty("税率")
private String taxRate;
@ApiModelProperty("发票内容")
private String content;
}
...@@ -27,4 +27,31 @@ public enum InvoiceTypeCodeEnum { ...@@ -27,4 +27,31 @@ public enum InvoiceTypeCodeEnum {
private String bwType; private String bwType;
private String desc; private String desc;
/**
* 根据fmType获取bwType
* @param fmType
* @return
*/
public static String getBwType(Integer fmType){
for (InvoiceTypeCodeEnum value : InvoiceTypeCodeEnum.values()) {
if (value.getFmType().equals(fmType)) {
return value.getBwType();
}
}
return null;
}
/**
* 根据fmType获取bwType
* @param bwType
* @return
*/
public static Integer getFmType(String bwType){
for (InvoiceTypeCodeEnum value : InvoiceTypeCodeEnum.values()) {
if (value.getBwType().equals(bwType)) {
return value.getFmType();
}
}
return null;
}
} }
...@@ -189,6 +189,7 @@ public enum ResponseResult { ...@@ -189,6 +189,7 @@ public enum ResponseResult {
ORDER_INVOICE_QUERY_ERROR("45082", "订单发票查询失败",""), ORDER_INVOICE_QUERY_ERROR("45082", "订单发票查询失败",""),
ORDER_INVOICE_IS_OPENED("45083", "存在选中的订单已开过发票,请重新选择订单",""), ORDER_INVOICE_IS_OPENED("45083", "存在选中的订单已开过发票,请重新选择订单",""),
ORDER_CODES_REPEAT("45084", "同一次开票,选中的订单不能重复,请重新选择订单",""), ORDER_CODES_REPEAT("45084", "同一次开票,选中的订单不能重复,请重新选择订单",""),
ORDER_INVOICE_CONFIG_IS_NULL("45085", "发票配置信息为空,不可开票",""),
/** /**
* 售后单 * 售后单
......
...@@ -30,6 +30,7 @@ import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseObj; ...@@ -30,6 +30,7 @@ import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseObj;
import cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto; import cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto;
import cn.freemud.entities.dto.delivery.*; import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.ecology.SendMessageRequest; import cn.freemud.entities.dto.ecology.SendMessageRequest;
import cn.freemud.entities.dto.openplatform.QueryInvoiceConfigRequest;
import cn.freemud.entities.dto.order.*; import cn.freemud.entities.dto.order.*;
import cn.freemud.entities.dto.pay.*; import cn.freemud.entities.dto.pay.*;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountRequestDto; import cn.freemud.entities.dto.pay.svc.SVCCardAmountRequestDto;
...@@ -99,8 +100,8 @@ import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderC ...@@ -99,8 +100,8 @@ import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderC
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse; import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp; import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.OrderCountResp; import com.freemud.application.sdk.api.ordercenter.response.OrderCountResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
...@@ -345,6 +346,9 @@ public class OrderServiceImpl implements Orderservice { ...@@ -345,6 +346,9 @@ public class OrderServiceImpl implements Orderservice {
@Autowired @Autowired
private PayServiceImpl payServiceImpl; private PayServiceImpl payServiceImpl;
@Autowired
private MicroOpenplatformClient microOpenplatformClient;
@Override @Override
public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) { public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) {
...@@ -4431,8 +4435,20 @@ public class OrderServiceImpl implements Orderservice { ...@@ -4431,8 +4435,20 @@ public class OrderServiceImpl implements Orderservice {
return checkResponse; return checkResponse;
} }
// 【3】. 调用支付接口开订单发票,非码支付系统内部再调用三方-百望系统开票 // 【3.1】. 查询开票配置数据
InvoiceCreateRequest invoiceCreateRequest = orderInvoiceAdapter.convert2InvoiceCreateRequest(dataBean.getOrders(), request); QueryInvoiceConfigRequest configRequest = new QueryInvoiceConfigRequest();
configRequest.setPartnerId(request.getPartnerId());
BaseResponse<OrderInvoiceResponse> orderInvoiceConfigResponse = microOpenplatformClient.QueryInvoiceConfigByPartnerId(configRequest);
if(!Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR, orderInvoiceConfigResponse.getCode())){
return ResponseUtil.error(orderInvoiceConfigResponse.getCode(), orderInvoiceConfigResponse.getMessage());
}
OrderInvoiceResponse orderInvoiceConfig = orderInvoiceConfigResponse.getResult();
if(null == orderInvoiceConfig){
return ResponseUtil.error(ResponseResult.ORDER_INVOICE_CONFIG_IS_NULL);
}
// 【3.2】. 调用支付接口开订单发票,非码支付系统内部再调用三方-百望系统开票
InvoiceCreateRequest invoiceCreateRequest = orderInvoiceAdapter.convert2InvoiceCreateRequest(dataBean.getOrders(), request, orderInvoiceConfig);
com.freemud.application.sdk.api.base.BaseResponse<InvoiceCreateResponse> invoiceResponse = paymentNewClient.createInvoice(invoiceCreateRequest); com.freemud.application.sdk.api.base.BaseResponse<InvoiceCreateResponse> invoiceResponse = paymentNewClient.createInvoice(invoiceCreateRequest);
if (!Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR, invoiceResponse.getCode()) || null == invoiceResponse.getData()) { if (!Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR, invoiceResponse.getCode()) || null == invoiceResponse.getData()) {
return ResponseUtil.error(invoiceResponse.getCode(), invoiceResponse.getMessage()); return ResponseUtil.error(invoiceResponse.getCode(), invoiceResponse.getMessage());
...@@ -4444,7 +4460,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -4444,7 +4460,7 @@ public class OrderServiceImpl implements Orderservice {
// 【4】. 录入发票记录,修改订单发票状态 // 【4】. 录入发票记录,修改订单发票状态
OrderInvoiceRequest orderInvoiceRequest = orderInvoiceAdapter.convert2OrderInvoiceRequest(invoiceCreateRequest, invoiceData, OrderInvoiceRequest orderInvoiceRequest = orderInvoiceAdapter.convert2OrderInvoiceRequest(invoiceCreateRequest, invoiceData,
request.getOrderCodes(), userLoginInfoDto.getMemberId()); orderInvoiceConfig, request.getOrderCodes(), userLoginInfoDto.getMemberId());
BaseResponse orderInvoiceResponse = orderServiceClient.createInvoice(orderInvoiceRequest); BaseResponse orderInvoiceResponse = orderServiceClient.createInvoice(orderInvoiceRequest);
if (!Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR, orderInvoiceResponse.getCode())) { if (!Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR, orderInvoiceResponse.getCode())) {
return orderInvoiceResponse; return orderInvoiceResponse;
......
...@@ -4,6 +4,8 @@ import cn.freemud.annotations.LogIgnoreFeign; ...@@ -4,6 +4,8 @@ import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.delivery.GetFilterPartnerResponse; import cn.freemud.entities.dto.delivery.GetFilterPartnerResponse;
import cn.freemud.entities.dto.openplatform.OrderGetPartnerRequest; import cn.freemud.entities.dto.openplatform.OrderGetPartnerRequest;
import cn.freemud.entities.dto.openplatform.QueryInvoiceConfigRequest;
import cn.freemud.entities.dto.order.OrderInvoiceResponse;
import cn.freemud.entities.vo.SendOrderCountsMsg; import cn.freemud.entities.vo.SendOrderCountsMsg;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
...@@ -41,4 +43,13 @@ public interface MicroOpenplatformClient { ...@@ -41,4 +43,13 @@ public interface MicroOpenplatformClient {
@PostMapping("/thirdApp/getFilterPartner") @PostMapping("/thirdApp/getFilterPartner")
BaseResponse<GetFilterPartnerResponse> getFilterPartner(@RequestBody OrderGetPartnerRequest request); BaseResponse<GetFilterPartnerResponse> getFilterPartner(@RequestBody OrderGetPartnerRequest request);
/**
* 获取需要 上报腾讯有数的 商户号
*
* @return
*/
@LogIgnoreFeign(logMessage="orderInvoiceQueryByPartnerId")
@PostMapping("/order/invoice/config/queryByPartnerId")
BaseResponse<OrderInvoiceResponse> QueryInvoiceConfigByPartnerId(@RequestBody QueryInvoiceConfigRequest request);
} }
...@@ -106,3 +106,4 @@ ...@@ -106,3 +106,4 @@
| 1.3.67.RELEASE | 新增爱马哥需求代码改动 | 周晓航 | 2021-08-23 | | 1.3.67.RELEASE | 新增爱马哥需求代码改动 | 周晓航 | 2021-08-23 |
| 1.3.68.RELEASE | 新增维护商品类型同步商品服务 | 周晓航 | 2021-09-03 | | 1.3.68.RELEASE | 新增维护商品类型同步商品服务 | 周晓航 | 2021-09-03 |
| 1.3.69.RELEASE | 升级sdk | 伍平 | 2021-09-16 | | 1.3.69.RELEASE | 升级sdk | 伍平 | 2021-09-16 |
| 1.3.70.RELEASE | 升级sdk | 伍平 | 2021-10-11 |
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment