包名调整

This commit is contained in:
2023-06-08 14:11:08 +08:00
parent ac4ad7d679
commit 818538f34d
80 changed files with 184 additions and 202 deletions

View File

@@ -0,0 +1,27 @@
package com.njcn.csharmonic;
import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.DependsOn;
/**
* @author hongawen
* @version 1.0.0
* @date 2021年12月09日 20:59
*/
@Slf4j
@MapperScan("com.njcn.**.mapper")
@EnableFeignClients(basePackages = "com.njcn")
@SpringBootApplication(scanBasePackages = "com.njcn")
@DependsOn("proxyMapperRegister")
public class CsHarmonicBootApplication {
public static void main(String[] args) {
SpringApplication.run(CsHarmonicBootApplication.class, args);
}
}

View File

@@ -0,0 +1,80 @@
package com.njcn.csharmonic.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType;
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.csharmonic.service.CsConfigurationService;
import com.njcn.minioss.bo.MinIoUploadResDTO;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
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 com.njcn.csharmonic.param.CsConfigurationParm;
import com.njcn.csharmonic.pojo.vo.CsConfigurationVO;
import org.springframework.web.multipart.MultipartFile;
/**
* (cs_configuration)表控制层
*
* @author xxxxx
*/
@Slf4j
@RestController
@RequestMapping("/csconfiguration")
@Api(tags = "组态项目")
@AllArgsConstructor
public class CsConfigurationController extends BaseController {
private final CsConfigurationService csConfigurationService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/add")
@ApiOperation("新增组态项目")
@ApiImplicitParam(name = "csConfigurationParm", value = "新增组态项目参数", required = true)
public HttpResult<Boolean> add(@RequestBody @Validated CsConfigurationParm csConfigurationParm){
String methodDescribe = getMethodDescribe("add");
boolean save = csConfigurationService.add (csConfigurationParm);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, save, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/audit")
@ApiOperation("修改组态项目")
@ApiImplicitParam(name = "auditParm", value = "修改组态项目参数", required = true)
public HttpResult<Boolean> audit(@RequestBody @Validated CsConfigurationParm.CsConfigurationAuditParam auditParm){
String methodDescribe = getMethodDescribe("audit");
boolean save = csConfigurationService.audit (auditParm);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, save, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/queryPage")
@ApiOperation("组态项目分页查询")
@ApiImplicitParam(name = "csConfigurationQueryParam", value = "组态项目查询参数", required = true)
public HttpResult<IPage<CsConfigurationVO>> queryPage(@RequestBody @Validated CsConfigurationParm.CsConfigurationQueryParam csConfigurationQueryParam ){
String methodDescribe = getMethodDescribe("queryPage");
IPage<CsConfigurationVO> page = csConfigurationService.queryPage (csConfigurationQueryParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPLOAD)
@PostMapping("/uploadImage")
@ApiOperation("上传底图")
@ApiImplicitParam(name = "file", value = "底图文件", required = true)
public HttpResult<MinIoUploadResDTO> uploadImage(@RequestParam("file") MultipartFile issuesFile){
String methodDescribe = getMethodDescribe("uploadImage");
String filePath = csConfigurationService.uploadImage(issuesFile);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,new MinIoUploadResDTO(issuesFile.getOriginalFilename(),filePath), methodDescribe);
}
}

View File

@@ -0,0 +1,20 @@
package com.njcn.csharmonic.controller;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
/**
* (cs_net_dev)表控制层
*
* @author xxxxx
*/
@Slf4j
@RestController
@RequestMapping("/csnetdev")
@Api(tags = "组态页面")
@AllArgsConstructor
public class CsNetDevPOController extends BaseController {
}

View File

@@ -0,0 +1,65 @@
package com.njcn.csharmonic.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.csharmonic.service.CsPagePOService;
import com.njcn.csharmonic.pojo.vo.CsPageVO;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import com.njcn.csharmonic.param.CsPageParm;
import org.springframework.web.bind.annotation.*;
/**
* (cs_page)表控制层
*
* @author xxxxx
*/
@RestController
@RequestMapping("/cspage")
@Api(tags = "组态项目页面")
@AllArgsConstructor
public class CsPagePOController extends BaseController {
private final CsPagePOService csPagePOService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/add")
@ApiOperation("新增组态页面")
@ApiImplicitParam(name = "csPageParm", value = "新增组态项目参数", required = true)
public HttpResult<CsPageVO> add(@RequestBody @Validated CsPageParm csPageParm){
String methodDescribe = getMethodDescribe("add");
CsPageVO csPageVO = csPagePOService.add (csPageParm);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, csPageVO, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/audit")
@ApiOperation("修改组态页面")
@ApiImplicitParam(name = "auditParm", value = "修改组态项目参数", required = true)
public HttpResult<Boolean> audit(@RequestBody @Validated CsPageParm.CsPageParmAuditParam auditParm){
String methodDescribe = getMethodDescribe("audit");
boolean save = csPagePOService.audit (auditParm);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, save, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/queryPage")
@ApiOperation("组态页面分页查询")
@ApiImplicitParam(name = "csPageParam", value = "组态项目查询参数", required = true)
public HttpResult<IPage<CsPageVO>> queryPage(@RequestBody @Validated CsPageParm.CsPageParmQueryParam csPageParam ){
String methodDescribe = getMethodDescribe("queryPage");
IPage<CsPageVO> page = csPagePOService.queryPage (csPageParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe);
}
}

View File

@@ -0,0 +1,76 @@
package com.njcn.csharmonic.controller;
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.vo.LineTargetVO;
import com.njcn.csharmonic.pojo.vo.RtDataVO;
import com.njcn.csharmonic.pojo.vo.TargetDetailVO;
import com.njcn.csharmonic.service.ILineTargetService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/6/1 10:03
*/
@Slf4j
@RestController
@RequestMapping("/lineTarget")
@Api(tags = "组态指标绑定")
@AllArgsConstructor
public class LineTargetController extends BaseController {
private final ILineTargetService lineTargetService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/target")
@ApiOperation("监测点指标")
@ApiImplicitParam(name = "lineId", value = "监测点Id", required = true)
public HttpResult<List<LineTargetVO>> getLineTarget(@RequestParam("lineId") String lineId) {
String methodDescribe = getMethodDescribe("getLineTarget");
List<LineTargetVO> list = lineTargetService.getLineTarget(lineId);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/targetDetail")
@ApiOperation("获取指标数据类型和相别")
@ApiImplicitParams({
@ApiImplicitParam(name = "pid", value = "数据集id", required = true),
@ApiImplicitParam(name = "name", value = "名称", required = true)
})
public HttpResult<TargetDetailVO> getTargetDetail(@RequestParam("pid") String pid, @RequestParam("name") String name) {
String methodDescribe = getMethodDescribe("getTargetDetail");
TargetDetailVO list = lineTargetService.getTargetDetail(pid,name);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/lineData")
@ApiOperation("获取指标数据")
@ApiImplicitParam(name = "id", value = "组态页面id", required = true)
@Deprecated
public HttpResult<List<RtDataVO>> getLineData(@RequestParam("id") String id) {
String methodDescribe = getMethodDescribe("getLineData");
List<RtDataVO> list = lineTargetService.getLineData(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
}

View File

@@ -0,0 +1,86 @@
package com.njcn.csharmonic.controller;
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.csharmonic.service.StableDataService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
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 com.njcn.csharmonic.param.ThdDataQueryParm;
import com.njcn.csharmonic.pojo.vo.ThdDataVO;
import java.util.List;
/**
* Description:
* Date: 2023/5/18 8:51【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Slf4j
@RestController
@RequestMapping("/stable")
@Api(tags = "稳态数据展示")
@AllArgsConstructor
public class StableDataController extends BaseController {
private final StableDataService stableDataService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/queryFisrtThdData")
@ApiOperation("查询谐波畸变率实时数据")
@ApiImplicitParams({
@ApiImplicitParam(name = "devId", value = "设备id", required = true),
@ApiImplicitParam(name = "statisticalName", value = "统计指标name", required = true)
})
public HttpResult<List<ThdDataVO>> queryFisrtThdData(@RequestParam("devId") String devId, @RequestParam("statisticalName") String statisticalName) {
String methodDescribe = getMethodDescribe("queryThdData");
List<ThdDataVO> list = stableDataService.queryThdData(devId, statisticalName);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/queryThdDataByTime")
@ApiOperation("查询时间段内谐波畸变率")
@ApiImplicitParam(name = "thdDataQueryParm", value = "查询参数", required = true)
public HttpResult<List<ThdDataVO>> queryThdDataByTime(@RequestBody @Validated ThdDataQueryParm thdDataQueryParm) {
String methodDescribe = getMethodDescribe("queryThdDataByTime");
List<ThdDataVO> list = stableDataService.queryThdDataByTime(thdDataQueryParm);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/queryFisrtThdContent")
@ApiOperation("查询谐波含量实时数据")
@ApiImplicitParams({
@ApiImplicitParam(name = "devId", value = "设备id", required = true),
@ApiImplicitParam(name = "statisticalName", value = "统计指标name", required = true)
})
public HttpResult<List<ThdDataVO>> queryFisrtThdContent(@RequestParam("devId") String devId, @RequestParam("statisticalName") String statisticalName) {
String methodDescribe = getMethodDescribe("queryFisrtThdContent");
List<ThdDataVO> list = stableDataService.queryFisrtThdContent(devId, statisticalName);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/queryThdContentByTime")
@ApiOperation("查询时间段内谐波畸变率")
@ApiImplicitParam(name = "thdDataQueryParm", value = "查询参数", required = true)
public HttpResult<List<ThdDataVO>> queryThdContentByTime(@RequestBody @Validated ThdDataQueryParm thdDataQueryParm) {
String methodDescribe = getMethodDescribe("queryThdContentByTime");
List<ThdDataVO> list = stableDataService.queryThdContentByTime(thdDataQueryParm);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
}

View File

@@ -0,0 +1,40 @@
package com.njcn.csharmonic.handler;
import com.alibaba.nacos.shaded.com.google.gson.Gson;
import com.github.tocrhz.mqtt.annotation.MqttSubscribe;
import com.github.tocrhz.mqtt.annotation.NamedValue;
import com.github.tocrhz.mqtt.annotation.Payload;
import com.github.tocrhz.mqtt.publisher.MqttPublisher;
import com.njcn.csharmonic.pojo.vo.RtDataVO;
import com.njcn.csharmonic.service.ILineTargetService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author hongawen
* @version 1.0.0
* @date 2022年03月23日 09:41
*/
@Slf4j
@Component
@AllArgsConstructor
public class MqttMessageHandler {
private final MqttPublisher publisher;
private final ILineTargetService lineTargetService;
/**
* 实时数据应答
*/
@MqttSubscribe(value = "/zl/askRtData/{pageId}",qos = 1)
public void responseRtData(String topic, @NamedValue("pageId") String pageId, MqttMessage message, @Payload String payload) {
List<RtDataVO> list = lineTargetService.getLineData(pageId);
Gson gson = new Gson();
publisher.send("/zl/rtData/"+pageId,gson.toJson(list),1,false);
}
}

View File

@@ -0,0 +1,14 @@
package com.njcn.csharmonic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.csharmonic.pojo.po.CsConfigurationPO;
/**
* Description:
* Date: 2023/5/31 10:53【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface CsConfigurationMapper extends BaseMapper<CsConfigurationPO> {
}

View File

@@ -0,0 +1,14 @@
package com.njcn.csharmonic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.csharmonic.pojo.po.CsNetDevPO;
/**
* Description:
* Date: 2023/5/31 14:13【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface CsNetDevPOMapper extends BaseMapper<CsNetDevPO> {
}

View File

@@ -0,0 +1,15 @@
package com.njcn.csharmonic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.csharmonic.pojo.po.CsPagePO;
/**
*
* Description:
* Date: 2023/5/31 14:31【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface CsPagePOMapper extends BaseMapper<CsPagePO> {
}

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.csharmonic.mapper.CsConfigurationMapper">
<resultMap id="BaseResultMap" type="com.njcn.csharmonic.pojo.po.CsConfigurationPO">
<!--@mbg.generated-->
<!--@Table cs_configuration-->
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="status" jdbcType="INTEGER" property="status" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, `name`, `status`, create_by, create_time, update_by, update_time
</sql>
</mapper>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.csharmonic.mapper.CsNetDevPOMapper">
<resultMap id="BaseResultMap" type="com.njcn.csharmonic.pojo.po.CsNetDevPO">
<!--@mbg.generated-->
<!--@Table cs_net_dev-->
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="dev_type" jdbcType="VARCHAR" property="devType" />
<result column="time" jdbcType="TIMESTAMP" property="time" />
<result column="version" jdbcType="VARCHAR" property="version" />
<result column="soft_info_id" jdbcType="VARCHAR" property="softInfoId" />
<result column="prj_info_id" jdbcType="VARCHAR" property="prjInfoId" />
<result column="status" jdbcType="INTEGER" property="status" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, dev_type, `time`, version, soft_info_id, prj_info_id, `status`, create_by, create_time,
update_by, update_time
</sql>
</mapper>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.csharmonic.mapper.CsPagePOMapper">
<resultMap id="BaseResultMap" type="com.njcn.csharmonic.pojo.po.CsPagePO">
<!--@mbg.generated-->
<!--@Table cs_page-->
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="pid" jdbcType="VARCHAR" property="pid" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="path" jdbcType="VARCHAR" property="path" />
<result column="status" jdbcType="INTEGER" property="status" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, pid, `name`, `path`, `status`, create_by, create_time, update_by, update_time
</sql>
</mapper>

View File

@@ -0,0 +1,28 @@
package com.njcn.csharmonic.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.csharmonic.param.CsConfigurationParm;
import com.njcn.csharmonic.pojo.po.CsConfigurationPO;
import com.njcn.csharmonic.pojo.vo.CsConfigurationVO;
import org.springframework.web.multipart.MultipartFile;
/**
*
* Description:
* Date: 2023/5/31 10:53【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface CsConfigurationService extends IService<CsConfigurationPO>{
boolean add(CsConfigurationParm csConfigurationParm);
boolean audit(CsConfigurationParm.CsConfigurationAuditParam auditParm);
IPage<CsConfigurationVO> queryPage(CsConfigurationParm.CsConfigurationQueryParam csConfigurationQueryParam);
String uploadImage(MultipartFile issuesFile);
}

View File

@@ -0,0 +1,17 @@
package com.njcn.csharmonic.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.csharmonic.pojo.po.CsNetDevPO;
/**
*
* Description:
* Date: 2023/5/31 14:12【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface CsNetDevPOService extends IService<CsNetDevPO>{
}

View File

@@ -0,0 +1,33 @@
package com.njcn.csharmonic.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.csharmonic.param.CsPageParm;
import com.njcn.csharmonic.pojo.po.CsPagePO;
import com.njcn.csharmonic.pojo.vo.CsPageVO;
/**
*
* Description:
* Date: 2023/5/31 14:31【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface CsPagePOService extends IService<CsPagePO>{
CsPageVO add(CsPageParm csPageParm);
boolean audit(CsPageParm.CsPageParmAuditParam auditParm);
IPage<CsPageVO> queryPage(CsPageParm.CsPageParmQueryParam csPageParam);
/**
* 根据id获取组态页面数据
* @param id
* @return
*/
CsPagePO queryById(String id);
}

View File

@@ -0,0 +1,35 @@
package com.njcn.csharmonic.service;
import com.njcn.csdevice.pojo.vo.LineTargetVO;
import com.njcn.csharmonic.pojo.vo.RtDataVO;
import com.njcn.csharmonic.pojo.vo.TargetDetailVO;
import java.util.List;
/**
* @author xuyang
*/
public interface ILineTargetService {
/**
* 根据监测点Id获取对应指标
* @param lineId
* @return
*/
List<LineTargetVO> getLineTarget(String lineId);
/**
* 获取指标的数据类型和相别
* @param pid
* @param name
* @return
*/
TargetDetailVO getTargetDetail(String pid, String name);
/**
* 获取绑定指标的数据
* @param id
*/
List<RtDataVO> getLineData(String id);
}

View File

@@ -0,0 +1,31 @@
package com.njcn.csharmonic.service;
import com.njcn.csharmonic.param.ThdDataQueryParm;
import com.njcn.csharmonic.pojo.vo.ThdDataVO;
import java.util.List;
/**
* Description:
* Date: 2023/5/18 14:39【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface StableDataService {
List<ThdDataVO> queryThdData(String devId, String statisticalName);
/**
* @Description: 查询时间段内谐波畸变率
* @Param:
* @return: java.util.List<com.njcn.algorithm.pojo.vo.ThdDataVO>
* @Author: clam
* @Date: 2023/5/23
*/
List<ThdDataVO> queryThdDataByTime(ThdDataQueryParm thdDataQueryParm);
List<ThdDataVO> queryFisrtThdContent(String devId, String statisticalName);
List<ThdDataVO> queryThdContentByTime(ThdDataQueryParm thdDataQueryParm);
}

View File

@@ -0,0 +1,103 @@
package com.njcn.csharmonic.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.utils.NjcnBeanUtil;
import com.njcn.csharmonic.constant.HarmonicConstant;
import com.njcn.csharmonic.mapper.CsConfigurationMapper;
import com.njcn.csharmonic.param.CsConfigurationParm;
import com.njcn.csharmonic.pojo.po.CsConfigurationPO;
import com.njcn.csharmonic.pojo.vo.CsConfigurationVO;
import com.njcn.csharmonic.service.CsConfigurationService;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.po.User;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
* Description:
* Date: 2023/5/31 10:53【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class CsConfigurationServiceImpl extends ServiceImpl<CsConfigurationMapper, CsConfigurationPO> implements CsConfigurationService{
private final FileStorageUtil fileStorageUtil;
private final UserFeignClient userFeignClient;
@Override
@Transactional(rollbackFor = {Exception.class})
public boolean add(CsConfigurationParm csConfigurationParm) {
CsConfigurationPO csConfigurationPO = new CsConfigurationPO();
BeanUtils.copyProperties(csConfigurationParm,csConfigurationPO);
csConfigurationPO.setStatus("1");
boolean save = this.save(csConfigurationPO);
return save;
}
@Override
public boolean audit(CsConfigurationParm.CsConfigurationAuditParam auditParm) {
CsConfigurationPO csConfigurationPO = new CsConfigurationPO();
NjcnBeanUtil.copyPropertiesIgnoreCase(auditParm,csConfigurationPO);
boolean b = this.updateById(csConfigurationPO);
return b;
}
@Override
public IPage<CsConfigurationVO> queryPage(CsConfigurationParm.CsConfigurationQueryParam csConfigurationQueryParam) {
Page<CsConfigurationVO> returnpage = new Page<> (csConfigurationQueryParam.getPageNum(), csConfigurationQueryParam.getPageSize ( ));
Page<CsConfigurationPO> temppage = new Page<> (csConfigurationQueryParam.getPageNum(), csConfigurationQueryParam.getPageSize ( ));
QueryWrapper<CsConfigurationPO> query = new QueryWrapper<>();
query.like(StringUtils.isNotBlank(csConfigurationQueryParam.getSearchValue()),CsConfigurationPO.COL_NAME,csConfigurationQueryParam.getSearchValue()).
le (StringUtils.isNotBlank (csConfigurationQueryParam.getSearchEndTime()), CsConfigurationPO.COL_CREATE_TIME, csConfigurationQueryParam.getSearchEndTime ( )).
ge (StringUtils.isNotBlank (csConfigurationQueryParam.getSearchBeginTime()), CsConfigurationPO.COL_CREATE_TIME, csConfigurationQueryParam.getSearchBeginTime ( )).
eq ("status",1).orderByDesc(CsConfigurationPO.COL_CREATE_TIME);
Page<CsConfigurationPO> csConfigurationPOPage = this.getBaseMapper().selectPage(temppage, query);
List<String> collect1 = csConfigurationPOPage.getRecords().stream().map(CsConfigurationPO::getCreateBy).collect(Collectors.toList());
Map<String, String> collect2;
if(!CollectionUtils.isEmpty(collect1)){
List<User> data = userFeignClient.getUserByIdList(collect1).getData();
collect2 = data.stream().collect(Collectors.toMap(User::getId, User::getName, (e1, e2) -> e1 + "," + e2));
} else {
collect2 = new HashMap<>();
}
List<CsConfigurationVO> collect = csConfigurationPOPage.getRecords().stream().map(page -> {
CsConfigurationVO csDevModelPageVO = new CsConfigurationVO();
BeanUtils.copyProperties(page, csDevModelPageVO);
csDevModelPageVO.setOperater(collect2.get(csDevModelPageVO.getCreateBy()));
return csDevModelPageVO;
}).collect(Collectors.toList());
returnpage.setRecords(collect);
returnpage.setTotal(csConfigurationPOPage.getTotal());
return returnpage;
}
@Override
public String uploadImage(MultipartFile issuesFile) {
return fileStorageUtil.getFileUrl( fileStorageUtil.uploadMultipart(issuesFile, HarmonicConstant.CONFIGURATIONPATH));
}
}

View File

@@ -0,0 +1,19 @@
package com.njcn.csharmonic.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.csharmonic.mapper.CsNetDevPOMapper;
import com.njcn.csharmonic.pojo.po.CsNetDevPO;
import com.njcn.csharmonic.service.CsNetDevPOService;
import org.springframework.stereotype.Service;
/**
*
* Description:
* Date: 2023/5/31 14:12【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class CsNetDevPOServiceImpl extends ServiceImpl<CsNetDevPOMapper, CsNetDevPO> implements CsNetDevPOService{
}

View File

@@ -0,0 +1,144 @@
package com.njcn.csharmonic.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.csharmonic.constant.HarmonicConstant;
import com.njcn.csharmonic.mapper.CsConfigurationMapper;
import com.njcn.csharmonic.mapper.CsPagePOMapper;
import com.njcn.csharmonic.param.CsPageParm;
import com.njcn.csharmonic.pojo.po.CsConfigurationPO;
import com.njcn.csharmonic.pojo.po.CsPagePO;
import com.njcn.csharmonic.pojo.vo.CsPageVO;
import com.njcn.csharmonic.service.CsPagePOService;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.po.User;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
* Description:
* Date: 2023/5/31 14:31【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class CsPagePOServiceImpl extends ServiceImpl<CsPagePOMapper, CsPagePO> implements CsPagePOService{
private final FileStorageUtil fileStorageUtil;
private final CsConfigurationMapper csConfigurationMapper;
private final UserFeignClient userFeignClient;
@Override
@Transactional(rollbackFor = {Exception.class})
public CsPageVO add(CsPageParm csPageParm) {
CsPagePO csPagePO = new CsPagePO();
CsPageVO csPageVO = new CsPageVO();
csPagePO.setPid(csPageParm.getPid());
csPagePO.setStatus("1");
csPagePO.setName(csPageParm.getName());
InputStream inputStream = this.writeJsonStringToInputStream(csPageParm.getJsonFile());
String s = fileStorageUtil.uploadStream(inputStream, HarmonicConstant.CONFIGURATIONPATH, HarmonicConstant.CONFIGURATIONNAME);
csPagePO.setPath(s);
boolean save = this.save(csPagePO);
BeanUtils.copyProperties(csPagePO, csPageVO);
InputStream fileStream = fileStorageUtil.getFileStream(csPagePO.getPath());
String text = new BufferedReader(
new InputStreamReader(fileStream, StandardCharsets.UTF_8))
.lines()
.collect(Collectors.joining("\n"));
csPageVO.setPath(text);
return csPageVO;
}
@Override
@Transactional(rollbackFor = {Exception.class})
public boolean audit(CsPageParm.CsPageParmAuditParam auditParm) {
CsPagePO csPagePO = new CsPagePO();
CsPagePO byId = this.getById(auditParm.getId());
fileStorageUtil.deleteFile(byId.getPath());
BeanUtils.copyProperties(auditParm, csPagePO);
if(StringUtils.isNotBlank(auditParm.getJsonFile())){
InputStream inputStream = this.writeJsonStringToInputStream(auditParm.getJsonFile());
String s = fileStorageUtil.uploadStream(inputStream, HarmonicConstant.CONFIGURATIONPATH, HarmonicConstant.CONFIGURATIONNAME);
csPagePO.setPath(s);
}
return this.updateById(csPagePO);
}
@Override
public IPage<CsPageVO> queryPage(CsPageParm.CsPageParmQueryParam csPageParam) {
Page<CsPageVO> returnpage = new Page<> (csPageParam.getPageNum(), csPageParam.getPageSize ( ));
QueryWrapper<CsPagePO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(StringUtils.isNotBlank (csPageParam.getPid()),CsPagePO.COL_PID,csPageParam.getPid()).
like(StringUtils.isNotBlank (csPageParam.getSearchValue()),CsPagePO.COL_NAME,csPageParam.getSearchValue()).
eq ("status",1).
orderByDesc(CsPagePO.COL_CREATE_TIME);
IPage<CsPagePO> pageData = this.page(new Page<>(csPageParam.getPageNum(), csPageParam.getPageSize()), queryWrapper);
List<String> collect1 = pageData.getRecords().stream().map(CsPagePO::getCreateBy).collect(Collectors.toList());
Map<String, String> collect2;
if(!CollectionUtils.isEmpty(collect1)){
List<User> data = userFeignClient.getUserByIdList(collect1).getData();
collect2 = data.stream().collect(Collectors.toMap(User::getId, User::getName, (e1, e2) -> e1 + "," + e2));
} else {
collect2 = new HashMap<>();
}
List<CsPageVO> collect = pageData.getRecords().stream().map(temp -> {
CsPageVO csPageVO = new CsPageVO();
CsConfigurationPO csConfigurationPO = csConfigurationMapper.selectById(temp.getPid());
BeanUtils.copyProperties(temp, csPageVO);
csPageVO.setConfigurationName(csConfigurationPO.getName());
InputStream fileStream = fileStorageUtil.getFileStream(temp.getPath());
String text = new BufferedReader(
new InputStreamReader(fileStream, StandardCharsets.UTF_8))
.lines()
.collect(Collectors.joining("\n"));
csPageVO.setPath(text);
csPageVO.setOperater(collect2.get(csPageVO.getCreateBy()));
return csPageVO;
}).collect(Collectors.toList());
returnpage.setRecords(collect);
returnpage.setTotal(pageData.getTotal());
return returnpage;
}
@Override
public CsPagePO queryById(String id) {
return this.lambdaQuery().eq(CsPagePO::getId,id).one();
}
/*将strin写入Json文件返回一个InputStream*/
public InputStream writeJsonStringToInputStream(String jsonString) {
// 转换为输入流
ByteArrayInputStream inputStream = new ByteArrayInputStream(jsonString.getBytes(StandardCharsets.UTF_8));
return inputStream;
}
}

View File

@@ -0,0 +1,241 @@
package com.njcn.csharmonic.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.nacos.shaded.com.google.gson.Gson;
import com.github.tocrhz.mqtt.publisher.MqttPublisher;
import com.njcn.csdevice.api.*;
import com.njcn.csdevice.pojo.po.CsDataArray;
import com.njcn.csdevice.pojo.po.CsDevModelPO;
import com.njcn.csdevice.pojo.po.CsDevModelRelationPO;
import com.njcn.csdevice.pojo.vo.LineTargetVO;
import com.njcn.csharmonic.constant.HarmonicConstant;
import com.njcn.csharmonic.pojo.influx.CsDataHarmPowerP;
import com.njcn.csharmonic.pojo.influx.CsDataV;
import com.njcn.csharmonic.pojo.influx.CsPqdData;
import com.njcn.csharmonic.pojo.vo.ElementsVO;
import com.njcn.csharmonic.pojo.vo.RtDataVO;
import com.njcn.csharmonic.pojo.vo.TargetDetailVO;
import com.njcn.csharmonic.pojo.vo.ZuTaiVo;
import com.njcn.csharmonic.service.CsPagePOService;
import com.njcn.csharmonic.service.ILineTargetService;
import com.njcn.csharmonic.utils.CsReflectUitl;
import com.njcn.influx.pojo.dto.StatisticalDataDTO;
import com.njcn.influx.service.CommonService;
import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.system.api.EpdFeignClient;
import lombok.AllArgsConstructor;
import org.influxdb.dto.QueryResult;
import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/6/1 10:11
*/
@Service
@AllArgsConstructor
public class LineTargetServiceImpl implements ILineTargetService {
private final CsLedgerFeignClient csLedgerFeignClient;
private final DevModelRelationFeignClient devModelRelationFeignClient;
private final DevModelFeignClient devModelFeignClient;
private final DataSetFeignClient dataSetFeignClient;
private final DataArrayFeignClient dataArrayFeignClient;
private final FileStorageUtil fileStorageUtil;
private final CsPagePOService csPagePOService;
private final MqttPublisher publisher;
private final InfluxDbUtils influxDbUtils;
private final EpdFeignClient epdFeignClient;
private final CommonService commonService;
@Override
public List<LineTargetVO> getLineTarget(String lineId) {
List<LineTargetVO> list = new ArrayList<>();
String devId = csLedgerFeignClient.findDevByLineId(lineId).getData();
CsDevModelRelationPO po = devModelRelationFeignClient.getModelByDevId(devId).getData();
if (!Objects.isNull(po)){
CsDevModelPO csDevModelPo = devModelFeignClient.getModelById(po.getModelId()).getData();
List<LineTargetVO> dataSetList = dataSetFeignClient.getDataSet(csDevModelPo.getId()).getData();
List<String> setList = dataSetList.stream().map(LineTargetVO::getId).collect(Collectors.toList());
List<LineTargetVO> dataArrayList = dataArrayFeignClient.getDataArray(setList).getData();
dataSetList.forEach(dev -> dev.setChildren(getChildren(dev, dataArrayList)));
list.addAll(dataSetList);
}
return list;
}
@Override
public TargetDetailVO getTargetDetail(String pid, String name) {
TargetDetailVO vo = new TargetDetailVO();
List<CsDataArray> dataArrayList = dataArrayFeignClient.getDataArrayById(pid,name).getData();
List<String> dataType = dataArrayList.stream().map(CsDataArray::getStatMethod).distinct().collect(Collectors.toList());
List<String> phasic = dataArrayList.stream().map(CsDataArray::getPhase).distinct().collect(Collectors.toList());
vo.setDataTypeList(dataType);
vo.setPhasicList(phasic);
return vo;
}
@Override
public List<RtDataVO> getLineData(String id) {
List<RtDataVO> result = new ArrayList<>();
String path = csPagePOService.queryById(id).getPath();
InputStream inputStream = fileStorageUtil.getFileStream(path);
List<ElementsVO> list = analysisJson(inputStream);
//influx的原始方法获取数据
if (CollectionUtil.isNotEmpty(list)){
list.forEach(item->{
String targetTag = item.getTargetId().stream().reduce((first, second) -> second).orElse("no last element");
if (CollectionUtil.isNotEmpty(dataArrayFeignClient.getDataArrayById(item.getTargetPid(),targetTag).getData())){
String targetName = dataArrayFeignClient.getDataArrayById(item.getTargetPid(),targetTag).getData().get(0).getAnotherName();
String dataId = dataArrayFeignClient.getDataArrayById(item.getTargetPid(),targetTag).getData().get(0).getDataId();
String classId = epdFeignClient.selectById(dataId).getData().getClassId();
String lineId = item.getLineId().stream().reduce((first, second) -> second).orElse("no last element");
String dataType = item.getDataType();
String phasic = item.getPhasic();
result.add(getLineRtData2(lineId,classId,targetTag,phasic,dataType,targetName));
}
});
}
return result;
}
/**
* 获取子节点
*/
public List<LineTargetVO> getChildren(LineTargetVO item, List<LineTargetVO> all) {
return all.stream().filter(allItem -> allItem.getPid().equals(item.getId())).collect(Collectors.toList());
}
/**
* 解析json文件
*/
public List<ElementsVO> analysisJson(InputStream inputStream) {
Gson gson = new Gson();
String text = new BufferedReader(
new InputStreamReader(inputStream, StandardCharsets.UTF_8))
.lines()
.collect(Collectors.joining("\n"));
ZuTaiVo zuTai = gson.fromJson(text, ZuTaiVo.class);
return zuTai.getElements();
}
/**
* 通过拼接sql语句获取方法
* @param lineId 监测点Id
* @param tableName 表名称
* @param columnName 字段名称
* @param phasic 相别
* @param dataType 数据类型
* @return
*/
public <T> T getLineRtData(String lineId, String tableName, String columnName, String phasic, String dataType) {
T t = null;
HashMap<String, Class<?>> entityClassesByAnnotation = CsReflectUitl.getEntityClassesByAnnotation();
Class<?> aClass = entityClassesByAnnotation.get(tableName);
String sql = "select line_id,phasic_type,value_type,last(" + columnName + ") AS rtData from "+ tableName +" where line_id = '" + lineId + "' and phasic_type = '" + phasic + "' and value_type = '" + dataType + "' tz('Asia/Shanghai')";
System.out.println("sql==:" + sql);
QueryResult sqlResult = influxDbUtils.query(sql);
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
List<?> list = resultMapper.toPOJO(sqlResult, aClass);
if (CollectionUtil.isNotEmpty(list)){
t = (T)list.get(0);
}
return t;
}
/**
* 通过拼接sql语句获取方法
* @param lineId 监测点Id
* @param tableName 表名称
* @param columnName 字段名称
* @param phasic 相别
* @param dataType 数据类型
* @return
*/
public RtDataVO getLineRtData2(String lineId, String tableName, String columnName, String phasic, String dataType, String target) {
RtDataVO vo = new RtDataVO();
String sql = "select line_id,phasic_type,value_type,last(" + columnName + ") AS rtData from "+ tableName +" where line_id = '" + lineId + "' and phasic_type = '" + phasic + "' and value_type = '" + dataType + "' tz('Asia/Shanghai')";
QueryResult sqlResult = influxDbUtils.query(sql);
if (CollectionUtil.isNotEmpty(sqlResult.getResults().get(0).getSeries())){
vo.setRtData(BigDecimal.valueOf(Double.parseDouble(sqlResult.getResults().get(0).getSeries().get(0).getValues().get(0).get(4).toString())).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());
} else {
vo.setRtData(3.1415926);
}
vo.setLineId(lineId);
vo.setPhaseType(phasic);
vo.setValueType(dataType);
vo.setValueType(dataType);
vo.setTargetName(target);
vo.setTargetTag(columnName);
return vo;
}
/**
* 通过orm框架获取数据
* @param lineId 监测点Id
* @param tableName 表名称
* @param columnName 字段名称
* @param phasic 相别
* @param dataType 数据类型
* @return
*/
public StatisticalDataDTO getLineRtData3(String lineId, String tableName, String columnName, String phasic, String dataType, String target) {
return commonService.getLineRtData(lineId,tableName,columnName,phasic,dataType);
}
/**
* 根据表明返回不同数据结果
*/
public RtDataVO findDataByTableName(String lineId, String tableName, String columnName, String phasic, String dataType,String targetName) {
RtDataVO rtDataVO = new RtDataVO();
switch (tableName) {
case HarmonicConstant.DATA_HARM_POWER_P:
CsDataHarmPowerP rtData1 = getLineRtData(lineId,tableName,targetName,phasic,dataType);
BeanUtils.copyProperties(rtData1,rtDataVO);
rtDataVO.setTargetName(targetName);
break;
case HarmonicConstant.DATA_V:
CsDataV rtData2 = getLineRtData(lineId,tableName,targetName,phasic,dataType);
BeanUtils.copyProperties(rtData2,rtDataVO);
rtDataVO.setTargetName(targetName);
break;
case HarmonicConstant.PQD_DATA:
CsPqdData rtData3 = getLineRtData(lineId,tableName,targetName,phasic,dataType);
BeanUtils.copyProperties(rtData3,rtDataVO);
rtDataVO.setTargetName(targetName);
break;
default:
break;
}
return rtDataVO;
}
}

View File

@@ -0,0 +1,143 @@
package com.njcn.csharmonic.service.impl;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.csdevice.api.CsLineFeignClient;
import com.njcn.csdevice.enums.AlgorithmResponseEnum;
import com.njcn.csdevice.pojo.po.CsLinePO;
import com.njcn.csdevice.utils.ReflectUtils;
import com.njcn.csharmonic.service.StableDataService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.njcn.csharmonic.param.ThdDataQueryParm;
import com.njcn.csharmonic.pojo.vo.ThdDataVO;
import com.njcn.influx.pojo.po.HarmonicRatioData;
import com.njcn.influx.pojo.po.PowerQualityData;
import com.njcn.influx.service.HaronicRatioService;
import com.njcn.influx.service.PowerQualityService;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* Description:
* Date: 2023/5/18 14:39【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class StableDataServiceImpl implements StableDataService {
private final CsLineFeignClient csLineFeignClient;
private final PowerQualityService powerQualityService;
private final HaronicRatioService harmonicRatioService;
@Override
public List<ThdDataVO> queryThdData(String devId, String statisticalName) {
List<ThdDataVO> thdDataVOList = new ArrayList<>();
List<CsLinePO> csLinePOList = csLineFeignClient.queryLineByDevId(devId).getData();
Optional.ofNullable(csLinePOList).orElseThrow(()-> new BusinessException(AlgorithmResponseEnum.LINE_DATA_ERROR));
List<String> collect = csLinePOList.stream().map(CsLinePO::getLineId).collect(Collectors.toList());
List<PowerQualityData> firstPowerQuality = powerQualityService.getFirstPowerQuality(collect, statisticalName);
firstPowerQuality.forEach(temp->{
ThdDataVO thdDataVO = new ThdDataVO();
BeanUtils.copyProperties(temp,thdDataVO);
thdDataVO.setStatisticalName(statisticalName);
thdDataVO.setTime(temp.getTime().atZone(ZoneId.systemDefault()).toLocalDateTime());
String position = csLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), thdDataVO.getLineId())).collect(Collectors.toList()).get(0).getPosition();
thdDataVO.setPosition(position);
Double statisticalValue = 0.00;
statisticalValue= (Double) ReflectUtils.getValue(temp, statisticalName);
thdDataVO.setStatisticalData(statisticalValue);
thdDataVOList.add(thdDataVO);
});
return thdDataVOList;
}
@Override
public List<ThdDataVO> queryThdDataByTime(ThdDataQueryParm thdDataQueryParm) {
List<ThdDataVO> thdDataVOList = new ArrayList<>();
List<CsLinePO> csLinePOList = csLineFeignClient.queryLineByDevId(thdDataQueryParm.getDevId()).getData();
Optional.ofNullable(csLinePOList).orElseThrow(()-> new BusinessException(AlgorithmResponseEnum.LINE_DATA_ERROR));
List<String> collect = csLinePOList.stream().map(CsLinePO::getLineId).collect(Collectors.toList());
List<PowerQualityData> firstPowerQuality = powerQualityService.getPowerQuality(collect, thdDataQueryParm.getStatisticalName(), thdDataQueryParm.getStartTime(), thdDataQueryParm.getEndTime());
firstPowerQuality.forEach(temp->{
ThdDataVO thdDataVO = new ThdDataVO();
BeanUtils.copyProperties(temp,thdDataVO);
thdDataVO.setStatisticalName(thdDataQueryParm.getStatisticalName());
thdDataVO.setTime(temp.getTime().atZone(ZoneId.systemDefault()).toLocalDateTime());
String position = csLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), thdDataVO.getLineId())).collect(Collectors.toList()).get(0).getPosition();
thdDataVO.setPosition(position);
Double statisticalValue = 0.00;
statisticalValue= (Double) ReflectUtils.getValue(temp, thdDataQueryParm.getStatisticalName());
thdDataVO.setStatisticalData(statisticalValue);
thdDataVOList.add(thdDataVO);
});
return thdDataVOList;
}
@Override
public List<ThdDataVO> queryFisrtThdContent(String devId, String statisticalName) {
List<ThdDataVO> thdDataVOList = new ArrayList<>();
List<CsLinePO> csLinePOList = csLineFeignClient.queryLineByDevId(devId).getData();
Optional.ofNullable(csLinePOList).orElseThrow(()-> new BusinessException(AlgorithmResponseEnum.LINE_DATA_ERROR));
List<String> collect = csLinePOList.stream().map(CsLinePO::getLineId).collect(Collectors.toList());
List<HarmonicRatioData> harmonicRatioList = harmonicRatioService.getFirstHaronicRatio(collect, statisticalName);
harmonicRatioList.forEach(temp->{
ThdDataVO thdDataVO = new ThdDataVO();
BeanUtils.copyProperties(temp,thdDataVO);
thdDataVO.setStatisticalName(statisticalName);
thdDataVO.setTime(temp.getTime().atZone(ZoneId.systemDefault()).toLocalDateTime());
String position = csLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), thdDataVO.getLineId())).collect(Collectors.toList()).get(0).getPosition();
thdDataVO.setPosition(position);
Double statisticalValue = 0.00;
statisticalValue= (Double) ReflectUtils.getValue(temp, statisticalName);
thdDataVO.setStatisticalData(statisticalValue);
thdDataVOList.add(thdDataVO);
});
return thdDataVOList;
}
@Override
public List<ThdDataVO> queryThdContentByTime(ThdDataQueryParm thdDataQueryParm) {
List<ThdDataVO> thdDataVOList = new ArrayList<>();
List<CsLinePO> csLinePOList = csLineFeignClient.queryLineByDevId(thdDataQueryParm.getDevId()).getData();
Optional.ofNullable(csLinePOList).orElseThrow(()-> new BusinessException(AlgorithmResponseEnum.LINE_DATA_ERROR));
List<String> collect = csLinePOList.stream().map(CsLinePO::getLineId).collect(Collectors.toList());
List<HarmonicRatioData> harmonicRatioList = harmonicRatioService.getHaronicRatio(collect, thdDataQueryParm.getStatisticalName(),thdDataQueryParm.getStartTime(), thdDataQueryParm.getEndTime());
harmonicRatioList.forEach(temp->{
ThdDataVO thdDataVO = new ThdDataVO();
BeanUtils.copyProperties(temp,thdDataVO);
thdDataVO.setStatisticalName(thdDataQueryParm.getStatisticalName());
thdDataVO.setTime(temp.getTime().atZone(ZoneId.systemDefault()).toLocalDateTime());
String position = csLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), thdDataVO.getLineId())).collect(Collectors.toList()).get(0).getPosition();
thdDataVO.setPosition(position);
Double statisticalValue = 0.00;
statisticalValue= (Double) ReflectUtils.getValue(temp, thdDataQueryParm.getStatisticalName());
thdDataVO.setStatisticalData(statisticalValue);
thdDataVOList.add(thdDataVO);
});
return thdDataVOList;
}
}