Your Name лет назад: 3
Родитель
Сommit
f68a051810

+ 22 - 0
java110-bean/src/main/java/com/java110/dto/chargeMachine/ChargeMachineDto.java

@@ -15,6 +15,9 @@ import java.util.Date;
  **/
 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 @@ public class ChargeMachineDto extends PageDto implements Serializable {
 
     private String qrCode;
 
+    private String state;
+
+    private String stateName;
 
     public String getHeartbeatTime() {
         return heartbeatTime;
@@ -140,4 +146,20 @@ public class ChargeMachineDto extends PageDto implements Serializable {
     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;
+    }
 }

+ 24 - 0
service-common/src/main/java/com/java110/common/charge/ChargeCoreImpl.java

@@ -247,4 +247,28 @@ public class ChargeCoreImpl implements IChargeCore {
                 "\"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("离线");
+            }
+        }
+    }
 }

+ 7 - 0
service-common/src/main/java/com/java110/common/charge/IChargeCore.java

@@ -6,6 +6,8 @@ import com.java110.dto.chargeMachinePort.ChargeMachinePortDto;
 import com.java110.vo.ResultVo;
 import org.springframework.http.ResponseEntity;
 
+import java.util.List;
+
 /**
  * 充电适配器
  */
@@ -44,4 +46,9 @@ public interface IChargeCore {
     ResponseEntity<String> heartbeat(NotifyChargeOrderDto notifyChargeOrderDto);
 
 
+    /**
+     * 查询设备状态
+     * @param chargeMachineDtos
+     */
+    void queryChargeMachineState(List<ChargeMachineDto> chargeMachineDtos);
 }

+ 6 - 0
service-common/src/main/java/com/java110/common/charge/IChargeFactoryAdapt.java

@@ -47,4 +47,10 @@ public interface IChargeFactoryAdapt {
      * @return
      */
     List<NotifyChargePortDto> getChargeHeartBeatParam(NotifyChargeOrderDto notifyChargeOrderDto);
+
+    /**
+     * 查询设备状态
+     * @param chargeMachineDto
+     */
+    void queryChargeMachineState(ChargeMachineDto chargeMachineDto);
 }

+ 5 - 0
service-common/src/main/java/com/java110/common/charge/factory/common/CommonChargeMachineFactoryAdapt.java

@@ -76,4 +76,9 @@ public class CommonChargeMachineFactoryAdapt implements IChargeFactoryAdapt {
 
         return ports;
     }
+
+    @Override
+    public void queryChargeMachineState(ChargeMachineDto chargeMachineDto) {
+        chargeMachineDto.setState(ChargeMachineDto.STATE_ONLINE);
+    }
 }

+ 31 - 1
service-common/src/main/java/com/java110/common/charge/factory/dingding/DingdingChargeMachineFactoryAdapt.java

@@ -18,7 +18,7 @@ import java.util.List;
 
 /**
  * 叮叮充电桩 充电接口类
- *
+ * <p>
  * 叮叮 充电桩 通知处理类名为 NotifyDingDingChargeController.java
  */
 @Service("dingdingChargeMachineFactory")
@@ -26,6 +26,9 @@ 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 @@ public class DingdingChargeMachineFactoryAdapt implements IChargeFactoryAdapt {
 
         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("离线");
+    }
 }

+ 28 - 0
service-common/src/main/java/com/java110/common/charge/factory/kehang/KeHangChargeMachineFactoryAdapt.java

@@ -99,6 +99,34 @@ public class KeHangChargeMachineFactoryAdapt implements IChargeFactoryAdapt {
         return chargeMachinePortDto;
     }
 
+    @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;

+ 16 - 0
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 @@ public class ListChargeMachineCmd extends Cmd {
     @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 @@ public class ListChargeMachineCmd extends Cmd {
         if (count > 0) {
             chargeMachineDtos = chargeMachineV1InnerServiceSMOImpl.queryChargeMachines(chargeMachineDto);
             freshQrCodeUrl(chargeMachineDtos);
+
+            // todo  查询设备是否在线
+            queryMachineState(chargeMachineDtos);
         } else {
             chargeMachineDtos = new ArrayList<>();
         }
@@ -92,6 +99,15 @@ public class ListChargeMachineCmd extends Cmd {
         cmdDataFlowContext.setResponseEntity(responseEntity);
     }
 
+    private void queryMachineState(List<ChargeMachineDto> chargeMachineDtos) {
+
+        if(chargeMachineDtos == null || chargeMachineDtos.size() < 1 || chargeMachineDtos.size() > 10){
+            return ;
+        }
+
+        chargeCoreImpl.queryChargeMachineState(chargeMachineDtos);
+    }
+
     /**
      * 充电桩二维码
      *