全业务考评 1 рік тому
батько
коміт
6046c0bc1e

+ 8 - 0
power-fitting-JN/pom.xml

@@ -133,6 +133,14 @@
             <artifactId>hutool-core</artifactId>
             <version>5.8.16</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-redis</artifactId>
+        </dependency>
 
     </dependencies>
 

+ 44 - 0
power-fitting-JN/src/main/java/com.gyee.power.fitting/common/redis/RedisAutoConfiguration.java

@@ -0,0 +1,44 @@
+package com.gyee.power.fitting.common.redis;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisOperations;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
+
+import java.net.UnknownHostException;
+
+@Configuration
+@ConditionalOnClass(RedisOperations.class)
+@EnableConfigurationProperties(RedisProperties.class)
+public class RedisAutoConfiguration {
+
+
+    @Bean
+    @ConditionalOnMissingBean(name = "redisTemplate")
+    public RedisTemplate<Object, Object> redisTemplate(
+            RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
+        RedisTemplate<Object, Object> template = new RedisTemplate<>();
+        template.setConnectionFactory(redisConnectionFactory);
+        return template;
+
+    }
+
+
+    @Bean
+    @ConditionalOnMissingBean
+    public StringRedisTemplate stringRedisTemplate(
+            RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
+        StringRedisTemplate template = new StringRedisTemplate();
+        template.setConnectionFactory(redisConnectionFactory);
+        return template;
+
+    }
+
+
+}

+ 47 - 0
power-fitting-JN/src/main/java/com.gyee.power.fitting/common/redis/RedisConfig.java

@@ -0,0 +1,47 @@
+package com.gyee.power.fitting.common.redis;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+
+/**
+ * /**
+ *
+ * @ClassName RedisConfig
+ * @Description TODO
+ * @Author 谢生杰
+ * @Date 2020/9/14 10:42
+ * @Version 1.0
+ **/
+@Configuration
+public class RedisConfig {
+    @Bean
+    @SuppressWarnings("all")
+    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
+        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
+        template.setConnectionFactory(factory);
+        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
+        ObjectMapper om = new ObjectMapper();
+        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+        jackson2JsonRedisSerializer.setObjectMapper(om);
+        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+        // key采用String的序列化方式
+        template.setKeySerializer(stringRedisSerializer);
+        // hash的key也采用String的序列化方式
+        template.setHashKeySerializer(stringRedisSerializer);
+        // value序列化方式采用jackson
+        template.setValueSerializer(jackson2JsonRedisSerializer);
+        // hash的value序列化方式采用jackson
+        template.setHashValueSerializer(jackson2JsonRedisSerializer);
+        template.afterPropertiesSet();
+        return template;
+    }
+}

+ 54 - 0
power-fitting-JN/src/main/java/com.gyee.power.fitting/common/redis/RedisService.java

@@ -0,0 +1,54 @@
+package com.gyee.power.fitting.common.redis;
+
+public interface RedisService {
+
+    /**
+     * set存数据
+     *
+     * @param key
+     * @param value
+     * @return
+     */
+    boolean set(String key, String value);
+
+
+    /**
+     * get获取数据
+     *
+     * @param key
+     * @return
+     */
+    String get(String key);
+
+//    void getList(String key,int start,int end);
+
+    /**
+     * 设置有效天数
+     *
+     * @param key
+     * @param expire
+     * @return
+     */
+    boolean expire(String key, long expire);
+
+    /**
+     * 移除数据
+     *
+     * @param key
+     * @return
+     */
+    boolean remove(String key);
+
+
+    /**
+     * 插入对象
+     */
+    void setObject(Object o);
+
+
+    boolean hasKey(String key);
+
+
+    void select(Integer dbIndex);
+
+}

+ 125 - 0
power-fitting-JN/src/main/java/com.gyee.power.fitting/common/redis/RedisServiceImpl.java

@@ -0,0 +1,125 @@
+package com.gyee.power.fitting.common.redis;
+
+import org.springframework.dao.DataAccessException;
+import org.springframework.data.redis.connection.RedisConnection;
+import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
+import org.springframework.data.redis.core.RedisCallback;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.lang.reflect.Field;
+import java.util.concurrent.TimeUnit;
+
+@Service("redisService")
+public class RedisServiceImpl implements RedisService {
+
+    @Resource
+    private RedisTemplate<String, ?> redisTemplate;
+
+    @Override
+    public boolean set(final String key, final String value) {
+        ;
+        boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
+            @Override
+            public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
+                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
+                connection.set(serializer.serialize(key), serializer.serialize(value));
+                return true;
+            }
+        });
+        return result;
+    }
+
+
+    @Override
+    public String get(final String key) {
+        String result = redisTemplate.execute(new RedisCallback<String>() {
+            @Override
+            public String doInRedis(RedisConnection connection) throws DataAccessException {
+                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
+                byte[] value = connection.get(serializer.serialize(key));
+                return serializer.deserialize(value);
+            }
+        });
+        return result;
+    }
+
+
+    @Override
+    public boolean expire(final String key, long expire) {
+        return redisTemplate.expire(key, expire, TimeUnit.SECONDS);
+    }
+
+    @Override
+    public boolean remove(final String key) {
+        boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
+            @Override
+            public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
+                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
+                connection.del(key.getBytes());
+                return true;
+            }
+        });
+        return result;
+    }
+
+    @Override
+    public boolean hasKey(final String key) {
+        try {
+            return redisTemplate.hasKey(key);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public void setObject(Object obj) {
+        Field[] fields = obj.getClass().getDeclaredFields();
+        for (int i = 0, len = fields.length; i < len; i++) {
+            // 对于每个属性,获取属性名
+            String varName = fields[i].getName();
+            try {
+                // 获取原来的访问控制权限
+                boolean accessFlag = fields[i].isAccessible();
+                // 修改访问控制权限
+                fields[i].setAccessible(true);
+                // 获取在对象f中属性fields[i]对应的对象中的变量
+                Object o;
+                try {
+                    o = fields[i].get(obj);
+                    if (o != null) {
+                        set(varName, String.valueOf(o));
+                    } else {
+                        set(varName, "");
+                    }
+
+                    //System.err.println("传入的对象中包含一个如下的变量:" + varName + " = " + o);
+                } catch (IllegalAccessException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+                // 恢复访问控制权限
+                fields[i].setAccessible(accessFlag);
+            } catch (IllegalArgumentException ex) {
+                ex.printStackTrace();
+            }
+        }
+
+    }
+
+    public void select(Integer dbIndex) {
+        if (dbIndex == null || dbIndex > 15 || dbIndex < 0) {
+            dbIndex = 0;
+        }
+        LettuceConnectionFactory jedisConnectionFactory = (LettuceConnectionFactory) redisTemplate
+                .getConnectionFactory();
+        jedisConnectionFactory.setDatabase(dbIndex);
+        redisTemplate.setConnectionFactory(jedisConnectionFactory);
+        jedisConnectionFactory.afterPropertiesSet();
+//        jedisConnectionFactory.resetConnection();
+
+    }
+}

+ 314 - 0
power-fitting-JN/src/main/java/com.gyee.power.fitting/common/spring/CacheContext.java

@@ -0,0 +1,314 @@
+package com.gyee.power.fitting.common.spring;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gyee.power.fitting.common.config.StringUtils;
+import com.gyee.power.fitting.common.redis.RedisService;
+import com.gyee.power.fitting.model.*;
+import com.gyee.power.fitting.service.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @ClassName : CacheContext
+ * @Author : xieshengjie
+ * @Date: 2021/5/18 9:35
+ * @Description : 缓存
+ */
+@Component
+public class CacheContext implements CommandLineRunner {
+    Logger logger = LoggerFactory.getLogger(CacheContext.class);
+
+    private final String QS = "0";
+
+    @Resource
+    private ProBasicEquipmentService proBasicEquipmentService;
+
+
+    @Resource
+    private ProBasicPowerstationService proBasicWindpowerstationService;
+
+    @Resource
+    private ProEconEquipmentmodelService proEconEquipmentmodelService;
+
+
+    @Resource
+    private RedisService redisService;
+    @Resource
+    private ProBasicModelPowerService proBasicModelPowerService;
+
+    @Resource
+    private ProBasicWeatherStationService proBasicWeatherStationService;
+
+    @Resource
+    private ProBasicPowerstationService windpowerstationService;
+
+    public static List<ProBasicEquipment> wtls = new ArrayList<>();
+
+    public static List<ProBasicWeatherStation> weawpls = new ArrayList<>();
+    public static List<ProBasicPowerstation> wpls = new ArrayList<>();
+    public static List<ProBasicPowerstation> wplsf = new ArrayList<>();
+    public static List<ProBasicPowerstation> wplsG = new ArrayList<>(); //光电集合
+    public static List<ProBasicPowerstation> zwpls = new ArrayList<>();
+
+    public static Map<String, List<ProBasicPowerstation>> cpwpmap = new HashMap<>();
+    public static Map<String, List<ProBasicPowerstation>> wpmapls = new HashMap<>();
+    public static Map<String, ProBasicPowerstation> wpmap = new HashMap<>();
+    public static Map<String, List<ProBasicEquipment>> wpwtmap = new HashMap<>();
+    public static Map<String, List<ProBasicEquipment>> pjwtmap = new HashMap<>();
+    public static Map<String, List<ProBasicEquipment>> lnwtmap = new HashMap<>();
+    public static Map<String, List<ProBasicEquipment>> cmwtlsmap = new HashMap<>();
+    public static Map<String, List<ProBasicEquipment>> rgwtlsmap = new HashMap<>();
+    public static Map<String, Map<String, ProBasicEquipment>> cmwtmap = new HashMap<>();
+    public static Map<String, List<ProBasicEquipment>> sqwtmap = new HashMap<>();
+    public static Map<String, Map<String, ProBasicEquipmentPoint>> wtpAimap = new HashMap<>();// 风电机测点AI表
+    public static Map<String, Map<String, ProBasicPowerstationPoint>> wppointmap = new HashMap<>();
+    public static Map<String, Map<String, ProBasicPowerstationPoint>> weatherwppointmap = new HashMap<>();
+
+    public static Map<String, ProEconEquipmentmodel> modelMap = new HashMap<>();
+    public static Map<String, Double> modelpower = new HashMap<>();
+
+    public static Map<String, String> wtstandardmap = new HashMap<>();
+    public static Map<String, ProBasicEquipment> wtmap = new HashMap<>();
+
+    public static Map<String, Map<Double, ProBasicModelPower>> modelpowermap = new TreeMap<>();
+
+    public static List<ProBasicModelPower> mpls = new ArrayList<>();
+
+    public static List<ProEconEquipmentmodel> equipmentmodels = new ArrayList<>();
+
+    public static Map<String, List<ProBasicEquipment>> subWtsMap = new HashMap<>();
+
+
+    public static List<ProBasicPowerstation> stations = new ArrayList<>();
+    public static Map<String,ProBasicPowerstation> wpmaps = new HashMap<>();
+    public static Map<String,String> wppmap = new HashMap<>();
+
+    @Override
+    public void run(String... args) throws Exception {
+        logger.info("缓存开始------------------------------------------------------------");
+
+        equipmentmodels = proEconEquipmentmodelService.list();
+        equipmentmodels.stream().forEach(e -> {
+            modelMap.put(e.getId(), e);
+        });
+        mpls = proBasicModelPowerService.list();
+        mpls.sort(Comparator.comparing(ProBasicModelPower::getSpeed));
+        if (!mpls.isEmpty()) {
+
+            for (ProBasicModelPower mp : mpls) {
+                if (modelpowermap.containsKey(mp.getModelId())) {
+                    Map<Double, ProBasicModelPower> tempmap = modelpowermap.get(mp.getModelId());
+                    tempmap.put(mp.getSpeed(), mp);
+
+                } else {
+                    Map<Double, ProBasicModelPower> tempmap = new HashMap<>();
+                    tempmap.put(mp.getSpeed(), mp);
+                    modelpowermap.put(mp.getModelId(), tempmap);
+                }
+            }
+        }
+
+
+
+        for (ProBasicPowerstation wp : wpls) {
+            if (cpwpmap.containsKey(wp.getCompanyId())) {
+                cpwpmap.get(wp.getCompanyId()).add(wp);
+            } else {
+                List<ProBasicPowerstation> wps = new ArrayList<>();
+                wps.add(wp);
+                cpwpmap.put(wp.getCompanyId(), wps);
+            }
+        }
+
+        QueryWrapper<ProBasicEquipment> queryWtWrapper = new QueryWrapper<>();
+        queryWtWrapper.orderByAsc("order_num");
+        wtls = proBasicEquipmentService.list(queryWtWrapper).stream().filter(i -> i.getIsable() == 1).collect(Collectors.toList());
+        logger.info(wtls.size() + "");
+        wtls.forEach(wt -> {
+            if (modelMap.containsKey(wt.getModelId())) {
+                ProEconEquipmentmodel equipmentmodel = modelMap.get(wt.getModelId());
+                modelpower.put(wt.getId(), equipmentmodel.getPowerProduction());
+            }
+
+
+            wtmap.put(wt.getId(), wt);
+            //标杆风机初始化
+            wtstandardmap.put(wt.getId(), wt.getId());
+            String wtString = redisService.get(wt.getId());
+            Map<String, ProBasicEquipmentPoint> stringWindturbinetestingpointnewMap = JSONObject.parseObject(wtString, new TypeReference<Map<String, ProBasicEquipmentPoint>>() {
+            });
+            wtpAimap.put(wt.getId(), stringWindturbinetestingpointnewMap);
+
+
+            if (wpwtmap.containsKey(wt.getWindpowerstationId())) {
+                wpwtmap.get(wt.getWindpowerstationId()).add(wt);
+            } else {
+                List<ProBasicEquipment> wps = new ArrayList<>();
+                wps.add(wt);
+                wpwtmap.put(wt.getWindpowerstationId(), wps);
+            }
+
+            if (pjwtmap.containsKey(wt.getProjectId())) {
+                pjwtmap.get(wt.getProjectId()).add(wt);
+            } else {
+                List<ProBasicEquipment> pjs = new ArrayList<>();
+                pjs.add(wt);
+                pjwtmap.put(wt.getProjectId(), pjs);
+            }
+            if (lnwtmap.containsKey(wt.getLineId())) {
+                lnwtmap.get(wt.getLineId()).add(wt);
+            } else {
+                List<ProBasicEquipment> lnls = new ArrayList<>();
+                lnls.add(wt);
+                lnwtmap.put(wt.getLineId(), lnls);
+            }
+            if (cmwtlsmap.containsKey(wt.getCompanyId())) {
+                cmwtlsmap.get(wt.getCompanyId()).add(wt);
+            } else {
+                List<ProBasicEquipment> cmls = new ArrayList<>();
+                cmls.add(wt);
+                cmwtlsmap.put(wt.getCompanyId(), cmls);
+            }
+            if (rgwtlsmap.containsKey(wt.getRegionId())) {
+                rgwtlsmap.get(wt.getRegionId()).add(wt);
+            } else {
+                List<ProBasicEquipment> rgls = new ArrayList<>();
+                rgls.add(wt);
+                rgwtlsmap.put(wt.getRegionId(), rgls);
+            }
+
+            if (sqwtmap.containsKey(wt.getSquareId())) {
+                sqwtmap.get(wt.getSquareId()).add(wt);
+            } else {
+                List<ProBasicEquipment> lnls = new ArrayList<>();
+                lnls.add(wt);
+                sqwtmap.put(wt.getSquareId(), lnls);
+            }
+
+            if (cmwtmap.containsKey(wt.getCompanyId())) {
+                cmwtmap.get(wt.getCompanyId()).put(wt.getId(), wt);
+            } else {
+                Map<String, ProBasicEquipment> map = new HashMap<>();
+                map.put(wt.getId(), wt);
+                cmwtmap.put(wt.getCompanyId(), map);
+            }
+
+
+            if (subWtsMap.containsKey(wt.getSubstationId())) {
+                subWtsMap.get(wt.getSubstationId()).add(wt);
+            } else {
+                List<ProBasicEquipment> subls = new ArrayList<>();
+                subls.add(wt);
+                subWtsMap.put(wt.getSubstationId(), subls);
+            }
+
+        });
+
+        //初始化标杆风机
+        for (ProBasicEquipment wt : wtls) {
+            if (wpwtmap.containsKey(wt.getLineId())) {
+                List<ProBasicEquipment> wts = wpwtmap.get(wt.getLineId());
+                for (ProBasicEquipment w : wts) {
+                    if (StringUtils.notEmp(w.getIsStandard()) && w.getIsStandard() != 0) {
+                        wtstandardmap.put(wt.getId(), w.getId());
+                        break;
+                    }
+                }
+            }
+            if (pjwtmap.containsKey(wt.getLineId())) {
+                List<ProBasicEquipment> wts = pjwtmap.get(wt.getLineId());
+                for (ProBasicEquipment w : wts) {
+                    if (StringUtils.notEmp(w.getIsStandard()) && w.getIsStandard() != 0) {
+                        wtstandardmap.put(wt.getId(), w.getId());
+                        break;
+                    }
+                }
+            }
+            if (lnwtmap.containsKey(wt.getLineId())) {
+                List<ProBasicEquipment> wts = lnwtmap.get(wt.getLineId());
+                for (ProBasicEquipment w : wts) {
+                    if (StringUtils.notEmp(w.getIsStandard()) && w.getIsStandard() != 0) {
+                        wtstandardmap.put(wt.getId(), w.getId());
+                        break;
+                    }
+                }
+            }
+        }
+
+        weawpls = proBasicWeatherStationService.list().stream().filter(i -> i.getIsAble() == 1).collect(Collectors.toList());
+        weawpls.stream().forEach(weather -> {
+
+            String subString = redisService.get(weather.getId());
+            Map<String, ProBasicPowerstationPoint> stringWindpowerstationpointnewMap = JSONObject.parseObject(subString, new TypeReference<Map<String, ProBasicPowerstationPoint>>() {
+            });
+            weatherwppointmap.put(weather.getId(), stringWindpowerstationpointnewMap);
+
+
+        });
+
+        zwpls = proBasicWindpowerstationService.list().stream().filter(i -> i.getIsAble() == 1).collect(Collectors.toList());
+        QueryWrapper<ProBasicPowerstation> queryWpWrapper = new QueryWrapper<>();
+        queryWpWrapper.orderByAsc("order_num");
+        wpls = proBasicWindpowerstationService.list(queryWpWrapper).stream().filter(i -> i.getIsAble() == 1).collect(Collectors.toList());
+
+        for (ProBasicPowerstation wp : wpls) {
+            if (cpwpmap.containsKey(wp.getCompanyId())) {
+                cpwpmap.get(wp.getCompanyId()).add(wp);
+            } else {
+                List<ProBasicPowerstation> wps = new ArrayList<>();
+                wps.add(wp);
+                cpwpmap.put(wp.getCompanyId(), wps);
+            }
+        }
+
+
+
+        wpls.stream().forEach(wp -> {
+
+            wpmap.put(wp.getId(), wp);
+            String wpString = redisService.get(wp.getId());
+            Map<String, ProBasicPowerstationPoint> stringMapMap = JSONObject.parseObject(wpString, new TypeReference<Map<String, ProBasicPowerstationPoint>>() {
+            });
+            wppointmap.put(wp.getId(), stringMapMap);
+        });
+
+        if (!wpls.isEmpty()) {
+            for (ProBasicPowerstation wp : wpls) {
+                if (wp.getId().endsWith("FDC_STA")) {
+                    wplsf.add(wp);
+                }
+                if (wp.getId().endsWith("GDC_STA")) {
+                    wplsG.add(wp);
+                }
+
+                if (wpmapls.containsKey(wp.getId())) {
+                    List<ProBasicPowerstation> ls = wpmapls.get(wp.getId());
+                    ls.add(wp);
+                    wpmapls.put(wp.getId(), ls);
+                } else {
+                    List<ProBasicPowerstation> ls = new ArrayList<>();
+                    ls.add(wp);
+                    wpmapls.put(wp.getId(), ls);
+                }
+
+                wpmap.put(wp.getId(), wp);
+            }
+        }
+
+        stations = windpowerstationService.list();
+        for (ProBasicPowerstation station : stations) {
+            wppmap.put(station.getId(),station.getName());
+            wpmaps.put(station.getId(),station);
+        }
+        logger.info("缓存结束------------------------------------------------------------");
+    }
+}

+ 100 - 0
power-fitting-JN/src/main/java/com.gyee.power.fitting/controller/auth/AuthController.java

@@ -0,0 +1,100 @@
+package com.gyee.power.fitting.controller.auth;
+
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import com.gyee.power.fitting.common.config.R;
+import com.gyee.power.fitting.common.config.ResultMsg;
+import com.gyee.power.fitting.common.config.StringUtils;
+import com.gyee.power.fitting.common.redis.RedisService;
+import com.gyee.power.fitting.model.custom.TokenVo;
+import com.gyee.power.fitting.service.auth.TokenService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.Map;
+
+@Controller
+@RequestMapping("/auth")
+@Api(value = "权限管理", tags = "权限管理")
+public class AuthController {
+
+
+    @Resource
+    private TokenService tokenService;
+    @Resource
+    private RedisService redisService;
+    @PostMapping("/login")
+    @ResponseBody
+    @ApiOperation(value = "使用账号密码登录")
+    public R login(@RequestBody TokenVo tokenVo) {
+
+        if (StringUtils.notEmp(tokenVo)) {
+            redisService.select(10);
+            if (redisService.hasKey("userSessions")) {
+                String cp0String = redisService.get("userSessions");
+                tokenService.sessionMap= JSONObject.parseObject(cp0String, new TypeReference<Map<String, TokenVo>>() {
+                });
+            }
+
+            if (!tokenService.sessionMap.containsKey(tokenVo.getToken())) {
+                tokenVo.setTime(new Date());
+                tokenService.sessionMap.put(tokenVo.getToken(), tokenVo);
+
+
+                String s = JSONObject.toJSONString(tokenService.sessionMap);
+                redisService.set("userSessions",s);
+            }
+
+        }
+
+        return R.data(ResultMsg.ok("ok"));
+    }
+
+    @PostMapping("/logout")
+    @ApiOperation(value = "登出系统")
+    @ResponseBody
+    public R logout(@RequestBody TokenVo tokenVo) {
+        if (StringUtils.notEmp(tokenVo) && StringUtils.notEmp(tokenVo.getToken())) {
+            redisService.select(10);
+            if (redisService.hasKey("userSessions")) {
+                String cp0String = redisService.get("userSessions");
+                tokenService.sessionMap= JSONObject.parseObject(cp0String, new TypeReference<Map<String, TokenVo>>() {
+                });
+            }
+
+            if (tokenService.sessionMap.containsKey(tokenVo.getToken())) {
+                tokenService.sessionMap.remove(tokenVo.getToken());
+            }
+
+            String s = JSONObject.toJSONString(tokenService.sessionMap);
+            redisService.set("userSessions",s);
+
+
+            if (tokenService.sessionWtMap.containsKey(tokenVo.getToken())) {
+                tokenService.sessionWtMap.remove(tokenVo.getToken());
+            }
+            if (tokenService.sessionWpMap.containsKey(tokenVo.getToken())) {
+                tokenService.sessionWpMap.remove(tokenVo.getToken());
+
+            }
+
+            if (tokenService.sessionWeMap.containsKey(tokenVo.getToken())) {
+                tokenService.sessionWeMap.remove(tokenVo.getToken());
+
+            }
+
+        }
+
+
+        return R.data(ResultMsg.ok("ok"));
+    }
+
+
+}

+ 25 - 0
power-fitting-JN/src/main/java/com.gyee.power.fitting/mapper/SysUserMapper.java

@@ -0,0 +1,25 @@
+package com.gyee.power.fitting.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.power.fitting.model.SysUser;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 用户信息表 Mapper 接口
+ * </p>
+ *
+ * @author wang
+ * @since 2023-07-25
+ */
+public interface SysUserMapper extends BaseMapper<SysUser> {
+
+    //    @Select("SELECT d.nem_code FROM system_dept as d,system_users as u where u.dept_id=d.id and u.id=#{userId} ")
+//    @Select("SELECT d.leader FROM sys_dept as d,sys_user as u where u.dept_id=d.dept_id and u.user_id=#{userId} ")
+
+    @Select("SELECT d.nemcode FROM system_dept as d,system_users as u where u.dept_id=d.id and u.id=#{userId} ")
+    public List<String> getUserByuserId(@Param(value = "userId") Long userId);
+}

+ 119 - 0
power-fitting-JN/src/main/java/com.gyee.power.fitting/model/SysUser.java

@@ -0,0 +1,119 @@
+package com.gyee.power.fitting.model;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 用户信息表
+ * </p>
+ *
+ * @author wang
+ * @since 2023-07-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysUser extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 部门ID
+     */
+    private Long deptId;
+
+    /**
+     * 用户账号
+     */
+    private String userName;
+
+    /**
+     * 用户昵称
+     */
+    private String nickName;
+
+    /**
+     * 用户类型(00系统用户)
+     */
+    private String userType;
+
+    /**
+     * 用户邮箱
+     */
+    private String email;
+
+    /**
+     * 手机号码
+     */
+    private String phonenumber;
+
+    /**
+     * 用户性别(0男 1女 2未知)
+     */
+    private String sex;
+
+    /**
+     * 头像地址
+     */
+    private String avatar;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 帐号状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    /**
+     * 最后登录IP
+     */
+    private String loginIp;
+
+    /**
+     * 最后登录时间
+     */
+    private LocalDateTime loginDate;
+
+    /**
+     * 创建者
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新者
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 17 - 0
power-fitting-JN/src/main/java/com.gyee.power.fitting/model/custom/TokenVo.java

@@ -0,0 +1,17 @@
+package com.gyee.power.fitting.model.custom;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class TokenVo {
+
+    private String token;
+    private String userId;
+    private Date time;
+}

+ 19 - 0
power-fitting-JN/src/main/java/com.gyee.power.fitting/service/ISysUserService.java

@@ -0,0 +1,19 @@
+package com.gyee.power.fitting.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gyee.power.fitting.model.SysUser;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 用户信息表 服务类
+ * </p>
+ *
+ * @author wang
+ * @since 2023-07-25
+ */
+public interface ISysUserService extends IService<SysUser> {
+
+    public List<String> getUserByuserId(Long userId);
+}

+ 151 - 0
power-fitting-JN/src/main/java/com.gyee.power.fitting/service/auth/TokenService.java

@@ -0,0 +1,151 @@
+package com.gyee.power.fitting.service.auth;
+
+import cn.hutool.core.bean.BeanUtil;
+
+import com.gyee.power.fitting.common.config.StringUtils;
+import com.gyee.power.fitting.common.spring.CacheContext;
+import com.gyee.power.fitting.model.ProBasicEquipment;
+import com.gyee.power.fitting.model.ProBasicPowerstation;
+import com.gyee.power.fitting.model.ProBasicWeatherStation;
+
+import com.gyee.power.fitting.model.custom.TokenVo;
+import com.gyee.power.fitting.service.ISysUserService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Service
+public class TokenService {
+    @Resource
+    private ISysUserService sysUserService;
+
+
+    public static Map<String, List<ProBasicEquipment>> sessionWtMap = new ConcurrentHashMap<>();
+    public static Map<String, List<ProBasicPowerstation>> sessionWpMap = new ConcurrentHashMap<>();
+
+    public static Map<String, List<ProBasicWeatherStation>> sessionWeMap = new ConcurrentHashMap<>();
+    public static Map<String, TokenVo> sessionMap = new ConcurrentHashMap<>();
+
+    public List<ProBasicEquipment> getWtls(HttpServletRequest request) {
+
+        String token = request.getHeader("token");
+        String userId = request.getHeader("userId");
+
+        List<ProBasicEquipment> wtlist = new ArrayList<>();
+        if (StringUtils.notEmp(token) && StringUtils.notEmp(userId)) {
+            if (sessionMap.containsKey(token) && !sessionWtMap.containsKey(token)) {
+
+                List<String> depls = sysUserService.getUserByuserId(Long.valueOf(userId));
+                if (!depls.isEmpty()) {
+                    String depId = depls.get(0);
+
+                    if (CacheContext.wpwtmap.containsKey(depId)) {
+
+                        List<ProBasicEquipment> wtls = CacheContext.wpwtmap.get(depId);
+                        for (ProBasicEquipment wt : wtls) {
+                            ProBasicEquipment newWt = new ProBasicEquipment();
+                            BeanUtil.copyProperties(wt, newWt);
+                            wtlist.add(newWt);
+                        }
+
+                    } else if (CacheContext.cmwtlsmap.containsKey(depId)) {
+
+                        List<ProBasicEquipment> wtls = CacheContext.cmwtlsmap.get(depId);
+                        for (ProBasicEquipment wt : wtls) {
+                            ProBasicEquipment newWt = new ProBasicEquipment();
+                            BeanUtil.copyProperties(wt, newWt);
+                            wtlist.add(newWt);
+                        }
+
+                    } else if (CacheContext.rgwtlsmap.containsKey(depId)) {
+
+                        List<ProBasicEquipment> wtls = CacheContext.rgwtlsmap.get(depId);
+                        for (ProBasicEquipment wt : wtls) {
+                            ProBasicEquipment newWt = new ProBasicEquipment();
+                            BeanUtil.copyProperties(wt, newWt);
+                            wtlist.add(newWt);
+                        }
+
+                    } else if (depId.equals("0")) {
+                        for (ProBasicEquipment wt : CacheContext.wtls) {
+                            ProBasicEquipment newWt = new ProBasicEquipment();
+                            BeanUtil.copyProperties(wt, newWt);
+                            wtlist.add(newWt);
+                        }
+
+                    }
+                }
+                sessionWtMap.put(token, wtlist);
+            } else if (sessionMap.containsKey(token) && sessionWtMap.containsKey(token)) {
+                wtlist = sessionWtMap.get(token);
+            }
+        } else {
+            for (ProBasicEquipment wt : CacheContext.wtls) {
+                ProBasicEquipment newWt = new ProBasicEquipment();
+                BeanUtil.copyProperties(wt, newWt);
+                wtlist.add(newWt);
+            }
+
+        }
+        return wtlist;
+    }
+
+    public List<ProBasicPowerstation> getWpls(HttpServletRequest request) {
+        String token = request.getHeader("token");
+        String userId = request.getHeader("userId");
+
+        List<ProBasicPowerstation> wplist = new ArrayList<>();
+        if (StringUtils.notEmp(token) && StringUtils.notEmp(token)) {
+            if (sessionMap.containsKey(token) && !sessionWpMap.containsKey(token)) {
+
+                List<String> depls = sysUserService.getUserByuserId(Long.valueOf(userId));
+                if (!depls.isEmpty()) {
+                    String depId = depls.get(0);
+
+                    if (CacheContext.wpmap.containsKey(depId)) {
+
+                        ProBasicPowerstation wp = CacheContext.wpmap.get(depId);
+                        ProBasicPowerstation newWp = new ProBasicPowerstation();
+                        BeanUtil.copyProperties(wp, newWp);
+                        wplist.add(newWp);
+                    } else if (CacheContext.cpwpmap.containsKey(depId)) {
+                        List<ProBasicPowerstation> wpls = CacheContext.cpwpmap.get(depId);
+                        for (ProBasicPowerstation wp : wpls) {
+                            ProBasicPowerstation newWp = new ProBasicPowerstation();
+                            BeanUtil.copyProperties(wp, newWp);
+                            wplist.add(newWp);
+                        }
+
+                    }  else if (depId.equals("0")) {
+                        List<ProBasicPowerstation> wpls = CacheContext.wpls;
+                        for (ProBasicPowerstation wp : wpls) {
+                            ProBasicPowerstation newWp = new ProBasicPowerstation();
+                            BeanUtil.copyProperties(wp, newWp);
+                            wplist.add(newWp);
+                        }
+
+                    }
+                }
+                sessionWpMap.put(token, wplist);
+            } else if (sessionMap.containsKey(token) && sessionWpMap.containsKey(token)) {
+                wplist = sessionWpMap.get(token);
+            }
+
+        } else {
+            List<ProBasicPowerstation> wpls = CacheContext.wpls;
+            for (ProBasicPowerstation wp : wpls) {
+                ProBasicPowerstation newWp = new ProBasicPowerstation();
+                BeanUtil.copyProperties(wp, newWp);
+                wplist.add(newWp);
+            }
+        }
+        return wplist;
+    }
+
+
+}

+ 39 - 0
power-fitting-JN/src/main/java/com.gyee.power.fitting/service/impl/SysUserServiceImpl.java

@@ -0,0 +1,39 @@
+package com.gyee.power.fitting.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.power.fitting.common.config.StringUtils;
+import com.gyee.power.fitting.mapper.SysUserMapper;
+import com.gyee.power.fitting.model.SysUser;
+import com.gyee.power.fitting.service.ISysUserService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 用户信息表 服务实现类
+ * </p>
+ *
+ * @author wang
+ * @since 2023-07-25
+ */
+@Service
+public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
+
+    @Resource
+    private SysUserMapper sysUserMapper;
+
+    public List<String> getUserByuserId(Long userId) {
+
+        List<String> list = new ArrayList<>();
+        if (StringUtils.notEmp(userId)) {
+
+            list = sysUserMapper.getUserByuserId(userId);
+        }
+
+        return list;
+    }
+}

+ 16 - 2
power-fitting-JN/src/main/resources/application.yaml

@@ -35,7 +35,7 @@ spring:
       max-file-size: 2048MB
       max-request-size: 2048MB
   main:
-    allow-bean-definition-overriding: false #当遇到同样名字的时候,是否允许覆盖注册
+    allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     # 宁夏三区oracle
@@ -67,7 +67,21 @@ spring:
       time-between-eviction-runs-millis: 60000
       # 池中的连接空闲30分钟后被回收(默认30分钟)
       min-evictable-idle-time-millis: 1800000
-
+  redis:
+    host: 127.0.0.1
+    #host: 10.81.3.155
+    port: 6379
+    timeout: 100000
+    password:
+    application:
+      name: test
+    jedis:
+      pool:
+        max-active: 8
+        min-idle: 0
+        max-idle: 8
+        max-wait: -1
+    database: 10
 
 ####################Mybatis Plus配置####################
 mybatis-plus: