Files
JChargePointProtocol/jcpp-app/src/main/java/sanbing/jcpp/app/service/PileService.java

119 lines
3.2 KiB
Java
Raw Normal View History

/**
* 开源代码仅供学习和交流研究使用商用请联系三丙
* 微信mohan_88888
* 抖音程序员三丙
* 付费课程知识星球https://t.zsxq.com/aKtXo
*/
package sanbing.jcpp.app.service;
import com.google.common.util.concurrent.ListenableFuture;
import sanbing.jcpp.app.adapter.request.PileCreateRequest;
import sanbing.jcpp.app.adapter.request.PileQueryRequest;
import sanbing.jcpp.app.adapter.request.PileUpdateRequest;
import sanbing.jcpp.app.adapter.response.PageResponse;
import sanbing.jcpp.app.adapter.response.PileOptionResponse;
import sanbing.jcpp.app.adapter.response.PileWithStatusResponse;
import sanbing.jcpp.app.dal.config.ibatis.enums.PileStatusEnum;
import sanbing.jcpp.app.dal.entity.Pile;
import sanbing.jcpp.app.data.kv.AttributesSaveResult;
import sanbing.jcpp.app.exception.JCPPException;
import java.util.List;
import java.util.UUID;
public interface PileService {
/**
* 创建充电桩
*/
Pile createPile(PileCreateRequest request);
/**
* 根据ID查询充电桩
*/
Pile findById(UUID id);
/**
* 更新充电桩
*/
Pile updatePile(UUID id, PileUpdateRequest request) throws JCPPException;
/**
* 删除充电桩
*/
void deletePile(UUID id) throws JCPPException;
/**
* 分页查询充电桩及状态信息
*/
PageResponse<PileWithStatusResponse> queryPilesWithStatus(PileQueryRequest request);
/**
* 获取充电桩选项列表
*/
List<PileOptionResponse> getPileOptions();
/**
* 更新充电桩状态
*
* @param pileId 充电桩ID
* @param status 新状态
*/
void updatePileStatus(UUID pileId, PileStatusEnum status);
/**
* 根据充电桩编码更新状态
*
* @param pileCode 充电桩编码
* @param status 新状态
*/
void updatePileStatusByCode(String pileCode, PileStatusEnum status);
/**
* 查询所有充电桩
*/
List<Pile> findAll();
/**
* 分页查询充电桩用于状态清洗等批处理场景
*
* @param offset 偏移量
* @param limit 限制数量
* @return 充电桩列表
*/
List<Pile> findPilesWithPagination(int offset, int limit);
/**
* 查询充电桩状态
*
* @param pileId 充电桩ID
* @return 状态字符串如果不存在返回null
*/
String findPileStatus(UUID pileId);
/**
* 处理充电桩登录后的状态管理优化版
* 执行更新STATUS为ONLINE 更新CONNECTED_AT 更新LAST_ACTIVE_TIME
*
* @param pileId 充电桩ID
* @return 异步操作结果
*/
ListenableFuture<AttributesSaveResult> handlePileLogin(UUID pileId);
/**
* 处理充电桩心跳时的状态管理优化版
* 执行更新STATUS为ONLINE 更新LAST_ACTIVE_TIME
*
* @param pileId 充电桩ID
* @return 异步操作结果
*/
ListenableFuture<AttributesSaveResult> handlePileHeartbeat(UUID pileId);
/**
* 处理充电桩会话关闭时的状态管理
*
* @param pileCode 充电桩编码
*/
void handlePileSessionClose(String pileCode);
}