From dc658c83dcb919df1b263dc9cd10a228e7a234ec Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 24 六月 2026 14:39:45 +0800
Subject: [PATCH] fix: 反审核重复新增
---
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 104 +++++++++++-----------------------------------------
1 files changed, 22 insertions(+), 82 deletions(-)
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index e1ae53b..b1304b9 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -27,6 +27,7 @@
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.*;
+import com.ruoyi.common.utils.excel.ExcelUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.other.mapper.TempFileMapper;
@@ -273,8 +274,12 @@
if (!bindList.isEmpty()) {
List<Integer> processIds = bindList.stream().map(SalesLedgerProductProcessBind::getSalesLedgerProductProcessId).collect(Collectors.toList());
Map<Integer, Integer> processQuantityMap = bindList.stream().collect(Collectors.toMap(SalesLedgerProductProcessBind::getSalesLedgerProductProcessId, SalesLedgerProductProcessBind::getQuantity, (a, b) -> a));
+ Map<Integer, BigDecimal> processAmountMap = bindList.stream().collect(Collectors.toMap(SalesLedgerProductProcessBind::getSalesLedgerProductProcessId, SalesLedgerProductProcessBind::getAmount, (a, b) -> a));
List<SalesLedgerProductProcess> processList = salesLedgerProductProcessService.listByIds(processIds);
- processList.forEach(p -> p.setQuantity(processQuantityMap.get(p.getId())));
+ processList.forEach(p -> {
+ p.setQuantity(processQuantityMap.get(p.getId()));
+ if (processAmountMap.get(p.getId()) != null) p.setUnitPrice(processAmountMap.get(p.getId()));
+ });
product.setSalesProductProcessList(processList);
}
ProductModel productModel = productModelMap.get(product.getProductModelId());
@@ -651,6 +656,7 @@
SalesLedgerProductProcess p = new SalesLedgerProductProcess();
p.setId(process.getId());
p.setQuantity(processQty.intValue());
+ p.setUnitPrice(process.getUnitPrice());
processList.add(p);
extraProcessAmountPerPiece = extraProcessAmountPerPiece.add(defaultDecimal(process.getUnitPrice()).multiply(processQty));
}
@@ -822,7 +828,11 @@
record.setSalesLedgerProcessRouteId(route.getId());
Integer isCompleted = inputRecord != null && inputRecord.getIsCompleted() != null ? inputRecord.getIsCompleted() : 0;
record.setIsCompleted(isCompleted);
- record.setCompletedTime(Objects.equals(isCompleted, 1) ? LocalDateTime.now() : null);
+ if (Objects.equals(isCompleted, 1)) {
+ record.setCompletedTime(inputRecord != null && inputRecord.getCompletedTime() != null ? inputRecord.getCompletedTime() : LocalDateTime.now());
+ } else {
+ record.setCompletedTime(null);
+ }
routeRecordList.add(record);
}
salesLedgerProcessRouteRecordService.saveBatch(routeRecordList);
@@ -1167,7 +1177,7 @@
@Transactional(readOnly = true)
public String generateSalesContractNo() {
LocalDate currentDate = LocalDate.now();
- String datePart = currentDate.format(DateTimeFormatter.BASIC_ISO_DATE);
+ String datePart = currentDate.format(DateTimeFormatter.ofPattern("yyMMdd"));
String lockKey = LOCK_PREFIX + datePart;
String lockValue = Thread.currentThread().getId() + "-" + System.nanoTime(); // 鍞竴鏍囪瘑閿佹寔鏈夎��
@@ -2621,7 +2631,6 @@
ledger.setStockStatus(allInbound ? 2 : (anyInbound ? 1 : 0));
ledger.setDeliveryStatus(allShipped ? 5 : 1);
// ledger.setReviewStatus(1);
- ledger.setOrderStatus(1);
Long entryUserId = StringUtils.hasText(ledger.getEntryPerson()) ? Long.parseLong(ledger.getEntryPerson()) : 1L;
Long entryDeptId = 1L;
@@ -2975,7 +2984,6 @@
}
ledger.setStockStatus(allInbound ? 2 : (anyInbound ? 1 : 0));
ledger.setDeliveryStatus(allShipped ? 5 : 1);
- ledger.setOrderStatus(1);
Long entryUserId = StringUtils.hasText(ledger.getEntryPerson()) ? Long.parseLong(ledger.getEntryPerson()) : 1L;
Long entryDeptId = 1L;
@@ -3079,6 +3087,7 @@
SalesLedgerProductProcess bind = new SalesLedgerProductProcess();
bind.setId(process.getId());
bind.setQuantity(entry.getValue());
+ bind.setUnitPrice(process.getUnitPrice());
result.add(bind);
}
return result;
@@ -3919,43 +3928,10 @@
// 5. 鍙栨秷瀹℃壒娴佺▼
cancelApproveProcesses(id, originalLedger.getSalesContractNo());
- // 6. 閲嶆柊鐢熸垚锛氬垱寤烘柊鍙拌处鍓湰
+ // 6. 閲嶆柊鐢熸垚锛氭澶勪笉鐩存帴鍦ㄥ悗绔叆搴擄紝鑰屾槸杩斿洖鍘熷崟鎹甀D缁欏墠绔�
+ // 鍓嶇鎷垮埌ID鍚庝細鑾峰彇鍘熷崟鎹鎯呭苟璺宠浆鍒版柊澧為〉闈紙甯﹀叆棰勫~鏁版嵁锛夛紝鐢辩敤鎴峰湪椤甸潰涓婄紪杈戝悗缁熶竴鏂板锛屼互閬垮厤鏁版嵁閲嶅鐢熸垚
if (dto.getCounterReviewType() == 2) {
- SalesLedger newLedger = new SalesLedger();
- BeanUtils.copyProperties(originalLedger, newLedger);
- newLedger.setId(null);
- newLedger.setSalesContractNo(generateSalesContractNo());
- newLedger.setDeliveryStatus(1);
- newLedger.setStockStatus(0);
- newLedger.setReviewStatus(0);
- newLedger.setCounterReviewTime(null);
- newLedger.setCounterReviewPerson(null);
- newLedger.setCounterReviewPersonId(null);
- newLedger.setCounterReviewType(null);
- newLedger.setCounterReviewDesc(null);
- salesLedgerMapper.insert(newLedger);
-
- // 澶嶅埗浜у搧鍒版柊鍙拌处
- List<SalesLedgerProduct> originalProducts = salesLedgerProductMapper.selectList(
- Wrappers.<SalesLedgerProduct>lambdaQuery()
- .eq(SalesLedgerProduct::getSalesLedgerId, id)
- );
- for (SalesLedgerProduct originalProduct : originalProducts) {
- SalesLedgerProduct newProduct = new SalesLedgerProduct();
- BeanUtils.copyProperties(originalProduct, newProduct);
- newProduct.setId(null);
- newProduct.setSalesLedgerId(newLedger.getId());
- newProduct.setStockedQuantity(BigDecimal.ZERO);
- newProduct.setShippedQuantity(BigDecimal.ZERO);
- newProduct.setUnqualifiedStockedQuantity(BigDecimal.ZERO);
- newProduct.setUnqualifiedShippedQuantity(BigDecimal.ZERO);
- newProduct.setReturnQuality(BigDecimal.ZERO);
- newProduct.setAvailableQuality(newProduct.getQuantity().subtract(newProduct.getReturnQuality()));
- newProduct.setProductStockStatus(0);
- newProduct.fillRemainingQuantity();
- salesLedgerProductMapper.insert(newProduct);
- }
- newLedgerIds.add(newLedger.getId());
+ newLedgerIds.add(id);
}
}
return newLedgerIds;
@@ -4157,30 +4133,6 @@
);
}
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void markOrderCompleted(List<Long> ids) {
- if (CollectionUtils.isEmpty(ids)) {
- throw new ServiceException("璇烽�夋嫨瑕佹爣璁板畬鎴愮殑璁㈠崟");
- }
- for (Long id : ids) {
- SalesLedger ledger = salesLedgerMapper.selectById(id);
- if (ledger == null) {
- throw new ServiceException("璁㈠崟涓嶅瓨鍦紝鏃犳硶鏍囪瀹屾垚");
- }
- if (ledger.getReviewStatus() == null || ledger.getReviewStatus() != 1) {
- throw new ServiceException("璁㈠崟" + ledger.getSalesContractNo() + "涓嶆槸宸插鏍哥姸鎬侊紝鏃犳硶鏍囪瀹屾垚");
- }
- if (ledger.getOrderStatus() != null && ledger.getOrderStatus() == 1) {
- throw new ServiceException("璁㈠崟" + ledger.getSalesContractNo() + "宸插畬鎴愶紝鏃犻渶閲嶅鏍囪");
- }
- }
- salesLedgerMapper.update(null,
- Wrappers.<SalesLedger>lambdaUpdate()
- .in(SalesLedger::getId, ids)
- .set(SalesLedger::getOrderStatus, 1)
- );
- }
@Override
public void incrementPrintCount(Long id, String printType) {
@@ -4246,9 +4198,7 @@
if (salesLedgerDto.getReviewStatus() != null) {
queryWrapper.eq(SalesLedger::getReviewStatus, salesLedgerDto.getReviewStatus());
}
- if (salesLedgerDto.getOrderStatus() != null) {
- queryWrapper.eq(SalesLedger::getOrderStatus, salesLedgerDto.getOrderStatus());
- }
+
if (salesLedgerDto.getReviewStatusList() != null && !salesLedgerDto.getReviewStatusList().isEmpty()) {
queryWrapper.and(w -> w.in(SalesLedger::getReviewStatus, salesLedgerDto.getReviewStatusList())
.or().isNull(SalesLedger::getReviewStatus));
@@ -4281,7 +4231,7 @@
ledgerDto.setDeliveryStatusText(getDeliveryStatusText(ledger.getDeliveryStatus()));
ledgerDto.setStockStatusText(getStockStatusText(ledger.getStockStatus()));
ledgerDto.setReviewStatusText(getReviewStatusText(ledger.getReviewStatus()));
- ledgerDto.setOrderStatusText(getOrderStatusText(ledger.getOrderStatus()));
+
ledgerExportList.add(ledgerDto);
// 鏌ヨ璇ュ彴璐︾殑浜у搧鍒楄〃
@@ -4469,7 +4419,7 @@
sheetMap.put("宸ヨ壓璺嚎", sheetData);
}
- com.ruoyi.common.utils.excel.ExcelUtils.exportManySheet(response, "閿�鍞彴璐﹀伐鑹鸿矾绾垮鍑�", sheetMap);
+ ExcelUtils.exportManySheet(response, "閿�鍞彴璐﹀伐鑹鸿矾绾垮鍑�", sheetMap);
} catch (Exception e) {
log.error("瀵煎嚭鍞悗鍙拌处宸ヨ壓璺嚎澶辫触", e);
throw new ServiceException("瀵煎嚭鍞悗鍙拌处宸ヨ壓璺嚎澶辫触锛�" + e.getMessage());
@@ -4515,7 +4465,7 @@
private List<Object> buildProcessRouteRow(SalesLedger salesLedger, SalesLedgerProduct product, SalesLedgerProcessRouteRecord route) {
List<Object> row = new ArrayList<>();
- row.add(salesLedger.getEntryDate() == null ? "" : DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, salesLedger.getEntryDate()));
+ row.add(route.getCompletedTime() == null ? "" : route.getCompletedTime().format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd")));
row.add(salesLedger.getSalesContractNo());
row.add(salesLedger.getCustomerName());
row.add(product == null ? "" : product.getSpecificationModel());
@@ -4689,15 +4639,5 @@
}
}
- private String getOrderStatusText(Integer status) {
- if (status == null || status == 0) return "杩涜涓�";
- switch (status) {
- case 0:
- return "杩涜涓�";
- case 1:
- return "宸插畬鎴�";
- default:
- return "杩涜涓�";
- }
- }
}
+
--
Gitblit v1.9.3