Просмотр исходного кода

[电表][修改]:数据存储逻辑,统一定义命令字段

release_toaliyun_real
hupeng 7 лет назад
Родитель
Сommit
e8d5507c82
5 измененных файлов: 90 добавлений и 69 удалений
  1. +21
    -30
      mallinkCallback/src/main/java/com/iformall/controller/device/KwBoxV1Controller.java
  2. +20
    -2
      mallinkService/src/main/java/com/iformall/service/kw/KwBoxService.java
  3. +1
    -1
      mallinkService/src/main/java/com/iformall/service/kw/KwMeterDataService.java
  4. +46
    -32
      mallinkService/src/main/java/com/iformall/service/kw/impl/KwBoxServiceImpl.java
  5. +2
    -4
      mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java

+ 21
- 30
mallinkCallback/src/main/java/com/iformall/controller/device/KwBoxV1Controller.java Просмотреть файл

@@ -52,11 +52,11 @@ public class KwBoxV1Controller extends BaseController {
private ResultData cmdRegist(String imei, String ccid, Date deviceTime, Map<String,Object> paramMap)
{

String fwv = (String)paramMap.get("FWV");
String fwv = (String)paramMap.get(KwBoxService.PREFIX_FW_VERSION);
if (StringUtil.isNullOrEmpty(fwv))
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);

String hwv = (String)paramMap.get("HWV");
String hwv = (String)paramMap.get(KwBoxService.PREFIX_HW_VERSION);
if (StringUtil.isNullOrEmpty(hwv))
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);

@@ -68,7 +68,7 @@ public class KwBoxV1Controller extends BaseController {
if (!kwBox.getRegisterStatus().equals(EnumBoxRegisterStatus.INIT.getCode()))
return new ResultData(ErrorCode.DEVICE_ALREADY_EXIST);

saveCmd(kwBox.getTenantId(),"regist",imei,ccid,deviceTime,paramMap);
saveCmd(kwBox.getTenantId(),KwBoxService.CMD_REGISTER,imei,ccid,deviceTime,paramMap);

KwBox record = new KwBox();
record.setId(kwBox.getId());
@@ -82,14 +82,14 @@ public class KwBoxV1Controller extends BaseController {
kwBoxService.saveOrUpdate(record);
Map<String,Object> data = new HashMap<>();

data.put("sysStatus",record.getRegisterStatus());
data.put(KwBoxService.PREFIX_SYS_STATUS,record.getRegisterStatus());
if (kwBox.getComKey() != null)
data.put("comKey",kwBox.getComKey());
data.put(KwBoxService.PREFIX_COM_KEY,kwBox.getComKey());
if (kwBox.getConfig() != null)
data.put("config",kwBox.getConfig());
data.put(KwBoxService.PREFIX_CONFIG,kwBox.getConfig());
List<String> meters = kwBoxService.findMetersAddress(kwBox);
if (!meters.isEmpty())
data.put("meters",meters);
data.put(KwBoxService.PREFIX_METERS,meters);
return new ResultData(data);

}
@@ -104,7 +104,7 @@ public class KwBoxV1Controller extends BaseController {
if (!kwBox.getRegisterStatus().equals(EnumBoxRegisterStatus.REGISTERED.getCode()))
return new ResultData(ErrorCode.DEVICE_NOT_FOUND);

saveCmd(kwBox.getTenantId(),"login",imei,ccid,deviceTime,paramMap);
saveCmd(kwBox.getTenantId(),KwBoxService.CMD_LOGIN,imei,ccid,deviceTime,paramMap);

KwBox record = new KwBox();
record.setId(kwBox.getId());
@@ -114,7 +114,7 @@ public class KwBoxV1Controller extends BaseController {
kwBoxService.saveOrUpdate(record);
Map<String,Object> data = new HashMap<>();
if (kwBox.getConfig() != null)
data.put("config",kwBox.getConfig() );
data.put(KwBoxService.PREFIX_CONFIG,kwBox.getConfig() );
return new ResultData(data);
}

@@ -129,27 +129,17 @@ public class KwBoxV1Controller extends BaseController {
if (!kwBox.getRegisterStatus().equals(EnumBoxRegisterStatus.REGISTERED.getCode()))
return new ResultData(ErrorCode.DEVICE_NOT_FOUND);

saveCmd(kwBox.getTenantId(),"hb",imei,ccid,deviceTime,paramMap);
saveCmd(kwBox.getTenantId(),KwBoxService.CMD_HEARTBEAT,imei,ccid,deviceTime,paramMap);

KwBox record = new KwBox();
record.setId(kwBox.getId());
record.setLastOnlineTime(new Date());

kwBoxService.saveOrUpdate(record);
Map<String,Object> resData = new HashMap<>();

List<Map<String,String>> metersData = (List<Map<String,String>>)paramMap.get("meters");

if (!metersData.isEmpty()) {
metersData.stream().forEach(m->{
String addr = m.get("addr");
String activePower = m.get("ap"); //active power
kwBoxService.saveMeterData(kwBox, deviceTime, addr, activePower);
});
}
kwBoxService.saveMeterData(kwBox, metersData, deviceTime);

List<String> meters = kwBoxService.findMetersAddress(kwBox);

boolean updateMeters = false;
boolean updateConfig = false;

@@ -161,11 +151,12 @@ public class KwBoxV1Controller extends BaseController {
updateMeters = true;
}

Map<String,Object> resData = new HashMap<>();
if (updateMeters) {
resData.put("meters", meters);
resData.put(KwBoxService.PREFIX_METERS, meters);
}
if (updateConfig) {
resData.put("config", kwBox.getConfig());
resData.put(KwBoxService.PREFIX_CONFIG, kwBox.getConfig());
}
return new ResultData(resData);

@@ -179,19 +170,19 @@ public class KwBoxV1Controller extends BaseController {
@PostMapping("command")
public Result command(@RequestBody Map<String,Object> paramMap) {

String cmd = (String)paramMap.get("CMD");
String cmd = (String)paramMap.get(KwBoxService.PREFIX_CMD);
if (StringUtil.isNullOrEmpty(cmd))
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);

String imei = (String)paramMap.get("IMEI");
String imei = (String)paramMap.get(KwBoxService.PREFIX_IMEI);
if (StringUtil.isNullOrEmpty(imei))
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);

String ccid = (String)paramMap.get("CCID");
String ccid = (String)paramMap.get(KwBoxService.PREFIX_ICCID);
if (StringUtil.isNullOrEmpty(ccid))
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);

String time = (String)paramMap.get("TIME");
String time = (String)paramMap.get(KwBoxService.PREFIX_TIME);
if (StringUtil.isNullOrEmpty(time))
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR);

@@ -206,11 +197,11 @@ public class KwBoxV1Controller extends BaseController {

switch(cmd)
{
case "regist":
case KwBoxService.CMD_REGISTER:
return cmdRegist(imei,ccid,deviceTime,paramMap);
case "login":
case KwBoxService.CMD_LOGIN:
return cmdLogin(imei,ccid,deviceTime,paramMap);
case "hb":
case KwBoxService.CMD_HEARTBEAT:
return cmdHb(imei,ccid,deviceTime,paramMap);
}



+ 20
- 2
mallinkService/src/main/java/com/iformall/service/kw/KwBoxService.java Просмотреть файл

@@ -10,9 +10,27 @@ import com.iformall.domain.po.KwMeterData;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface KwBoxService {

final static String PREFIX_CMD = "CMD";
final static String CMD_REGISTER = "regist";
final static String CMD_LOGIN = "login";
final static String CMD_HEARTBEAT = "hb";

final static String PREFIX_IMEI = "IMEI";
final static String PREFIX_ICCID = "CCID";
final static String PREFIX_TIME = "TIME";
final static String PREFIX_HW_VERSION = "HWV";
final static String PREFIX_FW_VERSION = "FWV";
final static String PREFIX_COM_KEY = "comKey";
final static String PREFIX_SYS_STATUS = "sysStatus";
final static String PREFIX_CONFIG = "config";
final static String PREFIX_METERS = "meters";

final static String METER_ADDRESS = "addr";
final static String METER_ACTIVE_POWER = "ap";


/**
@@ -60,9 +78,9 @@ public interface KwBoxService {

List<String> findMetersAddress(KwBox record);
List<KwMeter> findMeters(KwBox record);
KwMeter findMeter(KwBox record, String addr);

KwMeter findMeter(KwBox record, String addr);
KwBox findByImei(String imei);

KwMeterData saveMeterData(KwBox record, Date deviceTime, String addr, String activePower);
KwMeterData saveMeterData(KwBox record, List<Map<String,String>> metersData, Date deviceTime);
}

+ 1
- 1
mallinkService/src/main/java/com/iformall/service/kw/KwMeterDataService.java Просмотреть файл

@@ -17,5 +17,5 @@ public interface KwMeterDataService {

List<KwMeterData> findList(KwMeterData kwMeterData);

int save(KwMeterData record);
int save(List<KwMeterData> recordList);
}

+ 46
- 32
mallinkService/src/main/java/com/iformall/service/kw/impl/KwBoxServiceImpl.java Просмотреть файл

@@ -24,6 +24,7 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;


@@ -40,6 +41,7 @@ public class KwBoxServiceImpl implements KwBoxService {
@Autowired
KwMeterService kwMeterService;


@Override
public PageInfo<KwBox> listAsPage(KwBox record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> kwBoxMapper.findList(record));
@@ -89,42 +91,54 @@ public class KwBoxServiceImpl implements KwBoxService {
}

@Override
public KwMeterData saveMeterData(KwBox kwBox, Date deviceTime, String addr, String activePower){

KwMeter kwMeter = findMeter(kwBox, addr);

if (kwMeter==null) return null;
public KwMeterData saveMeterData(KwBox kwBox, List<Map<String,String>> metersData, Date deviceTime){

KwMeterData kwMeterData = new KwMeterData();
kwMeterData.setTenantId(kwBox.getTenantId());
kwMeterData.setAddress(addr);
kwMeterData.setBoxId(kwBox.getId());
kwMeterData.setCreateTime(new Date());
kwMeterData.setDeviceTime(deviceTime);
kwMeterData.setMeterId(kwMeter.getId());
if (!StringUtil.isNullOrEmpty(activePower)) {
kwMeterData.setTotalPower(Integer.parseInt(activePower));
}
if (!metersData.isEmpty()) {

if (kwMeterData.getTotalPower() != null) {

KwMeterData record = new KwMeterData();
record.setBoxId(kwBox.getId());
record.setMeterId(kwMeter.getId());
record.setTotalPower(0); //set in sql not null
record.setSortColumns(KwMeterData.Field.DeviceTime_DESC);
PageInfo<KwMeterData> kwMeterDataPage = kwMeterDataService.listAsPage(record,1,1);

if (kwMeterDataPage.getList().size() > 0) {
kwMeterData.setUsedPower(
kwMeterData.getTotalPower()-kwMeterDataPage.getList().get(0).getTotalPower());
kwMeterData.setLastDeviceTime(kwMeterDataPage.getList().get(0).getDeviceTime());
kwMeterData.setLastTotalPower(kwMeterDataPage.getList().get(0).getTotalPower());
}
List<KwMeterData> kwMeterDataList = new ArrayList<>();
Date recordTime = new Date();
final IdWorker idWorker = IdWorker.get();
metersData.stream().forEach(m->{
String addr = m.get(KwBoxService.METER_ADDRESS);
String activePower = m.get(KwBoxService.METER_ACTIVE_POWER); //active power

KwMeter kwMeter = findMeter(kwBox, addr);
if (kwMeter==null) return;
KwMeterData kwMeterData = new KwMeterData();

kwMeterData.setId(idWorker.nextId());
kwMeterData.setTenantId(kwBox.getTenantId());
kwMeterData.setAddress(addr);
kwMeterData.setBoxId(kwBox.getId());
kwMeterData.setCreateTime(recordTime);
kwMeterData.setDeviceTime(deviceTime);
kwMeterData.setMeterId(kwMeter.getId());
if (!StringUtil.isNullOrEmpty(activePower)) {
kwMeterData.setTotalPower(Integer.parseInt(activePower));
}

if (kwMeterData.getTotalPower() != null) {
KwMeterData record = new KwMeterData();
record.setBoxId(kwBox.getId());
record.setMeterId(kwMeter.getId());
record.setTotalPower(0); //set in sql not null
record.setSortColumns(KwMeterData.Field.DeviceTime_DESC);
PageInfo<KwMeterData> kwMeterDataPage = kwMeterDataService.listAsPage(record,1,1);

if (kwMeterDataPage.getList().size() > 0) {
kwMeterData.setUsedPower(
kwMeterData.getTotalPower()-kwMeterDataPage.getList().get(0).getTotalPower());
kwMeterData.setLastDeviceTime(kwMeterDataPage.getList().get(0).getDeviceTime());
kwMeterData.setLastTotalPower(kwMeterDataPage.getList().get(0).getTotalPower());
}
}
kwMeterDataList.add(kwMeterData);
});

kwMeterDataService.save(kwMeterDataList);
}

kwMeterDataService.save(kwMeterData);
return kwMeterData;
return null;
}

@Override


+ 2
- 4
mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java Просмотреть файл

@@ -45,10 +45,8 @@ public class KwMeterDataServiceImpl implements KwMeterDataService {
}

@Override
public int save(KwMeterData record) {
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
return kwMeterDataMapper.insertSelective(record);
public int save(List<KwMeterData> recordList) {
return kwMeterDataMapper.insertList(recordList);
}

}

Загрузка…
Отмена
Сохранить