Pārlūkot izejas kodu

灯控亮灯时长统计

zhj 10 mēneši atpakaļ
vecāks
revīzija
3f1438f2a7

+ 51 - 0
src/main/java/com/welampiot/controller/LampController.java

@@ -39,6 +39,12 @@ public class LampController {
     @Autowired
     private LampService lampService;
     @Autowired
+    private LampInfoLogService lampInfoLogService;
+    @Autowired
+    private LampInfoLogNewService lampInfoLogNewService;
+    @Autowired
+    private LampInfoCacheByDayService lampInfoCacheByDayService;
+    @Autowired
     private ToolUtils toolUtils;
     @Autowired
     private NetworkService networkService;
@@ -1783,4 +1789,49 @@ public class LampController {
         lampPoleVO.setList(lampPoleList);
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,lampPoleVO);
     }
+
+    /**
+     * 灯控亮灯时长统计
+     */
+    @RequestMapping(value = "/getLampLightTime", method = RequestMethod.POST)
+    public BaseResult<?> lampPoleData(LampVO lampVO) {
+        Integer version = lampVO.getVersion();
+        if (lampVO.getId() == null || lampVO.getId() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR, version);
+        LampInfoLogDTO nowDayDTO = lampInfoLogService.getNowDayLampInfoLog(lampVO.getId());
+        LampInfoLogDTO beforeDTO = lampInfoLogService.getBeforeTodayLampInfoLog(lampVO.getId());
+
+        LampLogVO lampLogVO = new LampLogVO();
+        if (nowDayDTO != null && beforeDTO != null) {
+            int nowLightTime = nowDayDTO.getWorkTimeTotal() - beforeDTO.getWorkTimeTotal();
+            nowLightTime = Math.max(nowLightTime, 0);
+            nowLightTime = Math.min(nowLightTime, 1440);
+            lampLogVO.setDayLightTime(nowLightTime);
+        } else if (nowDayDTO != null) {
+            lampLogVO.setDayLightTime(nowDayDTO.getWorkTimeTotal());
+        }  else {
+            lampLogVO.setDayLightTime(0);
+        }
+
+        LampInfoLogNewDTO newestLampInfoLog = lampInfoLogNewService.getNewestLampInfoLog(lampVO.getId());
+        if (newestLampInfoLog != null) {
+            lampLogVO.setTotalLightTime(Long.valueOf(newestLampInfoLog.getWorkTimeTotal()));
+        } else {
+            lampLogVO.setTotalLightTime(0L);
+        }
+
+        LampInfoCacheByDayDTO sumMonth = lampInfoCacheByDayService.getSumMonthByLampId(lampVO.getId());
+        LampInfoCacheByDayDTO sumYear = lampInfoCacheByDayService.getSumYearByLampId(lampVO.getId());
+        if (sumMonth != null) {
+            lampLogVO.setMonthLightTime(sumMonth.getLightTime());
+        } else {
+            lampLogVO.setMonthLightTime(0L);
+        }
+        if (sumYear != null) {
+            lampLogVO.setYearLightTime(sumYear.getLightTime());
+        } else {
+            lampLogVO.setYearLightTime(0L);
+        }
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS, version, lampLogVO);
+    }
 }

+ 3 - 0
src/main/java/com/welampiot/dao/LampInfoCacheByDayDao.java

@@ -45,4 +45,7 @@ public interface LampInfoCacheByDayDao {
     LampInfoCacheByDayDTO getMonthEleConByLedgerLampDTO(LedgerLampDTO ledgerLampDTO);
 
     LampInfoCacheByDayDTO getDayEleConByLedgerLampDTO(LedgerLampDTO ledgerLampDTO);
+
+    LampInfoCacheByDayDTO getSumMonthByLampId(Integer lampId);
+    LampInfoCacheByDayDTO getSumYearByLampId(Integer lampId);
 }

+ 2 - 0
src/main/java/com/welampiot/dao/LampInfoLogDao.java

@@ -18,4 +18,6 @@ public interface LampInfoLogDao {
     AllAlarmInfoLogVO alarmCountChart(LampInfoLogDTO dto);
     LampInfoLogDTO getOne(Integer lampId);
     List<LampInfoLogDTO> getList(LampInfoLogDTO dto);
+    LampInfoLogDTO getNowDayLampInfoLog(@Param("lampId") Integer lampId);
+    LampInfoLogDTO getBeforeTodayLampInfoLog(@Param("lampId") Integer lampId);
 }

+ 1 - 0
src/main/java/com/welampiot/dao/LampInfoLogNewDao.java

@@ -21,4 +21,5 @@ public interface LampInfoLogNewDao {
     LampInfoLogNewDTO getTodayEleByDTO(LampInfoDTO dto);
 
     LampInfoLogNewDTO getGeneraEnergy(@Param("type") Integer type, @Param("value") Integer value);
+    LampInfoLogNewDTO getNewestLampInfoLog(@Param("lampId") Integer lampId);
 }

+ 3 - 0
src/main/java/com/welampiot/service/LampInfoCacheByDayService.java

@@ -45,4 +45,7 @@ public interface LampInfoCacheByDayService {
     LampInfoCacheByDayDTO getMonthEleConByLedgerLampDTO(LedgerLampDTO ledgerLampDTO);
 
     LampInfoCacheByDayDTO getDayEleConByLedgerLampDTO(LedgerLampDTO ledgerLampDTO);
+
+    LampInfoCacheByDayDTO getSumMonthByLampId(Integer lampId);
+    LampInfoCacheByDayDTO getSumYearByLampId(Integer lampId);
 }

+ 2 - 0
src/main/java/com/welampiot/service/LampInfoLogNewService.java

@@ -21,4 +21,6 @@ public interface LampInfoLogNewService {
     LampInfoLogNewDTO getTodayEleByDTO(LampInfoDTO dto);
 
     LampInfoLogNewDTO getGeneraEnergy(Integer type,Integer value);
+
+    LampInfoLogNewDTO getNewestLampInfoLog(Integer lampId);
 }

+ 2 - 0
src/main/java/com/welampiot/service/LampInfoLogService.java

@@ -17,4 +17,6 @@ public interface LampInfoLogService {
     AllAlarmInfoLogVO alarmCountChart(LampInfoLogDTO dto);
     LampInfoLogDTO getOne(Integer lampId);
     List<LampInfoLogDTO> getList(LampInfoLogDTO dto);
+    LampInfoLogDTO getNowDayLampInfoLog(Integer lampId);
+    LampInfoLogDTO getBeforeTodayLampInfoLog(Integer lampId);
 }

+ 10 - 0
src/main/java/com/welampiot/service/impl/LampInfoCacheByDayServiceImpl.java

@@ -206,4 +206,14 @@ public class LampInfoCacheByDayServiceImpl implements LampInfoCacheByDayService
     public LampInfoCacheByDayDTO getDayEleConByLedgerLampDTO(LedgerLampDTO ledgerLampDTO) {
         return lampInfoCacheByDayDao.getDayEleConByLedgerLampDTO(ledgerLampDTO);
     }
+
+    @Override
+    public LampInfoCacheByDayDTO getSumMonthByLampId(Integer lampId) {
+        return lampInfoCacheByDayDao.getSumMonthByLampId(lampId);
+    }
+
+    @Override
+    public LampInfoCacheByDayDTO getSumYearByLampId(Integer lampId) {
+        return lampInfoCacheByDayDao.getSumYearByLampId(lampId);
+    }
 }

+ 5 - 0
src/main/java/com/welampiot/service/impl/LampInfoLogNewServiceImpl.java

@@ -51,4 +51,9 @@ public class LampInfoLogNewServiceImpl implements LampInfoLogNewService {
     public LampInfoLogNewDTO getGeneraEnergy(Integer type, Integer value) {
         return lampInfoLogNewDao.getGeneraEnergy(type, value);
     }
+
+    @Override
+    public LampInfoLogNewDTO getNewestLampInfoLog(Integer lampId) {
+        return lampInfoLogNewDao.getNewestLampInfoLog(lampId);
+    }
 }

+ 10 - 0
src/main/java/com/welampiot/service/impl/LampInfoLogServiceImpl.java

@@ -59,4 +59,14 @@ public class LampInfoLogServiceImpl implements LampInfoLogService {
     public List<LampInfoLogDTO> getList(LampInfoLogDTO dto){
         return lampInfoLogDao.getList(dto);
     }
+
+    @Override
+    public LampInfoLogDTO getNowDayLampInfoLog(Integer lampId) {
+        return lampInfoLogDao.getNowDayLampInfoLog(lampId);
+    }
+
+    @Override
+    public LampInfoLogDTO getBeforeTodayLampInfoLog(Integer lampId) {
+        return lampInfoLogDao.getBeforeTodayLampInfoLog(lampId);
+    }
 }

+ 5 - 0
src/main/java/com/welampiot/vo/LampLogVO.java

@@ -26,4 +26,9 @@ public class LampLogVO {
     private String maxLight;
     private Integer step;
     private List list;
+
+    private Integer dayLightTime;
+    private Long monthLightTime;
+    private Long yearLightTime;
+    private Long totalLightTime;
 }

+ 1 - 1
src/main/java/com/welampiot/vo/LampVO.java

@@ -42,7 +42,7 @@ public class LampVO implements Serializable {
     private List<LampInfoDTO> list;
 
     private Integer loopId;
-
+    private Integer id;
     private String lampId;
     private Integer status;
 

+ 16 - 0
src/main/resources/mapper/LampInfoCacheByDayMapper.xml

@@ -338,4 +338,20 @@
           AND a.updatetime = #{updateTime}
     </select>
 
+    <!--  查询某一个灯控的当月的累计亮灯时长  -->
+    <select id="getSumMonthByLampId" resultType="LampInfoCacheByDayDTO">
+        select sum(l.lightTime) as lightTime
+        from lamp_info_cache_by_day l
+        where l.lampid = #{lampId}
+        and DATE_FORMAT(l.updatetime, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m')
+    </select>
+
+    <!--  查询某一个灯控的当年的累计亮灯时长  -->
+    <select id="getSumYearByLampId" resultType="LampInfoCacheByDayDTO">
+        select sum(l.lightTime) as lightTime
+        from lamp_info_cache_by_day l
+        where l.lampid = #{lampId}
+          and YEAR(l.updatetime) = YEAR(CURDATE())
+    </select>
+
 </mapper>

+ 18 - 0
src/main/resources/mapper/LampInfoLogMapper.xml

@@ -153,4 +153,22 @@
         </if>
         order by updatetime DESC
     </select>
+
+    <!--  获取当天最新的日志  -->
+    <select id="getNowDayLampInfoLog" resultType="LampInfoLogDTO">
+        SELECT l.ne_work_time_total AS lightTime,l.updatetime AS updateTime
+        FROM lamp_info_log l
+        WHERE l.lampid = #{lampId} AND DATE(l.updatetime) = CURDATE()
+        ORDER BY l.updatetime DESC
+        LIMIT 1
+    </select>
+
+    <select id="getBeforeTodayLampInfoLog" resultType="LampInfoLogDTO">
+        SELECT l.work_time_total AS workTimeTotal,l.updatetime AS updateTime
+        FROM lamp_info_log l
+        WHERE l.lampid = #{lampId} AND DATE(l.updatetime) <![CDATA[ < ]]> CURDATE()
+        ORDER BY l.updatetime DESC
+        LIMIT 1
+    </select>
+
 </mapper>

+ 8 - 0
src/main/resources/mapper/LampInfoLogNewMapper.xml

@@ -82,4 +82,12 @@
         </choose>
     </select>
 
+    <select id="getNewestLampInfoLog" resultType="LampInfoLogNewDTO">
+        select l.work_time_total AS workTimeTotal
+        from lamp_info_log_new l
+        where l.lampid = #{lampId}
+        order by l.updatetime DESC
+        limit 1
+    </select>
+
 </mapper>