作者 shenhailong

完善电表充值送电逻辑

... ... @@ -159,11 +159,11 @@ eeUrl:
#电表充值路径
# rechargeDevicesUrl: "http://10.5.10.102:8000/api/emcs/rechargeDevices"
rechargeDevicesUrl: "http://192.168.1.7:18080/api/emcs/rechargeDevices"
#电表送电 1送电 2断电
# remoteControlDevices: "http://10.5.10.102:8000/api/emcs/remoteControlDevices"
remoteControlDevices: "http://192.168.1.199:18080/api/emcs/remoteControlDevices"
#获取电表实时数据/余额
# electricityBanlanceUrl: "http://10.5.10.102:8000/api/emcs/getEnergyInfoForRealTime"
electricityBanlanceUrl: "http://192.168.1.7:18080/api/emcs/getEnergyInfoForRealTime"
#获取设备跟公寓信息
# getRoomAndDeviceUrl: "http://10.5.10.102:8000/api/emcs/getRoomAndDevice"
getRoomAndDeviceUrl: "http://192.168.1.7:18080/api/emcs/getRoomAndDevice"
electricityBanlanceUrl: "http://192.168.1.199:18080/api/emcs/getEnergyInfoForRealTime"
... ...
package com.sunyo.energy.location.model;
/**
* 获取电表余额/实时数据1
*/
import lombok.Data;
@Data
public class ElectricityBalanceOne {
private String errcode;
private String errmessage;
private ElectricityBalanceTwo data;
}
... ...
package com.sunyo.energy.location.model;
import lombok.Data;
/**
* 获取电表余额/实时数据3
*/
@Data
public class ElectricityBalanceThree {
private Integer deviceId;
private Number totalEnergy;
private Number tipEnergy;
private Number peakEnergy;
private Number valleyEnergy;
private Number flatEnergy;
private Number balance;
}
... ...
package com.sunyo.energy.location.model;
import lombok.Data;
import java.util.List;
/**
* 获取电表余额/实时数据2
*/
@Data
public class ElectricityBalanceTwo {
private Number actionTime;
private List<ElectricityMeter> datas;
}
... ...
package com.sunyo.energy.location.model;
import java.math.BigDecimal;
import java.util.Date;
public class ElectricityMeter {
private String deviceId;
private BigDecimal totalEnergy;
private BigDecimal tipEnergy;
private BigDecimal peakEnergy;
private BigDecimal valleyEnergy;
private BigDecimal flatEnergy;
private BigDecimal balance;
private Date actime;
private Date updatetime;
private String reamke1;
private String reamke2;
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId == null ? null : deviceId.trim();
}
public BigDecimal getTotalEnergy() {
return totalEnergy;
}
public void setTotalEnergy(BigDecimal totalEnergy) {
this.totalEnergy = totalEnergy;
}
public BigDecimal getTipEnergy() {
return tipEnergy;
}
public void setTipEnergy(BigDecimal tipEnergy) {
this.tipEnergy = tipEnergy;
}
public BigDecimal getPeakEnergy() {
return peakEnergy;
}
public void setPeakEnergy(BigDecimal peakEnergy) {
this.peakEnergy = peakEnergy;
}
public BigDecimal getValleyEnergy() {
return valleyEnergy;
}
public void setValleyEnergy(BigDecimal valleyEnergy) {
this.valleyEnergy = valleyEnergy;
}
public BigDecimal getFlatEnergy() {
return flatEnergy;
}
public void setFlatEnergy(BigDecimal flatEnergy) {
this.flatEnergy = flatEnergy;
}
public BigDecimal getBalance() {
return balance;
}
public void setBalance(BigDecimal balance) {
this.balance = balance;
}
public Date getActime() {
return actime;
}
public void setActime(Date actime) {
this.actime = actime;
}
public Date getUpdatetime() {
return updatetime;
}
public void setUpdatetime(Date updatetime) {
this.updatetime = updatetime;
}
public String getReamke1() {
return reamke1;
}
public void setReamke1(String reamke1) {
this.reamke1 = reamke1 == null ? null : reamke1.trim();
}
public String getReamke2() {
return reamke2;
}
public void setReamke2(String reamke2) {
this.reamke2 = reamke2 == null ? null : reamke2.trim();
}
}
\ No newline at end of file
... ...
package com.sunyo.energy.location.service.imp;
import com.alibaba.fastjson.JSON;
import com.sun.tools.internal.xjc.reader.xmlschema.bindinfo.BIGlobalBinding;
import com.sunyo.energy.location.dao.*;
import com.sunyo.energy.location.model.*;
import com.sunyo.energy.location.service.ElectricityMeterService;
... ... @@ -10,6 +11,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
... ... @@ -30,6 +33,15 @@ public class ElectricityMeterServiceImp implements ElectricityMeterService {
@Value("${eeUrl.rechargeDevicesUrl}")
private String rechargeDevicesUrl;
@Value("${eeUrl.remoteControlDevices}")
private String remoteControlDevices;
/**
* 获取电表实时数据/余额
*/
@Value("${eeUrl.electricityBanlanceUrl}")
private String electricityBanlanceUrl;
/**
* 定时读取电表临时表 发起充值
*/
... ... @@ -55,6 +67,17 @@ public class ElectricityMeterServiceImp implements ElectricityMeterService {
message = rechargeDevicesResultData.getSuccess();
}
if ("0".equals(rechargeDevicesResult.getErrcode()) && message == true) {
ElectricityMeter energyInfoForRealTime = getEnergyInfoForRealTime(electricityInfo.getDeviceId());
if (energyInfoForRealTime.getBalance() != null){
int i = energyInfoForRealTime.getBalance().compareTo(BigDecimal.ZERO);
if (i > 0){
Map<String, Object> map = new HashMap<>();
map.put("deviceId", electricityInfo.getDeviceId());
map.put("action", "1");
HttpsUtils.sendPost(remoteControlDevices, map);
}
}
payRecordsMapper.updateStatus(electricityInfo.getOrderNumber());
// 成功 删除该订单
electricityInfoMapper.deleteByPrimaryKey(electricityInfo.getOrderNumber());
}
... ... @@ -76,4 +99,34 @@ public class ElectricityMeterServiceImp implements ElectricityMeterService {
return map;
}
/**
* 实施获取电表数据
*/
public ElectricityMeter getEnergyInfoForRealTime(String deviceId) {
try {
if (!"".equals(deviceId)) {
Map<String, Object> stringObjectMap = eeInfo(deviceId);
String infoForRealTime = HttpsUtils.sendPost(electricityBanlanceUrl, stringObjectMap);
ElectricityBalanceOne electricityBalanceOne = JSON.parseObject(infoForRealTime, ElectricityBalanceOne.class);
List<ElectricityMeter> infoForRealTimeList = electricityBalanceOne.getData().getDatas();
for (ElectricityMeter electricityBalanceThree : infoForRealTimeList) {
if (electricityBalanceThree != null) {
return electricityBalanceThree;
}
}
}
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public Map<String, Object> eeInfo(String deviceId) {
Map<String, Object> datas = new HashMap<>();
datas.put("deviceId", deviceId);
return datas;
}
}
... ...
... ... @@ -69,7 +69,7 @@
<update id="updateStatus" parameterType="string">
update pay_records
set payStatus = 1
set reamke3 = 1
where orderNumber = #{value, jdbcType=VARCHAR}
</update>
... ...