zhitan-admin/src/main/java/com/zhitan/web/controller/branchanalysis/BranchEnergyAnalysisController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,37 @@ package com.zhitan.web.controller.branchanalysis; import com.zhitan.branchanalysis.domain.BranchAnalysisVO; import com.zhitan.common.core.controller.BaseController; import com.zhitan.common.core.domain.AjaxResult; import com.zhitan.branchanalysis.service.IBranchAnalysisService; import com.zhitan.realtimedata.domain.dto.BranchAnalysisDTO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** *æ¯è·¯ç¨è½åæ * * @author zt * @date 2021-01-11 */ @RestController @RequestMapping("/branchanalysis") @Api(value = "æ¯è·¯ç¨è½è½èç»è®¡",tags = {"æ¯è·¯ç¨è½åæ"}) public class BranchEnergyAnalysisController extends BaseController { @Autowired private IBranchAnalysisService branchAnalysisService; @GetMapping("/list") @ApiOperation(value = "æ¯è·¯ç¨è½è½èç»è®¡å表") public AjaxResult list(BranchAnalysisDTO dataItem) { BranchAnalysisVO vo = branchAnalysisService.getBranchAnalysisService(dataItem); return success(vo); } } zhitan-admin/src/main/resources/application-dev.yml
@@ -6,9 +6,9 @@ druid: # ä¸»åºæ°æ®æº master: url: jdbc:postgresql://127.0.0.1:5432/zhitan_ems username: postgres password: postgres url: jdbc:postgresql://192.168.110.124:5432/energy_localized username: energy_localized password: HaxFsKYFjwzKCDFd # ä»åºæ°æ®æº slave: # 仿°æ®æºå¼å ³/é»è®¤å ³é zhitan-common/src/main/java/com/zhitan/common/utils/PropUtils.java
@@ -1,6 +1,7 @@ package com.zhitan.common.utils; import com.alibaba.fastjson.JSONObject; import com.zhitan.common.constant.CommonConst; import java.lang.reflect.Field; import java.math.BigDecimal; @@ -34,7 +35,8 @@ field.set(obj, DoubleUtil.toDouble(value)); } else if (nameTypeName.contains("bigdecimal")) { BigDecimal valueOf = BigDecimal.valueOf(Double.parseDouble(String.valueOf(value))) .setScale(2, BigDecimal.ROUND_HALF_UP); .setScale(CommonConst.DIGIT_2, BigDecimal.ROUND_HALF_UP); field.set(obj, valueOf); } else { field.set(obj, value); zhitan-framework/src/main/java/com/zhitan/framework/web/service/SysLoginService.java
@@ -61,7 +61,7 @@ public String login(String username, String password, String code, String uuid) { // éªè¯ç æ ¡éª validateCaptcha(username, code, uuid); // validateCaptcha(username, code, uuid); // ç»å½åç½®æ ¡éª loginPreCheck(username, password); // ç¨æ·éªè¯ zhitan-system/src/main/java/com/zhitan/branchanalysis/domain/BranchAnalysisVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,75 @@ package com.zhitan.branchanalysis.domain; import com.zhitan.common.annotation.Excel; import lombok.Data; @Data public class BranchAnalysisVO { private String until; private double total; @Excel(name = "èç¹id") private String nodeId; @Excel(name = "åèåç§°") private String nodeName; @Excel(name = "1æ¶/1æ¥/1æ") private Double value0; @Excel(name = "2æ¶/2æ¥/2æ") private Double value1; @Excel(name = "3æ¶/3æ¥/3æ") private Double value2; @Excel(name = "4æ¶/4æ¥/4æ") private Double value3; @Excel(name = "5æ¶/5æ¥/5æ") private Double value4; @Excel(name = "6æ¶/6æ¥/6æ") private Double value5; @Excel(name = "7æ¶/7æ¥/7æ") private Double value6; @Excel(name = "8æ¶/8æ¥/8æ") private Double value7; @Excel(name = "9æ¶/9æ¥/9æ") private Double value8; @Excel(name = "10æ¶/10æ¥/10æ") private Double value9; @Excel(name = "11æ¶/11æ¥/11æ") private Double value10; @Excel(name = "12æ¶/12æ¥/12æ") private Double value11; @Excel(name = "13æ¶/13æ¥") private Double value12; @Excel(name = "14æ¶/14æ¥") private Double value13; @Excel(name = "15æ¶/15æ¥") private Double value14; @Excel(name = "16æ¶/16æ¥") private Double value15; @Excel(name = "17æ¶/17æ¥") private Double value16; @Excel(name = "18æ¶18æ¥") private Double value17; @Excel(name = "19æ¶/19æ¥") private Double value18; @Excel(name = "20æ¶/20æ¥") private Double value19; @Excel(name = "21æ¶/21æ¥") private Double value20; @Excel(name = "22æ¶/22æ¥") private Double value21; @Excel(name = "23æ¶/23æ¥") private Double value22; @Excel(name = "24æ¶/24æ¥") private Double value23; @Excel(name = "25æ¥") private Double value24; @Excel(name = "26æ¥") private Double value25; @Excel(name = "27æ¥") private Double value26; @Excel(name = "28æ¥") private Double value27; @Excel(name = "29æ¥") private Double value28; @Excel(name = "30æ¥") private Double value29; @Excel(name = "31æ¥") private Double value30; } zhitan-system/src/main/java/com/zhitan/branchanalysis/mapper/BranchAnalysisMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,26 @@ package com.zhitan.branchanalysis.mapper; import com.zhitan.branchanalysis.domain.BranchAnalysisVO; import com.zhitan.common.utils.TypeTime; import org.apache.ibatis.annotations.Param; import java.util.Date; import java.util.List; /** *æ¯è·¯ç¨è½åæ * * @author sys * @date 2021-01-11 */ public interface BranchAnalysisMapper { public List<BranchAnalysisVO> getBranchAnalysisList(@Param("indexIds") List<String> indexIds, @Param("dataList") List<TypeTime> dataList, @Param("beginTime") Date beginTime, @Param("endTime") Date endTime, @Param("timeType") String timeType, @Param("indexStorageId") String indexStorageId); } zhitan-system/src/main/java/com/zhitan/branchanalysis/service/IBranchAnalysisService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.zhitan.branchanalysis.service; import com.zhitan.branchanalysis.domain.BranchAnalysisVO; import com.zhitan.realtimedata.domain.dto.BranchAnalysisDTO; public interface IBranchAnalysisService { /** * æ¯è·¯ç¨è½åæ * * @author sys * @date 2021-01-11 */ BranchAnalysisVO getBranchAnalysisService(BranchAnalysisDTO dataItem); } zhitan-system/src/main/java/com/zhitan/branchanalysis/service/impl/BranchAnalysisServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,90 @@ package com.zhitan.branchanalysis.service.impl; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.zhitan.branchanalysis.domain.BranchAnalysisVO; import com.zhitan.common.constant.TimeTypeConst; import com.zhitan.common.exception.ServiceException; import com.zhitan.common.utils.DateTimeUtil; import com.zhitan.branchanalysis.service.IBranchAnalysisService; import com.zhitan.common.utils.PropUtils; import com.zhitan.dataitem.mapper.DataItemMapper; import com.zhitan.model.domain.vo.ModelNodeIndexInfor; import com.zhitan.model.mapper.ModelNodeMapper; import com.zhitan.realtimedata.domain.DataItem; import com.zhitan.realtimedata.domain.dto.BranchAnalysisDTO; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * c * * @author sys * @date 2021-01-11 */ @Service @AllArgsConstructor public class BranchAnalysisServiceImpl implements IBranchAnalysisService { private ModelNodeMapper modelNodeMapper; private DataItemMapper dataItemMapper; @Override public BranchAnalysisVO getBranchAnalysisService(BranchAnalysisDTO dto) { String timeType = dto.getTimeType(); String dataTime = dto.getDataTime(); Date beginTime = DateTimeUtil.getTypeTime(timeType, dataTime); DateTime endTime = null; List<ModelNodeIndexInfor> nodeIndexInfo = modelNodeMapper.getModelNodeIndexIdByNodeId(dto.getNodeId(), dto.getEnergyType()); List<String> indexlist = nodeIndexInfo.stream().map(ModelNodeIndexInfor::getIndexId).collect(Collectors.toList()); if (ObjectUtil.isEmpty(indexlist)) { return new BranchAnalysisVO(); } ModelNodeIndexInfor info = nodeIndexInfo.stream().findFirst().get(); //æ ¹æ®æ¶é´ç±»åè°æ´æ¶é´èå´ switch (dto.getTimeType()) { case TimeTypeConst.TIME_TYPE_DAY: timeType = TimeTypeConst.TIME_TYPE_HOUR; endTime = DateUtil.endOfDay(beginTime); break; case TimeTypeConst.TIME_TYPE_MONTH: timeType = TimeTypeConst.TIME_TYPE_DAY; endTime = DateUtil.endOfMonth(beginTime); break; case TimeTypeConst.TIME_TYPE_YEAR: timeType = TimeTypeConst.TIME_TYPE_MONTH; endTime = DateUtil.endOfYear(beginTime); break; default: throw new ServiceException("æ¶é´æ ¼å¼é误"); } //è·åæ°æ®é¡¹å表 List<DataItem> dataItemlist = dataItemMapper.getDataItemTimeRangeInforByIndexIds(beginTime, endTime, timeType, indexlist); BranchAnalysisVO vo = new BranchAnalysisVO(); double sum = dataItemlist.stream().mapToDouble(DataItem::getValue).sum(); vo.setTotal(sum); if (ObjectUtil.isNotEmpty(info.getIndexId())) { vo.setUntil(info.getUnitId()); } vo.setNodeId(info.getNodeId()); vo.setNodeName(info.getName()); for (int i = 0; i < dataItemlist.size(); i++) { PropUtils.setValue(vo, "value" + i, dataItemlist.get(i).getValue()); } return vo; } } zhitan-system/src/main/java/com/zhitan/model/domain/vo/ModelNodeIndexInfor.java
@@ -34,10 +34,9 @@ */ private String energyId; private String indexType; /** * åä½ */ private String unitId; private String indexType; } zhitan-system/src/main/java/com/zhitan/realtimedata/domain/dto/BranchAnalysisDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.zhitan.realtimedata.domain.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class BranchAnalysisDTO { @ApiModelProperty(value="èç¹id") private String nodeId; @ApiModelProperty(value ="æ¶é´å符串") private String dataTime; @ApiModelProperty(value ="æ¶é´ç±»å") private String timeType; @ApiModelProperty(value = "è½æºç±»å") private String energyType; } zhitan-system/src/main/resources/mapper/branchanalysis/BranchAnalysisMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,60 @@ <?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"> <mapper namespace="com.zhitan.branchanalysis.mapper.BranchAnalysisMapper"> <resultMap id="dataItemMap" type="com.zhitan.branchanalysis.domain.BranchAnalysisVO"> <result column="index_id" property="indexId"/> <result column="index_name" property="indexName"/> <result column="time_type" property="timeType"/> <result column="time_code" property="timeCode"/> <result column="unit_id" property="unitId"/> <result column="value1" property="value1"/> <result column="value2" property="value2"/> <result column="value3" property="value3"/> <result column="value4" property="value4"/> <result column="value5" property="value5"/> <result column="value6" property="value6"/> <result column="value7" property="value7"/> <result column="value8" property="value8"/> <result column="value9" property="value9"/> <result column="value10" property="value10"/> <result column="value11" property="value11"/> <result column="value12" property="value12"/> </resultMap> <!--å ¨åè½èç»è®¡--> <select id="getBranchAnalysisList" resultMap="dataItemMap"> SELECT aa.index_id, aa.index_name, <foreach item="item" index="index" collection="dataList"> MAX ( CASE WHEN data_time = #{item.dateTime} THEN "value" END ) AS ${item.value}, </foreach> aa.time_type FROM ( SELECT ci.index_id, ci.NAME AS "index_name", di."value", di.data_time, di.time_type FROM data_item di LEFT JOIN energy_index ci ON di.index_id = ci.index_id LEFT JOIN facility_archives f ON f."id"=ci.equipment WHERE di.data_time >= #{beginTime} AND di.data_time < #{endTime} AND di.index_id IN <foreach item="indexId" index="index" collection="indexIds" open="(" separator="," close=")"> #{indexId} </foreach> AND di.time_type = #{timeType} <if test="indexStorageId !='' and indexStorageId !=null"> and ci.energy_id=#{indexStorageId} </if> ) aa GROUP BY aa.index_id,aa.index_name,aa.time_type </select> </mapper>