Browse Source

给许多options接口加缓存,10s有效期,明天应该有起效。所以,有些东西,比如网格,小区,字典表,如果增加、删除、修改了数据,可能要过个几秒钟,接口中的新数据才会生效

dev
wangxianzhang 3 years ago
parent
commit
599b378e79
  1. 64
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/SysDictDataServiceImpl.java
  2. 129
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
  3. 17
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java
  4. 16
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java
  5. 26
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingServiceImpl.java
  6. 26
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingUnitServiceImpl.java
  7. 25
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java
  8. 21
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java

64
epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/SysDictDataServiceImpl.java

@ -8,6 +8,8 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -16,6 +18,8 @@ import com.epmet.commons.tools.dto.result.DictListResultDTO;
import com.epmet.commons.tools.dto.result.DictTreeResultDTO; import com.epmet.commons.tools.dto.result.DictTreeResultDTO;
import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.TreeUtils; import com.epmet.commons.tools.utils.TreeUtils;
import com.epmet.dao.SysDictDataDao; import com.epmet.dao.SysDictDataDao;
@ -23,6 +27,7 @@ import com.epmet.dto.SysDictDataDTO;
import com.epmet.entity.SysDictDataEntity; import com.epmet.entity.SysDictDataEntity;
import com.epmet.service.SysDictDataService; import com.epmet.service.SysDictDataService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -39,6 +44,9 @@ import java.util.stream.Collectors;
@Service @Service
public class SysDictDataServiceImpl extends BaseServiceImpl<SysDictDataDao, SysDictDataEntity> implements SysDictDataService { public class SysDictDataServiceImpl extends BaseServiceImpl<SysDictDataDao, SysDictDataEntity> implements SysDictDataService {
@Autowired
private RedisUtils redisUtils;
@Override @Override
public PageData<SysDictDataDTO> page(Map<String, Object> params) { public PageData<SysDictDataDTO> page(Map<String, Object> params) {
IPage<SysDictDataEntity> page = baseDao.selectPage( IPage<SysDictDataEntity> page = baseDao.selectPage(
@ -102,17 +110,26 @@ public class SysDictDataServiceImpl extends BaseServiceImpl<SysDictDataDao, SysD
*/ */
@Override @Override
public List<OptionResultDTO> getNineSmallPlacesOption() { public List<OptionResultDTO> getNineSmallPlacesOption() {
String cacheKey = RedisKeys.getNineSmallPlacesOptions();
List<OptionResultDTO> cachedDatas = JSON.parseObject(redisUtils.getString(cacheKey), new TypeReference<List<OptionResultDTO>>(){});
if (cachedDatas != null) {
return cachedDatas;
}
LambdaQueryWrapper<SysDictDataEntity> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysDictDataEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysDictDataEntity::getDictTypeId, 1000000000000000001L); wrapper.eq(SysDictDataEntity::getDictTypeId, 1000000000000000001L);
wrapper.orderByAsc(SysDictDataEntity::getSort); wrapper.orderByAsc(SysDictDataEntity::getSort);
List<SysDictDataEntity> list = baseDao.selectList(wrapper); List<SysDictDataEntity> list = baseDao.selectList(wrapper);
return list.stream().map(item -> { List<OptionResultDTO> datas = list.stream().map(item -> {
OptionResultDTO dto = new OptionResultDTO(); OptionResultDTO dto = new OptionResultDTO();
dto.setValue(item.getDictValue()); dto.setValue(item.getDictValue());
dto.setLabel(item.getDictLabel()); dto.setLabel(item.getDictLabel());
dto.setSysDictDataId(item.getId().toString()); dto.setSysDictDataId(item.getId().toString());
return dto; return dto;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
redisUtils.setString(cacheKey, JSON.toJSONString(datas), 10);
return datas;
} }
/** /**
@ -125,16 +142,25 @@ public class SysDictDataServiceImpl extends BaseServiceImpl<SysDictDataDao, SysD
*/ */
@Override @Override
public List<OptionResultDTO> getEducationOption() { public List<OptionResultDTO> getEducationOption() {
String cacheKey = RedisKeys.getEducationOptions();
List<OptionResultDTO> cachedDatas = JSON.parseObject(redisUtils.getString(cacheKey), new TypeReference<List<OptionResultDTO>>(){});
if (cachedDatas != null) {
return cachedDatas;
}
LambdaQueryWrapper<SysDictDataEntity> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysDictDataEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysDictDataEntity::getDictTypeId, 1000000000000000002L); wrapper.eq(SysDictDataEntity::getDictTypeId, 1000000000000000002L);
wrapper.orderByAsc(SysDictDataEntity::getSort); wrapper.orderByAsc(SysDictDataEntity::getSort);
List<SysDictDataEntity> list = baseDao.selectList(wrapper); List<SysDictDataEntity> list = baseDao.selectList(wrapper);
return list.stream().map(item -> { List<OptionResultDTO> datas = list.stream().map(item -> {
OptionResultDTO dto = new OptionResultDTO(); OptionResultDTO dto = new OptionResultDTO();
dto.setValue(item.getDictValue()); dto.setValue(item.getDictValue());
dto.setLabel(item.getDictLabel()); dto.setLabel(item.getDictLabel());
return dto; return dto;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
redisUtils.setString(cacheKey, JSON.toJSONString(datas), 10);
return datas;
} }
/** /**
@ -147,16 +173,25 @@ public class SysDictDataServiceImpl extends BaseServiceImpl<SysDictDataDao, SysD
*/ */
@Override @Override
public List<OptionResultDTO> getNationOption() { public List<OptionResultDTO> getNationOption() {
String cacheKey = RedisKeys.getEducationOptions();
List<OptionResultDTO> cachedDatas = JSON.parseObject(redisUtils.getString(cacheKey), new TypeReference<List<OptionResultDTO>>(){});
if (cachedDatas != null) {
return cachedDatas;
}
LambdaQueryWrapper<SysDictDataEntity> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysDictDataEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysDictDataEntity::getDictTypeId, 1000000000000000003L); wrapper.eq(SysDictDataEntity::getDictTypeId, 1000000000000000003L);
wrapper.orderByAsc(SysDictDataEntity::getSort); wrapper.orderByAsc(SysDictDataEntity::getSort);
List<SysDictDataEntity> list = baseDao.selectList(wrapper); List<SysDictDataEntity> list = baseDao.selectList(wrapper);
return list.stream().map(item -> { List<OptionResultDTO> datas = list.stream().map(item -> {
OptionResultDTO dto = new OptionResultDTO(); OptionResultDTO dto = new OptionResultDTO();
dto.setValue(item.getDictValue()); dto.setValue(item.getDictValue());
dto.setLabel(item.getDictLabel()); dto.setLabel(item.getDictLabel());
return dto; return dto;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
redisUtils.setString(cacheKey, JSON.toJSONString(datas), 10);
return datas;
} }
/** /**
@ -169,16 +204,25 @@ public class SysDictDataServiceImpl extends BaseServiceImpl<SysDictDataDao, SysD
*/ */
@Override @Override
public List<OptionResultDTO> getRelationshipOption() { public List<OptionResultDTO> getRelationshipOption() {
String cacheKey = RedisKeys.getRelationshipOptions();
List<OptionResultDTO> cachedDatas = JSON.parseObject(redisUtils.getString(cacheKey), new TypeReference<List<OptionResultDTO>>(){});
if (cachedDatas != null) {
return cachedDatas;
}
LambdaQueryWrapper<SysDictDataEntity> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysDictDataEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysDictDataEntity::getDictTypeId, 1000000000000000004L); wrapper.eq(SysDictDataEntity::getDictTypeId, 1000000000000000004L);
wrapper.orderByAsc(SysDictDataEntity::getSort); wrapper.orderByAsc(SysDictDataEntity::getSort);
List<SysDictDataEntity> list = baseDao.selectList(wrapper); List<SysDictDataEntity> list = baseDao.selectList(wrapper);
return list.stream().map(item -> { List<OptionResultDTO> datas = list.stream().map(item -> {
OptionResultDTO dto = new OptionResultDTO(); OptionResultDTO dto = new OptionResultDTO();
dto.setValue(item.getDictValue()); dto.setValue(item.getDictValue());
dto.setLabel(item.getDictLabel()); dto.setLabel(item.getDictLabel());
return dto; return dto;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
redisUtils.setString(cacheKey, JSON.toJSONString(datas), 10);
return datas;
} }
/** /**
@ -191,16 +235,26 @@ public class SysDictDataServiceImpl extends BaseServiceImpl<SysDictDataDao, SysD
*/ */
@Override @Override
public List<OptionResultDTO> getHouseOption() { public List<OptionResultDTO> getHouseOption() {
String cacheKey = RedisKeys.getHouseOptions();
List<OptionResultDTO> cachedDatas = JSON.parseObject(redisUtils.getString(cacheKey), new TypeReference<List<OptionResultDTO>>(){});
if (cachedDatas != null) {
return cachedDatas;
}
LambdaQueryWrapper<SysDictDataEntity> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysDictDataEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysDictDataEntity::getDictTypeId, 1000000000000000005L); wrapper.eq(SysDictDataEntity::getDictTypeId, 1000000000000000005L);
wrapper.orderByAsc(SysDictDataEntity::getSort); wrapper.orderByAsc(SysDictDataEntity::getSort);
List<SysDictDataEntity> list = baseDao.selectList(wrapper); List<SysDictDataEntity> list = baseDao.selectList(wrapper);
return list.stream().map(item -> { List<OptionResultDTO> datas = list.stream().map(item -> {
OptionResultDTO dto = new OptionResultDTO(); OptionResultDTO dto = new OptionResultDTO();
dto.setValue(item.getDictValue()); dto.setValue(item.getDictValue());
dto.setLabel(item.getDictLabel()); dto.setLabel(item.getDictLabel());
return dto; return dto;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
redisUtils.setString(cacheKey, JSON.toJSONString(datas), 10);
return datas;
} }
/** /**

129
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java

@ -922,4 +922,133 @@ public class RedisKeys {
public static String getOperExamineResourceUrls() { public static String getOperExamineResourceUrls() {
return rootPrefix.concat("oper:access:examineresources"); return rootPrefix.concat("oper:access:examineresources");
} }
/**
* 查询某个组织下的直属网格options
* @author wxz
* @date 2022/11/10 下午9:19
* @param agencyId
* @return String
*/
public static String getGridOptionsKey(String agencyId) {
return rootPrefix.concat("icform:options:grids:" + agencyId);
}
/**
* 查询某个小区下的楼栋列表
* @author wxz
* @date 2022/11/10 下午9:42
* @param neighborHoodId
* @return String
*/
public static String getBuildingOptionsKey(String neighborHoodId) {
return rootPrefix.concat("icform:options:buildings:" + neighborHoodId);
}
/**
* 查询某个楼栋下的单元
* @author wxz
* @date 2022/11/10 下午9:50
* @param buildingId
* @return String
*/
public static String getUnitOptionsKey(String buildingId) {
return rootPrefix.concat("icform:options:units:" + buildingId);
}
/**
* 房屋options选项
* @author wxz
* @date 2022/11/10 下午10:00
* @param buildingId
* @param unitId
* @return String
*/
public static String getHouseOptionsKey(String buildingId, String unitId) {
StringBuilder sb = new StringBuilder(rootPrefix.concat("icform:options:houses"));
if (StringUtils.isNotBlank(buildingId)) {
sb.append(":").append(buildingId);
}
if (StringUtils.isNotBlank(unitId)) {
sb.append(":").append(unitId);
}
return sb.toString();
}
/**
* 党支部options
* @author wxz
* @date 2022/11/10 下午10:52
* @param gridId
* @return String
*/
public static String getBranchOptionsKey(String gridId) {
return rootPrefix.concat("icform:options:branches:" + gridId);
}
/**
* 小区options
* @author wxz
* @date 2022/11/10 下午11:00
* @param agencyId
* @param gridId
* @return String
*/
public static String getNeighborhoodOptions(String agencyId, String gridId) {
StringBuilder sb = new StringBuilder(rootPrefix.concat("icform:options:neighborhoods:"));
if (StringUtils.isNotBlank(agencyId)) {
sb.append(agencyId);
}
if (StringUtils.isNotBlank(gridId)) {
sb.append(gridId);
}
return sb.toString();
}
/**
* 文化程度
* @author wxz
* @date 2022/11/10 下午11:04
* @return String
*/
public static String getEducationOptions() {
return rootPrefix.concat("icform:options:education");
}
/**
* 住房性质
* @author wxz
* @date 2022/11/10 下午11:07
* @return String
*/
public static String getHouseOptions() {
return rootPrefix.concat("icform:options:housetype");
}
/**
* 9小场所
* @author wxz
* @date 2022/11/10 下午11:10
* @return String
*/
public static String getNineSmallPlacesOptions() {
return rootPrefix.concat("icform:options:ninesmallplaces");
}
/**
* 人员关系
* @author wxz
* @date 2022/11/10 下午11:12
* @return String
*/
public static String getRelationshipOptions() {
return rootPrefix.concat("icform:options:relationship");
}
} }

17
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java

@ -10,6 +10,7 @@ package com.epmet.commons.tools.redis;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.ConvertUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
@ -482,4 +483,20 @@ public class RedisUtils {
redisTemplate.delete(keys); redisTemplate.delete(keys);
} }
} }
/**
* hash查询并且转化为对象
* @author wxz
* @date 2022/11/10 下午8:57
* @param key
* @param targetClass
* @return T
*/
public <T> T hGetAllAndConvertToBean(String key, Class<T> targetClass) {
Map<String, Object> map = hGetAll(key);
if (map != null && map.size() > 0) {
return ConvertUtils.sourceToTarget(map, targetClass);
}
return null;
}
} }

16
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java

@ -19,6 +19,7 @@ package com.epmet.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@ -939,6 +940,15 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
} }
return baseDao.getGridOptionForQuery(gridPids); return baseDao.getGridOptionForQuery(gridPids);
} }
// 优先查询缓存
String cachedKey = RedisKeys.getGridOptionsKey(agencyId);
List<OptionResultDTO> cachedDatas = JSON.parseObject(redisUtils.getString(cachedKey), new TypeReference<List<OptionResultDTO>>() {});
if (cachedDatas != null) {
return cachedDatas;
}
// 再查db
LambdaQueryWrapper<CustomerGridEntity> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<CustomerGridEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(CustomerGridEntity::getPid, agencyId); wrapper.eq(CustomerGridEntity::getPid, agencyId);
wrapper.last("ORDER BY sort,CONVERT ( GRID_NAME USING gbk ) desc"); wrapper.last("ORDER BY sort,CONVERT ( GRID_NAME USING gbk ) desc");
@ -946,13 +956,17 @@ public class CustomerGridServiceImpl extends BaseServiceImpl<CustomerGridDao, Cu
if (CollectionUtils.isEmpty(list)) { if (CollectionUtils.isEmpty(list)) {
return Collections.emptyList(); return Collections.emptyList();
} }
return list.stream().map(item -> { List<OptionResultDTO> grids = list.stream().map(item -> {
OptionResultDTO dto = new OptionResultDTO(); OptionResultDTO dto = new OptionResultDTO();
dto.setLabel(item.getGridName()); dto.setLabel(item.getGridName());
dto.setValue(item.getId()); dto.setValue(item.getId());
dto.setPid(item.getPid()); dto.setPid(item.getPid());
return dto; return dto;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
//加入缓存(10秒有效期),并且返回数据
redisUtils.setString(cachedKey, JSON.toJSONString(grids), 10);
return grids;
} }
/** /**

26
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingServiceImpl.java

@ -17,6 +17,8 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -24,6 +26,8 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.IcBuildingDao; import com.epmet.dao.IcBuildingDao;
@ -35,6 +39,7 @@ import com.epmet.service.IcBuildingService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -54,6 +59,8 @@ import java.util.stream.Collectors;
@Service @Service
public class IcBuildingServiceImpl extends BaseServiceImpl<IcBuildingDao, IcBuildingEntity> implements IcBuildingService { public class IcBuildingServiceImpl extends BaseServiceImpl<IcBuildingDao, IcBuildingEntity> implements IcBuildingService {
@Autowired
private RedisUtils redisUtils;
@Override @Override
public PageData<IcBuildingDTO> page(Map<String, Object> params) { public PageData<IcBuildingDTO> page(Map<String, Object> params) {
@ -121,6 +128,16 @@ public class IcBuildingServiceImpl extends BaseServiceImpl<IcBuildingDao, IcBuil
log.warn("小区ID为空"); log.warn("小区ID为空");
return Collections.emptyList(); return Collections.emptyList();
} }
// 1.差缓存
String cachedKey = RedisKeys.getBuildingOptionsKey(neighborHoodId);
List<OptionResultDTO> cachedBuildings = JSON.parseObject(redisUtils.getString(cachedKey), new TypeReference<List<OptionResultDTO>>() {
});
if (cachedBuildings != null) {
// 即便是查询到了[]空列表,也要返回,说明该小区下没有漏洞
return cachedBuildings;
}
LambdaQueryWrapper<IcBuildingEntity> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<IcBuildingEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(IcBuildingEntity::getNeighborHoodId, neighborHoodId); wrapper.eq(IcBuildingEntity::getNeighborHoodId, neighborHoodId);
wrapper.last("ORDER BY SORT ASC, BUILDING_NAME+0 ASC"); wrapper.last("ORDER BY SORT ASC, BUILDING_NAME+0 ASC");
@ -128,12 +145,19 @@ public class IcBuildingServiceImpl extends BaseServiceImpl<IcBuildingDao, IcBuil
if(CollectionUtils.isEmpty(list)) { if(CollectionUtils.isEmpty(list)) {
return Collections.emptyList(); return Collections.emptyList();
} }
return list.stream().map(item -> { List<OptionResultDTO> gridsFromDb = list.stream().map(item -> {
OptionResultDTO dto = new OptionResultDTO(); OptionResultDTO dto = new OptionResultDTO();
dto.setValue(item.getId()); dto.setValue(item.getId());
dto.setLabel(item.getBuildingName()); dto.setLabel(item.getBuildingName());
return dto; return dto;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
if (gridsFromDb != null) {
// 设置缓存
redisUtils.setString(cachedKey, JSON.toJSONString(gridsFromDb), 10);
}
return gridsFromDb;
} }
/** /**

26
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingUnitServiceImpl.java

@ -17,6 +17,8 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -24,6 +26,8 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.IcBuildingUnitDao; import com.epmet.dao.IcBuildingUnitDao;
@ -35,6 +39,7 @@ import com.epmet.service.IcBuildingUnitService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -54,6 +59,8 @@ import java.util.stream.Collectors;
@Service @Service
public class IcBuildingUnitServiceImpl extends BaseServiceImpl<IcBuildingUnitDao, IcBuildingUnitEntity> implements IcBuildingUnitService { public class IcBuildingUnitServiceImpl extends BaseServiceImpl<IcBuildingUnitDao, IcBuildingUnitEntity> implements IcBuildingUnitService {
@Autowired
private RedisUtils redisUtils;
@Override @Override
public PageData<IcBuildingUnitDTO> page(Map<String, Object> params) { public PageData<IcBuildingUnitDTO> page(Map<String, Object> params) {
@ -121,6 +128,17 @@ public class IcBuildingUnitServiceImpl extends BaseServiceImpl<IcBuildingUnitDao
log.warn("楼栋ID为空"); log.warn("楼栋ID为空");
return Collections.emptyList(); return Collections.emptyList();
} }
// 先差缓存
String cachedKey = RedisKeys.getUnitOptionsKey(buildingId);
List<OptionResultDTO> cachedUnits = JSON.parseObject(redisUtils.getString(cachedKey), new TypeReference<List<OptionResultDTO>>() {
});
if (cachedUnits != null) {
return cachedUnits;
}
LambdaQueryWrapper<IcBuildingUnitEntity> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<IcBuildingUnitEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(IcBuildingUnitEntity::getBuildingId, buildingId); wrapper.eq(IcBuildingUnitEntity::getBuildingId, buildingId);
wrapper.last("ORDER BY CONVERT ( UNIT_NAME USING gbk ) ASC"); wrapper.last("ORDER BY CONVERT ( UNIT_NAME USING gbk ) ASC");
@ -128,13 +146,19 @@ public class IcBuildingUnitServiceImpl extends BaseServiceImpl<IcBuildingUnitDao
if(CollectionUtils.isEmpty(list)) { if(CollectionUtils.isEmpty(list)) {
return Collections.emptyList(); return Collections.emptyList();
} }
return list.stream().map(item -> { List<OptionResultDTO> units = list.stream().map(item -> {
OptionResultDTO dto = new OptionResultDTO(); OptionResultDTO dto = new OptionResultDTO();
dto.setValue(item.getId()); dto.setValue(item.getId());
dto.setCode(item.getUnitNum()); dto.setCode(item.getUnitNum());
dto.setLabel(item.getUnitName()); dto.setLabel(item.getUnitName());
return dto; return dto;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
if (units != null) {
redisUtils.setString(cachedKey, JSON.toJSONString(units), 10);
}
return units;
} }
/** /**

25
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java

@ -1,5 +1,7 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
@ -11,6 +13,8 @@ import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.redis.common.CustomerIcHouseRedis; import com.epmet.commons.tools.redis.common.CustomerIcHouseRedis;
import com.epmet.commons.tools.redis.common.CustomerResiUserRedis; import com.epmet.commons.tools.redis.common.CustomerResiUserRedis;
import com.epmet.commons.tools.redis.common.bean.HouseInfoCache; import com.epmet.commons.tools.redis.common.bean.HouseInfoCache;
@ -84,6 +88,8 @@ public class IcHouseServiceImpl extends BaseServiceImpl<IcHouseDao, IcHouseEntit
private IcBuildingUnitDao buildingUnitDao; private IcBuildingUnitDao buildingUnitDao;
@Autowired @Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Autowired
private RedisUtils redisUtils;
@Override @Override
public IcHouseDTO get(String id) { public IcHouseDTO get(String id) {
@ -134,6 +140,17 @@ public class IcHouseServiceImpl extends BaseServiceImpl<IcHouseDao, IcHouseEntit
log.warn("楼栋和单元ID为空"); log.warn("楼栋和单元ID为空");
return Collections.emptyList(); return Collections.emptyList();
} }
// 查缓存
String cachedKey = RedisKeys.getHouseOptionsKey(formDTO.getBuildingId(), formDTO.getUnitId());
List<OptionResultDTO> cachedHouses = JSON.parseObject(redisUtils.getString(cachedKey), new TypeReference<List<OptionResultDTO>>() {
});
if (cachedHouses != null) {
return cachedHouses;
}
// 查db
LambdaQueryWrapper<IcHouseEntity> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<IcHouseEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(formDTO.getBuildingId()), IcHouseEntity::getBuildingId, formDTO.getBuildingId()); wrapper.eq(StringUtils.isNotBlank(formDTO.getBuildingId()), IcHouseEntity::getBuildingId, formDTO.getBuildingId());
wrapper.eq(StringUtils.isNotBlank(formDTO.getUnitId()), IcHouseEntity::getBuildingUnitId, formDTO.getUnitId()); wrapper.eq(StringUtils.isNotBlank(formDTO.getUnitId()), IcHouseEntity::getBuildingUnitId, formDTO.getUnitId());
@ -142,13 +159,19 @@ public class IcHouseServiceImpl extends BaseServiceImpl<IcHouseDao, IcHouseEntit
if (CollectionUtils.isEmpty(list)) { if (CollectionUtils.isEmpty(list)) {
return Collections.emptyList(); return Collections.emptyList();
} }
return list.stream().map(item -> { List<OptionResultDTO> houses = list.stream().map(item -> {
OptionResultDTO dto = new OptionResultDTO(); OptionResultDTO dto = new OptionResultDTO();
dto.setValue(item.getId()); dto.setValue(item.getId());
dto.setLabel(item.getDoorName()); dto.setLabel(item.getDoorName());
dto.setType(item.getRentFlag().toString()); dto.setType(item.getRentFlag().toString());
return dto; return dto;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
if (houses != null) {
redisUtils.setString(cachedKey, JSON.toJSONString(houses), 10);
}
return houses;
} }
/** /**

21
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java

@ -23,6 +23,7 @@ import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader; import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.read.metadata.ReadSheet; import com.alibaba.excel.read.metadata.ReadSheet;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -37,6 +38,8 @@ import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
@ -123,6 +126,8 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
private IcBuildingUnitDao icBuildingUnitDao; private IcBuildingUnitDao icBuildingUnitDao;
@Autowired @Autowired
private IcHouseDao icHouseDao; private IcHouseDao icHouseDao;
@Autowired
private RedisUtils redisUtils;
@Override @Override
public PageData<IcNeighborHoodDTO> page(Map<String, Object> params) { public PageData<IcNeighborHoodDTO> page(Map<String, Object> params) {
@ -195,6 +200,17 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
} }
agencyId=result.getAgencyId(); agencyId=result.getAgencyId();
} }
// 查缓存
String cacheKey = RedisKeys.getNeighborhoodOptions(agencyId, gridId);
List<OptionResultDTO> cachedKeys = JSON.parseObject(redisUtils.getString(cacheKey), new TypeReference<List<OptionResultDTO>>() {
});
if (cachedKeys != null) {
return cachedKeys;
}
LambdaQueryWrapper<IcNeighborHoodEntity> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<IcNeighborHoodEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(agencyId),IcNeighborHoodEntity::getAgencyId, agencyId); wrapper.eq(StringUtils.isNotBlank(agencyId),IcNeighborHoodEntity::getAgencyId, agencyId);
wrapper.eq(StringUtils.isNotBlank(gridId), IcNeighborHoodEntity::getGridId, gridId); wrapper.eq(StringUtils.isNotBlank(gridId), IcNeighborHoodEntity::getGridId, gridId);
@ -203,12 +219,15 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
if(CollectionUtils.isEmpty(list)) { if(CollectionUtils.isEmpty(list)) {
return Collections.emptyList(); return Collections.emptyList();
} }
return list.stream().map(item -> { List<OptionResultDTO> datas = list.stream().map(item -> {
OptionResultDTO dto = new OptionResultDTO(); OptionResultDTO dto = new OptionResultDTO();
dto.setValue(item.getId()); dto.setValue(item.getId());
dto.setLabel(item.getNeighborHoodName()); dto.setLabel(item.getNeighborHoodName());
return dto; return dto;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
redisUtils.setString(cacheKey, JSON.toJSONString(datas), 10);
return datas;
} }
public List<BuildingResultDTO> getNeighborhoodList(TokenDto tokenDto, IcNeighborHoodDTO dto) { public List<BuildingResultDTO> getNeighborhoodList(TokenDto tokenDto, IcNeighborHoodDTO dto) {

Loading…
Cancel
Save