浏览代码

增加端口配置

wzh 2 年之前
父节点
当前提交
7daa2e9389

+ 1 - 3
ruoyi-admin/src/main/resources/application-dev.yml

@@ -210,9 +210,7 @@ xss:
 # knif4jAPI测试文档
 # knif4jAPI测试文档
 knife4j:
 knife4j:
   enable: true
   enable: true
-deviceName: 869636060423465
-productKey: 52
-splitTable: true
 receiveService: http://127.0.0.1:8052
 receiveService: http://127.0.0.1:8052
+msgService: http://127.0.0.1:8051
 
 
 
 

+ 4 - 4
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -22,7 +22,7 @@ import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl;
 
 
 /**
 /**
  * spring security配置
  * spring security配置
- * 
+ *
  * @author ruoyi
  * @author ruoyi
  */
  */
 @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
 @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
@@ -33,7 +33,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
      */
      */
     @Autowired
     @Autowired
     private UserDetailsService userDetailsService;
     private UserDetailsService userDetailsService;
-    
+
     /**
     /**
      * 认证失败处理类
      * 认证失败处理类
      */
      */
@@ -51,7 +51,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
      */
      */
     @Autowired
     @Autowired
     private JwtAuthenticationTokenFilter authenticationTokenFilter;
     private JwtAuthenticationTokenFilter authenticationTokenFilter;
-    
+
     /**
     /**
      * 跨域过滤器
      * 跨域过滤器
      */
      */
@@ -111,7 +111,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 // 过滤请求
                 // 过滤请求
                 .authorizeRequests()
                 .authorizeRequests()
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                .antMatchers("/login", "/register", "/captchaImage","/websocket/**").permitAll()
+                .antMatchers("/login", "/register", "/captchaImage","/websocket/**","/device/addMsg").permitAll()
                 // 静态资源,可匿名访问
                 // 静态资源,可匿名访问
                 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
                 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()

+ 20 - 6
ruoyi-iot/src/main/java/com/ruoyi/iot/controller/DeviceController.java

@@ -6,13 +6,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.common.annotation.Anonymous;
 import com.ruoyi.common.annotation.Anonymous;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.iot.domain.TDevicePlan;
 import com.ruoyi.iot.domain.WeitiandiDeviceInfo;
 import com.ruoyi.iot.domain.WeitiandiDeviceInfo;
 import com.ruoyi.iot.entity.param.DeviceParam;
 import com.ruoyi.iot.entity.param.DeviceParam;
 import com.ruoyi.iot.queue.MsgQueue;
 import com.ruoyi.iot.queue.MsgQueue;
-import com.ruoyi.iot.service.DeviceControlerService;
-import com.ruoyi.iot.service.ITChargeRecordService;
-import com.ruoyi.iot.service.ITDeviceRecordService;
-import com.ruoyi.iot.service.IWeitiandiDeviceInfoService;
+import com.ruoyi.iot.service.*;
 import com.ruoyi.iot.transdata.RpcResult;
 import com.ruoyi.iot.transdata.RpcResult;
 import com.ruoyi.iot.transdata.entity.MainBoard;
 import com.ruoyi.iot.transdata.entity.MainBoard;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParam;
@@ -32,6 +30,8 @@ import static com.ruoyi.common.utils.SecurityUtils.getLoginUser;
 @RequestMapping("/device")
 @RequestMapping("/device")
 public class DeviceController {
 public class DeviceController {
 
 
+    @Autowired
+    private ITDevicePlanService itDevicePlanService;
     @Autowired
     @Autowired
     private ITDeviceRecordService itDeviceRecordService;
     private ITDeviceRecordService itDeviceRecordService;
 
 
@@ -83,14 +83,14 @@ public class DeviceController {
         // 对电流值进行处理
         // 对电流值进行处理
         LoginUser loginUser = getLoginUser();
         LoginUser loginUser = getLoginUser();
         Long userId = loginUser.getUserId();
         Long userId = loginUser.getUserId();
-        itChargeRecordService.startCharge(deviceParam.getDeviceId(),deviceParam.getCcid(),userId);
+        itChargeRecordService.startCharge(deviceParam.getDeviceId(),deviceParam.getCcid(),userId,deviceParam.getPort());
         return AjaxResult.success();
         return AjaxResult.success();
     }
     }
 
 
     @PostMapping("/stopCharge")
     @PostMapping("/stopCharge")
     public AjaxResult stopCharge(@RequestBody DeviceParam deviceParam) {
     public AjaxResult stopCharge(@RequestBody DeviceParam deviceParam) {
         // 对电流值进行处理
         // 对电流值进行处理
-        deviceControlerService.stopCharge(deviceParam.getDeviceId(),deviceParam.getCcid());
+        deviceControlerService.stopCharge(deviceParam.getDeviceId(),deviceParam.getCcid(),deviceParam.getPort());
         return AjaxResult.success();
         return AjaxResult.success();
     }
     }
 
 
@@ -151,4 +151,18 @@ public class DeviceController {
         return "ok";
         return "ok";
     }
     }
 
 
+
+    @RequestMapping("/getPlanInfo")
+    public AjaxResult getPlanInfo(String deviceId,String port){
+        Long userId = getLoginUser().getUserId();
+        TDevicePlan tDevicePlan = itDevicePlanService.getPlanInfo(deviceId,port,userId);
+        return  AjaxResult.success(tDevicePlan);
+    }
+
+    @RequestMapping("/cancelPlan/{id}")
+    public RpcResult cancelPlan(@PathVariable("id") Long planId){
+        RpcResult rpcResult = itDevicePlanService.cancelPlan(planId);
+        return rpcResult;
+    }
+
 }
 }

+ 2 - 0
ruoyi-iot/src/main/java/com/ruoyi/iot/controller/TDevicePlanController.java

@@ -54,6 +54,7 @@ public class TDevicePlanController extends BaseController {
         String createTime = String.valueOf(LocalDateTime.now());
         String createTime = String.valueOf(LocalDateTime.now());
         long planType = realData.getLongValue("planType");
         long planType = realData.getLongValue("planType");
         long status = realData.getLongValue("status");
         long status = realData.getLongValue("status");
+        Integer port = realData.getInteger("port");
         LoginUser loginUser = getLoginUser();
         LoginUser loginUser = getLoginUser();
         Long userId = loginUser.getUserId();
         Long userId = loginUser.getUserId();
         String runTime = realData.getString("runTime");
         String runTime = realData.getString("runTime");
@@ -75,6 +76,7 @@ public class TDevicePlanController extends BaseController {
         tDevicePlanAddNewDTO.setRepeatTime(repeatTime);
         tDevicePlanAddNewDTO.setRepeatTime(repeatTime);
         tDevicePlanAddNewDTO.setDeviceId(deviceId);
         tDevicePlanAddNewDTO.setDeviceId(deviceId);
         tDevicePlanAddNewDTO.setCcid(ccid);
         tDevicePlanAddNewDTO.setCcid(ccid);
+        tDevicePlanAddNewDTO.setPort(port);
 //        TDevicePlanAddNewDTO tDevicePlanAddNewDTO=new TDevicePlanAddNewDTO();
 //        TDevicePlanAddNewDTO tDevicePlanAddNewDTO=new TDevicePlanAddNewDTO();
 //        BeanUtils.copyProperties(params, tDevicePlanAddNewDTO);
 //        BeanUtils.copyProperties(params, tDevicePlanAddNewDTO);
 
 

+ 2 - 0
ruoyi-iot/src/main/java/com/ruoyi/iot/domain/dto/TDevicePlanAddNewDTO.java

@@ -34,4 +34,6 @@ public class TDevicePlanAddNewDTO implements Serializable {
 
 
     /**流量卡号*/
     /**流量卡号*/
     private String ccid;
     private String ccid;
+
+    private  Integer port;
 }
 }

+ 3 - 0
ruoyi-iot/src/main/java/com/ruoyi/iot/entity/param/DeviceParam.java

@@ -1,5 +1,6 @@
 package com.ruoyi.iot.entity.param;
 package com.ruoyi.iot.entity.param;
 
 
+import io.swagger.models.auth.In;
 import lombok.Data;
 import lombok.Data;
 
 
 @Data
 @Data
@@ -10,4 +11,6 @@ public class DeviceParam {
     private String ccid;
     private String ccid;
 
 
     private String time;
     private String time;
+
+    private Integer port;
 }
 }

+ 5 - 1
ruoyi-iot/src/main/java/com/ruoyi/iot/openfeign/MsgService.java

@@ -2,6 +2,7 @@ package com.ruoyi.iot.openfeign;
 
 
 import com.ruoyi.iot.transdata.DataParam;
 import com.ruoyi.iot.transdata.DataParam;
 import com.ruoyi.iot.transdata.RpcResult;
 import com.ruoyi.iot.transdata.RpcResult;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 
 
@@ -11,8 +12,11 @@ import org.springframework.stereotype.Service;
 @Service
 @Service
 public class MsgService {
 public class MsgService {
 
 
+    @Value("${msgService}")
+    private String url;
+
     public RpcResult sendMsg(DataParam dataParam){
     public RpcResult sendMsg(DataParam dataParam){
-        RpcResult rpcResult = FeginClientFactory.getFeginClient(FeginClientProxy.class, "http://113.141.88.28:8051").sendMsg(dataParam);
+        RpcResult rpcResult = FeginClientFactory.getFeginClient(FeginClientProxy.class, url).sendMsg(dataParam);
         return rpcResult;
         return rpcResult;
     }
     }
 
 

+ 13 - 4
ruoyi-iot/src/main/java/com/ruoyi/iot/queue/TaskRunner.java

@@ -2,6 +2,7 @@ package com.ruoyi.iot.queue;
 
 
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.iot.service.ITDevicePlanService;
 import com.ruoyi.iot.service.ITDevicePlanService;
+import com.ruoyi.iot.socket.WebSocket;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Async;
@@ -23,13 +24,21 @@ public class TaskRunner {
             }
             }
 
 
             String imei = jsonObject.getString("imei");
             String imei = jsonObject.getString("imei");
-            if (type.equals(103)) {//
+            if(type == 101 || type == 116 || type == 103 || type == 96 || type == 113){//
                 JSONObject real_data = jsonObject.getJSONObject("real_data");
                 JSONObject real_data = jsonObject.getJSONObject("real_data");
                 JSONObject data = new JSONObject();
                 JSONObject data = new JSONObject();
-                data.put("real_data", real_data);
-                data.put("type", type);
-                itDevicePlanService.runPlanChargeJob(imei, real_data);
+                data.put("real_data",real_data);
+                data.put("type",type);
+                WebSocket.sendMsg(imei,data);
 
 
+
+                if(type == 103){
+                    itDevicePlanService.runPlanChargeJob(imei,real_data);
+                }
+
+                if(type == 113){
+//                    itChargeRecordService.endChargeNotice(imei);
+                }
             }
             }
 //            /**
 //            /**
 //             * 116端口发生变化
 //             * 116端口发生变化

+ 8 - 4
ruoyi-iot/src/main/java/com/ruoyi/iot/service/DeviceControlerService.java

@@ -6,8 +6,10 @@ import com.ruoyi.iot.entity.param.DeviceParam;
 import com.ruoyi.iot.openfeign.MsgService;
 import com.ruoyi.iot.openfeign.MsgService;
 import com.ruoyi.iot.transdata.DataParam;
 import com.ruoyi.iot.transdata.DataParam;
 import com.ruoyi.iot.transdata.RpcResult;
 import com.ruoyi.iot.transdata.RpcResult;
+import com.ruoyi.iot.transdata.entity.EndCharge;
 import com.ruoyi.iot.transdata.entity.MainBoard;
 import com.ruoyi.iot.transdata.entity.MainBoard;
 import com.ruoyi.iot.transdata.entity.PlanCharge;
 import com.ruoyi.iot.transdata.entity.PlanCharge;
+import com.ruoyi.iot.transdata.entity.StartCharge;
 import com.ruoyi.iot.transdata.entity.opertype.OperEnum;
 import com.ruoyi.iot.transdata.entity.opertype.OperEnum;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -57,9 +59,10 @@ public class DeviceControlerService {
      * 开始充电
      * 开始充电
      * @param deviceId
      * @param deviceId
      */
      */
-    public void startCharge(String deviceId,String ccid){
+    public void startCharge(String deviceId,String ccid,Integer port){
         DataParam dataParam = new DataParam();
         DataParam dataParam = new DataParam();
-        MainBoard mainBoard = new MainBoard();
+        StartCharge mainBoard = new StartCharge();
+        mainBoard.setPort(port);
         JSONObject object1 = JSONObject.parseObject(JSON.toJSONString(mainBoard));
         JSONObject object1 = JSONObject.parseObject(JSON.toJSONString(mainBoard));
         dataParam.setData(object1);
         dataParam.setData(object1);
         dataParam.setCcid(ccid);
         dataParam.setCcid(ccid);
@@ -74,9 +77,10 @@ public class DeviceControlerService {
      * @param deviceId
      * @param deviceId
      * @param ccid
      * @param ccid
      */
      */
-    public void stopCharge(String deviceId,String ccid){
+    public void stopCharge(String deviceId,String ccid,Integer port){
         DataParam dataParam = new DataParam();
         DataParam dataParam = new DataParam();
-        MainBoard mainBoard = new MainBoard();
+        EndCharge mainBoard = new EndCharge();
+        mainBoard.setPort(port);
         JSONObject object1 = JSONObject.parseObject(JSON.toJSONString(mainBoard));
         JSONObject object1 = JSONObject.parseObject(JSON.toJSONString(mainBoard));
         dataParam.setData(object1);
         dataParam.setData(object1);
         dataParam.setCcid(ccid);
         dataParam.setCcid(ccid);

+ 1 - 1
ruoyi-iot/src/main/java/com/ruoyi/iot/service/ITChargeRecordService.java

@@ -13,7 +13,7 @@ import com.ruoyi.iot.domain.TChargeRecord;
  */
  */
 public interface ITChargeRecordService extends IService<TChargeRecord>{
 public interface ITChargeRecordService extends IService<TChargeRecord>{
 
 
-    public void startCharge(String deviceId,String ccid ,Long userId);
+    public void startCharge(String deviceId,String ccid ,Long userId,Integer port);
 
 
 
 
     public void endChargeNotice(String deviceId);
     public void endChargeNotice(String deviceId);

+ 1 - 0
ruoyi-iot/src/main/java/com/ruoyi/iot/service/ITDevicePlanService.java

@@ -35,4 +35,5 @@ public interface ITDevicePlanService extends IService<TDevicePlan>  {
     void runPlanChargeJob(String deviceId,JSONObject object);
     void runPlanChargeJob(String deviceId,JSONObject object);
 
 
 
 
+    TDevicePlan getPlanInfo(String deviceId, String port, Long userId);
 }
 }

+ 2 - 2
ruoyi-iot/src/main/java/com/ruoyi/iot/service/impl/TChargeRecordServiceImpl.java

@@ -20,8 +20,8 @@ public class TChargeRecordServiceImpl extends ServiceImpl<TChargeRecordMapper, T
     @Autowired
     @Autowired
     private DeviceControlerService deviceControlerService;
     private DeviceControlerService deviceControlerService;
     @Override
     @Override
-    public void startCharge(String deviceId, String ccid, Long userId) {
-        deviceControlerService.startCharge(deviceId,ccid);
+    public void startCharge(String deviceId, String ccid, Long userId,Integer port) {
+        deviceControlerService.startCharge(deviceId,ccid,port);
         TChargeRecord tChargeRecord = new TChargeRecord();
         TChargeRecord tChargeRecord = new TChargeRecord();
         tChargeRecord.setCreateTime(LocalDateTime.now());
         tChargeRecord.setCreateTime(LocalDateTime.now());
         tChargeRecord.setDeviceId(deviceId);
         tChargeRecord.setDeviceId(deviceId);

+ 14 - 3
ruoyi-iot/src/main/java/com/ruoyi/iot/service/impl/TDevicePlanServiceImpl.java

@@ -264,6 +264,17 @@ public class TDevicePlanServiceImpl extends ServiceImpl<TDevicePlanMapper, TDevi
 
 
 
 
     }
     }
+
+    @Override
+    public TDevicePlan getPlanInfo(String deviceId, String port, Long userId) {
+        LambdaQueryWrapper<TDevicePlan> objectLambdaQueryWrapper = Wrappers.lambdaQuery();
+        objectLambdaQueryWrapper.eq(TDevicePlan::getUserId,userId).eq(TDevicePlan::getStatus,1)
+                .eq(TDevicePlan::getDeviceId,deviceId).eq(TDevicePlan::getPort,port).orderByDesc(TDevicePlan::getCreateTime)
+                .last("limit 1");
+        TDevicePlan one = this.getOne(objectLambdaQueryWrapper);
+        return one;
+    }
+
     @Override
     @Override
     public void addNew(TDevicePlanAddNewDTO tDevicePlanAddNewDTO) {
     public void addNew(TDevicePlanAddNewDTO tDevicePlanAddNewDTO) {
         log.info("开始处理【添加预约】的业务,参数:{}", tDevicePlanAddNewDTO);
         log.info("开始处理【添加预约】的业务,参数:{}", tDevicePlanAddNewDTO);
@@ -274,8 +285,8 @@ public class TDevicePlanServiceImpl extends ServiceImpl<TDevicePlanMapper, TDevi
         // 调用Mapper对象的insert()执行插入预约数据
         // 调用Mapper对象的insert()执行插入预约数据
         log.info("即将执行插入数据,参数:{}", tDevicePlan);
         log.info("即将执行插入数据,参数:{}", tDevicePlan);
         tDevicePlan.setStatus(1L);
         tDevicePlan.setStatus(1L);
-        int rows = tDevicePlanMapper.insert(tDevicePlan);
-        if (rows != 1) {
+        boolean save = this.save(tDevicePlan);
+        if (!save) {
             String message = "添加预约失败,服务器忙,请稍后再次尝试!";
             String message = "添加预约失败,服务器忙,请稍后再次尝试!";
             log.warn(message);
             log.warn(message);
             throw new ServiceException(ServiceCode.ERR_INSERT, message);
             throw new ServiceException(ServiceCode.ERR_INSERT, message);
@@ -336,7 +347,7 @@ public class TDevicePlanServiceImpl extends ServiceImpl<TDevicePlanMapper, TDevi
                     String ccid = planRecord.getCcid();
                     String ccid = planRecord.getCcid();
                     String deviceId1 = planRecord.getDeviceId();
                     String deviceId1 = planRecord.getDeviceId();
                     planRecord.setStatus(-2);
                     planRecord.setStatus(-2);
-                    deviceControlerService.startCharge(deviceId,ccid);
+                    deviceControlerService.startCharge(deviceId,ccid,port);
                     log.info("检测端口:{}未在充电--发送充电指令,{}",port, deviceId);
                     log.info("检测端口:{}未在充电--发送充电指令,{}",port, deviceId);
                 }else{
                 }else{
                     planRecord.setStatus(3);
                     planRecord.setStatus(3);

+ 2 - 2
ruoyi-iot/src/main/resources/mapper/TDevicePlanMapper.xml

@@ -7,10 +7,10 @@
     <insert id="insert" useGeneratedKeys="true" keyProperty="id">
     <insert id="insert" useGeneratedKeys="true" keyProperty="id">
         INSERT INTO t_device_plan (
         INSERT INTO t_device_plan (
         plan_type,status,create_time,run_time,
         plan_type,status,create_time,run_time,
-        repeat_days,repeat_time,user_id,device_id,ccid
+        repeat_days,repeat_time,user_id,device_id,ccid,port
         ) VALUES (
         ) VALUES (
         #{planType}, #{status},#{createTime},#{runTime},
         #{planType}, #{status},#{createTime},#{runTime},
-        #{repeatDays}, #{repeatTime}, #{userId}, #{deviceId},#{ccid}
+        #{repeatDays}, #{repeatTime}, #{userId}, #{deviceId},#{ccid},#{port}
         )
         )
     </insert>
     </insert>