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