package com.dy.pipIrrTemp.changeSome;
|
|
import com.dy.common.util.DateTime;
|
import com.dy.pipIrrGlobal.daoTmp.ChangeMapper;
|
import com.dy.pipIrrGlobal.pojoRm.RmIntakeAmountDay;
|
import com.dy.pipIrrGlobal.pojoRm.RmLossDay;
|
import com.dy.pipIrrGlobal.pojoSt.StIntakeAmountMonth;
|
import com.dy.pipIrrGlobal.pojoSt.StIntakeAmountYear;
|
import com.dy.pipIrrGlobal.pojoSt.StLossMonth;
|
import com.dy.pipIrrGlobal.pojoSt.StLossYear;
|
import com.dy.pipIrrGlobal.voSt.VoIntake;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @Author: liurunyu
|
* @Date: 2024/12/24 8:47
|
* @Description
|
*/
|
@Slf4j
|
@Service
|
public class ChSomeIntakeLossSv {
|
|
private ChangeMapper dao;
|
|
private static final int IntakeLossDayFlag = 800 ;//2024-12-14统计元谋数据库实时数据,发现大于800的正确的数据不存在,而小于800的基本为正确数据
|
|
@Autowired
|
private void setDao(ChangeMapper dao){
|
this.dao = dao;
|
}
|
|
////////////////////////////////////////
|
//
|
// 有关日统计
|
//
|
///////////////////////////////////////
|
/**
|
* 调整取水口日漏损量统计
|
* @throws Exception
|
*/
|
public void chIntakeLossDay() throws Exception{
|
List<VoIntake> list = dao.selectAllPrIntakes() ;
|
if(list != null && list.size() > 0){
|
for(VoIntake vo : list){
|
List<RmLossDay> adList = dao.selectOneIntakeAllLossDay(vo.getIntakeId()) ;
|
if(adList != null && adList.size() > 0){
|
//adList中数据以id升序排列
|
for(RmLossDay ad : adList){
|
if(ad.lossAmount != null && ad.lossAmount > IntakeLossDayFlag){
|
this.doUpdateOneIntakeLossDay(ad.id, 0.0);
|
}
|
}
|
}
|
}
|
}
|
}
|
|
@Transactional
|
protected int doUpdateOneIntakeLossDay(Long id, Double loss){
|
return dao.updateOneIntakeLossDay(id, loss);
|
}
|
|
|
|
////////////////////////////////////////
|
//
|
// 有关月统计
|
//
|
///////////////////////////////////////
|
|
private static final int DealStartYear = 2024 ;
|
private static final int DealStartMonth = 8 ;
|
|
private static final String endDayOfMonth(int year, int month){
|
if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12){
|
return "31" ;
|
}else{
|
if(month == 2){
|
if(DateTime.isLeapYear(year)){
|
return "29" ;
|
}else{
|
return "28" ;
|
}
|
}else{
|
return "30" ;
|
}
|
}
|
}
|
/**
|
* 删除所有取水口月漏损量统计
|
* @throws Exception
|
*/
|
@Transactional
|
public void deleteAllIntakeLossMonth(){
|
dao.deleteAllIntakeLossMonth();
|
}
|
|
/**
|
* 统计取水口月漏损量
|
* @throws Exception
|
*/
|
public void statisticsIntakeLossMonth() throws Exception{
|
int nowYear = Integer.parseInt(DateTime.yyyy()) ;
|
int nowMonth = Integer.parseInt(DateTime.mm()) ;
|
Date startDt ;
|
Date endDt ;
|
List<StLossMonth> list ;
|
for(int year = DealStartYear; year <= nowYear; year ++){
|
list = null ;
|
if(year < nowYear){
|
for(int month = 1 ; month <= 12 ; month ++){
|
startDt = DateTime.dateFrom_yyyy_MM_dd(year + "-" + month + "-01") ;
|
endDt = DateTime.dateFrom_yyyy_MM_dd(year + "-" + month + "-" + endDayOfMonth(year, month)) ;
|
list = dao.statisticAllIntakeLossMonthFromLossDay(startDt, endDt) ;
|
this.doStatisticsIntakeLossMonth(year, month, list) ;
|
}
|
}else{
|
for(int month = 1 ; month <= nowMonth ; month ++){
|
startDt = DateTime.dateFrom_yyyy_MM_dd(year + "-" + month + "-01") ;
|
endDt = DateTime.dateFrom_yyyy_MM_dd(year + "-" + month + "-" + endDayOfMonth(year, month)) ;
|
list = dao.statisticAllIntakeLossMonthFromLossDay(startDt, endDt) ;
|
this.doStatisticsIntakeLossMonth(year, month, list) ;
|
}
|
}
|
}
|
}
|
@Transactional
|
protected void doStatisticsIntakeLossMonth(int year, int month, List<StLossMonth> list) throws Exception{
|
if(list != null && list.size() > 0){
|
for(StLossMonth po : list){
|
po.year = year ;
|
po.month = month ;
|
dao.saveOneIntakeLossMonth(po) ;
|
}
|
}
|
}
|
|
|
|
|
////////////////////////////////////////
|
//
|
// 有关年统计
|
//
|
///////////////////////////////////////
|
/**
|
* 删除所有取水口年漏损量统计
|
* @throws Exception
|
*/
|
@Transactional
|
public void deleteAllIntakeLossYear(){
|
dao.deleteAllIntakeLossYear();
|
}
|
|
/**
|
* 统计取水口月漏损量
|
* @throws Exception
|
*/
|
public void statisticsIntakeLossYear() throws Exception{
|
int nowYear = Integer.parseInt(DateTime.yyyy()) ;
|
Date startDt ;
|
Date endDt ;
|
List<StLossYear> list ;
|
for(int year = DealStartYear; year <= nowYear; year ++){
|
list = null ;
|
startDt = DateTime.dateFrom_yyyy_MM_dd(year + "-01-01") ;
|
endDt = DateTime.dateFrom_yyyy_MM_dd(year + "-12-31") ;
|
list = dao.statisticAllIntakeLossYearFromLossDay(startDt, endDt) ;
|
this.doStatisticsIntakeLossYear(year, list) ;
|
}
|
}
|
@Transactional
|
protected void doStatisticsIntakeLossYear(int year, List<StLossYear> list) throws Exception{
|
if(list != null && list.size() > 0){
|
for(StLossYear po : list){
|
po.year = year ;
|
dao.saveOneIntakeLossYear(po) ;
|
}
|
}
|
}
|
|
}
|