diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/CsDeviceRegistryFeignClient.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/CsDeviceRegistryFeignClient.java new file mode 100644 index 0000000..f27f877 --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/CsDeviceRegistryFeignClient.java @@ -0,0 +1,46 @@ +package com.njcn.csdevice.api; + +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.csdevice.api.fallback.CsDeviceRegistryFallbackFactory; +import com.njcn.csdevice.pojo.po.CsDeviceRegistry; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +/** + * @author xy + */ +@FeignClient(value = ServerInfo.CS_DEVICE_BOOT, path = "/csDeviceRegistry", fallbackFactory = CsDeviceRegistryFallbackFactory.class,contextId = "csDeviceRegistry") +public interface CsDeviceRegistryFeignClient { + + @PostMapping("/add") + @ApiOperation("批量新增设备注册记录") + HttpResult add(@RequestBody @Validated List list); + + @PostMapping("/update") + @ApiOperation("修改设备注册记录") + HttpResult update(@RequestBody @Validated CsDeviceRegistry csDeviceRegistry); + + @PostMapping("/delete") + @ApiOperation("删除设备注册记录") + HttpResult delete(@RequestParam("id") String id); + + @PostMapping("/queryByCurrentNdid") + @ApiOperation("根据currentNdid查询设备注册记录") + HttpResult> queryByCurrentNdid(@RequestParam("currentNdid") String currentNdid); + + @PostMapping("/queryByCurrentNdidAndClDid") + @ApiOperation("根据currentNdid和clDid查询设备注册记录") + HttpResult queryByCurrentNdidAndClDid(@RequestParam("currentNdid") String currentNdid, @RequestParam("clDid") Integer clDid); + + @PostMapping("/updateIsAccessByCurrentNdid") + @ApiOperation("根据currentNdid修改isAccess") + HttpResult updateIsAccessByCurrentNdid(@RequestParam("currentNdid") String currentNdid, @RequestParam("isAccess") Integer isAccess); + +} diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/CsDeviceRegistryFallbackFactory.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/CsDeviceRegistryFallbackFactory.java new file mode 100644 index 0000000..1ff5d9a --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/CsDeviceRegistryFallbackFactory.java @@ -0,0 +1,67 @@ +package com.njcn.csdevice.api.fallback; + +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.csdevice.api.CsDeviceRegistryFeignClient; +import com.njcn.csdevice.pojo.po.CsDeviceRegistry; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author xy + */ +@Slf4j +@Component +public class CsDeviceRegistryFallbackFactory implements FallbackFactory { + @Override + public CsDeviceRegistryFeignClient create(Throwable cause) { + //判断抛出异常是否为解码器抛出的业务异常 + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (cause.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException) cause.getCause(); + } + Enum finalExceptionEnum = exceptionEnum; + return new CsDeviceRegistryFeignClient() { + + @Override + public HttpResult add(List list) { + log.error("{}异常,降级处理,异常为:{}","批量新增设备注册记录异常",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } + + @Override + public HttpResult update(CsDeviceRegistry csDeviceRegistry) { + log.error("{}异常,降级处理,异常为:{}","修改设备注册记录异常",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } + + @Override + public HttpResult delete(String id) { + log.error("{}异常,降级处理,异常为:{}","删除设备注册记录异常",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } + + @Override + public HttpResult> queryByCurrentNdid(String currentNdid) { + log.error("{}异常,降级处理,异常为:{}","根据currentNdid查询设备注册记录异常",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } + + @Override + public HttpResult queryByCurrentNdidAndClDid(String currentNdid, Integer clDid) { + log.error("{}异常,降级处理,异常为:{}","根据currentNdid和clDid查询设备注册记录数据异常",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } + + @Override + public HttpResult updateIsAccessByCurrentNdid(String currentNdid, Integer isAccess) { + log.error("{}异常,降级处理,异常为:{}","根据currentNdid修改isAccess异常",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } + }; + } +} diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsDeviceRegistry.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsDeviceRegistry.java new file mode 100644 index 0000000..84f80fa --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsDeviceRegistry.java @@ -0,0 +1,54 @@ +package com.njcn.csdevice.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author xy + * @since 2026-06-17 + */ +@Data +@TableName("cs_device_registry") +public class CsDeviceRegistry implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 监测点id + */ + private String id; + + /** + * 当前设备NDID + */ + private String currentNdid; + + /** + * 老的设备NDID + */ + private String oldNdid; + + /** + * 逻辑子设备编号 + */ + private Integer clDid; + + /** + * 首次接入时间 + */ + private LocalDateTime firstSeenTime; + + /** + * 修改完mac是否完成首次接入(0:未接入 1:已接入) + */ + private Integer isAccess; + + +} diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsEquipmentDeliveryVO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsEquipmentDeliveryVO.java index ad8551d..b79d698 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsEquipmentDeliveryVO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsEquipmentDeliveryVO.java @@ -106,13 +106,7 @@ public class CsEquipmentDeliveryVO extends BaseEntity { @ApiModelProperty(value="所属项目名称") private String associatedProjectName; - @ApiModelProperty(value="治理方法") - private String governMethod; - - @ApiModelProperty(value="敏感用户id") - private String monitorUser; - - @ApiModelProperty(value="治理类型(稳态:harmonic 暂态:event)") - private String governType; + @ApiModelProperty(value="修改完mac是否完成首次接入(0:未接入 1:已接入)") + private Integer isAccess; } \ No newline at end of file diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsDeviceRegistryController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsDeviceRegistryController.java new file mode 100644 index 0000000..bd7790a --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsDeviceRegistryController.java @@ -0,0 +1,148 @@ +package com.njcn.csdevice.controller.equipment; + +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.po.CsDeviceRegistry; +import com.njcn.csdevice.service.ICsDeviceRegistryService; +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 org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @author 徐扬 + */ +@RestController +@RequestMapping("/csDeviceRegistry") +@Api(tags = "设备注册台账记录表") +@AllArgsConstructor +public class CsDeviceRegistryController extends BaseController { + + private final ICsDeviceRegistryService csDeviceRegistryService; + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/add") + @ApiOperation("批量新增设备注册记录") + @ApiImplicitParam(name = "list", value = "设备注册信息列表", required = true) + public HttpResult add(@RequestBody @Validated List list) { + String methodDescribe = getMethodDescribe("add"); + boolean result = csDeviceRegistryService.add(list); + if (result) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/update") + @ApiOperation("修改设备注册记录") + @ApiImplicitParam(name = "csDeviceRegistry", value = "设备注册信息", required = true) + public HttpResult update(@RequestBody @Validated CsDeviceRegistry csDeviceRegistry) { + String methodDescribe = getMethodDescribe("update"); + boolean result = csDeviceRegistryService.update(csDeviceRegistry); + if (result) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/updateBatch") + @ApiOperation("批量修改设备注册记录") + @ApiImplicitParam(name = "list", value = "设备注册信息列表", required = true) + public HttpResult updateBatch(@RequestBody @Validated List list) { + String methodDescribe = getMethodDescribe("updateBatch"); + boolean result = csDeviceRegistryService.updateBatch(list); + if (result) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/delete") + @ApiOperation("删除设备注册记录") + @ApiImplicitParam(name = "id", value = "监测点id", required = true) + public HttpResult delete(@RequestParam("id") String id) { + String methodDescribe = getMethodDescribe("delete"); + boolean result = csDeviceRegistryService.delete(id); + if (result) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe); + } + + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/updateIsAccessByCurrentNdid") + @ApiOperation("根据currentNdid修改isAccess") + @ApiImplicitParams({ + @ApiImplicitParam(name = "currentNdid", value = "当前设备NDID", required = true), + @ApiImplicitParam(name = "isAccess", value = "接入状态(0:未接入 1:已接入)", required = true) + }) + public HttpResult updateIsAccessByCurrentNdid( + @RequestParam("currentNdid") String currentNdid, + @RequestParam("isAccess") Integer isAccess) { + String methodDescribe = getMethodDescribe("updateIsAccessByCurrentNdid"); + boolean result = csDeviceRegistryService.updateIsAccessByCurrentNdid(currentNdid, isAccess); + if (result) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/deleteByCurrentNdid") + @ApiOperation("根据currentNdid删除设备注册记录") + @ApiImplicitParam(name = "currentNdid", value = "当前设备NDID", required = true) + public HttpResult> deleteByCurrentNdid(@RequestParam("currentNdid") String currentNdid) { + String methodDescribe = getMethodDescribe("deleteByCurrentNdid"); + csDeviceRegistryService.deleteByCurrentNdid(currentNdid); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queryByCurrentNdid") + @ApiOperation("根据currentNdid查询设备注册记录") + @ApiImplicitParam(name = "currentNdid", value = "当前设备NDID", required = true) + public HttpResult> queryByCurrentNdid(@RequestParam("currentNdid") String currentNdid) { + String methodDescribe = getMethodDescribe("queryByCurrentNdid"); + List list = csDeviceRegistryService.queryByCurrentNdid(currentNdid); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @GetMapping("/getById") + @ApiOperation("根据id查询设备注册记录") + @ApiImplicitParam(name = "id", value = "监测点id", required = true) + public HttpResult getById(@RequestParam("id") String id) { + String methodDescribe = getMethodDescribe("getById"); + CsDeviceRegistry csDeviceRegistry = csDeviceRegistryService.getById(id); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, csDeviceRegistry, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queryByCurrentNdidAndClDid") + @ApiOperation("根据currentNdid和clDid查询设备注册记录") + @ApiImplicitParams({ + @ApiImplicitParam(name = "currentNdid", value = "当前设备NDID", required = true), + @ApiImplicitParam(name = "clDid", value = "逻辑子设备编号", required = true) + }) + public HttpResult queryByCurrentNdidAndClDid( + @RequestParam("currentNdid") String currentNdid, + @RequestParam("clDid") Integer clDid) { + String methodDescribe = getMethodDescribe("queryByCurrentNdidAndClDid"); + CsDeviceRegistry pojo = csDeviceRegistryService.queryByCurrentNdidAndClDid(currentNdid, clDid); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, pojo, methodDescribe); + } + +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/CsDeviceRegistryMapper.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/CsDeviceRegistryMapper.java new file mode 100644 index 0000000..968dcb2 --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/CsDeviceRegistryMapper.java @@ -0,0 +1,16 @@ +package com.njcn.csdevice.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.csdevice.pojo.po.CsDeviceRegistry; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xy + * @since 2026-06-17 + */ +public interface CsDeviceRegistryMapper extends BaseMapper { + +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsDeviceRegistryMapper.xml b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsDeviceRegistryMapper.xml new file mode 100644 index 0000000..b15639f --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsDeviceRegistryMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsDeviceRegistryService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsDeviceRegistryService.java new file mode 100644 index 0000000..2106811 --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsDeviceRegistryService.java @@ -0,0 +1,33 @@ +package com.njcn.csdevice.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.csdevice.pojo.po.CsDeviceRegistry; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author xy + * @since 2026-06-17 + */ +public interface ICsDeviceRegistryService extends IService { + + boolean add(List list); + + boolean update(CsDeviceRegistry csDeviceRegistry); + + boolean updateBatch(List list); + + boolean delete(String id); + + boolean updateIsAccessByCurrentNdid(String currentNdid, Integer isAccess); + + void deleteByCurrentNdid(String currentNdid); + + List queryByCurrentNdid(String currentNdid); + + CsDeviceRegistry queryByCurrentNdidAndClDid(String currentNdid, Integer clDid); +} 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 37a86a6..0e07de7 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 @@ -60,7 +60,10 @@ public class CsDataArrayServiceImpl extends ServiceImpl "T".equals(phase) ? "总" : phase) + .collect(Collectors.joining(","))); } vo.setName(entry.getKey()); vo.setType(eleEpdPqd.getType()); diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDataSetServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDataSetServiceImpl.java index 58b13d5..8463baa 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDataSetServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDataSetServiceImpl.java @@ -64,6 +64,7 @@ public class CsDataSetServiceImpl extends ServiceImpli.eq(CsDataSet::getDataType,"Rt").or().isNull(CsDataSet::getDataType)) + .eq(CsDataSet::getStoreFlag,0) .list(); return list.stream().min(Comparator.comparingInt(CsDataSet::getIdx)).get(); } @@ -73,7 +74,8 @@ public class CsDataSetServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(CsDataSet::getPid,modelId) .eq(CsDataSet::getClDev,clDev) - .and(i->i.eq(CsDataSet::getDataType,"Rt").or().isNull(CsDataSet::getDataType)); + .and(i->i.eq(CsDataSet::getDataType,"Rt").or().isNull(CsDataSet::getDataType)) + .eq(CsDataSet::getStoreFlag,0); //谐波电压含有率 if (target == 0) { wrapper.eq(CsDataSet::getName,"Ds$Pqd$Rt$HarmV$0".concat(clDev.toString())); diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDeviceRegistryServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDeviceRegistryServiceImpl.java new file mode 100644 index 0000000..11092f4 --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsDeviceRegistryServiceImpl.java @@ -0,0 +1,72 @@ +package com.njcn.csdevice.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.csdevice.mapper.CsDeviceRegistryMapper; +import com.njcn.csdevice.pojo.po.CsDeviceRegistry; +import com.njcn.csdevice.service.ICsDeviceRegistryService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @author 徐扬 + */ +@Service +public class CsDeviceRegistryServiceImpl extends ServiceImpl implements ICsDeviceRegistryService { + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean add(List list) { + return this.saveBatch(list); + } + + @Override + public boolean update(CsDeviceRegistry csDeviceRegistry) { + return this.updateById(csDeviceRegistry); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean updateBatch(List list) { + return this.updateBatchById(list); + } + + @Override + public void deleteByCurrentNdid(String currentNdid) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CsDeviceRegistry::getCurrentNdid, currentNdid); + this.remove(queryWrapper); + } + + @Override + public boolean delete(String id) { + return this.removeById(id); + } + + @Override + public boolean updateIsAccessByCurrentNdid(String currentNdid, Integer isAccess) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(CsDeviceRegistry::getCurrentNdid, currentNdid) + .set(CsDeviceRegistry::getIsAccess, isAccess); + return this.update(updateWrapper); + } + + @Override + public List queryByCurrentNdid(String currentNdid) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CsDeviceRegistry::getCurrentNdid, currentNdid); + return this.list(queryWrapper); + } + + @Override + public CsDeviceRegistry queryByCurrentNdidAndClDid(String currentNdid, Integer clDid) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CsDeviceRegistry::getCurrentNdid, currentNdid) + .eq(CsDeviceRegistry::getClDid, clDid); + return this.getOne(queryWrapper); + } + +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java index ff0dd4f..e5d2550 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java @@ -48,7 +48,6 @@ import com.njcn.csharmonic.api.CsHarmonicPlanLineFeignClient; import com.njcn.csharmonic.api.EventUserFeignClient; import com.njcn.csharmonic.param.CsEventUserQueryParam; import com.njcn.csharmonic.pojo.po.CsEventPO; -import com.njcn.cssystem.api.CsLogsFeignClient; import com.njcn.device.biz.mapper.OverLimitWlMapper; import com.njcn.oss.constant.OssPath; import com.njcn.oss.utils.FileStorageUtil; @@ -68,7 +67,10 @@ import com.njcn.web.utils.RequestUtil; import lombok.RequiredArgsConstructor; import org.apache.commons.lang.StringUtils; import org.apache.poi.ss.usermodel.Workbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -96,7 +98,8 @@ import java.util.stream.Collectors; */ @Service @RequiredArgsConstructor -public class CsEquipmentDeliveryServiceImpl extends ServiceImpl implements CsEquipmentDeliveryService { +public class CsEquipmentDeliveryServiceImpl extends ServiceImpl implements CsEquipmentDeliveryService { + private static final Logger logger = LoggerFactory.getLogger(CsEquipmentDeliveryServiceImpl.class); private final CsDevModelRelationService csDevModelRelationService; private final ICsDataSetService csDataSetService; private final ICsLedgerService csLedgerService; @@ -113,7 +116,6 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl appLineTopologyDiagramPOQueryWrapper = new QueryWrapper<>(); appLineTopologyDiagramPOQueryWrapper.clear(); appLineTopologyDiagramPOQueryWrapper.in("line_id", collect); @@ -245,6 +248,10 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl queryWrap = new QueryWrapper<>(); queryWrap.eq("device_id", id); csTouristDataPOService.getBaseMapper().delete(queryWrap); + //删除设备注册表 + if (po != null) { + csDeviceRegistryService.deleteByCurrentNdid(po.getNdid()); + } if (update) { refreshDeviceDataCache(); } @@ -314,7 +321,6 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl topList = csUserPinsService.getPinToTopList(); List targetIdList = topList.stream().filter(item -> Objects.equals(item.getTargetType(), 1)).map(CsUserPins::getTargetId).collect(Collectors.toList()); @@ -357,12 +363,46 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl lambdaQueryWrapper2 = new LambdaQueryWrapper<>(); lambdaQueryWrapper2.eq(CsEquipmentDeliveryPO::getId, csEquipmentDeliveryAuditParm.getId()); CsEquipmentDeliveryPO po = this.baseMapper.selectOne(lambdaQueryWrapper2); + CsEquipmentDeliveryPO csEquipmentDeliveryPo = new CsEquipmentDeliveryPO(); + //修改了mac地址 + if (!Objects.equals(po.getNdid(), csEquipmentDeliveryAuditParm.getNdid())) { + List updateList = new ArrayList<>(); + //1、更新设备注册表信息记录 + List list = csDeviceRegistryService.queryByCurrentNdid(po.getNdid()); + list.forEach(item->{ + CsDeviceRegistry csDeviceRegistry = new CsDeviceRegistry(); + csDeviceRegistry.setId(item.getId()); + csDeviceRegistry.setCurrentNdid(csEquipmentDeliveryAuditParm.getNdid()); + csDeviceRegistry.setOldNdid(po.getNdid()); + csDeviceRegistry.setClDid(item.getClDid()); + csDeviceRegistry.setFirstSeenTime(item.getFirstSeenTime()); + csDeviceRegistry.setIsAccess(0); + updateList.add(csDeviceRegistry); + }); + csDeviceRegistryService.updateBatch(updateList); + //2、修改redis的缓存信息 + Object data1 = redisUtil.getObjectByKey(AppRedisKey.MODEL + po.getNdid()); + Object data2 = redisUtil.getObjectByKey(AppRedisKey.LINE_POSITION + po.getNdid()); + if (data1 != null) { + redisUtil.delete(AppRedisKey.MODEL + po.getNdid()); + redisUtil.saveByKey(AppRedisKey.MODEL + csEquipmentDeliveryAuditParm.getNdid(), data1); + } + if (data2 != null) { + redisUtil.delete(AppRedisKey.LINE_POSITION + po.getNdid()); + redisUtil.saveByKey(AppRedisKey.LINE_POSITION + csEquipmentDeliveryAuditParm.getNdid(), data2); + } + //3、修改设备状态,设备应该是离线 已注册 + csEquipmentDeliveryPo.setRunStatus(1); + csEquipmentDeliveryPo.setStatus(2); + //4.清空老mac的数据模板 + stringRedisTemplate.convertAndSend("model_cache_clear", "clear"); + } List list = this.lambdaQuery().ne(CsEquipmentDeliveryPO::getId, csEquipmentDeliveryAuditParm.getId()).ne(CsEquipmentDeliveryPO::getNdid, csEquipmentDeliveryAuditParm.getNdid()).eq(CsEquipmentDeliveryPO::getName, csEquipmentDeliveryAuditParm.getName()).ne(CsEquipmentDeliveryPO::getRunStatus, 0).list(); if (!CollectionUtils.isEmpty(list)) { throw new BusinessException("设备名称不能重复"); } - CsEquipmentDeliveryPO csEquipmentDeliveryPo = new CsEquipmentDeliveryPO(); BeanUtils.copyProperties(csEquipmentDeliveryAuditParm, csEquipmentDeliveryPo); + csEquipmentDeliveryPo.setMac(csEquipmentDeliveryAuditParm.getNdid().replaceAll("(.{2})", "$1:").substring(0, 17)); result = this.updateById(csEquipmentDeliveryPo); //如果是已经接入的设备需要修改台账树中的设备名称 CsLedger csLedger = csLedgerService.findDataById(csEquipmentDeliveryAuditParm.getId()); @@ -394,6 +434,14 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl 0) { + //获取设备注册信息表数据 + List list = csDeviceRegistryService.list(); + Map> groupedMap; + if (list == null || list.isEmpty()) { + groupedMap = Collections.emptyMap(); + } else { + groupedMap = list.stream().collect(Collectors.groupingBy(CsDeviceRegistry::getCurrentNdid)); + } List recordList = this.baseMapper.getList(queryParam); //新增逻辑(针对便携式设备、监测设备):修改设备中的未注册状态(status = 1)改为5(前端定义的字典也即未接入) for (CsEquipmentDeliveryVO csEquipmentDeliveryVO : recordList) { @@ -413,6 +461,10 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl data = groupedMap.get(csEquipmentDeliveryVO.getNdid()); + if (data != null && !data.isEmpty()) { + csEquipmentDeliveryVO.setIsAccess(data.get(0).getIsAccess()); + } } if (ObjectUtil.isNotNull(queryParam.getConnectStatus())) { recordList = recordList.stream().filter(item -> queryParam.getConnectStatus() == 0 ? "未连接".equals(item.getConnectStatus()) : "已连接".equals(item.getConnectStatus())).collect(Collectors.toList()); @@ -524,21 +576,20 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl devList = getListByNodeId(param.getNodeId()); -// if (ObjectUtil.isNotEmpty(devList) && devList.size() >= node.getNodeDevNum()) { -// throw new BusinessException (AlgorithmResponseEnum.OVER_MAX_DEV_COUNT); -// } -// //自动分配进程号 -// int process = findLeastFrequentProcess(devList,node.getMaxProcessNum()); -// param.setNodeProcess(process); -// } StringUtil.containsSpecialCharacters(param.getNdid()); boolean result; LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -980,14 +1022,28 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl lambdaQueryWrapper2 = new LambdaQueryWrapper<>(); lambdaQueryWrapper2.eq(CsEquipmentDeliveryPO::getId, param.getId()); CsEquipmentDeliveryPO po = this.baseMapper.selectOne(lambdaQueryWrapper2); + if (!Objects.equals(po.getNdid(), param.getNdid())) { + List updateList = new ArrayList<>(); + //修改了mac地址 + List list = csDeviceRegistryService.queryByCurrentNdid(po.getNdid()); + list.forEach(item->{ + CsDeviceRegistry csDeviceRegistry = new CsDeviceRegistry(); + csDeviceRegistry.setId(item.getId()); + csDeviceRegistry.setCurrentNdid(param.getNdid()); + csDeviceRegistry.setOldNdid(po.getNdid()); + csDeviceRegistry.setClDid(item.getClDid()); + csDeviceRegistry.setFirstSeenTime(item.getFirstSeenTime()); + updateList.add(csDeviceRegistry); + }); + csDeviceRegistryService.updateBatch(updateList); + } List list = this.lambdaQuery().ne(CsEquipmentDeliveryPO::getId, param.getId()).ne(CsEquipmentDeliveryPO::getNdid, param.getNdid()).eq(CsEquipmentDeliveryPO::getName, param.getName()).ne(CsEquipmentDeliveryPO::getRunStatus, 0).list(); if (!CollectionUtils.isEmpty(list)) { throw new BusinessException("设备名称不能重复"); } CsEquipmentDeliveryPO csEquipmentDeliveryPo = new CsEquipmentDeliveryPO(); BeanUtils.copyProperties(param, csEquipmentDeliveryPo); - String path = this.createPath(param.getNdid()); - csEquipmentDeliveryPo.setMac(path); + csEquipmentDeliveryPo.setMac(param.getNdid().replaceAll("(.{2})", "$1:").substring(0, 17)); result = this.updateById(csEquipmentDeliveryPo); //修改台账树中的设备名称 CsLedger csLedger = csLedgerService.findDataById(param.getId()); diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLedgerServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLedgerServiceImpl.java index b6d5828..8d62c48 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLedgerServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLedgerServiceImpl.java @@ -210,9 +210,17 @@ public class CsLedgerServiceImpl extends ServiceImpl i (v1, v2) -> v1 )); } - + //获取监测点数据 + Integer targetLevel = LineBaseEnum.LINE_LEVEL.getCode(); + List lineIds = allList.stream() + .filter(item -> item != null && targetLevel.equals(item.getLevel())) + .map(CsLedgerVO::getId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + List poList = csLinePOService.listByIds(lineIds); + Map lineMap = poList.stream().collect(Collectors.toMap(CsLinePO::getLineId,Function.identity(),(v1, v2) -> v1)); List finalLineList = allList.stream() - .filter(item -> item.getLevel().equals(LineBaseEnum.LINE_LEVEL.getCode())) + .filter(item -> item.getLevel().equals(targetLevel)) .sorted(Comparator.comparing(CsLedgerVO::getSort)) .peek( item -> { @@ -231,16 +239,10 @@ public class CsLedgerServiceImpl extends ServiceImpl i item.setGovernPlanName(afterPlan.getGovernName()); } item.setType("line"); - String index = item.getId().substring(item.getId().length() - 1); - if (Objects.equals(index, "0")) { - item.setLineType(0); - } else { - item.setLineType(1); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(CsLinePO::getLineId, item.getId()).eq(CsLinePO::getStatus, 1); - CsLinePO po = csLinePOService.getOne(queryWrapper); + CsLinePO po = lineMap.get(item.getId()); item.setConType(po.getConType()); + item.setSort(po.getLineNo()); + item.setLineType(Objects.equals(po.getClDid(), 0) ? 0 : 1); } ) .collect(Collectors.toList()); diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLinePOServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLinePOServiceImpl.java index ce16eb9..bd1fa5e 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLinePOServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLinePOServiceImpl.java @@ -3,6 +3,7 @@ package com.njcn.csdevice.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -27,6 +28,7 @@ import com.njcn.csdevice.pojo.vo.PqSensitiveUserLineVO; import com.njcn.csdevice.service.CsDevModelService; import com.njcn.csdevice.service.CsLinePOService; import com.njcn.csdevice.service.ICsDataSetService; +import com.njcn.csdevice.service.ICsDeviceRegistryService; import com.njcn.csharmonic.api.CsHarmonicPlanFeignClient; import com.njcn.csharmonic.api.CsHarmonicPlanLineFeignClient; import com.njcn.csharmonic.api.PqGovernPlanFeignClient; @@ -53,6 +55,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -75,7 +78,6 @@ public class CsLinePOServiceImpl extends ServiceImpl i private final CsTerminalLogsMapper csTerminalLogsMapper; private final PqSensitiveUserFeignClient pqSensitiveUserFeignClient; private final PqGovernPlanFeignClient pqGovernPlanFeignClient; - private final FileStorageUtil fileStorageUtil; private final UserFeignClient userFeignClient; private final CsEquipmentDeliveryMapper csEquipmentDeliveryMapper; @@ -85,7 +87,7 @@ public class CsLinePOServiceImpl extends ServiceImpl i private final CsHarmonicPlanLineFeignClient csHarmonicPlanLineFeignClient; private final CsLineLatestDataFeignClient csLineLatestDataFeignClient; private final CsCommTerminalFeignClient csCommTerminal; - + private final ICsDeviceRegistryService csDeviceRegistryService; @Override public List getLineByDev(List list) { @@ -151,13 +153,23 @@ public class CsLinePOServiceImpl extends ServiceImpl i @Override @Transactional(rollbackFor = Exception.class) public CsLinePO addCldLine(CsLineParam param) { - String lineId = param.getDevMac().replace(":","") + param.getLineNo(); + String lineId = IdUtil.fastSimpleUUID(); + List data = csDeviceRegistryService.queryByCurrentNdid(param.getDevMac().replace(":", "")); + Map clDidToIdMap; + if (CollUtil.isNotEmpty(data)) { + clDidToIdMap = data.stream().collect(Collectors.toMap(CsDeviceRegistry::getClDid, CsDeviceRegistry::getId, (a, b) -> a)); + } else { + clDidToIdMap = new HashMap<>(); + } + if (!Objects.isNull(clDidToIdMap.get(param.getLineNo()))) { + lineId = clDidToIdMap.get(param.getLineNo()); + } CsLinePO po = new CsLinePO(); //1.新增监测点信息 BeanUtils.copyProperties(param,po); po.setStatus(1); po.setRunStatus(param.getRunStatus()); - po.setLineId(param.getDevMac().replace(":","") + param.getLineNo()); + po.setLineId(lineId); //模板id CsDevModelPO po1 = csDevModelService.getCldModel(); po.setDataModelId(po1.getId()); @@ -170,10 +182,8 @@ public class CsLinePOServiceImpl extends ServiceImpl i } po.setClDid(param.getLineNo()); //监测位置 - //DictData data = dicDataFeignClient.getDicDataByCode(DicDataEnum.GRID_SIDE.getCode()).getData(); po.setPosition(param.getPosition().isEmpty()?null:param.getPosition()); this.save(po); - //2.新增台账树信息 CsLedger csLedger = new CsLedger(); csLedger.setId(lineId); @@ -184,7 +194,6 @@ public class CsLinePOServiceImpl extends ServiceImpl i csLedger.setState(1); csLedger.setSort(0); csLedgerMapper.insert(csLedger); - //3.新增稳态事件指标配置 csHarmonicPlanLineFeignClient.deleteByLineIds(Collections.singletonList(lineId)); List planList = csHarmonicPlanFeignClient.getByName("通用方案").getData(); @@ -195,6 +204,16 @@ public class CsLinePOServiceImpl extends ServiceImpl i param1.setLineIds(Collections.singletonList(lineId)); csHarmonicPlanLineFeignClient.savePlanLines(param1); } + //4.新增装置注册表数据 + if (Objects.isNull(clDidToIdMap.get(param.getLineNo()))) { + CsDeviceRegistry registry = new CsDeviceRegistry(); + registry.setId(lineId); + registry.setCurrentNdid(param.getDevMac()); + registry.setOldNdid(param.getDevMac()); + registry.setClDid(param.getLineNo()); + registry.setFirstSeenTime(LocalDateTime.now()); + csDeviceRegistryService.add(Collections.singletonList(registry)); + } return po; } @@ -253,12 +272,12 @@ public class CsLinePOServiceImpl extends ServiceImpl i @Transactional(rollbackFor = Exception.class) public void deleteCldLine(String id) { CsLinePO po = this.getById(id); - this.removeById(id); csLedgerMapper.deleteById(id); //删除稳态事件指标配置 csHarmonicPlanLineFeignClient.deleteByLineIds(Collections.singletonList(id)); - + //删除装置注册表数据 + csDeviceRegistryService.delete(id); //新增台账日志 CsTerminalLogs csTerminalLogs = new CsTerminalLogs(); csTerminalLogs.setDeviceId(po.getDeviceId()); diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/IcdServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/IcdServiceImpl.java index 51aad1d..23dc820 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/IcdServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/IcdServiceImpl.java @@ -618,6 +618,8 @@ class IcdServiceImpl implements IcdService { } }); } + list.sort(Comparator.comparingInt((CsLinePO cs) -> cs.getLineNo() == null ? Integer.MAX_VALUE : cs.getLineNo()) + .thenComparingInt(cs -> cs.getClDid() == null ? Integer.MAX_VALUE : cs.getClDid())); vo.setLineInfoList(list); } @@ -657,17 +659,17 @@ class IcdServiceImpl implements IcdService { // 设置线路信息 List line = csLinePOService.listByIds(Collections.singletonList(id)); if (CollectionUtil.isNotEmpty(line)) { - line.forEach(item->{ - if (Objects.isNull(item.getPt2Ratio())) { + for (CsLinePO item : line) { + if (item.getPt2Ratio() == null) { item.setPt2Ratio(1.0); } - if (Objects.isNull(item.getCt2Ratio())) { + if (item.getCt2Ratio() == null) { item.setCt2Ratio(1.0); } - if (Objects.isNull(item.getLineNo())) { - item.setLineNo(item.getClDid() == 0 ? null:item.getClDid()); + if (item.getLineNo() == null && item.getClDid() != null && item.getClDid() != 0) { + item.setLineNo(item.getClDid()); } - }); + } } vo.setLineInfoList(line); } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/PortableOfflLogServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/PortableOfflLogServiceImpl.java index 0d93963..d0a082b 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/PortableOfflLogServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/PortableOfflLogServiceImpl.java @@ -195,7 +195,8 @@ public class PortableOfflLogServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(CsLinePO::getLineId,lineId).eq(CsLinePO::getStatus,1); CsLinePO po = csLinePOService.getOne(queryWrapper); - String cdid = uploadDataParam.getLineId().substring(uploadDataParam.getLineId().length() - 1); + //String cdid = uploadDataParam.getLineId().substring(uploadDataParam.getLineId().length() - 1); + Integer cdid = po.getClDid(); //第一步解析redcord.bin文件获取监测点序号做校验 List record = uploadDataParam.getFiles().stream().filter( temp -> temp.getOriginalFilename().contains("record.bin")) @@ -213,7 +214,7 @@ public class PortableOfflLogServiceImpl extends ServiceImpl pqdData = (List) response.getObj(); pqdData.forEach(temp->{ - temp.setClDid(cdid); + temp.setClDid(String.valueOf(cdid)); temp.setIsAbnormal(0); temp.setProcess(data1.get(0).getProcess()+""); temp.setLineId(uploadDataParam.getLineId()); diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CsAlarmServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CsAlarmServiceImpl.java index b63aeff..4e0ad73 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CsAlarmServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CsAlarmServiceImpl.java @@ -141,6 +141,9 @@ public class CsAlarmServiceImpl extends ServiceImpl impl List list2 = new ArrayList<>(); //根据resultList 来查询在线率和完整是否有true的,如果有就设置alarmVO的属性 resultList.forEach(item->{ + if (item == null) { + return; + } list1.add(item.getOnlineRate()); list2.addAll(item.getIntegrity().getMonitorPoints()); // 判断 onlineRate 是否有异常 diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CsEventPOServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CsEventPOServiceImpl.java index b45dca9..a651d8d 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CsEventPOServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CsEventPOServiceImpl.java @@ -448,7 +448,7 @@ public class CsEventPOServiceImpl extends ServiceImpl getRealTimeData(DataParam param) { @@ -926,9 +927,9 @@ public class DataServiceImpl implements IDataService { children2.sort(Comparator.comparingInt(AppLineDetailVo.targetDetail::getSort)); children2.forEach(item2->{ if (Objects.isNull(item2.getData())) { - item2.setData(3.15159); + item2.setData(NULL_DATA); } - if (!Objects.equals(item2.getData(),3.14159)) { + if (!Objects.equals(item2.getData(),NULL_DATA)) { item2.setData(BigDecimal.valueOf(item2.getData()).setScale(2, RoundingMode.HALF_UP).doubleValue()); } }); @@ -1106,18 +1107,18 @@ public class DataServiceImpl implements IDataService { EachModuleVO.DataVo vo1 = new EachModuleVO.DataVo(); vo1.setTime(LocalDateTime.ofInstant(item.getTime().minus(8, ChronoUnit.HOURS), ZoneId.systemDefault())); vo1.setPhasicType(item.getPhaseType()); - vo1.setData(Objects.isNull(item.getValue()) ? 3.14159 : Double.parseDouble(df.format(item.getValue()))); + vo1.setData(Objects.isNull(item.getValue()) ? NULL_DATA : Double.parseDouble(df.format(item.getValue()))); EachModuleVO.DataVo vo2 = new EachModuleVO.DataVo(); vo2.setTime(LocalDateTime.ofInstant(item.getTime().minus(8, ChronoUnit.HOURS), ZoneId.systemDefault())); vo2.setPhasicType(item.getPhaseType()); - vo2.setData(Objects.isNull(item.getAvgValue()) ? 3.14159 : Double.parseDouble(df.format(item.getAvgValue()))); + vo2.setData(Objects.isNull(item.getAvgValue()) ? NULL_DATA : Double.parseDouble(df.format(item.getAvgValue()))); if (Objects.equals(item.getPhaseType(),"T")) { EachModuleVO.DataVo vo3 = new EachModuleVO.DataVo(); vo3.setTime(LocalDateTime.ofInstant(item.getTime().minus(8, ChronoUnit.HOURS), ZoneId.systemDefault())); vo3.setPhasicType(item.getPhaseType()); - vo3.setData(Objects.isNull(item.getMinValue()) ? 3.14159 : Double.parseDouble(df.format(item.getMinValue()))); + vo3.setData(Objects.isNull(item.getMinValue()) ? NULL_DATA : Double.parseDouble(df.format(item.getMinValue()))); list4.add(vo3); } list2.add(vo1); @@ -1819,36 +1820,36 @@ public class DataServiceImpl implements IDataService { if (Objects.equals("Primary",dataLevel1)) { if (Objects.equals("Primary",dataLevel2)) { if (HarmonicConstant.POWER_LIST.contains(item.getName())) { - re = Objects.isNull(item.getData()) ? 3.14159 : Double.parseDouble(df.format(item.getData() / 1000)); + re = Objects.isNull(item.getData()) ? NULL_DATA : Double.parseDouble(df.format(item.getData() / 1000)); item.setData(re); unit = "k" + item.getUnit(); } else { - item.setData(Objects.isNull(item.getData()) ? 3.14159 : Double.parseDouble(df.format(item.getData()))); + item.setData(Objects.isNull(item.getData()) ? NULL_DATA : Double.parseDouble(df.format(item.getData()))); unit = item.getUnit(); } } else { if(Objects.nonNull(item.getPrimaryFormula())){ switch (item.getPrimaryFormula()) { case "*PT": - re = Objects.isNull(item.getData()) ? 3.14159 : item.getData() * pt / 1000; + re = Objects.isNull(item.getData()) ? NULL_DATA : item.getData() * pt / 1000; unit = "k" + item.getUnit(); break; case "*CT": - re = Objects.isNull(item.getData()) ? 3.14159 : item.getData() * ct; + re = Objects.isNull(item.getData()) ? NULL_DATA : item.getData() * ct; unit = item.getUnit(); break; case "*PT*CT": - re = Objects.isNull(item.getData()) ? 3.14159 : item.getData() * pt * ct / 1000; + re = Objects.isNull(item.getData()) ? NULL_DATA : item.getData() * pt * ct / 1000; unit = "k" + item.getUnit(); break; default: - re = Objects.isNull(item.getData()) ? 3.14159 : item.getData(); + re = Objects.isNull(item.getData()) ? NULL_DATA : item.getData(); unit = item.getUnit(); break; } - item.setData(Objects.equals(re,3.14159) ? 3.14159 : Double.parseDouble(df.format(re))); + item.setData(Objects.equals(re,NULL_DATA) ? NULL_DATA : Double.parseDouble(df.format(re))); }else { - item.setData(Objects.isNull(item.getData()) ? 3.14159 : Double.parseDouble(df.format(item.getData()))); + item.setData(Objects.isNull(item.getData()) ? NULL_DATA : Double.parseDouble(df.format(item.getData()))); } } } else { @@ -1856,19 +1857,19 @@ public class DataServiceImpl implements IDataService { if(Objects.nonNull(item.getPrimaryFormula())) { switch (item.getPrimaryFormula()) { case "*PT": - re = Objects.isNull(item.getData()) ? 3.14159 : item.getData() / pt; + re = Objects.isNull(item.getData()) ? NULL_DATA : item.getData() / pt; break; case "*CT": - re = Objects.isNull(item.getData()) ? 3.14159 : item.getData() / ct; + re = Objects.isNull(item.getData()) ? NULL_DATA : item.getData() / ct; break; case "*PT*CT": - re = Objects.isNull(item.getData()) ? 3.14159 : item.getData() / pt / ct * 1000; + re = Objects.isNull(item.getData()) ? NULL_DATA : item.getData() / pt / ct * 1000; break; default: - re = Objects.isNull(item.getData()) ? 3.14159 : item.getData(); + re = Objects.isNull(item.getData()) ? NULL_DATA : item.getData(); break; } - item.setData(Objects.equals(re,3.14159) ? 3.14159 : Double.parseDouble(df.format(re))); + item.setData(Objects.equals(re,NULL_DATA) ? NULL_DATA : Double.parseDouble(df.format(re))); }else { if (Objects.nonNull(item.getData())) { re = item.getData(); @@ -1876,7 +1877,7 @@ public class DataServiceImpl implements IDataService { } } } else { - item.setData(Objects.isNull(item.getData()) ? 3.14159 : Double.parseDouble(df.format(item.getData()))); + item.setData(Objects.isNull(item.getData()) ? NULL_DATA : Double.parseDouble(df.format(item.getData()))); } } item.setUnit(unit); @@ -2040,7 +2041,7 @@ public class DataServiceImpl implements IDataService { if (Objects.isNull(item2.getData())) { item2.setData(3.15159); } - if (!Objects.equals(item2.getData(),3.14159)) { + if (!Objects.equals(item2.getData(),NULL_DATA)) { item2.setData(BigDecimal.valueOf(item2.getData()).setScale(2, RoundingMode.HALF_UP).doubleValue()); } }); diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/OfflineDataUploadServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/OfflineDataUploadServiceImpl.java index ef1a87f..783888b 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/OfflineDataUploadServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/OfflineDataUploadServiceImpl.java @@ -15,9 +15,11 @@ import com.njcn.access.utils.ChannelObjectUtil; import com.njcn.access.utils.MqttUtil; import com.njcn.common.config.GeneralInfo; import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.csdevice.api.CsLineFeignClient; import com.njcn.csdevice.api.DeviceFtpFeignClient; import com.njcn.csdevice.api.EquipmentFeignClient; import com.njcn.csdevice.api.PortableOffLogFeignClient; +import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO; import com.njcn.csdevice.pojo.vo.CsEquipmentDeliveryVO; import com.njcn.csharmonic.enums.CsHarmonicResponseEnum; import com.njcn.csharmonic.offline.constant.OfflineConstant; @@ -82,7 +84,7 @@ public class OfflineDataUploadServiceImpl implements OfflineDataUploadService { private final GeneralInfo generalInfo; private final PortableOffLogFeignClient portableOffLogFeignClient; private final EquipmentFeignClient equipmentFeignClient; - + private final CsLineFeignClient csLineFeignClient; @Override public byte[] uploadAnalysis(List files,String type) throws Exception{ @@ -492,7 +494,8 @@ public class OfflineDataUploadServiceImpl implements OfflineDataUploadService { */ public void askProjectInfo(String lineId, String nDid, Integer type, String path, String topic) { if (StringUtils.isNotBlank(lineId)) { - nDid = lineId.substring(0, lineId.length() - 1); + CsEquipmentDeliveryPO po = equipmentFeignClient.getDevByLineId(lineId).getData(); + nDid = po.getNdid(); } String version = csTopicFeignClient.find(nDid).getData(); ReqAndResDto.Req reqAndResParam = createRequestParameters(lineId, type, path); diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/RealDataServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/RealDataServiceImpl.java index dcfdcab..1b79e63 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/RealDataServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/RealDataServiceImpl.java @@ -40,11 +40,10 @@ public class RealDataServiceImpl implements RealDataService { private final MqttUtil mqttUtil; private final DictTreeFeignClient dictTreeFeignClient; -// @Override + @Override public boolean getBaseRealData(String lineId) { - boolean result = true; + boolean result = false; try { - String nDid = lineId.substring(0, lineId.length() - 1); //判断设备类型 治理无线设备需要判断mqtt、云前置设备直接判断设备运行状态 CsEquipmentDeliveryPO dev = equipmentFeignClient.getDevByLineId(lineId).getData(); String devModelCode = dictTreeFeignClient.queryById(dev.getDevType()).getData().getCode(); @@ -53,13 +52,12 @@ public class RealDataServiceImpl implements RealDataService { throw new BusinessException("装置离线"); } } else { - String clientName = "NJCN-" + nDid.substring(nDid.length() - 6); + String clientName = "NJCN-" + dev.getNdid().substring(dev.getNdid().length() - 6); boolean mqttClient = mqttUtil.judgeClientOnline(clientName); if (!mqttClient) { throw new BusinessException("装置离线"); } } - Integer clDid = Integer.parseInt(lineId.substring(lineId.length() - 1)); //获取装置所用模板 CsLinePO po = csLineFeignClient.getById(lineId).getData(); String modelId = po.getDataModelId(); @@ -69,8 +67,8 @@ public class RealDataServiceImpl implements RealDataService { updateRedisUserSet("rtDataUserId:" + lineId, RequestUtil.getUserIndex(), 600L); updateRedisUserSet("cldRtDataOverTime:" + lineId, RequestUtil.getUserIndex(), 5L); } else { - CsDataSet csDataSet = dataSetFeignClient.getBaseDataSet(modelId,clDid).getData(); - askDeviceDataFeignClient.askRealData(nDid,csDataSet.getIdx(),clDid); + CsDataSet csDataSet = dataSetFeignClient.getBaseDataSet(modelId,po.getClDid()).getData(); + askDeviceDataFeignClient.askRealData(dev.getNdid(),csDataSet.getIdx(),po.getClDid()); redisUtil.saveByKeyWithExpire("rtDataUserId:"+lineId, RequestUtil.getUserIndex(),600L); } //等待装置响应,获取询问结果 @@ -80,15 +78,13 @@ public class RealDataServiceImpl implements RealDataService { if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),devModelCode) && Objects.equals(dev.getDevAccessMethod(),"CLD")) { object = redisUtil.getObjectByKey("devResponse:" + lineId); } else { - object = redisUtil.getObjectByKey("devResponse"); + object = redisUtil.getObjectByKey("devResponse:" + dev.getNdid()); } if (Objects.isNull(object)) { - result = false; //throw new BusinessException("数据获取失败,设备无响应"); } else { int code = (Integer) object; if (code != 200) { - result = false; //throw new BusinessException("数据获取失败,设备无响应"); } else { result = true; @@ -106,7 +102,6 @@ public class RealDataServiceImpl implements RealDataService { public boolean getHarmRealData(String lineId, Integer target) { boolean result = true; try { - String nDid = lineId.substring(0, lineId.length() - 1); //判断设备类型 治理无线设备需要判断mqtt、云前置设备直接判断设备运行状态 CsEquipmentDeliveryPO dev = equipmentFeignClient.getDevByLineId(lineId).getData(); String devModelCode = dictTreeFeignClient.queryById(dev.getDevType()).getData().getCode(); @@ -115,13 +110,12 @@ public class RealDataServiceImpl implements RealDataService { throw new BusinessException("装置离线"); } } else { - String clientName = "NJCN-" + nDid.substring(nDid.length() - 6); + String clientName = "NJCN-" + dev.getNdid().substring(dev.getNdid().length() - 6); boolean mqttClient = mqttUtil.judgeClientOnline(clientName); if (!mqttClient) { throw new BusinessException("装置离线"); } } - Integer clDid = Integer.parseInt(lineId.substring(lineId.length() - 1)); //获取装置所用模板 CsLinePO po = csLineFeignClient.getById(lineId).getData(); String modelId = po.getDataModelId(); @@ -130,8 +124,8 @@ public class RealDataServiceImpl implements RealDataService { CsDataSet csDataSet = dataSetFeignClient.getHarmonicDataSet(modelId,1,target).getData(); askDeviceDataFeignClient.askCldRealData(dev.getId(),lineId,dev.getNodeId(),csDataSet.getIdx()); } else { - CsDataSet csDataSet = dataSetFeignClient.getHarmonicDataSet(modelId,clDid,target).getData(); - askDeviceDataFeignClient.askRealData(nDid,csDataSet.getIdx(),clDid); + CsDataSet csDataSet = dataSetFeignClient.getHarmonicDataSet(modelId,po.getClDid(),target).getData(); + askDeviceDataFeignClient.askRealData(dev.getNdid(),csDataSet.getIdx(),po.getClDid()); } //等待装置响应,获取询问结果 Thread.sleep(2000); @@ -139,7 +133,7 @@ public class RealDataServiceImpl implements RealDataService { if (Objects.equals(DicDataEnum.DEV_CLD.getCode(),devModelCode) && Objects.equals(dev.getDevAccessMethod(),"CLD")) { object = redisUtil.getObjectByKey("devResponse:" + lineId); } else { - object = redisUtil.getObjectByKey("devResponse"); + object = redisUtil.getObjectByKey("devResponse:" + dev.getNdid()); } if (Objects.isNull(object)) { result = false;