中交建-销项合并测试:红字发票开具接口

beta-enc
dongxiaoke 2 years ago
parent ccda54552f
commit f18fa259b4
  1. 14
      jianshui-admin/src/main/java/com/jianshui/api/controller/http/invoice/v1/InvoiceController.java
  2. 10
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataDetailTwoDTO.java
  3. 9
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataTwoDTO.java
  4. 4
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java
  5. 84
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/JcskInvoiceApiServiceImpl.java

@ -338,6 +338,7 @@ public class InvoiceController {
} }
/** 红字信息表上传*/
@Validated @Validated
// @ApiOperation("红字信息表上传") // @ApiOperation("红字信息表上传")
@ApiImplicitParams({ @ApiImplicitParams({
@ -359,7 +360,18 @@ public class InvoiceController {
IInvoiceRequestService invoiceRequestService = invoiceRequestFactory.getService(requestAdapterKey); IInvoiceRequestService invoiceRequestService = invoiceRequestFactory.getService(requestAdapterKey);
JSONObject decryptResult = invoiceRequestService.decrypt(request, companyservice, "add_redinfo"); JSONObject decryptResult = invoiceRequestService.decrypt(request, companyservice, "add_redinfo");
HXResponse result = preHandleDecryptResult(decryptResult, "add_redinfo", companyservice); // HXResponse result = preHandleDecryptResult(decryptResult, "add_redinfo", companyservice);
Redinfo billInfo = decryptResult.toJavaObject(Redinfo.class);
if (billInfo == null) {
throw new JianshuiParamErrorException(ErrorCode.ERROR_PARAMS, companyservice, "invoice");
}
// 获得请求实例,并且进行扣费
String serviceKey = serviceManageService.getCompanyServiceSupplier("invoice", companyservice.getCompanyid());
serviceManageService.companyConsume("invoice", companyservice.getCompanyid());
IInvoiceApiService invoiceService = invoiceServiceFactory.getService(serviceKey);
billInfo.setServiceSupplierKey(serviceKey);
HXResponse result = invoiceService.uploadRedInfo(billInfo, companyservice);
String responseAdapterKey = serviceManageService.getResponseAdapterKey("invoice", companyservice.getCompanyid()); String responseAdapterKey = serviceManageService.getResponseAdapterKey("invoice", companyservice.getCompanyid());
IInvoiceResponseService invoiceResponseService = invoiceResponseFactory.getService(responseAdapterKey); IInvoiceResponseService invoiceResponseService = invoiceResponseFactory.getService(responseAdapterKey);

@ -15,51 +15,41 @@ import javax.validation.constraints.NotEmpty;
public class SqhzJsonDataDetailTwoDTO { public class SqhzJsonDataDetailTwoDTO {
@Alias("price") @Alias("price")
@NotEmpty
@ApiModelProperty(value = "单价") @ApiModelProperty(value = "单价")
private String dj; private String dj;
@Alias("unit") @Alias("unit")
@NotEmpty
@ApiModelProperty(value = "单位") @ApiModelProperty(value = "单位")
private String dw; private String dw;
@Alias("spec") @Alias("spec")
@NotEmpty
@ApiModelProperty(value = "规格型号") @ApiModelProperty(value = "规格型号")
private String ggxh; private String ggxh;
@Alias("taxfreeamt") @Alias("taxfreeamt")
@NotEmpty
@ApiModelProperty(value = "金额") @ApiModelProperty(value = "金额")
private String je; private String je;
@NotEmpty
@ApiModelProperty(value = "蓝字明细序号") @ApiModelProperty(value = "蓝字明细序号")
private String lzmxxh; private String lzmxxh;
@Alias("tax") @Alias("tax")
@NotEmpty
@ApiModelProperty(value = "税额") @ApiModelProperty(value = "税额")
private String se; private String se;
@Alias("num") @Alias("num")
@NotEmpty
@ApiModelProperty(value = "数量") @ApiModelProperty(value = "数量")
private String sl; private String sl;
@Alias("taxrate") @Alias("taxrate")
@NotEmpty
@ApiModelProperty(value = "税率") @ApiModelProperty(value = "税率")
private String slv; private String slv;
@Alias("bmbbh") @Alias("bmbbh")
@NotEmpty
@ApiModelProperty(value = "商品编码") @ApiModelProperty(value = "商品编码")
private String spbm; private String spbm;
@Alias("goodName") @Alias("goodName")
@NotEmpty
@ApiModelProperty(value = "商品名称") @ApiModelProperty(value = "商品名称")
private String xmmc; private String xmmc;

@ -21,15 +21,14 @@ public class SqhzJsonDataTwoDTO {
private String chyydm; private String chyydm;
@Alias("buyerTaxnum") @Alias("buyerTaxnum")
@NotEmpty
@ApiModelProperty(value = "购买方纳税人识别号") @ApiModelProperty(value = "购买方纳税人识别号")
private String gmfnsrsbh; private String gmfnsrsbh;
@NotEmpty @Alias("taxamt")
@ApiModelProperty(value = "红字合计金额") @ApiModelProperty(value = "红字合计金额")
private String hzcxje; private String hzcxje;
@NotEmpty @Alias("tax")
@ApiModelProperty(value = "红字合计税额") @ApiModelProperty(value = "红字合计税额")
private String hzcxse; private String hzcxse;
@ -38,12 +37,10 @@ public class SqhzJsonDataTwoDTO {
@ApiModelProperty(value = "申请来源") @ApiModelProperty(value = "申请来源")
private String sqly; private String sqly;
@NotEmpty
@ApiModelProperty(value = "特定要素类型代码(参考码表)") @ApiModelProperty(value = "特定要素类型代码(参考码表)")
private String tdyslxdm; private String tdyslxdm;
@Alias("sellerTaxnum") @Alias("sellerTaxnum")
@NotEmpty
@ApiModelProperty(value = "销售方纳税人识别号") @ApiModelProperty(value = "销售方纳税人识别号")
private String xsfnsrsbh; private String xsfnsrsbh;
@ -57,11 +54,9 @@ public class SqhzJsonDataTwoDTO {
@ApiModelProperty(value = "原开票日期") @ApiModelProperty(value = "原开票日期")
private String ykprq; private String ykprq;
@NotEmpty
@ApiModelProperty(value = "原纸质发票代码") @ApiModelProperty(value = "原纸质发票代码")
private String yzzfpdm; private String yzzfpdm;
@NotEmpty
@ApiModelProperty(value = "原纸质发票号码") @ApiModelProperty(value = "原纸质发票号码")
private String yzzfphm; private String yzzfphm;

@ -1,5 +1,6 @@
package com.jianshui.invoice.service.impl.adapter.request; package com.jianshui.invoice.service.impl.adapter.request;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.jianshui.common.core.domain.entity.Companyservice; import com.jianshui.common.core.domain.entity.Companyservice;
@ -198,6 +199,8 @@ public class AisinoInvoiceRequestAdapterImpl implements IInvoiceRequestService {
// 处理detail // 处理detail
List<HxRedInfoDetailsDTO> hxBillDetailList = hxBillInfo.getRedinfodetailList(); List<HxRedInfoDetailsDTO> hxBillDetailList = hxBillInfo.getRedinfodetailList();
List<Redinfodetail> detailList = new ArrayList<>(); List<Redinfodetail> detailList = new ArrayList<>();
if(CollectionUtil.isNotEmpty(hxBillDetailList)){
for (int i = 0; i < hxBillDetailList.size(); i++) { for (int i = 0; i < hxBillDetailList.size(); i++) {
HxRedInfoDetailsDTO detial = hxBillDetailList.get(i); HxRedInfoDetailsDTO detial = hxBillDetailList.get(i);
Redinfodetail temp = new Redinfodetail(); Redinfodetail temp = new Redinfodetail();
@ -206,6 +209,7 @@ public class AisinoInvoiceRequestAdapterImpl implements IInvoiceRequestService {
detailList.add(temp); detailList.add(temp);
} }
billInfo.setRedinfodetailList(detailList); billInfo.setRedinfodetailList(detailList);
}
json = (JSONObject) JSONObject.toJSON(billInfo); json = (JSONObject) JSONObject.toJSON(billInfo);
} }

@ -2,6 +2,7 @@ package com.jianshui.invoice.service.impl.api;
import java.util.Date; import java.util.Date;
import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import com.jianshui.common.utils.BeanToMapUtils; import com.jianshui.common.utils.BeanToMapUtils;
import com.jianshui.invoice.domain.dto.api.*; import com.jianshui.invoice.domain.dto.api.*;
@ -392,48 +393,6 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService {
*/ */
@Override @Override
public HXResponse uploadRedInfo(Redinfo redinfo, Companyservice companyservice) { public HXResponse uploadRedInfo(Redinfo redinfo, Companyservice companyservice) {
// 前置处理 redinfo.setCompanyId(companyservice.getCompanyid());
redinfo.setSystemOrderno(IdUtils.randomSystemOrderno());
if (StringUtils.isEmpty(redinfo.getOutTradeOrderno())) {
// 把 outTradeOrderno作为用户的申请单号
throw new JianshuiParamErrorException(ErrorCode.EMPTY_REDINFO_NO, companyservice, "invoice");
}
redinfo.setOutTradeOrderno(redinfo.getOutTradeOrderno());
redinfo.setFpqqlsh(redinfo.getSystemOrderno());
redinfo.setRedInfoStatus("0");
redinfo.setSellerName(companyservice.getSellername());
redinfo.setSellerTaxnum(companyservice.getSellertax());
redinfo.setBillInputTime(TimeUtil.dateFormat(new Date(), "yyyyMMddHHmmss"));
List<Redinfodetail> redinfodetailList = redinfo.getRedinfodetailList();
BigDecimal taxfreeamt = new BigDecimal(0); // 不含税金额
BigDecimal tax = new BigDecimal(0); // 税额
for (Redinfodetail detail : redinfodetailList) {
taxfreeamt = taxfreeamt.add(detail.getTaxfreeamt());
tax = tax.add(detail.getTax());
}
redinfo.setTax(tax);
redinfo.setTaxfreeamt(taxfreeamt);
redinfo.setTaxamt(tax.add(taxfreeamt));
redinfoMapper.insertRedinfo(redinfo);
int index = 0;
String spbm = "";
for (Redinfodetail detail : redinfodetailList) {
detail.setBillno(redinfo.getRedInfoNo());
detail.setRedinfoId(redinfo.getId());
detail.setIndex(++index);
detail.setBillno(redinfo.getRedInfoNo());
taxfreeamt = taxfreeamt.add(detail.getTaxfreeamt());
tax = tax.add(detail.getTax());
// 商品编码
spbm = detail.getSpbm();
}
redinfoMapper.batchRedinfodetail(redinfodetailList);
// 金财数科数据处理 start // 金财数科数据处理 start
// 查询用户登记参数 // 查询用户登记参数
QueryWrapper<InvoiceAllYhdj> yhdjQueryWrapper = new QueryWrapper<>(); QueryWrapper<InvoiceAllYhdj> yhdjQueryWrapper = new QueryWrapper<>();
@ -455,11 +414,34 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService {
SqhzJsonDataTwoDTO sqhzJsonDataTwoDTO = BeanUtil.copyProperties(redinfo,SqhzJsonDataTwoDTO.class); SqhzJsonDataTwoDTO sqhzJsonDataTwoDTO = BeanUtil.copyProperties(redinfo,SqhzJsonDataTwoDTO.class);
ValidateUtils.validate(sqhzJsonDataTwoDTO); ValidateUtils.validate(sqhzJsonDataTwoDTO);
List<SqhzJsonDataDetailTwoDTO> sqhzJsonDataDetailTwoDTOS = BeanUtil.copyToList(redinfo.getRedinfodetailList(),SqhzJsonDataDetailTwoDTO.class); // redInfo 前置处理 start
for (SqhzJsonDataDetailTwoDTO sqhzJsonDataDetailTwoDTO : sqhzJsonDataDetailTwoDTOS) { redinfo.setCompanyId(companyservice.getCompanyid());
ValidateUtils.validate(sqhzJsonDataDetailTwoDTO); String id = IdUtils.randomSystemOrderno();
redinfo.setSystemOrderno(id);
redinfo.setOutTradeOrderno(id);
redinfo.setFpqqlsh(id);
redinfo.setRedInfoStatus("0");
redinfo.setSellerName(companyservice.getSellername());
redinfo.setSellerTaxnum(companyservice.getSellertax());
redinfo.setBillInputTime(TimeUtil.dateFormat(new Date(), "yyyyMMddHHmmss"));
// 纸票为必填
redinfo.setBuyerName("全电");
redinfo.setBuyerTaxnum("全电");
redinfo.setSellerName("全电");
redinfo.setSellerTaxnum("全电");
redinfoMapper.insertRedinfo(redinfo);
int index = 0;
List<Redinfodetail> redinfodetailList = redinfo.getRedinfodetailList();
if(CollectionUtil.isNotEmpty(redinfodetailList)){
redinfoMapper.batchRedinfodetail(redinfodetailList);
} }
// end
List<SqhzJsonDataDetailTwoDTO> sqhzJsonDataDetailTwoDTOS = BeanUtil.copyToList(redinfo.getRedinfodetailList(),SqhzJsonDataDetailTwoDTO.class);
if(CollectionUtil.isNotEmpty(sqhzJsonDataDetailTwoDTOS)){
sqhzJsonDataTwoDTO.setHzqrxxmxlist(sqhzJsonDataDetailTwoDTOS); sqhzJsonDataTwoDTO.setHzqrxxmxlist(sqhzJsonDataDetailTwoDTOS);
}
sqhzDTO.setJsonData(sqhzJsonDataTwoDTO); sqhzDTO.setJsonData(sqhzJsonDataTwoDTO);
cn.hutool.json.JSONObject result = null; cn.hutool.json.JSONObject result = null;
@ -500,18 +482,6 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService {
return new HXResponse("通用查询接口异常"); return new HXResponse("通用查询接口异常");
} }
/*if (!StringUtils.equals("0000", retcode)) {
redinfo.setRedInfoStatus("2");
redinfo.setRedInfoMessage(retmsg);
redinfoMapper.updateRedinfo(redinfo);
return new HXResponse(retmsg);
}
redinfo.setRedInfoStatus("1");
redinfo.setRedInfoMessage(retmsg);
redinfoMapper.updateRedinfo(redinfo);
return new HXResponse(retmsg);*/
} }
@Override @Override

Loading…
Cancel
Save