diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/WlRecordParam.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/WlRecordParam.java new file mode 100644 index 0000000..ab944b7 --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/WlRecordParam.java @@ -0,0 +1,100 @@ +package com.njcn.csdevice.pojo.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2024/4/1 19:18 + */ +@Data +public class WlRecordParam { + + @ApiModelProperty("方案、测试项名称") + @NotBlank(message = "名称不可为空") + private String itemName; + + @ApiModelProperty("描述") + private String describe; + + @Data + @EqualsAndHashCode(callSuper = true) + public static class Record extends WlRecordParam { + + @ApiModelProperty("工程名称") + private String gcName; + + @ApiModelProperty("统计间隔") + @NotNull(message = "统计间隔不可为空") + private Integer statisticalInterval; + + @ApiModelProperty("电压等级") + @NotNull(message = "电压等级不可为空") + private String voltageLevel; + + @ApiModelProperty("电压接线方式(星型、角型、V型)") + @NotNull(message = "电压接线方式不可为空") + private String volConType; + + @ApiModelProperty("电流接线方式(正常、合成IB、合成IC)") + @NotNull(message = "电流接线方式不可为空") + private String curConSel; + + @ApiModelProperty("基准短路容量(MVA)") + @NotNull(message = "基准短路容量不可为空") + private Float capacitySscb; + + @ApiModelProperty("最小短路容量(MVA)") + @NotNull(message = "最小短路容量不可为空") + private Float capacitySscmin; + + @ApiModelProperty("供电设备容量(MVA)") + @NotNull(message = "供电设备容量不可为空") + private Float capacitySt; + + @ApiModelProperty("用户协议容量(MVA)") + @NotNull(message = "用户协议容量不可为空") + private Float capacitySi; + + @ApiModelProperty("PT变比") + @NotNull(message = "PT变比不可为空") + private Integer pt; + + @ApiModelProperty("CT变比") + @NotNull(message = "CT变比不可为空") + private Integer ct; + + @ApiModelProperty("测试项监测位置") + @NotNull(message = "测试项监测位置不可为空") + private String location; + + @ApiModelProperty("数据类型(0:方案 1:测试项)") + @NotNull(message = "数据类型不可为空") + private Integer type; + + @ApiModelProperty("状态(0:删除 1:正常)") + @NotNull(message = "状态不可为空") + private Integer state; + + @ApiModelProperty("测试项集合ID") + private List list; + } + + @Data + @EqualsAndHashCode(callSuper = true) + public static class UpdateRecord extends Record { + + @ApiModelProperty("id") + @NotNull(message = "id") + private String id; + } + +} diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsLinePO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsLinePO.java index bcff67c..dba8c62 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsLinePO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsLinePO.java @@ -81,4 +81,6 @@ public class CsLinePO extends BaseEntity { @TableField(value = "clDid") private Integer clDid; + @TableField(value = "device_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/WlRecord.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/WlRecord.java new file mode 100644 index 0000000..99bf492 --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/WlRecord.java @@ -0,0 +1,156 @@ +package com.njcn.csdevice.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.db.bo.BaseEntity; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +/** + *

+ * 方案、测试项表 + *

+ * + * @author xuyang + * @since 2024-04-01 + */ +@Getter +@Setter +@TableName("wl_record") +public class WlRecord extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** + * uuid + */ + private String id; + + /** + * 方案id + */ + private String pId; + + /** + * 方案、测试项名称 + */ + private String itemName; + + /** + * 工程名称 + */ + private String gcName; + + /** + * 装置id + */ + private String devId; + + /** + * 监测点id + */ + private String lineId; + + /** + * 统计间隔 + */ + private Integer statisticalInterval; + + /** + * PT变比 + */ + private Integer pt; + + /** + * CT变比 + */ + private Integer ct; + + /** + * 电压等级 + */ + private String voltageLevel; + + /** + * 基准短路容量(MVA) + */ + private Float capacitySscb; + + /** + * 最小短路容量(MVA) + */ + private Float capacitySscmin; + + /** + * 供电设备容量(MVA) + */ + private Float capacitySt; + + /** + * 用户协议容量(MVA) + */ + private Float capacitySi; + + /** + * 电压接线方式(星型、角型、V型) + */ + private String volConType; + + /** + * 电流接线方式(正常、合成IB、合成IC) + */ + private String curConSel; + + /** + * 测试起始时间 + */ + private LocalDateTime startTime; + + /** + * 测试结束时间 + */ + private LocalDateTime endTime; + + /** + * 测试项监测位置 + */ + private String location; + + /** + * 数据类型(0:方案 1:测试项) + */ + private Integer type; + + /** + * 状态(0:删除 1:正常) + */ + private Integer state; + + /** + * 描述 + */ + private String describe; + + /** + * 创建用户 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新用户 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/RecordTreeVo.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/RecordTreeVo.java new file mode 100644 index 0000000..c35a2e6 --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/RecordTreeVo.java @@ -0,0 +1,52 @@ +package com.njcn.csdevice.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * 类的介绍:方案树、测试项树 + * + * @author xuyang + * @version 1.0.0 + * @createTime 2024/4/2 10:23 + */ +@Data +public class RecordTreeVo { + + @ApiModelProperty("方案id") + private String schemeId; + + @ApiModelProperty("方案名称") + private String name; + + @ApiModelProperty("下层数据") + private List children; + + @Data + @EqualsAndHashCode(callSuper = true) + public static class Children extends RecordTreeVo { + + @ApiModelProperty("id") + private String id; + + @ApiModelProperty("名称") + private String recordName; + + @ApiModelProperty("设备MAC") + private String devMac; + + @ApiModelProperty("监测点名称") + private String lineName; + + @ApiModelProperty("测试项开始时间") + private LocalDateTime startTime; + + @ApiModelProperty("测试项结束时间") + private LocalDateTime endTime; + } + +} diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/RecordVo.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/RecordVo.java new file mode 100644 index 0000000..833e0ce --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/RecordVo.java @@ -0,0 +1,74 @@ +package com.njcn.csdevice.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 类的介绍: 测试项详情表 + * + * @author xuyang + * @version 1.0.0 + * @createTime 2024/4/1 20:10 + */ +@Data +public class RecordVo { + + @ApiModelProperty("测试项id") + private String id; + + @ApiModelProperty("测试项名称") + private String recordName; + + @ApiModelProperty("设备名称") + private String devName; + + @ApiModelProperty("设备MAC") + private String devMac; + + @ApiModelProperty("监测点名称") + private String lineName; + + @ApiModelProperty("数据起始时间") + private LocalDateTime startTime; + + @ApiModelProperty("数据结束时间") + private LocalDateTime endTime; + + @ApiModelProperty("测试位置") + private String location; + + @ApiModelProperty("数据类型") + private Integer type; + + @ApiModelProperty("统计间隔") + private Integer statisticalInterval; + + @ApiModelProperty("PT变比") + private Integer pt; + + @ApiModelProperty("CT变比") + private Integer ct; + + @ApiModelProperty("CT变比") + private String voltageLevel; + + @ApiModelProperty("基准短路容量") + private Float capacitySscb; + + @ApiModelProperty("最小短路容量") + private Float capacitySscmin; + + @ApiModelProperty("供电设备容量") + private Float capacitySt; + + @ApiModelProperty("用户协议容量") + private Float capacitySi; + + @ApiModelProperty("电压接线方式") + private String volConType; + + @ApiModelProperty("电流接线方式") + private String curConSel; +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/scheme/WlRecordController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/scheme/WlRecordController.java new file mode 100644 index 0000000..322ea08 --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/scheme/WlRecordController.java @@ -0,0 +1,171 @@ +package com.njcn.csdevice.controller.scheme; + + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.constant.OperateType; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.common.utils.LogUtil; +import com.njcn.csdevice.pojo.param.WlRecordParam; +import com.njcn.csdevice.pojo.po.WlRecord; +import com.njcn.csdevice.pojo.vo.RecordTreeVo; +import com.njcn.csdevice.pojo.vo.RecordVo; +import com.njcn.csdevice.service.IWlRecordService; +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; + +/** + *

+ * 方案、测试项表 前端控制器 + *

+ * + * @author xuyang + * @since 2024-04-01 + */ +@Validated +@Slf4j +@RestController +@RequestMapping("/wlRecord") +@Api(tags = "方案测试项管理") +@AllArgsConstructor +public class WlRecordController extends BaseController { + + private final IWlRecordService wlRecordService; + + /** + * 新增方案、测试项 + */ + @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD) + @PostMapping("/add") + @ApiOperation("新增方案或测试项") + @ApiImplicitParam(name = "list", value = "测试项集合", required = true) + public HttpResult add(@RequestBody @Validated List list) { + String methodDescribe = getMethodDescribe("add"); + try { + LogUtil.njcnDebug(log, "{},新增的测试项集合为:{}", methodDescribe, list); + wlRecordService.add(list); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } catch (Exception e) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe); + } + } + + /** + * 修改方案 + */ + @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD) + @PostMapping("/update") + @ApiOperation("修改方案") + @ApiImplicitParam(name = "list", value = "测试项集合", required = true) + public HttpResult update(@RequestBody @Validated List list) { + String methodDescribe = getMethodDescribe("update"); + try { + LogUtil.njcnDebug(log, "{},修改的测试项集合为:{}", methodDescribe, list); + wlRecordService.update(list); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } catch (Exception e) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, false, methodDescribe); + } + } + + /** + * 根据方案查询测试项信息 + */ + @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD) + @PostMapping("/getRecordById") + @ApiOperation("通过方案id查询所属测试项") + @ApiImplicitParam(name = "id", value = "用户id", required = true) + public HttpResult> getRecordById(@RequestParam @Validated String id) { + String methodDescribe = getMethodDescribe("getRecordById"); + try { + LogUtil.njcnDebug(log, "{},测试项id为:{}", methodDescribe, id); + List result = wlRecordService.getRecordById(id); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } catch (Exception e) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); + } + } + + /** + * 查询所有测试项信息 + */ + @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD) + @PostMapping("/listRecord") + @ApiOperation("查询所有测试项信息") + public HttpResult> listRecord() { + String methodDescribe = getMethodDescribe("listRecord"); + try { + LogUtil.njcnDebug(log, "{}", methodDescribe); + List result = wlRecordService.getRecordTree(); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } catch (Exception e) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); + } + } + + /** + * 两层方案树 + */ + @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD) + @PostMapping("/schemeTree") + @ApiOperation("两层方案树") + public HttpResult> getSchemeTree() { + String methodDescribe = getMethodDescribe("getSchemeTree"); + try { + LogUtil.njcnDebug(log, "{}", methodDescribe); + List result = wlRecordService.getSchemeTree(); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } catch (Exception e) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); + } + } + + /** + * 删除方案 + * @param id 方案、测试项id + */ + @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.DELETE) + @DeleteMapping("/delete") + @ApiOperation("删除方案") + @ApiImplicitParam(name = "id", value = "方案id", required = true) + public HttpResult delete(@RequestParam @Validated String id) { + String methodDescribe = getMethodDescribe("delete"); + try { + LogUtil.njcnDebug(log, "{},方案id为:{}", methodDescribe, id); + wlRecordService.delete(id); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + } catch (Exception e) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); + } + } + + /** + * 根据测试项id查询测试项详细信息 + */ + @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.DELETE) + @DeleteMapping("/detailById") + @ApiOperation("根据id获取测试项详情") + @ApiImplicitParam(name = "id", value = "测试项id", required = true) + public HttpResult getDetailById(@RequestParam @Validated String id) { + String methodDescribe = getMethodDescribe("getRecordById"); + try { + LogUtil.njcnDebug(log, "{},测试项id为:{}", methodDescribe, id); + WlRecord wlRecord = wlRecordService.getDataById(id); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, wlRecord, methodDescribe); + } catch (Exception e) { + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); + } + } + +} + diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/WlRecordMapper.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/WlRecordMapper.java new file mode 100644 index 0000000..ec4db6d --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/WlRecordMapper.java @@ -0,0 +1,40 @@ +package com.njcn.csdevice.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.csdevice.pojo.po.WlRecord; +import com.njcn.csdevice.pojo.vo.RecordVo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 方案、测试项表 Mapper 接口 + *

+ * + * @author xuyang + * @since 2024-04-01 + */ +public interface WlRecordMapper extends BaseMapper { + + /** + * 根据方案id查询所属的测试项 + * @param id + * @return + */ + List listRecord(@Param("id") String id); + + /** + * 查询所有的测试项 + * @return + */ + List getAllRecord(); + + /** + * 查询所有的方案和测试项 + * @return + */ + List getAll(); + + +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsLinePOMapper.xml b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsLinePOMapper.xml index 923a6d6..c8f49b2 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsLinePOMapper.xml +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsLinePOMapper.xml @@ -24,16 +24,13 @@ \ No newline at end of file diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/WlRecordMapper.xml b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/WlRecordMapper.xml new file mode 100644 index 0000000..f71614a --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/WlRecordMapper.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/IWlRecordService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/IWlRecordService.java new file mode 100644 index 0000000..67cf49c --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/IWlRecordService.java @@ -0,0 +1,70 @@ +package com.njcn.csdevice.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.csdevice.pojo.param.WlRecordParam; +import com.njcn.csdevice.pojo.po.WlRecord; +import com.njcn.csdevice.pojo.vo.RecordTreeVo; +import com.njcn.csdevice.pojo.vo.RecordVo; + +import java.util.List; + +/** + *

+ * 方案、测试项表 服务类 + *

+ * + * @author xuyang + * @since 2024-04-01 + */ +public interface IWlRecordService extends IService { + + /** + * 批量新增方案或测试项 + * @param list + * @return + */ + void add(List list); + + /** + * 批量修改方案信息 + * @param list + * @return + */ + void update(List list); + + /** + * 根据方案查询测试项信息 + * @param id + * @return + */ + List getRecordById(String id); + + /** + * 查询所有测试项信息,用于方案添加测试项 + * @param + * @return + */ + List getRecordTree(); + + /** + * 获取方案树 + * @param + * @return + */ + List getSchemeTree(); + + /** + * 删除方案 + * @param + * @return + */ + void delete(String id); + + /** + * 根据测试项id查询测试项详情 + * @return + */ + WlRecord getDataById(String id); + +} 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 d2125c0..c83b080 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 @@ -10,6 +10,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.client.naming.utils.CollectionUtils; +import com.alibaba.nacos.shaded.com.google.gson.Gson; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -31,6 +32,7 @@ import com.njcn.csdevice.utils.ExcelStyleUtil; import com.njcn.db.constant.DbConstant; import com.njcn.oss.constant.OssPath; import com.njcn.oss.utils.FileStorageUtil; +import com.njcn.redis.pojo.enums.AppRedisKey; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DictTreeFeignClient; import com.njcn.system.enums.DicDataEnum; @@ -96,7 +98,7 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl + * 方案、测试项表 服务实现类 + *

+ * + * @author xuyang + * @since 2024-04-01 + */ +@Service +public class WlRecordServiceImpl extends ServiceImpl implements IWlRecordService { + + @Override + @Transactional(rollbackFor = Exception.class) + public void add(List list) { + List insertList = new ArrayList<>(); + list.forEach(item->{ + String id = IdUtil.simpleUUID(); + WlRecord wlRecord = new WlRecord(); + BeanUtils.copyProperties(item, wlRecord); + wlRecord.setId(id); + insertList.add(wlRecord); + if (CollUtil.isNotEmpty(item.getList())){ + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.set(WlRecord::getPId, id) + .in(WlRecord::getId,item.getList()); + this.update(lambdaUpdateWrapper); + } + }); + this.saveBatch(insertList); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(List list) { + List updateList = new ArrayList<>(); + list.forEach(item->{ + WlRecord wlRecord = new WlRecord(); + BeanUtils.copyProperties(item, wlRecord); + updateList.add(wlRecord); + if (CollUtil.isNotEmpty(item.getList())){ + //先将方案绑定的测试项去除,然后再根据传递的数据绑定 + LambdaUpdateWrapper lambdaUpdateWrapper1 = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper1.set(WlRecord::getPId, null) + .in(WlRecord::getId,item.getList()); + this.update(lambdaUpdateWrapper1); + LambdaUpdateWrapper lambdaUpdateWrapper2 = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper2.set(WlRecord::getPId, item.getId()) + .in(WlRecord::getId,item.getList()); + this.update(lambdaUpdateWrapper2); + } + }); + this.updateBatchById(updateList); + } + + @Override + public List getRecordById(String id) { + return this.baseMapper.listRecord(id); + } + + @Override + public List getRecordTree() { + List result = new ArrayList<>(); + Optional.ofNullable(this.baseMapper.getAllRecord()) + .ifPresent(list -> list.stream() + .collect(Collectors.groupingBy(RecordVo::getDevName)) + .forEach((devName, records) -> { + List childrenList = records.stream() + .map(this::mapToChildren) + .collect(Collectors.toList()); + RecordTreeVo vo = new RecordTreeVo(); + vo.setName(devName); + vo.setChildren(childrenList); + result.add(vo); + })); + return result; + } + + @Override + public List getSchemeTree() { + List result = new ArrayList<>(); + List list = this.baseMapper.getAll(); + // 过滤出方案数据和测试项数据 + List schemes = list.stream().filter(item -> item.getType() == 0).collect(Collectors.toList()); + List testItems = list.stream().filter(item -> item.getType() == 1).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(schemes)){ + // 遍历方案数据 + for (RecordVo scheme : schemes) { + RecordTreeVo vo = new RecordTreeVo(); + vo.setSchemeId(scheme.getId()); + vo.setName(scheme.getRecordName()); + if (CollUtil.isNotEmpty(testItems)){ + // 将测试项数据映射为子节点列表 + List childrenList = testItems.stream() + .map(item -> { + RecordTreeVo.Children children = new RecordTreeVo.Children(); + children.setId(item.getId()); + String name = item.getDevName() + "-" + item.getLocation() + "(" + item.getStartTime() + "~" + item.getEndTime() + ")"; + children.setRecordName(name); + return children; + }) + .collect(Collectors.toList()); + vo.setChildren(childrenList); + result.add(vo); + } + } + } + return result; + } + + @Override + public void delete(String id) { + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.set(WlRecord::getState,0) + .eq(WlRecord::getId, id) + .eq(WlRecord::getType, 0); + this.update(lambdaUpdateWrapper); + } + + @Override + public WlRecord getDataById(String id) { + return lambdaQuery().eq(WlRecord::getId, id) + .eq(WlRecord::getType,1) + .eq(WlRecord::getState, 1) + .one(); + } + + private RecordTreeVo.Children mapToChildren(RecordVo record) { + RecordTreeVo.Children children = new RecordTreeVo.Children(); + BeanUtils.copyProperties(record, children); + return children; + } + +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/AbnormalDataParam.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/AbnormalDataParam.java new file mode 100644 index 0000000..3a2fb58 --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/AbnormalDataParam.java @@ -0,0 +1,28 @@ +package com.njcn.csharmonic.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2024/4/3 14:06 + */ +@Data +public class AbnormalDataParam { + + @ApiModelProperty("指标名称") + private String targetName; + + @ApiModelProperty("起始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + + @ApiModelProperty("模糊搜索内容") + private String content; + +} diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/AnomalousDataVo.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/AnomalousDataVo.java new file mode 100644 index 0000000..80cd283 --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/AnomalousDataVo.java @@ -0,0 +1,50 @@ +package com.njcn.csharmonic.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 类的介绍:数据清洗功能展示类 + * + * @author xuyang + * @version 1.0.0 + * @createTime 2024/4/3 14:15 + */ +@Data +public class AnomalousDataVo { + + @ApiModelProperty("设备名称") + private String devName; + + @ApiModelProperty("方案名称") + private String planName; + + @ApiModelProperty("测试项名称") + private String itemName; + + @ApiModelProperty("设备MAC") + private String devMac; + + @ApiModelProperty("监测点名称") + private String lineName; + + @ApiModelProperty("指标名称") + private String targetName; + + @ApiModelProperty("相别") + private String phasicType; + + @ApiModelProperty("数据类型") + private String valueType; + + @ApiModelProperty("数据时间") + private LocalDateTime dataTime; + + @ApiModelProperty("指标数据") + private Double data; + + @ApiModelProperty("正常范围") + private String normalRange; +} diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/AnomalousDataController.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/AnomalousDataController.java new file mode 100644 index 0000000..964841e --- /dev/null +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/AnomalousDataController.java @@ -0,0 +1,81 @@ +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.AbnormalDataParam; +import com.njcn.csharmonic.pojo.vo.AnomalousDataVo; +import com.njcn.csharmonic.service.AnomalousDataService; +import com.njcn.event.file.pojo.dto.WaveDataDTO; +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.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 类的介绍:数据清洗控制层 + * + * @author xuyang + * @version 1.0.0 + * @createTime 2024/4/3 13:56 + */ +@Slf4j +@RestController +@RequestMapping("/clean") +@Api(tags = "数据清洗") +@AllArgsConstructor +public class AnomalousDataController extends BaseController { + + private final AnomalousDataService anomalousDataService; + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @GetMapping("/getAbnormalData") + @ApiOperation("查询装置异常指标数据") + @ApiImplicitParam(name = "param", value = "参数实体", required = true) + public HttpResult> getAbnormalData(@RequestParam AbnormalDataParam param) { + String methodDescribe = getMethodDescribe("getAbnormalData"); + List result = anomalousDataService.getAbnormalData(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/AnomalousDataService.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/AnomalousDataService.java new file mode 100644 index 0000000..29ef09b --- /dev/null +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/AnomalousDataService.java @@ -0,0 +1,12 @@ +package com.njcn.csharmonic.service; + +import com.njcn.csharmonic.param.AbnormalDataParam; +import com.njcn.csharmonic.pojo.vo.AnomalousDataVo; + +import java.util.List; + +public interface AnomalousDataService { + + List getAbnormalData(AbnormalDataParam param); + +} diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/AnomalousDataServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/AnomalousDataServiceImpl.java new file mode 100644 index 0000000..95370e5 --- /dev/null +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/AnomalousDataServiceImpl.java @@ -0,0 +1,24 @@ +package com.njcn.csharmonic.service.impl; + +import com.njcn.csharmonic.param.AbnormalDataParam; +import com.njcn.csharmonic.pojo.vo.AnomalousDataVo; +import com.njcn.csharmonic.service.AnomalousDataService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2024/4/3 14:15 + */ +@Service +public class AnomalousDataServiceImpl implements AnomalousDataService { + + @Override + public List getAbnormalData(AbnormalDataParam param) { + return null; + } +}