1.新增工程项目管理接口
2.调整报表数据不对的问题
This commit is contained in:
@@ -55,4 +55,7 @@ public class AppProjectAddParm {
|
||||
@ApiModelProperty(value="拓扑图模版id集合")
|
||||
private List<String> topoIds;
|
||||
|
||||
@ApiModelProperty(value="排序")
|
||||
private Integer sort;
|
||||
|
||||
}
|
||||
|
||||
@@ -44,4 +44,7 @@ public class AppProjectAuditParm {
|
||||
private List<String> topoIds;
|
||||
|
||||
private List<String> newTopoIds;
|
||||
|
||||
@ApiModelProperty(value="排序")
|
||||
private Integer sort;
|
||||
}
|
||||
|
||||
@@ -53,6 +53,10 @@ public class CsEngineeringAddParm {
|
||||
@ApiModelProperty(value = "描述")
|
||||
private String description;
|
||||
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
@ApiModelProperty(value = "排序")
|
||||
private Integer sort;
|
||||
|
||||
}
|
||||
@@ -54,6 +54,7 @@ public class CsEngineeringAuditParm {
|
||||
@ApiModelProperty(value="0:删除 1:正常")
|
||||
private String status;
|
||||
|
||||
|
||||
@ApiModelProperty(value="排序")
|
||||
private Integer sort;
|
||||
|
||||
}
|
||||
@@ -57,5 +57,8 @@ public class AppProjectPO extends BaseEntity {
|
||||
@TableField(value = "description")
|
||||
private String description;
|
||||
|
||||
@TableField(value = "sort")
|
||||
private Integer sort;
|
||||
|
||||
|
||||
}
|
||||
@@ -64,5 +64,10 @@ public class CsEngineeringPO extends BaseEntity {
|
||||
@TableField(value = "status")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
@TableField(value = "sort")
|
||||
private Integer sort;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.njcn.csdevice.pojo.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
* 日志信息
|
||||
*/
|
||||
@Data
|
||||
public class EngineeringProjectRelationVo implements Serializable {
|
||||
|
||||
//工程信息
|
||||
@ApiModelProperty("工程id")
|
||||
private String engineeringId;
|
||||
|
||||
@ApiModelProperty("工程名称")
|
||||
private String engineeringName;
|
||||
|
||||
@ApiModelProperty("区域")
|
||||
private String engineeringArea;
|
||||
|
||||
@ApiModelProperty("工程备注")
|
||||
private String engineeringRemark;
|
||||
|
||||
@ApiModelProperty("工程排序")
|
||||
private Integer engineeringSort;
|
||||
|
||||
@ApiModelProperty("项目信息")
|
||||
private List<ProjectInfo> projectInfoList;
|
||||
|
||||
//项目信息
|
||||
@Data
|
||||
public static class ProjectInfo implements Serializable {
|
||||
|
||||
@ApiModelProperty("项目id")
|
||||
private String projectId;
|
||||
|
||||
@ApiModelProperty("项目名称")
|
||||
private String projectName;
|
||||
|
||||
@ApiModelProperty("项目地址")
|
||||
private String projectArea;
|
||||
|
||||
@ApiModelProperty("项目备注")
|
||||
private String projectRemark;
|
||||
|
||||
@ApiModelProperty("项目排序")
|
||||
private Integer projectSort;
|
||||
|
||||
@ApiModelProperty("拓扑图信息")
|
||||
private String topologyInfo;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -11,8 +11,6 @@ import com.njcn.csdevice.pojo.param.CsEngineeringAuditParm;
|
||||
import com.njcn.csdevice.pojo.param.CsEngineeringQueryPageParm;
|
||||
import com.njcn.csdevice.pojo.param.CsEngineeringQueryParm;
|
||||
import com.njcn.csdevice.pojo.po.CsEngineeringPO;
|
||||
import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO;
|
||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||
import com.njcn.csdevice.pojo.vo.CsEngineeringVO;
|
||||
import com.njcn.csdevice.service.CsEngineeringService;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
package com.njcn.csdevice.controller.project;
|
||||
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.csdevice.pojo.param.AppProjectAddParm;
|
||||
import com.njcn.csdevice.pojo.param.AppProjectAuditParm;
|
||||
import com.njcn.csdevice.pojo.param.CsEngineeringAddParm;
|
||||
import com.njcn.csdevice.pojo.param.CsEngineeringAuditParm;
|
||||
import com.njcn.csdevice.pojo.vo.EngineeringProjectRelationVo;
|
||||
import com.njcn.csdevice.service.IEngineeringProjectService;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xy
|
||||
* @date 2026/1/29
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/engineeringProjectRelation")
|
||||
@Api(tags = " 工程信息管理(不分权限)")
|
||||
@AllArgsConstructor
|
||||
public class EngineeringProjectController extends BaseController {
|
||||
|
||||
private final IEngineeringProjectService csEngineeringService;
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/addEngineering")
|
||||
@ApiOperation("新增工程信息")
|
||||
public HttpResult<Boolean> addEngineering(@Validated @RequestBody CsEngineeringAddParm csEngineeringAddParm){
|
||||
String methodDescribe = getMethodDescribe("addEngineering");
|
||||
boolean result = csEngineeringService.addEngineering(csEngineeringAddParm);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/updateEngineering")
|
||||
@ApiOperation("修改工程信息")
|
||||
public HttpResult<Boolean> updateEngineering(@Validated @RequestBody CsEngineeringAuditParm csEngineeringAuditParm){
|
||||
String methodDescribe = getMethodDescribe("updateEngineering");
|
||||
boolean result = csEngineeringService.updateEngineering(csEngineeringAuditParm);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/deleteEngineering")
|
||||
@ApiOperation("删除工程信息")
|
||||
public HttpResult<Boolean> deleteEngineering(@RequestParam("id") String id){
|
||||
String methodDescribe = getMethodDescribe("deleteEngineering");
|
||||
boolean result = csEngineeringService.deleteEngineering(id);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/addProject")
|
||||
@ApiOperation("新增项目信息")
|
||||
public HttpResult<Boolean> addProject(@Validated @RequestBody AppProjectAddParm param){
|
||||
String methodDescribe = getMethodDescribe("addProject");
|
||||
boolean result = csEngineeringService.addProject(param);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/updateProject")
|
||||
@ApiOperation("修改项目信息")
|
||||
public HttpResult<Boolean> updateProject(@Validated @RequestBody AppProjectAuditParm param){
|
||||
String methodDescribe = getMethodDescribe("updateProject");
|
||||
boolean result = csEngineeringService.updateProject(param);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/deleteProject")
|
||||
@ApiOperation("删除项目信息")
|
||||
public HttpResult<Boolean> deleteProject(@RequestParam("id") String id){
|
||||
String methodDescribe = getMethodDescribe("deleteProject");
|
||||
boolean result = csEngineeringService.deleteProject(id);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/list")
|
||||
@ApiOperation("查询工程信息列表")
|
||||
public HttpResult<List<EngineeringProjectRelationVo>> getList(){
|
||||
String methodDescribe = getMethodDescribe("getList");
|
||||
List<EngineeringProjectRelationVo> result = csEngineeringService.getList();
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -55,4 +55,11 @@ public interface AppProjectService extends IService<AppProjectPO> {
|
||||
* @return
|
||||
*/
|
||||
List<AppProjectPO> getProjectByEngineering(List<String> list);
|
||||
|
||||
|
||||
AppProjectPO add(AppProjectAddParm param);
|
||||
|
||||
AppProjectPO updateData(AppProjectAuditParm param);
|
||||
|
||||
boolean delete(String id);
|
||||
}
|
||||
|
||||
@@ -59,4 +59,11 @@ public interface CsEngineeringService extends IService<CsEngineeringPO>{
|
||||
CsEngineeringPO queryEngineeringById(String id);
|
||||
|
||||
List<CsEngineeringPO> getUnlinkedEngineering(String userId);
|
||||
|
||||
CsEngineeringPO add(CsEngineeringAddParm csEngineeringAddParm);
|
||||
|
||||
CsEngineeringPO updateData(CsEngineeringAuditParm csEngineeringAuditParm);
|
||||
|
||||
boolean deleteData(String id);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.njcn.csdevice.service;
|
||||
|
||||
import com.njcn.csdevice.pojo.param.AppProjectAddParm;
|
||||
import com.njcn.csdevice.pojo.param.AppProjectAuditParm;
|
||||
import com.njcn.csdevice.pojo.param.CsEngineeringAddParm;
|
||||
import com.njcn.csdevice.pojo.param.CsEngineeringAuditParm;
|
||||
import com.njcn.csdevice.pojo.vo.EngineeringProjectRelationVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 组和指标关系表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author xuyang
|
||||
* @since 2023-06-19
|
||||
*/
|
||||
public interface IEngineeringProjectService {
|
||||
|
||||
boolean addEngineering(CsEngineeringAddParm csEngineeringAddParm);
|
||||
|
||||
boolean updateEngineering(CsEngineeringAuditParm csEngineeringAuditParm);
|
||||
|
||||
boolean deleteEngineering(String id);
|
||||
|
||||
boolean addProject(AppProjectAddParm param);
|
||||
|
||||
boolean updateProject(AppProjectAuditParm param);
|
||||
|
||||
boolean deleteProject(String id);
|
||||
|
||||
List<EngineeringProjectRelationVo> getList();
|
||||
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.njcn.csdevice.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.stream.CollectorUtil;
|
||||
import com.alibaba.cloud.commons.lang.StringUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -17,7 +17,6 @@ import com.njcn.csdevice.pojo.param.*;
|
||||
import com.njcn.csdevice.pojo.po.*;
|
||||
import com.njcn.csdevice.pojo.vo.AppProjectVO;
|
||||
import com.njcn.csdevice.pojo.vo.AppTopologyDiagramVO;
|
||||
import com.njcn.csdevice.pojo.vo.CsLineTopologyTemplateVO;
|
||||
import com.njcn.csdevice.service.AppProjectService;
|
||||
import com.njcn.csdevice.service.AppTopologyDiagramService;
|
||||
import com.njcn.csdevice.service.CsLineTopologyTemplateService;
|
||||
@@ -367,4 +366,42 @@ class AppProjectServiceImpl extends ServiceImpl<AppProjectMapper, AppProjectPO>
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AppProjectPO add(AppProjectAddParm param) {
|
||||
AppProjectPO po = new AppProjectPO ( );
|
||||
List<AppProjectPO> list = this.lambdaQuery().eq(AppProjectPO::getName, param.getName()).eq(AppProjectPO::getStatus, "1").list();
|
||||
if(!list.isEmpty()){
|
||||
throw new BusinessException("新增失败,项目名重复");
|
||||
}
|
||||
BeanUtils.copyProperties (param, po);
|
||||
po.setStatus ("1");
|
||||
this.save(po);
|
||||
return po;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AppProjectPO updateData(AppProjectAuditParm param) {
|
||||
List<AppProjectPO> list = this.lambdaQuery()
|
||||
.eq(AppProjectPO::getName, param.getName())
|
||||
.eq(AppProjectPO::getStatus, "1")
|
||||
.ne(AppProjectPO::getId, param.getId())
|
||||
.list();
|
||||
if(!list.isEmpty()){
|
||||
throw new BusinessException("修改失败,项目名重复");
|
||||
}
|
||||
AppProjectPO po = new AppProjectPO ();
|
||||
BeanUtils.copyProperties (param, po);
|
||||
this.updateById(po);
|
||||
return po;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean delete(String id) {
|
||||
LambdaUpdateWrapper<AppProjectPO> queryWrapper = new LambdaUpdateWrapper<>();
|
||||
queryWrapper.eq(AppProjectPO::getId,id).set(AppProjectPO::getStatus,"0");
|
||||
return this.update(queryWrapper);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@@ -259,6 +260,43 @@ public class CsEngineeringServiceImpl extends ServiceImpl<CsEngineeringMapper, C
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CsEngineeringPO add(CsEngineeringAddParm csEngineeringAddParm) {
|
||||
List<CsEngineeringPO> list = this.lambdaQuery().eq(CsEngineeringPO::getName, csEngineeringAddParm.getName()).eq(CsEngineeringPO::getStatus, "1").list();
|
||||
if(!list.isEmpty()){
|
||||
throw new BusinessException("新增失败,工程名重复");
|
||||
}
|
||||
//新增工程
|
||||
CsEngineeringPO po = new CsEngineeringPO ();
|
||||
BeanUtils.copyProperties (csEngineeringAddParm, po);
|
||||
po.setStatus ("1");
|
||||
this.save(po);
|
||||
return po;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CsEngineeringPO updateData(CsEngineeringAuditParm csEngineeringAuditParm) {
|
||||
List<CsEngineeringPO> list = this.lambdaQuery()
|
||||
.eq(CsEngineeringPO::getName, csEngineeringAuditParm.getName())
|
||||
.eq(CsEngineeringPO::getStatus, "1")
|
||||
.ne(CsEngineeringPO::getId, csEngineeringAuditParm.getId())
|
||||
.list();
|
||||
if(!list.isEmpty()){
|
||||
throw new BusinessException("修改失败,工程名重复");
|
||||
}
|
||||
CsEngineeringPO po = new CsEngineeringPO();
|
||||
BeanUtils.copyProperties(csEngineeringAuditParm, po);
|
||||
this.updateById(po);
|
||||
return po;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteData(String id) {
|
||||
LambdaUpdateWrapper<CsEngineeringPO> queryWrapper = new LambdaUpdateWrapper<>();
|
||||
queryWrapper.eq(CsEngineeringPO::getId,id).set(CsEngineeringPO::getStatus,"0");
|
||||
return this.update(queryWrapper);
|
||||
}
|
||||
|
||||
|
||||
public String getAreaById(String id){
|
||||
|
||||
|
||||
@@ -378,14 +378,14 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
|
||||
// 报告文件
|
||||
sensitiveUserLineVO.setReportFilePath(record.getReportFilePath());
|
||||
// 最新数据时间
|
||||
List<CsLineLatestData> lineLatestDataList = csLineLatestDataFeignClient.listData().getData();
|
||||
if (CollUtil.isNotEmpty(lineLatestDataList)) {
|
||||
sensitiveUserLineVO.setLatestTime(lineLatestDataList.stream()
|
||||
.filter(item -> item.getLineId().equals(record.getLineId()))
|
||||
.map(CsLineLatestData::getTimeId)
|
||||
.max(LocalDateTime::compareTo)
|
||||
.orElse(null));
|
||||
}
|
||||
// List<CsLineLatestData> lineLatestDataList = csLineLatestDataFeignClient.listData().getData();
|
||||
// if (CollUtil.isNotEmpty(lineLatestDataList)) {
|
||||
// sensitiveUserLineVO.setLatestTime(lineLatestDataList.stream()
|
||||
// .filter(item -> item.getLineId().equals(record.getLineId()))
|
||||
// .map(CsLineLatestData::getTimeId)
|
||||
// .max(LocalDateTime::compareTo)
|
||||
// .orElse(null));
|
||||
// }
|
||||
list.add(sensitiveUserLineVO);
|
||||
}
|
||||
result.setRecords(list);
|
||||
|
||||
@@ -0,0 +1,191 @@
|
||||
package com.njcn.csdevice.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.csdevice.mapper.CsLedgerMapper;
|
||||
import com.njcn.csdevice.pojo.param.*;
|
||||
import com.njcn.csdevice.pojo.po.AppProjectPO;
|
||||
import com.njcn.csdevice.pojo.po.AppTopologyDiagramPO;
|
||||
import com.njcn.csdevice.pojo.po.CsEngineeringPO;
|
||||
import com.njcn.csdevice.pojo.po.CsLedger;
|
||||
import com.njcn.csdevice.pojo.vo.CsLedgerVO;
|
||||
import com.njcn.csdevice.pojo.vo.EngineeringProjectRelationVo;
|
||||
import com.njcn.csdevice.service.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 数据集表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author xuyang
|
||||
* @since 2026-01-29
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class EngineeringProjectServiceImpl implements IEngineeringProjectService {
|
||||
|
||||
private final CsEngineeringService csEngineeringService;
|
||||
private final AppProjectService appProjectService;
|
||||
private final ICsLedgerService csLedgerService;
|
||||
private final CsLedgerMapper csLedgerMapper;
|
||||
private final AppTopologyDiagramService appTopologyDiagramService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean addEngineering(CsEngineeringAddParm csEngineeringAddParm) {
|
||||
boolean result = false;
|
||||
//新增工程信息
|
||||
CsEngineeringPO po1 = csEngineeringService.add(csEngineeringAddParm);
|
||||
//新增cs_ledger数据
|
||||
CsLedgerParam csLedgerParam = new CsLedgerParam();
|
||||
csLedgerParam.setId(po1.getId());
|
||||
csLedgerParam.setPid("9999999");
|
||||
csLedgerParam.setName(csEngineeringAddParm.getName());
|
||||
csLedgerParam.setLevel(0);
|
||||
csLedgerParam.setRemark(csEngineeringAddParm.getDescription());
|
||||
csLedgerParam.setSort(csEngineeringAddParm.getSort());
|
||||
CsLedger po2 = csLedgerService.addLedgerTree(csLedgerParam);
|
||||
if (ObjectUtil.isNotNull(po1) && ObjectUtil.isNotNull(po2)) {
|
||||
result = true;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean updateEngineering(CsEngineeringAuditParm csEngineeringAuditParm) {
|
||||
//修改工程信息
|
||||
CsEngineeringPO po1 = csEngineeringService.updateData(csEngineeringAuditParm);
|
||||
//修改cs_ledger数据
|
||||
CsLedgerParam.Update csLedgerParam = new CsLedgerParam.Update();
|
||||
csLedgerParam.setId(po1.getId());
|
||||
csLedgerParam.setName(csEngineeringAuditParm.getName());
|
||||
csLedgerParam.setSort(csEngineeringAuditParm.getSort());
|
||||
csLedgerService.updateLedgerTree(csLedgerParam);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean deleteEngineering(String id) {
|
||||
//查询csledger数据
|
||||
List<CsLedgerVO> allList = csLedgerMapper.getAll();
|
||||
allList.forEach(item->{
|
||||
if (Objects.equals(item.getPid(),id)) {
|
||||
throw new BusinessException("请先删除该工程下的所有项目");
|
||||
}
|
||||
});
|
||||
//删除工程信息
|
||||
csEngineeringService.deleteData(id);
|
||||
//删除台账信息
|
||||
csLedgerService.deleteLedgerTree(id);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addProject(AppProjectAddParm param) {
|
||||
boolean result = false;
|
||||
//新增项目信息
|
||||
AppProjectPO po1 = appProjectService.add(param);
|
||||
//新增cs_ledger数据
|
||||
CsLedgerParam csLedgerParam = new CsLedgerParam();
|
||||
csLedgerParam.setId(po1.getId());
|
||||
csLedgerParam.setPid(param.getEngineeringId());
|
||||
csLedgerParam.setName(param.getName());
|
||||
csLedgerParam.setLevel(1);
|
||||
csLedgerParam.setSort(param.getSort());
|
||||
CsLedger po2 = csLedgerService.addLedgerTree(csLedgerParam);
|
||||
if (ObjectUtil.isNotNull(po1) && ObjectUtil.isNotNull(po2)) {
|
||||
result = true;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean updateProject(AppProjectAuditParm param) {
|
||||
//修改工程信息
|
||||
AppProjectPO po1 = appProjectService.updateData(param);
|
||||
//修改cs_ledger数据
|
||||
CsLedgerParam.Update csLedgerParam = new CsLedgerParam.Update();
|
||||
csLedgerParam.setId(po1.getId());
|
||||
csLedgerParam.setName(param.getName());
|
||||
csLedgerParam.setSort(param.getSort());
|
||||
csLedgerParam.setRemark(param.getDescription());
|
||||
csLedgerService.updateLedgerTree(csLedgerParam);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteProject(String id) {
|
||||
//删除项目信息
|
||||
appProjectService.delete(id);
|
||||
//删除台账信息
|
||||
csLedgerService.deleteLedgerTree(id);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EngineeringProjectRelationVo> getList() {
|
||||
List<EngineeringProjectRelationVo> result = new ArrayList<>();
|
||||
//查询所有工程
|
||||
LambdaQueryWrapper<CsEngineeringPO> queryWrapper1 = new LambdaQueryWrapper<>();
|
||||
queryWrapper1.eq(CsEngineeringPO::getStatus,"1").orderByAsc(CsEngineeringPO::getSort);
|
||||
List<CsEngineeringPO> list1 = csEngineeringService.list(queryWrapper1);
|
||||
|
||||
//查询所有项目
|
||||
LambdaQueryWrapper<AppProjectPO> queryWrapper2 = new LambdaQueryWrapper<>();
|
||||
queryWrapper2.eq(AppProjectPO::getStatus,"1").orderByAsc(AppProjectPO::getSort);
|
||||
List<AppProjectPO> list2 = appProjectService.list(queryWrapper2);
|
||||
Map<String,AppProjectPO> map = list2.stream().collect(Collectors.toMap(AppProjectPO::getId, item->item));
|
||||
|
||||
//查询所有拓扑图
|
||||
LambdaQueryWrapper<AppTopologyDiagramPO> queryWrapper3 = new LambdaQueryWrapper<>();
|
||||
queryWrapper3.eq(AppTopologyDiagramPO::getStatus,"1");
|
||||
List<AppTopologyDiagramPO> list3 = appTopologyDiagramService.list(queryWrapper3);
|
||||
Map<String,AppTopologyDiagramPO> map3 = list3.stream().collect(Collectors.toMap(AppTopologyDiagramPO::getProjectId, item->item));
|
||||
|
||||
//查询台账信息
|
||||
List<CsLedgerVO> allList = csLedgerMapper.getAll();
|
||||
|
||||
if (CollectionUtil.isNotEmpty(list1)) {
|
||||
list1.forEach(item->{
|
||||
EngineeringProjectRelationVo temp = new EngineeringProjectRelationVo();
|
||||
temp.setEngineeringId(item.getId());
|
||||
temp.setEngineeringName(item.getName());
|
||||
temp.setEngineeringArea(item.getProvince()+item.getCity());
|
||||
temp.setEngineeringRemark(item.getDescription());
|
||||
temp.setEngineeringSort(item.getSort());
|
||||
|
||||
List<CsLedgerVO> projectList = allList.stream().filter(item2->item2.getPid().equals(item.getId())).collect(Collectors.toList());
|
||||
if (CollectionUtil.isNotEmpty(projectList)) {
|
||||
List<EngineeringProjectRelationVo.ProjectInfo> projectInfoList = new ArrayList<>();
|
||||
projectList.forEach(item2->{
|
||||
AppProjectPO po = map.get(item2.getId());
|
||||
EngineeringProjectRelationVo.ProjectInfo projectInfo = new EngineeringProjectRelationVo.ProjectInfo();
|
||||
projectInfo.setProjectId(po.getId());
|
||||
projectInfo.setProjectName(po.getName());
|
||||
projectInfo.setProjectArea(po.getArea());
|
||||
projectInfo.setProjectRemark(po.getDescription());
|
||||
projectInfo.setProjectSort(po.getSort());
|
||||
projectInfo.setTopologyInfo(Objects.isNull(map3.get(po.getId()))?null:map3.get(po.getId()).getFilePath());
|
||||
projectInfoList.add(projectInfo);
|
||||
});
|
||||
temp.setProjectInfoList(projectInfoList);
|
||||
}
|
||||
result.add(temp);
|
||||
});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -133,6 +133,13 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
private final String GRID_SIDE_DICT_CODE = "Grid_Side";
|
||||
private final String LOAD_SIDE_DICT_CODE = "Load_Side";
|
||||
|
||||
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
||||
put("AB", "A");
|
||||
put("BC", "B");
|
||||
put("CA", "C");
|
||||
put("M", "T");
|
||||
}};
|
||||
|
||||
/**
|
||||
* map key转大写
|
||||
*/
|
||||
@@ -294,7 +301,8 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
// DictData gridSideDictData = dicDataFeignClient.getDicDataByCode(GRID_SIDE_DICT_CODE).getData();
|
||||
// CsLinePO gridSideLine = linePOList.stream().filter(linePO -> linePO.getPosition().equals(gridSideDictData.getId())).findFirst().orElse(null);
|
||||
// CsLinePO loadSideLine = linePOList.stream().filter(linePO -> linePO.getPosition().equals(loadSideDictData.getId())).findFirst().orElse(null);
|
||||
String lineName = "";
|
||||
String lineName1 = "";
|
||||
String lineName2 = "";
|
||||
// 模版内容数据
|
||||
JSONArray templateData;
|
||||
|
||||
@@ -321,13 +329,13 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
Map<String, List<ReportTemplateDataVO>> classMap = indexDataList.stream().collect(Collectors.groupingBy(ReportTemplateDataVO::getResourceId));
|
||||
//定义存放指标的map
|
||||
if (gridSideLine != null) {
|
||||
lineName = gridSideLine.getName();
|
||||
lineName2 = gridSideLine.getName();
|
||||
List<ReportTemplateDataVO> afterDataList = fetchDataList(gridSideLine, classMap, queryParam);
|
||||
afterFinalDataList.addAll(afterDataList);
|
||||
}
|
||||
|
||||
if (loadSideLine != null) {
|
||||
lineName = loadSideLine.getName();
|
||||
lineName1 = loadSideLine.getName();
|
||||
List<ReportTemplateDataVO> beforeDataList = fetchDataList(loadSideLine, classMap, queryParam);
|
||||
beforeFinalDataList.addAll(beforeDataList);
|
||||
}
|
||||
@@ -405,9 +413,13 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
} else if (v.charAt(0) == '&') {
|
||||
// 基础数据
|
||||
String baseItem = v.replace(STR_THREE, "").toUpperCase();
|
||||
if (baseItem.startsWith("LINENAME")) {
|
||||
if (baseItem.startsWith("LINENAME1")) {
|
||||
//台账信息
|
||||
son.putOpt(V, baseItem.replace("LINENAME", lineName));
|
||||
son.putOpt(V, baseItem.replace("LINENAME1", lineName1));
|
||||
}
|
||||
if (baseItem.startsWith("LINENAME2")) {
|
||||
//台账信息
|
||||
son.putOpt(V, baseItem.replace("LINENAME2", lineName2));
|
||||
}
|
||||
} else if (v.contains("start_time") && v.contains("end_time")){
|
||||
//如时间是大于当前时间则用当前时间
|
||||
@@ -1034,7 +1046,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
}
|
||||
endList.addAll(data);
|
||||
}
|
||||
private void assSqlByMysqlNew(List<ReportTemplateDataVO> data, StringBuilder sql, List<ReportTemplateDataVO> finalDataList, String method, SensitiveUserReportQueryParam queryParam, String lineId) {
|
||||
private void assSqlByMysqlNew(Map<String,String> tMap, String dataLevel, Double pt, Double ct, List<ReportTemplateDataVO> data, StringBuilder sql, List<ReportTemplateDataVO> finalDataList, String method, SensitiveUserReportQueryParam queryParam, String lineId) {
|
||||
//sql拼接示例:select MAX(IHA2) as IHA2 from power_quality_data where Phase = 'A' and LineId='1324564568' and Stat_Method='max' tz('Asia/Shanghai')
|
||||
if (InfluxDbSqlConstant.CP95.equals(method)) {
|
||||
for (int i = 0; i < data.size(); i++) {
|
||||
@@ -1043,6 +1055,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
.append(InfluxDbSqlConstant.LBK)
|
||||
.append(data.get(i).getTemplateName())
|
||||
.append(InfluxDbSqlConstant.RBK)
|
||||
.append(Objects.equals(dataLevel, "Secondary") ? " " + appendData(tMap, data.get(i).getTemplateName()+data.get(i).getPhase()+data.get(0).getResourceId(), pt, ct) : "")
|
||||
.append(InfluxDbSqlConstant.AS)
|
||||
.append("\"" + data.get(i).getItemName() + "\"");
|
||||
} else {
|
||||
@@ -1050,6 +1063,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
.append(InfluxDbSqlConstant.LBK)
|
||||
.append(data.get(i).getTemplateName())
|
||||
.append(InfluxDbSqlConstant.RBK)
|
||||
.append(Objects.equals(dataLevel, "Secondary") ? " " + appendData(tMap, data.get(i).getTemplateName()+data.get(i).getPhase()+data.get(0).getResourceId(), pt, ct) : "")
|
||||
.append(InfluxDbSqlConstant.AS)
|
||||
.append("\"" + data.get(i).getItemName() + "\"").append(StrUtil.COMMA);
|
||||
}
|
||||
@@ -1061,6 +1075,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
.append(InfluxDbSqlConstant.LBK)
|
||||
.append(data.get(i).getTemplateName())
|
||||
.append(InfluxDbSqlConstant.RBK)
|
||||
.append(Objects.equals(dataLevel, "Secondary") ? " " + appendData(tMap, data.get(i).getTemplateName()+data.get(i).getPhase()+data.get(0).getResourceId(), pt, ct) : "")
|
||||
.append(InfluxDbSqlConstant.AS)
|
||||
.append("\"" + data.get(i).getItemName() + "\"");
|
||||
} else {
|
||||
@@ -1068,6 +1083,7 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
.append(InfluxDbSqlConstant.LBK)
|
||||
.append(data.get(i).getTemplateName())
|
||||
.append(InfluxDbSqlConstant.RBK)
|
||||
.append(Objects.equals(dataLevel, "Secondary") ? " " + appendData(tMap, data.get(i).getTemplateName()+data.get(i).getPhase()+data.get(0).getResourceId(), pt, ct) : "")
|
||||
.append(InfluxDbSqlConstant.AS)
|
||||
.append("\"" + data.get(i).getItemName() + "\"").append(StrUtil.COMMA);
|
||||
}
|
||||
@@ -1152,6 +1168,21 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
|
||||
}
|
||||
|
||||
public String appendData(Map<String,String> tMap,String name, double pt, double ct) {
|
||||
String result;
|
||||
String format = tMap.get(name);
|
||||
if (Objects.equals(format, "*PT")) {
|
||||
result = "*"+pt+"/1000";
|
||||
} else if (Objects.equals(format, "*CT")) {
|
||||
result = "*"+ct;
|
||||
} else if (Objects.equals(format, "*PT*CT")) {
|
||||
result = "*"+pt+"*"+ct+"/1000";
|
||||
} else {
|
||||
result = "";
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理
|
||||
*
|
||||
@@ -2099,6 +2130,27 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
private List<ReportTemplateDataVO> fetchDataList(CsLinePO linePO,
|
||||
Map<String, List<ReportTemplateDataVO>> classMap,
|
||||
SensitiveUserReportQueryParam queryParam) {
|
||||
//获取指标一二次值转换关系
|
||||
DictData epdDic = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.EPD.getCode(),DicDataTypeEnum.CS_DATA_TYPE.getCode()).getData();
|
||||
List<EleEpdPqd> eleEpdPqdList= epdFeignClient.dictMarkByDataType(epdDic.getId()).getData();
|
||||
Map<String, String> tMap = new HashMap<>();
|
||||
eleEpdPqdList.forEach(item->{
|
||||
String phase;
|
||||
if (Objects.isNull(PHASE_MAPPING.get(item.getPhase()))) {
|
||||
phase = item.getPhase();
|
||||
} else {
|
||||
phase = PHASE_MAPPING.get(item.getPhase());
|
||||
}
|
||||
tMap.put((item.getOtherName() + phase + item.getResourcesId()).toUpperCase(), item.getPrimaryFormula());
|
||||
});
|
||||
//pt
|
||||
double pt = safeDivide(linePO.getPtRatio(), linePO.getPt2Ratio());
|
||||
//ct
|
||||
double ct = safeDivide(linePO.getCtRatio(), linePO.getCt2Ratio());
|
||||
//获取当前监测点是一次值还是二次值
|
||||
Map<String,String> map = csLineFeignClient.getCustomDetailByLineId(linePO.getLineId()).getData();
|
||||
String dataLevel = map.get("level");
|
||||
|
||||
String lineId = linePO.getLineId();
|
||||
List<Future<List<ReportTemplateDataVO>>> futures = new ArrayList<>();
|
||||
|
||||
@@ -2131,13 +2183,13 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
StringBuilder sql = new StringBuilder(InfluxDbSqlConstant.SELECT);
|
||||
|
||||
if (InfluxDbSqlConstant.MAX.equalsIgnoreCase(valueTypeKey)) {
|
||||
assSqlByMysqlNew(newDataList, sql, threadDataList, InfluxDbSqlConstant.MAX, queryParam, lineId);
|
||||
assSqlByMysqlNew(tMap,dataLevel,pt,ct,newDataList, sql, threadDataList, InfluxDbSqlConstant.MAX, queryParam, lineId);
|
||||
} else if (InfluxDbSqlConstant.MIN.equalsIgnoreCase(valueTypeKey)) {
|
||||
assSqlByMysqlNew(newDataList, sql, threadDataList, InfluxDbSqlConstant.MIN, queryParam, lineId);
|
||||
assSqlByMysqlNew(tMap,dataLevel,pt,ct,newDataList, sql, threadDataList, InfluxDbSqlConstant.MIN, queryParam, lineId);
|
||||
} else if (InfluxDbSqlConstant.AVG_WEB.equalsIgnoreCase(valueTypeKey)) {
|
||||
assSqlByMysqlNew(newDataList, sql, threadDataList, InfluxDbSqlConstant.AVG_WEB, queryParam, lineId);
|
||||
assSqlByMysqlNew(tMap,dataLevel,pt,ct,newDataList, sql, threadDataList, InfluxDbSqlConstant.AVG_WEB, queryParam, lineId);
|
||||
} else if (InfluxDbSqlConstant.CP95.equalsIgnoreCase(valueTypeKey)) {
|
||||
assSqlByMysqlNew(newDataList, sql, threadDataList, InfluxDbSqlConstant.CP95, queryParam, lineId);
|
||||
assSqlByMysqlNew(tMap,dataLevel,pt,ct,newDataList, sql, threadDataList, InfluxDbSqlConstant.CP95, queryParam, lineId);
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -2156,6 +2208,14 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
return dataList;
|
||||
}
|
||||
|
||||
private double safeDivide(Double dividend, Double divisor) {
|
||||
if (divisor == null || divisor == 0.0) {
|
||||
divisor = 1.0;
|
||||
}
|
||||
double dividendValue = dividend != null ? dividend : 0.0;
|
||||
return dividendValue / divisor;
|
||||
}
|
||||
|
||||
//获取模板id
|
||||
public String getTempId(String oldTempId, String lineId) {
|
||||
//根据模板类型的id获取模板
|
||||
@@ -2191,34 +2251,4 @@ public class CustomReportServiceImpl implements CustomReportService {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -632,6 +632,9 @@ public class RStatLimitRateDServiceImpl extends ServiceImpl<RStatLimitRateDMappe
|
||||
|
||||
|
||||
private double calculatePercentage(double part, double total) {
|
||||
if (total == 0) {
|
||||
return 0.0;
|
||||
}
|
||||
return Double.parseDouble(df.format(BigDecimal.valueOf(part / total * 100.0)
|
||||
.setScale(2, RoundingMode.HALF_UP).doubleValue()));
|
||||
}
|
||||
|
||||
32
pom.xml
32
pom.xml
@@ -20,6 +20,18 @@
|
||||
<packaging>pom</packaging>
|
||||
<properties>
|
||||
|
||||
<!-- <middle.server.url>172.20.10.6</middle.server.url>-->
|
||||
<!-- <service.server.url>172.20.10.6</service.server.url>-->
|
||||
<!-- <docker.server.url>172.20.10.6</docker.server.url>-->
|
||||
<!-- <nacos.url>${middle.server.url}:8848</nacos.url>-->
|
||||
<!-- <nacos.namespace>07267985-7a34-4389-bb1e-47ff06cfc792</nacos.namespace>-->
|
||||
|
||||
<!-- <middle.server.url>192.168.11.139</middle.server.url>-->
|
||||
<!-- <service.server.url>192.168.11.139</service.server.url>-->
|
||||
<!-- <docker.server.url>192.168.11.139</docker.server.url>-->
|
||||
<!-- <nacos.url>${middle.server.url}:8848</nacos.url>-->
|
||||
<!-- <nacos.namespace>07267985-7a34-4389-bb1e-47ff06cfc792</nacos.namespace>-->
|
||||
|
||||
<!-- <middle.server.url>192.168.1.22</middle.server.url>-->
|
||||
<!-- <service.server.url>192.168.1.126</service.server.url>-->
|
||||
<!-- <docker.server.url>192.168.1.22</docker.server.url>-->
|
||||
@@ -27,23 +39,23 @@
|
||||
<!-- <nacos.namespace>b0b0dedf-baa9-407f-bef6-988b9e0a640d</nacos.namespace>-->
|
||||
|
||||
<middle.server.url>192.168.1.103</middle.server.url>
|
||||
<service.server.url>192.168.1.126</service.server.url>
|
||||
<service.server.url>192.168.2.126</service.server.url>
|
||||
<docker.server.url>192.168.1.103</docker.server.url>
|
||||
<nacos.url>${middle.server.url}:18848</nacos.url>
|
||||
<nacos.namespace>72972c43-3c20-4452-a261-66624e17da97</nacos.namespace>
|
||||
|
||||
<!-- <middle.server.url>192.168.1.103</middle.server.url>-->
|
||||
<!-- <service.server.url>192.168.1.103</service.server.url>-->
|
||||
<!-- <docker.server.url>192.168.1.103</docker.server.url>-->
|
||||
<!-- <nacos.url>${middle.server.url}:18848</nacos.url>-->
|
||||
<!-- <nacos.namespace>3b1afe3f-2841-413b-a5dd-3b182de49a43</nacos.namespace>-->
|
||||
|
||||
<!-- <middle.server.url>192.168.1.103</middle.server.url>-->
|
||||
<!-- <service.server.url>192.168.1.103</service.server.url>-->
|
||||
<!-- <docker.server.url>192.168.1.103</docker.server.url>-->
|
||||
<!-- <nacos.url>${middle.server.url}:18848</nacos.url>-->
|
||||
<!-- <nacos.namespace></nacos.namespace>-->
|
||||
|
||||
<!-- <middle.server.url>172.20.10.6</middle.server.url>-->
|
||||
<!-- <service.server.url>172.20.10.6</service.server.url>-->
|
||||
<!-- <docker.server.url>172.20.10.6</docker.server.url>-->
|
||||
<!-- <nacos.url>${middle.server.url}:8848</nacos.url>-->
|
||||
<!-- <nacos.namespace>07267985-7a34-4389-bb1e-47ff06cfc792</nacos.namespace>-->
|
||||
|
||||
<!--102-->
|
||||
<!-- <middle.server.url>192.168.1.102</middle.server.url>-->
|
||||
<!-- <service.server.url>192.168.1.126</service.server.url>-->
|
||||
@@ -76,6 +88,12 @@
|
||||
<!-- <nacos.url>${middle.server.url}:18848</nacos.url>-->
|
||||
<!-- <nacos.namespace>3b3dbb4a-bd15-4a01-a6ef-7f179583ddfc</nacos.namespace>-->
|
||||
|
||||
<!-- <middle.server.url>172.20.10.6</middle.server.url>-->
|
||||
<!-- <service.server.url>172.20.10.6</service.server.url>-->
|
||||
<!-- <docker.server.url>172.20.10.6</docker.server.url>-->
|
||||
<!-- <nacos.url>${middle.server.url}:8848</nacos.url>-->
|
||||
<!-- <nacos.namespace>07267985-7a34-4389-bb1e-47ff06cfc792</nacos.namespace>-->
|
||||
|
||||
<!--sentinel:port-->
|
||||
<sentinel.url>${middle.server.url}:8080</sentinel.url>
|
||||
<!--网关地址,主要用于配置swagger中认证token-->
|
||||
|
||||
Reference in New Issue
Block a user