From 66c6ab9883ecb5e0595f02fec6b66e962d1fbf67 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 03 六月 2026 10:12:23 +0800
Subject: [PATCH] Merge branch 'dev_New_pro' into dev_宁夏_英泽防锈
---
src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java | 141 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 141 insertions(+), 0 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 8d7477b..931159e 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
@@ -12,6 +12,8 @@
import com.ruoyi.approve.mapper.ApprovalInstanceMapper;
import com.ruoyi.approve.mapper.ApprovalTemplateNodeApproverMapper;
import com.ruoyi.approve.mapper.FinReimbursementMapper;
+import com.ruoyi.approve.mapper.VehicleBorrowRecordMapper;
+import com.ruoyi.approve.mapper.VehicleMapper;
import com.ruoyi.approve.pojo.*;
import com.ruoyi.approve.service.*;
import com.ruoyi.approve.utils.ApproveProcessConfigNodeUtils;
@@ -86,6 +88,8 @@
private final SalesQuotationMapper salesQuotationMapper;
private final ShippingInfoMapper shippingInfoMapper;
private final QualityInspectHelper qualityInspectHelper;
+ private final VehicleBorrowRecordMapper vehicleBorrowRecordMapper;
+ private final VehicleMapper vehicleMapper;
private final EnterpriseNewsScopeUserMapper enterpriseNewsScopeUserMapper;
private final SysUserMapper sysUserMapper;
private final SysUserDeptMapper sysUserDeptMapper;
@@ -422,6 +426,40 @@
this.updateById(instance);
// 缁熶竴澶勭悊涓氬姟鐘舵�佹洿鏂�
handleBusinessAfterApprovalFinished(instance);
+ // 椹冲洖瀵瑰簲鐨勪紒涓氭柊闂伙紝 宸梾鎶ラ攢
+ if (instance.getBusinessType().equals(TypeEnums.ENTERPRISE_NEWS_APPROVAL.getCode())) {
+ enterpriseNewsMapper.update(
+ new LambdaUpdateWrapper<EnterpriseNews>()
+ .eq(EnterpriseNews::getId, instance.getBusinessId())
+ .set(EnterpriseNews::getStatus, "REJECTED")
+ );
+ }else if (instance.getBusinessType().equals(TypeEnums.TRAVEL_REIMBURSEMENT_APPROVAL.getCode())||instance.getBusinessType().equals(TypeEnums.EXPENSE_APPROVAL.getCode())) {
+ finReimbursementMapper.update(
+ new LambdaUpdateWrapper<FinReimbursement>()
+ .eq(FinReimbursement::getId, instance.getBusinessId())
+ .set(FinReimbursement::getBillStatus, "REJECTED")
+ );
+ } else if (TypeEnums.VEHICLE_BORROW_APPROVAL.getCode().equals(instance.getBusinessType())) {
+ vehicleBorrowRecordMapper.update(
+ null,
+ new LambdaUpdateWrapper<VehicleBorrowRecord>()
+ .eq(VehicleBorrowRecord::getId, instance.getBusinessId())
+ .set(VehicleBorrowRecord::getBorrowStatus, "REJECTED")
+ .set(VehicleBorrowRecord::getApprovalInstanceId, instance.getId())
+ );
+ VehicleBorrowRecord borrowRecord = vehicleBorrowRecordMapper.selectById(instance.getBusinessId());
+ if (borrowRecord != null) {
+ syncVehicleBorrowStatus(borrowRecord.getVehicleId());
+ }
+ } else if (TypeEnums.VEHICLE_DELAY_APPROVAL.getCode().equals(instance.getBusinessType())) {
+ vehicleBorrowRecordMapper.update(
+ null,
+ new LambdaUpdateWrapper<VehicleBorrowRecord>()
+ .eq(VehicleBorrowRecord::getId, instance.getBusinessId())
+ .set(VehicleBorrowRecord::getExtendStatus, "REJECTED")
+ .set(VehicleBorrowRecord::getExtendApprovalInstanceId, null)
+ );
+ }
return R.ok("瀹℃壒宸查┏鍥�");
}
@@ -550,6 +588,11 @@
}
if (TypeEnums.ENTERPRISE_NEWS_APPROVAL.getCode().equals(businessType)) {
handleNewsApprovalFinished(instance, status);
+ return;
+ }
+ if (TypeEnums.VEHICLE_BORROW_APPROVAL.getCode().equals(businessType)
+ || TypeEnums.VEHICLE_DELAY_APPROVAL.getCode().equals(businessType)) {
+ handleVehicleBorrowApprovalFinished(instance, status);
}
}
@@ -691,6 +734,104 @@
shippingInfoMapper.updateById(shippingInfo);
}
+ private void handleVehicleBorrowApprovalFinished(ApprovalInstance instance, String status) {
+ if (instance == null || instance.getBusinessId() == null) {
+ return;
+ }
+
+ VehicleBorrowRecord record = vehicleBorrowRecordMapper.selectById(instance.getBusinessId());
+ if (record == null || Integer.valueOf(1).equals(record.getDeleted())) {
+ return;
+ }
+
+ if (TypeEnums.VEHICLE_BORROW_APPROVAL.getCode().equals(instance.getBusinessType())) {
+ if ("APPROVED".equals(status)) {
+ Vehicle vehicle = vehicleMapper.selectById(record.getVehicleId());
+ if (vehicle == null) {
+ throw new ServiceException("杞﹁締涓嶅瓨鍦�");
+ }
+ VehicleBorrowRecord update = new VehicleBorrowRecord();
+ update.setId(record.getId());
+ update.setBorrowStatus("BORROWING");
+ update.setApprovedTime(instance.getFinishTime());
+ update.setApprovalInstanceId(instance.getId());
+ vehicleBorrowRecordMapper.updateById(update);
+ syncVehicleBorrowStatus(vehicle.getId());
+ return;
+ }
+ if ("REJECTED".equals(status)) {
+ VehicleBorrowRecord update = new VehicleBorrowRecord();
+ update.setId(record.getId());
+ update.setBorrowStatus("REJECTED");
+ update.setApprovalInstanceId(instance.getId());
+ vehicleBorrowRecordMapper.updateById(update);
+ syncVehicleBorrowStatus(record.getVehicleId());
+ return;
+ }
+ if ("PENDING".equals(status)) {
+ VehicleBorrowRecord update = new VehicleBorrowRecord();
+ update.setId(record.getId());
+ update.setBorrowStatus("IN_APPROVAL");
+ update.setApprovalInstanceId(instance.getId());
+ vehicleBorrowRecordMapper.updateById(update);
+ }
+ return;
+ }
+
+ if (TypeEnums.VEHICLE_DELAY_APPROVAL.getCode().equals(instance.getBusinessType())) {
+ if ("APPROVED".equals(status)) {
+ vehicleBorrowRecordMapper.update(
+ null,
+ new LambdaUpdateWrapper<VehicleBorrowRecord>()
+ .eq(VehicleBorrowRecord::getId, record.getId())
+ .set(VehicleBorrowRecord::getBorrowStatus, "BORROWING")
+ .set(VehicleBorrowRecord::getExtendStatus, "APPROVED")
+ .set(VehicleBorrowRecord::getExtendApprovedTime, instance.getFinishTime())
+ .set(VehicleBorrowRecord::getPlannedReturnTime, record.getExtendTargetReturnTime())
+ .set(VehicleBorrowRecord::getExtendApprovalInstanceId, null)
+ );
+ return;
+ }
+ if ("REJECTED".equals(status)) {
+ vehicleBorrowRecordMapper.update(
+ null,
+ new LambdaUpdateWrapper<VehicleBorrowRecord>()
+ .eq(VehicleBorrowRecord::getId, record.getId())
+ .set(VehicleBorrowRecord::getExtendStatus, "REJECTED")
+ .set(VehicleBorrowRecord::getExtendApprovalInstanceId, null)
+ );
+ return;
+ }
+ if ("PENDING".equals(status)) {
+ VehicleBorrowRecord update = new VehicleBorrowRecord();
+ update.setId(record.getId());
+ update.setExtendStatus("PENDING");
+ update.setExtendApprovalInstanceId(instance.getId());
+ vehicleBorrowRecordMapper.updateById(update);
+ }
+ }
+ }
+
+ private void syncVehicleBorrowStatus(Long vehicleId) {
+ if (vehicleId == null) {
+ return;
+ }
+ long activeBorrowCount = vehicleBorrowRecordMapper.selectCount(
+ new LambdaQueryWrapper<VehicleBorrowRecord>()
+ .eq(VehicleBorrowRecord::getVehicleId, vehicleId)
+ .eq(VehicleBorrowRecord::getDeleted, 0)
+ .in(VehicleBorrowRecord::getBorrowStatus, "IN_APPROVAL", "BORROWING")
+ );
+ Vehicle vehicle = vehicleMapper.selectById(vehicleId);
+ if (vehicle == null) {
+ throw new ServiceException("杞﹁締涓嶅瓨鍦�");
+ }
+ Vehicle vehicleUpdate = new Vehicle();
+ vehicleUpdate.setId(vehicleId);
+ vehicleUpdate.setStatus(activeBorrowCount > 0 ? "IN_USE" : "IDLE");
+ vehicleMapper.updateById(vehicleUpdate);
+ }
+
private List<ApprovalTask> createNodeAndTasks(ApprovalInstance instance, ApprovalTemplateNode templateNode) {
List<ApprovalTemplateNodeApprover> approvers = approvalTemplateNodeApproverMapper.selectList(
new LambdaQueryWrapper<ApprovalTemplateNodeApprover>()
--
Gitblit v1.9.3