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.context.ICmdDataFlowContext; import com.java110.core.event.cmd.Cmd; import com.java110.core.event.cmd.CmdEvent; import com.java110.dto.chargeMachine.ChargeMachineDto; import com.java110.dto.chargeMachine.ChargeMachinePortDto; import com.java110.intf.acct.IAccountInnerServiceSMO; import com.java110.intf.common.IChargeMachineOrderV1InnerServiceSMO; import com.java110.intf.common.IChargeMachinePortV1InnerServiceSMO; import com.java110.intf.common.IChargeMachineV1InnerServiceSMO; import com.java110.intf.user.IUserV1InnerServiceSMO; import com.java110.utils.exception.CmdException; import com.java110.utils.util.Assert; import com.java110.vo.ResultVo; import org.springframework.beans.factory.annotation.Autowired; import java.text.ParseException; import java.util.List; /** * 充电桩手动结束充电 处理类 *

* add by wuxw 2023-03-09 */ @Java110Cmd(serviceCode = "chargeMachine.stopCharge") public class StopChargeCmd extends Cmd { @Autowired private IChargeMachineV1InnerServiceSMO chargeMachineV1InnerServiceSMOImpl; @Autowired private IChargeMachinePortV1InnerServiceSMO chargeMachinePortV1InnerServiceSMOImpl; @Autowired private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl; @Autowired private IAccountInnerServiceSMO accountInnerServiceSMOImpl; @Autowired private IChargeCore chargeCoreImpl; @Autowired private IChargeMachineOrderV1InnerServiceSMO chargeMachineOrderV1InnerServiceSMOImpl; @Override public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException { Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区信息"); Assert.hasKeyAndValue(reqJson, "machineId", "未包含充电桩"); Assert.hasKeyAndValue(reqJson, "portId", "未包含插槽"); String userId = context.getReqHeaders().get("user-id"); Assert.hasLength(userId, "用户不存在"); //查询充电桩设备信息 ChargeMachineDto chargeMachineDto = new ChargeMachineDto(); chargeMachineDto.setCommunityId(reqJson.getString("communityId")); chargeMachineDto.setMachineId(reqJson.getString("machineId")); List chargeMachineDtos = chargeMachineV1InnerServiceSMOImpl.queryChargeMachines(chargeMachineDto); Assert.listOnlyOne(chargeMachineDtos, "充电桩 不存在"); // todo 插槽是否存在 ChargeMachinePortDto chargeMachinePortDto = new ChargeMachinePortDto(); chargeMachinePortDto.setMachineId(reqJson.getString("machineId")); chargeMachinePortDto.setPortId(reqJson.getString("portId")); List chargeMachinePortDtos = chargeMachinePortV1InnerServiceSMOImpl.queryChargeMachinePorts(chargeMachinePortDto); Assert.listOnlyOne(chargeMachinePortDtos, "插槽不存在"); } @Override public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException { ChargeMachineDto chargeMachineDto = new ChargeMachineDto(); chargeMachineDto.setCommunityId(reqJson.getString("communityId")); chargeMachineDto.setMachineId(reqJson.getString("machineId")); List chargeMachineDtos = chargeMachineV1InnerServiceSMOImpl.queryChargeMachines(chargeMachineDto); ChargeMachinePortDto chargeMachinePortDto = new ChargeMachinePortDto(); chargeMachinePortDto.setMachineId(reqJson.getString("machineId")); chargeMachinePortDto.setPortId(reqJson.getString("portId")); List chargeMachinePortDtos = chargeMachinePortV1InnerServiceSMOImpl.queryChargeMachinePorts(chargeMachinePortDto); //调用充电桩充电 ResultVo resultVo = chargeCoreImpl.stopCharge(chargeMachineDtos.get(0), chargeMachinePortDtos.get(0)); if (resultVo.getCode() != ResultVo.CODE_OK) { context.setResponseEntity(ResultVo.createResponseEntity(resultVo)); return; } // // todo 生成 充电订单 // ChargeMachineOrderPo chargeMachineOrderPo = new ChargeMachineOrderPo(); // chargeMachineOrderPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); // chargeMachineOrderPo.setState(ChargeMachineOrderDto.STATE_FINISH); // chargeMachineOrderPo.setCommunityId(chargeMachineDtos.get(0).getCommunityId()); // chargeMachineOrderPo.setOrderId(orderId); // chargeMachineOrderV1InnerServiceSMOImpl.updateChargeMachineOrder(chargeMachineOrderPo); //todo 这里不操作 以设备通知为主 // ChargeMachinePortPo chargeMachinePortPo = new ChargeMachinePortPo(); // chargeMachinePortPo.setPortId(reqJson.getString("portId")); // chargeMachinePortPo.setState(ChargeMachinePortDto.STATE_FREE); // chargeMachinePortV1InnerServiceSMOImpl.updateChargeMachinePort(chargeMachinePortPo); context.setResponseEntity(ResultVo.createResponseEntity(resultVo)); } }