add iot record
parent
f317b2e8f9
commit
bec2aaa930
@ -0,0 +1,96 @@
|
||||
package cn.iocoder.yudao.module.iot.controller.admin.formula;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
|
||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||
|
||||
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
|
||||
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
|
||||
|
||||
import cn.iocoder.yudao.module.iot.controller.admin.formula.vo.*;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.formula.FormulaRecordDO;
|
||||
import cn.iocoder.yudao.module.iot.service.formula.FormulaRecordService;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.Valid;
|
||||
|
||||
@Tag(name = "管理后台 - 变量记录")
|
||||
@RestController
|
||||
@RequestMapping("/iot/formula-record")
|
||||
@Validated
|
||||
public class FormulaRecordController {
|
||||
|
||||
@Resource
|
||||
private FormulaRecordService formulaRecordService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建变量记录")
|
||||
@PreAuthorize("@ss.hasPermission('iot:formula-record:create')")
|
||||
public CommonResult<Long> createFormulaRecord(@Valid @RequestBody FormulaRecordSaveReqVO createReqVO) {
|
||||
return success(formulaRecordService.createFormulaRecord(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新变量记录")
|
||||
@PreAuthorize("@ss.hasPermission('iot:formula-record:update')")
|
||||
public CommonResult<Boolean> updateFormulaRecord(@Valid @RequestBody FormulaRecordSaveReqVO updateReqVO) {
|
||||
formulaRecordService.updateFormulaRecord(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除变量记录")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('iot:formula-record:delete')")
|
||||
public CommonResult<Boolean> deleteFormulaRecord(@RequestParam("id") Long id) {
|
||||
formulaRecordService.deleteFormulaRecord(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得变量记录")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('iot:formula-record:query')")
|
||||
public CommonResult<FormulaRecordRespVO> getFormulaRecord(@RequestParam("id") Long id) {
|
||||
FormulaRecordDO formulaRecord = formulaRecordService.getFormulaRecord(id);
|
||||
return success(BeanUtils.toBean(formulaRecord, FormulaRecordRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得变量记录分页")
|
||||
@PreAuthorize("@ss.hasPermission('iot:formula-record:query')")
|
||||
public CommonResult<PageResult<FormulaRecordRespVO>> getFormulaRecordPage(@Valid FormulaRecordPageReqVO pageReqVO) {
|
||||
PageResult<FormulaRecordDO> pageResult = formulaRecordService.getFormulaRecordPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, FormulaRecordRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@Operation(summary = "导出变量记录 Excel")
|
||||
@PreAuthorize("@ss.hasPermission('iot:formula-record:export')")
|
||||
@ApiAccessLog(operateType = EXPORT)
|
||||
public void exportFormulaRecordExcel(@Valid FormulaRecordPageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<FormulaRecordDO> list = formulaRecordService.getFormulaRecordPage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "变量记录.xls", "数据", FormulaRecordRespVO.class,
|
||||
BeanUtils.toBean(list, FormulaRecordRespVO.class));
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,40 @@
|
||||
package cn.iocoder.yudao.module.iot.controller.admin.formula.vo;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import java.math.BigDecimal;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
@Schema(description = "管理后台 - 变量记录分页 Request VO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class FormulaRecordPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "机台", example = "李四")
|
||||
private String machineName;
|
||||
|
||||
@Schema(description = "用户", example = "李四")
|
||||
private String workerName;
|
||||
|
||||
@Schema(description = "类型", example = "2")
|
||||
private String resultType;
|
||||
|
||||
@Schema(description = "公式编号")
|
||||
private String formulaCode;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
/**
|
||||
* 采集时间
|
||||
*/
|
||||
@Schema(description = "采集时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] deviceDataTime;
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
package cn.iocoder.yudao.module.iot.controller.admin.formula.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.util.*;
|
||||
import java.math.BigDecimal;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.excel.annotation.*;
|
||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
|
||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Schema(description = "管理后台 - 变量记录 Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class FormulaRecordRespVO {
|
||||
|
||||
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23175")
|
||||
@ExcelProperty("ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "机台", example = "李四")
|
||||
@ExcelProperty("机台")
|
||||
private String machineName;
|
||||
|
||||
@Schema(description = "用户", example = "李四")
|
||||
@ExcelProperty("用户")
|
||||
private String workerName;
|
||||
|
||||
@Schema(description = "类型", example = "2")
|
||||
@ExcelProperty(value = "类型", converter = DictConvert.class)
|
||||
@DictFormat("mes_data_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
|
||||
private String resultType;
|
||||
|
||||
@Schema(description = "公式编号")
|
||||
@ExcelProperty("公式编号")
|
||||
private String formulaCode;
|
||||
|
||||
@Schema(description = "值")
|
||||
@ExcelProperty("值")
|
||||
private BigDecimal dataValue;
|
||||
|
||||
@Schema(description = "单位")
|
||||
@ExcelProperty("单位")
|
||||
private String dataUnit;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "机台ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25709")
|
||||
@ExcelProperty("机台ID")
|
||||
private Long machineId;
|
||||
@Schema(description = "用户id", example = "3807")
|
||||
@ExcelProperty("用户id")
|
||||
private Long workerId;
|
||||
@Schema(description = "公式ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24943")
|
||||
@ExcelProperty("公式ID")
|
||||
private Long formulaId;
|
||||
/**
|
||||
* 采集时间
|
||||
*/
|
||||
@Schema(description = "采集时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("采集时间")
|
||||
private LocalDateTime deviceDataTime;
|
||||
}
|
||||
@ -0,0 +1,50 @@
|
||||
package cn.iocoder.yudao.module.iot.controller.admin.formula.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Schema(description = "管理后台 - 变量记录新增/修改 Request VO")
|
||||
@Data
|
||||
public class FormulaRecordSaveReqVO {
|
||||
|
||||
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23175")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "机台ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25709")
|
||||
@NotNull(message = "机台ID不能为空")
|
||||
private Long machineId;
|
||||
|
||||
@Schema(description = "机台", example = "李四")
|
||||
private String machineName;
|
||||
|
||||
@Schema(description = "用户id", example = "3807")
|
||||
private Long workerId;
|
||||
|
||||
@Schema(description = "用户", example = "李四")
|
||||
private String workerName;
|
||||
|
||||
@Schema(description = "类型", example = "2")
|
||||
private String resultType;
|
||||
|
||||
@Schema(description = "公式ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24943")
|
||||
@NotNull(message = "公式ID不能为空")
|
||||
private Long formulaId;
|
||||
|
||||
@Schema(description = "公式编号")
|
||||
private String formulaCode;
|
||||
|
||||
@Schema(description = "值")
|
||||
private BigDecimal dataValue;
|
||||
|
||||
@Schema(description = "单位")
|
||||
private String dataUnit;
|
||||
/**
|
||||
* 采集时间
|
||||
*/
|
||||
@Schema(description = "采集时间")
|
||||
private LocalDateTime deviceDataTime;
|
||||
}
|
||||
@ -0,0 +1,95 @@
|
||||
package cn.iocoder.yudao.module.iot.controller.admin.mqttrecord;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
|
||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||
|
||||
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
|
||||
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
|
||||
|
||||
import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.*;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.mqttrecord.MqttRecordDO;
|
||||
import cn.iocoder.yudao.module.iot.service.mqttrecord.MqttRecordService;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.Valid;
|
||||
|
||||
@Tag(name = "管理后台 - 数采记录")
|
||||
@RestController
|
||||
@RequestMapping("/iot/mqtt-record")
|
||||
@Validated
|
||||
public class MqttRecordController {
|
||||
|
||||
@Resource
|
||||
private MqttRecordService mqttRecordService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建数采记录")
|
||||
@PreAuthorize("@ss.hasPermission('iot:mqtt-record:create')")
|
||||
public CommonResult<Long> createMqttRecord(@Valid @RequestBody MqttRecordSaveReqVO createReqVO) {
|
||||
return success(mqttRecordService.createMqttRecord(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新数采记录")
|
||||
@PreAuthorize("@ss.hasPermission('iot:mqtt-record:update')")
|
||||
public CommonResult<Boolean> updateMqttRecord(@Valid @RequestBody MqttRecordSaveReqVO updateReqVO) {
|
||||
mqttRecordService.updateMqttRecord(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除数采记录")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('iot:mqtt-record:delete')")
|
||||
public CommonResult<Boolean> deleteMqttRecord(@RequestParam("id") Long id) {
|
||||
mqttRecordService.deleteMqttRecord(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得数采记录")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('iot:mqtt-record:query')")
|
||||
public CommonResult<MqttRecordRespVO> getMqttRecord(@RequestParam("id") Long id) {
|
||||
MqttRecordDO mqttRecord = mqttRecordService.getMqttRecord(id);
|
||||
return success(BeanUtils.toBean(mqttRecord, MqttRecordRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得数采记录分页")
|
||||
@PreAuthorize("@ss.hasPermission('iot:mqtt-record:query')")
|
||||
public CommonResult<PageResult<MqttRecordRespVO>> getMqttRecordPage(@Valid MqttRecordPageReqVO pageReqVO) {
|
||||
PageResult<MqttRecordDO> pageResult = mqttRecordService.getMqttRecordPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, MqttRecordRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@Operation(summary = "导出数采记录 Excel")
|
||||
@PreAuthorize("@ss.hasPermission('iot:mqtt-record:export')")
|
||||
@ApiAccessLog(operateType = EXPORT)
|
||||
public void exportMqttRecordExcel(@Valid MqttRecordPageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<MqttRecordDO> list = mqttRecordService.getMqttRecordPage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "数采记录.xls", "数据", MqttRecordRespVO.class,
|
||||
BeanUtils.toBean(list, MqttRecordRespVO.class));
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
package cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
@Schema(description = "管理后台 - 数采记录分页 Request VO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class MqttRecordPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "机台", example = "赵六")
|
||||
private String machineName;
|
||||
|
||||
@Schema(description = "采集时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] deviceDataTime;
|
||||
|
||||
@Schema(description = "数据")
|
||||
private String deviceData;
|
||||
|
||||
@Schema(description = "设备编码")
|
||||
private String deviceCode;
|
||||
|
||||
@Schema(description = "设备名称", example = "张三")
|
||||
private String deviceName;
|
||||
|
||||
@Schema(description = "用户", example = "张三")
|
||||
private String workerName;
|
||||
|
||||
@Schema(description = "网关")
|
||||
private String gatewayCode;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
}
|
||||
@ -0,0 +1,52 @@
|
||||
package cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.util.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.excel.annotation.*;
|
||||
|
||||
@Schema(description = "管理后台 - 数采记录 Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class MqttRecordRespVO {
|
||||
|
||||
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22946")
|
||||
@ExcelProperty("ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "机台", example = "赵六")
|
||||
@ExcelProperty("机台")
|
||||
private String machineName;
|
||||
|
||||
@Schema(description = "采集时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("采集时间")
|
||||
private LocalDateTime deviceDataTime;
|
||||
|
||||
@Schema(description = "数据")
|
||||
@ExcelProperty("数据")
|
||||
private String deviceData;
|
||||
|
||||
@Schema(description = "设备编码")
|
||||
@ExcelProperty("设备编码")
|
||||
private String deviceCode;
|
||||
|
||||
@Schema(description = "设备名称", example = "张三")
|
||||
@ExcelProperty("设备名称")
|
||||
private String deviceName;
|
||||
|
||||
@Schema(description = "用户", example = "张三")
|
||||
@ExcelProperty("用户")
|
||||
private String workerName;
|
||||
|
||||
@Schema(description = "网关")
|
||||
@ExcelProperty("网关")
|
||||
private String gatewayCode;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
}
|
||||
@ -0,0 +1,49 @@
|
||||
package cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Schema(description = "管理后台 - 数采记录新增/修改 Request VO")
|
||||
@Data
|
||||
public class MqttRecordSaveReqVO {
|
||||
|
||||
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22946")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "机台ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3561")
|
||||
@NotNull(message = "机台ID不能为空")
|
||||
private Long machineId;
|
||||
|
||||
@Schema(description = "机台", example = "赵六")
|
||||
private String machineName;
|
||||
|
||||
@Schema(description = "采集时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "采集时间不能为空")
|
||||
private LocalDateTime deviceDataTime;
|
||||
|
||||
@Schema(description = "数据")
|
||||
private String deviceData;
|
||||
|
||||
@Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31306")
|
||||
@NotNull(message = "设备id不能为空")
|
||||
private Long deviceId;
|
||||
|
||||
@Schema(description = "设备编码")
|
||||
private String deviceCode;
|
||||
|
||||
@Schema(description = "设备名称", example = "张三")
|
||||
private String deviceName;
|
||||
|
||||
@Schema(description = "用户id", example = "8427")
|
||||
private Long workerId;
|
||||
|
||||
@Schema(description = "用户", example = "张三")
|
||||
private String workerName;
|
||||
|
||||
@Schema(description = "网关")
|
||||
private String gatewayCode;
|
||||
|
||||
}
|
||||
@ -0,0 +1,73 @@
|
||||
package cn.iocoder.yudao.module.iot.dal.dataobject.formula;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
|
||||
/**
|
||||
* 变量记录 DO
|
||||
*
|
||||
* @author 内蒙必硕
|
||||
*/
|
||||
@TableName("iot_formula_record")
|
||||
@KeySequence("iot_formula_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class FormulaRecordDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 机台ID
|
||||
*/
|
||||
private Long machineId;
|
||||
/**
|
||||
* 机台
|
||||
*/
|
||||
private String machineName;
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
private Long workerId;
|
||||
/**
|
||||
* 用户
|
||||
*/
|
||||
private String workerName;
|
||||
/**
|
||||
* 类型
|
||||
*
|
||||
* 枚举 {@link TODO mes_data_type 对应的类}
|
||||
*/
|
||||
private String resultType;
|
||||
/**
|
||||
* 公式ID
|
||||
*/
|
||||
private Long formulaId;
|
||||
/**
|
||||
* 公式编号
|
||||
*/
|
||||
private String formulaCode;
|
||||
/**
|
||||
* 值
|
||||
*/
|
||||
private BigDecimal dataValue;
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
private String dataUnit;
|
||||
/**
|
||||
* 采集时间
|
||||
*/
|
||||
private LocalDateTime deviceDataTime;
|
||||
}
|
||||
@ -0,0 +1,72 @@
|
||||
package cn.iocoder.yudao.module.iot.dal.dataobject.mqttrecord;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
|
||||
/**
|
||||
* 数采记录 DO
|
||||
*
|
||||
* @author 内蒙必硕
|
||||
*/
|
||||
@TableName("iot_mqtt_record")
|
||||
@KeySequence("iot_mqtt_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class MqttRecordDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 机台ID
|
||||
*/
|
||||
private Long machineId;
|
||||
/**
|
||||
* 机台
|
||||
*/
|
||||
private String machineName;
|
||||
/**
|
||||
* 采集时间
|
||||
*/
|
||||
private LocalDateTime deviceDataTime;
|
||||
/**
|
||||
* 数据
|
||||
*/
|
||||
private String deviceData;
|
||||
/**
|
||||
* 设备id
|
||||
*/
|
||||
private Long deviceId;
|
||||
/**
|
||||
* 设备编码
|
||||
*/
|
||||
private String deviceCode;
|
||||
/**
|
||||
* 设备名称
|
||||
*/
|
||||
private String deviceName;
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
private Long workerId;
|
||||
/**
|
||||
* 用户
|
||||
*/
|
||||
private String workerName;
|
||||
/**
|
||||
* 网关
|
||||
*/
|
||||
private String gatewayCode;
|
||||
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
package cn.iocoder.yudao.module.iot.dal.mysql.formula;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.formula.FormulaRecordDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import cn.iocoder.yudao.module.iot.controller.admin.formula.vo.*;
|
||||
|
||||
/**
|
||||
* 变量记录 Mapper
|
||||
*
|
||||
* @author 内蒙必硕
|
||||
*/
|
||||
@Mapper
|
||||
public interface FormulaRecordMapper extends BaseMapperX<FormulaRecordDO> {
|
||||
|
||||
default PageResult<FormulaRecordDO> selectPage(FormulaRecordPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<FormulaRecordDO>()
|
||||
.likeIfPresent(FormulaRecordDO::getMachineName, reqVO.getMachineName())
|
||||
.likeIfPresent(FormulaRecordDO::getWorkerName, reqVO.getWorkerName())
|
||||
.eqIfPresent(FormulaRecordDO::getResultType, reqVO.getResultType())
|
||||
.eqIfPresent(FormulaRecordDO::getFormulaCode, reqVO.getFormulaCode())
|
||||
.betweenIfPresent(FormulaRecordDO::getCreateTime, reqVO.getCreateTime())
|
||||
.orderByDesc(FormulaRecordDO::getId));
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,33 @@
|
||||
package cn.iocoder.yudao.module.iot.dal.mysql.mqttrecord;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.mqttrecord.MqttRecordDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.*;
|
||||
|
||||
/**
|
||||
* 数采记录 Mapper
|
||||
*
|
||||
* @author 内蒙必硕
|
||||
*/
|
||||
@Mapper
|
||||
public interface MqttRecordMapper extends BaseMapperX<MqttRecordDO> {
|
||||
|
||||
default PageResult<MqttRecordDO> selectPage(MqttRecordPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<MqttRecordDO>()
|
||||
.likeIfPresent(MqttRecordDO::getMachineName, reqVO.getMachineName())
|
||||
.betweenIfPresent(MqttRecordDO::getDeviceDataTime, reqVO.getDeviceDataTime())
|
||||
.eqIfPresent(MqttRecordDO::getDeviceData, reqVO.getDeviceData())
|
||||
.eqIfPresent(MqttRecordDO::getDeviceCode, reqVO.getDeviceCode())
|
||||
.likeIfPresent(MqttRecordDO::getDeviceName, reqVO.getDeviceName())
|
||||
.likeIfPresent(MqttRecordDO::getWorkerName, reqVO.getWorkerName())
|
||||
.eqIfPresent(MqttRecordDO::getGatewayCode, reqVO.getGatewayCode())
|
||||
.betweenIfPresent(MqttRecordDO::getCreateTime, reqVO.getCreateTime())
|
||||
.orderByDesc(MqttRecordDO::getId));
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,55 @@
|
||||
package cn.iocoder.yudao.module.iot.service.formula;
|
||||
|
||||
import cn.iocoder.yudao.module.iot.controller.admin.formula.vo.*;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.formula.FormulaRecordDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
/**
|
||||
* 变量记录 Service 接口
|
||||
*
|
||||
* @author 内蒙必硕
|
||||
*/
|
||||
public interface FormulaRecordService {
|
||||
|
||||
/**
|
||||
* 创建变量记录
|
||||
*
|
||||
* @param createReqVO 创建信息
|
||||
* @return 编号
|
||||
*/
|
||||
Long createFormulaRecord(@Valid FormulaRecordSaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 更新变量记录
|
||||
*
|
||||
* @param updateReqVO 更新信息
|
||||
*/
|
||||
void updateFormulaRecord(@Valid FormulaRecordSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 删除变量记录
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deleteFormulaRecord(Long id);
|
||||
|
||||
/**
|
||||
* 获得变量记录
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 变量记录
|
||||
*/
|
||||
FormulaRecordDO getFormulaRecord(Long id);
|
||||
|
||||
/**
|
||||
* 获得变量记录分页
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 变量记录分页
|
||||
*/
|
||||
PageResult<FormulaRecordDO> getFormulaRecordPage(FormulaRecordPageReqVO pageReqVO);
|
||||
|
||||
}
|
||||
@ -0,0 +1,75 @@
|
||||
package cn.iocoder.yudao.module.iot.service.formula;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import cn.iocoder.yudao.module.iot.controller.admin.formula.vo.*;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.formula.FormulaRecordDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
import cn.iocoder.yudao.module.iot.dal.mysql.formula.FormulaRecordMapper;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*;
|
||||
|
||||
/**
|
||||
* 变量记录 Service 实现类
|
||||
*
|
||||
* @author 内蒙必硕
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class FormulaRecordServiceImpl implements FormulaRecordService {
|
||||
|
||||
@Resource
|
||||
private FormulaRecordMapper formulaRecordMapper;
|
||||
|
||||
@Override
|
||||
public Long createFormulaRecord(FormulaRecordSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
FormulaRecordDO formulaRecord = BeanUtils.toBean(createReqVO, FormulaRecordDO.class);
|
||||
formulaRecordMapper.insert(formulaRecord);
|
||||
// 返回
|
||||
return formulaRecord.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateFormulaRecord(FormulaRecordSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateFormulaRecordExists(updateReqVO.getId());
|
||||
// 更新
|
||||
FormulaRecordDO updateObj = BeanUtils.toBean(updateReqVO, FormulaRecordDO.class);
|
||||
formulaRecordMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteFormulaRecord(Long id) {
|
||||
// 校验存在
|
||||
validateFormulaRecordExists(id);
|
||||
// 删除
|
||||
formulaRecordMapper.deleteById(id);
|
||||
}
|
||||
|
||||
private void validateFormulaRecordExists(Long id) {
|
||||
if (formulaRecordMapper.selectById(id) == null) {
|
||||
throw exception(FORMULA_RECORD_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public FormulaRecordDO getFormulaRecord(Long id) {
|
||||
return formulaRecordMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<FormulaRecordDO> getFormulaRecordPage(FormulaRecordPageReqVO pageReqVO) {
|
||||
return formulaRecordMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,55 @@
|
||||
package cn.iocoder.yudao.module.iot.service.mqttrecord;
|
||||
|
||||
import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.*;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.mqttrecord.MqttRecordDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
/**
|
||||
* 数采记录 Service 接口
|
||||
*
|
||||
* @author 内蒙必硕
|
||||
*/
|
||||
public interface MqttRecordService {
|
||||
|
||||
/**
|
||||
* 创建数采记录
|
||||
*
|
||||
* @param createReqVO 创建信息
|
||||
* @return 编号
|
||||
*/
|
||||
Long createMqttRecord(@Valid MqttRecordSaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 更新数采记录
|
||||
*
|
||||
* @param updateReqVO 更新信息
|
||||
*/
|
||||
void updateMqttRecord(@Valid MqttRecordSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 删除数采记录
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deleteMqttRecord(Long id);
|
||||
|
||||
/**
|
||||
* 获得数采记录
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 数采记录
|
||||
*/
|
||||
MqttRecordDO getMqttRecord(Long id);
|
||||
|
||||
/**
|
||||
* 获得数采记录分页
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 数采记录分页
|
||||
*/
|
||||
PageResult<MqttRecordDO> getMqttRecordPage(MqttRecordPageReqVO pageReqVO);
|
||||
|
||||
}
|
||||
@ -0,0 +1,75 @@
|
||||
package cn.iocoder.yudao.module.iot.service.mqttrecord;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.*;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.mqttrecord.MqttRecordDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
import cn.iocoder.yudao.module.iot.dal.mysql.mqttrecord.MqttRecordMapper;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*;
|
||||
|
||||
/**
|
||||
* 数采记录 Service 实现类
|
||||
*
|
||||
* @author 内蒙必硕
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class MqttRecordServiceImpl implements MqttRecordService {
|
||||
|
||||
@Resource
|
||||
private MqttRecordMapper mqttRecordMapper;
|
||||
|
||||
@Override
|
||||
public Long createMqttRecord(MqttRecordSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
MqttRecordDO mqttRecord = BeanUtils.toBean(createReqVO, MqttRecordDO.class);
|
||||
mqttRecordMapper.insert(mqttRecord);
|
||||
// 返回
|
||||
return mqttRecord.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateMqttRecord(MqttRecordSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateMqttRecordExists(updateReqVO.getId());
|
||||
// 更新
|
||||
MqttRecordDO updateObj = BeanUtils.toBean(updateReqVO, MqttRecordDO.class);
|
||||
mqttRecordMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteMqttRecord(Long id) {
|
||||
// 校验存在
|
||||
validateMqttRecordExists(id);
|
||||
// 删除
|
||||
mqttRecordMapper.deleteById(id);
|
||||
}
|
||||
|
||||
private void validateMqttRecordExists(Long id) {
|
||||
if (mqttRecordMapper.selectById(id) == null) {
|
||||
throw exception(MQTT_RECORD_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public MqttRecordDO getMqttRecord(Long id) {
|
||||
return mqttRecordMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<MqttRecordDO> getMqttRecordPage(MqttRecordPageReqVO pageReqVO) {
|
||||
return mqttRecordMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,147 @@
|
||||
package cn.iocoder.yudao.module.iot.service.formula;
|
||||
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
import cn.iocoder.yudao.module.iot.controller.admin.formula.vo.*;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.formula.FormulaRecordDO;
|
||||
import cn.iocoder.yudao.module.iot.dal.mysql.formula.FormulaRecordMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static cn.hutool.core.util.RandomUtil.*;
|
||||
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*;
|
||||
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
|
||||
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
|
||||
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
|
||||
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
/**
|
||||
* {@link FormulaRecordServiceImpl} 的单元测试类
|
||||
*
|
||||
* @author 内蒙必硕
|
||||
*/
|
||||
@Import(FormulaRecordServiceImpl.class)
|
||||
public class FormulaRecordServiceImplTest extends BaseDbUnitTest {
|
||||
|
||||
@Resource
|
||||
private FormulaRecordServiceImpl formulaRecordService;
|
||||
|
||||
@Resource
|
||||
private FormulaRecordMapper formulaRecordMapper;
|
||||
|
||||
@Test
|
||||
public void testCreateFormulaRecord_success() {
|
||||
// 准备参数
|
||||
FormulaRecordSaveReqVO createReqVO = randomPojo(FormulaRecordSaveReqVO.class).setId(null);
|
||||
|
||||
// 调用
|
||||
Long formulaRecordId = formulaRecordService.createFormulaRecord(createReqVO);
|
||||
// 断言
|
||||
assertNotNull(formulaRecordId);
|
||||
// 校验记录的属性是否正确
|
||||
FormulaRecordDO formulaRecord = formulaRecordMapper.selectById(formulaRecordId);
|
||||
assertPojoEquals(createReqVO, formulaRecord, "id");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateFormulaRecord_success() {
|
||||
// mock 数据
|
||||
FormulaRecordDO dbFormulaRecord = randomPojo(FormulaRecordDO.class);
|
||||
formulaRecordMapper.insert(dbFormulaRecord);// @Sql: 先插入出一条存在的数据
|
||||
// 准备参数
|
||||
FormulaRecordSaveReqVO updateReqVO = randomPojo(FormulaRecordSaveReqVO.class, o -> {
|
||||
o.setId(dbFormulaRecord.getId()); // 设置更新的 ID
|
||||
});
|
||||
|
||||
// 调用
|
||||
formulaRecordService.updateFormulaRecord(updateReqVO);
|
||||
// 校验是否更新正确
|
||||
FormulaRecordDO formulaRecord = formulaRecordMapper.selectById(updateReqVO.getId()); // 获取最新的
|
||||
assertPojoEquals(updateReqVO, formulaRecord);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateFormulaRecord_notExists() {
|
||||
// 准备参数
|
||||
FormulaRecordSaveReqVO updateReqVO = randomPojo(FormulaRecordSaveReqVO.class);
|
||||
|
||||
// 调用, 并断言异常
|
||||
assertServiceException(() -> formulaRecordService.updateFormulaRecord(updateReqVO), FORMULA_RECORD_NOT_EXISTS);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteFormulaRecord_success() {
|
||||
// mock 数据
|
||||
FormulaRecordDO dbFormulaRecord = randomPojo(FormulaRecordDO.class);
|
||||
formulaRecordMapper.insert(dbFormulaRecord);// @Sql: 先插入出一条存在的数据
|
||||
// 准备参数
|
||||
Long id = dbFormulaRecord.getId();
|
||||
|
||||
// 调用
|
||||
formulaRecordService.deleteFormulaRecord(id);
|
||||
// 校验数据不存在了
|
||||
assertNull(formulaRecordMapper.selectById(id));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteFormulaRecord_notExists() {
|
||||
// 准备参数
|
||||
Long id = randomLongId();
|
||||
|
||||
// 调用, 并断言异常
|
||||
assertServiceException(() -> formulaRecordService.deleteFormulaRecord(id), FORMULA_RECORD_NOT_EXISTS);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||
public void testGetFormulaRecordPage() {
|
||||
// mock 数据
|
||||
FormulaRecordDO dbFormulaRecord = randomPojo(FormulaRecordDO.class, o -> { // 等会查询到
|
||||
o.setMachineName(null);
|
||||
o.setWorkerName(null);
|
||||
o.setResultType(null);
|
||||
o.setFormulaCode(null);
|
||||
o.setCreateTime(null);
|
||||
});
|
||||
formulaRecordMapper.insert(dbFormulaRecord);
|
||||
// 测试 machineName 不匹配
|
||||
formulaRecordMapper.insert(cloneIgnoreId(dbFormulaRecord, o -> o.setMachineName(null)));
|
||||
// 测试 workerName 不匹配
|
||||
formulaRecordMapper.insert(cloneIgnoreId(dbFormulaRecord, o -> o.setWorkerName(null)));
|
||||
// 测试 resultType 不匹配
|
||||
formulaRecordMapper.insert(cloneIgnoreId(dbFormulaRecord, o -> o.setResultType(null)));
|
||||
// 测试 formulaCode 不匹配
|
||||
formulaRecordMapper.insert(cloneIgnoreId(dbFormulaRecord, o -> o.setFormulaCode(null)));
|
||||
// 测试 createTime 不匹配
|
||||
formulaRecordMapper.insert(cloneIgnoreId(dbFormulaRecord, o -> o.setCreateTime(null)));
|
||||
// 准备参数
|
||||
FormulaRecordPageReqVO reqVO = new FormulaRecordPageReqVO();
|
||||
reqVO.setMachineName(null);
|
||||
reqVO.setWorkerName(null);
|
||||
reqVO.setResultType(null);
|
||||
reqVO.setFormulaCode(null);
|
||||
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||
|
||||
// 调用
|
||||
PageResult<FormulaRecordDO> pageResult = formulaRecordService.getFormulaRecordPage(reqVO);
|
||||
// 断言
|
||||
assertEquals(1, pageResult.getTotal());
|
||||
assertEquals(1, pageResult.getList().size());
|
||||
assertPojoEquals(dbFormulaRecord, pageResult.getList().get(0));
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,153 @@
|
||||
package cn.iocoder.yudao.module.iot.service.mqttrecord;
|
||||
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||
|
||||
import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.*;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.mqttrecord.MqttRecordDO;
|
||||
import cn.iocoder.yudao.module.iot.dal.mysql.mqttrecord.MqttRecordMapper;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*;
|
||||
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
|
||||
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
|
||||
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
|
||||
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
/**
|
||||
* {@link MqttRecordServiceImpl} 的单元测试类
|
||||
*
|
||||
* @author 内蒙必硕
|
||||
*/
|
||||
@Import(MqttRecordServiceImpl.class)
|
||||
public class MqttRecordServiceImplTest extends BaseDbUnitTest {
|
||||
|
||||
@Resource
|
||||
private MqttRecordServiceImpl mqttRecordService;
|
||||
|
||||
@Resource
|
||||
private MqttRecordMapper mqttRecordMapper;
|
||||
|
||||
@Test
|
||||
public void testCreateMqttRecord_success() {
|
||||
// 准备参数
|
||||
MqttRecordSaveReqVO createReqVO = randomPojo(MqttRecordSaveReqVO.class).setId(null);
|
||||
|
||||
// 调用
|
||||
Long mqttRecordId = mqttRecordService.createMqttRecord(createReqVO);
|
||||
// 断言
|
||||
assertNotNull(mqttRecordId);
|
||||
// 校验记录的属性是否正确
|
||||
MqttRecordDO mqttRecord = mqttRecordMapper.selectById(mqttRecordId);
|
||||
assertPojoEquals(createReqVO, mqttRecord, "id");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateMqttRecord_success() {
|
||||
// mock 数据
|
||||
MqttRecordDO dbMqttRecord = randomPojo(MqttRecordDO.class);
|
||||
mqttRecordMapper.insert(dbMqttRecord);// @Sql: 先插入出一条存在的数据
|
||||
// 准备参数
|
||||
MqttRecordSaveReqVO updateReqVO = randomPojo(MqttRecordSaveReqVO.class, o -> {
|
||||
o.setId(dbMqttRecord.getId()); // 设置更新的 ID
|
||||
});
|
||||
|
||||
// 调用
|
||||
mqttRecordService.updateMqttRecord(updateReqVO);
|
||||
// 校验是否更新正确
|
||||
MqttRecordDO mqttRecord = mqttRecordMapper.selectById(updateReqVO.getId()); // 获取最新的
|
||||
assertPojoEquals(updateReqVO, mqttRecord);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateMqttRecord_notExists() {
|
||||
// 准备参数
|
||||
MqttRecordSaveReqVO updateReqVO = randomPojo(MqttRecordSaveReqVO.class);
|
||||
|
||||
// 调用, 并断言异常
|
||||
assertServiceException(() -> mqttRecordService.updateMqttRecord(updateReqVO), MQTT_RECORD_NOT_EXISTS);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteMqttRecord_success() {
|
||||
// mock 数据
|
||||
MqttRecordDO dbMqttRecord = randomPojo(MqttRecordDO.class);
|
||||
mqttRecordMapper.insert(dbMqttRecord);// @Sql: 先插入出一条存在的数据
|
||||
// 准备参数
|
||||
Long id = dbMqttRecord.getId();
|
||||
|
||||
// 调用
|
||||
mqttRecordService.deleteMqttRecord(id);
|
||||
// 校验数据不存在了
|
||||
assertNull(mqttRecordMapper.selectById(id));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteMqttRecord_notExists() {
|
||||
// 准备参数
|
||||
Long id = randomLongId();
|
||||
|
||||
// 调用, 并断言异常
|
||||
assertServiceException(() -> mqttRecordService.deleteMqttRecord(id), MQTT_RECORD_NOT_EXISTS);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||
public void testGetMqttRecordPage() {
|
||||
// mock 数据
|
||||
MqttRecordDO dbMqttRecord = randomPojo(MqttRecordDO.class, o -> { // 等会查询到
|
||||
o.setMachineName(null);
|
||||
o.setDeviceDataTime(null);
|
||||
o.setDeviceData(null);
|
||||
o.setDeviceCode(null);
|
||||
o.setDeviceName(null);
|
||||
o.setWorkerName(null);
|
||||
o.setGatewayCode(null);
|
||||
o.setCreateTime(null);
|
||||
});
|
||||
mqttRecordMapper.insert(dbMqttRecord);
|
||||
// 测试 machineName 不匹配
|
||||
mqttRecordMapper.insert(cloneIgnoreId(dbMqttRecord, o -> o.setMachineName(null)));
|
||||
// 测试 deviceDataTime 不匹配
|
||||
mqttRecordMapper.insert(cloneIgnoreId(dbMqttRecord, o -> o.setDeviceDataTime(null)));
|
||||
// 测试 deviceData 不匹配
|
||||
mqttRecordMapper.insert(cloneIgnoreId(dbMqttRecord, o -> o.setDeviceData(null)));
|
||||
// 测试 deviceCode 不匹配
|
||||
mqttRecordMapper.insert(cloneIgnoreId(dbMqttRecord, o -> o.setDeviceCode(null)));
|
||||
// 测试 deviceName 不匹配
|
||||
mqttRecordMapper.insert(cloneIgnoreId(dbMqttRecord, o -> o.setDeviceName(null)));
|
||||
// 测试 workerName 不匹配
|
||||
mqttRecordMapper.insert(cloneIgnoreId(dbMqttRecord, o -> o.setWorkerName(null)));
|
||||
// 测试 gatewayCode 不匹配
|
||||
mqttRecordMapper.insert(cloneIgnoreId(dbMqttRecord, o -> o.setGatewayCode(null)));
|
||||
// 测试 createTime 不匹配
|
||||
mqttRecordMapper.insert(cloneIgnoreId(dbMqttRecord, o -> o.setCreateTime(null)));
|
||||
// 准备参数
|
||||
MqttRecordPageReqVO reqVO = new MqttRecordPageReqVO();
|
||||
reqVO.setMachineName(null);
|
||||
reqVO.setDeviceDataTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||
reqVO.setDeviceData(null);
|
||||
reqVO.setDeviceCode(null);
|
||||
reqVO.setDeviceName(null);
|
||||
reqVO.setWorkerName(null);
|
||||
reqVO.setGatewayCode(null);
|
||||
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||
|
||||
// 调用
|
||||
PageResult<MqttRecordDO> pageResult = mqttRecordService.getMqttRecordPage(reqVO);
|
||||
// 断言
|
||||
assertEquals(1, pageResult.getTotal());
|
||||
assertEquals(1, pageResult.getList().size());
|
||||
assertPojoEquals(dbMqttRecord, pageResult.getList().get(0));
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue