台账模版导入功能修复

This commit is contained in:
hzj
2026-05-20 15:58:48 +08:00
parent 11750a4f3a
commit 7eef16599f
5 changed files with 175 additions and 60 deletions

View File

@@ -37,6 +37,7 @@ import com.njcn.device.device.mapper.DeviceMapper;
import com.njcn.device.device.service.DeviceBakService;
import com.njcn.device.device.service.DeviceProcessService;
import com.njcn.device.device.service.NodeDeviceService;
import com.njcn.device.device.service.PqDevTypeService;
import com.njcn.device.line.mapper.DeptLineMapper;
import com.njcn.device.line.mapper.LineDetailMapper;
import com.njcn.device.line.mapper.LineMapper;
@@ -74,6 +75,8 @@ import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.poi.excel.ExcelUtil;
import com.njcn.poi.util.PoiUtil;
import com.njcn.redis.utils.RedisUtil;
import com.njcn.supervision.pojo.param.user.UserReportParam;
import com.njcn.supervision.pojo.po.user.UserReportPO;
import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
import com.njcn.system.api.AreaFeignClient;
import com.njcn.system.api.DicDataFeignClient;
@@ -140,6 +143,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
private final DeviceProcessService deviceProcessService;
private final ProduceFeignClient produceFeignClient;
private final UserLedgerService userLedgerService;
private final PqDevTypeService pqDevTypeService;
@Value("${oracle.isSync}")
private Boolean isSync;
@@ -1731,18 +1735,24 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
List<DictData> businessList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.BUSINESS_TYPE.getName()).getData();
List<DictData> loadTypeList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.INTERFERENCE_SOURCE_TYPE.getName()).getData();
List<DictData> manufacturerList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.DEV_MANUFACTURER.getName()).getData();
List<DictData> devTypeList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.DEV_TYPE.getName()).getData();
// List<DictData> devTypeList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.DEV_TYPE.getName()).getData();
List<PqDevType> devTypeList = pqDevTypeService.list(new LambdaQueryWrapper<PqDevType>()
.eq(PqDevType::getState, DataStateEnum.ENABLE.getCode())
.orderByDesc(PqDevType::getCreateTime));
List<DictData> frontList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.FRONT_TYPE.getName()).getData();
List<DictData> scaleList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.DEV_VOLTAGE_STAND.getName()).getData();
List<UserLedgerVO> userLedgerVOS = userLedgerService.selectUserList(new UserReportParam());
List<Node> nodeList = nodeService.nodeAllList();
ExcelUtil.selectList(workbook, 4, 4, scaleList.stream().map(DictData::getName).collect(Collectors.toList()).toArray(new String[]{}));
ExcelUtil.selectList(workbook, 40, 40, userLedgerVOS.stream().map(UserLedgerVO::getProjectName).collect(Collectors.toList()).toArray(new String[]{}));
//这里是自己加的 带下拉框的代码
ExcelUtil.selectList(workbook, 8, 8, new String[]{"虚拟设备", "实际设备", "离线设备"});
ExcelUtil.selectList(workbook, 9, 9, new String[]{"暂态系统", "稳态系统", "双系统"});
ExcelUtil.selectList(workbook, 10, 10, new String[]{"投运", "热备用", "停运"});
ExcelUtil.selectList(workbook, 11, 11, manufacturerList.stream().map(DictData::getName).collect(Collectors.toList()).toArray(new String[]{}));
ExcelUtil.selectList(workbook, 12, 12, devTypeList.stream().map(DictData::getName).collect(Collectors.toList()).toArray(new String[]{}));
ExcelUtil.selectList(workbook, 12, 12, devTypeList.stream().map(PqDevType::getName).collect(Collectors.toList()).toArray(new String[]{}));
ExcelUtil.selectList(workbook, 17, 17, new String[]{"周期触发", "变为触发"});
ExcelUtil.selectList(workbook, 18, 18, nodeList.stream().map(Node::getName).collect(Collectors.toList()).toArray(new String[]{}));
ExcelUtil.selectList(workbook, 19, 19, frontList.stream().map(DictData::getName).collect(Collectors.toList()).toArray(new String[]{}));
@@ -1760,6 +1770,8 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
ExcelUtil.selectList(workbook, 41, 41, new String[]{"电网侧", "非电网侧"});
ExcelUtil.selectList(workbook, 42, 42, new String[]{"不参与统计", "参与统计"});
PoiUtil.exportFileByWorkbook(workbook, "台账导入模板.xlsx", response);
}
@Override
@@ -2729,6 +2741,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
* @author cdf
* @date 2022/5/18
*/
@Transactional(rollbackFor = Exception.class)
private void saveTerminalBase(List<TerminalBaseExcel> terminalBaseExcels) {
List<TerminalBaseExcel.TerminalBaseExcelMsg> terminalBaseExcelMsgs = new ArrayList<>();
//任意集合数据为空,不处理
@@ -2844,9 +2857,15 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
}
//处理终端类型
DictData devTypeDicData = dicDataFeignClient.getDicDataByName(terminalBaseExcel.getDevType()).getData();
PqDevType one = new PqDevType();
if (Objects.isNull(devTypeDicData)) {
terminalBaseExcelMsgs.add(assembleBaseMsg(terminalBaseExcel, "字典装置型号不存在"));
continue;
//上边逻辑不删兼容旧版本新版本查询pq_dev_type
one = pqDevTypeService.lambdaQuery().eq(PqDevType::getName, terminalBaseExcel.getDevType()).eq(PqDevType::getState, DataStateEnum.ENABLE.getCode()).one();
if(Objects.isNull(one)){
terminalBaseExcelMsgs.add(assembleBaseMsg(terminalBaseExcel, "字典装置型号不存在"));
continue;
}
}
this.baseMapper.insert(temp);
Device device = new Device();
@@ -2856,7 +2875,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
device.setIp(terminalBaseExcel.getIp());
device.setNodeId(node.getId());
device.setFrontType(frontTypeDicData.getId());
device.setDevType(devTypeDicData.getId());
device.setDevType(Objects.isNull(devTypeDicData)?one.getId():devTypeDicData.getId());
device.setComFlag(0);
device.setCheckFlag(1);
device.setLoginTime(LocalDate.now());
@@ -2866,6 +2885,8 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
device.setElectroplate(0);
device.setOnTime(1);
deviceMapper.insert(device);
//分配前置进程
nodeDeviceService.oneKeyDistribution(node.getId());
}
//添加终端索引
pids.add(temp.getId());
@@ -2892,6 +2913,7 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
}
//处理电压等级字典表
DictData subvScale = dicDataFeignClient.getDicDataByNameAndType(terminalBaseExcel.getSubvScale(), DicDataTypeEnum.DEV_VOLTAGE_STAND.getName()).getData();
if (Objects.isNull(subvScale)) {
terminalBaseExcelMsgs.add(assembleBaseMsg(terminalBaseExcel, "字典电压等级:" + terminalBaseExcel.getSubStationScale() + "不存在"));
continue;
@@ -2969,8 +2991,17 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
lineDetail.setPt2(Float.valueOf(pt[1]));
lineDetail.setCt1(Float.valueOf(ct[0]));
lineDetail.setCt2(Float.valueOf(ct[1]));
if(StringUtils.isNoneBlank(terminalBaseExcel.getObjName())){
UserReportPO one = userLedgerService.lambdaQuery().eq(UserReportPO::getProjectName, terminalBaseExcel.getObjName())
.eq(UserReportPO::getState, DataStateEnum.ENABLE.getCode()).one();
if(Objects.nonNull(one)){
lineDetail.setObjId(one.getId());
DictData dictData = dicDataFeignClient.getDicDataByNameAndTypeName(terminalBaseExcel.getSubvScale(), DicDataTypeEnum.DEV_VOLTAGE_STAND.getName()).getData();
}
}
DictData dictData = dicDataFeignClient.getDicDataByNameAndType(terminalBaseExcel.getSubvScale(), DicDataTypeEnum.DEV_VOLTAGE_STAND.getName()).getData();
lineDetailMapper.insert(lineDetail);
Overlimit overlimit = COverlimitUtil.globalAssemble(Float.parseFloat(dictData.getValue()), terminalBaseExcel.getDealCapacity(), terminalBaseExcel.getDevCapacity(), terminalBaseExcel.getShortCapacity(), null, null);

View File

@@ -187,14 +187,14 @@ public class TerminalMaintainServiceImpl implements TerminalMaintainService {
if (device.getRunFlag() == 0) {
newFlag = "投运";
} else if (device.getRunFlag() == 1) {
newFlag = "热备用";
newFlag = "检修";
} else if (device.getRunFlag() == 2) {
newFlag = "停运";
}
if (device1.getRunFlag() == 0) {
oldFlag = "投运";
} else if (device1.getRunFlag() == 1) {
oldFlag = "热备用";
oldFlag = "检修";
} else if (device1.getRunFlag() == 2) {
oldFlag = "停运";
}