package com.dy.pipIrrStatistics.loss;
|
|
import com.alibaba.fastjson2.JSON;
|
import com.dy.common.webUtil.QueryResultVo;
|
import com.dy.pipIrrGlobal.daoRm.RmLossDayMapper;
|
import com.dy.pipIrrGlobal.daoSt.StLossMonthMapper;
|
import com.dy.pipIrrGlobal.voSt.VoDayLoss;
|
import com.dy.pipIrrGlobal.voSt.VoMonthAmount;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.dubbo.common.utils.PojoUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.text.ParseException;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @Author: liurunyu
|
* @Date: 2024/12/12 8:33
|
* @Description
|
*/
|
|
@Slf4j
|
@Service
|
public class LossSv {
|
|
@Autowired
|
private RmLossDayMapper dayDao;
|
|
@Autowired
|
private StLossMonthMapper monthDao;
|
|
/**
|
* 统计指定月份各天漏损量
|
* @param qo
|
* @return
|
*/
|
public QueryResultVo<List<VoDayLoss>> lossAmountOfDay(LossQo qo) throws ParseException {
|
QueryResultVo<List<VoDayLoss>> rsVo = new QueryResultVo<>() ;
|
// 生成查询参数
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
|
// 获取符合条件的记录数
|
Long itemTotal = dayDao.selectIntakeCount4LossDay(qo.intakeNum) ;
|
|
if(itemTotal != null && itemTotal > 0){
|
rsVo.pageSize = qo.pageSize ;
|
rsVo.pageCurr = qo.pageCurr ;
|
rsVo.calculateAndSet(itemTotal, params);
|
|
List<VoDayLoss> list = dayDao.selectIntakes4LossDay(params);
|
if(list == null || list.size() == 0){
|
rsVo.obj = list ;
|
}else{
|
String json = JSON.toJSONString(list) ;
|
params.put("intakesJson", json);
|
|
List<VoDayLoss> list01_05 = dayDao.selectLossAmountOfDay01_05(params);
|
if(list01_05 != null && list01_05.size() > 0){
|
//下面1到31号分了6个查询,原因是在一个查询中,非常慢,不知道什么原因,也许是子查询太多的原因
|
List<VoDayLoss> list06_10 = dayDao.selectLossAmountOfDay06_10(params);
|
List<VoDayLoss> list11_15 = dayDao.selectLossAmountOfDay11_15(params);
|
List<VoDayLoss> list16_20 = dayDao.selectLossAmountOfDay16_20(params);
|
List<VoDayLoss> list21_25 = dayDao.selectLossAmountOfDay21_25(params);
|
List<VoDayLoss> list26_31 = dayDao.selectLossAmountOfDay26_31(params);
|
this.merge(list01_05, list06_10, list11_15, list16_20, list21_25, list26_31);
|
}
|
rsVo.obj = list01_05 ;
|
}
|
}
|
return rsVo ;
|
}
|
|
private void merge(List<VoDayLoss> list01_05,
|
List<VoDayLoss> list06_10,
|
List<VoDayLoss> list11_15,
|
List<VoDayLoss> list16_20,
|
List<VoDayLoss> list21_25,
|
List<VoDayLoss> list26_31){
|
for(VoDayLoss vo01_05 : list01_05){
|
for(VoDayLoss vo06_10 : list06_10){
|
if(vo01_05.intakeId.longValue() == vo06_10.intakeId.longValue()){
|
vo01_05.lossAmount6 = vo06_10.lossAmount6 ;
|
vo01_05.lossAmount7 = vo06_10.lossAmount7 ;
|
vo01_05.lossAmount8 = vo06_10.lossAmount8 ;
|
vo01_05.lossAmount9 = vo06_10.lossAmount9 ;
|
vo01_05.lossAmount10 = vo06_10.lossAmount10 ;
|
break ;
|
}
|
}
|
for(VoDayLoss vo11_15 : list11_15){
|
if(vo01_05.intakeId.longValue() == vo11_15.intakeId.longValue()){
|
vo01_05.lossAmount11 = vo11_15.lossAmount11 ;
|
vo01_05.lossAmount12 = vo11_15.lossAmount12 ;
|
vo01_05.lossAmount13 = vo11_15.lossAmount13 ;
|
vo01_05.lossAmount14 = vo11_15.lossAmount14 ;
|
vo01_05.lossAmount15 = vo11_15.lossAmount15 ;
|
break ;
|
}
|
}
|
for(VoDayLoss vo16_20 : list16_20){
|
if(vo01_05.intakeId.longValue() == vo16_20.intakeId.longValue()){
|
vo01_05.lossAmount16 = vo16_20.lossAmount16 ;
|
vo01_05.lossAmount17 = vo16_20.lossAmount17 ;
|
vo01_05.lossAmount18 = vo16_20.lossAmount18 ;
|
vo01_05.lossAmount19 = vo16_20.lossAmount19 ;
|
vo01_05.lossAmount20 = vo16_20.lossAmount20 ;
|
break ;
|
}
|
}
|
for(VoDayLoss vo21_25 : list21_25){
|
if(vo01_05.intakeId.longValue() == vo21_25.intakeId.longValue()){
|
vo01_05.lossAmount21 = vo21_25.lossAmount21 ;
|
vo01_05.lossAmount22 = vo21_25.lossAmount22 ;
|
vo01_05.lossAmount23 = vo21_25.lossAmount23 ;
|
vo01_05.lossAmount24 = vo21_25.lossAmount24 ;
|
vo01_05.lossAmount25 = vo21_25.lossAmount25 ;
|
break ;
|
}
|
}
|
for(VoDayLoss vo26_31 : list26_31){
|
if(vo01_05.intakeId.longValue() == vo26_31.intakeId.longValue()){
|
vo01_05.lossAmount26 = vo26_31.lossAmount26 ;
|
vo01_05.lossAmount27 = vo26_31.lossAmount27 ;
|
vo01_05.lossAmount28 = vo26_31.lossAmount28 ;
|
vo01_05.lossAmount29 = vo26_31.lossAmount29 ;
|
vo01_05.lossAmount30 = vo26_31.lossAmount30 ;
|
vo01_05.lossAmount31 = vo26_31.lossAmount31 ;
|
break ;
|
}
|
}
|
}
|
}
|
|
|
/**
|
* 统计指定月份各月漏损量
|
* @param qo
|
* @return
|
*/
|
public QueryResultVo<List<VoMonthAmount>> lossAmountOfMonth(LossQo qo) throws ParseException {
|
QueryResultVo<List<VoMonthAmount>> rsVo = new QueryResultVo<>() ;
|
// 生成查询参数
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
|
// 获取符合条件的记录数
|
Long itemTotal = monthDao.selectIntakeCount4LossMonth(qo.intakeNum) ;
|
|
if(itemTotal != null && itemTotal > 0){
|
rsVo.pageSize = qo.pageSize ;
|
rsVo.pageCurr = qo.pageCurr ;
|
rsVo.calculateAndSet(itemTotal, params);
|
|
List<VoMonthAmount> list = monthDao.selectIntakes4LossMonth(params);
|
if(list == null || list.size() == 0){
|
rsVo.obj = list ;
|
}else{
|
String json = JSON.toJSONString(list) ;
|
params.put("intakesJson", json);
|
|
List<VoMonthAmount> list01_06 = monthDao.selectLossAmountOfMonth01_06(params);
|
if(list01_06 != null && list01_06.size() > 0){
|
//下面1到12月分了2个查询,原因是在一个查询中,非常慢,不知道什么原因,也许是子查询太多的原因
|
List<VoMonthAmount> list07_12 = monthDao.selectLossAmountOfMonth07_12(params);
|
this.merge(list01_06, list07_12);
|
}
|
rsVo.obj = list01_06 ;
|
}
|
}
|
return rsVo ;
|
}
|
|
private void merge(List<VoMonthAmount> list01_06,
|
List<VoMonthAmount> list07_12){
|
for(VoMonthAmount vo01_06 : list01_06){
|
for(VoMonthAmount vo07_12 : list07_12){
|
if(vo01_06.intakeId.longValue() == vo07_12.intakeId.longValue()){
|
vo01_06.month7 = vo07_12.month7 ;
|
vo01_06.month8 = vo07_12.month8 ;
|
vo01_06.month9 = vo07_12.month9 ;
|
vo01_06.month10 = vo07_12.month10 ;
|
vo01_06.month11 = vo07_12.month11 ;
|
vo01_06.month12 = vo07_12.month12 ;
|
break ;
|
}
|
}
|
}
|
}
|
}
|