ariesy 单张查验接口代码完成 v1

release
yefei 2 years ago
parent c7c08817e6
commit 35608d9ad6
  1. 183
      dxhy-common/src/main/java/com/dxhy/common/enums/SNFplxEnum.java
  2. 128
      dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java
  3. 77
      dxhy-erp/src/main/java/com/dxhy/erp/dao/CheckLogDao.java
  4. 15
      dxhy-erp/src/main/java/com/dxhy/erp/dao/SignCheckInvoiceDetailDao.java
  5. 17
      dxhy-erp/src/main/java/com/dxhy/erp/dao/SignCheckRecordInvoiceDao.java
  6. 17
      dxhy-erp/src/main/java/com/dxhy/erp/dao/SignCheckVehicleSaleDao.java
  7. 68
      dxhy-erp/src/main/java/com/dxhy/erp/entity/ExtSmcyVO.java
  8. 131
      dxhy-erp/src/main/java/com/dxhy/erp/entity/TDxCheckLog.java
  9. 49
      dxhy-erp/src/main/java/com/dxhy/erp/entity/TdxCheckVehicleSale.java
  10. 45
      dxhy-erp/src/main/java/com/dxhy/erp/service/InvoiceQueryService.java
  11. 26
      dxhy-erp/src/main/java/com/dxhy/erp/service/SignCheckRecordInvoiceDetailService.java
  12. 35
      dxhy-erp/src/main/java/com/dxhy/erp/service/SignCheckRecordService.java
  13. 22
      dxhy-erp/src/main/java/com/dxhy/erp/service/SignCheckVehicleSaleInvoiceService.java
  14. 27
      dxhy-erp/src/main/java/com/dxhy/erp/service/SignSaveCheckInfoService.java
  15. 335
      dxhy-erp/src/main/java/com/dxhy/erp/service/impl/InvoiceQueryServiceImpl.java
  16. 35
      dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignCheckRecordInvoiceDetailServiceImpl.java
  17. 58
      dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignCheckRecordServiceImpl.java
  18. 33
      dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignCheckVehicleSaleInvoiceServiceImpl.java
  19. 302
      dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignSaveCheckInfoServiceImpl.java

@ -0,0 +1,183 @@
package com.dxhy.common.enums;
/**
* @author jiaohongyang
*/
public enum SNFplxEnum {
/**
* 专票代码
*/
ZP("10100","01", 1),
/**
* 货物运输专票
*/
HWYSZP("22000","02", 22),
/**
* 机动车代码
*/
JDC("10104","03", 2),
/**
* 普票代码
*/
PP("10101","04", 3),
/**
* 电子票代码
*/
DZP("10102","10", 4),
/**
* 卷式发票代码
*/
JSP("10103","11", 5),
/**
* 通行费发票代码
*/
TXF("32000","14", 6),
/**
* 二手车
*/
ESC("10105","15", 7),
/**
* 电子专票
*/
DZZP("33000","08", 8),
// HGJKS("17", 9),
/**
* 全电专票
*/
QDZP("10107","31",10),
/**
* 全电普票
*/
QDPP("10108","32",11),
/**
* 定额发票
*/
DEFP("10200","95",12),
/**
* 机打发票
*/
JDFP("10400","97",13),
/**
* 出租车发票
*/
CZCFP("10500","91",14),
/**
* 火车票
*/
HCP("10503","92",15),
/**
* 客运汽车票
*/
KYQCP("10505","94",16),
/**
* 航空运输电子客票行程单
*/
JPXCD("10506","90",17),
/**
* 过路费发票
*/
GLF("10507","101",18),
/**
* 船票
*/
CP("10508","88",19),
/**
* 国际小票
*/
GJXP("20100","99",20),
/**
* 可报销其他发票
*/
QTFP("10900","00",21);
// /**
// * 纸质专票
// */
// ZZZZ("185",12),
// /**
// * 纸质普票
// */
// ZZZP("186",13);
private final String[] FPLXMC = {"增值税专用发票", "机动车销售统一发票", "增值税普通发票", "增值税电子普通发票", "增值税普通发票(卷票)", "增值税电子普通发票(通行费)",
"二手车销售统一发票", "增值税电子专用发票", "海关缴款书","电子发票(增值税专用发票)","电子发票(普通发票)"};
private String snFplxDm;
private String fplxDm;
private int index;
SNFplxEnum(String snFplxDm,String fplxDm, int index) {
this.snFplxDm = snFplxDm;
this.fplxDm = fplxDm;
this.index = index;
}
public String getFplxDm(int index) {
for (SNFplxEnum fplx : SNFplxEnum.values()) {
if (fplx.getIndex() == index) {
return fplx.fplxDm;
}
}
return null;
}
public String getFplxDm(String snFplxDm) {
for (SNFplxEnum fplx : SNFplxEnum.values()) {
if (fplx.getSnFplxDm() == snFplxDm) {
return fplx.fplxDm;
}
}
return null;
}
public String getFplxMc(int index) {
int length = FPLXMC.length;
if (index <= length) {
return FPLXMC[index - 1];
}
return null;
}
public String getFplxDm() {
return fplxDm;
}
public String getSnFplxDm() {
return snFplxDm;
}
public void setFplxDm(String fplxDm) {
this.fplxDm = fplxDm;
}
public void setSnFplxDm(String snFplxDm) {
this.snFplxDm = snFplxDm;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}

@ -0,0 +1,128 @@
package com.dxhy.erp.controller;
import com.dxhy.common.aspect.SysLog;
import com.dxhy.common.constant.CommonConstants;
import com.dxhy.common.controller.AbstractController;
import com.dxhy.common.enums.FplxEnum;
import com.dxhy.common.util.InvoiceUtil;
import com.dxhy.common.util.UserInfoUtil;
import com.dxhy.common.utils.R;
import com.dxhy.erp.service.InvoiceQueryService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* 山东能源查验主流程控制器
*
* @author ariesy
* @date 2023-03-15
*/
@SuppressWarnings({"AlibabaUndefineMagicConstant", "AlibabaMethodTooLong"})
@RestController
@Slf4j
public class SDNYMainProcessController extends AbstractController {
@Resource
private InvoiceQueryService invoiceQueryService;
@Value("${ftp.connection.size}")
private String size;
/**
* 上传时本地文件暂存路径
*/
@Value("${ftp.connection.tempPath}")
private String tempPath;
/**
* 上传时本地文件存放路径
*/
@Value("${ftp.connection.depositPath}")
private String depositPath;
/**
* 查验发票
*/
@PostMapping("/sn/singleInvoiceCheck")
@ResponseBody
@SysLog("发票查验")
public ResponseEntity<?> singleInvoiceCheck(@RequestBody Map<String, String> pramsMap) {
// 入参统一在入口处理
String userid = getLoginName();
pramsMap.put("userid", userid);
String dbName = getUserInfo().getDbName();
pramsMap.put("dbName", dbName);
pramsMap.put("saveHistory","Y");
pramsMap.put("company", getUserInfo().getCompany());
List<String> gfshAll = UserInfoUtil.getGfshAll(getUserInfo().getOrg());
if (gfshAll.size() > 0) {
pramsMap.put("taxNo", gfshAll.get(0));
}
pramsMap.put("purchaserTaxNo", pramsMap.get("purchaserTaxNo"));
InvoiceUtil iu = new InvoiceUtil(pramsMap.get("invoiceCode"));
if (pramsMap.get("invoiceCode").isEmpty()) {
return ResponseEntity.ok(R.error("发票代码不能为空!"));
}
pramsMap.put("invoiceType", iu.getFplxdm());
if (pramsMap.get("invoiceNumber").isEmpty()) {
return ResponseEntity.ok(R.error("发票号码不能为空!"));
}
pramsMap.put("invoiceNo", pramsMap.get("invoiceNumber"));
if (!pramsMap.get("billingDate").isEmpty()) {
iu.setKprq(pramsMap.get("billingDate"));
pramsMap.put("invoiceDate", pramsMap.get("invoiceNumber"));
if (!iu.kprqValid(null)) {
pramsMap.put("invoiceDate", "开票日期格式错误!");
}
} else {
return ResponseEntity.ok(R.error("开票日期不能为空!"));
}
if (FplxEnum.ZP.getFplxDm().equals(pramsMap.get("invoiceType"))
|| FplxEnum.JDC.getFplxDm().equals(pramsMap.get("invoiceType"))
|| FplxEnum.DZZP.getFplxDm().equals(pramsMap.get("invoiceType"))
|| FplxEnum.ESC.getFplxDm().equals(pramsMap.get("invoiceType"))
|| FplxEnum.QDZZP.getFplxDm().equals(pramsMap.get("invoiceType"))
|| FplxEnum.QDPP.getFplxDm().equals(pramsMap.get("invoiceType"))) {
if (pramsMap.get("totalAmount").isEmpty()) {
return ResponseEntity.ok(R.error("金额不能为空!"));
}
} else {
if (pramsMap.get("checkCode").isEmpty()) {
return ResponseEntity.ok(R.error("校验码不能为空!"));
}
}
String uuid = (StringUtils.isBlank(pramsMap.get("invoiceCode"))?"":pramsMap.get("invoiceCode"))+ pramsMap.get("invoiceNo");
String notes = invoiceQueryService.checkingInvoiceInfo(dbName, uuid, getUserInfo());
if (notes != null) {
return ResponseEntity.ok(R.error(notes));
}
try {
return ResponseEntity.ok(R.ok().put("data", invoiceQueryService.smQueryInvoice(pramsMap)));
} catch (Exception e) {
e.printStackTrace();
log.error("", e);
return ResponseEntity.ok(R.error(CommonConstants.MSG_ERR_DEFAULT));
}
}
}

@ -0,0 +1,77 @@
package com.dxhy.erp.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dxhy.erp.entity.TDxCheckLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* @author jiaohongyang
* @date 2019年3月26日 下午6:02:48 查验记录表dao
*/
@Mapper
public interface CheckLogDao extends BaseMapper<TDxCheckLog> {
/**
* 查询查验历史记录
*
* @param pramsMap
* 请求参数
* @return 返回结果
* @since 1.0
*/
List<TDxCheckLog> selectCheckHistory(Map<String, String> pramsMap);
/**
* 查询查验历史合计
*
* @param pramsMap
* 请求参数
* @return 返回结果
* @since 1.0
*/
List<TDxCheckLog> selectCheckHistoryHj(Map<String, String> pramsMap);
/**
* 查询查验历史统计信息
*
* @param pramsMap
* 请求参数
* @return 返回结果
* @since 1.0
*/
List<TDxCheckLog> selectCheckStatisticsCount(Map<String, String> pramsMap);
/**
* 查询查验历史-历史记录
*
* @param pramsMap
* 请求参数
* @return 返回结果
*/
List<TDxCheckLog> selectCheckHistoryDetail(Map<String, String> pramsMap);
/**
* 查验综合查询
*
* @param pramsMap
* 请求参数
* @return 返回结果
* @since 1.0
*/
List<TDxCheckLog> getCheckList(Map<String, Object> pramsMap);
/**
* 查验综合查询合计
*
* @param pramsMap
* 请求参数
* @return 返回结果
* @since 1.0
*/
List<TDxCheckLog> getCheckListHj(Map<String, Object> pramsMap);
}

@ -0,0 +1,15 @@
package com.dxhy.erp.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dxhy.erp.entity.TdxCheckInvoiceDetail;
import org.apache.ibatis.annotations.Mapper;
/**
* @author jiaohongyang
* @date 2019年3月26日 下午6:02:48 查验明细表dao
*
*/
@Mapper
public interface SignCheckInvoiceDetailDao extends BaseMapper<TdxCheckInvoiceDetail> {
}

@ -0,0 +1,17 @@
package com.dxhy.erp.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dxhy.erp.entity.TdxCheckRecordInvoice;
import org.apache.ibatis.annotations.Mapper;
/**
*
* 发票查验表dao
*
* @author jiaohongyang
* @date 2019年3月26日 下午6:02:48
*/
@Mapper
public interface SignCheckRecordInvoiceDao extends BaseMapper<TdxCheckRecordInvoice> {
}

@ -0,0 +1,17 @@
package com.dxhy.erp.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dxhy.erp.entity.TdxCheckVehicleSale;
import org.apache.ibatis.annotations.Mapper;
/**
*
* 查验机动车明细表dao
*
* @author jiaohongyang
* @date 2019年3月26日 下午6:02:48
*/
@Mapper
public interface SignCheckVehicleSaleDao extends BaseMapper<TdxCheckVehicleSale> {
}

@ -0,0 +1,68 @@
package com.dxhy.erp.entity;
import lombok.Data;
import java.io.Serializable;
/**
*
* 扫码查验返回页面对象
**
* @author peipei.li * @date 2019-04-29
*/
@Data
public class ExtSmcyVO implements Serializable {
private static final long serialVersionUID = 922509817008537140L;
/**
* 发票唯一标识
*/
private String id;
/**
* 查验结果
*/
private String checkMassege;
/**
* 发票代码
*/
private String invoiceCode;
/**
* 发票号码
*/
private String invoiceNo;
/**
* 开票日期
*/
private String invoiceDate;
/**
* 金额
*/
private String invoiceAmount;
/**
* 校验码
*/
private String checkCode;
/**
* 发票类型
*/
private String invoiceType;
/**
* 查验结果代码
*/
private String handleCode;
private String gfmc;
private String xfmc;
private Boolean detailState;
private Boolean delState;
private Boolean editState;
private String totalAmount;
}

@ -0,0 +1,131 @@
package com.dxhy.erp.entity;
import com.baomidou.mybatisplus.annotation.TableName;
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
@TableName("t_dx_check_log")
public class TDxCheckLog implements Serializable {
private static final long serialVersionUID = 8626068424800691229L;
/**
* id
*/
private Long id;
/**
* 发票代码
*/
private String invoiceCode;
/**
* 发票号码
*/
private String invoiceNo;
/**
* 处理时间
*/
private Date handleDate;
/**
* 处理结果
*/
private String handleCode;
/**
* 处理过程
*/
private String handleCourse;
/**
* 描述(查验结果)
*/
private String checkMassege;
/**
* 查验账号
*/
private String checkUser;
/**
* 开票日期
*/
private Date invoiceDate;
/**
* 购方名称
*/
private String buyerName;
/**
* 销方名称
*/
private String salerName;
/**
* 价税合计
*/
private BigDecimal totalAmount;
/**
* 金额
*/
private BigDecimal invoiceAmount;
/**
* 税额
*/
private BigDecimal taxAmount;
/**
* 发票类型
*/
private String invoiceType;
/**
* 校验码
*/
private String checkCode;
/**
* 查验月份
*/
private String checkMonth;
/**
* 查验张数
*/
private String checkCount;
/**
* 查验成功张数
*/
private String checkSuccessCount;
/**
* 查验失败张数
*/
private String checkErrorCount;
/**
* 发票状态
*/
private String invoiceStatus;
private String scanId;
}

@ -125,4 +125,53 @@ public class TdxCheckVehicleSale implements Serializable {
*/
private Date createDate;
//新增二手车信息
//车牌照号码
private String plateNo;
//登记证号
private String registrationNo;
//转入地车辆管理所名称
private String vehicleAdminOffice;
//经营、拍卖单位
private String auctionUnit;
//经营、拍卖单位地址
private String auctionAddress;
//经营、拍卖单位纳税人识别号
private String auctionTaxNo;
//开户银行及账号
private String auctionBank;
//经营、拍卖单位电话
private String auctionPhone;
//二手车市场
private String carMarket;
//二手车市场纳税人识别号
private String carMarketTaxNo;
//二手车市场地址
private String carMarketAddress;
//二手车市场开户银行及账号
private String carMarketBank;
//二手车市场电话
private String carMarketPhone;
//车价合计
private String carPrice;
//买方单位 /个人
private String buyerUnit;
//买方单位代码 /身份证号
private String buyerUnitCode;
//买方单位 /个人住址
private String buyerUnitAddress;
//买方电话
private String buyerPhone;
//卖方单位/个人
private String sellerUnit;
//卖方单位代码/身份证
private String sellerUnitCode;
//卖方单位/个人住址
private String sellerUnitAddress;
//卖方电话
private String sellerPhone;
}

@ -0,0 +1,45 @@
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.TDxCheckLog;
import java.io.File;
import java.util.List;
import java.util.Map;
/**
*
* 查验业务处理接口
*
* @author peipei.li
* @date 2019-05-09
*/
public interface InvoiceQueryService extends MpBaseService<TDxCheckLog> {
/**
* 扫码查验发票信息
*
* @param pramsMap
* 请求参数
* @return 返回结果 @ 异常
* @since 1.0
*/
String smQueryInvoice(Map<String, String> pramsMap);
/**
* 检查发票是否可以查验
*
* @param dbName
* 数据源
* @param uuid
* uuid
* @param userInfo
* 用户信息
* @return 返回结果
*/
String checkingInvoiceInfo(String dbName, String uuid, UserInfo userInfo);
}

@ -0,0 +1,26 @@
package com.dxhy.erp.service;
import com.dxhy.common.service.MpBaseService;
import com.dxhy.erp.entity.TdxCheckInvoiceDetail;
import java.util.List;
/**
*
* 查验明细业务处理接口
*
* @author peipei.li
* @date 2019-05-09
*/
public interface SignCheckRecordInvoiceDetailService extends MpBaseService<TdxCheckInvoiceDetail> {
/**
* 根据uuid查询发票明细
*
* @param uuid
* 发票唯一标识
* @return 返回结果
* @since 1.0
*/
List<TdxCheckInvoiceDetail> getInvoiceDetailListByUuid(String uuid);
}

@ -0,0 +1,35 @@
package com.dxhy.erp.service;
import com.dxhy.common.service.MpBaseService;
import com.dxhy.erp.entity.TdxCheckRecordInvoice;
/**
*
* 发票查验表业务处理接口
*
* @author peipei.li
* @date 2019-05-09
*/
public interface SignCheckRecordService extends MpBaseService<TdxCheckRecordInvoice> {
/**
* 根据uuid查询发票查验表信息
*
* @param uuid
* 唯一键
* @return 返回结果
* @since 1.0
*/
TdxCheckRecordInvoice getCheckInvoiceByUuid(String uuid);
/**
* 保存查验表
*
* @param checkRecordInvoice
* 发票
* @param dbName
* 数据源
*/
void saveCheckRecordInvoice(TdxCheckRecordInvoice checkRecordInvoice, String dbName);
}

@ -0,0 +1,22 @@
package com.dxhy.erp.service;
import com.dxhy.common.service.MpBaseService;
import com.dxhy.erp.entity.TdxCheckVehicleSale;
/**
*
* 查验机动车明细业务处理接口 * @author peipei.li * @date 2019-05-09
*/
public interface SignCheckVehicleSaleInvoiceService extends MpBaseService<TdxCheckVehicleSale> {
/**
* 根据uuid查询机动车明细
*
* @param uuid
* 发票唯一标识
* @return 返回结果
* @since 1.0
*/
TdxCheckVehicleSale getCheckInvoiceByUuid(String uuid);
}

@ -0,0 +1,27 @@
package com.dxhy.erp.service;
import com.alibaba.fastjson.JSONObject;
/**
*
* 保存查验结果到查验相关记录表业务处理接口
*
* @author peipei.li
* @date 2019-05-09
*/
public interface SignSaveCheckInfoService {
/**
* 保存查验结果到查验相关表
*
* @param queryInvoiceResult
* 请求参数
* @param dbName
* 数据源
* @param userid
* 用户id
* @since 1.0
*/
void saveCheckInfo(JSONObject queryInvoiceResult, String userid, String dbName);
}

@ -0,0 +1,335 @@
package com.dxhy.erp.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.dxhy.common.constant.DbConstant;
import com.dxhy.common.datasource.config.DynamicContextHolder;
import com.dxhy.common.enums.FplxEnum;
import com.dxhy.common.service.TabulateRedisService;
import com.dxhy.common.service.impl.MpBaseServiceImpl;
import com.dxhy.common.util.*;
import com.dxhy.common.utils.DateUtils;
import com.dxhy.common.vo.UserInfo;
import com.dxhy.erp.dao.CheckLogDao;
import com.dxhy.erp.entity.ExtSmcyVO;
import com.dxhy.erp.entity.TDxCheckLog;
import com.dxhy.erp.entity.TdxCheckRecordInvoice;
import com.dxhy.erp.service.InvoiceQueryService;
import com.dxhy.erp.service.SignCheckRecordService;
import com.dxhy.erp.service.SignSaveCheckInfoService;
import com.dxhy.erp.utils.InvoiceQueryUtil;
import com.dxhy.ofd.service.OfdService;
import com.dxhy.oss.service.FileService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.*;
/**
* @author ld
*/
@SuppressWarnings({"AlibabaUndefineMagicConstant", "AlibabaMethodTooLong", "AlibabaStringConcat",
"AlibabaAvoidComplexCondition", "AlibabaCollectionInitShouldAssignCapacity"})
@Service("invoiceQueryService")
@Slf4j
public class InvoiceQueryServiceImpl extends MpBaseServiceImpl<CheckLogDao, TDxCheckLog>
implements InvoiceQueryService {
@Resource
private InvoiceQueryUtil invoiceQueryUtil;
@Resource
private OfdService ofdService;
@Resource
private ScanIdUtils scanIdUtils;
@Resource
private SignCheckRecordService signCheckRecordService;
@Resource
private SignSaveCheckInfoService signSaveCheckInfoService;
@Resource
private TabulateRedisService tabulateRedisService;
@Resource
private FileService fileService;
/**
* 只允许查验成功一次公司编码
*/
@Value("${checkCount.company}")
private String companyCheck;
@Override
public String smQueryInvoice(Map<String, String> pramsMap) {
String[] titlelist = {"查验结果描述", "发票代码", "发票号码", "开票日期", "发票金额", "校验码"};
String[] titleprop =
{"checkMassege", "invoiceCode", "invoiceNo", "invoiceDate", "invoiceAmount", "checkCode", "invoiceType"};
// 需要设置返回列表标题时调用
JSONObject json = super.setTitleList(titlelist, titleprop);
TDxCheckLog checkLog = this.checkSingleInvioce(pramsMap);
List<ExtSmcyVO> returnList = new ArrayList<>();
ExtSmcyVO smcyVo = this.convertToSmcyView(checkLog);
returnList.add(smcyVo);
json.put("datalist", returnList);
return super.responseResult(json);
}
@Override
public String checkingInvoiceInfo(String dbName, String uuid, UserInfo userInfo) {
String notes = null;
DynamicContextHolder.push(dbName + DbConstant.BUSINESS_READ);
TdxCheckRecordInvoice checkRecordTmp = signCheckRecordService.getCheckInvoiceByUuid(uuid);
if (checkRecordTmp != null) {
if (!StringUtils.isBlank(checkRecordTmp.getCheckUser())
&& !userInfo.getUsername().equals(checkRecordTmp.getCheckUser())) {
notes = "该发票票已被他人查验,不可重复查验!";
return notes;
}
if ("0001".equals(checkRecordTmp.getCyjgCode())) {
if (companyCheck.contains(userInfo.getCompany())) {
notes = "该发票已查验成功,不可重复查验!";
return notes;
} else if (DateUtils.getStringDateShort().equals(DateUtils.dateToStr(checkRecordTmp.getCreateDate()))) {
notes = "该发票今日已查验成功,不可重复查验!";
}
}
}
return notes;
}
/**
* 查验一张发票信息此方法为公共方法多种查验方式公用
*
* @param pramsMap
* 请求参数
* @return 返回结果
*
*/
private TDxCheckLog checkSingleInvioce(Map<String, String> pramsMap) {
TDxCheckLog checkLog = new TDxCheckLog();
String userId = pramsMap.get("userid");
String invoiceType = pramsMap.get("invoiceType");
String invoiceCode = pramsMap.get("invoiceCode");
if (StringHelper.isBlank(invoiceType)) {
if(FplxEnum.QDZZP.getFplxDm().equals(invoiceType) || FplxEnum.QDPP.getFplxDm().equals(invoiceType)){
invoiceType = "31";
}else {
InvoiceUtil iu = new InvoiceUtil(invoiceCode);
invoiceType = iu.getFplxdm();
}
}
// 通行费发票二维码中的发票类型代码为10“电子发票”,需要单独根据发票代码判断发票类型
if (FplxEnum.DZP.getFplxDm().equals(invoiceType)) {
InvoiceUtil iu = new InvoiceUtil(invoiceCode);
if (FplxEnum.TXF.getFplxDm().equals(iu.getFplxdm())) {
invoiceType = FplxEnum.TXF.getFplxDm();
}
}
String invoiceNo = pramsMap.get("invoiceNo");
String invoiceDate = pramsMap.get("invoiceDate");
String invoiceAmount = pramsMap.getOrDefault("invoiceAmount", "");
String taxAmount = pramsMap.getOrDefault("taxAmount", "");
String checkCode = pramsMap.getOrDefault("checkCode", "");
String gfmc = pramsMap.getOrDefault("gfmc", "");
String xfmc = pramsMap.getOrDefault("xfmc", "");
String saveHistory = pramsMap.getOrDefault("saveHistory", "");
String taxNo = pramsMap.getOrDefault("taxNo", "");
String company = pramsMap.get("company");
checkLog.setCheckUser(userId);
if(FplxEnum.QDZZP.getFplxDm().equals(invoiceType) || FplxEnum.QDPP.getFplxDm().equals(invoiceType)){
checkLog.setInvoiceType(pramsMap.get("invoiceType"));
if (!StringHelper.isBlank(invoiceAmount)) {
try {
checkLog.setTotalAmount(BigDecimal.valueOf(new DecimalFormat().parse(invoiceAmount).doubleValue()));
checkLog.setInvoiceAmount(null);
} catch (Exception e) {
checkLog.setTotalAmount(new BigDecimal("0"));
}
}
}else {
if (!StringHelper.isBlank(invoiceAmount)) {
try {
checkLog.setInvoiceAmount(BigDecimal.valueOf(new DecimalFormat().parse(invoiceAmount).doubleValue()));
} catch (Exception e) {
checkLog.setInvoiceAmount(new BigDecimal("0"));
}
}
checkLog.setInvoiceCode(invoiceCode);
checkLog.setInvoiceType(invoiceType);
}
checkLog.setInvoiceNo(invoiceNo);
if (!StringHelper.isBlank(invoiceDate)) {
checkLog.setInvoiceDate(DateUtils.strToDate(invoiceDate));
}
checkLog.setHandleDate(DateUtils.getSqlDateLong());
if (!StringHelper.isBlank(taxAmount)) {
try {
checkLog.setTaxAmount(BigDecimal.valueOf(new DecimalFormat().parse(taxAmount).doubleValue()));
} catch (Exception e) {
checkLog.setTaxAmount(new BigDecimal("0"));
}
}
if (!StringHelper.isBlank(checkCode)) {
checkLog.setCheckCode(checkCode);
}
checkLog.setBuyerName(gfmc);
checkLog.setSalerName(xfmc);
JSONObject queryInvoiceResult =
invoiceQueryUtil.queryInvoice(invoiceCode, invoiceNo, invoiceDate, invoiceAmount, checkCode, taxNo,invoiceType);
queryInvoiceResult.put("scanId", pramsMap.get("scanId"));
queryInvoiceResult.put("company", pramsMap.get("company"));
if (queryInvoiceResult.containsKey("returnCode")) {
// 查验出错
checkLog.setHandleCode(queryInvoiceResult.getString("returnCode"));
checkLog.setCheckMassege(queryInvoiceResult.getString("returnMessage"));
if ("Y".equals(saveHistory)) {
// 保存查验主表
TdxCheckRecordInvoice checkRecordInvoice = new TdxCheckRecordInvoice();
checkRecordInvoice.setScanId(pramsMap.get("scanId"));
checkRecordInvoice.setUuid((StringUtils.isBlank(invoiceCode)?"":invoiceCode) + invoiceNo);
checkRecordInvoice.setCheckUser(userId);
checkRecordInvoice.setFphm(invoiceNo);
checkRecordInvoice.setFpzl(invoiceType);
checkRecordInvoice.setCompany(pramsMap.get("company"));
if (!StringHelper.isBlank(invoiceDate)) {
checkRecordInvoice.setKprq(DateUtils.strToStrDate2(invoiceDate));
}
if(FplxEnum.QDZZP.getFplxDm().equals(invoiceType) || FplxEnum.QDPP.getFplxDm().equals(invoiceType)){
if (!StringHelper.isBlank(invoiceAmount)) {
checkRecordInvoice.setJshj(invoiceAmount);
}
}else {
checkRecordInvoice.setFpdm(invoiceCode);
if (!StringHelper.isBlank(invoiceAmount)) {
checkRecordInvoice.setJe(invoiceAmount);
}
}
if (!StringHelper.isBlank(taxAmount)) {
checkRecordInvoice.setSe(taxAmount);
}
if (!StringHelper.isBlank(checkCode)) {
checkRecordInvoice.setJym(checkCode);
}
checkRecordInvoice.setPdfMd5(Long.valueOf(scanIdUtils.createSerialNum()));
checkRecordInvoice.setCreateDate(DateUtils.getSqlDateLong());
checkRecordInvoice.setCyjgCode(queryInvoiceResult.getString("returnCode"));
checkRecordInvoice.setCyjgTip(queryInvoiceResult.getString("returnMessage"));
signCheckRecordService.saveCheckRecordInvoice(checkRecordInvoice, pramsMap.get("dbName"));
}
} else {
// 查验成功
if ("Y".equals(saveHistory)) {
// 查验调用,保存查验记录
signSaveCheckInfoService.saveCheckInfo(queryInvoiceResult, pramsMap.get("userid"), pramsMap.get("dbName"));
if(StringUtils.isNotBlank(queryInvoiceResult.getString("invoiceType"))){
checkLog.setInvoiceType(queryInvoiceResult.getString("invoiceType"));
}
}
checkLog.setHandleCode(queryInvoiceResult.getString("resultCode"));
checkLog.setCheckMassege(queryInvoiceResult.getString("resultTip"));
try {
checkLog.setTaxAmount(queryInvoiceResult.getBigDecimal("taxAmount"));
} catch (Exception e) {
checkLog.setTaxAmount(new BigDecimal(0));
}
try {
checkLog.setTotalAmount(queryInvoiceResult.getBigDecimal("totalAmount"));
} catch (Exception e) {
checkLog.setTotalAmount(new BigDecimal(0));
}
try {
if (FplxEnum.ESC.getFplxDm().equals(invoiceType)) {
checkLog.setInvoiceAmount(queryInvoiceResult.getBigDecimal("carPrice"));
} else {
checkLog.setInvoiceAmount(queryInvoiceResult.getBigDecimal("invoiceAmount"));
}
} catch (Exception e) {
checkLog.setInvoiceAmount(new BigDecimal(0));
}
checkLog.setBuyerName(queryInvoiceResult.getString("buyerName"));
checkLog.setSalerName(queryInvoiceResult.getString("salerName"));
if(FplxEnum.ESC.getFplxDm().equals(invoiceType)){
checkLog.setBuyerName(queryInvoiceResult.getString("buyerUnitOrIndividual"));
checkLog.setSalerName(queryInvoiceResult.getString("sellerUnitOrIndividual"));
}
}
// 查验调用,保存查验日志
if ("Y".equals(saveHistory)) {
DynamicContextHolder.push(pramsMap.get("dbName") + DbConstant.BUSINESS_WRITE);
super.save(checkLog);
}
return checkLog;
}
/**
* 转换扫描查验显示对象
*
* @param checkLog
* 扫描查验结果
* @return 返回结果
*
*/
private ExtSmcyVO convertToSmcyView(TDxCheckLog checkLog) {
ExtSmcyVO smcyVo = new ExtSmcyVO();
String id = checkLog.getInvoiceCode() + "-" + checkLog.getInvoiceNo();
smcyVo.setId(id);
smcyVo.setCheckMassege(checkLog.getCheckMassege());
smcyVo.setInvoiceCode(checkLog.getInvoiceCode());
smcyVo.setInvoiceNo(checkLog.getInvoiceNo());
if (checkLog.getInvoiceDate() != null) {
smcyVo.setInvoiceDate(DateUtils.dateToStr(checkLog.getInvoiceDate()));
}
if (checkLog.getTotalAmount()!= null) {
smcyVo.setTotalAmount(
AmountFormatUtil.fmtMicrometer(MathUtil.round(checkLog.getTotalAmount().toPlainString())));
}else {
smcyVo.setTotalAmount("");
}
if (checkLog.getInvoiceAmount() != null) {
smcyVo.setInvoiceAmount(
AmountFormatUtil.fmtMicrometer(MathUtil.round(checkLog.getInvoiceAmount().toPlainString())));
} else {
smcyVo.setInvoiceAmount("");
}
if (checkLog.getCheckCode() != null) {
smcyVo.setCheckCode(checkLog.getCheckCode());
} else {
smcyVo.setCheckCode("");
}
smcyVo.setInvoiceType(checkLog.getInvoiceType());
smcyVo.setHandleCode(checkLog.getHandleCode());
smcyVo.setGfmc(checkLog.getBuyerName());
smcyVo.setXfmc(checkLog.getSalerName());
if ("0001".equals(checkLog.getHandleCode())) {
smcyVo.setDetailState(true);
smcyVo.setDelState(false);
smcyVo.setEditState(false);
} else {
smcyVo.setDelState(true);
smcyVo.setEditState(true);
smcyVo.setDetailState(false);
}
return smcyVo;
}
}

@ -0,0 +1,35 @@
package com.dxhy.erp.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dxhy.common.service.impl.MpBaseServiceImpl;
import com.dxhy.erp.dao.SignCheckInvoiceDetailDao;
import com.dxhy.erp.entity.TdxCheckInvoiceDetail;
import com.dxhy.erp.service.SignCheckRecordInvoiceDetailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
*
* 查验明细业务处理实现类
*
* @author ld
*
*/
@Service("signCheckRecordInvoiceDetailService")
@Slf4j
public class SignCheckRecordInvoiceDetailServiceImpl extends
MpBaseServiceImpl<SignCheckInvoiceDetailDao, TdxCheckInvoiceDetail> implements SignCheckRecordInvoiceDetailService {
@Override
public List<TdxCheckInvoiceDetail> getInvoiceDetailListByUuid(String uuid) {
QueryWrapper<TdxCheckInvoiceDetail> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("uuid", uuid);
queryWrapper.orderByAsc("detail_no");
return super.list(queryWrapper);
}
}

@ -0,0 +1,58 @@
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.SignCheckRecordInvoiceDao;
import com.dxhy.erp.entity.TdxCheckRecordInvoice;
import com.dxhy.erp.service.SignCheckRecordService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
/**
*
* 发票查验表业务逻辑实现类
*
* @author ld
*/
@Service("signCheckRecordService")
@Slf4j
public class SignCheckRecordServiceImpl extends MpBaseServiceImpl<SignCheckRecordInvoiceDao, TdxCheckRecordInvoice>
implements SignCheckRecordService {
@Override
public TdxCheckRecordInvoice getCheckInvoiceByUuid(String uuid) {
QueryWrapper<TdxCheckRecordInvoice> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("uuid", uuid);
return super.getOne(queryWrapper);
}
@Override
public void saveCheckRecordInvoice(TdxCheckRecordInvoice checkRecordInvoice, String dbName) {
DynamicContextHolder.push(dbName + DbConstant.BUSINESS_WRITE);
if (checkRecordInvoice != null) {
TdxCheckRecordInvoice checkRecordTmp = getCheckInvoiceByUuid(checkRecordInvoice.getUuid());
if (checkRecordTmp != null) {
if (StringUtils.isNotBlank(checkRecordTmp.getCycs())) {
int cycs = Integer.parseInt(checkRecordTmp.getCycs()) + 1;
checkRecordInvoice.setCycs(cycs + "");
} else {
checkRecordInvoice.setCycs("1");
}
} else {
checkRecordInvoice.setCycs("1");
}
// 删除重复数据,防止重复的操作
QueryWrapper<TdxCheckRecordInvoice> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("uuid", checkRecordInvoice.getUuid());
remove(queryWrapper);
// 保存数据
save(checkRecordInvoice);
}
}
}

@ -0,0 +1,33 @@
package com.dxhy.erp.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dxhy.common.service.impl.MpBaseServiceImpl;
import com.dxhy.erp.dao.SignCheckVehicleSaleDao;
import com.dxhy.erp.entity.TdxCheckVehicleSale;
import com.dxhy.erp.service.SignCheckVehicleSaleInvoiceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
*
*
* 查验机动车明细业务处理实现类
*
* @author ld
*
*
*/
@Service("signCheckVehicleSaleInvoiceService")
@Slf4j
public class SignCheckVehicleSaleInvoiceServiceImpl extends
MpBaseServiceImpl<SignCheckVehicleSaleDao, TdxCheckVehicleSale> implements SignCheckVehicleSaleInvoiceService {
@Override
public TdxCheckVehicleSale getCheckInvoiceByUuid(String uuid) {
QueryWrapper<TdxCheckVehicleSale> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("uuid", uuid);
return super.getOne(queryWrapper);
}
}

@ -0,0 +1,302 @@
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.dxhy.common.constant.DbConstant;
import com.dxhy.common.datasource.config.DynamicContextHolder;
import com.dxhy.common.enums.FplxEnum;
import com.dxhy.common.util.NumberToCN;
import com.dxhy.common.util.ScanIdUtils;
import com.dxhy.common.util.StringHelper;
import com.dxhy.erp.entity.TdxCheckInvoiceDetail;
import com.dxhy.erp.entity.TdxCheckRecordInvoice;
import com.dxhy.erp.entity.TdxCheckVehicleSale;
import com.dxhy.erp.service.SignCheckRecordInvoiceDetailService;
import com.dxhy.erp.service.SignCheckRecordService;
import com.dxhy.erp.service.SignCheckVehicleSaleInvoiceService;
import com.dxhy.erp.service.SignSaveCheckInfoService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
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("signSaveCheckInfoService")
@Slf4j
public class SignSaveCheckInfoServiceImpl implements SignSaveCheckInfoService {
@Resource
private ScanIdUtils scanIdUtils;
@Resource
private SignCheckRecordService signCheckRecordService;
@Resource
private SignCheckVehicleSaleInvoiceService signCheckVehicleSaleInvoiceService;
@Resource
private SignCheckRecordInvoiceDetailService signCheckRecordInvoiceDetailService;
@Override
public void saveCheckInfo(JSONObject queryInvoiceResult, String userid, String dbName) {
String resultCode = queryInvoiceResult.getString("resultCode");
// 查验成功,结果一致
/*
* 查验成功状态码
*/
String querySuccCode = "0001";
if (querySuccCode.equals(resultCode)) {
TdxCheckRecordInvoice checkRecord = getRecordInvoice(queryInvoiceResult, userid);
DynamicContextHolder.push(dbName + DbConstant.BUSINESS_WRITE);
TdxCheckRecordInvoice checkRecordTmp = signCheckRecordService.getCheckInvoiceByUuid(checkRecord.getUuid());
if (checkRecordTmp != null) {
if (StringUtils.isNotBlank(checkRecordTmp.getCycs())) {
int cycs = Integer.parseInt(checkRecordTmp.getCycs()) + 1;
checkRecord.setCycs(String.valueOf(cycs));
} else {
checkRecord.setCycs("1");
}
} else {
checkRecord.setCycs("1");
}
TdxCheckVehicleSale checkVehicleSale = getVehicleSaleInvoice(queryInvoiceResult);
List<TdxCheckInvoiceDetail> checkRecordDetailList = getRecordInvoiceDetail(queryInvoiceResult);
DynamicContextHolder.push(dbName + DbConstant.BUSINESS_WRITE);
// 保存查验信息
saveCheckMxxx(checkRecord, checkVehicleSale, checkRecordDetailList);
}
}
public TdxCheckVehicleSale 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;
TdxCheckVehicleSale vehicleSaleInvoice = new TdxCheckVehicleSale();
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"));
return vehicleSaleInvoice;
}else if(FplxEnum.ESC.getFplxDm().equals(invoiceType)){
String invoiceCode = queryInvoiceResult.getString("invoiceCode");
String invoiceNo = queryInvoiceResult.getString("invoiceNo");
String uuid = invoiceCode + invoiceNo;
TdxCheckVehicleSale vehicleSaleInvoice = new TdxCheckVehicleSale();
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"));
return vehicleSaleInvoice;
} else {
return null;
}
}
public List<TdxCheckInvoiceDetail> 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<TdxCheckInvoiceDetail> invoiceDetailList = new ArrayList<>(dataArray.size());
for (int i = 0; i < dataArray.size(); i++) {
JSONObject invoiceDetailQuery = dataArray.getJSONObject(i);
TdxCheckInvoiceDetail invoiceDetail = new TdxCheckInvoiceDetail();
invoiceDetail.setUuid(uuid);
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;
}
}
public TdxCheckRecordInvoice getRecordInvoice(JSONObject queryInvoiceResult, String userid) {
TdxCheckRecordInvoice invoice = new TdxCheckRecordInvoice();
String invoiceType = queryInvoiceResult.getString("invoiceType");
String invoiceCode = queryInvoiceResult.getString("invoiceCode");
String invoiceNo = queryInvoiceResult.getString("invoiceNo");
String uuid = invoiceCode + invoiceNo;
invoice.setCyjgCode(queryInvoiceResult.getString("resultCode"));
invoice.setCyjgTip(queryInvoiceResult.getString("resultTip"));
invoice.setCycs(queryInvoiceResult.getString("checkCount"));
invoice.setFpzl(invoiceType);
if("31".equals(invoiceType) || "32".equals(invoiceType)){
invoice.setFphm(uuid);
}else {
invoice.setFpdm(invoiceCode);
invoice.setFphm(invoiceNo);
}
invoice.setUuid(uuid);
invoice.setGfsh(queryInvoiceResult.getString("buyerTaxNo"));
invoice.setGfmc(queryInvoiceResult.getString("buyerName"));
invoice.setGfdzdh(queryInvoiceResult.getString("buyerAddressPhone"));
invoice.setGfyhzh(queryInvoiceResult.getString("buyerAccount"));
invoice.setXfdzdh(queryInvoiceResult.getString("salerAddressPhone"));
invoice.setXfyhzh(queryInvoiceResult.getString("salerAccount"));
invoice.setXfmc(queryInvoiceResult.getString("salerName"));
invoice.setXfsh(queryInvoiceResult.getString("salerTaxNo"));
invoice.setJe(queryInvoiceResult.getString("invoiceAmount"));
try {
new BigDecimal(queryInvoiceResult.getString("taxAmount"));
invoice.setSe(queryInvoiceResult.getString("taxAmount"));
} catch (Exception e) {
invoice.setSe("0");
}
invoice.setJshj(queryInvoiceResult.getString("totalAmount"));
if(FplxEnum.ESC.getFplxDm().equals(invoiceType)){
invoice.setJe(queryInvoiceResult.getString("carPrice"));
invoice.setJshj(queryInvoiceResult.getString("carPrice"));
invoice.setGfmc(queryInvoiceResult.getString("buyerUnitOrIndividual"));
invoice.setGfsh(queryInvoiceResult.getString("buyerUnitCodeOrIdNo"));
invoice.setGfdzdh(queryInvoiceResult.getString("buyerUnitOrIndividualAddress"));
invoice.setXfmc(queryInvoiceResult.getString("sellerUnitOrIndividual"));
invoice.setXfsh(queryInvoiceResult.getString("sellerUnitCodeOrIdNo"));
invoice.setXfdzdh(queryInvoiceResult.getString("sellerUnitOrIndividualAddress"));
}
invoice.setKprq(queryInvoiceResult.getString("invoiceDate"));
invoice.setJqbh(queryInvoiceResult.getString("machineNo"));
invoice.setBz(queryInvoiceResult.getString("remark"));
invoice.setJym(queryInvoiceResult.getString("checkCode"));
invoice.setTxfbz(queryInvoiceResult.getString("txfbz"));
invoice.setCreateDate(new Date());
invoice.setCheckUser(userid);
invoice.setScanId(queryInvoiceResult.getString("scanId"));
invoice.setZfbz(queryInvoiceResult.getString("isCancelled"));
invoice.setCompany(queryInvoiceResult.getString("company"));
invoice.setPdfMd5(Long.valueOf(scanIdUtils.createSerialNum()));
return invoice;
}
/**
* 保存查验信息
*
* @param checkRecord
* 请求参数
* @param checkVehicleSale
* 请求参数
* @param checkRecordDetailList
* 请求参数
*
*/
@Transactional(rollbackFor = Exception.class)
public void saveCheckMxxx(TdxCheckRecordInvoice checkRecord, TdxCheckVehicleSale checkVehicleSale,
List<TdxCheckInvoiceDetail> checkRecordDetailList) {
String uuid = checkRecord.getUuid();
{
// 删除重复数据,防止重复的操作
QueryWrapper<TdxCheckRecordInvoice> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("uuid", uuid);
signCheckRecordService.remove(queryWrapper);
// 保存数据
signCheckRecordService.save(checkRecord);
}
if (checkVehicleSale != null) {
// 删除重复数据,防止重复的操作
QueryWrapper<TdxCheckVehicleSale> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("uuid", uuid);
signCheckVehicleSaleInvoiceService.remove(queryWrapper);
// 保存数据
signCheckVehicleSaleInvoiceService.save(checkVehicleSale);
}
if (checkRecordDetailList != null && checkRecordDetailList.size() > 0) {
// 删除重复数据,防止重复的操作
QueryWrapper<TdxCheckInvoiceDetail> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("uuid", uuid);
signCheckRecordInvoiceDetailService.remove(queryWrapper);
// 保存数据
/*
* 批量操作的大小
*/
int batchSize = 500;
signCheckRecordInvoiceDetailService.saveBatch(checkRecordDetailList, batchSize);
}
}
}
Loading…
Cancel
Save