donglang 13 stundas atpakaļ
vecāks
revīzija
5ed729e0e3

+ 1 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -2253,7 +2253,7 @@ public class KwoTradeOrderService {
         ParkingWalletFeeFreezeParam feeFreezeParam = new ParkingWalletFeeFreezeParam();
         feeFreezeParam.setOrderNo(order.getTOrderNo());
         feeFreezeParam.setProEntId(purchaseEntId);
-        feeFreezeParam.setSupEntId(supplyEntId);
+        feeFreezeParam.setSupEntId(551429255406292993L);
         feeFreezeParam.setPurchaseQuantity(tradeOrderParam.getAmount());
         feeFreezeParam.setOperatorId(LoginUserHolder.getUserId());
         log.info("贸易订单下单应用收费策略,orderNo:{}, feeFreezeParam:{}", order.getTOrderNo(), JSON.toJSONString(feeFreezeParam));

+ 6 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/ParkingChangeStrategyUnitSaveParam.java

@@ -34,4 +34,10 @@ public class ParkingChangeStrategyUnitSaveParam extends PageReq implements Seria
     @Schema(description = "单位id")
     private List<Long> entIds;
 
+    /**
+     * 是否强制更新
+     */
+    @Schema(description = "是否强制更新")
+    private Boolean forceReplace = false;
+
 }

+ 17 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtParkingChangeStrategyUnitRepository.java

@@ -7,6 +7,7 @@ import com.sckw.transport.model.KwtParkingChargeStrategyUnit;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * @Author: 门卫车辆订单
@@ -32,4 +33,20 @@ public class KwtParkingChangeStrategyUnitRepository extends ServiceImpl<KwtParki
                         .eq(KwtParkingChargeStrategyUnit::getStrategyId, id));
     }
 
+
+    public void deleteByEntId(Set<Long> entIds) {
+        remove(
+                Wrappers.<KwtParkingChargeStrategyUnit>lambdaQuery()
+                        .in(KwtParkingChargeStrategyUnit::getEntId, entIds));
+    }
+
+
+    public List<KwtParkingChargeStrategyUnit> queryByStrategyIdAndEnt(Long strategyId, List<Long> entId) {
+        return list(
+                Wrappers.<KwtParkingChargeStrategyUnit>lambdaQuery()
+                        .ne(KwtParkingChargeStrategyUnit::getStrategyId, strategyId)
+                        .in(KwtParkingChargeStrategyUnit::getEntId, entId)
+                        .orderByDesc(KwtParkingChargeStrategyUnit::getId));
+    }
+
 }

+ 37 - 16
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ParkingChangeStrategyService.java

@@ -31,6 +31,7 @@ import java.math.BigDecimal;
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -214,24 +215,44 @@ public class ParkingChangeStrategyService {
     public void saveChangeStrategyEnt(ParkingChangeStrategyUnitSaveParam param) {
         log.info("保存单位分配,param:{}", JSON.toJSONString(param));
 
-        // 先清空
-        parkingChangeStrategyUnitRepository.deleteByStrategyId(param.getStrategyId());
+        // 清空逻辑
+        if (CollectionUtils.isEmpty(param.getEntIds())) {
+            parkingChangeStrategyUnitRepository.deleteByStrategyId(param.getStrategyId());
+            return;
+        }
+
+        // 校验冲突
+        List<KwtParkingChargeStrategyUnit> existingRelations = parkingChangeStrategyUnitRepository.queryByStrategyIdAndEnt(param.getStrategyId(), param.getEntIds());
+        if (CollectionUtils.isNotEmpty(existingRelations) && !param.getForceReplace()) {
+            Set<Long> conflictIds = existingRelations.stream()
+                    .map(KwtParkingChargeStrategyUnit::getEntId)
+                    .collect(Collectors.toSet());
+            String conflictNames = conflictIds.stream().map(this::getEntName).collect(Collectors.joining(","));
+            throw new BusinessPlatfromException(ErrorCodeEnum.DATA_SAVE_FAIL, conflictNames + "已存在策略, 是否确认替换?");
+        }
 
-        // 如果企业id不为空,构建新列表并批量插入
-        if (CollectionUtils.isNotEmpty(param.getEntIds())) {
-            // 构建关联表实体列表
-            List<KwtParkingChargeStrategyUnit> insertList = param.getEntIds().stream()
-                    .map(entId -> {
-                        KwtParkingChargeStrategyUnit unit = new KwtParkingChargeStrategyUnit();
-                        unit.setStrategyId(param.getStrategyId());
-                        unit.setEntId(entId);
-                        return unit;
-                    })
-                    .collect(Collectors.toList());
-
-            // 批量插入
-            parkingChangeStrategyUnitRepository.saveBatch(insertList);
+        // 如果是强制模式,先清理掉旧的关联关系(替换)
+        if (CollectionUtils.isNotEmpty(existingRelations) && param.getForceReplace()) {
+            Set<Long> conflictIds = existingRelations.stream()
+                    .map(KwtParkingChargeStrategyUnit::getEntId)
+                    .collect(Collectors.toSet());
+            // 删除这些单位原本关联的旧策略记录
+            parkingChangeStrategyUnitRepository.deleteByEntId(conflictIds);
         }
+
+        // 正常流程
+        parkingChangeStrategyUnitRepository.deleteByStrategyId(param.getStrategyId());
+        List<KwtParkingChargeStrategyUnit> insertList = param.getEntIds().stream()
+                .map(entId -> {
+                    KwtParkingChargeStrategyUnit unit = new KwtParkingChargeStrategyUnit();
+                    unit.setStrategyId(param.getStrategyId());
+                    unit.setEntId(entId);
+                    return unit;
+                })
+                .collect(Collectors.toList());
+
+        // 批量插入
+        parkingChangeStrategyUnitRepository.saveBatch(insertList);
     }
 
     /**