|
|
|
@ -35,6 +35,7 @@ import java.math.BigDecimal; |
|
|
|
|
import java.text.ParseException; |
|
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.concurrent.TimeoutException; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 山东能源查验主流程控制器 |
|
|
|
@ -110,7 +111,7 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
@PostMapping("/singleInvoiceCheck") |
|
|
|
|
@ResponseBody |
|
|
|
|
@SysLog("发票查验") |
|
|
|
|
public ResponseEntity<String> singleInvoiceCheck(@RequestBody Map<String, String> pramsMap) throws ParseException { |
|
|
|
|
public ResponseEntity<String> singleInvoiceCheck(@RequestBody Map<String, String> pramsMap) throws Exception { |
|
|
|
|
log.info("传入的参数为:{}", pramsMap); |
|
|
|
|
String userid = "101833"; |
|
|
|
|
String dbName = "business"; |
|
|
|
@ -165,7 +166,7 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
return ResponseEntity.ok(JSONObject.toJSONString(R.error("金额不能为空!"))); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
if (StringUtils.isBlank(pramsMap.get("checkCode"))){ |
|
|
|
|
if (StringUtils.isBlank(pramsMap.get("checkCode"))) { |
|
|
|
|
return ResponseEntity.ok(JSONObject.toJSONString(R.error("校验码不能为空!"))); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -184,7 +185,7 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//非通行费类发票 先判断底账库中是否已存在
|
|
|
|
|
if(!"32000".equals(pramsMap.get("invoiceType"))) { |
|
|
|
|
if (!"32000".equals(pramsMap.get("invoiceType"))) { |
|
|
|
|
//查询底账库是否有对应发票,有则直接返回
|
|
|
|
|
QueryWrapper<BaseTDxRecordInvoice> recordWrapper = new QueryWrapper<>(); |
|
|
|
|
recordWrapper.eq("uuid", uuid); |
|
|
|
@ -197,9 +198,26 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
detailWrapper.eq("uuid", uuid); |
|
|
|
|
DynamicContextHolder.push("business" + DbConstant.DETAIL_READ); |
|
|
|
|
List<BaseTDxRecordInvoiceDetail> baseTDxRecordInvoiceDetail = baseTDxRecordInvoiceDetailDao.selectList(detailWrapper); |
|
|
|
|
|
|
|
|
|
DynamicContextHolder.push("business" + DbConstant.BUSINESS_READ); |
|
|
|
|
|
|
|
|
|
if(baseTDxRecordInvoiceDetail != null && baseTDxRecordInvoiceDetail.size() == 0){ |
|
|
|
|
//先删除原有主数据,再查验更新主数据和明细数据
|
|
|
|
|
int delete = baseTDxRecordInvoiceDao.delete(recordWrapper); |
|
|
|
|
if(delete > 0) { |
|
|
|
|
checkInvoiceResult = snPushCheckRecordService.singleCheckInvoice(pramsMap); |
|
|
|
|
|
|
|
|
|
if (!checkInvoiceResult.containsKey("code")) { |
|
|
|
|
if (!checkInvoiceResult.containsKey("cyjg")) { |
|
|
|
|
checkInvoiceResult.put("invoiceNo", checkInvoiceResult.getString("invoiceNumber")); |
|
|
|
|
signSaveInvoiceInfoService.saveQueryInvoiceResult(checkInvoiceResult, userid, "1", dbName); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
DynamicContextHolder.push("business" + DbConstant.DETAIL_READ); |
|
|
|
|
baseTDxRecordInvoiceDetail = baseTDxRecordInvoiceDetailDao.selectList(detailWrapper); |
|
|
|
|
DynamicContextHolder.push("business" + DbConstant.BUSINESS_READ); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
JSONObject checkInvoice = (JSONObject) JSONObject.toJSON(checkInvoiceByUuid); |
|
|
|
|
JSONArray checkInvoiceDetail = (JSONArray) JSONObject.toJSON(baseTDxRecordInvoiceDetail); |
|
|
|
|
|
|
|
|
@ -240,8 +258,8 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
checkInvoiceResult = snPushCheckRecordService.singleCheckInvoice(pramsMap); |
|
|
|
|
log.info("查验结果为:{}", checkInvoiceResult); |
|
|
|
|
checkInvoiceResult = snPushCheckRecordService.singleCheckInvoice(pramsMap); |
|
|
|
|
log.info("查验结果为:{}", checkInvoiceResult); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
} |
|
|
|
@ -312,7 +330,7 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
|
|
|
|
|
private R errorInfo(JSONObject checkInvoiceResult, R data) { |
|
|
|
|
if ("0002".equals(checkInvoiceResult.getString("cyjg"))) { |
|
|
|
|
data = new R(1002, checkInvoiceResult.getString("cyjgxx")); |
|
|
|
|
data = new R(1002, checkInvoiceResult.getString("cyjgxx")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ("0005".equals(checkInvoiceResult.getString("cyjg"))) { |
|
|
|
@ -375,7 +393,7 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
checkInvoice.put("totalAmount", checkInvoice.getString("invoiceAmount")); |
|
|
|
|
//添加非空判断
|
|
|
|
|
String invoiceCode = null; |
|
|
|
|
if ( checkInvoice.get("invoiceCode") != null){ |
|
|
|
|
if (checkInvoice.get("invoiceCode") != null) { |
|
|
|
|
invoiceCode = checkInvoice.get("invoiceCode").toString(); |
|
|
|
|
} |
|
|
|
|
String invoiceType = checkInvoice.get("invoiceType").toString(); |
|
|
|
@ -390,10 +408,10 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
checkInvoice.put("administrativeDivisionNo", ""); |
|
|
|
|
checkInvoice.put("administrativeDivisionName", ""); |
|
|
|
|
|
|
|
|
|
if("31".equals(invoiceType) || "32".equals(invoiceType) || "185".equals(invoiceType) || "186".equals(invoiceType)){ |
|
|
|
|
if ("31".equals(invoiceType) || "32".equals(invoiceType) || "185".equals(invoiceType) || "186".equals(invoiceType)) { |
|
|
|
|
checkInvoice.put("invoiceCode", ""); |
|
|
|
|
checkInvoice.put("invoiceNumber", invoiceCode == null ? checkInvoice.get("invoiceNo").toString() :invoiceCode + checkInvoice.get("invoiceNo").toString()); |
|
|
|
|
}else { |
|
|
|
|
checkInvoice.put("invoiceNumber", invoiceCode == null ? checkInvoice.get("invoiceNo").toString() : invoiceCode + checkInvoice.get("invoiceNo").toString()); |
|
|
|
|
} else { |
|
|
|
|
checkInvoice.put("invoiceCode", invoiceCode); |
|
|
|
|
checkInvoice.put("invoiceNumber", checkInvoice.get("invoiceNo").toString()); |
|
|
|
|
} |
|
|
|
@ -452,10 +470,10 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
Float hjje = null; |
|
|
|
|
if (detail.getString("detailAmount") != null && detail.getString("taxAmount") != null) { |
|
|
|
|
Float je = Float.parseFloat(detail.getString("detailAmount")); |
|
|
|
|
if(detail.getString("taxAmount") != null) { |
|
|
|
|
if (detail.getString("taxAmount") != null) { |
|
|
|
|
Float se = Float.parseFloat(detail.getString("taxAmount")); |
|
|
|
|
hjje = je + se; |
|
|
|
|
}else{ |
|
|
|
|
} else { |
|
|
|
|
hjje = je; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -531,7 +549,7 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
String company = ""; |
|
|
|
|
String taxno = ""; |
|
|
|
|
String taxname = ""; |
|
|
|
|
if(orgByCompCode != null) { |
|
|
|
|
if (orgByCompCode != null) { |
|
|
|
|
company = orgByCompCode.getCompany(); |
|
|
|
|
taxno = orgByCompCode.getTaxno(); |
|
|
|
|
taxname = orgByCompCode.getTaxname(); |
|
|
|
@ -649,11 +667,20 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} catch (Exception exception) { |
|
|
|
|
log.error("同步SAP失败,报错信息为:{}",exception); |
|
|
|
|
} catch (TimeoutException exception) { |
|
|
|
|
log.error("同步SAP失败,报错信息为:{}", exception); |
|
|
|
|
exception.printStackTrace(); |
|
|
|
|
return ResponseEntity.ok(JSONObject.toJSONString(R.error(CommonConstants.CONNECT_TIMEOUT))); |
|
|
|
|
} catch(NullPointerException exception){ |
|
|
|
|
log.error("同步SAP失败,报错信息为:{}", exception); |
|
|
|
|
exception.printStackTrace(); |
|
|
|
|
return ResponseEntity.ok(JSONObject.toJSONString(R.error(CommonConstants.NULL_POINTER_TIMEOUT))); |
|
|
|
|
} catch(Exception exception){ |
|
|
|
|
log.error("同步SAP失败,报错信息为:{}", exception); |
|
|
|
|
exception.printStackTrace(); |
|
|
|
|
return ResponseEntity.ok(JSONObject.toJSONString(R.error(CommonConstants.MSG_ERR_DEFAULT))); |
|
|
|
|
} |
|
|
|
|
return ResponseEntity.ok(JSONObject.toJSONString(R.error(CommonConstants.MSG_ERR_PUSH_SDNY))); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -759,7 +786,7 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
List<SAPInvoiceDetail> sapInvoiceDetailList = new ArrayList<>(); |
|
|
|
|
//查询明细
|
|
|
|
|
String uuid = snInvoice.getInvoiceCode() + snInvoice.getInvoiceNumber(); |
|
|
|
|
if (StringUtils.isBlank(snInvoice.getInvoiceCode())){ |
|
|
|
|
if (StringUtils.isBlank(snInvoice.getInvoiceCode())) { |
|
|
|
|
uuid = snInvoice.getInvoiceNumber(); |
|
|
|
|
} |
|
|
|
|
DynamicContextHolder.push("business" + DbConstant.DETAIL_READ); |
|
|
|
@ -788,7 +815,7 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
//将类似于0.03数据格式转化为3.00
|
|
|
|
|
if (snInvoiceDetail.getTaxRate() != null && snInvoiceDetail.getTaxRate() != "") { |
|
|
|
|
sapInvoiceDetail.setZTAX(snInvoiceDetail.getTaxRate()); |
|
|
|
|
if ( "0".equals(snInvoiceDetail.getTaxRate())){ |
|
|
|
|
if ("0".equals(snInvoiceDetail.getTaxRate())) { |
|
|
|
|
sapInvoiceDetail.setZTAX("0.00"); |
|
|
|
|
// sapInvoiceDetail.setZSM(sapInvoiceDetail.getZTAX());
|
|
|
|
|
} |
|
|
|
@ -802,7 +829,7 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
BigDecimal tax1 = tax.multiply(new BigDecimal("100")); |
|
|
|
|
sapInvoiceDetail.setZTAX(tax1.toString()); |
|
|
|
|
} |
|
|
|
|
if (snInvoiceDetail.getTaxRate().contains("%") && !snInvoiceDetail.getTaxRate().contains(".")){ |
|
|
|
|
if (snInvoiceDetail.getTaxRate().contains("%") && !snInvoiceDetail.getTaxRate().contains(".")) { |
|
|
|
|
String replace = snInvoiceDetail.getTaxRate().replace("%", ".00"); |
|
|
|
|
sapInvoiceDetail.setZTAX(replace); |
|
|
|
|
} |
|
|
|
@ -818,11 +845,11 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
sapInvoiceDetail.setZCYR(info.getZCYRMC()); |
|
|
|
|
sapInvoiceDetail.setZDW(snInvoiceDetail.getUnit()); |
|
|
|
|
sapInvoiceDetail.setZGSJBM(snInvoiceDetail.getCommodityCode()); |
|
|
|
|
if (StringUtils.isNotBlank(snInvoiceDetail.getTax())){ |
|
|
|
|
if (StringUtils.isNotBlank(snInvoiceDetail.getTax())) { |
|
|
|
|
|
|
|
|
|
sapInvoiceDetail.setZSE(snInvoiceDetail.getTax()); |
|
|
|
|
}else { |
|
|
|
|
if (detailInfo != null && !detailInfo.isEmpty()){ |
|
|
|
|
} else { |
|
|
|
|
if (detailInfo != null && !detailInfo.isEmpty()) { |
|
|
|
|
for (InvoiceDetailInfo invoiceDetailInfo : detailInfo) { |
|
|
|
|
if (StringUtils.isNotBlank(invoiceDetailInfo.getDetailNo()) && invoiceDetailInfo.getDetailNo().equals(snInvoiceDetail.getRowNo())) { |
|
|
|
|
sapInvoiceDetail.setZSE(invoiceDetailInfo.getTaxAmount()); |
|
|
|
@ -832,10 +859,10 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
} |
|
|
|
|
sapInvoiceDetail.setZSL(snInvoiceDetail.getQuantity()); |
|
|
|
|
String zsmTax = snInvoiceDetail.getTaxRate(); |
|
|
|
|
if (zsmTax != null && zsmTax != "" && zsmTax.length() > 4){ |
|
|
|
|
zsmTax = zsmTax.substring(0,4); |
|
|
|
|
if (zsmTax != null && zsmTax != "" && zsmTax.length() > 4) { |
|
|
|
|
zsmTax = zsmTax.substring(0, 4); |
|
|
|
|
} |
|
|
|
|
if (zsmTax != null && zsmTax.contains("%") && !zsmTax.contains(".")){ |
|
|
|
|
if (zsmTax != null && zsmTax.contains("%") && !zsmTax.contains(".")) { |
|
|
|
|
zsmTax = (new BigDecimal(zsmTax.replace("%", ""))).divide(new BigDecimal("100")).toString(); |
|
|
|
|
} |
|
|
|
|
// sapInvoiceDetail.setZSM(getZSM(snInvoiceDetail.getTaxRate()));
|
|
|
|
@ -869,16 +896,16 @@ public class SDNYMainProcessController extends AbstractController { |
|
|
|
|
info.setZTAX(replace + ".00"); |
|
|
|
|
info.setZSM(getZSM(divide.toString())); |
|
|
|
|
} |
|
|
|
|
if (taxRate != null && taxRate.contains(".") && !taxRate.contains("%")){ |
|
|
|
|
if (taxRate.length() >4){ |
|
|
|
|
taxRate = taxRate.substring(0,4); |
|
|
|
|
if (taxRate != null && taxRate.contains(".") && !taxRate.contains("%")) { |
|
|
|
|
if (taxRate.length() > 4) { |
|
|
|
|
taxRate = taxRate.substring(0, 4); |
|
|
|
|
BigDecimal tax = new BigDecimal(taxRate); |
|
|
|
|
info.setZSM(getZSM(tax.toString())); |
|
|
|
|
BigDecimal tax1 = tax.multiply(new BigDecimal("100")); |
|
|
|
|
info.setZTAX(tax1.toString()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (taxRate != null && "0".equals(taxRate)){ |
|
|
|
|
if (taxRate != null && "0".equals(taxRate)) { |
|
|
|
|
info.setZTAX("0.00"); |
|
|
|
|
info.setZSM(getZSM(info.getZTAX())); |
|
|
|
|
} |
|
|
|
|