From be080ffb3add3d9495fed78a49270e2a92035f20 Mon Sep 17 00:00:00 2001 From: zhuangtianxiang <2913129173@qq.com> Date: Thu, 19 Dec 2024 15:26:54 +0800 Subject: [PATCH] =?UTF-8?q?refactor(iot):=20=E9=87=8D=E6=9E=84=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 合并参数创建和更新方法,减少重复代码 - 优化参数查询和删除逻辑,提高效率 -调整服务和产品相关方法,适应新的参数处理方式 -移除未使用的 ParamType 枚举 --- .../service/impl/ProductServiceImpl.java | 14 +++- .../gateway/modules/iot/tsl/dto/ServeDto.java | 6 +- .../gateway/modules/iot/tsl/entity/Param.java | 37 +++++++++ .../gateway/modules/iot/tsl/entity/Serve.java | 9 +- .../iot/tsl/repo/EventParamRepository.java | 3 + .../modules/iot/tsl/repo/EventRepository.java | 1 + .../modules/iot/tsl/repo/ParamRepository.java | 3 + .../iot/tsl/repo/PropertyRepository.java | 3 + .../modules/iot/tsl/service/ParamService.java | 12 +-- .../tsl/service/impl/EventServiceImpl.java | 13 ++- .../tsl/service/impl/ParamServiceImpl.java | 82 +++++-------------- .../tsl/service/impl/ServeServiceImpl.java | 16 +++- .../notice/controller/BulletinController.java | 5 +- .../service/impl/UserMessageServiceImpl.java | 5 +- 14 files changed, 115 insertions(+), 94 deletions(-) diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/impl/ProductServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/impl/ProductServiceImpl.java index 79a71c1..17fad75 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/impl/ProductServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/impl/ProductServiceImpl.java @@ -13,6 +13,7 @@ import com.zsc.edu.gateway.modules.iot.product.repo.ProductParamRepository; import com.zsc.edu.gateway.modules.iot.product.repo.ProductRepository; import com.zsc.edu.gateway.modules.iot.product.service.ProductService; import com.zsc.edu.gateway.modules.iot.tsl.dto.ParamDto; +import com.zsc.edu.gateway.modules.iot.tsl.entity.EventParam; import com.zsc.edu.gateway.modules.iot.tsl.entity.Param; import com.zsc.edu.gateway.modules.iot.tsl.mapper.ParamMapper; import com.zsc.edu.gateway.modules.iot.tsl.repo.ParamRepository; @@ -21,6 +22,7 @@ import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.stream.Collectors; /** @@ -45,7 +47,10 @@ public class ProductServiceImpl extends ServiceImpl } Product product = mapper.toEntity(dto); save(product); - productParamRepo.insert(paramService.productParamCreate(dto, product.getId())); + List productParams = paramService.paramCreate(dto.getParams()).stream() + .map(paramId -> new ProductParam(product.getId(), paramId)) + .toList(); + productParamRepo.insert(productParams); return product; } /** @@ -56,7 +61,12 @@ public class ProductServiceImpl extends ServiceImpl Product product = baseMapper.selectById(id); mapper.convert(dto, product); updateById(product); - paramService.productParamUpdate(dto.getParams(), id); + paramService.paramUpdate(dto.getParams(), + productParamRepo.selectList(new LambdaQueryWrapper() + .eq(ProductParam::getProductId, product.getId())) + .stream() + .map(ProductParam::getParamId) + .collect(Collectors.toList())); return product; } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/ServeDto.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/ServeDto.java index 61dc109..b5cf96e 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/ServeDto.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/ServeDto.java @@ -21,7 +21,9 @@ public class ServeDto { public String identifier; - private List inputs; + private List params; - private List outputs; + //TODO 将inputs和outputs整合成一个params集合(操作一样,params中有type区分) +// private List inputs; +// private List outputs; } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Param.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Param.java index d3901bb..406640b 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Param.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Param.java @@ -32,6 +32,10 @@ public class Param extends BaseParam { */ private Type type; +// /** +// * 事件/服务/产品的类型 +// */ +// private ParamType paramType; public enum Type implements IEnum, IState { /** @@ -65,4 +69,37 @@ public class Param extends BaseParam { return this.description; } } + +// public enum ParamType implements IEnum, IState { +// /** +// * 事件 +// */ +// EVENT(1, "Event"), +// /** +// * 服务 +// */ +// SERVICE(2, "Service"), +// /** +// * 产品 +// */ +// PRODUCT(3, "Product"); +// +// private final int value; +// private final String description; +// +// ParamType(int value, String description) { +// this.value = value; +// this.description = description; +// } +// +// @Override +// public Integer getValue() { +// return value; +// } +// +// @Override +// public String toString() { +// return this.description; +// } +// } } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Serve.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Serve.java index 3e3d009..a891e53 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Serve.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Serve.java @@ -24,16 +24,11 @@ public class Serve extends BaseParam { private Long productId; /** - * 服务所需参数 + * 服务输入/输出参数,根据param中的type区分 */ @TableField(exist = false) - private List inputs; + private List params; - /** - * 服务输出的参数 - */ - @TableField(exist = false) - private List outputs; } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventParamRepository.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventParamRepository.java index 69118cb..655c9fa 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventParamRepository.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventParamRepository.java @@ -3,5 +3,8 @@ package com.zsc.edu.gateway.modules.iot.tsl.repo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zsc.edu.gateway.modules.iot.tsl.entity.EventParam; +/** + * @author zhuang + */ public interface EventParamRepository extends BaseMapper { } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventRepository.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventRepository.java index b802c7e..035c7ad 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventRepository.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventRepository.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zsc.edu.gateway.modules.iot.tsl.entity.Event; import com.zsc.edu.gateway.modules.iot.tsl.query.EventQuery; +import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/ParamRepository.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/ParamRepository.java index 2cc6170..55f1675 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/ParamRepository.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/ParamRepository.java @@ -3,5 +3,8 @@ package com.zsc.edu.gateway.modules.iot.tsl.repo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zsc.edu.gateway.modules.iot.tsl.entity.Param; +/** + * @author lenovo + */ public interface ParamRepository extends BaseMapper { } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/PropertyRepository.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/PropertyRepository.java index 511c546..8c185f2 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/PropertyRepository.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/PropertyRepository.java @@ -11,6 +11,9 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +/** + * @author zhuang + */ public interface PropertyRepository extends BaseMapper { diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/ParamService.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/ParamService.java index b652ac7..4443d3a 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/ParamService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/ParamService.java @@ -16,15 +16,7 @@ import java.util.List; * @author zhuang */ public interface ParamService extends IService { - List eventParamCreate(EventDto dto, Long eventId); + List paramCreate(List params); - List productParamCreate(ProductDto dto, Long productId); - - List serveParamCreate(ServeDto dto, Long serveId); - - boolean eventParamUpdate(List paramDto, Long eventId); - - boolean productParamUpdate(List paramDto, Long productId); - - boolean serveParamUpdate(List paramDto, Long serveId); + boolean paramUpdate(List paramDto, List paramIds); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/EventServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/EventServiceImpl.java index c1255e7..f457117 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/EventServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/EventServiceImpl.java @@ -23,6 +23,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * @author Yao @@ -46,7 +47,10 @@ public class EventServiceImpl extends ServiceImpl implem } Event event = mapper.toEntity(dto); save(event); - eventParamRepo.insert(paramService.eventParamCreate(dto, event.getId())); + List eventParams = paramService.paramCreate(dto.getOutputs()).stream() + .map(paramId -> new EventParam(event.getId(), paramId)) + .toList(); + eventParamRepo.insert(eventParams); return event; } /** @@ -57,7 +61,12 @@ public class EventServiceImpl extends ServiceImpl implem Event event = baseMapper.selectById(id); mapper.convert(dto, event); updateById(event); - paramService.eventParamUpdate(dto.getOutputs(), id); + paramService.paramUpdate(dto.getOutputs(), + eventParamRepo.selectList(new LambdaQueryWrapper() + .eq(EventParam::getEventId, event.getId())) + .stream() + .map(EventParam::getParamId) + .collect(Collectors.toList())); return event; } /** diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ParamServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ParamServiceImpl.java index 0de55d8..eb56cf0 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ParamServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ParamServiceImpl.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zsc.edu.gateway.modules.iot.product.dto.ProductDto; import com.zsc.edu.gateway.modules.iot.product.entity.ProductParam; import com.zsc.edu.gateway.modules.iot.product.repo.ProductParamRepository; -import com.zsc.edu.gateway.modules.iot.tsl.dto.EventDto; import com.zsc.edu.gateway.modules.iot.tsl.dto.ParamDto; import com.zsc.edu.gateway.modules.iot.tsl.dto.ServeDto; import com.zsc.edu.gateway.modules.iot.tsl.entity.EventParam; @@ -21,6 +20,8 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; /** * @author zhuang @@ -34,79 +35,34 @@ public class ParamServiceImpl extends ServiceImpl implem private final ProductParamRepository productParamRepository; private final ServeParamRepository serveParamRepository; + @Override public List paramCreate(List params) { List paramIds = new ArrayList<>(); - params.forEach(paramDto -> { - Param param = mapper.toEntity(paramDto); - baseMapper.insert(param); - paramIds.add(param.getId()); - }); + List paramsToInsert = params.stream() + .map(mapper::toEntity) + .collect(Collectors.toList()); + baseMapper.insert(paramsToInsert); + paramsToInsert.forEach(param -> paramIds.add(param.getId())); return paramIds; } @Override - public List eventParamCreate(EventDto dto, Long eventId) { - return paramCreate(dto.getOutputs()).stream() - .map(paramId -> new EventParam(eventId, paramId)) - .toList(); - } - - @Override - public List productParamCreate(ProductDto dto, Long productId) { - return paramCreate(dto.getParams()).stream() - .map(paramId -> new ProductParam(productId, paramId)) - .toList(); - } - - @Override - public List serveParamCreate(ServeDto dto, Long serveId) { - List serveParams = new ArrayList<>(); - serveParams.addAll(paramCreate(dto.getInputs()).stream() - .map(paramId -> new ServeParam(serveId, paramId)) - .toList()); - serveParams.addAll(paramCreate(dto.getOutputs()).stream() - .map(paramId -> new ServeParam(serveId, paramId)) - .toList()); - return serveParams; - } - public boolean paramUpdate(List paramDto, List paramIds) { List params = baseMapper.selectByIds(paramIds); if (!params.isEmpty() && !paramDto.isEmpty()) { - for (int i = 0; i < Math.min(params.size(), paramDto.size()); i++) { - Param param = params.get(i); - ParamDto dto = paramDto.get(i); - paramMapper.convert(dto, param); - baseMapper.updateById(param); - } + List updatedParams = IntStream.range(0, Math.min(params.size(), paramDto.size())) + .parallel() + .mapToObj(i -> { + Param param = params.get(i); + ParamDto dto = paramDto.get(i); + paramMapper.convert(dto, param); + return param; + }) + .collect(Collectors.toList()); + baseMapper.updateById(updatedParams); } return true; } - @Override - public boolean eventParamUpdate(List paramDto, Long eventId) { - return paramUpdate(paramDto, eventParamRepository.selectList(new LambdaQueryWrapper() - .eq(EventParam::getEventId, eventId)) - .stream() - .map(EventParam::getParamId) - .toList()); - } - - @Override - public boolean productParamUpdate(List paramDto, Long productId) { - return paramUpdate(paramDto, productParamRepository.selectList(new LambdaQueryWrapper() - .eq(ProductParam::getProductId, productId)) - .stream() - .map(ProductParam::getParamId) - .toList()); - } - - @Override - public boolean serveParamUpdate(List paramDto, Long serveId) { - return paramUpdate(paramDto, serveParamRepository.selectList(new LambdaQueryWrapper() - .eq(ServeParam::getServeId, serveId)) - .stream() - .map(ServeParam::getParamId) - .toList()); - } + //TODO 整合方法?方法一:保持现状,但是会有多个联表多个entity多个repo?方法二:建新联表其中values(product_id,serve_id,event_id,param_id)一表联三表 } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ServeServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ServeServiceImpl.java index e1ede01..e1b1191 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ServeServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ServeServiceImpl.java @@ -21,6 +21,8 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** @@ -31,7 +33,6 @@ import java.util.List; public class ServeServiceImpl extends ServiceImpl implements ServeService { private final ServeMapper mapper; - private final ParamMapper paramMapper; private final ParamRepository paramRepository; private final ServeParamRepository serveParamRepository; private final ParamService paramService; @@ -45,7 +46,10 @@ public class ServeServiceImpl extends ServiceImpl implem } Serve serve = mapper.toEntity(dto); save(serve); - serveParamRepository.insert(paramService.serveParamCreate(dto, serve.getId())); + List serveParams = paramService.paramCreate(dto.getParams()).stream() + .map(paramId -> new ServeParam(serve.getId(), paramId)) + .toList(); + serveParamRepository.insert(serveParams); return serve; } /** @@ -56,8 +60,12 @@ public class ServeServiceImpl extends ServiceImpl implem Serve serve = baseMapper.selectById(id); mapper.convert(dto, serve); updateById(serve); - paramService.serveParamUpdate(dto.getInputs(), id); - paramService.serveParamUpdate(dto.getOutputs(), id); + paramService.paramUpdate(dto.getParams(), + serveParamRepository.selectList(new LambdaQueryWrapper() + .eq(ServeParam::getServeId, serve.getId())) + .stream() + .map(ServeParam::getParamId) + .collect(Collectors.toList())); return serve; } diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/controller/BulletinController.java b/src/main/java/com/zsc/edu/gateway/modules/notice/controller/BulletinController.java index 12a9b0b..512f063 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/controller/BulletinController.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/controller/BulletinController.java @@ -70,9 +70,8 @@ public class BulletinController { */ @GetMapping() @PreAuthorize("hasAuthority('BULLETIN_QUERY')") - public IPage query(Page page, BulletinQuery query) { -// Page page = new Page<>(query.getPageNum(), query.getPageSize()); - return service.selectPageByConditions(page, query); + public Page query(Page page, BulletinQuery query) { + return service.page(page, query.wrapper()); } /** diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/UserMessageServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/UserMessageServiceImpl.java index 637a230..19d517f 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/UserMessageServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/UserMessageServiceImpl.java @@ -101,7 +101,10 @@ public class UserMessageServiceImpl extends ServiceImpl messageIds) { if (CollectionUtils.isEmpty(messageIds)) { - throw new RuntimeException("messageIds is NULL!"); + return this.lambdaUpdate().eq(UserMessage::getUserId, userDetails.getId()) + .set(UserMessage::getIsRead, true) + .set(UserMessage::getReadTime, LocalDateTime.now()) + .update(); } return this.lambdaUpdate().eq(UserMessage::getUserId, userDetails.getId()) .in(UserMessage::getMessageId, messageIds)