| @@ -29,7 +29,6 @@ public class KwMeter extends BaseEntity { | |||||
| @io.swagger.annotations.ApiModelProperty(value = "tenantId", name = "tenantId") | @io.swagger.annotations.ApiModelProperty(value = "tenantId", name = "tenantId") | ||||
| private String tenantId; | private String tenantId; | ||||
| @Excel(name = "电表编号 *", width = 20, orderNum = "1") | @Excel(name = "电表编号 *", width = 20, orderNum = "1") | ||||
| @io.swagger.annotations.ApiModelProperty(value = "电表编号", name = "address") | @io.swagger.annotations.ApiModelProperty(value = "电表编号", name = "address") | ||||
| private String address; | private String address; | ||||
| @@ -63,6 +62,9 @@ public class KwMeter extends BaseEntity { | |||||
| @io.swagger.annotations.ApiModelProperty(value = "创始时间", name = "lastOnlineTime") | @io.swagger.annotations.ApiModelProperty(value = "创始时间", name = "lastOnlineTime") | ||||
| private Date lastOnlineTime; | private Date lastOnlineTime; | ||||
| @io.swagger.annotations.ApiModelProperty(value = "最后一次读数", name = "totalPower") | |||||
| private Integer totalPower; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createTime") | @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createTime") | ||||
| private Date createTime; | private Date createTime; | ||||
| @@ -78,7 +80,6 @@ public class KwMeter extends BaseEntity { | |||||
| @io.swagger.annotations.ApiModelProperty(value = "状态0绑定1未绑定", name = "bindStatus") | @io.swagger.annotations.ApiModelProperty(value = "状态0绑定1未绑定", name = "bindStatus") | ||||
| private Integer bindStatus; | private Integer bindStatus; | ||||
| @Excel(name = "采集设备号", width = 20, orderNum = "7") | @Excel(name = "采集设备号", width = 20, orderNum = "7") | ||||
| @Transient | @Transient | ||||
| private String boxImei; | private String boxImei; | ||||
| @@ -9,7 +9,9 @@ import java.util.List; | |||||
| public interface KwMeterMapper extends CommonMapper<KwMeter, Long> { | public interface KwMeterMapper extends CommonMapper<KwMeter, Long> { | ||||
| List<KwMeter> findList(KwMeter param); | List<KwMeter> findList(KwMeter param); | ||||
| int updateBatch(KwMeter param); | |||||
| int onlineBatch(@Param("list")List<KwMeter> list); | |||||
| int offlineBatch(KwMeter param); | |||||
| int bind(@Param("boxId")Long boxId,@Param("id")Long id); | int bind(@Param("boxId")Long boxId,@Param("id")Long id); | ||||
| int bindBatch(@Param("boxId")Long boxId, @Param("ids")List<Long> ids); | int bindBatch(@Param("boxId")Long boxId, @Param("ids")List<Long> ids); | ||||
| @@ -38,12 +38,6 @@ public interface KwMeterService { | |||||
| */ | */ | ||||
| void saveOrUpdate(KwMeter record); | void saveOrUpdate(KwMeter record); | ||||
| /** | |||||
| * 保存或更新实体 | |||||
| * | |||||
| * @param record | |||||
| */ | |||||
| int updateBatch(KwMeter record); | |||||
| /** | /** | ||||
| * 根据Id删除实体 | * 根据Id删除实体 | ||||
| * | * | ||||
| @@ -69,4 +63,9 @@ public interface KwMeterService { | |||||
| int unbind(Long meterId); | int unbind(Long meterId); | ||||
| int unbindBatch(Long boxId); | int unbindBatch(Long boxId); | ||||
| int onlineBatch(List<KwMeter> record); | |||||
| int offlineBatch(KwMeter record); | |||||
| } | } | ||||
| @@ -124,16 +124,30 @@ public class KwBoxServiceImpl implements KwBoxService { | |||||
| }); | }); | ||||
| List<Long> onlines = kwMeterDataList.stream().filter(md->md.getTotalPower()!=null).map(KwMeterData::getMeterId).collect(Collectors.toList()); | |||||
| if (onlines.size() > 0) { | |||||
| List<KwMeter> onlineMeters = kwMeterDataList.stream().filter(md->md.getTotalPower()!=null) | |||||
| .map( md->{ | |||||
| KwMeter kwMeter = new KwMeter(); | |||||
| kwMeter.setId(md.getMeterId()); | |||||
| kwMeter.setTotalPower(md.getTotalPower()); | |||||
| return kwMeter; | |||||
| }).collect(Collectors.toList()); | |||||
| if (onlineMeters.size() > 0) { | |||||
| kwMeterService.onlineBatch(onlineMeters); | |||||
| } | |||||
| List<Long> offlineIds = kwMeterDataList.stream().filter(md->md.getTotalPower()==null).map(KwMeterData::getMeterId).collect(Collectors.toList()); | |||||
| if (offlineIds.size() > 0) { | |||||
| KwMeter kwMeter = new KwMeter(); | KwMeter kwMeter = new KwMeter(); | ||||
| kwMeter.setIds(onlines); | |||||
| kwMeter.setOnlineStatus(EnumMeterOnlineStatus.ONLINE.getCode()); | |||||
| kwMeter.setLastOnlineTime(new Date()); | |||||
| kwMeterService.updateBatch(kwMeter); | |||||
| kwMeter.setIds(offlineIds); | |||||
| kwMeterService.offlineBatch(kwMeter); | |||||
| } | |||||
| List<Long> onlineIds = kwMeterDataList.stream().filter(md->md.getTotalPower()!=null) | |||||
| .map(KwMeterData::getMeterId).collect(Collectors.toList()); | |||||
| if (onlineIds.size() > 0) { | |||||
| KwMeterData param = new KwMeterData(); | KwMeterData param = new KwMeterData(); | ||||
| param.setIds(onlines); | |||||
| param.setIds(onlineIds); | |||||
| List<KwMeterData> lastRecordList = kwMeterDataService.findLastRecordList(param); | List<KwMeterData> lastRecordList = kwMeterDataService.findLastRecordList(param); | ||||
| kwMeterDataList.stream().forEach(md->{ | kwMeterDataList.stream().forEach(md->{ | ||||
| Optional<KwMeterData> data = lastRecordList.stream().filter(lr->lr.getMeterId().equals(md.getMeterId())).findAny(); | Optional<KwMeterData> data = lastRecordList.stream().filter(lr->lr.getMeterId().equals(md.getMeterId())).findAny(); | ||||
| @@ -146,14 +160,6 @@ public class KwBoxServiceImpl implements KwBoxService { | |||||
| }); | }); | ||||
| } | } | ||||
| List<Long> offlines = kwMeterDataList.stream().filter(md->md.getTotalPower()==null).map(KwMeterData::getMeterId).collect(Collectors.toList()); | |||||
| if (offlines.size() > 0) { | |||||
| KwMeter kwMeter = new KwMeter(); | |||||
| kwMeter.setIds(offlines); | |||||
| kwMeter.setOnlineStatus(EnumMeterOnlineStatus.OFFLINE.getCode()); | |||||
| kwMeterService.updateBatch(kwMeter); | |||||
| } | |||||
| kwMeterDataService.save(kwMeterDataList); | kwMeterDataService.save(kwMeterDataList); | ||||
| } | } | ||||
| } | } | ||||
| @@ -50,8 +50,13 @@ public class KwMeterServiceImpl implements KwMeterService { | |||||
| } | } | ||||
| @Override | @Override | ||||
| public int updateBatch(KwMeter record) { | |||||
| return kwMeterMapper.updateBatch(record); | |||||
| public int onlineBatch(List<KwMeter> record) { | |||||
| return kwMeterMapper.onlineBatch(record); | |||||
| } | |||||
| @Override | |||||
| public int offlineBatch(KwMeter record) { | |||||
| return kwMeterMapper.offlineBatch(record); | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -83,7 +88,6 @@ public class KwMeterServiceImpl implements KwMeterService { | |||||
| return kwMeterMapper.bindBatch(boxId, meterIds); | return kwMeterMapper.bindBatch(boxId, meterIds); | ||||
| } | } | ||||
| @Override | @Override | ||||
| public int unbind(Long meterId) { | public int unbind(Long meterId) { | ||||
| if (meterId == null) | if (meterId == null) | ||||
| @@ -65,6 +65,7 @@ | |||||
| <result column="protocol" jdbcType="INTEGER" property="protocol"/> | <result column="protocol" jdbcType="INTEGER" property="protocol"/> | ||||
| <result column="bandrate" jdbcType="INTEGER" property="bandrate"/> | <result column="bandrate" jdbcType="INTEGER" property="bandrate"/> | ||||
| <result column="last_online_time" jdbcType="TIMESTAMP" property="lastOnlineTime"/> | <result column="last_online_time" jdbcType="TIMESTAMP" property="lastOnlineTime"/> | ||||
| <result column="total_power" jdbcType="INTEGER" property="totalPower"/> | |||||
| <result column="online_status" jdbcType="INTEGER" property="onlineStatus"/> | <result column="online_status" jdbcType="INTEGER" property="onlineStatus"/> | ||||
| <result column="config" jdbcType="VARCHAR" property="config"/> | <result column="config" jdbcType="VARCHAR" property="config"/> | ||||
| <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/> | <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/> | ||||
| @@ -79,15 +80,9 @@ | |||||
| </resultMap> | </resultMap> | ||||
| <resultMap id="MeterSimpleResultMap" type="com.iformall.domain.po.KwMeter"> | |||||
| <id column="id" jdbcType="BIGINT" property="id"/> | |||||
| <association column="{meterId=id}" property="latestRecord" | |||||
| select="com.iformall.mapper.KwMeterDataMapper.findLastRecordList"> | |||||
| </association > | |||||
| </resultMap> | |||||
| <select id="findSimpleMeterList" parameterType="java.util.Map" resultMap="MeterSimpleResultMap"> | |||||
| select m.id from kw_merchant_meter mm | |||||
| <select id="findSimpleMeterList" parameterType="java.util.Map" resultType="com.iformall.domain.po.KwMeter"> | |||||
| select m.`id`, m.`last_total_power` from kw_merchant_meter mm | |||||
| left join kw_meter m on mm.`meter_id` = m.id | left join kw_meter m on mm.`meter_id` = m.id | ||||
| where mm.`status` = 0 | where mm.`status` = 0 | ||||
| <if test=" null != merchantId "> | <if test=" null != merchantId "> | ||||
| @@ -11,6 +11,7 @@ | |||||
| <result column="protocol" jdbcType="INTEGER" property="protocol"/> | <result column="protocol" jdbcType="INTEGER" property="protocol"/> | ||||
| <result column="bandrate" jdbcType="INTEGER" property="bandrate"/> | <result column="bandrate" jdbcType="INTEGER" property="bandrate"/> | ||||
| <result column="last_online_time" jdbcType="TIMESTAMP" property="lastOnlineTime"/> | <result column="last_online_time" jdbcType="TIMESTAMP" property="lastOnlineTime"/> | ||||
| <result column="total_power" jdbcType="INTEGER" property="totalPower"/> | |||||
| <result column="online_status" jdbcType="INTEGER" property="onlineStatus"/> | <result column="online_status" jdbcType="INTEGER" property="onlineStatus"/> | ||||
| <result column="config" jdbcType="VARCHAR" property="config"/> | <result column="config" jdbcType="VARCHAR" property="config"/> | ||||
| <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/> | <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/> | ||||
| @@ -21,7 +22,7 @@ | |||||
| </resultMap> | </resultMap> | ||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| `id`,`tenant_id`,`address`,`brand`,`model`,`place`,`protocol`,`bandrate`,`last_online_time`,`online_status`,`config`,`create_time`,`update_time`,`box_id`,`status`,`bind_status` | |||||
| `id`,`tenant_id`,`address`,`brand`,`model`,`place`,`protocol`,`bandrate`,`last_online_time`,`last_total_power`,`online_status`,`config`,`create_time`,`update_time`,`box_id`,`status`,`bind_status` | |||||
| </sql> | </sql> | ||||
| <sql id="dynamicWhereConditions"> | <sql id="dynamicWhereConditions"> | ||||
| @@ -90,19 +91,36 @@ | |||||
| <include refid="dynamicWhereConditions"/> | <include refid="dynamicWhereConditions"/> | ||||
| </select> | </select> | ||||
| <update id="updateBatch" parameterType="com.iformall.domain.po.KwMeter" > | |||||
| update kw_meter set | |||||
| <if test=" 1 == onlineStatus "> | |||||
| last_online_time = #{lastOnlineTime}, | |||||
| </if> | |||||
| online_status = #{onlineStatus} | |||||
| <update id="onlineBatch" parameterType="java.util.List" > | |||||
| update kw_meter | |||||
| set | |||||
| <trim prefix="set" suffixOverrides=","> | |||||
| <trim prefix="last_total_power=case" suffix="end,"> | |||||
| <foreach collection="list" item="i" index="index"> | |||||
| <if test="i.lastTotalPower!=null"> | |||||
| when id = #{i.id} | |||||
| then #{i.lastTotalPower} | |||||
| </if> | |||||
| </foreach> | |||||
| </trim> | |||||
| online_status = 1, | |||||
| last_online_time = now() | |||||
| </trim> | |||||
| where id in | |||||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||||
| #{idItem} | |||||
| </foreach> | |||||
| </update> | |||||
| <update id="offlineBatch" parameterType="com.iformall.domain.po.KwMeter" > | |||||
| update kw_meter | |||||
| set | |||||
| online_status = 0 | |||||
| where id in | where id in | ||||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | ||||
| #{idItem} | #{idItem} | ||||
| </foreach> | </foreach> | ||||
| <if test=" 0 == onlineStatus "> | |||||
| and `online_status` = 1 | |||||
| </if> | |||||
| and `online_status` = 1 | |||||
| </update> | </update> | ||||
| <update id="unbindBatch" parameterType="java.lang.Long"> | <update id="unbindBatch" parameterType="java.lang.Long"> | ||||