Browse Source

fix: 解决大sql 分片区域1

shc 11 months ago
parent
commit
038d5abef6

+ 3 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysEnterpriseAreaServiceImpl.java

@@ -15,6 +15,7 @@ import java.time.LocalDateTime;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -94,7 +95,8 @@ public class SysEnterpriseAreaServiceImpl extends ServiceImpl<SysEnterpriseAreaM
 
     @Override
     public List<Long> listAreaEnts(List<Long> areas) {
-        return this.list(Wrappers.<SysEnterpriseArea>lambdaQuery().in(SysEnterpriseArea::getAreaId, areas)).stream().map(SysEnterpriseArea::getEntId).collect(Collectors.toList());
+        Set<Long> collect = areas.stream().collect(Collectors.toSet());
+        return this.list(Wrappers.<SysEnterpriseArea>lambdaQuery().in(SysEnterpriseArea::getAreaId, collect)).stream().map(SysEnterpriseArea::getEntId).collect(Collectors.toList());
     }
 }
 

+ 6 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaAgentServiceImpl.java

@@ -49,6 +49,7 @@ import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.data.datascope.DataScope;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
@@ -71,6 +72,7 @@ import java.util.stream.Collectors;
  * @author gaoyanng
  * @date 2020-06-25 23:35:42
  */
+@Slf4j
 @Service
 @AllArgsConstructor
 public class WmDaAgentServiceImpl extends ServiceImpl<WmDaAgentMapper, WmDaAgent> implements WmDaAgentService {
@@ -235,8 +237,11 @@ public class WmDaAgentServiceImpl extends ServiceImpl<WmDaAgentMapper, WmDaAgent
             areaIds = sysUserAreaService.listUserAreas(Long.valueOf(SecurityUtils.getUser().getId()));
         }
 
+
         List<Long> ents = enterpriseAreaService.listAreaEnts(areaIds);
-        wmDaAgent.setEntIds(ents);
+        List<Long> collect = new ArrayList<>(new HashSet<>(ents));
+        log.info("total: {} to {}", ents.size(), collect.size());
+        wmDaAgent.setEntIds(collect);
 
 
         wmDaAgentMapper.selectWmManagementPage(page, wmDaAgent);