#
Junjie
4 天以前 691f0d4c4836c75fefa1d3b7fba4a72153751dd4
src/main/java/com/zy/asrs/task/NotifyScheduler.java
@@ -4,13 +4,14 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.domain.NotifyDto;
import com.zy.asrs.entity.DeviceConfig;
import com.zy.asrs.entity.HttpRequestLog;
import com.zy.asrs.service.DeviceConfigService;
import com.zy.asrs.service.HttpRequestLogService;
import com.zy.asrs.utils.NotifyUtils;
import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.RedisUtil;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.ForkLiftSlave;
import com.zy.core.model.ShuttleSlave;
import com.zy.core.properties.SlaveProperties;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
@@ -18,6 +19,7 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
@Component
@@ -29,25 +31,36 @@
    @Autowired
    private NotifyUtils notifyUtils;
    @Autowired
    private SlaveProperties slaveProperties;
    @Autowired
    private ConfigService configService;
    @Autowired
    private HttpRequestLogService httpRequestLogService;
    @Autowired
    private DeviceConfigService deviceConfigService;
    @Scheduled(cron = "0/3 * * * * ? ")
    public synchronized void notifyShuttle(){
        for (ShuttleSlave slave : slaveProperties.getShuttle()) {
            notifyMsg(String.valueOf(SlaveType.Shuttle), slave.getId());
        List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
                .eq("device_type", String.valueOf(SlaveType.Shuttle)));
        for (DeviceConfig device : shuttleList) {
            notifyMsg(String.valueOf(SlaveType.Shuttle), device.getDeviceNo());
        }
    }
    @Scheduled(cron = "0/3 * * * * ? ")
    public synchronized void notifyForkLift(){
        for (ForkLiftSlave slave : slaveProperties.getForkLift()) {
            notifyMsg(String.valueOf(SlaveType.ForkLift), slave.getId());
        List<DeviceConfig> forkLiftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
        for (DeviceConfig device : forkLiftList) {
            notifyMsg(String.valueOf(SlaveType.ForkLift), device.getDeviceNo());
        }
    }
    private synchronized void notifyMsg(String deviceType, Integer device) {
    @Scheduled(cron = "0/3 * * * * ? ")
    public synchronized void notifyTask(){
        notifyMsg("task", 1);
    }
    private synchronized void notifyMsg(String notifyType, Integer device) {
        Config notifyEnableConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "notifyEnable"));
        if(notifyEnableConfig == null){
            return;
@@ -69,7 +82,7 @@
        }
        String notifyUriPath = notifyUriPathConfig.getValue();
        List<String> keys = notifyUtils.takeKeys(deviceType, device);
        List<String> keys = notifyUtils.takeKeys(notifyType, device);
        if(keys == null){
            return;
        }
@@ -89,6 +102,11 @@
                continue;
            }
            HttpRequestLog httpRequestLog = new HttpRequestLog();
            httpRequestLog.setName(notifyUri + notifyUriPath);
            httpRequestLog.setRequest(JSON.toJSONString(notifyDto));
            httpRequestLog.setCreateTime(new Date());
            try {
                //触发通知
                String response = new HttpHandler.Builder()
@@ -97,15 +115,21 @@
                        .setJson(JSON.toJSONString(notifyDto))
                        .build()
                        .doPost();
                httpRequestLog.setResponse(response);
                JSONObject jsonObject = JSON.parseObject(response);
                Integer code = jsonObject.getInteger("code");
                if(code == 200){
                    //通知成功
                    redisUtil.del(key);
                    return;
                    continue;
                }
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                //保存记录
                httpRequestLogService.insert(httpRequestLog);
            }
            //通知失败
@@ -113,13 +137,13 @@
            if (times >= notifyDto.getFailTimes()) {
                //超过次数
                redisUtil.del(key);
                return;
                continue;
            }
            notifyDto.setLastRetryTime(System.currentTimeMillis());
            notifyDto.setRetryTimes(times);
            redisUtil.set(key, notifyDto);
            return;
            continue;
        }
    }