package com.java110.common.charge.factory.kehang; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.java110.common.charge.IChargeFactoryAdapt; import com.java110.dto.chargeMachine.ChargeMachineDto; import com.java110.dto.chargeMachine.NotifyChargeOrderDto; import com.java110.dto.chargeMachine.NotifyChargePortDto; import com.java110.dto.chargeMachine.ChargeMachinePortDto; import com.java110.vo.ResultVo; import org.springframework.http.HttpMethod; import org.springframework.stereotype.Service; import java.util.List; /** * 科航充电桩 */ @Service("keHangChargeMachineFactory") public class KeHangChargeMachineFactoryAdapt implements IChargeFactoryAdapt { @Override public ResultVo startCharge(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto, String chargeType, double duration, String orderId) { JSONObject body = new JSONObject(); body.put("version", "2.0"); body.put("time", duration * 60); body.put("equipCd", chargeMachineDto.getMachineCode()); body.put("port", chargeMachinePortDto.getPortCode()); body.put("chargeId", orderId); String paramOut = null; try { paramOut = KeHangChargeUtils.execute("net.equip.charge.slow.run", 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")); } return new ResultVo(ResultVo.CODE_OK, paramObj.getString("msg")); } @Override public ResultVo stopCharge(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto) { JSONObject body = new JSONObject(); body.put("equipCd", chargeMachineDto.getMachineCode()); body.put("port", chargeMachinePortDto.getPortCode()); String paramOut = null; try { paramOut = KeHangChargeUtils.execute("net.equip.charge.slow.run.stop", 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")); } return new ResultVo(ResultVo.CODE_OK, paramObj.getString("msg")); } @Override public ChargeMachinePortDto getChargePortState(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto) { JSONObject body = new JSONObject(); body.put("equipCd", chargeMachineDto.getMachineCode()); String paramOut = null; try { paramOut = KeHangChargeUtils.execute("net.equip.charge.slow.port.query", 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")); } JSONArray ports = paramObj.getJSONArray("ports"); String state = ChargeMachinePortDto.STATE_BREAKDOWN; JSONObject port = null; for(int portIndex = 0;portIndex < ports.size() ;portIndex++){ port = ports.getJSONObject(portIndex); if(chargeMachinePortDto.getPortCode().equals(port.getString("port"))){ if("1".equals(port.getString("status"))){ state = ChargeMachinePortDto.STATE_FREE; } else if ("2".equals(port.getString("status"))) { state = ChargeMachinePortDto.STATE_WORKING; }else{ state = ChargeMachinePortDto.STATE_BREAKDOWN; } } } chargeMachinePortDto.setState(state); return chargeMachinePortDto; } @Override public void queryChargeMachineState(ChargeMachineDto chargeMachineDto) { JSONObject body = new JSONObject(); body.put("equipCd", chargeMachineDto.getMachineCode()); String paramOut = null; try { paramOut = KeHangChargeUtils.execute("net.equip.online.query", 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 void workHeartbeat(ChargeMachineDto chargeMachineDto, String bodyParam) { } @Override public List getChargeHeartBeatParam(NotifyChargeOrderDto notifyChargeOrderDto) { return null; } }