Schedule_2_60_300_OrderCycle.groovy 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import com.dderp.business.dao.OrderDao
  2. import com.dderp.common.api.NoSqlKeysService
  3. import com.dderp.common.api.SupplierInitService
  4. import com.dderp.common.datas.RedisKeys
  5. import com.dderp.common.entity.order.OrderLifeCycle
  6. import com.dySweetFishPlugin.tool.lang.Holder
  7. import com.sweetfish.convert.json.JsonConvert
  8. import org.apache.logging.log4j.Logger
  9. //订单生命周期
  10. static def createRunnable(SupplierInitService supplierService, NoSqlKeysService keysService, OrderDao orderDao, JsonConvert jsonConvert, Logger logger, String dataSourceId, long supplierCode) {
  11. return {
  12. //lrange返回字符串列表
  13. List<String> allJson = supplierService.redisListGetAndDel(keysService.getRedisKey(RedisKeys.KEY_ERP_ORDER_CYCLE_ITEM, supplierCode), 300)
  14. List<OrderLifeCycle> itemList = allJson.collect { x -> (OrderLifeCycle) jsonConvert.convertFrom(OrderLifeCycle.class, x) }
  15. if (!itemList.isEmpty()) {
  16. //按操作方式分组
  17. try {
  18. logger.warn("开始写入订单生命周期记录")
  19. Map<Integer, List<OrderLifeCycle>> groups = itemList.groupBy { it.dataKind }
  20. //按顺序执行
  21. Holder<Integer> itemInsertCount = Holder.of(0)
  22. Holder<Integer> itemUpdateCount = Holder.of(0)
  23. Holder<Integer> itemBreedCount = Holder.of(0)
  24. Holder<Integer> itemDeleteCount = Holder.of(0)
  25. groups.each { k, v ->
  26. if (k == 0) {
  27. orderDao.addOrderLifeCycleSync(v, dataSourceId, String.valueOf(supplierCode))
  28. itemInsertCount.set(v.size())
  29. }
  30. }
  31. groups.each { k, v ->
  32. if (k == 1) {
  33. orderDao.updateOrderLifeCycleSync(v, dataSourceId, String.valueOf(supplierCode))
  34. itemUpdateCount.set(v.size())
  35. }
  36. }
  37. groups.each { k, v ->
  38. if (k == 3) {
  39. orderDao.updateOrderLifeCycleByBreedSync(v, dataSourceId, String.valueOf(supplierCode))
  40. itemBreedCount.set(v.size())
  41. }
  42. }
  43. groups.each { k, v ->
  44. if (k == 2) {
  45. orderDao.deleteOrderLifeCycleSync(v, dataSourceId, String.valueOf(supplierCode))
  46. itemDeleteCount.set(v.size())
  47. }
  48. }
  49. logger.warn("写入订单生命周期记录:insert " + itemInsertCount.get()
  50. + " update " + itemUpdateCount.get()
  51. + " updateBreed " + itemBreedCount.get()
  52. + " delete " + itemDeleteCount.get()
  53. )
  54. } catch (Exception e) {
  55. logger.error(e.getMessage(), e)
  56. }
  57. } else {
  58. logger.warn("暂无订单生命周期记录")
  59. }
  60. } as Runnable
  61. }
  62. //groovy最后一个表达式的值为返回
  63. createRunnable(supplierService, keysService, orderDao, jsonConvert, logger, dataSourceId, supplierCode)