diff --git a/jianshui-admin/src/main/java/com/jianshui/api/config/WebserviceResponseHandler.java b/jianshui-admin/src/main/java/com/jianshui/api/config/WebserviceResponseHandler.java index 9f62980..fcbc1bb 100644 --- a/jianshui-admin/src/main/java/com/jianshui/api/config/WebserviceResponseHandler.java +++ b/jianshui-admin/src/main/java/com/jianshui/api/config/WebserviceResponseHandler.java @@ -1,10 +1,7 @@ package com.jianshui.api.config; import cn.hutool.core.util.XmlUtil; -import org.w3c.dom.CDATASection; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; +import org.w3c.dom.*; import javax.xml.namespace.QName; import javax.xml.parsers.DocumentBuilderFactory; @@ -38,9 +35,11 @@ public class WebserviceResponseHandler implements SOAPHandler Sph; + // 二手车 start + + @JSONField(name = "mfdwgr") + private String mfdwgr; + + @JSONField(name = "djzh") + private String djzh; + + @JSONField(name = "cyjg") + private String cyjg; + + @JSONField(name = "smfdwgr") + private String smfdwgr; + + @JSONField(name = "cpxh") + private String cpxh; + + @JSONField(name = "escsc") + private String escsc; + + @JSONField(name = "cycs") + private String cycs; + + @JSONField(name = "mfdwgrdz") + private String mfdwgrdz; + + @JSONField(name = "clsbh") + private String clsbh; + + @JSONField(name = "smfdh") + private String smfdh; + + @JSONField(name = "escscdz") + private String escscdz; + + @JSONField(name = "smfdwgrzz") + private String smfdwgrzz; + + @JSONField(name = "smfdwdmsfzh") + private String smfdwdmsfzh; + @JSONField(name = "escscdh") + private String escscdh; + @JSONField(name = "cpzh") + private String cpzh; + + @JSONField(name = "escsckhyhzh") + private String escsckhyhzh; + + @JSONField(name = "cjhj") + private String cjhj; + + @JSONField(name = "xdpbz") + private String xdpbz; + + @JSONField(name = "cllx") + private String cllx; + + @JSONField(name = "qdbz") + private String qdbz; + + @JSONField(name = "cpybz") + private String cpybz; + + @JSONField(name = "zrdcgsmc") + private String zrdcgsmc; + + @JSONField(name = "escscsbh") + private String escscsbh; + + @JSONField(name = "mfdwdmsfzh") + private String mfdwdmsfzh; + + @JSONField(name = "mfdh") + private String mfdh; + + // 二手车 end + + // 机动车 start + @JSONField(name = "xhfmc") + private String xhfmc; + + @JSONField(name = "hgzs") + private String hgzs; + + @JSONField(name = "xcrs") + private String xcrs; + + @JSONField(name = "sl") + private String sl; + + @JSONField(name = "cd") + private String cd; + + @JSONField(name = "skph") + private String skph; + + @JSONField(name = "xhfsbh") + private String xhfsbh; + + @JSONField(name = "khzh") + private String khzh; + + @JSONField(name = "jdcbz") + private String jdcbz; + + @JSONField(name = "zgswjgmc") + private String zgswjgmc; + + @JSONField(name = "zgswjgdm") + private String zgswjgdm; + + @JSONField(name = "fdjhm") + private String fdjhm; + + // 机动车发票end + + } diff --git a/jianshui-income/src/main/java/com/jianshui/income/service/impl/EleCheckInvoiceImpl.java b/jianshui-income/src/main/java/com/jianshui/income/service/impl/EleCheckInvoiceImpl.java index 7838262..e9ed800 100644 --- a/jianshui-income/src/main/java/com/jianshui/income/service/impl/EleCheckInvoiceImpl.java +++ b/jianshui-income/src/main/java/com/jianshui/income/service/impl/EleCheckInvoiceImpl.java @@ -1,5 +1,6 @@ package com.jianshui.income.service.impl; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.jianshui.common.core.domain.AjaxResult; @@ -113,16 +114,25 @@ public class EleCheckInvoiceImpl implements ICheckInvoice { JSONObject resultContent = resultJson.getJSONObject("data"); if (resultContent == null) { // 如果这里为null,可能出现查验失败,大象报错有可能在最外层的returnCode里报错,也可能在data里的code报错,巨坑 String checkResult = resultJson.getString("code"); - if ("0001".equals(checkResult) || "0006".equals(checkResult) || "0009".equals(checkResult)) { + if ("0001".equals(checkResult) || "0006".equals(checkResult) || "0009".equals(checkResult) || "1005".equals(checkResult) ) { // 如果需要扣费 robUserMoney += 1; } + String errorMsg = resultJson.getString("message"); JSONObject result = new JSONObject(); result.put("robUserMoney", robUserMoney); return new AjaxResult(Integer.parseInt(checkResult), errorMsg, result); } invoiceCheck = this.handelCheckResult(invoiceCheck, resultContent); // 批量处理一把 + + // TODO: 2023/6/5 确定一下哪些需要扣钱 + List cyjgList = Arrays.asList("9999", "0002", "0005", "1004", "1006", "1007", "1008", "1009","1010", "1011", "1012", "1013", "1014", "1015", "1020", "1021"); + if (cyjgList.contains(invoiceCheck.getCyjg())) { + log.info("单个发票校验错误结果:companyId=" + companyId + ",errorCode=" + invoiceCheck.getCyjg() + ",returnMessage=" + invoiceCheck.getCyjgxx()); + return new AjaxResult(5,invoiceCheck.getCyjgxx()); + } + // note-gong 2021/6/17 9:20 查询下数据库中是否存在相同发票;存在就判断下状态是否一致,不一致扣款;不存在就直接扣款 DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar cal = Calendar.getInstance(); @@ -152,7 +162,7 @@ public class EleCheckInvoiceImpl implements ICheckInvoice { } else { // 如果不存在用户数据,判断下状态,如果查验结果属于成功,则扣钱 String checkResult = invoiceCheck.getCyjg(); - if ("0001".equals(checkResult) || "0006".equals(checkResult) || "0009".equals(checkResult)) { + if ("0001".equals(checkResult) || "0006".equals(checkResult) || "0009".equals(checkResult) || "1005".equals(checkResult)) { // 如果需要扣费 robUserMoney += 1; } @@ -166,6 +176,22 @@ public class EleCheckInvoiceImpl implements ICheckInvoice { result.put("resultContent", resultContent); // 开始批量更新数据库 老田加的队列。这里没有。他写的队列也不对,上面已经插入过了这里还插入。SB // RedisQueueUtil.build().setData(invoiceCheck).onQueue("income_result_save_consumer").retry(0).dispatch(); + + if (!"0001".equals(invoiceCheck.getCyjg()) ) { + log.info("单个发票校验错误结果:companyId=" + companyId + ",errorCode=" + invoiceCheck.getCyjg() + ",returnMessage=" + invoiceCheck.getCyjgxx()); + return new AjaxResult(Integer.parseInt(invoiceCheck.getCyjg()),invoiceCheck.getCyjgxx()); + } + + // :校验是否查询本企业发票 + String xhfsbh = StrUtil.blankToDefault(invoiceCheck.getXhfsbh(), ""); + String xhfmc = StrUtil.blankToDefault(invoiceCheck.getXhfmc(), ""); + String sellerTax = companyservice.getSellertax(); + String sellerName = companyservice.getSellername(); + if (!sellerTax.equals(xhfsbh) || !StrUtil.equalsIgnoreCase(sellerName, xhfmc)) { + log.info("单个发票校验非本企业发票:companyId=" + companyId + ",errorCode=" + invoiceCheck.getCyjg() + ",returnMessage=" + invoiceCheck.getCyjgxx()); + return new AjaxResult(34,"授权企业与所查询发票的购方不一致,请进行核实"); + } + // 更新成功处理返回数据 return AjaxResult.success(result); } diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/api/aisino/console/AisinoConsoleInvoiceAddVO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/api/aisino/console/AisinoConsoleInvoiceAddVO.java index f4da523..1bbb6cd 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/api/aisino/console/AisinoConsoleInvoiceAddVO.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/api/aisino/console/AisinoConsoleInvoiceAddVO.java @@ -26,7 +26,7 @@ public class AisinoConsoleInvoiceAddVO { /** * (格式:yyyy-mm-dd)//开票日期 */ - private String InfoDate; + private Date InfoDate; /** * 开具的发票代码 diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiServiceImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiServiceImpl.java index 29a8a66..c9c8638 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiServiceImpl.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiServiceImpl.java @@ -280,6 +280,9 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService { String hisInvoceTypeTemp = CovertInvoiceTypeReverse(aisinoConsoleInvoiceAddVO.getHisInfoKind()); invoice.setInvoiceType(hisInvoceTypeTemp); invoice.setBillInfoId(billInfo.getId()); + invoice.setKprq(aisinoConsoleInvoiceAddVO.getInfoDate()); + invoice.setTaxfreeamt(BigDecimal.valueOf(aisinoConsoleInvoiceAddVO.getInfoAmount())); + invoice.setTax(BigDecimal.valueOf(aisinoConsoleInvoiceAddVO.getInfoTaxAmount())); long id = 0L; QueryWrapper invoiceQueryWrapper = new QueryWrapper<>(); diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/service/InvoiceAddService.java b/jianshui-platform/src/main/java/com/jianshui/platform/service/InvoiceAddService.java new file mode 100644 index 0000000..50da827 --- /dev/null +++ b/jianshui-platform/src/main/java/com/jianshui/platform/service/InvoiceAddService.java @@ -0,0 +1,23 @@ +package com.jianshui.platform.service; + + +import com.jianshui.platform.dto.BillInfoPDTO; + +/** + * 发票录入 + * + */ + +public interface InvoiceAddService { + + + /** + * @Author: kk + * @Description: 单据录入 + * @DateTime: 2023/6/5 17:14 + * @Params: + * @Return + */ + + int invoiceSave(BillInfoPDTO billInfoPDTO); +} diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/InvoiceAddServiceImpl.java b/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/InvoiceAddServiceImpl.java new file mode 100644 index 0000000..264f3c3 --- /dev/null +++ b/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/InvoiceAddServiceImpl.java @@ -0,0 +1,73 @@ +package com.jianshui.platform.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.jianshui.common.utils.ValidateUtils; +import com.jianshui.invoice.domain.BillInfo; +import com.jianshui.invoice.mapper.BillInfoMapper; +import com.jianshui.platform.dto.BillInfoPDTO; +import com.jianshui.platform.service.InvoiceAddService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + + +/** + * 发票录入 + * + */ +@Service +public class InvoiceAddServiceImpl implements InvoiceAddService { + + @Autowired + private static BillInfoMapper billInfoMapper; + + @Override + public int invoiceSave(BillInfoPDTO billInfoPDTO) { + ValidateUtils.validate(billInfoPDTO); + + BillInfo billInfo = BeanUtil.copyProperties(billInfoPDTO, BillInfo.class); + // 手工录入 + billInfo.setSource("3"); + return billInfoMapper.insertBillInfo(billInfo); + + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +}