From 08095d9847f0cd612c3007f860e57e967278562e Mon Sep 17 00:00:00 2001
From: 李白 <7387820+wjli_13439841639@user.noreply.gitee.com>
Date: 星期二, 02 六月 2026 08:40:57 +0800
Subject: [PATCH] 修改bip提交和开票记录信息。

---
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/InvoiceServiceImpl.java       |   65 +
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SaleCredit.java                     |   12 
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYs.java               |   38 +
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/InvoiceResultController.java    |  100 +-
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java       |   46 +
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYsItem.java           |  120 +++
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/BIPYsServiceImpl.java | 1398 +++++++++++++++++++++++++++++++++++++++
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYsMx.java             |   79 ++
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYsMxHeader.java       |   35 +
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPPayPlan.java          |   27 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/BIPYsService.java          |   75 ++
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPBody.java             |   68 +
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/RedConfirmVo.java        |    3 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/utils/BipHttpUtil.java             |    5 
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/InvoicingVo.java         |    2 
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BipTokenVo.java          |    2 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/InvoiceService.java                |    5 
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BipResVo.java            |    2 
 18 files changed, 2,025 insertions(+), 57 deletions(-)

diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SaleCredit.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SaleCredit.java
index 48ba3de..7038fa7 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SaleCredit.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SaleCredit.java
@@ -97,6 +97,10 @@
     @Column(columnDefinition = "decimal(10,2) comment '鎸傝处閲戦鎬荤◣棰�'")
     private BigDecimal totalTax;
 
+    @Schema(description = "鎸傝处閲戦鍚堣")
+    @Column(columnDefinition = "decimal(10,2) comment '鎸傝处閲戦鍚堣'")
+    private BigDecimal amountAndtax;
+
     @Schema(description = "鏍囩殑鐗╄鎯�")
     @Column(columnDefinition = "TEXT comment '鏍囩殑鐗╄鎯�'")
     private String matterStr;
@@ -113,12 +117,12 @@
     @Column(columnDefinition = "tinyint(2) default 0 comment '鐘舵�侊紙200锛�'")
     private Integer bipStatus;
 
-    @Schema(description = "寮�绁ㄧ粨鏋滅姸鎬� 0鏈彁浜ら粯璁� 1澶勭悊涓� 2閫氳繃 3椹冲洖 4寮�绁ㄥけ璐�")
-    @javax.persistence.Column(columnDefinition="int(1) comment '鎺掑簭'")
+    @Schema(description = "寮�钃濈エ缁撴灉鐘舵�� 0鏈紑绁� 1寮�绁ㄦ垚鍔� 2寮�绁ㄥけ璐�")
+    @javax.persistence.Column(columnDefinition="int(1) default 0 comment '寮�钃濈エ缁撴灉鐘舵��'")
     private Integer blueResultStatus;
 
-    @Schema(description = "寮�绾㈢エ缁撴灉鐘舵�� 0鏈彁浜ら粯璁� 1澶勭悊涓� 2閫氳繃 3椹冲洖 4寮�绁ㄥけ璐�")
-    @javax.persistence.Column(columnDefinition="int(1) comment '鎺掑簭'")
+    @Schema(description = "寮�绾㈢エ缁撴灉鐘舵�� 0鏈紑绁� 1寮�绁ㄦ垚鍔� 2寮�绁ㄥけ璐�")
+    @javax.persistence.Column(columnDefinition="int(1) comment '寮�绾㈢エ缁撴灉鐘舵��'")
     private Integer redResultStatus;
 
     @Schema(description = "钃濈エid")
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPBody.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPBody.java
new file mode 100644
index 0000000..b87a58f
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPBody.java
@@ -0,0 +1,68 @@
+package com.by4cloud.platformx.business.entity.invoice.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class BIPBody {
+	private String resubmitCheckKey;
+	private String supplierCode;//渚涘簲鍟�
+	private String code;//BIP绯荤粺鍗曟嵁缂栧彿 鏂板鏃朵笉濉紝淇敼鏃跺繀濉�
+	private String extVouchCode;//鐓ら攢绯荤粺鍗曞彿
+	private String YSYF_08;//鐓ら攢绯荤粺鍗曞彿
+	private String extSystemCode;//鐓ら攢绯荤粺鍗曞彿
+	private String id;//BIP搴旀敹鍙戠エid 鏂板鏃朵笉濉紝淇敼鏃跺繀濉�
+	private String financeOrg;//寮�绁ㄧ粍缁� id锛屽紑绁ㄧ粍缁� id 鍜屽紑绁ㄧ粍缁囩紪鐮佷笉鑳藉悓鏃朵负绌�
+	private String financeOrgCode;//寮�绁ㄧ粍缁囩紪鐮�
+
+	private Boolean checkFlag = false;//楠岃瘉
+	private String direction;//鍗曟嵁鏂瑰悜 1:钃濆瓧 -1:绾㈠瓧 绀轰緥锛�1 榛樿鍊硷細1
+	private String billDate;//缁撶畻鏃ユ湡
+	private String bustype;//浜ゆ槗绫诲瀷 id锛屼氦鏄撶被鍨� id 鍜屼氦鏄撶被鍨嬬紪鐮佷笉鑳藉悓鏃朵负绌�
+	private String bustypeCode;//浜ゆ槗绫诲瀷缂栫爜锛�
+	private String contractNo;//鍚堝悓缂栧彿锛�
+	private String org;//涓氬姟缁勭粐 id锛�
+	private String orgCode;//涓氬姟缁勭粐缂栫爜锛�
+	//	private String oriCurrency;//甯佺 id
+//	private String orgCurrency;//甯佺 id
+	private String oriCurrencyCode = "CNY";//甯佺缂栫爜
+	private String orgCurrencyCode = "CNY";//甯佺缂栫爜
+	private String objectType;//寰�鏉ュ璞$被鍨�(鏋氫妇鍊� 1:瀹㈡埛; 2:鍛樺伐;3:璧勯噾涓氬姟瀵硅薄)
+	private String customer;//瀹㈡埛 id
+	private String customerCode;//瀹㈡埛缂栫爜
+	private String employee;//鍛樺伐 id
+	private String employeeCode;//鍛樺伐缂栫爜
+
+	private String invoiceType = "01";
+	private String funder;//璧勯噾涓氬姟瀵硅薄 id
+	private String exchangeRateType;//姹囩巼绫诲瀷 id
+	private String exchangeRateTypeCode = "01";//姹囩巼绫诲瀷缂栫爜
+	private Double exchangeRate = 1.0;//姹囩巼
+	private String exchangeRateDate;//姹囩巼鏃ユ湡
+	private String agreement;//鏀舵鍗忚 id
+	private String agreementCode;//鏀舵鍗忚缂栫爜
+	private String dept;//閮ㄩ棬 id
+	private String deptCode;//閮ㄩ棬缂栫爜
+	private String staff;//涓氬姟鍛� id
+	private String staffCode;//涓氬姟鍛樼紪鐮�
+	private String fk_038_code;//涓氬姟鍛樼紪鐮�
+	private String projectCode;//椤圭洰缂栫爜
+	private String project;//椤圭洰 id
+	private String _status="Insert";//鎿嶄綔鏍囪瘑
+	private String retailer;//鏁f埛鍚嶇О
+	private String remarks;//澶囨敞
+	private String verifyState;//鐘舵��
+
+	private String localTaxExcludedAmount;//鏈竵鏃犵◣閲戦
+	private String localTaxIncludedAmount;//鏈竵鍚◣閲戦
+	private String oriTaxExcludedAmount;// 鍘熷竵鏃犵◣閲戦
+	private String oriTaxIncludedAmount; //鍘熷竵鍚◣閲戦
+
+	//琛ㄤ綋
+	private List<BIPYsItem> bodyItem;
+
+	private BIPYsMxHeader freeChId;
+
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPPayPlan.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPPayPlan.java
new file mode 100644
index 0000000..c746f55
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPPayPlan.java
@@ -0,0 +1,27 @@
+package com.by4cloud.platformx.business.entity.invoice.vo;
+
+import lombok.Data;
+
+@Data
+public class BIPPayPlan {
+
+	private String _status = "Insert";
+
+	private Integer issueNo;
+
+	private String startDate;
+
+	private String expireDate;
+
+	private Double ration;
+
+	private Double oriTaxIncludedAmount;//鍚◣閲戦
+
+	private Double localTaxIncludedAmount;//鍚◣閲戦
+
+	private Integer blnPrepare;//鏄惁棰勬敹
+
+	private Integer blnDeposit;//鏄惁淇濊瘉閲�
+
+	private String id;
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYs.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYs.java
new file mode 100644
index 0000000..85f853d
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYs.java
@@ -0,0 +1,38 @@
+package com.by4cloud.platformx.business.entity.invoice.vo;
+
+import lombok.Data;
+
+//搴旀敹琛ㄥご
+@Data
+public class BIPYs {
+	//																		鏄惁蹇呭~
+	private String financeOrg; // 寮�绁ㄧ粍缁� 									鏄�
+	private String org; // 琛ㄤ綋涓氬姟缁勭粐										鏄�
+	private String billDate; // 鍗� 鎹� 鏃� 鏈� ( 鏍� 寮忎负 :yyyy-MM-ddHH:mm:ss)		鏄�
+	private String direction; // 鍗曟嵁鏂瑰悜(鏋氫妇鍊� -1:绾㈠瓧;1:钃濆瓧)				鏄�
+	private String bustype; // 浜ゆ槗绫诲瀷锛氱叅鐐攢鍞畻锛堝簲鏀讹級鍗曪細MXysfp				鏄�
+	private String verifyState; // 鍗曟嵁鐘舵�� 榛樿锛欼nsert						鏄�
+	private String dept; // BIP 涓氬姟鍛樻墍鍦ㄩ儴闂�									鏄�
+	private String staff; // 涓氬姟鍛� BIP 鍛樺伐妗f								鍚�
+	private String contractNo; // 鍚堝悓缂栧彿									鍚�
+	private String objecttype; // 寰�鏉ュ璞$被鍨� 榛樿 1:瀹㈡埛;						鏄�
+	private String customer; // 瀹㈡埛											鏄�
+	private String MX04; // 缁撶畻鍗曞彿											鏄�
+	private String MX0401; // 鎵樻敹鍗曞彿										鏄�
+	private String MX01; // 鍙戠珯锛堢叅閿�鍙戠珯妗f锛�								鏄�
+	private String MX02; // 鐢ㄧ叅瀹㈠晢 瀹㈡埛妗f		 							鏄�
+	private String GX08; // 鐭垮巶												鏄�
+	private String MX05; // 鐓ら攢涓氬姟绉嶇被										鏄�
+	private String MX06; // 鐓ら攢鍒惰〃浜�												鏄�
+	private String MX07; // 鐓ら攢瀹℃牳浜�												鏄�
+	private String MX08; // 鍏ユ礂鏉ユ簮											鏄�
+	private String fk_038; // 鍑瘉鍒跺崟浜�											鏄�
+	private String oriCurrency; // 甯佺
+	private String exchangeRate; // 缁勭粐甯佺姹囩巼
+	private String srcSystem = "3"; // 鍗曟嵁鏉ユ簮绯荤粺鏉ユ簮绯荤粺
+	private String oriTaxIncludedAmount;//瀛欒〃鍘熷竵鍚◣閲戦
+	private Integer freeChId__fk_002; // 闄勪欢寮犳暟
+	private Integer remarks; // 闄勪欢寮犳暟
+
+
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYsItem.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYsItem.java
new file mode 100644
index 0000000..787d392
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYsItem.java
@@ -0,0 +1,120 @@
+package com.by4cloud.platformx.business.entity.invoice.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+//搴旀敹琛ㄤ綋
+@Data
+public class BIPYsItem {
+
+	//																		鏄惁蹇呭~
+	private String id; // 鏀舵鍗曞瓙琛� id
+	private String _status="Insert"; // 鏀舵鍗曞瓙琛� id
+	private String orgCurrency;// 琛ㄤ綋琛屽竵绉� id
+//	private String oriCurrencyCode="CNY";//甯佺绠�绉�
+//	private String exchangeRateType="01";//姹囩巼绫诲瀷 id
+//	private String exchangeRateDate;// 姹囩巼鏃ユ湡
+//	private String exchangeRate="1";// 姹囩巼
+	private String oriCurrencyCode="CNY";//甯佺缂栫爜
+	private String exchangeRateTypeCode;//姹囩巼绫诲瀷
+	private String exchangeRateDate;//姹囩巼鏃ユ湡
+	private Double exchangeRate;//姹囩巼
+	private String orgCurrencyCode="CNY";//甯佺缂栫爜
+	private Double taxRate;//绋庣巼
+	private BigDecimal localTaxAmount;// 绋庨
+	private BigDecimal oriTaxExcludedAmount;// 鍘熷竵鏃犵◣閲戦
+
+	private String zzbkfl_code;//鏉垮潡
+	private BigDecimal oriTaxIncludedAmount; //鍘熷竵鍚◣閲戦
+	private String objectType;// 琛ㄤ綋琛屽竵绉� id
+	private String customer;// 琛ㄤ綋琛屽竵绉� id
+	private String customerCode;// 琛ㄤ綋琛屽竵绉� id
+	private String supplierCode;//渚涘簲鍟�
+	private String employee;//鍛樺伐 id
+	private String employeeCode;//鍛樺伐缂栫爜
+	private String funder;//璧勯噾涓氬姟瀵硅薄 id
+	private String funderCode;//璧勯噾涓氬姟瀵硅薄 id
+	private BigDecimal localTaxExcludedAmount;//鏈竵鏃犵◣閲戦
+	private BigDecimal localTaxIncludedAmount;//鏈竵鍚◣閲戦
+	private BigDecimal oriTaxAmount;//绋庨
+	private String dept;//閮ㄩ棬ID
+	private String deptCode;//閮ㄩ棬缂栫爜
+	private String agreement;//鏀舵鍗忚 id
+	private BigDecimal agreementCode;//鏀舵鍗忚缂栫爜
+	private BigDecimal quantity;//鏁伴噺锛屼紶鍊兼椂鐗╂枡蹇呬紶
+	private String unitName;//鍗曚綅
+	private String unitCode;//鍗曚綅
+	private String material;//鐗╂枡ID
+	private String materialCode;//鐗╂枡缂栫爜
+	private String JT09_code="0101";//鍙戠エ绫诲瀷
+	private String expenseItemCode;//缁忔祹浜嬮」
+	private String staff;//涓氬姟鍛� id
+	private String staffCode;//涓氬姟鍛樼紪鐮�
+	private Double oriTaxExcludedPrice;//鏃犵◣鍗曚环
+	private Double oriTaxIncludedPrice;//鍚◣鍗曚环
+	private Double localTaxExcludedPrice;//鏈竵鏃犵◣鍗曚环
+	private Double localTaxIncludedPrice;//鏈竵鍚◣鍗曚环
+	private String project;//椤圭洰 id
+	private String projectCode;//椤圭洰缂栫爜
+	private Integer deductTaxType = 0;
+	private Boolean blnDeductTax = true;
+	private String invoiceNo;//鍙戠エ鍙�
+	private String YSYF33;//鍙戠エ鍙�
+	private String invoiceType = "01";//鍙戠エ绫诲瀷
+	private String contractNo;//鍚堝悓缂栧彿
+
+	private Integer HTBMBT;//鏄惁鏈夊悎鍚�0-鍚︼紝1-鏄�
+
+
+	private BIPYsMx freeChId;
+
+	private String remarks;
+
+	private List<BIPPayPlan> grandsonItem;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//	private String expenseItemName; // 缁忔祹浜嬮」 									鏄�
+//	private String JT04; // 浜ゆ槗绫诲瀷										鏄�
+//	private String JT06; // 娆鹃」鏄庣粏
+//	private String JT11; // 鎻愮即鏂瑰紡			鏄�
+//	private String JT01; //涓氭��
+//	private String MX09; //杩愰攢绯荤粺鐓ょ 妗f
+//	private String JT12; //鐗╂枡鍚嶇О 鐗╂枡妗f
+// 	private BigDecimal MX10; //姘寸叅閲�
+//	private BigDecimal MX11; //鏃犵◣閲戦
+//	private String MX12; //鐏板垎绾у埆
+//	private String MX13; //姘村垎
+//	private String MX14; //纭垎
+//	private String MX15; //鍝佺
+//	private BigDecimal MX16; //鎶樺共閲�
+//	private BigDecimal MX17; //鏍囩叅閲�
+//	private BigDecimal MX18; //鏍囩叅閲忓崟浠�
+//	private String unitName; //杩愰攢绯荤粺鐓ょ
+//	private String quantity; //杩愰攢绯荤粺鐓ょ
+//	private Double taxRate; //绋庣巼
+//	private BigDecimal oriTaxAmount; //绋庨
+//	private BigDecimal oriTaxExcludedPrice; //鏃犵◣鍗曚环
+//	private BigDecimal oriTaxExcludedAmount; //鏃犵◣閲戦
+//	private BigDecimal oriTaxIncludedPrice; //鍚◣鍗曚环
+//	private BigDecimal oriTaxIncludedAmount; //鍚◣閲戦
+
+//	private String invoiceType; // 鍙戠エ绫诲瀷
+//	private String invoiceNo; // 鍙戠エ鍙风爜
+//	private String remarks; // 澶囨敞
+
+
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYsMx.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYsMx.java
new file mode 100644
index 0000000..04a3de8
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYsMx.java
@@ -0,0 +1,79 @@
+package com.by4cloud.platformx.business.entity.invoice.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 琛ㄤ綋鐗瑰緛
+ */
+@Data
+public class BIPYsMx {
+
+	private String id; // 鐗瑰緛 id
+//	private String JT01_code="01";//涓氭��
+	private String JT04_code;//浜ゆ槗绫诲瀷
+	private String JT06;//娆鹃」鏄庣粏
+	private String JT06_code;//娆鹃」鏄庣粏
+	private String JT32_code;//浣滀笟瑕佺礌
+	private String YSYF14_code;//娆鹃」绫诲瀷
+	private String YSYF52;//鑷畾涔夊瓧娈�
+	private String YSYF_08;//娆鹃」绫诲瀷
+//	private String JT25_code;//鍏朵粬涓氬姟鏄庣粏
+
+	private String GX08_code;//鏍哥畻鍗曞厓
+	private String GX06_code;//鐗╂枡鍚嶇О
+	//	private String JT11_code="01";//鎻愮即鏂瑰紡
+	private String JT09_code = "0101";//鎻愮即鏂瑰紡
+	private String JT12_code;//鐗╂枡
+
+	private String MX021_code;//鏀惰揣瀹㈡埛
+	private String customerCode;
+	private String MX09; // 杩愰攢绯荤粺鐓ょ
+	private BigDecimal MX10; //姘寸叅閲�
+
+	private String zzbkfl_code; // 璁㈠崟鍙�
+	private Double MX11; //鐏板垎
+	private Integer MX12; //鐏板垎绾у埆
+	private Double MX13; //姘村垎
+	private Double MX14; //纭垎
+	private String MX15; //鍝佺
+
+	private Double MX16; //鎶樺共閲�
+	private BigDecimal MX17; //鏍囩叅閲�
+	private Double MX18; //鏍囩叅閲忓崟浠�
+	private String unitName;
+	private String YSYF33;//鍙戠エ鍙�
+
+	private String invoiceType = "01";
+
+	public Integer getMX12() {
+		if (MX11 != null) {
+			if (MX11 > 9 && MX11 <= 9.5) {
+				this.MX12 = 9;
+			} else if (MX11 > 9.5 && MX11 <= 10) {
+				this.MX12 = 10;
+			} else if (MX11 > 10 && MX11 <= 10.5) {
+				this.MX12 = 11;
+			} else if (MX11 > 10.5 && MX11 <= 11) {
+				this.MX12 = 12;
+			}else if (MX11>11 && MX11<=11.5){
+				this.MX12 = 13;
+			}else if (MX11>11.5 && MX11<=12){
+				this.MX12 = 14;
+			}else if (MX11<9){
+				this.MX12 = 9;
+			}else if (MX11>12){
+				this.MX12 = 14;
+			}
+		}else {
+			return null;
+		}
+//		Coal coal = RedisCacheYunXiaoHelper.getInstance().getCoalById(coalId);
+//		if (coal!=null && StrUtil.isNotEmpty(coal.getCoalPath()) && coal.getCoalPath().indexOf("鐐肩劍绮剧叅") == -1){
+//			this.MX12 = null;
+//		}
+		return this.MX12;
+	}
+
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYsMxHeader.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYsMxHeader.java
new file mode 100644
index 0000000..46d77ec
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYsMxHeader.java
@@ -0,0 +1,35 @@
+package com.by4cloud.platformx.business.entity.invoice.vo;
+
+import lombok.Data;
+
+/**
+ * 琛ㄥご鐗瑰緛
+ */
+@Data
+public class BIPYsMxHeader {
+	private String id;//瀵瑰簲ID
+	private String GX08;//鏍哥畻鍗曞厓锛屾樉绀轰负鐭垮巶
+	private String GX08_code;//鏍哥畻鍗曞厓锛屾樉绀轰负鐭垮巶
+	private String MX01_code;//鍙戠珯
+	private String MX02;//鐢ㄧ叅瀹㈠晢
+	private String MX03;//缁撶畻瀹㈠晢
+	private String MX021_code;//鐢ㄧ叅瀹㈠晢(缂栫爜)
+	private String MX031_code;//缁撶畻瀹㈠晢(缂栫爜)
+	private String MX04;//鐓ら攢缁撶畻鍗曞彿
+	private String MX0401;//鐓ら攢鎵樻敹鍗曞彿
+	private String MX05;//涓氬姟绉嶇被(涓嶇敤)
+	private String MX051_code;//涓氬姟绉嶇被
+	private String MX06;//鐓ら攢鍒惰〃浜�
+	private String MX07; // 鐓ら攢瀹℃牳浜�
+	private String MX08; // 鍏ユ礂鏉ユ簮
+	private Integer fk_002; // 鍑瘉鍒跺崟浜�
+	private String fk_038; // 鍑瘉鍒跺崟浜�
+	//	private String freeChId__JT01 = "01";//涓氭��
+	private String invoiceType = "01";
+	private String contractNo;//鍚堝悓缂栧彿
+
+	private Integer HTBMBT;//鏄惁鏈夊悎鍚�0-鍚︼紝1-鏄�
+	private String orderNo;//璁㈠崟缂栧彿
+	private String remarks;//鎽樿
+
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/BipResVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BipResVo.java
similarity index 68%
rename from platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/BipResVo.java
rename to platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BipResVo.java
index 881c83f..79c240f 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/BipResVo.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BipResVo.java
@@ -1,4 +1,4 @@
-package com.by4cloud.platformx.business.entity.invoice;
+package com.by4cloud.platformx.business.entity.invoice.vo;
 
 import lombok.Data;
 
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/BipTokenVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BipTokenVo.java
similarity index 65%
rename from platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/BipTokenVo.java
rename to platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BipTokenVo.java
index 6863f09..79512f5 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/BipTokenVo.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BipTokenVo.java
@@ -1,4 +1,4 @@
-package com.by4cloud.platformx.business.entity.invoice;
+package com.by4cloud.platformx.business.entity.invoice.vo;
 
 import lombok.Data;
 
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/InvoicingVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/InvoicingVo.java
similarity index 99%
rename from platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/InvoicingVo.java
rename to platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/InvoicingVo.java
index c8db56c..5827656 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/InvoicingVo.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/InvoicingVo.java
@@ -1,4 +1,4 @@
-package com.by4cloud.platformx.business.entity.invoice;
+package com.by4cloud.platformx.business.entity.invoice.vo;
 
 import lombok.Data;
 
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/RedConfirmVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/RedConfirmVo.java
similarity index 97%
rename from platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/RedConfirmVo.java
rename to platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/RedConfirmVo.java
index e819ba8..2e8404e 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/RedConfirmVo.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/RedConfirmVo.java
@@ -1,10 +1,9 @@
-package com.by4cloud.platformx.business.entity.invoice;
+package com.by4cloud.platformx.business.entity.invoice.vo;
 
 import lombok.Data;
 
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 
 /**
  * @author kdq
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/InvoiceResultController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/InvoiceResultController.java
index 3bf5bd6..90f3dfd 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/InvoiceResultController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/InvoiceResultController.java
@@ -1,12 +1,15 @@
 package com.by4cloud.platformx.business.controller;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.by4cloud.platformx.business.entity.ContractOutBound;
 import com.by4cloud.platformx.business.entity.SaleCredit;
 import com.by4cloud.platformx.business.entity.invoice.InvoiceResult;
 import com.by4cloud.platformx.business.entity.invoice.InvoiceResultItem;
-import com.by4cloud.platformx.business.entity.invoice.InvoicingVo;
+import com.by4cloud.platformx.business.entity.invoice.vo.BipResVo;
+import com.by4cloud.platformx.business.entity.invoice.vo.InvoicingVo;
+import com.by4cloud.platformx.business.invoice.service.BIPYsService;
 import com.by4cloud.platformx.business.invoice.service.FpInvoiceResultItemService;
 import com.by4cloud.platformx.business.service.ContractOutBoundService;
 import com.by4cloud.platformx.business.service.InvoiceService;
@@ -42,6 +45,7 @@
     private final InvoiceService invoiceService;
     private final SaleCreditService saleCreditService;
     private final ContractOutBoundService contractOutBoundService;
+    private final BIPYsService bipYsService;
 
     @Operation(summary = "鎺ㄩ�佸簲浠樿摑绁�" , description = "鎺ㄩ�佸簲浠樿摑绁�" )
     @GetMapping("/pushYfBlue" )
@@ -103,15 +107,26 @@
             Map<String, Object> objectMap = invoiceService.toKaipiao(invoicingVo);
             Boolean success = (Boolean) objectMap.get("success");
             String message = (String) objectMap.get("message");
-            System.out.println(saleCredit.getEntrustCode() + "鐨剅ailwayEntrust钃濆瓧寮�绁ㄧ粨鏋滀负锛�" + success + "------" + message);
+            //System.out.println(saleCredit.getEntrustCode() + "鐨剅ailwayEntrust钃濆瓧寮�绁ㄧ粨鏋滀负锛�" + success + "------" + message);
             if(success){
+                saleCredit.setBlueResultStatus(1);
+                saleCreditService.updateById(saleCredit);
+                //StringBuffer errMsg = new StringBuffer();
+                BipResVo bipResVo = bipYsService.sendBIPYs(saleCredit);
+                if (!bipResVo.getCode().equals("200")) {
+                    /*if (StrUtil.isNotEmpty(errMsg)) {
+                        errMsg.append(",");
+                    }
+                    errMsg.append(saleCredit.getCreditCodeB()+ "搴旀敹鍙戠エ鎺ㄩ�佸け璐�:" + bipResVo.getMessage());*/
+                    return R.failed("寮�绁ㄦ垚鍔燂紝鎺ㄩ�乥ip澶辫触锛宔rr:" + bipResVo.getMessage());
+                }else{
+                    return R.ok("寮�绁ㄦ垚鍔�,鎺ㄩ�乥ig鎴愬姛锛�");
+                }
+
+            }else{
                 saleCredit.setStatus(2);
                 saleCreditService.updateById(saleCredit);
-                return R.ok("寮�绁ㄦ垚鍔燂紒");
-            }else{
-                saleCredit.setStatus(3);
-                saleCreditService.updateById(saleCredit);
-                return R.failed("寮�绁ㄥけ璐ワ紒");
+                return R.failed("寮�绁ㄥけ璐ワ紒鍘熷洜锛�" + message);
             }
 
         }catch (Exception e){
@@ -124,47 +139,49 @@
     @Operation(summary = "鍙戠エ鏌ョ湅" , description = "鍙戠エ鏌ョ湅" )
     @GetMapping("/downInvoice" )
     public R downInvoice(String code) {
+        SaleCredit saleCredit = saleCreditService.getOne(new LambdaQueryWrapper<SaleCredit>()
+                .eq(SaleCredit::getEntrustCode, code)
+                .last("limit 1")
+        );
         QueryWrapper<InvoiceResult> invoiceResultQueryWrapper = new QueryWrapper<>();
         invoiceResultQueryWrapper.lambda()
-                .eq(InvoiceResult::getEntrustCode,code)
-                .eq(InvoiceResult::getMethodName,"钃濆瓧寮�绁ㄦ帴鍙�")
-                .eq(InvoiceResult::getSuccess,1)
+                .eq(InvoiceResult::getEntrustCode, code)
+                .eq(InvoiceResult::getMethodName, "钃濆瓧寮�绁ㄦ帴鍙�")
+                .eq(InvoiceResult::getSuccess, 1)
                 .orderByDesc(InvoiceResult::getCreateTime);
         List<InvoiceResult> list = invoiceService.list(invoiceResultQueryWrapper);
-        if(list !=null && list.size()>0){
+        if (list != null && list.size() > 0) {
             InvoiceResult result = list.get(0);
             Map<String, Object> objectMap = invoiceService.downInvoiceMethod(result);
             Boolean success = (Boolean) objectMap.get("success");
             String message = (String) objectMap.get("message");
-            if(success){
-//				if(result.getPushBip()==null||result.getPushBip()!=1){
-//					QueryWrapper<RailwayEntrust> wrapper = new QueryWrapper<>();
-//					wrapper.lambda()
-//							.eq(RailwayEntrust::getEntrustCode,code);
-//					List<RailwayEntrust> railwayEntrusts = railwayEntrustService.list(wrapper);
-//					if(railwayEntrusts !=null && railwayEntrusts.size()>0){
-//						RailwayEntrust railwayEntrust = railwayEntrusts.get(0);
-//						System.out.println(railwayEntrust.getEntrustCode()+"寮�濮嬫帹閫乥ip钃濈エ");
-//						try {
-//							pushBip(railwayEntrust.getId(),railwayEntrust.getInvoicUrl());
-//							System.out.println(railwayEntrust.getEntrustCode()+"鎺ㄩ�乥ip钃濈エ鎴愬姛");
-//							result.setPushBip(1);
-//							result.setPushBipyf(1);
-//							invoiceResultService.updateById(result);
-//						}catch (Exception e){
-//							e.printStackTrace();
-//						}
-//					}
-//				}
-                return R.ok(objectMap);
-            }else {
-                return R.failed(message);
+            if (success) {
+                if (result.getPushBip() == null || result.getPushBip() != 1) {
+                    try {
+                        boolean b = invoiceService.pushBlue(saleCredit.getId(), 1);
+                        if (b) {
+                            //System.out.println(railwayEntrust.getEntrustCode() + "鎺ㄩ�乥ip钃濈エ鎴愬姛");
+                            result.setPushBip(1);
+                            result.setPushBipyf(1);
+                            invoiceService.updateById(result);
+                            return R.ok("鏌ョ湅钃濈エ鎴愬姛锛屾帹閫乥ip钃濈エ鎴愬姛锛�");
+                        }else{
+                            return R.failed("鏌ョ湅钃濈エ鎴愬姛锛屾帹閫乥ip钃濈エ澶辫触锛�");
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        return R.failed("鏌ョ湅钃濈エ鎴愬姛锛屾帹閫乥ip钃濈エ澶辫触锛�");
+                    }
+                }
+                 return R.ok("鏌ョ湅钃濈エ鎴愬姛锛�");
+
+            } else{
+                return R.failed("鏌ョ湅钃濈エ澶辫触锛乪rr:" + message);
             }
         }else {
             return R.failed("鏈煡璇㈠埌寮�绁ㄨ褰�");
         }
     }
-
 
     /**
      * 鍘诲紑绾㈢エ
@@ -236,7 +253,7 @@
         }
     }
 
-   /* @Operation(summary = "绾㈠啿纭鍗�" , description = "绾㈠啿纭鍗�" )
+    @Operation(summary = "绾㈠啿纭鍗�" , description = "绾㈠啿纭鍗�" )
     @PostMapping("/redConfirm" )
     public R redConfirm(@RequestBody InvoicingVo vo) {
 
@@ -253,16 +270,21 @@
             Boolean success = (Boolean) objectMap.get("success");
             String message = (String) objectMap.get("message");
             if(success){
-                return R.ok(null,message);
+                BipResVo bipResVo = bipYsService.removeBipInvoice(saleCredit.getBlueInvoiceResultId().toString(),saleCredit.getEntrustCode(),6);
+                if(bipResVo.getCode().equals("200")){
+                    return R.ok("寮�绾㈢エ鎴愬姛锛宐ip鍒犻櫎鎴愬姛锛�");
+                }else{
+                    return R.ok("寮�绾㈢エ鎴愬姛锛宐ip鍒犻櫎澶辫触,err:" + bipResVo.getMessage());
+                }
             }else {
-                return R.failed(null,message);
+                return R.failed(null,"寮�绁ㄥけ璐ワ紝err:" + message);
             }
 
         }catch (Exception e){
             e.printStackTrace();
             return R.failed("寮�绾㈢エ澶辫触");
         }
-    }*/
+    }
 
     //鍙戠孩鍐蹭箣鍓嶏紝鍏堣繘琛岀孩绁ㄧ‘璁ゃ��
     @Operation(summary = "绾㈠啿鍙戠エform" , description = "绾㈠啿鍙戠エform" )
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java
index 2959929..fffadb8 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java
@@ -10,6 +10,9 @@
 import com.by4cloud.platformx.admin.api.entity.SysDept;
 import com.by4cloud.platformx.admin.api.feign.RemoteDeptService;
 import com.by4cloud.platformx.business.entity.*;
+import com.by4cloud.platformx.business.entity.invoice.vo.BipResVo;
+import com.by4cloud.platformx.business.entity.invoice.vo.InvoicingVo;
+import com.by4cloud.platformx.business.invoice.service.BIPYsService;
 import com.by4cloud.platformx.business.service.*;
 import com.by4cloud.platformx.business.vo.ContractOutBoundVo;
 import com.by4cloud.platformx.common.core.util.R;
@@ -27,6 +30,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 閿�鍞寕璐�
@@ -49,7 +53,8 @@
     private final ContractSubjectMatterService contractSubjectMatterService;
     private final RemoteDeptService remoteDeptService;
 
-
+    private final InvoiceService invoiceService;
+    private final BIPYsService bipYsService;
 
 
     /**
@@ -136,9 +141,43 @@
             contractOutBoundService.updateById(outBound);
         }
         saleCredit.setOutBoundIds(outBoundIds);
-        saleCreditService.save(saleCredit);
+        saleCredit.setEntrustCode("JsNo"+System.currentTimeMillis());
+        saleCreditService.updateById(saleCredit);
 
-       return R.ok("閿�鍞寕璐︾敓鎴愶紒");
+        //鐢熸垚vo
+        InvoicingVo invoicingVo = invoiceService.toGetByCompareByVo(saleCredit,contractOutBoundList);
+        try {
+            Map<String, Object> objectMap = invoiceService.toKaipiao(invoicingVo);
+            Boolean success = (Boolean) objectMap.get("success");
+            String message = (String) objectMap.get("message");
+            //System.out.println(saleCredit.getEntrustCode() + "鐨剅ailwayEntrust钃濆瓧寮�绁ㄧ粨鏋滀负锛�" + success + "------" + message);
+            if(success){
+                saleCredit.setBlueResultStatus(1);
+                saleCreditService.updateById(saleCredit);
+                //StringBuffer errMsg = new StringBuffer();
+                BipResVo bipResVo = bipYsService.sendBIPYs(saleCredit);
+                if (!bipResVo.getCode().equals("200")) {
+                    /*if (StrUtil.isNotEmpty(errMsg)) {
+                        errMsg.append(",");
+                    }
+                    errMsg.append(saleCredit.getCreditCodeB()+ "搴旀敹鍙戠エ鎺ㄩ�佸け璐�:" + bipResVo.getMessage());*/
+                    return R.failed("寮�绁ㄦ垚鍔燂紝鎺ㄩ�乥ip澶辫触锛宔rr:" + bipResVo.getMessage());
+                }else{
+                    return R.ok("寮�绁ㄦ垚鍔�,鎺ㄩ�乥ig鎴愬姛锛�");
+                }
+
+            }else{
+                saleCredit.setStatus(2);
+                saleCreditService.updateById(saleCredit);
+                return R.failed("寮�绁ㄥけ璐ワ紒鍘熷洜锛�" + message);
+            }
+
+        }catch (Exception e){
+            saleCredit.setStatus(3);
+            saleCreditService.updateById(saleCredit);
+            return R.failed("寮�绁ㄥけ璐ワ紒");
+        }
+       //return R.ok("閿�鍞寕璐︾敓鎴愶紒");
     }
 
 
@@ -154,7 +193,6 @@
     @SysLog("鎷兼帴閿�鍞寕璐�" )
     @GetMapping("/generatorInvoice")
     @PreAuthorize("@pms.hasPermission('business_saleCredit_view')" )
-    @Inner(value = false)
     public R generatorInvoice(@ParameterObject SaleCredit saleCredit) {
         if(saleCredit.getContractId()==null){
             return R.failed("鍚堝悓id涓嶈兘涓虹┖");
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/BIPYsService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/BIPYsService.java
new file mode 100644
index 0000000..c7f1e81
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/BIPYsService.java
@@ -0,0 +1,75 @@
+package com.by4cloud.platformx.business.invoice.service;
+
+import com.by4cloud.platformx.business.entity.SaleCredit;
+import com.by4cloud.platformx.business.entity.invoice.BipInvoice;
+import com.by4cloud.platformx.business.entity.invoice.vo.BIPBody;
+import com.by4cloud.platformx.business.entity.invoice.vo.BipResVo;
+
+
+import java.util.List;
+
+public interface BIPYsService {
+
+	/**
+	 *
+	 * @param railwayEntrust
+	 * @param id1
+	 * @param id2
+	 * @param focus 鏄惁瀵瑰
+	 * @param customerCode 瀹㈡埛缂栧彿
+	 * @param customerAddressCode 鏀惰揣瀹㈡埛缂栧彿
+	 * @param //ncCoalNumber 鐓ょ缂栧彿
+	 * @param businessType 浜ゆ槗绫诲瀷锛堣矾杩愰泦涓級
+	 * @param fromStation 鍙戠珯
+	 * @param allId 涓荤粨绠楀崟ID
+	 * @param contractNum 鍚堝悓缂栧彿
+	 * @param number 缁撶畻鍗曞彿
+	 * @param jyType 浜ゆ槗绫诲瀷 闆嗗洟澶�
+	 * @param accountUnitNumber 鏍哥畻鍗曞厓
+	 * @param isNd 0鍐呰皟 1澶栭攢
+	 * @return
+	 */
+	BipResVo sendBIPYs(SaleCredit railwayEntrust, String id1, String id2, Boolean focus, String customerCode, String customerAddressCode,String businessType, String fromStation, Integer allId, String contractNum, String number, String jyType, String accountUnitNumber, String deptCode, String userCode, Integer isNd);
+
+	BipResVo sendBIPYs(SaleCredit saleCredit);
+	/**
+	 *
+	 * @param railwayEntrust
+	 * @param id1 渚涘簲鍟�
+	 * @param id2 涓氬姟缁勭粐
+	 * @param customerAddressCode 鏀惰揣瀹㈡埛
+	 * @param //coal 鐓ょ
+	 * @param businessType 閿�鍞被鍨�
+	 * @param fromStation 鍙戠珯
+	 * @param allId 涓籌D
+	 * @param contractNum 鍚堝悓缂栧彿
+	 * @param number
+	 * @param jyType 浜ゆ槗绫诲瀷
+	 * @param accountUnitNumber 鏍哥畻鍗曞厓
+	 * @param isNd 0鍐呰皟 1澶栭攢
+	 * @return
+	 */
+	BipResVo sendBIPYf(SaleCredit railwayEntrust,String id1,String id2,String customerAddressCode,String businessType,String fromStation,Integer allId,String contractNum,String number,String jyType,String accountUnitNumber,String deptCode,String userCode,Integer isNd);
+
+
+	BipResVo saveRedFlushInvoice(BipInvoice oldBipInvoice, BIPBody bipBody);
+
+//	RailwayEntrust sendBIPYf(RailwayEntrust railwayEntrust,String id1,String id2,String customerAddressCode,String ncCoalNumber,String businessType,String fromStation,Integer allId,String contractNum,String number,String jyType,String accountUnitNumber);
+
+	BipResVo removeBipInvoice(String number, String code, Integer type);
+
+	BipResVo removeBipInvoices(List<BipInvoice> bipInvoiceList);
+
+	BIPBody getBipInvoices(String code, Integer type);
+
+	BipResVo updBipInvoices(BipInvoice bipInvoice, String number);
+
+	BipResVo removeBipInvoice(String number, String code, Integer type, String msg);
+
+
+//	void sendBipAndGenerateInternal(RailwayEntrust railwayEntrust);
+
+//	RailwayEntrust selectBipInvoice();
+
+
+}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/BIPYsServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/BIPYsServiceImpl.java
new file mode 100644
index 0000000..88f7a45
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/BIPYsServiceImpl.java
@@ -0,0 +1,1398 @@
+package com.by4cloud.platformx.business.invoice.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.by4cloud.platformx.business.entity.SaleCredit;
+import com.by4cloud.platformx.business.entity.invoice.BipInvoice;
+import com.by4cloud.platformx.business.entity.invoice.InvoiceResult;
+import com.by4cloud.platformx.business.entity.invoice.vo.*;
+import com.by4cloud.platformx.business.invoice.service.BIPYsService;
+import com.by4cloud.platformx.business.invoice.service.BipInvoiceService;
+import com.by4cloud.platformx.business.invoice.service.FileUploadService;
+import com.by4cloud.platformx.business.invoice.service.FpInvoiceResultService;
+import com.by4cloud.platformx.business.invoice.utils.BipApiEnum;
+import com.by4cloud.platformx.business.invoice.utils.BipHttpUtil;
+import com.by4cloud.platformx.business.invoice.utils.NumUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Slf4j
+@Component
+
+public class BIPYsServiceImpl implements BIPYsService {
+	@Autowired
+	private BipHttpUtil bipHttpUtil;
+	@Autowired
+	private BipInvoiceService bipInvoiceService;
+
+	@Autowired
+	private FileUploadService fileUploadService;
+
+
+	@Autowired
+	private FpInvoiceResultService fpInvoiceResultService;
+
+
+	/*@Value("${otherPrice.dustFeePrice}")
+	private Double dustFeePrice;
+
+	@Value("${otherPrice.dustFeeRate}")
+	private Double dustFeeRate;*/
+
+	@Override
+	public BipResVo sendBIPYs(SaleCredit railwayEntrust, String id1, String id2, Boolean focus, String customerCode, String customerAddressCode, String businessType, String fromStation, Integer allId, String contractNum, String number, String jyType, String accountUnitNumber, String deptCode, String userCode, Integer isNd){//}, ZhAccountLedger accountLedger) {
+//		BipInvoice bipInvoice1 = new BipInvoice();
+//		bipInvoice1.setDay(DateUtil.date());
+//		bipInvoice1.setBipCompNumber(id2);
+//		bipInvoice1.setType(0);
+//		bipInvoice1.setInvoiceType(0);
+//		bipInvoice1.setRailwayEntrustId(railwayEntrust.getId());
+//		bipInvoice1.setAllId(allId);
+//		bipInvoice1.setCompId(railwayEntrust.getCompId());
+//		bipInvoice1.setMoney(railwayEntrust.getAllPrice());
+//		bipInvoice1.setTonnage(railwayEntrust.getTonnage());
+//		bipInvoice1.setPrice(railwayEntrust.getPrice());
+//		bipInvoice1.setResStatus("200");
+//		bipInvoice1.setDirection(1);
+//		bipInvoice1.setTrainType(railwayEntrust.getTrainType());
+//		bipInvoiceService.save(bipInvoice1);
+//		BipResVo bipResVo1 = new BipResVo<>();
+//		bipResVo1.setCode("200");
+//		if (true){
+//			return bipResVo1;
+//		}
+
+		/*Map<String, String> dictMap = RedisCacheHelper.getInstance().getDictMapByType("bip_expense_item");
+		AtomicReference<String> expenseItemCode = new AtomicReference<>("09001001,01");
+		dictMap.forEach((k, v) -> {
+			if (k.equals(railwayEntrust.getCoalId().toString())) {
+				expenseItemCode.set(v);
+			}
+		});*/
+		/*List<ContractOrder> orders = contractOrderService.list(new QueryWrapper<ContractOrder>().lambda().eq(ContractOrder::getNumber, railwayEntrust.getOrderNumber()));
+		ContractOrder order = orders.get(0);
+		Map<String,String> fromStationMap = RedisCacheHelper.getInstance().getDictMapByType("from_station");//鍙戠珯
+		String fromStation2 = "";
+		if (railwayEntrust.getTrainType().equals(2) && StrUtil.isNotEmpty(order.getFromStation()) && fromStationMap!=null){
+			fromStation2 = fromStationMap.get(order.getFromStation());
+		}*/
+		//SysUser user = remoteUserService.getByName(railwayEntrust.getCreateBy());
+		//String createName = (user == null ? "" : user.getRealName());
+		//String ncCoalNumber = coal.getBipCategoryCode();//浜у搧澶х被
+		//String coalBipCode = coal.getBipCode();//鍏蜂綋浜у搧
+		BIPBody bipBody = new BIPBody();
+		BIPYsMxHeader mx = new BIPYsMxHeader();
+		List<BIPYsItem> bipYsItems = new ArrayList<>();
+//		mx.(railwayEntrust.getFyCompName());//鍙戣繍鐭�
+		//mx.setMX01_code(fromStation2);//鍙戠珯
+		/*if (accountLedger.getId().equals(80) || accountLedger.getId().equals(81) && !accountLedger.getId().equals(82)) {
+			contractNum = "";
+		}*/
+		if (StrUtil.isNotEmpty(contractNum)) {
+			mx.setHTBMBT(1);
+		} else {
+			mx.setHTBMBT(0);
+		}
+		mx.setContractNo(contractNum);
+		mx.setMX021_code(customerCode);//鏀惰揣瀹㈡埛
+		mx.setMX031_code(customerCode);//缁撶畻瀹㈡埛
+		mx.setMX04(number);//缁撶畻鍗曞彿
+		mx.setMX0401(railwayEntrust.getEntrustCode());//鎵樻敹鍗曞彿
+		mx.setMX051_code(businessType);//涓氬姟绉嶇被
+		//mx.setMX06(createName);//鍒涘缓浜�
+		//mx.setMX07(railwayEntrust.getUserName());//瀹℃牳浜�
+
+		mx.setGX08_code(accountUnitNumber);//鏍哥畻鍗曞厓
+		//String remark = getRemark(railwayEntrust, "閿�", customerCode, id2);
+		mx.setRemarks(railwayEntrust.getInvoiceRemark());
+		//String fileUrl = fileUploadService.fileUpload(6, railwayEntrust.getId());
+		mx.setFk_002(3);
+		/*if (StrUtil.isNotEmpty(fileUrl) && "01".equals(jyType)) {
+			mx.setFk_002(3 + fileUrl.split(",").length);
+		}*/
+		/*if (railwayEntrust.getFatherEntrustId() != null) {
+			fileUrl = fileUploadService.fileUpload(6, contractNum);
+			mx.setFk_002(3);
+			if (StrUtil.isNotEmpty(fileUrl) && "01".equals(jyType)) {
+				mx.setFk_002(3 + fileUrl.split(",").length);
+			}
+		}*/
+		bipBody.setBustypeCode("MXysfp");
+		bipBody.setStaffCode(userCode);
+//		bipBody.setFk_038_code(userCode);
+		bipBody.setObjectType("1");
+		bipBody.setCustomerCode(customerCode);
+		bipBody.setExtVouchCode(railwayEntrust.getEntrustCode());//鐓ら攢绯荤粺鍗曞彿
+
+		bipBody.setFinanceOrgCode(id2);//寮�绁ㄧ粍缁嘔D
+		bipBody.setDirection("1");//鍗曟嵁鏂瑰悜 1钃� -1绾�
+		bipBody.setBillDate(DateUtil.format(new Date(), "yyyy-MM-dd"));//寮�绁ㄦ棩鏈�
+//		bipBody.setBillDate(DateUtil.format(railwayEntrust.getBalanceDate(), "yyyy-MM-dd"));//寮�绁ㄦ棩鏈�
+
+//		if ("0101".equals(jyType)){
+//
+//		}
+		bipBody.setContractNo(contractNum);
+		bipBody.setOrgCode(id2);//涓氬姟缁勭粐id
+		bipBody.setDeptCode(deptCode);
+		bipBody.setExchangeRateDate(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
+//		bipBody.setExchangeRateDate(DateUtil.format(railwayEntrust.getBalanceDate(), "yyyy-MM-dd HH:mm:ss"));
+//		bipBody.setCustomer();//瀹㈡埛缂栫爜
+
+		//bipBody.setRemarks(remark);
+
+		//琛ㄤ綋
+		//鐓ょ绫荤洰
+		BIPYsItem bipYsItem = new BIPYsItem();
+//		bipYsItem.setExchangeRateDate(DateUtil.format(railwayEntrust.getBalanceDate(),"yyyy-MM-dd HH:mm:ss"));
+
+		//bipYsItem.setTaxRate(NumUtils.multiplyDouble(railwayEntrust.getTaxRate(),100d));
+		//bipYsItem.setUnitName("鍚�");
+
+		/*bipYsItem.setMaterialCode("7704000001");
+		bipYsItem.setQuantity(BigDecimal.valueOf(railwayEntrust.getTonnage()));
+		bipYsItem.setCustomerCode(customerCode);//瀹㈡埛缂栫爜
+		Double noTaxPrice = railwayEntrust.getPrice();
+		bipYsItem.setOriTaxAmount(BigDecimal.valueOf(railwayEntrust.getTaxFee()));//绋庨
+		String[] codes = expenseItemCode.get().split(",");
+		bipYsItem.setExpenseItemCode(codes[0]);
+
+		Double allPrice = railwayEntrust.getTotalPrice();
+		bipYsItem.setOriTaxExcludedAmount(BigDecimal.valueOf(railwayEntrust.getCoalFree()));//鍘熷竵鏃犵◣閲戦
+		bipYsItem.setOriTaxIncludedAmount(BigDecimal.valueOf(railwayEntrust.getTotalPrice()));//鍘熷竵鍚◣閲戦
+		bipYsItem.setLocalTaxExcludedAmount(BigDecimal.valueOf(railwayEntrust.getCoalFree()));//鏈竵鏃犵◣閲戦
+		bipYsItem.setLocalTaxIncludedAmount(BigDecimal.valueOf(railwayEntrust.getTotalPrice()));//鏈竵鍚◣閲戦
+		bipYsItem.setOriTaxExcludedPrice(NumUtils.divideDouble(railwayEntrust.getCoalFree(), railwayEntrust.getTonnage(), 8));//鏃犵◣鍗曚环
+		bipYsItem.setLocalTaxExcludedPrice(NumUtils.divideDouble(railwayEntrust.getCoalFree(), railwayEntrust.getTonnage(), 8));//鏃犵◣鍗曚环
+		Double realPrice = NumUtils.divideDouble(railwayEntrust.getTotalPrice(), railwayEntrust.getTonnage(), 8);
+		bipYsItem.setOriTaxIncludedPrice(realPrice);//鏈竵鍚◣鍗曚环
+		bipYsItem.setLocalTaxIncludedPrice(realPrice);//鏈竵鍚◣鍗曚环
+		//鍒嗗壊鍗曢噾棰�
+		if (CompUtils.isTsCustomer(railwayEntrust.getCustomerId())) {
+			if (railwayEntrust.getFatherEntrustId() == null) {
+
+				Double noTaxMoney = railwayEntrust.getCoalMoney();
+				Double taxMoney = railwayEntrust.getCoalTaxMoney();
+				Double allMoney = NumUtils.addDouble(noTaxMoney, taxMoney, 2);
+				allPrice = allMoney;
+				bipYsItem.setOriTaxAmount(BigDecimal.valueOf(taxMoney));//绋庨
+				bipYsItem.setOriTaxExcludedAmount(BigDecimal.valueOf(noTaxMoney));//鍘熷竵鏃犵◣閲戦
+				bipYsItem.setOriTaxIncludedAmount(BigDecimal.valueOf(allMoney));//鍘熷竵鍚◣閲戦
+				bipYsItem.setLocalTaxExcludedAmount(BigDecimal.valueOf(noTaxMoney));//鏈竵鏃犵◣閲戦
+				bipYsItem.setLocalTaxIncludedAmount(BigDecimal.valueOf(allMoney));//鏈竵鍚◣閲戦
+				bipYsItem.setOriTaxExcludedPrice(railwayEntrust.getPrice());//鏃犵◣鍗曚环
+				bipYsItem.setLocalTaxExcludedPrice(railwayEntrust.getPrice());//鏃犵◣鍗曚环
+				bipYsItem.setOriTaxIncludedPrice(NumUtils.divideDouble(allMoney, railwayEntrust.getTonnage(), 8));//鏈竵鍚◣鍗曚环
+				bipYsItem.setLocalTaxIncludedPrice(NumUtils.divideDouble(allMoney, railwayEntrust.getTonnage(), 8));//鏈竵鍚◣鍗曚环
+			}
+
+		}
+		bipYsItem.setRemarks(remark);*/
+
+		//鐓ょ琛ㄤ綋
+		BIPYsMx bipYsMx = new BIPYsMx();
+		//bipYsMx.setJT12_code(ncCoalNumber);//鐗╂枡缂栫爜
+//		bipYsMx.setJT25_code(codes[1]);
+		//bipYsMx.setGX06_code(coalBipCode);//鐗╂枡鍚嶇О
+
+		bipYsMx.setMX021_code(customerCode);//鏀惰揣瀹㈡埛
+		bipYsMx.setCustomerCode(customerAddressCode);//瀹㈡埛缂栫爜
+		bipYsMx.setJT06_code("01001001");//娆鹃」鏄庣粏
+		bipYsMx.setYSYF14_code("2");
+		if (id2!=null){
+			/*if (id2 != null && id2.equals("10439") && railwayEntrust.getCoalId() != null && railwayEntrust.getCoalId().equals(45)) {
+				bipYsMx.setJT12_code("0101020401");//鐗╂枡缂栫爜
+				bipYsMx.setGX06_code("01010201043902438");//鐗╂枡鍚嶇О
+			}*/
+			if (id2.equals("126") || id2.equals("10439") || id2.equals("1045116") || id2.equals("104810210") || id2.equals("1027902")) {
+				bipBody.setYSYF_08("0");
+				bipYsMx.setYSYF_08("0");
+			}
+			if (id2.startsWith("104")) {
+				if (focus) {
+					bipYsMx.setYSYF52("0");
+				} else {
+					bipYsMx.setYSYF52("1");
+				}
+
+			}
+
+		}
+		bipYsMx.setGX08_code(accountUnitNumber);
+		/*bipYsMx.setMX09(railwayEntrust.getCoalName());//杩愰攢鐓ょ
+		bipYsMx.setMX10(BigDecimal.valueOf(railwayEntrust.getRealTonnage()));//姘寸叅閲�
+		bipYsMx.setMX11(railwayEntrust.getAshContentMetering());//鐏板垎
+		bipYsMx.setMX13(railwayEntrust.getMoistureMetering());
+		bipYsMx.setMX14(railwayEntrust.getSulFurMetering());
+		bipYsMx.setMX15(railwayEntrust.getCoalName());
+		if (railwayEntrust.getInvoiceResultId() == null && !CompUtils.isKp(accountLedger.getId()) && !accountLedger.getId().equals(165)) {
+			throw new RuntimeException("缁撶畻鍗曟湭寮�绁�");
+		}*/
+		InvoiceResult invoiceResult = fpInvoiceResultService.getById(railwayEntrust.getBlueInvoiceResultId());
+		if (invoiceResult != null) {
+			bipYsMx.setYSYF33(invoiceResult.getInvoiceNo());
+			bipYsItem.setInvoiceNo(invoiceResult.getInvoiceNo());
+//			bipYsMx.setInvoiceNo(invoiceResult.getInvoiceNo());
+		}
+		bipYsMx.setZzbkfl_code("01");
+		/*if (StrUtil.isNotEmpty(accountLedger.getZzbkfl())) {
+			bipYsMx.setZzbkfl_code(accountLedger.getZzbkfl());
+		}
+		String jyType1 = jyType;//鐗规畩浜ゆ槗鍗�
+		if (jyType.equals("0101") && railwayEntrust.getCustomerId() != null && railwayEntrust.getCustomerId().equals(203)) {
+			jyType1 = "01020202";
+		}
+
+		if (jyType.equals("0101") && railwayEntrust.getCustomerId() != null && (railwayEntrust.getCustomerId().equals(172) || railwayEntrust.getCustomerId().equals(200) || railwayEntrust.getCustomerId().equals(2002381))) {
+			jyType1 = "010201";
+		}*/
+
+		//bipYsMx.setJT04_code(jyType1);
+		//bipYsMx.setMX16(railwayEntrust.getTonnage());//鎶樺共閲�
+		bipYsItem.setFreeChId(bipYsMx);
+//		bipYsMx.setMX18(railwayEntrust.getRealTonnage());//鏍囩叅閲�
+//		bipYsMx.setMX18(railwayEntrust.getRealPrice());//鏍囩叅閲忓崟浠�
+		//鏀舵璁″垝
+		/*if (focus) {
+			List<BIPPayPlan> bipPayPlans = this.getBipPayPlan(railwayEntrust, allPrice);
+			bipYsItem.setGrandsonItem(bipPayPlans);
+		}*/
+		bipYsItems.add(bipYsItem);
+		String invoiceNo = invoiceResult == null ? "" : invoiceResult.getInvoiceNo();
+
+		/*if (railwayEntrust.getCustomerId() != null && (railwayEntrust.getCustomerId().equals(618) || railwayEntrust.getCustomerId().equals(608) || railwayEntrust.getCustomerId().equals(1367) || railwayEntrust.getCustomerId().equals(1002134))) {
+			this.getTsBt(railwayEntrust, customerCode, jyType1, focus, bipYsItems, isNd, accountUnitNumber, id2, fromStation, invoiceNo, contractNum);
+		} else {
+			this.getPtBt(railwayEntrust, customerCode, jyType1, focus, bipYsItems, isNd, accountUnitNumber, id2, fromStation, invoiceNo, contractNum);
+		}*/
+
+		bipBody.setBodyItem(bipYsItems);
+
+		/*if (railwayEntrust.getFatherEntrustId() == null && !railwayEntrust.getFyCompId().equals(227) && !order.getFiledId().equals(48)) {
+			List<Contract> contracts = fileUploadService.getContractsByEntrustId(railwayEntrust.getId());
+			System.out.println("閲嶅鍚堝悓锛�" + contracts.size() + "涓婄骇ID锛�" + railwayEntrust.getFatherEntrustId() + "缁撶畻鍗曞彿:" + railwayEntrust.getEntrustCode());
+			if (contracts != null && contracts.size() > 0) {
+				contracts.forEach(e -> {
+					BIPYsMxHeader newMx = new BIPYsMxHeader();
+					BeanUtils.copyProperties(mx, newMx);
+					if (accountLedger.getId().equals(80) || accountLedger.getId().equals(81) || accountLedger.getId().equals(82)) {
+						newMx.setContractNo("");
+						newMx.setHTBMBT(0);
+					} else {
+						newMx.setContractNo(e.getNum());
+						newMx.setHTBMBT(1);
+					}
+
+					bipBody.setFreeChId(newMx);
+				});
+			}
+
+		} else {
+			bipBody.setFreeChId(mx);
+		}*/
+
+
+		String result = bipHttpUtil.post(BipApiEnum.搴旀敹鍙戠エ淇濆瓨鎺ュ彛, new JSONObject().set("data", bipBody));
+		BipResVo resVo = JSONUtil.toBean(result, BipResVo.class);
+		//鏀惧埌鍗曟嵁璁板綍琛�
+		BipInvoice bipInvoice = new BipInvoice();
+		bipInvoice.setDay(DateUtil.date());
+		bipInvoice.setInvoice(JSONUtil.toJsonStr(bipBody));
+		bipInvoice.setType(0);
+		bipInvoice.setInvoiceType(0);
+		bipInvoice.setContractNum(contractNum);
+		bipInvoice.setRailwayEntrustId(railwayEntrust.getId());
+		bipInvoice.setAllId(Long.parseLong(allId+""));
+		bipInvoice.setBipCompNumber(id2);
+		bipInvoice.setDirection(1);
+		bipInvoice.setCompId(railwayEntrust.getCompId());
+		bipInvoice.setResStatus(resVo.getCode());
+//			bipInvoice.setMoney(railwayEntrust.getAllPrice());
+//			bipInvoice.setTonnage(railwayEntrust.getTonnage());
+//			bipInvoice.setPrice(railwayEntrust.getPrice());
+		//bipInvoice.setTrainType(railwayEntrust.getTrainType());
+		BipResVo bipResVo = new BipResVo<>();
+		bipResVo.setCode(resVo.getCode());
+		BIPBody resBipBody = null;
+		if (resVo.getData() == null) {
+			resBipBody = new BIPBody();
+		} else {
+			resBipBody = JSONUtil.toBean(resVo.getData().toString(), BIPBody.class);
+		}
+
+
+		if (resVo.getCode().equals("200") || (StrUtil.isNotEmpty(resVo.getMessage()) && resVo.getMessage().contains("娲诲姩[璐㈠姟瀹℃牳]涓婃壘涓嶅埌鐢ㄦ埛")) || StrUtil.isNotEmpty(resBipBody.getCode())) {
+			bipInvoice.setResInvoice(resVo.getData().toString());
+
+			bipInvoice.setBipNumber(resBipBody.getId());
+			//				bipInvoice.setCode("200");
+			bipInvoice.setCode(resBipBody.getCode());
+			bipInvoice.setMessage(resVo.getMessage());
+			bipInvoiceService.save(bipInvoice);
+			bipResVo.setCode("200");
+
+		} else {
+			if (resVo.getData() != null && StrUtil.isNotEmpty(resVo.getData().toString())) {
+				bipInvoice.setBipNumber(resBipBody.getId());
+				bipInvoice.setCode(resBipBody.getCode());
+			}
+			bipInvoice.setMessage(resVo.getMessage());
+			bipResVo.setMessage(resVo.getMessage());
+			bipInvoiceService.save(bipInvoice);
+
+		}
+		if (resVo.getData() != null && StrUtil.isNotEmpty(resVo.getData().toString())) {
+			if (resBipBody.getId() != null) {
+				try {
+					/*if (railwayEntrust.getTrainType().equals(1)) {
+						if (order != null && order.getCompId() != null && order.getCompId().equals(227) && order.getFiledId() != null && order.getFiledId().equals(48)) {
+							fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(8, allId));
+						} else {
+							fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(0, allId));
+						}
+
+						fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(3, railwayEntrust.getId(), railwayEntrust.getQualityName(), railwayEntrust.getUserCompId()));
+					} else if (railwayEntrust.getTrainType().equals(2)) {
+						fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(1, allId));
+						fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(4, railwayEntrust.getId(), railwayEntrust.getQualityName(), railwayEntrust.getUserCompId()));
+					}
+					if (StrUtil.isNotEmpty(fileUrl)) {
+						for (String s : fileUrl.split(",")) {
+							fileUploadService.uploadUrlToBip(railwayEntrust.getId(), resBipBody.getId(), s);
+						}
+					}*/
+					//鍙戠エ
+					railwayEntrust.setBipStatus(200);
+					fpInvoiceResultService.update(new UpdateWrapper<InvoiceResult>().lambda()
+							.eq(InvoiceResult::getEntrustCode, railwayEntrust.getEntrustCode())
+							.set(InvoiceResult::getPushBip, null));
+					//fpInvoiceResultService.pushBlue(railwayEntrust, 0);
+					//fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(2, allId));
+				} catch (Exception e) {
+					//railwayEntrust.setBipFileStatus(-1);
+					log.error("缁撶畻鍗曟帹閫侀檮浠堕敊璇�---", e);
+					e.printStackTrace();
+				}
+			}
+		}
+		return bipResVo;
+	}
+
+	@Override
+	public BipResVo sendBIPYs(SaleCredit railwayEntrust) {
+		BIPBody bipBody = new BIPBody();
+		BIPYsMxHeader mx = new BIPYsMxHeader();
+		List<BIPYsItem> bipYsItems = new ArrayList<>();
+//		mx.(railwayEntrust.getFyCompName());//鍙戣繍鐭�
+		//mx.setMX01_code(fromStation2);//鍙戠珯
+		/*if (accountLedger.getId().equals(80) || accountLedger.getId().equals(81) && !accountLedger.getId().equals(82)) {
+			contractNum = "";
+		}*/
+		if (StrUtil.isNotEmpty(railwayEntrust.getContractNo())) {
+			mx.setHTBMBT(1);
+		} else {
+			mx.setHTBMBT(0);
+		}
+		mx.setContractNo(railwayEntrust.getContractNo());
+		//mx.setMX021_code(customerCode);//鏀惰揣瀹㈡埛
+		//mx.setMX031_code(customerCode);//缁撶畻瀹㈡埛
+		//mx.setMX04(number);//缁撶畻鍗曞彿
+		mx.setMX0401(railwayEntrust.getEntrustCode());//鎵樻敹鍗曞彿
+		//mx.setMX051_code(businessType);//涓氬姟绉嶇被
+		//mx.setMX06(createName);//鍒涘缓浜�
+		//mx.setMX07(railwayEntrust.getUserName());//瀹℃牳浜�
+
+		//mx.setGX08_code(accountUnitNumber);//鏍哥畻鍗曞厓
+		//String remark = getRemark(railwayEntrust, "閿�", customerCode, id2);
+		mx.setRemarks(railwayEntrust.getInvoiceRemark());
+		//String fileUrl = fileUploadService.fileUpload(6, railwayEntrust.getId());
+		mx.setFk_002(3);
+		/*if (StrUtil.isNotEmpty(fileUrl) && "01".equals(jyType)) {
+			mx.setFk_002(3 + fileUrl.split(",").length);
+		}*/
+		/*if (railwayEntrust.getFatherEntrustId() != null) {
+			fileUrl = fileUploadService.fileUpload(6, contractNum);
+			mx.setFk_002(3);
+			if (StrUtil.isNotEmpty(fileUrl) && "01".equals(jyType)) {
+				mx.setFk_002(3 + fileUrl.split(",").length);
+			}
+		}*/
+		bipBody.setBustypeCode("MXysfp");
+		//bipBody.setStaffCode(userCode);
+//		bipBody.setFk_038_code(userCode);
+		bipBody.setObjectType("1");
+		//bipBody.setCustomerCode(customerCode);
+		bipBody.setExtVouchCode(railwayEntrust.getEntrustCode());//鐓ら攢绯荤粺鍗曞彿
+
+		//bipBody.setFinanceOrgCode(id2);//寮�绁ㄧ粍缁嘔D
+		bipBody.setDirection("1");//鍗曟嵁鏂瑰悜 1钃� -1绾�
+		bipBody.setBillDate(DateUtil.format(new Date(), "yyyy-MM-dd"));//寮�绁ㄦ棩鏈�
+//		bipBody.setBillDate(DateUtil.format(railwayEntrust.getBalanceDate(), "yyyy-MM-dd"));//寮�绁ㄦ棩鏈�
+
+//		if ("0101".equals(jyType)){
+//
+//		}
+		//bipBody.setContractNo(contractNum);
+		//bipBody.setOrgCode(id2);//涓氬姟缁勭粐id
+		//bipBody.setDeptCode(deptCode);
+		bipBody.setExchangeRateDate(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
+//		bipBody.setExchangeRateDate(DateUtil.format(railwayEntrust.getBalanceDate(), "yyyy-MM-dd HH:mm:ss"));
+//		bipBody.setCustomer();//瀹㈡埛缂栫爜
+
+		//bipBody.setRemarks(remark);
+
+		//琛ㄤ綋
+		//鐓ょ绫荤洰
+		BIPYsItem bipYsItem = new BIPYsItem();
+//		bipYsItem.setExchangeRateDate(DateUtil.format(railwayEntrust.getBalanceDate(),"yyyy-MM-dd HH:mm:ss"));
+
+		//bipYsItem.setTaxRate(NumUtils.multiplyDouble(railwayEntrust.getTaxRate(),100d));
+		//bipYsItem.setUnitName("鍚�");
+
+		/*bipYsItem.setMaterialCode("7704000001");
+		bipYsItem.setQuantity(BigDecimal.valueOf(railwayEntrust.getTonnage()));
+		bipYsItem.setCustomerCode(customerCode);//瀹㈡埛缂栫爜
+		Double noTaxPrice = railwayEntrust.getPrice();
+		bipYsItem.setOriTaxAmount(BigDecimal.valueOf(railwayEntrust.getTaxFee()));//绋庨
+		String[] codes = expenseItemCode.get().split(",");
+		bipYsItem.setExpenseItemCode(codes[0]);
+
+		Double allPrice = railwayEntrust.getTotalPrice();
+		bipYsItem.setOriTaxExcludedAmount(BigDecimal.valueOf(railwayEntrust.getCoalFree()));//鍘熷竵鏃犵◣閲戦
+		bipYsItem.setOriTaxIncludedAmount(BigDecimal.valueOf(railwayEntrust.getTotalPrice()));//鍘熷竵鍚◣閲戦
+		bipYsItem.setLocalTaxExcludedAmount(BigDecimal.valueOf(railwayEntrust.getCoalFree()));//鏈竵鏃犵◣閲戦
+		bipYsItem.setLocalTaxIncludedAmount(BigDecimal.valueOf(railwayEntrust.getTotalPrice()));//鏈竵鍚◣閲戦
+		bipYsItem.setOriTaxExcludedPrice(NumUtils.divideDouble(railwayEntrust.getCoalFree(), railwayEntrust.getTonnage(), 8));//鏃犵◣鍗曚环
+		bipYsItem.setLocalTaxExcludedPrice(NumUtils.divideDouble(railwayEntrust.getCoalFree(), railwayEntrust.getTonnage(), 8));//鏃犵◣鍗曚环
+		Double realPrice = NumUtils.divideDouble(railwayEntrust.getTotalPrice(), railwayEntrust.getTonnage(), 8);
+		bipYsItem.setOriTaxIncludedPrice(realPrice);//鏈竵鍚◣鍗曚环
+		bipYsItem.setLocalTaxIncludedPrice(realPrice);//鏈竵鍚◣鍗曚环
+		//鍒嗗壊鍗曢噾棰�
+		if (CompUtils.isTsCustomer(railwayEntrust.getCustomerId())) {
+			if (railwayEntrust.getFatherEntrustId() == null) {
+
+				Double noTaxMoney = railwayEntrust.getCoalMoney();
+				Double taxMoney = railwayEntrust.getCoalTaxMoney();
+				Double allMoney = NumUtils.addDouble(noTaxMoney, taxMoney, 2);
+				allPrice = allMoney;
+				bipYsItem.setOriTaxAmount(BigDecimal.valueOf(taxMoney));//绋庨
+				bipYsItem.setOriTaxExcludedAmount(BigDecimal.valueOf(noTaxMoney));//鍘熷竵鏃犵◣閲戦
+				bipYsItem.setOriTaxIncludedAmount(BigDecimal.valueOf(allMoney));//鍘熷竵鍚◣閲戦
+				bipYsItem.setLocalTaxExcludedAmount(BigDecimal.valueOf(noTaxMoney));//鏈竵鏃犵◣閲戦
+				bipYsItem.setLocalTaxIncludedAmount(BigDecimal.valueOf(allMoney));//鏈竵鍚◣閲戦
+				bipYsItem.setOriTaxExcludedPrice(railwayEntrust.getPrice());//鏃犵◣鍗曚环
+				bipYsItem.setLocalTaxExcludedPrice(railwayEntrust.getPrice());//鏃犵◣鍗曚环
+				bipYsItem.setOriTaxIncludedPrice(NumUtils.divideDouble(allMoney, railwayEntrust.getTonnage(), 8));//鏈竵鍚◣鍗曚环
+				bipYsItem.setLocalTaxIncludedPrice(NumUtils.divideDouble(allMoney, railwayEntrust.getTonnage(), 8));//鏈竵鍚◣鍗曚环
+			}
+
+		}
+		bipYsItem.setRemarks(remark);*/
+
+		//鐓ょ琛ㄤ綋
+		BIPYsMx bipYsMx = new BIPYsMx();
+		//bipYsMx.setJT12_code(ncCoalNumber);//鐗╂枡缂栫爜
+//		bipYsMx.setJT25_code(codes[1]);
+		//bipYsMx.setGX06_code(coalBipCode);//鐗╂枡鍚嶇О
+
+		//bipYsMx.setMX021_code(customerCode);//鏀惰揣瀹㈡埛
+		//bipYsMx.setCustomerCode(customerAddressCode);//瀹㈡埛缂栫爜
+		bipYsMx.setJT06_code("01001001");//娆鹃」鏄庣粏
+		bipYsMx.setYSYF14_code("2");
+		/*if (id2!=null){
+			*//*if (id2 != null && id2.equals("10439") && railwayEntrust.getCoalId() != null && railwayEntrust.getCoalId().equals(45)) {
+				bipYsMx.setJT12_code("0101020401");//鐗╂枡缂栫爜
+				bipYsMx.setGX06_code("01010201043902438");//鐗╂枡鍚嶇О
+			}*//*
+			if (id2.equals("126") || id2.equals("10439") || id2.equals("1045116") || id2.equals("104810210") || id2.equals("1027902")) {
+				bipBody.setYSYF_08("0");
+				bipYsMx.setYSYF_08("0");
+			}
+			if (id2.startsWith("104")) {
+				if (focus) {
+					bipYsMx.setYSYF52("0");
+				} else {
+					bipYsMx.setYSYF52("1");
+				}
+
+			}
+
+		}
+		bipYsMx.setGX08_code(accountUnitNumber);*/
+		/*bipYsMx.setMX09(railwayEntrust.getCoalName());//杩愰攢鐓ょ
+		bipYsMx.setMX10(BigDecimal.valueOf(railwayEntrust.getRealTonnage()));//姘寸叅閲�
+		bipYsMx.setMX11(railwayEntrust.getAshContentMetering());//鐏板垎
+		bipYsMx.setMX13(railwayEntrust.getMoistureMetering());
+		bipYsMx.setMX14(railwayEntrust.getSulFurMetering());
+		bipYsMx.setMX15(railwayEntrust.getCoalName());
+		if (railwayEntrust.getInvoiceResultId() == null && !CompUtils.isKp(accountLedger.getId()) && !accountLedger.getId().equals(165)) {
+			throw new RuntimeException("缁撶畻鍗曟湭寮�绁�");
+		}*/
+		InvoiceResult invoiceResult = fpInvoiceResultService.getById(railwayEntrust.getBlueInvoiceResultId());
+		if (invoiceResult != null) {
+			bipYsMx.setYSYF33(invoiceResult.getInvoiceNo());
+			bipYsItem.setInvoiceNo(invoiceResult.getInvoiceNo());
+//			bipYsMx.setInvoiceNo(invoiceResult.getInvoiceNo());
+		}
+		bipYsMx.setZzbkfl_code("01");
+		/*if (StrUtil.isNotEmpty(accountLedger.getZzbkfl())) {
+			bipYsMx.setZzbkfl_code(accountLedger.getZzbkfl());
+		}
+		String jyType1 = jyType;//鐗规畩浜ゆ槗鍗�
+		if (jyType.equals("0101") && railwayEntrust.getCustomerId() != null && railwayEntrust.getCustomerId().equals(203)) {
+			jyType1 = "01020202";
+		}
+
+		if (jyType.equals("0101") && railwayEntrust.getCustomerId() != null && (railwayEntrust.getCustomerId().equals(172) || railwayEntrust.getCustomerId().equals(200) || railwayEntrust.getCustomerId().equals(2002381))) {
+			jyType1 = "010201";
+		}*/
+
+		//bipYsMx.setJT04_code(jyType1);
+		//bipYsMx.setMX16(railwayEntrust.getTonnage());//鎶樺共閲�
+		bipYsItem.setFreeChId(bipYsMx);
+//		bipYsMx.setMX18(railwayEntrust.getRealTonnage());//鏍囩叅閲�
+//		bipYsMx.setMX18(railwayEntrust.getRealPrice());//鏍囩叅閲忓崟浠�
+		//鏀舵璁″垝
+		/*if (focus) {
+			List<BIPPayPlan> bipPayPlans = this.getBipPayPlan(railwayEntrust, allPrice);
+			bipYsItem.setGrandsonItem(bipPayPlans);
+		}*/
+		bipYsItems.add(bipYsItem);
+		String invoiceNo = invoiceResult == null ? "" : invoiceResult.getInvoiceNo();
+
+		/*if (railwayEntrust.getCustomerId() != null && (railwayEntrust.getCustomerId().equals(618) || railwayEntrust.getCustomerId().equals(608) || railwayEntrust.getCustomerId().equals(1367) || railwayEntrust.getCustomerId().equals(1002134))) {
+			this.getTsBt(railwayEntrust, customerCode, jyType1, focus, bipYsItems, isNd, accountUnitNumber, id2, fromStation, invoiceNo, contractNum);
+		} else {
+			this.getPtBt(railwayEntrust, customerCode, jyType1, focus, bipYsItems, isNd, accountUnitNumber, id2, fromStation, invoiceNo, contractNum);
+		}*/
+
+		bipBody.setBodyItem(bipYsItems);
+
+		/*if (railwayEntrust.getFatherEntrustId() == null && !railwayEntrust.getFyCompId().equals(227) && !order.getFiledId().equals(48)) {
+			List<Contract> contracts = fileUploadService.getContractsByEntrustId(railwayEntrust.getId());
+			System.out.println("閲嶅鍚堝悓锛�" + contracts.size() + "涓婄骇ID锛�" + railwayEntrust.getFatherEntrustId() + "缁撶畻鍗曞彿:" + railwayEntrust.getEntrustCode());
+			if (contracts != null && contracts.size() > 0) {
+				contracts.forEach(e -> {
+					BIPYsMxHeader newMx = new BIPYsMxHeader();
+					BeanUtils.copyProperties(mx, newMx);
+					if (accountLedger.getId().equals(80) || accountLedger.getId().equals(81) || accountLedger.getId().equals(82)) {
+						newMx.setContractNo("");
+						newMx.setHTBMBT(0);
+					} else {
+						newMx.setContractNo(e.getNum());
+						newMx.setHTBMBT(1);
+					}
+
+					bipBody.setFreeChId(newMx);
+				});
+			}
+
+		} else {
+			bipBody.setFreeChId(mx);
+		}*/
+
+
+		String result = bipHttpUtil.post(BipApiEnum.搴旀敹鍙戠エ淇濆瓨鎺ュ彛, new JSONObject().set("data", bipBody));
+		BipResVo resVo = JSONUtil.toBean(result, BipResVo.class);
+		//鏀惧埌鍗曟嵁璁板綍琛�
+		BipInvoice bipInvoice = new BipInvoice();
+		bipInvoice.setDay(DateUtil.date());
+		bipInvoice.setInvoice(JSONUtil.toJsonStr(bipBody));
+		bipInvoice.setType(0);
+		bipInvoice.setInvoiceType(0);
+		bipInvoice.setContractNum(railwayEntrust.getContractNo());
+		bipInvoice.setRailwayEntrustId(railwayEntrust.getId());
+		//bipInvoice.setAllId(Long.parseLong(allId+""));
+		bipInvoice.setBipCompNumber("id2");
+		bipInvoice.setDirection(1);
+		bipInvoice.setCompId(railwayEntrust.getCompId());
+		bipInvoice.setResStatus(resVo.getCode());
+//			bipInvoice.setMoney(railwayEntrust.getAllPrice());
+//			bipInvoice.setTonnage(railwayEntrust.getTonnage());
+//			bipInvoice.setPrice(railwayEntrust.getPrice());
+		//bipInvoice.setTrainType(railwayEntrust.getTrainType());
+		BipResVo bipResVo = new BipResVo<>();
+		bipResVo.setCode(resVo.getCode());
+		BIPBody resBipBody = null;
+		if (resVo.getData() == null) {
+			resBipBody = new BIPBody();
+		} else {
+			resBipBody = JSONUtil.toBean(resVo.getData().toString(), BIPBody.class);
+		}
+
+
+		if (resVo.getCode().equals("200") || (StrUtil.isNotEmpty(resVo.getMessage()) && resVo.getMessage().contains("娲诲姩[璐㈠姟瀹℃牳]涓婃壘涓嶅埌鐢ㄦ埛")) || StrUtil.isNotEmpty(resBipBody.getCode())) {
+			bipInvoice.setResInvoice(resVo.getData().toString());
+
+			bipInvoice.setBipNumber(resBipBody.getId());
+			//				bipInvoice.setCode("200");
+			bipInvoice.setCode(resBipBody.getCode());
+			bipInvoice.setMessage(resVo.getMessage());
+			bipInvoiceService.save(bipInvoice);
+			bipResVo.setCode("200");
+
+		} else {
+			if (resVo.getData() != null && StrUtil.isNotEmpty(resVo.getData().toString())) {
+				bipInvoice.setBipNumber(resBipBody.getId());
+				bipInvoice.setCode(resBipBody.getCode());
+			}
+			bipInvoice.setMessage(resVo.getMessage());
+			bipResVo.setMessage(resVo.getMessage());
+			bipInvoiceService.save(bipInvoice);
+
+		}
+		if (resVo.getData() != null && StrUtil.isNotEmpty(resVo.getData().toString())) {
+			if (resBipBody.getId() != null) {
+				try {
+					/*if (railwayEntrust.getTrainType().equals(1)) {
+						if (order != null && order.getCompId() != null && order.getCompId().equals(227) && order.getFiledId() != null && order.getFiledId().equals(48)) {
+							fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(8, allId));
+						} else {
+							fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(0, allId));
+						}
+
+						fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(3, railwayEntrust.getId(), railwayEntrust.getQualityName(), railwayEntrust.getUserCompId()));
+					} else if (railwayEntrust.getTrainType().equals(2)) {
+						fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(1, allId));
+						fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(4, railwayEntrust.getId(), railwayEntrust.getQualityName(), railwayEntrust.getUserCompId()));
+					}
+					if (StrUtil.isNotEmpty(fileUrl)) {
+						for (String s : fileUrl.split(",")) {
+							fileUploadService.uploadUrlToBip(railwayEntrust.getId(), resBipBody.getId(), s);
+						}
+					}*/
+					//鍙戠エ
+					railwayEntrust.setBipStatus(200);
+					fpInvoiceResultService.update(new UpdateWrapper<InvoiceResult>().lambda()
+							.eq(InvoiceResult::getEntrustCode, railwayEntrust.getEntrustCode())
+							.set(InvoiceResult::getPushBip, null));
+					//fpInvoiceResultService.pushBlue(railwayEntrust, 0);
+					//fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(2, allId));
+				} catch (Exception e) {
+					//railwayEntrust.setBipFileStatus(-1);
+					log.error("缁撶畻鍗曟帹閫侀檮浠堕敊璇�---", e);
+					e.printStackTrace();
+				}
+			}
+		}
+		return bipResVo;
+	}
+
+
+	public BipResVo sendBIPYf(SaleCredit railwayEntrust,String id1,String id2,String customerCode,String businessType,String fromStation,Integer allId,String contractNum,String number,String jyType,String accountUnitNumber,String deptCode,String userCode,Integer isNd) {
+//		BipResVo bipResVo1 = new BipResVo<>();
+//		bipResVo1.setCode("200");
+//		BipInvoice bipInvoice1 = new BipInvoice();
+//		bipInvoice1.setDay(DateUtil.date());
+//		bipInvoice1.setBipCompNumber(id2);
+//		bipInvoice1.setType(0);
+//		bipInvoice1.setInvoiceType(1);
+//		bipInvoice1.setRailwayEntrustId(railwayEntrust.getId());
+//		bipInvoice1.setAllId(allId);
+//		bipInvoice1.setCompId(railwayEntrust.getCompId());
+//		bipInvoice1.setMoney(railwayEntrust.getAllPrice());
+//		bipInvoice1.setTonnage(railwayEntrust.getTonnage());
+//		bipInvoice1.setPrice(railwayEntrust.getPrice());
+//		bipInvoice1.setResStatus("200");
+//		bipInvoice1.setDirection(1);
+//		bipInvoice1.setTrainType(railwayEntrust.getTrainType());
+//		bipInvoiceService.save(bipInvoice1);
+//		if (true){
+//			return bipResVo1;
+//		}
+		/*Map<String, String> dictMap = RedisCacheHelper.getInstance().getDictMapByType("bip_expense_item");
+		AtomicReference<String> expenseItemCode = new AtomicReference<>("12008001001,01");
+
+		List<ContractOrder> orders = contractOrderService.list(new QueryWrapper<ContractOrder>().lambda().eq(ContractOrder::getNumber, railwayEntrust.getOrderNumber()));
+		ContractOrder order = orders.get(0);
+		dictMap.forEach((k, v) -> {
+			if (k.equals(railwayEntrust.getCoalId().toString())) {
+				expenseItemCode.set(v);
+			}
+		});
+		Map<String,String> fromStationMap = RedisCacheHelper.getInstance().getDictMapByType("from_station");//鍙戠珯
+		String fromStation2 = "";
+		if (railwayEntrust.getTrainType().equals(2) && StrUtil.isNotEmpty(order.getFromStation()) && fromStationMap!=null){
+			fromStation2 = fromStationMap.get(order.getFromStation());
+		}
+		SysUser user = remoteUserService.getByName(railwayEntrust.getCreateBy());
+		String createName = (user==null?"":user.getRealName());*/
+		BIPBody bipBody = new BIPBody();
+		BIPYsMxHeader mx = new BIPYsMxHeader();
+		List<BIPYsItem> bipYsItems = new ArrayList<>();
+		//mx.setMX01_code(fromStation2);//鍙戠珯
+		mx.setMX031_code(customerCode);//缁撶畻瀹㈡埛
+//		mx.setContractNo(contractNum);
+		//mx.setOrderNo(railwayEntrust.getOrderNumber());
+		//String ncCoalNumber = coal.getBipCategoryCode();
+		//String coalBipCode = coal.getBipCode();
+
+//		mx.setMX03("102");//缁撶畻瀹㈡埛
+		mx.setMX04(number);//缁撶畻鍗曞彿
+		mx.setMX0401(railwayEntrust.getEntrustCode());//鎵樻敹鍗曞彿
+		mx.setMX051_code(businessType);//涓氬姟绉嶇被
+		//mx.setMX06(createName);//鍒涘缓浜�
+		//mx.setMX07(railwayEntrust.getUserName());//瀹℃牳浜�
+		mx.setGX08_code(accountUnitNumber);//鏍哥畻鍗曞厓妗f
+		//String remark = getRemark(railwayEntrust, "璐�", id2, id1);
+		//mx.setRemarks(remark);
+		//String fileUrl = fileUploadService.fileUpload(6, contractNum);
+		mx.setFk_002(3);
+		/*if (StrUtil.isNotEmpty(fileUrl)) {
+			mx.setFk_002(3 + fileUrl.split(",").length);
+		}*/
+
+//
+		bipBody.setBustypeCode("MXyffp");
+		bipBody.setObjectType("0");
+		bipBody.setStaffCode(userCode);
+//		bipBody.setFk_038_code(userCode);
+		/*if (accountLedger.getId().equals(80) || accountLedger.getId().equals(81) || accountLedger.getId().equals(82)) {
+			contractNum = "";
+		}*/
+		if (StrUtil.isNotEmpty(contractNum)) {
+			mx.setHTBMBT(1);
+		} else {
+			mx.setHTBMBT(0);
+		}
+		mx.setContractNo(contractNum);
+		bipBody.setContractNo(contractNum);//鍚堝悓鍙凤紒锛�
+		bipBody.setSupplierCode(id1);
+		bipBody.setCustomerCode(customerCode);
+		bipBody.setExtVouchCode(railwayEntrust.getEntrustCode());//鐓ら攢绯荤粺鍗曞彿
+		bipBody.setFinanceOrgCode(id2);//鏀剁エ缁勭粐ID
+		bipBody.setDirection("1");//鍗曟嵁鏂瑰悜 1钃� -1绾�
+		bipBody.setBillDate(DateUtil.format(new Date(), "yyyy-MM-dd"));//寮�绁ㄦ棩鏈�
+//		bipBody.setBillDate(DateUtil.format(railwayEntrust.getBalanceDate(), "yyyy-MM-dd"));//寮�绁ㄦ棩鏈�
+		bipBody.setDeptCode(deptCode);
+		bipBody.setOrgCode(id2);//涓氬姟缁勭粐id
+//		bipBody.setExchangeRateDate(DateUtil.format(railwayEntrust.getBalanceDate(), "yyyy-MM-dd HH:mm:ss"));
+		bipBody.setExchangeRateDate(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
+//		bipBody.setCustomer();//瀹㈡埛缂栫爜
+		//bipBody.setRemarks(remark);
+//
+//
+		BIPYsItem bipYsItem = new BIPYsItem();
+//		bipYsItem.setExchangeRateDate(DateUtil.format(railwayEntrust.getBalanceDate(),"yyyy-MM-dd HH:mm:ss"));
+
+		//bipYsItem.setTaxRate(NumUtils.multiplyDouble(railwayEntrust.getTaxRate(), 100d));
+
+
+		/*bipYsItem.setCustomerCode(id1);//瀹㈡埛缂栫爜
+		Double noTaxPrice = NumUtils.divideDouble(railwayEntrust.getCoalFree(), railwayEntrust.getTonnage(), 8);
+		bipYsItem.setOriTaxAmount(BigDecimal.valueOf(railwayEntrust.getTaxFee()));//绋庨
+		bipYsItem.setOriTaxExcludedAmount(BigDecimal.valueOf(railwayEntrust.getCoalFree()));//鍘熷竵鏃犵◣閲戦
+		bipYsItem.setOriTaxIncludedAmount(BigDecimal.valueOf(railwayEntrust.getTotalPrice()));//鍘熷竵鍚◣閲戦
+		bipYsItem.setLocalTaxExcludedAmount(BigDecimal.valueOf(railwayEntrust.getCoalFree()));//鏈竵鏃犵◣閲戦
+		bipYsItem.setLocalTaxIncludedAmount(BigDecimal.valueOf(railwayEntrust.getTotalPrice()));//鏈竵鍚◣閲戦
+		bipYsItem.setOriTaxExcludedPrice(noTaxPrice);//鏃犵◣鍗曚环
+		bipYsItem.setLocalTaxExcludedPrice(noTaxPrice);//鏃犵◣鍗曚环
+		Double realPrice = NumUtils.divideDouble(railwayEntrust.getTotalPrice(),railwayEntrust.getTonnage(),8);
+		bipYsItem.setOriTaxIncludedPrice(realPrice);//鏈竵鍚◣鍗曚环
+		bipYsItem.setLocalTaxIncludedPrice(realPrice);//鏈竵鍚◣鍗曚环
+		Double allPrice = railwayEntrust.getTotalPrice();*/
+		//鍒嗗壊鍗曢噾棰�
+		/*if (railwayEntrust.getCustomerId()!=null && (railwayEntrust.getCustomerId().equals(618) || railwayEntrust.getCustomerId().equals(608) || railwayEntrust.getCustomerId().equals(1367)|| railwayEntrust.getCustomerId().equals(1002134))){
+			Double noTaxMoney = NumUtils.multiplyDouble(railwayEntrust.getPrice(),railwayEntrust.getTonnage(),2);
+			Double taxMoney = NumUtils.multiplyDouble(noTaxMoney,railwayEntrust.getTaxRate(),2);
+			Double allMoney = NumUtils.addDouble(noTaxMoney,taxMoney,2);
+			allPrice = allMoney;
+			bipYsItem.setOriTaxAmount(BigDecimal.valueOf(taxMoney));//绋庨
+			bipYsItem.setOriTaxExcludedAmount(BigDecimal.valueOf(noTaxMoney));//鍘熷竵鏃犵◣閲戦
+			bipYsItem.setOriTaxIncludedAmount(BigDecimal.valueOf(allMoney));//鍘熷竵鍚◣閲戦
+			bipYsItem.setLocalTaxExcludedAmount(BigDecimal.valueOf(noTaxMoney));//鏈竵鏃犵◣閲戦
+			bipYsItem.setLocalTaxIncludedAmount(BigDecimal.valueOf(allMoney));//鏈竵鍚◣閲戦
+			bipYsItem.setOriTaxExcludedPrice(railwayEntrust.getPrice());//鏃犵◣鍗曚环
+			bipYsItem.setLocalTaxExcludedPrice(railwayEntrust.getPrice());//鏃犵◣鍗曚环
+			bipYsItem.setOriTaxIncludedPrice(NumUtils.divideDouble(allMoney,railwayEntrust.getTonnage(),8));//鏈竵鍚◣鍗曚环
+			bipYsItem.setLocalTaxIncludedPrice(NumUtils.divideDouble(allMoney,railwayEntrust.getTonnage(),8));//鏈竵鍚◣鍗曚环
+		}
+		String[] codes = expenseItemCode.get().split(",");*/
+		/*bipYsItem.setExpenseItemCode(codes[0]);//缁忔祹浜嬮」
+		if (codes[0]!=null && codes[0].equals("09003013")){
+			bipYsItem.setExpenseItemCode("10006011");//缁忔祹浜嬮」
+		}
+		bipYsItem.setUnitName("鍚�");
+		bipYsItem.setUnitCode("0110");
+		bipYsItem.setMaterialCode("7704000001");
+		bipYsItem.setQuantity(BigDecimal.valueOf(railwayEntrust.getTonnage()));
+		bipYsItem.setRemarks(remark);*/
+
+		//鐓ょ琛ㄤ綋
+		BIPYsMx bipYsMx = new BIPYsMx();
+//		bipYsMx.setJT01("01");//鐗╂枡缂栫爜
+		bipYsMx.setJT04_code(jyType);//浜ゆ槗绫诲瀷
+		bipYsMx.setJT06_code("01001001");//娆鹃」鏄庣粏
+		bipYsMx.setMX021_code(id1);//鏀惰揣瀹㈡埛
+		bipYsMx.setCustomerCode(id1);//瀹㈡埛缂栫爜
+//		bipYsMx.setJT11("");
+		bipYsMx.setGX08_code(accountUnitNumber);
+		/*bipYsMx.setJT12_code(ncCoalNumber);
+		bipYsMx.setGX06_code(coalBipCode);*/
+		/*if (id2 != null && id2.equals("10439") && railwayEntrust.getCoalId() != null && railwayEntrust.getCoalId().equals(45)) {
+			bipYsMx.setJT12_code("0101020401");//鐗╂枡缂栫爜
+			bipYsMx.setGX06_code("01010201043902438");//鐗╂枡鍚嶇О
+		}*/
+//		bipYsMx.setJT25_code(codes[1]);
+		bipYsMx.setYSYF14_code("6");
+		/*bipYsMx.setMX09(railwayEntrust.getCoalName());//杩愰攢鐓ょ
+		bipYsMx.setMX10(BigDecimal.valueOf(railwayEntrust.getRealTonnage()));//姘寸叅閲�
+		bipYsMx.setMX11(railwayEntrust.getAshContentMetering());//鐏板垎
+		bipYsMx.setMX13(railwayEntrust.getMoistureMetering());
+		bipYsMx.setMX14(railwayEntrust.getSulFurMetering());
+		bipYsMx.setMX15(railwayEntrust.getCoalName());
+		bipYsMx.setMX16(railwayEntrust.getTonnage());
+		bipYsMx.setZzbkfl_code("01");
+		if (StrUtil.isNotEmpty(accountLedger.getZzbkfl())) {
+			bipYsMx.setZzbkfl_code(accountLedger.getZzbkfl());
+		}
+		if (id2.equals("10439")) {
+			bipYsItem.setJT09_code(null);
+			bipYsMx.setJT09_code(null);
+		}
+
+		bipYsItem.setFreeChId(bipYsMx);*/
+//		bipYsMx.setMX18(railwayEntrust.getRealTonnage());//鏍囩叅閲�
+//		bipYsMx.setMX18(railwayEntrust.getRealPrice());//鏍囩叅閲忓崟浠�
+		if (id2.startsWith("104")) {
+			bipYsMx.setYSYF52("1");
+		}
+		bipYsItems.add(bipYsItem);
+		/*if (id2.equals("1045116")) {
+			//杩愯垂
+			if (railwayEntrust.getFreight() != null && railwayEntrust.getFreight() != 0) {
+				BIPYsItem freight = new BIPYsItem();
+				freight.setExpenseItemCode("12005002007002");//缁忔祹浜嬮」
+				freight.setTaxRate(0.0);
+				freight.setOriTaxExcludedAmount(new BigDecimal(railwayEntrust.getFreight()).setScale(2,BigDecimal.ROUND_HALF_UP));//鍘熷竵鏃犵◣閲戦
+				freight.setOriTaxIncludedAmount(new BigDecimal(railwayEntrust.getFreight()).setScale(2,BigDecimal.ROUND_HALF_UP));//鍘熷竵鍚◣閲戦
+				freight.setOriTaxAmount(BigDecimal.valueOf(NumUtils.subtractDouble(railwayEntrust.getFreight(),railwayEntrust.getFreight(),2)));//绋庨
+				freight.setCustomerCode("104810210");//瀹㈡埛缂栫爜
+				freight.setSupplierCode("104810210");
+				freight.setLocalTaxExcludedAmount(new BigDecimal(railwayEntrust.getFreight()).setScale(2,BigDecimal.ROUND_HALF_UP));//鏈竵鏃犵◣閲戦
+				freight.setLocalTaxIncludedAmount(new BigDecimal(railwayEntrust.getFreight()).setScale(2,BigDecimal.ROUND_HALF_UP));//鏈竵鍚◣閲戦
+				freight.setOriTaxExcludedPrice(NumUtils.divideDouble(railwayEntrust.getFreight(), railwayEntrust.getTonnage().doubleValue(),2));//鏃犵◣鍗曚环
+				freight.setOriTaxIncludedPrice(NumUtils.divideDouble(railwayEntrust.getFreight(),  railwayEntrust.getTonnage().doubleValue(),2));//鍚◣鍗曚环
+				freight.setLocalTaxExcludedPrice(NumUtils.divideDouble(railwayEntrust.getFreight(),  railwayEntrust.getTonnage().doubleValue(),2));//鏈竵鏃犵◣鍗曚环
+				freight.setLocalTaxIncludedPrice(NumUtils.divideDouble(railwayEntrust.getFreight(),  railwayEntrust.getTonnage().doubleValue(),2));//鏈竵鍚◣鍗曚环
+//				freight.setExpenseItemCode("1007");
+				//杩愯垂琛ㄤ綋
+				BIPYsMx freightBipYsMx = new BIPYsMx();
+				if (id2!=null){
+					if (id2.equals("126")|| id2.equals("1045116") || id2.equals("104810210")){
+						freightBipYsMx.setJT06_code("08008");//娆鹃」鏄庣粏
+					} else if (id2.equals("10439")) {
+						freightBipYsMx.setJT06_code("01001001");//娆鹃」鏄庣粏
+					}
+				}
+
+				freightBipYsMx.setGX08_code(fromStation);//鏍哥畻鍗曞厓妗f
+//				freightBipYsMx.setJT12_code("X0330101");//浜у搧澶х被
+//				freightBipYsMx.setJT25_code("03");//鍏朵粬涓氬姟鏄庣粏
+				freightBipYsMx.setYSYF14_code("6");
+				freightBipYsMx.setJT04_code("01020202");
+				freight.setFreeChId(freightBipYsMx);
+
+				bipYsItems.add(freight);
+			}
+		}else{
+			if (railwayEntrust.getTrainType().equals(2) && isNd.equals(1)){
+				//杩愯垂
+				if (railwayEntrust.getFreight() != null && railwayEntrust.getFreight() != 0) {
+					BIPYsItem freight = new BIPYsItem();
+					freight.setExpenseItemCode("12005002007002");//缁忔祹浜嬮」
+					freight.setTaxRate(0.0);
+					freight.setOriTaxExcludedAmount(new BigDecimal(railwayEntrust.getFreight()).setScale(2,BigDecimal.ROUND_HALF_UP));//鍘熷竵鏃犵◣閲戦
+					freight.setOriTaxIncludedAmount(new BigDecimal(railwayEntrust.getFreight()).setScale(2,BigDecimal.ROUND_HALF_UP));//鍘熷竵鍚◣閲戦
+					freight.setOriTaxAmount(BigDecimal.valueOf(NumUtils.subtractDouble(railwayEntrust.getFreight(),railwayEntrust.getFreight(),2)));//绋庨
+					freight.setCustomerCode(customerCode);//瀹㈡埛缂栫爜
+					freight.setLocalTaxExcludedAmount(new BigDecimal(railwayEntrust.getFreight()).setScale(2,BigDecimal.ROUND_HALF_UP));//鏈竵鏃犵◣閲戦
+					freight.setLocalTaxIncludedAmount(new BigDecimal(railwayEntrust.getFreight()).setScale(2,BigDecimal.ROUND_HALF_UP));//鏈竵鍚◣閲戦
+					freight.setOriTaxExcludedPrice(NumUtils.divideDouble(railwayEntrust.getFreight(), railwayEntrust.getTonnage().doubleValue(),2));//鏃犵◣鍗曚环
+					freight.setOriTaxIncludedPrice(NumUtils.divideDouble(railwayEntrust.getFreight(),  railwayEntrust.getTonnage().doubleValue(),2));//鍚◣鍗曚环
+					freight.setLocalTaxExcludedPrice(NumUtils.divideDouble(railwayEntrust.getFreight(),  railwayEntrust.getTonnage().doubleValue(),2));//鏈竵鏃犵◣鍗曚环
+					freight.setLocalTaxIncludedPrice(NumUtils.divideDouble(railwayEntrust.getFreight(),  railwayEntrust.getTonnage().doubleValue(),2));//鏈竵鍚◣鍗曚环
+//				freight.setExpenseItemCode("1007");
+					//杩愯垂琛ㄤ綋
+					BIPYsMx freightBipYsMx = new BIPYsMx();
+					if (id2!=null){
+						if (id2.equals("126") || id2.equals("1045116") || id2.equals("104810210")){
+							freightBipYsMx.setJT06_code("08008");//娆鹃」鏄庣粏
+						} else if (id2.equals("10439")) {
+							freightBipYsMx.setJT06_code("01001001");//娆鹃」鏄庣粏
+						}
+					}
+
+					freightBipYsMx.setGX08_code(fromStation);//鏍哥畻鍗曞厓妗f
+//				freightBipYsMx.setJT12_code("X0330101");//浜у搧澶х被
+//				freightBipYsMx.setJT25_code("03");//鍏朵粬涓氬姟鏄庣粏
+					freightBipYsMx.setYSYF14_code("6");
+					freightBipYsMx.setJT04_code(jyType);
+					freight.setFreeChId(freightBipYsMx);
+
+					bipYsItems.add(freight);
+				}
+				if (railwayEntrust.getCustomerId()!=null && (railwayEntrust.getCustomerId().equals(618) || railwayEntrust.getCustomerId().equals(608) || railwayEntrust.getCustomerId().equals(1367))){
+//				bipYsItems.add(this.getYfTsBt(railwayEntrust,id1,isNd,jyType));
+				}else{
+					//鍙栭�佽溅璐�
+					if (railwayEntrust.getCarFee() != null && railwayEntrust.getCarFee() != 0) {
+						BIPYsItem carFee = new BIPYsItem();
+						carFee.setTaxRate(NumUtils.multiplyDouble(railwayEntrust.getTaxRate(),100d,2));
+						carFee.setOriTaxExcludedAmount(new BigDecimal(railwayEntrust.getCarFee2()).setScale(2,BigDecimal.ROUND_HALF_UP));//鍘熷竵鏃犵◣閲戦
+						carFee.setOriTaxIncludedAmount(BigDecimal.valueOf(railwayEntrust.getCarFee()).setScale(2,BigDecimal.ROUND_HALF_UP));//鍘熷竵鍚◣閲戦
+						carFee.setOriTaxAmount(BigDecimal.valueOf(NumUtils.subtractDouble(railwayEntrust.getCarFee(),railwayEntrust.getCarFee2(),2)));//绋庨
+						carFee.setCustomerCode(id1);//瀹㈡埛缂栫爜
+						carFee.setLocalTaxExcludedAmount(new BigDecimal(railwayEntrust.getCarFee2()).setScale(2,BigDecimal.ROUND_HALF_UP));//鏈竵鏃犵◣閲戦
+						carFee.setLocalTaxIncludedAmount(new BigDecimal(railwayEntrust.getCarFee()).setScale(2,BigDecimal.ROUND_HALF_UP));//鏈竵鍚◣閲戦
+						carFee.setOriTaxExcludedPrice(NumUtils.divideDouble(railwayEntrust.getCarFee2(), railwayEntrust.getCarNum().doubleValue(),2));//鏃犵◣鍗曚环
+						carFee.setOriTaxIncludedPrice(NumUtils.divideDouble(railwayEntrust.getCarFee(),  railwayEntrust.getCarNum().doubleValue(),2));//鍚◣鍗曚环
+						carFee.setLocalTaxExcludedPrice(NumUtils.divideDouble(railwayEntrust.getCarFee2(),  railwayEntrust.getCarNum().doubleValue(),2));//鏈竵鏃犵◣鍗曚环
+						carFee.setLocalTaxIncludedPrice(NumUtils.divideDouble(railwayEntrust.getCarFee(),  railwayEntrust.getCarNum().doubleValue(),2));//鏈竵鍚◣鍗曚环
+						carFee.setExpenseItemCode("10006016");
+
+						//鍙栭�佽溅璐硅〃浣�
+						BIPYsMx carFeeBipYsMx = new BIPYsMx();
+						carFeeBipYsMx.setJT32_code("010404");//浣滀笟瑕佺礌
+						carFeeBipYsMx.setJT06_code("01001001");//娆鹃」鏄庣粏
+						carFeeBipYsMx.setGX08_code(accountUnitNumber);//鏍哥畻鍗曞厓妗f
+//					carFeeBipYsMx.setJT12_code("X0330104");//浜у搧澶х被
+						carFeeBipYsMx.setYSYF14_code("6");
+//					carFeeBipYsMx.setJT25_code("12A");//鍏朵粬涓氬姟鏄庣粏
+						carFeeBipYsMx.setJT04_code(jyType);//浜ゆ槗绫诲瀷锛堜簩绾ч泦鍥㈤棿锛�
+						carFee.setFreeChId(carFeeBipYsMx);
+						bipYsItems.add(carFee);
+					}
+				}
+
+			}else if(railwayEntrust.getTrainType().equals(2) && isNd.equals(3)){
+				//鍙栭�佽溅璐�
+				if (railwayEntrust.getCarFee2()!=null && railwayEntrust.getCarFee2() != 0) {
+					BIPYsItem carFee = new BIPYsItem();
+					carFee.setExpenseItemCode("10006016");//缁忔祹浜嬮」
+					carFee.setTaxRate(NumUtils.multiplyDouble(railwayEntrust.getTaxRate(),100d,2));
+					Double money = NumUtils.addDouble(railwayEntrust.getCarFee2(),railwayEntrust.getCarFeeTax(),2);
+					Double noTaxMoney = railwayEntrust.getCarFee2();
+					Double taxMoney = railwayEntrust.getCarFeeTax();
+
+
+					carFee.setOriTaxExcludedAmount(new BigDecimal(noTaxMoney).setScale(2,BigDecimal.ROUND_HALF_UP));//鍘熷竵鏃犵◣閲戦
+					carFee.setOriTaxIncludedAmount(BigDecimal.valueOf(money).setScale(2,BigDecimal.ROUND_HALF_UP));//鍘熷竵鍚◣閲戦
+					carFee.setOriTaxAmount(BigDecimal.valueOf(taxMoney));//绋庨
+					carFee.setCustomerCode(customerCode);//瀹㈡埛缂栫爜
+					carFee.setLocalTaxExcludedAmount(new BigDecimal(noTaxMoney).setScale(2,BigDecimal.ROUND_HALF_UP));//鏈竵鏃犵◣閲戦
+					carFee.setLocalTaxIncludedAmount(new BigDecimal(money).setScale(2,BigDecimal.ROUND_HALF_UP));//鏈竵鍚◣閲戦
+					carFee.setOriTaxExcludedPrice(NumUtils.divideDouble(noTaxMoney, railwayEntrust.getCarNum().doubleValue(),8));//鏃犵◣鍗曚环
+					carFee.setOriTaxIncludedPrice(NumUtils.divideDouble(money,  railwayEntrust.getCarNum().doubleValue(),8));//鍚◣鍗曚环
+					carFee.setLocalTaxExcludedPrice(NumUtils.divideDouble(noTaxMoney,  railwayEntrust.getCarNum().doubleValue(),8));//鏈竵鏃犵◣鍗曚环
+					carFee.setLocalTaxIncludedPrice(NumUtils.divideDouble(money,  railwayEntrust.getCarNum().doubleValue(),2));//鏈竵鍚◣鍗曚环
+//				if (focus) {
+//					List<BIPPayPlan> bipPayPlans = this.getBipPayPlan(railwayEntrust,carFee.getOriTaxIncludedAmount().doubleValue());
+//					bipYsItem.setGrandsonItem(bipPayPlans);
+//				}
+					//鍙栭�佽溅璐硅〃浣�
+					BIPYsMx carFeeBipYsMx = new BIPYsMx();
+					carFeeBipYsMx.setGX08_code(accountUnitNumber);//鏍哥畻鍗曞厓妗f
+					carFeeBipYsMx.setJT32_code("010404");//浣滀笟瑕佺礌
+					carFeeBipYsMx.setJT06_code("01001001");//娆鹃」鏄庣粏
+//				carFeeBipYsMx.setJT25_code("12A");
+					carFeeBipYsMx.setYSYF14_code("2");
+//				carFeeBipYsMx.setJT12_code("X0330104");//浜у搧澶х被
+					carFeeBipYsMx.setJT04_code(jyType);
+					carFee.setFreeChId(carFeeBipYsMx);
+					bipYsItems.add(carFee);
+				}
+			}
+		}*/
+		/*if (railwayEntrust.getInvoiceResultId() == null && !CompUtils.isKp(accountLedger.getId()) && !accountLedger.getId().equals(165)) {
+			throw new RuntimeException("缁撶畻鍗曟湭寮�绁�");
+		}*/
+		InvoiceResult invoiceResult = fpInvoiceResultService.getById(railwayEntrust.getBlueInvoiceResultId());
+		if (invoiceResult != null) {
+			bipYsMx.setYSYF33(invoiceResult.getInvoiceNo());
+			bipYsItem.setInvoiceNo(invoiceResult.getInvoiceNo());
+		}
+		bipBody.setBodyItem(bipYsItems);
+		bipBody.setFreeChId(mx);
+		String result = bipHttpUtil.post(BipApiEnum.搴斾粯鍙戠エ淇濆瓨鎺ュ彛, new JSONObject().set("data", bipBody));
+		BipResVo resVo = JSONUtil.toBean(result, BipResVo.class);
+		//鏀惧埌鍗曟嵁璁板綍琛�
+		BipInvoice bipInvoice = new BipInvoice();
+		bipInvoice.setDay(DateUtil.date());
+		bipInvoice.setInvoice(JSONUtil.toJsonStr(bipBody));
+		bipInvoice.setBipCompNumber(id2);
+		bipInvoice.setType(0);
+		bipInvoice.setInvoiceType(1);
+		bipInvoice.setContractNum(contractNum);
+		bipInvoice.setRailwayEntrustId(railwayEntrust.getId());
+		//bipInvoice.setAllId(allId);
+		bipInvoice.setCompId(railwayEntrust.getCompId());
+		/*bipInvoice.setMoney(railwayEntrust.getAllPrice());
+		bipInvoice.setTonnage(railwayEntrust.getTonnage());
+		bipInvoice.setPrice(railwayEntrust.getPrice());
+		bipInvoice.setResStatus(resVo.getCode());
+		bipInvoice.setDirection(1);
+		bipInvoice.setTrainType(railwayEntrust.getTrainType());*/
+		BipResVo bipResVo = new BipResVo<>();
+		bipResVo.setCode(resVo.getCode());
+		BIPBody resBipBody = JSONUtil.toBean(resVo.getData() == null ? new Object().toString() : resVo.getData().toString(), BIPBody.class);
+		if (resVo.getCode().equals("200") || (StrUtil.isNotEmpty(resVo.getMessage()) && resVo.getMessage().contains("娲诲姩[璐㈠姟瀹℃牳]涓婃壘涓嶅埌鐢ㄦ埛")) || StrUtil.isNotEmpty(resBipBody.getCode())) {
+			bipInvoice.setResInvoice(resVo.getData().toString());
+
+			bipInvoice.setBipNumber(resBipBody.getId());
+			bipInvoice.setCode(resBipBody.getCode());
+
+			bipInvoice.setResInvoice(resVo.getData().toString());
+			bipInvoice.setBipNumber(resBipBody.getId());
+//			bipInvoice.setCode("200");
+			bipInvoiceService.save(bipInvoice);
+			bipResVo.setCode("200");
+			bipResVo.setMessage(resVo.getMessage());
+
+		} else {
+			if (resVo.getData() != null && StrUtil.isNotEmpty(resVo.getData().toString())) {
+				bipInvoice.setBipNumber(resBipBody.getId());
+				bipInvoice.setCode(resBipBody.getCode());
+			}
+			bipInvoice.setMessage(resVo.getMessage());
+			bipResVo.setMessage(resVo.getMessage());
+			bipInvoiceService.save(bipInvoice);
+		}
+		if (resVo.getData() != null && StrUtil.isNotEmpty(resVo.getData().toString())) {
+			if (resBipBody.getId() != null) {
+				/*try {
+					if (railwayEntrust.getTrainType().equals(1)) {
+						if (order != null && order.getCompId() != null && order.getCompId().equals(227) && order.getFiledId() != null && order.getFiledId().equals(48)) {
+							fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(8, allId));
+						} else {
+							fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(0, allId));
+						}
+						fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(3, railwayEntrust.getId(), railwayEntrust.getQualityName(), railwayEntrust.getUserCompId()));
+					} else if (railwayEntrust.getTrainType().equals(2)) {
+						fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(1, allId));
+						fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(4, railwayEntrust.getId(), railwayEntrust.getQualityName(), railwayEntrust.getUserCompId()));
+					}
+					if (StrUtil.isNotEmpty(fileUrl)) {
+						for (String s : fileUrl.split(",")) {
+							fileUploadService.uploadUrlToBip(railwayEntrust.getId(), resBipBody.getId(), s);
+						}
+					}
+					//鍙戠エ
+					railwayEntrust.setBipStatus("200");
+					fpInvoiceResultService.update(new UpdateWrapper<InvoiceResult>().lambda()
+							.eq(InvoiceResult::getEntrustCode, railwayEntrust.getEntrustCode())
+							.set(InvoiceResult::getPushBipyf, null));
+					fpInvoiceResultService.pushBlue(railwayEntrust, 1);
+					fileUploadService.uploadToBip(railwayEntrust.getId(), resBipBody.getId(), fileUploadService.fileUpload(2, allId));
+				} catch (Exception e) {
+					railwayEntrust.setBipFileStatus(-1);
+					log.error("缁撶畻鍗曟帹閫侀檮浠堕敊璇�---", e);
+					e.printStackTrace();
+				}*/
+			}
+		}
+		return bipResVo;
+
+	}
+
+
+
+	private String getCompName(String sellCode){
+		switch (sellCode){
+			case "104810210":
+				return "閭嘲杩愰攢";
+			case "126":
+				return "鍐�涓繍閿�";
+			case "1045116":
+				return "宄板嘲鍒�";
+			case "11035":
+				return " 宄板嘲闆嗗洟(鏈儴杩愰攢)";
+		}
+		return "";
+	}
+
+	@Override
+	public BipResVo saveRedFlushInvoice(BipInvoice oldBipInvoice,BIPBody bipBody) {
+		String result = "";
+		if (oldBipInvoice.getInvoiceType().equals(0)){
+			result = bipHttpUtil.post(BipApiEnum.搴旀敹鍙戠エ淇濆瓨鎺ュ彛,new JSONObject().set("data",bipBody));
+		}else {
+			result = bipHttpUtil.post(BipApiEnum.搴斾粯鍙戠エ淇濆瓨鎺ュ彛,new JSONObject().set("data",bipBody));
+		}
+		Long id = oldBipInvoice.getId();
+		BipResVo resVo = JSONUtil.toBean(result,BipResVo.class);
+		//鏀惧埌鍗曟嵁璁板綍琛�
+		BipInvoice bipInvoice = new BipInvoice();
+		bipInvoice.setDay(DateUtil.date());
+		bipInvoice.setInvoice(JSONUtil.toJsonStr(bipBody));
+		bipInvoice.setType(oldBipInvoice.getType());
+		bipInvoice.setInvoiceType(oldBipInvoice.getInvoiceType());
+		bipInvoice.setRedInvoiceId(oldBipInvoice.getId());
+		bipInvoice.setDirection(-1);
+		bipInvoice.setResStatus(resVo.getCode());
+		if (resVo.getCode().equals("200")){
+			bipInvoice.setResInvoice(resVo.getData().toString());
+			BIPBody resBipBody = JSONUtil.toBean(resVo.getData() == null ? new Object().toString() : resVo.getData().toString(), BIPBody.class);
+			bipInvoice.setBipNumber(resBipBody.getId());
+			bipInvoice.setCode(resBipBody.getCode());
+		}else {
+			bipInvoice.setMessage(resVo.getMessage());
+		}
+		bipInvoiceService.save(bipInvoice);
+		bipInvoiceService.update(new UpdateWrapper<BipInvoice>().lambda().eq(BipInvoice::getId,id)
+				.set(BipInvoice::getRedInvoiceStatus,resVo.getCode()).set(BipInvoice::getRedInvoiceMessage,resVo.getMessage())
+				.set(BipInvoice::getRedInvoiceId,bipInvoice.getId()));
+		return resVo;
+	}
+
+	@Override
+	public BipResVo removeBipInvoice(String number,String code,Integer type) {
+		JSONObject jsonObject = new JSONObject();
+		JSONArray jsonArray = new JSONArray();
+		jsonArray.add(new JSONObject().set("id",number).set("code",code));
+		jsonObject.set("data",jsonArray);
+		if (type.equals(0)) {
+			String result = bipHttpUtil.post(BipApiEnum.搴旀敹鍙戠エ鍒犻櫎鎺ュ彛, jsonObject);
+			BipResVo resVo = JSONUtil.toBean(result, BipResVo.class);
+			return resVo;
+		} else {
+			String result = bipHttpUtil.post(BipApiEnum.搴斾粯鍙戠エ鍒犻櫎鎺ュ彛, jsonObject);
+			BipResVo resVo = JSONUtil.toBean(result, BipResVo.class);
+			return resVo;
+		}
+	}
+
+	@Override
+	public BipResVo removeBipInvoice(String number, String code, Integer type, String msg) {
+		JSONObject jsonObject = new JSONObject();
+		JSONArray jsonArray = new JSONArray();
+		jsonArray.add(new JSONObject().set("id", number).set("code", code));
+		jsonObject.set("data", jsonArray);
+		if (type.equals(0)) {
+			String result = bipHttpUtil.post(BipApiEnum.搴旀敹鍙戠エ鍒犻櫎鎺ュ彛, jsonObject);
+			BipResVo resVo = JSONUtil.toBean(result, BipResVo.class);
+			if (StrUtil.isNotEmpty(msg))
+				msg += ";";
+			if (!resVo.getCode().equals("200")) {
+				resVo.setMessage(msg += "鑺傜偣搴旀敹鍙戠エ鍒犻櫎鎴愬姛");
+			} else {
+				resVo.setMessage(msg += "鑺傜偣搴旀敹鍙戠エ鍒犻櫎澶辫触");
+			}
+			return resVo;
+		} else {
+			String result = bipHttpUtil.post(BipApiEnum.搴斾粯鍙戠エ鍒犻櫎鎺ュ彛, jsonObject);
+			BipResVo resVo = JSONUtil.toBean(result, BipResVo.class);
+			if (StrUtil.isNotEmpty(msg))
+				msg += ";";
+			if (!resVo.getCode().equals("200")) {
+				resVo.setMessage(msg += "鑺傜偣搴斾粯鍙戠エ鍒犻櫎鎴愬姛");
+			} else {
+				resVo.setMessage(msg += "鑺傜偣搴旀敹鍙戠エ鍒犻櫎澶辫触");
+			}
+			return resVo;
+		}
+	}
+
+	@Override
+	public BipResVo removeBipInvoices(List<BipInvoice> bipInvoiceList) {
+		JSONObject jsonObjectYs = new JSONObject();
+		JSONObject jsonObjectYf = new JSONObject();
+		JSONArray jsonArrayYs = new JSONArray();
+		JSONArray jsonArrayYf = new JSONArray();
+		if (bipInvoiceList != null && bipInvoiceList.size() > 0) {
+			bipInvoiceList.forEach(e -> {
+				if (e.getInvoiceType().equals(0)) {
+					jsonArrayYs.add(new JSONObject().set("id",e.getBipNumber()).set("code",e.getCode()));
+				}else{
+					jsonArrayYf.add(new JSONObject().set("id",e.getBipNumber()).set("code",e.getCode()));
+				}
+			});
+		}
+		if (jsonArrayYs.size()>0){
+			jsonObjectYs.set("data",jsonArrayYs);
+			String result = bipHttpUtil.post(BipApiEnum.搴旀敹鍙戠エ鍒犻櫎鎺ュ彛,jsonObjectYs);
+			BipResVo resVo = JSONUtil.toBean(result, BipResVo.class);
+			return resVo;
+		}
+		if (jsonArrayYf.size()>0){
+			jsonObjectYf.set("data",jsonArrayYf);
+			String result = bipHttpUtil.post(BipApiEnum.搴斾粯鍙戠エ鍒犻櫎鎺ュ彛,jsonObjectYf);
+			BipResVo resVo = JSONUtil.toBean(result, BipResVo.class);
+			return resVo;
+		}
+		return null;
+	}
+
+	@Override
+	public BIPBody getBipInvoices(String code,Integer type) {
+		JSONObject jsonObject = new JSONObject();
+		jsonObject.set("pageIndex",1);
+		jsonObject.set("pageSize",999);
+		jsonObject.set("code",code);
+		StringBuffer message = new StringBuffer();
+		String result = "";
+		if (type.equals(0)){
+			result = bipHttpUtil.post(BipApiEnum.搴旀敹鍙戠エ鏌ヨ鎺ュ彛,jsonObject);
+		}else {
+			result = bipHttpUtil.post(BipApiEnum.搴斾粯鍙戠エ鏌ヨ鎺ュ彛,jsonObject);
+		}
+
+		BipResVo resVo = JSONUtil.toBean(result,BipResVo.class);
+		if (resVo.getCode().equals("200")){
+			JSONObject object = JSONUtil.parseObj(resVo.getData());
+			if (object==null && object.get("recordList")==null)
+				return null;
+			JSONArray jsonArray = JSONUtil.parseArray(object.get("recordList"));
+			if (jsonArray==null)
+				return null;
+			List<BIPBody> resBipBody = JSONUtil.toList(jsonArray.toString(), BIPBody.class);
+			if (resBipBody==null || resBipBody.size()==0)
+				return null;
+			return resBipBody.get(0);
+		}else {
+			message.append(resVo.getMessage());
+		}
+		return null;
+	}
+
+	@Override
+	public BipResVo updBipInvoices(BipInvoice bipInvoice,String number) {
+		BIPBody bipBody = JSONUtil.toBean(bipInvoice.getResInvoice(), BIPBody.class);
+//		BIPBody selectBipBody = this.getBipInvoices(bipInvoice.getCode(),bipInvoice.getInvoiceType());
+//		bipBody.setId(selectBipBody.getId());
+//		bipBody.setCode(selectBipBody.getCode());
+//		bipBody.setBodyItem(null);
+//		bipBody.setFreeChId(null);
+//		if (bipBody!=null){
+//			bipBody.getBodyItem().forEach(e -> {
+//
+//			});
+//		}
+
+		if (bipBody!= null){
+			List<BIPYsItem> items = bipBody.getBodyItem();
+			bipBody.set_status("Update");
+			bipBody.setOrgCurrencyCode("CNY");
+			if (items!=null){
+				Double localTaxIncludedAmount = 0d;
+				Double	localTaxExcludedAmount =0d;
+				for (BIPYsItem e:items){
+					e.set_status("Update");
+					e.setOrgCurrency("1514492081064640537");
+					e.setExchangeRateTypeCode("01");
+					e.setExchangeRate(1.0);
+					e.setExchangeRateDate(bipBody.getExchangeRateDate());
+					e.setLocalTaxAmount(e.getOriTaxAmount());
+					localTaxExcludedAmount = NumUtils.addDouble(localTaxExcludedAmount,e.getLocalTaxExcludedAmount().doubleValue());
+					localTaxIncludedAmount = NumUtils.addDouble(localTaxIncludedAmount,e.getLocalTaxIncludedAmount().doubleValue());
+					if (e.getGrandsonItem()!=null){
+						e.getGrandsonItem().forEach(i -> {
+							i.set_status("Update");
+						});
+					}
+				}
+				bipBody.setLocalTaxExcludedAmount(BigDecimal.valueOf(NumUtils.accurateDouble(localTaxExcludedAmount,2)).toPlainString());
+				bipBody.setLocalTaxIncludedAmount(BigDecimal.valueOf(NumUtils.accurateDouble(localTaxIncludedAmount,2)).toPlainString());
+				bipBody.setOriTaxExcludedAmount(BigDecimal.valueOf(NumUtils.accurateDouble(localTaxExcludedAmount,2)).toPlainString());
+				bipBody.setOriTaxIncludedAmount(BigDecimal.valueOf(NumUtils.accurateDouble(localTaxIncludedAmount,2)).toPlainString());
+			}
+
+			String result = null;
+			if (bipInvoice.getInvoiceType().equals(0)){
+				result = bipHttpUtil.post(BipApiEnum.搴旀敹鍙戠エ淇敼鎺ュ彛, new JSONObject().set("data", bipBody));
+
+//					result = bipHttpUtil.post(BipApiEnum.搴旀敹鍙戠エ鏌ヨ鎺ュ彛,jsonObject);
+			}else {
+				result = bipHttpUtil.post(BipApiEnum.搴斾粯鍙戠エ淇敼鎺ュ彛, new JSONObject().set("data", bipBody));
+			}
+			BipResVo resVo = JSONUtil.toBean(result,BipResVo.class);
+			if (resVo.getCode().equals("200")){
+				bipInvoiceService.update(new UpdateWrapper<BipInvoice>().lambda()
+						.set(BipInvoice::getUpdInvoice,bipBody).eq(BipInvoice::getId,bipInvoice.getId()));
+			}else {
+				bipInvoiceService.update(new UpdateWrapper<BipInvoice>().lambda()
+						.set(BipInvoice::getUpdMessage,resVo.getMessage()).eq(BipInvoice::getId,bipInvoice.getId()));
+			}
+			return resVo;
+		}
+		return null;
+	}
+
+	/**
+	 * 鐗规畩鎴疯〃浣�
+	 * @param railwayEntrust
+	 * @return
+	 */
+//	private List<BIPYsItem> getTsBipYsItems(RailwayEntrust railwayEntrust,String id1,String jyType){
+//		List<BIPYsItem> bipYsItems = new ArrayList<>();
+//		BIPYsItem carFee = new BIPYsItem();
+//		carFee.setTaxRate(NumUtils.multiplyDouble(railwayEntrust.getTaxRate(),100d,2));
+//		carFee.setOriTaxExcludedAmount(new BigDecimal(railwayEntrust.getCarFee2()).setScale(2,BigDecimal.ROUND_HALF_UP));//鍘熷竵鏃犵◣閲戦
+//		carFee.setOriTaxIncludedAmount(BigDecimal.valueOf(railwayEntrust.getCarFee()).setScale(2,BigDecimal.ROUND_HALF_UP));//鍘熷竵鍚◣閲戦
+//		carFee.setOriTaxAmount(BigDecimal.valueOf(NumUtils.subtractDouble(railwayEntrust.getCarFee(),railwayEntrust.getCarFee2(),2)));//绋庨
+//		carFee.setCustomerCode(id1);//瀹㈡埛缂栫爜
+//		carFee.setLocalTaxExcludedAmount(new BigDecimal(railwayEntrust.getCarFee2()).setScale(2,BigDecimal.ROUND_HALF_UP));//鏈竵鏃犵◣閲戦
+//		carFee.setLocalTaxIncludedAmount(new BigDecimal(railwayEntrust.getCarFee()).setScale(2,BigDecimal.ROUND_HALF_UP));//鏈竵鍚◣閲戦
+//		carFee.setOriTaxExcludedPrice(NumUtils.divideDouble(railwayEntrust.getCarFee2(), railwayEntrust.getCarNum().doubleValue(),2));//鏃犵◣鍗曚环
+//		carFee.setOriTaxIncludedPrice(NumUtils.divideDouble(railwayEntrust.getCarFee(),  railwayEntrust.getCarNum().doubleValue(),2));//鍚◣鍗曚环
+//		carFee.setLocalTaxExcludedPrice(NumUtils.divideDouble(railwayEntrust.getCarFee2(),  railwayEntrust.getCarNum().doubleValue(),2));//鏈竵鏃犵◣鍗曚环
+//		carFee.setLocalTaxIncludedPrice(NumUtils.divideDouble(railwayEntrust.getCarFee(),  railwayEntrust.getCarNum().doubleValue(),2));//鏈竵鍚◣鍗曚环
+//		carFee.setExpenseItemCode("09001001");
+//
+//		//鍙栭�佽溅璐硅〃浣�
+//		BIPYsMx carFeeBipYsMx = new BIPYsMx();
+//		carFeeBipYsMx.setJT06_code("0809");//娆鹃」鏄庣粏
+//		carFeeBipYsMx.setJT12_code("X0330104");//浜у搧澶х被
+//		carFeeBipYsMx.setYSYF14_code("6");
+//		carFeeBipYsMx.setJT25_code("12");//鍏朵粬涓氬姟鏄庣粏
+//		carFeeBipYsMx.setJT04_code(jyType);//浜ゆ槗绫诲瀷锛堜簩绾ч泦鍥㈤棿锛�
+//		carFee.setFreeChId(carFeeBipYsMx);
+//		bipYsItems.add(carFee);
+//	}
+	/*private RailwayEntrust getDivEntrust(RailwayEntrust railwayEntrust) {
+//		railwayEntrust.setDust(railwayEntrust);
+		Double dustPrice = NumUtils.divideDouble(railwayEntrust.getDust(), 1.06d, 8);
+
+		railwayEntrust.setDustFee(NumUtils.multiplyDouble(dustPrice, railwayEntrust.getRealTonnage(), 2));//涓嶅惈绋庨噾棰�
+		Double dustTax = NumUtils.multiplyDouble(railwayEntrust.getDustFee(), railwayEntrust.getTaxRate(), 2);//绋庨
+		railwayEntrust.setDustPrice(NumUtils.addDouble(railwayEntrust.getDustFee(), dustTax, 2));//鍚堣閲戦
+		if (railwayEntrust.getCustomerId().equals(618) || railwayEntrust.getCustomerId().equals(1002134)) {
+			Date date = railwayEntrust.getBalanceDate();
+//			Date date1 = DateUtil.parse("2024-08-01","yyyy-MM-dd");
+			Double b = 14.8934;
+//			if (date.before(date1)){
+//				b = 13.18;
+//			}
+			railwayEntrust.setSpecialLineFee(NumUtils.multiplyDouble(railwayEntrust.getRealTonnage(), b, 4));
+			//涓撶嚎璐�
+			railwayEntrust.setCarFee(NumUtils.addDouble(railwayEntrust.getCarFee2(), railwayEntrust.getCarFeeTax()));
+		}
+		Double taxRate = railwayEntrust.getTaxRate();
+		Double rate = NumUtils.addDouble(1d, railwayEntrust.getTaxRate());
+		railwayEntrust.setTaxFeeCount(NumUtils.subtractDouble(railwayEntrust.getAllPrice(), railwayEntrust.getFreight(), 2));
+
+		railwayEntrust.setCoalMoney(NumUtils.accurateFloat(railwayEntrust.getTaxFeeCount() - (railwayEntrust.getCarFee() == null ? 0 : railwayEntrust.getCarFee()) - (railwayEntrust.getSpecialLineFee() == null ? 0 : railwayEntrust.getSpecialLineFee()) - (railwayEntrust.getDustPrice() == null ? 0 : railwayEntrust.getDustPrice()), 2));
+		railwayEntrust.setCoalTaxMoney(NumUtils.accurateFloat(railwayEntrust.getCoalMoney() * taxRate, 2));
+		railwayEntrust.setOutNoTaxMoney(NumUtils.divideDouble(railwayEntrust.getTaxFeeCount(), rate, 2));
+		railwayEntrust.setCoalMoney(NumUtils.accurateDouble(NumUtils.accurateDouble(railwayEntrust.getOutNoTaxMoney(), 2) - NumUtils.accurateDouble((railwayEntrust.getDustFee()), 2) - railwayEntrust.getCarFee2() - NumUtils.divideDouble(railwayEntrust.getSpecialLineFee(), 1.13, 2), 2));
+		railwayEntrust.setPrice(NumUtils.divideDouble(railwayEntrust.getCoalMoney(), railwayEntrust.getTonnage(), 8));
+		if (railwayEntrust.getTrainType().equals(2)) {
+			railwayEntrust.setPrice(NumUtils.accurateDouble(railwayEntrust.getPrice(), 8));
+		}
+		railwayEntrust.setOriginalPrice(NumUtils.divideDouble(railwayEntrust.getPrice(), 1.13, 6));
+		railwayEntrust.setTaxFee(NumUtils.multiplyDouble(railwayEntrust.getCoalMoney(), railwayEntrust.getTaxRate(), 2));
+		return railwayEntrust;
+	}*/
+
+}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/utils/BipHttpUtil.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/utils/BipHttpUtil.java
index 6b27c5b..e048452 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/utils/BipHttpUtil.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/utils/BipHttpUtil.java
@@ -6,8 +6,8 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.TypeReference;
 
-import com.by4cloud.platformx.business.entity.invoice.BipResVo;
-import com.by4cloud.platformx.business.entity.invoice.BipTokenVo;
+import com.by4cloud.platformx.business.entity.invoice.vo.BipResVo;
+import com.by4cloud.platformx.business.entity.invoice.vo.BipTokenVo;
 import com.by4cloud.platformx.business.utils.SignHelper;
 import lombok.RequiredArgsConstructor;
 import org.apache.http.HttpEntity;
@@ -35,7 +35,6 @@
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLConnection;
-import java.net.URLDecoder;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.security.InvalidKeyException;
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/InvoiceService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/InvoiceService.java
index 4ff9c4d..e0a96d9 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/InvoiceService.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/InvoiceService.java
@@ -4,7 +4,8 @@
 import com.by4cloud.platformx.business.entity.ContractOutBound;
 import com.by4cloud.platformx.business.entity.SaleCredit;
 import com.by4cloud.platformx.business.entity.invoice.InvoiceResult;
-import com.by4cloud.platformx.business.entity.invoice.InvoicingVo;
+import com.by4cloud.platformx.business.entity.invoice.vo.InvoicingVo;
+import com.by4cloud.platformx.business.vo.ContractOutBoundVo;
 
 import java.util.List;
 import java.util.Map;
@@ -15,6 +16,8 @@
 
     InvoicingVo toGetByCompare(SaleCredit saleCredit, List<ContractOutBound> contractOutBoundList);
 
+    InvoicingVo toGetByCompareByVo(SaleCredit saleCredit, List<ContractOutBoundVo> contractOutBoundList);
+
     Map<String, Object> toKaipiao(InvoicingVo invoicingVo);
 
     Map<String,Object> downInvoiceMethod(InvoiceResult invoiceResult);
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/InvoiceServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/InvoiceServiceImpl.java
index 891c3c6..66e012f 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/InvoiceServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/InvoiceServiceImpl.java
@@ -12,6 +12,8 @@
 import com.by4cloud.platformx.business.entity.ContractOutBound;
 import com.by4cloud.platformx.business.entity.SaleCredit;
 import com.by4cloud.platformx.business.entity.invoice.*;
+import com.by4cloud.platformx.business.entity.invoice.vo.InvoicingVo;
+import com.by4cloud.platformx.business.entity.invoice.vo.RedConfirmVo;
 import com.by4cloud.platformx.business.invoice.mapper.FpInvoiceResultItemMapper;
 import com.by4cloud.platformx.business.invoice.mapper.FpInvoiceResultMapper;
 import com.by4cloud.platformx.business.invoice.service.BipInvoiceService;
@@ -19,11 +21,11 @@
 import com.by4cloud.platformx.business.invoice.service.FpInvoiceResultService;
 import com.by4cloud.platformx.business.service.InvoiceService;
 import com.by4cloud.platformx.business.service.SaleCreditService;
+import com.by4cloud.platformx.business.vo.ContractOutBoundVo;
 import com.google.gson.Gson;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.StringRedisTemplate;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -86,6 +88,11 @@
     @Override
     public InvoicingVo toGetByCompare(SaleCredit saleCredit, List<ContractOutBound> contractOutBoundList) {
         return getByCompare(saleCredit,contractOutBoundList);
+    }
+
+    @Override
+    public InvoicingVo toGetByCompareByVo(SaleCredit saleCredit, List<ContractOutBoundVo> contractOutBoundList) {
+        return getByCompareVo(saleCredit,contractOutBoundList);
     }
 
     /**
@@ -409,6 +416,62 @@
         return invoicingVo;
     }
 
+    private InvoicingVo getByCompareVo(SaleCredit saleCredit, List<ContractOutBoundVo> contractOutBoundList){
+        InvoicingVo invoicingVo = new InvoicingVo();
+        invoicingVo.setSaleCreditId(saleCredit.getId());
+        invoicingVo.setEntrustCode(saleCredit.getEntrustCode());
+        //閿�鏂�
+        invoicingVo.setTaxNo(saleCredit.getCreditCodeB());
+        invoicingVo.setLedgerName(saleCredit.getPartyB());
+        invoicingVo.setOrgCode(saleCredit.getCreditCodeB());
+        invoicingVo.setFormatGenerate(false);
+        invoicingVo.setIsSplit(false);
+        invoicingVo.setFormatPushType(false);
+        invoicingVo.setTaxUserName(saleCredit.getContactPhoneB());
+        InvoicingVo.InvoicingVoInfo invoicingVoInfo = new InvoicingVo.InvoicingVoInfo();
+
+
+        invoicingVoInfo.setInvoiceTypeCode("01");
+        invoicingVoInfo.setSerialNo("MX_ZPP_" + System.currentTimeMillis());
+        invoicingVoInfo.setDrawer(saleCredit.getContactPhoneB());
+
+        Map<String, Object> ext = new HashMap<>();
+        ext.put("htbh",saleCredit.getContractNo());
+        invoicingVoInfo.setExt(ext);
+
+        invoicingVoInfo.setSystemName("xx閿�鍞鐞嗕俊鎭郴缁�");
+
+        List<InvoicingVo.InvoiceDetail> details = new ArrayList<>();
+
+        int i = 0;
+        for (ContractOutBound outBoundVo : contractOutBoundList){
+            i++;
+            InvoicingVo.InvoiceDetail invoiceDetail = new InvoicingVo.InvoiceDetail();
+            invoiceDetail.setGoodsLineNo(i);
+            invoiceDetail.setGoodsTaxRate(outBoundVo.getTaxRate());
+            invoiceDetail.setGoodsType(outBoundVo.getSubjectMatterName());
+            invoiceDetail.setGoodsUnit(outBoundVo.getUnit());
+            invoiceDetail.setGoodsQuantity(outBoundVo.getOutBoundNum());
+            invoiceDetail.setGoodsPrice(outBoundVo.getUnitPrice());
+            invoiceDetail.setGoodsTotalPrice(outBoundVo.getTotalPrice());
+            invoiceDetail.setGoodsTotalTax(outBoundVo.getTotalTax());
+            details.add(invoiceDetail);
+        }
+        //璐柟
+        invoicingVoInfo.setBuyerTaxNo(saleCredit.getCreditCodeA());
+        invoicingVoInfo.setBuyerName(saleCredit.getPartyA());
+        invoicingVoInfo.setInvoiceTotalPrice(saleCredit.getTotalAmount());
+        //invoicingVoInfo.setInvoiceTotalTax(new BigDecimal(allTax).setScale(2,BigDecimal.ROUND_HALF_UP));
+        invoicingVoInfo.setInvoiceTotalPriceTax(saleCredit.getTotalTax());
+        invoicingVoInfo.setBuyerBankName(saleCredit.getBankNameB());
+        invoicingVoInfo.setBuyerBankNumber(saleCredit.getBankAccountB());
+        //invoicingVoInfo.setBuyerAddress(.getBuyerAddress());
+        invoicingVoInfo.setBuyerTelphone(saleCredit.getContactPhoneA());
+        invoicingVoInfo.setInvoiceDetailsList(details);
+        invoicingVo.setData(invoicingVoInfo);
+        return invoicingVo;
+    }
+
     //@Async("myExecutor")
     public Map<String, Object> redTicket(SaleCredit saleCredit) {
         System.out.println("杩涘叆寮傛鏂规硶");

--
Gitblit v1.9.1