diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/DataArrayFeignClient.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/DataArrayFeignClient.java index c98920c..9e83e55 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/DataArrayFeignClient.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/DataArrayFeignClient.java @@ -28,4 +28,7 @@ public interface DataArrayFeignClient { @PostMapping("/getDataArrayById") HttpResult> getDataArrayById(@RequestParam("pid") String pid, @RequestParam("name") String name); -} + @PostMapping("/getDataArrayByIds") + HttpResult> getDataArrayByIds(@RequestParam("ids") List ids); + + } diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/DataArrayFeignClientFallbackFactory.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/DataArrayFeignClientFallbackFactory.java index 6d2177f..317947e 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/DataArrayFeignClientFallbackFactory.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/DataArrayFeignClientFallbackFactory.java @@ -51,6 +51,12 @@ public class DataArrayFeignClientFallbackFactory implements FallbackFactory> getDataArrayByIds(List ids) { + log.error("{}异常,降级处理,异常为:{}","根据id集合称获取详细数据",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } }; } } diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/CsTouristDataParm.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/CsTouristDataParm.java new file mode 100644 index 0000000..6a993b2 --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/CsTouristDataParm.java @@ -0,0 +1,30 @@ +package com.njcn.csdevice.pojo.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * + * Description: + * Date: 2023/6/27 15:50【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@NoArgsConstructor +public class CsTouristDataParm { + @ApiModelProperty(value="工程id") + private String enginerId; + + @ApiModelProperty(value="项目id") + private String projectId; + + @ApiModelProperty(value="设备id") + private String deviceId; + +} \ No newline at end of file diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsDeviceUserPO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsDeviceUserPO.java new file mode 100644 index 0000000..6c361d7 --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsDeviceUserPO.java @@ -0,0 +1,76 @@ +package com.njcn.csdevice.pojo.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.util.Date; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * + * Description: + * Date: 2023/6/27 9:40【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@ApiModel(description="") +@Data +@NoArgsConstructor +@TableName(value = "cs_device_user") +public class CsDeviceUserPO { + /** + * 主用户id + */ + @TableField(value = "primary_user_id") + @ApiModelProperty(value="主用户id") + private String primaryUserId; + + /** + * 子用户id + */ + @TableField(value = "sub_user_id") + @ApiModelProperty(value="子用户id") + private String subUserId; + + /** + * 装置Id + */ + @TableField(value = "device_id") + @ApiModelProperty(value="装置Id") + private String deviceId; + + @TableField(value = "create_by") + @ApiModelProperty(value="") + private String createBy; + + @TableField(value = "create_time") + @ApiModelProperty(value="") + private Date createTime; + + @TableField(value = "update_by") + @ApiModelProperty(value="") + private String updateBy; + + @TableField(value = "update_time") + @ApiModelProperty(value="") + private Date updateTime; + + public static final String COL_PRIMARY_USER_ID = "primary_user_id"; + + public static final String COL_SUB_USER_ID = "sub_user_id"; + + public static final String COL_DEVICE_ID = "device_id"; + + public static final String COL_CREATE_BY = "create_by"; + + public static final String COL_CREATE_TIME = "create_time"; + + public static final String COL_UPDATE_BY = "update_by"; + + public static final String COL_UPDATE_TIME = "update_time"; +} \ No newline at end of file diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsTouristDataPO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsTouristDataPO.java new file mode 100644 index 0000000..7736347 --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsTouristDataPO.java @@ -0,0 +1,38 @@ +package com.njcn.csdevice.pojo.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * + * Description: + * Date: 2023/6/27 15:50【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@NoArgsConstructor +@TableName(value = "cs_tourist_data") +public class CsTouristDataPO { + @TableField(value = "enginer_id") + private String enginerId; + + @TableField(value = "project_id") + private String projectId; + + @TableField(value = "device_id") + private String deviceId; + + public static final String COL_ENGINER_ID = "enginer_id"; + + public static final String COL_PROJECT_ID = "project_id"; + + public static final String COL_DEVICE_ID = "device_id"; +} \ No newline at end of file diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsTouristDataParmVO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsTouristDataParmVO.java new file mode 100644 index 0000000..25962cd --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsTouristDataParmVO.java @@ -0,0 +1,34 @@ +package com.njcn.csdevice.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * + * Description: + * Date: 2023/6/27 15:50【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@NoArgsConstructor +public class CsTouristDataParmVO { + @ApiModelProperty(value="工程id") + private String enginerId; + @ApiModelProperty(value="工程名称") + private String enginerName; + + @ApiModelProperty(value="项目id") + private String projectId; + @ApiModelProperty(value="项目名称") + private String projectName; + + @ApiModelProperty(value="设备id") + private String deviceId; + + @ApiModelProperty(value="设备名称") + private String deviceName; + +} \ No newline at end of file diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsDataArrayController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsDataArrayController.java index 5b94e3c..8067fc8 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsDataArrayController.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsDataArrayController.java @@ -83,5 +83,18 @@ public class CsDataArrayController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getDataArrayByIds") + @ApiOperation("获取详细数据(id)") + @ApiImplicitParams({ + @ApiImplicitParam(name = "ids", value = "数据集id", required = true), + }) + @Deprecated + public HttpResult> getDataArrayByIds(@RequestParam("ids") List ids){ + String methodDescribe = getMethodDescribe("getDataArrayByIds"); + List list = csDataArrayService.getDataArrayByIds(ids); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/project/CsTouristDataPOController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/project/CsTouristDataPOController.java new file mode 100644 index 0000000..14d0043 --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/project/CsTouristDataPOController.java @@ -0,0 +1,57 @@ +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.CsTouristDataParm; +import com.njcn.csdevice.pojo.vo.CsTouristDataParmVO; +import com.njcn.csdevice.service.CsTouristDataPOService; +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 java.util.List; + +/** +* (cs_tourist_data)表控制层 +* +* @author xxxxx +*/ +@RestController +@Slf4j +@Api(tags = "游客数据配置") +@AllArgsConstructor +@RequestMapping("/csTouristData") +public class CsTouristDataPOController extends BaseController { + + private final CsTouristDataPOService csTouristDataPOService; + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/add") + @ApiOperation("新增游客数据") + @ApiImplicitParam(name = "csTouristDataParm", value = "新增工程参数", required = true) + public HttpResult add(@Validated @RequestBody List csTouristDataParms){ + String methodDescribe = getMethodDescribe("add"); + + Boolean flag = csTouristDataPOService.add(csTouristDataParms); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, flag, methodDescribe); + } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queryAll") + @ApiOperation("查询游客数据") + public HttpResult> queryAll(){ + String methodDescribe = getMethodDescribe("query"); + + List list = csTouristDataPOService.queryAll(); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/CsDeviceUserPOMapper.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/CsDeviceUserPOMapper.java new file mode 100644 index 0000000..9254380 --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/CsDeviceUserPOMapper.java @@ -0,0 +1,15 @@ +package com.njcn.csdevice.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.csdevice.pojo.po.CsDeviceUserPO; + +/** + * + * Description: + * Date: 2023/6/27 9:40【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface CsDeviceUserPOMapper extends BaseMapper { +} \ No newline at end of file diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/CsTouristDataPOMapper.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/CsTouristDataPOMapper.java new file mode 100644 index 0000000..1f2b052 --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/CsTouristDataPOMapper.java @@ -0,0 +1,19 @@ +package com.njcn.csdevice.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.csdevice.pojo.po.CsTouristDataPO; +import com.njcn.csdevice.pojo.vo.CsTouristDataParmVO; + +import java.util.List; + +/** + * + * Description: + * Date: 2023/6/27 15:50【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface CsTouristDataPOMapper extends BaseMapper { + List queryAll(); +} \ No newline at end of file diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsDeviceUserPOMapper.xml b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsDeviceUserPOMapper.xml new file mode 100644 index 0000000..fd73414 --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsDeviceUserPOMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + primary_user_id, sub_user_id, device_id, create_by, create_time, update_by, update_time + + \ No newline at end of file diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsTouristDataPOMapper.xml b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsTouristDataPOMapper.xml new file mode 100644 index 0000000..d827f02 --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsTouristDataPOMapper.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + enginer_id, project_id, device_id + + + + \ No newline at end of file diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsDeviceUserPOService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsDeviceUserPOService.java new file mode 100644 index 0000000..0fa1803 --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsDeviceUserPOService.java @@ -0,0 +1,16 @@ +package com.njcn.csdevice.service; + +import com.njcn.csdevice.pojo.po.CsDeviceUserPO; +import com.baomidou.mybatisplus.extension.service.IService; + /** + * + * Description: + * Date: 2023/6/27 9:40【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface CsDeviceUserPOService extends IService{ + + +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsTouristDataPOService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsTouristDataPOService.java new file mode 100644 index 0000000..564e84f --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsTouristDataPOService.java @@ -0,0 +1,24 @@ +package com.njcn.csdevice.service; + +import com.njcn.csdevice.pojo.param.CsTouristDataParm; +import com.njcn.csdevice.pojo.po.CsTouristDataPO; +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.csdevice.pojo.vo.CsTouristDataParmVO; + +import java.util.List; + +/** + * + * Description: + * Date: 2023/6/27 15:50【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface CsTouristDataPOService extends IService{ + + + Boolean add(List csTouristDataParms); + + List queryAll(); +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsDataArrayService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsDataArrayService.java index 09fba4c..065540c 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsDataArrayService.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsDataArrayService.java @@ -44,4 +44,5 @@ public interface ICsDataArrayService extends IService { List getDataArrayById(String pid, String name); + List getDataArrayByIds(List ids); } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/RoleEngineerDevService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/RoleEngineerDevService.java new file mode 100644 index 0000000..a88b84d --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/RoleEngineerDevService.java @@ -0,0 +1,137 @@ +package com.njcn.csdevice.service; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.nacos.shaded.com.google.gson.JsonArray; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.njcn.csdevice.mapper.*; +import com.njcn.csdevice.pojo.po.*; +import com.njcn.csdevice.pojo.vo.CsLedgerVO; +import com.njcn.user.enums.AppRoleEnum; +import com.njcn.web.utils.RequestUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * Description: + * Date: 2023/6/27 9:28【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@RequiredArgsConstructor +@Service +public class RoleEngineerDevService { + + private final CsEngineeringUserMapper csEngineeringUserMapper; + private final CsDeviceUserPOMapper csDeviceUserPOMapper; + private final CsLedgerMapper csLedgerMapper; + private final CsEngineeringMapper csEngineeringMapper; + private final CsTouristDataPOMapper csTouristDataPOMapper; + + public List getRoleengineer(){ + String role = RequestUtil.getUserRole(); + List strings = JSONArray.parseArray(role, String.class); + role=strings.get(0); + String userIndex = RequestUtil.getUserIndex(); + QueryWrapper csEngineeringUserPOQueryWrapper = new QueryWrapper<> (); + QueryWrapper csDeviceUserPOQueryWrapper = new QueryWrapper<>(); + QueryWrapper csLedgerQueryWrapper = new QueryWrapper<>(); + + List collect = new ArrayList<>(); + if(Objects.equals(role, AppRoleEnum.ENGINEERING_USER.getCode())|| + Objects.equals(role,AppRoleEnum.MARKET_USER.getCode())|| + Objects.equals(role,AppRoleEnum.APP_VIP_USER.getCode())){ + csDeviceUserPOQueryWrapper.clear(); + csEngineeringUserPOQueryWrapper.clear(); + csLedgerQueryWrapper.clear(); + csEngineeringUserPOQueryWrapper.lambda().eq(CsEngineeringUserPO::getUserId,userIndex); + List csEngineeringUserPOS = csEngineeringUserMapper.selectList(csEngineeringUserPOQueryWrapper); + collect = csEngineeringUserPOS.stream().map(CsEngineeringUserPO::getEngineeringId).collect(Collectors.toList()); + csDeviceUserPOQueryWrapper.and(wq -> { + wq.eq("primary_user_id", userIndex) + .or() + .eq("sub_user_id",userIndex); + }); + List csDeviceUserPOS = csDeviceUserPOMapper.selectList(csDeviceUserPOQueryWrapper); + List collect1 = csDeviceUserPOS.stream().map(CsDeviceUserPO::getDeviceId).distinct().collect(Collectors.toList()); + if(CollectionUtils.isEmpty(collect1)){ + return collect; + }else{ + csLedgerQueryWrapper.in("id",collect1); + List csLedgers = csLedgerMapper.selectList(csLedgerQueryWrapper); + List collect2 = csLedgers.stream().map(CsLedger::getPid).distinct().collect(Collectors.toList()); + csLedgerQueryWrapper.clear(); + csLedgerQueryWrapper.in("id",collect2); + csLedgers = csLedgerMapper.selectList(csLedgerQueryWrapper); + List collect3 = csLedgers.stream().map(CsLedger::getPid).distinct().collect(Collectors.toList()); + collect.addAll(collect3); + collect = collect.stream().distinct().collect(Collectors.toList()); + return collect; + } + + } + else if (Objects.equals(role,AppRoleEnum.TOURIST.getCode())) { + //todo查询配置的游客工程 + List csTouristDataPOS = csTouristDataPOMapper.selectList(null); + collect = csTouristDataPOS.stream().map(CsTouristDataPO::getEnginerId).distinct().collect(Collectors.toList()); + + }else{ + List csEngineeringPOS = csEngineeringMapper.selectList(null); + collect =csEngineeringPOS.stream().map(CsEngineeringPO::getId).collect(Collectors.toList()); + } + + return collect; + } + public List getDevice(){ + String role = RequestUtil.getUserRole(); + String userIndex = RequestUtil.getUserIndex(); + QueryWrapper csEngineeringUserPOQueryWrapper = new QueryWrapper<> (); + QueryWrapper csDeviceUserPOQueryWrapper = new QueryWrapper<>(); + QueryWrapper csLedgerQueryWrapper = new QueryWrapper<>(); + + List collect = new ArrayList<>(); + if(Objects.equals(role, AppRoleEnum.ENGINEERING_USER.getCode())|| + Objects.equals(role,AppRoleEnum.MARKET_USER.getCode())|| + Objects.equals(role,AppRoleEnum.APP_VIP_USER.getCode())){ + csDeviceUserPOQueryWrapper.clear(); + csEngineeringUserPOQueryWrapper.clear(); + csEngineeringUserPOQueryWrapper.lambda().eq(CsEngineeringUserPO::getUserId,userIndex); + List csEngineeringUserPOS = csEngineeringUserMapper.selectList(csEngineeringUserPOQueryWrapper); + collect = csEngineeringUserPOS.stream().map(CsEngineeringUserPO::getEngineeringId).collect(Collectors.toList()); + csDeviceUserPOQueryWrapper.and(wq -> { + wq.eq("primary_user_id", userIndex) + .or() + .eq("sub_user_id",userIndex); + }); + List csDeviceUserPOS = csDeviceUserPOMapper.selectList(csDeviceUserPOQueryWrapper); + List collect1 = csDeviceUserPOS.stream().map(CsDeviceUserPO::getDeviceId).distinct().collect(Collectors.toList()); + return collect1; + + } + else if (Objects.equals(role,AppRoleEnum.TOURIST.getCode())) { + + List csTouristDataPOS = csTouristDataPOMapper.selectList(null); + collect = csTouristDataPOS.stream().map(CsTouristDataPO::getDeviceId).distinct().collect(Collectors.toList()); + + }else{ + csLedgerQueryWrapper.clear(); + csLedgerQueryWrapper.eq("level",2).eq("state",1); + List csLedgers = csLedgerMapper.selectList(csLedgerQueryWrapper); + collect = csLedgers.stream().map(CsLedger::getId).distinct().collect(Collectors.toList()); + + } + + return collect; + } + + + +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDataArrayServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDataArrayServiceImpl.java index 6ab993d..34be2aa 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDataArrayServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDataArrayServiceImpl.java @@ -12,6 +12,7 @@ import com.njcn.system.api.EpdFeignClient; import com.njcn.system.pojo.po.EleEpdPqd; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.util.*; import java.util.stream.Collectors; @@ -125,5 +126,13 @@ public class CsDataArrayServiceImpl extends ServiceImpl getDataArrayByIds(List ids) { + if(CollectionUtils.isEmpty(ids)){ + return new ArrayList<>(); + } + return this.lambdaQuery().in(CsDataArray::getId,ids).list(); + } + } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDeviceUserPOServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDeviceUserPOServiceImpl.java new file mode 100644 index 0000000..4172adc --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDeviceUserPOServiceImpl.java @@ -0,0 +1,19 @@ +package com.njcn.csdevice.service.impl; + +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.csdevice.pojo.po.CsDeviceUserPO; +import com.njcn.csdevice.mapper.CsDeviceUserPOMapper; +import com.njcn.csdevice.service.CsDeviceUserPOService; +/** + * + * Description: + * Date: 2023/6/27 9:40【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +public class CsDeviceUserPOServiceImpl extends ServiceImpl implements CsDeviceUserPOService{ + +} 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 d065489..a3bf713 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 @@ -17,10 +17,13 @@ import com.njcn.csdevice.pojo.po.CsEngineeringUserPO; import com.njcn.csdevice.pojo.po.CsLedger; import com.njcn.csdevice.pojo.vo.CsEngineeringVO; import com.njcn.csdevice.service.CsEngineeringService; +import com.njcn.csdevice.service.RoleEngineerDevService; import com.njcn.redis.utils.RedisUtil; import com.njcn.system.api.AreaFeignClient; import com.njcn.system.pojo.po.Area; +import com.njcn.user.enums.AppRoleEnum; import com.njcn.web.utils.RequestUtil; +import com.sun.org.apache.bcel.internal.generic.SWITCH; import lombok.RequiredArgsConstructor; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; @@ -50,6 +53,7 @@ public class CsEngineeringServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<> (); QueryWrapper csEngineeringUserPOQueryWrapper = new QueryWrapper<> (); - //todo 后期修改 - String userIndex = RequestUtil.getUserIndex(); - if(!Objects.equals(RequestUtil.getUsername(),"root")){ - csEngineeringUserPOQueryWrapper.lambda().eq(CsEngineeringUserPO::getUserId,userIndex); - List csEngineeringUserPOS = csEngineeringUserMapper.selectList(csEngineeringUserPOQueryWrapper); - List collect = csEngineeringUserPOS.stream().map(CsEngineeringUserPO::getEngineeringId).collect(Collectors.toList()); - if(CollectionUtil.isEmpty(collect)){ + /*获取用户下的工程id*/ + List roleengineer = roleEngineerDevService.getRoleengineer(); + + if(CollectionUtil.isEmpty(roleengineer)){ return csEngineeringVOList; - } - queryWrapper.in("id",collect); } + queryWrapper.in("id",roleengineer); + queryWrapper.eq (StringUtils.isNotBlank (csEngineeringQueryParm.getProvince ()),"province",csEngineeringQueryParm.getProvince ()). @@ -145,17 +146,13 @@ public class CsEngineeringServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<> (); QueryWrapper csEngineeringUserPOQueryWrapper = new QueryWrapper<> (); - //todo 后期修改 - String userIndex = RequestUtil.getUserIndex(); - if(!Objects.equals(RequestUtil.getUsername(),"root")){ - csEngineeringUserPOQueryWrapper.lambda().eq(CsEngineeringUserPO::getUserId,userIndex); - List csEngineeringUserPOS = csEngineeringUserMapper.selectList(csEngineeringUserPOQueryWrapper); - List collect = csEngineeringUserPOS.stream().map(CsEngineeringUserPO::getEngineeringId).collect(Collectors.toList()); - if(CollectionUtil.isEmpty(collect)){ - return returnPage; - } - queryWrapper.in("id",collect); + /*获取用户下的工程id*/ + List roleengineer = roleEngineerDevService.getRoleengineer(); + + if(CollectionUtil.isEmpty(roleengineer)){ + return returnPage; } + queryWrapper.in("id",roleengineer); queryWrapper.eq (StringUtils.isNotBlank (csEngineeringQueryPageParm.getProvince ()),"province",csEngineeringQueryPageParm.getProvince ()). eq (StringUtils.isNotBlank (csEngineeringQueryPageParm.getCity ()),"city",csEngineeringQueryPageParm.getCity ()). @@ -193,4 +190,6 @@ public class CsEngineeringServiceImpl extends ServiceImpl i private final CsEngineeringMapper csEngineeringMapper; private final FileStorageUtil fileStorageUtil; + private final RoleEngineerDevService roleEngineerDevService; + @Override public List getLedgerTree() { @@ -70,14 +73,21 @@ public class CsLedgerServiceImpl extends ServiceImpl i List engineeringList = new ArrayList<>(); List allList = this.baseMapper.getAll(); //fixme 这边先根据登录的用户名称来区分是否展示所有的台账信息 - if (Objects.equals(RequestUtil.getUsername(),"root") || Objects.equals(RequestUtil.getUsername(),"njcnser")){ - engineeringList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.ENGINEERING_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); - } else { - List engineering = csEngineeringUserService.getEngineeringByUser(); - engineeringList = allList.stream().filter(item->engineering.stream().map(CsEngineeringPO::getId).collect(Collectors.toList()).contains(item.getId())).collect(Collectors.toList()); - } + /*获取用户工程,设备信息过滤*/ + List roleengineer = roleEngineerDevService.getRoleengineer(); + List device = roleEngineerDevService.getDevice(); + engineeringList = allList.stream().filter(item->roleengineer.contains(item.getId())).collect(Collectors.toList()); + +// if (Objects.equals(RequestUtil.getUsername(),"root") || Objects.equals(RequestUtil.getUsername(),"njcnser")){ +// engineeringList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.ENGINEERING_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); +// } else { +// List engineering = csEngineeringUserService.getEngineeringByUser(); +// engineeringList = allList.stream().filter(item->engineering.stream().map(CsEngineeringPO::getId).collect(Collectors.toList()).contains(item.getId())).collect(Collectors.toList()); +// } List projectList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); - List deviceList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.DEVICE_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); +// List deviceList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.DEVICE_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); + List deviceList = allList.stream().filter(item -> device.contains(item.getId())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); + List lineList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.LINE_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); deviceList.forEach(dev -> dev.setChildren(getChildren(dev, lineList))); projectList.forEach(pro -> pro.setChildren(getChildren(pro, deviceList))); @@ -89,15 +99,21 @@ public class CsLedgerServiceImpl extends ServiceImpl i public List getDeviceTree() { List engineeringList = new ArrayList<>(); List allList = this.baseMapper.getAll(); + /*获取用户工程,设备信息过滤*/ + List roleengineer = roleEngineerDevService.getRoleengineer(); + List device = roleEngineerDevService.getDevice(); + engineeringList = allList.stream().filter(item->roleengineer.contains(item.getId())).collect(Collectors.toList()); //fixme 这边先根据登录的用户名称来区分是否展示所有的台账信息 - if (Objects.equals(RequestUtil.getUsername(),"root")){ - engineeringList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.ENGINEERING_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); - } else { - List engineering = csEngineeringUserService.getEngineeringByUser(); - engineeringList = allList.stream().filter(item->engineering.stream().map(CsEngineeringPO::getId).collect(Collectors.toList()).contains(item.getId())).collect(Collectors.toList()); - } +// if (Objects.equals(RequestUtil.getUsername(),"root")){ +// engineeringList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.ENGINEERING_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); +// } else { +// List engineering = csEngineeringUserService.getEngineeringByUser(); +// engineeringList = allList.stream().filter(item->engineering.stream().map(CsEngineeringPO::getId).collect(Collectors.toList()).contains(item.getId())).collect(Collectors.toList()); +// } List projectList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); - List deviceList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.DEVICE_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); +// List deviceList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.DEVICE_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); + List deviceList = allList.stream().filter(item -> device.contains(item.getId())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); + projectList.forEach(pro -> pro.setChildren(getChildren(pro, deviceList))); engineeringList.forEach(eng -> eng.setChildren(getChildren(eng, projectList))); return engineeringList; @@ -152,12 +168,14 @@ public class CsLedgerServiceImpl extends ServiceImpl i List engineeringList = new ArrayList<>(); List allList = this.baseMapper.getAll(); //fixme 这边先根据登录的用户名称来区分是否展示所有的台账信息 - if (Objects.equals(RequestUtil.getUsername(),"root") || Objects.equals(RequestUtil.getUsername(),"njcnser")){ - engineeringList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.ENGINEERING_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); - } else { - List engineering = csEngineeringUserService.getEngineeringByUser(); - engineeringList = allList.stream().filter(item->engineering.stream().map(CsEngineeringPO::getId).collect(Collectors.toList()).contains(item.getId())).collect(Collectors.toList()); - } +// if (Objects.equals(RequestUtil.getUsername(),"root") || Objects.equals(RequestUtil.getUsername(),"njcnser")){ +// engineeringList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.ENGINEERING_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); +// } else { +// List engineering = csEngineeringUserService.getEngineeringByUser(); +// engineeringList = allList.stream().filter(item->engineering.stream().map(CsEngineeringPO::getId).collect(Collectors.toList()).contains(item.getId())).collect(Collectors.toList()); +// } + List roleengineer = roleEngineerDevService.getRoleengineer(); + engineeringList = allList.stream().filter(item->roleengineer.contains(item.getId())).collect(Collectors.toList()); List projectList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(CsLedgerVO::getSort)).collect(Collectors.toList()); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("status","1"); diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsTouristDataPOServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsTouristDataPOServiceImpl.java new file mode 100644 index 0000000..7dcb26d --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsTouristDataPOServiceImpl.java @@ -0,0 +1,56 @@ +package com.njcn.csdevice.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.njcn.csdevice.pojo.param.CsTouristDataParm; +import com.njcn.csdevice.pojo.vo.CsTouristDataParmVO; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.csdevice.pojo.po.CsTouristDataPO; +import com.njcn.csdevice.mapper.CsTouristDataPOMapper; +import com.njcn.csdevice.service.CsTouristDataPOService; +import org.springframework.transaction.annotation.Transactional; + +/** + * + * Description: + * Date: 2023/6/27 15:50【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +public class CsTouristDataPOServiceImpl extends ServiceImpl implements CsTouristDataPOService{ + + @Override + @Transactional(rollbackFor = {Exception.class}) + public Boolean add(List csTouristDataParms) { + QueryWrapper QueryWrapper = new QueryWrapper<>(); + List list = new ArrayList<>(); + csTouristDataParms.forEach(temp->{ + QueryWrapper.clear(); + QueryWrapper.eq(CsTouristDataPO.COL_DEVICE_ID,temp.getDeviceId()); + CsTouristDataPO csTouristDataPO = this.getBaseMapper().selectOne(QueryWrapper); + if(Objects.isNull(csTouristDataPO)){ + return; + } + CsTouristDataPO csTouristDataPO1 = new CsTouristDataPO(); + BeanUtils.copyProperties(temp, csTouristDataPO1); + list.add(csTouristDataPO1); + + }); + boolean b = this.saveBatch(list); + return b; + } + + @Override + public List queryAll() { + List result = this.getBaseMapper().queryAll(); + return result; + } +} diff --git a/cs-harmonic/cs-harmonic-api/pom.xml b/cs-harmonic/cs-harmonic-api/pom.xml index 43aa50d..8b566bf 100644 --- a/cs-harmonic/cs-harmonic-api/pom.xml +++ b/cs-harmonic/cs-harmonic-api/pom.xml @@ -33,6 +33,12 @@ common-microservice ${project.version} + + com.njcn + pqs-influx + 0.0.1-SNAPSHOT + compile + UTF-8 diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/DevicDataTrendQueryParam.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/DevicDataTrendQueryParam.java new file mode 100644 index 0000000..5b26ac1 --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/DevicDataTrendQueryParam.java @@ -0,0 +1,52 @@ +package com.njcn.csharmonic.param; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.njcn.influx.pojo.dto.StatisticalDataDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * Description: + * Date: 2023/6/14 15:09【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +public class DevicDataTrendQueryParam { + @ApiModelProperty(value = "监测点id") + @NotBlank(message="监测点id不能为空") + private String lineId; + @ApiModelProperty(value = "查询指标集合") + @NotBlank(message="查询指标不能为空") + private List statisticalParams; + + @ApiModelProperty(value = "开始时间") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @NotNull(message="开始时间不能为空!") + private String startTime; + + @ApiModelProperty(value = "结束时间") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @NotNull(message="结束时间不能为空!") + private String endTime; + @Data + public static class StatisticalParam{ + private String classId; + private String dataId; + private String name; + private String phase; + private String statMethod; + private String anotherName; + private String unit; + } + + +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/ThdDataVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/ThdDataVO.java index cc06393..1972059 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/ThdDataVO.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/ThdDataVO.java @@ -26,6 +26,8 @@ public class ThdDataVO { private String statisticalIndex; private String statisticalName; + private String unit; + private String anotherName; private Double statisticalData; diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/DeviceDataTrendController.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/DeviceDataTrendController.java new file mode 100644 index 0000000..950966b --- /dev/null +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/DeviceDataTrendController.java @@ -0,0 +1,50 @@ +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.param.CommonStatisticalQueryParam; +import com.njcn.csharmonic.param.DevicDataTrendQueryParam; +import com.njcn.csharmonic.pojo.vo.ThdDataVO; +import com.njcn.csharmonic.service.DeviceDataTrendService; +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.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * Description: + * Date: 2023/6/26 9:07【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Slf4j +@RestController +@RequestMapping("/datatrend") +@Api(tags = "设备数据趋势") +@AllArgsConstructor +public class DeviceDataTrendController extends BaseController { + + + private final DeviceDataTrendService deviceDataTrendService; + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/querydatatrend") + @ApiOperation("查询设备数据趋势") + @ApiImplicitParam(name = "devicDataTrendQueryParam", value = "设备数据趋势参数", required = true) + public HttpResult< List>> queryDataTrend(@RequestBody DevicDataTrendQueryParam devicDataTrendQueryParam) { + String methodDescribe = getMethodDescribe("queryDataTrend"); + List> result = deviceDataTrendService.queryDataTrend(devicDataTrendQueryParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } +} diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/DeviceDataTrendService.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/DeviceDataTrendService.java new file mode 100644 index 0000000..cc78018 --- /dev/null +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/DeviceDataTrendService.java @@ -0,0 +1,17 @@ +package com.njcn.csharmonic.service; + +import com.njcn.csharmonic.param.DevicDataTrendQueryParam; +import com.njcn.csharmonic.pojo.vo.ThdDataVO; + +import java.util.List; + +/** + * Description: + * Date: 2023/6/26 9:14【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface DeviceDataTrendService { + List> queryDataTrend(DevicDataTrendQueryParam devicDataTrendQueryParam); +} diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/DeviceDataTrendServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/DeviceDataTrendServiceImpl.java new file mode 100644 index 0000000..35712ba --- /dev/null +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/DeviceDataTrendServiceImpl.java @@ -0,0 +1,80 @@ +package com.njcn.csharmonic.service.impl; + +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.csdevice.api.DataArrayFeignClient; +import com.njcn.csdevice.enums.AlgorithmResponseEnum; +import com.njcn.csdevice.pojo.po.CsDataArray; +import com.njcn.csdevice.pojo.po.CsLinePO; +import com.njcn.csharmonic.param.DevicDataTrendQueryParam; +import com.njcn.csharmonic.pojo.vo.ThdDataVO; +import com.njcn.csharmonic.service.DeviceDataTrendService; +import com.njcn.influx.pojo.dto.StatisticalDataDTO; +import com.njcn.influx.service.CommonService; +import com.njcn.system.api.EpdFeignClient; +import com.njcn.system.pojo.po.EleEpdPqd; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.math.RoundingMode; +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; +import java.util.stream.Stream; + +/** + * Description: + * Date: 2023/6/26 9:14【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +@RequiredArgsConstructor +public class DeviceDataTrendServiceImpl implements DeviceDataTrendService { + private final EpdFeignClient epdFeignClient; + private final CommonService commonService; + private final DataArrayFeignClient dataArrayFeignClient; + @Override + public List> queryDataTrend(DevicDataTrendQueryParam devicDataTrendQueryParam) { + List> result = new ArrayList<>(); + + if(CollectionUtils.isEmpty(devicDataTrendQueryParam.getStatisticalParams())){ + return result; + } + + + devicDataTrendQueryParam.getStatisticalParams().forEach(temp->{ + + List deviceRtData = commonService.getDeviceRtDataByTime(Stream.of(devicDataTrendQueryParam.getLineId()).collect(Collectors.toList()), + temp.getClassId(), + temp.getName(), temp.getPhase(), + temp.getStatMethod(), + devicDataTrendQueryParam.getStartTime(), + devicDataTrendQueryParam.getEndTime()); + List collect1 = deviceRtData.stream().map(statisticalDataDTO -> { + ThdDataVO vo = new ThdDataVO(); + vo.setLineId(statisticalDataDTO.getLineId()); + vo.setPhase(statisticalDataDTO.getPhaseType()); + + vo.setTime(statisticalDataDTO.getTime().atZone(ZoneId.systemDefault()).toLocalDateTime()); + vo.setStatMethod(statisticalDataDTO.getValueType()); + vo.setStatisticalData(BigDecimal.valueOf(statisticalDataDTO.getValue()).setScale(4, RoundingMode.UP).doubleValue()); + vo.setStatisticalIndex(temp.getDataId()); + vo.setStatisticalName(temp.getName()); + vo.setUnit(temp.getUnit()); + vo.setAnotherName(temp.getAnotherName()); + return vo; + }).collect(Collectors.toList()); + result.add(collect1); + }); + + + + return result; + } +}