终端台账数据同步

This commit is contained in:
hzj
2024-05-30 15:37:07 +08:00
parent df178c4882
commit 1060b94e7a
27 changed files with 556 additions and 64 deletions

View File

@@ -3,7 +3,6 @@ package com.njcn.device.pq.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType;
import com.njcn.common.pojo.enums.common.LogEnum;
@@ -13,7 +12,6 @@ import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.common.utils.LogUtil;
import com.njcn.device.biz.enums.DeviceResponseEnum;
import com.njcn.device.biz.utils.COverlimitUtil;
import com.njcn.device.pq.mapper.LineDetailMapper;
import com.njcn.device.pq.mapper.LineMapper;
import com.njcn.device.pq.mapper.OverlimitMapper;
@@ -23,9 +21,6 @@ import com.njcn.device.pq.pojo.bo.excel.TerminalBaseExcel;
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
import com.njcn.device.pq.pojo.param.*;
import com.njcn.device.pq.pojo.po.Line;
import com.njcn.device.pq.pojo.po.LineDetail;
import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.device.pq.pojo.po.Voltage;
import com.njcn.device.pq.pojo.vo.LineWiringDiagramVO;
import com.njcn.device.pq.pojo.vo.TerminalBaseVO;
import com.njcn.device.pq.pojo.vo.TerminalVO;
@@ -33,7 +28,6 @@ import com.njcn.device.pq.service.TerminalBaseService;
import com.njcn.device.pq.service.impl.GeneralDeviceService;
import com.njcn.poi.util.PoiUtil;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.pojo.po.DictData;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.*;
import lombok.RequiredArgsConstructor;
@@ -149,6 +143,17 @@ public class TerminalBaseController extends BaseController {
}
@ApiOperation("终端/母线/监测点同步操作")
@OperateInfo(operateType = OperateType.ADD, info = LogEnum.BUSINESS_MEDIUM)
@PostMapping("terminalSync")
public HttpResult<Object> terminalSync(@Valid @RequestBody SyncTerminalParam syncTerminalParam) {
String methodDescribe = getMethodDescribe("terminalSync");
terminalBaseService.terminalSync(syncTerminalParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
/**
* 终端修改操作
*

View File

@@ -1,20 +1,17 @@
package com.njcn.device.pq.service;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.device.pq.pojo.bo.BaseLineInfo;
import com.njcn.device.pq.pojo.bo.DeviceType;
import com.njcn.device.pq.pojo.bo.excel.TerminalBaseExcel;
import com.njcn.device.pq.pojo.param.AddTerminalParam;
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.param.SyncTerminalParam;
import com.njcn.device.pq.pojo.param.UpdateTerminalParam;
import com.njcn.device.pq.pojo.po.Line;
import com.njcn.device.pq.pojo.vo.LineWiringDiagramVO;
import com.njcn.device.pq.pojo.vo.TerminalBaseVO;
import com.njcn.device.pq.pojo.vo.TerminalVO;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
@@ -238,4 +235,12 @@ public interface TerminalBaseService {
* @date 2023/6/15
*/
boolean wiringDiagramDel(String lineId,String wiringDiagramName);
/**
* @Description: 临时表数据同步到台账表
* @Param:
* @return: void
* @Author: clam
* @Date: 2024/5/29
*/
boolean terminalSync(SyncTerminalParam syncTerminalParam);
}

View File

@@ -143,7 +143,7 @@ public class DeptLineServiceImpl extends ServiceImpl<DeptLineMapper, DeptLine> i
@Override
public List<LineDeviceStateVO> getLineDetailByDeptId(String id) {
List<String> lineByDeptId = this.getLineByDeptId(id);
List<String> lineByDeptId = this.getLineNodeByDeptId(id);
List<LineDeviceStateVO> lineDeviceStateVO = lineMapper.getLineDeviceStateVO(lineByDeptId);
return lineDeviceStateVO;
}

View File

@@ -1810,6 +1810,177 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean terminalSync(SyncTerminalParam syncTerminalParam) {
String projectIndex = null;
String provinceIndex = null;
String gdIndex = null;
String subIndex = null;
if (StrUtil.isNotBlank(syncTerminalParam.getProjectIndex())) {
projectIndex = syncTerminalParam.getProjectIndex();
if (Objects.isNull(this.getById(projectIndex))) {
throw new BusinessException(DeviceResponseEnum.PROJECT_NO);
}
}
if (StrUtil.isNotBlank(syncTerminalParam.getProvinceIndex())) {
provinceIndex = syncTerminalParam.getProvinceIndex();
if (Objects.isNull(this.getById(provinceIndex))) {
throw new BusinessException(DeviceResponseEnum.PROVINCE_GET_ERROR);
}
}
if (StrUtil.isNotBlank(syncTerminalParam.getGdIndex())) {
gdIndex = syncTerminalParam.getGdIndex();
if (Objects.isNull(this.getById(gdIndex))) {
throw new BusinessException(DeviceResponseEnum.GD_NO);
}
}
if (StrUtil.isNotBlank(syncTerminalParam.getSubIndex())) {
subIndex = syncTerminalParam.getSubIndex();
if (Objects.isNull(this.getById(subIndex))) {
throw new BusinessException(DeviceResponseEnum.SUB_NO);
}
}
//变电站 todo 可能新建电站
// if (Objects.nonNull(addTerminalParam.getSubStationParam())) {
// if (StrUtil.isBlank(subIndex) && StrUtil.isNotBlank(gdIndex)) {
// checkName(addTerminalParam, LineBaseEnum.SUB_LEVEL.getCode(), gdIndex);
// Line subStation = assembleLine(addTerminalParam.getSubStationParam().getName(), LineBaseEnum.SUB_LEVEL.getCode(), gdIndex, projectIndex + StrUtil.COMMA + provinceIndex + StrUtil.COMMA + gdIndex, addTerminalParam.getSubStationParam().getSort());
// this.baseMapper.insert(subStation);
// subIndex = subStation.getId();
//
// //变电站下的经纬度入库
// Substation sub = new Substation();
// sub.setId(subIndex);
// sub.setScale(addTerminalParam.getSubStationParam().getScale());
// sub.setLng(addTerminalParam.getSubStationParam().getLng());
// sub.setLat(addTerminalParam.getSubStationParam().getLat());
// substationMapper.insert(sub);
// }
// }
//装置
//查询该设备是否已经同步到表如何存在则之前同步监测点时同步过了,不用同步设备了,反之同步
DeviceParam deviceParam = syncTerminalParam.getDeviceParam();
Line deviceLine = this.baseMapper.selectById(syncTerminalParam.getDeviceParam().getDevIndex());
if(Objects.isNull(deviceLine)){
Line device = assembleLine(deviceParam.getName(), LineBaseEnum.DEVICE_LEVEL.getCode(), subIndex, projectIndex + StrUtil.COMMA + provinceIndex + StrUtil.COMMA + gdIndex + StrUtil.COMMA + subIndex, deviceParam.getSort());
device.setId(deviceParam.getDevIndex());
this.baseMapper.insert(device);
//装置详情
Device deviceDetail = new Device();
BeanUtils.copyProperties(deviceParam, deviceDetail);
deviceDetail.setId(device.getId());
deviceDetail.setRunFlag(0);
deviceDetail.setCallFlag(0);
deviceDetail.setComFlag(0);
deviceDetail.setCheckFlag(1);
deviceDetail.setThisTimeCheck(PubUtils.localDateFormat(deviceParam.getThisTimeCheck()));
deviceDetail.setNextTimeCheck(PubUtils.localDateFormat(deviceParam.getNextTimeCheck()));
deviceDetail.setLoginTime(PubUtils.localDateFormat(deviceParam.getNextTimeCheck()));
deviceDetail.setUpdateTime(LocalDateTime.now());
//处理装置识别码秘钥
deviceMapper.insert(deviceDetail);
//装置功能 todo确定devFuction
// List<DictData> funList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.DEV_FUN.getName()).getData();
// if (CollectionUtil.isEmpty(funList)) {
// throw new BusinessException(DeviceResponseEnum.DIC_GET_EMPTY);
// }
//
// List<DevFuction> insertFunList = new ArrayList<>();
// for (DictData dicData : funList) {
// DevFuction devFunction = new DevFuction();
// devFunction.setLineId(device.getId());
// devFunction.setFucName(dicData.getId());
// devFunction.setId(IdUtil.simpleUUID());
// insertFunList.add(devFunction);
// }
// QueryWrapper<DevFuction> funQueryWrapper = new QueryWrapper<>();
// funQueryWrapper.lambda().eq(DevFuction::getLineId, device.getId());
// devFuctionMapper.delete(funQueryWrapper);
// devFuctionMapper.addBatch(insertFunList);
}
//处理母线
SubVoltageParam subVoltageParam = syncTerminalParam.getSubVoltageParam();
String subvIndex = null;
//如果电站下存在同名母线则将监测点挂在下面反之新建母线
//同一变电站下只能有唯一母线名称
Line SubVoltage = this.lambdaQuery().eq(Line::getName, subVoltageParam.getName()).like(Line::getPids, syncTerminalParam.getSubIndex()).one();
if(Objects.isNull(SubVoltage)){
//新建母线
Line subVoltage = assembleLine(subVoltageParam.getName(), LineBaseEnum.SUB_V_LEVEL.getCode(), deviceParam.getDevIndex(), projectIndex + StrUtil.COMMA + provinceIndex + StrUtil.COMMA + gdIndex + StrUtil.COMMA + subIndex + StrUtil.COMMA + deviceParam.getDevIndex(), subVoltageParam.getSort());
this.baseMapper.insert(subVoltage);
subvIndex = subVoltage.getId();
Voltage voltage = new Voltage();
voltage.setId(subVoltage.getId());
voltage.setNum(subVoltageParam.getNum());
DictData scaleRes = dicDataFeignClient.getDicDataById(subVoltageParam.getScale()).getData();
voltage.setScale(scaleRes.getId());
voltage.setModel(subVoltageParam.getModel());
voltageMapper.insert(voltage);
}else {
subvIndex=SubVoltage.getId();
}
//处理监测点
LineParam lineParam = syncTerminalParam.getLineParam();
Line line = assembleLine(lineParam.getName(), LineBaseEnum.LINE_LEVEL.getCode(), subvIndex, projectIndex + StrUtil.COMMA + provinceIndex + StrUtil.COMMA + gdIndex + StrUtil.COMMA + subIndex + StrUtil.COMMA + deviceParam.getDevIndex() + StrUtil.COMMA + subvIndex, lineParam.getSort());
line.setId(lineParam.getLineIndex());
this.baseMapper.insert(line);
LineDetail lineDetail = new LineDetail();
BeanUtils.copyProperties(lineParam, lineDetail);
lineDetail.setId(line.getId());
//判断国网监测点id
if (StrUtil.isNotBlank(lineDetail.getMonitorId())) {
lineDetail.setMonitorFlag(1);
} else {
lineDetail.setMonitorFlag(0);
}
lineDetailMapper.insert(lineDetail);
//通过监测点id获取母线电压等级
Voltage voltage = lineMapper.getVoltageByLineId(line.getId());
//监测点限值
DictData scaleResult = dicDataFeignClient.getDicDataById(voltage.getScale()).getData();
float scaTmp = Float.parseFloat(scaleResult.getValue());
Overlimit overlimit = COverlimitUtil.globalAssemble(scaTmp, lineDetail.getDealCapacity(), lineDetail.getDevCapacity(), lineDetail.getShortCapacity(), 1, 0);
if (Objects.isNull(lineParam.getVoltageDev())) {
overlimit.setVoltageDev(overlimit.getVoltageDev());
} else {
overlimit.setVoltageDev(lineParam.getVoltageDev());
}
if (Objects.isNull(lineParam.getUvoltageDev())) {
overlimit.setUvoltageDev(overlimit.getUvoltageDev());
} else {
overlimit.setUvoltageDev(lineParam.getUvoltageDev());
}
//Overlimit overlimit = new Overlimit(line.getId(), scaTmp, lineDetail.getShortCapacity(), lineDetail.getStandardCapacity(), lineDetail.getDealCapacity(), lineDetail.getDevCapacity());
overlimitMapper.deleteById(line.getId());
overlimit.setId(line.getId());
overlimitMapper.insert(overlimit);
DeptLine deptLine = new DeptLine();
deptLine.setId(syncTerminalParam.getDeptId());
deptLine.setLineId(line.getId());
deptLineMapper.insert(deptLine);
return true;
}
private String saveTerminalInfo(List<OracleTerminalExcel> oracleTerminalExcels, List<OverLimitExcel> overLimitExcels) {
List<OracleTerminalExcel.OracleTerminalExcelMsg> oracleTerminalExcelMsg = new ArrayList<>();