import com.dderp.business.dao.OrderDao import com.dderp.common.api.NoSqlKeysService import com.dderp.common.api.SupplierInitService import com.dderp.common.datas.RedisKeys import com.dderp.common.entity.order.OrderLifeCycle import com.dySweetFishPlugin.tool.lang.Holder import com.sweetfish.convert.json.JsonConvert import org.apache.logging.log4j.Logger //订单生命周期 static def createRunnable(SupplierInitService supplierService, NoSqlKeysService keysService, OrderDao orderDao, JsonConvert jsonConvert, Logger logger, String dataSourceId, long supplierCode) { return { //lrange返回字符串列表 List allJson = supplierService.redisListGetAndDel(keysService.getRedisKey(RedisKeys.KEY_ERP_ORDER_CYCLE_ITEM, supplierCode), 300) List itemList = allJson.collect { x -> (OrderLifeCycle) jsonConvert.convertFrom(OrderLifeCycle.class, x) } if (!itemList.isEmpty()) { //按操作方式分组 try { logger.warn("开始写入订单生命周期记录") Map> groups = itemList.groupBy { it.dataKind } //按顺序执行 Holder itemInsertCount = Holder.of(0) Holder itemUpdateCount = Holder.of(0) Holder itemBreedCount = Holder.of(0) Holder itemDeleteCount = Holder.of(0) groups.each { k, v -> if (k == 0) { orderDao.addOrderLifeCycleSync(v, dataSourceId, String.valueOf(supplierCode)) itemInsertCount.set(v.size()) } } groups.each { k, v -> if (k == 1) { orderDao.updateOrderLifeCycleSync(v, dataSourceId, String.valueOf(supplierCode)) itemUpdateCount.set(v.size()) } } groups.each { k, v -> if (k == 3) { orderDao.updateOrderLifeCycleByBreedSync(v, dataSourceId, String.valueOf(supplierCode)) itemBreedCount.set(v.size()) } } groups.each { k, v -> if (k == 2) { orderDao.deleteOrderLifeCycleSync(v, dataSourceId, String.valueOf(supplierCode)) itemDeleteCount.set(v.size()) } } logger.warn("写入订单生命周期记录:insert " + itemInsertCount.get() + " update " + itemUpdateCount.get() + " updateBreed " + itemBreedCount.get() + " delete " + itemDeleteCount.get() ) } catch (Exception e) { logger.error(e.getMessage(), e) } } else { logger.warn("暂无订单生命周期记录") } } as Runnable } //groovy最后一个表达式的值为返回 createRunnable(supplierService, keysService, orderDao, jsonConvert, logger, dataSourceId, supplierCode)