Browse Source

Merge remote-tracking branch 'origin/feature/shenyan_shangbao' into feature/shenyan_shangbao

feature/dangjian
sunyuchao 3 years ago
parent
commit
a17a1c48e9
  1. 1
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemGridPlatformHandleStatusEnum.java
  2. 99
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/redis/ItemAutoProcessRedis.java

1
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemGridPlatformHandleStatusEnum.java

@ -51,6 +51,7 @@ public enum ItemGridPlatformHandleStatusEnum {
HANDLE_CZ(1102, "处置"),
HANDLE_HCSB(1103, "上报核查"),
HANDLE_ZCZ(1104, "再处置"),
HANDLE_XFPJ(1105, "下发评价"),
HANDLE_OTHER(999, "派遣中");

99
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/redis/ItemAutoProcessRedis.java

@ -0,0 +1,99 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.modules.item.redis;
import com.elink.esua.epdc.commons.tools.redis.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.cache.CacheProperties;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Date;
import java.util.Set;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* 诉求自动处理
*
* @author zhaoqifeng
* @since v1.0.0 2022-09-03
*/
@Component
@Slf4j
public class ItemAutoProcessRedis{
/**
* redis key
*/
public static final String ITEM_TASK_KEY = "item:task:order";
@Resource
private StringRedisTemplate stringRedisTemplate;
/**
* 生成诉求信息用于延时任务达到时效后进行操作
* @Param itemId
* @Param timeStamp 毫秒
* @Author zhaoqifeng
* @Date 2022/10/20 14:12
*/
public void produce(String itemId, Long totalMilliSeconds){
stringRedisTemplate.opsForZSet().add(
ITEM_TASK_KEY,
itemId,
//24小时延时
totalMilliSeconds
);
new Date();
}
/**
* 延时任务也是异步任务延时任务达到时效之后执行相关处理并将延时任务从redis zset删除
* @Param
* @Return
* @Author zhaoqifeng
* @Date 2022/10/20 14:26
*/
public void consuming(){
Set<ZSetOperations.TypedTuple<String>> itemSerialNos = stringRedisTemplate.opsForZSet().rangeByScoreWithScores(
ITEM_TASK_KEY,
//延时任务score最小值
0,
//延时任务score最大值(当前时间)
System.currentTimeMillis()
);
if (!CollectionUtils.isEmpty(itemSerialNos)) {
for (ZSetOperations.TypedTuple<String> itemSerialNo : itemSerialNos) {
log.info("诉求" + itemSerialNo.getValue() + "开始处理");
//TODO 上报网格化平台,初验申请
log.info("诉求" + itemSerialNo.getValue() + "开始结束");
//订单关闭之后,将订单延时任务从队列中删除
stringRedisTemplate.opsForZSet().remove(ITEM_TASK_KEY, itemSerialNo.getValue());
}
}
}
}
Loading…
Cancel
Save