| | |
| | | package com.whyc.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.whyc.constant.CMD_Constant; |
| | | import com.whyc.dto.BattRtSetDto; |
| | |
| | | import java.util.Date; |
| | | import java.util.LinkedList; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static com.baomidou.mybatisplus.core.toolkit.Wrappers.update; |
| | | |
| | | @Service |
| | | public class CKPowerDevBattRtStateSetService { |
| | |
| | | @Autowired |
| | | private CKPowerDevBattRtStateService stateService; |
| | | |
| | | public Response update(BattRtSetDto set) { |
| | | CKPowerDevBattRtDataSet dataSet = set.getDataSet(); |
| | | public Response updateMon(BattRtSetDto set) { |
| | | List<CKPowerDevBattRtDataSet> dataSetList = set.getDataSetList(); |
| | | CKPowerDevBattRtStateSet stateSet = set.getStateSet(); |
| | | updateDataFromDataAndStateToSet(dataSet.getBattIndex()); |
| | | //查询data和state表数据并设置到对应的set表 |
| | | updateDataFromDataAndStateToSet(dataSetList); |
| | | //设置state_set表,与李军沟通确定,组端和单体设置,都采用设置下面这个cmd值.因为单体和组端会一起设置 |
| | | if(stateSet.getBattIndex() == 0) { |
| | | stateSet.setOpCmd(CMD_Constant.CMD_SetBatt1MonData); |
| | |
| | | }else{ |
| | | return new Response().set(0,"未指定具体的电池组或电池组超出2组,无法设置"); |
| | | } |
| | | mapper.update(stateSet,null); |
| | | //设置data_set表 TODO 待确定是设置单体时 所有单体还是某个单体 |
| | | dataSetService.update(dataSet); |
| | | update(stateSet); |
| | | //设置data_set表 |
| | | dataSetService.updateBatch(dataSetList); |
| | | //读取opCmd返回是否成功 |
| | | QueryWrapper<CKPowerDevBattRtStateSet> query = Wrappers.query(); |
| | | Response opStatus =OpCmdUtil.getOpStatus(mapper, query, stateSet.getOpCmd(),20,set.getStateSet().getBattIndex()); |
| | |
| | | return opStatus; |
| | | } |
| | | |
| | | private void updateDataFromDataAndStateToSet(Integer battIndex) { |
| | | List<CKPowerDevBattRtData> rtDataList = dataService.getList(battIndex); |
| | | CKPowerDevBattRtState state = stateService.get(); |
| | | public Response updateGroup(CKPowerDevBattRtStateSet stateSet) { |
| | | //查询state表数据并设置到对应的set表 |
| | | updateDataFromStateToSet(stateSet.getBattIndex()); |
| | | //设置state_set表,与李军沟通确定,组端和单体设置,都采用设置下面这个cmd值.因为单体和组端会一起设置 |
| | | if(stateSet.getBattIndex() == 0) { |
| | | stateSet.setOpCmd(CMD_Constant.CMD_SetBatt1MonData); |
| | | }else if(stateSet.getBattIndex() == 1){ |
| | | stateSet.setOpCmd(CMD_Constant.CMD_SetBatt2MonData); |
| | | }else{ |
| | | return new Response().set(0,"未指定具体的电池组或电池组超出2组,无法设置"); |
| | | } |
| | | update(stateSet); |
| | | //读取opCmd返回是否成功 |
| | | QueryWrapper<CKPowerDevBattRtStateSet> query = Wrappers.query(); |
| | | Response opStatus =OpCmdUtil.getOpStatus(mapper, query, stateSet.getOpCmd(),20,stateSet.getBattIndex()); |
| | | return opStatus; |
| | | } |
| | | |
| | | private void updateDataFromStateToSet(Integer battIndex) { |
| | | CKPowerDevBattRtState state = stateService.get(battIndex); |
| | | |
| | | CKPowerDevBattRtStateSet stateSet = new CKPowerDevBattRtStateSet(); |
| | | BeanUtils.copyProperties(state,stateSet); |
| | | update(stateSet); |
| | | } |
| | | |
| | | private void updateDataFromDataAndStateToSet(List<CKPowerDevBattRtDataSet> dataSetList) { |
| | | Integer battIndex = dataSetList.get(0).getBattIndex(); |
| | | List<Integer> monNumList = dataSetList.stream().map(CKPowerDevBattRtDataSet::getMonNum).collect(Collectors.toList()); |
| | | //获取实时表数据并写入set表 |
| | | List<CKPowerDevBattRtData> rtDataList = dataService.getMonList(battIndex,monNumList); |
| | | CKPowerDevBattRtState state = stateService.get(battIndex); |
| | | |
| | | //属性迁移 |
| | | List<CKPowerDevBattRtDataSet> rtSetDataList = new LinkedList<>(); |
| | |
| | | rtSetDataList.add(set); |
| | | } |
| | | BeanUtils.copyProperties(state,stateSet); |
| | | //rt表数据更新到set表中 TODO 待确定是设置单体时 所有单体还是某个单体 |
| | | //dataSetService.update(); |
| | | //rt表数据更新到set表中 |
| | | dataSetService.updateBatch(rtSetDataList); |
| | | update(stateSet); |
| | | |
| | | } |
| | | |
| | | private void update(CKPowerDevBattRtStateSet stateSet) { |
| | | UpdateWrapper<CKPowerDevBattRtStateSet> update = Wrappers.update(); |
| | | update.eq("batt_index",stateSet.getBattIndex()); |
| | | mapper.update(stateSet,update); |
| | | } |
| | | } |