From a9d6ea06bc8e12fa9f9c78e8c7ce5538b83c6373 Mon Sep 17 00:00:00 2001
From: whyclxw <810412026@qq.com>
Date: 星期二, 03 九月 2024 16:08:49 +0800
Subject: [PATCH] 批量操作

---
 src/main/java/com/whyc/service/DevActmTestparamService.java |  126 ++++++++++++++++++++++++++++++++---------
 1 files changed, 97 insertions(+), 29 deletions(-)

diff --git a/src/main/java/com/whyc/service/DevActmTestparamService.java b/src/main/java/com/whyc/service/DevActmTestparamService.java
index e9ffa04..213e3a3 100644
--- a/src/main/java/com/whyc/service/DevActmTestparamService.java
+++ b/src/main/java/com/whyc/service/DevActmTestparamService.java
@@ -3,9 +3,8 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.whyc.dto.ActmResDto;
-import com.whyc.dto.Response;
-import com.whyc.dto.ResultActmDto;
+import com.whyc.dto.*;
+import com.whyc.factory.ThreadPoolExecutorFactory;
 import com.whyc.mapper.DevActmTestparamMapper;
 import com.whyc.mapper.DevInfMapper;
 import com.whyc.pojo.db_lithium_ram_db.DevActmTestparam;
@@ -19,7 +18,12 @@
 import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
 
 
 @Service
@@ -34,19 +38,20 @@
     private RestTemplate restTemplate;
 
     //璇诲彇Actm涓�浣撴満鍙傛暟
-    public Object getActmParam(int devId) {
+    public Object getActmParam(int devId,int index) {
         QueryWrapper wrapper=new QueryWrapper();
         wrapper.eq("dev_id",devId);
         wrapper.last("limit 1");
         DevInf dinf=dinfMapper.selectOne(wrapper);
         String url="http://"+dinf.getDevIp()+":8080/webService/getTestParameter";
-        String results = restTemplate.postForObject(url, null, String.class);
-        ResultActmDto dto= ActionUtil.getGson().fromJson(results, ResultActmDto.class);
+        //灏嗚姹傚ご閮ㄥ拰鍙傛暟鍚堟垚涓�涓姹�
+        MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<>();
+        paramMap.add("batteryStorageIndex",index);
+        ResultActmDto dto= (ResultActmDto) TestparamHttpUtil.postforform_dataActm(restTemplate,url,paramMap);
         if(dto.getCode().equals("200")){
             DevActmTestparam actmParam=new DevActmTestparam();
             copyActmDTO(dto.getData(),actmParam);
             actmParam.setDevId(devId);
-            //actmParam.setReturnCode(Integer.parseInt(dto.getCode()));
             UpdateWrapper updateWrapper=new UpdateWrapper();
             updateWrapper.eq("dev_id",devId);
             mapper.update(actmParam,updateWrapper);
@@ -56,48 +61,111 @@
 
 
     //璁剧疆Actm鍧囪 浠弬鏁�
-    public Object setActmParam(ActmResDto param, int devId) {
+    public Object setActmParam(ActmResDto param) {
         QueryWrapper wrapper=new QueryWrapper();
-        wrapper.eq("dev_id",devId);
+        wrapper.eq("dev_id",param.getDevId());
         wrapper.last("limit 1");
         DevInf dinf=dinfMapper.selectOne(wrapper);
         String url="http://"+dinf.getDevIp()+":8080/webService/setTestParameter";
         //灏嗚姹傚ご閮ㄥ拰鍙傛暟鍚堟垚涓�涓姹�
         MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<>();
-        String paramJson= JSONObject.toJSONString(param);
-        paramMap.add("testParameter",paramJson);
-        ResultActmDto dto= (ResultActmDto) TestparamHttpUtil.postforform_data(restTemplate,url,paramMap);
+        paramMap.add("batteryStorageIndex",param.getBatteryStorageIndex());
+        paramMap.add("moduleCode",param.getModuleCode());
+        paramMap.add("workMode",param.getWorkMode());
+        paramMap.add("batteryType",param.getBatteryType());
+        paramMap.add("batteryNumber",param.getBatteryNumber());
+        paramMap.add("ntcCount",param.getNtcCount());
+        paramMap.add("testBatteryArray",param.getTestBatteryArray());
+        paramMap.add("voltage",param.getVoltage());
+        paramMap.add("current",param.getCurrent());
+        ResultActmDto dto= (ResultActmDto) TestparamHttpUtil.postforform_dataActm(restTemplate,url,paramMap);
         return dto;
     }
 
-    //鍚姩Actm鍧囪 浠斁鐢�/鍏呯數
-    public Object startActmParam(int devId,int type) {
+    //鎵归噺璁剧疆Actm鍧囪 浠弬鏁�
+    public Object setActmParamPl2(ActmResDto param) {
+        Map<Integer,Object> map=new HashMap<>();
+        int size=param.getDevIds().size();
+        try {
+            ThreadPoolExecutor poolExecutor = ThreadPoolExecutorFactory.getPoolExecutor();
+            CountDownLatch latch = new CountDownLatch(size);
+            for (Integer devId:param.getDevIds()) {
+                poolExecutor.execute(() -> {
+                    param.setDevId(devId);
+                    ResultA200Dto dto= (ResultA200Dto) setActmParam(param);
+                    map.put(devId,dto);
+                    latch.countDown();
+                });
+            }
+            latch.await(10, TimeUnit.MINUTES);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        return new Response().setII(1,true,map,"鎵归噺璁剧疆Actm鍧囪 浠弬鏁�");
+    }
+
+    //鎵归噺璁剧疆Actm鍧囪 浠弬鏁�
+    public Object setActmParamPl(ActmResDto param) {
+        Map<Integer,Object> map=new HashMap<>();
+        int size=param.getDevIds().size();
+        for (Integer devId:param.getDevIds()) {
+            param.setDevId(devId);
+            ResultA200Dto dto= (ResultA200Dto) setActmParam(param);
+            map.put(devId,dto);
+        }
+        return new Response().setII(1,true,map,"鎵归噺璁剧疆Actm鍧囪 浠弬鏁�");
+    }
+
+
+    //鍚姩,鏆傚仠,缁х画,鍋滄actm鍧囪 浠�
+    public Object controllerActmParam(int devId,int index,int type) {
         QueryWrapper wrapper=new QueryWrapper();
         wrapper.eq("dev_id",devId);
         wrapper.last("limit 1");
         DevInf dinf=dinfMapper.selectOne(wrapper);
-        String url="http://"+dinf.getDevIp()+":8080/webService/startTest";
+        String url="http://"+dinf.getDevIp()+":8080/webService";
         //灏嗚姹傚ご閮ㄥ拰鍙傛暟鍚堟垚涓�涓姹�
         MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<>();
-        paramMap.add("testType",type);
-        ResultActmDto dto= (ResultActmDto) TestparamHttpUtil.postforform_data(restTemplate,url,paramMap);
+        switch (type){
+            case 1:url=url+"/startTest";break;        //鍚姩
+            case 2:url=url+"/pauseTest";break;        //鏆傚仠
+            case 3:url=url+"/continueTest";break;     //缁х画
+            case 4:url=url+"/stopTest";break;         //鍋滄
+        }
+        paramMap.add("batteryStorageIndex",index);
+        ResultActmDto dto= (ResultActmDto) TestparamHttpUtil.postforform_dataActm(restTemplate,url,paramMap);
         return dto;
     }
-    //鍋滄Actm鍧囪 浠斁鐢�/鍏呯數
-    public Object stopActmParam(int devId) {
-        QueryWrapper wrapper=new QueryWrapper();
-        wrapper.eq("dev_id",devId);
-        wrapper.last("limit 1");
-        DevInf dinf=dinfMapper.selectOne(wrapper);
-        String url="http://"+dinf.getDevIp()+":8080/webService/stopTest";
-        String results = restTemplate.postForObject(url, null, String.class);
-        ResultActmDto dto= ActionUtil.getGson().fromJson(results, ResultActmDto.class);
-        return dto;
+
+
+    //鎵归噺鎺у埗Actm鍧囪 浠�
+    public Response controllActmParamPl2(List<ActmPlContDto> actmPlContDtos) {
+        Map<Integer,Object> map=new HashMap<>();
+        try {
+            ThreadPoolExecutor poolExecutor = ThreadPoolExecutorFactory.getPoolExecutor();
+            CountDownLatch latch = new CountDownLatch(actmPlContDtos.size());
+            for (ActmPlContDto actmPlContDto:actmPlContDtos) {
+                poolExecutor.execute(() -> {
+                    ResultActmDto dto= (ResultActmDto) controllerActmParam(actmPlContDto.getDevId(),actmPlContDto.getIndex(),actmPlContDto.getType());
+                    map.put(actmPlContDto.getDevId(),dto);
+                    latch.countDown();
+                });
+            }
+            latch.await(10, TimeUnit.MINUTES);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        return new Response().set(1,true,"鎵归噺璁剧疆Actm鍧囪 浠弬鏁�");
     }
 
     //鎵归噺鎺у埗Actm鍧囪 浠�
-    public Response controllActmParamPl(List<Integer> devIds) {
-        return new Response().set(1,true,"鎵归噺鎺у埗Actm鍧囪 浠�");
+    public Response controllActmParamPl(List<ActmPlContDto> actmPlContDtos) {
+        Map<Integer,Object> map=new HashMap<>();
+        for (ActmPlContDto actmPlContDto:actmPlContDtos) {
+                ResultActmDto dto= (ResultActmDto) controllerActmParam(actmPlContDto.getDevId(),actmPlContDto.getIndex(),actmPlContDto.getType());
+                map.put(actmPlContDto.getDevId(),dto);
+        }
+        return new Response().set(1,true,"鎵归噺璁剧疆Actm鍧囪 浠弬鏁�");
     }
 
     //灏哾to鎷疯礉鑷硃aram

--
Gitblit v1.9.1