From 870cb78385be9dcd4c1af0761fd4a6881043c259 Mon Sep 17 00:00:00 2001 From: 86158 <461356067@qq.com> Date: Mon, 5 Jan 2026 18:07:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/iot/enums/ErrorCodeConstants.java | 3 + .../admin/recipe/RecipeController.java | 95 +++++++++++++++++++ .../admin/recipe/vo/RecipePageReqVO.java | 52 ++++++++++ .../admin/recipe/vo/RecipeRespVO.java | 63 ++++++++++++ .../admin/recipe/vo/RecipeSaveReqVO.java | 46 +++++++++ .../recipepoint/RecipePointController.java | 95 +++++++++++++++++++ .../recipepoint/vo/RecipePointPageReqVO.java | 46 +++++++++ .../recipepoint/vo/RecipePointRespVO.java | 55 +++++++++++ .../recipepoint/vo/RecipePointSaveReqVO.java | 39 ++++++++ .../recipetype/RecipeTypeController.java | 95 +++++++++++++++++++ .../recipetype/vo/RecipeTypePageReqVO.java | 37 ++++++++ .../admin/recipetype/vo/RecipeTypeRespVO.java | 43 +++++++++ .../recipetype/vo/RecipeTypeSaveReqVO.java | 31 ++++++ .../iot/dal/dataobject/recipe/RecipeDO.java | 71 ++++++++++++++ .../dataobject/recipepoint/RecipePointDO.java | 63 ++++++++++++ .../dataobject/recipetype/RecipeTypeDO.java | 51 ++++++++++ .../iot/dal/mysql/recipe/RecipeMapper.java | 36 +++++++ .../mysql/recipepoint/RecipePointMapper.java | 34 +++++++ .../mysql/recipetype/RecipeTypeMapper.java | 31 ++++++ .../iot/service/recipe/RecipeService.java | 55 +++++++++++ .../iot/service/recipe/RecipeServiceImpl.java | 74 +++++++++++++++ .../recipepoint/RecipePointService.java | 55 +++++++++++ .../recipepoint/RecipePointServiceImpl.java | 74 +++++++++++++++ .../service/recipetype/RecipeTypeService.java | 55 +++++++++++ .../recipetype/RecipeTypeServiceImpl.java | 74 +++++++++++++++ .../resources/mapper/recipe/RecipeMapper.xml | 12 +++ .../mapper/recipepoint/RecipePointMapper.xml | 12 +++ .../mapper/recipetype/RecipeTypeMapper.xml | 12 +++ .../service/device/DeviceServiceImplTest.java | 12 +-- .../EnergyDeviceServiceImplTest.java | 6 +- 30 files changed, 1418 insertions(+), 9 deletions(-) create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipe/RecipeController.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipe/vo/RecipePageReqVO.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipe/vo/RecipeRespVO.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipe/vo/RecipeSaveReqVO.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipepoint/RecipePointController.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipepoint/vo/RecipePointPageReqVO.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipepoint/vo/RecipePointRespVO.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipepoint/vo/RecipePointSaveReqVO.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipetype/RecipeTypeController.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipetype/vo/RecipeTypePageReqVO.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipetype/vo/RecipeTypeRespVO.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipetype/vo/RecipeTypeSaveReqVO.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/recipe/RecipeDO.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/recipepoint/RecipePointDO.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/recipetype/RecipeTypeDO.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/recipe/RecipeMapper.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/recipepoint/RecipePointMapper.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/recipetype/RecipeTypeMapper.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipe/RecipeService.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipe/RecipeServiceImpl.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipepoint/RecipePointService.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipepoint/RecipePointServiceImpl.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipetype/RecipeTypeService.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipetype/RecipeTypeServiceImpl.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/recipe/RecipeMapper.xml create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/recipepoint/RecipePointMapper.xml create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/recipetype/RecipeTypeMapper.xml diff --git a/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/ErrorCodeConstants.java b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/ErrorCodeConstants.java index 15f3d6296..9635d6bb7 100644 --- a/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/ErrorCodeConstants.java +++ b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/ErrorCodeConstants.java @@ -49,5 +49,8 @@ public interface ErrorCodeConstants { ErrorCode OPC_CLOSE_CONNECT_FAILURE= new ErrorCode(1_003_000_000, "OPC断开连接失败"); ErrorCode OPC_PARAMETER_DOES_NOT_EXIST= new ErrorCode(1_003_000_000, "连接关闭参数不存在"); ErrorCode CREATE_TDENGINE_FAILURE= new ErrorCode(1_003_000_000, "创建Tdengine子表失败"); + ErrorCode RECIPE_NOT_EXISTS = new ErrorCode(1_003_000_000, "配方主不存在"); + ErrorCode RECIPE_POINT_NOT_EXISTS = new ErrorCode(1_003_000_000, "配方点位配置表(配方与设备点位关联)不存在"); + ErrorCode RECIPE_TYPE_NOT_EXISTS = new ErrorCode(1_003_000_000, "配方类型表(基础字典)不存在"); } diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipe/RecipeController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipe/RecipeController.java new file mode 100644 index 000000000..be84fbb30 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipe/RecipeController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.iot.controller.admin.recipe; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +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 javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +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.recipe.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.recipe.RecipeDO; +import cn.iocoder.yudao.module.iot.service.recipe.RecipeService; + +@Tag(name = "管理后台 - 配方管理主") +@RestController +@RequestMapping("/iot/recipe") +@Validated +public class RecipeController { + + @Resource + private RecipeService recipeService; + + @PostMapping("/create") + @Operation(summary = "创建配方管理主") + @PreAuthorize("@ss.hasPermission('iot:recipe:create')") + public CommonResult createRecipe(@Valid @RequestBody RecipeSaveReqVO createReqVO) { + return success(recipeService.createRecipe(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新配方管理主") + @PreAuthorize("@ss.hasPermission('iot:recipe:update')") + public CommonResult updateRecipe(@Valid @RequestBody RecipeSaveReqVO updateReqVO) { + recipeService.updateRecipe(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除配方管理主") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('iot:recipe:delete')") + public CommonResult deleteRecipe(@RequestParam("id") Long id) { + recipeService.deleteRecipe(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得配方管理主") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('iot:recipe:query')") + public CommonResult getRecipe(@RequestParam("id") Long id) { + RecipeDO recipe = recipeService.getRecipe(id); + return success(BeanUtils.toBean(recipe, RecipeRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得配方管理主分页") + @PreAuthorize("@ss.hasPermission('iot:recipe:query')") + public CommonResult> getRecipePage(@Valid RecipePageReqVO pageReqVO) { + PageResult pageResult = recipeService.getRecipePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, RecipeRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出配方管理主 Excel") + @PreAuthorize("@ss.hasPermission('iot:recipe:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportRecipeExcel(@Valid RecipePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = recipeService.getRecipePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "配方管理主.xls", "数据", RecipeRespVO.class, + BeanUtils.toBean(list, RecipeRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipe/vo/RecipePageReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipe/vo/RecipePageReqVO.java new file mode 100644 index 000000000..ddeabd2d3 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipe/vo/RecipePageReqVO.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.module.iot.controller.admin.recipe.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 RecipePageReqVO extends PageParam { + + @Schema(description = "配方名称", example = "赵六") + private String name; + + @Schema(description = "配方编码") + private String recipeCode; + + @Schema(description = "配方类型(关联配方类型表code)", example = "2") + private String recipeType; + + @Schema(description = "关联产品名称", example = "李四") + private String productName; + + @Schema(description = "关联设备ID(关联iot_device.id)", example = "14725") + private Long machineId; + + @Schema(description = "关联设备编码(冗余字段)") + private String machineCode; + + @Schema(description = "关联设备名称(冗余字段)", example = "芋艿") + private String machineName; + + @Schema(description = "配方描述") + private String recipeDesc; + + @Schema(description = "是否启用(0-禁用,1-启用)") + private Boolean isEnable; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "数据单位") + private String dataUnit; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipe/vo/RecipeRespVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipe/vo/RecipeRespVO.java new file mode 100644 index 000000000..82beec117 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipe/vo/RecipeRespVO.java @@ -0,0 +1,63 @@ +package cn.iocoder.yudao.module.iot.controller.admin.recipe.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +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 RecipeRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6587") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "配方名称", example = "赵六") + @ExcelProperty("配方名称") + private String name; + + @Schema(description = "配方编码") + @ExcelProperty("配方编码") + private String recipeCode; + + @Schema(description = "配方类型(关联配方类型表code)", example = "2") + @ExcelProperty("配方类型(关联配方类型表code)") + private String recipeType; + + @Schema(description = "关联产品名称", example = "李四") + @ExcelProperty("关联产品名称") + private String productName; + + @Schema(description = "关联设备ID(关联iot_device.id)", example = "14725") + @ExcelProperty("关联设备ID(关联iot_device.id)") + private Long machineId; + + @Schema(description = "关联设备编码(冗余字段)") + @ExcelProperty("关联设备编码(冗余字段)") + private String machineCode; + + @Schema(description = "关联设备名称(冗余字段)", example = "芋艿") + @ExcelProperty("关联设备名称(冗余字段)") + private String machineName; + + @Schema(description = "配方描述") + @ExcelProperty("配方描述") + private String recipeDesc; + + @Schema(description = "是否启用(0-禁用,1-启用)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否启用(0-禁用,1-启用)") + private Boolean isEnable; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "数据单位") + @ExcelProperty("数据单位") + private String dataUnit; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipe/vo/RecipeSaveReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipe/vo/RecipeSaveReqVO.java new file mode 100644 index 000000000..5fe2cb1a8 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipe/vo/RecipeSaveReqVO.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.iot.controller.admin.recipe.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 配方管理主新增/修改 Request VO") +@Data +public class RecipeSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6587") + private Long id; + + @Schema(description = "配方名称", example = "赵六") + private String name; + + @Schema(description = "配方编码") + private String recipeCode; + + @Schema(description = "配方类型(关联配方类型表code)", example = "2") + private String recipeType; + + @Schema(description = "关联产品名称", example = "李四") + private String productName; + + @Schema(description = "关联设备ID(关联iot_device.id)", example = "14725") + private Long machineId; + + @Schema(description = "关联设备编码(冗余字段)") + private String machineCode; + + @Schema(description = "关联设备名称(冗余字段)", example = "芋艿") + private String machineName; + + @Schema(description = "配方描述") + private String recipeDesc; + + @Schema(description = "是否启用(0-禁用,1-启用)", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotNull(message = "是否启用(0-禁用,1-启用)不能为空") + private Boolean isEnable; + + @Schema(description = "数据单位") + private String dataUnit; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipepoint/RecipePointController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipepoint/RecipePointController.java new file mode 100644 index 000000000..9e316d507 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipepoint/RecipePointController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.iot.controller.admin.recipepoint; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +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 javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +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.recipepoint.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.recipepoint.RecipePointDO; +import cn.iocoder.yudao.module.iot.service.recipepoint.RecipePointService; + +@Tag(name = "管理后台 - 配方点位配置表(配方与设备点位关联)") +@RestController +@RequestMapping("/iot/recipe-point") +@Validated +public class RecipePointController { + + @Resource + private RecipePointService recipePointService; + + @PostMapping("/create") + @Operation(summary = "创建配方点位配置表(配方与设备点位关联)") + @PreAuthorize("@ss.hasPermission('iot:recipe-point:create')") + public CommonResult createRecipePoint(@Valid @RequestBody RecipePointSaveReqVO createReqVO) { + return success(recipePointService.createRecipePoint(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新配方点位配置表(配方与设备点位关联)") + @PreAuthorize("@ss.hasPermission('iot:recipe-point:update')") + public CommonResult updateRecipePoint(@Valid @RequestBody RecipePointSaveReqVO updateReqVO) { + recipePointService.updateRecipePoint(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除配方点位配置表(配方与设备点位关联)") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('iot:recipe-point:delete')") + public CommonResult deleteRecipePoint(@RequestParam("id") Long id) { + recipePointService.deleteRecipePoint(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得配方点位配置表(配方与设备点位关联)") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('iot:recipe-point:query')") + public CommonResult getRecipePoint(@RequestParam("id") Long id) { + RecipePointDO recipePoint = recipePointService.getRecipePoint(id); + return success(BeanUtils.toBean(recipePoint, RecipePointRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得配方点位配置表(配方与设备点位关联)分页") + @PreAuthorize("@ss.hasPermission('iot:recipe-point:query')") + public CommonResult> getRecipePointPage(@Valid RecipePointPageReqVO pageReqVO) { + PageResult pageResult = recipePointService.getRecipePointPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, RecipePointRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出配方点位配置表(配方与设备点位关联) Excel") + @PreAuthorize("@ss.hasPermission('iot:recipe-point:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportRecipePointExcel(@Valid RecipePointPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = recipePointService.getRecipePointPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "配方点位配置表(配方与设备点位关联).xls", "数据", RecipePointRespVO.class, + BeanUtils.toBean(list, RecipePointRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipepoint/vo/RecipePointPageReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipepoint/vo/RecipePointPageReqVO.java new file mode 100644 index 000000000..0b567382c --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipepoint/vo/RecipePointPageReqVO.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.iot.controller.admin.recipepoint.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 RecipePointPageReqVO extends PageParam { + + @Schema(description = "关联配方ID(关联iot_recipe.id)", example = "8760") + private Long recipeId; + + @Schema(description = "点位编码(关联iot_device_attribute_type.code)") + private String pointCode; + + @Schema(description = "点位名称", example = "李四") + private String pointName; + + @Schema(description = "点位类型", example = "1") + private String pointType; + + @Schema(description = "数据类型(如:Time、Number等)", example = "1") + private String dataType; + + @Schema(description = "单位(如:s、min等)") + private String unit; + + @Schema(description = "设定值") + private String setValue; + + @Schema(description = "实际值(从设备上载同步)") + private String actualValue; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipepoint/vo/RecipePointRespVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipepoint/vo/RecipePointRespVO.java new file mode 100644 index 000000000..d7ac9e423 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipepoint/vo/RecipePointRespVO.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.iot.controller.admin.recipepoint.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +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 RecipePointRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27323") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "关联配方ID(关联iot_recipe.id)", example = "8760") + @ExcelProperty("关联配方ID(关联iot_recipe.id)") + private Long recipeId; + + @Schema(description = "点位编码(关联iot_device_attribute_type.code)") + @ExcelProperty("点位编码(关联iot_device_attribute_type.code)") + private String pointCode; + + @Schema(description = "点位名称", example = "李四") + @ExcelProperty("点位名称") + private String pointName; + + @Schema(description = "点位类型", example = "1") + @ExcelProperty("点位类型") + private String pointType; + + @Schema(description = "数据类型(如:Time、Number等)", example = "1") + @ExcelProperty("数据类型(如:Time、Number等)") + private String dataType; + + @Schema(description = "单位(如:s、min等)") + @ExcelProperty("单位(如:s、min等)") + private String unit; + + @Schema(description = "设定值") + @ExcelProperty("设定值") + private String setValue; + + @Schema(description = "实际值(从设备上载同步)") + @ExcelProperty("实际值(从设备上载同步)") + private String actualValue; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipepoint/vo/RecipePointSaveReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipepoint/vo/RecipePointSaveReqVO.java new file mode 100644 index 000000000..911e2d49f --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipepoint/vo/RecipePointSaveReqVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.iot.controller.admin.recipepoint.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 配方点位配置表(配方与设备点位关联)新增/修改 Request VO") +@Data +public class RecipePointSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27323") + private Long id; + + @Schema(description = "关联配方ID(关联iot_recipe.id)", example = "8760") + private Long recipeId; + + @Schema(description = "点位编码(关联iot_device_attribute_type.code)") + private String pointCode; + + @Schema(description = "点位名称", example = "李四") + private String pointName; + + @Schema(description = "点位类型", example = "1") + private String pointType; + + @Schema(description = "数据类型(如:Time、Number等)", example = "1") + private String dataType; + + @Schema(description = "单位(如:s、min等)") + private String unit; + + @Schema(description = "设定值") + private String setValue; + + @Schema(description = "实际值(从设备上载同步)") + private String actualValue; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipetype/RecipeTypeController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipetype/RecipeTypeController.java new file mode 100644 index 000000000..cb6f49e07 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipetype/RecipeTypeController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.iot.controller.admin.recipetype; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +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 javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +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.recipetype.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.recipetype.RecipeTypeDO; +import cn.iocoder.yudao.module.iot.service.recipetype.RecipeTypeService; + +@Tag(name = "管理后台 - 配方类型表(基础字典)") +@RestController +@RequestMapping("/iot/recipe-type") +@Validated +public class RecipeTypeController { + + @Resource + private RecipeTypeService recipeTypeService; + + @PostMapping("/create") + @Operation(summary = "创建配方类型表(基础字典)") + @PreAuthorize("@ss.hasPermission('iot:recipe-type:create')") + public CommonResult createRecipeType(@Valid @RequestBody RecipeTypeSaveReqVO createReqVO) { + return success(recipeTypeService.createRecipeType(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新配方类型表(基础字典)") + @PreAuthorize("@ss.hasPermission('iot:recipe-type:update')") + public CommonResult updateRecipeType(@Valid @RequestBody RecipeTypeSaveReqVO updateReqVO) { + recipeTypeService.updateRecipeType(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除配方类型表(基础字典)") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('iot:recipe-type:delete')") + public CommonResult deleteRecipeType(@RequestParam("id") Long id) { + recipeTypeService.deleteRecipeType(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得配方类型表(基础字典)") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('iot:recipe-type:query')") + public CommonResult getRecipeType(@RequestParam("id") Long id) { + RecipeTypeDO recipeType = recipeTypeService.getRecipeType(id); + return success(BeanUtils.toBean(recipeType, RecipeTypeRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得配方类型表(基础字典)分页") + @PreAuthorize("@ss.hasPermission('iot:recipe-type:query')") + public CommonResult> getRecipeTypePage(@Valid RecipeTypePageReqVO pageReqVO) { + PageResult pageResult = recipeTypeService.getRecipeTypePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, RecipeTypeRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出配方类型表(基础字典) Excel") + @PreAuthorize("@ss.hasPermission('iot:recipe-type:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportRecipeTypeExcel(@Valid RecipeTypePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = recipeTypeService.getRecipeTypePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "配方类型表(基础字典).xls", "数据", RecipeTypeRespVO.class, + BeanUtils.toBean(list, RecipeTypeRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipetype/vo/RecipeTypePageReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipetype/vo/RecipeTypePageReqVO.java new file mode 100644 index 000000000..2555e5be3 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipetype/vo/RecipeTypePageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.iot.controller.admin.recipetype.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 RecipeTypePageReqVO extends PageParam { + + @Schema(description = "类型编码(唯一标识)") + private String code; + + @Schema(description = "类型名称", example = "张三") + private String name; + + @Schema(description = "关联工序") + private String process; + + @Schema(description = "配方类型描述", example = "你说的对") + private String remark; + + @Schema(description = "排序字段") + private Integer sort; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipetype/vo/RecipeTypeRespVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipetype/vo/RecipeTypeRespVO.java new file mode 100644 index 000000000..bdbc2442f --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipetype/vo/RecipeTypeRespVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.iot.controller.admin.recipetype.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +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 RecipeTypeRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21350") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "类型编码(唯一标识)") + @ExcelProperty("类型编码(唯一标识)") + private String code; + + @Schema(description = "类型名称", example = "张三") + @ExcelProperty("类型名称") + private String name; + + @Schema(description = "关联工序") + @ExcelProperty("关联工序") + private String process; + + @Schema(description = "配方类型描述", example = "你说的对") + @ExcelProperty("配方类型描述") + private String remark; + + @Schema(description = "排序字段", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("排序字段") + private Integer sort; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipetype/vo/RecipeTypeSaveReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipetype/vo/RecipeTypeSaveReqVO.java new file mode 100644 index 000000000..7c911aade --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/recipetype/vo/RecipeTypeSaveReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.iot.controller.admin.recipetype.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 配方类型表(基础字典)新增/修改 Request VO") +@Data +public class RecipeTypeSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21350") + private Long id; + + @Schema(description = "类型编码(唯一标识)") + private String code; + + @Schema(description = "类型名称", example = "张三") + private String name; + + @Schema(description = "关联工序") + private String process; + + @Schema(description = "配方类型描述", example = "你说的对") + private String remark; + + @Schema(description = "排序字段", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "排序字段不能为空") + private Integer sort; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/recipe/RecipeDO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/recipe/RecipeDO.java new file mode 100644 index 000000000..d91117042 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/recipe/RecipeDO.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.iot.dal.dataobject.recipe; + +import lombok.*; +import java.util.*; +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_recipe") +@KeySequence("iot_recipe_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class RecipeDO extends BaseDO { + + /** + * 主键ID + */ + @TableId + private Long id; + /** + * 配方名称 + */ + private String name; + /** + * 配方编码 + */ + private String recipeCode; + /** + * 配方类型(关联配方类型表code) + */ + private String recipeType; + /** + * 关联产品名称 + */ + private String productName; + /** + * 关联设备ID(关联iot_device.id) + */ + private Long machineId; + /** + * 关联设备编码(冗余字段) + */ + private String machineCode; + /** + * 关联设备名称(冗余字段) + */ + private String machineName; + /** + * 配方描述 + */ + private String recipeDesc; + /** + * 是否启用(0-禁用,1-启用) + */ + private Boolean isEnable; + /** + * 数据单位 + */ + private String dataUnit; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/recipepoint/RecipePointDO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/recipepoint/RecipePointDO.java new file mode 100644 index 000000000..a4ac7766a --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/recipepoint/RecipePointDO.java @@ -0,0 +1,63 @@ +package cn.iocoder.yudao.module.iot.dal.dataobject.recipepoint; + +import lombok.*; +import java.util.*; +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_recipe_point") +@KeySequence("iot_recipe_point_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class RecipePointDO extends BaseDO { + + /** + * 主键ID + */ + @TableId + private Long id; + /** + * 关联配方ID(关联iot_recipe.id) + */ + private Long recipeId; + /** + * 点位编码(关联iot_device_attribute_type.code) + */ + private String pointCode; + /** + * 点位名称 + */ + private String pointName; + /** + * 点位类型 + */ + private String pointType; + /** + * 数据类型(如:Time、Number等) + */ + private String dataType; + /** + * 单位(如:s、min等) + */ + private String unit; + /** + * 设定值 + */ + private String setValue; + /** + * 实际值(从设备上载同步) + */ + private String actualValue; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/recipetype/RecipeTypeDO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/recipetype/RecipeTypeDO.java new file mode 100644 index 000000000..8037af779 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/recipetype/RecipeTypeDO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.iot.dal.dataobject.recipetype; + +import lombok.*; +import java.util.*; +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_recipe_type") +@KeySequence("iot_recipe_type_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class RecipeTypeDO extends BaseDO { + + /** + * 主键ID + */ + @TableId + private Long id; + /** + * 类型编码(唯一标识) + */ + private String code; + /** + * 类型名称 + */ + private String name; + /** + * 关联工序 + */ + private String process; + /** + * 配方类型描述 + */ + private String remark; + /** + * 排序字段 + */ + private Integer sort; + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/recipe/RecipeMapper.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/recipe/RecipeMapper.java new file mode 100644 index 000000000..7bdca08e3 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/recipe/RecipeMapper.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.iot.dal.mysql.recipe; + +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.recipe.RecipeDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.iot.controller.admin.recipe.vo.*; + +/** + * 配方管理主 Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface RecipeMapper extends BaseMapperX { + + default PageResult selectPage(RecipePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(RecipeDO::getName, reqVO.getName()) + .eqIfPresent(RecipeDO::getRecipeCode, reqVO.getRecipeCode()) + .eqIfPresent(RecipeDO::getRecipeType, reqVO.getRecipeType()) + .likeIfPresent(RecipeDO::getProductName, reqVO.getProductName()) + .eqIfPresent(RecipeDO::getMachineId, reqVO.getMachineId()) + .eqIfPresent(RecipeDO::getMachineCode, reqVO.getMachineCode()) + .likeIfPresent(RecipeDO::getMachineName, reqVO.getMachineName()) + .eqIfPresent(RecipeDO::getRecipeDesc, reqVO.getRecipeDesc()) + .eqIfPresent(RecipeDO::getIsEnable, reqVO.getIsEnable()) + .betweenIfPresent(RecipeDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(RecipeDO::getDataUnit, reqVO.getDataUnit()) + .orderByDesc(RecipeDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/recipepoint/RecipePointMapper.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/recipepoint/RecipePointMapper.java new file mode 100644 index 000000000..2e131522b --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/recipepoint/RecipePointMapper.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.iot.dal.mysql.recipepoint; + +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.recipepoint.RecipePointDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.iot.controller.admin.recipepoint.vo.*; + +/** + * 配方点位配置表(配方与设备点位关联) Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface RecipePointMapper extends BaseMapperX { + + default PageResult selectPage(RecipePointPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(RecipePointDO::getRecipeId, reqVO.getRecipeId()) + .eqIfPresent(RecipePointDO::getPointCode, reqVO.getPointCode()) + .likeIfPresent(RecipePointDO::getPointName, reqVO.getPointName()) + .eqIfPresent(RecipePointDO::getPointType, reqVO.getPointType()) + .eqIfPresent(RecipePointDO::getDataType, reqVO.getDataType()) + .eqIfPresent(RecipePointDO::getUnit, reqVO.getUnit()) + .eqIfPresent(RecipePointDO::getSetValue, reqVO.getSetValue()) + .eqIfPresent(RecipePointDO::getActualValue, reqVO.getActualValue()) + .betweenIfPresent(RecipePointDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(RecipePointDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/recipetype/RecipeTypeMapper.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/recipetype/RecipeTypeMapper.java new file mode 100644 index 000000000..ae4d3bc64 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/recipetype/RecipeTypeMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.iot.dal.mysql.recipetype; + +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.recipetype.RecipeTypeDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.iot.controller.admin.recipetype.vo.*; + +/** + * 配方类型表(基础字典) Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface RecipeTypeMapper extends BaseMapperX { + + default PageResult selectPage(RecipeTypePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(RecipeTypeDO::getCode, reqVO.getCode()) + .likeIfPresent(RecipeTypeDO::getName, reqVO.getName()) + .eqIfPresent(RecipeTypeDO::getProcess, reqVO.getProcess()) + .eqIfPresent(RecipeTypeDO::getRemark, reqVO.getRemark()) + .eqIfPresent(RecipeTypeDO::getSort, reqVO.getSort()) + .betweenIfPresent(RecipeTypeDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(RecipeTypeDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipe/RecipeService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipe/RecipeService.java new file mode 100644 index 000000000..892f1fc80 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipe/RecipeService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.iot.service.recipe; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.iot.controller.admin.recipe.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.recipe.RecipeDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 配方管理主 Service 接口 + * + * @author 内蒙必硕 + */ +public interface RecipeService { + + /** + * 创建配方管理主 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createRecipe(@Valid RecipeSaveReqVO createReqVO); + + /** + * 更新配方管理主 + * + * @param updateReqVO 更新信息 + */ + void updateRecipe(@Valid RecipeSaveReqVO updateReqVO); + + /** + * 删除配方管理主 + * + * @param id 编号 + */ + void deleteRecipe(Long id); + + /** + * 获得配方管理主 + * + * @param id 编号 + * @return 配方管理主 + */ + RecipeDO getRecipe(Long id); + + /** + * 获得配方管理主分页 + * + * @param pageReqVO 分页查询 + * @return 配方管理主分页 + */ + PageResult getRecipePage(RecipePageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipe/RecipeServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipe/RecipeServiceImpl.java new file mode 100644 index 000000000..6a4733a30 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipe/RecipeServiceImpl.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.iot.service.recipe; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.iot.controller.admin.recipe.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.recipe.RecipeDO; +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.recipe.RecipeMapper; + +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 RecipeServiceImpl implements RecipeService { + + @Resource + private RecipeMapper recipeMapper; + + @Override + public Long createRecipe(RecipeSaveReqVO createReqVO) { + // 插入 + RecipeDO recipe = BeanUtils.toBean(createReqVO, RecipeDO.class); + recipeMapper.insert(recipe); + // 返回 + return recipe.getId(); + } + + @Override + public void updateRecipe(RecipeSaveReqVO updateReqVO) { + // 校验存在 + validateRecipeExists(updateReqVO.getId()); + // 更新 + RecipeDO updateObj = BeanUtils.toBean(updateReqVO, RecipeDO.class); + recipeMapper.updateById(updateObj); + } + + @Override + public void deleteRecipe(Long id) { + // 校验存在 + validateRecipeExists(id); + // 删除 + recipeMapper.deleteById(id); + } + + private void validateRecipeExists(Long id) { + if (recipeMapper.selectById(id) == null) { + throw exception(RECIPE_NOT_EXISTS); + } + } + + @Override + public RecipeDO getRecipe(Long id) { + return recipeMapper.selectById(id); + } + + @Override + public PageResult getRecipePage(RecipePageReqVO pageReqVO) { + return recipeMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipepoint/RecipePointService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipepoint/RecipePointService.java new file mode 100644 index 000000000..a50071eb1 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipepoint/RecipePointService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.iot.service.recipepoint; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.iot.controller.admin.recipepoint.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.recipepoint.RecipePointDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 配方点位配置表(配方与设备点位关联) Service 接口 + * + * @author 内蒙必硕 + */ +public interface RecipePointService { + + /** + * 创建配方点位配置表(配方与设备点位关联) + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createRecipePoint(@Valid RecipePointSaveReqVO createReqVO); + + /** + * 更新配方点位配置表(配方与设备点位关联) + * + * @param updateReqVO 更新信息 + */ + void updateRecipePoint(@Valid RecipePointSaveReqVO updateReqVO); + + /** + * 删除配方点位配置表(配方与设备点位关联) + * + * @param id 编号 + */ + void deleteRecipePoint(Long id); + + /** + * 获得配方点位配置表(配方与设备点位关联) + * + * @param id 编号 + * @return 配方点位配置表(配方与设备点位关联) + */ + RecipePointDO getRecipePoint(Long id); + + /** + * 获得配方点位配置表(配方与设备点位关联)分页 + * + * @param pageReqVO 分页查询 + * @return 配方点位配置表(配方与设备点位关联)分页 + */ + PageResult getRecipePointPage(RecipePointPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipepoint/RecipePointServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipepoint/RecipePointServiceImpl.java new file mode 100644 index 000000000..b3b1de02f --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipepoint/RecipePointServiceImpl.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.iot.service.recipepoint; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.iot.controller.admin.recipepoint.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.recipepoint.RecipePointDO; +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.recipepoint.RecipePointMapper; + +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 RecipePointServiceImpl implements RecipePointService { + + @Resource + private RecipePointMapper recipePointMapper; + + @Override + public Long createRecipePoint(RecipePointSaveReqVO createReqVO) { + // 插入 + RecipePointDO recipePoint = BeanUtils.toBean(createReqVO, RecipePointDO.class); + recipePointMapper.insert(recipePoint); + // 返回 + return recipePoint.getId(); + } + + @Override + public void updateRecipePoint(RecipePointSaveReqVO updateReqVO) { + // 校验存在 + validateRecipePointExists(updateReqVO.getId()); + // 更新 + RecipePointDO updateObj = BeanUtils.toBean(updateReqVO, RecipePointDO.class); + recipePointMapper.updateById(updateObj); + } + + @Override + public void deleteRecipePoint(Long id) { + // 校验存在 + validateRecipePointExists(id); + // 删除 + recipePointMapper.deleteById(id); + } + + private void validateRecipePointExists(Long id) { + if (recipePointMapper.selectById(id) == null) { + throw exception(RECIPE_POINT_NOT_EXISTS); + } + } + + @Override + public RecipePointDO getRecipePoint(Long id) { + return recipePointMapper.selectById(id); + } + + @Override + public PageResult getRecipePointPage(RecipePointPageReqVO pageReqVO) { + return recipePointMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipetype/RecipeTypeService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipetype/RecipeTypeService.java new file mode 100644 index 000000000..1962a4c03 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipetype/RecipeTypeService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.iot.service.recipetype; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.iot.controller.admin.recipetype.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.recipetype.RecipeTypeDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 配方类型表(基础字典) Service 接口 + * + * @author 内蒙必硕 + */ +public interface RecipeTypeService { + + /** + * 创建配方类型表(基础字典) + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createRecipeType(@Valid RecipeTypeSaveReqVO createReqVO); + + /** + * 更新配方类型表(基础字典) + * + * @param updateReqVO 更新信息 + */ + void updateRecipeType(@Valid RecipeTypeSaveReqVO updateReqVO); + + /** + * 删除配方类型表(基础字典) + * + * @param id 编号 + */ + void deleteRecipeType(Long id); + + /** + * 获得配方类型表(基础字典) + * + * @param id 编号 + * @return 配方类型表(基础字典) + */ + RecipeTypeDO getRecipeType(Long id); + + /** + * 获得配方类型表(基础字典)分页 + * + * @param pageReqVO 分页查询 + * @return 配方类型表(基础字典)分页 + */ + PageResult getRecipeTypePage(RecipeTypePageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipetype/RecipeTypeServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipetype/RecipeTypeServiceImpl.java new file mode 100644 index 000000000..7bd061cdd --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/recipetype/RecipeTypeServiceImpl.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.iot.service.recipetype; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.iot.controller.admin.recipetype.vo.*; +import cn.iocoder.yudao.module.iot.dal.dataobject.recipetype.RecipeTypeDO; +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.recipetype.RecipeTypeMapper; + +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 RecipeTypeServiceImpl implements RecipeTypeService { + + @Resource + private RecipeTypeMapper recipeTypeMapper; + + @Override + public Long createRecipeType(RecipeTypeSaveReqVO createReqVO) { + // 插入 + RecipeTypeDO recipeType = BeanUtils.toBean(createReqVO, RecipeTypeDO.class); + recipeTypeMapper.insert(recipeType); + // 返回 + return recipeType.getId(); + } + + @Override + public void updateRecipeType(RecipeTypeSaveReqVO updateReqVO) { + // 校验存在 + validateRecipeTypeExists(updateReqVO.getId()); + // 更新 + RecipeTypeDO updateObj = BeanUtils.toBean(updateReqVO, RecipeTypeDO.class); + recipeTypeMapper.updateById(updateObj); + } + + @Override + public void deleteRecipeType(Long id) { + // 校验存在 + validateRecipeTypeExists(id); + // 删除 + recipeTypeMapper.deleteById(id); + } + + private void validateRecipeTypeExists(Long id) { + if (recipeTypeMapper.selectById(id) == null) { + throw exception(RECIPE_TYPE_NOT_EXISTS); + } + } + + @Override + public RecipeTypeDO getRecipeType(Long id) { + return recipeTypeMapper.selectById(id); + } + + @Override + public PageResult getRecipeTypePage(RecipeTypePageReqVO pageReqVO) { + return recipeTypeMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/recipe/RecipeMapper.xml b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/recipe/RecipeMapper.xml new file mode 100644 index 000000000..5fa73872c --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/recipe/RecipeMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/recipepoint/RecipePointMapper.xml b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/recipepoint/RecipePointMapper.xml new file mode 100644 index 000000000..be08e742f --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/recipepoint/RecipePointMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/recipetype/RecipeTypeMapper.xml b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/recipetype/RecipeTypeMapper.xml new file mode 100644 index 000000000..546fffde8 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/recipetype/RecipeTypeMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImplTest.java b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImplTest.java index 4fc34608b..c5261b0af 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImplTest.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImplTest.java @@ -106,12 +106,12 @@ public class DeviceServiceImplTest extends BaseDbUnitTest { } - @Test - public void testCreateTDengine() { - // 准备参数 - Long id = 12313L; - deviceService.createTDengine(id); - } +// @Test +// public void testCreateTDengine() { +// // 准备参数 +// Long id = 12313L; +// deviceService.createTDengine(id); +// } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/energydevice/EnergyDeviceServiceImplTest.java b/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/energydevice/EnergyDeviceServiceImplTest.java index bfc56f0e9..c9a162775 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/energydevice/EnergyDeviceServiceImplTest.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/energydevice/EnergyDeviceServiceImplTest.java @@ -112,7 +112,7 @@ public class EnergyDeviceServiceImplTest extends BaseDbUnitTest { EnergyDeviceDO dbEnergyDevice = randomPojo(EnergyDeviceDO.class, o -> { // 等会查询到 o.setName(null); o.setCode(null); - o.setDeviceType(null); +// o.setDeviceType(null); o.setInfo(null); o.setCheckCron(null); o.setLastCheckTime(null); @@ -127,7 +127,7 @@ public class EnergyDeviceServiceImplTest extends BaseDbUnitTest { // 测试 code 不匹配 energyDeviceMapper.insert(cloneIgnoreId(dbEnergyDevice, o -> o.setCode(null))); // 测试 deviceType 不匹配 - energyDeviceMapper.insert(cloneIgnoreId(dbEnergyDevice, o -> o.setDeviceType(null))); +// energyDeviceMapper.insert(cloneIgnoreId(dbEnergyDevice, o -> o.setDeviceType(null))); // 测试 info 不匹配 energyDeviceMapper.insert(cloneIgnoreId(dbEnergyDevice, o -> o.setInfo(null))); // 测试 checkCron 不匹配 @@ -146,7 +146,7 @@ public class EnergyDeviceServiceImplTest extends BaseDbUnitTest { EnergyDevicePageReqVO reqVO = new EnergyDevicePageReqVO(); reqVO.setName(null); reqVO.setCode(null); - reqVO.setDeviceType(null); +// reqVO.setDeviceType(null); reqVO.setInfo(null); reqVO.setCheckCron(null); reqVO.setLastCheckTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));