From 893ffa33b917229726eb9e7c4581d75981b2477d Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期三, 27 八月 2025 14:32:28 +0800
Subject: [PATCH] :zap: 对于前端修改 采购和应付
---
main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java | 69 +++++++++++++++++++++++++++++++---
1 files changed, 63 insertions(+), 6 deletions(-)
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java
index bb958f0..3dab18e 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java
@@ -12,12 +12,16 @@
import com.ruoyi.business.mapper.*;
import com.ruoyi.business.service.ProductionMasterService;
import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@@ -49,6 +53,32 @@
public IPage<ProductionMasterDto> selectPMList(Page page, ProductionMasterDto productionMasterDto) {
// 1. 鏋勫缓涓昏〃鏌ヨ鏉′欢
LambdaQueryWrapper<ProductionMaster> masterQueryWrapper = new LambdaQueryWrapper<>();
+ String keyword = productionMasterDto.getSearchAll();
+ if (StringUtils.isNotBlank(keyword)) {
+ // 鏌ヨ鐓ょ鍚嶇О涓ā绯婂尮閰嶇殑coalId鍒楄〃
+ List<Long> matchedCoalIds = coalInfoMapper.selectList(
+ new LambdaQueryWrapper<CoalInfo>().like(CoalInfo::getCoal, keyword)
+ ).stream()
+ .map(CoalInfo::getId)
+ .toList();
+
+ // 缁勮鏌ヨ鏉′欢锛氱叅绉岻D鍦ㄥ尮閰嶇殑鍒楄〃涓�
+ // 濡傛灉 matchedCoalIds 涓虹┖锛岀洿鎺ヨ繑鍥� 0 鏉℃暟鎹紙鏋勯�犱竴涓笉鍙兘鎴愮珛鐨勬潯浠讹級
+ if (matchedCoalIds.isEmpty()) {
+ masterQueryWrapper.apply("1 = 0"); // 寮哄埗杩斿洖绌虹粨鏋�
+ }
+ // 濡傛灉鏈夊尮閰嶇殑 coalId锛屽垯鎸� coalId 鏌ヨ
+ else {
+ String ids = matchedCoalIds.stream()
+ .map(String::valueOf)
+ .collect(Collectors.joining(","));
+
+ masterQueryWrapper.apply(
+ "{0} = ANY(string_to_array(coal_id, ','))",
+ ids
+ );
+ }
+ }
// 2. 鎵ц涓昏〃鍒嗛〉鏌ヨ
IPage<ProductionMaster> entityPage = productionMasterMapper.selectPage(page, masterQueryWrapper);
@@ -211,8 +241,6 @@
coalIds.add(p.getCoalId());
}
- List<CoalInfo> coalInfos = coalInfoMapper.selectList(new LambdaQueryWrapper<CoalInfo>().in(CoalInfo::getId, coalIds));
-
ProductionMaster master = new ProductionMaster();
master.setProductionQuantity(totalQuantity);
master.setTotalCost(totalCost);
@@ -256,14 +284,43 @@
* 灏嗗姞宸ヤ骇鐢熺殑浜у搧璁板綍鍒板緟鍏ュ簱琛�
*/
private void insertPendingInventory(List<Production> list) {
+ LocalDate currentDate = LocalDate.now();
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ String formattedDate = currentDate.format(formatter);
+ final int SCALE = 2;
+ final RoundingMode ROUNDING_MODE = RoundingMode.HALF_UP;
+ final BigDecimal TAX_RATE = new BigDecimal("1.13");
+
for (Production p : list) {
PendingInventory pending = new PendingInventory();
pending.setCoalId(p.getCoalId());
pending.setInventoryQuantity(p.getProductionQuantity());
- pending.setSupplierName("鐢熶骇鍔犲伐鍏ュ簱");
- pending.setTotalPriceIncludingTax(p.getTotalCost());
- pending.setPriceIncludingTax(p.getPurchasePrice());
- pending.setPriceIncludingTax(p.getPurchasePrice());
+ pending.setUnit("鍚�");
+ pending.setSupplierName(formattedDate + " - " + "鐢熶骇鍔犲伐鍏ュ簱");
+
+ // 闈炵┖澶勭悊
+ BigDecimal totalCost = p.getTotalCost() == null ? BigDecimal.ZERO : p.getTotalCost();
+ BigDecimal productionQuantity = p.getProductionQuantity() == null ? BigDecimal.ZERO : p.getProductionQuantity();
+
+ // 鍚◣鎬讳环
+ BigDecimal totalPriceIncludingTax = totalCost.multiply(productionQuantity)
+ .setScale(SCALE, ROUNDING_MODE);
+ pending.setTotalPriceIncludingTax(totalPriceIncludingTax);
+
+ // 鍚◣鍗曚环
+ pending.setPriceIncludingTax(totalCost.setScale(SCALE, ROUNDING_MODE));
+
+ // 涓嶅惈绋庡崟浠凤紙鐩存帴淇濈暀2浣嶅皬鏁帮級
+ BigDecimal priceExcludingTax = totalCost.divide(TAX_RATE, SCALE, ROUNDING_MODE);
+ pending.setPriceExcludingTax(priceExcludingTax);
+
+ // 涓嶅惈绋庢�讳环
+ BigDecimal totalPriceExcludingTax = priceExcludingTax.multiply(productionQuantity)
+ .setScale(SCALE, ROUNDING_MODE);
+ pending.setTotalPriceExcludingTax(totalPriceExcludingTax);
+
+ pending.setRegistrantId(p.getProducerId());
+ pending.setRegistrationDate(LocalDate.now());
pendingInventoryMapper.insert(pending);
}
}
--
Gitblit v1.9.3