From 85a033430c45d2259aeac52d28a1ca7d2cc4d609 Mon Sep 17 00:00:00 2001 From: yang chen Date: Tue, 2 Dec 2025 23:03:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(biz):=20=E5=AE=9E=E7=8E=B0=E6=A5=BC?= =?UTF-8?q?=E5=AE=87=E6=95=B0=E6=8D=AE=E5=AE=9A=E6=97=B6=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增阿里巴巴楼宇数据定时任务类 AlibabaBuildingJob - 实现楼宇数据批量保存接口 saveBatch - 添加楼宇实体状态字段及对应逻辑处理 - 完善楼宇数据转换器 LcBuildingEntityConvert - 提供根据楼宇编号查询方法 selectByBuildingId - 设置分页参数默认值以适应大数据量场景 - 增加租户任务注解支持多租户环境执行 - 日志记录保存结果和数据条数信息 --- .../biz/convert/LcBuildingEntityConvert.java | 8 ++--- .../biz/dto/PowerEnvBuildingParamsDTO.java | 4 +-- .../module/biz/entity/LcBuildingEntity.java | 5 +++ .../module/biz/job/AlibabaBuildingJob.java | 34 ++++++++++++++++++- .../module/biz/mapper/LcBuildingMapper.java | 12 +++++++ .../biz/service/ILcBuildingService.java | 12 +++++++ .../service/impl/LcBuildingServiceImpl.java | 25 ++++++++++++++ 7 files changed, 93 insertions(+), 7 deletions(-) diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/convert/LcBuildingEntityConvert.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/convert/LcBuildingEntityConvert.java index 4d209a7..e7708ae 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/convert/LcBuildingEntityConvert.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/convert/LcBuildingEntityConvert.java @@ -34,11 +34,11 @@ public interface LcBuildingEntityConvert { LcBuildingEntity convert(PowerEnvBuildingItemDTO bean); /** - * 将 LcBuildingEntity 列表转换为 PowerEnvBuildingItemDTO 列表 + * 将 PowerEnvBuildingItemDTO 列表转换为 LcBuildingEntity 列表 * - * @param list 实体对象列表 - * @return DTO对象列表 + * @param list DTO对象列表 + * @return 列表 */ - List convertList(List list); + List convertList(List list); } \ No newline at end of file diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/dto/PowerEnvBuildingParamsDTO.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/dto/PowerEnvBuildingParamsDTO.java index 2a0548c..3781c0f 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/dto/PowerEnvBuildingParamsDTO.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/dto/PowerEnvBuildingParamsDTO.java @@ -18,13 +18,13 @@ public class PowerEnvBuildingParamsDTO { * 每页数量 */ @Schema(description = "每页数量") - private String pageSize; + private String pageSize = "1000"; /** * 页码 */ @Schema(description = "页码") - private String page; + private String page = "1"; /** * 园区编号 diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/entity/LcBuildingEntity.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/entity/LcBuildingEntity.java index 5b27b80..0d46ef1 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/entity/LcBuildingEntity.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/entity/LcBuildingEntity.java @@ -46,4 +46,9 @@ public class LcBuildingEntity extends BaseTenantEntity { */ private String campusName; + /** + * 状态(0:停用,1:启用) + */ + private Integer status; + } diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/job/AlibabaBuildingJob.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/job/AlibabaBuildingJob.java index a77ab48..99f422d 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/job/AlibabaBuildingJob.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/job/AlibabaBuildingJob.java @@ -1,10 +1,21 @@ package com.jeelowcode.module.biz.job; +import com.jeelowcode.module.biz.convert.LcBuildingEntityConvert; +import com.jeelowcode.module.biz.dto.PowerEnvBuildingItemDTO; +import com.jeelowcode.module.biz.dto.PowerEnvBuildingParamsDTO; +import com.jeelowcode.module.biz.dto.PowerEnvPageDataDTO; +import com.jeelowcode.module.biz.entity.LcBuildingEntity; +import com.jeelowcode.module.biz.service.IBizHttpClientService; +import com.jeelowcode.module.biz.service.ILcBuildingService; import com.jeelowcode.tool.framework.quartz.core.handler.JobHandler; +import com.jeelowcode.tool.framework.tenant.core.job.TenantJob; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import java.util.List; + /** * 设备指标数据定时任务 * @@ -15,10 +26,31 @@ import org.springframework.stereotype.Component; @ConditionalOnProperty(name = "jeelowcode.powerenv.baseurl") public class AlibabaBuildingJob implements JobHandler { + /** + * 动环设备服务 + */ + @Resource + private ILcBuildingService buildingService; + + /** + * 动环设备服务 + */ + @Resource + private IBizHttpClientService httpClientService; @Override + @TenantJob public String execute(String param) throws Exception { - return ""; + // 分页接口,但是pageSize默认设置1000,应该不会超过1000,所以这里就不分页了 + PowerEnvPageDataDTO pageData = + httpClientService.listBuilding(new PowerEnvBuildingParamsDTO()); + // 转化数据 + List list = LcBuildingEntityConvert.INSTANCE.convertList(pageData.getItems()); + // 批量保存数据 + int result = buildingService.saveBatch(list); + log.info("保存楼宇数据结果:{}", result); + log.info("保存楼宇数据结果:{}", result == list.size()); + return "保存楼宇数据结果:" + result + ",楼宇数据大小:" + list.size(); } } diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/mapper/LcBuildingMapper.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/mapper/LcBuildingMapper.java index 442a200..6a56803 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/mapper/LcBuildingMapper.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/mapper/LcBuildingMapper.java @@ -2,6 +2,7 @@ package com.jeelowcode.module.biz.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jeelowcode.module.biz.entity.LcBuildingEntity; +import com.jeelowcode.tool.framework.mybatis.core.query.LambdaQueryWrapperX; import org.apache.ibatis.annotations.Mapper; /** @@ -12,4 +13,15 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface LcBuildingMapper extends BaseMapper { + /** + * 根据楼宇编号查询楼宇信息 + * + * @param buildingId 楼宇编号 + * @return 楼宇信息实体对象,如果未找到则返回null + */ + default LcBuildingEntity selectByBuildingId(String buildingId) { + return selectOne(new LambdaQueryWrapperX() + .eq(LcBuildingEntity::getBuildingId, buildingId)); + } + } diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/ILcBuildingService.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/ILcBuildingService.java index e7aa1df..947f300 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/ILcBuildingService.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/ILcBuildingService.java @@ -1,5 +1,9 @@ package com.jeelowcode.module.biz.service; +import com.jeelowcode.module.biz.entity.LcBuildingEntity; + +import java.util.List; + /** * 楼宇点位信息服务接口 * @@ -7,4 +11,12 @@ package com.jeelowcode.module.biz.service; */ public interface ILcBuildingService { + /** + * 批量保存 + * + * @param list 数据列表 + * @return 影响行数 + */ + int saveBatch(List list); + } \ No newline at end of file diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/impl/LcBuildingServiceImpl.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/impl/LcBuildingServiceImpl.java index 9a47bd7..4c257c2 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/impl/LcBuildingServiceImpl.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/impl/LcBuildingServiceImpl.java @@ -1,9 +1,17 @@ package com.jeelowcode.module.biz.service.impl; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; +import com.jeelowcode.module.biz.entity.LcBuildingEntity; +import com.jeelowcode.module.biz.mapper.LcBuildingMapper; import com.jeelowcode.module.biz.service.ILcBuildingService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; +import java.util.Optional; + /** * 楼宇点位信息服务实现类 * @@ -13,4 +21,21 @@ import org.springframework.stereotype.Service; @Service public class LcBuildingServiceImpl implements ILcBuildingService { + @Resource + private LcBuildingMapper baseMapper; + + @Override + public int saveBatch(List list) { + return list.parallelStream().map(building -> { + if (StrUtil.isEmpty(building.getBuildingId())) return 0; + LcBuildingEntity buildingEntity = + baseMapper.selectByBuildingId(building.getBuildingId()); + return Optional.ofNullable(buildingEntity) + .map(entity -> { + building.setId(entity.getId()); + return baseMapper.updateById(building); + }).orElseGet(() -> baseMapper.insert(building)); + }).mapToInt(Convert::toInt).sum(); + } + }