Ver código fonte

处理补录数据

wukai 2 meses atrás
pai
commit
9602f606ce

+ 20 - 17
jjt-biz/src/main/java/com/jjt/dye/mapper/DyeCalcHourMapper.java

@@ -1,11 +1,8 @@
 package com.jjt.dye.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.jjt.dye.domain.DyeCalcHour;
-import org.apache.ibatis.annotations.Param;
-
 import java.util.Date;
 import java.util.List;
+import com.jjt.dye.domain.DyeCalcHour;
 
 /**
  * 小时统计数据Mapper接口
@@ -13,7 +10,8 @@ import java.util.List;
  * @author wukai
  * @date 2025-11-01
  */
-public interface DyeCalcHourMapper extends BaseMapper<DyeCalcHour> {
+public interface DyeCalcHourMapper
+{
     /**
      * 查询小时统计数据
      *
@@ -47,26 +45,31 @@ public interface DyeCalcHourMapper extends BaseMapper<DyeCalcHour> {
     public int updateDyeCalcHour(DyeCalcHour dyeCalcHour);
 
     /**
-     * 删除小时统计数据
+     * 批量删除小时统计数据
      *
-     * @param chId 小时统计数据主键
+     * @param chIds 需要删除的小时统计数据主键集合
      * @return 结果
      */
-    public int deleteDyeCalcHourByChId(Long chId);
+    public int deleteDyeCalcHourByChIds(Long[] chIds);
 
     /**
-     * 批量删除小时统计数据
+     * 删除小时统计数据信息
      *
-     * @param chIds 需要删除的数据主键集合
+     * @param chId 小时统计数据主键
      * @return 结果
      */
-    public int deleteDyeCalcHourByChIds(Long[] chIds);
-
+    public int deleteDyeCalcHourByChId(Long chId);
+    
     /**
      * 按小时删除数据
-     *
-     * @param date  时间
-     * @param hour  小时
+     * @param date 时间
+     * @param hour 小时
+     */
+    void deleteByHour(Date date, int hour);
+    
+    /**
+     * 查询最后一条记录
+     * @return DyeCalcHour
      */
-    void deleteByHour(@Param("date") Date date, @Param("hour") int hour);
-}
+    DyeCalcHour lastRecord();
+}

+ 4 - 1
jjt-biz/src/main/java/com/jjt/dye/service/IDyeCalcHourService.java

@@ -59,7 +59,10 @@ public interface IDyeCalcHourService {
      * @return 结果
      */
     public int deleteDyeCalcHourByChId(Long chId);
-
+    /**
+     * 补录数据至当前时间
+     */
+     void calc2Curr();
     /**
      * 计算上一小时数据
      */

+ 20 - 1
jjt-biz/src/main/java/com/jjt/dye/service/impl/DyeCalcHourServiceImpl.java

@@ -113,7 +113,26 @@ public class DyeCalcHourServiceImpl implements IDyeCalcHourService {
     public int deleteDyeCalcHourByChId(Long chId) {
         return dyeCalcHourMapper.deleteDyeCalcHourByChId(chId);
     }
+    /**
+     * 补录数据至当前时间
+     */
+    @Override
+    public void calc2Curr() {
+        DyeCalcHour last = dyeCalcHourMapper.lastRecord();
+        LocalDate localDate = DateUtils.toLocalDate(last.getDataDate());
+        LocalDateTime start = LocalDateTime.of(localDate, LocalTime.MIN).plusHours(last.getHour() + 1);
+        LocalDateTime end = start.plusHours(1);
 
+        LocalDateTime stop = Tools.currWholeTime();
+        while (!end.isAfter(stop)) {
+            calc(start.toLocalDate(), start.getHour());
+            // 记录日志
+            System.out.println("补录数据===========start:" + start + ",end:" + end + ",stop:" + stop);
+            start = end;
+            end = end.plusHours(1);
+        }
+    }
+    
     /**
      * 计算上一小时数据
      */
@@ -327,4 +346,4 @@ public class DyeCalcHourServiceImpl implements IDyeCalcHourService {
         }
     }
 
-}
+}

+ 5 - 2
jjt-biz/src/main/java/com/jjt/task/IndexTask.java

@@ -4,7 +4,6 @@ import com.jjt.biz.service.IApiAllService;
 import com.jjt.biz.service.IApiService;
 import com.jjt.biz.service.IApiYrService;
 import com.jjt.calc.service.ITwinCalcHourYhjService;
-import com.jjt.rz.service.ITwinCalcHourRzService;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
@@ -30,7 +29,11 @@ public class IndexTask {
      * 统计当前数据
      */
     public void curr() {
-        apiService.curr();
+        try {
+            apiService.curr();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
         try {
             yhjService.today();
         } catch (Exception e) {

+ 5 - 0
jjt-biz/src/main/java/com/jjt/utils/InitService.java

@@ -4,6 +4,7 @@ import com.jjt.biz.service.IApiService;
 import com.jjt.calc.service.ITwinCalcHourEnergyService;
 import com.jjt.calc.service.ITwinCalcHourService;
 import com.jjt.calc.service.ITwinCalcHourYhjService;
+import com.jjt.dye.service.IDyeCalcHourService;
 import com.jjt.rz.service.ITwinCalcHourRzService;
 import com.jjt.vms.service.IWmsService;
 import lombok.extern.slf4j.Slf4j;
@@ -38,6 +39,8 @@ public class InitService {
     private ITwinCalcHourEnergyService twinCalcHourEnergyService;
     @Resource
     private ITwinCalcHourRzService rzService;
+    @Resource
+    private IDyeCalcHourService dyeCalcHourService;
 
     @PostConstruct
     public void init() {
@@ -55,6 +58,8 @@ public class InitService {
             //补录印花线数据
             twinCalcHourYhjService.calc2Curr();
             //补录染整参数数据
+            dyeCalcHourService.calc2Curr();
+            //补录染整参数数据
             rzService.calc2Curr();
             //补录能耗数据至当前时间
             twinCalcHourEnergyService.calc2Curr();

+ 8 - 1
jjt-biz/src/main/resources/mapper/dye/DyeCalcHourMapper.xml

@@ -34,7 +34,8 @@
             <if test="dataDate != null ">and DATA_DATE = #{dataDate}</if>
             <if test="hour != null ">and HOUR = #{hour}</if>
             <if test="deviceId != null ">and DEVICE_ID = #{deviceId}</if>
-            <if test="deviceName != null  and deviceName != ''">and device_name like concat('%', #{deviceName}, '%')</if>
+            <if test="deviceName != null  and deviceName != ''">and device_name like concat('%', #{deviceName}, '%')
+            </if>
             <if test="paraCode != null  and paraCode != ''">and PARA_CODE = #{paraCode}</if>
             <if test="paraName != null  and paraName != ''">and PARA_NAME like concat('%', #{paraName}, '%')</if>
             <if test="paraValue != null ">and PARA_VALUE = #{paraValue}</if>
@@ -116,4 +117,10 @@
         where DATA_DATE = #{date}
           and HOUR = #{hour}
     </delete>
+
+    <select id="lastRecord" resultType="com.jjt.dye.domain.DyeCalcHour">
+        select top 1 *
+        from DYE_CALC_HOUR
+        order by data_date desc, hour desc
+    </select>
 </mapper>