From a0974f04b5a83e3ab152ce79e53f180e7b496165 Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期一, 08 六月 2026 15:00:51 +0800
Subject: [PATCH] fix:发票管理模块

---
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BusinessCustomerController.java   |    5 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductServiceImpl.java         |    5 
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BwRequestRecord.java                  |   39 +
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java                         |   72 ++
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ProductService.java                  |    3 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractController.java           |   33 +
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractOutBoundVo.java                   |    2 
 platformx-business-finance-biz/pom.xml                                                                                    |   17 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractInvoiceController.java    |  126 +++
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractSubjectMatterAddDTO.java         |   14 
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractInvoice.java                  |  108 +++
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/GenInvoiceInfoDTO.java                   |   12 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java        |  317 +++++++++
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java  |   15 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractInvoiceMapper.java            |    9 
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/InvoiceItemVo.java                        |   38 +
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractSubjectMatter.java            |   13 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java        |    1 
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractAddDTO.java                      |   55 +
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractOutBoundMergeVo.java              |   42 +
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDetailVo.java                     |    6 
 platformx-business-finance-biz/src/main/resources/mapper/BwRequestRecordMapper.xml                                        |   20 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractInvoiceServiceImpl.java |  649 +++++++++++++++++++
 platformx-boot/src/main/resources/application-dev.yml                                                                     |   17 
 platformx-business-finance-biz/src/main/resources/template/ymj/ymjgypmmht.docx                                            |    0 
 platformx-business-finance-biz/src/main/resources/mapper/ContractInvoiceMapper.xml                                        |   21 
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractInvoiceOutBoundVo.java            |   33 +
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/BwRequestRecordMapper.java            |   10 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractService.java                 |    6 
 platformx-business-finance-biz/src/main/resources/template/ymj/ymjgkcpmmht.docx                                           |    0 
 /dev/null                                                                                                                 |   31 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductController.java            |    7 
 platformx-business-finance-biz/src/main/resources/template/ymj/ymjcght.docx                                               |    0 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/BusinessCustomerService.java         |    3 
 platformx-business-finance-biz/src/main/resources/template/ymj/ymjjgclht.docx                                             |    0 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/FlowCallBackController.java       |   15 
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/constant/FlowNameEnum.java                   |    3 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/PaymentConfirmService.java           |    5 
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/GenInvoiceInfoVo.java                     |   43 +
 platformx-boot/src/main/resources/application.yml                                                                         |    4 
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractOutBound.java                 |  103 +-
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractInvoiceService.java          |   24 
 42 files changed, 1,787 insertions(+), 139 deletions(-)

diff --git a/platformx-boot/src/main/resources/application-dev.yml b/platformx-boot/src/main/resources/application-dev.yml
index 87b41b7..4fcc6f6 100644
--- a/platformx-boot/src/main/resources/application-dev.yml
+++ b/platformx-boot/src/main/resources/application-dev.yml
@@ -2,7 +2,6 @@
   data:
     redis:
       host: 127.0.0.1
-      #password: 123456
       database: 0
   # 鏁版嵁搴撶浉鍏抽厤缃�
   datasource:
@@ -45,23 +44,15 @@
 
 #bip 閰嶇疆
 bip:
-  url: ''
+  flag: false
+  url: https://bip01.res.jzeg.cn
   codes: 111111111111111111111111,222222222222222222
-  ip: https://bip01.res.jzeg.cn/
-  filePath: D:\test\
-  fontPath: /Users/kongdeqiang/Desktop/SIMSUN.TTC
   appKey: 800b2805c5584f0abb8705acbe487dc5
   appSecret: 59ba72c62a6a27203d7e517787a738be89ba55cb
 
 BWInvoice:
-  ip: https://einv01.res.jzeg.cn/post
-  kaipiao: ?method=baiwang.output.invoice.issue&version=1.0&requestId=
-  chaxun: ?method=baiwang.output.format.query&version=1.0&request_id=
-  redConfirmAdd: ?method=baiwang.output.redinvoice.add&version=1.0&requestId=
-  redConfirmSearch: ?method=baiwang.output.redinvoice.formlist&version=1.0&requestId=
-  search: ?method=baiwang.input.invoice.queryinvoicepool&version=1.0&requestId=
-  bind: ?method=baiwang.image.invoices.invoicemanageadd&version=1.0&requestId=
-  ocr: ?baiwang.image.invoices.recogcollect&version=1.0&requestId=
+  flag: false
+  url: https://einv01.res.jzeg.cn/post?
 
 # 5瀹跺崟浣峣d
 dept:
diff --git a/platformx-boot/src/main/resources/application.yml b/platformx-boot/src/main/resources/application.yml
index ee27182..542ceed 100644
--- a/platformx-boot/src/main/resources/application.yml
+++ b/platformx-boot/src/main/resources/application.yml
@@ -1,10 +1,10 @@
 server:
-  port: 8888    # 椤圭洰绔彛
+  port: 8899    # 椤圭洰绔彛
   servlet:
     context-path: /business  # 椤圭洰璁块棶璺緞
 servers:
   main-url: http://127.0.0.1:9999/admin
-  business-url: http://127.0.0.1:8888/business
+  business-url: http://127.0.0.1:8899/business
 
 spring:
   application:
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/constant/FlowNameEnum.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/constant/FlowNameEnum.java
index 78d88ee..1b95dd0 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/constant/FlowNameEnum.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/constant/FlowNameEnum.java
@@ -12,7 +12,8 @@
 @AllArgsConstructor
 public enum FlowNameEnum {
 	鍚堝悓瀹℃壒("鍚堝悓瀹℃壒"),
-	鎺掍骇璁″垝瀹℃壒("鎺掍骇璁″垝瀹℃壒");
+	鎺掍骇璁″垝瀹℃壒("鎺掍骇璁″垝瀹℃壒"),
+	閿�鍞寕璐﹀鎵�("閿�鍞寕璐﹀鎵�");
 	private String name;
 
 
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractAddDTO.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractAddDTO.java
index a7190d5..2710888 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractAddDTO.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractAddDTO.java
@@ -87,6 +87,61 @@
 	@Schema(description = "鎵ц鏃ユ湡鍚庡灏戝ぉ鐢熸垚搴旀敹")
 	private Integer execDay;
 
+	@Schema(description = "鐜")
+	private String environment;
+
+	@Schema(description = "鏍囧噯")
+	private String standard;
+
+	@Schema(description = "璐ㄤ繚鏈� 浣跨敤鏈堟暟")
+	private BigDecimal useMonth;
+
+	@Schema(description = "璐ㄤ繚鏈� 鍙戣揣鍚庢湀鏁�")
+	private BigDecimal afterShipMonth;
+
+	@Schema(description = "璐ц繍鏂瑰紡")
+	private String shipMethod;
+
+	@Schema(description = "璐ц繍鍦板潃")
+	private String shipAddress;
+
+	@Schema(description = "鍖呰")
+	private String packaging;
+
+	@Schema(description = "缁翠慨鎴栨崲璐ф湡闄�")
+	private BigDecimal repairPeriod;
+
+	@Schema(description = "缁翠慨鎴栨崲璐� 杩濈害閲�")
+	private BigDecimal repairBreachAmount;
+
+	@Schema(description = "璐х墿鏁伴噺涓嶈冻 琛ヨ揣澶╂暟")
+	private BigDecimal goodsShort;
+
+	@Schema(description = "璐х墿鏁伴噺涓嶈冻 杩濈害閲�")
+	private BigDecimal goodsShortBreachAmount;
+
+	@Schema(description = "姣忛�炬湡涓�鏃ワ紝鎵挎媴鏈悎鍚屾�婚 杩濈害閲�")
+	private BigDecimal overdueBreachAmount;
+
+	@Schema(description = "閫炬湡  鏃ヤ互涓婄殑锛岀敳鏂规湁鏉冭В闄ゅ悎鍚�")
+	private BigDecimal terminateContract;
+
+	@Schema(description = "鍙屾柟鍧囧彲鍚� 浜烘皯娉曢櫌")
+	private String court;
+
+	@Schema(description = "鏈悎鍚岄檮浠跺寘鎷細")
+	private String contractAttchment;
+
+	@Schema(description = "鍚堝悓绛捐甯�")
+	private String city;
+
+	@Schema(description = "鍚堝悓绛捐鍖�")
+	private String region;
+
+	@Schema(description = "寮�绁ㄩ�氱煡鍦� 涓伐浣滄棩鍐�")
+	private BigDecimal invoiceNotice;
+
+
 	private List<ContractPaymentScheduleAddDTO> contractPaymentSchedule;
 
 	private List<ContractSubjectMatterAddDTO> contractSubjectMatter;
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractSubjectMatterAddDTO.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractSubjectMatterAddDTO.java
index 9c5ab6e..ce6b0c9 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractSubjectMatterAddDTO.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractSubjectMatterAddDTO.java
@@ -1,15 +1,17 @@
 package com.by4cloud.platformx.business.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.persistence.Column;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 @Data
 public class ContractSubjectMatterAddDTO {
 
-	@Column(columnDefinition = "VARCHAR(200) comment '鏍囩殑鐗╁悕绉�'")
+	@Schema(description = "鏍囩殑鐗╁悕绉�")
 	private String materialName;
 
 	@Schema(description = "鏍囩殑鐗╃紪鐮侊紙鍐呴儴鍞竴缂栫爜锛�")
@@ -48,4 +50,12 @@
 	@Schema(description = "鎬婚噸")
 	private BigDecimal totalWight;
 
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	@Schema(description = "璁″垝浜や粯鏃ユ湡")
+	private Date plannedDeliveryDate;
+
+	@Schema(description = "澶囨敞")
+	private String remarks;
+
 }
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/GenInvoiceInfoDTO.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/GenInvoiceInfoDTO.java
new file mode 100644
index 0000000..1f5b4e6
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/GenInvoiceInfoDTO.java
@@ -0,0 +1,12 @@
+package com.by4cloud.platformx.business.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class GenInvoiceInfoDTO {
+
+	private List<Long> contractOutBoundIds;
+
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BillingInfo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BillingInfo.java
deleted file mode 100644
index 2ea6581..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BillingInfo.java
+++ /dev/null
@@ -1,191 +0,0 @@
-package com.by4cloud.platformx.business.entity;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.by4cloud.platformx.business.vo.ContractOutBoundVo;
-import com.by4cloud.platformx.common.data.mybatis.BaseModel;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.persistence.Column;
-import jakarta.persistence.Entity;
-import jakarta.persistence.Transient;
-import lombok.Data;
-import org.hibernate.annotations.Comment;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-
-/**
- * @author lwj
- * @version 1.0.0
- * @ClassName BillingInfo.java
- * @Description TODO
- * @createTime
- */
-@Data
-@Entity
-@org.hibernate.annotations.Table(appliesTo="billing_info",comment = "寮�绁ㄤ俊鎭〃")//缁欒〃鍔犳敞閲�
-@jakarta.persistence.Table(name = "billing_info")//寮�鍏峰彂绁ㄨ繑鍥炲��
-@Comment("寮�绁ㄤ俊鎭〃")
-public class BillingInfo extends BaseModel<BillingInfo> {
-
-    @Schema(description = "寮�绁ㄧ紪鍙�")
-    @Column(columnDefinition = "VARCHAR(64) comment '寮�绁ㄧ紪鍙�'")
-    private String entrustCode;
-
-    @Schema(description = "寮�绁ㄧ绫伙紙0-钃濈エ 1-绾㈢エ锛�")
-    @Column(columnDefinition = "tinyint(2) default 0 comment '寮�绁ㄧ绫伙紙0-钃濈エ 1-绾㈢エ锛�'")
-    private Integer billingType;
-
-    @Schema(description = "绾㈢エ鍏宠仈钃濈エId")
-    @Column(columnDefinition = "bigint comment '绾㈢エ鍏宠仈钃濈エId'")
-    private Long blueInvoiceId;
-
-    @Schema(description = "鍏宠仈鍚堝悓ID")
-    @Column(columnDefinition = "bigint not null comment '鍏宠仈鍚堝悓ID'")
-    private Long contractId;
-
-    @Schema(description = "鍚堝悓缂栧彿")
-    @Column(columnDefinition = "VARCHAR(64) comment '鍚堝悓缂栧彿'")
-    private String contractNo;
-
-    @Schema(description = "鍚堝悓鍚嶇О")
-    @Column(columnDefinition = "VARCHAR(64) comment '鍚堝悓鍚嶇О'")
-    private String contractName;
-
-    @Schema(description = "鐢叉柟id")
-    @Column(name = "party_a_id",columnDefinition = "bigint comment '鐢叉柟id'")
-    private Long partyAId;
-
-    @Schema(description = "鐢叉柟鍚嶇О")
-    @Column(name = "party_a",columnDefinition = "VARCHAR(100) comment '鐢叉柟鍚嶇О'")
-    private String partyA;
-
-    @Schema(description = "鐢叉柟缁熶竴绀句細淇$敤浠g爜")
-    @Column(name = "credit_code_a",columnDefinition = "VARCHAR(30) comment '鐢叉柟缁熶竴绀句細淇$敤浠g爜'")
-    private String creditCodeA;
-
-    @Schema(description = "鐢叉柟寮�鎴烽摱琛�")
-    @Column(name = "bank_name_a",columnDefinition = "VARCHAR(20) comment '鐢叉柟寮�鎴烽摱琛�'")
-    private String bankNameA;
-
-    @Schema(description = "鐢叉柟閾惰璐﹀彿")
-    @Column(name = "bank_account_a",columnDefinition = "VARCHAR(50) comment '鐢叉柟閾惰璐﹀彿'")
-    private String bankAccountA;
-
-    @Schema(description = "鐢叉柟鑱旂郴鐢佃瘽")
-    @Column(name = "contact_phone_a",columnDefinition = "VARCHAR(50) comment '鐢叉柟鑱旂郴鐢佃瘽'")
-    private String contactPhoneA;
-
-    @Schema(description = "涔欐柟id")
-    @Column(name = "party_b_id",columnDefinition = "bigint comment '涔欐柟id'")
-    private Long partyBId;
-
-    @Schema(description = "涔欐柟鍚嶇О")
-    @Column(name = "party_b",columnDefinition = "VARCHAR(100) comment '涔欐柟鍚嶇О'")
-    private String partyB;
-
-    @Schema(description = "涔欐柟缁熶竴绀句細淇$敤浠g爜")
-    @Column(name = "credit_code_b",columnDefinition = "VARCHAR(30) comment '涔欐柟缁熶竴绀句細淇$敤浠g爜'")
-    private String creditCodeB;
-
-    @Schema(description = "涔欐柟寮�鎴烽摱琛�")
-    @Column(name = "bank_name_b",columnDefinition = "VARCHAR(20) comment '涔欐柟寮�鎴烽摱琛�'")
-    private String bankNameB;
-
-    @Schema(description = "涔欐柟閾惰璐﹀彿")
-    @Column(name = "bank_account_b",columnDefinition = "VARCHAR(50) comment '涔欐柟閾惰璐﹀彿'")
-    private String bankAccountB;
-
-    @Schema(description = "涔欐柟鑱旂郴鐢佃瘽")
-    @Column(name = "contact_phone_b",columnDefinition = "VARCHAR(50) comment '涔欐柟鑱旂郴鐢佃瘽'")
-    private String contactPhoneB;
-
-    @Schema(description = "鎬婚噾棰�")
-    @Column(columnDefinition = "decimal(10,2) comment '鎬婚噾棰�'")
-    private BigDecimal totalAmount;
-
-    @Schema(description = "绋庨")
-    @Column(columnDefinition = "decimal(10,2) comment '鎬婚噾棰濈◣棰�'")
-    private BigDecimal totalTax;
-
-    @Schema(description = "涓嶅惈绋庨噾棰�")
-    @Column(columnDefinition = "decimal(10,2) comment '涓嶅惈绋庨噾棰�'")
-    private BigDecimal amountNoTax;
-
-    @Schema(description = "鏍囩殑鐗╄鎯�")
-    @Column(columnDefinition = "TEXT comment '鏍囩殑鐗╄鎯�'")
-    private String matterStr;
-
-    @Schema(description = "鐘舵�侊紙0-鐢熸晥 1-澶辨晥锛�")
-    @Column(columnDefinition = "tinyint(2) comment '鐘舵�侊紙0-鐢熸晥 1-澶辨晥锛�'")
-    private Integer status;
-
-    @Schema(description = "鐘舵�侊紙0-鏈彂閫� 1-鍙戦�佸け璐� 200-鍙戦�佹垚鍔燂級")
-    @Column(columnDefinition = "tinyint(2) default 0 comment '鐘舵�侊紙200锛�'")
-    private Integer bipStatus;
-
-    @Schema(description = "寮�钃濈エ缁撴灉鐘舵�� 0鏈紑绁� 1寮�绁ㄦ垚鍔� 2寮�绁ㄥけ璐�")
-    @javax.persistence.Column(columnDefinition="int(1)  comment '寮�钃濈エ缁撴灉鐘舵��'")
-    private Integer blueResultStatus;
-
-    @Schema(description = "寮�绾㈢エ缁撴灉鐘舵�� 0鏈紑绁� 1寮�绁ㄦ垚鍔� 2寮�绁ㄥけ璐�")
-    @javax.persistence.Column(columnDefinition="int(1) comment '寮�绾㈢エ缁撴灉鐘舵��'")
-    private Integer redResultStatus;
-
-    @Schema(description = "钃濈エid")
-    @Column(columnDefinition = "bigint default null comment '钃濈エid'")
-    private Long blueInvoiceResultId;
-
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Schema(description = "钃濈エ寮�绁ㄦ椂闂�")
-    @Column(columnDefinition = "datetime comment '钃濈エ寮�绁ㄦ椂闂�'")
-    private Date blueInvoiceTime;
-
-    @Schema(description = "钃濈エ鍦板潃")
-    @Column(columnDefinition = "varchar(300) comment '钃濈エ鍦板潃'")
-    private String invoicePath;
-
-    @Schema(description = "钃濈エurl")
-    @javax.persistence.Column(columnDefinition="VARCHAR(255) comment '钃濈エurl'")
-    private String invoiceBlueUrl;
-
-    @Schema(description = "绾㈢エ缁撴灉id")
-    @Column(columnDefinition = "bigint default null comment '绾㈢エ缁撴灉id'")
-    private Long redInvoiceResultId;
-
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Schema(description = "绾㈢エ寮�绁ㄦ椂闂�")
-    @Column(columnDefinition = "datetime comment '绾㈢エ寮�绁ㄦ椂闂�'")
-    private Date redInvoiceTime;
-
-    @Schema(description = "绾㈢エ鍦板潃")
-    @Column(columnDefinition = "varchar(300) comment '绾㈢エ鍦板潃'")
-    private String invoiceRedPath;
-
-    @Schema(description = "绾㈠啿鍙戠エurl")
-    @javax.persistence.Column(columnDefinition="VARCHAR(255) comment '绾㈠啿鍙戠エurl'")
-    private String invoiceRedUrl;
-
-    @Schema(description = "寮�绁ㄨ鎯�")
-    @Column(columnDefinition = "TEXT comment '寮�绁ㄨ鎯�'")
-    private String invoiceRemark;
-
-    /**
-     * 鍑鸿揣鍗曞垪琛�
-     */
-    @Transient
-    @TableField(exist = false)
-    private List<ContractOutBoundVo> contractOutBoundList;
-
-    /**
-     * 寮�绁ㄩ」鍒楄〃
-     */
-    @Transient
-    @TableField(exist = false)
-    private List<BillingItem> billingItems;
-
-}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BillingItem.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BillingItem.java
deleted file mode 100644
index ea28b49..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BillingItem.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package com.by4cloud.platformx.business.entity;
-
-import com.by4cloud.platformx.common.data.mybatis.BaseModel;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.persistence.Column;
-import jakarta.persistence.Entity;
-
-import lombok.Data;
-import org.hibernate.annotations.Comment;
-import java.math.BigDecimal;
-
-
-/**
- * @author kdq
- * @version 1.0.0
- * @ClassName InvoiceResult.java
- * @Description TODO
- * @createTime 10024骞�11鏈�05鏃� 17:10:00
- */
-@Data
-@Entity
-@org.hibernate.annotations.Table(appliesTo="billing_item",comment = "寮�绁ㄤ骇鍝佷俊鎭〃")//缁欒〃鍔犳敞閲�
-@jakarta.persistence.Table(name = "billing_item")//寮�鍏峰彂绁ㄨ繑鍥炲��
-@Comment("寮�绁ㄤ骇鍝佷俊鎭〃")
-public class BillingItem extends BaseModel<BillingItem> {
-
-    @Schema(description = "寮�绁ㄤ俊鎭痠d")
-    @Column(columnDefinition = "bigint comment '寮�绁ㄤ俊鎭痠d'")
-    private Long billingInfoId;
-
-    @Schema(description = "瀵瑰簲鍚堝悓鍑哄簱鍗旾ds")
-    @Column(columnDefinition = "VARCHAR(300) comment '瀵瑰簲鍚堝悓鍑哄簱鍗旾ds'")
-    private String contractOutBoundIds;
-
-    @Schema(description = "鍏宠仈鍚堝悓ID")
-    @Column(columnDefinition = "bigint not null comment '鍏宠仈鍚堝悓ID'")
-    private Long contractId;
-
-    @Schema(description = "瀹㈠晢ID")
-    @Column(columnDefinition="bigint comment '瀹㈠晢ID'")
-    private Long busGuestId;
-
-    @Schema(description = "鏍囩殑鐗╁悕绉�")
-    @Column(columnDefinition="VARCHAR(64) comment '鏍囩殑鐗╁悕绉�'")
-    private String subjectMatterName;
-
-    @Schema(description = "鏍囩殑鐗╃紪鐮�")
-    @Column(columnDefinition="VARCHAR(64) comment '鏍囩殑鐗╃紪鐮�'")
-    private String subjectMatterCode;
-
-    @Schema(description = "寮�绁ㄤ骇鍝佹暟閲�")
-    @Column(columnDefinition="decimal(10,2) comment '寮�绁ㄤ骇鍝佹暟閲�'")
-    private BigDecimal productNum;
-
-    @Schema(description = "寮�绁ㄧ姸鎬侊紙0-鏈紑绁� 1-寮�绁ㄤ腑 2-宸插紑绁級")
-    @Column(columnDefinition = "tinyint(2) default 0 comment '寮�绁ㄧ姸鎬侊紙0-鏈紑绁� 1-寮�绁ㄤ腑 2-宸插紑绁級'")
-    private Integer billingStatus;
-
-    @Schema(description = "鎬诲崟浠�")
-    @Column(columnDefinition = "decimal(10,2) comment '鎬诲崟浠�'")
-    private BigDecimal totalPrice;
-
-    @Schema(description = "鎬荤◣棰�")
-    @Column(columnDefinition = "decimal(10,2) comment '鎬荤◣棰�'")
-    private BigDecimal totalTax;
-
-    @Schema(description = "涓嶅惈绋庢�婚")
-    @Column(columnDefinition = "decimal(10,2) comment '涓嶅惈绋庢�婚'")
-    private BigDecimal totalPriceNoTax;
-
-    //浜у搧淇℃伅
-
-    @Schema(description = "浜у搧id")
-    @Column(columnDefinition = "bigint comment '浜у搧id'")
-    private Long productId;
-
-    @Schema(description = "寮�绁ㄤ骇鍝佸悕绉�")
-    @Column(columnDefinition = "VARCHAR(50) comment '寮�绁ㄤ骇鍝佸悕绉�'")
-    private String invoiceName;
-
-    @Schema(description = "绋庣巼锛堢櫨鍒嗘瘮锛屽13琛ㄧず13%锛�")
-    @Column(columnDefinition = "double default 0.00 comment '绋庣巼'")
-    private Double taxRate;
-
-    @Schema(description = "绋庢敹鍒嗙被")
-    @Column(columnDefinition = "VARCHAR(50) comment '绋庢敹鍒嗙被'")
-    private String taxClass;
-
-    @Schema(description = "绋庢敹缂栫爜")
-    @Column(columnDefinition = "VARCHAR(80) comment '绋庢敹缂栫爜'")
-    private String taxCode;
-
-    //鍚堝悓鏍囩殑鐗╀腑淇℃伅
-
-    @Schema(description = "鏍囩殑鐗╄鏍�/鍨嬪彿")
-    @Column(columnDefinition = "VARCHAR(200) comment '鏍囩殑鐗╄鏍�/鍨嬪彿'")
-    private String specification;
-
-    @Schema(description = "璁¢噺鍗曚綅锛堜釜/鍙�/鍚�/椤�/濂楃瓑锛�")
-    @Column(columnDefinition = "VARCHAR(20) comment '璁¢噺鍗曚綅'")
-    private String unit;
-
-    @Schema(description = "鍗曚环")
-    @Column(columnDefinition = "decimal(10,2) comment '鍗曚环'")
-    private BigDecimal unitPrice;
-}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BwRequestRecord.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BwRequestRecord.java
new file mode 100644
index 0000000..18fb539
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BwRequestRecord.java
@@ -0,0 +1,39 @@
+package com.by4cloud.platformx.business.entity;
+
+import com.by4cloud.platformx.common.data.mybatis.BaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import lombok.Data;
+import org.hibernate.annotations.Table;
+
+/**
+ * 鏃堕棿
+ * syt
+ */
+@Data
+@Entity//鍔犱簡鎵嶈兘鑷姩鐢熸垚琛�
+@Table(appliesTo="bw_request_record",comment = "bw璇锋眰璁板綍")//缁欒〃鍔犳敞閲�
+@jakarta.persistence.Table(name = "bw_request_record")//鏁版嵁搴撳垱寤虹殑琛ㄦ槑
+public class BwRequestRecord extends BaseModel<BwRequestRecord> {
+
+	@Schema(description = "鎺ュ彛鍚嶇О")
+	@Column(columnDefinition="VARCHAR(128) comment '鎺ュ彛鍚嶇О'")
+	private String interfaceName;
+
+	@Schema(description = "鎺ュ彛鍚嶇О")
+	@Column(columnDefinition="VARCHAR(128) comment '鎺ュ彛鍚嶇О'")
+	private String requestId;
+
+	@Schema(description = "璇锋眰鍞竴鏍囪瘑")
+	@Column(columnDefinition="VARCHAR(64) comment '璇锋眰鍞竴鏍囪瘑'")
+	private String requestParams;
+
+	@Schema(description = "鍥炲弬")
+	@Column(columnDefinition="text comment '鍥炲弬'")
+	private String responseParams;
+
+	@Schema(description = "缁撴灉鐮�")
+	@Column(columnDefinition="VARCHAR(32) comment '缁撴灉鐮�'")
+	private String responseCode;
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java
index de8b7a5..5d792d9 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java
@@ -175,6 +175,78 @@
 	@Column(columnDefinition = "int comment '鎵ц鏃ユ湡鍚庡灏戝ぉ鐢熸垚搴旀敹'")
 	private Integer execDay;
 
+	@Schema(description = "鐜")
+	@Column(columnDefinition = "VARCHAR(128) comment '鐜 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private String environment;
+
+	@Schema(description = "鏍囧噯")
+	@Column(columnDefinition = "VARCHAR(128) comment '鏍囧噯 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private String standard;
+
+	@Schema(description = "璐ㄤ繚鏈� 浣跨敤鏈堟暟")
+	@Column(columnDefinition = "decimal(10,0) comment '璐ㄤ繚鏈� 浣跨敤鏈堟暟 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private BigDecimal useMonth;
+
+	@Schema(description = "璐ㄤ繚鏈� 鍙戣揣鍚庢湀鏁�")
+	@Column(columnDefinition = "decimal(10,0) comment '璐ㄤ繚鏈� 鍙戣揣鍚庢湀鏁� 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private BigDecimal afterShipMonth;
+
+	@Schema(description = "璐ц繍鏂瑰紡")
+	@Column(columnDefinition = "VARCHAR(128) comment '璐ц繍鏂瑰紡 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private String shipMethod;
+
+	@Schema(description = "璐ц繍鍦板潃")
+	@Column(columnDefinition = "VARCHAR(128) comment '璐ц繍鍦板潃 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private String shipAddress;
+
+	@Schema(description = "鍖呰")
+	@Column(columnDefinition = "VARCHAR(128) comment '鍖呰 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private String packaging;
+
+	@Schema(description = "缁翠慨鎴栨崲璐ф湡闄�")
+	@Column(columnDefinition = "decimal(10,0) comment '缁翠慨鎴栨崲璐ф湡闄� 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private BigDecimal repairPeriod;
+
+	@Schema(description = "缁翠慨鎴栨崲璐� 杩濈害閲�")
+	@Column(columnDefinition = "decimal(10,2) comment '缁翠慨鎴栨崲璐� 杩濈害閲� 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private BigDecimal repairBreachAmount;
+
+	@Schema(description = "璐х墿鏁伴噺涓嶈冻 琛ヨ揣澶╂暟")
+	@Column(columnDefinition = "decimal(10,0) comment '璐х墿鏁伴噺涓嶈冻 琛ヨ揣澶╂暟 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private BigDecimal goodsShort;
+
+	@Schema(description = "璐х墿鏁伴噺涓嶈冻 杩濈害閲�")
+	@Column(columnDefinition = "decimal(10,2) comment '璐х墿鏁伴噺涓嶈冻 琛ヨ揣澶╂暟 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private BigDecimal goodsShortBreachAmount;
+
+	@Schema(description = "姣忛�炬湡涓�鏃ワ紝鎵挎媴鏈悎鍚屾�婚 杩濈害閲�")
+	@Column(columnDefinition = "decimal(10,2) comment '姣忛�炬湡涓�鏃ワ紝鎵挎媴鏈悎鍚屾�婚杩濈害閲� 琛ヨ揣澶╂暟 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private BigDecimal overdueBreachAmount;
+
+	@Schema(description = "閫炬湡  鏃ヤ互涓婄殑锛岀敳鏂规湁鏉冭В闄ゅ悎鍚�")
+	@Column(columnDefinition = "decimal(10,0) comment '閫炬湡  鏃ヤ互涓婄殑锛岀敳鏂规湁鏉冭В闄ゅ悎鍚� 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private BigDecimal terminateContract;
+
+	@Schema(description = "鍙屾柟鍧囧彲鍚� 浜烘皯娉曢櫌")
+	@Column(columnDefinition = "VARCHAR(128) comment '鍙屾柟鍧囧彲鍚� 浜烘皯娉曢櫌 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private String court;
+
+	@Schema(description = "鏈悎鍚岄檮浠跺寘鎷細")
+	@Column(columnDefinition = "VARCHAR(128) comment '鏈悎鍚岄檮浠跺寘鎷細 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private String contractAttchment;
+
+	@Schema(description = "鍚堝悓绛捐甯�")
+	@Column(columnDefinition = "VARCHAR(128) comment '鍚堝悓绛捐甯� 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private String city;
+
+	@Schema(description = "鍚堝悓绛捐鍖�")
+	@Column(columnDefinition = "VARCHAR(128) comment '鍚堝悓绛捐鍖� 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private String region;
+
+	@Schema(description = "寮�绁ㄩ�氱煡鍦� 涓伐浣滄棩鍐�")
+	@Column(columnDefinition = "decimal(10,0) comment '寮�绁ㄩ�氱煡鍦� 涓伐浣滄棩鍐� 涓�鐓ゆ満閲囪喘鍚堝悓鐢�'")
+	private BigDecimal invoiceNotice;
+
 	/**
      * 涓存椂瀛楁 - 鐢ㄤ簬鎺ユ敹瀹℃壒浜哄悕绉扮瓑鍏宠仈鏌ヨ缁撴灉
      */
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractInvoice.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractInvoice.java
new file mode 100644
index 0000000..3573d89
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractInvoice.java
@@ -0,0 +1,108 @@
+package com.by4cloud.platformx.business.entity;
+
+import com.by4cloud.platformx.common.data.mybatis.BaseModel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import lombok.Data;
+import org.hibernate.annotations.Table;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 2026骞�6鏈�5鏃� 10:59:02
+ * syt
+ */
+@Data
+@Entity//鍔犱簡鎵嶈兘鑷姩鐢熸垚琛�
+@Table(appliesTo="contract_invoice",comment = "鍚堝悓鍙戠エ")//缁欒〃鍔犳敞閲�
+@jakarta.persistence.Table(name = "contract_invoice")//鏁版嵁搴撳垱寤虹殑琛ㄦ槑
+public class ContractInvoice extends BaseModel<ContractInvoice> {
+
+	@Schema(description = "鍏宠仈鍚堝悓ID")
+	@Column(columnDefinition = "bigint not null comment '鍏宠仈鍚堝悓ID'")
+	private Long contractId;
+
+	@Schema(description = "鍙戠エ绫诲瀷")
+	@Column(columnDefinition="char comment '鍙戠エ绫诲瀷 1/钃� 2/绾�'")
+	private String invoiceCategory;
+
+	@Schema(description = "寮�绁ㄩ噾棰濓紙涓嶅惈绋庯級")
+	@Column(columnDefinition="decimal(10,2) comment '寮�绁ㄩ噾棰濓紙鍚◣'")
+	private BigDecimal invoiceTotalPrice;
+
+	@Schema(description = "寮�绁ㄧ◣棰�")
+	@Column(columnDefinition="decimal(10,2) comment '寮�绁ㄧ◣棰�'")
+	private BigDecimal invoiceTotalTax;
+
+	@Schema(description = "寮�绁ㄩ噾棰濓紙鍚◣锛�")
+	@Column(columnDefinition="decimal(10,2) comment '寮�绁ㄩ噾棰濓紙鍚◣)'")
+	private BigDecimal invoiceTotalPriceTax;
+
+	@Schema(description = "寮�绁ㄦ椂闂�")
+	@Column(columnDefinition="datetime comment '寮�绁ㄦ椂闂�'")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date invoiceTime;
+
+	@Schema(description = "鍙戠エ鐘舵��")
+	@Column(columnDefinition="char comment '鍙戠エ鐘舵�� 1/寮�绁ㄤ腑 2/宸插紑绁�'")
+	private String invoiceStatus;
+
+	@Schema(description = "鍙戠エ鍦板潃")
+	@Column(columnDefinition="varchar(256) comment '寮�绁ㄦ椂闂�'")
+	private String invoicePath;
+
+	@Schema(description = "鍚堝悓鍑哄簱鍗旾D")
+	@Column(columnDefinition="text comment '鍚堝悓鍑哄簱鍗旾D'")
+	private String outBoundId;
+
+	@Schema(description = "绾㈠啿鏍囪瘑")
+	@Column(columnDefinition="char comment '绾㈠啿鏍囪瘑 1/鏄� 0/鍚� 2/瀹℃牳涓� 3/绾㈠啿寰呯‘璁�'")
+	private String redReversal;
+
+	@Schema(description = "鍙戠エ鍙风爜")
+	@Column(columnDefinition="varchar(64) comment '寮�绁ㄦ祦姘村彿'")
+	private String invoiceNo;
+
+	@Schema(description = "寮�绁ㄦ祦姘村彿")
+	@Column(columnDefinition="varchar(64) comment '寮�绁ㄦ祦姘村彿'")
+	private String serialNo;
+
+	@Schema(description = "鏈烘瀯绋庡彿")
+	@Column(columnDefinition="varchar(64) comment '鏈烘瀯绋庡彿'")
+	private String texNo;
+
+	@Schema(description = "閿�鍞柟鍚嶇О")
+	@Column(columnDefinition="varchar(128) comment '閿�鍞柟鍚嶇О'")
+	private String sellerTaxName;
+
+	@Schema(description = "璐拱鏂瑰悕绉�")
+	@Column(columnDefinition="varchar(128) comment '璐拱鏂瑰悕绉�'")
+	private String buyerTaxName;
+
+	@Schema(description = "鍙戠エ棰勮淇℃伅")
+	@Column(columnDefinition="text comment '鍙戠エ棰勮淇℃伅'")
+	private String invoicePreview;
+
+	@Schema(description = "瀹℃壒鐘舵��")
+	@Column(columnDefinition="char comment '瀹℃壒鐘舵�� 1/瀹℃壒閫氳繃 0/瀹℃壒涓� 2/瀹℃壒澶辫触'")
+	private String approvalStatus;
+
+	@Schema(description = "鍏宠仈钃濈エID")
+	@Column(columnDefinition = "bigint comment '鍏宠仈钃濈エID'")
+	private Long blueInvoiceId;
+
+	@Schema(description = "bip鎺ㄩ�佹爣璇�")
+	@Column(columnDefinition="char comment 'bip鎺ㄩ�佹爣璇� 1/宸叉帹閫� 0/鏈帹閫�'")
+	private String bipPush;
+
+	@Schema(description = "bip鎺ㄩ�佹垚鍔熷悗杩斿洖鏁版嵁ID")
+	@Column(columnDefinition="bigint comment 'bip鎺ㄩ�佹爣璇� 1/宸叉帹閫� 0/鏈帹閫�'")
+	private Long bipId;
+
+	@Schema(description = "鍙戠エ棰勮bip鎺ㄩ�佹垚鍔熷悗杩斿洖鐨勬暟鎹粨鏋�")
+	@Column(columnDefinition="text comment '鍙戠エ棰勮淇℃伅'")
+	private String bipBody;
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractOutBound.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractOutBound.java
index 466b768..20a6918 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractOutBound.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractOutBound.java
@@ -79,58 +79,59 @@
 	@Column(columnDefinition="text comment '鍒拌揣鍗曟嵁璺緞'")
 	private String arrivalAttPaths;
 
-
-	//浠ヤ笅寮�绁ㄧ浉鍏�
-
-	@Schema(description = "缁撶畻id")
-	@Column(columnDefinition = "bigint default null comment '缁撶畻id'")
-	private Long saleCreditId;
-
 	@Schema(description = "寮�绁ㄧ姸鎬侊紙0-鏈紑绁� 1-寮�绁ㄤ腑 2-宸插紑绁級")
-	@Column(columnDefinition = "tinyint(2) default 0 comment '寮�绁ㄧ姸鎬侊紙0-鏈紑绁� 1-寮�绁ㄤ腑 2-宸插紑绁級'")
-	private Integer invoiceSatus;
+	@Column(columnDefinition = "char default 0 comment '寮�绁ㄧ姸鎬侊紙0-鏈紑绁� 1-寮�绁ㄤ腑 2-宸插紑绁級'")
+	private String invoiceStatus;
 
-	@Schema(description = "鎬诲崟浠�")
-	@Column(columnDefinition = "decimal(10,0) comment '鎬诲崟浠�'")
-	private BigDecimal totalPrice;
+//	//浠ヤ笅寮�绁ㄧ浉鍏�
+//
+//	@Schema(description = "缁撶畻id")
+//	@Column(columnDefinition = "bigint default null comment '缁撶畻id'")
+//	private Long saleCreditId;
+//
 
-	@Schema(description = "鎬荤◣棰�")
-	@Column(columnDefinition = "decimal(10,0) comment '鎬荤◣棰�'")
-	private BigDecimal totalTax;
-
-	//浜у搧淇℃伅
-
-	@Schema(description = "浜у搧id")
-	@Column(columnDefinition = "bigint comment '浜у搧id'")
-	private Long productId;
-
-	@Schema(description = "寮�绁ㄤ骇鍝佸悕绉�")
-	@Column(columnDefinition = "VARCHAR(50) comment '寮�绁ㄤ骇鍝佸悕绉�'")
-	private String invoiceName;
-
-	@Schema(description = "绋庣巼锛堢櫨鍒嗘瘮锛屽13琛ㄧず13%锛�")
-	@Column(columnDefinition = "double default 0.00 comment '绋庣巼'")
-	private Double taxRate;
-
-	@Schema(description = "绋庢敹鍒嗙被")
-	@Column(columnDefinition = "VARCHAR(50) comment '绋庢敹鍒嗙被'")
-	private String taxClass;
-
-	@Schema(description = "绋庢敹缂栫爜")
-	@Column(columnDefinition = "VARCHAR(80) comment '绋庢敹缂栫爜'")
-	private String taxCode;
-
-	//鍚堝悓鏍囩殑鐗╀腑淇℃伅
-
-	@Schema(description = "鏍囩殑鐗╄鏍�/鍨嬪彿")
-	@Column(columnDefinition = "VARCHAR(200) comment '鏍囩殑鐗╄鏍�/鍨嬪彿'")
-	private String specification;
-
-	@Schema(description = "璁¢噺鍗曚綅锛堜釜/鍙�/鍚�/椤�/濂楃瓑锛�")
-	@Column(columnDefinition = "VARCHAR(20) comment '璁¢噺鍗曚綅'")
-	private String unit;
-
-	@Schema(description = "鍗曚环")
-	@Column(columnDefinition = "decimal(10,2) comment '鍗曚环'")
-	private BigDecimal unitPrice;
+//
+//	@Schema(description = "鎬诲崟浠�")
+//	@Column(columnDefinition = "decimal(10,0) comment '鎬诲崟浠�'")
+//	private BigDecimal totalPrice;
+//
+//	@Schema(description = "鎬荤◣棰�")
+//	@Column(columnDefinition = "decimal(10,0) comment '鎬荤◣棰�'")
+//	private BigDecimal totalTax;
+//
+//	//浜у搧淇℃伅
+//
+//	@Schema(description = "浜у搧id")
+//	@Column(columnDefinition = "bigint comment '浜у搧id'")
+//	private Long productId;
+//
+//	@Schema(description = "寮�绁ㄤ骇鍝佸悕绉�")
+//	@Column(columnDefinition = "VARCHAR(50) comment '寮�绁ㄤ骇鍝佸悕绉�'")
+//	private String invoiceName;
+//
+//	@Schema(description = "绋庣巼锛堢櫨鍒嗘瘮锛屽13琛ㄧず13%锛�")
+//	@Column(columnDefinition = "double default 0.00 comment '绋庣巼'")
+//	private Double taxRate;
+//
+//	@Schema(description = "绋庢敹鍒嗙被")
+//	@Column(columnDefinition = "VARCHAR(50) comment '绋庢敹鍒嗙被'")
+//	private String taxClass;
+//
+//	@Schema(description = "绋庢敹缂栫爜")
+//	@Column(columnDefinition = "VARCHAR(80) comment '绋庢敹缂栫爜'")
+//	private String taxCode;
+//
+//	//鍚堝悓鏍囩殑鐗╀腑淇℃伅
+//
+//	@Schema(description = "鏍囩殑鐗╄鏍�/鍨嬪彿")
+//	@Column(columnDefinition = "VARCHAR(200) comment '鏍囩殑鐗╄鏍�/鍨嬪彿'")
+//	private String specification;
+//
+//	@Schema(description = "璁¢噺鍗曚綅锛堜釜/鍙�/鍚�/椤�/濂楃瓑锛�")
+//	@Column(columnDefinition = "VARCHAR(20) comment '璁¢噺鍗曚綅'")
+//	private String unit;
+//
+//	@Schema(description = "鍗曚环")
+//	@Column(columnDefinition = "decimal(10,2) comment '鍗曚环'")
+//	private BigDecimal unitPrice;
 }
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractSubjectMatter.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractSubjectMatter.java
index 2347d87..e20f33f 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractSubjectMatter.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractSubjectMatter.java
@@ -100,11 +100,11 @@
     @Column(columnDefinition = "VARCHAR(500) comment '浜よ揣/浜や粯鍦扮偣'")
     private String deliveryPlace;
 
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     @Schema(description = "璁″垝浜や粯鏃ユ湡")
-    @Column(columnDefinition = "VARCHAR(64) comment '璁″垝浜や粯鏃ユ湡'")
-    private String plannedDeliveryDate;
+    @Column(columnDefinition = "date comment '璁″垝浜や粯鏃ユ湡'")
+    private Date plannedDeliveryDate;
 
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
@@ -181,4 +181,9 @@
 	@Schema(description = "鎬婚噸")
 	@Column(columnDefinition = "decimal(10,2) comment '鎬婚噸 /kg'")
 	private BigDecimal totalWight;
+
+	@Schema(description = "澶囨敞")
+	@Column(columnDefinition="text comment '澶囨敞'")
+	private String remarks;
+
 }
\ No newline at end of file
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
deleted file mode 100644
index 7d7d4e7..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SaleCredit.java
+++ /dev/null
@@ -1,180 +0,0 @@
-package com.by4cloud.platformx.business.entity;
-
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.by4cloud.platformx.business.vo.ContractOutBoundVo;
-import com.by4cloud.platformx.common.data.mybatis.BaseModel;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.persistence.Column;
-import jakarta.persistence.Entity;
-import jakarta.persistence.Table;
-import jakarta.persistence.Transient;
-import lombok.Data;
-import org.hibernate.annotations.Comment;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-
-/**
- * @author wjli
- * @description
- * @date 2026/4/29 10:51
- **/
-@Data
-@Entity
-@Table(name = "sale_credit")
-@Comment("缁撶畻璁板綍")
-public class SaleCredit  extends BaseModel<SaleCredit> {
-
-    @Schema(description = "閿�鍞紪鍙�")
-    @Column(columnDefinition = "VARCHAR(64) comment '閿�鍞紪鍙�'")
-    private String entrustCode;
-
-    @Schema(description = "鍏宠仈鍚堝悓ID")
-    @Column(columnDefinition = "bigint not null comment '鍏宠仈鍚堝悓ID'")
-    private Long contractId;
-
-    @Schema(description = "鍚堝悓缂栧彿")
-    @Column(columnDefinition = "VARCHAR(64) comment '鍚堝悓缂栧彿'")
-    private String contractNo;
-
-    @Schema(description = "鍚堝悓鍚嶇О")
-    @Column(columnDefinition = "VARCHAR(64) comment '鍚堝悓鍚嶇О'")
-    private String contractName;
-
-    @Schema(description = "鐢叉柟id")
-    @Column(name = "party_a_id",columnDefinition = "bigint comment '鐢叉柟id'")
-    private Long partyAId;
-
-    @Schema(description = "鐢叉柟鍚嶇О")
-    @Column(name = "party_a",columnDefinition = "VARCHAR(100) comment '鐢叉柟鍚嶇О'")
-    private String partyA;
-
-    @Schema(description = "鐢叉柟缁熶竴绀句細淇$敤浠g爜")
-    @Column(name = "credit_code_a",columnDefinition = "VARCHAR(30) comment '鐢叉柟缁熶竴绀句細淇$敤浠g爜'")
-    private String creditCodeA;
-
-    @Schema(description = "鐢叉柟寮�鎴烽摱琛�")
-    @Column(name = "bank_name_a",columnDefinition = "VARCHAR(20) comment '鐢叉柟寮�鎴烽摱琛�'")
-    private String bankNameA;
-
-    @Schema(description = "鐢叉柟閾惰璐﹀彿")
-    @Column(name = "bank_account_a",columnDefinition = "VARCHAR(50) comment '鐢叉柟閾惰璐﹀彿'")
-    private String bankAccountA;
-
-    @Schema(description = "鐢叉柟鑱旂郴鐢佃瘽")
-    @Column(name = "contact_phone_a",columnDefinition = "VARCHAR(50) comment '鐢叉柟鑱旂郴鐢佃瘽'")
-    private String contactPhoneA;
-
-    @Schema(description = "涔欐柟id")
-    @Column(name = "party_b_id",columnDefinition = "bigint comment '涔欐柟id'")
-    private Long partyBId;
-
-    @Schema(description = "涔欐柟鍚嶇О")
-    @Column(name = "party_b",columnDefinition = "VARCHAR(100) comment '涔欐柟鍚嶇О'")
-    private String partyB;
-
-    @Schema(description = "涔欐柟缁熶竴绀句細淇$敤浠g爜")
-    @Column(name = "credit_code_b",columnDefinition = "VARCHAR(30) comment '涔欐柟缁熶竴绀句細淇$敤浠g爜'")
-    private String creditCodeB;
-
-    @Schema(description = "涔欐柟寮�鎴烽摱琛�")
-    @Column(name = "bank_name_b",columnDefinition = "VARCHAR(20) comment '涔欐柟寮�鎴烽摱琛�'")
-    private String bankNameB;
-
-    @Schema(description = "涔欐柟閾惰璐﹀彿")
-    @Column(name = "bank_account_b",columnDefinition = "VARCHAR(50) comment '涔欐柟閾惰璐﹀彿'")
-    private String bankAccountB;
-
-    @Schema(description = "涔欐柟鑱旂郴鐢佃瘽")
-    @Column(name = "contact_phone_b",columnDefinition = "VARCHAR(50) comment '涔欐柟鑱旂郴鐢佃瘽'")
-    private String contactPhoneB;
-
-    @Schema(description = "鎬婚噾棰�")
-    @Column(columnDefinition = "decimal(10,2) comment '鎬婚噾棰�'")
-    private BigDecimal totalAmount;
-
-    @Schema(description = "鎸傝处閲戦鎬荤◣棰�")
-    @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;
-
-    @Schema(description = "瀵瑰簲鍑鸿揣鍗�")
-    @Column(columnDefinition = "varchar(300) comment '瀵瑰簲鍑鸿揣鍗�'")
-    private String outBoundIds;
-
-    @Schema(description = "鐘舵�侊紙0-鐢熸晥 1-澶辨晥锛�")
-    @Column(columnDefinition = "tinyint(2) default 0 comment '鐘舵�侊紙0-鐢熸晥 1-澶辨晥锛�'")
-    private Integer status;
-
-    @Schema(description = "鐘舵�侊紙200锛�")
-    @Column(columnDefinition = "tinyint(2) default 0 comment '鐘舵�侊紙200锛�'")
-    private Integer bipStatus;
-
-    @Schema(description = "寮�钃濈エ缁撴灉鐘舵�� 0鏈紑绁� 1寮�绁ㄦ垚鍔� 2寮�绁ㄥけ璐�")
-    @javax.persistence.Column(columnDefinition="int(1) default 0 comment '寮�钃濈エ缁撴灉鐘舵��'")
-    private Integer blueResultStatus;
-
-    @Schema(description = "寮�绾㈢エ缁撴灉鐘舵�� 0鏈紑绁� 1寮�绁ㄦ垚鍔� 2寮�绁ㄥけ璐�")
-    @javax.persistence.Column(columnDefinition="int(1) comment '寮�绾㈢エ缁撴灉鐘舵��'")
-    private Integer redResultStatus;
-
-    @Schema(description = "钃濈エid")
-    @Column(columnDefinition = "bigint default null comment '钃濈エid'")
-    private Long blueInvoiceResultId;
-
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Schema(description = "钃濈エ寮�绁ㄦ椂闂�")
-    @Column(columnDefinition = "datetime comment '钃濈エ寮�绁ㄦ椂闂�'")
-    private Date blueInvoiceTime;
-
-    @Schema(description = "绾㈢エid")
-    @Column(columnDefinition = "bigint default null comment '绾㈢エid'")
-    private Long redInvoiceResultId;
-
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Schema(description = "绾㈢エ寮�绁ㄦ椂闂�")
-    @Column(columnDefinition = "datetime comment '绾㈢エ寮�绁ㄦ椂闂�'")
-    private Date redInvoiceTime;
-
-    @Schema(description = "寮�绁ㄨ鎯�")
-    @Column(columnDefinition = "TEXT comment '寮�绁ㄨ鎯�'")
-    private String invoiceRemark;
-
-    @Schema(description = "钃濈エ鍦板潃")
-    @Column(columnDefinition = "varchar(300) comment '钃濈エ鍦板潃'")
-    private String invoicPath;
-
-    @Schema(description = "绾㈢エ鍦板潃")
-    @Column(columnDefinition = "varchar(300) comment '绾㈢エ鍦板潃'")
-    private String invoicRedPath;
-
-    @Schema(description = "鍙戠エurl")
-    @javax.persistence.Column(columnDefinition="VARCHAR(50) comment '鍙戠エurl'")
-    private String invoicUrl;
-
-    @Schema(description = "绾㈠啿鍙戠エurl")
-    @javax.persistence.Column(columnDefinition="VARCHAR(50) comment '绾㈠啿鍙戠エurl'")
-    private String invoicRedUrl;
-
-    /**
-     * 鍑鸿揣鍗曞垪琛�
-     */
-    @Transient
-    @TableField(exist = false)
-    private List<ContractOutBoundVo> contractOutBoundList;
-
-
-}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/BipInvoice.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/BipInvoice.java
deleted file mode 100644
index 22e62d0..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/BipInvoice.java
+++ /dev/null
@@ -1,233 +0,0 @@
-package com.by4cloud.platformx.business.entity.invoice;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import com.baomidou.mybatisplus.annotation.TableField;
-
-import com.by4cloud.platformx.common.data.mybatis.BaseModel;
-import com.fasterxml.jackson.annotation.JsonFormat;
-
-import jakarta.persistence.Table;
-import jakarta.persistence.Transient;
-import lombok.Data;
-import org.hibernate.annotations.Comment;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import jakarta.persistence.Column;
-import jakarta.persistence.Entity;
-
-import java.util.Date;
-
-/**
- * @author wjli
- * @description
- * @date 2026/4/29 10:51
- **/
-@Data
-@Entity
-@org.hibernate.annotations.Table(appliesTo="bip_invoice",comment = "bip瀵瑰簲鍗曟嵁琛�")//bip瀵瑰簲鍗曟嵁琛�
-@jakarta.persistence.Table(name = "bip_invoice")//bip瀵瑰簲鍗曟嵁琛�
-@Comment("bip瀵瑰簲鍗曟嵁琛�")
-public class BipInvoice extends BaseModel<BipInvoice> {
-
-	@Schema(description = "浼犲叆鍗曟嵁淇℃伅")
-	@Column(columnDefinition = "text comment '浼犲叆鍗曟嵁淇℃伅'")
-	private String invoice;
-
-	@Schema(description = "瀵瑰簲BIP绯荤粺缂栧彿")
-	@Column(columnDefinition = "varchar(128) comment '瀵瑰簲BIP绯荤粺缂栧彿'")
-	private String bipNumber;
-
-	@Schema(description = "涓婁紶鏃ユ湡")
-	@Column(columnDefinition="date comment '涓婁紶鏃ユ湡'")
-	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-	private Date day;
-
-	@Schema(description = "鏆備及鏈堜唤")
-	@Column(columnDefinition="date comment '鏆備及鏈堜唤'")
-	@DateTimeFormat(pattern = "yyyy-MM")
-	@JsonFormat(pattern = "yyyy-MM")
-	private Date month;
-
-	@Schema(description = "鍟嗗搧ID")
-	@Column(columnDefinition = "int comment '鍟嗗搧ID'")
-	private Integer coalId;
-
-	@Schema(description = "缁撶畻瀹㈡埛ID")
-	@Column(columnDefinition = "int comment '缁撶畻瀹㈡埛ID'")
-	private Integer customerId;
-
-	@Schema(description = "鏀惰揣瀹㈡埛ID")
-	@Column(columnDefinition = "int comment '鏀惰揣瀹㈡埛ID'")
-	private Integer customerAddressId;
-//
-	@Schema(description = "鍗曚环")
-	@Column(columnDefinition = "double comment '鍗曚环'")
-	private Double price;
-
-	@Schema(description = "鏃犵◣鍗曚环")
-	@Column(columnDefinition = "double comment '鏃犵◣鍗曚环'")
-	private Double noTaxPrice;
-
-	@Schema(description = "鏁伴噺")
-	@Column(columnDefinition = "double comment '鏁伴噺'")
-	private Double tonnage;
-
-	@Schema(description = "鍚◣閲戦")
-	@Column(columnDefinition = "double comment '鍚◣閲戦'")
-	private Double money;
-//
-//
-
-	@Schema(description = "浼犲洖鍗曟嵁淇℃伅")
-	@Column(columnDefinition = "text comment '浼犲洖鍗曟嵁淇℃伅'")
-	private String resInvoice;
-
-	@Schema(description = "淇敼鍙戦�佸崟鎹俊鎭�")
-	@Column(columnDefinition = "text comment '淇敼鍙戦�佸崟鎹俊鎭�'")
-	private String updInvoice;
-
-	@Schema(description = "澶辫触淇℃伅")
-	@Column(columnDefinition = "VARCHAR(512) comment '澶辫触淇℃伅'")
-	private String message;
-
-	@Schema(description = "鍚堝悓缂栧彿")
-	@Column(columnDefinition = "VARCHAR(50) comment '鍚堝悓缂栧彿'")
-	private String contractNum;
-
-	@Schema(description = "淇敼鍙戦�佸崟鎹俊鎭�")
-	@Column(columnDefinition = "VARCHAR(512) comment '淇敼鍙戦�佸崟鎹俊鎭�'")
-	private String updMessage;
-
-	@Schema(description = "bip缂栧彿")
-	@Column(columnDefinition = "VARCHAR(32) comment 'bip缂栧彿'")
-	private String code;
-
-
-	@Schema(description = "bip鍐呴儴瀹㈠晢缂栧彿")
-	@Column(columnDefinition="VARCHAR(32) comment 'bip鍐呴儴瀹㈠晢缂栧彿'")
-	private String bipCompNumber;
-
-	@Schema(description = "杩愯緭鏂瑰紡 1鍦伴攢/2璺繍/3鑸硅繍")
-	@Column(columnDefinition = "char(1) comment '杩愯緭鏂瑰紡 1鍦伴攢/2璺繍/3鑸硅繍'")
-	private Integer trainType;
-
-	@Schema(description = "bip杩斿洖鐘舵�佷俊鎭�")
-	@Column(columnDefinition = "int comment 'bip杩斿洖鐘舵�佷俊鎭�'")
-	private Integer returnCode;
-
-	@Schema(description = "鍗曟嵁绫诲瀷 0缁撶畻鍗�1鏆備及")
-	@Column(columnDefinition = "char(1) comment '鍗曟嵁绫诲瀷 0缁撶畻鍗�1鏆備及'")
-	private Integer type;
-
-	@Schema(description = "鍗曟嵁绫诲瀷 0搴旀敹 1搴斾粯")
-	@Column(columnDefinition = "char(1) comment '鍗曟嵁绫诲瀷  0搴旀敹 1搴斾粯'")
-	private Integer invoiceType;
-
-	@Schema(description = "鍗曟嵁鏂瑰悜 1钃� -1绾�")
-	@Column(columnDefinition = "char(10) comment '鍗曟嵁鏂瑰悜 1钃� -1绾�'")
-	private Integer direction;
-
-	@Schema(description = "绾㈠啿鍗曟嵁ID")
-	@Column(columnDefinition = "int comment '绾㈠啿鍗曟嵁ID'")
-	private Long redInvoiceId;
-
-	@Schema(description = "绾㈠啿鎺夌殑鍗曟嵁鐘舵��")
-	@Column(columnDefinition = "VARCHAR(20) comment '绾㈠啿鎺夌殑鍗曟嵁鐘舵��'")
-	private String redInvoiceStatus;
-
-	@Schema(description = "绾㈠啿鎺夌殑鍗曟嵁杩斿洖淇℃伅")
-	@Column(columnDefinition = "VARCHAR(500) comment '绾㈠啿鎺夌殑鍗曟嵁杩斿洖淇℃伅'")
-	private String redInvoiceMessage;
-
-	@Schema(description = "涓荤粨绠楀崟ID")
-	@Column(columnDefinition = "int comment '涓荤粨绠楀崟ID'")
-	private Long allId;
-
-	@Schema(description = "瀵瑰簲姣忎釜缁撶畻鍗旾D")
-	@Column(columnDefinition = "int comment '瀵瑰簲姣忎釜缁撶畻鍗旾D'")
-	private Long railwayEntrustId;
-
-	@Schema(description = "bip鐘舵��0:寮�绔嬨��1:瀹℃壒涓��2:宸插鎵广��3:缁堟銆�4:宸查┏鍥�")
-	@Column(columnDefinition = "int comment 'bip鐘舵��0:寮�绔嬨��1:瀹℃壒涓��2:宸插鎵广��3:缁堟銆�4:宸查┏鍥�'")
-	private Integer verifyState;
-
-
-	@Schema(description = "鐘舵��0:寮�绔嬨��1:瀹℃壒涓��2:宸插鎵广��3:缁堟銆�4:宸查┏鍥�-1:宸插垹闄�")
-	@Column(columnDefinition = "int comment 'bip鐘舵��0:寮�绔嬨��1:瀹℃壒涓��2:宸插鎵广��3:缁堟銆�4:宸查┏鍥�-1:宸插垹闄�'")
-	private Integer status;
-
-	@Schema(description = "bip杩斿洖鐘舵�佺爜")
-	@Column(columnDefinition = "VARCHAR(20) comment 'bip杩斿洖鐘舵�佺爜'")
-	private String resStatus;
-
-	@Schema(description = "鍒犻櫎杩斿洖淇℃伅")
-	@Column(columnDefinition = "VARCHAR(200) comment '鍒犻櫎杩斿洖淇℃伅'")
-	private String delMessage;
-
-	@Transient
-	@TableField(exist = false)
-	private Integer isTs;//0宸叉帹閫�1鏈帹閫�
-
-	@Transient
-	@TableField(exist = false)
-	@DateTimeFormat(pattern = "yyyy-MM-dd")
-	@JsonFormat(pattern = "yyyy-MM-dd")
-	private Date startDate;
-
-	@Transient
-	@TableField(exist = false)
-	@DateTimeFormat(pattern = "yyyy-MM-dd")
-	@JsonFormat(pattern = "yyyy-MM-dd")
-	private Date endDate;
-
-
-	/**
-	 * 瀹㈡埛鍚嶇О
-	 */
-	@Transient
-	@TableField(exist = false)
-	private String customerName;
-
-	public String getCustomerName(){
-		/*if (customerId != null){
-			Customer customer = RedisCacheYunXiaoHelper.getInstance().getCustomerById(customerId);
-			if (customer != null){
-				this.customerName = customer.getCustomerName();
-			}
-		}*/
-		return this.customerName;
-	}
-
-	/**
-	 * 瀹㈡埛鍚嶇О
-	 */
-	@Transient
-	@TableField(exist = false)
-	private String coalName;
-
-	public String getCoalName() {
-		/*if (coalId != null) {
-			Coal c = RedisCacheYunXiaoHelper.getInstance().getCoalById(coalId);
-			coalName = c.getCoalName();
-		}*/
-		return coalName;
-	}
-	/**
-	 * 鏀惰揣瀹㈡埛鍚嶇О
-	 */
-	@Transient
-	@TableField(exist = false)
-	private String customerAddressName;
-
-	public String getCustomerAddressName() {
-		/*if (customerAddressId != null) {
-			Customer customer = RedisCacheYunXiaoHelper.getInstance().getCustomerById(customerAddressId);
-			if (customer != null) {
-				this.customerAddressName = customer.getCustomerName();
-			}
-		}*/
-		return this.customerAddressName;
-	}
-
-}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/FileBip.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/FileBip.java
deleted file mode 100644
index b98a30a..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/FileBip.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.by4cloud.platformx.business.entity.invoice;
-
-import com.by4cloud.platformx.common.data.mybatis.BaseModel;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import org.hibernate.annotations.Comment;
-
-import jakarta.persistence.Column;
-import jakarta.persistence.Entity;
-
-/**
- * @author kdq
- * @version 1.0.0
- * @ClassName FileBip.java
- * @Description TODO
- * @createTime 2024骞�09鏈�06鏃� 07:55:00
- */
-@Data
-//@TableName("file_bip")
-@Entity
-//@Table(name = "file_bip")
-@Comment("bip鐢靛瓙褰卞儚琛�")
-public class FileBip extends BaseModel<FileBip> {
-
-	@Schema(description = "鏂囦欢id")
-	@Column(columnDefinition="VARCHAR(500) comment '鏂囦欢id'")
-	private String fileId;
-
-	@Schema(description = "鏂囦欢璺緞")
-	@Column(columnDefinition="VARCHAR(500) comment '鏂囦欢璺緞'")
-	private String filePath;
-
-	@Schema(description = "鏂囦欢鏈湴璺緞")
-	@Column(columnDefinition="VARCHAR(500) comment '鏂囦欢鏈湴璺緞'")
-	private String fileLocalPath;
-
-	@Schema(description = "鏂囦欢鍒涘缓鏃堕棿鎴�")
-	@Column(columnDefinition="VARCHAR(500) comment '鏂囦欢鍒涘缓鏃堕棿鎴�'")
-	private String fileCTime;
-
-	@Schema(description = "鏂囦欢鏇存柊鏃堕棿鎴�")
-	@Column(columnDefinition="VARCHAR(500) comment '鏂囦欢鏇存柊鏃堕棿鎴�'")
-	private String fileUTime;
-
-	@Schema(description = "bip绯荤粺id")
-	@Column(columnDefinition="VARCHAR(500) comment 'bip绯荤粺id'")
-	private String fileBipId;
-
-	@Schema(description = "鏂囦欢鍚庣紑")
-	@Column(columnDefinition="VARCHAR(500) comment '鏂囦欢鍚庣紑'")
-	private String fileExtension;
-
-	@Schema(description = "鏂囦欢澶у皬")
-	@Column(columnDefinition="double comment '鏂囦欢澶у皬'")
-	private double fileSize;
-
-	@Schema(description = "鏂囦欢澶у皬鏂囨湰")
-	@Column(columnDefinition="VARCHAR(500) comment '鏂囦欢澶у皬鏂囨湰'")
-	private String fileSizeText;
-
-	@Schema(description = "鏂囦欢鍚嶇О")
-	@Column(columnDefinition="VARCHAR(500) comment '鏂囦欢鍚嶇О'")
-	private String fileName;
-
-	@Schema(description = "鏂囦欢鍏ㄧО")
-	@Column(columnDefinition="VARCHAR(500) comment '鏂囦欢鍏ㄧО'")
-	private String name;
-
-	@Schema(description = "鐢ㄦ埛id")
-	@Column(columnDefinition="VARCHAR(500) comment '鐢ㄦ埛id'")
-	private String yhtUserId;
-
-	@Schema(description = "绉熸埛id")
-	@Column(columnDefinition="VARCHAR(500) comment '绉熸埛id'")
-	private String tenantId;
-
-	@Schema(description = "绛惧悕")
-	@Column(columnDefinition="VARCHAR(500) comment '绛惧悕'")
-	private String sign;
-
-	@Schema(description = "澶嶅埗")
-	@Column(columnDefinition="VARCHAR(500) comment '澶嶅埗'")
-	private String copy;
-
-	@Schema(description = "缁撶畻鍗昳d")
-	@Column(columnDefinition="int comment '缁撶畻鍗昳d'")
-	private Long entrustId;
-
-	@Schema(description = "缁撶畻鍗曠紪鍙�")
-	@Column(columnDefinition="VARCHAR(500) comment '缁撶畻鍗曠紪鍙�'")
-	private String entrustCode;
-}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/InvoiceResult.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/InvoiceResult.java
deleted file mode 100644
index bc5ad3b..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/InvoiceResult.java
+++ /dev/null
@@ -1,215 +0,0 @@
-package com.by4cloud.platformx.business.entity.invoice;
-
-
-import com.by4cloud.platformx.common.data.mybatis.BaseModel;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.persistence.Column;
-import jakarta.persistence.Entity;
-import lombok.Data;
-import org.hibernate.annotations.Comment;
-
-/**
- * @author kdq
- * @version 1.0.0
- * @ClassName InvoiceResult.java
- * @Description TODO
- * @createTime 10024骞�11鏈�05鏃� 17:10:00
- */
-@Data
-@Entity
-@org.hibernate.annotations.Table(appliesTo="fp_invoice_result",comment = "寮�鍏峰彂绁ㄨ繑鍥炲��")//缁欒〃鍔犳敞閲�
-@jakarta.persistence.Table(name = "fp_invoice_result")//寮�鍏峰彂绁ㄨ繑鍥炲��
-@Comment("寮�鍏峰彂绁ㄨ繑鍥炲��")
-public class InvoiceResult extends BaseModel<InvoiceResult> {
-	@Schema(description = "缁撶畻璁板綍id")
-	@Column(columnDefinition = "bigint comment '缁撶畻璁板綍id'")
-	private Long saleCreditId;
-
-	@Schema(description = "鎺ㄩ�乥ip")
-	@Column(columnDefinition = "int comment '鎺ㄩ�乥ip'")
-	private Integer pushBip;
-
-	@Schema(description = "鎺ㄩ�乥ip搴斾粯")
-	@Column(columnDefinition = "int comment '鎺ㄩ�乥ip搴斾粯'")
-	private Integer pushBipyf;
-
-	@Schema(description = "鎺ㄩ�乥ip绾㈢エ")
-	@Column(columnDefinition = "int comment '鎺ㄩ�乥ip绾㈢エ'")
-	private Integer pushRedBip;
-
-	@Schema(description = "鎺ㄩ�乥ip绾㈢エ搴斾粯")
-	@Column(columnDefinition = "int comment '鎺ㄩ�乥ip绾㈢エ搴斾粯'")
-	private Integer pushRedBipyf;
-
-	@Schema(description = "鏄惁鎴愬姛")
-	@Column(columnDefinition = "tinyint(1) comment '鏄惁鎴愬姛'")
-	private Boolean success;
-
-	@Schema(description = "閿�鏂圭◣鍙�")
-	@Column(columnDefinition = "varchar(100) comment '閿�鏂圭◣鍙�'")
-	private String xTaxNo;
-
-	@Schema(description = "閿�鏂瑰悕绉�")
-	@Column(columnDefinition = "varchar(100) comment '閿�鏂瑰悕绉�'")
-	private String xName;
-
-	@Schema(description = "璐柟绋庡彿")
-	@Column(columnDefinition = "varchar(100) comment '璐柟绋庡彿'")
-	private String gTaxNo;
-
-	@Schema(description = "璐柟鍚嶇О")
-	@Column(columnDefinition = "varchar(100) comment '璐柟鍚嶇О'")
-	private String gName;
-
-	@Schema(description = "閿�鏂筩ode")
-	@Column(columnDefinition = "varchar(100) comment '閿�鏂筩ode'")
-	private String xOrgCode;
-
-	@Schema(description = "璇锋眰id")
-	@Column(columnDefinition = "varchar(50) comment '璇锋眰id'")
-	private String requestId;
-
-	@Schema(description = "鍙戠エ涓嬭浇璇锋眰id")
-	@Column(columnDefinition = "varchar(50) comment '鍙戠エ涓嬭浇璇锋眰id'")
-	private String fpRequestId;
-
-	@Schema(description = "璇锋眰缁撴灉")
-	@Column(columnDefinition = "varchar(100) comment '璇锋眰缁撴灉'")
-	private String result;
-
-	@Schema(description = "璇锋眰缁撴灉")
-	@Column(columnDefinition = "varchar(100) comment '璇锋眰缁撴灉'")
-	private String message;
-
-	@Schema(description = "璇锋眰鎺ュ彛")
-	@Column(columnDefinition = "varchar(100) comment '璇锋眰鎺ュ彛'")
-	private String methodName;
-
-	@Schema(description = "椤圭洰鍚嶇О")
-	@Column(columnDefinition = "varchar(100) comment '椤圭洰鍚嶇О'")
-	private String projectName;
-
-	@Schema(description = "钃濈エ鍚堣閲戦")
-	@Column(columnDefinition = "double comment '钃濈エ鍚堣閲戦'")
-	private Double originInvoiceTotalPrice;
-
-	@Schema(description = "寮�绁ㄦ祦姘村彿")
-	@Column(columnDefinition = "varchar(100) comment '寮�绁ㄦ祦姘村彿'")
-	private String serialNo;
-
-	@Schema(description = "鍚堣绋庨")
-	@Column(columnDefinition = "double comment '鍚堣绋庨'")
-	private Double invoiceTotalTax;
-
-	@Schema(description = "鍚堣閲戦")
-	@Column(columnDefinition = "double comment '鍚堣閲戦'")
-	private Double invoiceTotalPrice;
-
-	@Schema(description = "钃濈エ鍚堣绋庨")
-	@Column(columnDefinition = "double comment '钃濈エ鍚堣绋庨'")
-	private Double originInvoiceTotalTax;
-
-	@Schema(description = "浠风◣鍚堣")
-	@Column(columnDefinition = "double comment '浠风◣鍚堣'")
-	private Double invoiceTotalPriceTax;
-
-	@Schema(description = "涓績code")
-	@Column(columnDefinition = "varchar(100) comment '涓績code'")
-	private String taxControlCode;
-
-	@Schema(description = "鍙戠エurl")
-	@Column(columnDefinition = "varchar(100) comment '鍙戠エurl'")
-	private String eInvoiceUrl;
-
-	@Schema(description = "鍙戠エ鍚嶇О")
-	@Column(columnDefinition = "varchar(100) comment '鍙戠エ鍚嶇О'")
-	private String eInvoiceName;
-
-	@Schema(description = "鍙戠エ鏍搁獙缂栧彿")
-	@Column(columnDefinition = "varchar(100) comment '鍙戠エ鏍搁獙缂栧彿'")
-	private String invoiceCheckCode;
-
-	@Schema(description = "鍙戠エqrCode")
-	@Column(columnDefinition = "varchar(1000) comment '鍙戠エqrCode'")
-	private String invoiceQrCode;
-
-	@Schema(description = "鍙戠エ鍙�")
-	@Column(columnDefinition = "varchar(50) comment '鍙戠エ鍙�'")
-	private String invoiceNo;
-
-	@Schema(description = "钃濈エ鍙戠エ鍙�")
-	@Column(columnDefinition = "varchar(50) comment '钃濈エ鍙戠エ鍙�'")
-	private String originalInvoiceNo;
-
-	@Schema(description = "绾㈢エ寮�绁ㄧ紪鍙�")
-	@Column(columnDefinition = "varchar(100) comment '绾㈢エ寮�绁ㄧ紪鍙�'")
-	private String redInvoiceNo;
-
-	@Schema(description = "绾㈢エ寮�绁ㄥ師鍥�")
-	@Column(columnDefinition = "varchar(100) comment '绾㈢エ寮�绁ㄥ師鍥�'")
-	private String redInvoiceLabel;
-
-	@Schema(description = "寮�绁ㄦ椂闂�")
-	@Column(columnDefinition = "varchar(100) comment '鍙戠エ鍙�'")
-	private String invoiceDate;
-
-	@Schema(description = "绾㈢エ寮�绁ㄦ椂闂�")
-	@Column(columnDefinition = "varchar(100) comment '绾㈢エ寮�绁ㄦ椂闂�'")
-	private String redInvoiceDate;
-
-	@Schema(description = "褰曞叆鏃堕棿")
-	@Column(columnDefinition = "varchar(100) comment '褰曞叆鏃堕棿'")
-	private String entryDate;
-
-	@Schema(description = "褰曞叆韬唤")
-	@Column(columnDefinition = "varchar(100) comment '褰曞叆韬唤'")
-	private String entryIdentity;
-
-	@Schema(description = "鏈夋晥鏍囧織")
-	@Column(columnDefinition = "varchar(100) comment '鏈夋晥鏍囧織'")
-	private String validFlag;
-
-	@Schema(description = "鏄惁绾歌川鍙戠エ")
-	@Column(columnDefinition = "varchar(100) comment '鏄惁绾歌川鍙戠エ'")
-	private String originInvoiceIsPaper;
-
-	@Schema(description = "钃濈エ绫诲瀷")
-	@Column(columnDefinition = "varchar(100) comment '钃濈エ绫诲瀷'")
-	private String originInvoiceType;
-
-	@Schema(description = "钃濈エ寮�绁ㄦ椂闂�")
-	@Column(columnDefinition = "varchar(100) comment '钃濈エ寮�绁ㄦ椂闂�'")
-	private String originalInvoiceDate;
-
-	@Schema(description = "寮�绁ㄧ被鍨�")
-	@Column(columnDefinition = "varchar(100) comment '寮�绁ㄧ被鍨�'")
-	private String invoiceTyCode;
-
-	@Schema(description = "鍏宠仈缁撶畻鍗�")
-	@Column(columnDefinition = "varchar(100) comment '鍏宠仈缁撶畻鍗�'")
-	private String entrustCode;
-
-	@Schema(description = "鏈夋棤鍏卞悓璐拱鏂�")
-	@Column(columnDefinition = "varchar(100) comment '鏈夋棤鍏卞悓璐拱鏂�'")
-	private String mulPurchaserMark;
-
-	@Schema(description = "绾㈠瓧纭鍗昒UID")
-	@Column(columnDefinition = "varchar(100) comment '绾㈠瓧纭鍗昒UID'")
-	private String redConfirmUuid;
-
-	@Schema(description = "绾㈠瓧纭鍗曠姸鎬�")
-	@Column(columnDefinition = "varchar(100) comment '绾㈠瓧纭鍗曠姸鎬�'")
-	private String confirmState;
-
-	@Schema(description = "绋庡眬纭鍗冲紑鏍囧織")
-	@Column(columnDefinition = "varchar(100) comment '绋庡眬纭鍗冲紑鏍囧織'")
-	private String confirmBillingMark;
-
-	@Schema(description = "纭绾㈢エ鏍囧織")
-	@Column(columnDefinition = "varchar(100) comment '纭绾㈢エ鏍囧織'")
-	private String alreadyRedInvoiceFlag;
-
-
-
-
-}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/InvoiceResultItem.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/InvoiceResultItem.java
deleted file mode 100644
index 9b81eb2..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/InvoiceResultItem.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package com.by4cloud.platformx.business.entity.invoice;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.by4cloud.platformx.common.data.mybatis.BaseModel;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import org.hibernate.annotations.Comment;
-
-import jakarta.persistence.Column;
-import jakarta.persistence.Entity;
-
-/**
- * @author kdq
- * @version 1.0.0
- * @ClassName InvoiceResultItem.java
- * @Description TODO
- * @createTime 2024骞�11鏈�28鏃� 10:45:00
- */
-@Data
-@Entity
-@org.hibernate.annotations.Table(appliesTo="fp_invoice_result_item",comment = "寮�鍏峰彂绁ㄨ繑鍥炲�兼槑缁嗚")//寮�鍏峰彂绁ㄨ繑鍥炲�兼槑缁嗚
-@jakarta.persistence.Table(name = "fp_invoice_result_item")//寮�鍏峰彂绁ㄨ繑鍥炲�兼槑缁嗚
-@Comment("寮�鍏峰彂绁ㄨ繑鍥炲�兼槑缁嗚")
-public class InvoiceResultItem extends BaseModel<InvoiceResultItem> {
-
-	@Schema(description = "杩斿洖鍊糹d")
-	@Column(columnDefinition = "int comment '杩斿洖鍊糹d'")
-	private Long resultId;
-
-	@Schema(description = "鍘熺エ鎹")
-	@Column(columnDefinition = "int comment '鍘熺エ鎹'")
-	private Integer originalInvoiceDetailNo;
-
-	@Schema(description = "绁ㄦ嵁琛�")
-	@Column(columnDefinition = "int comment '绁ㄦ嵁琛�'")
-	private Integer goodsLineNo;
-
-	@Schema(description = "鍟嗗搧缂栧彿")
-	@Column(columnDefinition = "varchar(100) comment '鍟嗗搧缂栧彿'")
-	private String goodsCode;
-
-	@Schema(description = "鍟嗗搧绫诲瀷")
-	@Column(columnDefinition = "varchar(100) comment '鍟嗗搧绫诲瀷'")
-	private String goodsType;
-
-	@Schema(description = "鍟嗗搧鍚嶇О")
-	@Column(columnDefinition = "varchar(100) comment '鍟嗗搧鍚嶇О'")
-	private String goodsName;
-
-	@Schema(description = "鐓ょ鍚嶇О")
-	@Column(columnDefinition = "varchar(100) comment '鐓ょ鍚嶇О'")
-	private String coalName;
-
-	@Schema(description = "鍏宠仈缁撶畻鍗�")
-	@Column(columnDefinition = "varchar(100) comment '鍏宠仈缁撶畻鍗�'")
-	private String entrustCode;
-
-	@Schema(description = "鍟嗗搧绠�绉�")
-	@Column(columnDefinition = "varchar(100) comment '鍟嗗搧绠�绉�'")
-	private String goodsSimpleName;
-
-	@Schema(description = "椤圭洰鍚嶇О")
-	@Column(columnDefinition = "varchar(100) comment '椤圭洰鍚嶇О'")
-	private String projectName;
-
-	@Schema(description = "鍗曚綅")
-	@Column(columnDefinition = "varchar(100) comment '鍗曚綅'")
-	private String goodsUnit;
-
-	@Schema(description = "鍗曚环")
-	@Column(columnDefinition = "double comment '鍗曚綅'")
-	private Double goodsPrice;
-
-	@Schema(description = "鏁伴噺")
-	@Column(columnDefinition = "double comment '鏁伴噺'")
-	private Double goodsQuantity;
-
-	@Schema(description = "鍟嗗搧閲戦")
-	@Column(columnDefinition = "double comment '鍟嗗搧閲戦'")
-	private Double goodsTotalPrice;
-
-	@Schema(description = "绋庣巼")
-	@Column(columnDefinition = "double comment '绋庣巼'")
-	private Double goodsTaxRate;
-
-	@Schema(description = "绋庨")
-	@Column(columnDefinition = "double comment '绋庨'")
-	private Double goodsTotalTax;
-
-	@Schema(description = "鏄惁鍚堝苟")
-	@Column(columnDefinition = "varchar(10) comment '绋庨'")
-	private String goodsLineNature;
-
-	@Schema(description = "瑙勬牸鍨嬪彿")
-	@Column(columnDefinition = "varchar(50) comment '瑙勬牸鍨嬪彿'")
-	private String goodsSpecification;
-
-	@Schema(description = "鍚◣鏍囧織")
-	@Column(columnDefinition = "varchar(10) comment '鍚◣鏍囧織'")
-	private String priceTaxMark;
-
-	@Schema(description = "绫诲埆")
-	@Column(columnDefinition = "varchar(10) comment '鐓ょ绫诲埆'")
-	private String coalType;
-
-	@Schema(description = "闀垮崗鏃堕棿")
-	@Column(columnDefinition = "varchar(10) comment '闀垮崗鏃堕棿'")
-	private String agreementTerm;
-}
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
deleted file mode 100644
index b87a58f..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPBody.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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
deleted file mode 100644
index c746f55..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPPayPlan.java
+++ /dev/null
@@ -1,27 +0,0 @@
-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
deleted file mode 100644
index 85f853d..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYs.java
+++ /dev/null
@@ -1,38 +0,0 @@
-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
deleted file mode 100644
index 787d392..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYsItem.java
+++ /dev/null
@@ -1,120 +0,0 @@
-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
deleted file mode 100644
index 04a3de8..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYsMx.java
+++ /dev/null
@@ -1,79 +0,0 @@
-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
deleted file mode 100644
index 46d77ec..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BIPYsMxHeader.java
+++ /dev/null
@@ -1,35 +0,0 @@
-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/vo/BipResVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BipResVo.java
deleted file mode 100644
index 79c240f..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BipResVo.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.by4cloud.platformx.business.entity.invoice.vo;
-
-import lombok.Data;
-
-@Data
-public class BipResVo<T> {
-    private String code;
-    private String message;
-    private T data;
-}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BipTokenVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BipTokenVo.java
deleted file mode 100644
index 79512f5..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/BipTokenVo.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.by4cloud.platformx.business.entity.invoice.vo;
-
-import lombok.Data;
-
-@Data
-public class BipTokenVo {
-    private String access_token;
-    private long expire;
-}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/InvoicingVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/InvoicingVo.java
deleted file mode 100644
index 5827656..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/InvoicingVo.java
+++ /dev/null
@@ -1,291 +0,0 @@
-package com.by4cloud.platformx.business.entity.invoice.vo;
-
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author kdq
- * @version 1.0.0
- * @ClassName InvoicingVo.java
- * @Description TODO
- * @createTime 2024骞�10鏈�08鏃� 11:16:00
- */
-@Data
-public class InvoicingVo {//鍙戠エ寮�鍏�
-	private Long saleCreditId;
-	private String taxNo; //绋庡彿
-	private String entrustCode; //缁撶畻鍗曞彿
-	private Integer fatherEntrustId; //鐖剁粨绠楀崟id
-	private Integer settlementPathId; //缁撶畻璺緞id
-	private Integer sort; //鎺掑簭
-	private String ledgerName; //閿�鏂瑰悕绉�
-	private String taxUserName;//鐧诲綍鍚�
-	private String invoiceTerminalCode;//寮�绁ㄧ粓绔唬鐮�
-	private Boolean isSplit;//鏄惁闇�瑕佹媶鍒嗗紑鍏凤紝榛樿涓嶆媶鍒�
-	private String orgCode;//缁勭粐鏈烘瀯缂栫爜
-	private String taxDiskNo;//璁惧缂栧彿
-	private Boolean formatGenerate;//鏄惁闇�瑕佺敓鎴愮増寮忚繑鍥炵増寮忛摼鎺�(true / false)
-	private Boolean formatPushType;// 鐗堝紡鐢熸垚鏄惁鎺ㄩ��(true / false)
-	/**
-	 * 鍊间负锛�1/0 1 闇�瑕佽ˉ鍏� 0涓嶉渶瑕佽ˉ鍏紝榛樿涓�0锛夋槸鍚︽牴鎹鎴风紪鐮侊紝璐柟绋庡彿锛岃喘鏂瑰悕绉版煡璇㈠鎴蜂俊鎭ˉ鍏ㄦ湭濉啓鐨勮喘
-	 * 鏂逛俊鎭紙璐柟绋庡彿锛岃喘鏂瑰悕绉帮紝璐柟鍦板潃鐢佃瘽锛岃喘鏂归摱琛岃处鍙凤紝閭锛屾墜鏈猴級
-	 */
-	private String completionCustom;
-	/**
-	 * 寮�鍏疯姹傜被鍨嬶細isAsync 0 鍚屾 1 寮傛 榛樿鍚屾寮�鍏凤紙浠呮敮鎸乺pa锛�
-	 */
-	private String isAsync;
-	/**
-	 * 鏄惁杩斿洖钃濈エ宸茬孩鍐茬孩绁ㄤ俊鎭紝0鍚︼紝1鏄紝榛樿涓�0锛堜粎鏀寔绋庢帶鍙戠エ锛�
-	 */
-	private String isReturnRedInfo;
-	private InvoicingVoInfo data;
-
-	@Data
-	public static class InvoicingVoInfo {
-		/**
-		 * 鍙戠エ绫诲瀷浠g爜, 004锛氬鍊肩◣涓撶敤鍙戠エ锛�007锛氬鍊肩◣鏅�氬彂绁紱026锛氬鍊肩◣鐢靛瓙鍙戠エ锛�025锛氬鍊肩◣鍗峰紡鍙戠エ锛�028:澧炲�肩◣鐢靛瓙涓撶敤鍙戠エ
-		 *  01:鍏ㄧ數鍙戠エ(澧炲�肩◣涓撶敤鍙戠エ) 02:鍏ㄧ數鍙戠エ(鏅�氬彂绁�)
-		 */
-		private String invoiceTypeCode;
-		/**
-		 * 鏁扮數绾歌川鍙戠エ鏍囧織锛孻锛氭槸锛孨锛氬惁銆傜◣鎺х被鍙戠エ寮�鍏蜂笉鏍¢獙姝ゅ瓧娈碉紱鏆傚彧鏀寔鐢ㄦ暟鐢电數绁ㄧ孩鍐叉暟鐢电焊绁�
-		 */
-		private String paperInvoiceFlag;
-		/**
-		 * 閫夋嫨绾歌川鍙戠エ鏍囧織涓篩鏃讹紝绾哥エ绫诲瀷蹇呭~銆傜エ绉嶄负 鏅�氬彂绁�02鏃跺彲浼狅細 04 2016鐗堝鍊肩◣鏅�氬彂绁紙浜岃仈鎶樺彔绁級锛� 052016鐗堝鍊肩◣鏅�氬彂绁紙浜旇仈鎶樺彔绁�);
-		 * 绁ㄧ涓� 澧炲�肩◣涓撶敤鍙戠エ01鍙紶锛� 1130 澧炲�肩◣涓撶敤鍙戠エ锛堜腑鏂囦笁鑱旀棤閲戦闄愬埗鐗堬級 锛�1140 澧炲�肩◣涓撶敤鍙戠エ锛堜腑鏂囧洓鑱旀棤閲戦闄愬埗鐗堬級 1160澧炲�硷紝绋庝笓鐢ㄥ彂绁紙涓枃鍏仈鏃犻噾棰濋檺鍒剁増锛� 锛�
-		 * 1170 澧炲�肩◣涓撶敤鍙戠エ锛堜腑鏂囦竷鑱旀棤閲戦闄愬埗鐗堬級
-		 */
-		private String paperInvoiceTypeCode;
-		/**
-		 * 寮�绁ㄧ被鍨� 0:姝f暟鍙戠エ锛堣摑绁級 1锛氳礋鏁板彂绁紙绾㈢エ锛夐粯璁�0
-		 */
-		private String invoiceType;
-		/**
-		 * 鐗规畩绁ㄧ鏍囧織锛� 00锛氭櫘閫氬彂绁紱01锛氬啘浜у搧閿�鍞紱02锛氬啘浜у搧鏀惰喘锛�08锛氭垚鍝佹补 鏈哄姩杞︼紙榛樿鏄�00鏅�氬彂绁級;16鐭夸骇鍝侊紱03绋�鍦燂紱 鍏ㄧ數绫诲彂绁ㄧ壒娈婄エ绉嶆爣蹇楋細01 鎴愬搧娌瑰彂绁紱
-		 * 03锛氬缓绛戞湇鍔″彂绁紱04锛氳揣鐗╄繍杈撴湇鍔″彂绁紱05锛氫笉鍔ㄤ骇閿�鍞湇鍔″彂绁紱06锛氫笉鍔ㄤ骇绉熻祦鏈嶅姟鍙戠エ锛�09锛氭梾瀹㈣繍杈撳彂绁紱12锛氳嚜浜у啘浜у搧閿�鍞紱
-		 * 13锛氭嫋鎷夋満鍜岃仈鍚堟敹鍓叉満锛�14锛氭満鍔ㄨ溅锛�15锛氫簩鎵嬭溅锛�16锛氬啘浜у搧鏀惰喘锛�31锛氫簩鎵嬭溅*锛�24锛氭姤搴熶骇鍝佹敹璐紱02锛氱█鍦燂紱17锛氬厜浼忔敹璐紱07锛氫唬鏀惰溅鑸圭◣锛�32锛氱數瀛愮儫锛�18鍗风儫
-		 */
-		private String invoiceSpecialMark;
-		/**
-		 * 鎴愬搧娌瑰崟浠疯繃浣庢槸鍚︾‘璁ゅ紑鍏锋爣璇嗭細Y 鏄紱 N 鍚� 涓虹┖鏃堕粯璁ゅ�间负N 锛堝娉細涓撶エ鍗曚环杩囦綆寮哄埗寮�绁ㄤ細璁板叆寮傚父鍙戠エ锛岀孩鍐查渶瑕佸湪鐢靛瓙绋庡姟灞�鐢宠瑙i櫎鐒跺悗鍐嶇孩鍐诧紱鏅エ鍗曚环杩�
-		 * 浣庡紑鍏锋垚鍔熷彂绁ㄥ彲浠ユ甯哥孩鍐诧級
-		 */
-		private String  isConfirmIssue;
-		/**
-		 * 绋庡眬浜屾纭鏄惁缁х画寮�绁紝1锛氭槸锛�0锛氬惁锛涳紙03寤虹瓚鏈嶅姟鍙戠エ锛屽缓绛戞湇鍔″彂鐢熷湴鍜岄攢鏂规敞鍐屽湴鍧�涓嶅悓鏃舵槸鍚︾户缁紑绁�,24鎶ュ簾浜у搧鏀惰喘闇�瑕佺即绾宠喘缃◣鐨勬彁绀烘槸鍚︾户缁紑鍏�
-		 * 锛夛紝鑻ヤ笉浼犲�硷紝绯荤粺榛樿鎸夌収鈥滄槸鈥濆鐞�;
-		 */
-		private String  confirmIssue;
-		/**
-		 * 寰佺◣鏂瑰紡锛� 0锛氭櫘閫氬緛绋庯紱2锛氬樊棰濆緛绋庯紙榛樿鏄�0鏅�氬緛绋庯級
-		 */
-		private String  taxationMethod;
-		/**
-		 * 宸寰佺◣鏍囩锛�01 鍏ㄩ寮�绁ㄣ�� 02 宸寮�绁� 锛涘彂绁ㄧ被鍨嬩唬鐮佷负01锛�02鏃朵笖寰佺◣鏂瑰紡涓�2蹇呭~
-		 */
-		private String  taxationLabel;
-		/**
-		 * 鍑忔寜寰佺◣鏍囪瘑锛�01锛氫釜浜哄嚭绉熶綇鎴匡紱03锛氶攢鍞嚜宸变娇鐢ㄨ繃鐨勫浐瀹氳祫浜э紱05锛氫綇鎴跨璧併�傞粯璁や负绌�,绌轰唬琛ㄦ棤銆�
-		 */
-		private String  reducedTaxCode;
-		/**
-		 * 0锛氭棤娓呭崟锛�1锛氬甫娓呭崟锛堜笓鏅エ鍙戠エ鏄庣粏澶т簬绛変簬8琛屽繀椤诲甫娓呭崟锛夛細澶т簬8琛屽繀椤讳负娓呭崟绁�(鐢靛瓙绁ㄥ彧鑳戒负闈炶鍗曠エ)锛堥粯璁ゆ槸0鏃犳竻鍗曪級锛屽彂绁ㄧ被鍨嬩唬鐮佷负01锛�02鏃惰瀛楁鏃�
-		 */
-		private String  invoiceListMark;
-		/**
-		 * 鍚◣鏍囧織锛� 0锛氫笉鍚◣锛�1锛氬惈绋庯紙榛樿涓嶅惈绋庯級
-		 */
-		private String  priceTaxMark;
-		/**
-		 * 寮�绁ㄦ祦姘村彿锛� 鍞竴鏍囧織寮�绁ㄨ姹傘�傛敮鎸佹暟瀛楀瓧姣嶄笅鍒掔嚎缁勫悎銆�
-		 */
-		private String  serialNo;
-		/**
-		 * 鍙戠エ璇锋眰娴佹按鍙�
-		 */
-		private String  orderNo;
-		/**
-		 * 璐柟鍗曚綅绋庡彿锛� invoiceTypeCode=004銆�028銆�01锛堝鍊肩◣涓撶敤鍙戠エ銆佸鍊肩◣鐢靛瓙涓撶敤鍙戠エ銆佸叏鐢靛彂绁紙澧炲�肩◣涓撶敤鍙戠エ锛夛級寮�鍏锋椂蹇呬紶 invoiceSpecialMark=16|17锛堝啘浜у搧鏀惰喘銆佸厜浼忔敹璐級寮�鍏锋椂蹇呬紶
-		 */
-		private String  buyerTaxNo;
-		/**
-		 * 璐柟鍗曚綅鍚嶇О 鍏ㄧ數涓�100涓瓧绗�
-		 */
-		private String  buyerName;
-		/**
-		 * 璐柟鍦板潃鍙婄數璇濓紝 澧炲�肩◣涓撶敤鍙戠エ寮�鍏锋椂蹇呭~锛屽彂绁ㄧ被鍨嬩唬鐮佷负01銆�02鏃惰瀛楁鎷嗗垎涓哄湴鍧�鐢佃瘽涓や釜瀛楁
-		 */
-		private String  buyerAddressPhone;
-		/**
-		 * 璐柟寮�鎴疯鍙婅处鍙凤紝 澧炲�肩◣涓撶敤鍙戠エ寮�鍏锋椂蹇呭~锛屽彂绁ㄧ被鍨嬩唬鐮佷负01銆�02鏃惰瀛楁鎷嗗垎涓洪摱琛屽悕绉般�佽处鍙蜂袱涓瓧娈�
-		 */
-		private String  buyerBankAccount;
-		/**
-		 * 寮�绁ㄤ汉锛岀◣绁ㄩ�夊~锛屽彇鍊奸�昏緫锛氬鏋滅粓绔湁鍊煎彇缁堢锛屽鏋滄病鏈夊幓鏈烘瀯鑾峰彇锛屽鏋滈兘娌℃湁浼氳嚜鍔ㄨ幏鍙栨満鏋勪笅闅忔満鐢ㄦ埛鍚嶇О锛涙暟鐢电エWeb杩炴帴鍣ㄩ�夊~锛�
-		 * 鍙栧�奸�昏緫锛歵axUserName锛瀌rawer锛為粯璁ゅ紑绁ㄤ汉锛炵粓绔巿鏉冨紑绁ㄤ汉锛屽鏋滀互涓婂洓澶勯兘鏈彇鍒伴殢鏈鸿幏鍙栬绋庡彿涓嬫渶杩戜竴娆$櫥褰曠殑鏁扮數璐﹀彿瀵瑰簲鐨勫紑
-		 * 绁ㄤ汉锛涙暟鐢电エ涔愪紒杩炴帴鍣ㄥ繀濉紝闀垮害鏈�澶�300瀛楃銆�
-		 */
-		private String  drawer;
-		/**
-		 * 澶嶆牳浜猴紝 16涓瓧绗︼紱绋庢帶寮�鍏锋椂锛� 涓虹┖鏃讹紝濡傛灉缁堢鏈夊�煎彇缁堢锛屽鏋滄病鏈夊幓鏈烘瀯鑾峰彇锛岃嫢閮芥病鏈夊垯涓虹┖锛佸叏鐢电被寮�鍏锋椂锛氭瀛楁闈炲繀濉紝鍗冲彂绁ㄧ被鍨嬩唬鐮佷负01锛�02鏃惰瀛楁闈炲繀濉�
-		 */
-		private String   checker;
-		/**
-		 * 鏀舵浜猴紝 16涓瓧绗︼紱绋庢帶绫诲紑鍏锋椂锛氳嫢涓虹┖锛屽鏋滅粓绔湁鍊煎彇缁堢锛屽鏋滄病鏈夊幓鏈烘瀯鑾峰彇锛岃嫢閮芥病鏈夊垯涓虹┖锛涘叏鐢电被寮�鍏锋椂锛氭瀛楁闈炲繀濉紝鍗冲彂绁ㄧ被鍨嬩唬鐮佷负01锛�02鏃惰瀛楁闈炲繀濉�
-		 */
-		private String   payee;
-		/**
-		 *鍚堣閲戦锛� 淇濈暀涓や綅灏忔暟锛涙敮鎸佷环绋庡垎绂�
-		 */
-		private BigDecimal   invoiceTotalPrice;
-		/**
-		 * 鍚堣绋庨锛� 淇濈暀涓や綅灏忔暟锛涙敮鎸佷环绋庡垎绂�
-		 */
-		private BigDecimal   invoiceTotalTax;
-		/**
-		 * 浠风◣鍚堣锛� 淇濈暀涓や綅灏忔暟锛涙敮鎸佷环绋庡垎绂�
-		 */
-		private BigDecimal   invoiceTotalPriceTax;
-		/**
-		 * 澶囨敞 涔愪紒闀垮害涓�230涓瓧绗�
-		 */
-		private String   remarks;
-		/**
-		 * 绾㈠瓧淇℃伅琛�/纭鍗曠紪鍙凤紝浠卛nvoiceType=1鏃堕渶瑕佷紶鍏ユ暟鎹◣鎺х被绾㈢エ寮�鍏锋椂锛宨nvoiceTypeCode=004銆�028鏃跺繀椤讳紶鍊硷紝浼犲叆绾㈠瓧淇℃伅琛ㄧ紪鍙凤紱 鍏ㄧ數绫荤孩绁ㄥ紑鍏锋椂锛�
-		 * invoiceTypeCode=01銆�02鏃跺繀椤讳紶鍊硷紝浼犲叆绾㈠瓧纭鍗曠紪鍙凤紱
-		 */
-		private String    redInfoNo;
-		/**
-		 * 鍘熷彂绁ㄤ唬鐮侊紝 invoiceType=1锛岀◣鎺ц礋鏁版櫘绁ㄥ紑鍏锋椂蹇呬紶锛涚孩绁ㄩ�夋暟鐢电エ鏃讹紝姝ら」鍙负绌恒��
-		 */
-		private String     originalInvoiceCode;
-		/**
-		 * 鍘熷彂绁ㄥ彿鐮侊紝 invoiceType=1锛岀◣鎺ц礋鏁版櫘绁ㄥ紑鍏锋椂蹇呬紶锛涚孩绁ㄩ�夋暟鐢电エ鏃讹紝姝ら」鍙负绌恒��
-		 */
-		private String     originalInvoiceNo;
-		/**
-		 * 鎵i櫎棰濓紝 taxationLabel=2锛屽樊棰濆緛绋庢椂蹇呬紶銆傛暟鍊煎繀椤诲皬浜庝环绋庡悎璁°��
-		 */
-		private BigDecimal     deductibleAmount;
-		/**
-		 * 閿�鏂瑰湴鍧�鍙婄數璇濓紝鍙戠エ绫诲瀷浠g爜涓�01銆�02鏃惰瀛楁鎷嗗垎涓哄湴鍧�銆佺數璇濅袱涓瓧娈�
-		 */
-		private String     sellerAddressPhone;
-		/**
-		 * 閿�鏂瑰紑鎴疯鍙婅处鍙凤紝鍙戠エ绫诲瀷浠g爜涓�01銆�02鏃朵笉鐢ㄦ瀛楁
-		 */
-		private String     sellerBankAccount;
-		private Map ext;//鎵╁睍瀛楁
-		/**
-		 * 绗笁鏂圭郴缁熷悕绉�
-		 */
-		private String     systemName;
-		/**
-		 * 绗笁鏂圭郴缁焛d
-		 */
-		private String     systemId;
-		/**
-		 * 瀹㈡埛閭
-		 */
-		private String     buyerEmail;
-		/**
-		 * 鎶勯�侀偖绠�
-		 */
-		private String     emailCarbonCopy;
-		/**
-		 * 瀹㈡埛鐢佃瘽
-		 */
-		private String     buyerPhone;
-		/**
-		 * 鐢ㄦ埛璐﹀彿锛岀敤浜庝釜浜虹淮搴︽暟鎹爣璁�
-		 */
-		private String     userAccount;
-		/**
-		 * 绾㈠啿鍘熷洜锛�1 閿�璐ч��鍥� 2 寮�绁ㄦ湁璇� 3 鏈嶅姟缁堟 4 閿�鍞姌璁╋級绋庢帶绾㈠啿鍘熷洜锛氬缓璁寜瀹為檯寮�绁ㄦ儏鍐典紶鍏ョ孩鍐插師鍥狅紝鑻ヤ笉浼犵郴缁熶細鑷姩鏍规嵁鎯呭喌鍒ゆ柇骞惰祴鍊硷紱鍏ㄧ數绾㈠啿鍘熷洜锛氬繀濉�
-		 */
-		private String     redIssueReason;
-		private String     buyerBankName;
-		private String     buyerBankNumber;
-		private String     buyerAddress;
-		private String     buyerTelphone;
-		private String     redConfirmUuid;
-		private String     coalCalorificValue;  //姣忓崈鍏嬬叅鐐彂鐑噺( 鍗冨崱 ) ,澶т簬1000w蹇呭~
-		private String     totalSulfurOnDryBasis; //骞插熀鍏ㄧ~( % ) ,澶т簬1000w蹇呭~
-		private String     dryAshFreeVolatileMatter; //骞茬叅鏃犵伆鍩烘尌鍙戝垎(%) ,澶т簬1000w蹇呭~
-
-		private List<InvoiceDetail> invoiceDetailsList;
-
-	}
-
-	@Data
-	public static class InvoiceDetail{
-		private Map<String,Object> ext;
-		private String goodsType;
-		/**
-		 * 鏄庣粏琛屽彿
-		 */
-		private Integer goodsLineNo;
-		/**
-		 * 瀵瑰簲钃濈エ鏄庣粏琛屽彿 绋庢帶绫荤孩瀛楀彂绁ㄥ紑鍏锋椂鏃犻渶浼犲�硷紱 鍏ㄧ數绫荤孩瀛楀彂绁ㄥ紑鍏锋椂蹇呴』浼犲�硷紱
-		 */
-		private String originalInvoiceDetailNo;
-		/**
-		 * 鍙戠エ琛屾�ц川锛� 0锛氭甯歌锛�1锛氭姌鎵h锛�2锛氳鎶樻墸琛岋紝榛樿涓�0
-		 */
-		private String invoiceLineNature;
-		/**
-		 * 绋庢敹鍒嗙被缂栫爜
-		 */
-		private String goodsCode;
-		/**
-		 * 鍟嗗搧缂栫爜
-		 */
-		private String goodsPersonalCode;
-		/**
-		 * 鍟嗗搧鍚嶇О
-		 */
-		private String goodsName;
-		/**
-		 * 瑙勬牸鍨嬪彿
-		 */
-		private String goodsSpecification;
-		/**
-		 * 璁¢噺鍗曚綅
-		 */
-		private String goodsUnit;
-		/**
-		 * 閲戦锛屽皬鏁扮偣鍚�2浣�,瓒呴暱鑷姩淇濈暀涓や綅灏忔暟
-		 */
-		private BigDecimal goodsTotalPrice;
-		/**
-		 * 鍟嗗搧鏁伴噺
-		 */
-		private BigDecimal goodsQuantity;
-		/**
-		 * 鍟嗗搧鍗曚环
-		 */
-		private BigDecimal goodsPrice;
-		/**
-		 * 绋庣巼,瓒呴暱鑷姩淇濈暀涓変綅灏忔暟
-		 */
-		private Double goodsTaxRate;
-		/**
-		 * 绋庨锛屼袱浣嶅皬鏁�
-		 */
-		private BigDecimal goodsTotalTax;
-
-		private String coalType;
-		private String agreementTerm;
-
-
-	}
-
-
-
-
-}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/RedConfirmVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/RedConfirmVo.java
deleted file mode 100644
index 2e8404e..0000000
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/vo/RedConfirmVo.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.by4cloud.platformx.business.entity.invoice.vo;
-
-import lombok.Data;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author kdq
- * @version 1.0.0
- * @ClassName RedConfirmVo.java
- * @Description TODO
- * @createTime 2024骞�11鏈�06鏃� 11:35:00
- */
-@Data
-public class RedConfirmVo {//绾㈢エ纭
-	private String taxNo;
-	private String orgCode;
-	private String taxUserName;
-	private String redConfirmSerialNo; //绾㈠瓧纭鍗曟祦姘村彿
-	private String entryIdentity; //褰曞叆鏂硅韩浠� 01:閿�鏂�,02:璐柟,03:浜屾墜杞﹀競鍦�/鎷嶅崠浼佷笟
-	private String sellerTaxNo; //閿�鍞柟缁熶竴绀句細淇$敤浠g爜/绾崇◣浜鸿瘑鍒彿/韬唤璇佷欢鍙风爜
-	private String sellerTaxName;//閿�鍞柟鍚嶇О
-	private String buyerTaxNo;//璐拱鏂圭粺涓�绀句細淇$敤浠g爜/绾崇◣浜鸿瘑鍒彿/韬唤璇佷欢鍙风爜, 褰曞叆鏂硅韩浠戒负銆愯喘鏂广�戞椂蹇呭~
-	private String buyerTaxName;//璐拱鏂瑰悕绉�
-	private String originInvoiceIsPaper;//鏄惁绾歌川鍙戠エ鏍囧織 Y锛氱焊璐ㄥ彂绁� N锛氱數瀛愬彂绁�
-	private String originalInvoiceNo;//钃濆瓧鍙戠エ鍏ㄧ數鍙戠エ鍙风爜锛屻�愬彂绁ㄦ潵婧愩�戜负2鏃跺繀濉�
-	private String originalPaperInvoiceCode;//绾歌川銆佺◣鎺у彂绁ㄤ唬鐮侊紝銆愬彂绁ㄦ潵婧愩�戜负1鏃舵垨鍏ㄧ數绾哥エ鏃跺繀濉�
-	private String originalPaperInvoiceNo;//绾歌川銆佺◣鎺у彂绁ㄥ彿鐮侊紝銆愬彂绁ㄦ潵婧愩�戜负1鏃舵垨鍏ㄧ數绾哥エ鏃跺繀濉�
-	private String originInvoiceDate;//钃濆瓧鍙戠エ寮�绁ㄦ棩鏈� yyyy-MM-dd HH:mm:ss
-	private String originInvoiceType;//钃濆瓧鍙戠エ绁ㄧ浠g爜 01:澧炲�肩◣涓撶敤鍙戠エ 02:鏅�氬彂绁� 03:鏈哄姩杞︾粺涓�閿�鍞彂绁� 04:浜屾墜杞︾粺涓�閿�鍞彂绁�
-	private String originInvoiceSetCode;//
-	private String autoIssueSwitch;//闈炵‘璁ゅ嵆寮�鈥斺�旇嚜鍔ㄥ紑绁� Y:鑷姩寮�绁� N锛氫笉鑷姩寮�绁� 榛樿涓篘
-	private String redInvoiceLabel;//绾㈠瓧鍙戠エ鍐茬孩鍘熷洜浠g爜 01:寮�绁ㄦ湁璇� 02:閿�璐ч��鍥� 03:鏈嶅姟涓 04:閿�鍞姌璁┿�備簩鎵嬭溅閿�鍞粺涓�鍙戠エ浠呭彲浣跨敤01銆�02
-	private String invoiceSource;//鍙戠エ鏉ユ簮  1:澧炲�肩◣鍙戠エ绠$悊绯荤粺锛� 2锛氱數瀛愬彂绁ㄦ湇鍔″钩鍙帮細
-	private Double originInvoiceTotalPrice;//钃濆瓧鍙戠エ鍚堣閲戦
-	private Double originInvoiceTotalTax;//钃濆瓧鍙戠エ鍚堣绋庨
-	private Double invoiceTotalPrice;//绾㈠瓧鍐查攢閲戦
-	private Double invoiceTotalTax;//绾㈠瓧鍐查攢绋庨
-	private List<RedConfirmDetail> redConfirmDetailReqEntityList;
-	@Data
-	public static class RedConfirmDetail{
-		private Map<String, Object> ext;
-		private Integer originalInvoiceDetailNo; //钃濆瓧鍙戠エ鏄庣粏搴忓彿
-		private Integer goodsLineNo; //琛屽彿
-		private String goodsCode; //绋庢敹鍒嗙被缂栫爜
-		private String goodsName; //鍟嗗搧鍏ㄧО
-		private String goodsSimpleName; //鍟嗗搧鏈嶅姟绠�绉�
-		private String projectName; //椤圭洰鍚嶇О锛堣嚜瀹氫箟鍟嗗搧鍚嶇О锛�
-		private String goodsSpecification; //瑙勬牸鍨嬪彿
-		private String goodsUnit;//鍗曚綅
-		private String goodsPrice;//鍗曚环
-		private String goodsQuantity;//鏁伴噺
-		private Double goodsTaxRate; //绋庣巼
-		private Double goodsTotalPrice; //閲戦
-		private Double goodsTotalTax; //绋庨
-		private String coalType;
-		private String agreementTerm;
-
-
-	}
-
-}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDetailVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDetailVo.java
index 702f73f..8ed8caf 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDetailVo.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDetailVo.java
@@ -17,12 +17,18 @@
 	@Schema(description = "鍚堝悓鍚嶇О")
 	private String contractName;
 
+	@Schema(description = "鍚堝悓鍚嶇О")
+	private String contractNo;
+
 	@Schema(description = "鐢叉柟id")
 	private Long partyAId;
 
 	@Schema(description = "鐢叉柟鍚嶇О")
 	private String partyA;
 
+	@Schema(description = "鐢叉柟绋庡彿")
+	private String partyAOrgCode;
+
 	@Schema(description = "涔欐柟id")
 	private Long partyBId;
 
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractInvoiceOutBoundVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractInvoiceOutBoundVo.java
new file mode 100644
index 0000000..60d039f
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractInvoiceOutBoundVo.java
@@ -0,0 +1,33 @@
+package com.by4cloud.platformx.business.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.persistence.Column;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class ContractInvoiceOutBoundVo {
+
+	private Long id;
+
+	@Schema(description = "鏍囩殑鐗╁悕绉�")
+	private String subjectMatterName;
+
+	@Schema(description = "鏍囩殑鐗╃紪鐮�")
+	private String subjectMatterCode;
+
+	@Schema(description = "鏍囩殑鐗╃紪鐮侊紙鍐呴儴鍞竴鍚嶇О锛�")
+	private String materialInternalName;
+
+	@Schema(description = "鍑哄簱鏁伴噺")
+	@Column(columnDefinition="decimal(10,0) comment '鍑哄簱鏁伴噺'")
+	private BigDecimal outBoundNum;
+
+	@Schema(description = "鍗曚环")
+	private BigDecimal unitPrice;
+
+	@Schema(description = "寮�绁ㄧ姸鎬侊紙0-鏈紑绁� 1-寮�绁ㄤ腑 2-宸插紑绁級")
+	private String invoiceStatus;
+
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractOutBoundMergeVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractOutBoundMergeVo.java
new file mode 100644
index 0000000..db548d9
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractOutBoundMergeVo.java
@@ -0,0 +1,42 @@
+package com.by4cloud.platformx.business.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.persistence.Column;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class ContractOutBoundMergeVo {
+
+	@Schema(description = "绋庢敹鍒嗙被")
+	private String taxClass;
+
+	@Schema(description = "绋庢敹鍒嗙被鎷兼帴")
+	private String itemName;
+
+	private String materialName;
+
+	@Schema(description = "鏍囩殑鐗╃紪鐮侊紙鍐呴儴鍞竴缂栫爜锛�")
+	private String materialCode;
+
+	@Schema(description = "鏍囩殑鐗╃紪鐮侊紙鍐呴儴鍞竴鍚嶇О锛�")
+	private String materialInternalName;
+
+	private String specification;
+
+	@Schema(description = "璁¢噺鍗曚綅")
+	private String unit;
+
+	@Schema(description = "鏁伴噺")
+	private BigDecimal quantity;
+
+	@Schema(description = "鍗曚环")
+	private BigDecimal unitPrice;
+
+	@Schema(description = "绋庣巼锛堢櫨鍒嗘瘮锛屽13琛ㄧず13%锛�")
+	private BigDecimal taxRate;
+
+	@Schema(description = "绋庢敹鍒嗙被缂栫爜")
+	private String taxCode;
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractOutBoundVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractOutBoundVo.java
index 6bf25c0..0c50e09 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractOutBoundVo.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractOutBoundVo.java
@@ -8,7 +8,7 @@
 import java.math.BigDecimal;
 
 @Data
-public class ContractOutBoundVo extends ContractOutBound {
+public class ContractOutBoundVo {
     //浜у搧涓俊鎭�
 
     @Schema(description = "浜у搧id")
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/GenInvoiceInfoVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/GenInvoiceInfoVo.java
new file mode 100644
index 0000000..3db1a7f
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/GenInvoiceInfoVo.java
@@ -0,0 +1,43 @@
+package com.by4cloud.platformx.business.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class GenInvoiceInfoVo {
+
+	@Schema(description = "鐢叉柟鍚嶇О")
+	private String partyA;
+
+	@Schema(description = "鐢叉柟绋庡彿")
+	private String partyAOrgCode;
+
+	@Schema(description = "涔欐柟鍚嶇О")
+	private String partyB;
+
+	@Schema(description = "涔欐柟绋庡彿")
+	private String partyBOrgCode;
+
+	@Schema(description = "鐢叉柟寮�鎴疯")
+	private String partyAOpenBank;
+
+	@Schema(description = "鐢叉柟閾惰璐﹀彿")
+	private String partyABankAccount;
+
+	@Schema(description = "涔欐柟寮�鎴疯")
+	private String partyBOpenBank;
+
+	@Schema(description = "涔欐柟閾惰璐﹀彿")
+	private String partyBBankAccount;
+
+	@Schema(description = "寮�绁ㄩ噾棰濓紙鍚◣锛�")
+	private BigDecimal totalPrice;
+
+	@Schema(description = "澶у啓寮�绁ㄩ噾棰�")
+	private String priceWords;
+
+	private List<InvoiceItemVo> invoiceItemList;
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/InvoiceItemVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/InvoiceItemVo.java
new file mode 100644
index 0000000..4ae4158
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/InvoiceItemVo.java
@@ -0,0 +1,38 @@
+package com.by4cloud.platformx.business.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.persistence.Column;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class InvoiceItemVo {
+
+	private String erpCode;
+
+	private String itemName;
+
+	private String specification;
+
+	@Schema(description = "璁¢噺鍗曚綅")
+	private String unit;
+
+	@Schema(description = "鏁伴噺")
+	private BigDecimal quantity;
+
+	@Schema(description = "鍗曚环")
+	private BigDecimal unitPrice;
+
+	@Schema(description = "閲戦锛堜笉鍚◣锛�")
+	private BigDecimal priceNoTax;
+
+	@Schema(description = "绋庣巼锛堢櫨鍒嗘瘮锛屽13琛ㄧず13%锛�")
+	private BigDecimal taxRate;
+
+	@Schema(description = "绋庨")
+	private BigDecimal priceTax;
+
+	@Schema(description = "绋庢敹鍒嗙被缂栫爜")
+	private String taxCode;
+}
diff --git a/platformx-business-finance-biz/pom.xml b/platformx-business-finance-biz/pom.xml
index 2c6a695..7ad150f 100644
--- a/platformx-business-finance-biz/pom.xml
+++ b/platformx-business-finance-biz/pom.xml
@@ -141,23 +141,6 @@
 			<artifactId>poi-tl</artifactId>
 			<version>1.12.2</version> <!-- 璇蜂娇鐢ㄦ渶鏂扮ǔ瀹氱増 -->
 		</dependency>
-        <dependency>
-            <groupId>org.apache.pdfbox</groupId>
-            <artifactId>pdfbox</artifactId>
-            <version>2.0.24</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.httpcomponents</groupId>
-            <artifactId>httpclient</artifactId>
-            <version>4.5.14</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.httpcomponents</groupId>
-            <artifactId>httpmime</artifactId>
-            <version>4.5.14</version>
-        </dependency>
-
 
 
 	</dependencies>
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BillingInfoController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BillingInfoController.java
deleted file mode 100644
index 2f281fc..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BillingInfoController.java
+++ /dev/null
@@ -1,317 +0,0 @@
-package com.by4cloud.platformx.business.controller;
-
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-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.InvoicingVo;
-import com.by4cloud.platformx.business.invoice.service.BIPYsService;
-import com.by4cloud.platformx.business.entity.invoice.vo.BipResVo;
-import com.by4cloud.platformx.business.invoice.service.FpInvoiceResultService;
-import com.by4cloud.platformx.business.service.*;
-import com.by4cloud.platformx.business.vo.ContractOutBoundVo;
-import com.by4cloud.platformx.business.vo.InvoicePreviewVo;
-import com.by4cloud.platformx.common.core.util.R;
-import com.by4cloud.platformx.common.data.mybatis.BaseModel;
-import com.by4cloud.platformx.common.log.annotation.SysLog;
-import com.by4cloud.platformx.common.security.annotation.Inner;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.persistence.Column;
-import org.springframework.security.access.prepost.PreAuthorize;
-import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
-import io.swagger.v3.oas.annotations.security.SecurityRequirement;
-import org.springdoc.core.annotations.ParameterObject;
-import org.springframework.http.HttpHeaders;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Operation;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 寮�绁ㄤ俊鎭�
- *
- * @author wjli
- * @date 2026-06-04 10:50:20
- */
-@RestController
-@RequiredArgsConstructor
-@RequestMapping("/billingInfo" )
-@Tag(description = "billingInfo" , name = "寮�绁ㄤ俊鎭鐞�" )
-@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
-public class BillingInfoController {
-
-    private final BillingInfoService billingInfoService;
-    private final BillingItemService billingItemService;
-    private final ContractService contractService;
-    private final ContractOutBoundService contractOutBoundService;
-    private final InvoiceService invoiceService;
-    private final BIPYsService bipYsService;
-
-    /**
-     * 閫氳繃id鏌ヨ寮�绁ㄤ俊鎭�
-     * @param id id
-     * @return R
-     */
-    @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
-    @GetMapping("/getById/{id}" )
-    public R getById(@PathVariable("id" ) Long id) {
-        return R.ok(billingInfoService.getById(id));
-    }
-
-    /**
-     * 鎷兼帴鍙戠エ淇℃伅
-     * @param previewVo 鍚堝悓ID鍜屽嚭搴撳崟ID
-     * @return R
-     */
-    @Operation(summary = "鎷兼帴鍙戠エ淇℃伅" , description = "鎷兼帴鍙戠エ淇℃伅" )
-    @SysLog("鎷兼帴鍙戠エ淇℃伅" )
-    @GetMapping("/saveInvoice")
-    @Inner(value = false)
-    public R saveInvoice(@ParameterObject InvoicePreviewVo previewVo) {
-
-        //鍙傛暟鍒ゆ柇
-        if(previewVo.getContractId() == null){
-            return R.failed("鍚堝悓id涓嶈兘涓虹┖");
-        }
-
-        Contract contractTemp = contractService.getById(previewVo.getContractId());
-        if(contractTemp == null){
-            return R.failed("鍚堝悓id閿欒");
-        }
-        BillingInfo billingInfo = billingInfoService.getInviceByContractId(previewVo,contractTemp,1);
-
-        //鎷艰寮�绁ㄩ」鍐呭
-        List<ContractOutBoundVo> contractOutBoundVos = billingInfo.getContractOutBoundList();
-        if(contractOutBoundVos!=null && !contractOutBoundVos.isEmpty()) {
-            for(ContractOutBoundVo vo : contractOutBoundVos){
-
-                BillingItem item = new BillingItem();
-                //寮�绁ㄤ俊鎭痠d
-                item.setBillingInfoId(billingInfo.getId());
-                //鍏宠仈鍚堝悓ID
-                item.setContractId(billingInfo.getContractId());
-                //寮�绁ㄤ骇鍝佸悕绉�
-                item.setInvoiceName(vo.getInvoiceName());
-                //瀹㈠晢ID
-                item.setBusGuestId(vo.getBusGuestId());
-                //浜у搧id
-                item.setProductId(vo.getProductId());
-                //鏍囩殑鐗╄鏍�/鍨嬪彿
-                item.setSpecification(vo.getSpecification());
-                //寮�绁ㄤ骇鍝佹暟閲�
-                item.setProductNum(vo.getOutBoundNum());
-                //鏍囩殑鐗╃紪鐮�
-                item.setSubjectMatterCode(vo.getSubjectMatterCode());
-                //鏍囩殑鐗╁悕绉�
-                item.setSubjectMatterName(vo.getSubjectMatterName());
-                //璁¢噺鍗曚綅锛堜釜/鍙�/鍚�/椤�/濂楃瓑锛�
-                item.setUnit(vo.getUnit());
-                //寮�绁ㄧ姸鎬侊紙0-鏈紑绁� 1-寮�绁ㄤ腑 2-宸插紑绁級
-                item.setBillingStatus(1);
-                //鎬诲崟浠�
-                item.setTotalPrice(vo.getTotalPrice());
-                //鍗曚环
-                item.setUnitPrice(vo.getUnitPrice());
-                //绋庢敹鍒嗙被
-                item.setTaxClass(vo.getTaxClass());
-                //绋庢敹缂栫爜
-                item.setTaxCode(vo.getTaxCode());
-                //鎬荤◣棰�
-                item.setTotalTax(vo.getTotalTax());
-                //绋庣巼锛堢櫨鍒嗘瘮锛屽13琛ㄧず13%锛�
-                item.setTaxRate(vo.getTaxRate());
-                //涓嶅惈绋庢�婚
-                item.setTotalPriceNoTax(vo.getTotalPriceNoTax());
-                //鎵�鍏宠仈鍑哄簱鍗旾D
-                item.setContractOutBoundIds(vo.getContractOutBoundIds());
-                billingItemService.save(item);
-            }
-        }
-
-        //鐢熸垚vo
-        /*InvoicingVo invoicingVo = invoiceService.toGetByCompareByVo1(billingInfo,contractOutBoundVos);
-        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){
-                billingInfo.setBlueResultStatus(1);
-                billingInfoService.updateById(billingInfo);
-                //鎺╞i'p
-                BipResVo bipResVo = bipYsService.sendBIPYss(billingInfo);
-                if (!bipResVo.getCode().equals("200")) {
-                    *//*if (StrUtil.isNotEmpty(errMsg)) {
-                        errMsg.append(",");
-                    }
-                    errMsg.append(saleCredit.getCreditCodeB()+ "搴旀敹鍙戠エ鎺ㄩ�佸け璐�:" + bipResVo.getMessage());*//*
-                    billingInfo.setBipStatus(1);
-                    billingInfoService.updateById(billingInfo);
-
-                    return R.failed("寮�绁ㄦ垚鍔燂紝鎺ㄩ�乥ip澶辫触锛宔rr:" + bipResVo.getMessage());
-                }else{
-                    billingInfo.setBipStatus(200);
-                    billingInfoService.updateById(billingInfo);
-                    return R.ok("寮�绁ㄦ垚鍔�,鎺ㄩ�乥ig鎴愬姛锛�");
-                }
-            }else{
-                billingInfo.setBlueResultStatus(2);
-                billingInfoService.updateById(billingInfo);
-                return R.failed("寮�绁ㄥけ璐ワ紒err锛�" + message);
-            }
-
-        }catch (Exception e){
-            billingInfo.setStatus(3);
-            billingInfoService.updateById(billingInfo);
-            return R.failed("寮�绁ㄥけ璐ワ紒err:" + e.getMessage());
-        }*/
-
-        //鍑哄簱鍗曞凡寮�绁�
-        List<ContractOutBound> contractOutBounds = contractOutBoundService.list(new LambdaQueryWrapper<ContractOutBound>()
-                .eq(ContractOutBound::getSaleCreditId,billingInfo.getId())
-        );
-        for(ContractOutBound contractOutBound : contractOutBounds){
-            contractOutBound.setInvoiceSatus(2);
-        }
-        contractOutBoundService.updateBatchById(contractOutBounds);
-
-        //寮�绁ㄦ垚鍔�
-        //寮�绁ㄨ褰曞崟钃濈エ淇℃伅瀛樺偍
-        billingInfo.setBlueResultStatus(1);
-        billingInfo.setInvoiceRemark("寮�绁ㄦ垚鍔燂紒");
-        billingInfo.setBlueInvoiceTime(DateTime.now());
-        billingInfoService.updateById(billingInfo);
-
-        //鐩稿叧鍚堝悓閲戦鍜屽紑绁ㄧ姸鎬佽繘琛屼慨鏀广��
-        Contract contract = contractService.getById(billingInfo.getContractId());
-        String billingStatus = contract.getBillingStatus();
-
-        if(contract.getBillingAmout()==null){
-            contract.setBillingAmout(billingInfo.getTotalAmount());
-        }else{
-            contract.setBillingAmout(contract.getBillingAmout().add(billingInfo.getTotalAmount()));
-        }
-
-        int res = contract.getAmount().compareTo(contract.getBillingAmout());
-
-        if("2".equals(billingStatus)) {
-            if (res == 0) {
-                contract.setBillingStatus("3");
-            } else if (res > 0) {
-                contract.setBillingStatus("2");
-            } else {
-                return R.failed("宸蹭粯閲戦涓嶈兘澶т簬鎬婚噾棰濓紒");
-            }
-        }
-
-        contractService.updateById(contract);
-        return R.ok("寮�绁ㄦ垚鍔燂紝鎺ㄩ�乥ip鎴愬姛锛�");
-    }
-
-    /**
-     * 鎷兼帴閿�鍞寕璐�
-     * @param billingInfo1 寮�绁ㄤ俊鎭�
-     * @return R
-     */
-    @Operation(summary = "寮�鍙戠エ" , description = "寮�鍙戠エ" )
-    @SysLog("寮�鍙戠エ" )
-    @PostMapping("/toRedStamp")
-    @PreAuthorize("@pms.hasPermission('business_saleCredit_edit')" )
-    public R toRedStamp(@RequestBody BillingInfo billingInfo1) {
-        if(billingInfo1.getId()==null){
-            return R.failed("寮�绁ㄤ俊鎭痠d涓嶈兘涓虹┖锛�");
-        }
-        BillingInfo billingInfo = billingInfoService.getById(billingInfo1.getId());
-        if(billingInfo==null){
-            return R.failed("寮�绁ㄤ俊鎭痠d涓嶈兘閿欒锛�");
-        }
-
-       /* try {
-            Map<String, Object> map = invoiceService.toRedTicket1(billingInfo);
-            Boolean success = (Boolean) map.get("success");
-            if(success){
-                return R.ok("绾㈠瓧寮�绁ㄦ垚鍔�");
-            }else {
-                return R.failed((String) map.get("message"));
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-            return R.failed("绾㈠瓧寮�绁ㄥけ璐�");
-        }*/
-
-
-        //鍑哄簱鍗曟仮澶嶅埌鏈紑绁ㄧ姸鎬�
-        List<ContractOutBound> outBoundList = contractOutBoundService.list(new LambdaQueryWrapper<ContractOutBound>()
-                .eq(ContractOutBound::getSaleCreditId,billingInfo.getId())
-        );
-        for(ContractOutBound outBound : outBoundList){
-            outBound.setInvoiceSatus(0);
-            outBound.setSaleCreditId(0l);
-        }
-        contractOutBoundService.updateBatchById(outBoundList);
-
-        billingInfo.setRedInvoiceTime(DateTime.now());
-        billingInfo.setRedResultStatus(1);
-        billingInfo.setInvoiceRemark("寮�绾㈢エ鎴愬姛锛�");
-        billingInfoService.updateById(billingInfo);
-
-        //鍚堝悓宸插紑绁ㄩ噾棰濆拰鐘舵�佽繕鍘�
-        Contract contract = contractService.getById(billingInfo.getContractId());
-        String billingStatus = contract.getBillingStatus();
-        BigDecimal bill = contract.getBillingAmout() == null ? BigDecimal.ZERO : contract.getBillingAmout();
-        BigDecimal credit = billingInfo.getTotalAmount() == null ? BigDecimal.ZERO : billingInfo.getTotalAmount();
-        BigDecimal diff = bill.subtract(credit);
-        int res = diff.compareTo(BigDecimal.ZERO);
-
-        if("3".equals(billingStatus)){
-            if(res>=0){
-                contract.setBillingStatus("2");
-                contract.setBillingAmout(BigDecimal.ZERO);
-            }else{
-                return R.failed("宸插紑绁ㄩ噾棰濊礋鏁版姤閿欙紒");
-            }
-        }
-        contractService.updateById(contract);
-        return R.ok("绾㈠啿寮�绁ㄦ垚鍔燂紒");
-    }
-
-
-    /**
-     * 鎷兼帴鍙戠エ淇℃伅
-     * @param previewVo 鍚堝悓ID鍜屽嚭搴撳崟ID
-     * @return R
-     */
-    @Operation(summary = "鎷兼帴鍙戠エ淇℃伅" , description = "鎷兼帴鍙戠エ淇℃伅" )
-    @SysLog("鎷兼帴鍙戠エ淇℃伅" )
-    @GetMapping("/generatorInvoice")
-    @Inner(value = false)
-    public R generatorInvoice(@ParameterObject InvoicePreviewVo previewVo) {
-
-        //鍙傛暟鍒ゆ柇
-        if(previewVo.getContractId() == null){
-            return R.failed("鍚堝悓id涓嶈兘涓虹┖");
-        }
-
-        Contract contract = contractService.getById(previewVo.getContractId());
-        if(contract == null){
-            return R.failed("鍚堝悓id閿欒");
-        }
-
-        BillingInfo billingInfo = billingInfoService.getInviceByContractId(previewVo,contract,0);
-
-        return R.ok(billingInfo);
-    }
-
-}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BillingItemController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BillingItemController.java
deleted file mode 100644
index 2bb0339..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BillingItemController.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package com.by4cloud.platformx.business.controller;
-
-import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.collection.CollUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.by4cloud.platformx.common.core.util.R;
-import com.by4cloud.platformx.common.log.annotation.SysLog;
-import com.by4cloud.platformx.business.entity.BillingItem;
-import com.by4cloud.platformx.business.service.BillingItemService;
-import org.springframework.security.access.prepost.PreAuthorize;
-import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
-import io.swagger.v3.oas.annotations.security.SecurityRequirement;
-import org.springdoc.core.annotations.ParameterObject;
-import org.springframework.http.HttpHeaders;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Operation;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * 寮�绁ㄤ骇鍝佷俊鎭�
- *
- * @author wjli
- * @date 2026-06-04 16:29:33
- */
-@RestController
-@RequiredArgsConstructor
-@RequestMapping("/billingItem" )
-@Tag(description = "billingItem" , name = "寮�绁ㄤ骇鍝佷俊鎭鐞�" )
-@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
-public class BillingItemController {
-
-    private final  BillingItemService billingItemService;
-
-    /**
-     * 鍒嗛〉鏌ヨ
-     * @param page 鍒嗛〉瀵硅薄
-     * @param billingItem 寮�绁ㄤ骇鍝佷俊鎭�
-     * @return
-     */
-    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
-    @GetMapping("/page" )
-    @PreAuthorize("@pms.hasPermission('business_billingItem_view')" )
-    public R getBillingItemPage(@ParameterObject Page page, @ParameterObject BillingItem billingItem) {
-        LambdaQueryWrapper<BillingItem> wrapper = Wrappers.lambdaQuery();
-        return R.ok(billingItemService.page(page, wrapper));
-    }
-
-
-    /**
-     * 閫氳繃id鏌ヨ寮�绁ㄤ骇鍝佷俊鎭�
-     * @param id id
-     * @return R
-     */
-    @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
-    @GetMapping("/{id}" )
-    @PreAuthorize("@pms.hasPermission('business_billingItem_view')" )
-    public R getById(@PathVariable("id" ) Long id) {
-        return R.ok(billingItemService.getById(id));
-    }
-
-    /**
-     * 鏂板寮�绁ㄤ骇鍝佷俊鎭�
-     * @param billingItem 寮�绁ㄤ骇鍝佷俊鎭�
-     * @return R
-     */
-    @Operation(summary = "鏂板寮�绁ㄤ骇鍝佷俊鎭�" , description = "鏂板寮�绁ㄤ骇鍝佷俊鎭�" )
-    @SysLog("鏂板寮�绁ㄤ骇鍝佷俊鎭�" )
-    @PostMapping
-    @PreAuthorize("@pms.hasPermission('business_billingItem_add')" )
-    public R save(@RequestBody BillingItem billingItem) {
-        return R.ok(billingItemService.save(billingItem));
-    }
-
-    /**
-     * 淇敼寮�绁ㄤ骇鍝佷俊鎭�
-     * @param billingItem 寮�绁ㄤ骇鍝佷俊鎭�
-     * @return R
-     */
-    @Operation(summary = "淇敼寮�绁ㄤ骇鍝佷俊鎭�" , description = "淇敼寮�绁ㄤ骇鍝佷俊鎭�" )
-    @SysLog("淇敼寮�绁ㄤ骇鍝佷俊鎭�" )
-    @PutMapping
-    @PreAuthorize("@pms.hasPermission('business_billingItem_edit')" )
-    public R updateById(@RequestBody BillingItem billingItem) {
-        return R.ok(billingItemService.updateById(billingItem));
-    }
-
-    /**
-     * 閫氳繃id鍒犻櫎寮�绁ㄤ骇鍝佷俊鎭�
-     * @param ids id鍒楄〃
-     * @return R
-     */
-    @Operation(summary = "閫氳繃id鍒犻櫎寮�绁ㄤ骇鍝佷俊鎭�" , description = "閫氳繃id鍒犻櫎寮�绁ㄤ骇鍝佷俊鎭�" )
-    @SysLog("閫氳繃id鍒犻櫎寮�绁ㄤ骇鍝佷俊鎭�" )
-    @DeleteMapping
-    @PreAuthorize("@pms.hasPermission('business_billingItem_del')" )
-    public R removeById(@RequestBody Long[] ids) {
-        return R.ok(billingItemService.removeBatchByIds(CollUtil.toList(ids)));
-    }
-
-
-    /**
-     * 瀵煎嚭excel 琛ㄦ牸
-     * @param billingItem 鏌ヨ鏉′欢
-   	 * @param ids 瀵煎嚭鎸囧畾ID
-     * @return excel 鏂囦欢娴�
-     */
-    @ResponseExcel
-    @GetMapping("/export")
-    @PreAuthorize("@pms.hasPermission('business_billingItem_export')" )
-    public List<BillingItem> export(BillingItem billingItem,Long[] ids) {
-        return billingItemService.list(Wrappers.lambdaQuery(billingItem).in(ArrayUtil.isNotEmpty(ids), BillingItem::getId, ids));
-    }
-}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BusinessCustomerController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BusinessCustomerController.java
index fb95221..c79e738 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BusinessCustomerController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BusinessCustomerController.java
@@ -52,7 +52,8 @@
         wrapper.eq(businessCustomer.getIndustryId()!=null,BusinessCustomer::getIndustryId,businessCustomer.getIndustryId());
         wrapper.eq(businessCustomer.getAreaId()!=null,BusinessCustomer::getAreaId,businessCustomer.getAreaId());
         wrapper.like(StrUtil.isNotEmpty(businessCustomer.getCompanyName()),BusinessCustomer::getCompanyName,businessCustomer.getCompanyName());
-        return R.ok(businessCustomerService.page(page, wrapper));
+		wrapper.orderByDesc(BusinessCustomer::getCreateTime);
+        return R.ok(businessCustomerService.pageByScope(page, wrapper));
     }
 
     /**
@@ -66,7 +67,7 @@
     public R getBusinessCustomerList(@ParameterObject BusinessCustomer businessCustomer) {
         LambdaQueryWrapper<BusinessCustomer> wrapper = Wrappers.lambdaQuery();
         wrapper.like(StrUtil.isNotEmpty(businessCustomer.getCompanyName()),BusinessCustomer::getCompanyName,businessCustomer.getCompanyName());
-        return R.ok(businessCustomerService.list(wrapper));
+        return R.ok(businessCustomerService.listByScope(wrapper));
     }
 
     /**
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractBillingController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractBillingController.java
deleted file mode 100644
index 54ea8d5..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractBillingController.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.by4cloud.platformx.business.controller;
-
-/**
- * 鍚堝悓绠$悊
- *
- * @author syt
- * @date 2026-04-29 16:46:26
- */
-
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.by4cloud.platformx.business.entity.Contract;
-import com.by4cloud.platformx.business.service.ContractService;
-import com.by4cloud.platformx.common.core.util.R;
-import com.by4cloud.platformx.common.data.mybatis.BaseModel;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.security.SecurityRequirement;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import org.apache.commons.lang3.StringUtils;
-import org.springdoc.core.annotations.ParameterObject;
-import org.springframework.http.HttpHeaders;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-@RequiredArgsConstructor
-@RequestMapping("/contractBilling" )
-@Tag(description = "contractBilling" , name = "鍚堝悓寮�绁ㄧ鐞�" )
-@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
-public class ContractBillingController {
-
-	private final ContractService contractService;
-
-	/**
-	 * 鍒嗛〉鏌ヨ
-	 * @param page 鍒嗛〉瀵硅薄
-	 * @param contract 鍚堝悓绠$悊
-	 * @return
-	 */
-	@Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
-	@GetMapping("/page" )
-	public R getContractPage(@ParameterObject Page page, @ParameterObject Contract contract) {
-		LambdaQueryWrapper<Contract> wrapper = Wrappers.lambdaQuery();
-		wrapper.like(StringUtils.isNotBlank(contract.getContractName()),Contract::getContractName,contract.getContractName());
-		wrapper.like(StringUtils.isNotBlank(contract.getPartyA()),Contract::getPartyA,contract.getPartyA());
-		wrapper.eq(Contract::getBillingStatus,contract.getBillingStatus());
-		if (StrUtil.equals(contract.getBillingStatus(),"1")){
-			wrapper.orderByDesc(BaseModel::getCreateTime);
-		}else {
-			wrapper.orderByAsc(BaseModel::getCreateTime);
-		}
-
-		return R.ok(contractService.pageByScope(page, wrapper));
-	}
-
-}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractController.java
index ef61fb2..ee1cd03 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractController.java
@@ -195,4 +195,37 @@
 	public void exportContractYMJJGCLWord(@PathVariable("id" ) Long id, HttpServletResponse response) {
 		contractService.exportContractYMJJGCLWord(id,response);
 	}
+
+	/**
+	 * 鏍规嵁妯$増鐢熸垚word涓�鐓ゆ満宸ヤ笟鍝佷拱鍗栧悎鍚�
+	 * @param id id
+	 * @return R
+	 */
+	@Operation(summary = "鏍规嵁妯$増鐢熸垚word鍚堝悓" , description = "鏍规嵁妯$増鐢熸垚word鍚堝悓" )
+	@GetMapping("/exportContractYMJGYPMMWord/{id}" )
+	public void exportContractYMJGYPMMWord(@PathVariable("id" ) Long id, HttpServletResponse response) {
+		contractService.exportContractYMJGYPMMWord(id,response);
+	}
+
+	/**
+	 * 鏍规嵁妯$増鐢熸垚word涓�鐓ゆ満宸ョ熆浜у搧涔板崠鍚堝悓
+	 * @param id id
+	 * @return R
+	 */
+	@Operation(summary = "鏍规嵁妯$増鐢熸垚word鍚堝悓" , description = "鏍规嵁妯$増鐢熸垚word鍚堝悓" )
+	@GetMapping("/exportContractYMJGKCPMMWord/{id}" )
+	public void exportContractYMJGKCPMMWord(@PathVariable("id" ) Long id, HttpServletResponse response) {
+		contractService.exportContractYMJGKCPMMWord(id,response);
+	}
+
+	/**
+	 * 鏍规嵁妯$増鐢熸垚word涓�鐓ゆ満閲囪喘鍚堝悓
+	 * @param id id
+	 * @return R
+	 */
+	@Operation(summary = "鏍规嵁妯$増鐢熸垚word鍚堝悓" , description = "鏍规嵁妯$増鐢熸垚word鍚堝悓" )
+	@GetMapping("/exportContractYMJCGWord/{id}" )
+	public void exportContractYMJCGWord(@PathVariable("id" ) Long id, HttpServletResponse response) {
+		contractService.exportContractYMJCGWord(id,response);
+	}
 }
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractInvoiceController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractInvoiceController.java
new file mode 100644
index 0000000..8f9f36c
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractInvoiceController.java
@@ -0,0 +1,126 @@
+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.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.by4cloud.platformx.business.dto.GenInvoiceInfoDTO;
+import com.by4cloud.platformx.business.entity.Contract;
+import com.by4cloud.platformx.business.service.ContractInvoiceService;
+import com.by4cloud.platformx.business.service.ContractService;
+import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.common.data.mybatis.BaseModel;
+import com.by4cloud.platformx.common.security.annotation.Inner;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springdoc.core.annotations.ParameterObject;
+import org.springframework.http.HttpHeaders;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 鍚堝悓寮�绁�
+ *
+ * @author syt
+ * @date 2026骞�6鏈�5鏃� 08:13:55
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/contractInvoice" )
+@Tag(description = "contract" , name = "鍚堝悓寮�绁�" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class ContractInvoiceController {
+
+	private final ContractService contractService;
+	private final ContractInvoiceService contractInvoiceService;
+
+	/**
+	 * 鍒嗛〉鏌ヨ
+	 * @param page 鍒嗛〉瀵硅薄
+	 * @param contract 鍚堝悓绠$悊
+	 * @return
+	 */
+	@Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+	@GetMapping("/page" )
+	public R getContractPage(@ParameterObject Page page, @ParameterObject Contract contract) {
+		LambdaQueryWrapper<Contract> wrapper = Wrappers.lambdaQuery();
+		wrapper.like(StringUtils.isNotBlank(contract.getContractName()),Contract::getContractName,contract.getContractName());
+		wrapper.like(StringUtils.isNotBlank(contract.getPartyA()),Contract::getPartyA,contract.getPartyA());
+		wrapper.eq(Contract::getBillingStatus,contract.getBillingStatus());
+		if (StrUtil.equals(contract.getBillingStatus(),"1")){
+			wrapper.orderByDesc(BaseModel::getCreateTime);
+		}else {
+			wrapper.orderByAsc(BaseModel::getCreateTime);
+		}
+
+		return R.ok(contractService.pageByScope(page, wrapper));
+	}
+
+	/**
+	 * 鑾峰彇鍚堝悓鍑哄簱淇℃伅
+	 * @return
+	 */
+	@GetMapping("/getContractOutBound/{contractId}" )
+	public R getContractOutBound(@PathVariable("contractId")Long contractId) {
+		return contractInvoiceService.getContractOutBound(contractId);
+	}
+
+	/**
+	 * 鐢熸垚寮�绁ㄩ瑙堜俊鎭�
+	 * @return
+	 */
+	@PostMapping("/genInvoiceInfo" )
+	public R genInvoiceInfo(@RequestBody GenInvoiceInfoDTO genInvoiceInfoDTO) {
+		return contractInvoiceService.genInvoiceInfo(genInvoiceInfoDTO);
+	}
+
+	/**
+	 * 寮�钃濈エ
+	 * @return
+	 */
+	@PostMapping("/toInvoice" )
+	public R toInvoice(@RequestBody GenInvoiceInfoDTO genInvoiceInfoDTO) {
+		return contractInvoiceService.toInvoice(genInvoiceInfoDTO);
+	}
+
+	/**
+	 * 鑾峰彇宸插紑鍙戠エ
+	 * @return
+	 */
+	@GetMapping("/getContractInvoiceList/{contractId}" )
+	public R getContractInvoiceList(@PathVariable("contractId")Long contractId) {
+		return contractInvoiceService.getContractInvoiceList(contractId);
+	}
+
+	/**
+	 * 钃濈エ鏌ヨ
+	 * @return
+	 */
+	@Inner(value = false)
+	@GetMapping("/queryBlueInvoice")
+	public R queryBlueInvoice() {
+		return contractInvoiceService.queryBlueInvoice();
+	}
+
+	/**
+	 * 寮�绾㈢エ
+	 * @return
+	 */
+	@GetMapping("/toRedInvoice/{invoiceId}")
+	public R toRedInvoice(@PathVariable("invoiceId")Long invoiceId) {
+		return contractInvoiceService.toRedInvoice(invoiceId);
+	}
+
+	/**
+	 * 绾㈢エ鏌ヨ
+	 * @return
+	 */
+	@Inner(value = false)
+	@GetMapping("/queryRedInvoice")
+	public R queryRedInvoice() {
+		return contractInvoiceService.queryRedInvoice();
+	}
+}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/FlowCallBackController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/FlowCallBackController.java
index a4dbc79..98d59a5 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/FlowCallBackController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/FlowCallBackController.java
@@ -1,6 +1,7 @@
 package com.by4cloud.platformx.business.controller;
 
 import com.by4cloud.platformx.business.constant.FlowNameEnum;
+import com.by4cloud.platformx.business.service.ContractInvoiceService;
 import com.by4cloud.platformx.business.service.ContractService;
 import com.by4cloud.platformx.flow.task.constant.TaskStatusEnum;
 import com.by4cloud.platformx.flow.task.dto.ProcessInstanceParamDto;
@@ -26,6 +27,7 @@
 public class FlowCallBackController {
 
 	private final ContractService contractService;
+	private final ContractInvoiceService contractInvoiceService;
 
 	/**
      * 寮�濮嬭妭鐐逛簨浠�
@@ -35,6 +37,9 @@
     @PostMapping("/startNodeEvent")
     public void startNodeEvent(@RequestBody ProcessNodeRecordParamDto recordParamDto){
 		if (recordParamDto.getFlowName().equals(FlowNameEnum.鍚堝悓瀹℃壒.getName())) {
+
+		}
+		if (recordParamDto.getFlowName().equals(FlowNameEnum.閿�鍞寕璐﹀鎵�.getName())) {
 
 		}
     }
@@ -55,6 +60,16 @@
 				contractService.refuseApproval(Long.valueOf(processInstanceParamDto.getParamMap().get("id")+""));
 			}
         }
+		if (processInstanceParamDto.getFlowName().equals(FlowNameEnum.閿�鍞寕璐﹀鎵�.getName())) {
+			//閫氳繃鍚庢洿鏂颁富琛ㄧ姸鎬�
+			if (processInstanceParamDto.getTaskStatus()== TaskStatusEnum.YJS.getCode()){
+				contractInvoiceService.takeEffect(Long.valueOf(processInstanceParamDto.getParamMap().get("id")+""));
+			}
+			//鎷掔粷鍚庡洖閫�涓昏〃鐘舵��
+			if (processInstanceParamDto.getTaskStatus()== TaskStatusEnum.JJ.getCode()){
+				contractInvoiceService.refuseApproval(Long.valueOf(processInstanceParamDto.getParamMap().get("id")+""));
+			}
+		}
     }
 
 }
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
deleted file mode 100644
index 90f3dfd..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/InvoiceResultController.java
+++ /dev/null
@@ -1,375 +0,0 @@
-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.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;
-import com.by4cloud.platformx.business.service.SaleCreditService;
-import com.by4cloud.platformx.common.core.util.R;
-import com.by4cloud.platformx.common.log.annotation.SysLog;
-import com.google.gson.Gson;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 閿�鍞寕璐�
- *
- * @author wjli
- * @date 2026-05-21 16:16:31
- */
-@RestController
-@RequiredArgsConstructor
-@RequestMapping("/invoiceResult" )
-@Tag(description = "invoice" , name = "寮�绁ㄧ鐞�" )
-public class InvoiceResultController {
-    //鍙戠エ缁撴灉
-    private final FpInvoiceResultItemService invoiceResultItemService;
-    private final InvoiceService invoiceService;
-    private final SaleCreditService saleCreditService;
-    private final ContractOutBoundService contractOutBoundService;
-    private final BIPYsService bipYsService;
-
-    @Operation(summary = "鎺ㄩ�佸簲浠樿摑绁�" , description = "鎺ㄩ�佸簲浠樿摑绁�" )
-    @GetMapping("/pushYfBlue" )
-    public R pushYfBlue(@RequestBody SaleCredit saleCredit1) {
-        SaleCredit byId = saleCreditService.getById(saleCredit1.getId());
-        if(byId.getBipStatus()==null ||!byId.getBipStatus().equals("200")){
-            return R.failed("璇峰厛鎺ㄩ�佸崟鎹悗鍐嶆帹閫佸彂绁�");
-        }
-        if(byId.getBlueInvoiceResultId()==null){
-            return R.failed("鍙戠エ鏈紑鍏�");
-        }
-        boolean b = invoiceService.pushBlue(saleCredit1.getId(), 1);
-        if(b){
-            return R.ok(null,"鎺ㄩ�佹垚鍔�");
-        }else {
-            return R.failed(null,"鎺ㄩ�佸け璐�");
-        }
-    }
-    @Operation(summary = "鎺ㄩ�佸簲鏀惰摑绁�" , description = "鎺ㄩ�佸簲鏀惰摑绁�" )
-    @GetMapping("/pushYsBlue" )
-    public R pushYsBlue(@RequestBody SaleCredit saleCredit1) {
-        SaleCredit byId = saleCreditService.getById(saleCredit1.getId());
-        if(byId.getBipStatus()==null || !byId.getBipStatus().equals("200")){
-            return R.failed("璇峰厛鎺ㄩ�佸崟鎹悗鍐嶆帹閫佸彂绁�");
-        }
-        if(byId.getBlueInvoiceResultId()==null){
-            return R.failed("鍙戠エ鏈紑鍏�");
-        }
-        boolean b = invoiceService.pushBlue(saleCredit1.getId(),0);
-        if(b){
-            return R.ok(null,"鎺ㄩ�佹垚鍔�");
-        }else {
-            return R.failed(null,"鎺ㄩ�佸け璐�");
-        }
-    }
-
-
-    /**
-     * 鍘诲紑钃濈エ
-     * @param saleCredit1 鍘诲紑钃濈エ
-     * @return R
-     */
-    @Operation(summary = "鍘诲紑钃濈エ" , description = "鍘诲紑钃濈エ" )
-    @SysLog("鍘诲紑钃濈エ" )
-    @PostMapping("/toBluePiao")
-    @PreAuthorize("@pms.hasPermission('business_saleCredit_add')" )
-    public R toBluePiao(@RequestBody SaleCredit saleCredit1) {
-        if(saleCredit1.getId()==null){
-            return R.failed("閿�鍞寕璐d涓嶈兘涓虹┖锛�");
-        }
-        SaleCredit saleCredit = saleCreditService.getById(saleCredit1.getId());
-        List<ContractOutBound> contractOutBoundList = contractOutBoundService.list(new LambdaQueryWrapper<ContractOutBound>()
-                .eq(ContractOutBound::getSaleCreditId,saleCredit.getId())
-        );
-
-        //鐢熸垚vo
-        InvoicingVo invoicingVo = invoiceService.toGetByCompare(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("寮�绁ㄥけ璐ワ紒");
-        }
-    }
-
-    @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)
-                .orderByDesc(InvoiceResult::getCreateTime);
-        List<InvoiceResult> list = invoiceService.list(invoiceResultQueryWrapper);
-        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) {
-                    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("鏈煡璇㈠埌寮�绁ㄨ褰�");
-        }
-    }
-
-    /**
-     * 鍘诲紑绾㈢エ
-     * @param saleCredit1 鍘诲紑绾㈢エ
-     * @return R
-     */
-    @Operation(summary = "鍘诲紑绾㈢エ" , description = "鍘诲紑绾㈢エ" )
-    @SysLog("鍘诲紑绾㈢エ" )
-    @PostMapping("/toRedPiao")
-    @PreAuthorize("@pms.hasPermission('business_saleCredit_add')" )
-    public R toRedPiao(@RequestBody SaleCredit saleCredit1){
-        if(saleCredit1.getId()==null){
-            return R.failed("閿�鍞寕璐d涓嶈兘涓虹┖锛�");
-        }
-        SaleCredit saleCredit = saleCreditService.getById(saleCredit1.getId());
-        try {
-            Map<String, Object> map = invoiceService.toRedTicket(saleCredit);
-            Boolean success = (Boolean) map.get("success");
-            if(success){
-                return R.ok("绾㈠瓧寮�绁ㄦ垚鍔�");
-            }else {
-                return R.failed((String) map.get("message"));
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-            return R.failed("绾㈠瓧寮�绁ㄥけ璐�");
-        }
-    }
-
-    @Operation(summary = "绾㈢エ鏌ョ湅" , description = "绾㈢エ鏌ョ湅" )
-    @GetMapping("/downRedInvoice" )
-    public R downRedInvoice(String code) {
-        QueryWrapper<InvoiceResult> invoiceResultQueryWrapper = new QueryWrapper<>();
-        invoiceResultQueryWrapper.lambda()
-                .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){
-            Map<String, Object> objectMap = null;
-            Boolean success = null;
-            String message = null;
-            InvoiceResult result = list.get(0);
-            if(result.getConfirmBillingMark().equals("Y")){
-                objectMap = invoiceService.downInvoiceMethod(result);
-                success = (Boolean) objectMap.get("success");
-                message = (String) objectMap.get("message");
-            }else {
-                QueryWrapper<InvoiceResult> invoiceResultQueryWrapper1 = new QueryWrapper<>();
-                invoiceResultQueryWrapper1.lambda()
-                        .eq(InvoiceResult::getEntrustCode,code)
-                        .eq(InvoiceResult::getMethodName,"绾㈠瓧寮�绁ㄦ帴鍙�")
-                        .eq(InvoiceResult::getSuccess,1)
-                        .orderByDesc(InvoiceResult::getCreateTime);
-                List<InvoiceResult> list1 = invoiceService.list(invoiceResultQueryWrapper1);
-                InvoiceResult result1 = list1.get(0);
-                objectMap = invoiceService.downInvoiceMethod(result1);
-                success = (Boolean) objectMap.get("success");
-                message = (String) objectMap.get("message");
-            }
-            if(success){
-                return R.ok(objectMap);
-            }else {
-                return R.failed(message);
-            }
-        }else {
-            return R.failed("鏈煡璇㈠埌寮�绁ㄨ褰�");
-        }
-    }
-
-    @Operation(summary = "绾㈠啿纭鍗�" , description = "绾㈠啿纭鍗�" )
-    @PostMapping("/redConfirm" )
-    public R redConfirm(@RequestBody InvoicingVo vo) {
-
-        SaleCredit saleCredit = saleCreditService.getOne(new LambdaQueryWrapper<SaleCredit>()
-                .eq(SaleCredit::getEntrustCode,vo.getEntrustCode())
-                .last("limit 1")
-        );
-        if(saleCredit==null){
-            return R.failed("鏈壘鍒板搴旂粨绠楀崟");
-        }
-
-        try {
-            Map<String, Object> objectMap = invoiceService.toRedTicket(saleCredit);
-            Boolean success = (Boolean) objectMap.get("success");
-            String message = (String) objectMap.get("message");
-            if(success){
-                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,"寮�绁ㄥけ璐ワ紝err:" + message);
-            }
-
-        }catch (Exception e){
-            e.printStackTrace();
-            return R.failed("寮�绾㈢エ澶辫触");
-        }
-    }
-
-    //鍙戠孩鍐蹭箣鍓嶏紝鍏堣繘琛岀孩绁ㄧ‘璁ゃ��
-    @Operation(summary = "绾㈠啿鍙戠エform" , description = "绾㈠啿鍙戠エform" )
-    @GetMapping("/issueRed" )
-    public R issueRed(@RequestBody SaleCredit saleCredit1) {
-        SaleCredit saleCredit = saleCreditService.getById(saleCredit1.getId());
-        InvoiceResult blueResult = null;
-        InvoiceResult redResult = null;
-        if(saleCredit.getBlueInvoiceResultId()==null){
-            return R.failed("璇峰厛寮�鍏疯摑瀛楀彂绁�");
-        }
-        blueResult = invoiceService.getById(saleCredit.getRedInvoiceResultId());
-
-        InvoicingVo invoicingVo = new InvoicingVo();
-
-        QueryWrapper<InvoiceResultItem> itemQueryWrapper  = new QueryWrapper<>();
-        itemQueryWrapper.lambda()
-                .eq(InvoiceResultItem::getResultId,blueResult.getId());
-        List<InvoiceResultItem> resultItems = invoiceResultItemService.list(itemQueryWrapper);
-
-        if(saleCredit!=null) {
-
-            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.setEntrustCode(saleCredit.getEntrustCode());
-            InvoicingVo.InvoicingVoInfo invoicingVoInfo = new InvoicingVo.InvoicingVoInfo();
-            invoicingVoInfo.setInvoiceTypeCode("01");
-            invoicingVoInfo.setInvoiceType("1");
-            invoicingVoInfo.setSerialNo("MX_REDPP_" + System.currentTimeMillis());
-//			invoicingVoInfo.setRedInfoNo(redResult.getInvoiceNo());
-//			invoicingVoInfo.setRedIssueReason("1");
-//			invoicingVoInfo.setRedConfirmUuid(redResult.getRedConfirmUuid());
-            invoicingVoInfo.setDrawer(saleCredit.getContactPhoneB());
-			/*Map<String, Object> ext1 = new HashMap<>();
-			ContractOrder order = contractOrderService.getOrderByNum(railwayEntrust.getOrderNumber());
-			if(order!=null){
-				ext1.put("htbh",order.getContractNum());
-				invoicingVoInfo.setExt(ext1);
-			}*/
-            invoicingVoInfo.setSystemName("**閿�鍞鐞嗕俊鎭郴缁�");
-
-            List<InvoicingVo.InvoiceDetail> details = new ArrayList<>();
-            for (int i = 0; i < resultItems.size(); i++) {
-                InvoiceResultItem resultItem = resultItems.get(i);
-                Map<String,Object> ext = new HashMap<>();
-                ext.put("coalType",resultItem.getCoalType());
-                InvoicingVo.InvoiceDetail invoiceDetail = new InvoicingVo.InvoiceDetail();
-                invoiceDetail.setGoodsLineNo(resultItem.getGoodsLineNo());
-                invoiceDetail.setOriginalInvoiceDetailNo(resultItem.getGoodsLineNo()+"");
-                invoiceDetail.setGoodsTaxRate(resultItem.getGoodsTaxRate());
-                invoiceDetail.setGoodsUnit(resultItem.getGoodsUnit());
-                invoiceDetail.setGoodsName(resultItem.getCoalName());
-                invoiceDetail.setGoodsType(resultItem.getGoodsType());
-                invoiceDetail.setGoodsCode(resultItem.getGoodsCode());
-                invoiceDetail.setGoodsSpecification(resultItem.getGoodsSpecification());
-                invoiceDetail.setExt(ext);
-                invoiceDetail.setGoodsQuantity(new BigDecimal(resultItem.getGoodsQuantity()*-1).setScale(3,BigDecimal.ROUND_HALF_UP));
-                invoiceDetail.setGoodsPrice(new BigDecimal(resultItem.getGoodsPrice()).setScale(8,BigDecimal.ROUND_HALF_UP));
-                invoiceDetail.setGoodsTotalPrice(new BigDecimal(resultItem.getGoodsTotalPrice()*-1).setScale(2,BigDecimal.ROUND_HALF_UP));
-                invoiceDetail.setGoodsTotalTax(new BigDecimal(resultItem.getGoodsTotalTax()*-1).setScale(2,BigDecimal.ROUND_HALF_UP));
-                details.add(invoiceDetail);
-            }
-
-            invoicingVoInfo.setBuyerTaxNo(saleCredit.getCreditCodeA());
-            invoicingVoInfo.setBuyerName(saleCredit.getPartyA());
-            invoicingVoInfo.setInvoiceTotalPrice(new BigDecimal(blueResult.getInvoiceTotalPrice()*-1).setScale(2,BigDecimal.ROUND_HALF_UP));
-            invoicingVoInfo.setInvoiceTotalTax(new BigDecimal(blueResult.getInvoiceTotalTax()*-1).setScale(2,BigDecimal.ROUND_HALF_UP));
-            invoicingVoInfo.setInvoiceTotalPriceTax(new BigDecimal(blueResult.getInvoiceTotalPriceTax()*-1).setScale(2,BigDecimal.ROUND_HALF_UP));
-            invoicingVoInfo.setBuyerBankName(saleCredit.getBankNameA());
-            invoicingVoInfo.setBuyerBankNumber(saleCredit.getBankAccountA());
-            //invoicingVoInfo.setBuyerAddress(invoiceCustomer.getBuyerAddress());
-            invoicingVoInfo.setBuyerTelphone(saleCredit.getContactPhoneA());
-            invoicingVoInfo.setInvoiceDetailsList(details);
-            invoicingVo.setData(invoicingVoInfo);
-            Gson gson =new Gson();
-            String vostr = gson.toJson(invoicingVo);
-            System.out.println(vostr);
-            return R.ok(invoicingVo);
-        }else {
-            return R.failed("鏆傛湭鏌ヨ鍒伴攢鏂瑰紑绁ㄤ俊鎭�");
-        }
-    }
-}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductController.java
index acd3c71..d6c38af 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductController.java
@@ -54,7 +54,8 @@
         wrapper.like(StrUtil.isNotEmpty(product.getProductName()),Product::getProductName,product.getProductName());
         wrapper.like(StrUtil.isNotEmpty(product.getMainCode()),Product::getMainCode,product.getMainCode());
         wrapper.like(StrUtil.isNotEmpty(product.getErpCode()),Product::getErpCode,product.getErpCode());
-        Page<Product> page1 = productService.page(page, wrapper);
+		wrapper.orderByDesc(Product::getCreateTime);
+        Page<Product> page1 = productService.pageByScope(page, wrapper);
         List<Product> list = page1.getRecords();
         for(Product product1 : list){
             Product  parent = productService.getById(product1.getParentId());
@@ -81,7 +82,7 @@
         LambdaQueryWrapper<Product> wrapper = Wrappers.lambdaQuery();
 		wrapper.like(StrUtil.isNotEmpty(product.getProductName()),Product::getProductName,product.getProductName());
 		wrapper.last("limit 20");
-        return R.ok(productService.list(wrapper));
+        return R.ok(productService.listByScope(wrapper));
     }
 
     /**
@@ -98,7 +99,7 @@
         wrapper.like(StrUtil.isNotEmpty(product.getProductName()),Product::getProductName,product.getProductName());
         wrapper.eq(product.getParentId()!=null,Product::getParentId,product.getParentId());
         wrapper.last("limit 30");
-        return R.ok(productService.list(wrapper));
+        return R.ok(productService.listByScope(wrapper));
     }
 
     /**
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
deleted file mode 100644
index f8440ec..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java
+++ /dev/null
@@ -1,465 +0,0 @@
-package com.by4cloud.platformx.business.controller;
-
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-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;
-import com.by4cloud.platformx.common.data.mybatis.BaseModel;
-import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
-import com.by4cloud.platformx.common.log.annotation.SysLog;
-import com.by4cloud.platformx.common.security.annotation.Inner;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.security.SecurityRequirement;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import org.springdoc.core.annotations.ParameterObject;
-import org.springframework.http.HttpHeaders;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 閿�鍞寕璐�
- *
- * @author wjli
- * @date 2026-05-21 16:16:31
- */
-@RestController
-@RequiredArgsConstructor
-@RequestMapping("/saleCredit" )
-@Tag(description = "saleCredit" , name = "閿�鍞寕璐︾鐞�" )
-@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
-public class SaleCreditController {
-
-    private final  SaleCreditService saleCreditService;
-    private final ContractService contractService;
-    private final BusinessCustomerService businessCustomerService;
-    private final ContractOutBoundService contractOutBoundService;
-    private final ProductService productService;
-    private final ContractSubjectMatterService contractSubjectMatterService;
-    private final RemoteDeptService remoteDeptService;
-
-    private final InvoiceService invoiceService;
-    private final BIPYsService bipYsService;
-
-
-    /**
-     * 鍒嗛〉鏌ヨ
-     * @param page 鍒嗛〉瀵硅薄
-     * @param saleCredit 閿�鍞寕璐�
-     * @return
-     */
-    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
-    @GetMapping("/page" )
-    @PreAuthorize("@pms.hasPermission('business_saleCredit_view')" )
-    public R getSaleCreditPage(@ParameterObject Page page, @ParameterObject SaleCredit saleCredit) {
-        LambdaQueryWrapper<SaleCredit> wrapper = Wrappers.lambdaQuery();
-        return R.ok(saleCreditService.page(page, wrapper));
-    }
-
-
-    /**
-     * 閫氳繃id鏌ヨ閿�鍞寕璐�
-     * @param id id
-     * @return R
-     */
-    @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
-    @GetMapping("/{id}" )
-    @PreAuthorize("@pms.hasPermission('business_saleCredit_view')" )
-    public R getById(@PathVariable("id" ) Long id) {
-        return R.ok(saleCreditService.getById(id));
-    }
-
-    /**
-     * 鏂板閿�鍞寕璐�
-     * @param saleCredit 閿�鍞寕璐�
-     * @return R
-     */
-    @Operation(summary = "鏂板閿�鍞寕璐�" , description = "鏂板閿�鍞寕璐�" )
-    @SysLog("鏂板閿�鍞寕璐�" )
-    @PostMapping
-    @PreAuthorize("@pms.hasPermission('business_saleCredit_add')" )
-    public R save(@RequestBody SaleCredit saleCredit) {
-        return R.ok(saleCreditService.save(saleCredit));
-    }
-
-
-    /**
-     * 鏂板閿�鍞寕璐�
-     * @param saleCredit 閿�鍞寕璐�
-     * @return R
-     */
-    @Operation(summary = "閿�鍞寕璐︾敓鎴�" , description = "閿�鍞寕璐︾敓鎴�" )
-    @SysLog("閿�鍞寕璐︾敓鎴�" )
-    @PostMapping("/saveSaleCredit")
-    @PreAuthorize("@pms.hasPermission('business_saleCredit_add')" )
-    public R saveInvoice(@RequestBody SaleCredit saleCredit) {
-        //寮�绁ㄤ腑
-        saleCredit.setStatus(1);
-        saleCreditService.save(saleCredit);
-        //鏍囪鍑哄簱鍗曡鏍囪瘑
-        List<ContractOutBoundVo> contractOutBoundList = saleCredit.getContractOutBoundList();
-        if(contractOutBoundList==null){
-            return R.failed("璇烽�夋嫨鍑哄簱鍗曪紒");
-        }
-        if(contractOutBoundList.size()==0){
-            return R.failed("璇烽�夋嫨鍑哄簱鍗曪紒");
-        }
-        //寮�绁ㄤ箣鍓嶏紝鍏堣褰曞紑绁ㄤ俊鎭�
-        //1.鍑哄簱鍗曡繘琛屾爣璁帮紝灏嗗嚭搴撳崟鍙戠エ璁板綍id濉叆銆傚皢InvoiceSatus=1寮�绁ㄤ腑銆�
-        String outBoundIds = "";
-        for(ContractOutBoundVo vo : contractOutBoundList){
-            if(StrUtil.isEmpty(outBoundIds)){
-                outBoundIds = "" + vo.getId();
-            }else{
-                outBoundIds += "," + vo.getId();
-            }
-            ContractOutBound outBound = contractOutBoundService.getById(vo.getId());
-            outBound.setSaleCreditId(saleCredit.getId());
-            outBound.setTotalPrice(vo.getTotalPrice());
-            outBound.setTotalTax(vo.getTotalTax());
-            outBound.setProductId(vo.getProductId());
-            outBound.setTaxRate(vo.getTaxRate());
-            outBound.setTaxClass(vo.getTaxClass());
-            outBound.setTaxCode(vo.getTaxCode());
-            outBound.setSpecification(vo.getSpecification());
-            outBound.setUnit(vo.getUnit());
-            outBound.setUnitPrice(vo.getUnitPrice());
-            outBound.setInvoiceSatus(1);
-            contractOutBoundService.updateById(outBound);
-        }
-        //缁撶畻涓褰曞嚭搴撳崟ids.
-        saleCredit.setOutBoundIds(outBoundIds);
-        //鐢熸垚缁撶畻鍗曞彿
-        saleCredit.setEntrustCode("JsNo"+System.currentTimeMillis());
-        saleCreditService.updateById(saleCredit);
-
-        //鐢熸垚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("閿�鍞寕璐︾敓鎴愶紒");
-
-
-        //鍑哄簱鍗曞凡寮�绁�
-        List<ContractOutBound> contractOutBounds = contractOutBoundService.list(new LambdaQueryWrapper<ContractOutBound>()
-                .eq(ContractOutBound::getSaleCreditId,saleCredit.getId())
-        );
-        for(ContractOutBound contractOutBound : contractOutBounds){
-            contractOutBound.setInvoiceSatus(2);
-        }
-        contractOutBoundService.updateBatchById(contractOutBounds);
-
-        //寮�绁ㄦ垚鍔�
-        //寮�绁ㄨ褰曞崟钃濈エ淇℃伅瀛樺偍
-        saleCredit.setBlueResultStatus(1);
-        saleCredit.setInvoiceRemark("寮�绁ㄦ垚鍔燂紒");
-        saleCredit.setBlueInvoiceTime(DateTime.now());
-        saleCreditService.updateById(saleCredit);
-
-        //鐩稿叧鍚堝悓閲戦鍜屽紑绁ㄧ姸鎬佽繘琛屼慨鏀广��
-        Contract contract = contractService.getById(saleCredit.getContractId());
-        String billingStatus = contract.getBillingStatus();
-
-        if(contract.getBillingAmout()==null){
-            contract.setBillingAmout(saleCredit.getTotalAmount());
-        }else{
-            contract.setBillingAmout(contract.getBillingAmout().add(saleCredit.getTotalAmount()));
-        }
-
-        int res = contract.getAmount().compareTo(contract.getBillingAmout());
-
-        if("2".equals(billingStatus)) {
-            if (res == 0) {
-                contract.setBillingStatus("3");
-            } else if (res > 0) {
-                contract.setBillingStatus("2");
-            } else {
-                return R.failed("宸蹭粯閲戦涓嶈兘澶т簬鎬婚噾棰濓紒");
-            }
-        }
-
-        contractService.updateById(contract);
-        return R.ok("寮�绁ㄦ垚鍔燂紝鎺ㄩ�乥ip鎴愬姛锛�");
-    }
-
-    /**
-     * 鎷兼帴閿�鍞寕璐�
-     * @param contract1 閿�鍞寕璐�
-     * @return R
-     */
-    @Operation(summary = "鑾峰彇鍙戠エ鍒楄〃" , description = "鑾峰彇鍙戠エ鍒楄〃" )
-    @SysLog("鑾峰彇鍙戠エ鍒楄〃" )
-    @GetMapping("/getInvoices")
-    @PreAuthorize("@pms.hasPermission('business_saleCredit_view')" )
-    public R getInvoices(@ParameterObject Contract contract1) {
-        Contract contract = contractService.getById(contract1.getId());
-        if(contract==null){
-            return R.failed("鍚堝悓id閿欒");
-        }
-        List<SaleCredit> saleCredits = saleCreditService.list(new LambdaQueryWrapper<SaleCredit>()
-                .eq(SaleCredit::getContractId,contract1.getId())
-                .orderByAsc(BaseModel::getCreateTime)
-        );
-        for(SaleCredit saleCredit : saleCredits){
-            if(saleCredit.getRedResultStatus()!=null && saleCredit.getRedResultStatus()>0){//璇存槑宸插紑绾㈢エ
-                saleCredit.setBlueResultStatus(0);
-                if(saleCredit.getRedResultStatus()==1){
-                    saleCredit.setInvoiceRemark("寮�绾㈢エ鎴愬姛锛�");
-                    saleCredit.setInvoicRedUrl("绾㈢エurl");
-                }else{
-                    //鏄剧ず saleCredit.getInvoiceRemark();
-                }
-            }else{
-                if(saleCredit.getBlueResultStatus()==1){
-                    saleCredit.setInvoiceRemark("寮�钃濈エ鎴愬姛锛�");
-                    saleCredit.setInvoicUrl("钃濈エurl");
-                }else if(saleCredit.getBlueResultStatus()==2){
-                    //鏄剧ず saleCredit.getInvoiceRemark();
-                }
-            }
-        }
-        return R.ok(saleCredits);
-    }
-
-    /**
-     * 鎷兼帴閿�鍞寕璐�
-     * @param saleCredit1 閿�鍞寕璐�
-     * @return R
-     */
-    @Operation(summary = "绾㈠啿鍙戠エ" , description = "绾㈠啿鍙戠エ" )
-    @SysLog("绾㈠啿鍙戠エ" )
-    @PostMapping("/toRedStamp")
-    @PreAuthorize("@pms.hasPermission('business_saleCredit_edit')" )
-    public R toRedStamp(@RequestBody SaleCredit saleCredit1) {
-        if(saleCredit1.getId()==null){
-            return R.failed("閿�鍞寕璐d涓嶈兘涓虹┖锛�");
-        }
-        SaleCredit saleCredit = saleCreditService.getById(saleCredit1.getId());
-        if(saleCredit==null){
-            return R.failed("閿�鍞寕璐d涓嶈兘涓虹┖锛�");
-        }
-
-        /*try {
-            Map<String, Object> map = invoiceService.toRedTicket(saleCredit);
-            Boolean success = (Boolean) map.get("success");
-            if(success){
-                return R.ok("绾㈠瓧寮�绁ㄦ垚鍔�");
-            }else {
-                return R.failed((String) map.get("message"));
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-            return R.failed("绾㈠瓧寮�绁ㄥけ璐�");
-        }*/
-
-
-        //鍑哄簱鍗曟仮澶嶅埌鏈紑绁ㄧ姸鎬�
-        List<ContractOutBound> outBoundList = contractOutBoundService.list(new LambdaQueryWrapper<ContractOutBound>()
-                .eq(ContractOutBound::getSaleCreditId,saleCredit.getId())
-        );
-        for(ContractOutBound outBound : outBoundList){
-            outBound.setInvoiceSatus(0);
-            outBound.setSaleCreditId(0l);
-        }
-        contractOutBoundService.updateBatchById(outBoundList);
-
-        saleCredit.setRedInvoiceTime(DateTime.now());
-        saleCredit.setRedResultStatus(1);
-        saleCredit.setInvoiceRemark("寮�绾㈢エ鎴愬姛锛�");
-        saleCreditService.updateById(saleCredit);
-
-
-        //鍚堝悓宸插紑绁ㄩ噾棰濆拰鐘舵�佽繕鍘�
-        Contract contract = contractService.getById(saleCredit.getContractId());
-        String billingStatus = contract.getBillingStatus();
-        BigDecimal bill = contract.getBillingAmout() == null ? BigDecimal.ZERO : contract.getBillingAmout();
-        BigDecimal credit = saleCredit.getTotalAmount() == null ? BigDecimal.ZERO : saleCredit.getTotalAmount();
-        BigDecimal diff = bill.subtract(credit);
-        int res = diff.compareTo(BigDecimal.ZERO);
-
-        if("3".equals(billingStatus)){
-            if(res>=0){
-                contract.setBillingStatus("2");
-                contract.setBillingAmout(BigDecimal.ZERO);
-            }else{
-                return R.failed("宸插紑绁ㄩ噾棰濊礋鏁版姤閿欙紒");
-            }
-        }
-        contractService.updateById(contract);
-        return R.ok("绾㈠啿寮�绁ㄦ垚鍔燂紒");
-    }
-
-
-
-    /**
-     * 鎷兼帴閿�鍞寕璐�
-     * @param saleCredit 閿�鍞寕璐�
-     * @return R
-     */
-    @Operation(summary = "鎷兼帴閿�鍞寕璐�" , description = "鎷兼帴閿�鍞寕璐�" )
-    @SysLog("鎷兼帴閿�鍞寕璐�" )
-    @GetMapping("/generatorInvoice")
-    @PreAuthorize("@pms.hasPermission('business_saleCredit_view')" )
-    public R generatorInvoice(@ParameterObject SaleCredit saleCredit) {
-        if(saleCredit.getContractId()==null){
-            return R.failed("鍚堝悓id涓嶈兘涓虹┖");
-        }
-        Contract contract = contractService.getById(saleCredit.getContractId());
-        if(contract==null){
-            return R.failed("鍚堝悓id閿欒");
-        }
-        saleCredit.setContractName(contract.getContractName());
-        saleCredit.setContractNo(contract.getContractNo());
-
-        BusinessCustomer partA = businessCustomerService.getById(contract.getPartyAId());
-        if(partA!=null){
-            saleCredit.setPartyA(partA.getCompanyName());
-            saleCredit.setCreditCodeA(partA.getCreditCode());
-            saleCredit.setBankAccountA(partA.getBankAccount());
-            saleCredit.setBankNameA(partA.getBankName());
-        }
-        R<SysDept> r = remoteDeptService.getById(contract.getPartyBId());
-
-        SysDept dept = r.getData();
-        if(dept!=null){
-            saleCredit.setPartyB(dept.getOrgName());
-            saleCredit.setCreditCodeB(dept.getOrgCode());
-            saleCredit.setBankAccountB(dept.getOrgBankAccount());
-            saleCredit.setBankNameB(dept.getOrgBank());
-        }
-
-        List<ContractOutBound> outBoundList = contractOutBoundService.list(new LambdaQueryWrapper<ContractOutBound>()
-                .eq(ContractOutBound::getContractId,contract.getId())
-                .eq(ContractOutBound::getInvoiceSatus,0)
-                .orderByAsc(ContractOutBound::getOutBoundTime)
-        );
-
-        if(outBoundList!=null){
-            if(!outBoundList.isEmpty()){
-                List<ContractOutBoundVo> list = new ArrayList<>();
-                for(ContractOutBound outBound : outBoundList){
-                    ContractOutBoundVo vo = new ContractOutBoundVo();
-                    BeanUtil.copyProperties(outBound,vo);
-                    Product product = productService.getOne(new LambdaQueryWrapper<Product>().eq(Product::getErpCode,outBound.getSubjectMatterCode()).last("limit 1"));
-                    Product productP = productService.getOne(new LambdaQueryWrapper<Product>().eq(Product::getId,product.getParentId()).last("limit 1"));
-
-                    if(product!=null){
-                        vo.setProductId(product.getId());
-                        vo.setInvoiceName("*"+product.getTaxClass()+"*" + (productP!=null?productP.getProductName():"") + "*");
-                        vo.setTaxClass(product.getTaxClass());
-                        vo.setTaxCode(product.getTaxCode());
-                        vo.setTaxRate(product.getTaxRate());
-                    }
-
-                    ContractSubjectMatter matter = contractSubjectMatterService.getOne(new LambdaQueryWrapper<ContractSubjectMatter>()
-                            .eq(ContractSubjectMatter::getContractId,contract.getId())
-                            .eq(ContractSubjectMatter::getMaterialCode,outBound.getSubjectMatterCode())
-                            .last("limit 1")
-                    );
-
-                    if(matter!=null){
-                        vo.setSpecification(matter.getSpecification());
-                        vo.setUnit(matter.getUnit());
-                        vo.setUnitPrice(matter.getUnitPrice());
-                    }
-
-                    list.add(vo);
-                }
-                saleCredit.setContractOutBoundList(list);
-            }
-        }
-        return R.ok(saleCredit);
-    }
-
-
-
-    /**
-     * 淇敼閿�鍞寕璐�
-     * @param saleCredit 閿�鍞寕璐�
-     * @return R
-     */
-    @Operation(summary = "淇敼閿�鍞寕璐�" , description = "淇敼閿�鍞寕璐�" )
-    @SysLog("淇敼閿�鍞寕璐�" )
-    @PutMapping
-    @PreAuthorize("@pms.hasPermission('business_saleCredit_edit')" )
-    public R updateById(@RequestBody SaleCredit saleCredit) {
-        return R.ok(saleCreditService.updateById(saleCredit));
-    }
-
-    /**
-     * 閫氳繃id鍒犻櫎閿�鍞寕璐�
-     * @param ids id鍒楄〃
-     * @return R
-     */
-    @Operation(summary = "閫氳繃id鍒犻櫎閿�鍞寕璐�" , description = "閫氳繃id鍒犻櫎閿�鍞寕璐�" )
-    @SysLog("閫氳繃id鍒犻櫎閿�鍞寕璐�" )
-    @DeleteMapping
-    @PreAuthorize("@pms.hasPermission('business_saleCredit_del')" )
-    public R removeById(@RequestBody Long[] ids) {
-        return R.ok(saleCreditService.removeBatchByIds(CollUtil.toList(ids)));
-    }
-
-
-    /**
-     * 瀵煎嚭excel 琛ㄦ牸
-     * @param saleCredit 鏌ヨ鏉′欢
-   	 * @param ids 瀵煎嚭鎸囧畾ID
-     * @return excel 鏂囦欢娴�
-     */
-    @ResponseExcel
-    @GetMapping("/export")
-    @PreAuthorize("@pms.hasPermission('business_saleCredit_export')" )
-    public List<SaleCredit> export(SaleCredit saleCredit,Long[] ids) {
-        return saleCreditService.list(Wrappers.lambdaQuery(saleCredit).in(ArrayUtil.isNotEmpty(ids), SaleCredit::getId, ids));
-    }
-
-
-
-
-}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/controller/FpInvoiceResultController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/controller/FpInvoiceResultController.java
deleted file mode 100644
index df6de4e..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/controller/FpInvoiceResultController.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package com.by4cloud.platformx.business.invoice.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.by4cloud.platformx.business.entity.invoice.InvoiceResult;
-import com.by4cloud.platformx.business.invoice.service.FpInvoiceResultService;
-import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
-import com.by4cloud.platformx.common.log.annotation.SysLog;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-import com.by4cloud.platformx.common.core.util.R;
-
-import java.util.List;
-
-/**
- * 寮�鍏峰彂绁ㄨ繑鍥炲��
- *
- * @author kdq
- * @date 2024-11-05 18:44:09
- */
-@RestController
-@RequiredArgsConstructor
-@RequestMapping("/fpinvoiceresult" )
-@Tag(description = "fpinvoiceresult" , name = "寮�鍏峰彂绁ㄨ繑鍥炲�肩鐞�" )
-public class FpInvoiceResultController {
-
-    private final FpInvoiceResultService fpInvoiceResultService;
-
-    /**
-     * 鍒嗛〉鏌ヨ
-     * @param page 鍒嗛〉瀵硅薄
-     * @param fpInvoiceResult 寮�鍏峰彂绁ㄨ繑鍥炲��
-     * @return
-     */
-    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
-    @GetMapping("/page" )
-    @PreAuthorize("@pms.hasPermission('business_fpinvoiceresult_view')" )
-    public R getFpInvoiceResultPage(Page page, InvoiceResult fpInvoiceResult) {
-		QueryWrapper<InvoiceResult> wrapper = new QueryWrapper<>();
-		wrapper.lambda()
-				.eq(InvoiceResult::getSuccess,fpInvoiceResult.getSuccess())
-				.eq(StringUtils.isNotBlank(fpInvoiceResult.getMethodName()),InvoiceResult::getMethodName,fpInvoiceResult.getMethodName())
-				.like(fpInvoiceResult.getEntrustCode() !=null,InvoiceResult::getEntrustCode,fpInvoiceResult.getEntrustCode())
-				.orderByDesc(InvoiceResult::getCreateTime);
-        return R.ok(fpInvoiceResultService.page(page, wrapper));
-    }
-
-
-    /**
-     * 閫氳繃id鏌ヨ寮�鍏峰彂绁ㄨ繑鍥炲��
-     * @param id id
-     * @return R
-     */
-    @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
-    @GetMapping("/{id}" )
-    @PreAuthorize("@pms.hasPermission('business_fpinvoiceresult_view')" )
-    public R getById(@PathVariable("id" ) Integer id) {
-        return R.ok(fpInvoiceResultService.getById(id));
-    }
-
-    /**
-     * 鏂板寮�鍏峰彂绁ㄨ繑鍥炲��
-     * @param fpInvoiceResult 寮�鍏峰彂绁ㄨ繑鍥炲��
-     * @return R
-     */
-    @Operation(summary = "鏂板寮�鍏峰彂绁ㄨ繑鍥炲��" , description = "鏂板寮�鍏峰彂绁ㄨ繑鍥炲��" )
-    @SysLog("鏂板寮�鍏峰彂绁ㄨ繑鍥炲��" )
-    @PostMapping
-    @PreAuthorize("@pms.hasPermission('business_fpinvoiceresult_add')" )
-    public R save(@RequestBody InvoiceResult fpInvoiceResult) {
-        return R.ok(fpInvoiceResultService.save(fpInvoiceResult));
-    }
-
-    /**
-     * 淇敼寮�鍏峰彂绁ㄨ繑鍥炲��
-     * @param fpInvoiceResult 寮�鍏峰彂绁ㄨ繑鍥炲��
-     * @return R
-     */
-    @Operation(summary = "淇敼寮�鍏峰彂绁ㄨ繑鍥炲��" , description = "淇敼寮�鍏峰彂绁ㄨ繑鍥炲��" )
-    @SysLog("淇敼寮�鍏峰彂绁ㄨ繑鍥炲��" )
-    @PutMapping
-    @PreAuthorize("@pms.hasPermission('business_fpinvoiceresult_edit')" )
-    public R updateById(@RequestBody InvoiceResult fpInvoiceResult) {
-        return R.ok(fpInvoiceResultService.updateById(fpInvoiceResult));
-    }
-
-    /**
-     * 閫氳繃id鍒犻櫎寮�鍏峰彂绁ㄨ繑鍥炲��
-     * @param id id
-     * @return R
-     */
-    @Operation(summary = "閫氳繃id鍒犻櫎寮�鍏峰彂绁ㄨ繑鍥炲��" , description = "閫氳繃id鍒犻櫎寮�鍏峰彂绁ㄨ繑鍥炲��" )
-    @SysLog("閫氳繃id鍒犻櫎寮�鍏峰彂绁ㄨ繑鍥炲��" )
-    @DeleteMapping("/{id}" )
-    @PreAuthorize("@pms.hasPermission('business_fpinvoiceresult_del')" )
-    public R removeById(@PathVariable Integer id) {
-        return R.ok(fpInvoiceResultService.removeById(id));
-    }
-
-
-    /**
-     * 瀵煎嚭excel 琛ㄦ牸
-     * @param fpInvoiceResult 鏌ヨ鏉′欢
-     * @return excel 鏂囦欢娴�
-     */
-    @ResponseExcel
-    @GetMapping("/export")
-    @PreAuthorize("@pms.hasPermission('business_fpinvoiceresult_export')" )
-    public List<InvoiceResult> export(InvoiceResult fpInvoiceResult) {
-        return fpInvoiceResultService.list(Wrappers.query(fpInvoiceResult));
-    }
-}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/mapper/BipInvoiceMapper.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/mapper/BipInvoiceMapper.java
deleted file mode 100644
index 2ddfb7b..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/mapper/BipInvoiceMapper.java
+++ /dev/null
@@ -1,17 +0,0 @@
-
-package com.by4cloud.platformx.business.invoice.mapper;
-
-import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
-import com.by4cloud.platformx.business.entity.invoice.BipInvoice;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * bip瀵瑰簲鍗曟嵁琛�
- *
- * @author zzl
- * @date 2024-09-05 17:59:36
- */
-@Mapper
-public interface BipInvoiceMapper extends PlatformxBaseMapper<BipInvoice> {
-
-}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/mapper/FileBipMapper.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/mapper/FileBipMapper.java
deleted file mode 100644
index 05bb078..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/mapper/FileBipMapper.java
+++ /dev/null
@@ -1,17 +0,0 @@
-
-package com.by4cloud.platformx.business.invoice.mapper;
-
-import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
-import com.by4cloud.platformx.business.entity.invoice.FileBip;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * bip鐢靛瓙褰卞儚琛�
- *
- * @author kdq
- * @date 2024-09-06 08:51:32
- */
-@Mapper
-public interface FileBipMapper extends PlatformxBaseMapper<FileBip> {
-
-}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/mapper/FpInvoiceResultItemMapper.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/mapper/FpInvoiceResultItemMapper.java
deleted file mode 100644
index 95bd521..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/mapper/FpInvoiceResultItemMapper.java
+++ /dev/null
@@ -1,19 +0,0 @@
-
-package com.by4cloud.platformx.business.invoice.mapper;
-
-
-import com.by4cloud.platformx.business.entity.invoice.InvoiceResultItem;
-import org.apache.ibatis.annotations.Mapper;
-import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
-
-
-/**
- * 寮�鍏峰彂绁ㄨ繑鍥炲�兼槑缁嗚
- *
- * @author kdq
- * @date 2024-11-28 15:35:41
- */
-@Mapper
-public interface FpInvoiceResultItemMapper extends PlatformxBaseMapper<InvoiceResultItem> {
-
-}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/mapper/FpInvoiceResultMapper.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/mapper/FpInvoiceResultMapper.java
deleted file mode 100644
index 81ad018..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/mapper/FpInvoiceResultMapper.java
+++ /dev/null
@@ -1,18 +0,0 @@
-
-package com.by4cloud.platformx.business.invoice.mapper;
-
-import com.by4cloud.platformx.business.entity.invoice.InvoiceResult;
-import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
-
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 寮�鍏峰彂绁ㄨ繑鍥炲��
- *
- * @author kdq
- * @date 2024-11-05 18:44:09
- */
-@Mapper
-public interface FpInvoiceResultMapper extends PlatformxBaseMapper<InvoiceResult> {
-
-}
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
deleted file mode 100644
index 4bcefc8..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/BIPYsService.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package com.by4cloud.platformx.business.invoice.service;
-
-import com.by4cloud.platformx.business.entity.BillingInfo;
-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);
-
-	BipResVo sendBIPYss(BillingInfo billingInfo);
-	/**
-	 *
-	 * @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/BipInvoiceService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/BipInvoiceService.java
deleted file mode 100644
index 274feac..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/BipInvoiceService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-package com.by4cloud.platformx.business.invoice.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.by4cloud.platformx.business.entity.invoice.BipInvoice;
-
-/**
- * bip瀵瑰簲鍗曟嵁琛�
- *
- * @author zzl
- * @date 2024-09-05 17:59:36
- */
-public interface BipInvoiceService extends IService<BipInvoice> {
-
-}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/FileBipService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/FileBipService.java
deleted file mode 100644
index 62ae2ae..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/FileBipService.java
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-package com.by4cloud.platformx.business.invoice.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.by4cloud.platformx.business.entity.invoice.FileBip;
-
-
-/**
- * bip鐢靛瓙褰卞儚琛�
- *
- * @author kdq
- * @date 2024-09-06 08:51:32
- */
-public interface FileBipService extends IService<FileBip> {
-
-}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/FileUploadService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/FileUploadService.java
deleted file mode 100644
index 79b0abb..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/FileUploadService.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.by4cloud.platformx.business.invoice.service;
-
-/**
- * @author kdq
- * @version 1.0.0
- * @ClassName FileUploadService.java
- * @Description TODO
- * @createTime 2024骞�09鏈�03鏃� 10:04:00
- */
-
-
-
-import com.by4cloud.platformx.business.entity.Contract;
-
-import java.util.List;
-
-/**
- * 鐢靛瓙褰卞儚鎺ュ彛
- *
- * @author kdq
- */
-public interface FileUploadService {
-
-	//涓婁紶鏂囦欢鍒癰ip
-	String uploadToBip(Long railwayEntrustId, String businessId, String filename);
-
-	String uploadUrlToBip(Long railwayEntrustId, String businessId, String fileUrl);
-
-	String deleteFileBip(Integer railwayEntrustId, String businessId, String fid);
-
-}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/FpInvoiceResultItemService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/FpInvoiceResultItemService.java
deleted file mode 100644
index 7b305eb..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/FpInvoiceResultItemService.java
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-package com.by4cloud.platformx.business.invoice.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.by4cloud.platformx.business.entity.invoice.InvoiceResultItem;
-
-
-/**
- * 寮�鍏峰彂绁ㄨ繑鍥炲�兼槑缁嗚
- *
- * @author kdq
- * @date 2024-11-28 15:35:41
- */
-public interface FpInvoiceResultItemService extends IService<InvoiceResultItem> {
-
-}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/FpInvoiceResultService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/FpInvoiceResultService.java
deleted file mode 100644
index ccec451..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/FpInvoiceResultService.java
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-package com.by4cloud.platformx.business.invoice.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-
-
-import com.by4cloud.platformx.business.entity.invoice.*;
-import com.by4cloud.platformx.common.core.util.R;
-import java.util.Map;
-
-/**
- * 寮�鍏峰彂绁ㄨ繑鍥炲��
- *
- * @author kdq
- * @date 2024-11-05 18:44:09
- */
-public interface FpInvoiceResultService extends IService<InvoiceResult> {
-
-}
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
deleted file mode 100644
index ff81604..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/BIPYsServiceImpl.java
+++ /dev/null
@@ -1,1699 +0,0 @@
-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.BillingInfo;
-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;
-	}
-
-	@Override
-	public BipResVo sendBIPYss(BillingInfo 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/service/impl/BipInvoiceServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/BipInvoiceServiceImpl.java
deleted file mode 100644
index 89e271c..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/BipInvoiceServiceImpl.java
+++ /dev/null
@@ -1,24 +0,0 @@
-
-package com.by4cloud.platformx.business.invoice.service.impl;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.by4cloud.platformx.business.invoice.mapper.BipInvoiceMapper;
-import com.by4cloud.platformx.business.invoice.service.BipInvoiceService;
-import com.by4cloud.platformx.business.entity.invoice.*;
-
-
-import lombok.AllArgsConstructor;
-import org.springframework.stereotype.Service;
-
-
-/**
- * bip瀵瑰簲鍗曟嵁琛�
- *
- * @author zzl
- * @date 2024-09-05 17:59:36
- */
-@Service
-@AllArgsConstructor
-public class BipInvoiceServiceImpl extends ServiceImpl<BipInvoiceMapper, BipInvoice> implements BipInvoiceService {
-
-}
-
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/FileBipServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/FileBipServiceImpl.java
deleted file mode 100644
index 9feb3f9..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/FileBipServiceImpl.java
+++ /dev/null
@@ -1,19 +0,0 @@
-
-package com.by4cloud.platformx.business.invoice.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.by4cloud.platformx.business.entity.invoice.FileBip;
-import com.by4cloud.platformx.business.invoice.mapper.FileBipMapper;
-import com.by4cloud.platformx.business.invoice.service.FileBipService;
-import org.springframework.stereotype.Service;
-
-/**
- * bip鐢靛瓙褰卞儚琛�
- *
- * @author kdq
- * @date 2024-09-06 08:51:32
- */
-@Service
-public class FileBipServiceImpl extends ServiceImpl<FileBipMapper, FileBip> implements FileBipService {
-
-}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/FileUploadServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/FileUploadServiceImpl.java
deleted file mode 100644
index 37b4729..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/FileUploadServiceImpl.java
+++ /dev/null
@@ -1,138 +0,0 @@
-package com.by4cloud.platformx.business.invoice.service.impl;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.by4cloud.platformx.business.entity.SaleCredit;
-import com.by4cloud.platformx.business.entity.invoice.FileBip;
-import com.by4cloud.platformx.business.invoice.mapper.FileBipMapper;
-import com.by4cloud.platformx.business.invoice.service.FileUploadService;
-import com.by4cloud.platformx.business.invoice.utils.BipHttpUtil;
-import com.by4cloud.platformx.business.service.SaleCreditService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * @author kdq
- * @version 1.0.0
- * @ClassName FileUploadServiceImpl.java
- * @Description TODO
- * @createTime 2024骞�09鏈�03鏃� 10:06:00
- */
-@Service
-public class FileUploadServiceImpl implements FileUploadService {
-	@Autowired
-	private SaleCreditService saleCreditService;
-
-	@Autowired
-	private FileBipMapper fileBipMapper;
-
-	@Autowired
-	private BipHttpUtil bipHttpUtil;
-
-	@Value("${bip.filePath}")
-	private String bipFilePath;
-
-
-
-	@Override
-	public String uploadToBip(Long railwayEntrustId,String businessId,String filename) {
-		String s = bipHttpUtil.postUploadFile(businessId, filename);
-		SaleCredit saleCredit = saleCreditService.getById(railwayEntrustId);
-		JSONObject result = JSON.parseObject(s) ;
-		String code = (String) result.get("code");
-		if(code.equals("200")){
-			// 浣跨敤JSON.parseObject()鏉ヨВ鏋怞SON瀵硅薄
-			JSONObject jsonObject = JSON.parseObject(s);
-			JSONObject data = jsonObject.getJSONObject("data");
-			JSONArray jsonArray = data.getJSONArray("data");
-
-			for (int i = 0; i < jsonArray.size(); i++) {
-				JSONObject obj = jsonArray.getJSONObject(i);
-				FileBip fileBip = new FileBip();
-				fileBip.setFileId(obj.get("fileId").toString());
-				fileBip.setFilePath(obj.get("filePath").toString());
-				fileBip.setFileCTime(obj.get("ctime")+"");
-				fileBip.setFileUTime(obj.get("utime")+"");
-				fileBip.setFileBipId(obj.get("id").toString());
-				fileBip.setFileExtension(obj.get("fileExtension").toString());
-				fileBip.setFileSize((Integer)obj.get("fileSize"));
-				fileBip.setFileSizeText(obj.get("fileSizeText").toString());
-				fileBip.setFileName(obj.get("fileName").toString());
-				fileBip.setName(obj.get("name").toString());
-				fileBip.setYhtUserId(obj.get("yhtUserId").toString());
-				fileBip.setTenantId(obj.get("tenantId").toString());
-				fileBip.setSign(obj.get("sign").toString());
-				fileBip.setCopy(obj.get("copy")+"");
-				fileBip.setEntrustId(railwayEntrustId);
-				fileBip.setEntrustCode(saleCredit.getEntrustCode());
-				fileBip.setFileLocalPath("/yunxiao/filebip/local/"+filename);
-				fileBipMapper.insert(fileBip);
-			}
-		}
-		return s;
-	}
-
-	@Override
-	public String uploadUrlToBip(Long railwayEntrustId, String businessId, String fileUrl) {
-		String s = bipHttpUtil.postUploadFileUrl(businessId, fileUrl);
-		SaleCredit saleCredit = saleCreditService.getById(railwayEntrustId);
-		JSONObject result = JSON.parseObject(s) ;
-		String code = (String) result.get("code");
-		if(code.equals("200")){
-			// 浣跨敤JSON.parseObject()鏉ヨВ鏋怞SON瀵硅薄
-			JSONObject jsonObject = JSON.parseObject(s);
-			JSONObject data = jsonObject.getJSONObject("data");
-			JSONArray jsonArray = data.getJSONArray("data");
-
-			for (int i = 0; i < jsonArray.size(); i++) {
-				JSONObject obj = jsonArray.getJSONObject(i);
-				FileBip fileBip = new FileBip();
-				fileBip.setFileId(obj.get("fileId").toString());
-				fileBip.setFilePath(obj.get("filePath").toString());
-				fileBip.setFileCTime(obj.get("ctime")+"");
-				fileBip.setFileUTime(obj.get("utime")+"");
-				fileBip.setFileBipId(obj.get("id").toString());
-				fileBip.setFileExtension(obj.get("fileExtension").toString());
-				fileBip.setFileSize((Integer)obj.get("fileSize"));
-				fileBip.setFileSizeText(obj.get("fileSizeText").toString());
-				fileBip.setFileName(obj.get("fileName").toString());
-				fileBip.setName(obj.get("name").toString());
-				fileBip.setYhtUserId(obj.get("yhtUserId").toString());
-				fileBip.setTenantId(obj.get("tenantId").toString());
-				fileBip.setSign(obj.get("sign").toString());
-				fileBip.setCopy(obj.get("copy")+"");
-				fileBip.setEntrustId(railwayEntrustId);
-				fileBip.setEntrustCode(saleCredit.getEntrustCode());
-				fileBip.setFileLocalPath(fileUrl);
-				fileBipMapper.insert(fileBip);
-			}
-		}
-		return s;
-	}
-
-
-	@Override
-	public String deleteFileBip(Integer railwayEntrustId,String businessId, String fid) {
-		String s = bipHttpUtil.postDeleteFile(businessId, fid);
-		JSONObject result = JSON.parseObject(s) ;
-		String code = (String) result.get("code");
-		if(code.equals("200")){
-			QueryWrapper<FileBip> wrapper = new QueryWrapper<>();
-			wrapper.lambda()
-					.eq(FileBip::getFileBipId,fid);
-			List<FileBip> fileBips = fileBipMapper.selectList(wrapper);
-			if(!fileBips.isEmpty() && fileBips.size()>0){
-				for (FileBip fileBip : fileBips) {
-					fileBipMapper.deleteById(fileBip);
-				}
-			}
-		}
-		return s;
-	}
-
-}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/FpInvoiceResultItemServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/FpInvoiceResultItemServiceImpl.java
deleted file mode 100644
index 688d46c..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/FpInvoiceResultItemServiceImpl.java
+++ /dev/null
@@ -1,20 +0,0 @@
-
-package com.by4cloud.platformx.business.invoice.service.impl;
-
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.by4cloud.platformx.business.entity.invoice.InvoiceResultItem;
-import com.by4cloud.platformx.business.invoice.mapper.FpInvoiceResultItemMapper;
-import com.by4cloud.platformx.business.invoice.service.FpInvoiceResultItemService;
-import org.springframework.stereotype.Service;
-
-/**
- * 寮�鍏峰彂绁ㄨ繑鍥炲�兼槑缁嗚
- *
- * @author kdq
- * @date 2024-11-28 15:35:41
- */
-@Service
-public class FpInvoiceResultItemServiceImpl extends ServiceImpl<FpInvoiceResultItemMapper, InvoiceResultItem> implements FpInvoiceResultItemService {
-
-}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/FpInvoiceResultServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/FpInvoiceResultServiceImpl.java
deleted file mode 100644
index 6d51f8a..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/service/impl/FpInvoiceResultServiceImpl.java
+++ /dev/null
@@ -1,22 +0,0 @@
-
-package com.by4cloud.platformx.business.invoice.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
-import com.by4cloud.platformx.business.invoice.service.FpInvoiceResultService;
-import com.by4cloud.platformx.business.entity.invoice.*;
-import com.by4cloud.platformx.business.invoice.mapper.FpInvoiceResultMapper;
-import org.springframework.scheduling.annotation.EnableAsync;
-import org.springframework.stereotype.Service;
-
-/**
- * 寮�鍏峰彂绁ㄨ繑鍥炲��
- *
- * @author kdq
- * @date 2024-11-05 18:44:09
- */
-@Service
-@EnableAsync
-public class FpInvoiceResultServiceImpl extends ServiceImpl<FpInvoiceResultMapper, InvoiceResult> implements FpInvoiceResultService {
-
-}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/utils/BipApiEnum.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/utils/BipApiEnum.java
deleted file mode 100644
index e5c95a7..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/utils/BipApiEnum.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.by4cloud.platformx.business.invoice.utils;
-
-public enum BipApiEnum {
-    鑾峰彇TOKEN("/iuap-api-auth/open-auth/selfAppAuth/getAccessToken"),
-    搴旀敹鍙戠エ淇濆瓨鎺ュ彛("/iuap-api-gateway/yonbip/EFI/receivable/saveandsubmit"),
-    搴旀敹鍙戠エ鍒犻櫎鎺ュ彛("/iuap-api-gateway/yonbip/EFI/earap/openapi/bill/receivable/batchdelete"),
-    搴旀敹鍙戠エ鏌ヨ鎺ュ彛("/iuap-api-gateway/yonbip/EFI/receivable/list"),
-
-	搴旀敹鍙戠エ淇敼鎺ュ彛("/iuap-api-gateway/yonbip/EFI/receivable/batchupdate"),
-    搴斾粯鍙戠エ淇濆瓨鎺ュ彛("/iuap-api-gateway/yonbip/EFI/payable/saveandsubmit"),
-    搴斾粯鍙戠エ鍒犻櫎鎺ュ彛("/iuap-api-gateway/yonbip/EFI/earap/openapi/bill/payable/batchdelete"),
-    搴斾粯鍙戠エ鏌ヨ鎺ュ彛("/iuap-api-gateway/yonbip/EFI/payable/list"),
-
-	搴斾粯鍙戠エ淇敼鎺ュ彛("/iuap-api-gateway/yonbip/EFI/payable/batchupdate"),
-    鏀舵鍗曟煡璇㈡帴鍙�("/iuap-api-gateway/yonbip/EFI/collection/list"),
-    鏀舵閫�娆惧崟淇濆瓨鎺ュ彛("/iuap-api-gateway/yonbip/EFI/arRefund/save"),
-    鏀舵閫�娆惧崟鍒犻櫎鎺ュ彛("/iuap-api-gateway/yonbip/EFI/arRefund/delete"),
-    鏀舵閫�娆惧崟鏌ヨ鎺ュ彛("/iuap-api-gateway/yonbip/EFI/arRefund/list"),
-    BIP鏂囦欢涓婃帴鍙�("/iuap-api-gateway/yonbip/uspace/iuap-apcom-file/rest/v1/file"),
-    BIP鏂囦欢鍒犻櫎鎺ュ彛("/iuap-api-gateway/yonbip/uspace/iuap-apcom-file/rest/v1/file/delete"),
-    搴旀敹鏄庣粏璐︽煡璇�("/iuap-api-gateway/h7rx7y0r/current_yonbip_default_sys/KKJCJK/DetailedAccountsReceivableController");
-
-
-
-    private String url;
-    BipApiEnum(String url) {
-        this.url = url;
-    }
-    public String getUrl() {
-        return url;
-    }
-}
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
deleted file mode 100644
index e048452..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/utils/BipHttpUtil.java
+++ /dev/null
@@ -1,307 +0,0 @@
-package com.by4cloud.platformx.business.invoice.utils;
-
-import cn.hutool.http.HttpRequest;
-import cn.hutool.http.HttpUtil;
-import cn.hutool.json.JSONUtil;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.TypeReference;
-
-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;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.mime.MultipartEntityBuilder;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.util.EntityUtils;
-import org.apache.pdfbox.pdmodel.PDDocument;
-import org.apache.pdfbox.pdmodel.PDPage;
-import org.apache.pdfbox.pdmodel.PDPageContentStream;
-import org.apache.pdfbox.pdmodel.common.PDRectangle;
-import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.stereotype.Component;
-
-import javax.imageio.ImageIO;
-import java.awt.image.BufferedImage;
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-@Component
-@RequiredArgsConstructor
-public class BipHttpUtil {
-    private static final Logger log = LoggerFactory.getLogger(BipHttpUtil.class);
-    @Value("${bip.ip}")
-    private String ip;
-	@Value("${bip.filePath}")
-	private String bipFilePath;
-
-	@Value("${bip.appKey}")
-	private String appKey;
-	@Value("${bip.appSecret}")
-	private String appSecret;
-    private final RedisTemplate redisTemplate;
-    public String getToken(){
-        String redisKey="BIP_TOKEN:";
-//        String appKey = "800b2805c5584f0abb8705acbe487dc5";
-//        String appSecret = "59ba72c62a6a27203d7e517787a738be89ba55cb";
-        redisKey+=appKey;
-        if (redisTemplate.hasKey(redisKey)){
-            return (String) redisTemplate.opsForValue().get(redisKey);
-        }
-        for (int i=0;i<10;i++){
-            long timestamp = System.currentTimeMillis();
-            Map<String,Object> paramMap = new HashMap<>();
-            paramMap.put("appKey",appKey);
-            paramMap.put("timestamp",timestamp);
-            String signature = null;
-            try {
-                signature = SignHelper.sign(paramMap,appSecret);
-            } catch (NoSuchAlgorithmException e) {
-                throw new RuntimeException(e);
-            } catch (UnsupportedEncodingException e) {
-                throw new RuntimeException(e);
-            } catch (InvalidKeyException e) {
-                throw new RuntimeException(e);
-            }
-            String url = ip+BipApiEnum.鑾峰彇TOKEN.getUrl()+"?appKey="+appKey+"&timestamp="+timestamp+"&signature="+signature;
-            String result = HttpUtil.get(url);
-            if (result==null){
-                continue;
-            }
-
-			try {
-				BipResVo<BipTokenVo> tokenVo = JSON.parseObject(result,new TypeReference<BipResVo<BipTokenVo>>(){});
-				if (tokenVo.getCode().equals("00000")){
-					redisTemplate.opsForValue().set(redisKey,tokenVo.getData().getAccess_token(),tokenVo.getData().getExpire()-10, TimeUnit.SECONDS);
-					System.out.println("-------bipToken:"+tokenVo.getData().getAccess_token());
-					return tokenVo.getData().getAccess_token();
-				}
-			}catch (Exception e){
-				throw new RuntimeException("bip璁块棶鎺ュ彛寮傚父,璇锋鏌ョ綉缁滄槸鍚︽甯�");
-			}
-
-
-        }
-        return null;
-
-    }
-    public String post(BipApiEnum apiEnum,Object data){
-        log.warn("-------------bipPost-url:"+ip+apiEnum.getUrl()+"?access_token="+getToken());
-        log.warn("-------------bipPost-req:"+JSONUtil.toJsonStr(data));
-		try {
-			String result = HttpRequest.post(ip+apiEnum.getUrl()+"?access_token="+getToken())
-					.body(JSONUtil.toJsonStr(data))
-					.timeout(10*3000)
-					.execute().body();
-			log.warn("-------------bipPost-res:"+result);
-			return result;
-		}catch (Exception e){
-			e.printStackTrace();
-			log.error("-------------bipPost-res:璇锋眰澶辫触");
-			throw new RuntimeException("BIP鎺ュ彛瓒呮椂,璇锋鏌ョ綉缁滃悗閲嶆柊灏濊瘯");
-		}
-            }
-
-	public String postUploadFile(String businessId,String fileLocalPath){
-		// 鍒涘缓HttpClient瀵硅薄
-		CloseableHttpClient httpClient = HttpClients.createDefault();
-		String param = "?access_token="+getToken()+"&businessType=yonbip-fi-earapbill&businessId="+businessId;
-		// 鍒涘缓HttpPost瀵硅薄锛屽苟璁剧疆URL
-		HttpPost httpPost = new HttpPost(ip+BipApiEnum.BIP鏂囦欢涓婃帴鍙�.getUrl()+param);
-		// 鍒涘缓MultipartEntityBuilder瀵硅薄锛屽苟璁剧疆鏂囦欢鍜屽叾浠栧弬鏁�
-		MultipartEntityBuilder builder = MultipartEntityBuilder.create();
-		builder.addBinaryBody("files", new File(bipFilePath+fileLocalPath), ContentType.MULTIPART_FORM_DATA, fileLocalPath);
-		// 灏哅ultipartEntityBuilder鏋勫缓鐨勫疄浣撳璞¤缃埌HttpPost瀵硅薄涓�
-		HttpEntity entity = builder.build();
-		httpPost.setEntity(entity);
-		// 鎵цHttpPost璇锋眰锛岃幏鍙栧搷搴�
-		HttpResponse response = null;
-		String responseBody = null;
-		try {
-			response = httpClient.execute(httpPost);
-			// 瑙f瀽鍝嶅簲
-			HttpEntity responseEntity = response.getEntity();
-			 responseBody= EntityUtils.toString(responseEntity);
-			System.out.println(responseBody);
-
-			// 鍏抽棴HttpClient
-			httpClient.close();
-		} catch (IOException e) {
-			throw new RuntimeException(e);
-		}
-		return responseBody;
-	}
-
-	public String postUploadFileUrl(String businessId,String fileLocalPath){
-		URL url = null;
-		InputStream stream = null;
-		String lastThreeChars = fileLocalPath.substring(fileLocalPath.length() - 3);
-		String lowLast = lastThreeChars.toLowerCase();
-		if (lowLast.equals("png") || lowLast.equals("jpeg") || lowLast.equals("jpg")) {
-			stream = pngToPdf(fileLocalPath, lowLast);
-		} else {
-			try {
-				url = new URL(fileLocalPath);
-				URLConnection connection = url.openConnection();
-				stream = connection.getInputStream();
-			} catch (MalformedURLException e) {
-				throw new RuntimeException(e);
-			} catch (IOException e) {
-				throw new RuntimeException(e);
-			}
-		}
-		// 鍒涘缓HttpClient瀵硅薄
-		CloseableHttpClient httpClient = HttpClients.createDefault();
-		String param = "?access_token="+getToken()+"&businessType=yonbip-fi-earapbill&businessId="+businessId;
-		// 鍒涘缓HttpPost瀵硅薄锛屽苟璁剧疆URL
-		HttpPost httpPost = new HttpPost(ip+BipApiEnum.BIP鏂囦欢涓婃帴鍙�.getUrl()+param);
-		// 鍒涘缓MultipartEntityBuilder瀵硅薄锛屽苟璁剧疆鏂囦欢鍜屽叾浠栧弬鏁�
-		MultipartEntityBuilder builder = MultipartEntityBuilder.create();
-		// 灏哅ultipartEntityBuilder鏋勫缓鐨勫疄浣撳璞¤缃埌HttpPost瀵硅薄涓�
-		builder.addBinaryBody("files", stream, ContentType.MULTIPART_FORM_DATA, "MX_"+System.currentTimeMillis()+".pdf");
-		HttpEntity entity = builder.build();
-		httpPost.setEntity(entity);
-		// 鎵цHttpPost璇锋眰锛岃幏鍙栧搷搴�
-		HttpResponse response = null;
-		String responseBody = null;
-		try {
-			response = httpClient.execute(httpPost);
-			// 瑙f瀽鍝嶅簲
-			HttpEntity responseEntity = response.getEntity();
-			responseBody= EntityUtils.toString(responseEntity);
-			System.out.println(responseBody);
-
-			// 鍏抽棴HttpClient
-			httpClient.close();
-		} catch (IOException e) {
-			throw new RuntimeException(e);
-		}
-		return responseBody;
-	}
-
-	public  InputStream pngToPdf(String filePath,String format){
-		//String bipFilePath = "/Users/kongdeqiang/Desktop/";
-		long l = System.currentTimeMillis();
-		InputStream stream = null;
-		try {
-			// 鍔犺浇PNG鍥剧墖
-			URL url1 = new URL(filePath);
-			InputStream inputStream = url1.openStream();
-			OutputStream out = new FileOutputStream(bipFilePath+format+l+"."+format);
-			int bytesRead = 0;
-			byte[] buffer = new byte[8192];
-			while ((bytesRead = inputStream.read(buffer,0,8192)) !=-1){
-				out.write(buffer,0,bytesRead);
-			}
-			out.close();
-			inputStream.close();
-
-			File file = new File(bipFilePath+format+l+"."+format);
-			BufferedImage image = ImageIO.read(file);
-			ByteArrayOutputStream baos = new ByteArrayOutputStream();
-			ImageIO.write(image, format, baos);
-			byte[] bytes = baos.toByteArray();
-			// 鍒涘缓涓�涓狿DF鏂囨。
-			PDDocument document = new PDDocument();
-			PDPage page = new PDPage(new PDRectangle(image.getWidth(), image.getHeight()));
-			document.addPage(page);
-
-			// 灏嗗浘鐗囪浆鎹负PDF涓殑瀵硅薄
-			PDImageXObject pdImage = PDImageXObject.createFromByteArray(document, bytes, format);
-			PDPageContentStream contents = new PDPageContentStream(document, page);
-			contents.drawImage(pdImage, 0, 0, image.getWidth(), image.getHeight());
-			contents.close();
-
-			// 淇濆瓨PDF鏂囨。
-			document.save(bipFilePath+format+l+".pdf");
-			document.close();
-			stream = Files.newInputStream(Paths.get(bipFilePath+format+l+".pdf"));
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		return stream;
-	}
-
-
-	public String postDeleteFile(String businessId, String fid){
-		// 鍒涘缓HttpClient瀵硅薄
-		CloseableHttpClient httpClient = HttpClients.createDefault();
-		String param = "?access_token="+getToken()+"&businessType=yonbip-fi-earapbill&businessId="+businessId+"&fid="+fid;
-		// 鍒涘缓HttpPost瀵硅薄锛屽苟璁剧疆URL
-		HttpPost httpPost = new HttpPost(ip+BipApiEnum.BIP鏂囦欢鍒犻櫎鎺ュ彛.getUrl()+param);
-		// 鎵цHttpPost璇锋眰锛岃幏鍙栧搷搴�
-		HttpResponse response = null;
-		String responseBody = null;
-		try {
-			response = httpClient.execute(httpPost);
-			// 瑙f瀽鍝嶅簲
-			HttpEntity responseEntity = response.getEntity();
-			responseBody= EntityUtils.toString(responseEntity);
-			System.out.println(responseBody);
-
-			// 鍏抽棴HttpClient
-			httpClient.close();
-		} catch (IOException e) {
-			throw new RuntimeException(e);
-		}
-		return responseBody;
-	}
-
-	public static void main1(String[] args) {
-	/*	File file = new File("/Users/kongdeqiang/Desktop/1725590083564FFDXJS.pdf");
-		Map<String,Object> paramMap = new HashMap<>();
-		paramMap.put("access_token","");
-		paramMap.put("businessType","yonbip-fi-earapbill");
-		paramMap.put("businessId","");
-		paramMap.put("file",file);
-		Map<String,Object> dataBody = new HashMap<>();
-		String result = HttpRequest.post("https://bip01.res.jzeg.cn"+BipApiEnum.BIP鏂囦欢涓婃帴鍙�.getUrl())
-				.form(paramMap)
-				.timeout(10*1000)
-				.execute().body();
-		System.out.println(result);*/
-	}
-
-    public static void main(String[] args) throws Exception {
-		//姝e紡
-//        String appKey = "800b2805c5584f0abb8705acbe487dc5";
-//        String appSecret = "59ba72c62a6a27203d7e517787a738be89ba55cb";
-		//娴嬭瘯
-//		String appKey = "91d28a4b776a4ab992db225958cf2d93";
-//		String appSecret = "77abbe9a3bc647ccf4a2a08629a7a0316ffff830";
-//        for (int i=0;i<100;i++){
-//            long timestamp = System.currentTimeMillis();
-//            Map<String,Object> paramMap = new HashMap<>();
-//            paramMap.put("appKey",appKey);
-//            paramMap.put("timestamp",timestamp);
-//            String signature = SignHelper.sign(paramMap,appSecret);
-//            System.out.println("signature:"+signature);
-//            String url = "https://bip.res.jzeg.cn"+BipApiEnum.鑾峰彇TOKEN.getUrl()+"?appKey="+appKey+"&timestamp="+timestamp+"&signature="+signature;
-//            System.out.println(url);
-//            String result = HttpUtil.get(url);
-//            System.out.println(result);
-//            Thread.sleep(300);
-//        }
-
-		//InputStream pdf = BipHttpUtil.pngToPdf("/Users/kongdeqiang/Desktop/WechatIMG316.png", "png");
-
-
-	}
-}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/utils/NumUtils.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/utils/NumUtils.java
deleted file mode 100644
index 634cb36..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/invoice/utils/NumUtils.java
+++ /dev/null
@@ -1,305 +0,0 @@
-package com.by4cloud.platformx.business.invoice.utils;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-
-/**
- * @author xfei
- * @date 2022/5/27涓嬪崍8:26
- */
-public class NumUtils {
-	/**
-	 * 绮剧‘灏忔暟
-	 * @param f 灏忔暟
-	 * @param length 绮剧‘浣嶆暟
-	 * @return
-	 */
-	public static Float accurateFloat(Float f,int length){
-		BigDecimal b = new BigDecimal(f.toString());
-		f = b.setScale(length,BigDecimal.ROUND_HALF_UP).floatValue();
-		return f;
-	}
-	public static Float accurateFloat(Float f){
-		return accurateFloat(f,3);
-	}
-
-	public static Double accurateFloat(Double f,int length){
-		BigDecimal b = new BigDecimal(f.toString());
-		f = b.setScale(length,BigDecimal.ROUND_HALF_UP).doubleValue();
-		return f;
-	}
-	public static Double accurateFloat(Double f){
-		return accurateFloat(f,3);
-	}
-
-
-	public static Double accurateDouble(Double f,int length){
-		if(f==null){
-			f=0d;
-		}
-		BigDecimal b2 = new BigDecimal(f.toString());
-		f = b2.setScale(length,BigDecimal.ROUND_HALF_UP).doubleValue();
-		return f;
-	}
-	public static Double accurateDouble(Double f){
-		return accurateDouble(f,3);
-	}
-
-	/**
-	 * 鍔�
-	 * @param a
-	 * @param b
-	 * @return
-	 */
-	public static Double addDouble(Double a,Double b){
-		if (a==null)a=0d;
-		if (b==null)b=0d;
-		BigDecimal aa = new BigDecimal(a+"");
-		BigDecimal bb = new BigDecimal(b+"");
-		aa = aa.add(bb);
-		aa = aa.setScale(2,BigDecimal.ROUND_HALF_UP);
-		return aa.doubleValue();
-	}
-	public static Double addDoubles(Double ... a){
-		Double result = 0d;
-		for (Double d :a){
-			result =addDouble(result,d);
-		}
-		return result;
-	}
-
-	public static Double addDoubles(int len,Double ... a){
-		Double result = 0d;
-		for (Double d :a){
-			result =addDouble(result,d,len);
-		}
-		return result;
-	}
-
-	/**
-	 * 鍑�
-	 * @param a
-	 * @param b
-	 * @return
-	 */
-	public static Double subtractDouble(Double a,Double b){
-		if (a==null)a=0d;
-		if (b==null)b=0d;
-		BigDecimal aa = new BigDecimal(a+"");
-		BigDecimal bb = new BigDecimal(b+"");
-		aa = aa.subtract(bb);
-		aa = aa.setScale(2,BigDecimal.ROUND_HALF_UP);
-		return aa.doubleValue();
-	}
-
-	/**
-	 * 鍑� 鍙垗涓嶅叆
-	 * @param a
-	 * @param b
-	 * @return
-	 */
-	public static Double subtractDoubleDown(Double a,Double b){
-		if (a==null)a=0d;
-		if (b==null)b=0d;
-		BigDecimal aa = new BigDecimal(a+"");
-		BigDecimal bb = new BigDecimal(b+"");
-		aa = aa.subtract(bb);
-		aa = aa.setScale(2,BigDecimal.ROUND_DOWN);
-		return aa.doubleValue();
-	}
-
-	/**
-	 * 涔�
-	 * @param a
-	 * @param b
-	 * @return
-	 */
-	public static Double multiplyDouble(Double a,Double b){
-		if (a==null)a=0d;
-		if (b==null)b=0d;
-		BigDecimal aa = new BigDecimal(a+"");
-		BigDecimal bb = new BigDecimal(b+"");
-		aa = aa.multiply(bb);
-		aa = aa.setScale(2,BigDecimal.ROUND_HALF_UP);
-		return aa.doubleValue();
-	}
-	/**
-	 * 涔� 鍙垗涓嶅叆
-	 * @param a
-	 * @param b
-	 * @return
-	 */
-	public static Double multiplyDoubleDown(Double a,Double b){
-		if (a==null)a=0d;
-		if (b==null)b=0d;
-		BigDecimal aa = new BigDecimal(a+"");
-		BigDecimal bb = new BigDecimal(b+"");
-		aa = aa.multiply(bb);
-		aa = aa.setScale(2,BigDecimal.ROUND_DOWN);
-		return aa.doubleValue();
-	}
-	/**
-	 * 瀹夊叏鐨勯櫎娉曡繍绠楋紝澶勭悊 null 鍜岄櫎浠ラ浂锛屽苟杩斿洖淇濈暀涓や綅灏忔暟鐨勭粨鏋溿��
-	 *
-	 * @param a 琚櫎鏁�
-	 * @param b 闄ゆ暟
-	 * @return (a / b) 鐨勭粨鏋滐紝淇濈暀涓や綅灏忔暟銆傚鏋� b 涓� 0 鎴� null锛屽垯杩斿洖 0.0銆�
-	 */
-	public static Double divideDouble(Double a, Double b) {
-		// 浣跨敤 Double.valueOf(0d) 鏉ラ伩鍏嶈嚜鍔ㄨ绠卞甫鏉ョ殑娼滃湪闂锛岃櫧鐒惰繖閲� 0d 鏄瓧闈㈤噺
-		Double dividend = a==null? 0.0:a;
-		Double divisor = b==null? 0.0:b;
-
-		// 澶勭悊闄や互闆剁殑鎯呭喌
-		if (divisor.equals(0.0)) {
-			// 鍙互鏍规嵁涓氬姟閫昏緫閫夋嫨杩斿洖 0.0銆乶ull 鎴栨姏鍑� IllegalArgumentException
-			return 0.0;
-		}
-
-		// 浣跨敤 String.valueOf 鎴� toString() 鏉ラ伩鍏� double 鏋勯�犲櫒鐨勭簿搴﹂棶棰�
-		BigDecimal bdDividend = new BigDecimal(dividend.toString());
-		BigDecimal bdDivisor = new BigDecimal(divisor.toString());
-
-		// 鍦ㄩ櫎娉曠殑鍚屾椂鎸囧畾绮惧害鍜岃垗鍏ユā寮�
-		BigDecimal result = bdDividend.divide(bdDivisor, 2, RoundingMode.HALF_UP);
-
-		return result.doubleValue();
-	}
-//	/**
-//	 * 闄�
-//	 * 闄ゆ硶
-//	 * @param a
-//	 * @param b
-//	 * @return
-//	 */
-//	public static Double divideDouble(Double a,Double b){
-//		if (a==null)a=0d;
-//		if (b==null)b=0d;
-//		BigDecimal aa = new BigDecimal(a+"");
-//		BigDecimal bb = new BigDecimal(b+"");
-//		aa = aa.divide(bb);
-//		aa = aa.setScale(2,BigDecimal.ROUND_HALF_UP);
-//		return aa.doubleValue();
-//	}
-
-	public static Double divideDoubleUp(Double a,Double b){
-		if (a==null)a=0d;
-		if (b==null)b=0d;
-		BigDecimal aa = new BigDecimal(a+"");
-		BigDecimal bb = new BigDecimal(b+"");
-		aa = aa.divide(bb,BigDecimal.ROUND_HALF_UP);
-		aa = aa.setScale(2,BigDecimal.ROUND_HALF_UP);
-		return aa.doubleValue();
-	}
-
-	/**
-	 * 闄�
-	 * 闄ゆ硶
-	 * @param a
-	 * @param b
-	 * @return
-	 */
-	public static Double divideDoubleDown(Double a,Double b){
-		if (a==null)a=0d;
-		if (b==null)b=0d;
-		BigDecimal aa = new BigDecimal(a+"");
-		BigDecimal bb = new BigDecimal(b+"");
-		aa = aa.divide(bb);
-		aa = aa.setScale(2,BigDecimal.ROUND_DOWN);
-		return aa.doubleValue();
-	}
-	/**
-	 * 鍔�
-	 * @param a
-	 * @param b
-	 * @return
-	 */
-	public static Double addDouble(Double a,Double b,int len){
-		if (a==null)a=0d;
-		if (b==null)b=0d;
-		BigDecimal aa = new BigDecimal(a+"");
-		BigDecimal bb = new BigDecimal(b+"");
-		aa = aa.add(bb);
-		aa = aa.setScale(len,BigDecimal.ROUND_HALF_UP);
-		return aa.doubleValue();
-	}
-
-	/**
-	 * 鍑�
-	 * @param a
-	 * @param b
-	 * @return
-	 */
-	public static Double subtractDouble(Double a,Double b,int len){
-		if (a==null)a=0d;
-		if (b==null)b=0d;
-		BigDecimal aa = new BigDecimal(a+"");
-		BigDecimal bb = new BigDecimal(b+"");
-		aa = aa.subtract(bb);
-		aa = aa.setScale(len,BigDecimal.ROUND_HALF_UP);
-		return aa.doubleValue();
-	}
-
-	/**
-	 * 涔�
-	 * @param a
-	 * @param b
-	 * @return
-	 */
-	public static Double multiplyDouble(Double a,Double b,int len){
-		if (a==null)a=0d;
-		if (b==null)b=0d;
-		BigDecimal aa = new BigDecimal(a+"");
-		BigDecimal bb = new BigDecimal(b+"");
-		aa = aa.multiply(bb);
-		aa = aa.setScale(len,BigDecimal.ROUND_HALF_UP);
-		return aa.doubleValue();
-	}
-	/**
-	 * 闄�
-	 * @param a
-	 * @param b
-	 * @return
-	 */
-	public static Double divideDouble(Double a,Double b,int len){
-		if (a==null)a=0d;
-		if (b==null)b=0d;
-		if(b==0){
-			return 0.0d;
-		}
-		BigDecimal aa = new BigDecimal(a+"");
-		BigDecimal bb = new BigDecimal(b+"");
-		aa = aa.divide(bb,len, BigDecimal.ROUND_HALF_UP);
-		return aa.doubleValue();
-	}
-
-
-
-	public static Double floatToD(Float f){
-		if (f == null) {
-			return new Double(0);
-		}
-		return new Double(f);
-	}
-
-	public static void main(String[] args) {
-//		System.out.println(NumUtils.accurateDouble(60.1575,3));
-		System.out.println(NumUtils.addDoubles(6.1234d, 6.1234d, 4.33d));
-	}
-
-	/**
-	 * 鍙垗涓嶅叆璁$畻鏂规硶
-	 *
-	 * @param number
-	 * @param decimalPlaces
-	 * @return
-	 */
-	public static double truncateToDecimalPlaces(double number, int decimalPlaces) {
-		if (decimalPlaces < 0) {
-			throw new IllegalArgumentException("灏忔暟浣嶆暟涓嶈兘涓鸿礋鏁�");
-		}
-		double multiplier = Math.pow(10, decimalPlaces);
-		return (double) ((long) (number * multiplier)) / multiplier;
-	}
-
-}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/BillingInfoMapper.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/BillingInfoMapper.java
deleted file mode 100644
index 404a5c2..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/BillingInfoMapper.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.by4cloud.platformx.business.mapper;
-
-import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
-import com.by4cloud.platformx.business.entity.BillingInfo;
-import org.apache.ibatis.annotations.Mapper;
-
-@Mapper
-public interface BillingInfoMapper extends PlatformxBaseMapper<BillingInfo> {
-
-
-}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/BillingItemMapper.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/BillingItemMapper.java
deleted file mode 100644
index a8ed985..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/BillingItemMapper.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.by4cloud.platformx.business.mapper;
-
-import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
-import com.by4cloud.platformx.business.entity.BillingItem;
-import org.apache.ibatis.annotations.Mapper;
-
-@Mapper
-public interface BillingItemMapper extends PlatformxBaseMapper<BillingItem> {
-
-
-}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/BwRequestRecordMapper.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/BwRequestRecordMapper.java
new file mode 100644
index 0000000..02c94d4
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/BwRequestRecordMapper.java
@@ -0,0 +1,10 @@
+package com.by4cloud.platformx.business.mapper;
+
+import com.by4cloud.platformx.business.entity.BusinessCustomer;
+import com.by4cloud.platformx.business.entity.BwRequestRecord;
+import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface BwRequestRecordMapper extends PlatformxBaseMapper<BwRequestRecord> {
+}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractInvoiceMapper.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractInvoiceMapper.java
new file mode 100644
index 0000000..0b07b08
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractInvoiceMapper.java
@@ -0,0 +1,9 @@
+package com.by4cloud.platformx.business.mapper;
+
+import com.by4cloud.platformx.business.entity.ContractInvoice;
+import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ContractInvoiceMapper extends PlatformxBaseMapper<ContractInvoice> {
+}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/SaleCreditMapper.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/SaleCreditMapper.java
deleted file mode 100644
index 437929c..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/SaleCreditMapper.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.by4cloud.platformx.business.mapper;
-
-import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
-import com.by4cloud.platformx.business.entity.SaleCredit;
-import org.apache.ibatis.annotations.Mapper;
-
-@Mapper
-public interface SaleCreditMapper extends PlatformxBaseMapper<SaleCredit> {
-
-
-}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/BillingInfoService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/BillingInfoService.java
deleted file mode 100644
index a9de235..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/BillingInfoService.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.by4cloud.platformx.business.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.by4cloud.platformx.business.entity.BillingInfo;
-import com.by4cloud.platformx.business.entity.Contract;
-import com.by4cloud.platformx.business.vo.InvoicePreviewVo;
-
-public interface BillingInfoService extends IService<BillingInfo> {
-
-    BillingInfo getInviceByContractId(InvoicePreviewVo previewVo, Contract contract,Integer doType);
-}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/BillingItemService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/BillingItemService.java
deleted file mode 100644
index 1bdb034..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/BillingItemService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.by4cloud.platformx.business.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.by4cloud.platformx.business.entity.BillingItem;
-
-public interface BillingItemService extends IService<BillingItem> {
-
-}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/BusinessCustomerService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/BusinessCustomerService.java
index e63df12..9c974fa 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/BusinessCustomerService.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/BusinessCustomerService.java
@@ -2,7 +2,8 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.by4cloud.platformx.business.entity.BusinessCustomer;
+import com.by4cloud.platformx.common.data.mybatis.IIService;
 
-public interface BusinessCustomerService extends IService<BusinessCustomer> {
+public interface BusinessCustomerService extends IIService<BusinessCustomer> {
 
 }
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractInvoiceService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractInvoiceService.java
new file mode 100644
index 0000000..9338f0a
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractInvoiceService.java
@@ -0,0 +1,24 @@
+package com.by4cloud.platformx.business.service;
+
+import com.by4cloud.platformx.business.dto.GenInvoiceInfoDTO;
+import com.by4cloud.platformx.common.core.util.R;
+
+public interface ContractInvoiceService {
+	R getContractOutBound(Long contractId);
+
+	R genInvoiceInfo(GenInvoiceInfoDTO genInvoiceInfoDTO);
+
+	R toInvoice(GenInvoiceInfoDTO genInvoiceInfoDTO);
+
+	R getContractInvoiceList(Long contractId);
+
+	R toRedInvoice(Long invoiceId);
+
+	R queryBlueInvoice();
+
+	R queryRedInvoice();
+
+	void takeEffect(Long id);
+
+	void refuseApproval(Long id);
+}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractService.java
index 1e2679d..2c0a3b0 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractService.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractService.java
@@ -38,4 +38,10 @@
 	void exportContractYMJJGCLWord(Long id,HttpServletResponse response);
 
 	R genCycleReceiced();
+
+	void exportContractYMJGYPMMWord(Long id, HttpServletResponse response);
+
+	void exportContractYMJGKCPMMWord(Long id, HttpServletResponse response);
+
+	void exportContractYMJCGWord(Long id, HttpServletResponse response);
 }
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
deleted file mode 100644
index a2bdce5..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/InvoiceService.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.by4cloud.platformx.business.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.by4cloud.platformx.business.entity.BillingInfo;
-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.vo.InvoicingVo;
-import com.by4cloud.platformx.business.vo.ContractOutBoundVo;
-
-import java.util.List;
-import java.util.Map;
-
-public interface InvoiceService extends IService<InvoiceResult> {
-
-    Map<String, Object> toRedTicket(SaleCredit saleCredit);
-
-    Map<String, Object> toRedTicket1(BillingInfo billingInfo);
-
-    InvoicingVo toGetByCompare(SaleCredit saleCredit, List<ContractOutBound> contractOutBoundList);
-
-    InvoicingVo toGetByCompareByVo(SaleCredit saleCredit, List<ContractOutBoundVo> contractOutBoundList);
-
-    InvoicingVo toGetByCompareByVo1(BillingInfo saleCredit, List<ContractOutBoundVo> contractOutBoundList);
-
-    Map<String, Object> toKaipiao(InvoicingVo invoicingVo);
-
-    Map<String,Object> downInvoiceMethod(InvoiceResult invoiceResult);
-
-    boolean pushBlue(Long railwayId, Integer type); //0搴旀敹 1搴斾粯
-
-
-}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/PaymentConfirmService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/PaymentConfirmService.java
index bab880e..79d5a13 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/PaymentConfirmService.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/PaymentConfirmService.java
@@ -1,5 +1,6 @@
 package com.by4cloud.platformx.business.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.by4cloud.platformx.business.dto.PaymentConfirmAddDTO;
 import com.by4cloud.platformx.business.entity.PaymentConfirm;
 import com.by4cloud.platformx.common.core.util.R;
@@ -10,4 +11,8 @@
 	R add(PaymentConfirmAddDTO addDTO);
 
     R syncPaymentRecepit();
+
+	String getAccessToken(String accessToken);
+
+	void saveBipRequestRecord(JSONObject params,String methodName, String result);
 }
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ProductService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ProductService.java
index 5a42c73..4b02a17 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ProductService.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ProductService.java
@@ -3,10 +3,11 @@
 import cn.hutool.core.lang.tree.Tree;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.by4cloud.platformx.business.entity.Product;
+import com.by4cloud.platformx.common.data.mybatis.IIService;
 
 import java.util.List;
 
-public interface ProductService extends IService<Product> {
+public interface ProductService extends IIService<Product> {
 
     List<Tree<Long>> treeList(Long parentId, String productName);
 }
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/SaleCreditService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/SaleCreditService.java
deleted file mode 100644
index fe3e291..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/SaleCreditService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.by4cloud.platformx.business.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.by4cloud.platformx.business.entity.SaleCredit;
-
-public interface SaleCreditService extends IService<SaleCredit> {
-
-}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/BillingInfoServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/BillingInfoServiceImpl.java
deleted file mode 100644
index 76a45d3..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/BillingInfoServiceImpl.java
+++ /dev/null
@@ -1,235 +0,0 @@
-package com.by4cloud.platformx.business.service.impl;
-
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-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.invoice.service.BIPYsService;
-import com.by4cloud.platformx.business.mapper.BillingInfoMapper;
-import com.by4cloud.platformx.business.service.*;
-import com.by4cloud.platformx.business.vo.ContractOutBoundVo;
-import com.by4cloud.platformx.business.vo.InvoicePreviewVo;
-import com.by4cloud.platformx.common.core.util.R;
-import com.by4cloud.platformx.common.data.mybatis.BaseModel;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * 寮�绁ㄤ俊鎭�
- *
- * @author wjli
- * @date 2026-06-04 10:50:20
- */
-@Service
-@RequiredArgsConstructor
-public class BillingInfoServiceImpl extends ServiceImpl<BillingInfoMapper, BillingInfo> implements BillingInfoService {
-    private final BillingInfoMapper billingInfoMapper;
-    private final BusinessCustomerService businessCustomerService;
-    private final ContractOutBoundService contractOutBoundService;
-    private final ProductService productService;
-    private final ContractSubjectMatterService contractSubjectMatterService;
-    private final RemoteDeptService remoteDeptService;
-
-    /*
-     * 鎷兼帴寮�绁ㄦ暟鎹�
-     */
-    @Override
-    public BillingInfo getInviceByContractId(InvoicePreviewVo previewVo,Contract contract,Integer doType) {
-
-        Long contractId = previewVo.getContractId();
-
-        int showType = 0; // 0涓烘嫾鎺� 1 涓洪瑙堣绠�
-        if (previewVo.getContractOutBoundIds() != null && !previewVo.getContractOutBoundIds().isEmpty()) {
-            showType = 1;
-        }
-
-        BillingInfo billingInfo = new BillingInfo();
-        billingInfo.setContractId(contractId);
-        billingInfo.setContractName(contract.getContractName());
-        billingInfo.setContractNo(contract.getContractNo());
-
-        BusinessCustomer partA = businessCustomerService.getById(contract.getPartyAId());
-        if (partA != null) {
-            billingInfo.setPartyA(partA.getCompanyName());
-            billingInfo.setCreditCodeA(partA.getCreditCode());
-            billingInfo.setBankAccountA(partA.getBankAccount());
-            billingInfo.setBankNameA(partA.getBankName());
-        }
-        R<SysDept> r = remoteDeptService.getById(contract.getPartyBId());
-
-        SysDept dept = r.getData();
-        if (dept != null) {
-            billingInfo.setPartyB(dept.getOrgName());
-            billingInfo.setCreditCodeB(dept.getOrgCode());
-            billingInfo.setBankAccountB(dept.getOrgBankAccount());
-            billingInfo.setBankNameB(dept.getOrgBank());
-        }
-
-        if(doType==1) {
-            if (billingInfo.getId() == null) {
-                billingInfoMapper.insert(billingInfo);
-            }
-        }
-
-        Long billingInfoId = billingInfo.getId();
-
-        LambdaQueryWrapper<ContractOutBound> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        lambdaQueryWrapper.eq(ContractOutBound::getContractId, contract.getId());
-        lambdaQueryWrapper.eq(ContractOutBound::getInvoiceSatus, 0);
-        if (showType == 1) {
-            lambdaQueryWrapper.in(BaseModel::getId, previewVo.getContractOutBoundIds());
-        }
-        lambdaQueryWrapper.orderByAsc(ContractOutBound::getOutBoundTime);
-        List<ContractOutBound> outBoundList = contractOutBoundService.list(lambdaQueryWrapper);
-
-        if (outBoundList != null) {
-            if (!outBoundList.isEmpty()) {
-                List<ContractOutBoundVo> list = new ArrayList<>();
-                for (ContractOutBound outBound : outBoundList) {
-
-                    if(doType==1){
-                        outBound.setInvoiceSatus(1);
-                        outBound.setSaleCreditId(billingInfoId);
-                    }
-
-                    ContractOutBoundVo vo = new ContractOutBoundVo();
-                    BeanUtil.copyProperties(outBound, vo);
-                    Product product = productService.getOne(new LambdaQueryWrapper<Product>().eq(Product::getErpCode, outBound.getSubjectMatterCode()).last("limit 1"));
-                    Product productP = productService.getOne(new LambdaQueryWrapper<Product>().eq(Product::getId, product.getParentId()).last("limit 1"));
-
-                    if (product != null) {
-                        vo.setProductId(product.getId());
-                        vo.setInvoiceName("*" + product.getTaxClass() + "*" + (productP != null ? productP.getProductName() : "") + "*");
-                        vo.setTaxClass(product.getTaxClass());
-                        vo.setTaxCode(product.getTaxCode());
-                        vo.setTaxRate(product.getTaxRate());
-                    }
-
-                    ContractSubjectMatter matter = contractSubjectMatterService.getOne(new LambdaQueryWrapper<ContractSubjectMatter>()
-                            .eq(ContractSubjectMatter::getContractId, contract.getId())
-                            .eq(ContractSubjectMatter::getMaterialCode, outBound.getSubjectMatterCode())
-                            .last("limit 1")
-                    );
-
-                    if (matter != null) {
-                        vo.setSpecification(matter.getSpecification());
-                        vo.setUnit(matter.getUnit());
-                        vo.setUnitPrice(matter.getUnitPrice());
-                    }
-                    list.add(vo);
-                }
-
-                billingInfo.setContractOutBoundList(list);
-
-                if (showType == 1) {
-                    List<ContractOutBoundVo> result = getListGroupingByProductId(list);
-
-                    BigDecimal totalPriceAll = BigDecimal.ZERO;
-                    BigDecimal totalTaxAll = BigDecimal.ZERO;
-                    BigDecimal totalPriceNoTaxAll = BigDecimal.ZERO;
-                    for (ContractOutBoundVo outBoundVo : result) {
-                        outBoundVo.setTotalPrice(outBoundVo.getUnitPrice().multiply(outBoundVo.getOutBoundNum()).setScale(2, RoundingMode.HALF_UP));
-                        totalPriceAll = totalPriceAll.add(outBoundVo.getTotalPrice());
-
-                        outBoundVo.setTotalTax(getTaxAmount(outBoundVo.getTaxRate(), outBoundVo.getTotalPrice()));
-                        totalTaxAll = totalTaxAll.add(outBoundVo.getTotalTax());
-
-                        outBoundVo.setTotalPriceNoTax(getNoTaxAmount(outBoundVo.getTaxRate(), outBoundVo.getTotalPrice()));
-                        totalPriceNoTaxAll = totalPriceNoTaxAll.add(outBoundVo.getTotalPriceNoTax());
-                    }
-                    billingInfo.setTotalAmount(totalPriceAll);
-                    billingInfo.setTotalTax(totalTaxAll);
-                    billingInfo.setAmountNoTax(totalPriceNoTaxAll);
-                    billingInfo.setContractOutBoundList(result);
-                    if(billingInfoId != null){
-                        billingInfoMapper.updateById(billingInfo);
-                    }else{
-                        billingInfoMapper.insert(billingInfo);
-                    }
-                }
-                if(doType==1){
-                    contractOutBoundService.updateBatchById(outBoundList);
-                }
-            }
-        }
-        return billingInfo;
-    }
-
-    private List<ContractOutBoundVo> getListGroupingByProductId(List<ContractOutBoundVo> list) {
-        //鎻愬彇productId
-        List<Long> productIds = list.stream().map(ContractOutBoundVo::getProductId).collect(Collectors.toList());
-        //鍘婚噸
-        List<Long> result = productIds.stream().distinct().collect(Collectors.toList());
-        List<ContractOutBoundVo>  noRest = new ArrayList<>();
-
-        for(Long id : result){
-
-            ContractOutBoundVo newVo = new ContractOutBoundVo();
-
-            int times = 0;
-            String obIds = "";
-            BigDecimal num = BigDecimal.ZERO;
-
-            for(ContractOutBoundVo vo : list){
-                if(vo.getProductId().equals(id)){
-                    times++;
-                    if(times == 1){
-                        BeanUtil.copyProperties(vo,newVo);
-                    }
-                    num = num.add(vo.getOutBoundNum());
-                    if(StrUtil.isEmpty(obIds)){
-                        obIds = "" + vo.getId();
-                    }else{
-                        obIds += "," + vo.getId();
-                    }
-                }
-            }
-            newVo.setOutBoundNum(num);
-            newVo.setContractOutBoundIds(obIds);
-            noRest.add(newVo);
-        }
-        return noRest;
-    }
-
-  /*  if (showType == 1) {
-        //1.涓嶅惈绋庨噾棰�=鍚◣鎬婚梅(1+绋庣巼)
-        //2.绋庨=鍚◣鎬婚梅(1+绋庣巼)x绋庣巼
-        vo.setTotalPrice(vo.getUnitPrice().multiply(outBound.getOutBoundNum()).setScale(2, RoundingMode.HALF_UP));
-        vo.setTotalTax(getTaxAmount(vo.getTaxRate(), vo.getTotalPrice()));
-        vo.setTotalPriceNoTax(getNoTaxAmount(vo.getTaxRate(), vo.getTotalPrice()));
-    }*/
-
-    public BigDecimal getTaxAmount(double taxRate,BigDecimal totalPrice) {
-        // 1銆佺◣鐜囪浆BigDecimal骞惰浆涓哄皬鏁� 13 鈫� 0.13
-        BigDecimal taxPercent = BigDecimal.valueOf(taxRate).divide(new BigDecimal("100"));
-        // 1+绋庣巼
-        BigDecimal rateSum = BigDecimal.ONE.add(taxPercent);
-        // 涓嶅惈绋庨噾棰濓紝淇濈暀2浣嶃�佸洓鑸嶄簲鍏�
-        BigDecimal noTax = totalPrice.divide(rateSum, 2, RoundingMode.HALF_UP);
-        // 绋庨
-        BigDecimal taxAmount = totalPrice.subtract(noTax);
-
-        return taxAmount;
-    }
-
-    public BigDecimal getNoTaxAmount(double taxRate,BigDecimal totalPrice){
-        // 1銆佺◣鐜囪浆BigDecimal骞惰浆涓哄皬鏁� 13 鈫� 0.13
-        BigDecimal taxPercent = BigDecimal.valueOf(taxRate).divide(new BigDecimal("100"));
-        // 1+绋庣巼
-        BigDecimal rateSum = BigDecimal.ONE.add(taxPercent);
-        // 涓嶅惈绋庨噾棰濓紝淇濈暀2浣嶃�佸洓鑸嶄簲鍏�
-        BigDecimal noTax = totalPrice.divide(rateSum, 2, RoundingMode.HALF_UP);
-        // 绋庨
-        //BigDecimal taxAmount = totalPrice.subtract(noTax);
-        return noTax;
-    }
-}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/BillingItemServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/BillingItemServiceImpl.java
deleted file mode 100644
index c42597e..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/BillingItemServiceImpl.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.by4cloud.platformx.business.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.by4cloud.platformx.business.entity.BillingItem;
-import com.by4cloud.platformx.business.mapper.BillingItemMapper;
-import com.by4cloud.platformx.business.service.BillingItemService;
-import org.springframework.stereotype.Service;
-/**
- * 寮�绁ㄤ骇鍝佷俊鎭�
- *
- * @author wjli
- * @date 2026-06-04 16:29:33
- */
-@Service
-public class BillingItemServiceImpl extends ServiceImpl<BillingItemMapper, BillingItem> implements BillingItemService {
-}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractInvoiceServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractInvoiceServiceImpl.java
new file mode 100644
index 0000000..5c5d8ce
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractInvoiceServiceImpl.java
@@ -0,0 +1,649 @@
+package com.by4cloud.platformx.business.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.ObjUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.by4cloud.platformx.admin.api.entity.SysDept;
+import com.by4cloud.platformx.admin.api.feign.RemoteDeptService;
+import com.by4cloud.platformx.business.api.feign.RemoteFlowProcessService;
+import com.by4cloud.platformx.business.constant.FlowNameEnum;
+import com.by4cloud.platformx.business.dto.GenInvoiceInfoDTO;
+import com.by4cloud.platformx.business.entity.*;
+import com.by4cloud.platformx.business.mapper.*;
+import com.by4cloud.platformx.business.service.ContractInvoiceService;
+import com.by4cloud.platformx.business.service.PaymentConfirmService;
+import com.by4cloud.platformx.business.vo.ContractInvoiceOutBoundVo;
+import com.by4cloud.platformx.business.vo.ContractOutBoundMergeVo;
+import com.by4cloud.platformx.business.vo.GenInvoiceInfoVo;
+import com.by4cloud.platformx.business.vo.InvoiceItemVo;
+import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.common.data.mybatis.BaseModel;
+import com.by4cloud.platformx.common.security.util.SecurityUtils;
+import com.by4cloud.platformx.flow.task.dto.ProcessInstanceParamDto;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springdoc.core.annotations.ParameterObject;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class ContractInvoiceServiceImpl extends ServiceImpl<ContractInvoiceMapper, ContractInvoice> implements ContractInvoiceService {
+
+	private final ContractMapper contractMapper;
+	private final BusinessCustomerMapper businessCustomerMapper;
+	private final ContractOutBoundMapper contractOutBoundMapper;
+	private final ContractSubjectMatterMapper subjectMatterMapper;
+	private final ProductMapper productMapper;
+	private final BwRequestRecordMapper bwRequestRecordMapper;
+	private final RemoteDeptService remoteDeptService;
+	private final RemoteFlowProcessService remoteFlowProcessService;
+	private final PaymentConfirmService paymentConfirmService;
+	private final RedisTemplate redisTemplate;
+
+
+	@Value("${BWInvoice.url}")
+	private String bwUrl;
+
+	@Value("${BWInvoice.flag}")
+	private Boolean bwFlag;
+
+	@Value("${bip.url}")
+	private String url;
+
+	@Value("${bip.appKey}")
+	private String appKey;
+
+	@Value("${bip.appSecret}")
+	private String appSecret;
+
+
+	@Override
+	public R getContractOutBound(Long contractId) {
+		MPJLambdaWrapper<ContractOutBound> wrapper = new MPJLambdaWrapper<ContractOutBound>()
+				.selectAll(ContractOutBound.class)
+				.eq(ContractOutBound::getContractId, contractId);
+		List<ContractInvoiceOutBoundVo> invoiceOutBoundVoList = contractOutBoundMapper.selectJoinList(ContractInvoiceOutBoundVo.class, wrapper);
+		return R.ok(invoiceOutBoundVoList);
+	}
+
+	@Override
+	public R genInvoiceInfo(GenInvoiceInfoDTO genInvoiceInfoDTO) {
+		if (ArrayUtil.isEmpty(genInvoiceInfoDTO.getContractOutBoundIds())) {
+			return R.failed("璇烽�夋嫨寮�绁ㄥ嚭搴撳崟鍚庡啀鎿嶄綔");
+		}
+		ContractOutBound outBound = contractOutBoundMapper.selectById(genInvoiceInfoDTO.getContractOutBoundIds().get(0));
+		Contract contract = contractMapper.selectById(outBound.getContractId());
+		if (ObjUtil.isNull(contract)) {
+			return R.failed("鍚堝悓淇℃伅寮傚父锛岃鑱旂郴鎶�鏈汉鍛�");
+		}
+		R<SysDept> r = remoteDeptService.getById(contract.getPartyBId());
+		if (!r.isOk()) {
+			return R.failed("鑾峰彇寮�绁ㄥ崟浣嶅紓甯�");
+		}
+		SysDept b = r.getData();
+		GenInvoiceInfoVo vo = genInvoiceInfoVo(genInvoiceInfoDTO, contract, b);
+
+		return R.ok(vo);
+	}
+
+	private GenInvoiceInfoVo genInvoiceInfoVo(GenInvoiceInfoDTO genInvoiceInfoDTO, Contract contract, SysDept b) {
+		GenInvoiceInfoVo vo = new GenInvoiceInfoVo();
+		BusinessCustomer a = businessCustomerMapper.selectById(contract.getPartyAId());
+		vo.setPartyA(a.getCompanyName());
+		vo.setPartyAOrgCode(a.getCreditCode());
+		vo.setPartyAOpenBank(a.getBankName());
+		vo.setPartyABankAccount(a.getBankAccount());
+		vo.setPartyB(b.getOrgName());
+		vo.setPartyBOrgCode(b.getOrgCode());
+		vo.setPartyBOpenBank(b.getOrgBank());
+		vo.setPartyBBankAccount(b.getOrgBankAccount());
+		List<InvoiceItemVo> invoiceItemVoList = new ArrayList<>();
+		List<String> erpCode = new ArrayList<>();
+		List<ContractOutBoundMergeVo> mergeOutBounds = new ArrayList<>();
+		List<ContractOutBound> outBounds = contractOutBoundMapper.selectList(Wrappers.<ContractOutBound>lambdaQuery()
+				.in(ContractOutBound::getId, genInvoiceInfoDTO.getContractOutBoundIds()));
+		if (ArrayUtil.isNotEmpty(outBounds.toArray())) {
+			outBounds.stream().forEach(contractOutBound -> {
+				if (!ArrayUtil.contains(erpCode.toArray(), contractOutBound.getSubjectMatterCode())) {
+					erpCode.add(contractOutBound.getSubjectMatterCode());
+					ContractOutBoundMergeVo mergeVo = new ContractOutBoundMergeVo();
+					mergeVo.setMaterialCode(contractOutBound.getSubjectMatterCode());
+					mergeVo.setMaterialInternalName(contractOutBound.getSubjectMatterName());
+					mergeVo.setQuantity(contractOutBound.getOutBoundNum());
+					Product product = productMapper.selectOne(Wrappers.<Product>lambdaQuery().eq(Product::getErpCode, contractOutBound.getSubjectMatterCode())
+							.eq(Product::getCompId, SecurityUtils.getUser().getCompId()).last("limit 1"));
+					if (ObjUtil.isNotNull(product)) {
+						mergeVo.setTaxClass(product.getTaxClass());
+						mergeVo.setSpecification(product.getProductType());
+						mergeVo.setTaxRate(new BigDecimal(product.getTaxRate()));
+						mergeVo.setTaxCode(product.getTaxCode());
+						Product productClass = productMapper.selectById(product.getParentId());
+						if (ObjUtil.isNotNull(product)) {
+							mergeVo.setItemName("*" + product.getTaxClass() + "*" + productClass.getProductName());
+						}
+					}
+					ContractSubjectMatter subjectMatter = subjectMatterMapper.selectOne(Wrappers.<ContractSubjectMatter>lambdaQuery()
+							.eq(ContractSubjectMatter::getMaterialCode, contractOutBound.getSubjectMatterCode())
+							.eq(ContractSubjectMatter::getContractId, contract.getId()).last("limit 1"));
+					if (ObjUtil.isNotNull(subjectMatter)) {
+						mergeVo.setUnitPrice(subjectMatter.getUnitPrice());
+						mergeVo.setUnit(subjectMatter.getUnit());
+					}
+					mergeOutBounds.add(mergeVo);
+				} else {
+					List<ContractOutBoundMergeVo> filteredList = mergeOutBounds.stream()
+							.filter(item -> contractOutBound.getSubjectMatterCode().equals(item.getMaterialCode())) // 闃叉绌烘寚閽堬紝寤鸿甯搁噺鍦ㄥ墠
+							.collect(Collectors.toList());
+					if (ArrayUtil.isNotEmpty(filteredList.toArray())) {
+						filteredList.get(0).setQuantity(filteredList.get(0).getQuantity().add(contractOutBound.getOutBoundNum()));
+					}
+				}
+			});
+			if (ArrayUtil.isNotEmpty(mergeOutBounds.toArray())) {
+				invoiceItemVoList = BeanUtil.copyToList(mergeOutBounds, InvoiceItemVo.class);
+				invoiceItemVoList.stream().forEach(invoiceItemVo -> {
+//				for (InvoiceItemVo invoiceItemVo:invoiceItemVoList) {
+					BigDecimal itemPrice = invoiceItemVo.getUnitPrice().multiply(invoiceItemVo.getQuantity());
+					BigDecimal itemPriceTax = itemPrice.divide(new BigDecimal("100").add(invoiceItemVo.getTaxRate()), 2, RoundingMode.HALF_UP).multiply(invoiceItemVo.getTaxRate());
+					invoiceItemVo.setPriceTax(itemPriceTax);
+					invoiceItemVo.setPriceNoTax(itemPrice.subtract(itemPriceTax));
+				});
+				vo.setTotalPrice(invoiceItemVoList.stream().map(item -> item.getPriceTax().add(item.getPriceNoTax())).reduce(BigDecimal.ZERO, BigDecimal::add));
+				vo.setInvoiceItemList(invoiceItemVoList);
+				vo.setPriceWords(Convert.digitToChinese(vo.getTotalPrice()));
+			}
+		}
+		return vo;
+	}
+
+	@Override
+	public R toInvoice(GenInvoiceInfoDTO genInvoiceInfoDTO) {
+		if (ArrayUtil.isEmpty(genInvoiceInfoDTO.getContractOutBoundIds().toArray())) {
+			return R.failed("璇烽�夋嫨寮�绁ㄥ嚭搴撳崟鍚庡啀鎿嶄綔");
+		}
+		ContractOutBound outBound = contractOutBoundMapper.selectById(genInvoiceInfoDTO.getContractOutBoundIds().get(0));
+		Contract contract = contractMapper.selectById(outBound.getContractId());
+		if (ObjUtil.isNull(contract)) {
+			return R.failed("鍚堝悓淇℃伅寮傚父锛岃鑱旂郴鎶�鏈汉鍛�");
+		}
+		R<SysDept> r = remoteDeptService.getById(contract.getPartyBId());
+		if (!r.isOk()) {
+			return R.failed("鑾峰彇寮�绁ㄥ崟浣嶅紓甯�");
+		}
+		SysDept b = r.getData();
+		GenInvoiceInfoVo vo = genInvoiceInfoVo(genInvoiceInfoDTO, contract, b);
+		//鍙戠エ淇濆瓨
+		ContractInvoice invoice = saveContractInvoice(vo, contract, genInvoiceInfoDTO.getContractOutBoundIds(), DateUtil.current() + "");
+		//鍚姩娴佺▼
+		ProcessInstanceParamDto dto = new ProcessInstanceParamDto();
+		Map<String, Object> map = BeanUtil.beanToMap(invoice);
+		dto.setParamMap(map);
+		dto.setFlowName(FlowNameEnum.閿�鍞寕璐﹀鎵�.name());
+		R r1 = remoteFlowProcessService.startProcessInstance(dto);
+		if (r1.getCode() == 1) {
+			return R.failed("娴佺▼鍚姩澶辫触");
+		}
+		//鏇存柊鍚堝悓鍑哄簱鍗曠姸鎬�
+		genInvoiceInfoDTO.getContractOutBoundIds().stream().forEach(outBoundId -> {
+			ContractOutBound bound = contractOutBoundMapper.selectById(outBoundId);
+			bound.setInvoiceStatus("1");
+			contractOutBoundMapper.updateById(bound);
+		});
+		return R.ok();
+	}
+
+	private void saveBwRequestRecord(String method, String requestId, String toJSONString, String result) {
+		BwRequestRecord bwRequestRecord = new BwRequestRecord();
+		bwRequestRecord.setRequestId(requestId);
+		bwRequestRecord.setRequestParams(toJSONString);
+		bwRequestRecord.setResponseParams(result);
+		bwRequestRecord.setResponseCode(JSONObject.parseObject(result).getString("success"));
+		bwRequestRecord.setInterfaceName(method);
+		bwRequestRecordMapper.insert(bwRequestRecord);
+	}
+
+	private JSONObject genBlueInvoice(GenInvoiceInfoVo vo, String serialNo) {
+		JSONObject jsonObject = new JSONObject();
+		//閿�鏂�
+		jsonObject.put("taxNo", vo.getPartyBOrgCode());//绋庡彿
+		jsonObject.put("isSplit", false);//瓒呰繃鍙戠エ鍗曞紶闄愰鏄惁闇�瑕佹媶鍒嗗紑鍏凤紝榛樿涓嶆媶鍒嗭紙鎷嗗垎鍙敮鎸佸彂绁ㄧ被鍨嬩唬鐮佷负 涓撶エ 004 鏅エ 007 鐢靛瓙绁� 026鐨�
+		jsonObject.put("taxUserName", "");//鐧诲綍鍚嶄负绋庡眬椤甸潰鐧�		褰曞悕
+		jsonObject.put("formatGenerate", false);//鏄惁闇�瑕佺敓鎴愮増寮忚繑鍥炵増寮忛摼鎺�(true / false)
+		jsonObject.put("formatPushType", false);//鐗堝紡鐢熸垚鏄惁鎺ㄩ��(true / false)
+		//data
+		JSONObject data = new JSONObject();
+		data.put("invoiceTypeCode", "01");
+		data.put("serialNo", serialNo);
+		//data.invoiceDetailsList
+		JSONArray invoiceDetailsList = new JSONArray();
+		Integer lineNo = 1;
+		for (InvoiceItemVo invoiceItemVo : vo.getInvoiceItemList()) {
+			JSONObject invoiceDetail = new JSONObject();
+
+			invoiceDetail.put("goodsLineNo", lineNo);
+			invoiceDetail.put("goodsCode", invoiceItemVo.getTaxCode());
+			invoiceDetail.put("goodsTaxRate", invoiceItemVo.getTaxRate().divide(new BigDecimal("100")));
+			invoiceDetail.put("goodsUnit", invoiceItemVo.getUnit());
+			invoiceDetail.put("goodsQuantity", invoiceItemVo.getQuantity());
+			invoiceDetail.put("goodsPrice", invoiceItemVo.getUnitPrice());
+			invoiceDetail.put("goodsTotalPrice", invoiceItemVo.getUnitPrice().multiply(invoiceItemVo.getQuantity()));
+			invoiceDetail.put("goodsTotalTax", invoiceItemVo.getPriceTax());
+
+			invoiceDetailsList.add(invoiceDetail);
+			lineNo++;
+		}
+		jsonObject.put("invoiceDetailsList", invoiceDetailsList);
+		//璐柟
+		data.put("buyerTaxNo", vo.getPartyAOrgCode());
+		data.put("buyerName", vo.getPartyA());
+		data.put("invoiceTotalPrice", vo.getTotalPrice().subtract(vo.getInvoiceItemList().stream().map(item -> item.getPriceTax()).reduce(BigDecimal.ZERO, BigDecimal::add)));
+		data.put("invoiceTotalTax", vo.getInvoiceItemList().stream().map(item -> item.getPriceTax()).reduce(BigDecimal.ZERO, BigDecimal::add));
+		data.put("invoiceTotalPriceTax", vo.getTotalPrice());
+		data.put("buyerBankName", vo.getPartyAOpenBank());
+		data.put("buyerBankNumber", vo.getPartyABankAccount());
+
+		jsonObject.put("data", data);
+		return jsonObject;
+	}
+
+	private ContractInvoice saveContractInvoice(GenInvoiceInfoVo genInvoiceInfoVo, Contract contract, List<Long> outBoundIds, String serialNo) {
+		ContractInvoice invoice = new ContractInvoice();
+		invoice.setContractId(contract.getId());
+		invoice.setInvoiceCategory("1");
+		invoice.setRedReversal("0");
+		invoice.setSerialNo(serialNo);
+		invoice.setTexNo(genInvoiceInfoVo.getPartyBOrgCode());
+		invoice.setSellerTaxName(genInvoiceInfoVo.getPartyB());
+		invoice.setBuyerTaxName(genInvoiceInfoVo.getPartyA());
+		invoice.setInvoiceTotalTax(genInvoiceInfoVo.getInvoiceItemList().stream().map(item -> item.getPriceTax()).reduce(BigDecimal.ZERO, BigDecimal::add));
+		invoice.setInvoiceTotalPrice(genInvoiceInfoVo.getTotalPrice().subtract(invoice.getInvoiceTotalTax()));
+		invoice.setInvoiceTotalPriceTax(genInvoiceInfoVo.getTotalPrice());
+		invoice.setInvoicePreview(JSONObject.toJSONString(genInvoiceInfoVo));
+		invoice.setInvoiceStatus("1");
+		invoice.setApprovalStatus("0");
+		invoice.setOutBoundId(outBoundIds.stream()
+				.map(String::valueOf) // 鎴栬�� .map(Object::toString)
+				.collect(Collectors.joining(",")));
+		baseMapper.insert(invoice);
+		return invoice;
+	}
+
+	@Override
+	public R getContractInvoiceList(Long contractId) {
+		List<ContractInvoice> invoiceList = baseMapper.selectList(Wrappers.<ContractInvoice>lambdaQuery()
+				.eq(ContractInvoice::getContractId, contractId)
+				.orderByDesc(ContractInvoice::getCreateTime));
+		return R.ok(invoiceList);
+	}
+
+	@Override
+	public R toRedInvoice(Long invoiceId) {
+
+		ContractInvoice blueInvoice = baseMapper.selectById(invoiceId);
+		blueInvoice.setRedReversal("2");
+		baseMapper.updateById(blueInvoice);
+		ContractInvoice invoice = new ContractInvoice();
+		invoice.setContractId(blueInvoice.getContractId());
+		invoice.setTexNo(blueInvoice.getTexNo());
+		invoice.setSellerTaxName(blueInvoice.getSellerTaxName());
+		invoice.setBuyerTaxName(blueInvoice.getBuyerTaxName());
+		invoice.setInvoiceTotalTax(blueInvoice.getInvoiceTotalTax());
+		invoice.setInvoiceTotalPrice(blueInvoice.getInvoiceTotalPrice());
+		invoice.setInvoiceTotalPriceTax(blueInvoice.getInvoiceTotalPriceTax());
+		invoice.setInvoicePreview(blueInvoice.getInvoicePreview());
+		invoice.setInvoiceTotalTax(blueInvoice.getInvoiceTotalTax());
+		invoice.setInvoiceTotalPrice(blueInvoice.getInvoiceTotalPrice());
+		invoice.setInvoiceTotalPriceTax(blueInvoice.getInvoiceTotalPriceTax());
+		invoice.setOutBoundId(blueInvoice.getOutBoundId());
+		invoice.setInvoiceTime(new Date());
+		invoice.setInvoiceCategory("2");
+		invoice.setRedReversal("0");
+		invoice.setInvoiceStatus("0");
+		invoice.setSerialNo(DateUtil.current() + "");
+		invoice.setBlueInvoiceId(invoiceId);
+		invoice.setApprovalStatus("0");
+		baseMapper.insert(invoice);
+		//鍚姩娴佺▼
+		ProcessInstanceParamDto dto = new ProcessInstanceParamDto();
+		Map<String, Object> map = BeanUtil.beanToMap(invoice);
+		dto.setParamMap(map);
+		dto.setFlowName(FlowNameEnum.閿�鍞寕璐﹀鎵�.name());
+		R r1 = remoteFlowProcessService.startProcessInstance(dto);
+		if (r1.getCode() == 1) {
+			return R.failed("娴佺▼鍚姩澶辫触");
+		}
+
+		return R.ok();
+	}
+
+	private JSONObject genRedInvoice(ContractInvoice blueInvoice, String redConfirmSerialNo) {
+		JSONObject jsonObject = new JSONObject();
+		jsonObject.put("taxNo", blueInvoice.getTexNo());
+		jsonObject.put("redConfirmSerialNo", redConfirmSerialNo);
+		jsonObject.put("entryIdentity", "01");
+		jsonObject.put("sellerTaxNo", blueInvoice.getTexNo());
+		jsonObject.put("sellerTaxName", blueInvoice.getSellerTaxName());
+		jsonObject.put("buyerTaxName", blueInvoice.getBuyerTaxName());
+		jsonObject.put("originalInvoiceNo", blueInvoice.getInvoiceNo());
+		jsonObject.put("originInvoiceIsPaper", "N");
+		jsonObject.put("originInvoiceDate", blueInvoice.getInvoiceTime());
+		jsonObject.put("originInvoiceTotalPrice", blueInvoice.getInvoiceTotalPrice());
+		jsonObject.put("originInvoiceTotalTax", blueInvoice.getInvoiceTotalPrice());
+		jsonObject.put("originInvoiceType", "01");
+		jsonObject.put("invoiceTotalPrice", blueInvoice.getInvoiceTotalPrice());
+		jsonObject.put("invoiceTotalTax", blueInvoice.getInvoiceTotalPrice());
+		jsonObject.put("redInvoiceLabel", "2");
+		GenInvoiceInfoVo vo = BeanUtil.copyProperties(JSONObject.parseObject(blueInvoice.getInvoicePreview()), GenInvoiceInfoVo.class);
+		JSONArray invoiceDetailsList = new JSONArray();
+		Integer lineNo = 1;
+		for (InvoiceItemVo invoiceItemVo : vo.getInvoiceItemList()) {
+			JSONObject invoiceDetail = new JSONObject();
+			invoiceDetail.put("originalInvoiceDetailNo", lineNo);
+			invoiceDetail.put("goodsLineNo", lineNo);
+			invoiceDetail.put("goodsCode", invoiceItemVo.getTaxCode());
+			invoiceDetail.put("goodsTaxRate", invoiceItemVo.getTaxRate().divide(new BigDecimal("100")));
+			invoiceDetail.put("goodsUnit", invoiceItemVo.getUnit());
+			invoiceDetail.put("goodsQuantity", invoiceItemVo.getQuantity());
+			invoiceDetail.put("goodsPrice", invoiceItemVo.getUnitPrice());
+			invoiceDetail.put("goodsTotalPrice", invoiceItemVo.getUnitPrice().multiply(invoiceItemVo.getQuantity()));
+			invoiceDetail.put("goodsTotalTax", invoiceItemVo.getPriceTax());
+
+			invoiceDetailsList.add(invoiceDetail);
+			lineNo++;
+		}
+		jsonObject.put("redConfirmDetailReqEntityList", invoiceDetailsList);
+		return jsonObject;
+
+	}
+
+	@Override
+	public R queryBlueInvoice() {
+		if (bwFlag) {
+			List<ContractInvoice> contractInvoices = baseMapper.selectList(Wrappers.<ContractInvoice>lambdaQuery()
+					.eq(ContractInvoice::getInvoiceCategory, "1").eq(ContractInvoice::getInvoiceStatus, "1"));
+			if (ArrayUtil.isNotEmpty(contractInvoices.toArray())) {
+				contractInvoices.stream().forEach(contractInvoice -> {
+					JSONObject request = new JSONObject();
+					request.put("tax_no", contractInvoice.getTexNo());
+					JSONObject data = new JSONObject();
+					data.put("serial_no", contractInvoice.getSerialNo());
+					data.put("return_type", "1");
+					String requestId = IdUtil.fastUUID();
+					log.info("serial_no:{},鍙戠エ鏌ヨ鍏ュ弬锛歿},", contractInvoice.getSerialNo(), request.toJSONString());
+					String result = HttpUtil.post("method=baiwang.output.format.query&version=1.0&request_id=" + requestId, request.toJSONString());
+					log.info("serial_no:{},鍙戠エ鏌ヨ鍥炲弬锛歿},", contractInvoice.getSerialNo(), result);
+					saveBwRequestRecord("baiwang.output.format.query", requestId, request.toJSONString(), result);
+					JSONObject resultObj = JSONObject.parseObject(result);
+					if (resultObj.containsKey("requestId") && StrUtil.equals(resultObj.getString("requestId"), requestId) && resultObj.getBoolean("success")) {
+						JSONObject model = resultObj.getJSONObject("model");
+						contractInvoice.setInvoicePath(model.getString("query_data"));
+						contractInvoice.setInvoiceStatus("2");
+						baseMapper.updateById(contractInvoice);
+					}
+					//鎺ㄩ�丅IP
+					pushBipInvoice(contractInvoice);
+				});
+			}
+		}
+		return R.ok();
+	}
+
+	private void pushBipInvoice(ContractInvoice contractInvoice) {
+		String accessToken = "";
+		if (redisTemplate.hasKey("BIP_TOKEN")) {
+			accessToken = (String) redisTemplate.opsForValue().get("BIP_TOKEN");
+		} else {
+			paymentConfirmService.getAccessToken(accessToken);
+		}
+		if (StrUtil.isEmpty(accessToken)) {
+			log.error("bip accessToken 鑾峰彇寮傚父");
+			return;
+		}
+		//钃濈エ
+		if (StrUtil.equals(contractInvoice.getInvoiceCategory(),"1")) {
+			JSONObject params = genBlueReceiveParams(contractInvoice);
+			String finalAccessToken = accessToken;
+
+			log.info("XSJZ_YS_DJ_INSERT Request:", params.toJSONString());
+			String result = HttpUtil.post(url + "/yonbip/EFI/receivable/save?access_token=" + finalAccessToken, params.toJSONString());
+			log.info("XSJZ_YS_DJ_INSERT Response:{}", result);
+			//淇濆瓨璇锋眰璁板綍
+			paymentConfirmService.saveBipRequestRecord(params, "< XSJZ_YS_DJ_001>-搴旀敹鍙戠エ淇濆瓨鎺ュ彛", result);
+			JSONObject resultJson = JSONObject.parseObject(result);
+			if (resultJson.containsKey("code") && resultJson.getString("code").equals("200")) {
+				JSONObject data = resultJson.getJSONObject("data");
+				contractInvoice.setBipPush("1");
+				contractInvoice.setBipId(data.getLong("id"));
+				contractInvoice.setBipBody(resultJson.getString("data"));
+				baseMapper.updateById(contractInvoice);
+			}
+		}
+		//绾㈢エ
+		if (StrUtil.equals(contractInvoice.getInvoiceCategory(),"2")) {
+			JSONObject params = genRedReceiveParams(contractInvoice);
+			String finalAccessToken = accessToken;
+
+			log.info("XSJZ_YS_DJ_DELETE Request:", params.toJSONString());
+			String result = HttpUtil.post(url + "/yonbip/EFI/receivable/delete?access_token=" + finalAccessToken, params.toJSONString());
+			log.info("XSJZ_YS_DJ_DELETE Response:{}", result);
+			//淇濆瓨璇锋眰璁板綍
+			paymentConfirmService.saveBipRequestRecord(params, "< XSJZ_YS_DJ_002>-搴旀敹鍙戠エ鍒犻櫎鎺ュ彛", result);
+			JSONObject resultJson = JSONObject.parseObject(result);
+			if (resultJson.containsKey("code") && resultJson.getString("code").equals("200")) {
+				contractInvoice.setBipPush("1");
+				baseMapper.updateById(contractInvoice);
+			}
+		}
+	}
+
+	private JSONObject genRedReceiveParams(ContractInvoice contractInvoice) {
+		JSONObject jsonObject = new JSONObject();
+		JSONObject data = new JSONObject();
+		data.put("id",contractInvoice.getBipId());
+		jsonObject.put("data",data);
+		return  jsonObject;
+	}
+
+	private JSONObject genBlueReceiveParams(ContractInvoice contractInvoice) {
+		JSONObject jsonObject = new JSONObject();
+		JSONObject data = new JSONObject();
+		if (contractInvoice.getInvoiceCategory().equals("1")){
+			data.put("direction","1");
+		}else {
+			data.put("direction","-1");
+		}
+		data.put("billDate",DateUtil.format(contractInvoice.getInvoiceTime(),DatePattern.NORM_DATETIME_FORMAT));
+		data.put("objectType","1");
+		data.put("exchangeRate","1");
+		data.put("exchangeRate",DateUtil.now());
+		data.put("_status","Insert");
+		GenInvoiceInfoVo vo = BeanUtil.copyProperties(JSONObject.parseObject(contractInvoice.getInvoicePreview()), GenInvoiceInfoVo.class);
+		JSONArray bodyItem = new JSONArray();
+		for (InvoiceItemVo invoiceItemVo : vo.getInvoiceItemList()) {
+			JSONObject item = new JSONObject();
+			item.put("invoiceNo",contractInvoice.getInvoiceNo());
+			item.put("materialCode",invoiceItemVo.getErpCode());
+			item.put("taxRate", invoiceItemVo.getTaxRate());
+			item.put("oriTaxAmount", invoiceItemVo.getPriceTax());
+			item.put("oriTaxIncludedAmount", invoiceItemVo.getUnitPrice().multiply(invoiceItemVo.getQuantity()));
+			item.put("_status","Insert");
+
+			bodyItem.add(item);
+		}
+		data.put("bodyItem",bodyItem);
+		jsonObject.put("data",data);
+		return  jsonObject;
+	}
+
+	@Override
+	public R queryRedInvoice() {
+		if (bwFlag) {
+			List<ContractInvoice> contractInvoices = baseMapper.selectList(Wrappers.<ContractInvoice>lambdaQuery()
+					.eq(ContractInvoice::getInvoiceCategory, "2").eq(ContractInvoice::getInvoiceStatus, "3"));
+			if (ArrayUtil.isNotEmpty(contractInvoices.toArray())) {
+				contractInvoices.stream().forEach(contractInvoice -> {
+					JSONObject request = new JSONObject();
+					request.put("taxNo", contractInvoice.getTexNo());
+					JSONObject data = new JSONObject();
+					data.put("redConfirmSerialNo", contractInvoice.getSerialNo());
+					data.put("buySelSelector", "1");
+					String requestId = IdUtil.fastUUID();
+					log.info("serial_no:{},绾㈠瓧纭鍗曟煡璇㈠叆鍙傦細{},", contractInvoice.getSerialNo(), request.toJSONString());
+					String result = HttpUtil.post("method=baiwang.output.redinvoice.formlist&&version=1.0&request_id=" + requestId, request.toJSONString());
+					log.info("serial_no:{},绾㈠瓧纭鍗曟煡璇㈠洖鍙傦細{},", contractInvoice.getSerialNo(), result);
+					JSONObject resultObj = JSONObject.parseObject(result);
+					saveBwRequestRecord("baiwang.output.redinvoice.formlist", requestId, request.toJSONString(), result);
+					if (resultObj.containsKey("requestId") && StrUtil.equals(resultObj.getString("requestId"), requestId) && resultObj.getBoolean("success")) {
+						JSONArray models = JSONArray.parseArray(resultObj.getString("model"));
+						if (ArrayUtil.isNotEmpty(models.toArray())) {
+							contractInvoice.setInvoiceStatus("2");
+							contractInvoice.setRedReversal("1");
+							baseMapper.updateById(contractInvoice);
+						}
+					}
+				});
+			}
+		}
+		return R.ok();
+	}
+
+	@Override
+	public void takeEffect(Long id) {
+		ContractInvoice invoice = baseMapper.selectById(id);
+		Contract contract = contractMapper.selectById(invoice.getContractId());
+		GenInvoiceInfoVo vo = BeanUtil.copyProperties(JSONObject.parseObject(invoice.getInvoicePreview()), GenInvoiceInfoVo.class);
+
+		//钃濈エ
+		if (invoice.getInvoiceCategory().equals("1")) {
+			// TODO 寮�钃濈エ鎺ュ彛
+			JSONObject request = genBlueInvoice(vo, invoice.getSerialNo());
+			if (bwFlag) {
+				String requestId = IdUtil.fastUUID();
+				log.info("钃濈エ璇锋眰鎺ュ彛鍏ュ弬", request.toJSONString());
+				String result = HttpUtil.post(bwUrl + "method=baiwang.output.invoice.issue&version=1.0&requestId=" + requestId, request.toJSONString());
+				log.info("钃濈エ璇锋眰鎺ュ彛鍥炲弬", result);
+				saveBwRequestRecord("baiwang.output.invoice.issue", requestId, request.toJSONString(), result);
+				JSONObject resultObj = JSONObject.parseObject(result);
+				if (resultObj.containsKey("requestId") && StrUtil.equals(resultObj.getString("requestId"), requestId) &&
+						!resultObj.getBoolean("success")) {
+				}
+				JSONArray models = JSONArray.parseArray(resultObj.getString("success"));
+				if (ArrayUtil.isNotEmpty(models.toArray())) {
+					JSONObject model = (JSONObject) models.get(0);
+					Date invoiceDate = DateUtil.parse(model.getString("invoiceDate"), DatePattern.PURE_DATETIME_PATTERN);
+					invoice.setInvoiceTime(invoiceDate);
+					invoice.setInvoiceNo(model.getString("invoiceNo"));
+				}
+			}
+
+			//鍚堝悓鐘舵��
+			if (StrUtil.equals(contract.getBillingStatus(), "2")) {
+				if (ObjUtil.isNull(contract.getBillingAmout())) {
+					contract.setBillingAmout(vo.getTotalPrice());
+					if (contract.getBillingAmout().compareTo(contract.getAmount()) == 0) {
+						contract.setBillingStatus("3");
+					}
+					contractMapper.updateById(contract);
+				} else {
+					contract.setBillingAmout(vo.getTotalPrice().add(contract.getBillingAmout()));
+					if (contract.getBillingAmout().compareTo(contract.getAmount()) == 0) {
+						contract.setBillingStatus("3");
+					}
+					contractMapper.updateById(contract);
+				}
+			} else {
+				if (ObjUtil.isNull(contract.getBillingAmout())) {
+					contract.setBillingAmout(vo.getTotalPrice());
+					contractMapper.updateById(contract);
+				} else {
+					contract.setBillingAmout(vo.getTotalPrice().add(contract.getBillingAmout()));
+					contractMapper.updateById(contract);
+				}
+			}
+		}
+		//绾㈢エ
+		if (invoice.getInvoiceCategory().equals("2")) {
+			// TODO 寮�绾㈢エ鎺ュ彛
+			ContractInvoice blueInvoice = baseMapper.selectById(invoice.getBlueInvoiceId());
+			JSONObject request = genRedInvoice(blueInvoice, invoice.getSerialNo());
+			String requestId = IdUtil.fastUUID();
+			if (bwFlag) {
+				log.info("绾㈠瓧纭鍗曡姹傛帴鍙e叆鍙�", request.toJSONString());
+				String result = HttpUtil.post(bwUrl + "method=baiwang.output.redinvoice.add&version=1.0&requestId=" + requestId, request.toJSONString());
+				log.info("绾㈠瓧纭鍗曡姹傛帴鍙e洖鍙�", result);
+				saveBwRequestRecord("baiwang.output.redinvoice.add", requestId, request.toJSONString(), result);
+				JSONObject resultObj = JSONObject.parseObject(result);
+				if (resultObj.containsKey("requestId") && StrUtil.equals(resultObj.getString("requestId"), requestId) &&
+						!resultObj.getBoolean("success")) {
+					JSONArray models = JSONArray.parseArray(resultObj.getString("success"));
+					if (ArrayUtil.isNotEmpty(models.toArray())) {
+						JSONObject model = (JSONObject) models.get(0);
+
+						if (StrUtil.isEmpty(model.getString("confirmBillingMark"))||StrUtil.equals(model.getString("confirmBillingMark"),"N")) {
+							//绛夊緟纭
+							invoice.setRedReversal("3");
+						}else if (StrUtil.equals(model.getString("confirmBillingMark"),"Y")) {
+							//纭鍗冲紑
+							invoice.setInvoiceNo(model.getString("redInvoiceNo"));
+							invoice.setRedReversal("1");
+							pushBipInvoice(invoice);
+						}
+					}
+				}
+			}
+			//鏇存柊鍚堝悓寮�绁ㄧ姸鎬�
+			contract.setBillingStatus("2");
+			contract.setBillingAmout(contract.getAmount().subtract(invoice.getInvoiceTotalPriceTax()));
+			contractMapper.updateById(contract);
+
+			//鏇存柊鍚堝悓鍑哄簱鍗曠姸鎬�
+			String[] outBoundIds = blueInvoice.getOutBoundId().split(",");
+			Arrays.stream(outBoundIds).forEach(outBoundId -> {
+				ContractOutBound bound = contractOutBoundMapper.selectById(outBoundId);
+				bound.setInvoiceStatus("0");
+				contractOutBoundMapper.updateById(bound);
+			});
+		}
+		invoice.setApprovalStatus("1");
+		baseMapper.updateById(invoice);
+	}
+
+	@Override
+	public void refuseApproval(Long id) {
+		ContractInvoice invoice = baseMapper.selectById(id);
+		//鏇存柊鍚堝悓鍑哄簱鍗曠姸鎬�
+		String[] outBoundIds = invoice.getOutBoundId().split(",");
+		Arrays.stream(outBoundIds).forEach(outBoundId -> {
+			ContractOutBound bound = contractOutBoundMapper.selectById(outBoundId);
+			bound.setInvoiceStatus("0");
+			contractOutBoundMapper.updateById(bound);
+		});
+		invoice.setApprovalStatus("2");
+		baseMapper.updateById(invoice);
+	}
+}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
index 6634811..bec5082 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
@@ -36,6 +36,7 @@
 import java.io.IOException;
 import java.io.OutputStream;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicReference;
@@ -58,7 +59,7 @@
 	private final MeterReadRecordMapper meterReadRecordMapper;
 	private final ContractExecDateMapper contractExecDateMapper;
 	private final RemoteFlowProcessService remoteFlowProcessService;
-	private final ContractTemplateMapper contractTemplateMapper;
+	private final ProductMapper productMapper;
 	private final RemoteDeptService remoteDeptService;
 
 	@Value("${file.local.base-path}")
@@ -235,6 +236,10 @@
 		detailVo.setContractSubjectMatter(subjectMatterList);
 		List<ContractPaymentSchedule> paymentScheduleList = contractPaymentScheduleMapper.selectList(Wrappers.<ContractPaymentSchedule>lambdaQuery().eq(ContractPaymentSchedule::getContractId, contract.getId()));
 		detailVo.setContractPaymentSchedule(paymentScheduleList);
+		BusinessCustomer a = businessCustomerMapper.selectById(contract.getPartyAId());
+		if (ObjUtil.isNotNull(a)){
+			detailVo.setPartyAOrgCode(a.getCreditCode());
+		}
 		return detailVo;
 	}
 
@@ -657,7 +662,7 @@
 		try {
 			// 1. 鍔犺浇妯$増
 			// 鍋囪妯$増鍦� resources/templates/template.docx
-			ClassPathResource resource = new ClassPathResource("template/ymjjgclht.docx");
+			ClassPathResource resource = new ClassPathResource("template/ymj/ymjjgclht.docx");
 			// 閰嶇疆鍒楄〃绛栫暐
 			Configure config = Configure.builder()
 					.bind("items", new LoopRowTableRenderPolicy()) // 灏� items 缁戝畾鍒拌寰幆绛栫暐
@@ -760,4 +765,312 @@
 		}
 		return R.ok();
 	}
+
+	@Override
+	public void exportContractYMJGYPMMWord(Long id, HttpServletResponse response) {
+		Contract contract = baseMapper.selectById(id);
+		List<ContractSubjectMatter> subjectMatterList = contractSubjectMatterMapper.selectList(Wrappers.<ContractSubjectMatter>lambdaQuery()
+				.eq(ContractSubjectMatter::getContractId, id).orderByAsc(ContractSubjectMatter::getCreateTime));
+		Map<String, Object> map = new HashMap<>();
+		//鍚堝悓鍩烘湰淇℃伅
+		map.put("partyA", contract.getPartyA());
+		map.put("partyB", contract.getPartyB());
+		map.put("contractNo", contract.getContractNo());
+		map.put("signPlace", contract.getSignPlace());
+		map.put("signDate", DateUtil.formatDate(contract.getSignDate()));
+		map.put("signDateYMD", DateUtil.format(contract.getSignDate(), DatePattern.CHINESE_DATE_PATTERN));
+		map.put("total", contract.getAmount());
+		map.put("amountWords", Convert.digitToChinese(contract.getAmount()));
+		//鏍囩殑鐗�
+		List<Map<String, Object>> items = new ArrayList<>();
+		List<RowRenderData> dataList = new ArrayList<>();
+		AtomicReference<Integer> no = new AtomicReference<>(0);
+		subjectMatterList.stream().forEach(contractSubjectMatter -> {
+			Map<String, Object> item = new HashMap<>();
+			item.put("no", no);
+			item.put("materialName", contractSubjectMatter.getMaterialName());
+			item.put("guige", contractSubjectMatter.getSpecification());
+			item.put("unit", contractSubjectMatter.getUnit());
+			item.put("quantity", contractSubjectMatter.getQuantity());
+			item.put("danzhong", contractSubjectMatter.getSingleWight());
+			item.put("zongzhong", contractSubjectMatter.getTotalWight());
+			item.put("unitPrice", contractSubjectMatter.getUnitPrice());
+			item.put("price", contractSubjectMatter.getTotalAmount());
+			if (no.get().equals(Integer.valueOf(0))){
+				item.put("deliveryCycle",contract.getDeliveryCycle());
+			}
+			items.add(item);
+			no.updateAndGet(v -> v + 1);
+		});
+		map.put("items", items);
+		//瀹氬埗鏂�
+		BusinessCustomer customer = businessCustomerMapper.selectById(contract.getPartyAId());
+		map.put("companyName", customer.getCompanyName());
+		map.put("legalPerson", customer.getLegalPerson());
+		map.put("contactPhone", customer.getContactPhone());
+		map.put("bankName", customer.getBankName());
+		map.put("bankAccount", customer.getBankAccount());
+
+		//鎵挎徑鏂�
+		R<SysDept> r = remoteDeptService.getById(contract.getPartyBId());
+		SysDept dept = r.getData();
+		map.put("orgName", dept.getOrgName());
+		map.put("legalPerson1", StrUtil.isNotEmpty(dept.getLegalPerson()) ? dept.getLegalPerson() : "");
+		map.put("entrustedAgent", StrUtil.isNotEmpty(dept.getLegalPerson()) ? "" : dept.getEntrustedAgent());
+		map.put("orgContact", dept.getOrgContact());
+		map.put("orgBank", dept.getOrgBank());
+		map.put("orgBankAccount", dept.getOrgBankAccount());
+
+		//鐢熸垚鏂囦欢鍚�
+		Long time = new Date().getTime();
+		// 鐢熸垚鐨剋ord鏍煎紡
+		String formatSuffix = ".docx";
+		// 鎷兼帴鍚庣殑鏂囦欢鍚�
+		String fileName = time + formatSuffix;//鏂囦欢鍚�  甯﹀悗缂�
+		//瀵煎嚭word
+		try {
+			// 1. 鍔犺浇妯$増
+			// 鍋囪妯$増鍦� resources/templates/template.docx
+			ClassPathResource resource = new ClassPathResource("template/ymj/ymjgypmmht.docx");
+			// 閰嶇疆鍒楄〃绛栫暐
+			Configure config = Configure.builder()
+					.bind("items", new LoopRowTableRenderPolicy()) // 灏� items 缁戝畾鍒拌寰幆绛栫暐
+					.build();
+			// 2. 缂栬瘧骞舵覆鏌撴暟鎹�
+			XWPFTemplate xwpfTemplate = XWPFTemplate.compile(resource.getInputStream(), config).render(map);
+
+			// 3. 璁剧疆鍝嶅簲澶�
+			response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
+			response.setCharacterEncoding("utf-8");
+			response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".docx");
+
+			// 4. 鍐欏叆杈撳嚭娴�
+			OutputStream out = response.getOutputStream();
+			xwpfTemplate.write(out);
+			out.flush();
+			out.close();
+			xwpfTemplate.close(); // 閲嶈锛氬叧闂ā鐗堥噴鏀捐祫婧�
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	@Override
+	public void exportContractYMJGKCPMMWord(Long id, HttpServletResponse response) {
+		Contract contract = baseMapper.selectById(id);
+		List<ContractSubjectMatter> subjectMatterList = contractSubjectMatterMapper.selectList(Wrappers.<ContractSubjectMatter>lambdaQuery()
+				.eq(ContractSubjectMatter::getContractId, id).orderByAsc(ContractSubjectMatter::getCreateTime));
+		Map<String, Object> map = new HashMap<>();
+		//鍚堝悓鍩烘湰淇℃伅
+		map.put("partyA", contract.getPartyA());
+		map.put("partyB", contract.getPartyB());
+		map.put("contractNo", contract.getContractNo());
+		map.put("signPlace", contract.getSignPlace());
+		map.put("signDate", DateUtil.formatDate(contract.getSignDate()));
+		map.put("signDateYMD", DateUtil.format(contract.getSignDate(), DatePattern.CHINESE_DATE_PATTERN));
+		map.put("total", contract.getAmount());
+		map.put("amountWords", Convert.digitToChinese(contract.getAmount()));
+		map.put("deliveryCycle",contract.getDeliveryCycle());
+		//鏍囩殑鐗�
+		List<Map<String, Object>> items = new ArrayList<>();
+		AtomicReference<Integer> no = new AtomicReference<>(0);
+		subjectMatterList.stream().forEach(contractSubjectMatter -> {
+			Map<String, Object> item = new HashMap<>();
+			item.put("no", no);
+			item.put("materialName", contractSubjectMatter.getMaterialName());
+			item.put("guige", contractSubjectMatter.getSpecification());
+			item.put("unit", contractSubjectMatter.getUnit());
+			item.put("quantity", contractSubjectMatter.getQuantity());
+			item.put("danzhong", contractSubjectMatter.getSingleWight());
+			item.put("zongzhong", contractSubjectMatter.getTotalWight());
+			item.put("unitPrice", contractSubjectMatter.getUnitPrice());
+			item.put("price", contractSubjectMatter.getTotalAmount());
+			items.add(item);
+			no.updateAndGet(v -> v + 1);
+		});
+		map.put("items", items);
+		//瀹氬埗鏂�
+		BusinessCustomer customer = businessCustomerMapper.selectById(contract.getPartyAId());
+		map.put("companyName", customer.getCompanyName());
+		map.put("legalPerson", customer.getLegalPerson());
+		map.put("contactPhone", customer.getContactPhone());
+		map.put("bankName", customer.getBankName());
+		map.put("bankAccount", customer.getBankAccount());
+
+		//鎵挎徑鏂�
+		R<SysDept> r = remoteDeptService.getById(contract.getPartyBId());
+		SysDept dept = r.getData();
+		map.put("orgName", dept.getOrgName());
+		map.put("legalPerson1", StrUtil.isNotEmpty(dept.getLegalPerson()) ? dept.getLegalPerson() : "");
+		map.put("entrustedAgent", StrUtil.isNotEmpty(dept.getLegalPerson()) ? "" : dept.getEntrustedAgent());
+		map.put("orgContact", dept.getOrgContact());
+		map.put("orgBank", dept.getOrgBank());
+		map.put("orgBankAccount", dept.getOrgBankAccount());
+
+		//鐢熸垚鏂囦欢鍚�
+		Long time = new Date().getTime();
+		// 鐢熸垚鐨剋ord鏍煎紡
+		String formatSuffix = ".docx";
+		// 鎷兼帴鍚庣殑鏂囦欢鍚�
+		String fileName = time + formatSuffix;//鏂囦欢鍚�  甯﹀悗缂�
+		//瀵煎嚭word
+		try {
+			// 1. 鍔犺浇妯$増
+			// 鍋囪妯$増鍦� resources/templates/template.docx
+			ClassPathResource resource = new ClassPathResource("template/ymj/ymjgkcpmmht.docx");
+			// 閰嶇疆鍒楄〃绛栫暐
+			Configure config = Configure.builder()
+					.bind("items", new LoopRowTableRenderPolicy()) // 灏� items 缁戝畾鍒拌寰幆绛栫暐
+					.build();
+			// 2. 缂栬瘧骞舵覆鏌撴暟鎹�
+			XWPFTemplate xwpfTemplate = XWPFTemplate.compile(resource.getInputStream(), config).render(map);
+
+			// 3. 璁剧疆鍝嶅簲澶�
+			response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
+			response.setCharacterEncoding("utf-8");
+			response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".docx");
+
+			// 4. 鍐欏叆杈撳嚭娴�
+			OutputStream out = response.getOutputStream();
+			xwpfTemplate.write(out);
+			out.flush();
+			out.close();
+			xwpfTemplate.close(); // 閲嶈锛氬叧闂ā鐗堥噴鏀捐祫婧�
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	@Override
+	public void exportContractYMJCGWord(Long id, HttpServletResponse response) {
+		Contract contract = baseMapper.selectById(id);
+		List<ContractSubjectMatter> subjectMatterList = contractSubjectMatterMapper.selectList(Wrappers.<ContractSubjectMatter>lambdaQuery()
+				.eq(ContractSubjectMatter::getContractId, id).orderByAsc(ContractSubjectMatter::getCreateTime));
+		Map<String, Object> map = new HashMap<>();
+		//鍚堝悓鍩烘湰淇℃伅
+		map.put("partyA", contract.getPartyA());
+		map.put("partyB", contract.getPartyB());
+		map.put("contractNo", contract.getContractNo());
+		map.put("signPlace", contract.getSignPlace());
+		map.put("signDate", DateUtil.formatDate(contract.getSignDate()));
+		map.put("signDateYMD", DateUtil.format(contract.getSignDate(), DatePattern.CHINESE_DATE_PATTERN));
+		map.put("total", contract.getAmount());
+		map.put("amountWords", Convert.digitToChinese(contract.getAmount()));
+		map.put("environment",contract.getEnvironment());
+		map.put("standard",contract.getStandard());
+		map.put("useMonth",contract.getUseMonth());
+		map.put("afterShipMonth",contract.getAfterShipMonth());
+		map.put("shipMethod",contract.getShipMethod());
+		map.put("shipAddress",contract.getShipAddress());
+		map.put("packaging",contract.getPackaging());
+		map.put("repairPeriod",contract.getRepairPeriod());
+		map.put("repairBreachAmount",contract.getRepairBreachAmount());
+		map.put("goodsShort",contract.getGoodsShort());
+		map.put("goodsShortBreachAmount",contract.getGoodsShortBreachAmount());
+		map.put("overdueBreachAmount",contract.getOverdueBreachAmount());
+		map.put("terminateContract",contract.getTerminateContract());
+		map.put("court",contract.getCourt());
+		map.put("contractAttchment",contract.getContractAttchment());
+		map.put("invoiceNotice",contract.getInvoiceNotice());
+
+		//鏍囩殑鐗�
+		List<Map<String, Object>> items = new ArrayList<>();
+		AtomicReference<Integer> no = new AtomicReference<>(0);
+		subjectMatterList.stream().forEach(contractSubjectMatter -> {
+			Product product = productMapper.selectOne(Wrappers.<Product>lambdaQuery().eq(Product::getErpCode,contractSubjectMatter.getMaterialCode()).last("limit 1"));
+			Map<String, Object> item = new HashMap<>();
+			item.put("no", no);
+			item.put("materialName", contractSubjectMatter.getMaterialName());
+			item.put("guige", contractSubjectMatter.getSpecification());
+			item.put("unit", contractSubjectMatter.getUnit());
+			item.put("quantity", contractSubjectMatter.getQuantity());
+			item.put("unitPrice", contractSubjectMatter.getUnitPrice());
+			item.put("priceTax", contractSubjectMatter.getUnitPrice().multiply(contractSubjectMatter.getQuantity()).setScale(2, RoundingMode.HALF_UP));
+			item.put("priceNoTax", contractSubjectMatter.getUnitPrice().multiply(contractSubjectMatter.getQuantity())
+					.subtract(contractSubjectMatter.getUnitPrice().multiply(contractSubjectMatter.getQuantity())
+							.divide(new BigDecimal("100").add(new BigDecimal(product.getTaxRate())),2, RoundingMode.HALF_UP).multiply(new BigDecimal(product.getTaxRate())))
+					.setScale(2, RoundingMode.HALF_UP));
+			item.put("deliveryDate", DateUtil.formatDate(contractSubjectMatter.getPlannedDeliveryDate()));
+			item.put("remarks", contractSubjectMatter.getRemarks());
+			map.put("taxRate",product.getTaxRate());
+			items.add(item);
+			no.updateAndGet(v -> v + 1);
+		});
+
+		//浠樻
+		List<ContractPaymentSchedule> scheduleList = contractPaymentScheduleMapper.selectList(Wrappers.<ContractPaymentSchedule>lambdaQuery()
+				.eq(ContractPaymentSchedule::getContractId, id).orderByAsc(ContractPaymentSchedule::getCreateTime));
+		scheduleList.stream().forEach(contractPaymentSchedule -> {
+			if (contractPaymentSchedule.getStageName().equals("鍚堝悓绛捐")){
+				map.put("htqdbl",contractPaymentSchedule.getPaymentRatio());
+				map.put("htqdje",contractPaymentSchedule.getPlannedAmount());
+				map.put("htqdjr",contractPaymentSchedule.getAgreedDays());
+			}
+			if (contractPaymentSchedule.getStageName().equals("鍙戣揣鍓�")){
+				map.put("fhqbl",contractPaymentSchedule.getPaymentRatio());
+				map.put("fhqje",contractPaymentSchedule.getPlannedAmount());
+			}
+			if (contractPaymentSchedule.getStageName().equals("璋冭瘯瀹屾垚鎴栭獙鏀�")){
+				map.put("ysbl",contractPaymentSchedule.getPaymentRatio());
+				map.put("ysje",contractPaymentSchedule.getPlannedAmount());
+				map.put("ysjr",contractPaymentSchedule.getAgreedDays());
+			}
+			if (contractPaymentSchedule.getStageName().equals("璐ㄤ繚閲�")){
+				map.put("zbjbl",contractPaymentSchedule.getPaymentRatio());
+				map.put("zbjje",contractPaymentSchedule.getPlannedAmount());
+				map.put("zbjjr",contractPaymentSchedule.getAgreedDays());
+			}
+		});
+		map.put("items", items);
+		//瀹氬埗鏂�
+		BusinessCustomer customer = businessCustomerMapper.selectById(contract.getPartyAId());
+		map.put("companyName", customer.getCompanyName());
+		map.put("legalPerson", customer.getLegalPerson());
+		map.put("contactPhone", customer.getContactPhone());
+		map.put("bankName", customer.getBankName());
+		map.put("bankAccount", customer.getBankAccount());
+
+		//鎵挎徑鏂�
+		R<SysDept> r = remoteDeptService.getById(contract.getPartyBId());
+		SysDept dept = r.getData();
+		map.put("orgName", dept.getOrgName());
+		map.put("legalPerson1", StrUtil.isNotEmpty(dept.getLegalPerson()) ? dept.getLegalPerson() : "");
+		map.put("entrustedAgent", StrUtil.isNotEmpty(dept.getLegalPerson()) ? "" : dept.getEntrustedAgent());
+		map.put("orgContact", dept.getOrgContact());
+		map.put("orgBank", dept.getOrgBank());
+		map.put("orgBankAccount", dept.getOrgBankAccount());
+
+		//鐢熸垚鏂囦欢鍚�
+		Long time = new Date().getTime();
+		// 鐢熸垚鐨剋ord鏍煎紡
+		String formatSuffix = ".docx";
+		// 鎷兼帴鍚庣殑鏂囦欢鍚�
+		String fileName = time + formatSuffix;//鏂囦欢鍚�  甯﹀悗缂�
+		//瀵煎嚭word
+		try {
+			// 1. 鍔犺浇妯$増
+			// 鍋囪妯$増鍦� resources/templates/template.docx
+			ClassPathResource resource = new ClassPathResource("template/ymj/ymjcght.docx");
+			// 閰嶇疆鍒楄〃绛栫暐
+			Configure config = Configure.builder()
+					.bind("items", new LoopRowTableRenderPolicy()) // 灏� items 缁戝畾鍒拌寰幆绛栫暐
+					.build();
+			// 2. 缂栬瘧骞舵覆鏌撴暟鎹�
+			XWPFTemplate xwpfTemplate = XWPFTemplate.compile(resource.getInputStream(), config).render(map);
+
+			// 3. 璁剧疆鍝嶅簲澶�
+			response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
+			response.setCharacterEncoding("utf-8");
+			response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".docx");
+
+			// 4. 鍐欏叆杈撳嚭娴�
+			OutputStream out = response.getOutputStream();
+			xwpfTemplate.write(out);
+			out.flush();
+			out.close();
+			xwpfTemplate.close(); // 閲嶈锛氬叧闂ā鐗堥噴鏀捐祫婧�
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
 }
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
deleted file mode 100644
index 98d75c6..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/InvoiceServiceImpl.java
+++ /dev/null
@@ -1,2035 +0,0 @@
-package com.by4cloud.platformx.business.service.impl;
-
-import cn.hutool.http.HttpRequest;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.alibaba.nacos.common.utils.StringUtils;
-import com.alibaba.nacos.common.utils.UuidUtils;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.by4cloud.platformx.business.entity.BillingInfo;
-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;
-import com.by4cloud.platformx.business.invoice.service.FileUploadService;
-import com.by4cloud.platformx.business.invoice.service.FpInvoiceResultService;
-import com.by4cloud.platformx.business.service.BillingInfoService;
-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.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-/**
- * 閿�鍞寕璐�
- *
- * @author wjli
- * @date 2026-05-21 16:16:31
- */
-@Service
-public class InvoiceServiceImpl extends ServiceImpl<FpInvoiceResultMapper, InvoiceResult> implements InvoiceService {
-
-    @Autowired
-    private StringRedisTemplate redisTemplate;
-
-    @Autowired
-    private FpInvoiceResultItemMapper itemMapper;
-
-    @Autowired
-    private SaleCreditService saleCreditService;
-
-    @Autowired
-    private BillingInfoService billingInfoService;
-
-    @Autowired
-    private FpInvoiceResultService invoiceResultService;
-
-    @Autowired
-    private BipInvoiceService bipInvoiceService;
-
-    @Autowired
-    private FileUploadService fileUploadService;
-
-
-
-    @Value("${BWInvoice.ip}")
-    private String invoiceIp;
-    @Value("${BWInvoice.kaipiao}")
-    private String kpUrl;
-    @Value("${BWInvoice.chaxun}")
-    private String cxUrl;
-    @Value("${BWInvoice.redConfirmAdd}")
-    private String redConfirmUrl;
-
-    @Value("${BWInvoice.redConfirmSearch}")
-    private String redConfirmSearchUrl;
-
-    @Override
-    public Map<String, Object> toKaipiao(InvoicingVo invoicingVo) {
-         Map<String, Object> stringObjectMap = zizhuKaiPiao(invoicingVo);
-         return stringObjectMap;
-    }
-
-    @Override
-    public Map<String, Object> toRedTicket(SaleCredit saleCredit) {
-        return redTicket(saleCredit);
-    }
-
-    @Override
-    public Map<String, Object> toRedTicket1(BillingInfo billingInfo) {
-        return redTicket1(billingInfo);
-    }
-
-    @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);
-    }
-
-    @Override
-    public InvoicingVo toGetByCompareByVo1(BillingInfo saleCredit, List<ContractOutBoundVo> contractOutBoundList) {
-        return getByCompareVo1(saleCredit,contractOutBoundList);
-    }
-
-    /**
-     * 鑷富缁撶畻寮�绁�
-     */
-    Map<String, Object> zizhuKaiPiao(InvoicingVo vo){
-        String s1 = redisTemplate.opsForValue().get("ZZKP_BLUE:" + vo.getEntrustCode());
-        if(StringUtils.isNotBlank(s1)){
-            System.out.println("缁撶畻鍗曞彿锛�"+vo.getEntrustCode()+"姝e湪寮�绁紝璇峰嬁閲嶅鐐瑰嚮");
-            Map<String,Object> res = new HashMap<>();
-            res.put("success",false);
-            res.put("message","缁撶畻鍗曞彿锛�"+vo.getEntrustCode()+"姝e湪寮�绁紝璇峰嬁閲嶅鐐瑰嚮");
-            return  res;
-        }
-        redisTemplate.opsForValue().set("ZZKP_BLUE:" + vo.getEntrustCode(),"true");
-        try {
-            Gson gson =new Gson();
-            String str = gson.toJson(vo);
-            System.out.println(str);
-            String responseBody = "";
-            responseBody = HttpRequest.post(invoiceIp+kpUrl+ UuidUtils.generateUuid())
-                    .timeout(400000)
-                    .body(str)
-                    .execute()
-                    .body();
-            System.out.println(responseBody);
-            JSONObject jsonObj = JSON.parseObject(responseBody);
-            if(jsonObj!=null){
-                boolean flag = (Boolean)jsonObj.get("success");
-                JSONObject message = jsonObj.getJSONObject("message");
-                String requestId = (String) jsonObj.get("requestId");
-                if(!flag){
-                    Map<String,Object> res = new HashMap<>();
-                    res.put("success",flag);
-                    res.put("message",message.get("errorMessage"));
-                    InvoiceResult invoiceResult = new InvoiceResult();
-                    invoiceResult.setSaleCreditId(vo.getSaleCreditId());
-                    invoiceResult.setRequestId(requestId);
-                    invoiceResult.setSuccess(flag);
-                    invoiceResult.setMessage((String) message.get("errorMessage"));
-                    invoiceResult.setMethodName("钃濆瓧寮�绁ㄦ帴鍙�");
-                    invoiceResult.setEntrustCode(vo.getEntrustCode());
-                    invoiceResultService.save(invoiceResult);
-
-                   SaleCredit saleCredit = saleCreditService.getById(invoiceResult.getSaleCreditId());
-                   saleCredit.setInvoiceRemark((String) message.get("errorMessage"));
-                   saleCreditService.updateById(saleCredit);
-
-                   /* UpdateWrapper<RailwayEntrust> updateWrapper = new UpdateWrapper<>();
-                    updateWrapper.lambda().set(RailwayEntrust::getInvoiceResult,null)
-                            .set(RailwayEntrust::getInvoiceResultId,null)
-                            .set(RailwayEntrust::getTaskId,null)
-                            .set(RailwayEntrust::getInvoiceProcInstId,null)
-                            .set(RailwayEntrust::getInvoiceRemark,(String) message.get("errorMessage"))
-                            .eq(RailwayEntrust::getEntrustCode,vo.getEntrustCode());
-                    railwayEntrustMapper.update(null,updateWrapper);*/
-
-                    redisTemplate.delete("ZZKP_BLUE:" + vo.getEntrustCode());
-                    return res;
-                }else {
-                    String successMessage = (String)message.get("successMessage");
-                    JSONObject model = jsonObj.getJSONObject("model");
-                    JSONArray success = model.getJSONArray("success");
-                    JSONObject modelObject = success.getJSONObject(0);
-                    String invoiceTypeCode = (String)modelObject.get("invoiceTypeCode");
-                    String invoiceNo = (String)modelObject.get("invoiceNo");
-                    String invoiceDate = (String)modelObject.get("invoiceDate");
-                    String invoiceQrCode = (String)modelObject.get("invoiceQrCode");
-                    String serialNo = (String)modelObject.get("serialNo");
-                    BigDecimal invoiceTotalPriceValue = (BigDecimal)modelObject.get("invoiceTotalPrice");
-                    Double invoiceTotalPrice = Double.valueOf(invoiceTotalPriceValue.doubleValue());
-                    BigDecimal invoiceTotalTaxValue = (BigDecimal)modelObject.get("invoiceTotalTax");
-                    Double invoiceTotalTax = Double.valueOf(invoiceTotalTaxValue.doubleValue());
-                    BigDecimal invoiceTotalPriceTaxValue = (BigDecimal)modelObject.get("invoiceTotalPriceTax");
-                    Double invoiceTotalPriceTax = Double.valueOf(invoiceTotalPriceTaxValue.doubleValue());
-                    String mulPurchaserMark = (String)modelObject.get("mulPurchaserMark");
-                    String sellerTaxNo = (String)modelObject.get("sellerTaxNo");
-                    String coalCalorificValue = (String)modelObject.get("coalCalorificValue");
-                    String totalSulfurOnDryBasis = (String)modelObject.get("totalSulfurOnDryBasis");
-                    String dryAshFreeVolatileMatter = (String)modelObject.get("dryAshFreeVolatileMatter");
-
-                    InvoiceResult invoiceResult = new InvoiceResult();
-                    invoiceResult.setSaleCreditId(vo.getSaleCreditId());
-                    invoiceResult.setRequestId(requestId);
-                    invoiceResult.setSuccess(flag);
-                    invoiceResult.setMessage(successMessage);
-                    invoiceResult.setInvoiceNo(invoiceNo);
-                    invoiceResult.setInvoiceTyCode(invoiceTypeCode);
-                    invoiceResult.setInvoiceDate(invoiceDate);
-                    invoiceResult.setInvoiceQrCode(invoiceQrCode);
-                    invoiceResult.setSerialNo(serialNo);
-                    invoiceResult.setMethodName("钃濆瓧寮�绁ㄦ帴鍙�");
-                    invoiceResult.setEntrustCode(vo.getEntrustCode());
-                    invoiceResult.setInvoiceTotalPrice(invoiceTotalPrice);
-                    invoiceResult.setInvoiceTotalTax(invoiceTotalTax);
-                    invoiceResult.setInvoiceTotalPriceTax(invoiceTotalPriceTax);
-                    invoiceResult.setMulPurchaserMark(mulPurchaserMark);
-                    invoiceResult.setXTaxNo(sellerTaxNo);
-					/*if(StringUtils.isNotBlank(coalCalorificValue)){
-						invoiceResult.setCoalCalorificValue(coalCalorificValue);
-					}
-					if(StringUtils.isNotBlank(totalSulfurOnDryBasis)){
-						invoiceResult.setTotalSulfurOnDryBasis(totalSulfurOnDryBasis);
-					}
-					if(StringUtils.isNotBlank(dryAshFreeVolatileMatter)){
-						invoiceResult.setDryAshFreeVolatileMatter(dryAshFreeVolatileMatter);
-					}*/
-                    invoiceResultService.save(invoiceResult);
-
-                    JSONArray invoiceDetailList1 = modelObject.getJSONArray("invoiceDetailsList");
-                    for (int i = 0; i < invoiceDetailList1.size(); i++) {
-                        JSONObject jsonObject = invoiceDetailList1.getJSONObject(i);
-                        int goodsLineNo = (int) jsonObject.get("goodsLineNo");
-                        String goodsName = (String) jsonObject.get("goodsName");
-                        String goodsCode = (String) jsonObject.get("goodsCode");
-                        BigDecimal goodsPriceValue = (BigDecimal)jsonObject.get("goodsPrice");
-                        Double goodsPrice = Double.valueOf(goodsPriceValue.doubleValue());
-
-                        double goodsQuantity=0.0;
-                        try {
-                            int goodsQuantity1 = (int) jsonObject.get("goodsQuantity");
-                            goodsQuantity = goodsQuantity1;
-                        }catch (Exception e){
-                            e.printStackTrace();
-                            BigDecimal goodsQuantityValue = (BigDecimal)jsonObject.get("goodsQuantity");
-                            goodsQuantity = Double.valueOf(goodsQuantityValue.doubleValue());
-                        }
-                        BigDecimal goodsTotalPriceValue = (BigDecimal)jsonObject.get("goodsTotalPrice");
-                        Double goodsTotalPrice = Double.valueOf(goodsTotalPriceValue.doubleValue());
-                        BigDecimal goodsTotalTaxValue = (BigDecimal)jsonObject.get("goodsTotalTax");
-                        Double goodsTotalTax = Double.valueOf(goodsTotalTaxValue.doubleValue());
-                        BigDecimal goodsTaxRateValue = (BigDecimal)jsonObject.get("goodsTaxRate");
-                        Double goodsTaxRate = Double.valueOf(goodsTaxRateValue.doubleValue());
-                        String invoiceLineNature = (String) jsonObject.get("invoiceLineNature");
-                        String goodsUnit = (String) jsonObject.get("goodsUnit");
-                        String goodsSpecification = (String) jsonObject.get("goodsSpecification");
-                        String coalType = (String)jsonObject.get("coalType");
-                        String agreementTerm = (String)jsonObject.get("agreementTerm");
-                        String name = "";
-						/*if(goodsLineNo==1){
-							name = "鐓ゆ";
-						}
-						if(goodsLineNo==2 && goodsTaxRate==0.13){
-							name = "鍙栭�佽溅璐�";
-						}
-						if(goodsTaxRate==0.6){
-							name = "涓撶嚎璐�";
-						}*/
-                        InvoiceResultItem item = new InvoiceResultItem();
-                        item.setGoodsLineNature(invoiceLineNature);
-                        item.setGoodsCode(goodsCode);
-                        item.setGoodsPrice(goodsPrice);
-                        item.setGoodsLineNo(goodsLineNo);
-                        item.setGoodsQuantity(goodsQuantity);
-                        item.setGoodsTaxRate(goodsTaxRate);
-                        item.setGoodsType(name);
-                        item.setGoodsName(goodsName);
-                        item.setGoodsTotalPrice(goodsTotalPrice);
-                        item.setGoodsTotalTax(goodsTotalTax);
-                        item.setGoodsUnit(goodsUnit);
-                        item.setCoalType(coalType);
-                        if(StringUtils.isNotBlank(agreementTerm)){
-                            item.setAgreementTerm(agreementTerm);
-                        }
-                        if(goodsSpecification !=null){
-                            item.setGoodsSpecification(goodsSpecification);
-                        }
-                        item.setResultId(invoiceResult.getId());
-                        item.setEntrustCode(invoiceResult.getEntrustCode());
-                        String[] split = goodsName.split("\\*");
-                        int length = split.length;
-                        String coalName = split[length - 1];
-                        item.setCoalName(coalName);
-                        itemMapper.insert(item);
-                    }
-
-                    /*QueryWrapper<RailwayEntrust> wrapper = new QueryWrapper<>();
-                    wrapper.lambda().eq(RailwayEntrust::getEntrustCode,invoiceResult.getEntrustCode());
-                    RailwayEntrust railwayEntrust = railwayEntrustMapper.selectList(wrapper).get(0);
-                    railwayEntrust.setInvoiceResultId(invoiceResult.getId());
-                    railwayEntrust.setInvoiceResult(2);
-                    railwayEntrust.setInvoiceRemark("钃濆瓧寮�绁ㄦ垚鍔�");
-                    railwayEntrustMapper.updateById(railwayEntrust);*/
-
-                    SaleCredit saleCredit = saleCreditService.getById(invoiceResult.getSaleCreditId());
-                    saleCredit.setInvoiceRemark("钃濆瓧寮�绁ㄦ垚鍔�");
-                    saleCredit.setStatus(2);
-                    saleCredit.setBlueInvoiceResultId(invoiceResult.getId());
-                    saleCreditService.updateById(saleCredit);
-
-                    Map<String,Object> res = new HashMap<>();
-                    res.put("success",flag);
-                    res.put("message",successMessage);
-                    String s = redisTemplate.opsForValue().get("railwayEntrust_invoice_id:" + saleCredit.getId());
-                    if(StringUtils.isNotBlank(s)){
-                        redisTemplate.delete("railwayEntrust_invoice_id:" + saleCredit.getId());
-                    }
-                    redisTemplate.delete("ZZKP_BLUE:" + vo.getEntrustCode());
-                    return res;
-                }
-
-            }else {
-                InvoiceResult invoiceResult = new InvoiceResult();
-                invoiceResult.setSuccess(false);
-                invoiceResult.setMessage("钃濆瓧寮�绁ㄦ帴鍙f棤杩斿洖鍊�");
-                invoiceResult.setMethodName("钃濆瓧寮�绁ㄦ帴鍙�");
-                invoiceResult.setEntrustCode(vo.getEntrustCode());
-                invoiceResultService.save(invoiceResult);
-                Map<String,Object> res = new HashMap<>();
-                res.put("success",false);
-                res.put("message","钃濆瓧寮�绁ㄦ帴鍙f棤杩斿洖鍊�");
-
-                /*UpdateWrapper<RailwayEntrust> updateWrapper = new UpdateWrapper<>();
-                updateWrapper.lambda().set(RailwayEntrust::getInvoiceResult,null)
-                        .set(RailwayEntrust::getInvoiceResultId,null)
-                        .set(RailwayEntrust::getTaskId,null)
-                        .set(RailwayEntrust::getInvoiceProcInstId,null)
-                        .set(RailwayEntrust::getInvoiceRemark,"钃濆瓧寮�绁ㄦ帴鍙f棤杩斿洖鍊�")
-                        .eq(RailwayEntrust::getEntrustCode,vo.getEntrustCode());
-                railwayEntrustMapper.update(null,updateWrapper);*/
-
-                SaleCredit saleCredit = saleCreditService.getById(invoiceResult.getSaleCreditId());
-                saleCredit.setInvoiceRemark("钃濆瓧寮�绁ㄦ帴鍙f棤杩斿洖鍊�");
-                saleCredit.setStatus(3);
-                saleCredit.setBlueInvoiceResultId(null);
-                saleCredit.setEntrustCode(vo.getEntrustCode());
-                saleCreditService.updateById(saleCredit);
-
-                redisTemplate.delete("ZZKP_BLUE:" + vo.getEntrustCode());
-                return res;
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-            Map<String,Object> res = new HashMap<>();
-            res.put("success",false);
-            res.put("message","寮�绁ㄦ帴鍙e紓甯�");
-            InvoiceResult invoiceResult = new InvoiceResult();
-            invoiceResult.setSuccess(false);
-            invoiceResult.setMessage("钃濆瓧寮�绁ㄦ帴鍙e紓甯�");
-            invoiceResult.setMethodName("钃濆瓧寮�绁ㄦ帴鍙�");
-            invoiceResult.setEntrustCode(vo.getEntrustCode());
-            invoiceResultService.save(invoiceResult);
-
-            /*UpdateWrapper<RailwayEntrust> updateWrapper = new UpdateWrapper<>();
-            updateWrapper.lambda().set(RailwayEntrust::getInvoiceResult,null)
-                    .set(RailwayEntrust::getInvoiceResultId,null)
-                    .set(RailwayEntrust::getTaskId,null)
-                    .set(RailwayEntrust::getInvoiceProcInstId,null)
-                    .set(RailwayEntrust::getInvoiceRemark,"钃濆瓧寮�绁ㄦ帴鍙e紓甯�")
-                    .eq(RailwayEntrust::getEntrustCode,vo.getEntrustCode());
-            railwayEntrustMapper.update(null,updateWrapper);*/
-
-            SaleCredit saleCredit = saleCreditService.getById(invoiceResult.getSaleCreditId());
-            saleCredit.setInvoiceRemark("钃濆瓧寮�绁ㄦ帴鍙e紓甯�");
-            saleCredit.setStatus(3);
-            saleCredit.setBlueInvoiceResultId(null);
-            saleCredit.setEntrustCode(vo.getEntrustCode());
-            saleCreditService.updateById(saleCredit);
-
-            redisTemplate.delete("ZZKP_BLUE:" + vo.getEntrustCode());
-            return res;
-        }
-    }
-
-
-
-
-    private InvoicingVo getByCompare(SaleCredit saleCredit, List<ContractOutBound> 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;
-    }
-
-    private InvoicingVo getByCompareVo1(BillingInfo 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;
-    }
-
-    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("杩涘叆寮傛鏂规硶");
-        System.out.println("褰撳墠绾跨▼鍚嶇О锛�" + Thread.currentThread().getName());
-
-        try {
-            //绾㈠瓧纭鍗�
-            InvoiceResult result = invoiceResultService.getById(saleCredit.getBlueInvoiceResultId());
-            Map<String, Object> objectMap = redTicketConfirm(result,saleCredit);
-            Boolean success = (Boolean) objectMap.get("success");
-            if(success){
-                InvoiceResult obj = (InvoiceResult) objectMap.get("obj");
-                //绾㈠瓧纭鍗曠‘璁ゆ帴鍙�
-                Map<String, Object> stringObjectMap = redTicketConfirmSearch(obj,saleCredit);
-                Boolean confimSuccess = (Boolean) stringObjectMap.get("success");
-                if(confimSuccess){
-                    //寮�绁ㄦ帴鍙�
-                    InvoiceResult invoiceObj = (InvoiceResult) stringObjectMap.get("obj");
-                    if(invoiceObj.getConfirmBillingMark().equals("Y")){
-                        //鏃犻渶寮�绁�
-                        System.out.println(saleCredit.getEntrustCode()+"鐨剅ailwayEntrust宸插紑绾㈠瓧寮�绁�");
-
-                        QueryWrapper<InvoiceResult> invoiceResultQueryWrapper = new QueryWrapper<>();
-                        invoiceResultQueryWrapper.lambda()
-                                .eq(InvoiceResult::getEntrustCode,saleCredit.getEntrustCode())
-                                .eq(InvoiceResult::getMethodName,"钃濆瓧寮�绁ㄦ帴鍙�")
-                                .like(InvoiceResult::getMessage,"%鍙戠エ寮�鍏锋垚鍔�%");
-                        List<InvoiceResult> list = invoiceResultService.list(invoiceResultQueryWrapper);
-                        if(list !=null && list.size()>0){
-                            invoiceResultService.removeByIds(list);
-                        }
-
-                        /*UpdateWrapper<RailwayEntrust> updateWrapper = new UpdateWrapper<>();
-                        updateWrapper.lambda().set(RailwayEntrust::getInvoiceResult,null)
-                                .set(RailwayEntrust::getInvoiceResultId,null)
-                                .set(RailwayEntrust::getInvoiceRemark,"绾㈠瓧寮�绁ㄦ垚鍔�")
-                                .set(RailwayEntrust::getInvoiceRedResultId,invoiceObj.getId())
-                                .eq(RailwayEntrust::getEntrustCode,saleCredit.getEntrustCode());
-                        railwayEntrustMapper.update(null,updateWrapper);*/
-                        saleCredit.setInvoiceRemark("绾㈠瓧寮�绁ㄦ垚鍔�");
-                        saleCredit.setRedInvoiceResultId(invoiceObj.getId());
-                        saleCredit.setStatus(7);
-                        saleCreditService.updateById(saleCredit);
-                        return stringObjectMap;
-                    }else {
-
-                        InvoicingVo invoicingVo = redKaiPiaoVo(invoiceObj);
-                        invoicingVo.setSaleCreditId(saleCredit.getId());
-                        if(invoicingVo !=null){
-                            Map<String, Object> stringObjectMap1 = redTicketKaiPiao(invoicingVo);
-                            Boolean confimSuccess1 = (Boolean) stringObjectMap1.get("success");
-                            String message1 = (String) stringObjectMap1.get("message");
-                            if(confimSuccess1){
-                                System.out.println(saleCredit.getEntrustCode()+"鐨剅ailwayEntrust绾㈠瓧寮�绁ㄧ粨鏋滀负锛�"+confimSuccess1+"------"+message1);
-                                return stringObjectMap1;
-                            }
-                        }
-                    }
-                }else {
-                    System.out.println(saleCredit.getEntrustCode()+"鐨勭孩瀛楃‘璁ゅ崟纭鎺ュ彛寮傚父");
-                    return stringObjectMap;
-                }
-            }else {
-                System.out.println(saleCredit.getEntrustCode()+"鐨勭孩瀛楃‘璁ゅ崟鏂板鎺ュ彛寮傚父");
-                return objectMap;
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-        System.out.println("寮傛鏂规硶鎵ц瀹屾垚");
-        Map<String, Object> result = new HashMap<>();
-        result.put("success",false);
-        result.put("message","寮�绁ㄥ紓甯�");
-        return result;
-    }
-
-    public Map<String, Object> redTicket1(BillingInfo saleCredit) {
-        System.out.println("杩涘叆寮傛鏂规硶");
-        System.out.println("褰撳墠绾跨▼鍚嶇О锛�" + Thread.currentThread().getName());
-
-        try {
-            //绾㈠瓧纭鍗�
-            InvoiceResult result = invoiceResultService.getById(saleCredit.getBlueInvoiceResultId());
-            Map<String, Object> objectMap = redTicketConfirm1(result,saleCredit);
-            Boolean success = (Boolean) objectMap.get("success");
-            if(success){
-                InvoiceResult obj = (InvoiceResult) objectMap.get("obj");
-                //绾㈠瓧纭鍗曠‘璁ゆ帴鍙�
-                Map<String, Object> stringObjectMap = redTicketConfirmSearch1(obj,saleCredit);
-                Boolean confimSuccess = (Boolean) stringObjectMap.get("success");
-                if(confimSuccess){
-                    //寮�绁ㄦ帴鍙�
-                    InvoiceResult invoiceObj = (InvoiceResult) stringObjectMap.get("obj");
-                    if(invoiceObj.getConfirmBillingMark().equals("Y")){
-                        //鏃犻渶寮�绁�
-                        System.out.println(saleCredit.getEntrustCode()+"鐨剅ailwayEntrust宸插紑绾㈠瓧寮�绁�");
-
-                        QueryWrapper<InvoiceResult> invoiceResultQueryWrapper = new QueryWrapper<>();
-                        invoiceResultQueryWrapper.lambda()
-                                .eq(InvoiceResult::getEntrustCode,saleCredit.getEntrustCode())
-                                .eq(InvoiceResult::getMethodName,"钃濆瓧寮�绁ㄦ帴鍙�")
-                                .like(InvoiceResult::getMessage,"%鍙戠エ寮�鍏锋垚鍔�%");
-                        List<InvoiceResult> list = invoiceResultService.list(invoiceResultQueryWrapper);
-                        if(list !=null && list.size()>0){
-                            invoiceResultService.removeByIds(list);
-                        }
-
-                        /*UpdateWrapper<RailwayEntrust> updateWrapper = new UpdateWrapper<>();
-                        updateWrapper.lambda().set(RailwayEntrust::getInvoiceResult,null)
-                                .set(RailwayEntrust::getInvoiceResultId,null)
-                                .set(RailwayEntrust::getInvoiceRemark,"绾㈠瓧寮�绁ㄦ垚鍔�")
-                                .set(RailwayEntrust::getInvoiceRedResultId,invoiceObj.getId())
-                                .eq(RailwayEntrust::getEntrustCode,saleCredit.getEntrustCode());
-                        railwayEntrustMapper.update(null,updateWrapper);*/
-                        saleCredit.setInvoiceRemark("绾㈠瓧寮�绁ㄦ垚鍔�");
-                        saleCredit.setRedInvoiceResultId(invoiceObj.getId());
-                        saleCredit.setRedResultStatus(1);
-                        billingInfoService.updateById(saleCredit);
-                        return stringObjectMap;
-                    }else {
-
-                        InvoicingVo invoicingVo = redKaiPiaoVo(invoiceObj);
-                        invoicingVo.setSaleCreditId(saleCredit.getId());
-                        if(invoicingVo !=null){
-                            Map<String, Object> stringObjectMap1 = redTicketKaiPiao(invoicingVo);
-                            Boolean confimSuccess1 = (Boolean) stringObjectMap1.get("success");
-                            String message1 = (String) stringObjectMap1.get("message");
-                            if(confimSuccess1){
-                                System.out.println(saleCredit.getEntrustCode()+"鐨剅ailwayEntrust绾㈠瓧寮�绁ㄧ粨鏋滀负锛�"+confimSuccess1+"------"+message1);
-                                return stringObjectMap1;
-                            }
-                        }
-                    }
-                }else {
-                    System.out.println(saleCredit.getEntrustCode()+"鐨勭孩瀛楃‘璁ゅ崟纭鎺ュ彛寮傚父");
-                    return stringObjectMap;
-                }
-            }else {
-                System.out.println(saleCredit.getEntrustCode()+"鐨勭孩瀛楃‘璁ゅ崟鏂板鎺ュ彛寮傚父");
-                return objectMap;
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-        System.out.println("寮傛鏂规硶鎵ц瀹屾垚");
-        Map<String, Object> result = new HashMap<>();
-        result.put("success",false);
-        result.put("message","寮�绁ㄥ紓甯�");
-        return result;
-    }
-
-    /**
-     * 鐗堝紡鏂囦欢鏌ヨ
-     * @param invoiceResult
-     * @return
-     */
-    @Override
-    public Map<String, Object> downInvoiceMethod(InvoiceResult invoiceResult) {
-        SaleCredit saleCredit = saleCreditService.getById(invoiceResult.getSaleCreditId());
-        Map<String,Object> map = new HashMap<>();
-        Map<String,Object> map1 = new HashMap<>();
-        map.put("taxNo",invoiceResult.getXTaxNo());
-        map1.put("serialNo",invoiceResult.getSerialNo());
-        if(invoiceResult.getMethodName().equals("绾㈠瓧纭鍗曠‘璁ゆ帴鍙�")){
-            map1.put("einvoiceNo",invoiceResult.getRedInvoiceNo());
-        }else {
-            map1.put("einvoiceNo",invoiceResult.getInvoiceNo());
-        }
-        map1.put("returnType","1");
-        map1.put("invoiceIssueMode","1");
-        map.put("data",map1);
-        Gson gson =new Gson();
-        String str = gson.toJson(map);
-        System.out.println(str);
-        String responseBody = "";
-        responseBody = HttpRequest.post(invoiceIp+cxUrl+UuidUtils.generateUuid())
-                .timeout(400000)
-                .body(str)
-                .execute()
-                .body();
-        System.out.println(responseBody);
-        JSONObject jsonObj = JSON.parseObject(responseBody);
-        if(jsonObj!=null){
-            boolean flag = (Boolean)jsonObj.get("success");
-            JSONObject message = jsonObj.getJSONObject("message");
-            if(!flag){
-                String successMessage = (String) message.get("errorMessage");
-                Map<String,Object> res = new HashMap<>();
-                res.put("success",flag);
-                res.put("message",successMessage);
-                return res;
-            }else {
-                String requestId = (String) jsonObj.get("requestId");
-                String successMessage = (String) message.get("successMessage");
-                JSONObject model = jsonObj.getJSONObject("model");
-                String modelRequestId = (String)model.get("requestId");
-                String invoiceNo = (String)model.get("invoiceNo");
-                String serialNo = (String)model.get("serialNo");
-                String sellerTaxNo = (String)model.get("sellerTaxNo");
-                String eInvoiceUrlOld = (String)model.get("eInvoiceUrl");
-                String returnType = (String)model.get("returnType");
-
-                String eInvoiceUrl = eInvoiceUrlOld.replace("http://","https://");
-
-                InvoiceResult result = new InvoiceResult();
-                result.setXTaxNo(sellerTaxNo);
-                result.setRequestId(requestId);
-                result.setFpRequestId(modelRequestId);
-                result.setSuccess(flag);
-                result.setMessage(successMessage);
-                result.setSerialNo(serialNo);
-                result.setInvoiceNo(invoiceNo);
-                result.setEInvoiceUrl(eInvoiceUrl);
-                result.setMethodName("鐗堝紡鏂囦欢鏌ヨ鎺ュ彛");
-                result.setEntrustCode(invoiceResult.getEntrustCode());
-                invoiceResultService.save(result);
-
-                /*QueryWrapper<RailwayEntrust> wrapper = new QueryWrapper<>();
-                wrapper.lambda().eq(RailwayEntrust::getEntrustCode,invoiceResult.getEntrustCode());
-                RailwayEntrust railwayEntrust = railwayEntrustMapper.selectList(wrapper).get(0);*/
-                if(invoiceResult.getMethodName().contains("钃濆瓧")){
-                   /* railwayEntrust.setInvoiceRemark("钃濆瓧鍙戠エ宸叉煡璇�");
-                    railwayEntrust.setInvoicUrl(result.getEInvoiceUrl());
-                    if(railwayEntrust.getInvoiceResultId()==null){
-                        railwayEntrust.setInvoiceResultId(result.getId());
-                    }*/
-                    saleCredit.setInvoiceRemark("钃濆瓧鍙戠エ宸叉煡璇�");
-                    saleCredit.setInvoicUrl(result.getEInvoiceUrl());
-                    saleCredit.setBlueInvoiceResultId(result.getId());
-                    saleCreditService.updateById(saleCredit);
-
-
-                }else {
-                    /*railwayEntrust.setInvoiceRemark("绾㈠瓧鍙戠エ宸叉煡璇�");
-                    railwayEntrust.setInvoicRedUrl(result.getEInvoiceUrl());
-                    if(railwayEntrust.getInvoiceRedResultId()==null){
-                        railwayEntrust.setInvoiceRedResultId(result.getId());
-                    }*/
-                    saleCredit.setInvoiceRemark("绾㈠瓧鍙戠エ宸叉煡璇�");
-                    saleCredit.setInvoicUrl(result.getEInvoiceUrl());
-                    saleCredit.setBlueInvoiceResultId(result.getId());
-                    saleCreditService.updateById(saleCredit);
-                }
-
-                //railwayEntrustMapper.updateById(railwayEntrust);
-
-                Map<String,Object> res = new HashMap<>();
-                res.put("success",flag);
-                res.put("message",successMessage);
-                res.put("url",eInvoiceUrl);
-                res.put("name",invoiceNo);
-                return res;
-            }
-        }else {
-            Map<String,Object> res = new HashMap<>();
-            res.put("success",false);
-            res.put("message","寮�绁ㄦ帴鍙e紓甯�");
-            return res;
-        }
-    }
-
-    @Override
-    public boolean pushBlue(Long railwayId, Integer type) {
-        SaleCredit saleCredit = saleCreditService.getById(railwayId);
-
-        if (saleCredit.getBipStatus() == null || !saleCredit.getBipStatus().equals("200")) {
-            return false;
-        } else {
-            InvoiceResult result = null;
-            QueryWrapper<InvoiceResult> invoiceResultQueryWrapper = new QueryWrapper<>();
-            invoiceResultQueryWrapper.lambda()
-                    .eq(InvoiceResult::getEntrustCode, saleCredit.getEntrustCode())
-                    .eq(InvoiceResult::getMethodName,"钃濆瓧寮�绁ㄦ帴鍙�")
-                    .eq(InvoiceResult::getSuccess,1)
-                    .like(InvoiceResult::getMessage,"%鍙戠エ寮�鍏锋垚鍔�%")
-                    .orderByAsc(InvoiceResult::getCreateTime)
-                    .last( " limit 4 ");
-            if(type==0){
-                invoiceResultQueryWrapper.lambda().eq(InvoiceResult::getPushBip,1);
-            }else {
-                invoiceResultQueryWrapper.lambda().eq(InvoiceResult::getPushBipyf,1);
-            }
-            List<InvoiceResult> list = invoiceResultService.list(invoiceResultQueryWrapper);
-            if(list !=null && list.size()>0){
-                return false;
-            }
-
-            QueryWrapper<InvoiceResult> invoiceResultQueryWrapper1 = new QueryWrapper<>();
-            invoiceResultQueryWrapper1.lambda()
-                    .eq(InvoiceResult::getEntrustCode, saleCredit.getEntrustCode())
-                    .eq(InvoiceResult::getMethodName,"钃濆瓧寮�绁ㄦ帴鍙�")
-                    .eq(InvoiceResult::getSuccess,1)
-                    .like(InvoiceResult::getMessage,"%鍙戠エ寮�鍏锋垚鍔�%")
-                    .orderByAsc(InvoiceResult::getCreateTime)
-                    .last( " limit 4 ");
-            if(type==0){
-                invoiceResultQueryWrapper1.lambda().isNull(InvoiceResult::getPushBip);
-            }else {
-                invoiceResultQueryWrapper1.lambda().isNull(InvoiceResult::getPushBipyf);
-            }
-            List<InvoiceResult> list1 = invoiceResultService.list(invoiceResultQueryWrapper1);
-            if(list1 !=null && list1.size()>0){
-                result = list1.get(0);
-            }else {
-                System.out.println(saleCredit.getEntrustCode()+"鏈煡璇㈠埌寮�绁ㄨ褰�");
-                return false;
-            }
-
-            if(com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(saleCredit.getInvoicUrl())){
-                if(type==0){
-                    if(result.getPushBip()==null||result.getPushBip()==0) {
-                        System.out.println(saleCredit.getEntrustCode() + "寮�濮嬫帹閫乥ip搴旀敹钃濈エ");
-                        try {
-                            boolean b = pushBipYS(saleCredit.getId(), saleCredit.getInvoicUrl());
-                            if(b){
-                                System.out.println(saleCredit.getEntrustCode() + "鎺ㄩ�乥ip搴旀敹钃濈エ鎴愬姛");
-                                result.setPushBip(1);
-                                invoiceResultService.updateById(result);
-                                return true;
-                            }else {
-                                System.out.println(saleCredit.getEntrustCode() + "鎺ㄩ�乥ip搴旀敹钃濈エ澶辫触");
-                                return false;
-                            }
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                        }
-                    }
-                }else if (type==1){
-                    if(result.getPushBipyf()==null||result.getPushBipyf()==0) {
-                        System.out.println(saleCredit.getEntrustCode() + "寮�濮嬫帹閫乥ip搴斾粯钃濈エ");
-                        try {
-                            boolean b = pushBipYF(saleCredit.getId(), saleCredit.getInvoicUrl());
-                            if(b){
-                                System.out.println(saleCredit.getEntrustCode() + "鎺ㄩ�乥ip搴斾粯钃濈エ鎴愬姛");
-                                result.setPushBipyf(1);
-                                invoiceResultService.updateById(result);
-                                return true;
-                            }else {
-                                System.out.println(saleCredit.getEntrustCode() + "鎺ㄩ�乥ip搴斾粯钃濈エ澶辫触");
-                                return false;
-                            }
-                        }catch (Exception e) {
-                            e.printStackTrace();
-                        }
-                    }
-                }
-            }else {
-                Map<String, Object> objectMap = downInvoiceMethod(result);
-                Boolean success = (Boolean) objectMap.get("success");
-                String message = (String) objectMap.get("message");
-                String url = (String) objectMap.get("url");
-                if(success){
-                    try {
-                        if(type==0){
-                            boolean b = pushBipYS(saleCredit.getId(),url);
-                            if(b){
-                                System.out.println(saleCredit.getEntrustCode()+"鎺ㄩ�乥ip搴旀敹钃濈エ鎴愬姛");
-                                result.setPushBip(1);
-                                invoiceResultService.updateById(result);
-                                return true;
-                            }else {
-                                System.out.println(saleCredit.getEntrustCode()+"鎺ㄩ�乥ip搴旀敹钃濈エ澶辫触");
-                                return false;
-                            }
-
-                        }else if (type==1){
-                            boolean b = pushBipYF(saleCredit.getId(),url);
-                            if(b){
-                                System.out.println(saleCredit.getEntrustCode()+"鎺ㄩ�乥ip搴斾粯钃濈エ鎴愬姛");
-                                result.setPushBipyf(1);
-                                invoiceResultService.updateById(result);
-                                return true;
-                            }else {
-                                System.out.println(saleCredit.getEntrustCode()+"鎺ㄩ�乥ip搴斾粯钃濈エ澶辫触");
-                                return false;
-                            }
-                        }
-                    }catch (Exception e){
-                        e.printStackTrace();
-                    }
-                }
-            }
-        }
-        return false;
-    }
-
-    /**
-     * 鎺ㄩ�乥ip搴旀敹钃濈エ
-     * @param id
-     * @param file
-     */
-    public boolean pushBipYS(Long id,String file){
-        //搴旀敹
-        QueryWrapper<BipInvoice> bipInvoiceQueryWrapper = new QueryWrapper<>();
-        bipInvoiceQueryWrapper.lambda()
-                .eq(BipInvoice::getRailwayEntrustId, id)
-                .eq(BipInvoice::getInvoiceType, 0)
-                .in(BipInvoice::getResStatus, 200, 910)
-                .orderByDesc(BipInvoice::getCreateTime);
-        List<BipInvoice> list1 = bipInvoiceService.list(bipInvoiceQueryWrapper);
-        if(list1!=null && list1.size()>0){
-            BipInvoice bipInvoice = list1.get(0);
-            String bipNumber = bipInvoice.getBipNumber();
-            fileUploadService.uploadUrlToBip(id,bipNumber,file);
-            return true;
-        }else {
-            return false;
-        }
-    }
-
-    /**
-     * 鎺ㄩ�乥ip搴斾粯钃濈エ
-     * @param id
-     * @param file
-     */
-    public boolean pushBipYF(Long id,String file){
-        //搴斾粯
-        QueryWrapper<BipInvoice> bipInvoiceQueryWrapper1 = new QueryWrapper<>();
-        bipInvoiceQueryWrapper1.lambda()
-                .eq(BipInvoice::getRailwayEntrustId, id)
-                .eq(BipInvoice::getInvoiceType, 1)
-                .in(BipInvoice::getResStatus, 200, 910)
-                .orderByDesc(BipInvoice::getCreateTime);
-        List<BipInvoice> list2 = bipInvoiceService.list(bipInvoiceQueryWrapper1);
-        if(list2!=null && list2.size()>0){
-            BipInvoice bipInvoice = list2.get(0);
-            String bipNumber = bipInvoice.getBipNumber();
-            fileUploadService.uploadUrlToBip(id,bipNumber,file);
-            return true;
-        }else {
-            return false;
-        }
-    }
-
-    /**
-     * 绾㈠啿寮�绁ㄦ帴鍙�
-     */
-    Map<String,Object> redTicketKaiPiao(InvoicingVo vo){
-        SaleCredit saleCredit = saleCreditService.getById(vo.getSaleCreditId());
-        Gson gson =new Gson();
-        String str = gson.toJson(vo);
-        System.out.println(str);
-        String responseBody = "";
-        responseBody = HttpRequest.post(invoiceIp+kpUrl+UuidUtils.generateUuid())
-                .timeout(400000)
-                .body(str)
-                .execute()
-                .body();
-        System.out.println(responseBody);
-
-        JSONObject jsonObj = JSON.parseObject(responseBody);
-        if(jsonObj!=null){
-            boolean flag = (Boolean)jsonObj.get("success");
-            JSONObject message = jsonObj.getJSONObject("message");
-            String requestId = (String) jsonObj.get("requestId");
-            if(!flag){
-                Map<String,Object> res = new HashMap<>();
-                res.put("success",flag);
-                res.put("message",message.get("errorMessage"));
-                InvoiceResult invoiceResult = new InvoiceResult();
-                invoiceResult.setRequestId(requestId);
-                invoiceResult.setSuccess(flag);
-                invoiceResult.setMessage((String) message.get("errorMessage"));
-                invoiceResult.setMethodName("绾㈠瓧寮�绁ㄦ帴鍙�");
-                invoiceResult.setEntrustCode(vo.getEntrustCode());
-                invoiceResultService.save(invoiceResult);
-
-                /*UpdateWrapper<RailwayEntrust> updateWrapper = new UpdateWrapper<>();
-                updateWrapper.lambda()
-                        .set(RailwayEntrust::getInvoiceRemark,(String) message.get("errorMessage"))
-                        .eq(RailwayEntrust::getEntrustCode,invoiceResult.getEntrustCode());
-                railwayEntrustMapper.update(null,updateWrapper);*/
-
-                saleCredit.setInvoiceRemark((String) message.get("errorMessage"));
-                saleCreditService.updateById(saleCredit);
-
-                return res;
-            }else {
-                String successMessage = (String)message.get("successMessage");
-                JSONObject model = jsonObj.getJSONObject("model");
-                JSONArray success = model.getJSONArray("success");
-                JSONObject modelObject = success.getJSONObject(0);
-                String invoiceTypeCode = (String) modelObject.get("invoiceTypeCode");
-                String invoiceNo = (String) modelObject.get("invoiceNo");
-                String invoiceDate = (String) modelObject.get("invoiceDate");
-                String invoiceQrCode = (String) modelObject.get("invoiceQrCode");
-                String serialNo = (String) modelObject.get("serialNo");
-                BigDecimal invoiceTotalPriceValue = (BigDecimal) modelObject.get("invoiceTotalPrice");
-                Double invoiceTotalPrice = Double.valueOf(invoiceTotalPriceValue.doubleValue());
-                BigDecimal invoiceTotalTaxValue = (BigDecimal) modelObject.get("invoiceTotalTax");
-                Double invoiceTotalTax = Double.valueOf(invoiceTotalTaxValue.doubleValue());
-                BigDecimal invoiceTotalPriceTaxValue = (BigDecimal) modelObject.get("invoiceTotalPriceTax");
-                Double invoiceTotalPriceTax = Double.valueOf(invoiceTotalPriceTaxValue.doubleValue());
-                String mulPurchaserMark = (String) modelObject.get("mulPurchaserMark");
-                String sellerTaxNo = (String) modelObject.get("sellerTaxNo");
-
-                InvoiceResult issueRedResult = new InvoiceResult();
-                issueRedResult.setRequestId(requestId);
-                issueRedResult.setSuccess(flag);
-                issueRedResult.setMessage(successMessage);
-                issueRedResult.setInvoiceNo(invoiceNo);
-                issueRedResult.setInvoiceTyCode(invoiceTypeCode);
-                issueRedResult.setInvoiceDate(invoiceDate);
-                issueRedResult.setInvoiceQrCode(invoiceQrCode);
-                issueRedResult.setSerialNo(serialNo);
-                issueRedResult.setMethodName("绾㈠瓧寮�绁ㄦ帴鍙�");
-                issueRedResult.setEntrustCode(vo.getEntrustCode());
-                issueRedResult.setInvoiceTotalPrice(invoiceTotalPrice);
-                issueRedResult.setInvoiceTotalTax(invoiceTotalTax);
-                issueRedResult.setInvoiceTotalPriceTax(invoiceTotalPriceTax);
-                issueRedResult.setMulPurchaserMark(mulPurchaserMark);
-                issueRedResult.setXTaxNo(sellerTaxNo);
-                invoiceResultService.save(issueRedResult);
-
-
-                JSONArray invoiceDetailList1 = modelObject.getJSONArray("invoiceDetailsList");
-                for (int i = 0; i < invoiceDetailList1.size(); i++) {
-                    JSONObject jsonObject = invoiceDetailList1.getJSONObject(i);
-                    int goodsLineNo = (int) jsonObject.get("goodsLineNo");
-                    String goodsName = (String) jsonObject.get("goodsName");
-                    String goodsCode = (String) jsonObject.get("goodsCode");
-                    BigDecimal goodsPriceValue = (BigDecimal)jsonObject.get("goodsPrice");
-                    Double goodsPrice = Double.valueOf(goodsPriceValue.doubleValue());
-
-                    double goodsQuantity=0.0;
-                    try {
-                        BigDecimal goodsQuantityValue = (BigDecimal)jsonObject.get("goodsQuantity");
-                        goodsQuantity = Double.valueOf(goodsQuantityValue.doubleValue());
-                    }catch (Exception e){
-                        e.printStackTrace();
-                        int goodsQuantity1 = (int) jsonObject.get("goodsQuantity");
-                        goodsQuantity = goodsQuantity1;
-                    }
-
-                    BigDecimal goodsTotalPriceValue = (BigDecimal)jsonObject.get("goodsTotalPrice");
-                    Double goodsTotalPrice = Double.valueOf(goodsTotalPriceValue.doubleValue());
-                    BigDecimal goodsTotalTaxValue = (BigDecimal)jsonObject.get("goodsTotalTax");
-                    Double goodsTotalTax = Double.valueOf(goodsTotalTaxValue.doubleValue());
-                    BigDecimal goodsTaxRateValue = (BigDecimal)jsonObject.get("goodsTaxRate");
-                    Double goodsTaxRate = Double.valueOf(goodsTaxRateValue.doubleValue());
-                    String invoiceLineNature = (String) jsonObject.get("invoiceLineNature");
-                    String goodsUnit = (String) jsonObject.get("goodsUnit");
-                    String goodsSpecification = (String) jsonObject.get("goodsSpecification");
-                    String coalType = (String)jsonObject.get("coalType");
-                    String agreementTerm = (String)jsonObject.get("agreementTerm");
-                    String name = "";
-                    if(goodsLineNo==1){
-                        name = "鐓ゆ";
-                    }
-                    if(goodsLineNo==2 && goodsTaxRate==0.13){
-                        name = "鍙栭�佽溅璐�";
-                    }
-                    if(goodsTaxRate==0.6){
-                        name = "涓撶嚎璐�";
-                    }
-
-                    InvoiceResultItem item = new InvoiceResultItem();
-                    item.setGoodsLineNature(invoiceLineNature);
-                    item.setGoodsCode(goodsCode);
-                    item.setGoodsPrice(goodsPrice);
-                    item.setGoodsType(name);
-                    if(goodsSpecification != null){
-                        item.setGoodsSpecification(goodsSpecification);
-                    }
-                    if(coalType !=null){
-                        item.setCoalType(coalType);
-                    }
-                    if(agreementTerm !=null){
-                        item.setAgreementTerm(agreementTerm);
-                    }
-                    item.setGoodsLineNo(goodsLineNo);
-                    item.setGoodsQuantity(goodsQuantity);
-                    item.setGoodsTaxRate(goodsTaxRate);
-                    item.setGoodsName(goodsName);
-                    item.setGoodsTotalPrice(goodsTotalPrice);
-                    item.setGoodsTotalTax(goodsTotalTax);
-                    item.setGoodsUnit(goodsUnit);
-                    item.setResultId(issueRedResult.getId());
-                    item.setEntrustCode(issueRedResult.getEntrustCode());
-                    String[] split = goodsName.split("\\*");
-                    int length = split.length;
-                    String coalName = split[length - 1];
-                    item.setCoalName(coalName);
-                    itemMapper.insert(item);
-                }
-
-                QueryWrapper<InvoiceResult> invoiceResultQueryWrapper = new QueryWrapper<>();
-                invoiceResultQueryWrapper.lambda()
-                        .eq(InvoiceResult::getEntrustCode,issueRedResult.getEntrustCode())
-                        .eq(InvoiceResult::getMethodName,"钃濆瓧寮�绁ㄦ帴鍙�");
-                List<InvoiceResult> list = invoiceResultService.list(invoiceResultQueryWrapper);
-                List<Long> collect = list.stream().map(item -> item.getId()).collect(Collectors.toList());
-                removeByIds(collect);
-
-                /*UpdateWrapper<RailwayEntrust> updateWrapper = new UpdateWrapper<>();
-                updateWrapper.lambda().set(RailwayEntrust::getInvoiceResult,null)
-                        .set(RailwayEntrust::getInvoiceResultId,null)
-                        .set(RailwayEntrust::getInvoiceRemark,"绾㈠瓧寮�绁ㄦ垚鍔�")
-                        .set(RailwayEntrust::getInvoiceRedResult,2)
-                        .set(RailwayEntrust::getInvoicUrl,null)
-                        .set(RailwayEntrust::getInvoiceRedResultId,issueRedResult.getId())
-                        .eq(RailwayEntrust::getEntrustCode,issueRedResult.getEntrustCode());
-                railwayEntrustMapper.update(null,updateWrapper);*/
-
-                saleCredit.setInvoiceRemark("绾㈠瓧寮�绁ㄦ垚鍔�");
-                saleCredit.setRedInvoiceResultId(issueRedResult.getId());
-                saleCredit.setStatus(7);
-                saleCreditService.updateById(saleCredit);
-
-                Map<String,Object> res = new HashMap<>();
-                res.put("success",flag);
-                res.put("message",successMessage);
-                return res;
-            }
-        }else {
-            Map<String,Object> res = new HashMap<>();
-            res.put("success",false);
-            res.put("message","绾㈠瓧寮�绁ㄦ帴鍙e紓甯�");
-            InvoiceResult invoiceResult = new InvoiceResult();
-            invoiceResult.setSuccess(false);
-            invoiceResult.setMessage("绾㈠瓧寮�绁ㄦ帴鍙e紓甯�");
-            invoiceResult.setMethodName("绾㈠瓧寮�绁ㄦ帴鍙�");
-            invoiceResult.setEntrustCode(vo.getEntrustCode());
-            invoiceResultService.save(invoiceResult);
-
-           /* QueryWrapper<RailwayEntrust> wrapper = new QueryWrapper<>();
-            wrapper.lambda().eq(RailwayEntrust::getEntrustCode,invoiceResult.getEntrustCode());
-            RailwayEntrust railwayEntrust = railwayEntrustMapper.selectList(wrapper).get(0);
-            railwayEntrust.setInvoiceRemark("绾㈠瓧寮�绁ㄦ帴鍙e紓甯�");
-            railwayEntrustMapper.updateById(railwayEntrust);*/
-
-            saleCredit.setInvoiceRemark("绾㈠瓧寮�绁ㄦ帴鍙e紓甯�");
-            saleCredit.setStatus(6);
-            saleCreditService.updateById(saleCredit);
-
-
-            return res;
-        }
-
-    }
-
-    /**
-     * 鏁扮數绾㈠瓧纭鍗曟柊澧炴帴鍙�
-     */
-    Map<String,Object> redTicketConfirm(InvoiceResult invoiceResult,SaleCredit saleCredit){
-        String format = strToFormat(invoiceResult.getInvoiceDate());
-        List<InvoiceResultItem> resultItems = itemMapper.selectList(new LambdaQueryWrapper<InvoiceResultItem>()
-                .eq(InvoiceResultItem::getResultId,invoiceResult.getId())
-        );
-
-        if(saleCredit!=null) {
-            RedConfirmVo confirmVo = new RedConfirmVo();
-            confirmVo.setTaxNo(saleCredit.getCreditCodeB());
-            confirmVo.setOrgCode(saleCredit.getCreditCodeB());
-            confirmVo.setTaxUserName(saleCredit.getContactPhoneB());
-            confirmVo.setRedConfirmSerialNo("MX_RPP_"+System.currentTimeMillis());
-            confirmVo.setEntryIdentity("01");
-            confirmVo.setSellerTaxNo(saleCredit.getCreditCodeB());
-            confirmVo.setSellerTaxName(saleCredit.getPartyB());
-            confirmVo.setBuyerTaxName(saleCredit.getPartyA());
-            confirmVo.setBuyerTaxNo(saleCredit.getCreditCodeA());
-            confirmVo.setOriginInvoiceIsPaper("N");
-            confirmVo.setInvoiceSource("2");
-            confirmVo.setOriginalInvoiceNo(invoiceResult.getInvoiceNo());
-            confirmVo.setOriginInvoiceDate(format);
-            confirmVo.setOriginInvoiceTotalPrice(invoiceResult.getInvoiceTotalPrice());
-            confirmVo.setOriginInvoiceTotalTax(invoiceResult.getInvoiceTotalTax());
-            confirmVo.setOriginInvoiceType("01");
-            confirmVo.setInvoiceTotalPrice(invoiceResult.getInvoiceTotalPrice()*-1);
-            confirmVo.setInvoiceTotalTax(invoiceResult.getInvoiceTotalTax()*-1);
-            confirmVo.setRedInvoiceLabel("02");
-            confirmVo.setAutoIssueSwitch("N");
-
-            List<RedConfirmVo.RedConfirmDetail> detailList = new ArrayList<>();
-            for (InvoiceResultItem resultItem : resultItems) {
-                RedConfirmVo.RedConfirmDetail detail = new RedConfirmVo.RedConfirmDetail();
-                detail.setOriginalInvoiceDetailNo(resultItem.getGoodsLineNo());
-                detail.setGoodsLineNo(resultItem.getGoodsLineNo());
-                detail.setGoodsCode(resultItem.getGoodsCode());
-                detail.setGoodsTaxRate(resultItem.getGoodsTaxRate());
-                detail.setGoodsName(resultItem.getCoalName());
-                detail.setProjectName(resultItem.getCoalName());
-                detail.setGoodsPrice(resultItem.getGoodsPrice()+"");
-                detail.setGoodsSpecification(resultItem.getGoodsSpecification());
-                detail.setGoodsUnit(resultItem.getGoodsUnit());
-                detail.setGoodsQuantity(resultItem.getGoodsQuantity()*-1+"");
-                detail.setGoodsTotalPrice(resultItem.getGoodsTotalPrice()*-1);
-                detail.setGoodsTotalTax(resultItem.getGoodsTotalTax()*-1);
-                detail.setCoalType(resultItem.getCoalType());
-                detail.setAgreementTerm(resultItem.getAgreementTerm());
-                detailList.add(detail);
-            }
-            confirmVo.setRedConfirmDetailReqEntityList(detailList);
-            Gson gson =new Gson();
-            String str = gson.toJson(confirmVo);
-            System.out.println(str);
-            String responseBody = "";
-            responseBody = HttpRequest.post(invoiceIp+redConfirmUrl+ UuidUtils.generateUuid())
-                    .timeout(400000)
-                    .body(str)
-                    .execute()
-                    .body();
-            System.out.println(responseBody);
-            JSONObject jsonObj = JSON.parseObject(responseBody);
-            if(jsonObj!=null) {
-                boolean flag = (Boolean) jsonObj.get("success");
-                JSONObject message = jsonObj.getJSONObject("message");
-                String requestId = (String) jsonObj.get("requestId");
-                if (!flag) {
-                    Map<String,Object> res = new HashMap<>();
-                    res.put("success",flag);
-                    res.put("message",message.get("errorMessage"));
-                    InvoiceResult result = new InvoiceResult();
-                    result.setRequestId(requestId);
-                    result.setSuccess(flag);
-                    result.setMessage((String) message.get("errorMessage"));
-                    result.setMethodName("绾㈠瓧纭鍗曟柊澧炴帴鍙�");
-                    result.setEntrustCode(saleCredit.getEntrustCode());
-                    invoiceResultService.save(result);
-
-                    saleCredit.setInvoiceRemark((String) message.get("errorMessage"));
-                    saleCreditService.updateById(saleCredit);
-                    return res;
-                } else {
-                    String successMessage = (String) message.get("successMessage");
-                    JSONArray modelarr = jsonObj.getJSONArray("model");
-                    JSONObject model = modelarr.getJSONObject(0);
-
-                    String redConfirmSerialNo = (String)model.get("redConfirmSerialNo");
-                    String redConfirmNo = (String)model.get("redConfirmNo");
-                    String redConfirmUuid = (String)model.get("redConfirmUuid");
-                    String confirmState = (String)model.get("confirmState");
-                    String confirmBillingMark = (String)model.get("confirmBillingMark");
-
-                    InvoiceResult result = new InvoiceResult();
-                    result.setXTaxNo(invoiceResult.getXTaxNo());
-                    result.setRequestId(requestId);
-                    result.setSuccess(flag);
-                    result.setMessage(successMessage);
-                    result.setSerialNo(redConfirmSerialNo);
-                    result.setInvoiceNo(redConfirmNo);
-                    result.setRedConfirmUuid(redConfirmUuid);
-                    result.setConfirmState(confirmState);
-                    result.setConfirmBillingMark(confirmBillingMark);
-                    result.setMethodName("绾㈠瓧纭鍗曟柊澧炴帴鍙�");
-                    result.setOriginalInvoiceNo(invoiceResult.getInvoiceNo());
-                    result.setEntrustCode(invoiceResult.getEntrustCode());
-                    invoiceResultService.save(result);
-                    Map<String,Object> res = new HashMap<>();
-                    res.put("success",flag);
-                    res.put("message",successMessage);
-                    res.put("obj",result);
-                    return res;
-                }
-            }else {
-                Map<String,Object> res = new HashMap<>();
-                res.put("success",false);
-                res.put("message","寮�绁ㄦ帴鍙e紓甯�");
-
-                InvoiceResult result = new InvoiceResult();
-                result.setSuccess(false);
-                result.setMessage("绾㈠瓧纭鍗曟柊澧炴帴鍙e紓甯�");
-                result.setMethodName("绾㈠瓧纭鍗曟柊澧炴帴鍙�");
-                result.setEntrustCode(saleCredit.getEntrustCode());
-                invoiceResultService.save(result);
-
-                saleCredit.setInvoiceRemark("绾㈠瓧纭鍗曟柊澧炴帴鍙e紓甯�");
-                saleCreditService.updateById(saleCredit);
-                return res;
-            }
-        }else {
-            Map<String,Object> res = new HashMap<>();
-            res.put("success",false);
-            res.put("message","绾㈠瓧纭鍗曟柊澧炴帴鍙e紓甯�");
-            InvoiceResult result = new InvoiceResult();
-            result.setSuccess(false);
-            result.setMessage("绾㈠瓧纭鍗曟柊澧炴帴鍙e紓甯�");
-            result.setMethodName("绾㈠瓧纭鍗曟柊澧炴帴鍙�");
-            result.setEntrustCode(saleCredit.getEntrustCode());
-            invoiceResultService.save(result);
-
-            saleCredit.setInvoiceRemark("绾㈠瓧纭鍗曟柊澧炴帴鍙e紓甯�");
-            saleCreditService.updateById(saleCredit);
-            return res;
-        }
-    }
-
-    /**
-     * 鏁扮數绾㈠瓧纭鍗曟柊澧炴帴鍙�
-     */
-    Map<String,Object> redTicketConfirm1(InvoiceResult invoiceResult,BillingInfo saleCredit){
-        String format = strToFormat(invoiceResult.getInvoiceDate());
-        List<InvoiceResultItem> resultItems = itemMapper.selectList(new LambdaQueryWrapper<InvoiceResultItem>()
-                .eq(InvoiceResultItem::getResultId,invoiceResult.getId())
-        );
-
-        if(saleCredit!=null) {
-            RedConfirmVo confirmVo = new RedConfirmVo();
-            confirmVo.setTaxNo(saleCredit.getCreditCodeB());
-            confirmVo.setOrgCode(saleCredit.getCreditCodeB());
-            confirmVo.setTaxUserName(saleCredit.getContactPhoneB());
-            confirmVo.setRedConfirmSerialNo("MX_RPP_"+System.currentTimeMillis());
-            confirmVo.setEntryIdentity("01");
-            confirmVo.setSellerTaxNo(saleCredit.getCreditCodeB());
-            confirmVo.setSellerTaxName(saleCredit.getPartyB());
-            confirmVo.setBuyerTaxName(saleCredit.getPartyA());
-            confirmVo.setBuyerTaxNo(saleCredit.getCreditCodeA());
-            confirmVo.setOriginInvoiceIsPaper("N");
-            confirmVo.setInvoiceSource("2");
-            confirmVo.setOriginalInvoiceNo(invoiceResult.getInvoiceNo());
-            confirmVo.setOriginInvoiceDate(format);
-            confirmVo.setOriginInvoiceTotalPrice(invoiceResult.getInvoiceTotalPrice());
-            confirmVo.setOriginInvoiceTotalTax(invoiceResult.getInvoiceTotalTax());
-            confirmVo.setOriginInvoiceType("01");
-            confirmVo.setInvoiceTotalPrice(invoiceResult.getInvoiceTotalPrice()*-1);
-            confirmVo.setInvoiceTotalTax(invoiceResult.getInvoiceTotalTax()*-1);
-            confirmVo.setRedInvoiceLabel("02");
-            confirmVo.setAutoIssueSwitch("N");
-
-            List<RedConfirmVo.RedConfirmDetail> detailList = new ArrayList<>();
-            for (InvoiceResultItem resultItem : resultItems) {
-                RedConfirmVo.RedConfirmDetail detail = new RedConfirmVo.RedConfirmDetail();
-                detail.setOriginalInvoiceDetailNo(resultItem.getGoodsLineNo());
-                detail.setGoodsLineNo(resultItem.getGoodsLineNo());
-                detail.setGoodsCode(resultItem.getGoodsCode());
-                detail.setGoodsTaxRate(resultItem.getGoodsTaxRate());
-                detail.setGoodsName(resultItem.getCoalName());
-                detail.setProjectName(resultItem.getCoalName());
-                detail.setGoodsPrice(resultItem.getGoodsPrice()+"");
-                detail.setGoodsSpecification(resultItem.getGoodsSpecification());
-                detail.setGoodsUnit(resultItem.getGoodsUnit());
-                detail.setGoodsQuantity(resultItem.getGoodsQuantity()*-1+"");
-                detail.setGoodsTotalPrice(resultItem.getGoodsTotalPrice()*-1);
-                detail.setGoodsTotalTax(resultItem.getGoodsTotalTax()*-1);
-                detail.setCoalType(resultItem.getCoalType());
-                detail.setAgreementTerm(resultItem.getAgreementTerm());
-                detailList.add(detail);
-            }
-            confirmVo.setRedConfirmDetailReqEntityList(detailList);
-            Gson gson =new Gson();
-            String str = gson.toJson(confirmVo);
-            System.out.println(str);
-            String responseBody = "";
-            responseBody = HttpRequest.post(invoiceIp+redConfirmUrl+ UuidUtils.generateUuid())
-                    .timeout(400000)
-                    .body(str)
-                    .execute()
-                    .body();
-            System.out.println(responseBody);
-            JSONObject jsonObj = JSON.parseObject(responseBody);
-            if(jsonObj!=null) {
-                boolean flag = (Boolean) jsonObj.get("success");
-                JSONObject message = jsonObj.getJSONObject("message");
-                String requestId = (String) jsonObj.get("requestId");
-                if (!flag) {
-                    Map<String,Object> res = new HashMap<>();
-                    res.put("success",flag);
-                    res.put("message",message.get("errorMessage"));
-                    InvoiceResult result = new InvoiceResult();
-                    result.setRequestId(requestId);
-                    result.setSuccess(flag);
-                    result.setMessage((String) message.get("errorMessage"));
-                    result.setMethodName("绾㈠瓧纭鍗曟柊澧炴帴鍙�");
-                    result.setEntrustCode(saleCredit.getEntrustCode());
-                    invoiceResultService.save(result);
-
-                    saleCredit.setInvoiceRemark((String) message.get("errorMessage"));
-                    billingInfoService.updateById(saleCredit);
-                    return res;
-                } else {
-                    String successMessage = (String) message.get("successMessage");
-                    JSONArray modelarr = jsonObj.getJSONArray("model");
-                    JSONObject model = modelarr.getJSONObject(0);
-
-                    String redConfirmSerialNo = (String)model.get("redConfirmSerialNo");
-                    String redConfirmNo = (String)model.get("redConfirmNo");
-                    String redConfirmUuid = (String)model.get("redConfirmUuid");
-                    String confirmState = (String)model.get("confirmState");
-                    String confirmBillingMark = (String)model.get("confirmBillingMark");
-
-                    InvoiceResult result = new InvoiceResult();
-                    result.setXTaxNo(invoiceResult.getXTaxNo());
-                    result.setRequestId(requestId);
-                    result.setSuccess(flag);
-                    result.setMessage(successMessage);
-                    result.setSerialNo(redConfirmSerialNo);
-                    result.setInvoiceNo(redConfirmNo);
-                    result.setRedConfirmUuid(redConfirmUuid);
-                    result.setConfirmState(confirmState);
-                    result.setConfirmBillingMark(confirmBillingMark);
-                    result.setMethodName("绾㈠瓧纭鍗曟柊澧炴帴鍙�");
-                    result.setOriginalInvoiceNo(invoiceResult.getInvoiceNo());
-                    result.setEntrustCode(invoiceResult.getEntrustCode());
-                    invoiceResultService.save(result);
-                    Map<String,Object> res = new HashMap<>();
-                    res.put("success",flag);
-                    res.put("message",successMessage);
-                    res.put("obj",result);
-                    return res;
-                }
-            }else {
-                Map<String,Object> res = new HashMap<>();
-                res.put("success",false);
-                res.put("message","寮�绁ㄦ帴鍙e紓甯�");
-
-                InvoiceResult result = new InvoiceResult();
-                result.setSuccess(false);
-                result.setMessage("绾㈠瓧纭鍗曟柊澧炴帴鍙e紓甯�");
-                result.setMethodName("绾㈠瓧纭鍗曟柊澧炴帴鍙�");
-                result.setEntrustCode(saleCredit.getEntrustCode());
-                invoiceResultService.save(result);
-
-                saleCredit.setInvoiceRemark("绾㈠瓧纭鍗曟柊澧炴帴鍙e紓甯�");
-                billingInfoService.updateById(saleCredit);
-                return res;
-            }
-        }else {
-            Map<String,Object> res = new HashMap<>();
-            res.put("success",false);
-            res.put("message","绾㈠瓧纭鍗曟柊澧炴帴鍙e紓甯�");
-            InvoiceResult result = new InvoiceResult();
-            result.setSuccess(false);
-            result.setMessage("绾㈠瓧纭鍗曟柊澧炴帴鍙e紓甯�");
-            result.setMethodName("绾㈠瓧纭鍗曟柊澧炴帴鍙�");
-            result.setEntrustCode(saleCredit.getEntrustCode());
-            invoiceResultService.save(result);
-
-            saleCredit.setInvoiceRemark("绾㈠瓧纭鍗曟柊澧炴帴鍙e紓甯�");
-            billingInfoService.updateById(saleCredit);
-            return res;
-        }
-    }
-
-    /**
-     * 鏁扮數绾㈠瓧纭鍗曟煡璇㈡帴鍙�
-     */
-    Map<String,Object> redTicketConfirmSearch(InvoiceResult invoiceResult,SaleCredit saleCredit){
-       /* QueryWrapper<RailwayEntrust> wrapper = new QueryWrapper<>();
-        wrapper.lambda().eq(RailwayEntrust::getEntrustCode,invoiceResult.getEntrustCode());
-        RailwayEntrust railwayEntrust = railwayEntrustMapper.selectList(wrapper).get(0);*/
-
-
-        Map<String,Object> map = new HashMap<>();
-        map.put("taxNo",invoiceResult.getXTaxNo());
-        //map.put("taxUserName",dwuser);
-        map.put("sellerTaxNo",invoiceResult.getXTaxNo());
-        map.put("redConfirmUuid",invoiceResult.getRedConfirmUuid());
-        Gson gson =new Gson();
-        String str = gson.toJson(map);
-        System.out.println(str);
-        String responseBody = "";
-        responseBody = HttpRequest.post(invoiceIp+redConfirmSearchUrl+UuidUtils.generateUuid())
-                .timeout(400000)
-                .body(str)
-                .execute()
-                .body();
-        System.out.println(responseBody);
-
-        JSONObject jsonObj = JSON.parseObject(responseBody);
-        if(jsonObj!=null) {
-            boolean flag = (Boolean) jsonObj.get("success");
-            JSONObject message = jsonObj.getJSONObject("message");
-            String requestId = (String) jsonObj.get("requestId");
-            if (!flag) {
-                Map<String,Object> res = new HashMap<>();
-                res.put("success",false);
-                res.put("message","绾㈠瓧纭鍗曠‘璁ゆ帴鍙e紓甯�");
-                InvoiceResult result = new InvoiceResult();
-                result.setSuccess(false);
-                result.setRequestId(requestId);
-                result.setMessage("绾㈠瓧纭鍗曠‘璁ゆ帴鍙e紓甯�");
-                result.setMethodName("绾㈠瓧纭鍗曠‘璁ゆ帴鍙�");
-                result.setEntrustCode(invoiceResult.getEntrustCode());
-                invoiceResultService.save(result);
-
-                saleCredit.setInvoiceRemark("绾㈠瓧纭鍗曠‘璁ゆ帴鍙e紓甯�");
-                saleCreditService.updateById(saleCredit);
-                return res;
-            } else {
-
-
-                String successMessage = (String) message.get("successMessage");
-                JSONArray modelarr = jsonObj.getJSONArray("model");
-                JSONObject model = modelarr.getJSONObject(0);
-
-                String redConfirmSerialNo = (String)model.get("redConfirmSerialNo");
-                String redConfirmNo = (String)model.get("redConfirmNo");
-                String redConfirmUuid = (String)model.get("redConfirmUuid");
-                String confirmState = (String)model.get("confirmState");
-                String confirmBillingMark = (String)model.get("confirmBillingMark");
-                String entryIdentity = (String)model.get("entryIdentity");
-                String sellerTaxNo = (String)model.get("sellerTaxNo");
-                String sellerName = (String)model.get("sellerName");
-                String buyerTaxNo = (String)model.get("buyerTaxNo");
-                String buyerName = (String)model.get("buyerName");
-                String originalInvoiceNo = (String)model.get("originalInvoiceNo");
-                String originInvoiceIsPaper = (String)model.get("originInvoiceIsPaper");
-                String originInvoiceDate = (String)model.get("originInvoiceDate");
-                String originInvoiceType = (String)model.get("originInvoiceType");
-                String redInvoiceLabel = (String)model.get("redInvoiceLabel");
-                String alreadyRedInvoiceFlag = (String)model.get("alreadyRedInvoiceFlag");
-                String redInvoiceNo = (String)model.get("redInvoiceNo");
-                String redInvoiceDate = (String)model.get("redInvoiceDate");
-                String entryDate = (String)model.get("entryDate");
-                String validFlag = (String)model.get("validFlag");
-                String invoiceSource = (String)model.get("invoiceSource");
-                String tenantCode = (String)model.get("tenantCode");
-                String orgCode = (String)model.get("orgCode");
-                String buySelSelector = (String)model.get("buySelSelector");
-                String autoIssueSwitch = (String)model.get("autoIssueSwitch");
-                String priceTaxMark = (String)model.get("priceTaxMark");
-                BigDecimal originInvoiceTotalPriceValue = (BigDecimal) model.get("originInvoiceTotalPrice");
-                Double originInvoiceTotalPrice = Double.valueOf(originInvoiceTotalPriceValue.doubleValue());
-                BigDecimal originInvoiceTotalTaxValue = (BigDecimal) model.get("originInvoiceTotalTax");
-                Double originInvoiceTotalTax = Double.valueOf(originInvoiceTotalTaxValue.doubleValue());
-                BigDecimal invoiceTotalPriceValue = (BigDecimal) model.get("invoiceTotalPrice");
-                Double invoiceTotalPrice = Double.valueOf(invoiceTotalPriceValue.doubleValue());
-                BigDecimal invoiceTotalTaxValue = (BigDecimal) model.get("invoiceTotalTax");
-                Double invoiceTotalTax = Double.valueOf(invoiceTotalTaxValue.doubleValue());
-
-                InvoiceResult result = new InvoiceResult();
-                result.setRequestId(requestId);
-                result.setMessage(successMessage);
-                result.setSerialNo(redConfirmSerialNo);
-                result.setInvoiceNo(redConfirmNo);
-                result.setSuccess(flag);
-                result.setInvoiceNo(invoiceResult.getInvoiceNo());
-                result.setEntrustCode(invoiceResult.getEntrustCode());
-                result.setXTaxNo(sellerTaxNo);
-                result.setXOrgCode(orgCode);
-                result.setXName(sellerName);
-                result.setGName(buyerName);
-                result.setGTaxNo(buyerTaxNo);
-                result.setEntryDate(entryDate);
-                result.setEntryIdentity(entryIdentity);
-                result.setAlreadyRedInvoiceFlag(alreadyRedInvoiceFlag);
-                result.setOriginInvoiceType(originInvoiceType);
-                result.setOriginalInvoiceDate(originInvoiceDate);
-                result.setOriginInvoiceIsPaper(originInvoiceIsPaper);
-                result.setOriginalInvoiceNo(originalInvoiceNo);
-                result.setRedInvoiceNo(redInvoiceNo);
-                result.setRedInvoiceDate(redInvoiceDate);
-                result.setValidFlag(validFlag);
-                result.setRedInvoiceLabel(redInvoiceLabel);
-                result.setRedConfirmUuid(redConfirmUuid);
-                result.setConfirmState(confirmState);
-                result.setConfirmBillingMark(confirmBillingMark);
-                result.setMethodName("绾㈠瓧纭鍗曠‘璁ゆ帴鍙�");
-                result.setInvoiceTotalPrice(invoiceTotalPrice);
-                result.setInvoiceTotalTax(invoiceTotalTax);
-                result.setOriginInvoiceTotalPrice(originInvoiceTotalPrice);
-                result.setOriginInvoiceTotalTax(originInvoiceTotalTax);
-                invoiceResultService.save(result);
-
-
-                JSONArray invoiceDetailList1 = model.getJSONArray("electricInvoiceDetails");
-                for (int i = 0; i < invoiceDetailList1.size(); i++) {
-                    JSONObject jsonObject = invoiceDetailList1.getJSONObject(i);
-                    int goodsLineNo = (int) jsonObject.get("goodsLineNo");
-                    int originalInvoiceDetailNo = (int) jsonObject.get("originalInvoiceDetailNo");
-                    String goodsName = (String) jsonObject.get("goodsName");
-                    String goodsCode = (String) jsonObject.get("goodsCode");
-                    BigDecimal goodsPriceValue = (BigDecimal)jsonObject.get("goodsPrice");
-                    Double goodsPrice = Double.valueOf(goodsPriceValue.doubleValue());
-                    double goodsQuantity=0.0;
-                    try {
-                        BigDecimal goodsQuantityValue = (BigDecimal)jsonObject.get("goodsQuantity");
-                        goodsQuantity = Double.valueOf(goodsQuantityValue.doubleValue());
-                    }catch (Exception e){
-                        e.printStackTrace();
-                        int goodsQuantity1 = (int) jsonObject.get("goodsQuantity");
-                        goodsQuantity = goodsQuantity1;
-                    }
-
-                    BigDecimal goodsTotalPriceValue = (BigDecimal)jsonObject.get("goodsTotalPrice");
-                    Double goodsTotalPrice = Double.valueOf(goodsTotalPriceValue.doubleValue());
-                    BigDecimal goodsTotalTaxValue = (BigDecimal)jsonObject.get("goodsTotalTax");
-                    Double goodsTotalTax = Double.valueOf(goodsTotalTaxValue.doubleValue());
-                    BigDecimal goodsTaxRateValue = (BigDecimal)jsonObject.get("goodsTaxRate");
-                    Double goodsTaxRate = Double.valueOf(goodsTaxRateValue.doubleValue());
-                    String invoiceLineNature = (String) jsonObject.get("invoiceLineNature");
-                    String goodsUnit = (String) jsonObject.get("goodsUnit");
-                    String goodsSpecification = (String) jsonObject.get("goodsSpecification");
-                    String coalType = (String)jsonObject.get("coalType");
-                    String agreementTerm = (String)jsonObject.get("agreementTerm");
-                    String name = "";
-                    if(goodsLineNo==1){
-                        name = "鐓ゆ";
-                    }
-                    if(goodsLineNo==2){
-                        name = "鍙栭�佽溅璐�";
-                    }
-                    if(goodsLineNo==3){
-                        name = "涓撶嚎璐�";
-                    }
-
-                    InvoiceResultItem item = new InvoiceResultItem();
-                    item.setGoodsLineNature(invoiceLineNature);
-                    item.setOriginalInvoiceDetailNo(originalInvoiceDetailNo);
-                    item.setGoodsCode(goodsCode);
-                    item.setGoodsPrice(goodsPrice);
-                    item.setGoodsType(name);
-                    if(goodsSpecification !=null){
-                        item.setGoodsSpecification(goodsSpecification);
-                    }
-                    item.setGoodsLineNo(goodsLineNo);
-                    item.setGoodsQuantity(goodsQuantity);
-                    item.setGoodsTaxRate(goodsTaxRate);
-                    item.setGoodsName(goodsName);
-                    item.setGoodsTotalPrice(goodsTotalPrice);
-                    item.setGoodsTotalTax(goodsTotalTax);
-                    item.setGoodsUnit(goodsUnit);
-                    item.setResultId(result.getId());
-                    item.setEntrustCode(result.getEntrustCode());
-                    if(coalType !=null){
-                        item.setCoalType(coalType);
-                    }
-                    if(agreementTerm !=null){
-                        item.setAgreementTerm(agreementTerm);
-                    }
-                    String[] split = goodsName.split("\\*");
-                    int length = split.length;
-                    String coalName = split[length - 1];
-                    item.setCoalName(coalName);
-                    itemMapper.insert(item);
-                }
-                Map<String,Object> res = new HashMap<>();
-                res.put("success",flag);
-                res.put("message",successMessage);
-                res.put("obj",result);
-                saleCredit.setInvoiceRemark("绾㈠瓧纭鍗曠‘璁ゆ帴鍙f垚鍔�");
-                saleCredit.setRedInvoiceResultId(result.getId());
-                saleCreditService.updateById(saleCredit);
-                return res;
-            }
-        }else {
-            Map<String,Object> res = new HashMap<>();
-            res.put("success",false);
-            res.put("message","绾㈠瓧纭鍗曠‘璁ゆ帴鍙e紓甯�");
-            InvoiceResult result = new InvoiceResult();
-            result.setSuccess(false);
-            result.setMessage("绾㈠瓧纭鍗曠‘璁ゆ帴鍙e紓甯�");
-            result.setMethodName("绾㈠瓧纭鍗曠‘璁ゆ帴鍙�");
-            result.setEntrustCode(invoiceResult.getEntrustCode());
-            invoiceResultService.save(result);
-
-            saleCredit.setInvoiceRemark("绾㈠瓧纭鍗曠‘璁ゆ帴鍙e紓甯�");
-            saleCreditService.updateById(saleCredit);
-            return res;
-        }
-
-    }
-
-    /**
-     * 鏁扮數绾㈠瓧纭鍗曟煡璇㈡帴鍙�
-     */
-    Map<String,Object> redTicketConfirmSearch1(InvoiceResult invoiceResult,BillingInfo saleCredit){
-       /* QueryWrapper<RailwayEntrust> wrapper = new QueryWrapper<>();
-        wrapper.lambda().eq(RailwayEntrust::getEntrustCode,invoiceResult.getEntrustCode());
-        RailwayEntrust railwayEntrust = railwayEntrustMapper.selectList(wrapper).get(0);*/
-
-
-        Map<String,Object> map = new HashMap<>();
-        map.put("taxNo",invoiceResult.getXTaxNo());
-        //map.put("taxUserName",dwuser);
-        map.put("sellerTaxNo",invoiceResult.getXTaxNo());
-        map.put("redConfirmUuid",invoiceResult.getRedConfirmUuid());
-        Gson gson =new Gson();
-        String str = gson.toJson(map);
-        System.out.println(str);
-        String responseBody = "";
-        responseBody = HttpRequest.post(invoiceIp+redConfirmSearchUrl+UuidUtils.generateUuid())
-                .timeout(400000)
-                .body(str)
-                .execute()
-                .body();
-        System.out.println(responseBody);
-
-        JSONObject jsonObj = JSON.parseObject(responseBody);
-        if(jsonObj!=null) {
-            boolean flag = (Boolean) jsonObj.get("success");
-            JSONObject message = jsonObj.getJSONObject("message");
-            String requestId = (String) jsonObj.get("requestId");
-            if (!flag) {
-                Map<String,Object> res = new HashMap<>();
-                res.put("success",false);
-                res.put("message","绾㈠瓧纭鍗曠‘璁ゆ帴鍙e紓甯�");
-                InvoiceResult result = new InvoiceResult();
-                result.setSuccess(false);
-                result.setRequestId(requestId);
-                result.setMessage("绾㈠瓧纭鍗曠‘璁ゆ帴鍙e紓甯�");
-                result.setMethodName("绾㈠瓧纭鍗曠‘璁ゆ帴鍙�");
-                result.setEntrustCode(invoiceResult.getEntrustCode());
-                invoiceResultService.save(result);
-
-                saleCredit.setInvoiceRemark("绾㈠瓧纭鍗曠‘璁ゆ帴鍙e紓甯�");
-                billingInfoService.updateById(saleCredit);
-                return res;
-            } else {
-
-
-                String successMessage = (String) message.get("successMessage");
-                JSONArray modelarr = jsonObj.getJSONArray("model");
-                JSONObject model = modelarr.getJSONObject(0);
-
-                String redConfirmSerialNo = (String)model.get("redConfirmSerialNo");
-                String redConfirmNo = (String)model.get("redConfirmNo");
-                String redConfirmUuid = (String)model.get("redConfirmUuid");
-                String confirmState = (String)model.get("confirmState");
-                String confirmBillingMark = (String)model.get("confirmBillingMark");
-                String entryIdentity = (String)model.get("entryIdentity");
-                String sellerTaxNo = (String)model.get("sellerTaxNo");
-                String sellerName = (String)model.get("sellerName");
-                String buyerTaxNo = (String)model.get("buyerTaxNo");
-                String buyerName = (String)model.get("buyerName");
-                String originalInvoiceNo = (String)model.get("originalInvoiceNo");
-                String originInvoiceIsPaper = (String)model.get("originInvoiceIsPaper");
-                String originInvoiceDate = (String)model.get("originInvoiceDate");
-                String originInvoiceType = (String)model.get("originInvoiceType");
-                String redInvoiceLabel = (String)model.get("redInvoiceLabel");
-                String alreadyRedInvoiceFlag = (String)model.get("alreadyRedInvoiceFlag");
-                String redInvoiceNo = (String)model.get("redInvoiceNo");
-                String redInvoiceDate = (String)model.get("redInvoiceDate");
-                String entryDate = (String)model.get("entryDate");
-                String validFlag = (String)model.get("validFlag");
-                String invoiceSource = (String)model.get("invoiceSource");
-                String tenantCode = (String)model.get("tenantCode");
-                String orgCode = (String)model.get("orgCode");
-                String buySelSelector = (String)model.get("buySelSelector");
-                String autoIssueSwitch = (String)model.get("autoIssueSwitch");
-                String priceTaxMark = (String)model.get("priceTaxMark");
-                BigDecimal originInvoiceTotalPriceValue = (BigDecimal) model.get("originInvoiceTotalPrice");
-                Double originInvoiceTotalPrice = Double.valueOf(originInvoiceTotalPriceValue.doubleValue());
-                BigDecimal originInvoiceTotalTaxValue = (BigDecimal) model.get("originInvoiceTotalTax");
-                Double originInvoiceTotalTax = Double.valueOf(originInvoiceTotalTaxValue.doubleValue());
-                BigDecimal invoiceTotalPriceValue = (BigDecimal) model.get("invoiceTotalPrice");
-                Double invoiceTotalPrice = Double.valueOf(invoiceTotalPriceValue.doubleValue());
-                BigDecimal invoiceTotalTaxValue = (BigDecimal) model.get("invoiceTotalTax");
-                Double invoiceTotalTax = Double.valueOf(invoiceTotalTaxValue.doubleValue());
-
-                InvoiceResult result = new InvoiceResult();
-                result.setRequestId(requestId);
-                result.setMessage(successMessage);
-                result.setSerialNo(redConfirmSerialNo);
-                result.setInvoiceNo(redConfirmNo);
-                result.setSuccess(flag);
-                result.setInvoiceNo(invoiceResult.getInvoiceNo());
-                result.setEntrustCode(invoiceResult.getEntrustCode());
-                result.setXTaxNo(sellerTaxNo);
-                result.setXOrgCode(orgCode);
-                result.setXName(sellerName);
-                result.setGName(buyerName);
-                result.setGTaxNo(buyerTaxNo);
-                result.setEntryDate(entryDate);
-                result.setEntryIdentity(entryIdentity);
-                result.setAlreadyRedInvoiceFlag(alreadyRedInvoiceFlag);
-                result.setOriginInvoiceType(originInvoiceType);
-                result.setOriginalInvoiceDate(originInvoiceDate);
-                result.setOriginInvoiceIsPaper(originInvoiceIsPaper);
-                result.setOriginalInvoiceNo(originalInvoiceNo);
-                result.setRedInvoiceNo(redInvoiceNo);
-                result.setRedInvoiceDate(redInvoiceDate);
-                result.setValidFlag(validFlag);
-                result.setRedInvoiceLabel(redInvoiceLabel);
-                result.setRedConfirmUuid(redConfirmUuid);
-                result.setConfirmState(confirmState);
-                result.setConfirmBillingMark(confirmBillingMark);
-                result.setMethodName("绾㈠瓧纭鍗曠‘璁ゆ帴鍙�");
-                result.setInvoiceTotalPrice(invoiceTotalPrice);
-                result.setInvoiceTotalTax(invoiceTotalTax);
-                result.setOriginInvoiceTotalPrice(originInvoiceTotalPrice);
-                result.setOriginInvoiceTotalTax(originInvoiceTotalTax);
-                invoiceResultService.save(result);
-
-
-                JSONArray invoiceDetailList1 = model.getJSONArray("electricInvoiceDetails");
-                for (int i = 0; i < invoiceDetailList1.size(); i++) {
-                    JSONObject jsonObject = invoiceDetailList1.getJSONObject(i);
-                    int goodsLineNo = (int) jsonObject.get("goodsLineNo");
-                    int originalInvoiceDetailNo = (int) jsonObject.get("originalInvoiceDetailNo");
-                    String goodsName = (String) jsonObject.get("goodsName");
-                    String goodsCode = (String) jsonObject.get("goodsCode");
-                    BigDecimal goodsPriceValue = (BigDecimal)jsonObject.get("goodsPrice");
-                    Double goodsPrice = Double.valueOf(goodsPriceValue.doubleValue());
-                    double goodsQuantity=0.0;
-                    try {
-                        BigDecimal goodsQuantityValue = (BigDecimal)jsonObject.get("goodsQuantity");
-                        goodsQuantity = Double.valueOf(goodsQuantityValue.doubleValue());
-                    }catch (Exception e){
-                        e.printStackTrace();
-                        int goodsQuantity1 = (int) jsonObject.get("goodsQuantity");
-                        goodsQuantity = goodsQuantity1;
-                    }
-
-                    BigDecimal goodsTotalPriceValue = (BigDecimal)jsonObject.get("goodsTotalPrice");
-                    Double goodsTotalPrice = Double.valueOf(goodsTotalPriceValue.doubleValue());
-                    BigDecimal goodsTotalTaxValue = (BigDecimal)jsonObject.get("goodsTotalTax");
-                    Double goodsTotalTax = Double.valueOf(goodsTotalTaxValue.doubleValue());
-                    BigDecimal goodsTaxRateValue = (BigDecimal)jsonObject.get("goodsTaxRate");
-                    Double goodsTaxRate = Double.valueOf(goodsTaxRateValue.doubleValue());
-                    String invoiceLineNature = (String) jsonObject.get("invoiceLineNature");
-                    String goodsUnit = (String) jsonObject.get("goodsUnit");
-                    String goodsSpecification = (String) jsonObject.get("goodsSpecification");
-                    String coalType = (String)jsonObject.get("coalType");
-                    String agreementTerm = (String)jsonObject.get("agreementTerm");
-                    String name = "";
-                    if(goodsLineNo==1){
-                        name = "鐓ゆ";
-                    }
-                    if(goodsLineNo==2){
-                        name = "鍙栭�佽溅璐�";
-                    }
-                    if(goodsLineNo==3){
-                        name = "涓撶嚎璐�";
-                    }
-
-                    InvoiceResultItem item = new InvoiceResultItem();
-                    item.setGoodsLineNature(invoiceLineNature);
-                    item.setOriginalInvoiceDetailNo(originalInvoiceDetailNo);
-                    item.setGoodsCode(goodsCode);
-                    item.setGoodsPrice(goodsPrice);
-                    item.setGoodsType(name);
-                    if(goodsSpecification !=null){
-                        item.setGoodsSpecification(goodsSpecification);
-                    }
-                    item.setGoodsLineNo(goodsLineNo);
-                    item.setGoodsQuantity(goodsQuantity);
-                    item.setGoodsTaxRate(goodsTaxRate);
-                    item.setGoodsName(goodsName);
-                    item.setGoodsTotalPrice(goodsTotalPrice);
-                    item.setGoodsTotalTax(goodsTotalTax);
-                    item.setGoodsUnit(goodsUnit);
-                    item.setResultId(result.getId());
-                    item.setEntrustCode(result.getEntrustCode());
-                    if(coalType !=null){
-                        item.setCoalType(coalType);
-                    }
-                    if(agreementTerm !=null){
-                        item.setAgreementTerm(agreementTerm);
-                    }
-                    String[] split = goodsName.split("\\*");
-                    int length = split.length;
-                    String coalName = split[length - 1];
-                    item.setCoalName(coalName);
-                    itemMapper.insert(item);
-                }
-                Map<String,Object> res = new HashMap<>();
-                res.put("success",flag);
-                res.put("message",successMessage);
-                res.put("obj",result);
-                saleCredit.setInvoiceRemark("绾㈠瓧纭鍗曠‘璁ゆ帴鍙f垚鍔�");
-                saleCredit.setRedInvoiceResultId(result.getId());
-                billingInfoService.updateById(saleCredit);
-                return res;
-            }
-        }else {
-            Map<String,Object> res = new HashMap<>();
-            res.put("success",false);
-            res.put("message","绾㈠瓧纭鍗曠‘璁ゆ帴鍙e紓甯�");
-            InvoiceResult result = new InvoiceResult();
-            result.setSuccess(false);
-            result.setMessage("绾㈠瓧纭鍗曠‘璁ゆ帴鍙e紓甯�");
-            result.setMethodName("绾㈠瓧纭鍗曠‘璁ゆ帴鍙�");
-            result.setEntrustCode(invoiceResult.getEntrustCode());
-            invoiceResultService.save(result);
-
-            saleCredit.setInvoiceRemark("绾㈠瓧纭鍗曠‘璁ゆ帴鍙e紓甯�");
-            billingInfoService.updateById(saleCredit);
-            return res;
-        }
-
-    }
-
-    /**
-     * 绾㈠瓧纭鍗昮orm
-     * @param result
-     * @return
-     */
-    InvoicingVo redKaiPiaoVo(InvoiceResult result){
-        SaleCredit saleCredit = saleCreditService.getById(result.getSaleCreditId());
-        InvoiceResult blueResult = null;
-        InvoiceResult redResult = null;
-        QueryWrapper<InvoiceResult> invoiceResultQueryWrapper = new QueryWrapper<>();
-        invoiceResultQueryWrapper.lambda()
-                .eq(InvoiceResult::getEntrustCode,result.getEntrustCode())
-                .eq(InvoiceResult::getMethodName,"钃濆瓧寮�绁ㄦ帴鍙�")
-                .eq(InvoiceResult::getSuccess,1)
-                .orderByDesc(InvoiceResult::getCreateTime);
-        List<InvoiceResult> InvoiceResultList = invoiceResultService.list(invoiceResultQueryWrapper);
-        if(InvoiceResultList!=null&&InvoiceResultList.size()>0){
-            blueResult = InvoiceResultList.get(0);
-            redResult = result;
-        }else {
-            return null;
-        }
-
-
-        InvoicingVo invoicingVo = new InvoicingVo();
-
-        QueryWrapper<InvoiceResultItem> itemQueryWrapper  = new QueryWrapper<>();
-        itemQueryWrapper.lambda()
-                .eq(InvoiceResultItem::getResultId,blueResult.getId());
-        List<InvoiceResultItem> resultItems = itemMapper.selectList(itemQueryWrapper);
-
-        if(saleCredit!=null) {
-
-            invoicingVo.setTaxNo(saleCredit.getCreditCodeB());
-            invoicingVo.setEntrustCode(blueResult.getEntrustCode());
-            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.setInvoiceType("1");
-            invoicingVoInfo.setSerialNo("MX_REDPP_" + System.currentTimeMillis());
-            invoicingVoInfo.setRedInfoNo(redResult.getInvoiceNo());
-            invoicingVoInfo.setRedIssueReason("1");
-            invoicingVoInfo.setRedConfirmUuid(redResult.getRedConfirmUuid());
-            invoicingVoInfo.setDrawer(saleCredit.getContactPhoneB());
-
-            Map<String, Object> ext1 = new HashMap<>();
-			ext1.put("htbh",saleCredit.getContractNo());
-			invoicingVoInfo.setExt(ext1);
-
-            invoicingVoInfo.setSystemName("**閿�鍞鐞嗕俊鎭郴缁�");
-
-            List<InvoicingVo.InvoiceDetail> details = new ArrayList<>();
-            for (InvoiceResultItem resultItem : resultItems) {
-                InvoicingVo.InvoiceDetail invoiceDetail = new InvoicingVo.InvoiceDetail();
-                invoiceDetail.setGoodsLineNo(resultItem.getGoodsLineNo());
-                invoiceDetail.setCoalType(resultItem.getCoalType());
-                invoiceDetail.setAgreementTerm(resultItem.getAgreementTerm());
-                invoiceDetail.setOriginalInvoiceDetailNo(resultItem.getGoodsLineNo()+"");
-                invoiceDetail.setGoodsTaxRate(resultItem.getGoodsTaxRate());
-                invoiceDetail.setGoodsUnit(resultItem.getGoodsUnit());
-                invoiceDetail.setGoodsName(resultItem.getCoalName());
-                invoiceDetail.setGoodsCode(resultItem.getGoodsCode());
-                invoiceDetail.setGoodsType(resultItem.getGoodsType());
-                invoiceDetail.setGoodsSpecification(resultItem.getGoodsSpecification());
-                invoiceDetail.setGoodsQuantity(new BigDecimal(resultItem.getGoodsQuantity()*-1).setScale(3,BigDecimal.ROUND_HALF_UP));
-                invoiceDetail.setGoodsPrice(new BigDecimal(resultItem.getGoodsPrice()).setScale(8,BigDecimal.ROUND_HALF_UP));
-                invoiceDetail.setGoodsTotalPrice(new BigDecimal(resultItem.getGoodsTotalPrice()*-1).setScale(2,BigDecimal.ROUND_HALF_UP));
-                invoiceDetail.setGoodsTotalTax(new BigDecimal(resultItem.getGoodsTotalTax()*-1).setScale(2,BigDecimal.ROUND_HALF_UP));
-                details.add(invoiceDetail);
-            }
-
-            invoicingVoInfo.setBuyerTaxNo(saleCredit.getCreditCodeA());
-            invoicingVoInfo.setBuyerName(saleCredit.getPartyA());
-            invoicingVoInfo.setInvoiceTotalPrice(new BigDecimal(blueResult.getInvoiceTotalPrice()*-1).setScale(2,BigDecimal.ROUND_HALF_UP));
-            invoicingVoInfo.setInvoiceTotalTax(new BigDecimal(blueResult.getInvoiceTotalTax()*-1).setScale(2,BigDecimal.ROUND_HALF_UP));
-            invoicingVoInfo.setInvoiceTotalPriceTax(new BigDecimal(blueResult.getInvoiceTotalPriceTax()*-1).setScale(2,BigDecimal.ROUND_HALF_UP));
-            invoicingVoInfo.setBuyerBankName(saleCredit.getBankNameA());
-            invoicingVoInfo.setBuyerBankNumber(saleCredit.getBankAccountA());
-            //invoicingVoInfo.setBuyerAddress(invoiceCustomer.getBuyerAddress());
-            invoicingVoInfo.setBuyerTelphone(saleCredit.getContactPhoneA());
-            invoicingVoInfo.setInvoiceDetailsList(details);
-			/*if(invoicingVoInfo.getInvoiceTotalPriceTax().compareTo(new BigDecimal(10000000))>=0){
-				invoicingVoInfo.setCoalCalorificValue(blueResult.getCoalCalorificValue());
-				invoicingVoInfo.setDryAshFreeVolatileMatter(blueResult.getDryAshFreeVolatileMatter());
-				invoicingVoInfo.setTotalSulfurOnDryBasis(blueResult.getTotalSulfurOnDryBasis());
-			}*/
-            invoicingVo.setData(invoicingVoInfo);
-            return invoicingVo;
-        }else {
-            return null;
-        }
-    }
-
-    /**
-     * 鏃堕棿鏍煎紡鍖栧伐鍏�
-     * @param s
-     * @return
-     */
-    String strToFormat(String s){
-        String year = s.substring(0, 4);
-        String month = s.substring(4, 6);
-        String day = s.substring(6, 8);
-        String hour = s.substring(8, 10);
-        String minute = s.substring(10, 12);
-        String second = s.substring(12);
-        String date = year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second;
-        System.out.println(date);
-        return date;
-    }
-}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java
index f329f11..0ea787b 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java
@@ -384,6 +384,7 @@
 		contractOutBound.setOutBoundAttNames(addDTO.getOutBoundAttNames());
 		contractOutBound.setOutBoundAttPaths(addDTO.getOutBoundAttPaths());
 		contractOutBound.setOutBoundId(outBoundId);
+		contractOutBound.setInvoiceStatus("0");
 		contractOutBoundMapper.insert(contractOutBound);
 		if (StrUtil.isEmpty(contract.getContractCategory())){
 			if (DateUtil.compare(addDTO.getOutBoundTime(),contract.getExpirationDate())>0){
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
index 04944ea..986a3a1 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
@@ -465,7 +465,7 @@
 				String result = HttpUtil.post(url + "/yonbip/EFI/collection/list?access_token=" + finalAccessToken, params.toJSONString());
 				log.info("SK_CX Response:{}", result);
 				//淇濆瓨璇锋眰璁板綍
-				saveBipRequestRecord(params, result);
+				saveBipRequestRecord(params,"<XSJZ_SK_CX_001>-鏀舵鍗曟煡璇㈡帴鍙�", result);
 				JSONObject resultJson = JSONObject.parseObject(result);
 				if (resultJson.containsKey("code") && resultJson.getString("code").equals("200")) {
 					handleAndSave(bipCode, resultJson);
@@ -493,7 +493,8 @@
 		return params;
 	}
 
-	private void getAccessToken(String accessToken) {
+	@Override
+	public String getAccessToken(String accessToken) {
 		long timestamp = System.currentTimeMillis();
 		Map<String, Object> paramMap = new HashMap<>();
 		paramMap.put("appKey", appKey);
@@ -514,20 +515,22 @@
 		JSONObject tokenJson = JSONObject.parseObject(getTokenResult);
 		if (!tokenJson.containsKey("code") || !tokenJson.getString("code").equals("200")) {
 			log.error("Get access_token ERROR");
-			return;
+			return "";
 		}
 		if (ObjUtil.isNull(tokenJson.get("data")) || ObjUtil.isNull(JSONObject.parseObject(tokenJson.getString("data")))) {
 			log.error("access_token value exception");
-			return;
+			return "";
 		}
 		accessToken = JSONObject.parseObject(tokenJson.getString("data")).getString("access_token");
 		log.info("access_token value:", accessToken);
 		redisTemplate.opsForValue().set("BIP_TOKEN", accessToken, tokenJson.getIntValue("expire") - 10, TimeUnit.SECONDS);
+		return accessToken;
 	}
 
-	private void saveBipRequestRecord(JSONObject params, String result) {
+	@Override
+	public void saveBipRequestRecord(JSONObject params, String methodName, String result) {
 		BipRequestRecord record = new BipRequestRecord();
-		record.setInterfaceName("<XSJZ_SK_CX_001>-鏀舵鍗曟煡璇㈡帴鍙�");
+		record.setInterfaceName(methodName);
 		record.setRequestParams(params.toJSONString());
 		record.setResponseParams(result);
 		record.setResponseCode(JSONObject.parseObject(result).getString("code"));
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductServiceImpl.java
index 75b1d87..769ca29 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductServiceImpl.java
@@ -9,6 +9,7 @@
 import com.by4cloud.platformx.business.entity.Product;
 import com.by4cloud.platformx.business.mapper.ProductMapper;
 import com.by4cloud.platformx.business.service.ProductService;
+import com.by4cloud.platformx.common.data.datascope.DataScope;
 import jakarta.validation.constraints.NotNull;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -32,9 +33,9 @@
         Long parent = parentId == null ? 0l : parentId;
 
         List<TreeNode<Long>> collect = baseMapper
-                .selectList(Wrappers.<Product>lambdaQuery()
+                .selectListByScope(Wrappers.<Product>lambdaQuery()
                         .like(StrUtil.isNotBlank(productName), Product::getProductName, productName)
-                        .orderByAsc(Product::getCreateTime))
+                        .orderByAsc(Product::getCreateTime), DataScope.of("comp_id"))
                 .stream().map(getNodeFunction()).collect(Collectors.toList());
 
         // 妯$硦鏌ヨ 涓嶇粍瑁呮爲缁撴瀯 鐩存帴杩斿洖 琛ㄦ牸鏂逛究缂栬緫
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/SaleCreditServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/SaleCreditServiceImpl.java
deleted file mode 100644
index 7b7fa90..0000000
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/SaleCreditServiceImpl.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.by4cloud.platformx.business.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.by4cloud.platformx.business.entity.SaleCredit;
-import com.by4cloud.platformx.business.mapper.SaleCreditMapper;
-import com.by4cloud.platformx.business.service.SaleCreditService;
-import org.springframework.stereotype.Service;
-
-/**
- * 閿�鍞寕璐�
- *
- * @author wjli
- * @date 2026-05-21 16:16:31
- */
-@Service
-public class SaleCreditServiceImpl extends ServiceImpl<SaleCreditMapper, SaleCredit> implements SaleCreditService {
-
-}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/BillingInfoMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/BillingInfoMapper.xml
deleted file mode 100644
index 8a990db..0000000
--- a/platformx-business-finance-biz/src/main/resources/mapper/BillingInfoMapper.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="com.by4cloud.platformx.business.mapper.BillingInfoMapper">
-
-  <resultMap id="billingInfoMap" type="com.by4cloud.platformx.business.entity.BillingInfo">
-        <id property="id" column="id"/>
-        <result property="contractId" column="contract_id"/>
-        <result property="contractName" column="contract_name"/>
-        <result property="contractNo" column="contract_no"/>
-        <result property="partyAId" column="party_a_id"/>
-        <result property="partyA" column="party_a"/>
-        <result property="creditCodeA" column="credit_code_a"/>
-        <result property="bankNameA" column="bank_name_a"/>
-        <result property="bankAccountA" column="bank_account_a"/>
-        <result property="contactPhoneA" column="contact_phone_a"/>
-        <result property="partyBId" column="party_b_id"/>
-        <result property="partyB" column="party_b"/>
-        <result property="creditCodeB" column="credit_code_b"/>
-        <result property="bankNameB" column="bank_name_b"/>
-        <result property="bankAccountB" column="bank_account_b"/>
-        <result property="contactPhoneB" column="contact_phone_b"/>
-        <result property="entrustCode" column="entrust_code"/>
-        <result property="billingType" column="billing_type"/>
-        <result property="matterStr" column="matter_str"/>
-        <result property="blueInvoiceId" column="blue_invoice_id"/>
-        <result property="blueInvoiceResultId" column="blue_invoice_result_id"/>
-        <result property="blueInvoiceTime" column="blue_invoice_time"/>
-        <result property="invoicePath" column="invoice_path"/>
-        <result property="invoiceBlueUrl" column="invoice_blue_url"/>
-        <result property="bipStatus" column="bip_status"/>
-        <result property="blueResultStatus" column="blue_result_status"/>
-        <result property="invoiceRedPath" column="invoice_red_path"/>
-        <result property="invoiceRedUrl" column="invoice_red_url"/>
-        <result property="invoiceRemark" column="invoice_remark"/>
-        <result property="redInvoiceResultId" column="red_invoice_result_id"/>
-        <result property="redInvoiceTime" column="red_invoice_time"/>
-        <result property="redResultStatus" column="red_result_status"/>
-        <result property="status" column="status"/>
-        <result property="totalAmount" column="total_amount"/>
-        <result property="totalTax" column="total_tax"/>
-        <result property="amountNoTax" column="amount_no_tax"/>
-        <result property="compId" column="comp_id"/>
-        <result property="createBy" column="create_by"/>
-        <result property="createTime" column="create_time"/>
-        <result property="updateBy" column="update_by"/>
-        <result property="updateTime" column="update_time"/>
-        <result property="delFlag" column="del_flag"/>
-  </resultMap>
-</mapper>
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/BillingItemMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/BillingItemMapper.xml
deleted file mode 100644
index 0727d9d..0000000
--- a/platformx-business-finance-biz/src/main/resources/mapper/BillingItemMapper.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="com.by4cloud.platformx.business.mapper.BillingItemMapper">
-
-  <resultMap id="billingItemMap" type="com.by4cloud.platformx.business.entity.BillingItem">
-        <id property="id" column="id"/>
-        <result property="compId" column="comp_id"/>
-        <result property="billingInfoId" column="billing_info_id"/>
-        <result property="billingStatus" column="billing_status"/>
-        <result property="busGuestId" column="bus_guest_id"/>
-        <result property="contractId" column="contract_id"/>
-        <result property="contractOutBoundIds" column="contract_out_bound_ids"/>
-        <result property="invoiceName" column="invoice_name"/>
-        <result property="productId" column="product_id"/>
-        <result property="productNum" column="product_num"/>
-        <result property="specification" column="specification"/>
-        <result property="subjectMatterCode" column="subject_matter_code"/>
-        <result property="subjectMatterName" column="subject_matter_name"/>
-        <result property="taxClass" column="tax_class"/>
-        <result property="taxCode" column="tax_code"/>
-        <result property="taxRate" column="tax_rate"/>
-        <result property="totalPrice" column="total_price"/>
-        <result property="totalTax" column="total_tax"/>
-        <result property="totalPriceNoTax" column="total_price_no_tax"/>
-        <result property="unit" column="unit"/>
-        <result property="unitPrice" column="unit_price"/>
-        <result property="createBy" column="create_by"/>
-        <result property="createTime" column="create_time"/>
-        <result property="updateBy" column="update_by"/>
-        <result property="updateTime" column="update_time"/>
-        <result property="delFlag" column="del_flag"/>
-  </resultMap>
-</mapper>
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/BipInvoiceMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/BipInvoiceMapper.xml
deleted file mode 100644
index 0328760..0000000
--- a/platformx-business-finance-biz/src/main/resources/mapper/BipInvoiceMapper.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  ~
-  ~      Copyright (c) 2018-2025, platform All rights reserved.
-  ~
-  ~  Redistribution and use in source and binary forms, with or without
-  ~  modification, are permitted provided that the following conditions are met:
-  ~
-  ~ Redistributions of source code must retain the above copyright notice,
-  ~  this list of conditions and the following disclaimer.
-  ~  Redistributions in binary form must reproduce the above copyright
-  ~  notice, this list of conditions and the following disclaimer in the
-  ~  documentation and/or other materials provided with the distribution.
-  ~  Neither the name of the pig4cloud.com developer nor the names of its
-  ~  contributors may be used to endorse or promote products derived from
-  ~  this software without specific prior written permission.
-  ~  Author: platform
-  ~
-  -->
-
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="com.by4cloud.platformx.business.invoice.mapper.BipInvoiceMapper">
-
-  <resultMap id="bipInvoiceMap" type="com.by4cloud.platformx.business.entity.invoice.BipInvoice">
-                  <id property="id" column="id"/>
-                        <result property="compId" column="comp_id"/>
-                        <result property="createBy" column="create_by"/>
-                        <result property="createTime" column="create_time"/>
-                        <result property="delFlag" column="del_flag"/>
-                        <result property="updateBy" column="update_by"/>
-                        <result property="updateTime" column="update_time"/>
-                        <result property="bipNumber" column="bip_number"/>
-                        <result property="day" column="day"/>
-                        <result property="invoice" column="invoice"/>
-                        <result property="returnInvoice" column="return_invoice"/>
-            </resultMap>
-</mapper>
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/BwRequestRecordMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/BwRequestRecordMapper.xml
new file mode 100644
index 0000000..be2fc40
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/resources/mapper/BwRequestRecordMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.by4cloud.platformx.business.mapper.BwRequestRecordMapper">
+
+  <resultMap id="bipRequestRecordMap" type="com.by4cloud.platformx.business.entity.BwRequestRecord">
+        <id property="id" column="id"/>
+        <result property="compId" column="comp_id"/>
+        <result property="interfaceName" column="interface_name"/>
+	  	<result property="requestId" column="request_id"/>
+        <result property="requestParams" column="request_params"/>
+        <result property="responseCode" column="response_code"/>
+        <result property="responseParams" column="response_params"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="delFlag" column="del_flag"/>
+  </resultMap>
+</mapper>
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/ContractInvoiceMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/ContractInvoiceMapper.xml
new file mode 100644
index 0000000..248b9e0
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/resources/mapper/ContractInvoiceMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.by4cloud.platformx.business.mapper.ContractInvoiceMapper">
+
+  <resultMap id="ContractInvoiceMap" type="com.by4cloud.platformx.business.entity.ContractInvoice">
+        <id property="id" column="id"/>
+        <result property="compId" column="comp_id"/>
+        <result property="contractId" column="contract_id"/>
+        <result property="invoicePrice" column="invoice_price"/>
+        <result property="invoiceTime" column="invoice_time"/>
+        <result property="invoicePath" column="invoice_path"/>
+	  	<result property="invoiceCategory" column="invoice_category"/>
+	    <result property="redReversal" column="red_reversal"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="delFlag" column="del_flag"/>
+  </resultMap>
+</mapper>
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/FileBipMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/FileBipMapper.xml
deleted file mode 100644
index 1d668a2..0000000
--- a/platformx-business-finance-biz/src/main/resources/mapper/FileBipMapper.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  ~
-  ~      Copyright (c) 2018-2025, platform All rights reserved.
-  ~
-  ~  Redistribution and use in source and binary forms, with or without
-  ~  modification, are permitted provided that the following conditions are met:
-  ~
-  ~ Redistributions of source code must retain the above copyright notice,
-  ~  this list of conditions and the following disclaimer.
-  ~  Redistributions in binary form must reproduce the above copyright
-  ~  notice, this list of conditions and the following disclaimer in the
-  ~  documentation and/or other materials provided with the distribution.
-  ~  Neither the name of the pig4cloud.com developer nor the names of its
-  ~  contributors may be used to endorse or promote products derived from
-  ~  this software without specific prior written permission.
-  ~  Author: platform
-  ~
-  -->
-
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="com.by4cloud.platformx.business.invoice.mapper.FileBipMapper">
-
-  <resultMap id="fileBipMap" type="com.by4cloud.platformx.business.entity.invoice.FileBip">
-                  <id property="id" column="id"/>
-                        <result property="compId" column="comp_id"/>
-                        <result property="createBy" column="create_by"/>
-                        <result property="createTime" column="create_time"/>
-                        <result property="delFlag" column="del_flag"/>
-                        <result property="updateBy" column="update_by"/>
-                        <result property="updateTime" column="update_time"/>
-                        <result property="fileId" column="file_id"/>
-                        <result property="copy" column="copy"/>
-                        <result property="fileBipId" column="file_bip_id"/>
-                        <result property="filectime" column="filectime"/>
-                        <result property="fileExtension" column="file_extension"/>
-                        <result property="fileName" column="file_name"/>
-                        <result property="filePath" column="file_path"/>
-                        <result property="fileSize" column="file_size"/>
-                        <result property="fileSizeText" column="file_size_text"/>
-                        <result property="fileutime" column="fileutime"/>
-                        <result property="name" column="name"/>
-                        <result property="railwayEntrustId" column="railway_entrust_id"/>
-                        <result property="sign" column="sign"/>
-                        <result property="tenantId" column="tenant_id"/>
-                        <result property="yhtUserId" column="yht_user_id"/>
-            </resultMap>
-</mapper>
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/FpInvoiceResultItemMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/FpInvoiceResultItemMapper.xml
deleted file mode 100644
index 46c2376..0000000
--- a/platformx-business-finance-biz/src/main/resources/mapper/FpInvoiceResultItemMapper.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  ~
-  ~      Copyright (c) 2018-2025, platform All rights reserved.
-  ~
-  ~  Redistribution and use in source and binary forms, with or without
-  ~  modification, are permitted provided that the following conditions are met:
-  ~
-  ~ Redistributions of source code must retain the above copyright notice,
-  ~  this list of conditions and the following disclaimer.
-  ~  Redistributions in binary form must reproduce the above copyright
-  ~  notice, this list of conditions and the following disclaimer in the
-  ~  documentation and/or other materials provided with the distribution.
-  ~  Neither the name of the pig4cloud.com developer nor the names of its
-  ~  contributors may be used to endorse or promote products derived from
-  ~  this software without specific prior written permission.
-  ~  Author: platform
-  ~
-  -->
-
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="com.by4cloud.platformx.business.invoice.mapper.FpInvoiceResultItemMapper">
-
-  <resultMap id="fpInvoiceResultItemMap" type="com.by4cloud.platformx.business.entity.invoice.InvoiceResultItem">
-                  <id property="id" column="id"/>
-                        <result property="compId" column="comp_id"/>
-                        <result property="createBy" column="create_by"/>
-                        <result property="createTime" column="create_time"/>
-                        <result property="delFlag" column="del_flag"/>
-                        <result property="updateBy" column="update_by"/>
-                        <result property="updateTime" column="update_time"/>
-                        <result property="goodsCode" column="goods_code"/>
-                        <result property="goodsLineNature" column="goods_line_nature"/>
-                        <result property="goodsLineNo" column="goods_line_no"/>
-                        <result property="goodsName" column="goods_name"/>
-                        <result property="goodsPrice" column="goods_price"/>
-                        <result property="goodsQuantity" column="goods_quantity"/>
-                        <result property="goodsSimpleName" column="goods_simple_name"/>
-                        <result property="goodsTaxRate" column="goods_tax_rate"/>
-                        <result property="goodsTotalPrice" column="goods_total_price"/>
-                        <result property="goodsTotalTax" column="goods_total_tax"/>
-                        <result property="goodsUnit" column="goods_unit"/>
-                        <result property="originalInvoiceDetailNo" column="original_invoice_detail_no"/>
-                        <result property="priceTaxMark" column="price_tax_mark"/>
-                        <result property="projectName" column="project_name"/>
-                        <result property="resultId" column="result_id"/>
-            </resultMap>
-</mapper>
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/FpInvoiceResultMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/FpInvoiceResultMapper.xml
deleted file mode 100644
index d2145d5..0000000
--- a/platformx-business-finance-biz/src/main/resources/mapper/FpInvoiceResultMapper.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  ~
-  ~      Copyright (c) 2018-2025, platform All rights reserved.
-  ~
-  ~  Redistribution and use in source and binary forms, with or without
-  ~  modification, are permitted provided that the following conditions are met:
-  ~
-  ~ Redistributions of source code must retain the above copyright notice,
-  ~  this list of conditions and the following disclaimer.
-  ~  Redistributions in binary form must reproduce the above copyright
-  ~  notice, this list of conditions and the following disclaimer in the
-  ~  documentation and/or other materials provided with the distribution.
-  ~  Neither the name of the pig4cloud.com developer nor the names of its
-  ~  contributors may be used to endorse or promote products derived from
-  ~  this software without specific prior written permission.
-  ~  Author: platform
-  ~
-  -->
-
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="com.by4cloud.platformx.business.invoice.mapper.FpInvoiceResultMapper">
-
-  <resultMap id="fpInvoiceResultMap" type="com.by4cloud.platformx.business.entity.invoice.InvoiceResult">
-                  <id property="id" column="id"/>
-                        <result property="compId" column="comp_id"/>
-                        <result property="createBy" column="create_by"/>
-                        <result property="createTime" column="create_time"/>
-                        <result property="delFlag" column="del_flag"/>
-                        <result property="updateBy" column="update_by"/>
-                        <result property="updateTime" column="update_time"/>
-                        <result property="eInvoiceUrl" column="e_invoice_url"/>
-                        <result property="invoiceCheckCode" column="invoice_check_code"/>
-                        <result property="invoiceNo" column="invoice_no"/>
-                        <result property="invoiceQrCode" column="invoice_qr_code"/>
-                        <result property="invoiceTotalPrice" column="invoice_total_price"/>
-                        <result property="invoiceTotalPriceTax" column="invoice_total_price_tax"/>
-                        <result property="invoiceTotalTax" column="invoice_total_tax"/>
-                        <result property="methodName" column="method_name"/>
-                        <result property="requestId" column="request_id"/>
-                        <result property="result" column="result"/>
-                        <result property="serialNo" column="serial_no"/>
-                        <result property="taxControlCode" column="tax_control_code"/>
-            </resultMap>
-</mapper>
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/SaleCreditMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/SaleCreditMapper.xml
deleted file mode 100644
index 7acfe9e..0000000
--- a/platformx-business-finance-biz/src/main/resources/mapper/SaleCreditMapper.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="com.by4cloud.platformx.business.mapper.SaleCreditMapper">
-
-  <resultMap id="saleCreditMap" type="com.by4cloud.platformx.business.entity.SaleCredit">
-        <id property="id" column="id"/>
-        <result property="contractId" column="contract_id"/>
-        <result property="contractNo" column="contract_no"/>
-        <result property="contractName" column="contract_name"/>
-        <result property="partyAId" column="party_a_id"/>
-        <result property="partyA" column="party_a"/>
-        <result property="creditCodeA" column="credit_code_a"/>
-        <result property="bankNameA" column="bank_name_a"/>
-        <result property="bankAccountA" column="bank_account_a"/>
-        <result property="partyBId" column="party_b_id"/>
-        <result property="partyB" column="party_b"/>
-        <result property="creditCodeB" column="credit_code_b"/>
-        <result property="bankNameB" column="bank_name_b"/>
-        <result property="bankAccountB" column="bank_account_b"/>
-        <result property="totalAmount" column="total_amount"/>
-        <result property="matterStr" column="matter_str"/>
-        <result property="outBoundIds" column="out_bound_ids"/>
-        <result property="compId" column="comp_id"/>
-        <result property="createBy" column="create_by"/>
-        <result property="createTime" column="create_time"/>
-        <result property="updateBy" column="update_by"/>
-        <result property="updateTime" column="update_time"/>
-        <result property="delFlag" column="del_flag"/>
-  </resultMap>
-</mapper>
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/resources/template/ymj/ymjcght.docx b/platformx-business-finance-biz/src/main/resources/template/ymj/ymjcght.docx
new file mode 100644
index 0000000..43e844a
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/resources/template/ymj/ymjcght.docx
Binary files differ
diff --git a/platformx-business-finance-biz/src/main/resources/template/ymj/ymjgkcpmmht.docx b/platformx-business-finance-biz/src/main/resources/template/ymj/ymjgkcpmmht.docx
new file mode 100644
index 0000000..80c3755
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/resources/template/ymj/ymjgkcpmmht.docx
Binary files differ
diff --git a/platformx-business-finance-biz/src/main/resources/template/ymj/ymjgypmmht.docx b/platformx-business-finance-biz/src/main/resources/template/ymj/ymjgypmmht.docx
new file mode 100644
index 0000000..1feb885
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/resources/template/ymj/ymjgypmmht.docx
Binary files differ
diff --git a/platformx-business-finance-biz/src/main/resources/template/ymjjgclht.docx b/platformx-business-finance-biz/src/main/resources/template/ymj/ymjjgclht.docx
similarity index 100%
rename from platformx-business-finance-biz/src/main/resources/template/ymjjgclht.docx
rename to platformx-business-finance-biz/src/main/resources/template/ymj/ymjjgclht.docx
Binary files differ

--
Gitblit v1.9.1