src/main/java/com/whyc/controller/Fbs9149SetparamController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/mapper/Fbs9149SetparamMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/pojo/Fbs9149Setparam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/Fbs9149SetparamService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/Fbs9149SetparamMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/whyc/controller/Fbs9149SetparamController.java
New file @@ -0,0 +1,38 @@ package com.whyc.controller; import com.whyc.dto.Response; import com.whyc.pojo.Fbs9149Setparam; import com.whyc.service.Fbs9149SetparamService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @Api(tags = "作业管理-放电计划管理") @RestController @RequestMapping("fbs9149Setparam") public class Fbs9149SetparamController { @Autowired private Fbs9149SetparamService service; @ApiOperation(tags = "在线监测-实时监控", value = "在线监测-实时监控-读取并联电源9149放电参数") @GetMapping("searchParalleParam9149") public Response searchParalleParam9149(@RequestParam int opCmd, @RequestParam int paramtype, @RequestParam int devId) { return service.searchParalleParam9149(opCmd, paramtype, devId); } @ApiOperation(tags = "在线监测-实时监控", value = "在线监测-实时监控-控制并联电源9149充放电停止") @GetMapping("controllerParalle9149") public Response controllerParalle9149(@RequestParam int opCmd, @RequestParam int testCmd, @RequestParam String battGroupNums, @RequestParam int devId) { return service.controllerParalle9149(opCmd, testCmd, battGroupNums, devId); } @ApiOperation(tags = "在线监测-实时监控", value = "在线监测-实时监控-设置并联电源9149放电参数") @PostMapping("updateParalleParam9149") public Response updateParalleParam9149(@RequestBody List<Fbs9149Setparam> list) { return service.updateParalleParam9149(list); } } src/main/java/com/whyc/mapper/Fbs9149SetparamMapper.java
New file @@ -0,0 +1,10 @@ package com.whyc.mapper; import com.whyc.pojo.Fbs9149Setparam; import java.util.List; public interface Fbs9149SetparamMapper extends CustomMapper<Fbs9149Setparam> { //批量修改参数 boolean updateList(List<Fbs9149Setparam> list); } src/main/java/com/whyc/pojo/Fbs9149Setparam.java
New file @@ -0,0 +1,119 @@ package com.whyc.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; /** * <p> * 并联电源9组参数表 * </p> * * @author lxw * @since 2023-04-12 */ @Data @AllArgsConstructor @NoArgsConstructor @TableName(schema = "db_ram_db", value = "tb_fbs9149_setparam") @ApiModel(value = "Fbs9149Setparam对象", description = "并联电源9组参数表") public class Fbs9149Setparam implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "num", type = IdType.AUTO) private int num; @ApiModelProperty(value = "设备Id") private int devId; @ApiModelProperty(value = "命令字段") private Integer opCmd; @ApiModelProperty(value = "测试类型") private Integer testCmd; @ApiModelProperty(value = "组号0-组1 1-组2 2-组3 3-组4...") private Integer groupnum; @ApiModelProperty(value = "参数类型,0-实时核容参数 1-计划核容参数 2-活化参数 3-充电参数") private Integer paramtype; @ApiModelProperty(value = "0-自动 1-手动 电池管理方式") private Integer battauto; @ApiModelProperty(value = "0-开启 1-关闭 定时均充功能") private Integer timerchargeable; @ApiModelProperty(value = "50-200Ah 电池标称容量 ") private Integer battnominalcap; @ApiModelProperty(value = "电池浮充电压") private Float battfloatvol; @ApiModelProperty(value = "电池均充电压") private Float battchargevol; @ApiModelProperty(value = "电池充电限流") private Float battchargecurr1; @ApiModelProperty(value = "浮充转均充电流") private Float battchargecurr2; @ApiModelProperty(value = "均充转浮充电流") private Float battchargecurr3; @ApiModelProperty(value = "0-5H 尾电流充电时间") private Integer tailcurrchargetime; @ApiModelProperty(value = "30-180天 定时均充周期") private Integer timerchargeperiod; @ApiModelProperty(value = "最长均充时间") private Integer maxchargetimehour; @ApiModelProperty(value = "0-开启 1-关闭 温度补偿开关") private Integer tempcompensatedable; @ApiModelProperty(value = "20-80℃ 电池过温点") private Integer batthightemp; @ApiModelProperty(value = "-40-10℃ 电池欠温点") private Integer battlowtemp; @ApiModelProperty(value = "10-40℃ 温补中心点") private Integer compensatedtemp; @ApiModelProperty(value = "0-50mV/℃ 温补系数") private Integer tempcompensatedcoe; @ApiModelProperty(value = "电池放电终止电压") private Float battdischargelowvol; @ApiModelProperty(value = "单节放电终止电压") private Float mondischargelowvol; @ApiModelProperty(value = "本地远程设置 0-远程 1-本地") private Integer localremoteset; @ApiModelProperty(value = "电池充电控制 0-开启 1-关闭 ") private Integer battchrgctrl; @ApiModelProperty(value = "电池放电控制 0-开启 1-关闭 ") private Integer battdisctrl; @ApiModelProperty(value = "核容限流 0.1C-0.5C ") private Float herongcurr; @ApiModelProperty(value = "核容时限") private Integer herongtimehour; } src/main/java/com/whyc/service/Fbs9149SetparamService.java
New file @@ -0,0 +1,192 @@ package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.github.pagehelper.PageHelper; import com.whyc.dto.FBS9100_ComBase; import com.whyc.dto.Response; import com.whyc.factory.ThreadPoolExecutorFactory; import com.whyc.mapper.Fbs9149SetparamMapper; import com.whyc.pojo.Fbs9149Setparam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Arrays; 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; import static java.lang.Thread.sleep; @Service public class Fbs9149SetparamService { @Autowired(required = false) private Fbs9149SetparamMapper mapper; //并联电源的cmd和ack校验 test_type -->默认启动测试的类型(控制) public boolean sendCmdToFBS9149DevCon(int cmd, int testCmd, int dev_id, int battGroupNum) { int m_cmd = cmd; int m_cmd_ack = cmd; switch (m_cmd) { case FBS9100_ComBase.CMD_Start: m_cmd_ack = FBS9100_ComBase.CMD_StartAck; break; case FBS9100_ComBase.CMD_Stop: m_cmd_ack = FBS9100_ComBase.CMD_StopAck; break; default: return false; } UpdateWrapper updateWrapper = new UpdateWrapper(); updateWrapper.set("op_cmd", m_cmd); updateWrapper.set("test_cmd", testCmd); updateWrapper.eq("groupnum", battGroupNum); updateWrapper.eq("dev_id", dev_id); int flag = mapper.update(null, updateWrapper); boolean res_exe = false; if (flag > 0) { PageHelper.startPage(1, 1); QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("dev_id", dev_id); queryWrapper.eq("groupnum", battGroupNum); for (int n = 0; n < 40; n++) { Fbs9149Setparam fbs9149Setparam = mapper.selectOne(queryWrapper); if (fbs9149Setparam != null) { if (fbs9149Setparam.getOpCmd() == m_cmd_ack) { res_exe = true; break; } try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { break; } } } return res_exe; } //并联电源的cmd和ack校验 test_type -->默认启动测试的类型(读取和设置参数) public boolean sendCmdToFBS9149DevRed(int cmd, int testType, int dev_id) { int m_cmd = cmd; int m_cmd_ack = cmd; switch (m_cmd) { case FBS9100_ComBase.CMD_GetMutilMode_Param: m_cmd_ack = FBS9100_ComBase.CMD_GetMutilMode_Param_Ack; break; case FBS9100_ComBase.CMD_SetMutilMode_Param: m_cmd_ack = FBS9100_ComBase.CMD_SetMutilMode_Param_Ack; break; default: return false; } UpdateWrapper updateWrapper = new UpdateWrapper(); updateWrapper.set("op_cmd", m_cmd); //读取时加参数在testcmd中参数类型,0-实时核容参数 1-计划核容参数 2-活化参数 3-充电参数 HV_mon_uppernum1 updateWrapper.set("paramtype", testType); updateWrapper.eq("dev_id", dev_id); int flag = mapper.update(null, updateWrapper); boolean res_exe = false; if (flag > 0) { PageHelper.startPage(1, 1); QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("dev_id", dev_id); //默认取第一个ack判断 queryWrapper.eq("groupnum", 0); for (int n = 0; n < 40; n++) { Fbs9149Setparam fbs9149Setparam = mapper.selectOne(queryWrapper); if (fbs9149Setparam != null) { if (fbs9149Setparam.getOpCmd() == m_cmd_ack) { res_exe = true; break; } try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { break; } } } return res_exe; } //在线监测-实时监控-读取并联电源9149放电参数 public Response searchParalleParam9149(int opCmd, int paramtype, int devId) { try { //读取时命令同步所以只监测第一组的返回ack //读取时加参数在testcmd中参数类型,0-实时核容参数 1-计划核容参数 2-活化参数 3-充电参数 paramtype boolean bl = sendCmdToFBS9149DevRed(opCmd, paramtype, devId); QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("dev_id", devId); List<Fbs9149Setparam> fbs9149Setparams = mapper.selectList(wrapper); return new Response().setII(1, bl, fbs9149Setparams, bl == true ? "读取电源9149参数成功!" : "读取并联电源9149参数失败,请检查网络!"); } catch (Exception e) { return new Response().set(1, false, "出现异常" + e); } } //在线监测-实时监控-设置并联电源9149放电参数 public Response updateParalleParam9149(List<Fbs9149Setparam> list) { try { int opCmd = 0; int paramtype = 0; int devId = 0; if (list != null && list.size() > 0) { Fbs9149Setparam setparam = list.get(0); opCmd = setparam.getOpCmd(); paramtype = setparam.getParamtype(); devId = setparam.getDevId(); } boolean b = mapper.updateList(list); boolean bl = false; if (b) { //设置时命令同步所以只监测第一组的返回ack //设置时加参数在testcmd中参数类型,0-实时核容参数 1-计划核容参数 2-活化参数 3-充电参数 HV_mon_uppernum1 bl = sendCmdToFBS9149DevRed(opCmd, paramtype, devId); } return new Response().set(1, bl, bl == true ? "修改参数成功!" : "设置并联电源参数失败,请检查网络!"); } catch (Exception e) { return new Response().set(1, false, "出现异常" + e); } } //在线监测-实时监控-控制并联电源9149充放电停止 public Response controllerParalle9149(int opCmd, int testCmd, String battGroupNums, int devId) { try { //读取时加参数在testcmd中参数类型,0-实时核容参数 1-计划核容参数 2-活化参数 3-充电参数 HV_mon_uppernum1 List<String> battGroupNumList = Arrays.asList(battGroupNums.split(",")); //多线程 ThreadPoolExecutor pool = ThreadPoolExecutorFactory.getPoolExecutor(); CountDownLatch latch = new CountDownLatch(battGroupNumList.size()); Map<Integer, Boolean> resMap = new HashMap<>(); for (int i = 0; i < battGroupNumList.size(); i++) { int finalI = i; pool.execute(() -> { int finalII = finalI; int battGroupNum = Integer.parseInt(battGroupNumList.get(finalII)); boolean bl = sendCmdToFBS9149DevCon(opCmd, testCmd, devId, battGroupNum); resMap.put(battGroupNum, bl); latch.countDown(); }); sleep(200); } latch.await(10, TimeUnit.MINUTES); return new Response().set(1, resMap); } catch (Exception e) { return new Response().set(1, false, "出现异常" + e); } } } src/main/resources/mapper/Fbs9149SetparamMapper.xml
New file @@ -0,0 +1,86 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.whyc.mapper.Fbs9149SetparamMapper"> <update id="updateList" parameterType="java.util.List"> <foreach collection="list" item="param" index="index" separator=";"> UPDATE db_ram_db.tb_fbs9149_setparam <set> <if test="param.paramtype != null"> paramtype = #{param.paramtype}, </if> <if test="param.battauto != null"> battauto = #{param.battauto}, </if> <if test="param.timerchargeable != null"> timerchargeable = #{param.timerchargeable}, </if> <if test="param.battnominalcap != null"> battnominalcap = #{param.battnominalcap}, </if> <if test="param.battfloatvol != null"> battfloatvol = #{param.battfloatvol}, </if> <if test="param.battchargevol != null"> battchargevol = #{param.battchargevol}, </if> <if test="param.battchargecurr1 != null"> battchargecurr1 = #{param.battchargecurr1}, </if> <if test="param.battchargecurr2 != null"> battchargecurr2 = #{param.battchargecurr2}, </if> <if test="param.battchargecurr3 != null"> battchargecurr3 = #{param.battchargecurr3}, </if> <if test="param.tailcurrchargetime != null"> tailcurrchargetime = #{param.tailcurrchargetime}, </if> <if test="param.timerchargeperiod != null"> timerchargeperiod = #{param.timerchargeperiod}, </if> <if test="param.maxchargetimehour != null"> maxchargetimehour = #{param.maxchargetimehour}, </if> <if test="param.tempcompensatedable != null"> tempcompensatedable = #{param.tempcompensatedable}, </if> <if test="param.batthightemp != null"> batthightemp = #{param.batthightemp}, </if> <if test="param.battlowtemp != null"> battlowtemp = #{param.battlowtemp}, </if> <if test="param.compensatedtemp != null"> compensatedtemp = #{param.compensatedtemp}, </if> <if test="param.tempcompensatedcoe != null"> tempcompensatedcoe = #{param.tempcompensatedcoe}, </if> <if test="param.battdischargelowvol != null"> battdischargelowvol = #{param.battdischargelowvol}, </if> <if test="param.mondischargelowvol != null"> mondischargelowvol = #{param.mondischargelowvol}, </if> <if test="param.localremoteset != null"> localremoteset = #{param.localremoteset}, </if> <if test="param.battchrgctrl != null"> battchrgctrl = #{param.battchrgctrl}, </if> <if test="param.battdisctrl != null"> battdisctrl = #{param.battdisctrl}, </if> <if test="param.herongcurr != null"> herongcurr = #{param.herongcurr}, </if> <if test="param.herongtimehour != null"> herongtimehour = #{param.herongtimehour}, </if> </set> WHERE dev_id = #{param.devId} and groupnum=#{param.groupnum} </foreach> </update> </mapper>