From 45847670fea5d7354c2bfb4b53a321887271dcd4 Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期四, 11 六月 2026 17:26:00 +0800
Subject: [PATCH] feat:产品页面体验优化

---
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductServiceImpl.java         |    8 ++++
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductController.java            |    9 +++-
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ProductService.java                  |    2 +
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractInvoiceServiceImpl.java |   40 ++++++++++++--------
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Product.java                          |   10 ++---
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ProductTreeVo.java                        |   16 ++++++++
 6 files changed, 61 insertions(+), 24 deletions(-)

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 530d04a..f38ec7e 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
@@ -7,20 +7,18 @@
 import jakarta.persistence.Entity;
 import jakarta.persistence.Transient;
 import lombok.Data;
-import org.hibernate.annotations.Comment;
-import jakarta.persistence.Table;
 
 import java.util.List;
 
 /**
- * @author wjli
+ * @author
  * @description
  * @date 2026/4/29 10:51
  **/
 @Data
-@Entity
-@Table(name = "product")
-@Comment("浜у搧淇℃伅")
+@Entity//鍔犱簡鎵嶈兘鑷姩鐢熸垚琛�
+@org.hibernate.annotations.Table(appliesTo="product",comment = "浜у搧")//缁欒〃鍔犳敞閲�
+@jakarta.persistence.Table(name = "product")//鏁版嵁搴撳垱寤虹殑琛ㄦ槑
 public class Product extends BaseModel<Product> {
 
     //浜у搧鍚嶇О銆佷骇鍝佺紪鐮侊紙涓绘暟鎹�丒RP锛夈�佷骇鍝佷环鏍笺�佺◣鐐广�佹墍灞炰笂绾�
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ProductTreeVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ProductTreeVo.java
new file mode 100644
index 0000000..9a2bed2
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ProductTreeVo.java
@@ -0,0 +1,16 @@
+package com.by4cloud.platformx.business.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class ProductTreeVo {
+
+	private Long id;
+
+	@Schema(description = "浜у搧鍚嶇О")
+	private String productName;
+
+	private Long parentId;
+
+}
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 a56adf7..d3c0ffa 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
@@ -1,11 +1,14 @@
 package com.by4cloud.platformx.business.controller;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
 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.business.vo.ProductTreeVo;
 import com.by4cloud.platformx.common.core.util.R;
 import com.by4cloud.platformx.common.log.annotation.SysLog;
 import com.by4cloud.platformx.business.entity.Product;
@@ -95,8 +98,7 @@
         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.listByScope(wrapper));
+        return R.ok(BeanUtil.copyToList(productService.listByScope(wrapper), ProductTreeVo.class));
     }
 
     /**
@@ -135,6 +137,9 @@
     @PostMapping
     @PreAuthorize("@pms.hasPermission('business_product_add')" )
     public R save(@RequestBody Product product) {
+		if (ArrayUtil.isNotEmpty(productService.listByScope(Wrappers.lambdaQuery(product).eq(Product::getErpCode,product.getErpCode())).toArray())){
+			return R.failed("浜у搧Erp缂栫爜宸插瓨鍦�");
+		}
         return R.ok(productService.save(product));
     }
 
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 bcd5860..476912f 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,6 +3,7 @@
 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.core.util.R;
 import com.by4cloud.platformx.common.data.mybatis.IIService;
 
 import java.util.List;
@@ -12,4 +13,5 @@
     List<Tree<Long>> treeList(Long parentId, String productName);
 
 	List<Product> getProductList(Product product);
+
 }
\ 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
index 675e5aa..b3e084a 100644
--- 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
@@ -627,11 +627,12 @@
 					}
 				}
 			}
-			//鏇存柊鍚堝悓寮�绁ㄧ姸鎬�
-			contract.setBillingStatus("2");
-			contract.setBillingAmout(contract.getBillingAmout().subtract(invoice.getInvoiceTotalPriceTax()));
-			contractMapper.updateById(contract);
-
+			//鏇存柊鍚堝悓寮�绁ㄧ姸鎬� 鍓嶆彁鍑哄簱瀹屾垚
+			if (StrUtil.equals(contract.getBillingStatus(),"3")) {
+				contract.setBillingStatus("2");
+				contract.setBillingAmout(contract.getBillingAmout().subtract(invoice.getInvoiceTotalPriceTax()));
+				contractMapper.updateById(contract);
+			}
 			blueInvoice.setRedReversal("1");
 			baseMapper.updateById(blueInvoice);
 
@@ -652,18 +653,25 @@
 	@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);
-
-		ContractInvoice blueInvoice = baseMapper.selectById(invoice.getBlueInvoiceId());
-		blueInvoice.setRedReversal("0");
-		baseMapper.updateById(blueInvoice);
+		//钃濈エ
+		if (invoice.getInvoiceCategory().equals("1")) {
+			//鏇存柊鍚堝悓鍑哄簱鍗曠姸鎬�
+			List<ContractOutBoundInvoiceVo> outBoundInvoiceVoList = BeanUtil.copyToList(JSONArray.parseArray(invoice.getInvoicePreviewParam()),ContractOutBoundInvoiceVo.class);
+			if (ArrayUtil.isNotEmpty(outBoundInvoiceVoList.toArray())){
+				outBoundInvoiceVoList.stream().forEach(contractOutBoundInvoiceVo -> {
+					ContractOutBound contractOutBound = contractOutBoundMapper.selectById(contractOutBoundInvoiceVo.getContractOutBoundId());
+					contractOutBound.setInvoiceNum(contractOutBound.getInvoiceNum().subtract(contractOutBoundInvoiceVo.getInvoiceNum()));
+					contractOutBoundMapper.updateById(contractOutBound);
+				});
+			}
+		}
+		//绾㈢エ
+		if (invoice.getInvoiceCategory().equals("2")) {
+			ContractInvoice blueInvoice = baseMapper.selectById(invoice.getBlueInvoiceId());
+			blueInvoice.setRedReversal("0");
+			baseMapper.updateById(blueInvoice);
+		}
 	}
 }
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 331d6da..1f9588f 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
@@ -1,19 +1,26 @@
 package com.by4cloud.platformx.business.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.tree.Tree;
 import cn.hutool.core.lang.tree.TreeNode;
 import cn.hutool.core.lang.tree.TreeUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.ObjUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 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.business.vo.ProductTreeVo;
+import com.by4cloud.platformx.common.core.util.R;
 import com.by4cloud.platformx.common.data.datascope.DataScope;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import jakarta.validation.constraints.NotNull;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -56,6 +63,7 @@
 		return baseMapper.getProductListByScope(product,DataScope.of("comp_id"));
 	}
 
+
 	@NotNull
     private Function<Product, TreeNode<Long>> getNodeFunction() {
         return product -> {

--
Gitblit v1.9.1