فهرست منبع

上海市长江经济带船舶使用岸电情况报表优化

zoro 1 سال پیش
والد
کامیت
001628249b

+ 1 - 1
src/main/java/com/shcd/entity/SpStatementShipUsageMonth.java

@@ -54,7 +54,7 @@ public class SpStatementShipUsageMonth implements Serializable {
     private BigDecimal shorePowerCountYear;
 
     /**
-     * 0 市级平台原始数据,1港航部门报送数据, 2报送交通委数据
+     * 0 市级平台原始数据,10港航部门报送数据, 20线下报送数据 99报送交通委数据,100及以后为其他类型数据
      */
     @TableField(value = "DATA_SOURCE")
     private Integer dataSource;

+ 6 - 0
src/main/java/com/shcd/mapper/SpStatementShipUsageMonthMapper.java

@@ -44,6 +44,12 @@ public interface SpStatementShipUsageMonthMapper extends BaseMapper<SpStatementS
     List<SpStatementShipUsageDetail> selectWgqMonth(@Param("thisDate") Date thisDate, @Param("lastDate") Date lastDate);
 
     SpStatementShipUsageMonthVo selectWgqYear(@Param("toDate") String dateStrLast);
+
+    SpStatementShipUsageMonthVo getInRiverDataBeforeThisMonth( @Param("toDate") String dateStrLast);
+
+    List<SpStatementShipUsageDetail> getInRiverDataThisMonth(@Param("thisDate") Date thisDate, @Param("lastDate") Date lastDate);
+
+    SpStatementShipUsageMonthVo getInRiverDataSelfThisMonth(Date thisDate, Date lastDate);
 }
 
 

+ 5 - 5
src/main/java/com/shcd/scheduling/ShorePowerReportGenerateScheduler.java

@@ -41,14 +41,14 @@ public class ShorePowerReportGenerateScheduler {
   @Resource
   SnowflakeMakeConf snowflakeMakeConf;
 
-  //@PostConstruct
+  @PostConstruct
   //@Scheduled(cron = "0 0/1 * * * ?")
   public void generateSpInlandLowStatement() {
     try {
       // 生成各区上报数据   内河低压分析表
-      generateReport1();
+      //generateReport1();
       // 生成市级平台自动上传数据   内河低压分析表
-      generateReport2();
+      //generateReport2();
       //生成报表三
       generateReport3();
     } catch (Exception e) {
@@ -58,12 +58,12 @@ public class ShorePowerReportGenerateScheduler {
 
 
 
-  @PostConstruct
+  //@PostConstruct
   public void generateSpQuarterReport(){
     try {
         generateReportSpQuarterReport();
     }catch (Exception e){
-      log.error("上海港船舶使用岸电情况分泊位统计表生成逻辑出错....原因:{}", e.getMessage());
+      log.error("季度表出错....原因:{}", e.getMessage());
     }
   }
 

+ 40 - 3
src/main/java/com/shcd/service/impl/SpStatementShipUsageMonthServiceImpl.java

@@ -131,7 +131,7 @@ public class SpStatementShipUsageMonthServiceImpl extends ServiceImpl<SpStatemen
             gh.setShorePowerCountMonth(ghMonth.getShorePowerCount().setScale(2, RoundingMode.HALF_UP));
             gh.setShorePowerCountYear(ghYear.getShorePowerCount().add(ghMonth.getShorePowerCount()).setScale(2, RoundingMode.HALF_UP));
             gh.setReportDate(DateUtils.stringToDate(thisYear + "-" + thisMonth, "yyyy-MM"));
-            gh.setDataSource(1);
+            gh.setDataSource(10);
             spStatementShipUsageMonths.add(gh);
             //新增线下数据
             //月度的
@@ -142,7 +142,7 @@ public class SpStatementShipUsageMonthServiceImpl extends ServiceImpl<SpStatemen
             if (underLineMonth != null && underLineYear != null) {
                 underLine.setId(snowflakeGenerator.next().toString());
                 underLine.setReportDate(toDate);
-                underLine.setDataSource(2);
+                underLine.setDataSource(20);
                 underLine.setShipUsageYear(underLineYear.getShipUsage().setScale(2, RoundingMode.HALF_UP));
                 underLine.setShipUsageMonth(underLineMonth.getShipUsage().setScale(2, RoundingMode.HALF_UP));
                 underLine.setShorePowerCountMonth(underLineMonth.getShorePowerCount().setScale(2, RoundingMode.HALF_UP));
@@ -162,7 +162,7 @@ public class SpStatementShipUsageMonthServiceImpl extends ServiceImpl<SpStatemen
             Thread.sleep(1);
             sum.setId(snowflakeGenerator.next().toString());
             sum.setReportDate(DateUtils.stringToDate(thisYear + "-" + thisMonth, "yyyy-MM"));
-            sum.setDataSource(3);
+            sum.setDataSource(99);
             sum.setShipUsageMonth(origin.getShipUsageMonth().add(gh.getShipUsageMonth()).add(underLine.getShipUsageMonth()).setScale(2, RoundingMode.HALF_UP));
             sum.setShipUsageYear(origin.getShipUsageYear().add(gh.getShipUsageYear()).add(underLine.getShipUsageMonth()).setScale(2, RoundingMode.HALF_UP));
             sum.setShorePowerCountMonth(origin.getShorePowerCountMonth().add(gh.getShorePowerCountMonth()).add(underLine.getShorePowerCountMonth()).setScale(2, RoundingMode.HALF_UP));
@@ -188,6 +188,43 @@ public class SpStatementShipUsageMonthServiceImpl extends ServiceImpl<SpStatemen
             wgq.setShorePowerTimeYear(wgqYear.getShorePowerTime().add(wgqMonth.getShorePowerTime()).setScale(2, RoundingMode.HALF_UP));
             wgq.setShorePowerCountYear(wgqYear.getShorePowerCount().add(wgqMonth.getShorePowerCount()).setScale(2, RoundingMode.HALF_UP));
             spStatementShipUsageMonths.add(wgq);
+            //计算内河平台数据
+            //先获取本月的数据
+            CompletableFuture<List<SpStatementShipUsageDetail>> futureInRiver = CompletableFuture.supplyAsync(() -> spStatementShipUsageMonthMapper.getInRiverDataThisMonth(thisDate, lastDate));
+            CompletableFuture<SpStatementShipUsageMonthVo> futureInRiverSelf = CompletableFuture.supplyAsync(() -> spStatementShipUsageMonthMapper.getInRiverDataSelfThisMonth(thisDate, lastDate));
+            //获取本月之前合计数据
+            CompletableFuture<SpStatementShipUsageMonthVo> futureInRiverLast = CompletableFuture.supplyAsync(() -> spStatementShipUsageMonthMapper.getInRiverDataBeforeThisMonth(dateStrLast));
+            CompletableFuture.allOf(futureInRiver, futureInRiverSelf, futureInRiverLast).join();
+            List<SpStatementShipUsageDetail> inRiverDetail = futureInRiver.get();
+            SpStatementShipUsageMonthVo inRiverSelfMonth = futureInRiverSelf.get();
+            SpStatementShipUsageMonthVo inRiverLast = futureInRiverLast.get();
+            SpStatementShipUsageMonthVo inRiver = makeOriginMonthData(inRiverDetail);
+            if (inRiverLast == null){
+               inRiverLast = new SpStatementShipUsageMonthVo();
+            }
+            SpStatementShipUsageMonth inRiverShipUsage = new SpStatementShipUsageMonth();
+            inRiverShipUsage.setId(snowflakeGenerator.next().toString());
+            inRiverShipUsage.setReportDate(DateUtils.stringToDate(thisYear + "-" + thisMonth, "yyyy-MM"));
+            inRiverShipUsage.setDataSource(1);
+            inRiverShipUsage.setShipUsageMonth(inRiver.getShipUsage().add(inRiverSelfMonth.getShipUsage()).setScale(2, RoundingMode.HALF_UP));
+            inRiverShipUsage.setShorePowerTimeMonth(inRiver.getShorePowerTime().add(inRiverSelfMonth.getShorePowerTime()).setScale(2, RoundingMode.HALF_UP));
+            inRiverShipUsage.setShorePowerCountMonth(inRiver.getShorePowerCount().add(inRiverSelfMonth.getShorePowerCount()).setScale(2,RoundingMode.HALF_UP));
+            inRiverShipUsage.setShipUsageYear(inRiverShipUsage.getShipUsageMonth().add(inRiverLast.getShipUsage()).setScale(2, RoundingMode.HALF_UP));
+            inRiverShipUsage.setShorePowerCountYear(inRiverShipUsage.getShorePowerCountMonth().add(inRiverLast.getShorePowerCount()).setScale(2, RoundingMode.HALF_UP));
+            inRiverShipUsage.setShorePowerTimeYear(inRiverShipUsage.getShorePowerTimeMonth().add(inRiverLast.getShorePowerTime()).setScale(2, RoundingMode.HALF_UP));
+            spStatementShipUsageMonths.add(inRiverShipUsage);
+            //计算外港平台数据
+            SpStatementShipUsageMonth outRiverShipUsage = new SpStatementShipUsageMonth();
+            outRiverShipUsage.setId(snowflakeGenerator.next().toString());
+            outRiverShipUsage.setReportDate(DateUtils.stringToDate(thisYear + "-" + thisMonth, "yyyy-MM"));
+            outRiverShipUsage.setDataSource(2);
+            outRiverShipUsage.setShipUsageMonth(origin.getShipUsageMonth().subtract(inRiverShipUsage.getShipUsageMonth()));
+            outRiverShipUsage.setShorePowerCountMonth(origin.getShorePowerCountMonth().subtract(inRiverShipUsage.getShorePowerCountMonth()));
+            outRiverShipUsage.setShorePowerTimeMonth(origin.getShorePowerTimeMonth().subtract(inRiverShipUsage.getShorePowerTimeMonth()));
+            outRiverShipUsage.setShipUsageYear(origin.getShipUsageYear().subtract(inRiverShipUsage.getShipUsageYear()));
+            outRiverShipUsage.setShorePowerCountYear(origin.getShorePowerCountYear().subtract(inRiverShipUsage.getShorePowerCountYear()));
+            outRiverShipUsage.setShorePowerTimeYear(origin.getShorePowerTimeYear().subtract(inRiverShipUsage.getShorePowerTimeYear()));
+            spStatementShipUsageMonths.add(outRiverShipUsage);
             this.saveBatch(spStatementShipUsageMonths);
             //岸电年比
             ArrayList<SpStatementYearAnalysis> save = new ArrayList<>();

+ 15 - 1
src/main/resources/mapper/SpStatementShipUsageMonthMapper.xml

@@ -31,7 +31,11 @@
     </select>
     <select id="selectGhDataYear" resultType="com.shcd.vo.SpStatementShipUsageMonthVo">
         select SHIP_USAGE_YEAR shipUsage, SHORE_POWER_COUNT_YEAR shorePowerCount,SHORE_POWER_TIME_YEAR shorePowerTime from GHJG_PORT_MANAGE.SP_STATEMENT_SHIP_USAGE_MONTH where trunc(REPORT_DATE) = to_date(#{toDate},'yyyy-mm-dd')
-        and DATA_SOURCE = 1
+        and DATA_SOURCE = 10
+    </select>
+    <select id="getInRiverDataBeforeThisMonth" resultType="com.shcd.vo.SpStatementShipUsageMonthVo">
+        select SHIP_USAGE_YEAR shipUsage, SHORE_POWER_COUNT_YEAR shorePowerCount,SHORE_POWER_TIME_YEAR shorePowerTime from GHJG_PORT_MANAGE.SP_STATEMENT_SHIP_USAGE_MONTH WHERE trunc(REPORT_DATE) = to_date(#{toDate},'yyyy-mm-dd')
+        AND DATA_SOURCE = 1
     </select>
     <select id="getUnderLineMonthData" resultType="com.shcd.vo.SpStatementShipUsageMonthVo">
         select  ship_usage shipUsage, power_time_use shorePowerCount, power_elec_use shorePowerTime from GHJG_PORT_MANAGE.SP_STATEMENT_UNDERLINE
@@ -73,4 +77,14 @@
         from GHJG_PORT_MANAGE.SP_STATEMENT_SHIP_USAGE_MONTH where trunc(REPORT_DATE) = to_date(#{toDate},'yyyy-mm-dd')
         and DATA_SOURCE = 100
     </select>
+    <select id="getInRiverDataThisMonth" resultType="com.shcd.vo.SpStatementShipUsageDetail">
+        select STARTTIME chargeStartDate, ENDTIME chargeEndDate ,ELECT shorePowerCount  from GHJG_PORT_MANAGE.SHORE_POWER_CONN_RECORD_INFO i
+        left join GHJG_PORT_MANAGE.SHORE_POWER_PORT_INFO_NEW b on B.PORTID = i.PORTID
+        where MODIFYTIME between #{lastDate} and #{thisDate} and CONNTYPE = '低压(标准化)' and area >= 2 AND b.AREA &lt;= 12
+    </select>
+    <select id="getInRiverDataSelfThisMonth" resultType="com.shcd.vo.SpStatementShipUsageMonthVo">
+        select  sum(USE_COUNT) shipUsage, sum(ELE_TIME) shorePowerCount, sum(USE_ELECTRICITY) shorePowerTime from GHJG_PORT_MANAGE.Shore_Power_Blberthmonthuse b
+                                                                                                             left join GHJG_PORT_MANAGE.SHORE_POWER_CHDEVICEFBO c on b.USER_BERTH_ID = c.USER_ID
+        where b.MODIFY_TIME >= #{lastDate} and b.MODIFY_TIME &lt;= #{thisDate} and c.AREA >= 2 AND c.AREA &lt;= 12
+    </select>
 </mapper>