diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java index 48ee62ddf..2dc5de4ae 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java @@ -181,6 +181,7 @@ public interface ErrorCodeConstants { // ========== 除尘系统信息 TODO 补充编号 ========== ErrorCode DUST_EQUIPINFO_NOT_EXISTS = new ErrorCode(1_002_029_006, "除尘系统信息不存在"); + ErrorCode DUST_TARGETINFO_NOT_EXISTS = new ErrorCode(1_002_030_007, "除尘系统监测指标信息不存在"); // ========== 粉尘种类 TODO 补充编号 ========== ErrorCode DUST_TYPE_NOT_EXISTS = new ErrorCode(1_002_030_001, "粉尘种类不存在"); ErrorCode DUST_TYPE_EXITS_CHILDREN = new ErrorCode(1_002_030_002, "存在存在子粉尘种类,无法删除"); diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dustcompanyinfo/DustCompanyinfoController.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dustcompanyinfo/DustCompanyinfoController.java index 02ecea9d8..6edd32da2 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dustcompanyinfo/DustCompanyinfoController.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dustcompanyinfo/DustCompanyinfoController.java @@ -99,10 +99,10 @@ public class DustCompanyinfoController { DustTypeDO dustType = dustTypeService.getDustType(dustDustinfo.getDustType()); if (dustType != null && dustType.getName()!=null){ fullDustName = dustType.getName(); - } - DustTypeDO dustType1 = dustTypeService.getDustType(dustType.getParentId()); - if (dustType1!=null && dustType1.getName()!=null){ - fullDustName = dustType1.getName()+"/"+fullDustName; + DustTypeDO dustType1 = dustTypeService.getDustType(dustType.getParentId()); + if (dustType1!=null && dustType1.getName()!=null){ + fullDustName = dustType1.getName()+"/"+fullDustName; + } } dustinfoRespVO.setDustTypeName(fullDustName); } diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dustequipinfo/DustEquipinfoController.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dustequipinfo/DustEquipinfoController.java index 2981ec0a2..34c53a0e8 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dustequipinfo/DustEquipinfoController.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dustequipinfo/DustEquipinfoController.java @@ -1,7 +1,10 @@ package cn.iocoder.yudao.module.system.controller.admin.dustequipinfo; +import cn.iocoder.yudao.module.system.dal.dataobject.dusttargetinfo.DustTargetinfoDO; import cn.iocoder.yudao.module.system.dal.dataobject.dusttype.DustTypeDO; +import cn.iocoder.yudao.module.system.service.dusttargetinfo.DustTargetinfoService; import cn.iocoder.yudao.module.system.service.dusttype.DustTypeService; +import org.springframework.validation.Errors; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -22,6 +25,8 @@ 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.error; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; @@ -42,6 +47,9 @@ public class DustEquipinfoController { @Resource private DustEquipinfoService dustEquipinfoService; + @Resource + private DustTargetinfoService dustTargetinfoService; + @Resource private DustTypeService dustTypeService; @PostMapping("/create") @@ -64,6 +72,15 @@ public class DustEquipinfoController { @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('system:dust-equipinfo:delete')") public CommonResult deleteDustEquipinfo(@RequestParam("id") String id) { + //判断该除尘系统设备是否关联了除尘系统监测指标 + DustEquipinfoDO dustEquipinfo = dustEquipinfoService.getDustEquipinfo(id); + String equipCode = dustEquipinfo.getEquipCode(); + List list = dustTargetinfoService.getEquipTargetList(equipCode); + if (list!=null && list.size()>0){ + CommonResult result = new CommonResult<>(); + result.setMsg("该除尘系统设备已关联了除尘系统监测指标,请先删除关联的除尘系统监测指标"); + return error(result); + } dustEquipinfoService.deleteDustEquipinfo(id); return success(true); } @@ -73,6 +90,8 @@ public class DustEquipinfoController { @Operation(summary = "批量删除除尘系统信息") @PreAuthorize("@ss.hasPermission('system:dust-equipinfo:delete')") public CommonResult deleteDustEquipinfoList(@RequestParam("ids") List ids) { + //判断该除尘系统设备是否关联了除尘系统监测指标 + dustEquipinfoService.deleteDustEquipinfoListByIds(ids); return success(true); } @@ -93,11 +112,12 @@ public class DustEquipinfoController { DustTypeDO dustType = dustTypeService.getDustType(dustEquipinfo.getDustType()); if (dustType != null && dustType.getName()!=null){ fullDustName = dustType.getName(); + DustTypeDO dustType1 = dustTypeService.getDustType(dustType.getParentId()); + if (dustType1!=null && dustType1.getName()!=null){ + fullDustName = dustType1.getName()+"/"+fullDustName; + } } - DustTypeDO dustType1 = dustTypeService.getDustType(dustType.getParentId()); - if (dustType1!=null && dustType1.getName()!=null){ - fullDustName = dustType1.getName()+"/"+fullDustName; - } + respVO.setDustTypeName(fullDustName); } return success(respVO); @@ -123,6 +143,15 @@ public class DustEquipinfoController { return success(result); } + @GetMapping("/all") + @Operation(summary = "获得所有除尘系统信息") + @PreAuthorize("@ss.hasPermission('system:dust-equipinfo:query')") + public CommonResult> getDustEquipinfoList() { + List list = dustEquipinfoService.getDustEquipinfoList(); + List result = BeanUtils.toBean(list, DustEquipinfoRespVO.class); + return success(result); + } + @GetMapping("/export-excel") @Operation(summary = "导出除尘系统信息 Excel") @PreAuthorize("@ss.hasPermission('system:dust-equipinfo:export')") diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dustequipinfo/vo/DustEquipinfoSaveReqVO.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dustequipinfo/vo/DustEquipinfoSaveReqVO.java index f97e9cce9..66845f1a2 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dustequipinfo/vo/DustEquipinfoSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dustequipinfo/vo/DustEquipinfoSaveReqVO.java @@ -16,7 +16,7 @@ public class DustEquipinfoSaveReqVO { private String id; @Schema(description = "设备编码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "设备编码不能为空") +// @NotEmpty(message = "设备编码不能为空") private String equipCode; @Schema(description = "物联网设备", requiredMode = Schema.RequiredMode.REQUIRED) @@ -28,7 +28,7 @@ public class DustEquipinfoSaveReqVO { private String equipName; @Schema(description = "数据接入标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "4826") - @NotEmpty(message = "数据接入标识不能为空") +// @NotEmpty(message = "数据接入标识不能为空") private String dataId; @Schema(description = "所属车间", requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dusttargetinfo/DustTargetinfoController.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dusttargetinfo/DustTargetinfoController.java new file mode 100644 index 000000000..4090fc21c --- /dev/null +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dusttargetinfo/DustTargetinfoController.java @@ -0,0 +1,117 @@ +package cn.iocoder.yudao.module.system.controller.admin.dusttargetinfo; + +import cn.iocoder.yudao.module.system.service.dustequipinfo.DustEquipinfoService; +import org.springframework.web.bind.annotation.*; +import jakarta.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 jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.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.system.controller.admin.dusttargetinfo.vo.*; +import cn.iocoder.yudao.module.system.dal.dataobject.dusttargetinfo.DustTargetinfoDO; +import cn.iocoder.yudao.module.system.service.dusttargetinfo.DustTargetinfoService; + +@Tag(name = "管理后台 - 除尘系统监测指标信息") +@RestController +@RequestMapping("/system/dust-targetinfo") +@Validated +public class DustTargetinfoController { + + @Resource + private DustTargetinfoService dustTargetinfoService; + + @Resource + private DustEquipinfoService dustEquipinfoService; + @PostMapping("/create") + @Operation(summary = "创建除尘系统监测指标信息") + @PreAuthorize("@ss.hasPermission('system:dust-targetinfo:create')") + public CommonResult createDustTargetinfo(@Valid @RequestBody DustTargetinfoSaveReqVO createReqVO) { + return success(dustTargetinfoService.createDustTargetinfo(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新除尘系统监测指标信息") + @PreAuthorize("@ss.hasPermission('system:dust-targetinfo:update')") + public CommonResult updateDustTargetinfo(@Valid @RequestBody DustTargetinfoSaveReqVO updateReqVO) { + dustTargetinfoService.updateDustTargetinfo(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除除尘系统监测指标信息") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('system:dust-targetinfo:delete')") + public CommonResult deleteDustTargetinfo(@RequestParam("id") String id) { + dustTargetinfoService.deleteDustTargetinfo(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除除尘系统监测指标信息") + @PreAuthorize("@ss.hasPermission('system:dust-targetinfo:delete')") + public CommonResult deleteDustTargetinfoList(@RequestParam("ids") List ids) { + dustTargetinfoService.deleteDustTargetinfoListByIds(ids); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得除尘系统监测指标信息") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('system:dust-targetinfo:query')") + public CommonResult getDustTargetinfo(@RequestParam("id") String id) { + DustTargetinfoDO dustTargetinfo = dustTargetinfoService.getDustTargetinfo(id); + DustTargetinfoRespVO respVO = BeanUtils.toBean(dustTargetinfo, DustTargetinfoRespVO.class); + String equipName = dustEquipinfoService.getDustEquipNameByCode(dustTargetinfo.getEquipCode()); + respVO.setEquipCodeName(equipName != null ? equipName : ""); + return success(respVO); + } + + @GetMapping("/page") + @Operation(summary = "获得除尘系统监测指标信息分页") + @PreAuthorize("@ss.hasPermission('system:dust-targetinfo:query')") + public CommonResult> getDustTargetinfoPage(@Valid DustTargetinfoPageReqVO pageReqVO) { + PageResult pageResult = dustTargetinfoService.getDustTargetinfoPage(pageReqVO); + PageResult result = BeanUtils.toBean(pageResult, DustTargetinfoRespVO.class); + for (DustTargetinfoRespVO vo : result.getList()) { + if (vo != null && vo.getEquipCode() != null) { + String equipName = dustEquipinfoService.getDustEquipNameByCode(vo.getEquipCode()); + vo.setEquipCodeName(equipName != null ? equipName : ""); + } + } + return success(result); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出除尘系统监测指标信息 Excel") + @PreAuthorize("@ss.hasPermission('system:dust-targetinfo:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportDustTargetinfoExcel(@Valid DustTargetinfoPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = dustTargetinfoService.getDustTargetinfoPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "除尘系统监测指标信息.xls", "数据", DustTargetinfoRespVO.class, + BeanUtils.toBean(list, DustTargetinfoRespVO.class)); + } + +} diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dusttargetinfo/vo/DustTargetinfoPageReqVO.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dusttargetinfo/vo/DustTargetinfoPageReqVO.java new file mode 100644 index 000000000..ca0154b9b --- /dev/null +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dusttargetinfo/vo/DustTargetinfoPageReqVO.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.system.controller.admin.dusttargetinfo.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 +public class DustTargetinfoPageReqVO extends PageParam { + + @Schema(description = "指标编码") + private String targetCode; + + @Schema(description = "指标名称", example = "王五") + private String targetName; + + @Schema(description = "所属除尘系统编码") + private String equipCode; + + @Schema(description = "指标类别", example = "2") + private String targetType; + + @Schema(description = "指标位置") + private String targetPlace; + + @Schema(description = "计量单位") + private String targetUnit; + + @Schema(description = "指标阈值上限 ") + private BigDecimal thresholdUpLimit; + + @Schema(description = "指标阈值上上限 ") + private BigDecimal thresholdUpUpLimit; + + @Schema(description = "指标阈值下限 ") + private BigDecimal thresholdDownLimit; + + @Schema(description = "指标阈值下下限 ") + private BigDecimal thresholdDownDownLimit; + + @Schema(description = "量程上限") + private BigDecimal rangeUp; + private BigDecimal rangeDown; + @Schema(description = "描述 ", example = "你猜") + private String targetDescription; + + @Schema(description = "位号") + private String bitNo; + + @Schema(description = "信号类型", example = "1") + private String signalType; + + @Schema(description = "开关量报警值") + private Integer alarmValue; + + @Schema(description = "指标停用状态", example = "2") + private String targetStatus; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dusttargetinfo/vo/DustTargetinfoRespVO.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dusttargetinfo/vo/DustTargetinfoRespVO.java new file mode 100644 index 000000000..e50769e0c --- /dev/null +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dusttargetinfo/vo/DustTargetinfoRespVO.java @@ -0,0 +1,96 @@ +package cn.iocoder.yudao.module.system.controller.admin.dusttargetinfo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import cn.idev.excel.annotation.*; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 除尘系统监测指标信息 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DustTargetinfoRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "23526") + @ExcelProperty("主键") + private String id; + + @Schema(description = "指标编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("指标编码") + private String targetCode; + + @Schema(description = "指标名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty(value = "指标名称", converter = DictConvert.class) + @DictFormat("target_name") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String targetName; + + @Schema(description = "所属除尘系统编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("所属除尘系统编码") + private String equipCode; + private String equipCodeName; + + @Schema(description = "指标类别", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty(value = "指标类别", converter = DictConvert.class) + @DictFormat("target_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String targetType; + + @Schema(description = "指标位置", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("指标位置") + private String targetPlace; + + @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("计量单位") + private String targetUnit; + + @Schema(description = "指标阈值上限 ") + @ExcelProperty("指标阈值上限 ") + private BigDecimal thresholdUpLimit; + + @Schema(description = "指标阈值上上限 ") + @ExcelProperty("指标阈值上上限 ") + private BigDecimal thresholdUpUpLimit; + + @Schema(description = "指标阈值下限 ") + @ExcelProperty("指标阈值下限 ") + private BigDecimal thresholdDownLimit; + + @Schema(description = "指标阈值下下限 ") + @ExcelProperty("指标阈值下下限 ") + private BigDecimal thresholdDownDownLimit; + + @Schema(description = "量程上限") + @ExcelProperty("量程上限") + private BigDecimal rangeUp; + private BigDecimal rangeDown; + @Schema(description = "描述 ", example = "你猜") + @ExcelProperty("描述 ") + private String targetDescription; + + @Schema(description = "位号") + @ExcelProperty("位号") + private String bitNo; + + @Schema(description = "信号类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty(value = "信号类型", converter = DictConvert.class) + @DictFormat("signal_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String signalType; + + @Schema(description = "开关量报警值") + @ExcelProperty(value = "开关量报警值", converter = DictConvert.class) + @DictFormat("alarm_value") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Integer alarmValue; + + @Schema(description = "指标停用状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty(value = "指标停用状态", converter = DictConvert.class) + @DictFormat("target_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String targetStatus; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dusttargetinfo/vo/DustTargetinfoSaveReqVO.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dusttargetinfo/vo/DustTargetinfoSaveReqVO.java new file mode 100644 index 000000000..d4269eb63 --- /dev/null +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dusttargetinfo/vo/DustTargetinfoSaveReqVO.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.module.system.controller.admin.dusttargetinfo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 除尘系统监测指标信息新增/修改 Request VO") +@Data +public class DustTargetinfoSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "23526") + private String id; + + @Schema(description = "指标编码", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotEmpty(message = "指标编码不能为空") + private String targetCode; + + @Schema(description = "指标名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "指标名称不能为空") + private String targetName; + + @Schema(description = "所属除尘系统编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "所属除尘系统编码不能为空") + private String equipCode; + + @Schema(description = "指标类别", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "指标类别不能为空") + private String targetType; + + @Schema(description = "指标位置", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "指标位置不能为空") + private String targetPlace; + + @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotEmpty(message = "计量单位不能为空") + private String targetUnit; + + @Schema(description = "指标阈值上限 ") + private BigDecimal thresholdUpLimit; + + @Schema(description = "指标阈值上上限 ") + private BigDecimal thresholdUpUpLimit; + + @Schema(description = "指标阈值下限 ") + private BigDecimal thresholdDownLimit; + + @Schema(description = "指标阈值下下限 ") + private BigDecimal thresholdDownDownLimit; + + @Schema(description = "量程上限") + private BigDecimal rangeUp; + + @Schema(description = "量程下限") + private BigDecimal rangeDown; + + @Schema(description = "描述 ", example = "你猜") + private String targetDescription; + + @Schema(description = "位号") + private String bitNo; + + @Schema(description = "信号类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotEmpty(message = "信号类型不能为空") + private String signalType; + + @Schema(description = "开关量报警值") + private Integer alarmValue; + + @Schema(description = "指标停用状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "指标停用状态不能为空") + private String targetStatus; + +} diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dusttargetinfo/DustTargetinfoDO.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dusttargetinfo/DustTargetinfoDO.java new file mode 100644 index 000000000..3a299fd72 --- /dev/null +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dusttargetinfo/DustTargetinfoDO.java @@ -0,0 +1,116 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.dusttargetinfo; + +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +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("hazard_dust_targetinfo") +@KeySequence("hazard_dust_targetinfo_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DustTargetinfoDO extends BaseDO { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private String id; + /** + * 指标编码 + */ + private String targetCode; + /** + * 指标名称 + * + * 枚举 {@link TODO target_name 对应的类} + */ + private String targetName; + /** + * 所属除尘系统编码 + */ + private String equipCode; + /** + * 指标类别 + * + * 枚举 {@link TODO target_type 对应的类} + */ + private String targetType; + /** + * 指标位置 + */ + private String targetPlace; + /** + * 计量单位 + */ + private String targetUnit; + /** + * 指标阈值上限 + */ + private BigDecimal thresholdUpLimit; + /** + * 指标阈值上上限 + */ + private BigDecimal thresholdUpUpLimit; + /** + * 指标阈值下限 + */ + private BigDecimal thresholdDownLimit; + /** + * 指标阈值下下限 + */ + private BigDecimal thresholdDownDownLimit; + /** + * 量程上限 + */ + private BigDecimal rangeUp; + + /** + * 量程下限 + */ + private BigDecimal rangeDown; + /** + * 描述 + */ + private String targetDescription; + /** + * 位号 + */ + private String bitNo; + /** + * 信号类型 + * + * 枚举 {@link TODO signal_type 对应的类} + */ + private String signalType; + /** + * 开关量报警值 + * + * 枚举 {@link TODO alarm_value 对应的类} + */ + private Integer alarmValue; + /** + * 指标停用状态 + * + * 枚举 {@link TODO target_status 对应的类} + */ + private String targetStatus; + + +} diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dustequipinfo/DustEquipinfoMapper.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dustequipinfo/DustEquipinfoMapper.java index 1d47fb2a6..b7d420e7f 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dustequipinfo/DustEquipinfoMapper.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dustequipinfo/DustEquipinfoMapper.java @@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.module.system.dal.dataobject.dustequipinfo.DustEquipinfoDO; import org.apache.ibatis.annotations.Mapper; import cn.iocoder.yudao.module.system.controller.admin.dustequipinfo.vo.*; +import org.apache.ibatis.annotations.Select; /** * 除尘系统信息 Mapper @@ -36,5 +37,7 @@ public interface DustEquipinfoMapper extends BaseMapperX { .betweenIfPresent(DustEquipinfoDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(DustEquipinfoDO::getId)); } + @Select("select equip_code from hazard_dust_equipinfo where data_id = #{dataId} and deleted = 0 ORDER BY CAST(equip_code AS UNSIGNED) DESC LIMIT 1") + Long getMaxEquipCode(String dataId); -} \ No newline at end of file +} diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dusttargetinfo/DustTargetinfoMapper.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dusttargetinfo/DustTargetinfoMapper.java new file mode 100644 index 000000000..240924753 --- /dev/null +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dusttargetinfo/DustTargetinfoMapper.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.module.system.dal.mysql.dusttargetinfo; + +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.system.dal.dataobject.dusttargetinfo.DustTargetinfoDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.system.controller.admin.dusttargetinfo.vo.*; +import org.apache.ibatis.annotations.Select; + +/** + * 除尘系统监测指标信息 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface DustTargetinfoMapper extends BaseMapperX { + + default PageResult selectPage(DustTargetinfoPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DustTargetinfoDO::getTargetCode, reqVO.getTargetCode()) + .likeIfPresent(DustTargetinfoDO::getTargetName, reqVO.getTargetName()) + .eqIfPresent(DustTargetinfoDO::getEquipCode, reqVO.getEquipCode()) + .eqIfPresent(DustTargetinfoDO::getTargetType, reqVO.getTargetType()) + .eqIfPresent(DustTargetinfoDO::getTargetPlace, reqVO.getTargetPlace()) + .eqIfPresent(DustTargetinfoDO::getTargetUnit, reqVO.getTargetUnit()) + .eqIfPresent(DustTargetinfoDO::getThresholdUpLimit, reqVO.getThresholdUpLimit()) + .eqIfPresent(DustTargetinfoDO::getThresholdUpUpLimit, reqVO.getThresholdUpUpLimit()) + .eqIfPresent(DustTargetinfoDO::getThresholdDownLimit, reqVO.getThresholdDownLimit()) + .eqIfPresent(DustTargetinfoDO::getThresholdDownDownLimit, reqVO.getThresholdDownDownLimit()) + .eqIfPresent(DustTargetinfoDO::getRangeUp, reqVO.getRangeUp()) + .eqIfPresent(DustTargetinfoDO::getTargetDescription, reqVO.getTargetDescription()) + .eqIfPresent(DustTargetinfoDO::getBitNo, reqVO.getBitNo()) + .eqIfPresent(DustTargetinfoDO::getSignalType, reqVO.getSignalType()) + .eqIfPresent(DustTargetinfoDO::getAlarmValue, reqVO.getAlarmValue()) + .eqIfPresent(DustTargetinfoDO::getTargetStatus, reqVO.getTargetStatus()) + .betweenIfPresent(DustTargetinfoDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(DustTargetinfoDO::getId)); + } + @Select("select equip_code from hazard_dust_targetinfo where equip_code = #{equipCode} and deleted = 0 ORDER BY CAST(target_code AS UNSIGNED) DESC LIMIT 1") + Long getMaxTargetCode(String equipCode); +} diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dustcompanyinfo/DustCompanyinfoService.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dustcompanyinfo/DustCompanyinfoService.java index 14a060461..65e3b3dc6 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dustcompanyinfo/DustCompanyinfoService.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dustcompanyinfo/DustCompanyinfoService.java @@ -59,4 +59,5 @@ public interface DustCompanyinfoService { */ PageResult getDustCompanyinfoPage(DustCompanyinfoPageReqVO pageReqVO); -} \ No newline at end of file + String getDataIdByTenantId(Long tenantId); +} diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dustcompanyinfo/DustCompanyinfoServiceImpl.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dustcompanyinfo/DustCompanyinfoServiceImpl.java index 62bb04827..231386094 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dustcompanyinfo/DustCompanyinfoServiceImpl.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dustcompanyinfo/DustCompanyinfoServiceImpl.java @@ -102,4 +102,13 @@ public class DustCompanyinfoServiceImpl implements DustCompanyinfoService { return dustCompanyinfoMapper.selectPage(pageReqVO); } + @Override + public String getDataIdByTenantId(Long tenantId) { + DustCompanyinfoDO selectedOne = dustCompanyinfoMapper.selectOne("tenantId", tenantId); + if (selectedOne == null || selectedOne.getDeleted()) { + return null; + } + return selectedOne.getDataId(); + } + } diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dustequipinfo/DustEquipinfoService.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dustequipinfo/DustEquipinfoService.java index 9703c8ef2..e188596fd 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dustequipinfo/DustEquipinfoService.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dustequipinfo/DustEquipinfoService.java @@ -59,4 +59,7 @@ public interface DustEquipinfoService { */ PageResult getDustEquipinfoPage(DustEquipinfoPageReqVO pageReqVO); -} \ No newline at end of file + List getDustEquipinfoList(); + + String getDustEquipNameByCode(String equipCode); +} diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dustequipinfo/DustEquipinfoServiceImpl.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dustequipinfo/DustEquipinfoServiceImpl.java index 8dc5aab4a..726cb4f92 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dustequipinfo/DustEquipinfoServiceImpl.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dustequipinfo/DustEquipinfoServiceImpl.java @@ -1,6 +1,8 @@ package cn.iocoder.yudao.module.system.service.dustequipinfo; import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.security.core.LoginUser; +import cn.iocoder.yudao.module.system.service.dustcompanyinfo.DustCompanyinfoService; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -18,6 +20,7 @@ import cn.iocoder.yudao.module.system.dal.mysql.dustequipinfo.DustEquipinfoMappe import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; /** @@ -31,12 +34,35 @@ public class DustEquipinfoServiceImpl implements DustEquipinfoService { @Resource private DustEquipinfoMapper dustEquipinfoMapper; + @Resource + private DustCompanyinfoService dustCompanyinfoService; @Override public String createDustEquipinfo(DustEquipinfoSaveReqVO createReqVO) { // 插入 String join = String.join(",", createReqVO.getDustTechnology()); -// createReqVO.setDustTechnology(join); + //获取数据接入标识以及根据设备标识+流水号拼接设备编码 +// Long tenantId = Optional.ofNullable(getLoginUser()).map(LoginUser::getTenantId).orElse(null); +// String dataId = Optional.ofNullable(tenantId).map(id -> dustCompanyinfoService.getDataIdByTenantId(tenantId)).orElse(null); +// createReqVO.setDataId(dataId); +// //根据数据介入标识查找数据库中数据接入标识最大的那个设备编码 +// Long maxEquipCode = dustEquipinfoMapper.getMaxEquipCode(dataId); +// if (maxEquipCode != null){ +// createReqVO.setEquipCode(String.valueOf(maxEquipCode + 1l)); +// } + // 使用 Optional 链式操作进行改造(体验一下函数式编程) + Optional.ofNullable(getLoginUser()) + .map(LoginUser::getTenantId) + .map(tenantId -> dustCompanyinfoService.getDataIdByTenantId(tenantId)) + .ifPresent(dataId -> { + createReqVO.setDataId(dataId); + // 继续查询最大设备编码 + Long maxCode = Optional.ofNullable(dustEquipinfoMapper.getMaxEquipCode(dataId)) + .filter(code -> code > 0) + .map(code -> code + 1) + .orElse(1L); // 默认从1开始 + createReqVO.setEquipCode(String.format("%03d", maxCode)); + }); DustEquipinfoDO dustEquipinfo = BeanUtils.toBean(createReqVO, DustEquipinfoDO.class); dustEquipinfo.setDustTechnology(join); dustEquipinfoMapper.insert(dustEquipinfo); @@ -61,6 +87,8 @@ public class DustEquipinfoServiceImpl implements DustEquipinfoService { public void deleteDustEquipinfo(String id) { // 校验存在 validateDustEquipinfoExists(id); + + // 删除 dustEquipinfoMapper.deleteById(id); } @@ -88,4 +116,15 @@ public class DustEquipinfoServiceImpl implements DustEquipinfoService { return dustEquipinfoMapper.selectPage(pageReqVO); } + @Override + public List getDustEquipinfoList() { + return dustEquipinfoMapper.selectList(); + } + + @Override + public String getDustEquipNameByCode(String equipCode) { + return Optional.ofNullable(dustEquipinfoMapper.selectOne(DustEquipinfoDO::getEquipCode, equipCode)) + .map(DustEquipinfoDO::getEquipName).orElse(null); + } + } diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dusttargetinfo/DustTargetinfoService.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dusttargetinfo/DustTargetinfoService.java new file mode 100644 index 000000000..02743e1ba --- /dev/null +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dusttargetinfo/DustTargetinfoService.java @@ -0,0 +1,63 @@ +package cn.iocoder.yudao.module.system.service.dusttargetinfo; + +import java.util.*; +import jakarta.validation.*; +import cn.iocoder.yudao.module.system.controller.admin.dusttargetinfo.vo.*; +import cn.iocoder.yudao.module.system.dal.dataobject.dusttargetinfo.DustTargetinfoDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 除尘系统监测指标信息 Service 接口 + * + * @author 超级管理员 + */ +public interface DustTargetinfoService { + + /** + * 创建除尘系统监测指标信息 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + String createDustTargetinfo(@Valid DustTargetinfoSaveReqVO createReqVO); + + /** + * 更新除尘系统监测指标信息 + * + * @param updateReqVO 更新信息 + */ + void updateDustTargetinfo(@Valid DustTargetinfoSaveReqVO updateReqVO); + + /** + * 删除除尘系统监测指标信息 + * + * @param id 编号 + */ + void deleteDustTargetinfo(String id); + + /** + * 批量删除除尘系统监测指标信息 + * + * @param ids 编号 + */ + void deleteDustTargetinfoListByIds(List ids); + + /** + * 获得除尘系统监测指标信息 + * + * @param id 编号 + * @return 除尘系统监测指标信息 + */ + DustTargetinfoDO getDustTargetinfo(String id); + + /** + * 获得除尘系统监测指标信息分页 + * + * @param pageReqVO 分页查询 + * @return 除尘系统监测指标信息分页 + */ + PageResult getDustTargetinfoPage(DustTargetinfoPageReqVO pageReqVO); + + List getEquipTargetList(String equipCode); +} diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dusttargetinfo/DustTargetinfoServiceImpl.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dusttargetinfo/DustTargetinfoServiceImpl.java new file mode 100644 index 000000000..a9bd5969a --- /dev/null +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/dusttargetinfo/DustTargetinfoServiceImpl.java @@ -0,0 +1,99 @@ +package cn.iocoder.yudao.module.system.service.dusttargetinfo; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.module.system.service.dustequipinfo.DustEquipinfoService; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.system.controller.admin.dusttargetinfo.vo.*; +import cn.iocoder.yudao.module.system.dal.dataobject.dusttargetinfo.DustTargetinfoDO; +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.system.dal.mysql.dusttargetinfo.DustTargetinfoMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.diffList; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; + +/** + * 除尘系统监测指标信息 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class DustTargetinfoServiceImpl implements DustTargetinfoService { + + @Resource + private DustTargetinfoMapper dustTargetinfoMapper; + + @Resource + private DustEquipinfoService dustEquipinfoService; + @Override + public String createDustTargetinfo(DustTargetinfoSaveReqVO createReqVO) { + // 插入 + //所属除尘系统设备编码 + String equipCode = createReqVO.getEquipCode(); + //然后根据设备编码去查找所有的指标信息,并将他们倒叙排序找到指标编码的最大值 + Long maxTargetCode = dustTargetinfoMapper.getMaxTargetCode(equipCode); + Long targetCode = Optional.ofNullable(maxTargetCode).map(maxCode -> maxCode+1).orElse(1L); + createReqVO.setTargetCode(String.format("%03d", targetCode)); + DustTargetinfoDO dustTargetinfo = BeanUtils.toBean(createReqVO, DustTargetinfoDO.class); + dustTargetinfoMapper.insert(dustTargetinfo); + + // 返回 + return dustTargetinfo.getId(); + } + + @Override + public void updateDustTargetinfo(DustTargetinfoSaveReqVO updateReqVO) { + // 校验存在 + validateDustTargetinfoExists(updateReqVO.getId()); + // 更新 + DustTargetinfoDO updateObj = BeanUtils.toBean(updateReqVO, DustTargetinfoDO.class); + dustTargetinfoMapper.updateById(updateObj); + } + + @Override + public void deleteDustTargetinfo(String id) { + // 校验存在 + validateDustTargetinfoExists(id); + // 删除 + dustTargetinfoMapper.deleteById(id); + } + + @Override + public void deleteDustTargetinfoListByIds(List ids) { + // 删除 + dustTargetinfoMapper.deleteByIds(ids); + } + + + private void validateDustTargetinfoExists(String id) { + if (dustTargetinfoMapper.selectById(id) == null) { + throw exception(DUST_TARGETINFO_NOT_EXISTS); + } + } + + @Override + public DustTargetinfoDO getDustTargetinfo(String id) { + return dustTargetinfoMapper.selectById(id); + } + + @Override + public PageResult getDustTargetinfoPage(DustTargetinfoPageReqVO pageReqVO) { + return dustTargetinfoMapper.selectPage(pageReqVO); + } + + @Override + public List getEquipTargetList(String equipCode) { + return dustTargetinfoMapper.selectList(DustTargetinfoDO::getEquipCode, equipCode); + } + +} diff --git a/yudao-module-system/yudao-module-system-server/src/main/resources/mapper/dusttargetinfo/DustTargetinfoMapper.xml b/yudao-module-system/yudao-module-system-server/src/main/resources/mapper/dusttargetinfo/DustTargetinfoMapper.xml new file mode 100644 index 000000000..f20a3e416 --- /dev/null +++ b/yudao-module-system/yudao-module-system-server/src/main/resources/mapper/dusttargetinfo/DustTargetinfoMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file