add - ems业态能耗分析

master
yinq 1 month ago
parent 366520b042
commit d328c6e6d3

@ -112,4 +112,16 @@ public class energyPreviewController extends BaseController {
return AjaxResult.success(result); return AjaxResult.success(result);
} }
/**
*
* @param paramMap
* @return
*/
@ResponseBody
@GetMapping("/businessEnergyConsumptionAnalysis")
public AjaxResult businessEnergyConsumptionAnalysis(@RequestParam(required = false) Map paramMap) {
Map<String, Object> result = energyPreviewService.businessEnergyConsumptionAnalysis(paramMap);
return AjaxResult.success(result);
}
} }

@ -86,4 +86,8 @@ public interface ReportPointDnbMapper {
List<ReportOrderEnergyDTO> linesConsumptionComparison(ReportOrderEnergyDTO energyDTO); List<ReportOrderEnergyDTO> linesConsumptionComparison(ReportOrderEnergyDTO energyDTO);
List<ReportOrderEnergyDTO> productConsumptionComparison(ReportOrderEnergyDTO energyDTO); List<ReportOrderEnergyDTO> productConsumptionComparison(ReportOrderEnergyDTO energyDTO);
List<ReportPointDnb> selectPointDnbGroupList(ReportPointDnb pointDnb);
List<Map<String, String>> datePointDnbGroupList(ReportPointDnb lineDnb);
} }

@ -107,4 +107,11 @@ public interface IEnergyPreviewService {
* @return * @return
*/ */
Map<String, Object> productConsumptionComparison(ReportOrderEnergyDTO energyDTO); Map<String, Object> productConsumptionComparison(ReportOrderEnergyDTO energyDTO);
/**
*
* @param paramMap
* @return
*/
Map<String, Object> businessEnergyConsumptionAnalysis(Map paramMap);
} }

@ -3,9 +3,11 @@ package com.op.energy.report.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
import com.op.energy.base.domain.BaseBuildInfo; import com.op.energy.base.domain.BaseBuildInfo;
import com.op.energy.base.domain.BaseBusinessType;
import com.op.energy.base.domain.BaseMonitorInfo; import com.op.energy.base.domain.BaseMonitorInfo;
import com.op.energy.base.domain.BaseTypeRelation; import com.op.energy.base.domain.BaseTypeRelation;
import com.op.energy.base.mapper.BaseBuildInfoMapper; import com.op.energy.base.mapper.BaseBuildInfoMapper;
import com.op.energy.base.mapper.BaseBusinessTypeMapper;
import com.op.energy.base.mapper.BaseTypeRelationMapper; import com.op.energy.base.mapper.BaseTypeRelationMapper;
import com.op.energy.base.service.IBaseMonitorInfoService; import com.op.energy.base.service.IBaseMonitorInfoService;
import com.op.energy.base.utils.DateUtils; import com.op.energy.base.utils.DateUtils;
@ -53,6 +55,9 @@ public class EnergyPreviewServiceImpl implements IEnergyPreviewService {
@Autowired @Autowired
private BaseBuildInfoMapper baseBuildInfoMapper; private BaseBuildInfoMapper baseBuildInfoMapper;
@Autowired
private BaseBusinessTypeMapper baseBusinessTypeMapper;
@Autowired @Autowired
private RecordDnbInstantMapper recordDnbInstantMapper; private RecordDnbInstantMapper recordDnbInstantMapper;
@ -810,6 +815,7 @@ public class EnergyPreviewServiceImpl implements IEnergyPreviewService {
/** /**
* *
*
* @param energyDTO * @param energyDTO
* @return * @return
*/ */
@ -841,4 +847,93 @@ public class EnergyPreviewServiceImpl implements IEnergyPreviewService {
result.put("data", dataMap); result.put("data", dataMap);
return result; return result;
} }
/**
*
*
* @param paramMap
* @return
*/
@Override
@DS("#header.poolName")
public Map<String, Object> businessEnergyConsumptionAnalysis(Map paramMap) {
HashMap<String, Object> result = new HashMap<>();
List<HashMap<String, String>> tableList = new ArrayList<>();
List<String> electricityList = new ArrayList<>();
HashMap<String, BigDecimal> pieMap = new LinkedHashMap<>();
if (!paramMap.containsKey("type") || !paramMap.containsKey("energyType") ||
String.valueOf(paramMap.get("startTime")).equals("") || String.valueOf(paramMap.get("endTime")).equals("")) {
return result;
}
String energyType = String.valueOf(paramMap.get("energyType"));
//小时 天 月 年
String type = String.valueOf(paramMap.get("type"));
if (!paramMap.containsKey("businessId")) {
return result;
}
Long businessId = Long.valueOf(String.valueOf(paramMap.get("businessId")));
BaseBusinessType businessType = new BaseBusinessType();
businessType.setParentId(businessId);
List<BaseBusinessType> businessTypeList = baseBusinessTypeMapper.selectBaseBusinessTypeList(businessType);
// BaseBusinessType baseBusinessType = baseBusinessTypeMapper.selectBaseBusinessTypeByObjid(businessId);
BigDecimal totalExpend = BigDecimal.ZERO;
for (BaseBusinessType business : businessTypeList) {
Long objId = business.getObjid();
String businessName = business.getBusinessName();
BaseTypeRelation relation = new BaseTypeRelation();
relation.setType(1L);
relation.setRelationId(objId);
List<BaseTypeRelation> baseTypeRelations = baseTypeRelationMapper.selectBaseTypeRelationList(relation);
List<String> monitorIdList = baseTypeRelations.stream().map(BaseTypeRelation::getMonitorId).collect(Collectors.toList());
electricityList.addAll(monitorIdList);
paramMap.put("monitorIdList", monitorIdList);
if (energyType.equals("2") && !monitorIdList.isEmpty()) {
ReportPointDnb pointDnb = new ReportPointDnb();
pointDnb.setParams(paramMap);
List<ReportPointDnb> pointDnbList = reportPointDnbMapper.selectPointDnbGroupList(pointDnb);
for (ReportPointDnb reportPointDnb : pointDnbList) {
BigDecimal expend = reportPointDnb.getExpend();
HashMap<String, String> tableMap = new HashMap<>();
tableMap.put("monitorId", reportPointDnb.getMonitorId());
tableMap.put("monitorName", reportPointDnb.getMonitorName());
tableMap.put("businessName", businessName);
tableMap.put("expend", expend.toPlainString());
tableList.add(tableMap);
pieMap.put(businessName,pieMap.containsKey(businessName) ? expend.add(pieMap.get(businessName)) : expend);
// 累加到总和中
totalExpend = totalExpend.add(expend);
}
}
}
ReportPointDnb lineDnb = new ReportPointDnb();
HashMap<String, Object> params = new HashMap<>();
if (type.equals("day")) {
params.put("timeSub", 10);
} else if (type.equals("month")) {
params.put("timeSub", 7);
} else if (type.equals("year")) {
params.put("timeSub", 4);
}
params.put("startTime", paramMap.get("startTime"));
params.put("endTime", paramMap.get("endTime"));
params.put("monitorIdList", electricityList);
lineDnb.setParams(params);
if (electricityList.size() > 0) {
List<Map<String, String>> lineDnbList = reportPointDnbMapper.datePointDnbGroupList(lineDnb);
result.put("lineDnbList", lineDnbList);
} else {
result.put("lineDnbList", new ArrayList<>());
}
result.put("pieMap", pieMap);
HashMap<String, String> tableMap = new HashMap<>();
tableMap.put("businessName", "总用电量");
tableMap.put("expend", totalExpend.toPlainString());
tableList.add(tableMap);
result.put("tableList", tableList);
result.put("totalExpend", totalExpend.toPlainString());
return result;
}
} }

@ -179,7 +179,7 @@
order by ert.monitor_id, ert.monitor_name, ert.pointTime order by ert.monitor_id, ert.monitor_name, ert.pointTime
</select> </select>
<select id="datePointDnbList" parameterType="ReportPointDnb" resultMap="ReportPointDnbDTOResult"> <select id="datePointDnbList" resultType="java.util.Map">
select ert.monitor_id, select ert.monitor_id,
ert.monitor_name, ert.monitor_name,
CAST( CASE CAST( CASE
@ -450,4 +450,48 @@
ORDER BY pow.product_name ORDER BY pow.product_name
</select> </select>
<select id="selectPointDnbGroupList" parameterType="ReportPointDnb" resultMap="ReportPointDnbResult">
select rpd.monitor_id,
m.monitor_name,
SUM(rpd.expend) expend,
MIN(rpd.begin_time) begin_time,
MAX(rpd.end_time) end_time
from report_point_dnb rpd
left join base_monitor_info m on m.monitor_id = rpd.monitor_id
WHERE 1=1
<if test="params.startTime != null and params.startTime != '' and params.endTime != null and params.endTime != ''">
and CONVERT(VARCHAR(17), rpd.begin_time, 120) between #{params.startTime} and #{params.endTime}
</if>
<if test="params.monitorIdList != null and params.monitorIdList.size > 0">
and rpd.monitor_id IN
<foreach item="monitorId" collection="params.monitorIdList" open="(" separator="," close=")">
#{monitorId}
</foreach>
</if>
GROUP BY rpd.monitor_id, m.monitor_name
ORDER BY rpd.monitor_id
</select>
<select id="datePointDnbGroupList" parameterType="ReportPointDnb" resultType="java.util.Map">
select ert.pointTime begin_time,
sum(isnull(ert.expend, 0)) expend
from (select left(CONVERT(VARCHAR(17), rpd.begin_time, 120), #{params.timeSub}) pointTime,
rpd.expend
from report_point_dnb rpd
left join base_monitor_info m on m.monitor_id = rpd.monitor_id
where 1=1
<if test="params.startTime != null and params.startTime != '' and params.endTime != null and params.endTime != ''">
and CONVERT(VARCHAR(17), rpd.begin_time, 120) between #{params.startTime} and #{params.endTime}
</if>
<if test="params.monitorIdList != null and params.monitorIdList.size > 0">
and rpd.monitor_id IN
<foreach item="monitorId" collection="params.monitorIdList" open="(" separator="," close=")">
#{monitorId}
</foreach>
</if>
) ert
group by ert.pointTime
order by ert.pointTime asc
</select>
</mapper> </mapper>

Loading…
Cancel
Save