Browse Source

:sparkles: 岸电自动化完成

lag 9 months ago
parent
commit
0e2ee5d1af

+ 19 - 14
src/main/java/com/shcd/enums/AreaSortEnum.java

@@ -1,31 +1,36 @@
 package com.shcd.enums;
 
+import java.math.BigDecimal;
 import java.util.Arrays;
 import lombok.Getter;
 
 @Getter
 public enum AreaSortEnum {
-  PD(1, "浦东新区"),
-  QP(2, "青浦区"),
-  MH(3, "闵行区"),
-  SJ(4, "松江区"),
-  JS(5, "金山区"),
-  FX(6, "奉贤区"),
-  JD(7, "嘉定区"),
-  BS(8, "宝山区"),
-  CM(9, "崇明区"),
-  LG(10, "临港新片区"),
-  SGNH(11, "市管内河");
+  PD(1, "浦东新区", BigDecimal.valueOf(42), 5),
+  QP(2, "青浦区", BigDecimal.valueOf(26), 8),
+  MH(3, "闵行区", BigDecimal.valueOf(16), 2),
+  SJ(4, "松江区", BigDecimal.valueOf(11), 7),
+  JS(5, "金山区", BigDecimal.valueOf(37), 6),
+  FX(6, "奉贤区", BigDecimal.valueOf(13), 9),
+  JD(7, "嘉定区", BigDecimal.valueOf(38), 3),
+  BS(8, "宝山区", BigDecimal.valueOf(29), 4),
+  CM(9, "崇明区", BigDecimal.valueOf(52), 10),
+  LG(10, "临港新片区", BigDecimal.valueOf(6), 11),
+  SGNH(11, "市管内河", BigDecimal.valueOf(5), 1);
 
 
-  private Integer sort;
+  private Integer owningArea;
 
   private String area;
+  private BigDecimal operateMarinaNumber;
+  private Integer sort;
 
 
-  AreaSortEnum(Integer sort, String area) {
-    this.sort = sort;
+  AreaSortEnum(Integer owningArea, String area, BigDecimal operateMarinaNumber, Integer sort) {
+    this.owningArea = owningArea;
     this.area = area;
+    this.operateMarinaNumber = operateMarinaNumber;
+    this.sort = sort;
   }
 
   public static AreaSortEnum getByArea(String area) {

+ 10 - 0
src/main/java/com/shcd/mapper/ShorePowerDeviceUsageMapper.java

@@ -0,0 +1,10 @@
+package com.shcd.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.shcd.entity.ShorePowerDeviceUsage;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ShorePowerDeviceUsageMapper extends BaseMapper<ShorePowerDeviceUsage> {
+
+}

+ 48 - 11
src/main/java/com/shcd/scheduling/ShorePowerReportGenerateScheduler.java

@@ -1,13 +1,18 @@
 package com.shcd.scheduling;
 
+import com.shcd.entity.ShorePowerDeviceUsage;
+import com.shcd.enums.AreaSortEnum;
+import com.shcd.service.ShorePowerDeviceUsageService;
 import com.shcd.service.SpStatementInlandLowService;
 import com.shcd.service.SpStatementQuarterReportService;
 import com.shcd.service.SpStatementShipUsageMonthService;
+import java.text.ParseException;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import javax.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 @Component
@@ -23,15 +28,21 @@ public class ShorePowerReportGenerateScheduler {
   @Autowired
   private SpStatementQuarterReportService spStatementQuarterReportService;
 
+  @Resource
+  private ShorePowerDeviceUsageService shorePowerDeviceUsageService;
+
   //  @PostConstruct
-//  @Scheduled(cron = "0 0/1 * * * ?")
+  @Scheduled(cron = "0 0/1 * * * ?")
   public void generateSpInlandLowStatement() {
     try {
       // 生成各区上报数据   内河低压分析表
       log.warn("开始生成 内河低压分析表-各区上报数据  ========");
       generateReport1();
       log.warn("内河低压分析表-各区上报数据  ======== 生成结束");
-//       生成市级平台自动上传数据   内河低压分析表
+      log.warn("生成下个月的内河非标岸电使用情况表  ======");
+      generateDeviceUsage();
+      log.warn("生成下个月的内河非标岸电使用情况表  ====== 生成结束");
+////       生成市级平台自动上传数据   内河低压分析表
       log.warn("开始生成 内河低压分析表-市级平台自动上传数据  ========");
       generateReport2();
       log.warn("内河低压分析表-市级平台自动上传数据  ========生成结束");
@@ -40,35 +51,55 @@ public class ShorePowerReportGenerateScheduler {
           "开始生成 上海市长江经济带船舶使用岸电情况报表   以及  上海港船舶使用岸电情况分年度对比分析表  以及  靠泊上港集团码头的集装箱船舶(2024年上海市岸电使用指标Part2) ========");
       generateReport3();
       log.warn("上海市长江经济带船舶使用岸电情况报表 ========生成结束");
+      log.warn("开始生成  岸电季度报表   ================");
+      generateSpQuarterReport();
+      log.warn("岸电季度报表 ========生成结束");
     } catch (Exception e) {
       log.error("中间表生成逻辑出错....原因:{}", e.getMessage());
     }
   }
 
+  private void generateDeviceUsage() throws ParseException {
+    try {
+      shorePowerDeviceUsageService.generateDeviceUsageNextMonth(getShorePowerNextMonthDate());
+    } catch (Exception e) {
+      log.error("生成下个月的内河非标岸电使用情况表出错....原因:{}", e.getMessage());
+    }
+
+  }
+
   //@PostConstruct
   public void generateSpQuarterReport() {
     try {
-      generateReportSpQuarterReport();
+      spStatementQuarterReportService.generateReportSpQuarterReport(getShorePowerDate());
     } catch (Exception e) {
       log.error("季度表出错....原因:{}", e.getMessage());
     }
   }
 
-  private void generateReportSpQuarterReport() {
-    spStatementQuarterReportService.generateReportSpQuarterReport(null);
-  }
-
   private void generateReport3() {
-    spStatementShipUsageMonthService.makeShangHaiShorePowerUsageRecord(null);
+    try {
+      spStatementShipUsageMonthService.makeShangHaiShorePowerUsageRecord(getShorePowerDate());
+    } catch (Exception e) {
+      log.error("上海市长江经济带船舶使用岸电情况报表出错....原因:{}", e.getMessage());
+    }
   }
 
   private void generateReport1() {
-    spStatementInlandLowService.makeReport1(getShorePowerDate(), getShorePowerLastMonthDate());
+    try {
+      spStatementInlandLowService.makeReport1(getShorePowerDate(), getShorePowerLastMonthDate());
+    } catch (Exception e) {
+      log.error("内河低压分析表-市级平台自动上传数据出错....原因:{}", e.getMessage());
+    }
   }
 
   private void generateReport2() {
-    spStatementInlandLowService.makeReport2(getShorePowerDate(), getShorePowerLastMonthDate(),
-        getShorePowerLast2MonthDate(), getShorePowerLast3MonthDate());
+    try {
+      spStatementInlandLowService.makeReport2(getShorePowerDate(), getShorePowerLastMonthDate(),
+          getShorePowerLast2MonthDate(), getShorePowerLast3MonthDate());
+    } catch (Exception e) {
+      log.error("内河低压分析表-各区上报出错....原因:{}", e.getMessage());
+    }
   }
 
   private static String getShorePowerDate() {
@@ -78,6 +109,12 @@ public class ShorePowerReportGenerateScheduler {
     return date;
   }
 
+  private static String getShorePowerNextMonthDate() {
+    String date = null;
+    date = DateTimeFormatter.ofPattern("yyyy-MM").format(LocalDate.now().plusMonths(1));
+    return date;
+  }
+
   private static String getShorePowerLastMonthDate() {
     String date = null;
     date = DateTimeFormatter.ofPattern("yyyy-MM").format(LocalDate.now().plusMonths(-1));

+ 10 - 0
src/main/java/com/shcd/service/ShorePowerDeviceUsageService.java

@@ -0,0 +1,10 @@
+package com.shcd.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.shcd.entity.ShorePowerDeviceUsage;
+import java.text.ParseException;
+
+public interface ShorePowerDeviceUsageService extends IService<ShorePowerDeviceUsage> {
+
+  void generateDeviceUsageNextMonth(String shorePowerNextMonthDate) throws ParseException;
+}

+ 49 - 0
src/main/java/com/shcd/service/impl/ShorePowerDeviceUsageServiceImpl.java

@@ -0,0 +1,49 @@
+package com.shcd.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.shanghaigeography.Util.DateUtils;
+import com.shanghaigeography.Util.SnowflakeConfig;
+import com.shcd.entity.ShorePowerDeviceUsage;
+import com.shcd.enums.AreaSortEnum;
+import com.shcd.mapper.ShorePowerDeviceUsageMapper;
+import com.shcd.service.ShorePowerDeviceUsageService;
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+@Service
+public class ShorePowerDeviceUsageServiceImpl extends
+    ServiceImpl<ShorePowerDeviceUsageMapper, ShorePowerDeviceUsage> implements
+    ShorePowerDeviceUsageService {
+
+  @Resource
+  private SnowflakeConfig snowflakeConfig;
+
+  @Override
+  public void generateDeviceUsageNextMonth(String shorePowerNextMonthDate) throws ParseException {
+    this.remove(Wrappers.<ShorePowerDeviceUsage>lambdaQuery()
+        .eq(ShorePowerDeviceUsage::getReportDate,
+            DateUtils.stringToDate(shorePowerNextMonthDate, DateUtils.DATE_FORMAT_12)));
+    List<ShorePowerDeviceUsage> shorePowerDeviceUsageList = new ArrayList<>();
+    for (AreaSortEnum value : AreaSortEnum.values()) {
+      ShorePowerDeviceUsage shorePowerDeviceUsage = new ShorePowerDeviceUsage();
+      shorePowerDeviceUsage.setId(snowflakeConfig.snowflakeStringId());
+      shorePowerDeviceUsage.setDistrict(value.getArea());
+      shorePowerDeviceUsage.setOperateMarinaNumber(value.getOperateMarinaNumber());
+      shorePowerDeviceUsage.setShorePowerBoatUseNumber(BigDecimal.ZERO);
+      shorePowerDeviceUsage.setPowerConnHours(BigDecimal.ZERO);
+      shorePowerDeviceUsage.setElectricityConsumption(BigDecimal.ZERO);
+      shorePowerDeviceUsage.setCreateUser("5043");
+      shorePowerDeviceUsage.setReportDate(
+          DateUtils.stringToDate(shorePowerNextMonthDate, DateUtils.DATE_FORMAT_12));
+      shorePowerDeviceUsage.setSort(String.valueOf(value.getSort()));
+      shorePowerDeviceUsage.setOwningArea(String.valueOf(value.getOwningArea()));
+      shorePowerDeviceUsageList.add(shorePowerDeviceUsage);
+    }
+    super.saveBatch(shorePowerDeviceUsageList);
+  }
+}

+ 1 - 1
src/main/java/com/shcd/service/impl/SpStatementInlandLowServiceImpl.java

@@ -362,7 +362,7 @@ public class SpStatementInlandLowServiceImpl extends
       spStatementInlandLow.setReportDate(
           DateUtils.stringToDate(currentDate, DateUtils.DATE_FORMAT_12));
       spStatementInlandLow.setSort(
-          AreaSortEnum.getByArea(spStatementInlandLow.getDistrict()).getSort());
+          AreaSortEnum.getByArea(spStatementInlandLow.getDistrict()).getOwningArea());
       spStatementInlandLow.setType(2);
       List<ShorePowerConnRecordInfoVo> areaCollectData = currentMonthData.stream()
           .filter(