From 1c8757f865bd5a0c80fa1d44ec4b62dfc6e24e39 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期一, 12 十月 2026 16:55:31 +0800
Subject: [PATCH] fix: 优化客户往来查询逻辑,修复应收金额计算及批号显示问题
---
src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java | 43 ++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 42 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
index 64a2eb3..92f3724 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
@@ -111,7 +111,6 @@
if (TypeEnums.PURCHASE_APPROVAL.getCode().equals(vo.getBusinessType())) {
// 閲囪喘瀹℃壒 - 鏌ヨ閲囪喘鍗曞彿
PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(vo.getBusinessId());
- System.out.println("涓氬姟绫诲瀷锛�" + purchaseLedger.getPurchaseContractNumber());
if (purchaseLedger != null) {
vo.setPurchaseContractNumber(purchaseLedger.getPurchaseContractNumber());
}
@@ -184,6 +183,10 @@
if (approvalInstanceDto == null || approvalInstanceDto.getId() == null) {
return false;
}
+ ApprovalInstance existing = this.getById(approvalInstanceDto.getId());
+ if (existing == null) {
+ return false;
+ }
// 鍒ゆ柇鏄惁鏈夋鍦ㄨ繘琛岀殑瀹℃壒浠诲姟锛屾湁鍒欎笉鍏佽淇敼
long pendingTaskCount = approvalTaskService.count(
Wrappers.<ApprovalTask>lambdaQuery()
@@ -194,10 +197,48 @@
if (pendingTaskCount > 0) {
throw new ServiceException("璇ュ鎵瑰崟鏈夋鍦ㄨ繘琛岀殑瀹℃壒浠诲姟锛屼笉鍏佽淇敼");
}
+
+ // 鏈�氳繃涓斿綋鍓嶆病鏈夊緟澶勭悊鑺傜偣锛岃鏄庢祦绋嬪凡缁堟锛堝凡椹冲洖锛夛紝
+ // 淇敼淇濆瓨鍗宠涓洪噸鏂版彁浜わ紝娴佺▼浠庣涓�绾ч噸鏂板紑濮�
+ boolean resubmit = !"APPROVED".equals(existing.getStatus())
+ && approveProcessConfigNodeUtils.getCurrentNode(existing.getId()) == null;
+ if (resubmit) {
+ // 杞垹闄ゆ棫鐨勮妭鐐逛笌浠诲姟锛堝鎵硅褰曚繚鐣欙紝鏃堕棿绾垮彔鍔狅級
+ LambdaUpdateWrapper<ApprovalInstanceNode> nodeUpdateWrapper = Wrappers.lambdaUpdate();
+ nodeUpdateWrapper.eq(ApprovalInstanceNode::getInstanceId, approvalInstanceDto.getId())
+ .eq(ApprovalInstanceNode::getDeleted, 0)
+ .set(ApprovalInstanceNode::getDeleted, (byte) 1);
+ approvalInstanceNodeService.update(nodeUpdateWrapper);
+
+ LambdaUpdateWrapper<ApprovalTask> taskUpdateWrapper = Wrappers.lambdaUpdate();
+ taskUpdateWrapper.eq(ApprovalTask::getInstanceId, approvalInstanceDto.getId())
+ .eq(ApprovalTask::getDeleted, 0)
+ .set(ApprovalTask::getDeleted, (byte) 1);
+ approvalTaskService.update(taskUpdateWrapper);
+
+ approvalInstanceDto.setStatus("PENDING");
+ approvalInstanceDto.setCurrentLevel(1);
+ approvalInstanceDto.setFinishTime(null);
+ approvalInstanceDto.setInstanceNo(existing.getInstanceNo());
+ approvalInstanceDto.setApplicantId(existing.getApplicantId());
+ approvalInstanceDto.setApplicantName(existing.getApplicantName());
+ }
+
boolean updated = this.updateById(approvalInstanceDto);
if (!updated) {
return false;
}
+ if (resubmit) {
+ // updateById 蹇界暐 null锛宖inishTime 闇�鐢ㄦ樉寮� set 鎵嶈兘娓呯┖
+ this.update(
+ Wrappers.<ApprovalInstance>lambdaUpdate()
+ .eq(ApprovalInstance::getId, approvalInstanceDto.getId())
+ .set(ApprovalInstance::getFinishTime, null)
+ );
+ // 閲嶅缓绗竴绾ц妭鐐逛笌瀹℃壒浠诲姟锛屽苟杩藉姞涓�鏉″彂璧峰鎵硅褰�
+ approveProcessConfigNodeUtils.createCurrentNodeAndTasks(approvalInstanceDto, true);
+ sendApproveNotice(approvalInstanceDto, approveProcessConfigNodeUtils.getCurrentPendingTasks(approvalInstanceDto.getId()));
+ }
fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.APPROVAL_INSTANCE, approvalInstanceDto.getId(), approvalInstanceDto.getStorageBlobDTOs());
return true;
}
--
Gitblit v1.9.3