From 7858ae894c398f2f9248ac898b2ff200fa36225d Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期三, 29 七月 2026 18:42:15 +0800
Subject: [PATCH] 各类修复
---
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java | 31 +++++++++++++++++--------------
1 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
index 266309d..7b7a762 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
@@ -36,6 +36,7 @@
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -173,6 +174,7 @@
@Log(title = "【计费策略】修改计费策略", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE)
@ApiOperation(tags = {"后台-计费策略", "管理后台-站点管理"},value = "修改计费策略")
@PostMapping(value = "/update")
+ @Transactional(rollbackFor = Exception.class)
public AjaxResult<String> update(@RequestBody TAccountingStrategyDTO dto) {
String partnerCheck = fillAndCheckPartner(dto);
if (partnerCheck != null) {
@@ -191,9 +193,7 @@
if (Objects.isNull(original)) {
return AjaxResult.error("计费策略不存在");
}
- if(Objects.isNull(dto.getDiscount())){
- accountingStrategyService.update(Wrappers.<TAccountingStrategy>lambdaUpdate().set(TAccountingStrategy::getDiscount, null).eq(TAccountingStrategy::getId, dto.getId()));
- }
+ boolean clearDiscount = Objects.isNull(dto.getDiscount());
// 历史审核通过的策略在替换旧策略后可能仍保留已删除策略的 parentId。
// 这类正式策略再次编辑会被改为待审核子记录,并被计费策略列表过滤掉,先将其恢复为主策略。
if (original.getParentId() != null && Objects.equals(original.getAuditStatus(), 3)
@@ -220,12 +220,14 @@
} else {
dto.setId(original.getId());
accountingStrategyService.updateById(dto);
+ clearStrategyDiscountIfNeeded(dto.getId(), clearDiscount);
replaceStrategyDetails(dto.getId(), dto.getAccountingStrategyDetails());
}
return AjaxResult.success();
}
- // 判断修改的计费策略是否为已通过或已驳回
- if(null != dto.getAuditStatus() && (dto.getAuditStatus() == 3 || dto.getAuditStatus() == 4)){
+ // 是否为正式/驳回策略必须以数据库原记录为准,不能信任前端回传的审核状态。
+ // 正式策略修改时仅维护待审核子记录,审核通过前站点仍引用原策略。
+ if (Objects.equals(original.getAuditStatus(), 3) || Objects.equals(original.getAuditStatus(), 4)) {
// 查询是否有下级审核中的策略
TAccountingStrategy children = accountingStrategyService.getOne(Wrappers.lambdaQuery(TAccountingStrategy.class)
.eq(TAccountingStrategy::getParentId, dto.getId())
@@ -243,6 +245,7 @@
dto.setFirstAuditTime(null);
dto.setTwoAuditTime(null);
accountingStrategyService.updateById(dto);
+ clearStrategyDiscountIfNeeded(dto.getId(), clearDiscount);
replaceStrategyDetails(children.getId(), dto.getAccountingStrategyDetails());
}else {
Long userId = SecurityUtils.getLoginUser().getUserid();
@@ -257,20 +260,20 @@
}else {
dto.setAuditStatus(1);
accountingStrategyService.updateById(dto);
+ clearStrategyDiscountIfNeeded(dto.getId(), clearDiscount);
replaceStrategyDetails(dto.getId(), dto.getAccountingStrategyDetails());
}
-
- if(null != dto.getSiteId()){
- //下发硬件数据
- List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, dto.getSiteId()).eq(TChargingPile::getDelFlag, 0).list();
- for (TChargingPile tChargingPile : list) {
- integrationClient.setupBillingModel1(tChargingPile.getCode(), JSON.toJSONString(dto.getAccountingStrategyDetails()));
- chengDuJianGuanClient.notificationStationFee(tChargingPile.getId());
- }
- }
return AjaxResult.success();
}
+ private void clearStrategyDiscountIfNeeded(Integer strategyId, boolean clearDiscount) {
+ if (clearDiscount) {
+ accountingStrategyService.update(Wrappers.<TAccountingStrategy>lambdaUpdate()
+ .set(TAccountingStrategy::getDiscount, null)
+ .eq(TAccountingStrategy::getId, strategyId));
+ }
+ }
+
private void replaceStrategyDetails(Integer strategyId, List<TAccountingStrategyDetail> details) {
accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class)
.eq(TAccountingStrategyDetail::getAccountingStrategyId, strategyId));
--
Gitblit v1.7.1