水表bug修复
This commit is contained in:
parent
0f6b12cde2
commit
a053a1c928
@ -1,7 +1,6 @@
|
||||
package com.zhgd.xmgl.device.water.task;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.zhgd.jeecg.common.api.vo.Result;
|
||||
import com.zhgd.xmgl.modules.water.entity.WaterMeter;
|
||||
import com.zhgd.xmgl.modules.water.entity.WaterMeterMonthRecord;
|
||||
import com.zhgd.xmgl.modules.water.mapper.WaterMeterMapper;
|
||||
@ -11,7 +10,6 @@ import org.apache.commons.collections.MapUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@ -38,28 +36,29 @@ public class WaterMeterTask {
|
||||
* 统计前一月的用水
|
||||
*/
|
||||
@Scheduled(cron = "0 0 2 * * ?")
|
||||
public void getMonthWaterMeterTask(){
|
||||
public void getMonthWaterMeterTask() {
|
||||
try {
|
||||
QueryWrapper<WaterMeter> queryWrapper=new QueryWrapper<>();
|
||||
List<WaterMeter> list=waterMeterMapper.selectList(queryWrapper);
|
||||
if(list!=null&&list.size()>0){
|
||||
for (WaterMeter waterMeter:list){
|
||||
Map<String, Object> data=waterMeterMonthRecordMapper.selectWaterMeterMonthRecordByMeterNo(waterMeter.getWaterMeterNo());
|
||||
WaterMeterMonthRecord waterMeterMonthRecord=new WaterMeterMonthRecord();
|
||||
waterMeterMonthRecord.setMonthTime(MapUtils.getString(data,"monthTime"));
|
||||
QueryWrapper<WaterMeter> queryWrapper = new QueryWrapper<>();
|
||||
List<WaterMeter> list = waterMeterMapper.selectList(queryWrapper);
|
||||
if (list != null && list.size() > 0) {
|
||||
for (WaterMeter waterMeter : list) {
|
||||
Map<String, Object> data = waterMeterMonthRecordMapper.selectWaterMeterMonthRecordByMeterNo(waterMeter.getWaterMeterNo());
|
||||
WaterMeterMonthRecord waterMeterMonthRecord = new WaterMeterMonthRecord();
|
||||
waterMeterMonthRecord.setMonthTime(MapUtils.getString(data, "monthTime"));
|
||||
waterMeterMonthRecord.setProjectSn(waterMeter.getProjectSn());
|
||||
waterMeterMonthRecord.setWaterMeterNo(waterMeter.getWaterMeterNo());
|
||||
waterMeterMonthRecord.setWaterTonnage(new BigDecimal(MapUtils.getString(data,"useWater")));
|
||||
waterMeterMonthRecord.setStartWaterVolume(new BigDecimal(MapUtils.getString(data,"startWaterVolume")));
|
||||
waterMeterMonthRecord.setEndWaterVolume(new BigDecimal(MapUtils.getString(data,"endWaterVolume")));
|
||||
QueryWrapper<WaterMeterMonthRecord> qw=new QueryWrapper<>();
|
||||
qw.lambda().eq(WaterMeterMonthRecord::getProjectSn,waterMeter.getProjectSn())
|
||||
.eq(WaterMeterMonthRecord::getMonthTime,MapUtils.getString(data,"monthTime"))
|
||||
.eq(WaterMeterMonthRecord::getWaterMeterNo,waterMeter.getWaterMeterNo());
|
||||
WaterMeterMonthRecord oldWaterMeterMonthRecord=waterMeterMonthRecordMapper.selectOne(qw);
|
||||
if(oldWaterMeterMonthRecord!=null){
|
||||
waterMeterMonthRecord.setWaterTonnage(new BigDecimal(MapUtils.getString(data, "useWater")));
|
||||
waterMeterMonthRecord.setStartWaterVolume(new BigDecimal(MapUtils.getString(data, "startWaterVolume")));
|
||||
waterMeterMonthRecord.setEndWaterVolume(new BigDecimal(MapUtils.getString(data, "endWaterVolume")));
|
||||
QueryWrapper<WaterMeterMonthRecord> qw = new QueryWrapper<>();
|
||||
qw.lambda().eq(WaterMeterMonthRecord::getProjectSn, waterMeter.getProjectSn())
|
||||
.eq(WaterMeterMonthRecord::getMonthTime, MapUtils.getString(data, "monthTime"))
|
||||
.eq(WaterMeterMonthRecord::getWaterMeterNo, waterMeter.getWaterMeterNo());
|
||||
WaterMeterMonthRecord oldWaterMeterMonthRecord = waterMeterMonthRecordMapper.selectOne(qw);
|
||||
if (oldWaterMeterMonthRecord != null) {
|
||||
waterMeterMonthRecord.setId(oldWaterMeterMonthRecord.getId());
|
||||
}else{
|
||||
waterMeterMonthRecordMapper.updateById(waterMeterMonthRecord);
|
||||
} else {
|
||||
waterMeterMonthRecord.setAddTime(new Date());
|
||||
waterMeterMonthRecordMapper.insert(waterMeterMonthRecord);
|
||||
}
|
||||
|
||||
@ -1,60 +1,91 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.zhgd.xmgl.modules.water.mapper.WaterMeterMonthRecordMapper">
|
||||
|
||||
<select id="getCurrentMonthMeterRecord" resultType="com.zhgd.jeecg.common.mybatis.EntityMap">
|
||||
SELECT a.water_meter_no,IFNULL(b.water_tonnage,0) current_water_tonnage,IFNULL(b.water_tonnage,0)-IFNULL(c.end_water_volume,0) month_user_water,
|
||||
(CASE WHEN (IFNULL(b.water_tonnage,0)-IFNULL(c.end_water_volume,0))>IFNULL(d.threshold_value,0)
|
||||
THEN IFNULL(b.water_tonnage,0)-IFNULL(c.end_water_volume,0)-IFNULL(d.threshold_value,0) ELSE 0 END) exceed_quota_num,
|
||||
IFNULL(d.threshold_value,0) threshold_value,IFNULL(e.alarm_num,0) alarm_num
|
||||
from water_meter a LEFT JOIN
|
||||
(SELECT water_meter_no,project_sn,water_tonnage from water_meter_record_detail
|
||||
WHERE water_meter_no=#{waterMeterNo} ORDER BY add_time DESC LIMIT 1) b ON a.water_meter_no=b.water_meter_no
|
||||
LEFT JOIN (SELECT end_water_volume,water_meter_no FROM water_meter_month_record
|
||||
where month_time=DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -1 MONTH), "%Y-%m") and water_meter_no=#{waterMeterNo}) c ON a.water_meter_no=c.water_meter_no
|
||||
LEFT JOIN (SELECT water_meter_no,threshold_value FROM water_meter_threshold
|
||||
WHERE month_num=DATE_FORMAT(now(), "%c") and water_meter_no=#{waterMeterNo}) d ON a.water_meter_no=d.water_meter_no
|
||||
LEFT JOIN (SELECT water_meter_no,COUNT(1) alarm_num FROM water_meter_alarm
|
||||
WHERE DATE_FORMAT(alarm_time, "%Y-%m")=DATE_FORMAT(NOW(), "%Y-%m") and water_meter_no=#{waterMeterNo}) e ON a.water_meter_no=e.water_meter_no
|
||||
WHERE a.water_meter_no=#{waterMeterNo} and a.project_sn=#{projectSn}
|
||||
|
||||
</select>
|
||||
<select id="selectWaterMeterMonthList" resultType="java.util.Map" parameterType="java.util.Map">
|
||||
SELECT month_time monthTime, water_tonnage waterTonnage
|
||||
FROM water_meter_month_record
|
||||
WHERE water_meter_no=#{waterMeterNo} and project_sn=#{projectSn}
|
||||
AND DATE_FORMAT(CONCAT(month_time,'-01'),'%Y')=#{yearTime}
|
||||
ORDER BY month_time
|
||||
</select>
|
||||
<select id="selectCurrentWaterMeterMontRecord" resultType="java.util.Map" parameterType="java.util.Map">
|
||||
SELECT DATE_FORMAT(NOW(), "%Y-%m") monthTime,IFNULL(b.water_tonnage,0)-IFNULL(c.end_water_volume,0) waterTonnage
|
||||
from water_meter a LEFT JOIN
|
||||
(SELECT water_meter_no,project_sn,water_tonnage from water_meter_record_detail
|
||||
WHERE water_meter_no=#{waterMeterNo} ORDER BY add_time DESC LIMIT 1) b ON a.water_meter_no=b.water_meter_no
|
||||
LEFT JOIN (SELECT end_water_volume,water_meter_no FROM water_meter_month_record
|
||||
where month_time=DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -1 MONTH), "%Y-%m") and water_meter_no=#{waterMeterNo}) c ON a.water_meter_no=c.water_meter_no
|
||||
WHERE a.water_meter_no=#{waterMeterNo} and a.project_sn=#{projectSn}
|
||||
|
||||
</select>
|
||||
<select id="selectWaterMeterMonthRecordByMeterNo" resultType="java.util.Map">
|
||||
SELECT a.water_meter_no waterMeterNo,
|
||||
IFNULL(b.water_tonnage, 0) endWaterVolume,
|
||||
IFNULL(b.water_tonnage, 0) - IFNULL(c.end_water_volume, 0) useWater,
|
||||
DATE_FORMAT(NOW(), "%Y-%m") monthTime,
|
||||
a.project_sn projectSn,
|
||||
IFNULL(c.end_water_volume, 0) startWaterVolume
|
||||
SELECT a.water_meter_no,
|
||||
IFNULL(b.water_tonnage, 0) current_water_tonnage,
|
||||
IFNULL(b.water_tonnage, 0) - IFNULL(c.end_water_volume, 0) month_user_water,
|
||||
(CASE
|
||||
WHEN (IFNULL(b.water_tonnage, 0) - IFNULL(c.end_water_volume, 0)) > IFNULL(d.threshold_value, 0)
|
||||
THEN IFNULL(b.water_tonnage, 0) - IFNULL(c.end_water_volume, 0) - IFNULL(d.threshold_value, 0)
|
||||
ELSE 0 END) exceed_quota_num,
|
||||
IFNULL(d.threshold_value, 0) threshold_value,
|
||||
IFNULL(e.alarm_num, 0) alarm_num
|
||||
from water_meter a
|
||||
LEFT JOIN
|
||||
(SELECT water_meter_no, project_sn, water_tonnage
|
||||
from water_meter_record_detail
|
||||
WHERE water_meter_no = #{waterMeterNo}
|
||||
AND DATE_FORMAT(add_time, "%Y-%m") = DATE_FORMAT(NOW(), "%Y-%m")
|
||||
ORDER BY add_time desc LIMIT 1) b ON a.water_meter_no = b.water_meter_no
|
||||
ORDER BY add_time DESC
|
||||
LIMIT 1) b ON a.water_meter_no = b.water_meter_no
|
||||
LEFT JOIN (SELECT end_water_volume, water_meter_no
|
||||
FROM water_meter_month_record
|
||||
where month_time = DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 MONTH), "%Y-%m")
|
||||
and water_meter_no = #{waterMeterNo}) c ON a.water_meter_no = c.water_meter_no
|
||||
LEFT JOIN (SELECT water_meter_no, threshold_value
|
||||
FROM water_meter_threshold
|
||||
WHERE month_num = DATE_FORMAT(now(), "%c")
|
||||
and water_meter_no = #{waterMeterNo}) d ON a.water_meter_no = d.water_meter_no
|
||||
LEFT JOIN (SELECT water_meter_no, COUNT(1) alarm_num
|
||||
FROM water_meter_alarm
|
||||
WHERE DATE_FORMAT(alarm_time, "%Y-%m") = DATE_FORMAT(NOW(), "%Y-%m")
|
||||
and water_meter_no = #{waterMeterNo}) e ON a.water_meter_no = e.water_meter_no
|
||||
WHERE a.water_meter_no = #{waterMeterNo}
|
||||
and a.project_sn = #{projectSn}
|
||||
</select>
|
||||
<select id="selectWaterMeterMonthList" resultType="java.util.Map" parameterType="java.util.Map">
|
||||
SELECT month_time monthTime, water_tonnage waterTonnage
|
||||
FROM water_meter_month_record
|
||||
WHERE water_meter_no = #{waterMeterNo}
|
||||
and project_sn = #{projectSn}
|
||||
AND DATE_FORMAT(CONCAT(month_time, '-01'), '%Y') = #{yearTime}
|
||||
ORDER BY month_time
|
||||
</select>
|
||||
<select id="selectCurrentWaterMeterMontRecord" resultType="java.util.Map" parameterType="java.util.Map">
|
||||
SELECT DATE_FORMAT(NOW(), "%Y-%m") monthTime,
|
||||
IFNULL(b.water_tonnage, 0) - IFNULL(c.end_water_volume, 0) waterTonnage
|
||||
from water_meter a
|
||||
LEFT JOIN
|
||||
(SELECT water_meter_no, project_sn, water_tonnage
|
||||
from water_meter_record_detail
|
||||
WHERE water_meter_no = #{waterMeterNo}
|
||||
ORDER BY add_time DESC
|
||||
LIMIT 1) b ON a.water_meter_no = b.water_meter_no
|
||||
LEFT JOIN (SELECT end_water_volume, water_meter_no
|
||||
FROM water_meter_month_record
|
||||
where month_time = DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 MONTH), "%Y-%m")
|
||||
and water_meter_no = #{waterMeterNo}) c ON a.water_meter_no = c.water_meter_no
|
||||
WHERE a.water_meter_no = #{waterMeterNo}
|
||||
and a.project_sn = #{projectSn}
|
||||
</select>
|
||||
<select id="selectWaterMeterMonthRecordByMeterNo" resultType="java.util.Map">
|
||||
SELECT a.water_meter_no waterMeterNo,
|
||||
a.project_sn projectSn,
|
||||
DATE_FORMAT(NOW(), "%Y-%m") monthTime,
|
||||
IFNULL(c.water_tonnage, 0) startWaterVolume,
|
||||
IFNULL(b.water_tonnage, IFNULL(c.water_tonnage, 0)) endWaterVolume,
|
||||
IFNULL(b.water_tonnage, IFNULL(c.water_tonnage, 0)) - IFNULL(c.water_tonnage, 0) useWater
|
||||
FROM water_meter a
|
||||
LEFT JOIN (
|
||||
SELECT water_meter_no,
|
||||
project_sn,
|
||||
water_tonnage
|
||||
FROM water_meter_record_detail
|
||||
WHERE water_meter_no = #{waterMeterNo}
|
||||
AND DATE_FORMAT(add_time, "%Y-%m") = DATE_FORMAT(NOW(), "%Y-%m")
|
||||
ORDER BY add_time DESC
|
||||
LIMIT 1
|
||||
) b ON a.water_meter_no = b.water_meter_no
|
||||
LEFT JOIN (
|
||||
SELECT water_meter_no,
|
||||
project_sn,
|
||||
water_tonnage
|
||||
FROM water_meter_record_detail
|
||||
WHERE water_meter_no = #{waterMeterNo}
|
||||
AND DATE_FORMAT(add_time, "%Y-%m") = DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 MONTH), "%Y-%m")
|
||||
ORDER BY add_time DESC
|
||||
LIMIT 1
|
||||
) c ON a.water_meter_no = c.water_meter_no
|
||||
WHERE a.water_meter_no = #{waterMeterNo}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user