From 8d5c50656d81dc3eb04a841ecd259adebf99424a Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期三, 11 二月 2026 15:49:26 +0800
Subject: [PATCH] 搜索库存明细调整不查询删除物料
---
rsf-admin/src/page/locItem/LocItemList.jsx | 12 ++++++
rsf-server/src/main/java/com/vincent/rsf/server/system/service/UserService.java | 6 +++
rsf-admin/src/config/MyDataProvider.js | 5 ++
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java | 11 +++++
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/UserController.java | 2
rsf-server/src/main/resources/mapper/manager/LocItemMapper.xml | 5 +-
rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/UserServiceImpl.java | 32 ++++++++++++++++
7 files changed, 68 insertions(+), 5 deletions(-)
diff --git a/rsf-admin/src/config/MyDataProvider.js b/rsf-admin/src/config/MyDataProvider.js
index 897d7ab..1e13a53 100644
--- a/rsf-admin/src/config/MyDataProvider.js
+++ b/rsf-admin/src/config/MyDataProvider.js
@@ -37,7 +37,10 @@
// get a list of records based on an array of ids
getMany: async (resource, params) => {
- // console.log("getMany", resource, params);
+
+ if (resource === "user") {
+ await new Promise((r) => setTimeout(r, 1000));
+ }
const res = await request.post(resource + "/many/" + params.ids);
const { code, msg, data } = res.data;
if (code === 200) {
diff --git a/rsf-admin/src/page/locItem/LocItemList.jsx b/rsf-admin/src/page/locItem/LocItemList.jsx
index dda2fd0..008c672 100644
--- a/rsf-admin/src/page/locItem/LocItemList.jsx
+++ b/rsf-admin/src/page/locItem/LocItemList.jsx
@@ -56,8 +56,20 @@
},
}));
+const locUseStatusChoices = typeof localStorage !== 'undefined'
+ ? (JSON.parse(localStorage.getItem('sys_dicts') || '[]')).filter((d) => d.dictTypeCode === 'sys_loc_use_stas')
+ : [];
+
const filters = [
<SearchInput source="condition" alwaysOn />,
+ <AutocompleteInput
+ source="useStatus"
+ label="table.field.loc.useStatus"
+ choices={locUseStatusChoices}
+ optionText="label"
+ optionValue="value"
+ resettable
+ />,
<NumberInput source="locId" label="table.field.locItem.locId" />,
<TextInput source="locCode" label="table.field.locItem.locCode" />,
<NumberInput source="matnrId" label="table.field.locItem.matnrId" />,
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java
index 2fb3cbe..ccbde80 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java
@@ -22,6 +22,7 @@
import com.vincent.rsf.server.system.controller.BaseController;
import com.vincent.rsf.server.manager.enums.LocStsType;
import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@@ -42,8 +43,16 @@
public R page(@RequestBody Map<String, Object> map) {
BaseParam baseParam = buildParam(map, BaseParam.class);
PageParam<LocItem, BaseParam> pageParam = new PageParam<>(baseParam, LocItem.class);
-
+ // 搴撲綅鐘舵�佺瓫閫夛細鍏宠仈 man_loc锛屼笉鑳戒綔涓� man_loc_item 瀛楁鍙備笌 buildWrapper
+ Object useStatus = map.get("useStatus");
+ if (pageParam.getWhere() != null && pageParam.getWhere().getMap() != null) {
+ pageParam.getWhere().getMap().remove("useStatus");
+ }
QueryWrapper<LocItem> wrapper = pageParam.buildWrapper(true);
+ if (useStatus != null && StringUtils.isNotBlank(useStatus.toString())) {
+ String status = useStatus.toString().replace("'", "''");
+ wrapper.apply("EXISTS (SELECT 1 FROM man_loc ml WHERE ml.id = man_loc_item.loc_id AND ml.use_status = '" + status + "')");
+ }
FieldsUtils.setFieldsFilters(wrapper, pageParam, LocItem.class);
/**鎷兼帴鎵╁睍瀛楁*/
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/UserController.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/UserController.java
index 9f2f7fd..d5ef406 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/UserController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/UserController.java
@@ -60,7 +60,7 @@
@PreAuthorize("hasAuthority('system:user:list')")
@PostMapping({"/user/many/{ids}", "/users/many/{ids}"})
public R many(@PathVariable Long[] ids) {
- return R.ok().add(userService.listByIds(Arrays.asList(ids)));
+ return R.ok().add(userService.listByIdsCached(Arrays.asList(ids)));
}
@PreAuthorize("hasAuthority('system:user:list')")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/service/UserService.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/service/UserService.java
index 9981a93..25dbaea 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/service/UserService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/service/UserService.java
@@ -7,8 +7,14 @@
import com.vincent.rsf.server.common.domain.PageResult;
import com.vincent.rsf.server.system.entity.User;
+import java.util.Collection;
+import java.util.List;
+
public interface UserService extends IService<User> {
+ /** 鎸� ID 鎵归噺鏌ヨ鐢ㄦ埛锛堝甫鐭湡缂撳瓨锛屽噺杞诲垪琛ㄩ〉 createBy/updateBy 绛夊娆¤姹傚帇鍔涳級 */
+ List<User> listByIdsCached(Collection<Long> ids);
+
PageResult<User> pageRel(PageParam<User, BaseParam> pageParam);
User getByUsername(String username, Long tenantId);
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/UserServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/UserServiceImpl.java
index dea12b4..155e883 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/UserServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/UserServiceImpl.java
@@ -14,9 +14,16 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
@Service("userService")
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
+
+ /** 鎵归噺鏌ヨ缂撳瓨锛歬ey = 鎺掑簭鍚庣殑 ids 鎷兼帴锛寁alue = (杩囨湡鏃堕棿鎴�, 鐢ㄦ埛鍒楄〃)锛孴TL 5 鍒嗛挓 */
+ private static final long CACHE_TTL_MS = 5 * 60 * 1000L;
+ private static final ConcurrentHashMap<String, CacheEntry<List<User>>> USER_MANY_CACHE = new ConcurrentHashMap<>(64);
@Resource
private UserRoleService userRoleService;
@@ -70,4 +77,29 @@
return baseMapper.selectByUsernameWithoutTenant(username,tenantId);
}
+ @Override
+ public List<User> listByIdsCached(Collection<Long> ids) {
+ if (ids == null || ids.isEmpty()) {
+ return Collections.emptyList();
+ }
+ String key = ids.stream().sorted().map(Object::toString).collect(Collectors.joining(","));
+ long now = System.currentTimeMillis();
+ CacheEntry<List<User>> entry = USER_MANY_CACHE.get(key);
+ if (entry != null && entry.expireAt > now) {
+ return entry.data;
+ }
+ List<User> list = listByIds(ids);
+ USER_MANY_CACHE.put(key, new CacheEntry<>(now + CACHE_TTL_MS, list));
+ return list;
+ }
+
+ private static class CacheEntry<T> {
+ final long expireAt;
+ final T data;
+ CacheEntry(long expireAt, T data) {
+ this.expireAt = expireAt;
+ this.data = data;
+ }
+ }
+
}
diff --git a/rsf-server/src/main/resources/mapper/manager/LocItemMapper.xml b/rsf-server/src/main/resources/mapper/manager/LocItemMapper.xml
index ff677fc..6db3133 100644
--- a/rsf-server/src/main/resources/mapper/manager/LocItemMapper.xml
+++ b/rsf-server/src/main/resources/mapper/manager/LocItemMapper.xml
@@ -44,8 +44,9 @@
, GROUP_CONCAT(DISTINCT l.use_status ORDER BY l.use_status) AS locStatuses
</if>
FROM man_loc_item li
- INNER JOIN man_loc l ON l.id = li.loc_id
- WHERE li.matnr_id IN
+ INNER JOIN man_loc l ON l.id = li.loc_id AND (l.deleted = 0 OR l.deleted IS NULL)
+ WHERE li.deleted = 0
+ AND li.matnr_id IN
<foreach collection="matnrIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
--
Gitblit v1.9.1