From e0e78343e3bf75b9ae385f4479aaec8ea96ef62b Mon Sep 17 00:00:00 2001 From: yefei Date: Mon, 10 Apr 2023 16:59:42 +0800 Subject: [PATCH] =?UTF-8?q?ariesy=20=E6=B7=BB=E5=8A=A0=E7=BC=BA=E5=A4=B1?= =?UTF-8?q?=E6=96=87=E4=BB=B6=20v3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dxhy/erp/dao/SignRecordInvoiceDao.java | 97 ++ .../erp/dao/SignRecordInvoiceDetailDao.java | 18 + .../dao/SignRecordInvoiceStatisticsDao.java | 17 + .../erp/dao/SignVehicleSaleInvoiceDao.java | 18 + .../java/com/dxhy/erp/entity/TDxInvoice.java | 204 ++++ .../erp/entity/TDxRecordInvoiceDetail.java | 5 + .../com/dxhy/erp/entity/TdxRecordInvoice.java | 2 + .../com/dxhy/erp/service/SignFpqsService.java | 32 + .../erp/service/SignInvoiceDetailService.java | 38 + .../service/SignInvoiceStatisticsService.java | 38 + .../com/dxhy/erp/service/SignJdcService.java | 31 + .../erp/service/impl/SignFpqsServiceImpl.java | 155 +++ .../impl/SignInvoiceDetailServiceImpl.java | 64 ++ .../SignInvoiceStatisticsServiceImpl.java | 61 ++ .../erp/service/impl/SignJdcServiceImpl.java | 55 ++ .../impl/SignSaveInvoiceInfoServiceImpl.java | 896 ++++++++++++++++++ 16 files changed, 1731 insertions(+) create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/dao/SignRecordInvoiceDao.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/dao/SignRecordInvoiceDetailDao.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/dao/SignRecordInvoiceStatisticsDao.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/dao/SignVehicleSaleInvoiceDao.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/entity/TDxInvoice.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/service/SignFpqsService.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/service/SignInvoiceDetailService.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/service/SignInvoiceStatisticsService.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/service/SignJdcService.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignFpqsServiceImpl.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignInvoiceDetailServiceImpl.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignInvoiceStatisticsServiceImpl.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignJdcServiceImpl.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignSaveInvoiceInfoServiceImpl.java diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/dao/SignRecordInvoiceDao.java b/dxhy-erp/src/main/java/com/dxhy/erp/dao/SignRecordInvoiceDao.java new file mode 100644 index 00000000..b216d6d4 --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/dao/SignRecordInvoiceDao.java @@ -0,0 +1,97 @@ +package com.dxhy.erp.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dxhy.erp.entity.TDxInvoice; +import com.dxhy.erp.entity.TdxRecordInvoice; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * + * 发票信息dao + * + * @author jiaohongyang + * @date 2019年3月26日 下午6:02:48 + */ +@Mapper +public interface SignRecordInvoiceDao extends BaseMapper { + + /** + * 未签收发票查询接口 + * + * @param pramsMap + * 请求参数 + * @return 返回结果 + * @since 1.0 + */ + List selectWqsfp(Map pramsMap); + + /** + * 未签收发票合计信息查询接口 + * + * @param pramsMap + * 请求参数 + * @return 返回结果 + * @since 1.0 + */ + List selectWqsfpHj(Map pramsMap); + + /** + * 批量删除发票 + * + * @param scanId + * 请求参数 + * + */ + void deleteBatchInvoice(@Param("scanId") String scanId); + + /** + * 批量删除图片 + * + * @param scanId + * 请求参数 + * + */ + void deleteBatchImg(@Param("scanId") String scanId); + + /** + * 取消签收 + * + * @param uuid + * 请求参数 + */ + void updateQsxx(@Param("uuid") String uuid); + + /** + * 获取本机构用户 + * + * @param company + * 公司代码 + * @return 返回结果 + */ + List> getUser(@Param("company") String company); + + /** + * 未签收发票合计信息查询接口 + * + * @param pramsMap + * 请求参数 + * @return 返回结果 + * @since 1.0 + */ + List selectYlqsfpHj(Map pramsMap); + + /** + * 批量删除发票 + * + * @param id + * 请求参数 + * + */ + void deleteInvoiceByid(@Param("Id") String id); + + TDxInvoice selectInvoice(@Param("Id") String id); +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/dao/SignRecordInvoiceDetailDao.java b/dxhy-erp/src/main/java/com/dxhy/erp/dao/SignRecordInvoiceDetailDao.java new file mode 100644 index 00000000..d45a4d4d --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/dao/SignRecordInvoiceDetailDao.java @@ -0,0 +1,18 @@ +package com.dxhy.erp.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dxhy.erp.entity.TDxRecordInvoiceDetail; +import org.apache.ibatis.annotations.Mapper; + + +/** + * + * 底账明细表dao + * + * @author jiaohongyang + * @date 2019年3月26日 下午6:02:48 + */ +@Mapper +public interface SignRecordInvoiceDetailDao extends BaseMapper { + +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/dao/SignRecordInvoiceStatisticsDao.java b/dxhy-erp/src/main/java/com/dxhy/erp/dao/SignRecordInvoiceStatisticsDao.java new file mode 100644 index 00000000..156e563d --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/dao/SignRecordInvoiceStatisticsDao.java @@ -0,0 +1,17 @@ +package com.dxhy.erp.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dxhy.erp.entity.TdxRecordInvoiceStatistics; +import org.apache.ibatis.annotations.Mapper; + +/** + * + * 税率统计表dao + * + * @author jiaohongyang + * @date 2019年3月26日 下午6:02:48 + */ +@Mapper +public interface SignRecordInvoiceStatisticsDao extends BaseMapper { + +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/dao/SignVehicleSaleInvoiceDao.java b/dxhy-erp/src/main/java/com/dxhy/erp/dao/SignVehicleSaleInvoiceDao.java new file mode 100644 index 00000000..99cb7c6f --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/dao/SignVehicleSaleInvoiceDao.java @@ -0,0 +1,18 @@ +package com.dxhy.erp.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dxhy.erp.entity.TDxVehicleSaleInvoice; +import org.apache.ibatis.annotations.Mapper; + +/** + * + * + * 机动车明细表dao + * + * @author jiaohongyang + * @date 2019年3月26日 下午6:02:48 + */ +@Mapper +public interface SignVehicleSaleInvoiceDao extends BaseMapper { + +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/entity/TDxInvoice.java b/dxhy-erp/src/main/java/com/dxhy/erp/entity/TDxInvoice.java new file mode 100644 index 00000000..1e4b02de --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/entity/TDxInvoice.java @@ -0,0 +1,204 @@ +package com.dxhy.erp.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * + * 发票扫描表 + * + * @author jiaohongyang + * @date 2019年3月26日 下午6:02:48 + */ +@SuppressWarnings("AlibabaClassNamingShouldBeCamel") +@Data +public class TDxInvoice implements Serializable { + + private static final long serialVersionUID = 7993748954465023806L; + + /** + * id + */ + private Long id; + + /** + * 发票类型(01-增值税专用发票 03-机动车销售统一发票 04-增值税普通发票 10-电子发票 11-卷票 14-通行费发票) + */ + private String invoiceType; + + /** + * 发票代码 + */ + private String invoiceCode; + + /** + * 发票号码 + */ + private String invoiceNo; + + /** + * 扫描流水号 + */ + private Long invoiceSerialNo; + + /** + * 购方税号 + */ + private String gfTaxNo; + + /** + * 购方名称 + */ + private String gfName; + + /** + * 销方税号 + */ + private String xfTaxNo; + + /** + * 销方名称 + */ + private String xfName; + + /** + * 金额 + */ + private BigDecimal invoiceAmount; + + /** + * 税额 + */ + private BigDecimal taxAmount; + + /** + * 价税合计 + */ + private BigDecimal totalAmount; + + /** + * 开票时间 + */ + private Date invoiceDate; + + /** + * 扫描账号 + */ + private String userAccount; + + /** + * 扫描人 + */ + private String userName; + + /** + * 签收方式(0-扫码签收 1-扫描仪签收 2-app签收 3-导入签收 4-手工签收,5-pdf上传) + */ + private String qsType; + + /** + * 签收结果(0-签收失败 1-签收成功) + */ + private String qsStatus; + + /** + * 是否有效(1-有效 0-无效) + */ + private String valid; + + /** + * 发票唯一标识 组成:发票代码+发票号码 + */ + private String uuid; + + /** + * 创建时间 + */ + private Date createDate; + + /** + * 修改时间 + */ + private Date updateDate; + + /** + * 签收时间 + */ + private Date qsDate; + + /** + * 扫描图片唯一识别码 + */ + private String scanId; + + /** + * 扫描备注 + */ + private String notes; + + /** + * 部门id + */ + private String deptId; + + /** + * 校验码 + */ + private String checkCode; + + /** + * 部门名称 collate utf8mb4_general_ci + */ + private String deptName; + + /** + * 结算单号 + */ + private String settlementNo; + + /** + * 是否结算(0未结算,1已结算) + */ + private String settlementStatus; + + /** + * 结算单来源 + */ + private String settleSource; + + /** + * 发票状态 + */ + private String invoiceStatus; + + private String qsName; + + private String company; + + /** + * 编辑修改按scanId标志 + */ + @TableField(exist = false) + private Boolean updateByScanId = false; + /** + * 备注 + */ + private String remark; + /** + * 强制签收标志 + */ + private String forceSign; + + private String invoiceRemark; + + @TableField(exist = false) + private String authStatus; + @TableField(exist = false) + private String imagePath; + private String voucherNumber; + private String invoiceSource; +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/entity/TDxRecordInvoiceDetail.java b/dxhy-erp/src/main/java/com/dxhy/erp/entity/TDxRecordInvoiceDetail.java index 8590501d..e7bae17e 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/entity/TDxRecordInvoiceDetail.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/entity/TDxRecordInvoiceDetail.java @@ -79,6 +79,11 @@ public class TDxRecordInvoiceDetail implements Serializable { */ private String taxRate; + /** + * 税码 + */ + private String taxCode; + /** * 税额 */ diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/entity/TdxRecordInvoice.java b/dxhy-erp/src/main/java/com/dxhy/erp/entity/TdxRecordInvoice.java index 70051bd1..e75101f4 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/entity/TdxRecordInvoice.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/entity/TdxRecordInvoice.java @@ -494,4 +494,6 @@ public class TdxRecordInvoice implements Serializable { * g公司id */ private String compCode; + + private String invoiceSource; } diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/SignFpqsService.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/SignFpqsService.java new file mode 100644 index 00000000..db9e112e --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/SignFpqsService.java @@ -0,0 +1,32 @@ +package com.dxhy.erp.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.dxhy.common.service.MpBaseService; +import com.dxhy.common.vo.UserInfo; +import com.dxhy.erp.entity.QsExcelEntity; +import com.dxhy.erp.entity.TdxRecordInvoiceStatistics; +import com.dxhy.erp.entity.TdxRecordInvoice; + +import java.text.ParseException; +import java.util.List; +import java.util.Map; + +/** + * + * 发票签收业务处理接口 + * + * @author peipei.li + * @date 2019-05-09 + */ +public interface SignFpqsService extends MpBaseService { + + /** + * 税率统计信息 + * + * @param queryInvoiceResult + * 发票信息 + * @return 税率统计信息 + */ + List buildRecordInvoiceStatisticsList(JSONObject queryInvoiceResult); +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/SignInvoiceDetailService.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/SignInvoiceDetailService.java new file mode 100644 index 00000000..43a56467 --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/SignInvoiceDetailService.java @@ -0,0 +1,38 @@ +package com.dxhy.erp.service; + +import com.dxhy.common.service.MpBaseService; +import com.dxhy.erp.entity.TDxRecordInvoiceDetail; + +import java.util.List; + +/** + * + * 底账明细表的业务操作接口 + * + * @author peipei.li + * @date 2019-05-09 + */ +public interface SignInvoiceDetailService extends MpBaseService { + + /** + * 保存发票明细 + * + * @param details + * 明细 + * @param dbName + * 数据源 + */ + void saveInvoiceDetail(List details, String dbName); + + /** + * 删除明细 + * + * @param uuid + * uuid + * @param dbName + * 数据源 + * @return 返回结果 + */ + boolean deleteDetail(String uuid, String dbName); + +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/SignInvoiceStatisticsService.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/SignInvoiceStatisticsService.java new file mode 100644 index 00000000..e4fc399f --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/SignInvoiceStatisticsService.java @@ -0,0 +1,38 @@ +package com.dxhy.erp.service; + +import com.dxhy.common.service.MpBaseService; +import com.dxhy.erp.entity.TdxRecordInvoiceStatistics; + +import java.util.List; + +/** + * + * 税率统计表业务处理接口 + * + * @author peipei.li + * @date 2019-05-09 + */ +public interface SignInvoiceStatisticsService extends MpBaseService { + /** + * 保存税率统计 + * + * @param statisticsList + * 请求参数 + * @param dbName + * 数据源 + */ + void saveInvoiceStatistics(List statisticsList, String dbName); + + /** + * 删除税率统计 + * + * @param invoiceCode + * 发票代码 + * @param invoiceNo + * 发票号码 + * @param dbName + * 数据源 + * @return 返回结果 + */ + boolean deleteStatistics(String invoiceCode, String invoiceNo, String dbName); +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/SignJdcService.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/SignJdcService.java new file mode 100644 index 00000000..45110798 --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/SignJdcService.java @@ -0,0 +1,31 @@ +package com.dxhy.erp.service; + +import com.dxhy.common.service.MpBaseService; +import com.dxhy.erp.entity.TDxVehicleSaleInvoice; + +/** + * + * 机动车明细表业务处理接口 * @author peipei.li * @date 2019-05-09 + */ +public interface SignJdcService extends MpBaseService { + /** + * 删除机动车发票 + * + * @param uuid + * uuid + * @param dbName + * 数据源 + * @return 返回结果 + */ + boolean deleteVehicleSaleInvoice(String uuid, String dbName); + + /** + * 保存机动车发票 + * + * @param tDxVehicleSaleInvoice + * 请求参数 + * @param dbName + * 数据源 + */ + void saveVehicleSaleInvoice(TDxVehicleSaleInvoice tDxVehicleSaleInvoice, String dbName); +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignFpqsServiceImpl.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignFpqsServiceImpl.java new file mode 100644 index 00000000..16ca6cd5 --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignFpqsServiceImpl.java @@ -0,0 +1,155 @@ +package com.dxhy.erp.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.dxhy.common.enums.FplxEnum; +import com.dxhy.common.service.impl.MpBaseServiceImpl; +import com.dxhy.erp.dao.SignRecordInvoiceDao; +import com.dxhy.erp.entity.TDxRecordInvoiceDetail; +import com.dxhy.erp.entity.TdxRecordInvoiceStatistics; +import com.dxhy.erp.entity.TdxRecordInvoice; +import com.dxhy.erp.service.SignFpqsService; +import com.dxhy.erp.service.SignSaveInvoiceInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; + +/** + * 发票签收业务逻辑处理实现类 + * + * @author jiaohongyang + */ +@Service("signFpqsService") +@Slf4j +@SuppressWarnings({"AlibabaUndefineMagicConstant", "AlibabaMethodTooLong", "AlibabaCollectionInitShouldAssignCapacity", + "AlibabaStringConcat", "AlibabaCollectionInitShouldAssignCapacity"}) +public class SignFpqsServiceImpl extends MpBaseServiceImpl + implements SignFpqsService { + + /** + * 构建统计实体集 + * + * @param queryInvoiceResult + * 响应实体 + * @return 抵账统计实体 + */ + @Override + public List buildRecordInvoiceStatisticsList(JSONObject queryInvoiceResult) { + List recordInvoiceDetail = getRecordInvoiceDetail(queryInvoiceResult); + // 定义返回值 + final List recordInvoiceStatisticsList = new ArrayList<>(); + // 最终要的结果 + final Map> resultMap = new HashMap<>(); + // 按税率分组 + recordInvoiceDetail.forEach(dataItem -> { + if (!"原价合计".equals(dataItem.getGoodsName().trim()) && !"折扣额合计".equals(dataItem.getGoodsName().trim()) + && !"(详见销货清单)".equals(dataItem.getGoodsName().trim()) + && !"(详见销货清单)".equals(dataItem.getGoodsName().trim()) + && org.apache.commons.lang.StringUtils.isNotEmpty(dataItem.getTaxRate())) { + if (resultMap.containsKey(dataItem.getTaxRate())) { + resultMap.get(dataItem.getTaxRate()).add(dataItem); + } else { + final List list = new ArrayList<>(); + list.add(dataItem); + resultMap.put(dataItem.getTaxRate(), list); + } + } + }); + String invoiceType = queryInvoiceResult.getString("invoiceType"); + // 循环遍历map获取每组明细,并循环遍历每组里的明细组装抵账统计数据 + for (Map.Entry> entry : resultMap.entrySet()) { + // 获取每组明细 + final List detailList = entry.getValue(); + // 定义抵账统计实体 + final TdxRecordInvoiceStatistics recordInvoiceStatistics = new TdxRecordInvoiceStatistics(); + // 税额 + BigDecimal taxAmount = new BigDecimal("0.0"); + // 金额 + BigDecimal detailAmount = new BigDecimal("0.0"); + // 循环赋值 + for (TDxRecordInvoiceDetail invoiceDetail : detailList) { + BigDecimal bigDecimal; + try { + bigDecimal = new BigDecimal(invoiceDetail.getTaxAmount()); + } catch (Exception e) { + bigDecimal = new BigDecimal("0"); + } + taxAmount = taxAmount.add(bigDecimal); + detailAmount = detailAmount.add(new BigDecimal(invoiceDetail.getDetailAmount())); + + } + // 价税合计 + final BigDecimal totalAmount = taxAmount.add(detailAmount); + // 税率 + recordInvoiceStatistics.setTaxRate(entry.getKey()); + if(FplxEnum.QDZZP.getFplxDm().equals(invoiceType) || FplxEnum.QDPP.getFplxDm().equals(invoiceType)){ + // 发票号码 + recordInvoiceStatistics.setInvoiceNo(queryInvoiceResult.getString("invoiceCode")+queryInvoiceResult.getString("invoiceNo")); + }else { + // 发票号码 + recordInvoiceStatistics.setInvoiceNo(queryInvoiceResult.getString("invoiceNo")); + // 发票代码 + recordInvoiceStatistics.setInvoiceCode(queryInvoiceResult.getString("invoiceCode")); + } + // 税额 + recordInvoiceStatistics.setTaxAmount(taxAmount.toString()); + // 金额 + recordInvoiceStatistics.setDetailAmount(detailAmount); + // 价税合计 + recordInvoiceStatistics.setTotalAmount(totalAmount); + // 放入集合 + recordInvoiceStatisticsList.add(recordInvoiceStatistics); + } + // 返回 + return recordInvoiceStatisticsList; + } + + public List getRecordInvoiceDetail(JSONObject queryInvoiceResult) { + if (queryInvoiceResult.containsKey("detailList")) { + JSONArray dataArray = queryInvoiceResult.getJSONArray("detailList"); + if (dataArray != null && dataArray.size() > 0) { + String invoiceType = queryInvoiceResult.getString("invoiceType"); + String invoiceCode = queryInvoiceResult.getString("invoiceCode"); + String invoiceNo = queryInvoiceResult.getString("invoiceNo"); + String uuid = invoiceCode + invoiceNo; + List invoiceDetailList = new ArrayList<>(dataArray.size()); + for (int i = 0; i < dataArray.size(); i++) { + JSONObject invoiceDetailQuery = dataArray.getJSONObject(i); + TDxRecordInvoiceDetail invoiceDetail = new TDxRecordInvoiceDetail(); + invoiceDetail.setUuid(uuid); + if(FplxEnum.QDZZP.getFplxDm().equals(invoiceType) || FplxEnum.QDPP.getFplxDm().equals(invoiceType)){ + invoiceDetail.setInvoiceNo(uuid); + }else { + invoiceDetail.setInvoiceCode(invoiceCode); + invoiceDetail.setInvoiceNo(invoiceNo); + } + invoiceDetail.setDetailNo(invoiceDetailQuery.getString("detailNo")); + invoiceDetail.setGoodsName(invoiceDetailQuery.getString("goodsName")); + invoiceDetail.setModel(invoiceDetailQuery.getString("specificationModel")); + invoiceDetail.setUnit(invoiceDetailQuery.getString("unit")); + invoiceDetail.setNum(invoiceDetailQuery.getString("num")); + invoiceDetail.setUnitPrice(invoiceDetailQuery.getString("unitPrice")); + invoiceDetail.setDetailAmount(invoiceDetailQuery.getString("detailAmount")); + invoiceDetail.setTaxRate(invoiceDetailQuery.getString("taxRate")); + invoiceDetail.setTaxAmount(invoiceDetailQuery.getString("taxAmount")); + if (FplxEnum.TXF.getFplxDm().equals(invoiceType)) { + // 通行费发票 + invoiceDetail.setCph(invoiceDetailQuery.getString("cph")); + invoiceDetail.setLx(invoiceDetailQuery.getString("lx")); + invoiceDetail.setTxrqq(invoiceDetailQuery.getString("txrqq")); + invoiceDetail.setTxrqz(invoiceDetailQuery.getString("txrqz")); + } + invoiceDetailList.add(invoiceDetail); + } + return invoiceDetailList; + } else { + return null; + } + } else { + return null; + } + } +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignInvoiceDetailServiceImpl.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignInvoiceDetailServiceImpl.java new file mode 100644 index 00000000..25ad0416 --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignInvoiceDetailServiceImpl.java @@ -0,0 +1,64 @@ +package com.dxhy.erp.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.dxhy.common.constant.DbConstant; +import com.dxhy.common.datasource.config.DynamicContextHolder; +import com.dxhy.common.service.impl.MpBaseServiceImpl; +import com.dxhy.erp.dao.SignRecordInvoiceDetailDao; +import com.dxhy.erp.entity.TDxRecordInvoiceDetail; +import com.dxhy.erp.service.SignInvoiceDetailService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * + * + * 底账明细表业务实现类 + * + * @author ld + * + * + */ +@Service("signInvoiceDetailService") +@Slf4j + +public class SignInvoiceDetailServiceImpl extends MpBaseServiceImpl + implements SignInvoiceDetailService { + + @Override + public void saveInvoiceDetail(List details, String dbName) { + DynamicContextHolder.push(dbName + DbConstant.DETAIL_WRITE); + this.insertDetail(details); + + } + + @Transactional(rollbackFor = Exception.class) + public void insertDetail(List details) { + /* + 批量操作的大小 + */ + int batchSize = 500; + this.saveBatch(details, batchSize); + } + + @Override + public boolean deleteDetail(String uuid, String dbName) { + DynamicContextHolder.push(dbName + DbConstant.DETAIL_WRITE); + return this.removeDetail(uuid); + } + + @Transactional(rollbackFor = Exception.class) + public boolean removeDetail(String uuid) { + try { + baseMapper.delete(new QueryWrapper().eq("uuid", uuid)); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignInvoiceStatisticsServiceImpl.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignInvoiceStatisticsServiceImpl.java new file mode 100644 index 00000000..84154467 --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignInvoiceStatisticsServiceImpl.java @@ -0,0 +1,61 @@ +package com.dxhy.erp.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.dxhy.common.constant.DbConstant; +import com.dxhy.common.datasource.config.DynamicContextHolder; +import com.dxhy.common.service.impl.MpBaseServiceImpl; +import com.dxhy.erp.dao.SignRecordInvoiceStatisticsDao; +import com.dxhy.erp.entity.TdxRecordInvoiceStatistics; +import com.dxhy.erp.service.SignInvoiceStatisticsService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * + * + * 税率统计表业务处理实现类 + * + * @author ld + */ +@Service("signInvoiceStatisticsService") +@Slf4j + +public class SignInvoiceStatisticsServiceImpl + extends MpBaseServiceImpl + implements SignInvoiceStatisticsService { + + @Override + public void saveInvoiceStatistics(List statisticsList, String dbName) { + DynamicContextHolder.push(dbName + DbConstant.BUSINESS_WRITE); + this.insertStatistics(statisticsList); + } + + @Transactional(rollbackFor = Exception.class) + public void insertStatistics(List statisticsList) { + this.saveBatch(statisticsList); + } + + @Override + public boolean deleteStatistics(String invoiceCode, String invoiceNo, String dbName) { + DynamicContextHolder.push(dbName + DbConstant.BUSINESS_WRITE); + + return this.removeStatistics(invoiceCode, invoiceNo); + } + + @Transactional(rollbackFor = Exception.class) + public boolean removeStatistics(String invoiceCode, String invoiceNo) { + try { + + int delete = baseMapper.delete(new QueryWrapper() + .eq("invoice_code", invoiceCode).eq("invoice_no", invoiceNo)); + return delete > 0; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignJdcServiceImpl.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignJdcServiceImpl.java new file mode 100644 index 00000000..3b1180d2 --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignJdcServiceImpl.java @@ -0,0 +1,55 @@ +package com.dxhy.erp.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.dxhy.common.constant.DbConstant; +import com.dxhy.common.datasource.config.DynamicContextHolder; +import com.dxhy.common.service.impl.MpBaseServiceImpl; +import com.dxhy.erp.dao.SignVehicleSaleInvoiceDao; +import com.dxhy.erp.entity.TDxVehicleSaleInvoice; +import com.dxhy.erp.service.SignJdcService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * + * 机动车明细表业务操作实现 + * + * @author ld + */ +@Service("signJdcService") +@Slf4j + +public class SignJdcServiceImpl extends MpBaseServiceImpl + implements SignJdcService { + + @Override + public boolean deleteVehicleSaleInvoice(String uuid, String dbName) { + DynamicContextHolder.push(dbName + DbConstant.BUSINESS_WRITE); + return this.removeVechicleSale(uuid); + } + + @Transactional(rollbackFor = Exception.class) + public boolean removeVechicleSale(String uuid) { + // 删除已存在的数据,防止数据重复 + try { + baseMapper.delete(new QueryWrapper().eq("uuid", uuid)); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + @Override + public void saveVehicleSaleInvoice(TDxVehicleSaleInvoice tDxVehicleSaleInvoice, String dbName) { + DynamicContextHolder.push(dbName + DbConstant.BUSINESS_WRITE); + this.insertInvoice(tDxVehicleSaleInvoice); + + } + + @Transactional(rollbackFor = Exception.class) + public void insertInvoice(TDxVehicleSaleInvoice tDxVehicleSaleInvoice) { + baseMapper.insert(tDxVehicleSaleInvoice); + } +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignSaveInvoiceInfoServiceImpl.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignSaveInvoiceInfoServiceImpl.java new file mode 100644 index 00000000..88bf23fa --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignSaveInvoiceInfoServiceImpl.java @@ -0,0 +1,896 @@ +package com.dxhy.erp.service.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.dxhy.common.constant.DbConstant; +import com.dxhy.common.datasource.config.DynamicContextHolder; +import com.dxhy.common.enums.*; +import com.dxhy.common.service.impl.MpBaseServiceImpl; +import com.dxhy.common.util.MathUtil; +import com.dxhy.common.util.NumberToCN; +import com.dxhy.common.util.StringHelper; +import com.dxhy.common.utils.Aops; +import com.dxhy.common.utils.DateUtils; +import com.dxhy.erp.dao.SignRecordInvoiceDao; +import com.dxhy.erp.entity.*; +import com.dxhy.erp.service.*; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 保存发票查验结果业务处理实现类 + * + * @author ld + */ +@SuppressWarnings("AlibabaUndefineMagicConstant") +@Service("signSaveInvoiceInfoService") +@Slf4j + +public class SignSaveInvoiceInfoServiceImpl extends MpBaseServiceImpl + implements SignSaveInvoiceInfoService { + + @Resource + private SignJdcService signJdcService; + + @Resource + private SignInvoiceDetailService signInvoiceDetailService; + + @Resource + private SignInvoiceStatisticsService signInvoiceStatisticsService; + @Resource + private SignFpqsService signFpqsService; + + @Override + public void saveQueryInvoiceResult(JSONObject queryInvoiceResult, String userName, String qsType, String dbName) { + + // 获取底账表信息 + TdxRecordInvoice recordInvoice = getRecordInvoice(queryInvoiceResult, userName, qsType); + // 获取机动车表信息 + TDxVehicleSaleInvoice vehicleSaleInvoice = getVehicleSaleInvoice(queryInvoiceResult); + // 底账明细表 + List recordInvoiceDetail = getRecordInvoiceDetail(queryInvoiceResult); + // 税率统计表 + List invoiceStatistics = getInvoiceStatistics(queryInvoiceResult); + + //获取二手车明细信息 + TDxVehicleSaleInvoice vehicleInvoice = vehicleInvoice(queryInvoiceResult); + + // 保存前先查询底账数据是否已存在,已存在则不用重复保存 + TdxRecordInvoice recordInvoiceExit = queryInvoice(recordInvoice.getUuid(), dbName); + if (recordInvoiceExit == null) { + // 机动车票 + if (vehicleSaleInvoice != null) { + DynamicContextHolder.push(dbName + DbConstant.BUSINESS_WRITE); + boolean saveVehicleSaleInvoice = + this.saveVehicleSaleInvoice(recordInvoice, vehicleSaleInvoice, invoiceStatistics); + if (saveVehicleSaleInvoice) { + boolean deleteVehicleSaleInvoice = + signJdcService.deleteVehicleSaleInvoice(recordInvoice.getUuid(), dbName); + if (deleteVehicleSaleInvoice) { + signJdcService.saveVehicleSaleInvoice(vehicleSaleInvoice, dbName); + } + // 保存税率统计表 + if (invoiceStatistics.size() > 0) { + boolean deleteStatistics = signInvoiceStatisticsService + .deleteStatistics(recordInvoice.getInvoiceCode(), recordInvoice.getInvoiceNo(), dbName); + if (deleteStatistics) { + signInvoiceStatisticsService.saveInvoiceStatistics(invoiceStatistics, dbName); + } + } + } + } + // 二手车 + if (vehicleInvoice != null) { + DynamicContextHolder.push(dbName + DbConstant.BUSINESS_WRITE); + boolean saveVehicleSaleInvoice = + this.saveVehicleSaleInvoice(recordInvoice, vehicleInvoice, invoiceStatistics); + if (saveVehicleSaleInvoice) { + if (vehicleInvoice != null) { + boolean deleteVehicleSaleInvoice = + signJdcService.deleteVehicleSaleInvoice(recordInvoice.getUuid(), dbName); + if (deleteVehicleSaleInvoice) { + signJdcService.saveVehicleSaleInvoice(vehicleInvoice, dbName); + } + } + // 保存税率统计表 + if (invoiceStatistics.size() > 0) { + DynamicContextHolder.push(dbName + DbConstant.BUSINESS_WRITE); + signInvoiceStatisticsService.remove(new UpdateWrapper() + .eq("invoice_code", recordInvoice.getInvoiceCode()).eq("invoice_no", recordInvoice.getInvoiceNo())); + signInvoiceStatisticsService.saveBatch(invoiceStatistics); + } + } + } + // 其它票,保存底账明细表数据 + if (recordInvoiceDetail != null && recordInvoiceDetail.size() > 0) { + DynamicContextHolder.push(dbName + DbConstant.BUSINESS_WRITE); + // 保存底账表数据 + boolean insertRecordInvoice = Aops.getSelf(this).insertRecordInvoice(recordInvoice); + if (insertRecordInvoice) { + // 保存底账明细表数据 + try { + // 删除已存在的数据,防止数据重复 + if (recordInvoiceDetail.size() > 0) { + boolean deleteDetail = + signInvoiceDetailService.deleteDetail(recordInvoice.getUuid(), dbName); + if (deleteDetail) { + signInvoiceDetailService.saveInvoiceDetail(recordInvoiceDetail, dbName); + } + } + + } catch (Exception e) { + e.printStackTrace(); + DynamicContextHolder.push(dbName + DbConstant.BUSINESS_WRITE); + // 保存明细表异常,设置底账表的明细标志为0,detail_yesorno=0 + TdxRecordInvoice invoice = new TdxRecordInvoice(); + invoice.setDetailYesorno("0"); + this.updateInvoice(invoice); + } + + // 保存税率统计表 + if (invoiceStatistics.size() > 0) { + DynamicContextHolder.push(dbName + DbConstant.BUSINESS_WRITE); + if (StringUtils.isNotBlank(recordInvoice.getInvoiceCode())) { + signInvoiceStatisticsService.remove(new UpdateWrapper() + .eq("invoice_code", recordInvoice.getInvoiceCode()).eq("invoice_no", recordInvoice.getInvoiceNo())); + } else { + signInvoiceStatisticsService.remove(new UpdateWrapper() + .eq("invoice_no", recordInvoice.getInvoiceNo())); + } + + signInvoiceStatisticsService.saveBatch(invoiceStatistics); + } + } + } + } else { + DynamicContextHolder.push(dbName + DbConstant.BUSINESS_WRITE); + TdxRecordInvoice recordInvoiceUpdate = new TdxRecordInvoice(); + recordInvoiceUpdate.setQsDate(DateUtils.getSqlDateLong()); + recordInvoiceUpdate.setQsName(userName); + recordInvoiceUpdate.setQsStatus(FpqsjgEnum.YQS.getQsjgDm()); + recordInvoiceUpdate.setQsType(qsType); + recordInvoiceUpdate.setUuid(recordInvoice.getUuid()); + if (recordInvoice.getDeptId() != null) { + recordInvoiceUpdate.setDeptId(recordInvoice.getDeptId()); + recordInvoiceUpdate.setDeptName(recordInvoice.getDeptName()); + } + this.updateInvoice(recordInvoiceUpdate); + } + } + + /** + * 查看抵账表数据是否存在 + * + * @param uuid uuid + * @param dbName 数据源 + * @return 返回结果 + */ + public TdxRecordInvoice queryInvoice(String uuid, String dbName) { + DynamicContextHolder.push(dbName + DbConstant.BUSINESS_READ); + return baseMapper.selectOne(new QueryWrapper().eq("uuid", uuid)); + } + + /** + * 修改抵账表数据 + * + * @param recordInvoiceUpdate 请求参数 + */ + @Transactional(rollbackFor = Exception.class) + public void updateInvoice(TdxRecordInvoice recordInvoiceUpdate) { + try { + baseMapper.update(recordInvoiceUpdate, + new QueryWrapper().eq("uuid", recordInvoiceUpdate.getUuid())); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 保存抵账表数据 + * + * @param recordInvoice 请求参数 + * @return 返回结果 + */ + @Transactional(rollbackFor = Exception.class) + public boolean insertRecordInvoice(TdxRecordInvoice recordInvoice) { + try { + baseMapper.insert(recordInvoice); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 根据查验结果获取税率统计表对象 + * + * @param queryInvoiceResult 请求参数 + * @return 返回结果 + */ + private List getInvoiceStatistics(JSONObject queryInvoiceResult) { + List invoiceStatisticsList = new ArrayList<>(); + String invoiceType = queryInvoiceResult.getString("invoiceType"); + if (FplxEnum.JDC.getFplxDm().equals(invoiceType)) { + TdxRecordInvoiceStatistics invoiceStatistics = new TdxRecordInvoiceStatistics(); + invoiceStatistics.setCreateDate(DateUtils.getSqlDateLong()); + invoiceStatistics.setInvoiceCode(queryInvoiceResult.getString("invoiceCode")); + invoiceStatistics.setInvoiceNo(queryInvoiceResult.getString("invoiceNo")); + invoiceStatistics.setDetailAmount(queryInvoiceResult.getBigDecimal("invoiceAmount")); + invoiceStatistics.setTaxRate(queryInvoiceResult.getString("taxRate")); + if (queryInvoiceResult.getBigDecimal("taxAmount") != null) { + invoiceStatistics.setTaxAmount(queryInvoiceResult.getBigDecimal("taxAmount").toString()); + } + invoiceStatistics.setTotalAmount(queryInvoiceResult.getBigDecimal("totalAmount")); + invoiceStatisticsList.add(invoiceStatistics); + } else if (FplxEnum.ESC.getFplxDm().equals(invoiceType)) { + TdxRecordInvoiceStatistics invoiceStatistics = new TdxRecordInvoiceStatistics(); + invoiceStatistics.setCreateDate(DateUtils.getSqlDateLong()); + invoiceStatistics.setInvoiceCode(queryInvoiceResult.getString("invoiceCode")); + invoiceStatistics.setInvoiceNo(queryInvoiceResult.getString("invoiceNo")); + invoiceStatistics.setDetailAmount(queryInvoiceResult.getBigDecimal("carPrice")); + invoiceStatistics.setTotalAmount(queryInvoiceResult.getBigDecimal("carPrice")); + invoiceStatisticsList.add(invoiceStatistics); + } else { + if (queryInvoiceResult.containsKey("detailList")) { + invoiceStatisticsList = signFpqsService.buildRecordInvoiceStatisticsList(queryInvoiceResult); + } + } + + return invoiceStatisticsList; + } + + /** + * 保存机动车 + * + * @param recordInvoice 请求参数 + * @param vehicleSaleInvoice 请求参数 + * @param invoiceStatistics 请求参数 + */ + @Transactional(rollbackFor = Exception.class) + public boolean saveVehicleSaleInvoice(TdxRecordInvoice recordInvoice, TDxVehicleSaleInvoice vehicleSaleInvoice, + List invoiceStatistics) { + // 保存底账表数据 + try { + String uuid = recordInvoice.getUuid(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("uuid", uuid); + TdxRecordInvoice invoice = baseMapper.selectOne(queryWrapper); + if (invoice == null) + baseMapper.insert(recordInvoice); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + @Override + public List getRecordInvoiceDetail(JSONObject queryInvoiceResult) { + if (queryInvoiceResult.containsKey("invoiceLineList")) { + JSONArray dataArray = queryInvoiceResult.getJSONArray("invoiceLineList"); + if (dataArray != null && dataArray.size() > 0) { + String invoiceType = queryInvoiceResult.getString("invoiceType"); + String invoiceCode = queryInvoiceResult.getString("invoiceCode"); + String invoiceNo = queryInvoiceResult.getString("invoiceNo"); + String uuid = invoiceCode + invoiceNo; + List invoiceDetailList = new ArrayList<>(dataArray.size()); + for (int i = 0; i < dataArray.size(); i++) { + JSONObject invoiceDetailQuery = dataArray.getJSONObject(i); + TDxRecordInvoiceDetail invoiceDetail = new TDxRecordInvoiceDetail(); + invoiceDetail.setUuid(uuid); + if (FplxEnum.QDZZP.getFplxDm().equals(invoiceType) || FplxEnum.QDPP.getFplxDm().equals(invoiceType)) { + invoiceDetail.setInvoiceNo(uuid); + } else { + invoiceDetail.setInvoiceCode(invoiceCode); + invoiceDetail.setInvoiceNo(invoiceNo); + } + invoiceDetail.setDetailNo(invoiceDetailQuery.getString("detailNo")); + invoiceDetail.setGoodsName(invoiceDetailQuery.getString("goodsName")); + invoiceDetail.setModel(invoiceDetailQuery.getString("specificationModel")); + invoiceDetail.setUnit(invoiceDetailQuery.getString("unit")); + invoiceDetail.setNum(invoiceDetailQuery.getString("num")); + invoiceDetail.setUnitPrice(invoiceDetailQuery.getString("unitPrice")); + invoiceDetail.setDetailAmount(invoiceDetailQuery.getString("detailAmount")); + invoiceDetail.setTaxRate(invoiceDetailQuery.getString("taxRate")); + if(invoiceDetailQuery.getString("taxRate") != null){ + invoiceDetail.setTaxCode(getZSM(invoiceDetailQuery.getString("taxRate"))); + } + + invoiceDetail.setTaxAmount(invoiceDetailQuery.getString("taxAmount")); + if (FplxEnum.TXF.getFplxDm().equals(invoiceType)) { + // 通行费发票 + invoiceDetail.setCph(invoiceDetailQuery.getString("cph")); + invoiceDetail.setLx(invoiceDetailQuery.getString("lx")); + invoiceDetail.setTxrqq(invoiceDetailQuery.getString("txrqq")); + invoiceDetail.setTxrqz(invoiceDetailQuery.getString("txrqz")); + } + invoiceDetailList.add(invoiceDetail); + } + return invoiceDetailList; + } else { + return null; + } + } else { + return null; + } + } + + private String getZSM(String taxRate) { + + String sm = ""; + + switch (taxRate) { + // 发票采集 + case "0.00": + sm = "J0"; + break; + case "免税": + sm = "J0"; + break; + case "0.16": + sm = "J1"; + break; + case "0.13": + sm = "J2"; + break; + case "0.10": + sm = "J3"; + break; + case "0.09": + sm = "J4"; + break; + case "0.06": + sm = "J5"; + break; + case "0.05": + sm = "J6"; + break; + case "0.03": + sm = "J7"; + break; + case "0.02": + sm = "J8"; + break; + case "0.01": + sm = "J9"; + break; + case "0.17": + sm = "JC"; + break; + default: + sm = ""; + break; + + } + return sm; + } + + @Override + public TDxVehicleSaleInvoice getVehicleSaleInvoice(JSONObject queryInvoiceResult) { + String invoiceType = queryInvoiceResult.getString("invoiceType"); + if (FplxEnum.JDC.getFplxDm().equals(invoiceType)) { + String invoiceCode = queryInvoiceResult.getString("invoiceCode"); + String invoiceNo = queryInvoiceResult.getString("invoiceNo"); + String uuid = invoiceCode + invoiceNo; + + TDxVehicleSaleInvoice vehicleSaleInvoice = new TDxVehicleSaleInvoice(); + vehicleSaleInvoice.setUuid(uuid); + vehicleSaleInvoice.setBuyerIdNum(queryInvoiceResult.getString("buyerIDNum")); + vehicleSaleInvoice.setVehicleType(queryInvoiceResult.getString("vehicleType")); + vehicleSaleInvoice.setFactoryModel(queryInvoiceResult.getString("factoryModel")); + vehicleSaleInvoice.setProductPlace(queryInvoiceResult.getString("productPlace")); + vehicleSaleInvoice.setCertificate(queryInvoiceResult.getString("certificate")); + vehicleSaleInvoice.setCertificateImport(queryInvoiceResult.getString("certificateImport")); + vehicleSaleInvoice.setInspectionNum(queryInvoiceResult.getString("inspectionNum")); + vehicleSaleInvoice.setEngineNo(queryInvoiceResult.getString("engineNo")); + vehicleSaleInvoice.setVehicleNo(queryInvoiceResult.getString("vehicleNo")); + vehicleSaleInvoice.setTaxBureauCode(queryInvoiceResult.getString("taxBureauCode")); + vehicleSaleInvoice.setTaxBureauName(queryInvoiceResult.getString("taxBureauName")); + vehicleSaleInvoice.setTaxRecords(queryInvoiceResult.getString("taxRecords")); + vehicleSaleInvoice.setTonnage(queryInvoiceResult.getString("tonnage")); + vehicleSaleInvoice.setLimitPeople(queryInvoiceResult.getString("limitPeople")); + vehicleSaleInvoice.setTaxRate(queryInvoiceResult.getString("taxRate")); + vehicleSaleInvoice.setCompany(queryInvoiceResult.getString("company")); + return vehicleSaleInvoice; + } else { + return null; + } + } + + @Override + public TdxRecordInvoice getRecordInvoice(JSONObject queryInvoiceResult, String userName, String qsType) { + TdxRecordInvoice invoice = new TdxRecordInvoice(); + + String invoiceType = queryInvoiceResult.getString("invoiceType"); + String invoiceCode = queryInvoiceResult.getString("invoiceCode"); + String invoiceNo = queryInvoiceResult.getString("invoiceNo"); + String uuid = invoiceCode + invoiceNo; + + invoice.setInvoiceType(invoiceType); + if (FplxEnum.QDZZP.getFplxDm().equals(invoiceType) || FplxEnum.QDPP.getFplxDm().equals(invoiceType)) { + invoice.setInvoiceNo(uuid); + } else { + invoice.setInvoiceCode(invoiceCode); + invoice.setInvoiceNo(invoiceNo); + } + invoice.setUuid(uuid); + if ("Y".equals(queryInvoiceResult.getString("isCancelled"))) { + invoice.setInvoiceStatus(FpztEnum.ZF.getFpztDm(FpztEnum.ZF.getIndex())); + } else if ("N".equals(queryInvoiceResult.getString("isCancelled"))) { + invoice.setInvoiceStatus(FpztEnum.ZC.getFpztDm(FpztEnum.ZC.getIndex())); + } else { + invoice.setInvoiceStatus(queryInvoiceResult.getString("isCancelled")); + } + + if (queryInvoiceResult.getString("totalAmount") != null && StringUtils.isNoneBlank(queryInvoiceResult.getString("totalAmount"))) { + BigDecimal invoiceAmount = new BigDecimal(queryInvoiceResult.getString("totalAmount")); + invoice.setInvoiceAmount(invoiceAmount); + } + + if (queryInvoiceResult.getString("totalTax") != null && StringUtils.isNoneBlank(queryInvoiceResult.getString("totalTax"))) { + BigDecimal taxAmount = new BigDecimal(queryInvoiceResult.getString("totalTax")); + invoice.setTaxAmount(taxAmount); + } + + if (queryInvoiceResult.getString("amountTax") != null && StringUtils.isNoneBlank(queryInvoiceResult.getString("amountTax"))) { + BigDecimal totalAmount = new BigDecimal(queryInvoiceResult.getString("amountTax")); + invoice.setTotalAmount(totalAmount); + } + + invoice.setInvoiceDate(queryInvoiceResult.getDate("billingDate")); + invoice.setGfAddressAndPhone(queryInvoiceResult.getString("purchaserAddressPhone")); + invoice.setGfBankAndNo(queryInvoiceResult.getString("purchaserBank")); + invoice.setGfName(queryInvoiceResult.getString("purchaserName")); + invoice.setGfTaxNo(queryInvoiceResult.getString("purchaserTaxNo")); + invoice.setXfAddressAndPhone(queryInvoiceResult.getString("salesAddressPhone")); + invoice.setXfBankAndNo(queryInvoiceResult.getString("salesBank")); + invoice.setXfName(queryInvoiceResult.getString("salesName")); + invoice.setXfTaxNo(queryInvoiceResult.getString("salesTaxNo")); + if (FplxEnum.ESC.getFplxDm().equals(invoiceType)) { + invoice.setInvoiceAmount(queryInvoiceResult.getBigDecimal("carPrice")); + invoice.setTotalAmount(queryInvoiceResult.getBigDecimal("carPrice")); + invoice.setGfName(queryInvoiceResult.getString("purchaserName")); + invoice.setGfTaxNo(queryInvoiceResult.getString("purchaserTaxNo")); + invoice.setGfAddressAndPhone(queryInvoiceResult.getString("purchaserAddressPhone")); + invoice.setXfName(queryInvoiceResult.getString("salesName")); + invoice.setXfTaxNo(queryInvoiceResult.getString("salesTaxNo")); + invoice.setXfAddressAndPhone(queryInvoiceResult.getString("salesAddressPhone")); + } + invoice.setMachinecode(queryInvoiceResult.getString("machineNo")); + invoice.setRemark(queryInvoiceResult.getString("remarks")); + invoice.setCheckCode(queryInvoiceResult.getString("checkCode")); + invoice.setTxfbz(queryInvoiceResult.getString("tollSign")); + invoice.setSourceSystem("1"); + invoice.setCompany(queryInvoiceResult.getString("company")); + if (FplxEnum.JDC.getFplxDm().equals(invoiceType)) { + invoice.setDetailYesorno("0"); + } else { + if (queryInvoiceResult.containsKey("detailList")) { + JSONArray dataArray = queryInvoiceResult.getJSONArray("detailList"); + if (dataArray != null && dataArray.size() > 0) { + invoice.setDetailYesorno("1"); + + } else { + invoice.setDetailYesorno("0"); + } + } else { + invoice.setDetailYesorno("0"); + } + } + invoice.setCreateDate(new Date()); + invoice.setLastUpdateDate(new Date()); + invoice.setValid("1"); + invoice.setDeptName(queryInvoiceResult.getString("deptName")); + invoice.setDeptId(queryInvoiceResult.getString("deptId")); + invoice.setRzhYesorno("0"); + invoice.setAuthStatus("0"); +// if(QsfsEnum.PDFQS.getQsfsDm().equals(qsType) || QsfsEnum.SMYQS.getQsfsDm().equals(qsType)){ +// invoice.setScanId(queryInvoiceResult.getString("scanId")); +// } + if (FplxEnum.QDPP.getFplxDm().equals(invoiceType) || FplxEnum.QDZZP.getFplxDm().equals(invoiceType)) { + invoice.setInvoiceSource("1"); + } else { + invoice.setInvoiceSource("0"); + } + invoice.setScanId(queryInvoiceResult.getString("scanId")); + return invoice; + } + + @Override + public JSONObject createInvoiceInfo(TdxRecordInvoice invoiceRecord, String dbName) { + String uuid = invoiceRecord.getUuid(); + String invoiceType = invoiceRecord.getInvoiceType(); + + TDxVehicleSaleInvoice vehicleSaleInfo = null; + List invoiceDetailList = null; + + DynamicContextHolder.push(dbName + DbConstant.BUSINESS_READ); + if (FplxEnum.JDC.getFplxDm().equals(invoiceType)) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("uuid", uuid); + vehicleSaleInfo = signJdcService.getOne(queryWrapper); + } else { + DynamicContextHolder.push(dbName + DbConstant.DETAIL_READ); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("uuid", uuid); + queryWrapper.orderByAsc("detail_no"); + invoiceDetailList = signInvoiceDetailService.list(queryWrapper); + } + return this.createCheckInfo(invoiceRecord, vehicleSaleInfo, invoiceDetailList); + } + + /** + * 根据数据拼接需要返回的报文 + * + * @param invoiceRecord 底账表信息 + * @param vehicleSaleInfo 机动车表信息 + * @param invoiceDetailList 底账明细表信息 + * @return 返回结果 + */ + private JSONObject createCheckInfo(TdxRecordInvoice invoiceRecord, TDxVehicleSaleInvoice vehicleSaleInfo, + List invoiceDetailList) { + + JSONObject checkInfo = new JSONObject(); + InvoiceSubjectVO checkRecordVo = this.convertToCheckRecordVo(invoiceRecord); + + // 取发票上的价税合计 + String totalAmount = checkRecordVo.getTotalAmount(); + // 价税合计小写 + checkInfo.put("detailAmountTotal", totalAmount); + // 价税合计大写 + checkInfo.put("stringTotalAmount", NumberToCN.number2CNMontrayUnit(new BigDecimal(totalAmount))); + // 发票票面信息 + checkInfo.put("invoiceSubjectList", JSON.toJSON(checkRecordVo)); + // 机动车部分信息 + if (vehicleSaleInfo != null) { + CheckVehicleSaleVO checkVehicleSaleVo = this.convertToVehicleSaleVo(vehicleSaleInfo); + checkInfo.put("vehicle", JSON.toJSON(checkVehicleSaleVo)); + } else { + checkInfo.put("vehicle", new JSONObject()); + } + String se = ""; + // 发票明细 + if (invoiceDetailList != null && invoiceDetailList.size() > 0) { + int count = invoiceDetailList.size(); + + JSONArray detail = new JSONArray(count); + for (TDxRecordInvoiceDetail tDxRecordInvoiceDetail : invoiceDetailList) { + CheckRecordInvoiceDetailVO checkRecordDetailVo = this.convertToRecordDetailVo(tDxRecordInvoiceDetail); + // 明细框 税额合计 + detail.add(JSON.toJSON(checkRecordDetailVo)); + try { + Double.parseDouble(checkRecordDetailVo.getTaxAmount()); + } catch (Exception e) { + se = checkRecordDetailVo.getTaxAmount(); + } + } + checkInfo.put("invoiceDetails", detail); + checkInfo.put("detailAmountSum", MathUtil.round(invoiceRecord.getInvoiceAmount().toPlainString())); + if (StringUtils.isNotBlank(se)) { + checkInfo.put("taxAmountSum", se); + } else { + checkInfo.put("taxAmountSum", MathUtil.round(invoiceRecord.getTaxAmount().toPlainString())); + } + } else { + checkInfo.put("invoiceDetails", new JSONArray()); + checkInfo.put("detailAmountSum", "0"); + checkInfo.put("taxAmountSum", "0"); + } + + return checkInfo; + } + + private InvoiceSubjectVO convertToCheckRecordVo(TdxRecordInvoice invoiceRecord) { + InvoiceSubjectVO checkRecordVo = new InvoiceSubjectVO(); + String fpzt = this.getFpzt(invoiceRecord.getInvoiceStatus()); + String rzzt = this.getRzzt(invoiceRecord.getAuthStatus()); + String fpzlMc = this.getFpzlMc(invoiceRecord.getInvoiceType()); + String rzType = this.getRztype(invoiceRecord.getRzhType()); + String qsStatus = this.getQsStatus(invoiceRecord.getQsStatus()); + String qsType = this.getQsType(invoiceRecord.getQsType()); + String rzlx = this.getRzlx(invoiceRecord.getRzlx()); + String rzhYesorno = this.getRzhYesorno(invoiceRecord.getRzhYesorno()); + String gxUserName = invoiceRecord.getConfirmUser(); + String dqskssq = invoiceRecord.getRzhBelongDate(); + checkRecordVo.setInvoiceStatus(fpzt); + checkRecordVo.setSourceSystem( + (StringUtils.isNotBlank(invoiceRecord.getSourceSystem()) && "1".equals(invoiceRecord.getSourceSystem())) + ? "查验" : "采集"); + if (invoiceRecord.getCreateDate() != null) { + checkRecordVo.setCreateDate(DateUtils.dateToStrLong(invoiceRecord.getCreateDate())); + } else { + checkRecordVo.setCreateDate(""); + } + checkRecordVo.setGxUserName(StringHelper.trimEnter(invoiceRecord.getGxUserName())); + checkRecordVo.setRzhType(StringHelper.trimEnter(rzType)); + checkRecordVo.setInvoiceType(StringHelper.trimEnter(invoiceRecord.getInvoiceType())); + checkRecordVo.setInvoiceString(StringHelper.trimEnter(fpzlMc)); + checkRecordVo.setInvoiceCode(invoiceRecord.getInvoiceCode()); + checkRecordVo.setInvoiceNo(invoiceRecord.getInvoiceNo()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); + checkRecordVo.setInvoiceDate(sdf.format(invoiceRecord.getInvoiceDate())); + checkRecordVo.setInvoiceAmount(invoiceRecord.getInvoiceAmount() == null ? "" + : MathUtil.round(invoiceRecord.getInvoiceAmount().toPlainString())); + checkRecordVo.setTaxAmount( + invoiceRecord.getTaxAmount() == null ? "" : MathUtil.round(invoiceRecord.getTaxAmount().toPlainString())); + if (invoiceRecord.getTotalAmount() == null) { + BigDecimal add = invoiceRecord.getInvoiceAmount().add(invoiceRecord.getTaxAmount()); + checkRecordVo.setTotalAmount(MathUtil.round(add.toPlainString())); + } else { + checkRecordVo.setTotalAmount(invoiceRecord.getTotalAmount() == null ? "" + : MathUtil.round(invoiceRecord.getTotalAmount().toPlainString())); + } + checkRecordVo.setGfTaxNo(StringHelper.trimEnter(invoiceRecord.getGfTaxNo())); + checkRecordVo.setGfName(StringHelper.trimEnter(invoiceRecord.getGfName())); + checkRecordVo.setGfAddressAndPhone(StringHelper.trimEnter(invoiceRecord.getGfAddressAndPhone())); + checkRecordVo.setGfBankAndNo(StringHelper.trimEnter(invoiceRecord.getGfBankAndNo())); + checkRecordVo.setXfTaxNo(StringHelper.trimEnter(invoiceRecord.getXfTaxNo())); + checkRecordVo.setXfName(StringHelper.trimEnter(invoiceRecord.getXfName())); + checkRecordVo.setXfAddressAndPhone(StringHelper.trimEnter(invoiceRecord.getXfAddressAndPhone())); + checkRecordVo.setXfBankAndNo(StringHelper.trimEnter(invoiceRecord.getXfBankAndNo())); + checkRecordVo.setDqskssq(StringHelper.trimEnter(invoiceRecord.getDqskssq())); + checkRecordVo.setId(String.valueOf(invoiceRecord.getId())); + checkRecordVo.setUuid(invoiceRecord.getUuid()); + checkRecordVo + .setQsDate((invoiceRecord.getQsDate() == null) ? "" : DateUtils.dateToStrLong(invoiceRecord.getQsDate())); + checkRecordVo.setQsName(StringHelper.trimEnter(invoiceRecord.getQsName())); + checkRecordVo.setQsStatus(qsStatus); + checkRecordVo.setQsType(qsType); + checkRecordVo.setRzhDate( + (invoiceRecord.getRzhDate() == null) ? "" : DateUtils.dateToStrLong(invoiceRecord.getRzhDate())); + checkRecordVo.setRzlx(rzlx); + checkRecordVo.setRemark(invoiceRecord.getRemark()); + checkRecordVo.setRzhYesorno(rzhYesorno); + checkRecordVo.setAuthStatus(rzzt); + checkRecordVo.setCheckCode(invoiceRecord.getCheckCode()); + checkRecordVo.setDqskssq(dqskssq); + checkRecordVo.setGxUserName(gxUserName); + return checkRecordVo; + } + + private String getRzhYesorno(String rzhYesorno) { + String rzh; + if ("1".equals(rzhYesorno)) { + rzh = "已认证"; + } else { + rzh = "未认证"; + } + return rzh; + } + + /** + * 转义认证类型 + * + * @param rzlx 认证类型 + * @return 返回结果 + */ + private String getRzlx(String rzlx) { + String rzlxmc = ""; + if ("1".equals(rzlx)) { + rzlxmc = "抵扣认证"; + } else if ("2".equals(rzlx)) { + rzlxmc = "退税认证"; + } else if ("3".equals(rzlx)) { + rzlxmc = "代办退税认证"; + } + return rzlxmc; + } + + /** + * 转义签收方式 + * + * @param qsType 签收方式 + * @return 返回结果 + */ + private String getQsType(String qsType) { + String qsfs = ""; + if (QsfsEnum.DRQS.getQsfsDm().equals(qsType)) { + qsfs = QsfsEnum.DRQS.getQsfsMc(QsfsEnum.DRQS.getIndex()); + } else if (QsfsEnum.APPQS.getQsfsDm().equals(qsType)) { + qsfs = QsfsEnum.APPQS.getQsfsMc(QsfsEnum.APPQS.getIndex()); + } else if (QsfsEnum.PDFQS.getQsfsDm().equals(qsType)) { + qsfs = QsfsEnum.PDFQS.getQsfsMc(QsfsEnum.PDFQS.getIndex()); + } else if (QsfsEnum.SGQS.getQsfsDm().equals(qsType)) { + qsfs = QsfsEnum.SGQS.getQsfsMc(QsfsEnum.SGQS.getIndex()); + } else if (QsfsEnum.SMQS.getQsfsDm().equals(qsType)) { + qsfs = QsfsEnum.SMQS.getQsfsMc(QsfsEnum.SMQS.getIndex()); + } else if (QsfsEnum.SMYQS.getQsfsDm().equals(qsType)) { + qsfs = QsfsEnum.SMYQS.getQsfsMc(QsfsEnum.SMYQS.getIndex()); + } + return qsfs; + } + + /** + * 转义签收状态 + * + * @param qsStatus 签收状态 + * @return 返回结果 + */ + private String getQsStatus(String qsStatus) { + String qszt = ""; + if (FpqsjgEnum.YQS.getQsjgDm().equals(qsStatus)) { + qszt = FpqsjgEnum.YQS.getQsjgMc(FpqsjgEnum.YQS.getIndex()); + } else if (FpqsjgEnum.WQS.getQsjgDm().equals(qsStatus)) { + qszt = FpqsjgEnum.WQS.getQsjgMc(FpqsjgEnum.WQS.getIndex()); + } + return qszt; + } + + /** + * 转义认证方式 + * + * @param rzhType 认证方式 + * @return 返回结果 + */ + private String getRztype(String rzhType) { + String rzType = ""; + if (RzfsEnum.GXRZ.getRzfsDm().equals(rzhType)) { + rzType = RzfsEnum.GXRZ.getRzfsMc(RzfsEnum.GXRZ.getIndex()); + } else if (RzfsEnum.SMRZ.getRzfsDm().equals(rzhType)) { + rzType = RzfsEnum.SMRZ.getRzfsMc(RzfsEnum.SMRZ.getIndex()); + } + return rzType; + } + + private String getFpzlMc(String invoiceType) { + String fplx = ""; + if (FplxEnum.DZP.getFplxDm().equals(invoiceType)) { + fplx = FplxEnum.DZP.getFplxMc(FplxEnum.DZP.getIndex()); + } else if (FplxEnum.JDC.getFplxDm().equals(invoiceType)) { + fplx = FplxEnum.JDC.getFplxMc(FplxEnum.JDC.getIndex()); + } else if (FplxEnum.JSP.getFplxDm().equals(invoiceType)) { + fplx = FplxEnum.JSP.getFplxMc(FplxEnum.JSP.getIndex()); + } else if (FplxEnum.PP.getFplxDm().equals(invoiceType)) { + fplx = FplxEnum.PP.getFplxMc(FplxEnum.PP.getIndex()); + } else if (FplxEnum.TXF.getFplxDm().equals(invoiceType)) { + fplx = FplxEnum.TXF.getFplxMc(FplxEnum.TXF.getIndex()); + } else if (FplxEnum.ZP.getFplxDm().equals(invoiceType)) { + fplx = FplxEnum.ZP.getFplxMc(FplxEnum.ZP.getIndex()); + } + return fplx; + } + + private String getRzzt(String authStatus) { + String rzzt = ""; + if (RzclztEnum.RZCG.getRzclztDm().equals(authStatus)) { + rzzt = RzclztEnum.RZCG.getRzclztMc(RzclztEnum.RZCG.getIndex()); + } else if (RzclztEnum.RZSB.getRzclztDm().equals(authStatus)) { + rzzt = RzclztEnum.RZSB.getRzclztMc(RzclztEnum.RZSB.getIndex()); + } else if (RzclztEnum.WRZ.getRzclztDm().equals(authStatus)) { + rzzt = RzclztEnum.WRZ.getRzclztMc(RzclztEnum.WRZ.getIndex()); + } else if (RzclztEnum.YFSRZ.getRzclztDm().equals(authStatus)) { + rzzt = RzclztEnum.YFSRZ.getRzclztMc(RzclztEnum.YFSRZ.getIndex()); + } else if (RzclztEnum.YGXWQR.getRzclztDm().equals(authStatus)) { + rzzt = RzclztEnum.YGXWQR.getRzclztMc(RzclztEnum.YGXWQR.getIndex()); + } else if (RzclztEnum.YQR.getRzclztDm().equals(authStatus)) { + rzzt = RzclztEnum.YQR.getRzclztMc(RzclztEnum.YQR.getIndex()); + } + return rzzt; + } + + private String getFpzt(String invoiceStatus) { + String fpztMc = ""; + if (FpztEnum.HC.getFpztDm().equals(invoiceStatus)) { + fpztMc = FpztEnum.HC.getFpztMc(FpztEnum.HC.getIndex()); + } else if (FpztEnum.SK.getFpztDm().equals(invoiceStatus)) { + fpztMc = FpztEnum.SK.getFpztMc(FpztEnum.SK.getIndex()); + } else if (FpztEnum.YC.getFpztDm().equals(invoiceStatus)) { + fpztMc = FpztEnum.YC.getFpztMc(FpztEnum.YC.getIndex()); + } else if (FpztEnum.ZC.getFpztDm().equals(invoiceStatus)) { + fpztMc = FpztEnum.ZC.getFpztMc(FpztEnum.ZC.getIndex()); + } else if (FpztEnum.ZF.getFpztDm().equals(invoiceStatus)) { + fpztMc = FpztEnum.ZF.getFpztMc(FpztEnum.ZF.getIndex()); + } + return fpztMc; + } + + private CheckVehicleSaleVO convertToVehicleSaleVo(TDxVehicleSaleInvoice vehicleSaleInfo) { + String taxRate = StringHelper.trimEnter(vehicleSaleInfo.getTaxRate()); + CheckVehicleSaleVO checkVehicleSaleVo = new CheckVehicleSaleVO(); + checkVehicleSaleVo.setBuyerBank(StringHelper.trimEnter(vehicleSaleInfo.getBuyerBank())); + checkVehicleSaleVo.setBuyerIdNum(StringHelper.trimEnter(vehicleSaleInfo.getBuyerIdNum())); + checkVehicleSaleVo.setCertificate(StringHelper.trimEnter(vehicleSaleInfo.getCertificate())); + checkVehicleSaleVo.setCertificateImport(StringHelper.trimEnter(vehicleSaleInfo.getCertificateImport())); + checkVehicleSaleVo.setEngineNo(StringHelper.trimEnter(vehicleSaleInfo.getEngineNo())); + checkVehicleSaleVo.setFactoryModel(StringHelper.trimEnter(vehicleSaleInfo.getFactoryModel())); + checkVehicleSaleVo.setInspectionNum(StringHelper.trimEnter(vehicleSaleInfo.getInspectionNum())); + checkVehicleSaleVo.setLimitPeople(StringHelper.trimEnter(vehicleSaleInfo.getLimitPeople())); + checkVehicleSaleVo.setPhone(StringHelper.trimEnter(vehicleSaleInfo.getPhone())); + checkVehicleSaleVo.setProductPlace(StringHelper.trimEnter(vehicleSaleInfo.getProductPlace())); + checkVehicleSaleVo.setTaxBureauCode(StringHelper.trimEnter(vehicleSaleInfo.getTaxBureauCode())); + checkVehicleSaleVo.setTaxBureauName(StringHelper.trimEnter(vehicleSaleInfo.getTaxBureauName())); + checkVehicleSaleVo.setTaxRate(taxRate); + checkVehicleSaleVo.setTaxRecords(StringHelper.trimEnter(vehicleSaleInfo.getTaxRecords())); + checkVehicleSaleVo.setTonnage(StringHelper.trimEnter(vehicleSaleInfo.getTonnage())); + checkVehicleSaleVo.setVehicleNo(StringHelper.trimEnter(vehicleSaleInfo.getVehicleNo())); + checkVehicleSaleVo.setVehicleType(StringHelper.trimEnter(vehicleSaleInfo.getVehicleType())); + return checkVehicleSaleVo; + } + + private CheckRecordInvoiceDetailVO convertToRecordDetailVo(TDxRecordInvoiceDetail tDxRecordInvoiceDetail) { + CheckRecordInvoiceDetailVO checkRecordDetailVo = new CheckRecordInvoiceDetailVO(); + if (StringHelper.trimEnter(tDxRecordInvoiceDetail.getTaxRate()).matches("[0-9]{1,}")) { + checkRecordDetailVo.setTaxRate(StringHelper.trimEnter(tDxRecordInvoiceDetail.getTaxRate()) + "%"); + } else { + checkRecordDetailVo.setTaxRate(StringHelper.trimEnter(tDxRecordInvoiceDetail.getTaxRate())); + } + checkRecordDetailVo.setCph(StringHelper.trimEnter(tDxRecordInvoiceDetail.getCph())); + checkRecordDetailVo.setDetailAmount(StringHelper.trimEnter(tDxRecordInvoiceDetail.getDetailAmount())); + checkRecordDetailVo.setDetailNo(StringHelper.trimEnter(tDxRecordInvoiceDetail.getDetailNo())); + checkRecordDetailVo.setGoodsName(StringHelper.trimEnter(tDxRecordInvoiceDetail.getGoodsName())); + checkRecordDetailVo.setGoodsNum(StringHelper.trimEnter(tDxRecordInvoiceDetail.getGoodsNum())); + checkRecordDetailVo.setLx(StringHelper.trimEnter(tDxRecordInvoiceDetail.getLx())); + checkRecordDetailVo.setModel(StringHelper.trimEnter(tDxRecordInvoiceDetail.getModel())); + checkRecordDetailVo.setNum(StringHelper.trimEnter(tDxRecordInvoiceDetail.getNum())); + checkRecordDetailVo.setTaxAmount(StringHelper.trimEnter(tDxRecordInvoiceDetail.getTaxAmount())); + + checkRecordDetailVo.setTxrqq(StringHelper.trimEnter(tDxRecordInvoiceDetail.getTxrqq())); + checkRecordDetailVo.setTxrqz(StringHelper.trimEnter(tDxRecordInvoiceDetail.getTxrqz())); + checkRecordDetailVo.setUnit(StringHelper.trimEnter(tDxRecordInvoiceDetail.getUnit())); + checkRecordDetailVo.setUnitPrice(StringHelper.trimEnter(tDxRecordInvoiceDetail.getUnitPrice())); + return checkRecordDetailVo; + } + + @Override + public TDxVehicleSaleInvoice vehicleInvoice(JSONObject queryInvoiceResult) { + String invoiceType = queryInvoiceResult.getString("invoiceType"); + if (FplxEnum.ESC.getFplxDm().equals(invoiceType)) { + String invoiceCode = queryInvoiceResult.getString("invoiceCode"); + String invoiceNo = queryInvoiceResult.getString("invoiceNo"); + String uuid = invoiceCode + invoiceNo; + + TDxVehicleSaleInvoice vehicleSaleInvoice = new TDxVehicleSaleInvoice(); + vehicleSaleInvoice.setUuid(uuid); + vehicleSaleInvoice.setPlateNo(queryInvoiceResult.getString("licensePlate")); + vehicleSaleInvoice.setRegistrationNo(queryInvoiceResult.getString("registrationNo")); + if (StringUtils.isNotBlank(queryInvoiceResult.getString("vehicleType"))) { + vehicleSaleInvoice.setVehicleType(queryInvoiceResult.getString("vehicleType")); + } + if (StringUtils.isNotBlank(queryInvoiceResult.getString("bandModel"))) { + vehicleSaleInvoice.setFactoryModel(queryInvoiceResult.getString("bandModel")); + } + if (StringUtils.isNotBlank(queryInvoiceResult.getString("vehicleIdentificationNo"))) { + vehicleSaleInvoice.setVehicleNo(queryInvoiceResult.getString("vehicleIdentificationNo")); + } + vehicleSaleInvoice.setCarPrice(queryInvoiceResult.getString("carPrice")); + vehicleSaleInvoice.setVehicleAdminOffice(queryInvoiceResult.getString("vehicleAdminOffice")); + vehicleSaleInvoice.setBuyerUnit(queryInvoiceResult.getString("buyerUnitOrIndividual")); + vehicleSaleInvoice.setBuyerUnitCode(queryInvoiceResult.getString("buyerUnitCodeOrIdNo")); + vehicleSaleInvoice.setBuyerUnitAddress(queryInvoiceResult.getString("buyerUnitOrIndividualAddress")); + vehicleSaleInvoice.setBuyerPhone(queryInvoiceResult.getString("buyerPhone")); + vehicleSaleInvoice.setSellerUnit(queryInvoiceResult.getString("sellerUnitOrIndividual")); + vehicleSaleInvoice.setSellerUnitCode(queryInvoiceResult.getString("sellerUnitCodeOrIdNo")); + vehicleSaleInvoice.setSellerUnitAddress(queryInvoiceResult.getString("sellerUnitOrIndividualAddress")); + vehicleSaleInvoice.setSellerPhone(queryInvoiceResult.getString("sellerPhone")); + vehicleSaleInvoice.setAuctionUnit(queryInvoiceResult.getString("businessUnit")); + vehicleSaleInvoice.setAuctionAddress(queryInvoiceResult.getString("businessUnitAddress")); + vehicleSaleInvoice.setAuctionTaxNo(queryInvoiceResult.getString("businessUnitTaxNo")); + vehicleSaleInvoice.setAuctionBank(queryInvoiceResult.getString("businessUnitBankAndAccount")); + vehicleSaleInvoice.setAuctionPhone(queryInvoiceResult.getString("businessUnitPhone")); + vehicleSaleInvoice.setCarMarket(queryInvoiceResult.getString("lemonMarket")); + vehicleSaleInvoice.setCarMarketTaxNo(queryInvoiceResult.getString("lemonMarketTaxNo")); + vehicleSaleInvoice.setCarMarketAddress(queryInvoiceResult.getString("lemonMarketAddress")); + vehicleSaleInvoice.setCarMarketBank(queryInvoiceResult.getString("lemonMarketBankAndAccount")); + vehicleSaleInvoice.setCarMarketPhone(queryInvoiceResult.getString("lemonMarketPhone")); + vehicleSaleInvoice.setCompany(queryInvoiceResult.getString("company")); + return vehicleSaleInvoice; + } else { + return null; + } + } +}