| @@ -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); | |||
| } | |||
| @@ -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); | |||
| } | |||
| @@ -17,5 +17,5 @@ public interface KwMeterDataService { | |||
| List<KwMeterData> findList(KwMeterData kwMeterData); | |||
| int save(KwMeterData record); | |||
| int save(List<KwMeterData> recordList); | |||
| } | |||
| @@ -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 | |||
| @@ -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); | |||
| } | |||
| } | |||