diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/ThreadDispatcherConfig.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/ThreadDispatcherConfig.java new file mode 100644 index 0000000000..1b2d32c2cc --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/ThreadDispatcherConfig.java @@ -0,0 +1,39 @@ +/** + * Copyright (c) 2018 人人开源 All rights reserved. + *

+ * https://www.renren.io + *

+ * 版权所有,侵权必究! + */ + +package com.epmet.commons.tools.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.filter.RequestContextFilter; +import org.springframework.web.servlet.DispatcherServlet; + +import javax.annotation.PostConstruct; + + +/** + * DESC:设置线程继承属性为true,便于子线程获取到父线程的request,两个都设置为了保险 + * + * @author Mark sunlightcs@gmail.com + * @since 1.0.0 + */ +@Configuration +public class ThreadDispatcherConfig { + + @Autowired + RequestContextFilter requestContextFilter; + @Autowired + DispatcherServlet dispatcherServlet; + + @PostConstruct + public void init() { + // 设置线程继承属性为true,便于子线程获取到父线程的request,两个都设置为了保险。 + requestContextFilter.setThreadContextInheritable(true); + dispatcherServlet.setThreadContextInheritable(true); + } +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java index 400e3893e4..77875d5415 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java @@ -171,4 +171,7 @@ public interface Constant { * 被禁用标识 * */ String DISABLE = "disable"; + + String OPITON_SOURCE_REMOTE = "remote"; + String OPITON_SOURCE_LOCAL = "local"; } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java index 67f467f63c..62d9fef763 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java @@ -107,4 +107,7 @@ public interface StrConstant { * 积分规则修改的头 */ String POINT_CHANGE_HEAD = "修改了%s规则,"; + + String YES = "是"; + String NO = "否"; } diff --git a/epmet-gateway/src/main/java/com/epmet/GatewayApplication.java b/epmet-gateway/src/main/java/com/epmet/GatewayApplication.java index a1630c821e..064b59610e 100644 --- a/epmet-gateway/src/main/java/com/epmet/GatewayApplication.java +++ b/epmet-gateway/src/main/java/com/epmet/GatewayApplication.java @@ -10,6 +10,7 @@ package com.epmet; import com.epmet.commons.tools.aspect.ServletExceptionHandler; import com.epmet.commons.tools.config.RedissonConfig; +import com.epmet.commons.tools.config.ThreadDispatcherConfig; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @@ -27,7 +28,7 @@ import org.springframework.context.annotation.FilterType; @EnableDiscoveryClient @EnableFeignClients //@ServletComponentScan -@ComponentScan(basePackages = {"com.epmet.*"}, excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {RedissonConfig.class, ServletExceptionHandler.class})) +@ComponentScan(basePackages = {"com.epmet.*"}, excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {RedissonConfig.class, ThreadDispatcherConfig.class, ServletExceptionHandler.class})) public class GatewayApplication { public static void main(String[] args) { diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiExportBaseInfoData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiExportBaseInfoData.java new file mode 100644 index 0000000000..5dc0d0b7c5 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiExportBaseInfoData.java @@ -0,0 +1,27 @@ +package com.epmet.bean; + +import lombok.Data; + +import java.io.Serializable; + +/** + * desc:导出居民信息 基础信息 给其他sheet使用 + */ +@Data +public class ResiExportBaseInfoData implements Serializable { + private static final long serialVersionUID = 1L; + + private String GRID_ID; + private String VILLAGE_ID; + private String BUILD_ID; + private String UNIT_ID; + private String HOME_ID; + private String IS_BDHJ; + private String NAME; + private String MOBILE; + private String GENDER; + private String ID_CARD; + private String BIRTHDAY; + private String CONTACTS; + private String CONTACTS_MOBILE; +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 7624198dfb..67c1aabd7e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -24,6 +24,7 @@ import com.alibaba.excel.write.metadata.fill.FillWrapper; import com.epmet.commons.rocketmq.messages.IcResiUserAddMQMsg; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.constant.Constant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; @@ -301,6 +302,7 @@ public class IcResiUserController { @RequestMapping(value = "/exportExcel") public void exportExcelByEasyExcel(@RequestHeader String customerId,@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception { //tokenDto.setUserId("9e37adcce6472152e6508a19d3683e02"); + long startM = System.currentTimeMillis(); CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(customerId, tokenDto.getUserId()); String staffOrgPath = null; if (StringUtils.isNotBlank(staffInfoCacheResult.getAgencyPIds()) && !NumConstant.ZERO_STR.equals(staffInfoCacheResult.getAgencyPIds())) { @@ -330,7 +332,7 @@ public class IcResiUserController { map.putIfAbsent(tableName,exportItem); String columnName = item.getColumnName().concat(item.getColumnNum() == NumConstant.ZERO ? StrConstant.EPMETY_STR : item.getColumnNum().toString()); exportItem.getItemMap().put(columnName,item); - if (item.getOptionSourceType().equals("remote")&&item.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)){ + if (Constant.OPITON_SOURCE_REMOTE.equals(item.getOptionSourceType())&&item.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)){ //多个参数 String[] paramArr = item.getOptionSourceValue().split(StrConstant.QUESTION_MARK_TRANSFER)[NumConstant.ONE].split(StrConstant.AND_MARK); Arrays.stream(paramArr).forEach(o->{ @@ -354,7 +356,7 @@ public class IcResiUserController { .collect(Collectors.toList()); List> resiResultList = null; - pageFormDTO.setPageSize(NumConstant.TEN_THOUSAND); + pageFormDTO.setPageSize(NumConstant.ONE_THOUSAND); for (IcResiUserTableEnum tableEnum : resiTableList) { String tableName = tableEnum.getTableName(); pageFormDTO.setPageNo(NumConstant.ONE); @@ -382,6 +384,7 @@ public class IcResiUserController { if (excelWriter != null){ excelWriter.finish(); } + log.info("exportExcelByEasyExcel resi info cost time:{}s",(System.currentTimeMillis()-startM)/NumConstant.ONE_THOUSAND); } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java index bc3e9f147a..d152fc3776 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java @@ -27,6 +27,7 @@ import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.List; import java.util.Map; import java.util.Set; @@ -65,109 +66,111 @@ public interface IcResiUserDao extends BaseDao { * 查询主表 * * @param icResiUserId - * @return java.util.List> + * @return java.util.List> * @author yinzuomei * @date 2021/10/28 11:20 上午 */ List> selectListMapById(@Param("customerId") String customerId, - @Param("icResiUserId")String icResiUserId); + @Param("icResiUserId") String icResiUserId); /** * 根据ic_resi_user.id去查询各个子表记录,动态传入表名 * * @param icResiUserId * @param subTableName - * @return java.util.List> + * @return java.util.List> * @author yinzuomei * @date 2021/10/28 11:19 上午 */ - List> selectSubTableRecords(@Param("customerId")String customerId, + List> selectSubTableRecords(@Param("customerId") String customerId, @Param("icResiUserId") String icResiUserId, @Param("subTableName") String subTableName); int updateToDel(String icResiUserId); - int updateSubTableToDel(@Param("subTalbeName") String subTalbeName, @Param("icResiUserId")String icResiUserId); + int updateSubTableToDel(@Param("subTalbeName") String subTalbeName, @Param("icResiUserId") String icResiUserId); /** * 接口名称 * - * @param customerId 客户id + * @param customerId 客户id * @param resultTableName 获取哪个表的数据??? - * @param conditions 前端传入的查询入参 - * @return java.util.List> + * @param conditions 前端传入的查询入参 + * @return java.util.List> * @author yinzuomei * @date 2021/11/2 10:35 上午 */ - List> dynamicQuery(@Param("customerId")String customerId, - @Param("resultTableName")String resultTableName, - @Param("conditions") List conditions, - @Param("subTables") List subTables, - @Param("currentStaffAgencyId")String currentStaffAgencyId, - @Param("staffOrgPath")String staffOrgPath); + List> dynamicQuery(@Param("customerId") String customerId, + @Param("resultTableName") String resultTableName, + @Param("conditions") List conditions, + @Param("subTables") List subTables, + @Param("currentStaffAgencyId") String currentStaffAgencyId, + @Param("staffOrgPath") String staffOrgPath); /** - * @Description 查询个人信息 * @param userId + * @Description 查询个人信息 * @author zxc * @date 2021/11/3 10:28 上午 */ PersonDataResultDTO personData(@Param("userId") String userId); /** - * @Description 根据名字,组织查询人 * @param name * @param agencyId + * @Description 根据名字,组织查询人 * @author zxc * @date 2021/11/3 2:05 下午 */ - List searchByName(@Param("name")String name, @Param("agencyId")String agencyId,@Param("pageNo")Integer pageNo); + List searchByName(@Param("name") String name, @Param("agencyId") String agencyId, @Param("pageNo") Integer pageNo); Set selectUserDemandCode(String icResiUserId); - String selectCategoryNames(@Param("customerId") String customerId,@Param("codeSet") Set codeSet); + + String selectCategoryNames(@Param("customerId") String customerId, @Param("codeSet") Set codeSet); @MapKey("HOME_ID") Map> getHomeUserCategoryCount(@Param("buildId") String buildId); /** - * @Description 根据userId查询志愿者 * @param userId + * @Description 根据userId查询志愿者 * @author zxc * @date 2021/11/5 5:44 下午 */ - List selectVolunteerByUserId(@Param("userId")String userId); + List selectVolunteerByUserId(@Param("userId") String userId); /** - * @Description 查询人员类别 * @param columns + * @Description 查询人员类别 * @author zxc * @date 2021/11/8 1:50 下午 */ - Map selectPersonType(@Param("columns")List columns,@Param("customerId")String customerId, - @Param("tableName")String tableName,@Param("userId")String userId); + Map selectPersonType(@Param("columns") List columns, @Param("customerId") String customerId, + @Param("tableName") String tableName, @Param("userId") String userId); /** * @Author sun * @Description 查询居民信息 **/ IcResiUserDTO getResiUser(IcResiUserDTO dto); + /** - * * @param agencyId * @param gridId * @param name * @return */ List selectDemandUsers(@Param("agencyId") String agencyId, - @Param("gridId")String gridId, - @Param("name")String name); + @Param("gridId") String gridId, + @Param("name") String name); - IcResiUserDTO selectIdByIdCard(@Param("customerId") String customerId, - @Param("idNum")String idNum, - @Param("icResiUserId")String icResiUserId); + IcResiUserDTO selectIdByIdCard(@Param("customerId") String customerId, + @Param("idNum") String idNum, + @Param("icResiUserId") String icResiUserId); /** * 获取居民名称,家属名称和id + * * @param isResiUserId * @return */ @@ -184,6 +187,7 @@ public interface IcResiUserDao extends BaseDao { /** * 组织内党员年龄范围统计 + * * @Param orgType * @Param orgId * @Return {@link List< OptionDataResultDTO>} @@ -194,6 +198,7 @@ public interface IcResiUserDao extends BaseDao { /** * 获取年龄范围内党员列表 + * * @Param orgType * @Param orgId * @Param min @@ -208,6 +213,7 @@ public interface IcResiUserDao extends BaseDao { /** * 党员文化程度统计 + * * @Param orgType * @Param orgId * @Return {@link List< OptionDataResultDTO>} @@ -218,6 +224,7 @@ public interface IcResiUserDao extends BaseDao { /** * 按教育程度获取党员列表 + * * @Param orgType * @Param orgId * @Param code @@ -226,7 +233,7 @@ public interface IcResiUserDao extends BaseDao { * @Date 2021/12/10 17:24 */ List getPartyMemberEducationList(@Param("orgType") String orgType, @Param("orgId") String orgId, - @Param("code") String code); + @Param("code") String code); List listIcResiInfosByUserIds(@Param("userIds") List userIds); @@ -239,4 +246,19 @@ public interface IcResiUserDao extends BaseDao { List icUserCustomerIds(); List> getIcUserList(@Param("customerId") String customerId, @Param("columns")List columns); + + /** + * desc: 获取数据分析列中的 各类居民数据 + * + * @param customerId + * @param tableName + * @param columnList + * @param id 非必填 leve有值时 必填 + * @param level 非必填 + * @return java.util.Map 字段名:数量 + * @author LiuJanJun + * @date 2022/2/12 3:03 下午 + */ + Map getDataAnalyseCount(@Param("customerId") String customerId, @Param("tableName") String tableName, + @Param("columnList") List columnList, @Param("id") String id, @Param("level") String level); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcStatsResiWarnDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcStatsResiWarnDao.java index 610eeba0a0..0a46c4bc06 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcStatsResiWarnDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcStatsResiWarnDao.java @@ -48,7 +48,7 @@ public interface IcStatsResiWarnDao extends BaseDao { @Param("buildingIdList") List buildingIdList, @Param("tableName") String tableName, @Param("columnName") String columnName); - + @Deprecated Integer countListByLevelAndCol( @Param("customerId") String customerId, @Param("tableName") String tableName, diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 40b6d3b5bc..348766de19 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -15,6 +15,7 @@ import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.feign.ResultDataResolver; @@ -516,7 +517,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } catch (Exception e) { String errorMsg; - if (e instanceof RenException) { + if (e instanceof RenException | e instanceof EpmetException) { errorMsg = e.getMessage(); } else { errorMsg = "未知系统错误"; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index 34aa78df40..f912200041 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -20,11 +20,9 @@ package com.epmet.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.epmet.bean.ResiExportBaseInfoData; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; -import com.epmet.commons.tools.constant.FieldConstant; -import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.constant.ServiceConstant; -import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.constant.*; import com.epmet.commons.tools.dto.form.DictListFormDTO; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.DictListResultDTO; @@ -69,6 +67,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -77,6 +76,8 @@ import java.math.RoundingMode; import java.sql.Date; import java.sql.Timestamp; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; import java.util.function.Function; import java.util.stream.Collectors; @@ -114,6 +115,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl getWrapper(Map params){ String id = (String)params.get(FieldConstant.ID_HUMP); @@ -881,7 +884,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> mapListPage = PageHelper.startPage(pageFormDTO.getPageNo(), pageFormDTO.getPageSize(), pageFormDTO.getPageFlag()).doSelectPage(() -> { this.dynamicQuery(pageFormDTO.getCustomerId(), pageFormDTO.getFormCode(), baseTableName, pageFormDTO.getConditions(), currentStaffAgencyId, staffOrgPath); }); - mapListPage.getResult().stream().filter(Objects::nonNull).forEach(resiUser -> { + mapListPage.getResult().parallelStream().filter(Objects::nonNull).forEach(resiUser -> { String resiId = null; //获取用户Id if (IcResiUserConstant.IC_RESI_USER.equals(baseTableName)) { @@ -905,28 +908,33 @@ public class IcResiUserServiceImpl extends BaseServiceImpl originalConditionMap = new HashMap<>(); - for (FormItemResult e : formItemMap.getItemMap().values()) { + Map originalConditionMap = new ConcurrentHashMap<>(); + formItemMap.getItemMap().values().parallelStream().forEach(e->{ String columnName = getColumnName(e); Object temp = resiUser.get(columnName); String vauleStr = temp == null ? StrConstant.EPMETY_STR : temp.toString(); originalConditionMap.putIfAbsent(columnName,vauleStr); - if ("remote".equals(e.getOptionSourceType()) && StringUtils.isNotBlank(vauleStr)) { + if (Constant.OPITON_SOURCE_REMOTE.equals(e.getOptionSourceType()) && StringUtils.isNotBlank(vauleStr)) { putRemoteValue(formItemMap.getRemoteItemConditionMap().get(e.getItemId()), currentStaffAgencyId, resiUser,originalConditionMap, e, columnName, vauleStr); } else { putOptionValue(resiUser, e, columnName, vauleStr); } + }); - } - if (!IcResiUserConstant.IC_RESI_USER.equals(baseTableName)) { - Map o = redisUtils.hGetAll(RedisKeys.getExportResiBaseInfoKey(resiId)); - if (o != null){ - resiUser.putAll(o); + if (IcResiUserConstant.IC_RESI_USER.equals(baseTableName)) { + //把人放入redis缓存 便于后面的sheet使用基础信息 + ResiExportBaseInfoData infoData = ConvertUtils.mapToEntity(resiUser, ResiExportBaseInfoData.class); + redisTemplate.opsForValue().set(RedisKeys.getExportResiBaseInfoKey(resiId), infoData,RedisUtils.MINUTE_THIRTY_EXPIRE, TimeUnit.SECONDS); + } else { + ResiExportBaseInfoData temp = (ResiExportBaseInfoData) redisTemplate.opsForValue().get(RedisKeys.getExportResiBaseInfoKey(resiId)); + if (temp != null){ + try { + resiUser.putAll(ConvertUtils.entityToMap(temp)); + } catch (Exception e) { + log.error("entityToMap exception,temp:{}",temp); + } } - return; } - //把人放入redis缓存 便于后面的sheet使用基础信息 - redisUtils.hMSet(RedisKeys.getExportResiBaseInfoKey(resiId),resiUser,RedisUtils.MINUTE_THIRTY_EXPIRE); }); remoteOptionCacheMap.clear(); return mapListPage.getResult(); @@ -966,7 +974,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl remoteOptions = icResiUserImportService.listRemoteOptions(parts[0], parts[1], columnWrappers, currentStaffAgencyId, "query"); if (FormItemTypeEnum.CHECKBOX.getCode().equals(e.getItemType())) { - remoteOptions.forEach((label, value) -> map.put(value, vauleStr.contains(value) ? "是" : "否")); + remoteOptions.forEach((label, value) -> map.put(value, vauleStr.contains(value) ? StrConstant.YES : StrConstant.NO)); } else if (FormItemTypeEnum.SELECT.getCode().equals(e.getItemType())) { remoteOptions.forEach((label, value) -> { if (vauleStr.equals(value)) { @@ -986,7 +994,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl { - map.put(optionDTO.getValue(), vauleStr.contains(optionDTO.getValue()) ? "是" : "否"); + map.put(optionDTO.getValue(), vauleStr.contains(optionDTO.getValue()) ? StrConstant.YES : StrConstant.NO); }); break; case SELECT: diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java index 5178ecbd3a..c6b33e482b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java @@ -27,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -189,6 +190,20 @@ public class StatsResiWarnServiceImpl implements StatsResiWarnService { List icResiCategoryStatsConfigDTOList = statsResult.getData(); //获取tableName 和columnName List result = new ArrayList<>(); + //tableName List + Map> paramMap = new HashMap<>(); + icResiCategoryStatsConfigDTOList.forEach(config->{ + List list = paramMap.getOrDefault(config.getTableName(), new ArrayList<>()); + list.add(config.getColumnName()); + paramMap.put(config.getTableName(),list); + }); + Map> tableColumnCountMap = new HashMap<>(); + paramMap.forEach((tableName,columnList) ->{ + Map countMap = icResiUserDao.getDataAnalyseCount(customerId,tableName,columnList, id,level); + if (countMap != null){ + tableColumnCountMap.put(tableName,countMap); + } + }); icResiCategoryStatsConfigDTOList.forEach(item->{ IcStatsResiResultDTO resultDTO = new IcStatsResiResultDTO(); resultDTO.setId(item.getId()); @@ -197,8 +212,9 @@ public class StatsResiWarnServiceImpl implements StatsResiWarnService { resultDTO.setHouseShowIcon(item.getHouseShowIcon()); resultDTO.setManagementIcon(item.getManagementIcon()); //根据id ,level 获取count - Integer count = icStatsResiWarnDao.countListByLevelAndCol(customerId,item.getTableName(),item.getColumnName(),id,level); - resultDTO.setCount(count); + //Integer count = icStatsResiWarnDao.countListByLevelAndCol(customerId,item.getTableName(),item.getColumnName(),id,level); + Map orDefault = tableColumnCountMap.getOrDefault(item.getTableName(), new HashMap<>()); + resultDTO.setCount(orDefault.getOrDefault(item.getColumnName(), NumConstant.ZERO_DECIMAL).intValue()); result.add(resultDTO); }); return result; diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index 14feeb27b8..28396dd34e 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml @@ -594,4 +594,34 @@ ORDER BY iru.created_time ASC +