package com.zy.core.plugin.store; import com.core.common.Cools; import com.zy.asrs.domain.param.CreateInTaskParam; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.WrkMast; import com.zy.common.model.StartupDto; import com.zy.core.enums.RedisKeyType; import com.zy.core.model.StationObjModel; import java.util.List; public interface StoreInTaskPolicy { default boolean isEnabled() { return true; } default String getPolicyName() { return getClass().getSimpleName(); } default List getBarcodeStations(BasDevp basDevp) { return basDevp.getBarcodeStationList$(); } boolean matchCandidate(StoreInTaskContext context); default boolean beforeApply(StoreInTaskContext context) { return true; } default void onRequestPermitGranted(StoreInTaskContext context) { } default String getGenerateLockKey(StoreInTaskContext context) { return RedisKeyType.GENERATE_IN_TASK_LIMIT.key + context.getStationObjModel().getStationId(); } default int getSubmitLockSeconds(StoreInTaskContext context) { return 2; } default int getRetryLockSeconds(StoreInTaskContext context) { return 2; } default InTaskApplyRequest buildApplyRequest(StoreInTaskContext context) { InTaskApplyRequest request = new InTaskApplyRequest(); request.setBarcode(context.getStationProtocol().getBarcode()); request.setSourceStaNo(context.getStationProtocol().getStationId()); request.setTaskNo(context.getStationProtocol().getTaskNo()); request.setLocType1(context.getStationProtocol().getPalletHeight()); return request; } default CreateInTaskParam buildCreateInTaskParam(StoreInTaskContext context, StartupDto dto) { CreateInTaskParam taskParam = new CreateInTaskParam(); taskParam.setTaskNo(dto.getTaskNo()); taskParam.setLocNo(dto.getLocNo()); taskParam.setTaskPri(dto.getTaskPri()); taskParam.setBarcode(context.getStationProtocol().getBarcode()); return taskParam; } default void afterTaskCreated(StoreInTaskContext context, WrkMast wrkMast) { } default void onApplySubmitted(StoreInTaskContext context) { context.getStationProtocol().setSystemWarning("请求入库中"); } default void onApplyFailed(StoreInTaskContext context, AsyncInTaskResult result) { context.getStationProtocol().setSystemWarning("请求入库失败,WMS返回=" + buildFailureMessage(result)); } default String buildFailureMessage(AsyncInTaskResult result) { if (!Cools.isEmpty(result.getResponse())) { return result.getResponse(); } return result.getMessage(); } }