package com.dderp.common.api; import com.dderp.common.datas.ERPModule; import com.dderp.common.entity.base.BaseEntity; import com.dderp.common.entity.site.ERPTokenUser; import com.dySweetFishPlugin.sql.dao.OperatorWait; import com.sweetfish.service.RetResult; import java.util.List; /** * Created by jlutt on 2018-10-23. * 业务执行接口 * 通过groovy脚本实现 * * @author jlutt */ public interface BusinessExecutor { default String scriptName() { return "未知名称脚本"; } default ERPModule module() { return ERPModule.NONE; } default String getPerms(ERPTokenUser currentUser) { return ""; } /** * 判断脚本执行阻塞方式,有时候同一脚本需要根据参数判断执行方式 * * @param source 参数 * @return 阻塞方式 */ default OperatorWait getAWait(S source) { return OperatorWait.SYNC; } /** * 脚本模块第一次载入需要执行的代码 * 例如初始化信息, */ default void start(long supplierCode) { } default boolean checkIn(S source) { return true; } /** * 是否需要检查formToken,防止重复点击 * 放在Rest的call中判断,不太方便,因为有些脚本也不需要检查 * * @param source 输入参数 * @return 是否需要检查token */ default boolean needToken(S source) { return false; } //数据检查 default RetResult checkExecute(S source) { //默认方法转一到手,不允许直接返回成功,因为有可能对source做了处理 return RetResult.successT().result(source); } default RetResult beforeExecute(S source) { //默认方法转一到手,不允许直接返回成功,因为有可能对source做了处理 return RetResult.successT().result(source); } default RetResult execute(S source) { return null; } /** * 执行完成后需要收尾的工作 * 为什么要判断executeError,因为有时候在执行数据之前,临时为了让订单之类的数据客户端查不到,会修改一下es里面的状态值,如果出错后需要修改回去,如果不出错则需要发送打印之类的信息 * * @param executeError execute是否出错 true表示出错,false表示没出错 * @param source 传入参数 * @param dest execute的返回值 */ default void afterExecute(boolean executeError, S source, R dest) { } default RetResult> executeList(S source) { return null; } }