From b58c3bf0e4c9bf4327b749040c3490fd2d0970b2 Mon Sep 17 00:00:00 2001
From: 李白 <7387820+wjli_13439841639@user.noreply.gitee.com>
Date: 星期四, 04 六月 2026 09:45:40 +0800
Subject: [PATCH] 开票信息修改

---
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/FileBip.java           |    6 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductController.java     |   30 +++++
 platformx-boot/src/main/resources/application-dev.yml                                                              |    4 
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SaleCredit.java                |   22 +++
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Product.java                   |    8 +
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/InvoiceResult.java     |   11 -
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java  |  168 ++++++++++++++++++++++++++++++++-
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/InvoiceResultItem.java |    5 
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/invoice/BipInvoice.java        |    9 +
 platformx-boot/src/main/resources/application.yml                                                                  |    4 
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractOutBoundVo.java            |    3 
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractOutBound.java          |    8 +
 12 files changed, 243 insertions(+), 35 deletions(-)

diff --git a/platformx-boot/src/main/resources/application-dev.yml b/platformx-boot/src/main/resources/application-dev.yml
index 6a99c07..87b41b7 100644
--- a/platformx-boot/src/main/resources/application-dev.yml
+++ b/platformx-boot/src/main/resources/application-dev.yml
@@ -2,7 +2,7 @@
   data:
     redis:
       host: 127.0.0.1
-      password: 123456
+      #password: 123456
       database: 0
   # 鏁版嵁搴撶浉鍏抽厤缃�
   datasource:
@@ -37,8 +37,6 @@
 # swagger 閰嶇疆
 swagger:
   token-url: ${swagger.gateway}/admin/oauth2/token
-
-
 
 # 鏂囦欢涓婁紶閰嶇疆
 file:
diff --git a/platformx-boot/src/main/resources/application.yml b/platformx-boot/src/main/resources/application.yml
index 542ceed..ee27182 100644
--- a/platformx-boot/src/main/resources/application.yml
+++ b/platformx-boot/src/main/resources/application.yml
@@ -1,10 +1,10 @@
 server:
-  port: 8899    # 椤圭洰绔彛
+  port: 8888    # 椤圭洰绔彛
   servlet:
     context-path: /business  # 椤圭洰璁块棶璺緞
 servers:
   main-url: http://127.0.0.1:9999/admin
-  business-url: http://127.0.0.1:8899/business
+  business-url: http://127.0.0.1:8888/business
 
 spring:
   application:
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 b61a18a..466b768 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
@@ -82,8 +82,8 @@
 
 	//浠ヤ笅寮�绁ㄧ浉鍏�
 
-	@Schema(description = "閿�鍞寕璐d")
-	@Column(columnDefinition = "bigint default null comment '閿�鍞寕璐d'")
+	@Schema(description = "缁撶畻id")
+	@Column(columnDefinition = "bigint default null comment '缁撶畻id'")
 	private Long saleCreditId;
 
 	@Schema(description = "寮�绁ㄧ姸鎬侊紙0-鏈紑绁� 1-寮�绁ㄤ腑 2-宸插紑绁級")
@@ -104,6 +104,10 @@
 	@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;
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Product.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Product.java
index a5a0e74..530d04a 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Product.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Product.java
@@ -22,9 +22,10 @@
 @Table(name = "product")
 @Comment("浜у搧淇℃伅")
 public class Product extends BaseModel<Product> {
+
     //浜у搧鍚嶇О銆佷骇鍝佺紪鐮侊紙涓绘暟鎹�丒RP锛夈�佷骇鍝佷环鏍笺�佺◣鐐广�佹墍灞炰笂绾�
     @Schema(description = "浜у搧鍚嶇О")
-    @Column(columnDefinition = "VARCHAR(50) comment '浜у搧鍚嶇О'")
+    @Column(columnDefinition = "VARCHAR(512) comment '浜у搧鍚嶇О'")
     private String productName;
 
     @Schema(description = "浜у搧闆嗗洟缂栫爜")
@@ -59,6 +60,11 @@
     @Column(columnDefinition = "bigint default 0 comment '鐖禝D'")
     private Long parentId;
 
+    @Schema(description = "鐖跺悕绉�")
+    @Transient
+    @TableField(exist = false)
+    private String parentName;
+
     /**
      * 鏍囩殑鐗�
      */
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SaleCredit.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SaleCredit.java
index 7038fa7..7d7d4e7 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SaleCredit.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SaleCredit.java
@@ -1,8 +1,10 @@
 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;
@@ -10,8 +12,10 @@
 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;
 
 /**
@@ -22,7 +26,7 @@
 @Data
 @Entity
 @Table(name = "sale_credit")
-@Comment("閿�鍞寕璐�")
+@Comment("缁撶畻璁板綍")
 public class SaleCredit  extends BaseModel<SaleCredit> {
 
     @Schema(description = "閿�鍞紪鍙�")
@@ -89,8 +93,8 @@
     @Column(name = "contact_phone_b",columnDefinition = "VARCHAR(50) comment '涔欐柟鑱旂郴鐢佃瘽'")
     private String contactPhoneB;
 
-    @Schema(description = "鎸傝处閲戦")
-    @Column(columnDefinition = "decimal(10,2) comment '鎸傝处閲戦'")
+    @Schema(description = "鎬婚噾棰�")
+    @Column(columnDefinition = "decimal(10,2) comment '鎬婚噾棰�'")
     private BigDecimal totalAmount;
 
     @Schema(description = "鎸傝处閲戦鎬荤◣棰�")
@@ -129,10 +133,22 @@
     @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;
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
index f4928c1..22e62d0 100644
--- 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
@@ -7,13 +7,14 @@
 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 javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Transient;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+
 import java.util.Date;
 
 /**
@@ -24,7 +25,7 @@
 @Data
 @Entity
 @org.hibernate.annotations.Table(appliesTo="bip_invoice",comment = "bip瀵瑰簲鍗曟嵁琛�")//bip瀵瑰簲鍗曟嵁琛�
-@jakarta.persistence.Table(name = "bip瀵瑰簲鍗曟嵁琛�")//bip瀵瑰簲鍗曟嵁琛�
+@jakarta.persistence.Table(name = "bip_invoice")//bip瀵瑰簲鍗曟嵁琛�
 @Comment("bip瀵瑰簲鍗曟嵁琛�")
 public class BipInvoice extends BaseModel<BipInvoice> {
 
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
index e096e25..b98a30a 100644
--- 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
@@ -1,14 +1,12 @@
 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.Table;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
 
 /**
  * @author kdq
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
index 2a62569..bc5ad3b 100644
--- 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
@@ -1,15 +1,12 @@
 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 jakarta.persistence.Column;
+import jakarta.persistence.Entity;
 import lombok.Data;
 import org.hibernate.annotations.Comment;
-import jakarta.persistence.Table;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
 
 /**
  * @author kdq
@@ -24,8 +21,8 @@
 @jakarta.persistence.Table(name = "fp_invoice_result")//寮�鍏峰彂绁ㄨ繑鍥炲��
 @Comment("寮�鍏峰彂绁ㄨ繑鍥炲��")
 public class InvoiceResult extends BaseModel<InvoiceResult> {
-	@Schema(description = "閿�鍞寕璐d")
-	@Column(columnDefinition = "bigint default null comment '閿�鍞寕璐d'")
+	@Schema(description = "缁撶畻璁板綍id")
+	@Column(columnDefinition = "bigint comment '缁撶畻璁板綍id'")
 	private Long saleCreditId;
 
 	@Schema(description = "鎺ㄩ�乥ip")
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
index dc02a98..9b81eb2 100644
--- 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
@@ -5,10 +5,9 @@
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import org.hibernate.annotations.Comment;
-import jakarta.persistence.Table;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
 
 /**
  * @author kdq
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 ac2f458..19482ff 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
@@ -13,6 +13,9 @@
     @Schema(description = "浜у搧id")
     private Long productId;
 
+    @Schema(description = "寮�绁ㄥ悕绉�")
+    private String invoiceName;
+
     @Schema(description = "绋庣巼锛堢櫨鍒嗘瘮锛屽13琛ㄧず13%锛�")
     private Double taxRate;
 
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 1b05282..acd3c71 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,18 @@
         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());
-        return R.ok(productService.page(page, wrapper));
+        Page<Product> page1 = productService.page(page, wrapper);
+        List<Product> list = page1.getRecords();
+        for(Product product1 : list){
+            Product  parent = productService.getById(product1.getParentId());
+            if(parent==null){
+                product1.setParentName("鏍圭骇浜у搧");
+            }else {
+                product1.setParentName(parent.getProductName());
+            }
+        }
+        page1.setRecords(list);
+        return R.ok(page1);
     }
 
     /**
@@ -74,6 +85,23 @@
     }
 
     /**
+     * 鍒嗛〉鏌ヨ
+     * @param product 浜у搧淇℃伅
+     * @return
+     */
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+    @GetMapping("/listByParentId" )
+    @PreAuthorize("@pms.hasPermission('business_product_view')" )
+    //@Inner(value = false)
+    public R getProductListByParentId(@ParameterObject Product product) {
+        LambdaQueryWrapper<Product> wrapper = Wrappers.lambdaQuery();
+        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));
+    }
+
+    /**
      * 灞傜骇鏌ヨ
      * @param product 鍟嗗搧琛�
      * @return
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java
index fffadb8..f8440ec 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java
@@ -2,6 +2,7 @@
 
 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;
@@ -16,6 +17,7 @@
 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;
@@ -28,6 +30,7 @@
 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;
@@ -119,6 +122,8 @@
         if(contractOutBoundList.size()==0){
             return R.failed("璇烽�夋嫨鍑哄簱鍗曪紒");
         }
+        //寮�绁ㄤ箣鍓嶏紝鍏堣褰曞紑绁ㄤ俊鎭�
+        //1.鍑哄簱鍗曡繘琛屾爣璁帮紝灏嗗嚭搴撳崟鍙戠エ璁板綍id濉叆銆傚皢InvoiceSatus=1寮�绁ㄤ腑銆�
         String outBoundIds = "";
         for(ContractOutBoundVo vo : contractOutBoundList){
             if(StrUtil.isEmpty(outBoundIds)){
@@ -140,12 +145,14 @@
             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);
+       /* InvoicingVo invoicingVo = invoiceService.toGetByCompareByVo(saleCredit,contractOutBoundList);
         try {
             Map<String, Object> objectMap = invoiceService.toKaipiao(invoicingVo);
             Boolean success = (Boolean) objectMap.get("success");
@@ -157,15 +164,14 @@
                 //StringBuffer errMsg = new StringBuffer();
                 BipResVo bipResVo = bipYsService.sendBIPYs(saleCredit);
                 if (!bipResVo.getCode().equals("200")) {
-                    /*if (StrUtil.isNotEmpty(errMsg)) {
+                    *//*if (StrUtil.isNotEmpty(errMsg)) {
                         errMsg.append(",");
                     }
-                    errMsg.append(saleCredit.getCreditCodeB()+ "搴旀敹鍙戠エ鎺ㄩ�佸け璐�:" + bipResVo.getMessage());*/
+                    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);
@@ -176,11 +182,158 @@
             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("绾㈠啿寮�绁ㄦ垚鍔燂紒");
+    }
 
 
 
@@ -234,23 +387,28 @@
                     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);

--
Gitblit v1.9.1