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