diff --git a/jianshui-admin/src/main/java/com/jianshui/api/controller/http/invoice/v1/InvoiceController.java b/jianshui-admin/src/main/java/com/jianshui/api/controller/http/invoice/v1/InvoiceController.java index 165db14..16aff67 100644 --- a/jianshui-admin/src/main/java/com/jianshui/api/controller/http/invoice/v1/InvoiceController.java +++ b/jianshui-admin/src/main/java/com/jianshui/api/controller/http/invoice/v1/InvoiceController.java @@ -338,6 +338,7 @@ public class InvoiceController { } + /** 红字信息表上传*/ @Validated // @ApiOperation("红字信息表上传") @ApiImplicitParams({ @@ -359,7 +360,18 @@ public class InvoiceController { IInvoiceRequestService invoiceRequestService = invoiceRequestFactory.getService(requestAdapterKey); 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()); IInvoiceResponseService invoiceResponseService = invoiceResponseFactory.getService(responseAdapterKey); diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataDetailTwoDTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataDetailTwoDTO.java index c54f731..210ffbd 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataDetailTwoDTO.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataDetailTwoDTO.java @@ -15,51 +15,41 @@ import javax.validation.constraints.NotEmpty; public class SqhzJsonDataDetailTwoDTO { @Alias("price") - @NotEmpty @ApiModelProperty(value = "单价") private String dj; @Alias("unit") - @NotEmpty @ApiModelProperty(value = "单位") private String dw; @Alias("spec") - @NotEmpty @ApiModelProperty(value = "规格型号") private String ggxh; @Alias("taxfreeamt") - @NotEmpty @ApiModelProperty(value = "金额") private String je; - @NotEmpty @ApiModelProperty(value = "蓝字明细序号") private String lzmxxh; @Alias("tax") - @NotEmpty @ApiModelProperty(value = "税额") private String se; @Alias("num") - @NotEmpty @ApiModelProperty(value = "数量") private String sl; @Alias("taxrate") - @NotEmpty @ApiModelProperty(value = "税率") private String slv; @Alias("bmbbh") - @NotEmpty @ApiModelProperty(value = "商品编码") private String spbm; @Alias("goodName") - @NotEmpty @ApiModelProperty(value = "商品名称") private String xmmc; diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataTwoDTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataTwoDTO.java index d32dba7..8edc6b9 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataTwoDTO.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataTwoDTO.java @@ -21,15 +21,14 @@ public class SqhzJsonDataTwoDTO { private String chyydm; @Alias("buyerTaxnum") - @NotEmpty @ApiModelProperty(value = "购买方纳税人识别号") private String gmfnsrsbh; - @NotEmpty + @Alias("taxamt") @ApiModelProperty(value = "红字合计金额") private String hzcxje; - @NotEmpty + @Alias("tax") @ApiModelProperty(value = "红字合计税额") private String hzcxse; @@ -38,12 +37,10 @@ public class SqhzJsonDataTwoDTO { @ApiModelProperty(value = "申请来源") private String sqly; - @NotEmpty @ApiModelProperty(value = "特定要素类型代码(参考码表)") private String tdyslxdm; @Alias("sellerTaxnum") - @NotEmpty @ApiModelProperty(value = "销售方纳税人识别号") private String xsfnsrsbh; @@ -57,11 +54,9 @@ public class SqhzJsonDataTwoDTO { @ApiModelProperty(value = "原开票日期") private String ykprq; - @NotEmpty @ApiModelProperty(value = "原纸质发票代码") private String yzzfpdm; - @NotEmpty @ApiModelProperty(value = "原纸质发票号码") private String yzzfphm; diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java index 52cbbdf..eb0885f 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java @@ -1,5 +1,6 @@ package com.jianshui.invoice.service.impl.adapter.request; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.jianshui.common.core.domain.entity.Companyservice; @@ -198,14 +199,17 @@ public class AisinoInvoiceRequestAdapterImpl implements IInvoiceRequestService { // 处理detail List hxBillDetailList = hxBillInfo.getRedinfodetailList(); List detailList = new ArrayList<>(); - for (int i = 0; i < hxBillDetailList.size(); i++) { - HxRedInfoDetailsDTO detial = hxBillDetailList.get(i); - Redinfodetail temp = new Redinfodetail(); - BeanUtils.copyProperties(detial, temp); - temp.setIndex(i); - detailList.add(temp); + + if(CollectionUtil.isNotEmpty(hxBillDetailList)){ + for (int i = 0; i < hxBillDetailList.size(); i++) { + HxRedInfoDetailsDTO detial = hxBillDetailList.get(i); + Redinfodetail temp = new Redinfodetail(); + BeanUtils.copyProperties(detial, temp); + temp.setIndex(i); + detailList.add(temp); + } + billInfo.setRedinfodetailList(detailList); } - billInfo.setRedinfodetailList(detailList); json = (JSONObject) JSONObject.toJSON(billInfo); } diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/JcskInvoiceApiServiceImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/JcskInvoiceApiServiceImpl.java index c355ade..832f603 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/JcskInvoiceApiServiceImpl.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/JcskInvoiceApiServiceImpl.java @@ -2,6 +2,7 @@ package com.jianshui.invoice.service.impl.api; import java.util.Date; import cn.hutool.core.bean.copier.CopyOptions; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.map.MapUtil; import com.jianshui.common.utils.BeanToMapUtils; import com.jianshui.invoice.domain.dto.api.*; @@ -392,48 +393,6 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { */ @Override 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 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 // 查询用户登记参数 QueryWrapper yhdjQueryWrapper = new QueryWrapper<>(); @@ -455,11 +414,34 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { SqhzJsonDataTwoDTO sqhzJsonDataTwoDTO = BeanUtil.copyProperties(redinfo,SqhzJsonDataTwoDTO.class); ValidateUtils.validate(sqhzJsonDataTwoDTO); + // redInfo 前置处理 start + redinfo.setCompanyId(companyservice.getCompanyid()); + 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 redinfodetailList = redinfo.getRedinfodetailList(); + if(CollectionUtil.isNotEmpty(redinfodetailList)){ + redinfoMapper.batchRedinfodetail(redinfodetailList); + } + // end + + List sqhzJsonDataDetailTwoDTOS = BeanUtil.copyToList(redinfo.getRedinfodetailList(),SqhzJsonDataDetailTwoDTO.class); - for (SqhzJsonDataDetailTwoDTO sqhzJsonDataDetailTwoDTO : sqhzJsonDataDetailTwoDTOS) { - ValidateUtils.validate(sqhzJsonDataDetailTwoDTO); + if(CollectionUtil.isNotEmpty(sqhzJsonDataDetailTwoDTOS)){ + sqhzJsonDataTwoDTO.setHzqrxxmxlist(sqhzJsonDataDetailTwoDTOS); } - sqhzJsonDataTwoDTO.setHzqrxxmxlist(sqhzJsonDataDetailTwoDTOS); sqhzDTO.setJsonData(sqhzJsonDataTwoDTO); cn.hutool.json.JSONObject result = null; @@ -500,18 +482,6 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { 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