Przeglądaj źródła

报表导出逻辑优化update

qiangxuan 8 miesięcy temu
rodzic
commit
e8f8e4bc9a

+ 2 - 2
zgztBus/jeecg-module-lesm/src/main/java/org/jeecg/modules/fpgLeanModel/controller/FpgLeanModelController.java

@@ -198,7 +198,7 @@ public class FpgLeanModelController extends JeecgController<FpgLeanModel, IFpgLe
 	 }
 
 
-	@ApiOperation(value="峰平谷模型报表-通过模型编码导出报表", notes="峰平谷模型报表-通过模型编码导出报表")
+	@ApiOperation(value="龙钢变各工序报表-通过模型编码导出报表", notes="峰平谷模型报表-通过模型编码导出报表")
 	@GetMapping(value = "/exportModelDataByCode")
 	public JSONObject exportModelDataByLeanModelCode(@RequestParam(name="leanModelCode") String leanModelCode) {
 
@@ -207,7 +207,7 @@ public class FpgLeanModelController extends JeecgController<FpgLeanModel, IFpgLe
 		return result;
 	}
 
-	@ApiOperation(value="峰平谷功率报表-通过模型编码导出报表", notes="峰平谷模型报表-通过模型编码导出报表")
+	@ApiOperation(value="用电总量报表-通过模型编码导出报表", notes="峰平谷模型报表-通过模型编码导出报表")
 	@GetMapping(value = "/exportModelDataPowerByCode")
 	public JSONObject exportModelPowerDataByLeanModelCode(@RequestParam(name="leanModelCode") String leanModelCode) {
 

+ 77 - 34
zgztBus/jeecg-module-lesm/src/main/java/org/jeecg/modules/fpgLeanModel/service/impl/FpgLeanModelServiceImpl.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.util.DateUtils;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.deviceLesm.entity.DeviceInformation;
@@ -28,6 +29,7 @@ import org.springframework.stereotype.Service;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.IntStream;
 
 /**
  * @Description: 峰平谷模型
@@ -35,6 +37,7 @@ import java.util.stream.Collectors;
  * @Date:   2024-10-31
  * @Version: V1.0
  */
+@Slf4j
 @Service
 public class FpgLeanModelServiceImpl extends ServiceImpl<FpgLeanModelMapper, FpgLeanModel> implements IFpgLeanModelService {
 
@@ -136,6 +139,11 @@ public class FpgLeanModelServiceImpl extends ServiceImpl<FpgLeanModelMapper, Fpg
         JSONObject result = new JSONObject();
 
         List<DeviceStatiscsModelMongodb> fpgStatiscsModelDataList = queryByTimeRanges(mongoTemplate, leanModelCode, null, null, null, null, null);
+        if (oConvertUtils.listIsEmpty(fpgStatiscsModelDataList)){
+            log.info("{}{}", "mongo数据查询为空,峰平谷模型报表导出失败!", leanModelCode);
+            result.put("data", new ArrayList<>());
+            return result;
+        }
         List<String> deviceInformationIds = fpgStatiscsModelDataList.stream().map(DeviceStatiscsModelMongodb::getDeviceInformationId).collect(Collectors.toList());
         LambdaQueryWrapper<DeviceInformation> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.in(DeviceInformation::getId, deviceInformationIds);
@@ -170,8 +178,12 @@ public class FpgLeanModelServiceImpl extends ServiceImpl<FpgLeanModelMapper, Fpg
     public JSONObject queryFpgPowerDataByLeanModelCode(String leanModelCode) {
 
         JSONObject result = new JSONObject();
-
         List<DeviceStatiscsModelMongodb> fpgStatiscsModelDataList = queryByTimeRanges(mongoTemplate, leanModelCode, null, null, null, null, null);
+        if (oConvertUtils.listIsEmpty(fpgStatiscsModelDataList)){
+            log.info("{}{}", "mongo数据查询为空,峰平谷功率报表导出失败!", leanModelCode);
+            result.put("data", new ArrayList<>());
+            return result;
+        }
         List<String> deviceInformationIds = fpgStatiscsModelDataList.stream().map(DeviceStatiscsModelMongodb::getDeviceInformationId).collect(Collectors.toList());
         LambdaQueryWrapper<DeviceInformation> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.in(DeviceInformation::getId, deviceInformationIds);
@@ -196,38 +208,7 @@ public class FpgLeanModelServiceImpl extends ServiceImpl<FpgLeanModelMapper, Fpg
                     }
                     return null;
                 }).filter(x -> x != null).collect(Collectors.toList());
-
-        List<ModelDataResult> modelDataResults = new ArrayList<>();
-        for (ModelReportFormResult modelReportFormResult : combinedList) {
-            for (int i = 0; i < 5; i++) {
-                ModelDataResult modelDataResult = new ModelDataResult();
-                if (i == 0){
-                    modelDataResult.setKey("尖");
-                    modelDataResult.setValue(modelReportFormResult.getTopsPower());
-                }
-                if (i == 1){
-                    modelDataResult.setKey("峰");
-                    modelDataResult.setValue(modelReportFormResult.getPeaksPower());
-                }
-                if (i == 2){
-                    modelDataResult.setKey("平");
-                    modelDataResult.setValue(modelReportFormResult.getFlatPower());
-                }
-                if (i == 3){
-                    modelDataResult.setKey("谷");
-                    modelDataResult.setValue(modelReportFormResult.getValleysPower());
-                }
-                if (i == 4){
-                    modelDataResult.setKey("反有总");
-                    modelDataResult.setValue(modelReportFormResult.getTopsPower().add(modelReportFormResult.getPeaksPower()).add(modelReportFormResult.getFlatPower()).add(modelReportFormResult.getValleysPower()));
-                }
-                modelDataResult.setDeviceTitle(modelReportFormResult.getDeviceTitle());
-                modelDataResult.setDeviceRegionId(modelReportFormResult.getDeviceRegionId());
-                modelDataResult.setDeviceInformationId(modelReportFormResult.getDeviceInformationId());
-                modelDataResult.setCreateTime(modelReportFormResult.getCreateTime());
-                modelDataResults.add(modelDataResult);
-            }
-        }
+        List<ModelDataResult> modelDataResults = generateModelDataResults(combinedList);
         JSONArray jArray = JSON.parseArray(JSON.toJSONString(modelDataResults));
         result.put("data", jArray);
         return result;
@@ -273,7 +254,69 @@ public class FpgLeanModelServiceImpl extends ServiceImpl<FpgLeanModelMapper, Fpg
             query.addCriteria(Criteria.where("createTime").gte(specifiedTimePlus8HoursStartTime).lt(specifiedTimePlus8HoursStartEndTime));
         }
         // 执行查询
-        List<DeviceStatiscsModelMongodb> fpgStatiscsModelDataList = mongoTemplate.find(query, DeviceStatiscsModelMongodb.class, "total_day_power_sum");
+        List<DeviceStatiscsModelMongodb> fpgStatiscsModelDataList = mongoTemplate.find(query, DeviceStatiscsModelMongodb.class, leanModeCode);
         return fpgStatiscsModelDataList;
     }
+
+    /**
+     * 转为流处理模型数据、5次循环操作
+     * @param combinedList
+     * @return
+     */
+    public static List<ModelDataResult> generateModelDataResults(List<ModelReportFormResult> combinedList) {
+        return combinedList.stream()
+                .flatMap(modelReportFormResult -> IntStream.range(0, 5)
+                        .mapToObj(i -> {
+                            ModelDataResult modelDataResult = new ModelDataResult();
+                            setKeyValue(modelDataResult, i, modelReportFormResult);
+                            setCommonProperties(modelDataResult, modelReportFormResult);
+                            return modelDataResult;
+                        })).collect(Collectors.toList());
+    }
+
+    /**
+     *  不同类型的key/value进行赋值操作
+     * @param modelDataResult
+     * @param i
+     * @param modelReportFormResult
+     */
+    private static void setKeyValue(ModelDataResult modelDataResult, int i, ModelReportFormResult modelReportFormResult) {
+        switch (i) {
+            case 0:
+                modelDataResult.setKey("尖");
+                modelDataResult.setValue(modelReportFormResult.getTopsPower());
+                break;
+            case 1:
+                modelDataResult.setKey("峰");
+                modelDataResult.setValue(modelReportFormResult.getPeaksPower());
+                break;
+            case 2:
+                modelDataResult.setKey("平");
+                modelDataResult.setValue(modelReportFormResult.getFlatPower());
+                break;
+            case 3:
+                modelDataResult.setKey("谷");
+                modelDataResult.setValue(modelReportFormResult.getValleysPower());
+                break;
+            case 4:
+                modelDataResult.setKey("反有总");
+                modelDataResult.setValue(modelReportFormResult.getTopsPower()
+                        .add(modelReportFormResult.getPeaksPower())
+                        .add(modelReportFormResult.getFlatPower())
+                        .add(modelReportFormResult.getValleysPower()));
+                break;
+        }
+    }
+
+    /**
+     * 公共属性赋值
+     * @param modelDataResult
+     * @param modelReportFormResult
+     */
+    private static void setCommonProperties(ModelDataResult modelDataResult, ModelReportFormResult modelReportFormResult) {
+        modelDataResult.setDeviceTitle(modelReportFormResult.getDeviceTitle());
+        modelDataResult.setDeviceRegionId(modelReportFormResult.getDeviceRegionId());
+        modelDataResult.setDeviceInformationId(modelReportFormResult.getDeviceInformationId());
+        modelDataResult.setCreateTime(modelReportFormResult.getCreateTime());
+    }
 }