parent
849225f75a
commit
020c145228
@ -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…
Reference in new issue