diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/AppProjectAddParm.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/AppProjectAddParm.java index 2d5fa29..28fce8e 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/AppProjectAddParm.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/AppProjectAddParm.java @@ -55,4 +55,7 @@ public class AppProjectAddParm { @ApiModelProperty(value="拓扑图模版id集合") private List topoIds; + @ApiModelProperty(value="排序") + private Integer sort; + } diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/AppProjectAuditParm.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/AppProjectAuditParm.java index 468e06a..3901387 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/AppProjectAuditParm.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/AppProjectAuditParm.java @@ -44,4 +44,7 @@ public class AppProjectAuditParm { private List topoIds; private List newTopoIds; + + @ApiModelProperty(value="排序") + private Integer sort; } diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/CsEngineeringAddParm.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/CsEngineeringAddParm.java index dacd25b..3d5e19c 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/CsEngineeringAddParm.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/CsEngineeringAddParm.java @@ -53,6 +53,10 @@ public class CsEngineeringAddParm { @ApiModelProperty(value = "描述") private String description; - + /** + * 描述 + */ + @ApiModelProperty(value = "排序") + private Integer sort; } \ No newline at end of file diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/CsEngineeringAuditParm.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/CsEngineeringAuditParm.java index e5a46ac..c5fcb60 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/CsEngineeringAuditParm.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/CsEngineeringAuditParm.java @@ -54,6 +54,7 @@ public class CsEngineeringAuditParm { @ApiModelProperty(value="0:删除 1:正常") private String status; - + @ApiModelProperty(value="排序") + private Integer sort; } \ No newline at end of file diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/AppProjectPO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/AppProjectPO.java index 5ed5ef0..c23ccd1 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/AppProjectPO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/AppProjectPO.java @@ -57,5 +57,8 @@ public class AppProjectPO extends BaseEntity { @TableField(value = "description") private String description; + @TableField(value = "sort") + private Integer sort; + } \ No newline at end of file diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEngineeringPO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEngineeringPO.java index 8b56d89..82c2a26 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEngineeringPO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEngineeringPO.java @@ -64,5 +64,10 @@ public class CsEngineeringPO extends BaseEntity { @TableField(value = "status") private String status; + /** + * 排序 + */ + @TableField(value = "sort") + private Integer sort; } \ No newline at end of file diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/EngineeringProjectRelationVo.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/EngineeringProjectRelationVo.java new file mode 100644 index 0000000..c89ab4b --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/EngineeringProjectRelationVo.java @@ -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 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; + + } + +} \ No newline at end of file diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/project/EngineeringController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/project/EngineeringController.java index 2f511ce..a9dae71 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/project/EngineeringController.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/project/EngineeringController.java @@ -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; diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/project/EngineeringProjectController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/project/EngineeringProjectController.java new file mode 100644 index 0000000..4ba6d01 --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/project/EngineeringProjectController.java @@ -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 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 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 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 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 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 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> getList(){ + String methodDescribe = getMethodDescribe("getList"); + List result = csEngineeringService.getList(); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/AppProjectService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/AppProjectService.java index d42bd77..68ba757 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/AppProjectService.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/AppProjectService.java @@ -55,4 +55,11 @@ public interface AppProjectService extends IService { * @return */ List getProjectByEngineering(List list); + + + AppProjectPO add(AppProjectAddParm param); + + AppProjectPO updateData(AppProjectAuditParm param); + + boolean delete(String id); } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsEngineeringService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsEngineeringService.java index 9f7d50c..0152b3c 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsEngineeringService.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsEngineeringService.java @@ -59,4 +59,11 @@ public interface CsEngineeringService extends IService{ CsEngineeringPO queryEngineeringById(String id); List getUnlinkedEngineering(String userId); + + CsEngineeringPO add(CsEngineeringAddParm csEngineeringAddParm); + + CsEngineeringPO updateData(CsEngineeringAuditParm csEngineeringAuditParm); + + boolean deleteData(String id); + } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/IEngineeringProjectService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/IEngineeringProjectService.java new file mode 100644 index 0000000..464d2ec --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/IEngineeringProjectService.java @@ -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; + +/** + *

+ * 组和指标关系表 服务类 + *

+ * + * @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 getList(); + +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/AppProjectServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/AppProjectServiceImpl.java index f4ccbc8..7339550 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/AppProjectServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/AppProjectServiceImpl.java @@ -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 } return result; } + + @Override + public AppProjectPO add(AppProjectAddParm param) { + AppProjectPO po = new AppProjectPO ( ); + List 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 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 queryWrapper = new LambdaUpdateWrapper<>(); + queryWrapper.eq(AppProjectPO::getId,id).set(AppProjectPO::getStatus,"0"); + return this.update(queryWrapper); + } + + } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEngineeringServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEngineeringServiceImpl.java index fd90ec2..6b4643f 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEngineeringServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEngineeringServiceImpl.java @@ -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 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 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 queryWrapper = new LambdaUpdateWrapper<>(); + queryWrapper.eq(CsEngineeringPO::getId,id).set(CsEngineeringPO::getStatus,"0"); + return this.update(queryWrapper); + } + public String getAreaById(String id){ diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLinePOServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLinePOServiceImpl.java index ab20910..56c0355 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLinePOServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLinePOServiceImpl.java @@ -378,14 +378,14 @@ public class CsLinePOServiceImpl extends ServiceImpl i // 报告文件 sensitiveUserLineVO.setReportFilePath(record.getReportFilePath()); // 最新数据时间 - List 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 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); diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/EngineeringProjectServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/EngineeringProjectServiceImpl.java new file mode 100644 index 0000000..015e304 --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/EngineeringProjectServiceImpl.java @@ -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; + +/** + *

+ * 数据集表 服务实现类 + *

+ * + * @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 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 getList() { + List result = new ArrayList<>(); + //查询所有工程 + LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.eq(CsEngineeringPO::getStatus,"1").orderByAsc(CsEngineeringPO::getSort); + List list1 = csEngineeringService.list(queryWrapper1); + + //查询所有项目 + LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); + queryWrapper2.eq(AppProjectPO::getStatus,"1").orderByAsc(AppProjectPO::getSort); + List list2 = appProjectService.list(queryWrapper2); + Map map = list2.stream().collect(Collectors.toMap(AppProjectPO::getId, item->item)); + + //查询所有拓扑图 + LambdaQueryWrapper queryWrapper3 = new LambdaQueryWrapper<>(); + queryWrapper3.eq(AppTopologyDiagramPO::getStatus,"1"); + List list3 = appTopologyDiagramService.list(queryWrapper3); + Map map3 = list3.stream().collect(Collectors.toMap(AppTopologyDiagramPO::getProjectId, item->item)); + + //查询台账信息 + List 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 projectList = allList.stream().filter(item2->item2.getPid().equals(item.getId())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(projectList)) { + List 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; + } +} diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CustomReportServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CustomReportServiceImpl.java index ddcc700..cf70d5e 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CustomReportServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CustomReportServiceImpl.java @@ -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 PHASE_MAPPING = new HashMap() {{ + 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> classMap = indexDataList.stream().collect(Collectors.groupingBy(ReportTemplateDataVO::getResourceId)); //定义存放指标的map if (gridSideLine != null) { - lineName = gridSideLine.getName(); + lineName2 = gridSideLine.getName(); List afterDataList = fetchDataList(gridSideLine, classMap, queryParam); afterFinalDataList.addAll(afterDataList); } if (loadSideLine != null) { - lineName = loadSideLine.getName(); + lineName1 = loadSideLine.getName(); List 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 data, StringBuilder sql, List finalDataList, String method, SensitiveUserReportQueryParam queryParam, String lineId) { + private void assSqlByMysqlNew(Map tMap, String dataLevel, Double pt, Double ct, List data, StringBuilder sql, List 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 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 fetchDataList(CsLinePO linePO, Map> classMap, SensitiveUserReportQueryParam queryParam) { + //获取指标一二次值转换关系 + DictData epdDic = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.EPD.getCode(),DicDataTypeEnum.CS_DATA_TYPE.getCode()).getData(); + List eleEpdPqdList= epdFeignClient.dictMarkByDataType(epdDic.getId()).getData(); + Map 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 map = csLineFeignClient.getCustomDetailByLineId(linePO.getLineId()).getData(); + String dataLevel = map.get("level"); + String lineId = linePO.getLineId(); List>> 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 { } -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +} \ No newline at end of file diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/RStatLimitRateDServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/RStatLimitRateDServiceImpl.java index af503a8..40122fb 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/RStatLimitRateDServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/RStatLimitRateDServiceImpl.java @@ -632,6 +632,9 @@ public class RStatLimitRateDServiceImpl extends ServiceImplpom + + + + + + + + + + + + @@ -27,23 +39,23 @@ 192.168.1.103 - 192.168.1.126 + 192.168.2.126 192.168.1.103 ${middle.server.url}:18848 72972c43-3c20-4452-a261-66624e17da97 - - - - - - + + + + + + @@ -76,6 +88,12 @@ + + + + + + ${middle.server.url}:8080