From 684e4306a08feeae188070f264148e6765da8dcf Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期日, 20 九月 2026 19:25:15 +0800
Subject: [PATCH] feat(account): 更新往来付款回款流水表及接口

---
 src/main/java/com/ruoyi/basic/service/impl/TankInfoServiceImpl.java |   68 +++++++++++++++++++++++++++++++++-
 1 files changed, 66 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/ruoyi/basic/service/impl/TankInfoServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/TankInfoServiceImpl.java
index fa909e7..ece224e 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/TankInfoServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/TankInfoServiceImpl.java
@@ -2,11 +2,14 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.enums.TankUsageTypeEnum;
 import com.ruoyi.basic.mapper.TankInfoMapper;
 import com.ruoyi.basic.pojo.TankInfo;
 import com.ruoyi.basic.service.ITankInfoService;
+import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.StringUtils;
 import org.springframework.stereotype.Service;
 
@@ -21,19 +24,30 @@
 @Service
 public class TankInfoServiceImpl extends ServiceImpl<TankInfoMapper, TankInfo> implements ITankInfoService {
 
+    /**
+     * 鏄惁鍚敤锛氬惎鐢ㄣ�備笌 tank_info.is_enabled 鐨勯粯璁ゅ�间竴鑷�
+     */
+    private static final Integer TANK_ENABLED = 1;
+
     @Override
     public IPage<TankInfo> selectTankInfoList(Page<TankInfo> page, TankInfo tankInfo) {
         LambdaQueryWrapper<TankInfo> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.like(StringUtils.isNotBlank(tankInfo.getTankNo()), TankInfo::getTankNo, tankInfo.getTankNo())
                 .like(StringUtils.isNotBlank(tankInfo.getCategory()), TankInfo::getCategory, tankInfo.getCategory())
+                .eq(tankInfo.getIsEnabled() != null, TankInfo::getIsEnabled, tankInfo.getIsEnabled())
+                .eq(tankInfo.getUsageType() != null, TankInfo::getUsageType, tankInfo.getUsageType())
                 .orderByAsc(TankInfo::getId);
         return this.page(page, queryWrapper);
     }
 
+    /**
+     * 涓嬫媺鐢細鍙繑鍥炲凡鍚敤鐨勫偍缃愩�傛湭鍚敤琛ㄧず杩樻病鎶曠敤锛屼笉搴旇鍏ュ簱绛変笟鍔¢�変腑
+     */
     @Override
     public List<TankInfo> selectAll() {
         LambdaQueryWrapper<TankInfo> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.orderByAsc(TankInfo::getId);
+        queryWrapper.eq(TankInfo::getIsEnabled, TANK_ENABLED)
+                .orderByAsc(TankInfo::getId);
         return this.list(queryWrapper);
     }
 
@@ -44,12 +58,62 @@
 
     @Override
     public boolean insertTankInfo(TankInfo tankInfo) {
+        normalizeUsage(tankInfo);
         return this.save(tankInfo);
     }
 
     @Override
     public boolean updateTankInfo(TankInfo tankInfo) {
-        return this.updateById(tankInfo);
+        if (tankInfo.getId() == null) {
+            throw new ServiceException("缂哄皯鍌ㄧ綈id");
+        }
+        normalizeUsage(tankInfo);
+        boolean updated = this.updateById(tankInfo);
+        if (updated) {
+            // usageType / tenantInfo 鏄厑璁歌娓呯┖鐨勶紝鑰� updateById 榛樿璺宠繃 null 瀛楁锛團ieldStrategy.NOT_NULL锛夛紝
+            // 娓呯┖鍔ㄤ綔鏍规湰鍐欎笉杩涘簱锛屾墍浠ヨ繖涓ゅ垪鍗曠嫭琛ヤ竴鏉℃洿鏂�
+            updated = this.update(Wrappers.<TankInfo>lambdaUpdate()
+                    .eq(TankInfo::getId, tankInfo.getId())
+                    .set(TankInfo::getUsageType, tankInfo.getUsageType())
+                    .set(TankInfo::getTenantInfo, tankInfo.getTenantInfo()));
+        }
+        return updated;
+    }
+
+    /**
+     * 褰掍竴鍖栥�屾槸鍚﹀惎鐢� / 鐢ㄩ�� / 绉熷淇℃伅銆嶄笁鑰呯殑鍏崇郴锛�
+     * <ul>
+     *     <li>鏈惎鐢細鐢ㄩ�斾笌绉熷淇℃伅涓�寰嬫竻绌� 鈥斺�� 鍚敤涔嬪悗鎵嶈皥绉熻祦/鑷敤</li>
+     *     <li>鍚敤 + 绉熻祦锛氱瀹俊鎭繀濉�</li>
+     *     <li>鍚敤 + 鑷敤锛氱瀹俊鎭竻绌�</li>
+     *     <li>鍚敤 + 鐢ㄩ�斾负绌猴細瑙嗕负鏈�夋嫨锛屾棦涓嶆牎楠屼篃涓嶆竻绌恒�傝縼绉诲悗鐨勫瓨閲忓偍缃愬氨鏄繖涓姸鎬侊紝
+     *         杩欐牱鑰佸墠绔笉鏀逛篃涓嶄細琚嫤锛屾洿涓嶄細鎶婂凡鏈夌殑绉熷淇℃伅鎶规帀</li>
+     * </ul>
+     */
+    private void normalizeUsage(TankInfo tankInfo) {
+        if (tankInfo.getIsEnabled() == null) {
+            tankInfo.setIsEnabled(TANK_ENABLED);
+        }
+        if (!TANK_ENABLED.equals(tankInfo.getIsEnabled())) {
+            tankInfo.setUsageType(null);
+            tankInfo.setTenantInfo(null);
+            return;
+        }
+        Integer usageType = tankInfo.getUsageType();
+        if (usageType == null) {
+            return;
+        }
+        if (TankUsageTypeEnum.LEASE.getCode().equals(usageType)) {
+            if (StringUtils.isBlank(tankInfo.getTenantInfo())) {
+                throw new ServiceException("绉熻祦鐨勫偍缃愬繀椤诲~鍐欑瀹俊鎭�");
+            }
+            return;
+        }
+        if (TankUsageTypeEnum.SELF_USE.getCode().equals(usageType)) {
+            tankInfo.setTenantInfo(null);
+            return;
+        }
+        throw new ServiceException("鍌ㄧ綈鐢ㄩ�斿彧鑳芥槸绉熻祦鎴栬嚜鐢�");
     }
 
     @Override

--
Gitblit v1.9.3