Переглянути джерело

完成按能耗类型查询已绑定产品列表接口开发

fanghuisheng 1 тиждень тому
батько
коміт
9009ca5f8b

+ 9 - 0
service-ems/service-ems-biz/src/main/java/com/usky/ems/controller/web/EmsProjectController.java

@@ -2,6 +2,7 @@ package com.usky.ems.controller.web;
 
 import com.usky.common.core.bean.ApiResult;
 import com.usky.ems.domain.DmpDevice;
+import com.usky.ems.domain.DmpProduct;
 import com.usky.ems.domain.EmsEnergyItemCode;
 import com.usky.ems.service.EmsEnergyItemCodeService;
 import com.usky.ems.service.EmsProjectService;
@@ -60,6 +61,14 @@ public class EmsProjectController {
         return ApiResult.success(emsProjectService.listAreaDeviceItemCodes(spaceId));
     }
 
+    /**
+     * 按能耗类型查询已绑定产品列表(ems_product_energy_type)
+     */
+    @GetMapping("/product-energy-type/list")
+    public ApiResult<List<DmpProduct>> listProductsByEnergyType(@RequestParam Integer energyType) {
+        return ApiResult.success(emsProjectService.listProductsByEnergyType(energyType));
+    }
+
     /**
      * 产品关联的能源类型(ems_product_energy_type)
      */

+ 6 - 0
service-ems/service-ems-biz/src/main/java/com/usky/ems/service/EmsProjectService.java

@@ -1,6 +1,7 @@
 package com.usky.ems.service;
 
 import com.usky.ems.domain.DmpDevice;
+import com.usky.ems.domain.DmpProduct;
 import com.usky.ems.domain.EmsEnergyItemCode;
 import com.usky.ems.service.vo.EmsDeviceItemCodeSaveRequest;
 import com.usky.ems.service.vo.EmsProductEnergyTypeSaveRequest;
@@ -25,6 +26,11 @@ public interface EmsProjectService {
      */
     void saveProductEnergyTypes(EmsProductEnergyTypeSaveRequest request);
 
+    /**
+     * 按能耗类型查询已绑定产品列表(ems_product_energy_type)
+     */
+    List<DmpProduct> listProductsByEnergyType(Integer energyType);
+
     /**
      * 保存设备关联的能源分项:先删除当前租户下该分项编码的记录,再按设备列表插入
      */

+ 34 - 0
service-ems/service-ems-biz/src/main/java/com/usky/ems/service/impl/EmsProjectServiceImpl.java

@@ -7,6 +7,7 @@ import com.usky.common.security.utils.SecurityUtils;
 import com.usky.ems.domain.BaseSpace;
 import com.usky.ems.domain.BaseSpaceGateway;
 import com.usky.ems.domain.DmpDevice;
+import com.usky.ems.domain.DmpProduct;
 import com.usky.ems.domain.EmsDeviceItemCode;
 import com.usky.ems.domain.EmsEnergyItemCode;
 import com.usky.ems.domain.EmsProductEnergyType;
@@ -14,6 +15,7 @@ import com.usky.ems.domain.EmsProject;
 import com.usky.ems.domain.EmsProjectDeviceSystem;
 import com.usky.ems.mapper.BaseSpaceGatewayMapper;
 import com.usky.ems.mapper.DmpDeviceMapper;
+import com.usky.ems.mapper.DmpProductMapper;
 import com.usky.ems.mapper.EmsDeviceItemCodeMapper;
 import com.usky.ems.mapper.EmsEnergyItemCodeMapper;
 import com.usky.ems.mapper.EmsProductEnergyTypeMapper;
@@ -64,6 +66,8 @@ public class EmsProjectServiceImpl implements EmsProjectService {
     @Autowired
     private DmpDeviceMapper dmpDeviceMapper;
     @Autowired
+    private DmpProductMapper dmpProductMapper;
+    @Autowired
     private EmsEnergyItemCodeMapper emsEnergyItemCodeMapper;
 
     @Override
@@ -160,6 +164,36 @@ public class EmsProjectServiceImpl implements EmsProjectService {
         }
     }
 
+    @Override
+    public List<DmpProduct> listProductsByEnergyType(Integer energyType) {
+        if (energyType == null) {
+            throw new BusinessException("能耗类型不能为空");
+        }
+        Integer tenantId = SecurityUtils.getTenantId();
+        List<EmsProductEnergyType> bindings = emsProductEnergyTypeMapper.selectList(
+                Wrappers.<EmsProductEnergyType>lambdaQuery()
+                        .eq(EmsProductEnergyType::getTenantId, tenantId)
+                        .eq(EmsProductEnergyType::getEnergyType, energyType));
+        if (bindings.isEmpty()) {
+            return Collections.emptyList();
+        }
+        List<Integer> productIds = bindings.stream()
+                .map(EmsProductEnergyType::getProductId)
+                .filter(Objects::nonNull)
+                .distinct()
+                .map(Long::intValue)
+                .collect(Collectors.toList());
+        if (productIds.isEmpty()) {
+            return Collections.emptyList();
+        }
+        return dmpProductMapper.selectList(
+                Wrappers.<DmpProduct>lambdaQuery()
+                        .in(DmpProduct::getId, productIds)
+                        .eq(DmpProduct::getTenantId, tenantId)
+                        .eq(DmpProduct::getDeleteFlag, 0)
+                        .orderByAsc(DmpProduct::getId));
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void saveDeviceItemCodes(EmsDeviceItemCodeSaveRequest request) {