BusinessExecutor.java 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package com.dderp.common.api;
  2. import com.dderp.common.datas.ERPModule;
  3. import com.dderp.common.entity.base.BaseEntity;
  4. import com.dderp.common.entity.site.ERPTokenUser;
  5. import com.dySweetFishPlugin.sql.dao.OperatorWait;
  6. import com.sweetfish.service.RetResult;
  7. import java.util.List;
  8. /**
  9. * Created by jlutt on 2018-10-23.
  10. * 业务执行接口
  11. * 通过groovy脚本实现
  12. *
  13. * @author jlutt
  14. */
  15. public interface BusinessExecutor<S extends BaseEntity, R extends BaseEntity> {
  16. default String scriptName() {
  17. return "未知名称脚本";
  18. }
  19. default ERPModule module() {
  20. return ERPModule.NONE;
  21. }
  22. default String getPerms(ERPTokenUser currentUser) {
  23. return "";
  24. }
  25. /**
  26. * 判断脚本执行阻塞方式,有时候同一脚本需要根据参数判断执行方式
  27. *
  28. * @param source 参数
  29. * @return 阻塞方式
  30. */
  31. default OperatorWait getAWait(S source) {
  32. return OperatorWait.SYNC;
  33. }
  34. /**
  35. * 脚本模块第一次载入需要执行的代码
  36. * 例如初始化信息,
  37. */
  38. default void start(long supplierCode) {
  39. }
  40. default boolean checkIn(S source) {
  41. return true;
  42. }
  43. /**
  44. * 是否需要检查formToken,防止重复点击
  45. * 放在Rest的call中判断,不太方便,因为有些脚本也不需要检查
  46. *
  47. * @param source 输入参数
  48. * @return 是否需要检查token
  49. */
  50. default boolean needToken(S source) {
  51. return false;
  52. }
  53. //数据检查
  54. default RetResult<S> checkExecute(S source) {
  55. //默认方法转一到手,不允许直接返回成功,因为有可能对source做了处理
  56. return RetResult.<S>successT().result(source);
  57. }
  58. default RetResult<S> beforeExecute(S source) {
  59. //默认方法转一到手,不允许直接返回成功,因为有可能对source做了处理
  60. return RetResult.<S>successT().result(source);
  61. }
  62. default RetResult<R> execute(S source) {
  63. return null;
  64. }
  65. /**
  66. * 执行完成后需要收尾的工作
  67. * 为什么要判断executeError,因为有时候在执行数据之前,临时为了让订单之类的数据客户端查不到,会修改一下es里面的状态值,如果出错后需要修改回去,如果不出错则需要发送打印之类的信息
  68. *
  69. * @param executeError execute是否出错 true表示出错,false表示没出错
  70. * @param source 传入参数
  71. * @param dest execute的返回值
  72. */
  73. default void afterExecute(boolean executeError, S source, R dest) {
  74. }
  75. default RetResult<List<R>> executeList(S source) {
  76. return null;
  77. }
  78. }