java110-bean/src/main/java/com/java110/dto/chargeMachine/ChargeMachineDto.java
@@ -15,6 +15,9 @@ **/ public class ChargeMachineDto extends PageDto implements Serializable { public static final String STATE_ONLINE = "ONLINE"; public static final String STATE_OFFLINE = "OFFLINE"; private String heartbeatTime; private String implBean; private String machineId; @@ -35,6 +38,9 @@ private String qrCode; private String state; private String stateName; public String getHeartbeatTime() { return heartbeatTime; @@ -140,4 +146,20 @@ public void setQrCode(String qrCode) { this.qrCode = qrCode; } public String getState() { return state; } public void setState(String state) { this.state = state; } public String getStateName() { return stateName; } public void setStateName(String stateName) { this.stateName = stateName; } } service-common/src/main/java/com/java110/common/charge/ChargeCoreImpl.java
@@ -247,4 +247,28 @@ "\"msg\" : \"success\"\n" + "}", HttpStatus.OK); } @Override public void queryChargeMachineState(List<ChargeMachineDto> chargeMachineDtos) { for(ChargeMachineDto chargeMachineDto : chargeMachineDtos) { try { ChargeMachineFactoryDto chargeMachineFactoryDto = new ChargeMachineFactoryDto(); chargeMachineFactoryDto.setFactoryId(chargeMachineDto.getImplBean()); List<ChargeMachineFactoryDto> chargeMachineFactoryDtos = chargeMachineFactoryV1InnerServiceSMOImpl.queryChargeMachineFactorys(chargeMachineFactoryDto); Assert.listOnlyOne(chargeMachineFactoryDtos, "充电桩厂家不存在"); IChargeFactoryAdapt chargeFactoryAdapt = ApplicationContextFactory.getBean(chargeMachineFactoryDtos.get(0).getBeanImpl(), IChargeFactoryAdapt.class); if (chargeFactoryAdapt == null) { throw new CmdException("厂家接口未实现"); } chargeFactoryAdapt.queryChargeMachineState(chargeMachineDto); }catch (Exception e){ e.printStackTrace(); chargeMachineDto.setState(ChargeMachineDto.STATE_OFFLINE); chargeMachineDto.setStateName("离线"); } } } } service-common/src/main/java/com/java110/common/charge/IChargeCore.java
@@ -6,6 +6,8 @@ import com.java110.vo.ResultVo; import org.springframework.http.ResponseEntity; import java.util.List; /** * 充电适配器 */ @@ -44,4 +46,9 @@ ResponseEntity<String> heartbeat(NotifyChargeOrderDto notifyChargeOrderDto); /** * 查询设备状态 * @param chargeMachineDtos */ void queryChargeMachineState(List<ChargeMachineDto> chargeMachineDtos); } service-common/src/main/java/com/java110/common/charge/IChargeFactoryAdapt.java
@@ -47,4 +47,10 @@ * @return */ List<NotifyChargePortDto> getChargeHeartBeatParam(NotifyChargeOrderDto notifyChargeOrderDto); /** * 查询设备状态 * @param chargeMachineDto */ void queryChargeMachineState(ChargeMachineDto chargeMachineDto); } service-common/src/main/java/com/java110/common/charge/factory/common/CommonChargeMachineFactoryAdapt.java
@@ -76,4 +76,9 @@ return ports; } @Override public void queryChargeMachineState(ChargeMachineDto chargeMachineDto) { chargeMachineDto.setState(ChargeMachineDto.STATE_ONLINE); } } service-common/src/main/java/com/java110/common/charge/factory/dingding/DingdingChargeMachineFactoryAdapt.java
@@ -18,13 +18,16 @@ /** * 叮叮充电桩 充电接口类 * * <p> * 叮叮 充电桩 通知处理类名为 NotifyDingDingChargeController.java */ @Service("dingdingChargeMachineFactory") public class DingdingChargeMachineFactoryAdapt implements IChargeFactoryAdapt { private static final String QUERY_PORT_URL = DingdingChargeUtils.URL + "/equipments/ID/PORT"; private static final String QUERY_CHARGE_STATE_URL = DingdingChargeUtils.URL + "/equipments/code/ID"; //开始充电 private static final String START_CHARGE_URL = DingdingChargeUtils.URL + "/equipments/ID/PORT/open"; @@ -121,4 +124,31 @@ return ports; } @Override public void queryChargeMachineState(ChargeMachineDto chargeMachineDto) { String url = QUERY_CHARGE_STATE_URL.replace("ID", chargeMachineDto.getMachineCode()); String paramOut = null; try { paramOut = DingdingChargeUtils.execute(url, "", HttpMethod.GET); } catch (Exception e) { throw new IllegalArgumentException(e.getMessage()); } JSONObject paramObj = JSONObject.parseObject(paramOut); if (paramObj.getIntValue("code") != 200) { throw new IllegalArgumentException(paramObj.getString("msg")); } Boolean online = paramObj.getJSONObject("data").getBoolean("online"); if (online) { chargeMachineDto.setState(ChargeMachineDto.STATE_ONLINE); chargeMachineDto.setStateName("在线"); return; } chargeMachineDto.setState(ChargeMachineDto.STATE_OFFLINE); chargeMachineDto.setStateName("离线"); } } service-common/src/main/java/com/java110/common/charge/factory/kehang/KeHangChargeMachineFactoryAdapt.java
@@ -100,6 +100,34 @@ } @Override public void queryChargeMachineState(ChargeMachineDto chargeMachineDto) { JSONObject body = new JSONObject(); body.put("equipCd", chargeMachineDto.getMachineCode()); String paramOut = null; try { paramOut = DingdingChargeUtils.execute("net.equip.online.que", body.toJSONString(), HttpMethod.GET); } catch (Exception e) { throw new IllegalArgumentException(e.getMessage()); } JSONObject paramObj = JSONObject.parseObject(paramOut); if (paramObj.getIntValue("code") != 1) { throw new IllegalArgumentException(paramObj.getString("msg")); } JSONObject data = paramObj.getJSONObject("data"); if(data.getBoolean("online")){ chargeMachineDto.setState(ChargeMachineDto.STATE_ONLINE); chargeMachineDto.setStateName("在线"); return ; } chargeMachineDto.setState(ChargeMachineDto.STATE_OFFLINE); chargeMachineDto.setStateName("离线"); } @Override public List<NotifyChargePortDto> getChargeHeartBeatParam(NotifyChargeOrderDto notifyChargeOrderDto) { return null; } service-common/src/main/java/com/java110/common/cmd/chargeMachine/ListChargeMachineCmd.java
@@ -16,6 +16,7 @@ package com.java110.common.cmd.chargeMachine; import com.alibaba.fastjson.JSONObject; import com.java110.common.charge.IChargeCore; import com.java110.core.annotation.Java110Cmd; import com.java110.core.annotation.Java110Transactional; import com.java110.core.context.ICmdDataFlowContext; @@ -63,6 +64,9 @@ @Autowired private ISmallWeChatInnerServiceSMO smallWeChatInnerServiceSMOImpl; @Autowired private IChargeCore chargeCoreImpl; @Override public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) { super.validatePageInfo(reqJson); @@ -81,6 +85,9 @@ if (count > 0) { chargeMachineDtos = chargeMachineV1InnerServiceSMOImpl.queryChargeMachines(chargeMachineDto); freshQrCodeUrl(chargeMachineDtos); // todo 查询设备是否在线 queryMachineState(chargeMachineDtos); } else { chargeMachineDtos = new ArrayList<>(); } @@ -92,6 +99,15 @@ cmdDataFlowContext.setResponseEntity(responseEntity); } private void queryMachineState(List<ChargeMachineDto> chargeMachineDtos) { if(chargeMachineDtos == null || chargeMachineDtos.size() < 1 || chargeMachineDtos.size() > 10){ return ; } chargeCoreImpl.queryChargeMachineState(chargeMachineDtos); } /** * 充电桩二维码 *