| @@ -29,7 +29,6 @@ public class KwMeter extends BaseEntity { | |||
| @io.swagger.annotations.ApiModelProperty(value = "tenantId", name = "tenantId") | |||
| private String tenantId; | |||
| @Excel(name = "电表编号 *", width = 20, orderNum = "1") | |||
| @io.swagger.annotations.ApiModelProperty(value = "电表编号", name = "address") | |||
| private String address; | |||
| @@ -63,6 +62,9 @@ public class KwMeter extends BaseEntity { | |||
| @io.swagger.annotations.ApiModelProperty(value = "创始时间", name = "lastOnlineTime") | |||
| private Date lastOnlineTime; | |||
| @io.swagger.annotations.ApiModelProperty(value = "最后一次读数", name = "totalPower") | |||
| private Integer totalPower; | |||
| @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createTime") | |||
| private Date createTime; | |||
| @@ -78,7 +80,6 @@ public class KwMeter extends BaseEntity { | |||
| @io.swagger.annotations.ApiModelProperty(value = "状态0绑定1未绑定", name = "bindStatus") | |||
| private Integer bindStatus; | |||
| @Excel(name = "采集设备号", width = 20, orderNum = "7") | |||
| @Transient | |||
| private String boxImei; | |||
| @@ -9,7 +9,9 @@ import java.util.List; | |||
| public interface KwMeterMapper extends CommonMapper<KwMeter, Long> { | |||
| 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 bindBatch(@Param("boxId")Long boxId, @Param("ids")List<Long> ids); | |||
| @@ -38,12 +38,6 @@ public interface KwMeterService { | |||
| */ | |||
| void saveOrUpdate(KwMeter record); | |||
| /** | |||
| * 保存或更新实体 | |||
| * | |||
| * @param record | |||
| */ | |||
| int updateBatch(KwMeter record); | |||
| /** | |||
| * 根据Id删除实体 | |||
| * | |||
| @@ -69,4 +63,9 @@ public interface KwMeterService { | |||
| int unbind(Long meterId); | |||
| 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.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(); | |||
| param.setIds(onlines); | |||
| param.setIds(onlineIds); | |||
| List<KwMeterData> lastRecordList = kwMeterDataService.findLastRecordList(param); | |||
| kwMeterDataList.stream().forEach(md->{ | |||
| 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); | |||
| } | |||
| } | |||
| @@ -50,8 +50,13 @@ public class KwMeterServiceImpl implements KwMeterService { | |||
| } | |||
| @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 | |||
| @@ -83,7 +88,6 @@ public class KwMeterServiceImpl implements KwMeterService { | |||
| return kwMeterMapper.bindBatch(boxId, meterIds); | |||
| } | |||
| @Override | |||
| public int unbind(Long meterId) { | |||
| if (meterId == null) | |||
| @@ -65,6 +65,7 @@ | |||
| <result column="protocol" jdbcType="INTEGER" property="protocol"/> | |||
| <result column="bandrate" jdbcType="INTEGER" property="bandrate"/> | |||
| <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="config" jdbcType="VARCHAR" property="config"/> | |||
| <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/> | |||
| @@ -79,15 +80,9 @@ | |||
| </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 | |||
| where mm.`status` = 0 | |||
| <if test=" null != merchantId "> | |||
| @@ -11,6 +11,7 @@ | |||
| <result column="protocol" jdbcType="INTEGER" property="protocol"/> | |||
| <result column="bandrate" jdbcType="INTEGER" property="bandrate"/> | |||
| <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="config" jdbcType="VARCHAR" property="config"/> | |||
| <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/> | |||
| @@ -21,7 +22,7 @@ | |||
| </resultMap> | |||
| <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 id="dynamicWhereConditions"> | |||
| @@ -90,19 +91,36 @@ | |||
| <include refid="dynamicWhereConditions"/> | |||
| </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 | |||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||
| #{idItem} | |||
| </foreach> | |||
| <if test=" 0 == onlineStatus "> | |||
| and `online_status` = 1 | |||
| </if> | |||
| and `online_status` = 1 | |||
| </update> | |||
| <update id="unbindBatch" parameterType="java.lang.Long"> | |||