ariesy 添加缺失文件 v1

release
yefei 2 years ago
parent 849225f75a
commit 020c145228
  1. 77
      dxhy-erp/src/main/java/com/dxhy/erp/dao/CheckLogDao.java
  2. 15
      dxhy-erp/src/main/java/com/dxhy/erp/dao/SignCheckInvoiceDetailDao.java
  3. 17
      dxhy-erp/src/main/java/com/dxhy/erp/dao/SignCheckVehicleSaleDao.java
  4. 68
      dxhy-erp/src/main/java/com/dxhy/erp/entity/ExtSmcyVO.java
  5. 26
      dxhy-erp/src/main/java/com/dxhy/erp/service/SignCheckRecordInvoiceDetailService.java
  6. 22
      dxhy-erp/src/main/java/com/dxhy/erp/service/SignCheckVehicleSaleInvoiceService.java
  7. 27
      dxhy-erp/src/main/java/com/dxhy/erp/service/SignSaveCheckInfoService.java
  8. 335
      dxhy-erp/src/main/java/com/dxhy/erp/service/impl/InvoiceQueryServiceImpl.java
  9. 35
      dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignCheckRecordInvoiceDetailServiceImpl.java
  10. 33
      dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignCheckVehicleSaleInvoiceServiceImpl.java
  11. 302
      dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignSaveCheckInfoServiceImpl.java

@ -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.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,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,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 != null
&& !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,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