红字确认单申请

beta-enc
kk 2 years ago
parent b80491c2b8
commit 9718646a67
  1. 6
      jianshui-admin/src/main/java/com/jianshui/api/controller/http/invoice/v1/InvoiceController.java
  2. 47
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/elephant/sd/HZQRDMXLIST.java
  3. 86
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/elephant/sd/RedUpload.java
  4. 134
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiV6ServiceImpl.java
  5. 2
      jianshui-queue/pom.xml

@ -1403,7 +1403,7 @@ public class InvoiceController {
} }
/** 大象数电V6 */ /** 大象数电V6 */
/** 生成动态二维码接口 */ /** 生成动态二维码接口 (扫码开票)*/
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "identity", value = "身份认证", dataType = "java.lang.Void", example = "1130", required = true), @ApiImplicitParam(name = "identity", value = "身份认证", dataType = "java.lang.Void", example = "1130", required = true),
@ApiImplicitParam(name = "order", value = "请求体", dataType = "java.lang.Void", required = true)}) @ApiImplicitParam(name = "order", value = "请求体", dataType = "java.lang.Void", required = true)})
@ -1501,7 +1501,7 @@ public class InvoiceController {
/** 红字确认单申请(数电专用) */ /** 红字确认单申请(数电专用) */
@ApiImplicitParams({ /* @ApiImplicitParams({
@ApiImplicitParam(name = "identity", value = "身份认证", dataType = "java.lang.Void", example = "1130", required = true), @ApiImplicitParam(name = "identity", value = "身份认证", dataType = "java.lang.Void", example = "1130", required = true),
@ApiImplicitParam(name = "order", value = "请求体", dataType = "java.lang.Void", required = true)}) @ApiImplicitParam(name = "order", value = "请求体", dataType = "java.lang.Void", required = true)})
@PostMapping({"/api/invoice/v1/redConfirmationApply/{identity}", "/api/invoice/v1/redConfirmationApply"}) @PostMapping({"/api/invoice/v1/redConfirmationApply/{identity}", "/api/invoice/v1/redConfirmationApply"})
@ -1530,7 +1530,7 @@ public class InvoiceController {
return invoiceResponseService.response(result, companyservice, ""); return invoiceResponseService.response(result, companyservice, "");
} }*/
/** 红字确认单确认(数电专用) */ /** 红字确认单确认(数电专用) */
@ApiImplicitParams({ @ApiImplicitParams({

@ -0,0 +1,47 @@
package com.jianshui.invoice.domain.dto.api.elephant.sd;
import lombok.Data;
/**
* 红字申请确认单-明细
*/
@Data
public class HZQRDMXLIST {
// 蓝字发票明细序号
private String LZMXXH;
// 序号
private String XH;
// 商品和服务税收分类合并编码
private String SPHFWSSFLHBBM;
// 项目名称
private String XMMC;
// 规格型号
private String GGXH;
// 单位
private String DW;
// 单价
private String FPSPDJ;
// 数量
private String FPSPSL;
// 金额
private String JE;
// 税率
private String SLV;
// 税额
private String SE;
}

@ -0,0 +1,86 @@
package com.jianshui.invoice.domain.dto.api.elephant.sd;
import cn.hutool.core.annotation.Alias;
import lombok.Data;
import java.util.List;
/**
* 红字确认单申请
*/
@Data
public class RedUpload {
// 录入方身份
@Alias("sqlb")
private String LRFSF;
@Alias("sellerTaxnum")
// 销售方纳税人识别号
private String XSFNSRSBH;
@Alias("sellerName")
// 销售方名称
private String XSFMC;
@Alias("buyerTaxnum")
// 购买方纳税人识别号
private String GMFNSRSBH;
@Alias("buyerName")
// 购买方名称
private String GMFMC;
@Alias("originFpdm")
// 蓝字发票代码
private String LZFPDM;
@Alias("originFphm")
// 蓝字发票号码
private String LZFPHM;
// 是否纸质发票标志
private String SFZZFPBZ;
@Alias("originKprq")
// 蓝字发票开票日期
private String LZKPRQ;
// 蓝字发票合计金额
private String LZHJJE;
// 蓝字发票合计税额
private String LZHJSE;
// 蓝字发票票种代码
private String LZFPPZDM;
// 蓝字发票特定要素类型代码
private String LZFPTDYSLXDM;
// 数电蓝字发票号码
private String LZFPQDHM;
@Alias("taxamt")
// 红字冲销金额
private String HZCXJE;
@Alias("tax")
// 红字冲销税额
private String HZCXSE;
@Alias("applyRemark")
// 红字发票冲红原因代码
private String CHYYDM;
List<HZQRDMXLIST> HZQRDMXLIST;
}

@ -30,6 +30,8 @@ import com.jianshui.invoice.domain.dto.adapter.response.RedInfoDTO;
import com.jianshui.invoice.domain.dto.adapter.response.RedInfoDetailDTO; import com.jianshui.invoice.domain.dto.adapter.response.RedInfoDetailDTO;
import com.jianshui.invoice.domain.dto.api.*; import com.jianshui.invoice.domain.dto.api.*;
import com.jianshui.invoice.domain.dto.api.elephant.*; import com.jianshui.invoice.domain.dto.api.elephant.*;
import com.jianshui.invoice.domain.dto.api.elephant.sd.HZQRDMXLIST;
import com.jianshui.invoice.domain.dto.api.elephant.sd.RedUpload;
import com.jianshui.invoice.domain.ele.EleNewMessage; import com.jianshui.invoice.domain.ele.EleNewMessage;
import com.jianshui.invoice.domain.ele.EleOuterMessage; import com.jianshui.invoice.domain.ele.EleOuterMessage;
import com.jianshui.invoice.domain.ele.HZSQDMessage; import com.jianshui.invoice.domain.ele.HZSQDMessage;
@ -1019,75 +1021,65 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
String fplxdm = ""; String fplxdm = "";
String invioceType = redinfo.getInvoiceType(); String invioceType = redinfo.getInvoiceType();
fplxdm = ElephantUtils.transElephantType(invioceType, 1); fplxdm = ElephantUtils.transElephantType(invioceType, 1);
// switch (invioceType) {
// case "p":
// fplxdm = "026";
// break;
// case "c":
// fplxdm = "007";
// break;
// case "s":
// fplxdm = "004";
// break;
// case "b":
// fplxdm = "028";
// break;
// case "j":
// fplxdm = "005";
// throw new JianshuiParamErrorException("暂不支持的开票类型,请联系管理员!", companyservice, "invoice");
// case "u":
// fplxdm = "006";
// throw new JianshuiParamErrorException("暂不支持的开票类型,请联系管理员!", companyservice, "invoice");
// case "r":
// default:
// throw new JianshuiParamErrorException("暂不支持的开票类型,请联系管理员!", companyservice, "invoice");
// }
ElephatRedInfoDTO elephatRedInfoDTO = new ElephatRedInfoDTO();
// 配置头信息
HZSQDSCPC HZSQDSCPC = new HZSQDSCPC();
// HZSQDSCPC.setSQBSCQQPCH(IdUtils.randomSystemOrderno()); // "申请表上传请求批次号",
HZSQDSCPC.setSQBSCQQPCH(redinfo.getOutTradeOrderno()); // "申请表上传请求批次号", // 大象要求如果只有一条申请信息,上传批次号必须和上传流水号一直,就是上传单号
HZSQDSCPC.setNSRSBH(redinfo.getSellerTaxnum()); // "申请方纳税人识别号",
HZSQDSCPC.setKPZD(redinfo.getTerminalNumber()); // "开票终端",
HZSQDSCPC.setFPLXDM(fplxdm); // "发票类型代码",
HZSQDSCPC.setSQLB(Integer.toString(redinfo.getSqlb())); // "申请类别,0 为销方申请,1 为购方申请",
// HZSQDSCPC.setKZZD(); // "扩展字段"
elephatRedInfoDTO.setHZSQDSCPC(HZSQDSCPC);
// TODO 处理税额、不含税金额、含税金额 RedUpload redUpload = BeanUtil.copyProperties(redinfo,RedUpload.class);
// 配置订单头信息 // 报文组装
HZSQDTXX HZSQDTXX = new HZSQDTXX(redinfo); Invoice invoice = invoiceMapper.selectByFpdmFphm(companyservice.getCompanyid(),redinfo.getOriginFpdm(),redinfo.getOriginFphm());
if(BeanUtil.isEmpty(invoice)){
return new HXResponse("009999", "未查询到原蓝字发票信息!");
}
// 蓝字发票信息补全
redUpload.setLZHJJE(String.valueOf(invoice.getTaxfreeamt()));
redUpload.setLZHJSE(String.valueOf(invoice.getTax()));
redUpload.setLZFPPZDM(invoice.getInvoiceType());
redUpload.setLZFPTDYSLXDM(invoice.getTdyslxdm());
redUpload.setLZFPQDHM(invoice.getFphm());
// TODO: 2023/9/22 是否纸质发票这里判断一下
redUpload.setSFZZFPBZ("Y");
// 配置订单明细 List<InvoiceDetail> invoiceDetail = invoice.getInvoiceDetailList();
List<Redinfodetail> myRedinfodetailList = redinfo.getRedinfodetailList(); if(CollectionUtils.isEmpty(invoiceDetail)){
List<DDMXXX> ddmxxxList = new ArrayList<>(); return new HXResponse("009999", "未查询到原蓝字发票明细信息!");
for (int i = 0; i < myRedinfodetailList.size(); i++) {
Redinfodetail temp = myRedinfodetailList.get(i);
DDMXXX DDMXXX = new DDMXXX(temp);
ddmxxxList.add(DDMXXX);
} }
elephatRedInfoDTO.setHZSQDSCPC(HZSQDSCPC); List<HZQRDMXLIST> hzqrdmxlistList = new ArrayList<>();
for (InvoiceDetail detail : invoiceDetail) {
List<HZSQDSCZXX> HZSQDSCZXXList = new ArrayList<>(); // 根据蓝字发票组装报文
HZSQDSCZXX HZSQDSCZXX = new HZSQDSCZXX(); HZQRDMXLIST hzqrdmxlist = new HZQRDMXLIST();
HZSQDSCZXX.setHZSQDTXX(HZSQDTXX); hzqrdmxlist.setLZMXXH(String.valueOf(detail.getIndex()));
HZSQDSCZXX.setDDMXXX(ddmxxxList); hzqrdmxlist.setXH(String.valueOf(detail.getIndex()));
HZSQDSCZXXList.add(HZSQDSCZXX); hzqrdmxlist.setSPHFWSSFLHBBM(detail.getSpbm());
elephatRedInfoDTO.setHZSQDSCZXX(HZSQDSCZXXList); hzqrdmxlist.setXMMC(detail.getGoodName());
hzqrdmxlist.setGGXH(detail.getSpec());
hzqrdmxlist.setDW(detail.getUnit());
hzqrdmxlist.setFPSPDJ(String.valueOf(detail.getPrice()));
hzqrdmxlist.setFPSPSL(String.valueOf(detail.getNum()));
hzqrdmxlist.setJE(String.valueOf(detail.getTaxfreeamt()));
hzqrdmxlist.setSLV(String.valueOf(detail.getTaxrate()));
hzqrdmxlist.setSE(String.valueOf(detail.getTax()));
// AjaxResult queryResult = ElephantUtils.sendRequest(ElephantConstantsV6.REDINFO_UPLOAD, JSONUtil.parse(elephatRedInfoDTO)); hzqrdmxlistList.add(hzqrdmxlist);
AjaxResult queryResult = null; }
redUpload.setHZQRDMXLIST(hzqrdmxlistList);
DxhyInterfaceResponse dxhyInterfaceResponse = null;
try { try {
queryResult = ElephantUtils.sendRequestWithoutToken(ElephantConstantsV6.REDINFO_UPLOAD_LOCALHOST, ElephantConstantsV6.REDINFO_UPLOAD_METHOD, JSONUtil.parse(elephatRedInfoDTO), companyservice); dxhyInterfaceResponse = ElephantUtils.sendRequestWithoutTokenV6(ElephantConstantsV6.RED_CONFIRMATION_LOCALHOST, ElephantConstantsV6.RED_CONFIRMATION_METHOD, JSONUtil.parse(redUpload), companyservice);
} catch (UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e) { } catch (UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e) {
log.error("【销项发票】【大象接口】【红字信息表上传】发票请求异常,请求报文{},销方信息{}", JSONUtil.parse(elephatRedInfoDTO).toString(), JSONObject.toJSONString(companyservice)); log.error("【销项发票】【大象接口】【数电】【红字确认单申请】发票请求异常,请求报文{},销方信息{}", JSONUtil.toJsonStr(redUpload), JSONObject.toJSONString(companyservice));
e.printStackTrace(); e.printStackTrace();
throw new JianshuiServiceException("系统异常!"); return new HXResponse("009999", "系统异常!");
} }
// 组装通用报文
AjaxResult queryResult = null;
queryResult.put("code",dxhyInterfaceResponse.getCode());
queryResult.put("data",dxhyInterfaceResponse.getData());
queryResult.put("msg",dxhyInterfaceResponse.getMessage());
log.info("【销项发票】【大象发票】红字信息表上传请求结果{}", queryResult.toString()); log.info("【销项发票】【大象发票】红字信息表上传请求结果{}", queryResult.toString());
// 判断外层报文是否成功 // 判断外层报文是否成功
@ -1120,32 +1112,6 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
return new HXResponse(contentJson.getString("ZTXX")); return new HXResponse(contentJson.getString("ZTXX"));
} }
// if (!StringUtils.equals("060000", ztdm) && !StringUtils.equals("060001", ztdm)) {
// redinfo.setRedInfoStatus("2");
// redinfo.setRedInfoMessage(contentJson.getString("ZTXX"));
// redinfoMapper.updateRedinfo(redinfo);
// return new HXResponse(contentJson.getString("ZTXX"));
// }
// 红字信息表成功报文
/**
* {
* "msg": "操作成功",
* "code": 200,
* "data": {
* "ZTXX": "成功",
* "SQBSCQQPCH": "d899831373174d9a8bf71e76f0dd030c",
* "ZTDM": "0000",
* "HZSQDSCJG": [{
* "ZTXX": "审核通过",
* "SQBSCQQLSH": "fce79f2be4c143438eb5e095bfbd5f81",
* "SQDH": "661505060963220417171834",
* "XXBBH": "5001012204024900",
* "ZTDM": "TZD0000"
* }]
* }
* }
*/
// HZSQDSCJG内部状态diamante // HZSQDSCJG内部状态diamante
JSONArray hzsqdscjg = contentJson.getJSONArray("HZSQDSCJG"); JSONArray hzsqdscjg = contentJson.getJSONArray("HZSQDSCJG");

@ -44,4 +44,6 @@
<maven.compiler.target>8</maven.compiler.target> <maven.compiler.target>8</maven.compiler.target>
</properties> </properties>
</project> </project>
Loading…
Cancel
Save