From 72723572a8119fae3118490d94a2f19e3eebc8a1 Mon Sep 17 00:00:00 2001
From: stone <827672943@qq.com>
Date: Mon, 15 May 2023 17:05:06 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=8E=AF=E6=AF=94=EF=BC=8C?=
 =?UTF-8?q?=E7=AD=96=E7=95=A5=E5=AF=BC=E5=85=A5=E6=89=A7=E8=A1=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../main/java/com/psdc/entity/vo/SceneVo.java |  4 +++
 .../com/psdc/service/IPsdcDeviceService.java  |  2 +-
 .../service/impl/PsdcDeviceServiceImpl.java   | 29 ++++++++++++++-----
 .../mapper/business/PsdcSceneMapper.xml       |  1 +
 .../controller/control/ManualController.java  |  4 ++-
 5 files changed, 30 insertions(+), 10 deletions(-)

diff --git a/psdc-business/src/main/java/com/psdc/entity/vo/SceneVo.java b/psdc-business/src/main/java/com/psdc/entity/vo/SceneVo.java
index a7f605d..ff4d5bd 100644
--- a/psdc-business/src/main/java/com/psdc/entity/vo/SceneVo.java
+++ b/psdc-business/src/main/java/com/psdc/entity/vo/SceneVo.java
@@ -14,6 +14,10 @@ public class SceneVo {
     private Integer sceneId ;
     /** 场景名 */
     private String sceneName ;
+    /**
+     * 策略码
+     */
+    private Integer sceneCode;
     /** 用户id */
     private Integer userId;
     /** 设备id */
diff --git a/psdc-business/src/main/java/com/psdc/service/IPsdcDeviceService.java b/psdc-business/src/main/java/com/psdc/service/IPsdcDeviceService.java
index 5694395..c4830b7 100644
--- a/psdc-business/src/main/java/com/psdc/service/IPsdcDeviceService.java
+++ b/psdc-business/src/main/java/com/psdc/service/IPsdcDeviceService.java
@@ -107,5 +107,5 @@ public interface IPsdcDeviceService {
      * @param strategyCode 策略码
      * @return
      */
-    int executiveStrategy(Integer strategyCode);
+    String executiveStrategy(Integer strategyCode);
 }
diff --git a/psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java b/psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java
index 7a8a44d..389d091 100644
--- a/psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java
+++ b/psdc-business/src/main/java/com/psdc/service/impl/PsdcDeviceServiceImpl.java
@@ -22,6 +22,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import java.io.InputStream;
+import java.security.cert.TrustAnchor;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -297,7 +298,9 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
      * @return
      */
     @Override
-    public int executiveStrategy(Integer strategyCode) {
+    public String executiveStrategy(Integer strategyCode) {
+        int success = 0 ;
+        int lose = 0;
         List<PsdcScene> psdcScenes = psdcSceneMapper.queryBySceneCode(strategyCode);
         //根据策略码查询策略列表
         for (PsdcScene psdcScene: psdcScenes ) {
@@ -307,15 +310,25 @@ public class PsdcDeviceServiceImpl implements IPsdcDeviceService {
             String controlContext = ControlKeyEnum.getControlContext(controlKey);
 
             String deviceName = psdcDeviceMapper.queryDeviceNameByDeviceId(psdcScene.getDeviceId());
+            Boolean flag = Boolean.FALSE;
             //TODO 发送MQTT指令
-            // psdcControlLogMapper.insert(new PsdcControlLog(deviceId,psdcDevice.getDeviceName(),psdcDevice.getDeviceSn(),controlContext,controlValue,controlMethod,2,"控制成功",controlBy));
-            // psdcControlLogMapper.insert(new PsdcControlLog(deviceId,psdcDevice.getDeviceName(),psdcDevice.getDeviceSn(),controlContext,controlValue,controlMethod,3,"等待终端响应超时",controlBy));
-            //发送成功
-            psdcControlLogMapper.insert(new PsdcControlLog(psdcScene.getDeviceId(),deviceName, psdcScene.getDeviceSn(), controlContext, controlValue, 3, 2, "控制成功", SecurityUtils.getUsername()));
-
-
+            flag = Boolean.TRUE;
+            if (flag)
+            {
+                //发送成功
+                int insert = psdcControlLogMapper.insert(new PsdcControlLog(psdcScene.getDeviceId(), deviceName, psdcScene.getDeviceSn(), controlContext, controlValue, 3, 2, "控制成功", SecurityUtils.getUsername()));
+                success = success + insert;
+            } else {
+                // psdcControlLogMapper.insert(new PsdcControlLog(deviceId,psdcDevice.getDeviceName(),psdcDevice.getDeviceSn(),controlContext,controlValue,controlMethod,2,"控制成功",controlBy));
+                // psdcControlLogMapper.insert(new PsdcControlLog(deviceId,psdcDevice.getDeviceName(),psdcDevice.getDeviceSn(),controlContext,controlValue,controlMethod,3,"等待终端响应超时",controlBy));
+                // lose = lose + i;
+            }
+        }
+        if(success == psdcScenes.size()){
+            return "控制成功,控制数量:" + success;
+        } else {
+            return "部分失败,成功:" + success + "条,失败:" + lose + "条";
         }
-        return 0;
     }
 
     private String coverStr(String s, int i) {
diff --git a/psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml b/psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml
index f730cc9..4033e59 100644
--- a/psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml
+++ b/psdc-business/src/main/resources/mapper/business/PsdcSceneMapper.xml
@@ -15,6 +15,7 @@
 
     <resultMap type="com.psdc.entity.vo.SceneVo" id="SceneVoMap">
         <result property="sceneName" column="scene_name" />
+        <result property="sceneCode" column="scene_code"/>
         <result property="userId" column="user_id"/>
         <result property="deviceName" column="device_name"/>
         <result property="deviceId" column="device_id" />
diff --git a/psdc-web/src/main/java/com/psdc/controller/control/ManualController.java b/psdc-web/src/main/java/com/psdc/controller/control/ManualController.java
index 0d183b4..a387290 100644
--- a/psdc-web/src/main/java/com/psdc/controller/control/ManualController.java
+++ b/psdc-web/src/main/java/com/psdc/controller/control/ManualController.java
@@ -11,6 +11,7 @@ import com.psdc.service.IPsdcDeviceService;
 import com.psdc.service.IPsdcSceneService;
 import com.psdc.utils.SecurityUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.aspectj.weaver.loadtime.Aj;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
@@ -93,7 +94,8 @@ public class ManualController extends BaseController {
     @PreAuthorize("@ss.hasPermi('control:manual:strategy')")
     @GetMapping("/{strategyCode}")
     public AjaxResult getStrategyList(@PathVariable(value = "strategyCode") Integer strategyCode){
-        psdcDeviceService.executiveStrategy(strategyCode);
+        String s = psdcDeviceService.executiveStrategy(strategyCode);
+        return AjaxResult.success(s);
     }
 
     /**