diff --git a/mallinkCallback/src/main/java/com/iformall/controller/device/KwBoxV1Controller.java b/mallinkCallback/src/main/java/com/iformall/controller/device/KwBoxV1Controller.java index 66d1c6c7e..19b13d8bb 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/device/KwBoxV1Controller.java +++ b/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 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 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 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 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 resData = new HashMap<>(); List> metersData = (List>)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 meters = kwBoxService.findMetersAddress(kwBox); - boolean updateMeters = false; boolean updateConfig = false; @@ -161,11 +151,12 @@ public class KwBoxV1Controller extends BaseController { updateMeters = true; } + Map 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 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); } diff --git a/mallinkService/src/main/java/com/iformall/service/kw/KwBoxService.java b/mallinkService/src/main/java/com/iformall/service/kw/KwBoxService.java index 062a28e5e..6d970d5cf 100644 --- a/mallinkService/src/main/java/com/iformall/service/kw/KwBoxService.java +++ b/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 findMetersAddress(KwBox record); List 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> metersData, Date deviceTime); } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/service/kw/KwMeterDataService.java b/mallinkService/src/main/java/com/iformall/service/kw/KwMeterDataService.java index ba2b9d1ef..095995e11 100644 --- a/mallinkService/src/main/java/com/iformall/service/kw/KwMeterDataService.java +++ b/mallinkService/src/main/java/com/iformall/service/kw/KwMeterDataService.java @@ -17,5 +17,5 @@ public interface KwMeterDataService { List findList(KwMeterData kwMeterData); - int save(KwMeterData record); + int save(List recordList); } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/service/kw/impl/KwBoxServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/kw/impl/KwBoxServiceImpl.java index 590a0c102..502ca5c56 100644 --- a/mallinkService/src/main/java/com/iformall/service/kw/impl/KwBoxServiceImpl.java +++ b/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 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> 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 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 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 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 diff --git a/mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java index f83758b80..6aa024509 100644 --- a/mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java +++ b/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 recordList) { + return kwMeterDataMapper.insertList(recordList); } }