kaiyu
2021-07-01 16500ff805484fb876ff9736d21021b242f1d7cd
screen-manage
添加websocket实时界面
15 files modified
125 ■■■■■ changed files
myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java 4 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java 4 ●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java 2 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/DeviceAdjustValueService.java 8 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/SensorService.java 2 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/SysDictDataService.java 9 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/SysDictTypeService.java 9 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java 6 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/OrganizationUnitAlarmServiceImpl.java 2 ●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java 13 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/SysDictDataServiceImpl.java 19 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java 19 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/VersionServiceImpl.java 5 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/util/CacheUtils.java 14 ●●●●● patch | view | raw | blame | history
screen.iml 9 ●●●●● patch | view | raw | blame | history
myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java
@@ -43,7 +43,7 @@
        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        //String projectPath = System.getProperty("user.dir");
        String projectPath="D:\\tools\\IdeaProjects\\moral\\screen-job";
        String projectPath="C:\\Users\\cdl\\Desktop\\comProject\\newProject\\moral\\screen-api";
        gc.setOutputDir(projectPath + "/src/main/java");
        gc.setAuthor("moral");
        gc.setOpen(false);
@@ -68,7 +68,7 @@
        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://rm-bp1pr3rx9m3fnkwsk8o.mysql.rds.aliyuncs.com:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC");
        dsc.setUrl("jdbc:mysql://rm-bp1pr3rx9m3fnkwsk8o.mysql.rds.aliyuncs.com:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai");
        //dsc.setUrl("jdbc:mysql://rm-bp1pr3rx9m3fnkwsk8o.mysql.rds.aliyuncs.com:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("moral_123456");
screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java
@@ -19,15 +19,17 @@
 * @Date 2021/6/15 14:49
 * @Version TODO
 **/
//@Component
@Component
public class SecondDataConsumer implements ConsumerSeekAware {
    @KafkaListener(topics = "second_data",groupId = "SecondsDataGroup3")
    public void listen(ConsumerRecord<String, String> record , Consumer consumer) throws Exception {
        String messageStr = record.value();
        Map<String,String> message = (Map<String,String>)JSON.parse(messageStr);
        System.out.println(message);
        CopyOnWriteArraySet<SingleDeviceServer> sockets = SingleDeviceServer.sockets;
        for (SingleDeviceServer socket : sockets) {
            //判断消息书否数据该socket
            socket.sendMessage(message.toString());
        }
        System.out.println(message);
screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java
@@ -26,6 +26,8 @@
    private String mac;
    @OnOpen
    public void onOpen(Session session, @PathParam("mac") String mac) throws Exception {
        this.session = session;
screen-manage/src/main/java/com/moral/api/service/DeviceAdjustValueService.java
@@ -20,15 +20,15 @@
    @Transactional
    Map<String, Object> insertOne(DeviceAdjustValue deviceAdjustValue);
    Map<String,Object> getDataByCondition(Map map);
    Map<String, Object> getDataByCondition(Map map);
    @Transactional
    Map<String,Object> updateOne(Map map);
    Map<String, Object> updateOne(Map map);
    @Transactional
    Map<String,Object> deleteOne(Map map);
    Map<String, Object> deleteOne(Map map);
    Map<String,Object> getTimeSlot(Map map);
    Map<String, Object> getTimeSlot(Map map);
    Map<String,Object> refreshRedis();
screen-manage/src/main/java/com/moral/api/service/SensorService.java
@@ -34,4 +34,6 @@
    Map<String, Object> getSensorByFuzzy(Map map);
    Map<String, Sensor> getAllSensorFromCache();
    void refreshCache();
}
screen-manage/src/main/java/com/moral/api/service/SysDictDataService.java
@@ -74,4 +74,13 @@
            */
    Map<String,SysDictData> getDictDatasByType(String type);
    /**
    * @Description: 刷新字典类型缓存
            * @Param: []
            * @return: void
            * @Author: 陈凯裕
            * @Date: 2021/6/28
            */
    void refreshCache();
}
screen-manage/src/main/java/com/moral/api/service/SysDictTypeService.java
@@ -74,6 +74,15 @@
            */
    SysDictType getDictTypeById(Integer id);
    /**
    * @Description: 刷新缓存
            * @Param: []
            * @return: void
            * @Author: 陈凯裕
            * @Date: 2021/6/28
            */
    void refreshCache();
}
screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -123,7 +123,7 @@
        //设备信息存入redis
        setDeviceInfoToRedis(mac, deviceInfo);
        //刷新deviceInfo缓存
        CacheUtils.flushDeviceAlarmInfo();
        CacheUtils.refreshDeviceAlarmInfo();
        //操作日志记录
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        StringBuilder content = new StringBuilder();
@@ -146,7 +146,7 @@
        Integer orgId = device.getOrganizationId();
        deleteOrganizationUnitAlarm(orgId, versionId);
        //刷新deviceInfo缓存
        CacheUtils.flushDeviceAlarmInfo();
        CacheUtils.refreshDeviceAlarmInfo();
        //操作日志记录
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        StringBuilder content = new StringBuilder();
@@ -182,7 +182,7 @@
        //设备信息存入redis
        setDeviceInfoToRedis(mac, deviceInfo);
        //刷新deviceInfo缓存
        CacheUtils.flushDeviceAlarmInfo();
        CacheUtils.refreshDeviceAlarmInfo();
        //操作日志记录
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        StringBuilder content = new StringBuilder();
screen-manage/src/main/java/com/moral/api/service/impl/OrganizationUnitAlarmServiceImpl.java
@@ -78,7 +78,7 @@
        //获取更新后的记录用于插入日志
        OrganizationUnitAlarm newRecord = organizationUnitAlarmMapper.selectById(organizationUnitAlarm.getId());
        //刷新deviceInfo缓存
        CacheUtils.flushDeviceAlarmInfo();
        CacheUtils.refreshDeviceAlarmInfo();
        //封装返回对象
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java
@@ -141,7 +141,7 @@
            organizationUnitAlarm.setSensorCode(updateSensorMap.get("code").toString());
            organizationUnitAlarmMapper.update(organizationUnitAlarm,wrapper_OUA);
            //刷新deviceInfo缓存
            CacheUtils.flushDeviceAlarmInfo();
            CacheUtils.refreshDeviceAlarmInfo();
        }
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        String content = "修改因子:"+oldSensor.getName()+";";
@@ -359,6 +359,12 @@
        return sensors;
    }
    @Override
    public void refreshCache(){
        Map<String, Sensor> sensors = getAllSensorFromDB();
        refreshCache(sensors);
    }
    private Map<String,Sensor> getAllSensorFromDB(){
        QueryWrapper<Sensor> wrapper = new QueryWrapper<>();
        wrapper.eq("is_delete",Constants.NOT_DELETE);
@@ -368,11 +374,6 @@
            result.put(sensor.getCode(),sensor);
        }
        return result;
    }
    private void refreshCache(){
        Map<String, Sensor> sensors = getAllSensorFromDB();
        refreshCache(sensors);
    }
    private void refreshCache(Map<String,Sensor> sensors){
screen-manage/src/main/java/com/moral/api/service/impl/SysDictDataServiceImpl.java
@@ -61,8 +61,8 @@
        deleteWrapper.set("is_delete", Constants.DELETE);
        deleteWrapper.eq("id", id);
        sysDictDataMapper.update(null, deleteWrapper);
        //删除缓存
        CacheUtils.clearDictionariesCache();
        //刷新缓存
        refreshCache();
        //封装返回对象
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
@@ -95,8 +95,8 @@
        }
        //执行更新
        sysDictDataMapper.updateById(sysDictData);
        //清除缓存
        CacheUtils.clearDictionariesCache();
        //刷新缓存
        refreshCache();
        //封装返回结果
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
@@ -136,8 +136,8 @@
        }
        //执行插入
        sysDictDataMapper.insert(sysDictData);
        //清除缓存
        CacheUtils.clearDictionariesCache();
        //刷新缓存
        refreshCache();
        //封装返回结果
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
@@ -188,6 +188,13 @@
        return result;
    }
    @Override
    public void refreshCache(){
        redisTemplate.delete(RedisConstants.DICT_DATA_KEY);
        Map<String, List<SysDictData>> datas = getDictDataFromDB();
        redisTemplate.opsForValue().set(RedisConstants.DICT_DATA_KEY, datas);
    }
    /**
     * @Description: 从数据库中根据字典类型读取字典数据,返回Map  Key:类型名称 value:数据集合
screen-manage/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java
@@ -72,8 +72,8 @@
        deleteDataWrapper.eq("dict_type_id",typeId);
        deleteDataWrapper.set("is_delete",Constants.DELETE);
        sysDictDataService.update(null,deleteDataWrapper);
        //清除缓存数据
        CacheUtils.clearDictionariesCache();
        //刷新缓存数据
        refreshCache();
        //封装返回数据
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
@@ -102,8 +102,8 @@
        sysDictTypeMapper.updateById(type);
        //获取更新后的对象
        SysDictType sysDictType = sysDictTypeMapper.selectById(type.getId());
        //清除缓存
        CacheUtils.clearDictionariesCache();
        //刷新缓存
        refreshCache();
        //封装返回对象
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
@@ -129,8 +129,8 @@
        }
        //插入类型
        sysDictTypeMapper.insert(sysDictType);
        //清除缓存
        CacheUtils.clearDictionariesCache();
        //刷新缓存
        refreshCache();
        //封装返回对象
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
@@ -200,5 +200,12 @@
        return sysDictTypes;
    }
    @Override
    public void refreshCache(){
        redisTemplate.delete(RedisConstants.DICT_TYPE_KEY);
        List<SysDictType> types = getAllDictTypeFromDB();
        redisTemplate.opsForValue().set(RedisConstants.DICT_TYPE_KEY,types);
    }
}
screen-manage/src/main/java/com/moral/api/service/impl/VersionServiceImpl.java
@@ -14,6 +14,7 @@
import com.moral.api.pojo.form.version.*;
import com.moral.api.service.VersionService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.util.CacheUtils;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.ConvertUtils;
@@ -100,7 +101,7 @@
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        return dto;
    }
    @Override
    @Transactional
    public VersionDTO update(VersionUpdateForm form) {
@@ -265,6 +266,8 @@
                organizationUnitAlarmMapper.insert(organizationUnitAlarm);
            }
        }
        //刷新deviceInfo缓存
        CacheUtils.refreshDeviceAlarmInfo();
        //封装返回结果
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
screen-manage/src/main/java/com/moral/api/util/CacheUtils.java
@@ -66,12 +66,8 @@
        CacheUtils.unitConversionMapper = unitConversionMapper;
    }
    public static void clearDictionariesCache() {
        redisTemplate.delete(RedisConstants.DICT_DATA_KEY);
        redisTemplate.delete(RedisConstants.DICT_TYPE_KEY);
    }
    public static void flushDeviceAlarmInfo() {
    public static void refreshDeviceAlarmInfo() {
        //删除缓存
        redisTemplate.delete(RedisConstants.DEVICE_INFO);
        //重新添加缓存
@@ -119,4 +115,12 @@
        //存入redis
        redisTemplate.opsForHash().putAll(RedisConstants.DEVICE_INFO,result);
    }
    public static void refreshSensor(){
        sensorService.refreshCache();
    }
    public static void refreshDicTypeAndData(){
    }
}
screen.iml
@@ -4,14 +4,17 @@
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <content url="file://$MODULE_DIR$">
      <excludeFolder url="file://$MODULE_DIR$/target" />
      <excludeFolder url="file://$MODULE_DIR$/home" />
      <excludeFolder url="file://$MODULE_DIR$/home/moral/soft/log/screen-manage/%d{yyyy-MM-dd}" />
      <excludeFolder url="file://$MODULE_DIR$/home/moral/soft/log/screen-manage/2021-06-08" />
      <excludeFolder url="file://$MODULE_DIR$/home/moral/soft/log/springAppName_IS_UNDEFINED" />
      <excludeFolder url="file://$MODULE_DIR$/home" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" scope="TEST" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
    <orderEntry type="library" name="Maven: com.googlecode.aviator:aviator:5.2.5" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.1.13.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.1.13.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.1.13.RELEASE" level="project" />
@@ -110,8 +113,6 @@
    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.14.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.1.14.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.6.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
    <orderEntry type="library" name="Maven: com.google.code.kaptcha:kaptcha:2.3.2" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.1.13.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.1.14.RELEASE" level="project" />