[add]水泵运行日志总报表

This commit is contained in:
chengjunwang 2025-05-08 16:10:50 +08:00
parent e429032a14
commit fed3345b8a
8 changed files with 274 additions and 4 deletions

View File

@ -2,20 +2,23 @@ package com.jdc.jdcproject.controller;
import com.jdc.jdcproject.entity.FangpaishuiPumpoperationrecord;
import com.jdc.jdcproject.entity.FangpaishuiUnit;
import com.jdc.jdcproject.entity.VO.FangpaishuiPumpoperationrecordVo;
import com.jdc.jdcproject.entity.VO.FangpaishuiUnitVo;
import com.jdc.jdcproject.entity.FangpaishuiWatertreatmentrecord;
import com.jdc.jdcproject.entity.VO.*;
import com.jdc.jdcproject.service.EquipmentService;
import com.jdc.jdcproject.service.FangpaishuiPumpoperationrecordService;
import com.jdc.jdcproject.utils.LastDayOfMonth;
import com.jdc.jdcproject.utils.Result;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.sql.SQLOutput;
import java.text.ParseException;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/FangpaishuiPumpoperationrecordController")
@ -78,4 +81,22 @@ public class FangpaishuiPumpoperationrecordController {
return Result.errorResult();
}
}
@Operation(summary = "根据月查询排/倒水月报表")
@GetMapping("findFangpaishuiPumpoperationrecordByMonth/{date}")
public Result findWatertreatmentrecordByMonth(@PathVariable String date) throws ParseException {
String[] s = date.split("-");
int year = Integer.parseInt(s[0]);
int month = Integer.parseInt(s[1]);
LastDayOfMonth lastDayOfMonth = new LastDayOfMonth();
String upDay = lastDayOfMonth.getLastDayOfMonth(year, month-1);
String lastDay = lastDayOfMonth.getLastDayOfMonth(year, month);
upDay = lastDayOfMonth.dateCalculations(upDay,5);
lastDay = lastDayOfMonth.dateCalculations(lastDay,6);
FangpaishuiPumpoperationrecordReportByYearCountVo fangpaishuiPumpoperationrecordReportByYearCountVo =fangpaishuiPumpoperationrecordService.findAll(upDay,lastDay);
return Result.successResult().data("fangpaishuiPumpoperationrecordReportByYearCountVo",fangpaishuiPumpoperationrecordReportByYearCountVo);
}
}

View File

@ -0,0 +1,32 @@
package com.jdc.jdcproject.entity.VO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class FangpaishuiPumpoperationrecordReportByMonthCountVo implements Serializable {
@Schema(description = "排/倒明细总")
private List<FangpaishuiPumpoperationrecordReportVo> fangpaishuiPumpoperationrecordReportVos;
@Schema(description = "所有泵站月总排和倒水量")
private int VolumeAllByMouth;
@Schema(description = "所有泵站年总排和倒水量")
private int VolumeAllByYear;
@Schema(description = "类型")
private String type;
}

View File

@ -0,0 +1,28 @@
package com.jdc.jdcproject.entity.VO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class FangpaishuiPumpoperationrecordReportByYearCountVo implements Serializable {
@Schema(description = "合计报表")
private List<FangpaishuiPumpoperationrecordReportByMonthCountVo> fangpaishuiPumpoperationrecordReportByMonthCountVos;
@Schema(description = "月总排和倒水量")
private int VolumeByMouthCount;
@Schema(description = "年总排和倒水量")
private int VolumeByYearCount;
}

View File

@ -0,0 +1,29 @@
package com.jdc.jdcproject.entity.VO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@Data
public class FangpaishuiPumpoperationrecordReportVo implements Serializable {
@Schema(description = "泵站名称")
private String EquipmentName;
@Schema(description = "日志数据")
private List<FangpaishuiPumpoperationrecordVo> fangpaishuiPumpoperationrecordVos;
@Schema(description = "本泵站月总排/倒水量")
private int VolumeByMouth;
}

View File

@ -2,8 +2,10 @@ package com.jdc.jdcproject.mapper;
import com.jdc.jdcproject.entity.FangpaishuiPumpoperationrecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jdc.jdcproject.entity.VO.FangpaishuiPumpoperationrecordReportVo;
import com.jdc.jdcproject.entity.VO.FangpaishuiPumpoperationrecordVo;
import com.jdc.jdcproject.entity.VO.FangpaishuiUnitVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -16,6 +18,11 @@ import java.util.List;
public interface FangpaishuiPumpoperationrecordMapper extends BaseMapper<FangpaishuiPumpoperationrecord> {
List<FangpaishuiPumpoperationrecordVo> findDetail(FangpaishuiPumpoperationrecordVo vo);
List<FangpaishuiPumpoperationrecordVo> findAll(String upDate, String lastDate);
int findCount(@Param("type")String type, @Param("upDate")String upDate, @Param("lastDate") String lastDate);
}

View File

@ -26,5 +26,39 @@
</where>
</select>
<select id="findAll" parameterType="com.jdc.jdcproject.entity.VO.FangpaishuiPumpoperationrecordVo" resultType="com.jdc.jdcproject.entity.VO.FangpaishuiPumpoperationrecordVo">
SELECT
fp.RecordID,
e.EquipmentId,
e.EquipmentName,
fn.UnitId,
fn.UnitCode,
fn.RatedCapacity,
fp.OperationType,
fp.Sailings,
fp.StartupTime,
fp.EndTime,
fp.OperationTime,
fp.Volume,
fp.MONTH
FROM
fangpaishui_pumpoperationrecord fp
LEFT JOIN fangpaishui_unit fn ON fn.UnitID = fp.UnitID
JOIN equipment e ON fn.EquipmentId = e.EquipmentId
WHERE
fp.Month BETWEEN '${upDate}' AND '${lastDate}'
</select>
<select id="findCount" resultType="int">
SELECT
SUM(Volume)
FROM
fangpaishui_pumpoperationrecord
WHERE
Month BETWEEN '${upDate}' AND '${lastDate}'
and
OperationType = '${type}'
</select>
</mapper>

View File

@ -2,6 +2,8 @@ package com.jdc.jdcproject.service;
import com.jdc.jdcproject.entity.FangpaishuiPumpoperationrecord;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jdc.jdcproject.entity.VO.FangpaishuiPumpoperationrecordReportByYearCountVo;
import com.jdc.jdcproject.entity.VO.FangpaishuiPumpoperationrecordReportVo;
import com.jdc.jdcproject.entity.VO.FangpaishuiPumpoperationrecordVo;
import com.jdc.jdcproject.entity.VO.FangpaishuiUnitVo;
@ -13,5 +15,12 @@ import java.util.List;
* @createDate 2025-05-07 13:37:49
*/
public interface FangpaishuiPumpoperationrecordService extends IService<FangpaishuiPumpoperationrecord> {
//查询泵站操作明细
List<FangpaishuiPumpoperationrecordVo> findDetail(FangpaishuiPumpoperationrecordVo vo);
//查询泵站操作总报表
FangpaishuiPumpoperationrecordReportByYearCountVo findAll(String upDate, String lastDate);
//查询操作时间节点查询年总量
int findCount(String type,String lastDate);
}

View File

@ -2,12 +2,19 @@ package com.jdc.jdcproject.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jdc.jdcproject.entity.FangpaishuiPumpoperationrecord;
import com.jdc.jdcproject.entity.VO.FangpaishuiPumpoperationrecordReportByMonthCountVo;
import com.jdc.jdcproject.entity.VO.FangpaishuiPumpoperationrecordReportByYearCountVo;
import com.jdc.jdcproject.entity.VO.FangpaishuiPumpoperationrecordReportVo;
import com.jdc.jdcproject.entity.VO.FangpaishuiPumpoperationrecordVo;
import com.jdc.jdcproject.service.FangpaishuiPumpoperationrecordService;
import com.jdc.jdcproject.mapper.FangpaishuiPumpoperationrecordMapper;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @author 95262
@ -22,6 +29,109 @@ public class FangpaishuiPumpoperationrecordServiceImpl extends ServiceImpl<Fangp
public List<FangpaishuiPumpoperationrecordVo> findDetail(FangpaishuiPumpoperationrecordVo vo) {
return baseMapper.findDetail(vo);
}
@Override
public FangpaishuiPumpoperationrecordReportByYearCountVo findAll(String upDate, String lastDate) {
List<FangpaishuiPumpoperationrecordVo> fangpaishuiPumpoperationrecordVos = baseMapper.findAll(upDate,lastDate);
//根据类型分组排水/倒水
Map<String, List<FangpaishuiPumpoperationrecordVo>> stringListMap = fangpaishuiPumpoperationrecordVos.stream().collect(Collectors.groupingBy(FangpaishuiPumpoperationrecordVo::getOperationType));
List<FangpaishuiPumpoperationrecordVo> fangpaishuiPumpoperationrecordVoPais = new ArrayList<>();
List<FangpaishuiPumpoperationrecordVo> fangpaishuiPumpoperationrecordVoDao = new ArrayList<>();
Set<Map.Entry<String, List<FangpaishuiPumpoperationrecordVo>>> entries = stringListMap.entrySet();
for(Map.Entry m : entries){
if (m.getKey().equals("排水")){
fangpaishuiPumpoperationrecordVoPais.addAll((List<FangpaishuiPumpoperationrecordVo>) m.getValue());
}else {
fangpaishuiPumpoperationrecordVoDao.addAll((List<FangpaishuiPumpoperationrecordVo>) m.getValue());
}
}
//排水根据机组合并数据
fangpaishuiPumpoperationrecordVoPais = fangpaishuiPumpoperationrecordVoPais.stream().collect(Collectors.toMap(FangpaishuiPumpoperationrecordVo::getUnitID, a -> a, (o1,o2)-> {
o1.setOperationTime(o1.getOperationTime() + o2.getOperationTime());
o1.setVolume(o1.getVolume () + o2.getVolume ());
return o1;
})).values().stream().collect(Collectors.toList());
//倒水根据机组合并数据
fangpaishuiPumpoperationrecordVoDao = fangpaishuiPumpoperationrecordVoDao.stream().collect(Collectors.toMap(FangpaishuiPumpoperationrecordVo::getUnitID, a -> a, (o1,o2)-> {
o1.setOperationTime(o1.getOperationTime() + o2.getOperationTime());
o1.setVolume(o1.getVolume () + o2.getVolume ());
return o1;
})).values().stream().collect(Collectors.toList());
//排水根据泵站分组
Map<String, List<FangpaishuiPumpoperationrecordVo>> paiMap = fangpaishuiPumpoperationrecordVoPais.stream().collect(Collectors.groupingBy(FangpaishuiPumpoperationrecordVo::getEquipmentName));
Set<Map.Entry<String, List<FangpaishuiPumpoperationrecordVo>>> paiEntries = paiMap.entrySet();
List<FangpaishuiPumpoperationrecordReportVo> fangpaishuiPumpoperationrecordReportVosPai = new ArrayList<>();
for(Map.Entry m : paiEntries){
FangpaishuiPumpoperationrecordReportVo vo = new FangpaishuiPumpoperationrecordReportVo();
vo.setEquipmentName((String) m.getKey());
vo.setFangpaishuiPumpoperationrecordVos((List<FangpaishuiPumpoperationrecordVo>) m.getValue());
int VolumeByMouth =0;
for (FangpaishuiPumpoperationrecordVo fangpaishuiPumpoperationrecordVo : (List<FangpaishuiPumpoperationrecordVo>) m.getValue()) {
VolumeByMouth+=fangpaishuiPumpoperationrecordVo.getVolume();
}
vo.setVolumeByMouth(VolumeByMouth);
fangpaishuiPumpoperationrecordReportVosPai.add(vo);
}
//倒水根据泵站分组
Map<String, List<FangpaishuiPumpoperationrecordVo>> paiMap1 = fangpaishuiPumpoperationrecordVoDao.stream().collect(Collectors.groupingBy(FangpaishuiPumpoperationrecordVo::getEquipmentName));
Set<Map.Entry<String, List<FangpaishuiPumpoperationrecordVo>>> paiEntries1 = paiMap1.entrySet();
List<FangpaishuiPumpoperationrecordReportVo> fangpaishuiPumpoperationrecordReportVosDao = new ArrayList<>();
for(Map.Entry m : paiEntries1){
FangpaishuiPumpoperationrecordReportVo vo = new FangpaishuiPumpoperationrecordReportVo();
vo.setEquipmentName((String) m.getKey());
vo.setFangpaishuiPumpoperationrecordVos((List<FangpaishuiPumpoperationrecordVo>) m.getValue());
int VolumeByMouth =0;
for (FangpaishuiPumpoperationrecordVo fangpaishuiPumpoperationrecordVo : (List<FangpaishuiPumpoperationrecordVo>) m.getValue()) {
VolumeByMouth+=fangpaishuiPumpoperationrecordVo.getVolume();
}
vo.setVolumeByMouth(VolumeByMouth);
fangpaishuiPumpoperationrecordReportVosDao.add( vo);
}
FangpaishuiPumpoperationrecordReportByMonthCountVo fPai = new FangpaishuiPumpoperationrecordReportByMonthCountVo();
fPai.setFangpaishuiPumpoperationrecordReportVos(fangpaishuiPumpoperationrecordReportVosPai);
int VolumeAllByMouth = 0;
for (FangpaishuiPumpoperationrecordReportVo fangpaishuiPumpoperationrecordReportVo : fangpaishuiPumpoperationrecordReportVosPai) {
VolumeAllByMouth+=fangpaishuiPumpoperationrecordReportVo.getVolumeByMouth();
}
fPai.setVolumeAllByMouth(VolumeAllByMouth);
fPai.setType("排水");
fPai.setVolumeAllByYear(findCount("排水",lastDate));
FangpaishuiPumpoperationrecordReportByMonthCountVo fDao = new FangpaishuiPumpoperationrecordReportByMonthCountVo();
fDao.setFangpaishuiPumpoperationrecordReportVos(fangpaishuiPumpoperationrecordReportVosDao);
int VolumeAllByMouth1 = 0;
for (FangpaishuiPumpoperationrecordReportVo fangpaishuiPumpoperationrecordReportVo : fangpaishuiPumpoperationrecordReportVosDao) {
VolumeAllByMouth1+=fangpaishuiPumpoperationrecordReportVo.getVolumeByMouth();
}
fDao.setVolumeAllByMouth(VolumeAllByMouth1);
fDao.setType("倒水");
fDao.setVolumeAllByYear(findCount("倒水",lastDate));
FangpaishuiPumpoperationrecordReportByYearCountVo fangpaishuiPumpoperationrecordReportByYearCountVo = new FangpaishuiPumpoperationrecordReportByYearCountVo();
List<FangpaishuiPumpoperationrecordReportByMonthCountVo> all = new ArrayList<>();
all.add(fDao);
all.add(fPai);
fangpaishuiPumpoperationrecordReportByYearCountVo.setFangpaishuiPumpoperationrecordReportByMonthCountVos(all);
fangpaishuiPumpoperationrecordReportByYearCountVo.setVolumeByMouthCount(fDao.getVolumeAllByMouth()+fPai.getVolumeAllByMouth());
fangpaishuiPumpoperationrecordReportByYearCountVo.setVolumeByYearCount(fDao.getVolumeAllByYear()+fPai.getVolumeAllByYear());
return fangpaishuiPumpoperationrecordReportByYearCountVo;
}
@Override
public int findCount(String type, String lastDate) {
int year = Integer.valueOf(lastDate.substring(0,4)).intValue()-1;
String update =String.valueOf(year)+"-12-26";
return baseMapper.findCount(type,update,lastDate);
}
}