zhitan-admin/src/main/java/com/zhitan/web/controller/statisticalAnalysis/EnergyDataItemController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,39 @@ package com.zhitan.web.controller.statisticalAnalysis; import com.zhitan.common.annotation.Log; import com.zhitan.common.core.domain.AjaxResult; import com.zhitan.dataitem.service.IDataItemService; import com.zhitan.statisticalAnalysis.domain.dto.FlowChartsDTO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * è½èç»è®¡åæ */ @Api(tags = "è½èç»è®¡åæ") @RestController @RequestMapping("/statisticsAnalysis") public class EnergyDataItemController { @Autowired private IDataItemService dataItemService; /** * è·åè½æµå¾å½¢åæ * * @param dto 请æ±åæ° * @return ç»æ */ @Log(title = "è·åè½æµå¾å½¢åæ") @ApiOperation(value = "è·åè½æµå¾å½¢åæ", notes = "è·åè½æµå¾å½¢åæ") @GetMapping(value = "/getFlowCharts") public AjaxResult getFlowCharts(@Validated FlowChartsDTO dto) { return AjaxResult.success(dataItemService.getFlowCharts(dto)); } } zhitan-admin/src/main/resources/application.yml
@@ -11,6 +11,8 @@ addressEnabled: true # éªè¯ç ç±»å math æ°åè®¡ç® char å符éªè¯ captchaType: math # ååå°å domainName: https://demo-ems.zhitancloud.com/prod-api # å¼åç¯å¢é ç½® server: zhitan-system/src/main/java/com/zhitan/dataitem/domain/vo/NodeIndexValueVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ package com.zhitan.dataitem.domain.vo; import lombok.Data; import java.math.BigDecimal; /** * @Author DYL **/ @Data public class NodeIndexValueVO { /** * èç¹id */ private String nodeId; /** * èç¹åç§° */ private String nodeName; /** * ç¹ä½id */ private String indexId; /** * 累积é */ private BigDecimal value; } zhitan-system/src/main/java/com/zhitan/dataitem/mapper/DataItemMapper.java
@@ -1,5 +1,6 @@ package com.zhitan.dataitem.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zhitan.carbonemission.domain.CarbonEmission; import com.zhitan.common.enums.TimeType; import com.zhitan.dataitem.domain.StagseDataEntry; @@ -16,7 +17,7 @@ * @author sys * @date 2020-03-25 */ public interface DataItemMapper { public interface DataItemMapper extends BaseMapper<DataItem> { /** * é¶æ®µæ°æ®å½å ¥ * zhitan-system/src/main/java/com/zhitan/dataitem/service/IDataItemService.java
@@ -4,6 +4,8 @@ import com.zhitan.common.enums.TimeType; import com.zhitan.dataitem.domain.StagseDataEntry; import com.zhitan.realtimedata.domain.DataItem; import com.zhitan.statisticalAnalysis.domain.dto.FlowChartsDTO; import com.zhitan.statisticalAnalysis.domain.vo.FlowChartsVO; import java.math.BigDecimal; import java.util.Date; @@ -88,4 +90,12 @@ * @return */ List<DataItem> getDataItemHourInforByIndexIds(Date beginTime, Date endTime, String timeType, List<String> indexIds); /** * è·åè½æµå¾å½¢åæ * * @param dto 请æ±åæ° * @return ç»æ */ FlowChartsVO getFlowCharts(FlowChartsDTO dto); } zhitan-system/src/main/java/com/zhitan/dataitem/service/impl/DataItemServiceImpl.java
@@ -2,15 +2,29 @@ import com.zhitan.common.enums.TimeType; import com.zhitan.dataitem.domain.StagseDataEntry; import com.zhitan.dataitem.domain.vo.NodeIndexValueVO; import com.zhitan.dataitem.mapper.DataItemMapper; import com.zhitan.dataitem.service.IDataItemService; import com.zhitan.model.domain.ModelNode; import com.zhitan.model.mapper.EnergyIndexMapper; import com.zhitan.model.mapper.ModelNodeMapper; import com.zhitan.model.mapper.NodeIndexMapper; import com.zhitan.realtimedata.domain.DataItem; import com.zhitan.statisticalAnalysis.domain.dto.FlowChartsDTO; import com.zhitan.statisticalAnalysis.domain.vo.FlowChartsItemVO; import com.zhitan.statisticalAnalysis.domain.vo.FlowChartsVO; import lombok.AllArgsConstructor; import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.temporal.TemporalAdjusters; import java.util.*; import java.util.stream.Collectors; /** * stagseDataEntryServiceä¸å¡å±å¤ç @@ -22,7 +36,14 @@ @AllArgsConstructor public class DataItemServiceImpl implements IDataItemService { private final DataItemMapper dataItemMapper; @Resource private DataItemMapper dataItemMapper; @Resource private ModelNodeMapper modelNodeMapper; @Resource private EnergyIndexMapper energyIndexMapper; @Resource private NodeIndexMapper nodeIndexMapper; /** @@ -117,4 +138,116 @@ public List<DataItem> getDataItemHourInforByIndexIds(Date beginTime, Date endTime, String timeType, List<String> indexIds) { return dataItemMapper.getDataItemHourInforByIndexIds(beginTime, endTime, timeType, indexIds); } /** * è·åè½æµå¾å½¢åæ * * @param dto 请æ±åæ° * @return ç»æ */ @Override public FlowChartsVO getFlowCharts(FlowChartsDTO dto) { FlowChartsVO flowChartsVO = new FlowChartsVO(); // ç¶èç¹id String nodeId = dto.getNodeId(); String energyType = dto.getEnergyType(); LocalDate queryTime = dto.getQueryTime(); TimeType timeType = dto.getTimeType(); // è·åèç¹ä¿¡æ¯ ModelNode modelNode = modelNodeMapper.selectModelNodeById(nodeId); if (ObjectUtils.isEmpty(modelNode)) { return flowChartsVO; } // è·åæ¥è¯¢æ¶é´ Map<String, LocalDateTime> dateTimeMap = getDataItemByIndexId(timeType, queryTime); // è·åèç¹åç¹ä½ç累积é List<NodeIndexValueVO> parentDataItemList = modelNodeMapper.getDataItemByNodeId(nodeId, energyType, timeType, dateTimeMap); // è·ååèç¹ä¸çç¹ä½ç累积é List<NodeIndexValueVO> childDataItemList = modelNodeMapper.getDataItemByParentNodeId(nodeId, energyType, timeType, dateTimeMap); // è·åç¶èç¹ä¸çè½èæ°æ®æ»å if (ObjectUtils.isNotEmpty(parentDataItemList)) { // ç¶èç¹ä¸çè½èæ°æ®æ»å BigDecimal totalValue = parentDataItemList.stream().map(NodeIndexValueVO::getValue) .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); // æ»ç´¯ç§¯é flowChartsVO.setTotalAccumulatedAmount(totalValue); } // è·ååèç¹ä¸çè½èæ°æ® if (ObjectUtils.isNotEmpty(childDataItemList)) { // åèç¹ä¸çè½èæ°æ®æ»å BigDecimal childTotalValue = childDataItemList.stream().map(NodeIndexValueVO::getValue) .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); // åèç¹ç´¯ç§¯é flowChartsVO.setChildNodeAccumulatedAmount(childTotalValue); // æ ¹æ®åèç¹idåç» Map<String, List<NodeIndexValueVO>> voMap = childDataItemList.stream() .collect(Collectors.groupingBy(NodeIndexValueVO::getNodeId)); List<FlowChartsItemVO> itemList = new ArrayList<>(); for (String childNodeId : voMap.keySet()) { FlowChartsItemVO vo = new FlowChartsItemVO(); vo.setSource(modelNode.getName()); List<NodeIndexValueVO> valueList = voMap.getOrDefault(childNodeId, Collections.emptyList()); if (ObjectUtils.isNotEmpty(valueList)) { // å个åèç¹çè½èæ°æ®æ»å BigDecimal value = valueList.stream().map(NodeIndexValueVO::getValue) .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); valueList.stream().findFirst().ifPresent(nodeIndexValueVO -> vo.setTarget(nodeIndexValueVO.getNodeName())); vo.setValue(value); } itemList.add(vo); } flowChartsVO.setItemVOList(itemList); } return flowChartsVO; } /** * æ ¹æ®indexIdæ¥è¯¢è½èæ°æ® */ private Map<String, LocalDateTime> getDataItemByIndexId(TimeType timeType, LocalDate queryTime) { LocalDateTime startTime; LocalDateTime endTime; LocalDate startDate; LocalDate endDate; switch (timeType) { case DAY: // å½å¤©çå¼å§æ¶é´ startTime = LocalDateTime.of(queryTime, LocalTime.MIN); // å½å¤©çç»ææ¶é´ endTime = LocalDateTime.of(queryTime, LocalTime.MAX); break; case MONTH: // 彿çå¼å§æ¶é´ startDate = queryTime.with(TemporalAdjusters.firstDayOfMonth()); startTime = LocalDateTime.of(startDate, LocalTime.MIN); // 彿çç»ææ¶é´ endDate = queryTime.with(TemporalAdjusters.lastDayOfMonth()); endTime = LocalDateTime.of(endDate, LocalTime.MAX); break; case YEAR: // å½å¹´çå¼å§æ¶é´ startDate = queryTime.with(TemporalAdjusters.firstDayOfYear()); startTime = LocalDateTime.of(startDate, LocalTime.MIN); // å½å¹´çç»ææ¶é´ endDate = queryTime.with(TemporalAdjusters.lastDayOfYear()); endTime = LocalDateTime.of(endDate, LocalTime.MAX); break; default: // å½å¤©çå¼å§æ¶é´ startTime = LocalDateTime.of(queryTime, LocalTime.MIN); // å½å¤©çç»ææ¶é´ endTime = LocalDateTime.of(queryTime, LocalTime.MAX); break; } Map<String, LocalDateTime> localDateTimeMap = new HashMap<>(); localDateTimeMap.put("startTime", startTime); localDateTimeMap.put("endTime", endTime); return localDateTimeMap; } } zhitan-system/src/main/java/com/zhitan/model/domain/NodeIndex.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,26 @@ package com.zhitan.model.domain; import lombok.Data; import java.io.Serializable; /** * 模åèç¹ä¸ææ çå ³èå ³ç³»(NodeIndex)å®ä½ç±» * * @author makejava * @since 2025-02-10 15:08:14 */ @Data public class NodeIndex implements Serializable { private static final long serialVersionUID = 386292923712960012L; /** * èç¹ä¸»é® */ private String nodeId; /** * ææ ä¸»é® */ private String indexId; } zhitan-system/src/main/java/com/zhitan/model/mapper/ModelNodeMapper.java
@@ -5,11 +5,14 @@ import com.zhitan.basicdata.domain.MeterImplement; import com.zhitan.basicdata.domain.SysEnergy; import com.zhitan.basicdata.domain.SysProduct; import com.zhitan.common.enums.TimeType; import com.zhitan.dataitem.domain.vo.NodeIndexValueVO; import com.zhitan.model.domain.EnergyIndex; import com.zhitan.model.domain.ModelNode; import com.zhitan.model.domain.vo.ModelNodeIndexInfor; import org.apache.ibatis.annotations.Param; import java.time.LocalDateTime; import java.util.List; import java.util.Map; @@ -196,4 +199,20 @@ ModelNode getFirstModeNodeInfo(String modelCode); List<ModelNodeIndexInfor> selectIndexByNodeIds(@Param("modelCode") String modelCode,@Param("nodeIds") List<String> nodeIds); /** * æ ¹æ®ç¶èç¹idåè½æºç±»åæ¥è¯¢ç¹ä½ä¸ç累积é */ List<NodeIndexValueVO> getDataItemByParentNodeId(@Param("parentId") String parentId, @Param("energyType") String energyType, @Param("timeType") TimeType timeType, @Param("dateTimeMap") Map<String, LocalDateTime> dateTimeMap); /** * æ ¹æ®èç¹idåè½æºç±»åæ¥è¯¢ç¹ä½ä¸ç累积é */ List<NodeIndexValueVO> getDataItemByNodeId(@Param("nodeId") String nodeId, @Param("energyType") String energyType, @Param("timeType") TimeType timeType, @Param("dateTimeMap") Map<String, LocalDateTime> dateTimeMap); } zhitan-system/src/main/java/com/zhitan/model/mapper/NodeIndexMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package com.zhitan.model.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zhitan.model.domain.NodeIndex; /** * 模åèç¹ä¸ææ çå ³èå ³ç³»(NodeIndex)è¡¨æ°æ®åºè®¿é®å± * * @author makejava * @since 2025-02-10 15:09:17 */ public interface NodeIndexMapper extends BaseMapper<NodeIndex> { } zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/dto/FlowChartsDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,57 @@ package com.zhitan.statisticalAnalysis.domain.dto; import com.baomidou.mybatisplus.annotation.EnumValue; import com.fasterxml.jackson.annotation.JsonFormat; import com.zhitan.common.enums.TimeType; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.apache.commons.lang3.ObjectUtils; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.time.LocalDate; /** * è½æµå¾æ¥è¯¢ */ @Data public class FlowChartsDTO { /** * è½æºç±»ååç§° */ @EnumValue @ApiModelProperty(value = "æ¶é´ç±»å") private TimeType timeType; /** * æ¥è¯¢æ¶é´ */ @NotNull(message = "æ¥è¯¢æ¶é´ä¸è½ä¸ºç©º") @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "æ¥è¯¢æ¶é´") private LocalDate queryTime; /** * è½æºç±»å */ @NotBlank(message = "è½æºç±»åä¸è½ä¸ºç©º") @ApiModelProperty(value = "è½æºç±»å") private String energyType; /** * èç¹id */ @NotBlank(message = "èç¹idä¸è½ä¸ºç©º") @ApiModelProperty(value = "èç¹id") private String nodeId; public TimeType getTimeType() { if (ObjectUtils.isEmpty(timeType)) { return TimeType.DAY; } return timeType; } } zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/FlowChartsItemVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ package com.zhitan.statisticalAnalysis.domain.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import java.math.BigDecimal; /** * è½æµå¾æ¥è¯¢ */ @Data public class FlowChartsItemVO { /** * æºå¤´ */ @ApiModelProperty(value = "æºå¤´") private String source; /** * ç®æ */ @ApiModelProperty(value = "ç®æ ") private String target; /** * å¼ */ @NotBlank(message = "å¼") @ApiModelProperty(value = "å¼") private BigDecimal value; } zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/FlowChartsVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,68 @@ package com.zhitan.statisticalAnalysis.domain.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Collections; import java.util.List; /** * è½æµå¾æ¥è¯¢ */ @Data public class FlowChartsVO { // æ»ç´¯ç§¯é @ApiModelProperty(value = "æ»ç´¯ç§¯é") private BigDecimal totalAccumulatedAmount; // åèç¹ç´¯ç§¯é @ApiModelProperty(value = "åèç¹ç´¯ç§¯é") private BigDecimal childNodeAccumulatedAmount; // å·®å¼ @ApiModelProperty(value = "å·®å¼") private BigDecimal difference; // è½èæå¤±æ¯ä¾ @ApiModelProperty(value = "è½èæå¤±æ¯ä¾") private BigDecimal energyLossRatio; private List<FlowChartsItemVO> itemVOList; public BigDecimal getTotalAccumulatedAmount() { if (totalAccumulatedAmount == null){ return BigDecimal.ZERO; } return totalAccumulatedAmount; } public BigDecimal getChildNodeAccumulatedAmount() { if (childNodeAccumulatedAmount == null){ return BigDecimal.ZERO; } return childNodeAccumulatedAmount; } public BigDecimal getDifference() { return difference = totalAccumulatedAmount.subtract(childNodeAccumulatedAmount); } public BigDecimal getEnergyLossRatio() { if (BigDecimal.ZERO.compareTo(totalAccumulatedAmount) == 0 || BigDecimal.ZERO.compareTo(difference) == 0){ return BigDecimal.ZERO; } return energyLossRatio = difference.divide(totalAccumulatedAmount, 2, RoundingMode.HALF_UP); } public FlowChartsVO() { this.totalAccumulatedAmount = BigDecimal.ZERO; this.childNodeAccumulatedAmount = BigDecimal.ZERO; this.difference = BigDecimal.ZERO; this.energyLossRatio = BigDecimal.ZERO; this.itemVOList = Collections.emptyList(); } } zhitan-system/src/main/resources/mapper/model/ModelNodeMapper.xml
@@ -89,9 +89,9 @@ resultType="com.zhitan.model.domain.EnergyIndex"> select ei.index_id as indexId, code, name, index_type as indexType from energy_index ei left join node_index ni on ei.index_id = ni.index_id left join node_index ni on ei.index_id = ni.index_id where ni.node_id = #{nodeId} and ei.index_type = #{indexType} and ei.index_type = #{indexType} <if test="code != null and code != ''"> and code like concat('%', #{code}, '%') </if> @@ -332,11 +332,12 @@ node_category nodeCategory FROM "model_node" WHERE model_code = #{indexCode} AND parent_id IS NULL LIMIT 1; AND parent_id IS NULL LIMIT 1; </select> <select id="selectIndexByModelCodeAndNodeId" resultType="com.zhitan.model.domain.vo.ModelNodeIndexInfor"> SELECT mn.node_id nodeId, SELECT mn.node_id nodeId, mn."name", ni.index_id indexId FROM model_node mn @@ -347,15 +348,15 @@ <select id="getSettingDeviceIndex" resultType="com.zhitan.basicdata.domain.MeterImplement"> SELECT distinct m."id", m.code, m.meter_name AS meterName, m.meter_type meterType, m.wire_diameter wireDiameter, m.max_allowable_power maxAllowablePower m."id", m.code, m.meter_name AS meterName, m.meter_type meterType, m.wire_diameter wireDiameter, m.max_allowable_power maxAllowablePower FROM meter_implement m LEFT JOIN energy_index ei ON ei.meter_id = m."id" LEFT JOIN node_index ni ON ni.index_id = ei.index_id LEFT JOIN energy_index ei ON ei.meter_id = m."id" LEFT JOIN node_index ni ON ni.index_id = ei.index_id WHERE ni.node_id = #{nodeId} <if test="energyType!=null and energyType!=''"> AND M.energy_type = #{energyType} @@ -365,11 +366,12 @@ <delete id="delIndexNodeIdAndIndexType"> delete from node_index where node_id = #{nodeId} and index_id in ( select ni.index_id from node_index ni left join energy_index ei on ni.index_id = ei.index_id where node_id = #{nodeId} and ei.index_type = #{indexType} ); where node_id = #{nodeId} and index_id in (select ni.index_id from node_index ni left join energy_index ei on ni.index_id = ei.index_id where node_id = #{nodeId} and ei.index_type = #{indexType}); </delete> <insert id="setIndexAndNodeId"> <foreach collection="indexIds" item="indexId" separator=";"> @@ -379,11 +381,11 @@ </insert> <select id="getModelNodeIndexIdByNodeId" resultType="com.zhitan.model.domain.vo.ModelNodeIndexInfor"> SELECT mn.node_id nodeId, mn."name" "name", ni.index_id indexId, ei.energy_id energyId, ei.index_type indexType SELECT mn.node_id nodeId, mn."name" "name", ni.index_id indexId, ei.energy_id energyId, ei.index_type indexType FROM "model_node" mn LEFT JOIN "node_index" ni ON mn.node_id = ni.node_id LEFT JOIN energy_index ei on ni.index_id = ei.index_id @@ -400,16 +402,17 @@ FROM "model_node" mn LEFT JOIN "node_index" ni ON mn.node_id = ni.node_id left join energy_index ei on ni.index_id = ei.index_id WHERE mn.parent_id = #{parentId} and ei.index_type = 'STATISTIC' WHERE mn.parent_id = #{parentId} and ei.index_type = 'STATISTIC' </select> <select id="getFirstModeNodeInfo" resultType="com.zhitan.model.domain.ModelNode"> <include refid="selectModelNodeVo"/> where model_code = #{modelCode} AND parent_id is null where model_code = #{modelCode} AND parent_id is null order by order_num </select> <select id="selectIndexByNodeIds" resultType="com.zhitan.model.domain.vo.ModelNodeIndexInfor"> SELECT mn.node_id nodeId, mn."name" "name", SELECT mn.node_id nodeId, mn."name" "name", ni.index_id indexId, ei.energy_id FROM "model_node" mn @@ -417,15 +420,49 @@ left join energy_index ei on ni.index_id = ei.index_id <where> mn.model_code = #{modelCode} AND mn.node_id in <foreach collection="nodeIds" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach> <if test="modelCode!=null and modelCode!='' and nodeIds.size>0"> and ei.index_type='STATISTIC' </if> AND mn.node_id in <foreach collection="nodeIds" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach> <if test="modelCode!=null and modelCode!='' and nodeIds.size>0"> and ei.index_type='STATISTIC' </if> </where> </select> <select id="getDataItemByParentNodeId" resultType="com.zhitan.dataitem.domain.vo.NodeIndexValueVO"> SELECT mn.node_id nodeId, mn."name" nodeName, di.index_id indexId, di."value" value FROM model_node mn LEFT JOIN "node_index" ni ON mn.node_id = ni.node_id LEFT JOIN "energy_index" ei ON ei.index_id = ni.index_id LEFT JOIN "data_item" di ON ei.index_id = di.index_id WHERE mn.parent_id = #{parentId} AND ei.energy_id = #{energyType} AND ei.index_type = 'STATISTIC' AND di.time_type = #{timeType.name} AND di.data_time >= #{dateTimeMap.startTime} AND di.data_time <= #{dateTimeMap.endTime} </select> <select id="getDataItemByNodeId" resultType="com.zhitan.dataitem.domain.vo.NodeIndexValueVO"> SELECT mn.node_id nodeId, mn."name" nodeName, di.index_id indexId, di."value" value FROM "model_node" mn LEFT JOIN "node_index" ni ON mn.node_id = ni.node_id LEFT JOIN "energy_index" ei ON ei.index_id = ni.index_id LEFT JOIN "data_item" di ON ei.index_id = di.index_id WHERE mn.node_id = #{nodeId} AND ei.energy_id = #{energyType} AND ei.index_type = 'STATISTIC' AND di.time_type = #{timeType.name} AND di.data_time >= #{dateTimeMap.startTime} AND di.data_time <= #{dateTimeMap.endTime} </select> </mapper> zhitan-system/src/main/resources/mapper/model/NodeIndexMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ <?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.model.mapper.NodeIndexMapper"> <resultMap type="com.zhitan.model.domain.NodeIndex" id="NodeIndexMap"> <result property="nodeId" column="node_id" jdbcType="VARCHAR"/> <result property="indexId" column="index_id" jdbcType="VARCHAR"/> </resultMap> </mapper>